fix(library): visibility hover + workspace filter + tab Repository pour Gitea
- CSS hover-only: visibility:hidden/visible au lieu de opacity (infaillible) - Workspace tab: filtré par workspace_id quand un workspace est actif - Tab Private remplacé par Repository (visible seulement si Gitea workspace actif) - Nouvel endpoint /api/library/repository pour le contenu Gitea - dashboard.py passe is_gitea_workspace, owner, repo au template
This commit is contained in:
@@ -221,6 +221,10 @@ async def library_page(request: Request, owner: str = Query(default=""), repo: s
|
||||
|
||||
template = env.get_template("library.html")
|
||||
sidebar["active_workspace_id"] = sidebar.get("nav_workspace_id", 0)
|
||||
# Gitea workspace context for Repository tab
|
||||
sidebar["is_gitea_workspace"] = bool(owner and repo)
|
||||
sidebar["gitea_workspace_owner"] = owner
|
||||
sidebar["gitea_workspace_repo"] = repo
|
||||
return template.render(**sidebar)
|
||||
|
||||
|
||||
|
||||
@@ -271,11 +271,36 @@ async def library_children(page_id: int, request: Request):
|
||||
return {"items": items}
|
||||
|
||||
|
||||
@router.get("/repository")
|
||||
async def library_repository(
|
||||
request: Request,
|
||||
gitea_owner: str = Query(default=""),
|
||||
gitea_repo: str = Query(default=""),
|
||||
):
|
||||
"""Return Gitea repository pages/files for the Library Repository tab."""
|
||||
if not gitea_owner or not gitea_repo:
|
||||
return {"items": []}
|
||||
|
||||
uid = _get_user_id(request)
|
||||
ws_key = f"{gitea_owner}/{gitea_repo}"
|
||||
query = f"{BASE_SELECT} FROM pages p WHERE p.workspace = ? AND p.deleted_at IS NULL"
|
||||
params = [ws_key]
|
||||
query += " ORDER BY p.updated_at DESC LIMIT 100"
|
||||
|
||||
with get_conn() as conn:
|
||||
rows = conn.execute(query, params).fetchall()
|
||||
|
||||
items = _rows_to_items(rows, uid)
|
||||
_enrich_children(items)
|
||||
return {"items": items}
|
||||
|
||||
|
||||
@router.get("/workspace")
|
||||
async def library_workspace(
|
||||
request: Request,
|
||||
source_type: str = Query(default="all"),
|
||||
tree: int = Query(default=0),
|
||||
workspace_id: int = Query(default=0),
|
||||
):
|
||||
if source_type not in SOURCE_TYPES:
|
||||
source_type = "all"
|
||||
@@ -283,6 +308,11 @@ async def library_workspace(
|
||||
uid = _get_user_id(request)
|
||||
query = f"{BASE_SELECT} FROM pages p WHERE p.workspace != '' AND p.parent_section != 'Trash' AND p.deleted_at IS NULL"
|
||||
params: list = []
|
||||
|
||||
if workspace_id:
|
||||
query += " AND p.workspace_id = ?"
|
||||
params.append(workspace_id)
|
||||
|
||||
query, params = _apply_source_filter(query, params, source_type)
|
||||
query += " ORDER BY p.updated_at DESC LIMIT 50"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user