Tier 3: appointments CRUD + time tracking with topbar timer
This commit is contained in:
76
templates/weblinks.html
Normal file
76
templates/weblinks.html
Normal file
@@ -0,0 +1,76 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<div class="page-header">
|
||||
<h1 class="page-title">Weblinks<span class="page-count">{{ items|length }}</span></h1>
|
||||
<div class="flex gap-2">
|
||||
<a href="/weblinks/folders/create" class="btn btn-secondary">+ New Folder</a>
|
||||
<a href="/weblinks/create{{ '?folder_id=' ~ current_folder_id if current_folder_id }}" class="btn btn-primary">+ New Weblink</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="weblinks-layout">
|
||||
<!-- Folder sidebar -->
|
||||
<div class="weblinks-folders">
|
||||
<a href="/weblinks" class="weblink-folder-item {{ 'active' if not current_folder_id }}">
|
||||
All Weblinks
|
||||
</a>
|
||||
{% for folder in top_folders %}
|
||||
<a href="/weblinks?folder_id={{ folder.id }}" class="weblink-folder-item {{ 'active' if current_folder_id == folder.id|string }}">
|
||||
{{ folder.name }}
|
||||
{% if folder.link_count %}<span class="badge" style="margin-left: auto;">{{ folder.link_count }}</span>{% endif %}
|
||||
</a>
|
||||
{% for child in child_folder_map.get(folder.id|string, []) %}
|
||||
<a href="/weblinks?folder_id={{ child.id }}" class="weblink-folder-item {{ 'active' if current_folder_id == child.id|string }}" style="padding-left: 28px;">
|
||||
{{ child.name }}
|
||||
{% if child.link_count %}<span class="badge" style="margin-left: auto;">{{ child.link_count }}</span>{% endif %}
|
||||
</a>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<!-- Weblinks list -->
|
||||
<div class="weblinks-content">
|
||||
{% if current_folder %}
|
||||
<div class="flex items-center justify-between mb-2">
|
||||
<h2 style="font-size: 1rem; font-weight: 600;">{{ current_folder.name }}</h2>
|
||||
<form action="/weblinks/folders/{{ current_folder.id }}/delete" method="post"
|
||||
data-confirm="Delete folder '{{ current_folder.name }}'?" style="display:inline">
|
||||
<button type="submit" class="btn btn-ghost btn-xs" style="color: var(--red)">Delete Folder</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if items %}
|
||||
<div class="card">
|
||||
{% for item in items %}
|
||||
<div class="list-row">
|
||||
<span class="row-title">
|
||||
<a href="{{ item.url }}" target="_blank" rel="noopener">{{ item.label }}</a>
|
||||
</span>
|
||||
<span class="row-meta text-xs" style="max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
|
||||
{{ item.url }}
|
||||
</span>
|
||||
{% if item.tags %}
|
||||
{% for tag in item.tags %}
|
||||
<span class="row-tag">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div class="row-actions">
|
||||
<a href="/weblinks/{{ item.id }}/edit" class="btn btn-ghost btn-xs">Edit</a>
|
||||
<form action="/weblinks/{{ item.id }}/delete" method="post" data-confirm="Delete this weblink?" style="display:inline">
|
||||
<button type="submit" class="btn btn-ghost btn-xs" style="color: var(--red)">Del</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state">
|
||||
<div class="empty-state-icon">🔗</div>
|
||||
<div class="empty-state-text">No weblinks{{ ' in this folder' if current_folder }} yet</div>
|
||||
<a href="/weblinks/create{{ '?folder_id=' ~ current_folder_id if current_folder_id }}" class="btn btn-primary">Add Weblink</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user