From 4a3e5636c89f15df3a842b3e4dd776572b7a03bc Mon Sep 17 00:00:00 2001 From: 2620227 Date: Thu, 2 Jul 2026 14:15:34 +0900 Subject: [PATCH] =?UTF-8?q?feat(projects):=20=EC=83=81=EC=84=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=EC=97=90=EC=84=9C=20=EA=B3=B5=EA=B0=9C/?= =?UTF-8?q?=EB=B9=84=EA=B3=B5=EA=B0=9C=20=EC=A0=84=ED=99=98=20+=20'?= =?UTF-8?q?=EB=B9=84=EA=B3=B5=EA=B0=9C=EB=A1=9C'=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 투명 텍스트라 버튼처럼 안 보이던 .toggle-share-btn 을 테두리·패딩 있는 버튼 모양으로 변경. 프로젝트 상세 모달(소유자)에 '비공개로 전환/공개로 전환' 버튼을 추가하고, 전환 라우트가 return_to 를 존중하도록 해 모달에서 전환하면 모달이 다시 열린 상태로 돌아온다. Co-Authored-By: Claude Opus 4.8 (1M context) --- public/css/components.css | 7 +++++-- src/server.js | 5 ++++- views/_project_detail.ejs | 7 ++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/public/css/components.css b/public/css/components.css index 9348147..32e65aa 100644 --- a/public/css/components.css +++ b/public/css/components.css @@ -71,8 +71,11 @@ } .vis-badge.public { color: var(--success-fg); background: var(--success-bg); border: 1px solid var(--success-bd); } .vis-badge.private { color: var(--fg2); background: var(--panel); border: 1px solid var(--border); } -.toggle-share-btn { background: transparent; border: 0; padding: 0; cursor: pointer; font-family: inherit; font-size: 11.5px; font-weight: 600; color: var(--fg3); white-space: nowrap; } -.toggle-share-btn:hover { color: var(--fg); } +.toggle-share-btn { + display: inline-flex; align-items: center; gap: 5px; background: var(--btn-bg); border: 1px solid var(--btn-bd); border-radius: 7px; padding: 4px 10px; + cursor: pointer; font-family: inherit; font-size: 11.5px; font-weight: 600; color: var(--fg2); white-space: nowrap; transition: background .14s ease, color .14s ease, border-color .14s ease; +} +.toggle-share-btn:hover { background: var(--btn-hover); color: var(--fg); border-color: var(--border); } .private-note { font-size: 11.5px; color: var(--fg3); } .share-mini-btn { display: inline-flex; align-items: center; gap: 5px; background: var(--success); diff --git a/src/server.js b/src/server.js index ff1a673..be83bd3 100644 --- a/src/server.js +++ b/src/server.js @@ -155,7 +155,10 @@ app.post("/projects/:id/visibility", requireAuth, async (req, res) => { const isPublic = req.body.is_public === "1"; await db.setVisibility({ id: req.params.id, sabun: req.session.user.sabun, isPublic }); const msg = isPublic ? "공개로 전환됐습니다 · 피드에 표시됩니다" : "비공개로 전환됐습니다"; - res.redirect("/?toast=" + encodeURIComponent(msg)); + // 모달에서 전환하면 return_to(=/?open=) 로 돌아가 모달을 다시 연다. 카드에서는 "/". + const back = safeBack(req.body.return_to, "/"); + const sep = back.includes("?") ? "&" : "?"; + res.redirect(back + sep + "toast=" + encodeURIComponent(msg)); }); // --- 프로젝트 삭제 (본인) --- diff --git a/views/_project_detail.ejs b/views/_project_detail.ejs index 2e659e5..8572d45 100644 --- a/views/_project_detail.ejs +++ b/views/_project_detail.ejs @@ -55,7 +55,12 @@ <%- icon("code", { size: 14 }) %>저장소 <% } %> <% if (p.owner_sabun === me) { %> -
+ + " /> + + +
+