Wiki-Quellcode von Send Mail Status JSON
Zuletzt geändert von Daniel Herrmann am 2025/02/26 17:00
Zeige letzte Bearbeiter
| author | version | line-number | content |
|---|---|---|---|
| 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 | #set ($actionHTML = "<form action='' method='post'> | ||
| 102 | <input name='mail_id' value='$!item.messageId' type='hidden'/> | ||
| 103 | <input name='batch_id' value='$!item.batchId' type='hidden'/>") | ||
| 104 | #if("$!item.state" != 'sent') | ||
| 105 | ## Add the Resend action | ||
| 106 | #set ($actionHTML = "${actionHTML} | ||
| 107 | <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'> | ||
| 108 | </span>") | ||
| 109 | #end | ||
| 110 | ## Add the Delete action | ||
| 111 | #set ($actionHTML = "${actionHTML} | ||
| 112 | <span class='btn-group text-left'><input name='mailsendingaction_delete' value='${escapetool.xml($services.localization.render('Mail.SendMailStatus_livetable.delete'))}' class='btn btn-default btn-sm' type='submit'> | ||
| 113 | </span> | ||
| 114 | </form>") | ||
| 115 | #set($discard = $row.put('actions', $actionHTML)) | ||
| 116 | #set($discard = $rows.add($row)) | ||
| 117 | #end | ||
| 118 | $jsontool.serialize($resultmap) | ||
| 119 | #else | ||
| 120 | This page should be called by Mail.SendMailStatus with parameters. | ||
| 121 | #end | ||
| 122 | {{/velocity}} |