See https://www.woltlab.com/community/thread/300352-dialog-entwurf-wiederherstellen-verbessern/
{jsphrase name='wcf.editor.button.group.list'}
{jsphrase name='wcf.editor.button.spoiler'}
{jsphrase name='wcf.editor.restoreDraft'}
+ {jsphrase name='wcf.editor.restoreDraft.preview'}
+ {jsphrase name='wcf.editor.restoreDraft.restoreOrDiscard'}
{include file='mediaJavaScript'}
<button type="button" class="button small" data-type="cancel">
${escapeHTML(getPhrase("wcf.dialog.button.cancel"))}
</button>
+ <button type="button" class="button small" data-type="preview">
+ ${escapeHTML(getPhrase("wcf.editor.restoreDraft.preview"))}
+ </button>
</div>
`;
return dialog;
}
+function getReturnToRestoreDialogOverlay(): HTMLElement {
+ const overlay = document.createElement("div");
+ overlay.classList.add("ck", "ck-toolbar__items");
+
+ overlay.innerHTML = `
+ <button type="button" class="ck ck-button">
+ ${escapeHTML(getPhrase("wcf.editor.restoreDraft.restoreOrDiscard"))}
+ </button>
+ `;
+
+ return overlay;
+}
+
export function deleteDraft(identifier: string): void {
try {
window.localStorage.removeItem(getLocalStorageKey(identifier));
revertEditor();
});
+
+ const lockId = Symbol("autosave");
+ dialog.querySelector('button[data-type="preview"]')!.addEventListener("click", () => {
+ editor.enableReadOnlyMode(lockId);
+
+ const overlay = getReturnToRestoreDialogOverlay();
+
+ const toolbar = editor.ui.view.toolbar.element!;
+ const existingItems = Array.from(toolbar.children) as HTMLElement[];
+ existingItems.forEach((items) => (items.hidden = true));
+
+ toolbar.append(overlay);
+ dialogWrapper.hidden = true;
+
+ const closeOverlayButton = overlay.querySelector("button")!;
+ closeOverlayButton.addEventListener("click", () => {
+ editor.disableReadOnlyMode(lockId);
+
+ dialogWrapper.hidden = false;
+ overlay.remove();
+ existingItems.forEach((items) => (items.hidden = false));
+ });
+ closeOverlayButton.focus();
+ });
}
function removeExpiredDrafts(): void {
{jsphrase name='wcf.editor.button.group.list'}
{jsphrase name='wcf.editor.button.spoiler'}
{jsphrase name='wcf.editor.restoreDraft'}
+ {jsphrase name='wcf.editor.restoreDraft.preview'}
+ {jsphrase name='wcf.editor.restoreDraft.restoreOrDiscard'}
{include file='mediaJavaScript'}
<button type="button" class="button small" data-type="cancel">
${(0, StringUtil_1.escapeHTML)((0, Language_1.getPhrase)("wcf.dialog.button.cancel"))}
</button>
+ <button type="button" class="button small" data-type="preview">
+ ${(0, StringUtil_1.escapeHTML)((0, Language_1.getPhrase)("wcf.editor.restoreDraft.preview"))}
+ </button>
</div>
`;
return dialog;
}
+ function getReturnToRestoreDialogOverlay() {
+ const overlay = document.createElement("div");
+ overlay.classList.add("ck", "ck-toolbar__items");
+ overlay.innerHTML = `
+ <button type="button" class="ck ck-button">
+ ${(0, StringUtil_1.escapeHTML)((0, Language_1.getPhrase)("wcf.editor.restoreDraft.restoreOrDiscard"))}
+ </button>
+ `;
+ return overlay;
+ }
function deleteDraft(identifier) {
try {
window.localStorage.removeItem(getLocalStorageKey(identifier));
}
revertEditor();
});
+ const lockId = Symbol("autosave");
+ dialog.querySelector('button[data-type="preview"]').addEventListener("click", () => {
+ editor.enableReadOnlyMode(lockId);
+ const overlay = getReturnToRestoreDialogOverlay();
+ const toolbar = editor.ui.view.toolbar.element;
+ const existingItems = Array.from(toolbar.children);
+ existingItems.forEach((items) => (items.hidden = true));
+ toolbar.append(overlay);
+ dialogWrapper.hidden = true;
+ const closeOverlayButton = overlay.querySelector("button");
+ closeOverlayButton.addEventListener("click", () => {
+ editor.disableReadOnlyMode(lockId);
+ dialogWrapper.hidden = false;
+ overlay.remove();
+ existingItems.forEach((items) => (items.hidden = false));
+ });
+ closeOverlayButton.focus();
+ });
}
exports.setupRestoreDraft = setupRestoreDraft;
function removeExpiredDrafts() {
margin-top: 20px;
}
+.ckeditor5__restoreDraft__buttons button[data-type="preview"] {
+ margin-right: auto;
+}
+
html[data-color-scheme="dark"] {
.ckeditor5__restoreDraft__dialog {
border-color: var(--wcfContentBorderInner);
<item name="wcf.editor.button.media"><![CDATA[Media]]></item>
<item name="wcf.editor.button.page"><![CDATA[CMS-Seite]]></item>
<item name="wcf.editor.restoreDraft"><![CDATA[Möchten Sie den zwischengespeicherten Entwurf wiederherstellen?]]></item>
+ <item name="wcf.editor.restoreDraft.preview"><![CDATA[Vorschau]]></item>
+ <item name="wcf.editor.restoreDraft.restoreOrDiscard"><![CDATA[Entwurf wiederherstellen oder verwerfen]]></item>
</category>
<category name="wcf.global">
<item name="wcf.global.button.add"><![CDATA[Hinzufügen]]></item>
<item name="wcf.editor.button.media"><![CDATA[Media]]></item>
<item name="wcf.editor.button.page"><![CDATA[CMS Page]]></item>
<item name="wcf.editor.restoreDraft"><![CDATA[Do you want to restore the saved draft?]]></item>
+ <item name="wcf.editor.restoreDraft.preview"><![CDATA[Preview]]></item>
+ <item name="wcf.editor.restoreDraft.restoreOrDiscard"><![CDATA[Discard or Restore Draft]]></item>
</category>
<category name="wcf.global">
<item name="wcf.global.button.add"><![CDATA[Add]]></item>