Changes for page KanbanMacro
Last modified by 刘锋 on 2025-03-13 18:33:18
Summary
-
Objects (3 modified, 0 added, 0 removed)
Details
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -51,7 +51,13 @@ 51 51 gutter: '15px', 52 52 widthBoard: '250px', 53 53 responsive: '700', 54 - colors: ["yellow", "green", "blue", "red", "orange"], 54 + colors: { 55 + 'green': '#8C4', 56 + 'blue':'#0AC', 57 + 'orange':'#F91', 58 + 'yellow':'#FC3', 59 + 'red':'#E43' 60 + }, 55 55 boards: [], 56 56 dragBoards: true, 57 57 addItemButton: false, ... ... @@ -291,9 +291,9 @@ 291 291 allClasses.map(function (value) { 292 292 headerBoard.classList.add(value); 293 293 }); 294 - if(board.color!==''&& board.color!==undefined){295 - headerBoard.classList.add("kanban-header-"+board.color);296 - }300 + // We want to keep backward compatibility with the old "color" property so we don't break existing boards. 301 + color = defaults.colors[board.color] ? defaults.colors[board.color] : board.color; 302 + headerBoard.style.background = color; 297 297 titleBoard = document.createElement('div'); 298 298 titleBoard.classList.add('kanban-title-board'); 299 299 titleBoard.innerHTML = board.title;
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -111,26 +111,6 @@ 111 111 font-weight: bold; 112 112 } 113 113 114 -.kanban-header-yellow { 115 - background: #FC3; 116 -} 117 - 118 -.kanban-header-orange { 119 - background: #F91; 120 -} 121 - 122 -.kanban-header-blue { 123 - background: #0AC; 124 -} 125 - 126 -.kanban-header-red { 127 - background: #E43; 128 -} 129 - 130 -.kanban-header-green { 131 - background: #8C4; 132 -} 133 - 134 134 .kanban-addboard { 135 135 float: left; 136 136 margin: 30px;
- XWiki.WikiMacroClass[0]
-
- Macro code
-
... ... @@ -34,16 +34,16 @@ 34 34 var posting = jQuery.post( updateService, { page : page, nb : counter, content : newBoards } ); 35 35 posting.success(function(data) { 36 36 if (data.indexOf("SUCCESS")>=0 && data.indexOf("SUCCESS")<10) { 37 - #set($success = $escapetool.js on($services.localization.render("kanban.update.success")))37 + #set($success = $escapetool.javascript($services.localization.render("kanban.update.success"))) 38 38 new XWiki.widgets.Notification('$success', 'info', '20'); 39 39 currentBoards = newBoards; 40 40 } else { 41 - #set($error = $escapetool.js on($services.localization.render("kanban.update.error")))41 + #set($error = $escapetool.javascript($services.localization.render("kanban.update.error"))) 42 42 new XWiki.widgets.Notification('$error', 'error', '20'); 43 43 } 44 44 }); 45 45 posting.error(function(xhr,status,error) { 46 - #set($error = $escapetool.js on($services.localization.render("kanban.update.error")))46 + #set($error = $escapetool.javascript($services.localization.render("kanban.update.error"))) 47 47 new XWiki.widgets.Notification('$error', 'error', '20'); 48 48 }); 49 49 ... ... @@ -110,25 +110,6 @@ 110 110 }); 111 111 112 112 }, 113 - colorClick: function (el, boardId) { 114 - console.log("in color click"); 115 - var board = jQuery(el.parentNode).attr("data-id"); 116 - var boardJSON = kanban.getBoardJSON(board); 117 - var currentColor = boardJSON.color; 118 - console.log("Current color " + currentColor); 119 - var index = kanban.options.colors.findIndex(function (element) { 120 - return (element == currentColor) 121 - }) + 1; 122 - console.log("Next index " + index); 123 - if (index >= kanban.options.colors.length) 124 - index = 0; 125 - var nextColor = kanban.options.colors[index]; 126 - console.log("Next color " + nextColor); 127 - boardJSON.color = nextColor; 128 - jQuery(el).removeClass("kanban-header-" + currentColor); 129 - jQuery(el).addClass("kanban-header-" + nextColor); 130 - kanban.onChange(); 131 - }, 132 132 removeClick: function (el, boardId) { 133 133 if (confirm("Do you want to delete this board?")) { 134 134 console.log("Delete board"); ... ... @@ -173,12 +173,37 @@ 173 173 + boardId + '</value></property>' 174 174 jQuery.ajax({ url: restURL, type: 'PUT', data: data, contentType: "application/xml", 175 175 success: function(result) { 176 - #set($success = $escapetool.js on($services.localization.render("kanban.update.success")))157 + #set($success = $escapetool.javascript($services.localization.render("kanban.update.success"))) 177 177 new XWiki.widgets.Notification('$success', 'info', '20'); 178 178 }, 179 179 error: function(result) { 180 - #set($error = $escapetool.json($services.localization.render("kanban.update.error"))) 181 - new XWiki.widgets.Notification('$error', 'error', '20'); 161 + // This is a workaround for XWIKI-20704. Remove this section of code when the parent 162 + // of this project will greater or equal than the fix version of the issue. 163 + // --- START --- 164 + let regex = /\/objects\/([^\/]+)\/0\/properties\/([^\/]+)/; 165 + let match = restURL.match(regex); 166 + let params = { 167 + outputSyntax: 'plain', 168 + docRef: currentdoc.documentReference.toString(), 169 + className: match[1], 170 + propertyName: match[2] 171 + }; 172 + jQuery.ajax({ 173 + url: new XWiki.Document(XWiki.Model.resolve('Macros.KanbanWorkaroundService', XWiki.EntityType.DOCUMENT, XWiki.currentDocument.getDocumentReference())).getURL('get', jQuery.param(params)), 174 + type: 'GET', 175 + success: function(result) { 176 + if (result.status === boardId) { 177 + new XWiki.widgets.Notification('$success', 'info', '20'); 178 + } else { 179 + #set($error = $escapetool.javascript($services.localization.render("kanban.update.error"))) 180 + new XWiki.widgets.Notification('$error', 'error', '20'); 181 + } 182 + }, 183 + error: function() { 184 + new XWiki.widgets.Notification('$error', 'error', '20'); 185 + } 186 + }); 187 + // --- END --- 182 182 } 183 183 }); 184 184 }, ... ... @@ -210,7 +210,7 @@ 210 210 initKanban(data, updateService); 211 211 }); 212 212 getdata.error(function(xhr,status,error) { 213 - #set($error = $escapetool.js on($services.localization.render("kanban.load.error")))219 + #set($error = $escapetool.javascript($services.localization.render("kanban.load.error"))) 214 214 new XWiki.widgets.Notification('$error', 'error', '20'); 215 215 }); 216 216 #elseif($xcontext.macro.content)