General Actions:
Log-in
Register
Wiki:
games
▼
:
Document Index
»
Space:
Invitation
▼
:
Document Index
»
Page:
InvitationGuestActions
Search
en
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
Invitation.WebHome
»
InvitationGuestActions
Wiki source code of
InvitationGuestActions
Last modified by
Administrator
on 2011/11/06 20:09
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Show line numbers
{{include document="Invitation.InvitationCommon" /}} {{velocity}} #* * Invitation Application * Options for guests who are invited. * * Macros in this script don't rely on any variables except those which are passed to them and the following: * * $doc the com.xpn.xwiki.api.Document object representing the document containing this code. * $msg the internationalization message provider containing a get(String) and a get(String, List) function * $xcontext the com.xpn.xwiki.Context object for this request * $xwiki an object of the com.xpn.xwiki.api.XWiki class. * $escapetool an object of class org.apache.velocity.tools.generic.EscapeTool * * Macros also depend on other macros but only other macros which are contained in this script. * * This script is affected by the following documents: * * InvitationMessages stores all of the mail message objects. If this does not exist it will be created. * May be changed in the configuration. * * InvitationMailClass the class for mail message objects. May be changed in the configuration. * * InvitationConfig configuration for this code. Contains an XObject of the class defined in this document. * If it does not exist it will be created with default values. * *### ## ##--------------------------------------------------------------------- ## Decide what we should do. ##--------------------------------------------------------------------- ## #set($action = []) #getUserAction($request.getParameterMap(), $action) #if($action.size() > 0) #set($action = $action.get(0)) ## Load config and mail. #set($config = {}) #loadInvitationConfig($config) #set($mail = {}) #set($emailContainer = $xwiki.getDocumentAsAuthor($config.get('emailContainer'))) #loadInvitationMail($config, $emailContainer, $mail) ## ## Load CSS $xwiki.get('ssx').use($config.get('commonPage')) ## ## Don't load comments, history, etc. #set($docextras = []) ## #doAction($request.getParameter('messageID'), $action, $request.getParameter('memo'), $request.getParameter('confirm'), $mail, $emailContainer) #else {{info}}$msg.get("xe.invitation.internalDocument", ["${doc.getSpace()}.WebHome"]){{/info}} #end ## ##--------------------------------------------------------------------- ## The macros (Nothing below this point is run directly) ##--------------------------------------------------------------------- ## #* * Do a guest allowed action on a single message. * * Action codes: * accept (message status code must be 1) * decline (message status code must be 1) * report (as spam) (message status code must not be 6) * else - unknown code * * $messageID (String) the unique ID of the invitation to act upon. * * $action (String) the action to do. * * $memo (String) an action specific message to attach to the mail EG: reason for declining, * or results of spam investigation. * * $confirm (Boolean) are you sure you want to do this? * * $mail (Map<String, XObject>) the map of stored messages by their id. * * $emailContainer (Document) the document to save after changing objects. *### #macro(doAction, $messageID, $action, $memo, $confirm, $mail, $emailContainer) ## ## 1. get message. (If it's invalid will be '' and each action handles differently.) #set($message = '') #set($message = $mail.get($messageID)) #if($message != '') #set($status = $message.getProperty('status').getValue()) #end #set($oldMemo = "#getLastMemo($message)") ## 3. Do action. #if($action == 'accept') ## Accept invitation. <------------------------------------------------------------------------ = $msg.get('xe.invitation.doAction.accept.heading') = #if("$!message" == '') {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.accept.noMessageFound'){{/error}} #elseif($status == 'accepted') ## already accepted {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.accept.alreadyAccepted'){{/error}} #elseif($status == 'declined') ## already declined {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.accept.alreadyDeclined'){{/error}} #elseif($status == 'canceled') ## invitation canceled. (%id="invitation-action-message"%)((({{error}}$msg.get('xe.invitation.doAction.accept.invitationCanceled') #if("$!oldMemo" != '') $msg.get('xe.invitation.doAction.invitationCanceledMemo', [$xwiki.getUserName($message.getProperty('sendingUser').getValue(), false)]) $oldMemo #end {{/error}} #elseif($status == 'reported' || $status == 'notSpam') ## reported as spam, nolonger valid. {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.accept.alreadyReportedAsSpam'){{/error}} #elseif($status != 'pending') {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.invalidStatus', ["#messageStatusForCode($status)"]){{/error}} #else #if("#canGuestAcceptInvitation($doc)" != 'true') ## {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.accept.improperConfiguration'){{/error}} #else #define($doAfterRegistration) #setMessageStatus($message, 'accepted') $emailContainer.saveAsAuthor($msg.get('xe.invitation.doAction.accept.saveComment')) #end #set($invited = true) {{include document="XWiki.Registration"/}} #end #end #elseif($action == 'decline') ## Decline Invitation <------------------------------------------------------------------------ = $msg.get('xe.invitation.doAction.decline.heading') = #if("$!message" == '') {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.decline.noMessageFound'){{/error}} #elseif($status == 'accepted') ## already accepted {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.decline.alreadyAccepted'){{/error}} #elseif($status == 'declined') ## already declined {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.decline.alreadyDeclined'){{/error}} #elseif($status == 'canceled') ## invitation canceled. (%id="invitation-action-message"%)((({{error}}$msg.get('xe.invitation.doAction.decline.invitationCanceled') #if("$!oldMemo" != '') $msg.get('xe.invitation.doAction.invitationCanceledMemo', [$xwiki.getUserName($message.getProperty('sendingUser').getValue(), false)]) $oldMemo #end {{/error}}))) #elseif($status == 'reported' || $status == 'notSpam') ## reported as spam, nolonger valid. {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.decline.alreadyReportedAsSpam'){{/error}} #elseif($status != 'pending') {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.invalidStatus', ["#messageStatusForCode($status)"]){{/error}} #elseif($confirm && ${services.csrf.isTokenValid("$!{request.getParameter('form_token')}")}) #setMessageStatus($message, 'declined', $memo)## $emailContainer.saveAsAuthor($msg.get('xe.invitation.doAction.decline.saveComment')) {{info}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.decline.success'){{/info}} #else ## Are you sure?... #displayActionConfirmationForm([$messageID], $action, $msg.get('xe.invitation.doAction.decline.memoLabel', [$xwiki.getUserName($message.getProperty('sendingUser').getValue(), false)]), $msg.get('xe.invitation.doAction.decline.confirmLabel'), {}) #end #elseif($action == 'report') ## Report Abuse <------------------------------------------------------------------------------ = $msg.get('xe.invitation.doAction.reportSpam.heading') = #if("$!message" == '') ## No message found by that id. {{error}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.reportSpam.noMessageFound'){{/error}} #elseif($confirm && ${services.csrf.isTokenValid("$!{request.getParameter('form_token')}")}) #setMessageStatus($message, 'reported', $memo)## $emailContainer.saveAsAuthor($msg.get('xe.invitation.doAction.reportSpam.reportSaveComment')) ## Your report has been logged, sorry for the inconvienence. {{info}}(%id="invitation-action-message"%)$msg.get('xe.invitation.doAction.reportSpam.success'){{/info}} #else ## Are you sure?... == $msg.get('xe.invitation.doAction.reportSpam.areYouSure') == #displayActionConfirmationForm([$messageID], $action, $msg.get('xe.invitation.doAction.reportSpam.memoLabel'), $msg.get('xe.invitation.doAction.confirmLabel'), {}) #displayMessage($message) #end #else ## Should not happen Invalid action #end #end {{/velocity}}