Loading debian/blogi-editor.default-config.yaml +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ WEBEDIT: - "/usr/lib/blogi/plugins/webedit" HTMLDIR: "/usr/share/blogi-editor/html" PREFIX: "" LANGUAGE: "DE" AUTHDB: - URL: "https://localhost:8443" CLIENTNAME: "blogi-editor" Loading editor/config.yaml +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ WEBEDIT: - "../build/editor/widgets" HTMLDIR: "/usr/local/share/blogi-webedit/html" PREFIX: "" LANGUAGE: "DE" AUTHDB: - URL: "https://localhost:8443" CLIENTNAME: "blogi-editor" Loading editor/html/css/editor.css +21 −0 Original line number Diff line number Diff line Loading @@ -451,6 +451,27 @@ dialog label { border-radius: 3px; } .doc-item-actions { display: flex; gap: 4px; align-items: center; } .doc-item-revisions { color: var(--accent); cursor: pointer; padding: 2px 8px; border: 1px solid var(--border); background: transparent; font-size: 12px; border-radius: 3px; } .doc-item-revisions:hover { background: var(--accent); color: var(--bg-primary); } /* Scrollbar */ ::-webkit-scrollbar { width: 8px; Loading editor/html/index.html +37 −28 Original line number Diff line number Diff line Loading @@ -3,26 +3,26 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blogi WebEditor</title> <title data-i18n="I18N_BLOGI_WEBEDITOR">Blogi WebEditor</title> <link rel="stylesheet" href="css/editor.css"> </head> <body> <!-- Toolbar --> <header id="toolbar"> <div class="toolbar-group"> <button id="btn-new" title="Neues Dokument">📄 Neu</button> <button id="btn-save" title="Speichern">💾 Speichern</button> <button id="btn-open" title="Öffnen">📂 Öffnen</button> <button id="btn-new" data-i18n-title="I18N_TITLE_NEW_TEMPLATE">📄 <span data-i18n="I18N_NEW">Neu</span></button> <button id="btn-save" data-i18n-title="I18N_TITLE_SAVE_TO_DB">💾 <span data-i18n="I18N_SAVE">Speichern</span></button> <button id="btn-open" data-i18n-title="I18N_TEMPLATES">📂 <span data-i18n="I18N_TEMPLATES">Öffnen</span></button> </div> <div class="toolbar-group"> <button id="btn-import-xml" title="XML Importieren">⬇ Import XML</button> <button id="btn-export-xml" title="XML Exportieren">⬆ Export XML</button> <button id="btn-import-xml" data-i18n-title="I18N_TITLE_IMPORT_XML">⬇ <span data-i18n="I18N_IMPORT_XML">Import XML</span></button> <button id="btn-export-xml" data-i18n-title="I18N_TITLE_EXPORT_XML">⬆ <span data-i18n="I18N_EXPORT_XML">Export XML</span></button> </div> <div class="toolbar-group"> <span id="doc-name" class="doc-name">Untitled</span> </div> <div class="toolbar-group" style="margin-left:auto"> <button id="btn-logout" title="Abmelden">🚪 Abmelden</button> <button id="btn-logout" data-i18n-title="Logout">🚪 <span data-i18n="Logout">Abmelden</span></button> </div> </header> Loading @@ -30,17 +30,17 @@ <!-- Left Sidebar: Widget Palette + Document Tree --> <aside id="sidebar-left"> <div id="widget-palette"> <h3>Widgets</h3> <h3 data-i18n="I18N_TOOLBOX">Widgets</h3> <div id="widget-list"></div> </div> <div id="document-tree-panel"> <h3>Dokumentbaum</h3> <h3 data-i18n="I18N_CONTENT_INDEX">Dokumentbaum</h3> <div id="tree-actions"> <button id="btn-move-up" title="Nach oben">↑</button> <button id="btn-move-down" title="Nach unten">↓</button> <button id="btn-indent" title="Einrücken">→</button> <button id="btn-outdent" title="Ausrücken">←</button> <button id="btn-remove" title="Löschen">✖</button> <button id="btn-move-up" data-i18n-title="I18N_MOVE_UP">↑</button> <button id="btn-move-down" data-i18n-title="I18N_MOVE_DOWN">↓</button> <button id="btn-indent" data-i18n-title="I18N_INDENT">→</button> <button id="btn-outdent" data-i18n-title="I18N_OUTDENT">←</button> <button id="btn-remove" data-i18n-title="I18N_REMOVE_ELEMENT">✖</button> </div> <div id="document-tree"></div> </div> Loading @@ -49,7 +49,7 @@ <!-- Center: Preview --> <main id="preview-pane"> <div id="preview-toolbar"> <button id="btn-refresh-preview" title="Vorschau aktualisieren">🔄 Vorschau</button> <button id="btn-refresh-preview" data-i18n-title="I18N_TITLE_REFRESH_TREE">🔄 <span data-i18n="I18N_VIEW">Vorschau</span></button> </div> <iframe id="preview-frame" sandbox="allow-same-origin"></iframe> </main> Loading @@ -57,9 +57,9 @@ <!-- Right Sidebar: Properties --> <aside id="sidebar-right"> <div id="properties-panel"> <h3>Eigenschaften</h3> <h3 data-i18n="I18N_WIDGET_PROPERTIES">Eigenschaften</h3> <div id="properties-content"> <p class="hint">Element auswählen um Eigenschaften zu bearbeiten.</p> <p class="hint" data-i18n="I18N_SELECT_WIDGET">Element auswählen um Eigenschaften zu bearbeiten.</p> </div> </div> </aside> Loading @@ -67,40 +67,49 @@ <!-- Dialogs --> <dialog id="open-dialog"> <h3>Dokument öffnen</h3> <h3 data-i18n="I18N_TEMPLATES">Dokument öffnen</h3> <div id="doc-list"></div> <div class="dialog-actions"> <button id="btn-open-cancel">Abbrechen</button> <button id="btn-open-cancel" data-i18n="I18N_CANCEL">Abbrechen</button> </div> </dialog> <dialog id="save-dialog"> <h3>Dokument speichern</h3> <label>Name: <input type="text" id="save-name" placeholder="Dokumentname"></label> <h3 data-i18n="I18N_SAVE_TPL_TITLE">Dokument speichern</h3> <label><span data-i18n="I18N_TPL_NAME_LABEL">Name</span>: <input type="text" id="save-name" data-i18n-placeholder="I18N_TPL_NAME_PLACEHOLDER" placeholder="Dokumentname"></label> <div class="dialog-actions"> <button id="btn-save-confirm">Speichern</button> <button id="btn-save-cancel">Abbrechen</button> <button id="btn-save-confirm" data-i18n="I18N_SAVE">Speichern</button> <button id="btn-save-cancel" data-i18n="I18N_CANCEL">Abbrechen</button> </div> </dialog> <dialog id="import-dialog"> <h3>XML importieren</h3> <h3 data-i18n="I18N_IMPORT_XML">XML importieren</h3> <textarea id="import-xml-content" rows="15" placeholder="XML hier einfügen..."></textarea> <div class="dialog-actions"> <button id="btn-import-confirm">Importieren</button> <button id="btn-import-cancel">Abbrechen</button> <button id="btn-import-confirm" data-i18n="I18N_IMPORT_XML">Importieren</button> <button id="btn-import-cancel" data-i18n="I18N_CANCEL">Abbrechen</button> </div> </dialog> <dialog id="export-dialog"> <h3>XML exportieren</h3> <h3 data-i18n="I18N_EXPORT_XML">XML exportieren</h3> <textarea id="export-xml-content" rows="15" readonly></textarea> <div class="dialog-actions"> <button id="btn-export-copy">Kopieren</button> <button id="btn-export-close">Schließen</button> <button id="btn-export-close" data-i18n="Close">Schließen</button> </div> </dialog> <dialog id="revisions-dialog"> <h3 data-i18n="I18N_REVISIONS">Versionen</h3> <div id="revisions-list"></div> <div class="dialog-actions"> <button id="btn-revisions-close" data-i18n="Close">Schließen</button> </div> </dialog> <script src="js/i18n.js"></script> <script src="js/api.js"></script> <script src="js/tree.js"></script> <script src="js/properties.js"></script> Loading editor/html/js/api.js +15 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,21 @@ var EditorApi = (function() { deleteDocument: function(id) { return request('DELETE', '/api/document/delete/' + id); }, listRevisions: function(docId) { return request('GET', '/api/document/revisions/' + docId); }, loadRevision: function(revisionId) { return request('GET', '/api/document/revision/load/' + revisionId); }, restoreRevision: function(documentId, revisionId) { return request('POST', '/api/document/revision/restore', { documentId: documentId, revisionId: revisionId }); } }; })(); Loading
debian/blogi-editor.default-config.yaml +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ WEBEDIT: - "/usr/lib/blogi/plugins/webedit" HTMLDIR: "/usr/share/blogi-editor/html" PREFIX: "" LANGUAGE: "DE" AUTHDB: - URL: "https://localhost:8443" CLIENTNAME: "blogi-editor" Loading
editor/config.yaml +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ WEBEDIT: - "../build/editor/widgets" HTMLDIR: "/usr/local/share/blogi-webedit/html" PREFIX: "" LANGUAGE: "DE" AUTHDB: - URL: "https://localhost:8443" CLIENTNAME: "blogi-editor" Loading
editor/html/css/editor.css +21 −0 Original line number Diff line number Diff line Loading @@ -451,6 +451,27 @@ dialog label { border-radius: 3px; } .doc-item-actions { display: flex; gap: 4px; align-items: center; } .doc-item-revisions { color: var(--accent); cursor: pointer; padding: 2px 8px; border: 1px solid var(--border); background: transparent; font-size: 12px; border-radius: 3px; } .doc-item-revisions:hover { background: var(--accent); color: var(--bg-primary); } /* Scrollbar */ ::-webkit-scrollbar { width: 8px; Loading
editor/html/index.html +37 −28 Original line number Diff line number Diff line Loading @@ -3,26 +3,26 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blogi WebEditor</title> <title data-i18n="I18N_BLOGI_WEBEDITOR">Blogi WebEditor</title> <link rel="stylesheet" href="css/editor.css"> </head> <body> <!-- Toolbar --> <header id="toolbar"> <div class="toolbar-group"> <button id="btn-new" title="Neues Dokument">📄 Neu</button> <button id="btn-save" title="Speichern">💾 Speichern</button> <button id="btn-open" title="Öffnen">📂 Öffnen</button> <button id="btn-new" data-i18n-title="I18N_TITLE_NEW_TEMPLATE">📄 <span data-i18n="I18N_NEW">Neu</span></button> <button id="btn-save" data-i18n-title="I18N_TITLE_SAVE_TO_DB">💾 <span data-i18n="I18N_SAVE">Speichern</span></button> <button id="btn-open" data-i18n-title="I18N_TEMPLATES">📂 <span data-i18n="I18N_TEMPLATES">Öffnen</span></button> </div> <div class="toolbar-group"> <button id="btn-import-xml" title="XML Importieren">⬇ Import XML</button> <button id="btn-export-xml" title="XML Exportieren">⬆ Export XML</button> <button id="btn-import-xml" data-i18n-title="I18N_TITLE_IMPORT_XML">⬇ <span data-i18n="I18N_IMPORT_XML">Import XML</span></button> <button id="btn-export-xml" data-i18n-title="I18N_TITLE_EXPORT_XML">⬆ <span data-i18n="I18N_EXPORT_XML">Export XML</span></button> </div> <div class="toolbar-group"> <span id="doc-name" class="doc-name">Untitled</span> </div> <div class="toolbar-group" style="margin-left:auto"> <button id="btn-logout" title="Abmelden">🚪 Abmelden</button> <button id="btn-logout" data-i18n-title="Logout">🚪 <span data-i18n="Logout">Abmelden</span></button> </div> </header> Loading @@ -30,17 +30,17 @@ <!-- Left Sidebar: Widget Palette + Document Tree --> <aside id="sidebar-left"> <div id="widget-palette"> <h3>Widgets</h3> <h3 data-i18n="I18N_TOOLBOX">Widgets</h3> <div id="widget-list"></div> </div> <div id="document-tree-panel"> <h3>Dokumentbaum</h3> <h3 data-i18n="I18N_CONTENT_INDEX">Dokumentbaum</h3> <div id="tree-actions"> <button id="btn-move-up" title="Nach oben">↑</button> <button id="btn-move-down" title="Nach unten">↓</button> <button id="btn-indent" title="Einrücken">→</button> <button id="btn-outdent" title="Ausrücken">←</button> <button id="btn-remove" title="Löschen">✖</button> <button id="btn-move-up" data-i18n-title="I18N_MOVE_UP">↑</button> <button id="btn-move-down" data-i18n-title="I18N_MOVE_DOWN">↓</button> <button id="btn-indent" data-i18n-title="I18N_INDENT">→</button> <button id="btn-outdent" data-i18n-title="I18N_OUTDENT">←</button> <button id="btn-remove" data-i18n-title="I18N_REMOVE_ELEMENT">✖</button> </div> <div id="document-tree"></div> </div> Loading @@ -49,7 +49,7 @@ <!-- Center: Preview --> <main id="preview-pane"> <div id="preview-toolbar"> <button id="btn-refresh-preview" title="Vorschau aktualisieren">🔄 Vorschau</button> <button id="btn-refresh-preview" data-i18n-title="I18N_TITLE_REFRESH_TREE">🔄 <span data-i18n="I18N_VIEW">Vorschau</span></button> </div> <iframe id="preview-frame" sandbox="allow-same-origin"></iframe> </main> Loading @@ -57,9 +57,9 @@ <!-- Right Sidebar: Properties --> <aside id="sidebar-right"> <div id="properties-panel"> <h3>Eigenschaften</h3> <h3 data-i18n="I18N_WIDGET_PROPERTIES">Eigenschaften</h3> <div id="properties-content"> <p class="hint">Element auswählen um Eigenschaften zu bearbeiten.</p> <p class="hint" data-i18n="I18N_SELECT_WIDGET">Element auswählen um Eigenschaften zu bearbeiten.</p> </div> </div> </aside> Loading @@ -67,40 +67,49 @@ <!-- Dialogs --> <dialog id="open-dialog"> <h3>Dokument öffnen</h3> <h3 data-i18n="I18N_TEMPLATES">Dokument öffnen</h3> <div id="doc-list"></div> <div class="dialog-actions"> <button id="btn-open-cancel">Abbrechen</button> <button id="btn-open-cancel" data-i18n="I18N_CANCEL">Abbrechen</button> </div> </dialog> <dialog id="save-dialog"> <h3>Dokument speichern</h3> <label>Name: <input type="text" id="save-name" placeholder="Dokumentname"></label> <h3 data-i18n="I18N_SAVE_TPL_TITLE">Dokument speichern</h3> <label><span data-i18n="I18N_TPL_NAME_LABEL">Name</span>: <input type="text" id="save-name" data-i18n-placeholder="I18N_TPL_NAME_PLACEHOLDER" placeholder="Dokumentname"></label> <div class="dialog-actions"> <button id="btn-save-confirm">Speichern</button> <button id="btn-save-cancel">Abbrechen</button> <button id="btn-save-confirm" data-i18n="I18N_SAVE">Speichern</button> <button id="btn-save-cancel" data-i18n="I18N_CANCEL">Abbrechen</button> </div> </dialog> <dialog id="import-dialog"> <h3>XML importieren</h3> <h3 data-i18n="I18N_IMPORT_XML">XML importieren</h3> <textarea id="import-xml-content" rows="15" placeholder="XML hier einfügen..."></textarea> <div class="dialog-actions"> <button id="btn-import-confirm">Importieren</button> <button id="btn-import-cancel">Abbrechen</button> <button id="btn-import-confirm" data-i18n="I18N_IMPORT_XML">Importieren</button> <button id="btn-import-cancel" data-i18n="I18N_CANCEL">Abbrechen</button> </div> </dialog> <dialog id="export-dialog"> <h3>XML exportieren</h3> <h3 data-i18n="I18N_EXPORT_XML">XML exportieren</h3> <textarea id="export-xml-content" rows="15" readonly></textarea> <div class="dialog-actions"> <button id="btn-export-copy">Kopieren</button> <button id="btn-export-close">Schließen</button> <button id="btn-export-close" data-i18n="Close">Schließen</button> </div> </dialog> <dialog id="revisions-dialog"> <h3 data-i18n="I18N_REVISIONS">Versionen</h3> <div id="revisions-list"></div> <div class="dialog-actions"> <button id="btn-revisions-close" data-i18n="Close">Schließen</button> </div> </dialog> <script src="js/i18n.js"></script> <script src="js/api.js"></script> <script src="js/tree.js"></script> <script src="js/properties.js"></script> Loading
editor/html/js/api.js +15 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,21 @@ var EditorApi = (function() { deleteDocument: function(id) { return request('DELETE', '/api/document/delete/' + id); }, listRevisions: function(docId) { return request('GET', '/api/document/revisions/' + docId); }, loadRevision: function(revisionId) { return request('GET', '/api/document/revision/load/' + revisionId); }, restoreRevision: function(documentId, revisionId) { return request('POST', '/api/document/revision/restore', { documentId: documentId, revisionId: revisionId }); } }; })();