From c5ffd738039958abf27ea36b6bbb7052a6600180 Mon Sep 17 00:00:00 2001 From: "qiang.liu" Date: Thu, 2 Apr 2026 17:42:10 +0800 Subject: [PATCH 1/5] =?UTF-8?q?update:=20=E4=BF=AE=E5=A4=8Dapp.alert?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E6=8A=A5?= =?UTF-8?q?=E9=94=99=EF=BC=8C=E6=B7=BB=E5=8A=A0markdown-shortcuts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- plugin.json | 1 + static/lib/quill-nbb.js | 744 ++++++++++++++++++++-------------------- 3 files changed, 380 insertions(+), 368 deletions(-) diff --git a/package.json b/package.json index c3e00bd..602d007 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,10 @@ "is-html": "^2.0.0", "markdown-it": "^12.0.0", "node-quill-converter": "^0.3.2", - "quill": "^1.3.6", + "quill": "^1.3.7", "quill-delta-to-html": "^0.12.0", "quill-magic-url": "^4.0.0", + "quill-markdown-shortcuts": "^0.0.10", "screenfull": "^5.0.0" }, "husky": { diff --git a/plugin.json b/plugin.json index cea758b..2ac8777 100644 --- a/plugin.json +++ b/plugin.json @@ -24,6 +24,7 @@ "modules": { "quill.js": "./node_modules/quill/dist/quill.js", "quill-magic-url.js": "./node_modules/quill-magic-url/dist/index.js", + "quill-markdown-shortcuts.js": "./node_modules/quill-markdown-shortcuts/dist/markdownShortcuts.js", "quill-emoji.js": "./static/lib/emoji.js", "composer.js": "../nodebb-plugin-composer-default/static/lib/composer.js", "composer/categoryList.js": "../nodebb-plugin-composer-default/static/lib/composer/categoryList.js", diff --git a/static/lib/quill-nbb.js b/static/lib/quill-nbb.js index 2ffa236..e4aa2fc 100644 --- a/static/lib/quill-nbb.js +++ b/static/lib/quill-nbb.js @@ -3,198 +3,198 @@ /* globals document, $, window, define, socket, app, ajaxify, config */ window.quill = { - uploads: {}, + uploads: {}, }; define('quill-nbb', [ - 'quill', - 'composer/resize', - 'components', - 'slugify', -], (Quill, resize, components, slugify) => { - $(window).on('action:composer.loaded', (ev, data) => { - const postContainer = $(`.composer[data-uuid="${data.post_uuid}"]`); - const targetEl = postContainer.find('.write-container div'); - - window.quill.init(targetEl, data); - - const cidEl = postContainer.find('.category-list'); - if (cidEl.length) { - cidEl.attr('id', `cmp-cid-${data.post_uuid}`); - } else { + 'quill', + 'composer/resize', + 'components', + 'slugify', + 'alerts', +], (Quill, resize, components, slugify, alerts) => { + $(window).on('action:composer.loaded', (ev, data) => { + const postContainer = $(`.composer[data-uuid="${data.post_uuid}"]`); + const targetEl = postContainer.find('.write-container div'); + + window.quill.init(targetEl, data); + + const cidEl = postContainer.find('.category-list'); + if (cidEl.length) { + cidEl.attr('id', `cmp-cid-${data.post_uuid}`); + } else { postContainer.append(``); - } - - // if (config.allowTopicsThumbnail && data.composerData.isMain) { - // var thumbToggleBtnEl = postContainer.find('.re-topic_thumb'); - // var url = data.composerData.topic_thumb || ''; - - // postContainer.find('input#topic-thumb-url').val(url); - // postContainer.find('img.topic-thumb-preview').attr('src', url); - - // if (url) { - // postContainer.find('.topic-thumb-clear-btn').removeClass('hide'); - // } - // thumbToggleBtnEl.addClass('show'); - // thumbToggleBtnEl.off('click').on('click', function() { - // var container = postContainer.find('.topic-thumb-container'); - // container.toggleClass('hide', !container.hasClass('hide')); - // }); - // } - - resize.reposition(postContainer); - }); - - $(window).on('action:composer.check', (ev, data) => { - // Update bodyLen for length checking purposes + } + + // if (config.allowTopicsThumbnail && data.composerData.isMain) { + // var thumbToggleBtnEl = postContainer.find('.re-topic_thumb'); + // var url = data.composerData.topic_thumb || ''; + + // postContainer.find('input#topic-thumb-url').val(url); + // postContainer.find('img.topic-thumb-preview').attr('src', url); + + // if (url) { + // postContainer.find('.topic-thumb-clear-btn').removeClass('hide'); + // } + // thumbToggleBtnEl.addClass('show'); + // thumbToggleBtnEl.off('click').on('click', function() { + // var container = postContainer.find('.topic-thumb-container'); + // container.toggleClass('hide', !container.hasClass('hide')); + // }); + // } + + resize.reposition(postContainer); + }); + + $(window).on('action:composer.check', (ev, data) => { + // Update bodyLen for length checking purposes const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill'); - data.bodyLen = quill.getLength() - 1; - }); + data.bodyLen = quill.getLength() - 1; + }); - $(window).on('action:chat.sent', (evt, data) => { - // Empty chat input + $(window).on('action:chat.sent', (evt, data) => { + // Empty chat input const quill = $(`.chat-modal[data-roomid="${data.roomId}"] .ql-container, .expanded-chat[data-roomid="${data.roomId}"] .ql-container`).data('quill'); - quill.deleteText(0, quill.getLength()); - - // Reset text direction - const textDirection = $('html').attr('data-dir'); - quill.format('direction', textDirection); - quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); - }); - - $(window).on('action:chat.prepEdit', (evt, data) => { - let value = data.inputEl.val(); - const quill = data.inputEl.siblings('.ql-container').data('quill'); - - try { - value = JSON.parse(value); - quill.setContents(value, 'user'); - } catch (e) { - app.alertError('[[error:invalid-json]]'); - } - }); - - $(window).on('action:composer.uploadUpdate', (evt, data) => { - const filename = data.filename.replace(/^\d+_\d+_/, ''); - const alertId = generateAlertId(data.post_uuid, filename); - if (!window.quill.uploads[filename]) { - console.warn(`[quill/uploads] Unable to find file (${filename}).`); - app.removeAlert(alertId); - return; - } - - if (!data.text.startsWith('/')) { - app.alert({ - alert_id: alertId, - title: data.filename.replace(/\d_\d+_/, ''), - message: data.text, - timeout: 1000, - }); - } - }); - - $(window).on('action:composer.upload', (evt, data) => { + quill.deleteText(0, quill.getLength()); + + // Reset text direction + const textDirection = $('html').attr('data-dir'); + quill.format('direction', textDirection); + quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); + }); + + $(window).on('action:chat.prepEdit', (evt, data) => { + let value = data.inputEl.val(); + const quill = data.inputEl.siblings('.ql-container').data('quill'); + + try { + value = JSON.parse(value); + quill.setContents(value, 'user'); + } catch (e) { + alerts.error('[[error:invalid-json]]'); + } + }); + + $(window).on('action:composer.uploadUpdate', (evt, data) => { + // when update progress the filename use timestamp, so we need to remove timestamp + const filename = data.filename.replace(/^\d+_\d+_/, ''); + const alertId = generateAlertId(data.post_uuid, filename); + if (!window.quill.uploads[filename]) { + console.warn(`[quill/uploads] Unable to find file (${filename}).`); + alerts.remove(alertId); + return; + } + + if (!data.text.startsWith('/')) { + alerts.alert({ + alert_id: alertId, + title: data.filename.replace(/\d_\d+_/, ''), + message: data.text, + timeout: 1000, + }); + } + }); + + $(window).on('action:composer.upload', (evt, data) => { const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill'); - data.files.forEach((file) => { - const alertId = generateAlertId(data.post_uuid, file.filename); - app.removeAlert(alertId); - - // Image vs. file upload - if (file.isImage) { - quill.insertEmbed(quill.getSelection().index, 'image', file.url); - } else { - const selection = quill.getSelection(); - - if (selection.length) { - const linkText = quill.getText(selection.index, selection.length); - quill.deleteText(selection.index, selection.length); - quill.insertText(selection.index, linkText, { - link: file.url, - }); - } else { - quill.insertText(selection.index, file.filename, { - link: file.url, - }); - } - } - }); - }); - - $(window).on('action:composer.uploadError', (evt, data) => { + data.files.forEach((file) => { + const alertId = generateAlertId(data.post_uuid, file.filename); + alerts.remove(alertId); + delete window.quill.uploads[file.filename]; + + // Image vs. file upload + if (file.isImage) { + quill.insertEmbed(quill.getSelection().index, 'image', file.url); + } else { + const selection = quill.getSelection(); + + if (selection.length) { + const linkText = quill.getText(selection.index, selection.length); + quill.deleteText(selection.index, selection.length); + quill.insertText(selection.index, linkText, { + link: file.url, + }); + } else { + quill.insertText(selection.index, file.filename, { + link: file.url, + }); + } + } + }); + }); + + $(window).on('action:composer.uploadError', (evt, data) => { const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill'); const textareaEl = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('textarea'); textareaEl.val(!window.quill.isEmpty(quill) ? JSON.stringify(quill.getContents()) : ''); - textareaEl.trigger('change'); - textareaEl.trigger('keyup'); - }); - - $(window).on('action:composer.uploadStart', (evt, data) => { - data.files.forEach((file) => { - app.alert({ - alert_id: generateAlertId(data.post_uuid, file.filename), - title: file.filename.replace(/\d_\d+_/, ''), - message: data.text, - }); - }); - }); - - $(window).on('action:composer.insertIntoTextarea', (evt, data) => { - const quill = $(data.textarea).siblings('.ql-container').data('quill'); - const selection = quill.getSelection(true); - quill.insertText(selection.index, data.value); - data.preventDefault = true; - - // hack to convert emoji's inserted text into... an emoji - require(['quill-emoji'], (Emoji) => { - Emoji.convert.call(quill); - }); - }); - - $(window).on('action:composer.updateTextareaSelection', (evt, data) => { - const quill = $(data.textarea).siblings('.ql-container').data('quill'); - quill.setSelection(data.start, data.end - data.start); - data.preventDefault = true; - }); - - $(window).on('action:composer.wrapSelectionInTextareaWith', (evt, data) => { - const Delta = Quill.import('delta'); - const quill = $(data.textarea).siblings('.ql-container').data('quill'); - - const range = quill.getSelection(); - let insertionDelta; - - if (range.length) { - insertionDelta = quill.getContents(range.index, range.length); - } else { - insertionDelta = new Delta(); - } - - // Wrap selection in spoiler tags + textareaEl.trigger('change'); + textareaEl.trigger('keyup'); + }); + + $(window).on('action:composer.uploadStart', (evt, data) => { + data.files.forEach((file) => { + const alertId = generateAlertId(data.post_uuid, file.filename); + window.quill.uploads[file.filename] = file; + }); + }); + + $(window).on('action:composer.insertIntoTextarea', (evt, data) => { + const quill = $(data.textarea).siblings('.ql-container').data('quill'); + const selection = quill.getSelection(true); + quill.insertText(selection.index, data.value); + data.preventDefault = true; + + // hack to convert emoji's inserted text into... an emoji + require(['quill-emoji'], (Emoji) => { + Emoji.convert.call(quill); + }); + }); + + $(window).on('action:composer.updateTextareaSelection', (evt, data) => { + const quill = $(data.textarea).siblings('.ql-container').data('quill'); + quill.setSelection(data.start, data.end - data.start); + data.preventDefault = true; + }); + + $(window).on('action:composer.wrapSelectionInTextareaWith', (evt, data) => { + const Delta = Quill.import('delta'); + const quill = $(data.textarea).siblings('.ql-container').data('quill'); + + const range = quill.getSelection(); + let insertionDelta; + + if (range.length) { + insertionDelta = quill.getContents(range.index, range.length); + } else { + insertionDelta = new Delta(); + } + + // Wrap selection in spoiler tags quill.updateContents(new Delta() - .retain(range.index) - .delete(range.length) - .insert(data.leading) - .concat(insertionDelta) + .retain(range.index) + .delete(range.length) + .insert(data.leading) + .concat(insertionDelta) .insert(data.trailing)); - if (range.length) { - // Update selection + if (range.length) { + // Update selection quill.setSelection(range.index + (data.leading.length), range.length); - } + } - data.preventDefault = true; - }); + data.preventDefault = true; + }); - $(window).on('action:chat.updateRemainingLength', (evt, data) => { - const quill = data.parent.find('.ql-container').data('quill'); - const length = quill.getText().length - 1; - data.parent.find('[component="chat/message/length"]').text(length); + $(window).on('action:chat.updateRemainingLength', (evt, data) => { + const quill = data.parent.find('.ql-container').data('quill'); + const length = quill.getText().length - 1; + data.parent.find('[component="chat/message/length"]').text(length); data.parent.find('[component="chat/message/remaining"]').text(config.maximumChatMessageLength - length); - }); + }); - function generateAlertId(uuid, filename) { - return slugify([uuid, filename].join('-')); - } + function generateAlertId(uuid, filename) { + return slugify([uuid, filename].join('-')); + } }); // Window events that must be attached immediately @@ -205,237 +205,247 @@ $(window).on('action:chat.loaded', (evt, containerEl) => { 'composer/autocomplete', 'components', ], (composer, autocomplete, components) => { - // Create div element for composer + // Create div element for composer const targetEl = $('
').insertBefore(components.get('chat/input')); - const onInit = function () { - autocomplete.init($(containerEl)); - }; + const onInit = function () { + autocomplete.init($(containerEl)); + }; - // Load formatting options into DOM on-demand - if (composer.formatting) { + // Load formatting options into DOM on-demand + if (composer.formatting) { window.quill.init(targetEl, { - formatting: composer.formatting, - theme: 'bubble', - bounds: containerEl, + formatting: composer.formatting, + theme: 'bubble', + bounds: containerEl, }, onInit); - } else { - socket.emit('plugins.composer.getFormattingOptions', (err, options) => { - if (err) { - app.alertError(err.message); - } + } else { + socket.emit('plugins.composer.getFormattingOptions', (err, options) => { + if (err) { + alerts.error(err.message); + } - composer.formatting = options; + composer.formatting = options; window.quill.init(targetEl, { - formatting: composer.formatting, - theme: 'bubble', - bounds: containerEl, + formatting: composer.formatting, + theme: 'bubble', + bounds: containerEl, }, onInit); - }); - } - }); + }); + } + }); }); // Internal methods window.quill.init = function (targetEl, data, callback) { - require([ + require([ 'quill', 'quill-magic-url', 'quill-emoji', 'composer/autocomplete', 'composer/drafts', ], (Quill, MagicUrl, Emoji, autocomplete, drafts) => { - const textDirection = $('html').attr('data-dir'); - const textareaEl = targetEl.siblings('textarea'); - - window.quill.configureToolbar(targetEl, data).then(({ toolbar }) => { - // Quill... - Quill.register('modules/magicUrl', MagicUrl.default); - const quill = new Quill(targetEl.get(0), { - theme: data.theme || 'snow', - modules: { - toolbar, - magicUrl: { - normalizeUrlOptions: { - sortQueryParameters: false, - defaultProtocol: 'https:', - }, - }, - }, - bounds: data.bounds || document.body, - }); - targetEl.data('quill', quill); - targetEl.find('.ql-editor').addClass('write'); - - // Configure toolbar icons (must be done after quill itself is instantiated) + const textDirection = $('html').attr('data-dir'); + const textareaEl = targetEl.siblings('textarea'); + + window.quill.configureToolbar(targetEl, data).then(({ toolbar }) => { + // Quill... + Quill.register('modules/magicUrl', MagicUrl.default); + Quill.register('modules/markdownShortcuts', MarkdownShortcuts); + const quill = new Quill(targetEl.get(0), { + theme: data.theme || 'snow', + modules: { + toolbar, + magicUrl: { + normalizeUrlOptions: { + sortQueryParameters: false, + defaultProtocol: 'https:', + }, + }, + markdownShortcuts: {}, + }, + bounds: data.bounds || document.body, + }); + targetEl.data('quill', quill); + targetEl.find('.ql-editor').addClass('write'); + + // Configure toolbar icons (must be done after quill itself is instantiated) const toolbarEl = targetEl.siblings('.ql-toolbar').length ? targetEl.siblings('.ql-toolbar') : targetEl.find('.ql-toolbar'); - data.formatting.forEach((option) => { - const buttonEl = toolbarEl.find(`.ql-${option.name}`); - buttonEl.html(``); - if (option.mobile) { - buttonEl.addClass('visible-xs'); - } - }); - ['upload:post:image', 'upload:post:file'].forEach((privilege) => { - if (app.user.privileges[privilege]) { + data.formatting.forEach((option) => { + const buttonEl = toolbarEl.find(`.ql-${option.name}`); + buttonEl.html(``); + if (option.mobile) { + buttonEl.addClass('visible-xs'); + } + }); + ['upload:post:image', 'upload:post:file'].forEach((privilege) => { + if (app.user.privileges[privilege]) { const className = privilege === 'upload:post:image' ? 'picture' : 'upload'; - const buttonEl = toolbarEl.find(`.ql-${className}`); - if (className === 'picture') { - buttonEl.html(''); - } else { - buttonEl.html(''); - } - } - }); - - $(window).trigger('action:quill.load', quill); - - // Restore text if contained in composerData or drafts - const draft = data.composerData && drafts.get(data.composerData.save_id); - if (data.composerData && data.composerData.body) { - try { - const unescaped = data.composerData.body.replace(/"/g, '"'); - const delta = JSON.parse(unescaped); - delta.ops.push({ - insert: '\n', - attributes: { - direction: textDirection, - align: textDirection === 'rtl' ? 'right' : 'left', - }, - }); - quill.setContents(delta, 'api'); - } catch (e) { + const buttonEl = toolbarEl.find(`.ql-${className}`); + if (className === 'picture') { + buttonEl.html(''); + } else { + buttonEl.html(''); + } + } + }); + + $(window).trigger('action:quill.load', quill); + + // Restore text if contained in composerData or drafts + const draft = data.composerData && drafts.get(data.composerData.save_id); + if (data.composerData && data.composerData.body) { + try { + const unescaped = data.composerData.body.replace(/"/g, '"'); + const delta = JSON.parse(unescaped); + delta.ops.push({ + insert: '\n', + attributes: { + direction: textDirection, + align: textDirection === 'rtl' ? 'right' : 'left', + }, + }); + quill.setContents(delta, 'api'); + } catch (e) { quill.setContents({ ops: [{ - insert: data.composerData.body.toString(), - attributes: { - direction: textDirection, - align: textDirection === 'rtl' ? 'right' : 'left', - }, + insert: data.composerData.body.toString(), + attributes: { + direction: textDirection, + align: textDirection === 'rtl' ? 'right' : 'left', + }, }], }, 'api'); - } - - // Move cursor to the very end - const length = quill.getLength(); - quill.setSelection(length); - } else if (draft && draft.text) { - // Set title - targetEl.parents('.composer').find('.title').val(draft.title); - const delta = JSON.parse(draft.text); - delta.ops.push({ - insert: '\n', - attributes: { - direction: textDirection, - align: textDirection === 'rtl' ? 'right' : 'left', - }, - }); - quill.setContents(delta, 'api'); - } - - // Automatic RTL support - quill.format('direction', textDirection); - quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); - - autocomplete.init(targetEl, data.post_uuid); - Emoji.enable(quill); - - // Update textarea on editor-change event. This allows compatibility with - // how NodeBB handles things like drafts, etc. - quill.on('editor-change', () => { - textareaEl.val(JSON.stringify(quill.getContents())); - textareaEl.trigger('change'); - textareaEl.trigger('keyup'); - }); - - // Special handling on text-change - quill.on('text-change', () => { - if (window.quill.isEmpty(quill)) { - quill.deleteText(0, quill.getLength()); - textareaEl.val(''); - } - }); - - // Handle tab/enter for autocomplete - const doAutocomplete = function () { - setTimeout(Emoji.convert.bind(quill), 0); + } + + // Move cursor to the very end + const length = quill.getLength(); + quill.setSelection(length); + } else if (draft && draft.text) { + // Set title + targetEl.parents('.composer').find('.title').val(draft.title); + const delta = JSON.parse(draft.text); + delta.ops.push({ + insert: '\n', + attributes: { + direction: textDirection, + align: textDirection === 'rtl' ? 'right' : 'left', + }, + }); + quill.setContents(delta, 'api'); + } + + // Automatic RTL support + quill.format('direction', textDirection); + quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); + + autocomplete.init(targetEl, data.post_uuid); + Emoji.enable(quill); + + // Update textarea on editor-change event. This allows compatibility with + // how NodeBB handles things like drafts, etc. + quill.on('editor-change', () => { + textareaEl.val(JSON.stringify(quill.getContents())); + textareaEl.trigger('change'); + textareaEl.trigger('keyup'); + }); + + // Special handling on text-change + quill.on('text-change', () => { + if (window.quill.isEmpty(quill)) { + quill.deleteText(0, quill.getLength()); + textareaEl.val(''); + } + }); + + // Handle tab/enter for autocomplete + const doAutocomplete = function () { + setTimeout(Emoji.convert.bind(quill), 0); return !$(`.composer-autocomplete-dropdown-${data.post_uuid}:visible`).length; - }; - [9, 13].forEach((keyCode) => { + }; + [9, 13].forEach((keyCode) => { quill.keyboard.addBinding({ - key: keyCode, + key: keyCode, }, doAutocomplete); quill.keyboard.bindings[keyCode].unshift(quill.keyboard.bindings[keyCode].pop()); - }); + }); - if (!data.composerData || data.composerData.action !== 'topics.post') { - // Oddly, a 0ms timeout is required here otherwise .focus() does not work - setTimeout(quill.focus.bind(quill), 0); - } + if (!data.composerData || data.composerData.action !== 'topics.post') { + // Oddly, a 0ms timeout is required here otherwise .focus() does not work + setTimeout(quill.focus.bind(quill), 0); + } - if (typeof callback === 'function') { - callback(); - } - }); - }); + if (typeof callback === 'function') { + callback(); + } + }); + }); - return window.quill; + return window.quill; }; window.quill.configureToolbar = async (targetEl, data) => { - const textareaEl = targetEl.siblings('textarea'); - const [formatting, hooks] = await new Promise((resolve) => { - require(['composer/formatting', 'hooks'], (...libs) => resolve(libs)); - }); - const toolbar = { - container: [ - [{ header: [1, 2, 3, 4, 5, 6, false] }], // h1..h6 - [{ font: [] }], - ['bold', 'italic', 'underline', 'strike'], // toggled buttons - ['link', 'blockquote', 'code-block'], - [{ list: 'ordered' }, { list: 'bullet' }], - [{ script: 'sub' }, { script: 'super' }], // superscript/subscript - [{ color: [] }, { background: [] }], // dropdown with defaults from theme - [{ align: [] }], - ['clean'], - ], - handlers: {}, - }; - - // Configure toolbar - const toolbarHandlers = formatting.getDispatchTable(); - const group = []; - data.formatting.forEach((option) => { - group.push(option.name); - toolbar.handlers[option.name] = function () { - // Chicken-wrapper to pass additional values to handlers (to match composer-default behaviour) - const quill = targetEl.data('quill'); - const selection = quill.getSelection(true); + const textareaEl = targetEl.siblings('textarea'); + const [formatting, hooks] = await new Promise((resolve) => { + require(['composer/formatting', 'hooks'], (...libs) => resolve(libs)); + }); + const toolbar = { + container: [ + [{ header: [1, 2, 3, 4, 5, 6, false] }], // h1..h6 + [{ font: [] }], + ['bold', 'italic', 'underline', 'strike'], // toggled buttons + ['link', 'blockquote', 'code-block'], + [{ list: 'ordered' }, { list: 'bullet' }], + [{ script: 'sub' }, { script: 'super' }], // superscript/subscript + [{ color: [] }, { background: [] }], // dropdown with defaults from theme + [{ align: [] }], + ['clean'], + ], + handlers: {}, + }; + + // Configure toolbar + const toolbarHandlers = formatting.getDispatchTable(); + const group = []; + data.formatting.forEach((option) => { + const ignoreNames = ['tags', 'thumbs']; + if (ignoreNames.includes(option.name)) { + return; + } + group.push(option.name); + toolbar.handlers[option.name] = function () { + // Chicken-wrapper to pass additional values to handlers (to match composer-default behaviour) + const quill = targetEl.data('quill'); + const selection = quill.getSelection(true); toolbarHandlers[option.name].apply( data.postContainer, [textareaEl.get(0), selection.index, selection.index + selection.length] ); - }; - }); - // -- upload privileges - ['upload:post:file', 'upload:post:image'].forEach((privilege) => { - if (app.user.privileges[privilege]) { - const name = privilege === 'upload:post:image' ? 'picture' : 'upload'; - group.unshift(name); - toolbar.handlers[name] = toolbarHandlers[name].bind($('.formatting-bar')); - } - }); - toolbar.container.push(group); - - // Allow plugins to modify toolbar - return await hooks.fire('filter:quill.toolbar', { toolbar }); + }; + }); + // -- upload privileges + ['upload:post:file', 'upload:post:image'].forEach((privilege) => { + if (app.user.privileges[privilege]) { + const name = privilege === 'upload:post:image' ? 'picture' : 'upload'; + group.unshift(name); + toolbar.handlers[name] = toolbarHandlers[name].bind($('.formatting-bar')); + } + }); + toolbar.container.push(group); + + // Allow plugins to modify toolbar + return await hooks.fire('filter:quill.toolbar', { toolbar }); }; window.quill.isEmpty = function (quill) { - const contents = quill.getContents(); - - if (contents.ops.length === 1) { - const value = contents.ops[0].insert.replace(/[\s\n]/g, ''); - return value === ''; - } - - return false; + const contents = quill.getContents(); + if (contents.ops.length === 1) { + const value = contents.ops[0].insert.replace(/[\s\n]/g, ''); + const attributes = contents.ops[0].attributes; + if (attributes) { + return false; + } + console.log('quill value:', value); + return value === ''; + } + + return false; }; From e32699eae976fdb89a18b5011f2da102cdd5d719 Mon Sep 17 00:00:00 2001 From: kyo6 Date: Sun, 5 Apr 2026 10:12:42 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=BC=BA=E5=B0=91markdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/lib/quill-nbb.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/lib/quill-nbb.js b/static/lib/quill-nbb.js index e4aa2fc..38a9418 100644 --- a/static/lib/quill-nbb.js +++ b/static/lib/quill-nbb.js @@ -240,9 +240,9 @@ $(window).on('action:chat.loaded', (evt, containerEl) => { window.quill.init = function (targetEl, data, callback) { require([ - 'quill', 'quill-magic-url', 'quill-emoji', + 'quill', 'quill-magic-url', 'quill-emoji', 'quill-markdown-shortcuts', 'composer/autocomplete', 'composer/drafts', - ], (Quill, MagicUrl, Emoji, autocomplete, drafts) => { + ], (Quill, MagicUrl, Emoji, MarkdownShortcuts, autocomplete, drafts) => { const textDirection = $('html').attr('data-dir'); const textareaEl = targetEl.siblings('textarea'); From 62bcce45788e92d56e659a8226c9df32925e0602 Mon Sep 17 00:00:00 2001 From: kyo6 Date: Sun, 5 Apr 2026 11:06:16 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/lib/quill-nbb.js | 751 ++++++++++++++++++++-------------------- 1 file changed, 376 insertions(+), 375 deletions(-) diff --git a/static/lib/quill-nbb.js b/static/lib/quill-nbb.js index 38a9418..faaeb13 100644 --- a/static/lib/quill-nbb.js +++ b/static/lib/quill-nbb.js @@ -3,198 +3,198 @@ /* globals document, $, window, define, socket, app, ajaxify, config */ window.quill = { - uploads: {}, + uploads: {}, }; define('quill-nbb', [ - 'quill', - 'composer/resize', - 'components', - 'slugify', - 'alerts', + 'quill', + 'composer/resize', + 'components', + 'slugify', + 'alerts', ], (Quill, resize, components, slugify, alerts) => { - $(window).on('action:composer.loaded', (ev, data) => { - const postContainer = $(`.composer[data-uuid="${data.post_uuid}"]`); - const targetEl = postContainer.find('.write-container div'); + $(window).on('action:composer.loaded', (ev, data) => { + const postContainer = $(`.composer[data-uuid="${data.post_uuid}"]`); + const targetEl = postContainer.find('.write-container div'); - window.quill.init(targetEl, data); + window.quill.init(targetEl, data); - const cidEl = postContainer.find('.category-list'); - if (cidEl.length) { - cidEl.attr('id', `cmp-cid-${data.post_uuid}`); - } else { + const cidEl = postContainer.find('.category-list'); + if (cidEl.length) { + cidEl.attr('id', `cmp-cid-${data.post_uuid}`); + } else { postContainer.append(``); - } - - // if (config.allowTopicsThumbnail && data.composerData.isMain) { - // var thumbToggleBtnEl = postContainer.find('.re-topic_thumb'); - // var url = data.composerData.topic_thumb || ''; - - // postContainer.find('input#topic-thumb-url').val(url); - // postContainer.find('img.topic-thumb-preview').attr('src', url); - - // if (url) { - // postContainer.find('.topic-thumb-clear-btn').removeClass('hide'); - // } - // thumbToggleBtnEl.addClass('show'); - // thumbToggleBtnEl.off('click').on('click', function() { - // var container = postContainer.find('.topic-thumb-container'); - // container.toggleClass('hide', !container.hasClass('hide')); - // }); - // } - - resize.reposition(postContainer); - }); - - $(window).on('action:composer.check', (ev, data) => { - // Update bodyLen for length checking purposes + } + + // if (config.allowTopicsThumbnail && data.composerData.isMain) { + // var thumbToggleBtnEl = postContainer.find('.re-topic_thumb'); + // var url = data.composerData.topic_thumb || ''; + + // postContainer.find('input#topic-thumb-url').val(url); + // postContainer.find('img.topic-thumb-preview').attr('src', url); + + // if (url) { + // postContainer.find('.topic-thumb-clear-btn').removeClass('hide'); + // } + // thumbToggleBtnEl.addClass('show'); + // thumbToggleBtnEl.off('click').on('click', function() { + // var container = postContainer.find('.topic-thumb-container'); + // container.toggleClass('hide', !container.hasClass('hide')); + // }); + // } + + resize.reposition(postContainer); + }); + + $(window).on('action:composer.check', (ev, data) => { + // Update bodyLen for length checking purposes const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill'); - data.bodyLen = quill.getLength() - 1; - }); + data.bodyLen = quill.getLength() - 1; + }); - $(window).on('action:chat.sent', (evt, data) => { - // Empty chat input + $(window).on('action:chat.sent', (evt, data) => { + // Empty chat input const quill = $(`.chat-modal[data-roomid="${data.roomId}"] .ql-container, .expanded-chat[data-roomid="${data.roomId}"] .ql-container`).data('quill'); - quill.deleteText(0, quill.getLength()); - - // Reset text direction - const textDirection = $('html').attr('data-dir'); - quill.format('direction', textDirection); - quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); - }); - - $(window).on('action:chat.prepEdit', (evt, data) => { - let value = data.inputEl.val(); - const quill = data.inputEl.siblings('.ql-container').data('quill'); - - try { - value = JSON.parse(value); - quill.setContents(value, 'user'); - } catch (e) { - alerts.error('[[error:invalid-json]]'); - } - }); - - $(window).on('action:composer.uploadUpdate', (evt, data) => { - // when update progress the filename use timestamp, so we need to remove timestamp - const filename = data.filename.replace(/^\d+_\d+_/, ''); - const alertId = generateAlertId(data.post_uuid, filename); - if (!window.quill.uploads[filename]) { - console.warn(`[quill/uploads] Unable to find file (${filename}).`); - alerts.remove(alertId); - return; - } - - if (!data.text.startsWith('/')) { - alerts.alert({ - alert_id: alertId, - title: data.filename.replace(/\d_\d+_/, ''), - message: data.text, - timeout: 1000, - }); - } - }); - - $(window).on('action:composer.upload', (evt, data) => { + quill.deleteText(0, quill.getLength()); + + // Reset text direction + const textDirection = $('html').attr('data-dir'); + quill.format('direction', textDirection); + quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); + }); + + $(window).on('action:chat.prepEdit', (evt, data) => { + let value = data.inputEl.val(); + const quill = data.inputEl.siblings('.ql-container').data('quill'); + + try { + value = JSON.parse(value); + quill.setContents(value, 'user'); + } catch (e) { + alerts.error('[[error:invalid-json]]'); + } + }); + + $(window).on('action:composer.uploadUpdate', (evt, data) => { + // when update progress the filename use timestamp, so we need to remove timestamp + const filename = data.filename.replace(/^\d+_\d+_/, ''); + const alertId = generateAlertId(data.post_uuid, filename); + if (!window.quill.uploads[filename]) { + console.warn(`[quill/uploads] Unable to find file (${filename}).`); + alerts.remove(alertId); + return; + } + + if (!data.text.startsWith('/')) { + alerts.alert({ + alert_id: alertId, + title: data.filename.replace(/\d_\d+_/, ''), + message: data.text, + timeout: 1000, + }); + } + }); + + $(window).on('action:composer.upload', (evt, data) => { const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill'); - data.files.forEach((file) => { - const alertId = generateAlertId(data.post_uuid, file.filename); - alerts.remove(alertId); - delete window.quill.uploads[file.filename]; - - // Image vs. file upload - if (file.isImage) { - quill.insertEmbed(quill.getSelection().index, 'image', file.url); - } else { - const selection = quill.getSelection(); - - if (selection.length) { - const linkText = quill.getText(selection.index, selection.length); - quill.deleteText(selection.index, selection.length); - quill.insertText(selection.index, linkText, { - link: file.url, - }); - } else { - quill.insertText(selection.index, file.filename, { - link: file.url, - }); - } - } - }); - }); - - $(window).on('action:composer.uploadError', (evt, data) => { + data.files.forEach((file) => { + const alertId = generateAlertId(data.post_uuid, file.filename); + alerts.remove(alertId); + delete window.quill.uploads[file.filename]; + + // Image vs. file upload + if (file.isImage) { + quill.insertEmbed(quill.getSelection().index, 'image', file.url); + } else { + const selection = quill.getSelection(); + + if (selection.length) { + const linkText = quill.getText(selection.index, selection.length); + quill.deleteText(selection.index, selection.length); + quill.insertText(selection.index, linkText, { + link: file.url, + }); + } else { + quill.insertText(selection.index, file.filename, { + link: file.url, + }); + } + } + }); + }); + + $(window).on('action:composer.uploadError', (evt, data) => { const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill'); const textareaEl = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('textarea'); textareaEl.val(!window.quill.isEmpty(quill) ? JSON.stringify(quill.getContents()) : ''); - textareaEl.trigger('change'); - textareaEl.trigger('keyup'); - }); - - $(window).on('action:composer.uploadStart', (evt, data) => { - data.files.forEach((file) => { - const alertId = generateAlertId(data.post_uuid, file.filename); - window.quill.uploads[file.filename] = file; - }); - }); - - $(window).on('action:composer.insertIntoTextarea', (evt, data) => { - const quill = $(data.textarea).siblings('.ql-container').data('quill'); - const selection = quill.getSelection(true); - quill.insertText(selection.index, data.value); - data.preventDefault = true; - - // hack to convert emoji's inserted text into... an emoji - require(['quill-emoji'], (Emoji) => { - Emoji.convert.call(quill); - }); - }); - - $(window).on('action:composer.updateTextareaSelection', (evt, data) => { - const quill = $(data.textarea).siblings('.ql-container').data('quill'); - quill.setSelection(data.start, data.end - data.start); - data.preventDefault = true; - }); - - $(window).on('action:composer.wrapSelectionInTextareaWith', (evt, data) => { - const Delta = Quill.import('delta'); - const quill = $(data.textarea).siblings('.ql-container').data('quill'); - - const range = quill.getSelection(); - let insertionDelta; - - if (range.length) { - insertionDelta = quill.getContents(range.index, range.length); - } else { - insertionDelta = new Delta(); - } - - // Wrap selection in spoiler tags + textareaEl.trigger('change'); + textareaEl.trigger('keyup'); + }); + + $(window).on('action:composer.uploadStart', (evt, data) => { + data.files.forEach((file) => { + const alertId = generateAlertId(data.post_uuid, file.filename); + window.quill.uploads[file.filename] = file; + }); + }); + + $(window).on('action:composer.insertIntoTextarea', (evt, data) => { + const quill = $(data.textarea).siblings('.ql-container').data('quill'); + const selection = quill.getSelection(true); + quill.insertText(selection.index, data.value); + data.preventDefault = true; + + // hack to convert emoji's inserted text into... an emoji + require(['quill-emoji'], (Emoji) => { + Emoji.convert.call(quill); + }); + }); + + $(window).on('action:composer.updateTextareaSelection', (evt, data) => { + const quill = $(data.textarea).siblings('.ql-container').data('quill'); + quill.setSelection(data.start, data.end - data.start); + data.preventDefault = true; + }); + + $(window).on('action:composer.wrapSelectionInTextareaWith', (evt, data) => { + const Delta = Quill.import('delta'); + const quill = $(data.textarea).siblings('.ql-container').data('quill'); + + const range = quill.getSelection(); + let insertionDelta; + + if (range.length) { + insertionDelta = quill.getContents(range.index, range.length); + } else { + insertionDelta = new Delta(); + } + + // Wrap selection in spoiler tags quill.updateContents(new Delta() - .retain(range.index) - .delete(range.length) - .insert(data.leading) - .concat(insertionDelta) + .retain(range.index) + .delete(range.length) + .insert(data.leading) + .concat(insertionDelta) .insert(data.trailing)); - if (range.length) { - // Update selection + if (range.length) { + // Update selection quill.setSelection(range.index + (data.leading.length), range.length); - } + } - data.preventDefault = true; - }); + data.preventDefault = true; + }); - $(window).on('action:chat.updateRemainingLength', (evt, data) => { - const quill = data.parent.find('.ql-container').data('quill'); - const length = quill.getText().length - 1; - data.parent.find('[component="chat/message/length"]').text(length); + $(window).on('action:chat.updateRemainingLength', (evt, data) => { + const quill = data.parent.find('.ql-container').data('quill'); + const length = quill.getText().length - 1; + data.parent.find('[component="chat/message/length"]').text(length); data.parent.find('[component="chat/message/remaining"]').text(config.maximumChatMessageLength - length); - }); + }); - function generateAlertId(uuid, filename) { - return slugify([uuid, filename].join('-')); - } + function generateAlertId(uuid, filename) { + return slugify([uuid, filename].join('-')); + } }); // Window events that must be attached immediately @@ -204,248 +204,249 @@ $(window).on('action:chat.loaded', (evt, containerEl) => { 'composer', 'composer/autocomplete', 'components', - ], (composer, autocomplete, components) => { - // Create div element for composer + 'alerts', + ], (composer, autocomplete, components, alerts) => { + // Create div element for composer const targetEl = $('
').insertBefore(components.get('chat/input')); - const onInit = function () { - autocomplete.init($(containerEl)); - }; + const onInit = function () { + autocomplete.init($(containerEl)); + }; - // Load formatting options into DOM on-demand - if (composer.formatting) { + // Load formatting options into DOM on-demand + if (composer.formatting) { window.quill.init(targetEl, { - formatting: composer.formatting, - theme: 'bubble', - bounds: containerEl, + formatting: composer.formatting, + theme: 'bubble', + bounds: containerEl, }, onInit); - } else { - socket.emit('plugins.composer.getFormattingOptions', (err, options) => { - if (err) { - alerts.error(err.message); - } + } else { + socket.emit('plugins.composer.getFormattingOptions', (err, options) => { + if (err) { + alerts.error(err.message); + } - composer.formatting = options; + composer.formatting = options; window.quill.init(targetEl, { - formatting: composer.formatting, - theme: 'bubble', - bounds: containerEl, + formatting: composer.formatting, + theme: 'bubble', + bounds: containerEl, }, onInit); - }); - } - }); + }); + } + }); }); // Internal methods window.quill.init = function (targetEl, data, callback) { - require([ + require([ 'quill', 'quill-magic-url', 'quill-emoji', 'quill-markdown-shortcuts', 'composer/autocomplete', 'composer/drafts', ], (Quill, MagicUrl, Emoji, MarkdownShortcuts, autocomplete, drafts) => { - const textDirection = $('html').attr('data-dir'); - const textareaEl = targetEl.siblings('textarea'); - - window.quill.configureToolbar(targetEl, data).then(({ toolbar }) => { - // Quill... - Quill.register('modules/magicUrl', MagicUrl.default); - Quill.register('modules/markdownShortcuts', MarkdownShortcuts); - const quill = new Quill(targetEl.get(0), { - theme: data.theme || 'snow', - modules: { - toolbar, - magicUrl: { - normalizeUrlOptions: { - sortQueryParameters: false, - defaultProtocol: 'https:', - }, - }, - markdownShortcuts: {}, - }, - bounds: data.bounds || document.body, - }); - targetEl.data('quill', quill); - targetEl.find('.ql-editor').addClass('write'); - - // Configure toolbar icons (must be done after quill itself is instantiated) + const textDirection = $('html').attr('data-dir'); + const textareaEl = targetEl.siblings('textarea'); + + window.quill.configureToolbar(targetEl, data).then(({ toolbar }) => { + // Quill... + Quill.register('modules/magicUrl', MagicUrl.default); + Quill.register('modules/markdownShortcuts', MarkdownShortcuts); + const quill = new Quill(targetEl.get(0), { + theme: data.theme || 'snow', + modules: { + toolbar, + magicUrl: { + normalizeUrlOptions: { + sortQueryParameters: false, + defaultProtocol: 'https:', + }, + }, + markdownShortcuts: {}, + }, + bounds: data.bounds || document.body, + }); + targetEl.data('quill', quill); + targetEl.find('.ql-editor').addClass('write'); + + // Configure toolbar icons (must be done after quill itself is instantiated) const toolbarEl = targetEl.siblings('.ql-toolbar').length ? targetEl.siblings('.ql-toolbar') : targetEl.find('.ql-toolbar'); - data.formatting.forEach((option) => { - const buttonEl = toolbarEl.find(`.ql-${option.name}`); - buttonEl.html(``); - if (option.mobile) { - buttonEl.addClass('visible-xs'); - } - }); - ['upload:post:image', 'upload:post:file'].forEach((privilege) => { - if (app.user.privileges[privilege]) { + data.formatting.forEach((option) => { + const buttonEl = toolbarEl.find(`.ql-${option.name}`); + buttonEl.html(``); + if (option.mobile) { + buttonEl.addClass('visible-xs'); + } + }); + ['upload:post:image', 'upload:post:file'].forEach((privilege) => { + if (app.user.privileges[privilege]) { const className = privilege === 'upload:post:image' ? 'picture' : 'upload'; - const buttonEl = toolbarEl.find(`.ql-${className}`); - if (className === 'picture') { - buttonEl.html(''); - } else { - buttonEl.html(''); - } - } - }); - - $(window).trigger('action:quill.load', quill); - - // Restore text if contained in composerData or drafts - const draft = data.composerData && drafts.get(data.composerData.save_id); - if (data.composerData && data.composerData.body) { - try { - const unescaped = data.composerData.body.replace(/"/g, '"'); - const delta = JSON.parse(unescaped); - delta.ops.push({ - insert: '\n', - attributes: { - direction: textDirection, - align: textDirection === 'rtl' ? 'right' : 'left', - }, - }); - quill.setContents(delta, 'api'); - } catch (e) { + const buttonEl = toolbarEl.find(`.ql-${className}`); + if (className === 'picture') { + buttonEl.html(''); + } else { + buttonEl.html(''); + } + } + }); + + $(window).trigger('action:quill.load', quill); + + // Restore text if contained in composerData or drafts + const draft = data.composerData && drafts.get(data.composerData.save_id); + if (data.composerData && data.composerData.body) { + try { + const unescaped = data.composerData.body.replace(/"/g, '"'); + const delta = JSON.parse(unescaped); + delta.ops.push({ + insert: '\n', + attributes: { + direction: textDirection, + align: textDirection === 'rtl' ? 'right' : 'left', + }, + }); + quill.setContents(delta, 'api'); + } catch (e) { quill.setContents({ ops: [{ - insert: data.composerData.body.toString(), - attributes: { - direction: textDirection, - align: textDirection === 'rtl' ? 'right' : 'left', - }, + insert: data.composerData.body.toString(), + attributes: { + direction: textDirection, + align: textDirection === 'rtl' ? 'right' : 'left', + }, }], }, 'api'); - } - - // Move cursor to the very end - const length = quill.getLength(); - quill.setSelection(length); - } else if (draft && draft.text) { - // Set title - targetEl.parents('.composer').find('.title').val(draft.title); - const delta = JSON.parse(draft.text); - delta.ops.push({ - insert: '\n', - attributes: { - direction: textDirection, - align: textDirection === 'rtl' ? 'right' : 'left', - }, - }); - quill.setContents(delta, 'api'); - } - - // Automatic RTL support - quill.format('direction', textDirection); - quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); - - autocomplete.init(targetEl, data.post_uuid); - Emoji.enable(quill); - - // Update textarea on editor-change event. This allows compatibility with - // how NodeBB handles things like drafts, etc. - quill.on('editor-change', () => { - textareaEl.val(JSON.stringify(quill.getContents())); - textareaEl.trigger('change'); - textareaEl.trigger('keyup'); - }); - - // Special handling on text-change - quill.on('text-change', () => { - if (window.quill.isEmpty(quill)) { - quill.deleteText(0, quill.getLength()); - textareaEl.val(''); - } - }); - - // Handle tab/enter for autocomplete - const doAutocomplete = function () { - setTimeout(Emoji.convert.bind(quill), 0); + } + + // Move cursor to the very end + const length = quill.getLength(); + quill.setSelection(length); + } else if (draft && draft.text) { + // Set title + targetEl.parents('.composer').find('.title').val(draft.title); + const delta = JSON.parse(draft.text); + delta.ops.push({ + insert: '\n', + attributes: { + direction: textDirection, + align: textDirection === 'rtl' ? 'right' : 'left', + }, + }); + quill.setContents(delta, 'api'); + } + + // Automatic RTL support + quill.format('direction', textDirection); + quill.format('align', textDirection === 'rtl' ? 'right' : 'left'); + + autocomplete.init(targetEl, data.post_uuid); + Emoji.enable(quill); + + // Update textarea on editor-change event. This allows compatibility with + // how NodeBB handles things like drafts, etc. + quill.on('editor-change', () => { + textareaEl.val(JSON.stringify(quill.getContents())); + textareaEl.trigger('change'); + textareaEl.trigger('keyup'); + }); + + // Special handling on text-change + quill.on('text-change', () => { + if (window.quill.isEmpty(quill)) { + quill.deleteText(0, quill.getLength()); + textareaEl.val(''); + } + }); + + // Handle tab/enter for autocomplete + const doAutocomplete = function () { + setTimeout(Emoji.convert.bind(quill), 0); return !$(`.composer-autocomplete-dropdown-${data.post_uuid}:visible`).length; - }; - [9, 13].forEach((keyCode) => { + }; + [9, 13].forEach((keyCode) => { quill.keyboard.addBinding({ - key: keyCode, + key: keyCode, }, doAutocomplete); quill.keyboard.bindings[keyCode].unshift(quill.keyboard.bindings[keyCode].pop()); - }); + }); - if (!data.composerData || data.composerData.action !== 'topics.post') { - // Oddly, a 0ms timeout is required here otherwise .focus() does not work - setTimeout(quill.focus.bind(quill), 0); - } + if (!data.composerData || data.composerData.action !== 'topics.post') { + // Oddly, a 0ms timeout is required here otherwise .focus() does not work + setTimeout(quill.focus.bind(quill), 0); + } - if (typeof callback === 'function') { - callback(); - } - }); - }); + if (typeof callback === 'function') { + callback(); + } + }); + }); - return window.quill; + return window.quill; }; window.quill.configureToolbar = async (targetEl, data) => { - const textareaEl = targetEl.siblings('textarea'); - const [formatting, hooks] = await new Promise((resolve) => { - require(['composer/formatting', 'hooks'], (...libs) => resolve(libs)); - }); - const toolbar = { - container: [ - [{ header: [1, 2, 3, 4, 5, 6, false] }], // h1..h6 - [{ font: [] }], - ['bold', 'italic', 'underline', 'strike'], // toggled buttons - ['link', 'blockquote', 'code-block'], - [{ list: 'ordered' }, { list: 'bullet' }], - [{ script: 'sub' }, { script: 'super' }], // superscript/subscript - [{ color: [] }, { background: [] }], // dropdown with defaults from theme - [{ align: [] }], - ['clean'], - ], - handlers: {}, - }; - - // Configure toolbar - const toolbarHandlers = formatting.getDispatchTable(); - const group = []; - data.formatting.forEach((option) => { - const ignoreNames = ['tags', 'thumbs']; - if (ignoreNames.includes(option.name)) { - return; - } - group.push(option.name); - toolbar.handlers[option.name] = function () { - // Chicken-wrapper to pass additional values to handlers (to match composer-default behaviour) - const quill = targetEl.data('quill'); - const selection = quill.getSelection(true); + const textareaEl = targetEl.siblings('textarea'); + const [formatting, hooks] = await new Promise((resolve) => { + require(['composer/formatting', 'hooks'], (...libs) => resolve(libs)); + }); + const toolbar = { + container: [ + [{ header: [1, 2, 3, 4, 5, 6, false] }], // h1..h6 + [{ font: [] }], + ['bold', 'italic', 'underline', 'strike'], // toggled buttons + ['link', 'blockquote', 'code-block'], + [{ list: 'ordered' }, { list: 'bullet' }], + [{ script: 'sub' }, { script: 'super' }], // superscript/subscript + [{ color: [] }, { background: [] }], // dropdown with defaults from theme + [{ align: [] }], + ['clean'], + ], + handlers: {}, + }; + + // Configure toolbar + const toolbarHandlers = formatting.getDispatchTable(); + const group = []; + data.formatting.forEach((option) => { + const ignoreNames = ['tags', 'thumbs']; + if (ignoreNames.includes(option.name)) { + return; + } + group.push(option.name); + toolbar.handlers[option.name] = function () { + // Chicken-wrapper to pass additional values to handlers (to match composer-default behaviour) + const quill = targetEl.data('quill'); + const selection = quill.getSelection(true); toolbarHandlers[option.name].apply( data.postContainer, [textareaEl.get(0), selection.index, selection.index + selection.length] ); - }; - }); - // -- upload privileges - ['upload:post:file', 'upload:post:image'].forEach((privilege) => { - if (app.user.privileges[privilege]) { - const name = privilege === 'upload:post:image' ? 'picture' : 'upload'; - group.unshift(name); - toolbar.handlers[name] = toolbarHandlers[name].bind($('.formatting-bar')); - } - }); - toolbar.container.push(group); - - // Allow plugins to modify toolbar - return await hooks.fire('filter:quill.toolbar', { toolbar }); + }; + }); + // -- upload privileges + ['upload:post:file', 'upload:post:image'].forEach((privilege) => { + if (app.user.privileges[privilege]) { + const name = privilege === 'upload:post:image' ? 'picture' : 'upload'; + group.unshift(name); + toolbar.handlers[name] = toolbarHandlers[name].bind($('.formatting-bar')); + } + }); + toolbar.container.push(group); + + // Allow plugins to modify toolbar + return await hooks.fire('filter:quill.toolbar', { toolbar }); }; window.quill.isEmpty = function (quill) { - const contents = quill.getContents(); - if (contents.ops.length === 1) { - const value = contents.ops[0].insert.replace(/[\s\n]/g, ''); - const attributes = contents.ops[0].attributes; - if (attributes) { - return false; - } - console.log('quill value:', value); - return value === ''; - } - - return false; + const contents = quill.getContents(); + if (contents.ops.length === 1) { + const value = contents.ops[0].insert.replace(/[\s\n]/g, ''); + const attributes = contents.ops[0].attributes; + if (attributes) { + return false; + } + console.log('quill value:', value); + return value === ''; + } + + return false; }; From 49134ce16944927f759e610e450d579daba38259 Mon Sep 17 00:00:00 2001 From: kyo6 Date: Sun, 5 Apr 2026 13:32:42 +0800 Subject: [PATCH 4/5] fix: remove console --- static/lib/quill-nbb.js | 1 - 1 file changed, 1 deletion(-) diff --git a/static/lib/quill-nbb.js b/static/lib/quill-nbb.js index faaeb13..157eccb 100644 --- a/static/lib/quill-nbb.js +++ b/static/lib/quill-nbb.js @@ -444,7 +444,6 @@ window.quill.isEmpty = function (quill) { if (attributes) { return false; } - console.log('quill value:', value); return value === ''; } From 96ab50df547647ff93372a2434814ae44b44d75e Mon Sep 17 00:00:00 2001 From: kyo6 Date: Thu, 9 Apr 2026 21:18:18 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20=E9=9B=86=E6=88=90quill-table?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9migrator=E6=B7=BB=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2table=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/migrator.js | 102 ++++++++++++++++++++++++++------ package.json | 1 + plugin.json | 3 +- screenshots/table in editor.png | Bin 0 -> 132036 bytes screenshots/table in post.png | Bin 0 -> 95318 bytes static/lib/quill-nbb.js | 32 ++++++++-- static/scss/post.scss | 96 ++++++++++++++++++++++++++++++ 7 files changed, 212 insertions(+), 22 deletions(-) create mode 100644 screenshots/table in editor.png create mode 100644 screenshots/table in post.png diff --git a/lib/migrator.js b/lib/migrator.js index f42722e..28b3b89 100644 --- a/lib/migrator.js +++ b/lib/migrator.js @@ -1,17 +1,16 @@ 'use strict'; -const posts = require.main.require('./src/posts'); - const MarkdownIt = require('markdown-it'); const markdown = new MarkdownIt(); const { QuillDeltaToHtmlConverter } = require('quill-delta-to-html'); +const { TableParser } = require('quill-v1-table/TableDeltaToHtml'); const isHtml = require('is-html'); -const winston = require.main.require('winston'); - const Migrator = module.exports; +Migrator.resolveNbb = id => require.main.require(id); + Migrator.detect = (postObj) => { const isHtml = Migrator.isHtml(postObj); @@ -37,21 +36,90 @@ Migrator.isHtml = postObj => isHtml(postObj.content); Migrator.isMarkdown = postObj => !Migrator.isHTML(postObj); -Migrator.toHtml = (content) => { - try { - content = JSON.parse(content); - const converter = new QuillDeltaToHtmlConverter(content.ops, {}); - - // Quill plugin should fire a hook here, passing converter.renderCustomWith - // Emoji plugin should take that method and register a listener. - // Also toHtml is probably going to end up being asynchronous, then... awaited? - converter.renderCustomWith((customOp) => { - if (customOp.insert.type === 'emoji') { - return `${customOp.attributes.alt}`; +function registerEmojiOnConverter(converter) { + converter.renderCustomWith((customOp) => { + if (customOp.insert.type === 'emoji') { + return `${customOp.attributes.alt}`; + } + }); +} + +function segmentDeltaOps(ops) { + const segments = []; + let i = 0; + while (i < ops.length) { + const op = ops[i]; + const next = ops[i + 1]; + const opTd = !!(op.attributes && op.attributes.td); + const nextTd = !!(next && next.attributes && next.attributes.td); + + if (opTd || nextTd) { + const tableOps = []; + while (i < ops.length) { + const o = ops[i]; + const n = ops[i + 1]; + const oTd = !!(o.attributes && o.attributes.td); + const nTd = !!(n && n.attributes && n.attributes.td); + if (oTd || nTd) { + tableOps.push(o); + i += 1; + } else { + break; + } + } + segments.push({ type: 'table', ops: tableOps }); + } else { + const textOps = []; + while (i < ops.length) { + const o = ops[i]; + const n = ops[i + 1]; + const oTd = !!(o.attributes && o.attributes.td); + const nTd = !!(n && n.attributes && n.attributes.td); + if (oTd || nTd) { + break; + } + textOps.push(o); + i += 1; } - }); + segments.push({ type: 'text', ops: textOps }); + } + } + return segments; +} - return posts.sanitize(converter.convert()); +Migrator.convertMixedDeltaToHtml = (delta) => { + const {ops} = delta; + if (!Array.isArray(ops)) { + return ''; + } + const parts = []; + const segments = segmentDeltaOps(ops); + for (let s = 0; s < segments.length; s += 1) { + const seg = segments[s]; + if (seg.type === 'table') { + const parser = new TableParser(seg.ops); + parser.parse(); + parts.push(parser.toHTML()); + } else if (seg.ops.length > 0) { + const converter = new QuillDeltaToHtmlConverter(seg.ops, {}); + registerEmojiOnConverter(converter); + parts.push(converter.convert()); + } + } + return parts.join(''); +}; + +Migrator.toHtml = (content) => { + const posts = Migrator.resolveNbb('./src/posts'); + const winston = Migrator.resolveNbb('winston'); + try { + const delta = JSON.parse(content); + if (!delta || !Array.isArray(delta.ops)) { + winston.verbose('[plugin/composer-quill (toHtml)] Input not in expected format, skipping.'); + return false; + } + const html = Migrator.convertMixedDeltaToHtml(delta); + return posts.sanitize(html); } catch (e) { // Do nothing winston.verbose('[plugin/composer-quill (toHtml)] Input not in expected format, skipping.'); diff --git a/package.json b/package.json index 602d007..8451b4e 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "node-quill-converter": "^0.3.2", "quill": "^1.3.7", "quill-delta-to-html": "^0.12.0", + "quill-v1-table": "^1.7.4", "quill-magic-url": "^4.0.0", "quill-markdown-shortcuts": "^0.0.10", "screenfull": "^5.0.0" diff --git a/plugin.json b/plugin.json index 2ac8777..db872c1 100644 --- a/plugin.json +++ b/plugin.json @@ -25,6 +25,7 @@ "quill.js": "./node_modules/quill/dist/quill.js", "quill-magic-url.js": "./node_modules/quill-magic-url/dist/index.js", "quill-markdown-shortcuts.js": "./node_modules/quill-markdown-shortcuts/dist/markdownShortcuts.js", + "quill-table.js": "./node_modules/quill-v1-table/dist/quill1-table.js", "quill-emoji.js": "./static/lib/emoji.js", "composer.js": "../nodebb-plugin-composer-default/static/lib/composer.js", "composer/categoryList.js": "../nodebb-plugin-composer-default/static/lib/composer/categoryList.js", @@ -46,4 +47,4 @@ "./node_modules/screenfull/dist/screenfull.js" ], "templates": "static/templates" -} +} \ No newline at end of file diff --git a/screenshots/table in editor.png b/screenshots/table in editor.png new file mode 100644 index 0000000000000000000000000000000000000000..a917bfd1b21f862dec8815d7d1a8a494c852f184 GIT binary patch literal 132036 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 hPf77qbL&!|LPlYm40}$g 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 { window.quill.init = function (targetEl, data, callback) { require([ - 'quill', 'quill-magic-url', 'quill-emoji', 'quill-markdown-shortcuts', + 'quill', 'quill-magic-url', 'quill-emoji', 'quill-markdown-shortcuts', 'quill-table', 'composer/autocomplete', 'composer/drafts', - ], (Quill, MagicUrl, Emoji, MarkdownShortcuts, autocomplete, drafts) => { + ], (Quill, MagicUrl, Emoji, MarkdownShortcuts, TableModule, autocomplete, drafts) => { const textDirection = $('html').attr('data-dir'); const textareaEl = targetEl.siblings('textarea'); - window.quill.configureToolbar(targetEl, data).then(({ toolbar }) => { + window.quill.configureToolbar(targetEl, data, TableModule).then(({ toolbar }) => { // Quill... Quill.register('modules/magicUrl', MagicUrl.default); Quill.register('modules/markdownShortcuts', MarkdownShortcuts); + Quill.register('modules/table', TableModule); const quill = new Quill(targetEl.get(0), { theme: data.theme || 'snow', modules: { toolbar, + table: { + cellSelectionOnClick: false, + }, magicUrl: { normalizeUrlOptions: { sortQueryParameters: false, @@ -383,7 +387,7 @@ window.quill.init = function (targetEl, data, callback) { return window.quill; }; -window.quill.configureToolbar = async (targetEl, data) => { +window.quill.configureToolbar = async (targetEl, data, TableModule) => { const textareaEl = targetEl.siblings('textarea'); const [formatting, hooks] = await new Promise((resolve) => { require(['composer/formatting', 'hooks'], (...libs) => resolve(libs)); @@ -395,6 +399,26 @@ window.quill.configureToolbar = async (targetEl, data) => { ['bold', 'italic', 'underline', 'strike'], // toggled buttons ['link', 'blockquote', 'code-block'], [{ list: 'ordered' }, { list: 'bullet' }], + [{ table: TableModule.tableOptions() }, { + table: [ + 'insert', + 'remove-table', + 'split-cell', + 'merge-selection', + 'append-row-above', + 'append-row-below', + 'append-col-before', + 'append-col-after', + 'remove-col', + 'remove-row', + 'remove-cell', + 'remove-selection', + 'hide-border', + 'show-border', + 'undo', + 'redo', + ], + }], [{ script: 'sub' }, { script: 'super' }], // superscript/subscript [{ color: [] }, { background: [] }], // dropdown with defaults from theme [{ align: [] }], diff --git a/static/scss/post.scss b/static/scss/post.scss index 0583550..dd99f72 100644 --- a/static/scss/post.scss +++ b/static/scss/post.scss @@ -16,4 +16,100 @@ .ql-font-monospace { font-family: Monaco, "Courier New", monospace; } + + /* 表格视觉变量:默认浅色;仅当祖先带 .dark 或 .dark 时切换深色描边(不与系统 prefers-color-scheme 联动) */ + table { + /* 原 0.14 在白底上极易被看成「无边框」;0.18 仍为浅边,可读性更好;可用变量改回 0.14 */ + --ql-table-border: rgba(23, 26, 29, 0.18); + --ql-table-bg: transparent; + --ql-table-cell-bg: transparent; + --ql-table-selected-bg: rgba(59, 130, 246, 0.14); + --ql-table-font-size: 16px; + --ql-table-line-height: 1.7; + --ql-table-padding: 8px; + width: 100%; + border-collapse: collapse; + table-layout: fixed; + /* 勿与 border-radius 同用:在 Chromium/WebKit 下常导致 collapse 表格的格线被裁掉或完全不画 */ + overflow: visible; + white-space: nowrap; + font-size: var(--ql-table-font-size); + line-height: var(--ql-table-line-height); + background-color: var(--ql-table-bg); + border-radius: 8px; + /* 外轮廓:collapse 下仅 td 边线在部分浏览器不可靠,表格外框保证浅色模式下可见 */ + border: 1px solid var(--ql-table-border); + } + + /* @media (prefers-color-scheme: dark) { + table { + --ql-table-border: rgba(255, 255, 255, 0.12); + --ql-table-selected-bg: rgba(96, 165, 250, 0.18); + } + } */ + + .dark table, + .dark table { + --ql-table-border: rgba(255, 255, 255, 0.12); + --ql-table-selected-bg: rgba(96, 165, 250, 0.18); + } + + table td { + border: 1px solid var(--ql-table-border); + padding: var(--ql-table-padding); + min-height: calc(var(--ql-table-padding) * 2 + var(--ql-table-line-height) * 1em); + vertical-align: top; + white-space: pre-wrap; /* https://github.com/quilljs/quill/issues/1760 */ + font-size: inherit; + line-height: inherit; + background-color: var(--ql-table-cell-bg); + } + + .ql-editor__table--hideBorder td { + border: none !important; + } + + .ql-editor__table--hideBorder { + border: none !important; + } + + table td[rowspan="2"] { + min-height: calc(var(--ql-table-padding) * 2 + 2 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="3"] { + min-height: calc(var(--ql-table-padding) * 2 + 3 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="4"] { + min-height: calc(var(--ql-table-padding) * 2 + 4 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="5"] { + min-height: calc(var(--ql-table-padding) * 2 + 5 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="6"] { + min-height: calc(var(--ql-table-padding) * 2 + 6 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="7"] { + min-height: calc(var(--ql-table-padding) * 2 + 7 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="8"] { + min-height: calc(var(--ql-table-padding) * 2 + 8 * var(--ql-table-line-height) * 1em); + } + + table td[rowspan="9"] { + min-height: calc(var(--ql-table-padding) * 2 + 9 * var(--ql-table-line-height) * 1em); + } + + table td.ql-cell-selected { + background-color: var(--ql-table-selected-bg); + } + + table td[merge_id] { + display: none; + } } \ No newline at end of file