調整儀錶板和編輯器的界面,新增快速設定按鈕,並添加了相關的測試腳本和模板文件。

This commit is contained in:
2026-05-26 12:04:00 +08:00
parent 03d7eca139
commit f1bc0a30e1
10 changed files with 346 additions and 134 deletions

25
main.py
View File

@@ -184,9 +184,19 @@ def index() -> Response:
@app.route("/dashboard") # type: ignore[untyped-decorator]
def dashboard() -> str:
# render projects overview
return str(render_template("dashboard.html"))
@app.route("/dashboard/project/<slug>") # type: ignore[untyped-decorator]
def project_dashboard(slug: str) -> str:
# render single project management dashboard
proj_dir = _project_dir(slug)
if not proj_dir.exists():
abort(404)
return str(render_template("project_dashboard.html", slug=slug))
@app.route("/editor/<slug>") # type: ignore[untyped-decorator]
def editor(slug: str) -> str:
proj_dir = _project_dir(slug)
@@ -345,6 +355,21 @@ def api_pages_tree(slug: str) -> tuple[Response, int] | Response:
return jsonify(tree)
@app.route("/api/projects/<slug>/pages-tree", methods=["PUT"]) # type: ignore[untyped-decorator]
def api_put_pages_tree(slug: str) -> tuple[Response, int] | Response:
"""儲存自訂的頁面樹狀結構到 project.json 的 page_tree 欄位。"""
if not _project_dir(slug).exists():
return jsonify({"error": "專案不存在"}), 404
body: dict[str, Any] = request.get_json(force=True) or {}
if not isinstance(body, dict):
return jsonify({"error": "不正確的資料格式"}), 400
data = _load_project(slug)
data["page_tree"] = body
data["updated_at"] = _now_iso()
_save_project(slug, data)
return jsonify({"ok": True, "page_tree": body})
@app.route("/api/projects/<slug>/media/upload", methods=["POST"]) # type: ignore[untyped-decorator]
def api_media_upload(slug: str) -> tuple[Response, int] | Response:
proj_dir = _project_dir(slug)