Codice sorgente Wiki di Per anno
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = {{italiano}}Per anno{{/italiano}}{{english}}Per Year{{/english}} = | ||
2 | |||
3 | {{include reference="Theses.Environment" excludeFirstHeading="true"/}}{{velocity}} | ||
4 | #set( $thesisMenu = true ) | ||
5 | #### HANDLE PARAMETERS / START | ||
6 | ## | ||
7 | ## who | ||
8 | #set( $userNamePar = $request.user.trim() ) | ||
9 | #set( $firstNamePar = $request.name.trim() ) | ||
10 | #set( $lastNamePar = $request.surname.trim() ) | ||
11 | #### handle who | ||
12 | #if( $userName ) | ||
13 | ## from a personal page, "XWiki.$userName" $userName form | ||
14 | #if( !$xwiki.exists( $userName ) ) | ||
15 | {{warning}}User $userName does not exist{{/warning}} | ||
16 | #stop | ||
17 | #end | ||
18 | #set( $apiceUser = true ) | ||
19 | #set( $oneUser = true ) | ||
20 | #set( $userdoc = $xwiki.getDocument($userName) ) | ||
21 | #set( $userFirstName = $userdoc.display("first_name") ) | ||
22 | #set( $userLastName = $userdoc.display("last_name") ) | ||
23 | #elseif( $userNamePar ) | ||
24 | ## from the URL, "user=$userNamePar" parameter | ||
25 | #if( $userNamePar.contains('XWiki.') ) | ||
26 | #set( $userName = "$userNamePar" ) | ||
27 | #else | ||
28 | #set( $userName = "XWiki.$userNamePar" ) | ||
29 | #end | ||
30 | #if( !$xwiki.exists( $userName ) ) | ||
31 | #if( $services.localization.currentLocale == 'it' ) | ||
32 | {{warning}}L'utente “$userNamePar” non esiste{{/warning}} | ||
33 | #else | ||
34 | {{warning}}User “$userNamePar” does not exist{{/warning}} | ||
35 | #end | ||
36 | #stop | ||
37 | #end | ||
38 | #set( $apiceUser = true ) | ||
39 | #set( $oneUser = true) | ||
40 | #set( $userdoc = $xwiki.getDocument($userName) ) | ||
41 | #set( $userFirstName = $userdoc.display("first_name") ) | ||
42 | #set( $userLastName = $userdoc.display("last_name") ) | ||
43 | #elseif( $firstNamePar && $lastNamePar ) | ||
44 | ## from the URL, "name=Firstname&surname=Lastname" parameter | ||
45 | #set( $apiceUser = false ) | ||
46 | #set( $oneUser = true ) | ||
47 | #set( $userFirstName = $firstNamePar ) | ||
48 | #set( $userLastName = $lastNamePar ) | ||
49 | #else | ||
50 | #set( $apiceUser = false ) | ||
51 | #set( $oneUser = false ) | ||
52 | #set( $userFirstName = "" ) | ||
53 | #set( $userLastName = "" ) | ||
54 | #end | ||
55 | #if( $oneUser ) | ||
56 | #if( $apiceUser ) | ||
57 | #set( $userString = "%$userName%" ) | ||
58 | #else | ||
59 | #set( $userString = "%$userFirstName $userLastName%" ) | ||
60 | #end | ||
61 | #else | ||
62 | #set( $userString = "%%" ) | ||
63 | #end | ||
64 | #### handle cycle | ||
65 | ## $cycleList gets the list of cycles to be shown | ||
66 | ## $oneCycle true if just one cycle to be shown | ||
67 | #if( $request.cycle && $request.cycle.trim() != "" ) | ||
68 | #set( $cyclePar = $request.cycle.trim().toUpperCase() ) | ||
69 | #if( $allThesisCycles.contains($cyclePar) ) | ||
70 | ## 'cycle' parameter is an admissible thesis cycle value | ||
71 | #set( $cycleList = [$cyclePar]) | ||
72 | #set( $oneCycle = true ) | ||
73 | #set( $cycle = $cyclePar ) | ||
74 | #else | ||
75 | ## 'cycle' parameter is not an admissible thesis cycle value | ||
76 | {{warning}}$cyclePar is not an admissible cycle for APICe theses{{/warning}} | ||
77 | #stop | ||
78 | #end | ||
79 | #else | ||
80 | ## default: all cycles | ||
81 | #if( $showPhDTheses ) | ||
82 | #set( $cycleList = $allThesisCycles ) | ||
83 | #else | ||
84 | #set( $cycleList = $lowThesisCycles ) | ||
85 | #end | ||
86 | #set( $oneCycle = false ) | ||
87 | #set( $cycle = "" ) | ||
88 | #end | ||
89 | ## INVARIANT: $oneCycle and $cycleList are correctly and coherently initialised | ||
90 | ## | ||
91 | ## when | ||
92 | #set( $yearPar = $request.year.trim() ) | ||
93 | #set( $firstYearPar = $request.from.trim() ) | ||
94 | #set( $lastYearPar = $request.to.trim() ) | ||
95 | #### handle when | ||
96 | #set( $firstYear = $mathtool.toInteger($firstYearThesis) ) | ||
97 | #set( $lastYear = $mathtool.toInteger($lastYearThesis) ) | ||
98 | #if( $lastYear < $firstYear ) | ||
99 | #set( $lastYear = $firstYear ) | ||
100 | #end | ||
101 | ## parameters takes precedence | ||
102 | #if( $yearPar ) | ||
103 | #set( $yearInt = $mathtool.toInteger($yearPar) ) | ||
104 | #if( $yearInt > 0 ) | ||
105 | #set( $firstYear = $yearInt ) | ||
106 | #set( $lastYear = $yearInt ) | ||
107 | #end | ||
108 | #end | ||
109 | #if( $firstYearPar ) | ||
110 | #set( $yearInt = $mathtool.toInteger($firstYearPar) ) | ||
111 | #if( $yearInt > 0 ) | ||
112 | #set( $firstYear = $yearInt ) | ||
113 | #end | ||
114 | #end | ||
115 | #if( $lastYearPar ) | ||
116 | #set( $yearInt = $mathtool.toInteger($lastYearPar) ) | ||
117 | #if( $yearInt > 0 ) | ||
118 | #set( $lastYear = $yearInt ) | ||
119 | #end | ||
120 | #end | ||
121 | #if( $lastYear < $firstYear ) | ||
122 | ## swap | ||
123 | #set( $yearTemp = $lastYear ) | ||
124 | #set( $lastYear = $firstYear ) | ||
125 | #set( $firstYear = $yearTemp ) | ||
126 | #end | ||
127 | ## invariant: $lastYear >= $firstYear | ||
128 | #if( $lastYear > $firstYear ) | ||
129 | #set( $year = -1 ) | ||
130 | #set( $yearList = [$lastYear..$firstYear] ) | ||
131 | #set( $oneYear = false ) | ||
132 | #else | ||
133 | ## $lastYear = $firstYear | ||
134 | #set( $year = $lastYear ) | ||
135 | #set( $yearList = [$year] ) | ||
136 | #set( $oneYear = true ) | ||
137 | #end | ||
138 | ## handle when / end | ||
139 | ## | ||
140 | ## $oneUser, $apiceUser, $userString, $userFirstName, $userLastName, $oneCycle, $cycleList, $oneYear, $yearList are properly set | ||
141 | ## | ||
142 | #### HANDLE PARAMETERS / END | ||
143 | ## | ||
144 | ## query to structures | ||
145 | #set( $itemMap = {} ) | ||
146 | #set( $itemNo = 0 ) | ||
147 | #foreach( $year in $yearList ) | ||
148 | #set( $query = ", BaseObject as obj, StringProperty as prop0, DateProperty as prop1, StringProperty as prop2, LargeStringProperty as prop3, LargeStringProperty as prop4, LargeStringProperty as prop5 | ||
149 | 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" ) | ||
150 | ## do query | ||
151 | #set( $itemFound = $xwiki.searchDocuments($query) ) | ||
152 | ## set counters | ||
153 | #set( $itemYearNo = $itemFound.size() ) | ||
154 | #if( $itemYearNo > 0 ) | ||
155 | #set( $itemMap[$year] = $itemFound ) | ||
156 | #set( $itemNo = $itemNo + $itemYearNo ) | ||
157 | #end | ||
158 | #end | ||
159 | ## | ||
160 | ## output results | ||
161 | ## page subtitle | ||
162 | {{id name="top"/}} | ||
163 | >(%%)$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}(%%) | ||
164 | |||
165 | ## stop if no thesis is found | ||
166 | #if( $itemNo == 0 || $itemMap.keySet().size() == 0 ) | ||
167 | ## redundant double check | ||
168 | #stop | ||
169 | #end | ||
170 | ## some theses found | ||
171 | ## page index | ||
172 | #if( $itemMap.keySet().size() > 1 ) | ||
173 | ## found more than one year | ||
174 | {{id name="index"/}} | ||
175 | (% 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))) | ||
176 | #end | ||
177 | ## theses displayed per year | ||
178 | #foreach( $year in $itemMap.keySet() ) | ||
179 | (% 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']] | ||
180 | (% style="border-style:hidden hidden hidden hidden; font-style:normal" %)#foreach( $item in $itemMap[$year] ) | ||
181 | |{{thesis inline='false' linked='title'}}$item{{/thesis}} | ||
182 | #end | ||
183 | #set( $itemYearNo = $itemMap[$year].size() ) | ||
184 | (% 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"]] | ||
185 | #end | ||
186 | {{/velocity}} | ||
187 | {{id name="bottom"/}} |