Wiki source code of Per Year
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
131.2 | 1 | = {{italiano}}Per anno{{/italiano}}{{english}}Per Year{{/english}} = |
![]() |
123.3 | 2 | |
![]() |
135.1 | 3 | {{include reference="Classes.Environment" excludeFirstHeading="true"/}}{{include reference="Theses.Environment" excludeFirstHeading="true"/}}{{velocity}} |
![]() |
17.2 | 4 | #set( $thesisMenu = true ) |
![]() |
131.2 | 5 | #### HANDLE PARAMETERS / START |
6 | ## | ||
![]() |
132.3 | 7 | ## inline display |
8 | #set( $inlinePar = $request.inline.trim() ) | ||
![]() |
131.2 | 9 | ## who |
10 | #set( $userNamePar = $request.user.trim() ) | ||
11 | #set( $firstNamePar = $request.name.trim() ) | ||
12 | #set( $lastNamePar = $request.surname.trim() ) | ||
13 | #### handle who | ||
14 | #if( $userName ) | ||
15 | ## from a personal page, "XWiki.$userName" $userName form | ||
16 | #if( !$xwiki.exists( $userName ) ) | ||
17 | {{warning}}User $userName does not exist{{/warning}} | ||
18 | #stop | ||
![]() |
69.1 | 19 | #end |
![]() |
131.2 | 20 | #set( $apiceUser = true ) |
21 | #set( $oneUser = true ) | ||
22 | #set( $userdoc = $xwiki.getDocument($userName) ) | ||
23 | #set( $userFirstName = $userdoc.display("first_name") ) | ||
24 | #set( $userLastName = $userdoc.display("last_name") ) | ||
25 | #elseif( $userNamePar ) | ||
26 | ## from the URL, "user=$userNamePar" parameter | ||
27 | #if( $userNamePar.contains('XWiki.') ) | ||
28 | #set( $userName = "$userNamePar" ) | ||
![]() |
69.1 | 29 | #else |
![]() |
131.2 | 30 | #set( $userName = "XWiki.$userNamePar" ) |
![]() |
69.1 | 31 | #end |
![]() |
131.2 | 32 | #if( !$xwiki.exists( $userName ) ) |
33 | #if( $services.localization.currentLocale == 'it' ) | ||
34 | {{warning}}L'utente “$userNamePar” non esiste{{/warning}} | ||
35 | #else | ||
36 | {{warning}}User “$userNamePar” does not exist{{/warning}} | ||
37 | #end | ||
38 | #stop | ||
39 | #end | ||
40 | #set( $apiceUser = true ) | ||
41 | #set( $oneUser = true) | ||
42 | #set( $userdoc = $xwiki.getDocument($userName) ) | ||
43 | #set( $userFirstName = $userdoc.display("first_name") ) | ||
44 | #set( $userLastName = $userdoc.display("last_name") ) | ||
45 | #elseif( $firstNamePar && $lastNamePar ) | ||
46 | ## from the URL, "name=Firstname&surname=Lastname" parameter | ||
47 | #set( $apiceUser = false ) | ||
48 | #set( $oneUser = true ) | ||
49 | #set( $userFirstName = $firstNamePar ) | ||
50 | #set( $userLastName = $lastNamePar ) | ||
51 | #else | ||
52 | #set( $apiceUser = false ) | ||
53 | #set( $oneUser = false ) | ||
54 | #set( $userFirstName = "" ) | ||
55 | #set( $userLastName = "" ) | ||
![]() |
17.3 | 56 | #end |
![]() |
131.2 | 57 | #if( $oneUser ) |
58 | #if( $apiceUser ) | ||
59 | #set( $userString = "%$userName%" ) | ||
![]() |
27.2 | 60 | #else |
![]() |
131.2 | 61 | #set( $userString = "%$userFirstName $userLastName%" ) |
![]() |
1.1 | 62 | #end |
![]() |
131.2 | 63 | #else |
64 | #set( $userString = "%%" ) | ||
65 | #end | ||
66 | #### handle cycle | ||
67 | ## $cycleList gets the list of cycles to be shown | ||
68 | ## $oneCycle true if just one cycle to be shown | ||
69 | #if( $request.cycle && $request.cycle.trim() != "" ) | ||
70 | #set( $cyclePar = $request.cycle.trim().toUpperCase() ) | ||
71 | #if( $allThesisCycles.contains($cyclePar) ) | ||
72 | ## 'cycle' parameter is an admissible thesis cycle value | ||
73 | #set( $cycleList = [$cyclePar]) | ||
74 | #set( $oneCycle = true ) | ||
75 | #set( $cycle = $cyclePar ) | ||
![]() |
27.2 | 76 | #else |
![]() |
131.2 | 77 | ## 'cycle' parameter is not an admissible thesis cycle value |
![]() |
131.3 | 78 | {{warning}}$cyclePar is not an admissible cycle for APICe theses{{/warning}} |
![]() |
27.2 | 79 | #stop |
![]() |
1.1 | 80 | #end |
![]() |
131.2 | 81 | #else |
82 | ## default: all cycles | ||
83 | #if( $showPhDTheses ) | ||
84 | #set( $cycleList = $allThesisCycles ) | ||
85 | #else | ||
86 | #set( $cycleList = $lowThesisCycles ) | ||
87 | #end | ||
88 | #set( $oneCycle = false ) | ||
89 | #set( $cycle = "" ) | ||
![]() |
1.1 | 90 | #end |
![]() |
131.2 | 91 | ## INVARIANT: $oneCycle and $cycleList are correctly and coherently initialised |
![]() |
110.1 | 92 | ## |
![]() |
131.2 | 93 | ## when |
94 | #set( $yearPar = $request.year.trim() ) | ||
95 | #set( $firstYearPar = $request.from.trim() ) | ||
96 | #set( $lastYearPar = $request.to.trim() ) | ||
97 | #### handle when | ||
98 | #set( $firstYear = $mathtool.toInteger($firstYearThesis) ) | ||
99 | #set( $lastYear = $mathtool.toInteger($lastYearThesis) ) | ||
100 | #if( $lastYear < $firstYear ) | ||
101 | #set( $lastYear = $firstYear ) | ||
![]() |
108.2 | 102 | #end |
![]() |
131.2 | 103 | ## parameters takes precedence |
104 | #if( $yearPar ) | ||
105 | #set( $yearInt = $mathtool.toInteger($yearPar) ) | ||
106 | #if( $yearInt > 0 ) | ||
107 | #set( $firstYear = $yearInt ) | ||
108 | #set( $lastYear = $yearInt ) | ||
109 | #end | ||
![]() |
105.1 | 110 | #end |
![]() |
131.2 | 111 | #if( $firstYearPar ) |
112 | #set( $yearInt = $mathtool.toInteger($firstYearPar) ) | ||
113 | #if( $yearInt > 0 ) | ||
114 | #set( $firstYear = $yearInt ) | ||
115 | #end | ||
116 | #end | ||
117 | #if( $lastYearPar ) | ||
118 | #set( $yearInt = $mathtool.toInteger($lastYearPar) ) | ||
119 | #if( $yearInt > 0 ) | ||
120 | #set( $lastYear = $yearInt ) | ||
121 | #end | ||
122 | #end | ||
123 | #if( $lastYear < $firstYear ) | ||
124 | ## swap | ||
125 | #set( $yearTemp = $lastYear ) | ||
126 | #set( $lastYear = $firstYear ) | ||
127 | #set( $firstYear = $yearTemp ) | ||
128 | #end | ||
129 | ## invariant: $lastYear >= $firstYear | ||
130 | #if( $lastYear > $firstYear ) | ||
131 | #set( $year = -1 ) | ||
132 | #set( $yearList = [$lastYear..$firstYear] ) | ||
133 | #set( $oneYear = false ) | ||
![]() |
127.1 | 134 | #else |
![]() |
131.2 | 135 | ## $lastYear = $firstYear |
136 | #set( $year = $lastYear ) | ||
137 | #set( $yearList = [$year] ) | ||
138 | #set( $oneYear = true ) | ||
![]() |
127.1 | 139 | #end |
![]() |
131.2 | 140 | ## handle when / end |
![]() |
91.1 | 141 | ## |
![]() |
131.2 | 142 | ## $oneUser, $apiceUser, $userString, $userFirstName, $userLastName, $oneCycle, $cycleList, $oneYear, $yearList are properly set |
143 | ## | ||
![]() |
132.3 | 144 | ## handle inline / start |
145 | ## | ||
146 | ## default: false | ||
147 | #set( $showInline = false ) | ||
148 | ## check $inlinePar | ||
149 | #if( $inlinePar != "" && $trueStringList.contains($inlinePar.toLowerCase()) ) | ||
150 | #set( $showInline = true ) | ||
151 | #end | ||
152 | ## | ||
153 | ## handle inline / end | ||
154 | ## | ||
![]() |
131.2 | 155 | #### HANDLE PARAMETERS / END |
156 | ## | ||
157 | ## query to structures | ||
158 | #set( $itemMap = {} ) | ||
159 | #set( $itemNo = 0 ) | ||
![]() |
96.2 | 160 | #foreach( $year in $yearList ) |
![]() |
131.2 | 161 | #set( $query = ", BaseObject as obj, StringProperty as prop0, DateProperty as prop1, StringProperty as prop2, LargeStringProperty as prop3, LargeStringProperty as prop4, LargeStringProperty as prop5 |
162 | where obj.name = doc.fullName and obj.className = '${objectSpace}.${objectClass}' and obj.name <> '${objectSpace}.${objectTemplate}' and prop0.id.id = obj.id and prop1.id.id = obj.id and prop2.id.id = obj.id and prop3.id.id = obj.id and prop4.id.id = obj.id and prop5.id.id = obj.id and prop0.name = 'cycle' and prop1.name = 'end' and prop2.name = 'status' and prop3.name = 'supervisors' and prop4.name = 'cosupervisors' and prop5.name = 'contacts' #if( $oneCycle ) and prop0.value = '$cycle'#end and year(prop1.value) = $year and lower(prop2.value) = 'completed' #if( $oneUser )and ( prop3.value like '%$userString%' or prop4.value like '%$userString%' or prop5.value like '%$userString%' )#end order by prop1.value desc" ) | ||
163 | ## do query | ||
164 | #set( $itemFound = $xwiki.searchDocuments($query) ) | ||
165 | ## set counters | ||
166 | #set( $itemYearNo = $itemFound.size() ) | ||
167 | #if( $itemYearNo > 0 ) | ||
168 | #set( $itemMap[$year] = $itemFound ) | ||
169 | #set( $itemNo = $itemNo + $itemYearNo ) | ||
![]() |
120.2 | 170 | #end |
![]() |
103.1 | 171 | #end |
![]() |
131.2 | 172 | ## |
173 | ## output results | ||
174 | ## page subtitle | ||
175 | {{id name="top"/}} | ||
![]() |
131.4 | 176 | >(%%)$itemNo #if( $itemNo == 1 )#if( $oneCycle ){{thesisCycle plural="false" uppercase="false"}}$cycle{{/thesisCycle}}#else{{stringEngIta eng="$objectEngSingular.toLowerCase()" ita="$objectItaSingular.toLowerCase()"/}}#end#{else}#if( $oneCycle ){{thesisCycle plural="true" uppercase="false"}}$cycle{{/thesisCycle}}#else{{stringEngIta eng="$objectEngPlural.toLowerCase()" ita="$objectItaPlural.toLowerCase()"/}}#end#{end} / #if( $oneYear )$year#else$firstYear–$lastYear#{end}#if( $oneUser ) / $userFirstName $userLastName#{end}(%%) |
![]() |
131.2 | 177 | |
178 | ## stop if no thesis is found | ||
179 | #if( $itemNo == 0 || $itemMap.keySet().size() == 0 ) | ||
180 | ## redundant double check | ||
181 | #stop | ||
![]() |
120.7 | 182 | #end |
![]() |
131.2 | 183 | ## some theses found |
184 | ## page index | ||
185 | #if( $itemMap.keySet().size() > 1 ) | ||
186 | ## found more than one year | ||
187 | {{id name="index"/}} | ||
![]() |
132.2 | 188 | (% style="font-size:smaller; text-align:right; padding:1em 1.5em 0.25em 1.5em; background-color:$theme.highlightColor" %)(((#foreach( $year in $itemMap.keySet() )#if( !$foreach.first ) | #end[[$year>>$doc||anchor=$year]]#end))) |
![]() |
131.2 | 189 | #end |
190 | ## theses displayed per year | ||
191 | #foreach( $year in $itemMap.keySet() ) | ||
![]() |
133.9 | 192 | (% style="border-style:solid hidden hidden solid; border-color:$theme.borderColor; text-align:left; font-style:oblique" %)|{{id name='$year'/}}[[$year>>$doc||style="text-decoration:none; color:$theme.textPrimaryColor" queryString='year=$year#if( $oneUser )#if( $apiceUser )&user=$userName#{else}&name=$userFirstName&surname=$userLastName#end#end#if( $oneCycle )&cycle=$cycle#end#if( $showInline )&inline=true#end']] |
![]() |
133.3 | 193 | #foreach( $item in $itemMap[$year] ) |
![]() |
133.8 | 194 | #if( $showInline ) |
195 | #if( $foreach.first ) | ||
196 | #end | ||
197 | * #else(% style="border-style:hidden hidden hidden hidden; font-style:normal" %)|#end{{thesis inline=$showInline linked='title'}}$item{{/thesis}} | ||
![]() |
133.5 | 198 | #end |
![]() |
131.2 | 199 | #set( $itemYearNo = $itemMap[$year].size() ) |
200 | (% style="border-style:hidden solid solid hidden; border-color:$theme.borderColor; text-align:right; font-style:oblique; font-size:smaller" %)|($itemYearNo #if( $oneCycle )#if( $itemYearNo == 1 ){{thesisCycle plural="false" uppercase="false"}}$cycle{{/thesisCycle}}#{else}{{thesisCycle plural="true" uppercase="false"}}$cycle{{/thesisCycle}}#end#else#if( $itemYearNo == 1 ){{stringEngIta eng=$objectEngSingular.toLowerCase() ita=$objectItaSingular.toLowerCase()/}}#else{{stringEngIta eng=$objectEngPlural.toLowerCase() ita=$objectItaPlural.toLowerCase()/}}#end#end / $year) [[[{{stringEngIta eng='top' ita='in cima'/}}]>>||anchor="top"]] [[[{{stringEngIta eng='bottom' ita='in fondo'/}}]>>||anchor="bottom"]] | ||
201 | #end | ||
![]() |
17.1 | 202 | {{/velocity}} |
![]() |
131.2 | 203 | {{id name="bottom"/}} |