Changes for page Helpers

Last modified by Benjamin Fischer on 2025/06/17 11:57

From version 2.7
edited by Benjamin Fischer
on 2025/05/27 12:37
Change comment: There is no comment for this version
To version 2.22
edited by Benjamin Fischer
on 2025/06/16 10:34
Change comment: There is no comment for this version

Summary

Details

XWiki.JavaScriptExtension[0]
Code
... ... @@ -21,6 +21,8 @@
21 21   sortable: false,
22 22   };
23 23   });
24 + //if (tableId === "jobs")
25 + // conf.url += `&valid=${Date.now() - 30*24*3600e3}-`;
24 24   tab.dataset.settings = JSON.stringify(conf);
25 25  
26 26   // column headers
... ... @@ -33,6 +33,7 @@
33 33   );
34 34  
35 35   // filter fileds for tags
38 + const tagFilterHelp = document.querySelector(".xwiki-livetable-tagcloud-container > h2")?.textContent ?? "Click on tag(s) to filter.";
36 36   const filterCells = tab.querySelectorAll(".xwiki-livetable-display-header-filter");
37 37   for (let pos; (pos = tagIdxs.length - 1) >= 0;) {
38 38   while (tagIdxs[pos] === tagIdxs[pos - 1] + 1)
... ... @@ -39,7 +39,7 @@
39 39   filterCells[tagIdxs[pos--]].remove();
40 40   const e = filterCells[tagIdxs[pos]];
41 41   e.colSpan = span = tagIdxs.length - pos;
42 - e.textContent = "Click on tag(s) to filter."
45 + e.textContent = tagFilterHelp;
43 43   e.style.verticalAlign = "middle";
44 44   e.style.textAlign = "center";
45 45   tagIdxs.splice(pos);
... ... @@ -105,8 +105,17 @@
105 105   a.innerHTML = `<b class="wikiexternallink">${row.doc_title}</b>`;
106 106   row.doc_title = a.outerHTML;
107 107  
111 + const tgWords = row.topicGroup.split(" ");
112 + let o = 0;
113 + const tgItems = []
114 + for (const abbr in row.topicGroup_value.slice(1, -1).split(", ")) {
115 + tgItems.push(`<span title="${tgWords.slice(o, abbr.length).join(" ")}">${abbr}</span>`);
116 + o += abbr.length;
117 + }
118 + row.topicGroup = tgItems.join(" ");
119 +
108 108   row.doc_date = new Date(row.doc_date)?.toLocaleDateString() ?? row.doc_date.split(" ")[0];
109 - row.valid = new Date(row.valid_value)?.toLocaleDateString() ?? row.valid;
121 + row.valid = row.valid_value ? new Date(row.valid_value)?.toLocaleDateString() ?? row.valid : "N/A";
110 110   };
111 111  
112 112   livetableRowHook.materials = row => {
... ... @@ -150,6 +150,7 @@
150 150   a.setAttribute("href", u.href);
151 151  
152 152   row.doc_location = ol.outerHTML;
165 + row.date = new Date(row.date_value)?.toLocaleDateString(undefined, {year: "numeric", month: "numeric"}) ?? row.date;
153 153   };
154 154  
155 155   const coopDetailsLabel = "Cooperation Details";
... ... @@ -195,5 +195,25 @@
195 195   for (const tab of document.querySelectorAll(".xwiki-livetable"))
196 196   ttApply({ memo: { tableId: tab.id }});
197 197   });
211 +
212 + document.observe('xwiki:dom:loaded', () => {
213 + for (
214 + let e = document.querySelector(`#leftPanels a[href="${location.pathname.replace(/^(\/bin\/)[^\/]+(\/.+)/, "$1view$2")}"]`);
215 + e;
216 + e = e.parentElement
217 + ) switch(e.tagName) {
218 + case "UL":
219 + e = e.previousElementSibling;
220 + if (!e) return;
221 + case "SPAN":
222 + e.style.textDecoration = "underline";
223 + break;
224 + case "LI":
225 + e.classList.add("open");
226 + break;
227 + case "DIV":
228 + return;
229 + }
230 + });
198 198  })());
199 199  
XWiki.StyleSheetExtension[0]
Caching policy
... ... @@ -1,0 +1,1 @@
1 +default
Code
... ... @@ -1,0 +1,5 @@
1 +.xwiki-livetable-display-body > tr > td {
2 + &.date, &.doc_date, &.valid {
3 + word-break: normal;
4 + }
5 +}
Content Type
... ... @@ -1,0 +1,1 @@
1 +LESS
Name
... ... @@ -1,0 +1,1 @@
1 +Globale Styles
Parse content
... ... @@ -1,0 +1,1 @@
1 +No
Use this extension
... ... @@ -1,0 +1,1 @@
1 +always