Changes for page Per Status
From version 67.3
edited by Andrea Omicini
on 22/07/2022 17:55
on 22/07/2022 17:55
Change comment:
There is no comment for this version
To version 74.1
edited by Andrea Omicini
on 02/01/2023 23:59
on 02/01/2023 23:59
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,88 +1,102 @@ 1 1 = {{italiano}}Per stato{{/italiano}}{{english}}Per Status{{/english}} = 2 2 3 3 {{include reference="Publications.Environment" excludeFirstHeading="true"/}}{{velocity}} 4 +## a Publications page 4 4 #set( $publicationMenu = true ) 5 5 #### get parameters 6 6 ## who 7 -#set( $userNamePar = $ context.getRequest().getParameter("user") )8 -#set( $firstNamePar = $ context.getRequest().getParameter("name") )9 -#set( $lastNamePar = $ context.getRequest().getParameter("surname") )8 +#set( $userNamePar = $request.user.trim() ) 9 +#set( $firstNamePar = $request.name.trim() ) 10 +#set( $lastNamePar = $request.surname.trim() ) 10 10 ## which status 11 -#set($statusPar = $ context.getRequest().getParameter("status"))12 +#set( $statusPar = $request.status.trim() ) 12 12 ## 13 13 #### handle who 14 14 #if( $userName ) 15 -## from a personal page, "XWiki.PersonalSpace" $userName form 16 - #set( $oneAuthor = true ) 16 +## from a personal page, "XWiki.$userName" $userName form 17 + #if( !$xwiki.exists( $userName ) ) 18 +{{warning}}User $userName does not exist{{/warning}} 19 + #stop 20 + #end 21 + #set( $apiceUser = true ) 22 + #set( $oneUser = true ) 17 17 #set( $userdoc = $xwiki.getDocument($userName) ) 18 - #set( $authorFirstName = $userdoc.display("first_name") ) 19 - #set( $authorLastName = $userdoc.display("last_name") ) 20 -#elseif( $userNamePar ) 21 -## from the URL, "user=PersonalSpace" parameter 22 - #set( $oneAuthor = true) 23 - #set( $userdoc = $xwiki.getDocument("XWiki.$userNamePar") ) 24 - #set( $authorFirstName = $userdoc.display("first_name") ) 25 - #set( $authorLastName = $userdoc.display("last_name") ) 24 + #set( $userFirstName = $userdoc.display("first_name") ) 25 + #set( $userLastName = $userdoc.display("last_name") ) 26 +#elseif( $userNamePar ) ## from the URL, "user=$userNamePar" parameter 27 + #if( $userNamePar.contains('XWiki.') ) 28 + #set( $userName = "$userNamePar" ) 29 + #else 30 + #set( $userName = "XWiki.$userNamePar" ) 31 + #end 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") ) 26 26 #elseif( $firstNamePar && $lastNamePar ) 27 27 ## from the URL, "name=Firstname&surname=Lastname" parameter 28 - #set( $oneAuthor = true ) 29 - #set( $authorFirstName = $firstNamePar ) 30 - #set( $authorLastName = $lastNamePar ) 47 + #set( $apiceUser = false ) 48 + #set( $oneUser = true ) 49 + #set( $userFirstName = $firstNamePar ) 50 + #set( $userLastName = $lastNamePar ) 31 31 #else 32 - #set( $oneAuthor = false ) 33 - #set( $authorFirstName = "" ) 34 - #set( $authorLastName = "" ) 52 + #set( $apiceUser = false ) 53 + #set( $oneUser = false ) 54 + #set( $userFirstName = "" ) 55 + #set( $userLastName = "" ) 35 35 #end 57 +#if( $oneUser ) 58 + #if( $apiceUser ) 59 + #set( $userString = "%$userName%" ) 60 + #else 61 + #set( $userString = "%$userFirstName $userLastName%" ) 62 + #end 63 +#else 64 + #set( $userString = "%%" ) 65 +#end 36 36 ## 37 37 #### handle status 38 38 ## $oneStatus false gets a list of statuses, true just one 39 39 #set( $oneStatus = false ) 40 40 ## $statusList gets the list of statuses to be shown 71 +#set( $statusList = [] ) 41 41 ## default: all unpublished papers except Rejected ones 42 -#set( $ statusList= $statusRangeUnpublished )73 +#set( $discard = $statusList.addAll($unpublishedStatuses) ) 43 43 #if( $statusPar.toLowerCase() == "all" ) 44 44 ## 'all' value gets all unpublished papers including "Rejected" ones 45 - #set($ statusList= $statusRangeUnpublishedFull)76 + #set( $discard = $statusList.add("rejected") ) 46 46 #else 47 - #if( $ statusRangeFull.contains($statusPar) )78 + #if( $allStatusesPlus.contains($statusPar) ) 48 48 ## 'status' parameter is an admissible publication status value 49 - #set($oneStatus = true) 50 - #set($statusList = [$statusPar]) 80 + #set( $oneStatus = true ) 81 + #set( $statusList = [$statusPar] ) 51 51 #end 52 52 #end 53 53 ## 54 -{{id name="top"/}} 55 -#if( $oneAuthor )#if( $oneStatus ) 56 ->**{{pubStatus uppercase='true' plural='true'}}$statusPar{{/pubStatus}}** / $authorFirstName $authorLastName 57 -#else 58 ->**{{pubStatus uppercase='true' plural='true'}}unpublished{{/pubStatus}}** / $authorFirstName $authorLastName 59 -#end#elseif($oneStatus) 60 ->{{pubStatus uppercase='true' plural='true'}}$statusPar{{/pubStatus}} 61 -#else 62 ->{{pubStatus uppercase='true' plural='true'}}unpublished{{/pubStatus}} 63 -#end 64 -## 65 -#if( !$oneStatus ) 66 -(% style="font-size: smaller; padding:1em 1.5em 0.25em 1.5em; background-color:$theme.highlightColor" %)(((#foreach( $status in $statusList )#if( $velocityCount > 1 ) | #end[[{{pubStatus}}$status{{/pubStatus}}>>||anchor=$status]]#end))) 67 -#end 68 -## 85 +## query to structures 86 +#set( $pubMap = {} ) 87 +#set( $pubNo = 0 ) 69 69 #foreach( $status in $statusList ) 70 - #set( $from = ", BaseObject as obj, LargeStringProperty as prop0, StringProperty as prop1" ) 71 - #set( $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 prop0.name='author' and (prop0.value like ' %$authorFirstName$authorLastName%'orprop0.value like '%$authorLastName, $authorFirstName%') and prop1.name = 'status' and prop1.value = '$status'" )89 + #set( $from = ", BaseObject as obj, LargeStringProperty as prop0, LargeStringProperty as prop1, StringProperty as prop2" ) 90 + #set( $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 prop0.name = 'author' and prop1.name = 'editor' and ( prop0.value like '$userString' or ( prop0.value = '' and prop1.value like '$userString' ) ) and prop2.name = 'status' and prop2.value = '$status'" ) 72 72 #set( $sql = $from + " where " + $where ) 73 73 #set( $pubFound = $xwiki.searchDocuments($sql) ) 74 74 #set( $pubStatusNo = $pubFound.size() ) 75 75 #if( $pubStatusNo > 0 ) 76 - #if( !$oneStatus ) 77 -(% style="border-style:solid hidden hidden solid; border-color:$theme.borderColor; text-align:left; font-style:oblique" %)|{{id name='$sort'/}}{{pubStatus plural='true' uppercase='true'}}$status{{/pubStatus}}{{id name="$status"/}} 78 - #end 79 - #foreach( $pub in $pubFound )#if( $xwiki.exists($pub) )#set( $pubDoc = $xwiki.getDocument($pub) )#if( $pubDoc.getObject("${objectSpace}.${objectClass}") )## handling visibility at show time 80 -##|(% style='color:$theme.textColor; display:block; line-height:1.25em; margin-top:0; margin-bottom:0em'%){{pubAutheditors eds='true'}}$pub{{/pubAutheditors}} 81 -##{{pubTitle}}$pub{{/pubTitle}} 82 -##{{pubVenue}}$pub{{/pubVenue}}(%%) 83 -|{{pub inline=false linked=true}}$pub{{/pub}} 84 - #end#end#end 85 -(% style="#if( !$oneStatus )border-style:hidden solid solid hidden;#end border-color:$theme.borderColor; text-align:right; font-style:oblique; font-weight:normal; font-size:smaller; color:gray" %)|($pubStatusNo #if( $pubStatusNo > 1 ){{pubStatus plural='true'}}$status{{/pubStatus}}#else{{pubStatus plural='false'}}$status{{/pubStatus}}#end) [[[top]>>||anchor="top"]] 95 + #set( $pubMap[$status] = $pubFound ) 96 + #set( $pubNo = $pubNo + $pubYearNo ) 86 86 #end 87 87 #end 99 +$pubMap 100 + 101 + 88 88 {{/velocity}}