Änderungen von Dokument RecentlyUpdated
Zuletzt geändert von xwikiadmin am 2024/06/24 14:35
Von Version 3.1
bearbeitet von xwikiadmin
am 2023/10/26 09:38
am 2023/10/26 09:38
Änderungskommentar:
Install extension [com.xwiki.pro:xwiki-pro-macros/1.12]
Auf Version 1.1
bearbeitet von xwikiadmin
am 2023/04/25 10:54
am 2023/04/25 10:54
Änderungskommentar:
Install extension [com.xwiki.pro:xwiki-pro-macros/1.7.1]
Zusammenfassung
-
Objekte (3 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -4,71 +4,67 @@ 4 4 #[[ 5 5 6 6 require(['jquery'], $ => { 7 - const MACRO_SERVICE_URL = new XWiki.Document( 8 - XWiki.Model.resolve('Confluence.Macros.RecentlyUpdatedService', XWiki.EntityType.DOCUMENT) 9 - ).getURL('get'); 7 + $(() => { 8 + const MACRO_SERVICE_URL = new XWiki.Document( 9 + XWiki.Model.resolve('Confluence.Macros.RecentlyUpdatedService', XWiki.EntityType.DOCUMENT) 10 + ).getURL('get'); 10 10 11 - /* 12 - * Query new results and append them to the page 13 - */ 14 - function showMore(event) { 15 - const macro = event.target.closest('.recently-updated-macro'); 16 - if (!macro) { 17 - console.log("Failed to show more"); 18 - return; 12 + const $macros = $('.recently-updated-macro'); 13 + 14 + /* 15 + * Query new results and append them to the page 16 + */ 17 + const fetchMoreResultsHTML = function ($macro) { 18 + const urlParams = [ 19 + 'xpage=plain', 20 + 'outputSyntax=plain', 21 + 'macroOptions=' + encodeURIComponent($macro.data('options')), 22 + ].join('&'); 23 + const url = MACRO_SERVICE_URL + '?' + urlParams; 24 + fetch(url) 25 + .then(function (response) { 26 + if (!response.ok) { 27 + throw new Error('An error occured fetching new results.'); 28 + } 29 + return response.text(); 30 + }) 31 + .then(function (html) { 32 + // Append html results directly to the page 33 + $macro.find('ul.results').append(html); 34 + handleMetadata($macro); 35 + }); 19 19 } 20 20 21 - const urlParams = [ 22 - 'xpage=plain', 23 - 'outputSyntax=plain', 24 - 'fromAjax=true', 25 - 'macroOptions=' + encodeURIComponent(macro.dataset.options), 26 - ].join('&'); 27 - const url = MACRO_SERVICE_URL + '?' + urlParams; 28 - fetch(url) 29 - .then(function (response) { 30 - if (!response.ok) { 31 - throw new Error('An error occured fetching new results.'); 32 - } 33 - return response.text(); 34 - }) 35 - .then(function (html) { 36 - // Append html results directly to the page 37 - $(macro.querySelector('ul.results')).append(html); 38 - handleMetadata(macro); 39 - }); 40 - } 41 - 42 - /* 43 - * Store fetched metadata for next result fetch 44 - * Update fetch button according to whether there are more results to fetch 45 - */ 46 - function handleMetadata(macro) { 47 - const dataElement = macro.querySelector('.recently-updated-options'); 48 - if (dataElement) { 49 - macro.dataset.options = dataElement.dataset.options; 50 - const btn = macro.querySelector('button.show-more'); 51 - if (btn) { 52 - if (dataElement.dataset.hasNext !== "true") { 53 - $(btn).replaceWith('<div class="no-more-results">' + l10n['noMoreResults'] + '</div>'); 54 - } else { 55 - btn.addEventListener('click', showMore); 38 + /* 39 + * Store fetched metadata for next result fetch 40 + * Update fetch button according to whether there are more results to fetch 41 + */ 42 + const handleMetadata = function ($macro) { 43 + const $dataElement = $macro.find('.recently-updated-options'); 44 + if ($dataElement.length === 0) { 45 + console.warn('No options were found when fetching new results') 46 + } else { 47 + $macro.data('options', $dataElement.attr('data-options')) 48 + const hasNext = JSON.parse($dataElement.attr('data-has-next')); 49 + if (!hasNext) { 50 + $macro.find('button.show-more') 51 + .replaceWith('<div class="no-more-results">' + l10n['noMoreResults'] + '</div>') 56 56 } 53 + $dataElement.remove(); 57 57 } 58 - dataElement.remove(); 59 - } 60 - } 55 + }; 61 61 62 - function init() { 63 - for (const macro of document.querySelectorAll('.recently-updated-macro')) { 64 - handleMetadata(macro); 65 - } 66 - } 57 + // Init 58 + $macros.each(function (i, macro) { 59 + handleMetadata($(macro)); 60 + }); 67 67 68 - $(() => { 69 - $(document).on('xwiki:dom:updated', init); 70 - init(); 71 - }); 62 + // Fetch new results 63 + $macros.find('button.show-more').click(function (event) { 64 + const $macro = $(event.target).closest('.recently-updated-macro'); 65 + fetchMoreResultsHTML($macro); 66 + }) 67 + }) 72 72 }); 73 73 74 74 ]]#
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -30,7 +30,7 @@ 30 30 grid-area: metadata; 31 31 .text-muted-smaller(); 32 32 33 - .result-last-author-avatar img { 33 + .result-last-author-avatar img.avatar { 34 34 display: inline-block; 35 35 width: 1em; 36 36 height: 1em; ... ... @@ -58,7 +58,7 @@ 58 58 column-gap: 0.6rem; 59 59 60 60 &.collapsed { 61 - .result-last-author-avatar img { 61 + .result-last-author-avatar img.avatar { 62 62 display: none; 63 63 } 64 64
- XWiki.WikiMacroClass[0]
-
- Makro-Code
-
... ... @@ -18,10 +18,7 @@ 18 18 ## (adds extra quotes / spaces at the beginning and end of the string) 19 19 #set ($searchRegex = '(?:^|$|,)\s*([-+]?)') 20 20 #set ($replacement = '" $1"') 21 - #if (!$serializedList) 22 - #set($serializedList = "") 23 - #end 24 - #set ($formatted = $serializedList.replace($searchRegex, $replacement)) 21 + #set ($formatted = $!stringtool.replaceAll($serializedList, $searchRegex, $replacement)) 25 25 ## Remove extra quotes / spaces at the beginning and end of the string 26 26 #set ($formatted = $!stringtool.substring($formatted, 2, -2)) 27 27 ## Return