Wiki source code of Send Mail Status JSON

Version 1.1 by Laura Sagunski on 2022/09/27 12:39

Show last authors
1 {{velocity wiki="false"}}
2 #if("$!{request.outputSyntax}" == 'plain' || "$!{request.xpage}" == 'plain')
3 $response.setContentType('application/json')
4 ##==================================================
5 ## Offset = item # at which to start displaying data
6 ##==================================================
7 #set($offset = $numbertool.toNumber($request.get('offset')).intValue())
8 ## Offset starts from 0 in velocity and 1 in javascript
9 #set($offset = $offset - 1)
10 #if(!$offset || $offset < 0)
11 #set($offset = 0)
12 #end
13 ##==============================
14 ## Limit = # of items to display
15 ##==============================
16 #set($limit = $numbertool.toNumber($request.get('limit')).intValue())
17 #if(!$limit)
18 #set ($limit = 15)
19 #end
20 ##===============
21 ## Sort direction
22 ##===============
23 #set($order = "$!request.sort")
24 #if($order != '')
25 #if($order == 'error')
26 #set($order = 'errorSummary')
27 #end
28 #set($orderDirection = true)
29 #if("$!{request.get('dir')}" != '' && "$!{request.get('dir')}" != 'asc')
30 #set($orderDirection = false)
31 #end
32 #else
33 #set($order = "date")
34 #set($orderDirection = false)
35 #end
36 ## ===========
37 ## Filter Data
38 ## ===========
39 #set ($filterMap = {})
40 #set ($filterId = "$!{request.get('batchId')}")
41 #if("$!{filterId}" != '')
42 #set ($discard = $filterMap.put('batchId', "%${filterId.trim()}%"))
43 #end
44 #set($filterType = "$!{request.get('type')}")
45 #if("$!{filterType}" != '')
46 #set ($discard = $filterMap.put('type', "%${filterType.trim()}%"))
47 #end
48 #set($filterRecipients = "$!{request.get('recipients')}")
49 #if("$!{filterRecipients}" != '')
50 #set ($discard = $filterMap.put('recipients', "%${filterRecipients.trim()}%"))
51 #end
52 #set($filterStatus = "$!{request.get('state')}")
53 #if("$!{filterStatus}" != '')
54 #set ($discard = $filterMap.put('state', "%${filterStatus.trim()}%"))
55 #end
56 #if ($xcontext.isMainWiki())
57 #set($filterWiki = "$!{request.get('wiki')}")
58 #if("$!{filterWiki}" != '')
59 #set ($discard = $filterMap.put('wiki', "%${filterWiki.trim()}%"))
60 #end
61 #end
62 #set($filterError = "$!{request.get('error')}")
63 #if("$!{filterError}" != '')
64 #set ($discard = $filterMap.put('errorSummary', "%${filterError.trim()}%"))
65 #end
66 #set ($totalrows = $services.mail.storage.count($filterMap))
67 #set ($results = $services.mail.storage.load($filterMap, $offset, $limit, $order, $orderDirection))
68 ## If there's an error then log it since we cannot return an error to the Livetable
69 #if ($services.mail.sender.lastError)
70 $services.logging.getLogger('Mail Status Livetable').error('Failed to load mails from store',
71 $services.mail.sender.lastError)
72 ## Return an empty result in case of error
73 #set ($result = $collectiontool.getArrayList())
74 #end
75 ## ===============
76 ## JSON Generation
77 ## ===============
78 #set ($rows = [])
79 #set ($resultmap = {
80 'totalrows': $totalrows,
81 'matchingtags': {},
82 'tags' : [],
83 'returnedrows': $results.size(),
84 'offset': $numbertool.toNumber($request.offset).intValue(),
85 'sort': $request.sort,
86 'dir': $request.dir,
87 'reqNo': $numbertool.toNumber($request.reqNo).intValue(),
88 'rows': $rows })
89 #foreach($item in $results)
90 #set ($row = {
91 'doc_viewable' : true,
92 'date' : $xwiki.formatDate($!item.date),
93 'batchId' : $!item.batchId,
94 'type' : $!item.type,
95 'recipients' : $!item.recipients,
96 'state' : $!item.state,
97 'error' : $!item.errorSummary })
98 #if ($xcontext.isMainWiki())
99 #set($discard = $row.put('wiki', $!item.wiki))
100 #end
101 #if("$!item.state" != 'sent')
102 #set($discard = $row.put('actions', "<form action='' method='post'>
103 <input name='mail_id' value='$!item.messageId' type='hidden'/>
104 <input name='batch_id' value='$!item.batchId' type='hidden'/>
105 <span class='btn-group text-left'><input name='mailsendingaction_resend' value='${escapetool.xml($services.localization.render('Mail.SendMailStatus_livetable.resend'))}' class='btn btn-primary btn-sm' type='submit'>
106 </span>
107 </form>" ))
108 #else
109 #set($discard = $row.put('actions', ''))
110 #end
111 #set($discard = $rows.add($row))
112 #end
113 $jsontool.serialize($resultmap)
114 #else
115 This page should be called by Mail.SendMailStatus with parameters.
116 #end
117 {{/velocity}}