Wissensdatenbank: Wiki-Layout Redesign
- Sidebar mit Baum-Navigation (aufklappbare Kategorien mit Eintraegen) - Content-Bereich zeigt ausgewaehlten Eintrag als volle Seite - Inline-Editor statt Modal (Markdown-Textarea, volle Breite) - Echtzeit-Suche filtert den Baum in der Sidebar - Lese-Modus mit gerendertem Markdown als Standard - Altes Expand/Collapse und Entry-Modal entfernt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
@@ -580,91 +580,107 @@
|
||||
|
||||
<!-- Mobile: Kategorien als horizontale Chips -->
|
||||
<div id="knowledge-mobile-categories" class="knowledge-mobile-categories">
|
||||
<!-- Wird dynamisch befüllt -->
|
||||
<!-- Wird dynamisch befuellt -->
|
||||
</div>
|
||||
|
||||
<!-- Haupt-Layout: Sidebar + Main -->
|
||||
<!-- Wiki-Layout: Sidebar + Content -->
|
||||
<div class="knowledge-layout">
|
||||
|
||||
<!-- Sidebar (links) - Kategorien -->
|
||||
<!-- Sidebar (links) - Baum-Navigation -->
|
||||
<aside class="knowledge-sidebar">
|
||||
<div class="knowledge-sidebar-header">
|
||||
<h3 class="knowledge-sidebar-title">Kategorien</h3>
|
||||
<button id="btn-new-category" class="btn btn-primary btn-sm">
|
||||
<div class="knowledge-sidebar-search">
|
||||
<svg viewBox="0 0 24 24" width="16" height="16"><circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2" fill="none"/><path d="M21 21l-4.35-4.35" stroke="currentColor" stroke-width="2" fill="none"/></svg>
|
||||
<input type="text" id="knowledge-sidebar-search" placeholder="Suchen..." autocomplete="off">
|
||||
</div>
|
||||
<button id="btn-new-category" class="btn btn-primary btn-sm" title="Neue Kategorie">
|
||||
<svg viewBox="0 0 24 24" width="16" height="16"><path d="M12 5v14M5 12h14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/></svg>
|
||||
Neu
|
||||
</button>
|
||||
</div>
|
||||
<div id="knowledge-categories" class="knowledge-category-list">
|
||||
<!-- Kategorien werden dynamisch geladen -->
|
||||
</div>
|
||||
<div id="knowledge-categories-empty" class="knowledge-sidebar-empty hidden">
|
||||
<nav id="knowledge-tree" class="knowledge-tree">
|
||||
<!-- Baum-Navigation wird dynamisch befuellt -->
|
||||
</nav>
|
||||
<div id="knowledge-tree-empty" class="knowledge-sidebar-empty hidden">
|
||||
<svg viewBox="0 0 24 24" width="48" height="48">
|
||||
<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
</svg>
|
||||
<p>Keine Kategorien</p>
|
||||
<p>Keine Kategorien vorhanden</p>
|
||||
</div>
|
||||
<!-- Resize Handle -->
|
||||
<div id="knowledge-resize-handle" class="knowledge-resize-handle"></div>
|
||||
</aside>
|
||||
|
||||
<!-- Hauptbereich (rechts) - Einträge -->
|
||||
<main class="knowledge-main">
|
||||
<div class="knowledge-main-header">
|
||||
<h2 id="knowledge-category-title" class="knowledge-main-title">Kategorie wählen</h2>
|
||||
<button id="btn-new-entry" class="btn btn-primary" disabled>
|
||||
<svg viewBox="0 0 24 24" width="18" height="18"><path d="M12 5v14M5 12h14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/></svg>
|
||||
Neuer Eintrag
|
||||
</button>
|
||||
</div>
|
||||
<!-- Content (rechts) - Wiki-Seite -->
|
||||
<main class="knowledge-content">
|
||||
|
||||
<!-- Einträge-Liste -->
|
||||
<div id="knowledge-entries" class="knowledge-entry-list">
|
||||
<!-- Einträge werden dynamisch geladen -->
|
||||
</div>
|
||||
|
||||
<!-- Leerer Zustand: Keine Kategorie ausgewählt -->
|
||||
<div id="knowledge-no-selection" class="knowledge-empty">
|
||||
<!-- Zustand 1: Leer / Nichts ausgewaehlt -->
|
||||
<div id="knowledge-empty" class="knowledge-empty-state">
|
||||
<svg viewBox="0 0 24 24" width="64" height="64">
|
||||
<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
</svg>
|
||||
<h3>Kategorie auswählen</h3>
|
||||
<p>Wählen Sie links eine Kategorie aus, um Einträge anzuzeigen.</p>
|
||||
<h3>Wissensdatenbank</h3>
|
||||
<p>Waehlen Sie links einen Eintrag aus, um ihn hier anzuzeigen.</p>
|
||||
</div>
|
||||
|
||||
<!-- Leerer Zustand: Keine Einträge -->
|
||||
<div id="knowledge-entries-empty" class="knowledge-empty hidden">
|
||||
<svg viewBox="0 0 24 24" width="64" height="64">
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
<path d="M14 2v6h6M16 13H8M16 17H8M10 9H8" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
</svg>
|
||||
<h3>Keine Einträge</h3>
|
||||
<p>Erstellen Sie den ersten Eintrag in dieser Kategorie.</p>
|
||||
<!-- Zustand 2: Lese-Ansicht -->
|
||||
<div id="knowledge-reader" class="knowledge-reader hidden">
|
||||
<div class="knowledge-reader-header">
|
||||
<h1 id="knowledge-reader-title"></h1>
|
||||
<div class="knowledge-reader-actions">
|
||||
<button id="btn-edit-entry" class="btn btn-secondary btn-sm">
|
||||
<svg viewBox="0 0 24 24" width="16" height="16"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" stroke="currentColor" stroke-width="2" fill="none"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" stroke="currentColor" stroke-width="2" fill="none"/></svg>
|
||||
Bearbeiten
|
||||
</button>
|
||||
<button id="btn-delete-entry-reader" class="btn btn-danger btn-sm">
|
||||
<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" stroke="currentColor" stroke-width="2" fill="none"/></svg>
|
||||
Loeschen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="knowledge-reader-meta" class="knowledge-reader-meta"></div>
|
||||
<div id="knowledge-reader-url" class="knowledge-reader-url hidden"></div>
|
||||
<div id="knowledge-reader-body" class="knowledge-reader-body"></div>
|
||||
<div id="knowledge-reader-attachments" class="knowledge-reader-attachments hidden"></div>
|
||||
</div>
|
||||
|
||||
<!-- Suchergebnisse -->
|
||||
<div id="knowledge-search-results" class="knowledge-search-results hidden">
|
||||
<div class="knowledge-search-header">
|
||||
<button id="btn-clear-search" class="btn btn-text">
|
||||
<svg viewBox="0 0 24 24" width="18" height="18"><path d="M6 18L18 6M6 6l12 12" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/></svg>
|
||||
Suche beenden
|
||||
</button>
|
||||
<span class="knowledge-search-info">Ergebnisse für "<span id="knowledge-search-query"></span>"</span>
|
||||
</div>
|
||||
<div id="knowledge-search-list" class="knowledge-entry-list">
|
||||
<!-- Suchergebnisse werden hier angezeigt -->
|
||||
</div>
|
||||
<div id="knowledge-search-empty" class="knowledge-empty hidden">
|
||||
<svg viewBox="0 0 24 24" width="64" height="64">
|
||||
<circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
<path d="M21 21l-4.35-4.35" stroke="currentColor" stroke-width="2" fill="none"/>
|
||||
</svg>
|
||||
<h3>Keine Ergebnisse</h3>
|
||||
<p>Keine Einträge gefunden.</p>
|
||||
<!-- Zustand 3: Editor -->
|
||||
<div id="knowledge-editor" class="knowledge-editor hidden">
|
||||
<div class="knowledge-editor-header">
|
||||
<h2 id="knowledge-editor-title">Neuer Eintrag</h2>
|
||||
</div>
|
||||
<form id="knowledge-editor-form" class="knowledge-editor-form">
|
||||
<input type="hidden" id="knowledge-editor-id">
|
||||
<input type="hidden" id="knowledge-editor-category-id">
|
||||
<div class="form-group">
|
||||
<label for="knowledge-editor-title-input">Titel</label>
|
||||
<input type="text" id="knowledge-editor-title-input" class="form-control form-control-lg" placeholder="Titel des Eintrags" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="knowledge-editor-url-input">URL (optional)</label>
|
||||
<input type="url" id="knowledge-editor-url-input" class="form-control" placeholder="https://...">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="knowledge-editor-notes">Inhalt (Markdown)</label>
|
||||
<textarea id="knowledge-editor-notes" class="form-control knowledge-editor-textarea" placeholder="Markdown-Inhalt hier eingeben..."></textarea>
|
||||
</div>
|
||||
<div id="knowledge-editor-attachments" class="knowledge-editor-attachments hidden">
|
||||
<label>Anhaenge</label>
|
||||
<div id="knowledge-editor-attachments-list"></div>
|
||||
<div id="knowledge-editor-file-upload" class="knowledge-editor-file-upload">
|
||||
<input type="file" id="knowledge-editor-file-input" multiple hidden>
|
||||
<button type="button" id="btn-upload-file" class="btn btn-secondary btn-sm">
|
||||
<svg viewBox="0 0 24 24" width="16" height="16"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
Datei hochladen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="knowledge-editor-buttons">
|
||||
<button type="submit" class="btn btn-primary">Speichern</button>
|
||||
<button type="button" id="btn-cancel-editor" class="btn btn-secondary">Abbrechen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
||||
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
@@ -4,7 +4,7 @@
|
||||
* Offline support and caching
|
||||
*/
|
||||
|
||||
const CACHE_VERSION = '392';
|
||||
const CACHE_VERSION = '393';
|
||||
const CACHE_NAME = 'taskmate-v' + CACHE_VERSION;
|
||||
const STATIC_CACHE_NAME = 'taskmate-static-v' + CACHE_VERSION;
|
||||
const DYNAMIC_CACHE_NAME = 'taskmate-dynamic-v' + CACHE_VERSION;
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren