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
Hide line numbers
1: {{velocity}} 2: #if("$!{request.xpage}" == 'plain') 3: $response.setContentType('application/json') 4: #end 5: ##============================== 6: ## Offset = item # at which to start displaying data 7: ##============================== 8: #set($offset = $util.parseInt($request.get('offset'))) 9: ## offset starts from 0 in velocity and 1 in javascript 10: #set($offset = $offset - 1) 11: #if($offset < 0) 12: #set($offset = 0) 13: #end 14: ##================== 15: ## Limit = # of items to display 16: ##================== 17: #set($limit = $util.parseInt($request.get('limit'))) 18: ##==================================== 19: ## Step1: Transform Map into list, one list item per link/page 20: ##==================================== 21: #set ($states = $services.linkchecker.getLinkStates()) 22: #set ($stateList = []) 23: #foreach ($link in $states.keySet()) 24: #set ($pages = $states.get($link)) 25: #foreach ($page in $pages.keySet()) 26: #set ($tmpMap = {}) 27: #set ($dummy = $tmpMap.put("link", $link)) 28: #set ($dummy = $tmpMap.put("page", $page)) 29: #set ($dummy = $tmpMap.put("code", $pages.get($page).getResponseCode())) 30: #set ($dummy = $tmpMap.put("date", $datetool.format($pages.get($page).getLastCheckedTime()))) 31: #set ($dummy = $stateList.add($tmpMap)) 32: #end 33: #end 34: ##============ 35: ## Step2: Filter the list 36: ##============ 37: #set ($filteredList = []) 38: #set ($linkFilter = "$!{request.get('link')}") 39: #set ($pageFilter = "$!{request.get('page')}") 40: #set ($codeFilter = "$!{request.get('code')}") 41: #set ($dateFilter = "$!{request.get('date')}") 42: #foreach ($entry in $stateList) 43: #set ($codeString = "$entry.get('code')") 44: #if ($codeFilter.startsWith("!") && $codeFilter.length() > 1) 45: #set ($codeMatch = !$codeString.contains($codeFilter.substring(1))) 46: #else 47: #set ($codeMatch = $codeString.contains($codeFilter)) 48: #end 49: #if ($entry.get("link").contains($linkFilter) && $entry.get("page").contains($pageFilter) && $codeMatch && $entry.get("date").contains($dateFilter)) 50: #set ($dummy = $filteredList.add($entry)) 51: #end 52: #end 53: ##=================== 54: ## Step3: Handle offset and limit 55: ##=================== 56: #set ($added = 0) 57: #set ($resultList = []) 58: #if ($offset < $filteredList.size()) 59: #set ($toIndex = $mathtool.min($mathtool.add($offset, $limit), $filteredList.size())) 60: #set ($resultList = $filteredList.subList($offset, $toIndex)) 61: #end 62: ## ========== 63: ## JSON Generation 64: ## ========== 65: { 66: "totalrows": $filteredList.size(), 67: "matchingtags": {}, 68: "tags" : [], 69: "returnedrows": ${resultList.size()}, 70: "offset": $mathtool.add($offset, 1), 71: "reqNo": $util.parseInt($request.reqNo), 72: "rows": [ 73: #foreach ($entry in $resultList) 74: #if($velocityCount > 1) , #end 75: { 76: "doc_viewable" : true, 77: #set ($url = $entry.get('link')) 78: #set ($linkHTML = "<a href='$url'>$entry.get('link')</a>") 79: "link" : "$escapetool.javascript($linkHTML)", 80: #set ($url = $xwiki.getURL($entry.get('page'))) 81: #set ($pageHTML = "<a href='$url'>$entry.get('page')</a>") 82: "page" : "$escapetool.javascript($pageHTML)", 83: "code" : "$escapetool.javascript($entry.get("code"))", 84: "date" : "$escapetool.javascript($entry.get("date"))" 85: } 86: #end 87: ] 88: } 89: {{/velocity}}