General Actions:
Log-in
Register
Wiki:
Main wiki
▼
:
Document Index
»
Space:
XWiki
▼
:
Document Index
»
Page:
ExternalLinksJSON
Search
en
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
Main wiki
»
Documents on this Wiki
»
External Links
»
JSON Generation for the External Link States LiveTable
Wiki source code of
JSON Generation for the External Link States LiveTable
Last modified by
Administrator
on 2012/03/21 17:40
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Show line numbers
{{velocity}} #if("$!{request.xpage}" == 'plain') $response.setContentType('application/json') #end ##============================== ## Offset = item # at which to start displaying data ##============================== #set($offset = $util.parseInt($request.get('offset'))) ## offset starts from 0 in velocity and 1 in javascript #set($offset = $offset - 1) #if($offset < 0) #set($offset = 0) #end ##================== ## Limit = # of items to display ##================== #set($limit = $util.parseInt($request.get('limit'))) ##==================================== ## Step1: Transform Map into list, one list item per link/page ##==================================== #set ($states = $services.linkchecker.getLinkStates()) #set ($stateList = []) #foreach ($link in $states.keySet()) #set ($pages = $states.get($link)) #foreach ($page in $pages.keySet()) #set ($tmpMap = {}) #set ($dummy = $tmpMap.put("link", $link)) #set ($dummy = $tmpMap.put("page", $page)) #set ($dummy = $tmpMap.put("code", $pages.get($page).getResponseCode())) #set ($dummy = $tmpMap.put("date", $datetool.format($pages.get($page).getLastCheckedTime()))) #set ($dummy = $stateList.add($tmpMap)) #end #end ##============ ## Step2: Filter the list ##============ #set ($filteredList = []) #set ($linkFilter = "$!{request.get('link')}") #set ($pageFilter = "$!{request.get('page')}") #set ($codeFilter = "$!{request.get('code')}") #set ($dateFilter = "$!{request.get('date')}") #foreach ($entry in $stateList) #set ($codeString = "$entry.get('code')") #if ($codeFilter.startsWith("!") && $codeFilter.length() > 1) #set ($codeMatch = !$codeString.contains($codeFilter.substring(1))) #else #set ($codeMatch = $codeString.contains($codeFilter)) #end #if ($entry.get("link").contains($linkFilter) && $entry.get("page").contains($pageFilter) && $codeMatch && $entry.get("date").contains($dateFilter)) #set ($dummy = $filteredList.add($entry)) #end #end ##=================== ## Step3: Handle offset and limit ##=================== #set ($added = 0) #set ($resultList = []) #if ($offset < $filteredList.size()) #set ($toIndex = $mathtool.min($mathtool.add($offset, $limit), $filteredList.size())) #set ($resultList = $filteredList.subList($offset, $toIndex)) #end ## ========== ## JSON Generation ## ========== { "totalrows": $filteredList.size(), "matchingtags": {}, "tags" : [], "returnedrows": ${resultList.size()}, "offset": $mathtool.add($offset, 1), "reqNo": $util.parseInt($request.reqNo), "rows": [ #foreach ($entry in $resultList) #if($velocityCount > 1) , #end { "doc_viewable" : true, #set ($url = $entry.get('link')) #set ($linkHTML = "<a href='$url'>$entry.get('link')</a>") "link" : "$escapetool.javascript($linkHTML)", #set ($url = $xwiki.getURL($entry.get('page'))) #set ($pageHTML = "<a href='$url'>$entry.get('page')</a>") "page" : "$escapetool.javascript($pageHTML)", "code" : "$escapetool.javascript($entry.get("code"))", "date" : "$escapetool.javascript($entry.get("date"))" } #end ] } {{/velocity}}