From a13561eb8d27293d1d677580dfa7302951817510 Mon Sep 17 00:00:00 2001 From: yflory <yann.flory@xwiki.com> Date: Fri, 20 Mar 2020 13:45:45 +0100 Subject: [PATCH] Fix checkboxes in the markdown renderer #511 --- www/common/diffMarked.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/www/common/diffMarked.js b/www/common/diffMarked.js index 783aa78a9..73c801ab4 100644 --- a/www/common/diffMarked.js +++ b/www/common/diffMarked.js @@ -117,29 +117,30 @@ define([ // Tasks list var checkedTaskItemPtn = /^\s*(<p>)?\[[xX]\](<\/p>)?\s*/; var uncheckedTaskItemPtn = /^\s*(<p>)?\[ ?\](<\/p>)?\s*/; - var bogusCheckPtn = /<input( checked=""){0,1} disabled="" type="checkbox">/; + var bogusCheckPtn = /<input checked="" disabled="" type="checkbox">/; + var bogusUncheckPtn = /<input disabled="" type="checkbox">/; renderer.listitem = function (text) { var isCheckedTaskItem = checkedTaskItemPtn.test(text); var isUncheckedTaskItem = uncheckedTaskItemPtn.test(text); - var hasBogusInput = bogusCheckPtn.test(text); + var hasBogusCheckedInput = bogusCheckPtn.test(text); + var hasBogusUncheckedInput = bogusUncheckPtn.test(text); + var isCheckbox = true; if (isCheckedTaskItem) { text = text.replace(checkedTaskItemPtn, '<i class="fa fa-check-square" aria-hidden="true"></i>') + '\n'; - } - if (isUncheckedTaskItem) { + } else if (isUncheckedTaskItem) { text = text.replace(uncheckedTaskItemPtn, '<i class="fa fa-square-o" aria-hidden="true"></i>') + '\n'; - } - if (!isCheckedTaskItem && !isUncheckedTaskItem && hasBogusInput) { - if (/checked/.test(text)) { - text = text.replace(bogusCheckPtn, + } else if (hasBogusCheckedInput) { + text = text.replace(bogusCheckPtn, '<i class="fa fa-check-square" aria-hidden="true"></i>') + '\n'; - } else if (/disabled/.test(text)) { - text = text.replace(bogusCheckPtn, + } else if (hasBogusUncheckedInput) { + text = text.replace(bogusUncheckPtn, '<i class="fa fa-square-o" aria-hidden="true"></i>') + '\n'; - } + } else { + isCheckbox = false; } - var cls = (isCheckedTaskItem || isUncheckedTaskItem || hasBogusInput) ? ' class="todo-list-item"' : ''; + var cls = (isCheckbox) ? ' class="todo-list-item"' : ''; return '<li'+ cls + '>' + text + '</li>\n'; }; restrictedRenderer.listitem = function (text) {