From 131b985902d767f1faf29dfb26de9730d42136bf Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 24 Jun 2020 10:20:20 -0400 Subject: [PATCH 1/4] update expire-channels.js use of file storage to accomodate an API change --- scripts/expire-channels.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/expire-channels.js b/scripts/expire-channels.js index 9151398d2..8f9d9f87e 100644 --- a/scripts/expire-channels.js +++ b/scripts/expire-channels.js @@ -10,7 +10,7 @@ nThen(function (w) { config.log = _log; })); }).nThen(function (w) { - FileStorage.create(config, w(function (_store) { + FileStorage.create(config, w(function (err, _store) { config.store = _store; // config.taskPath From 4053c4c1a667d777af0980942a38b65e5583b451 Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 25 Jun 2020 13:50:05 -0400 Subject: [PATCH 2/4] avoid displaying new comment while the document is not editable closes #570 --- www/pad/comments.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/www/pad/comments.js b/www/pad/comments.js index da98ceeb2..1e6f37259 100644 --- a/www/pad/comments.js +++ b/www/pad/comments.js @@ -747,6 +747,14 @@ define([ Env.$contentContainer.append(h('div.cp-comment-bubble', button)); }; + var isEditable = function (document) { + try { + return document.body.getAttribute('contenteditable') === 'true'; + } catch (err) { + return false; + } + }; + var addAddCommentHandler = function(Env) { Env.editor.plugins.comments.addComment = function(uid, addMark) { if (!Env.ready) { return; } @@ -809,7 +817,7 @@ define([ $(Env.ifrWindow.document).on('selectionchange', function() { removeCommentBubble(Env); var applicable = Env.editor.plugins.comments.isApplicable(); - if (!applicable) { return; } + if (!applicable || !isEditable(Env.ifrWindow.document)) { return; } addCommentBubble(Env); }); }; From 6a8ab6bc55f84479e3ccddbffcfcf2c556d1eb1f Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 25 Jun 2020 14:34:29 -0400 Subject: [PATCH 3/4] remove the 'comment' option from CKEditor's contextmenu in when UI is locked --- www/pad/comment.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/www/pad/comment.js b/www/pad/comment.js index 996b153dd..657722321 100644 --- a/www/pad/comment.js +++ b/www/pad/comment.js @@ -13,6 +13,18 @@ return b; } + // COPYPASTED from mediatag-plugin-dialog.js + var isReadOnly = function (el) { + if (!el) { return; } + var parent = el; + while (parent) { + if (parent.nodeName.toUpperCase() === 'BODY') { + return parent.getAttribute("contenteditable") === 'false'; + } + parent = parent.parentElement; + } + }; + var color1 = 'rgba(249, 230, 65, 1.0)'; var color2 = 'rgba(252, 181, 0, 1.0)'; @@ -164,7 +176,8 @@ */ editor.contextMenu.addListener(function(element, sel, path) { var applicable = isApplicable(path, sel); - if (!applicable) { return; } + if (!applicable || isReadOnly(element.$)) { return; } + return { comment: CKEDITOR.TRISTATE_OFF, }; From d5d30c2e093699590b2d47cbc7d18f398a13ef6c Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 25 Jun 2020 14:38:21 -0400 Subject: [PATCH 4/4] guard against a few possible typeErrors --- www/pad/comment.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/www/pad/comment.js b/www/pad/comment.js index 657722321..9936d5e46 100644 --- a/www/pad/comment.js +++ b/www/pad/comment.js @@ -56,7 +56,10 @@ path = path || editor.elementPath(); sel = sel || editor.getSelection(); var applicable = removeStyle.checkApplicable(path, editor); - var hasComments = editor.getSelectedHtml().$.querySelectorAll('comment').length; + var selectedHtml = editor.getSelectedHtml(); + if (selectedHtml === null) { return; } + var comments = selectedHtml.$.querySelectorAll('comment'); + var hasComments = comments && comments.length; var isComment = removeStyle.checkActive(path, editor); var empty = !sel.getSelectedText(); return applicable && !empty && !hasComments && !isComment;