Changes for page Per Sort

From version 52.1
edited by Andrea Omicini
on 09/07/2023 15:28
Change comment: There is no comment for this version
To version 53.1
edited by Andrea Omicini
on 11/01/2024 23:44
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,127 +1,1 @@
1 -{{velocity}}
2 -{{html clean="false" wiki="true"}}
3 -#template('apice_macros.vm')
4 -#setobjectspace("Talks")
5 -#template('apice_talk_macros.vm')
6 -#template('apice_user_param.vm')
7 -## SORT / START
8 -#set( $sortPar = $request.sort.trim().toLowerCase() )
9 -#if( $sortPar != "" && $talkSorts.contains($sortPar) )
10 - #set( $sortList = [$sortPar] )
11 - #set( $oneSort = true )
12 -#else
13 - #set( $sortList = $talkSorts )
14 - #set( $oneSort = false )
15 -#end
16 -## SORT / END
17 -##
18 -## DATA STRUCTURES / START
19 -#set( $itemMap = {} )
20 -#set( $itemNo = 0 )
21 -## cycle over years
22 -#foreach( $sort in $sortList )
23 - #set( $query = ", BaseObject as objTalk, DateProperty as propDate #if( $oneUser ), LargeStringProperty as propSpeakers, LargeStringProperty as propAuthors #end, StringProperty as propSort
24 - where objTalk.name = doc.fullName and objTalk.className = '${mainSpace}.Class' and objTalk.name <> '${objectPool}.Template' and propDate.id.id = objTalk.id and propSort.id.id = objTalk.id and propDate.name = 'date' #if( $oneUser ) and propSpeakers.id.id = objTalk.id and propAuthors.id.id = objTalk.id and propSpeakers.name = 'speakers' and propAuthors.name = 'authors' and ( propSpeakers.value like '$userString' or propAuthors.value like '$userString' ) #end and propSort.name = 'sort' and lower(propSort.value) = '$sort' order by propDate.value desc" )
25 -## execute query new
26 - #set( $itemFound = $xwiki.searchDocuments($query) )
27 -## set counters
28 - #set( $itemSortNo = $itemFound.size() )
29 - #if( $itemSortNo > 0 )
30 - #set( $itemMap[$sort] = $itemFound )
31 - #set( $itemNo = $itemNo + $itemSortNo )
32 - #end
33 -#end
34 -##
35 -#if( $oneUser )
36 -## remove duplicates / start
37 - #set( $itemNo = 0 )
38 - #set( $itemMapNoDup = {} )
39 - #foreach( $sort in $itemMap.keySet() )
40 - #set( $itemMapNoDup[$sort] = [] )
41 - #foreach( $talk in $itemMap[$sort] )
42 - #if( !$itemMapNoDup[$sort].contains($talk) )
43 - #set( $discard = $itemMapNoDup[$sort].add($talk) )
44 - #end
45 - #end
46 - #set( $itemSortNo = $itemMapNoDup[$sort].size() )
47 - #set( $itemNo = $itemNo + $itemSortNo )
48 - #end
49 - #set( $itemMap = $itemMapNoDup )
50 -## remove duplicates / end
51 -#end
52 -## DATA STRUCTURES / END
53 -##
54 -## DISPLAY / START
55 -## page subtitle
56 -<div class="mainheader">
57 -$itemNo
58 -#if( $itemNo == 1 )
59 - #if( $oneSort )
60 - $services.localization.render("Talks.Class_sort_${sortPar}").toLowerCase()
61 - #else
62 - $services.localization.render('talk').toLowerCase()
63 - #end
64 -#else
65 - #if( $oneSort )
66 - $services.localization.render("Talks.Class_sort_${sortPar}_plural").toLowerCase()
67 - #else
68 - $services.localization.render('talks').toLowerCase()
69 - #end
70 -#end
71 -#if( $oneUser )
72 - <span class="textsecondary">&ensp;/&ensp;</span>
73 - $userFirstName $userLastName
74 -#end
75 -</div>
76 -## stop if no talks are found
77 -#if( $itemNo == 0 || $itemMap.keySet().size() == 0 )
78 -## redundant double check
79 - #stop
80 -#end
81 -## some talks found
82 -## page index
83 -#if( $itemMap.keySet().size() > 1 )
84 -## found more than one sort
85 -<div class="mainselectbar" id="index">
86 - #foreach( $sort in $itemMap.keySet() )
87 - #if( !$foreach.first )
88 - &ensp;&bull;&ensp;
89 - #end
90 - [[$services.localization.render("Talks.Class_sort_${sort}_plural").toLowerCase()>>||anchor="$sort"]]
91 - #end
92 -</div>
93 -#end
94 -## talks displayed per sort
95 -#foreach( $sort in $itemMap.keySet() )
96 -## sort top / start
97 -<div id="$sort" class="mainselectseparator">
98 - <a class="mainselectseparatorlink" href=$xwiki.getURL($doc,"view","sort=$sort#if( $apiceUser )&user=$userName#elseif( $oneUser )&name=$userFirstName&surname=$userLastName#end")>
99 - $services.localization.render("Talks.Class_sort_${sort}_plural").toLowerCase()
100 - </a>
101 -</div>
102 -## sort top / end
103 -##
104 -## sort display / start
105 -<div style="font-style: normal"><ul>
106 - #foreach( $item in $itemMap[$sort] )
107 -<li>#talklinked($item)</li>
108 - #end
109 -</ul></div>
110 -## sort display / end
111 -##
112 -## sort bottom / start
113 -<div #if( $foreach.last )id="bottom"#end class="mainselectbottom">
114 - #set( $itemSortNo = $itemMap[$sort].size() )
115 - $itemSortNo
116 - #if( $itemSortNo == 1 )
117 - $services.localization.render("Talks.Class_sort_${sort}").toLowerCase()
118 - #else
119 - $services.localization.render("Talks.Class_sort_${sort}_plural").toLowerCase()
120 - #end
121 - &ensp;&bull;&ensp;
122 - #anchorlinks()
123 -</div>
124 -## sort bottom / end
125 -#end
126 -{{/html}}
127 -{{/velocity}}{{pageDisplay sort="objectservice"/}}
1 +{{include reference="Showcase" excludeFirstHeading="true"/}}{{include reference="Classes.Users.PerSort" excludeFirstHeading="true"/}}