Modifications pour le document Message Sender Macro
Modifié par superadmin le 2021/12/12 21:56
modifié par Administrator
sur 2013/06/04 10:06
sur 2013/06/04 10:06
modifié par Paul Libbrecht (admin)
sur 2016/07/26 21:59
sur 2016/07/26 21:59
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-messagestream-ui-8.2]
Résumé
Détails
- Propriétés de la Page
-
- Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. Admin1 +XWiki.adminPolx - Masqué
-
... ... @@ -1,1 +1,1 @@ 1 - false1 +true
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -1,5 +1,5 @@ 1 1 #set ($userSuggestScope = 'local') 2 -#if ($services.w orkspace && $services.workspace.isWorkspace($xcontext.database))2 +#if ($services.wiki.user && $services.wiki.user.userScope != "LOCAL_ONLY") 3 3 #set ($userSuggestScope = 'global') 4 4 #end 5 5 var XWiki = (function (XWiki) { ... ... @@ -41,14 +41,8 @@ 41 41 this.enhanceSelect(); 42 42 }, 43 43 prepareTargetInput : function(event, element) { 44 - if (event) { 45 - element.blur(); 46 - } 47 - $w(element.className).each(function(classname) { 48 - element.removeClassName(classname) 49 - }); 50 50 var targetType = element.options[element.selectedIndex].value; 51 - element. addClassName(targetType);45 + element.className = targetType; 52 52 if (!element.__targetNameInput) {return;} 53 53 if (this.targetsWithName.indexOf(targetType) < 0) { 54 54 element.__targetNameInput.addClassName('hidden'); ... ... @@ -56,10 +56,14 @@ 56 56 element.__targetNameInput.__x_suggest.detach(); 57 57 } 58 58 } else { 59 - element.__targetNameInput.removeClassName('hidden'); 60 - if (this.suggestParameters[targetType]) { 53 + // Focus the text input so that the place-holder value is cleared if present. Otherwise the user picker will treat 54 + // the place-holder value as if it was typed by the user and will automatically select the corresponding suggestion. 55 + element.__targetNameInput.removeClassName('hidden').activate(); 56 + // Defer the creation of the user picker to allow the focus listeners to be called first (in order to clear the 57 + // place-holder value). 58 + this.suggestParameters[targetType] && function() { 61 61 new CustomUserPicker(element.__targetNameInput, this.suggestParameters[targetType]); 62 - } 60 + }.bind(this).defer(); 63 63 } 64 64 }, 65 65 enhanceSelect: function () {
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -2,7 +2,7 @@ 2 2 3 3 .messagestream-tools { 4 4 position: relative; 5 - margin: 2px0;5 + margin: .5em 0 1em; 6 6 } 7 7 .messagestream-tools .accepted-suggestions { 8 8 display: inline; ... ... @@ -21,7 +21,6 @@ 21 21 background-image: url("$xwiki.getSkinFile('icons/silk/group.png')"); 22 22 } 23 23 .messagestream select { 24 - padding: .2em; 25 25 width: auto; 26 26 } 27 27 .messagestream input.targetName {
- XWiki.WikiMacroClass[0]
-
- Code de la macro
-
... ... @@ -8,7 +8,7 @@ 8 8 #set ($configObj = $xwiki.getDocument($config).getObject($config)) 9 9 #set ($isMessageStreamActive = ("$configObj.getProperty('active').value" == '1')) 10 10 11 -#set ($currentUser = $services.model.serialize($context.userReference, 'default')) 11 +#set ($currentUser = $services.model.serialize($xcontext.userReference, 'default')) 12 12 13 13 #set ($activityActionsMap = { 14 14 'publicMessage': 'icons/silk/user_comment.png', ... ... @@ -35,6 +35,8 @@ 35 35 ## 36 36 ## Skin Extensions 37 37 ##-------------------------------------------------------------- 38 +#set ($discard = $xwiki.jsfx.use('uicomponents/suggest/suggestPicker.js')) 39 +#set ($discard = $xwiki.jsfx.use('uicomponents/widgets/userpicker/userPicker.js')) 38 38 #set ($discard = $xwiki.ssx.use('Main.Activity')) 39 39 #set ($discard = $xwiki.ssx.use('Main.MessageSenderMacro')) 40 40 #set ($discard = $xwiki.jsx.use('Main.MessageSenderMacro')) ... ... @@ -42,7 +42,7 @@ 42 42 43 43 {{velocity}} 44 44 #if ($isMessageStreamActive) 45 - #set ($xredirect = $doc.getURL($context.action, $!{request.queryString})) 47 + #set ($xredirect = $doc.getURL($xcontext.action, $!{request.queryString})) 46 46 #set ($errorMessageKeyPrefix = "messageSender.post.error.") 47 47 #set ($errorMessage = $request.session.getAttribute("${errorMessageKeyPrefix}${xredirect}")) 48 48 #if ("$!errorMessage" != '') ... ... @@ -55,47 +55,52 @@ 55 55 ## 56 56 #elseif ("$!{request.xaction}" != '') 57 57 #if ("$!{request.xaction}" == 'postMessage') 58 - #set ($message = "$!{request.messagestream_message.trim()}") 59 - #if ($message == '') 60 - ## Do nothing with empty messages 61 - #if ("$!{request.xredirect}" != '') 62 - $response.sendRedirect(${request.xredirect}) 63 - #end 60 + #if(!$services.csrf.isTokenValid(${request.form_token})) 61 + #set($redirectURL = $services.csrf.getResubmissionURL()) 62 + $response.sendRedirect($redirectURL) 64 64 #else 65 - #set ($success = false) 66 - #if (!$isGuest) 67 - #set ($messageType = "$!{request.visibilityLevel}") 68 - #if ($messageType == 'everyone') 69 - #set ($success = $services.messageStream.postPublicMessage($message)) 70 - #elseif ($messageType == 'followers') 71 - #set ($success = $services.messageStream.postPersonalMessage($message)) 72 - #elseif ($messageType == 'group') 73 - #set ($success = $services.messageStream.postMessageToGroup($message, $services.model.resolveDocument("$!{request.targetName}"))) 74 - #elseif ($messageType == 'user') 75 - #set ($success = $services.messageStream.postDirectMessageToUser($message, $services.model.resolveDocument("$!{request.targetName}"))) 64 + #set ($message = "$!{request.messagestream_message.trim()}") 65 + #if ($message == '') 66 + ## Do nothing with empty messages 67 + #if ("$!{request.xredirect}" != '') 68 + $response.sendRedirect(${request.xredirect}) 76 76 #end 77 - #end 78 - #if (!$success) 79 - #if ($request.xpage == 'plain') 80 - #if ($isGuest) 81 - $response.setStatus(401)## Unauthorized 70 + #else 71 + #set ($success = false) 72 + #if (!$isGuest) 73 + #set ($messageType = "$!{request.visibilityLevel}") 74 + #if ($messageType == 'everyone') 75 + #set ($success = $services.messageStream.postPublicMessage($message)) 76 + #elseif ($messageType == 'followers') 77 + #set ($success = $services.messageStream.postPersonalMessage($message)) 78 + #elseif ($messageType == 'group') 79 + #set ($success = $services.messageStream.postMessageToGroup($message, $services.model.resolveDocument("$!{request.targetName}"))) 80 + #elseif ($messageType == 'user') 81 + #set ($success = $services.messageStream.postDirectMessageToUser($message, $services.model.resolveDocument("$!{request.targetName}"))) 82 + #end 83 + #end 84 + #if (!$success) 85 + #if ($request.xpage == 'plain') 86 + #if ($isGuest) 87 + $response.setStatus(401)## Unauthorized 88 + #else 89 + $response.setStatus(403)## Forbidden 90 + #end 91 + $services.localization.render('xe.activity.messages.submit.failed') 92 + #elseif ("$!{request.xredirect}" != '') 93 + ## Pass the error message in the xredirect so that we display it in the calling page and not in the macro page. 94 + $request.session.setAttribute("${errorMessageKeyPrefix}${request.xredirect}", $services.localization.render('xe.activity.messages.submit.failed')) 95 + $response.sendRedirect($request.xredirect) 82 82 #else 83 - $response.setStatus(403)## Forbidden 97 + {{error}}$services.localization.render('xe.activity.messages.submit.failed'){{/error}} 98 + 84 84 #end 85 - $services.localization.render('xe.activity.messages.submit.failed') 86 86 #elseif ("$!{request.xredirect}" != '') 87 - ## Pass the error message in the xredirect so that we display it in the calling page and not in the macro page. 88 - $request.session.setAttribute("${errorMessageKeyPrefix}${request.xredirect}", $services.localization.render('xe.activity.messages.submit.failed')) 89 - $response.sendRedirect($request.xredirect) 90 - #else 91 - {{error}}$services.localization.render('xe.activity.messages.submit.failed'){{/error}} 92 - 101 + $response.sendRedirect(${request.xredirect}) 102 + #elseif ($request.xpage == 'plain') 103 + ## Just print something for confirmation. 104 + $services.localization.render('xe.activity.messages.submit.success') 93 93 #end 94 - #elseif ("$!{request.xredirect}" != '') 95 - $response.sendRedirect(${request.xredirect}) 96 - #elseif ($request.xpage == 'plain') 97 - ## Just print something for confirmation. 98 - $services.localization.render('xe.activity.messages.submit.success') 99 99 #end 100 100 #end 101 101 #end ... ... @@ -115,23 +115,23 @@ 115 115 #end 116 116 <div class='activityContent'> 117 117 #if(!$inEditMode) 118 - <input type='hidden' name='xaction' value='postMessage' /> 125 + ## CSRF prevention 126 + <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> 127 + <input type='hidden' name='xaction' value='postMessage' /> 119 119 #end 120 - #activitySnapshot($context.user, 'personalMessage') 129 + #activitySnapshot($xcontext.user, 'personalMessage') 121 121 <div class='messagestream-data'> 122 122 <textarea name='messagestream_message' rows='3' cols='40'#if($inEditMode) disabled='disabled'#end></textarea> 123 123 </div> 124 124 <div class='messagestream-tools'> 125 - #set ($targetClassName = '') 126 - ## 127 - #set ($possibleTargets = $context.macro.params.get('visibilityOptions').split('\s*,\s*')) 134 + #set ($possibleTargets = $xcontext.macro.params.get('visibilityOptions').split('\s*,\s*')) 128 128 #if (!$possibleTargets) 129 129 #set ($possibleTargets = $configClass.get('visibilityLevel').getListValues()) 130 130 #end 131 131 ## 132 - #set ($targetName = $context.macro.params.get('visibilityParameter')) 139 + #set ($targetName = $xcontext.macro.params.get('visibilityParameter')) 133 133 ## 134 - #set ($defaultTarget = $context.macro.params.get('visibility')) 141 + #set ($defaultTarget = $xcontext.macro.params.get('visibility')) 135 135 #if (!$defaultTarget) 136 136 #if ($doc.getObject('XWiki.XWikiGroups')) 137 137 #set ($defaultTarget = 'group') ... ... @@ -147,10 +147,6 @@ 147 147 #set ($defaultTarget = 'everyone') 148 148 #end 149 149 #end 150 - #if (!$targetName) 151 - #set ($targetName = ${services.localization.render('xe.activity.messages.visibility.targetName.tip')}) 152 - #set ($targetClassName = 'withTip') 153 - #end 154 154 <label>$services.localization.render('xe.activity.messages.visibility') 155 155 <select name='visibilityLevel'#if($inEditMode) disabled='disabled'#end> 156 156 #foreach ($target in $possibleTargets) ... ... @@ -160,7 +160,8 @@ 160 160 </label> 161 161 <label for="targetName$!{targetNameCounter}"> 162 162 <span class='hidden'>Name:</span> 163 - <input type='text' name='targetName' id="targetName$!{targetNameCounter}" class="targetName $!{targetClassName}" value="$!{targetName}" size='15'#if($inEditMode) disabled='disabled'#end/> 166 + <input type="text" name="targetName" id="targetName$!targetNameCounter" class="targetName withTip useTitleAsTip" value="$!targetName" size="15" 167 + title="$services.localization.render('xe.activity.messages.visibility.targetName.tip')" #if ($inEditMode) disabled="disabled"#end/> 164 164 </label> 165 165 #if (!$targetNameCounter) 166 166 #set ($targetNameCounter = 1)