Move File Management link into the bottom tab bar
Replace the dashboard-only footer link with a "Files" item in the persistent bottom tab bar (Home/Notes/Help/Settings) on every page, so it's reachable the same way everywhere instead of only from the dashboard. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -88,10 +88,11 @@ silently stay blank instead of erroring.
|
||||
- Cover art: uses a manually-placed `cover`/`folder`/`thumbnail`/`thumb`/
|
||||
`poster` image if a course has one, otherwise auto-generates one via
|
||||
`ffmpeg` from a frame of the course's first video
|
||||
- **File Management** ([/unsorted](templates/unsorted.html), linked from
|
||||
Settings and from a footer link on the dashboard): a dedicated page for
|
||||
everything that touches files on disk, since it needs more room than a
|
||||
Settings card and warrants review before anything actually changes.
|
||||
- **File Management** ([/unsorted](templates/unsorted.html), its own item
|
||||
("Files") in the bottom tab bar alongside Home/Notes/Help/Settings): a
|
||||
dedicated page for everything that touches files on disk, since it needs
|
||||
more room than a Settings card and warrants review before anything
|
||||
actually changes.
|
||||
- *Sort Unsorted*: drop new/incoming courses into an `Unsorted` folder at
|
||||
the library root, then scan proposes a destination for each one by keyword
|
||||
overlap against the *existing* category tree - read fresh from disk every
|
||||
|
||||
+1
-1
@@ -3588,7 +3588,7 @@ def notes_hub():
|
||||
@app.route('/unsorted')
|
||||
def unsorted_page():
|
||||
"""Review page for filing new courses out of the Unsorted folder - see /api/unsorted/scan for the actual proposals."""
|
||||
return render_template('unsorted.html', active_tab=None)
|
||||
return render_template('unsorted.html', active_tab='files')
|
||||
|
||||
|
||||
@app.route('/library/search-transcripts')
|
||||
|
||||
@@ -197,21 +197,6 @@
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.page-footer-link {
|
||||
text-align: center;
|
||||
padding: 24px 0 8px;
|
||||
}
|
||||
.page-footer-link a {
|
||||
color: var(--text-muted);
|
||||
text-decoration: none;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
.page-footer-link a:hover {
|
||||
color: var(--accent);
|
||||
}
|
||||
.bottom-tab-bar {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
@@ -1329,9 +1314,6 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<div class="page-footer-link">
|
||||
<a href="/unsorted">{{ icons.icon('folder', 14) }} File Management</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="bottom-tab-bar">
|
||||
@@ -1347,6 +1329,9 @@
|
||||
<a href="/settings" class="tab-item {% if active_tab == 'settings' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('settings', 20) }}</span><span class="tab-label">Settings</span>
|
||||
</a>
|
||||
<a href="/unsorted" class="tab-item {% if active_tab == 'files' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('folder', 20) }}</span><span class="tab-label">Files</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<div id="toast-container" class="toast-container"></div>
|
||||
|
||||
@@ -239,6 +239,9 @@
|
||||
<a href="/settings" class="tab-item {% if active_tab == 'settings' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('settings', 20) }}</span><span class="tab-label">Settings</span>
|
||||
</a>
|
||||
<a href="/unsorted" class="tab-item {% if active_tab == 'files' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('folder', 20) }}</span><span class="tab-label">Files</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<script src="/static/theme.js"></script>
|
||||
|
||||
@@ -282,6 +282,9 @@
|
||||
<a href="/settings" class="tab-item {% if active_tab == 'settings' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('settings', 20) }}</span><span class="tab-label">Settings</span>
|
||||
</a>
|
||||
<a href="/unsorted" class="tab-item {% if active_tab == 'files' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('folder', 20) }}</span><span class="tab-label">Files</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<script>
|
||||
|
||||
@@ -482,6 +482,9 @@
|
||||
<a href="/settings" class="tab-item {% if active_tab == 'settings' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('settings', 20) }}</span><span class="tab-label">Settings</span>
|
||||
</a>
|
||||
<a href="/unsorted" class="tab-item {% if active_tab == 'files' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('folder', 20) }}</span><span class="tab-label">Files</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<script src="/static/theme.js"></script>
|
||||
|
||||
@@ -562,6 +562,9 @@
|
||||
<a href="/settings" class="tab-item {% if active_tab == 'settings' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('settings', 20) }}</span><span class="tab-label">Settings</span>
|
||||
</a>
|
||||
<a href="/unsorted" class="tab-item {% if active_tab == 'files' %}active{% endif %}">
|
||||
<span class="tab-icon">{{ icons.icon('folder', 20) }}</span><span class="tab-label">Files</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<script src="/static/theme.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user