調整儀錶板和編輯器的界面,新增快速設定按鈕,並添加了相關的測試腳本和模板文件。
This commit is contained in:
25
main.py
25
main.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user