Depuis la version 1.1 >
modifié par Administrator
sur 2013/06/04 10:06
À la version < 2.1 >
modifié par Paul Libbrecht (admin)
sur 2016/07/26 21:59
>
Commentaire de modification : Install extension [org.xwiki.platform:xwiki-platform-messagestream-ui-8.2]

Résumé

Détails

Icon Propriétés de la Page
Auteur du document
... ... @@ -1,1 +1,1 @@
1 -XWiki.Admin
1 +XWiki.adminPolx
Masqué
... ... @@ -1,1 +1,1 @@
1 -false
1 +true
Icon XWiki.JavaScriptExtension[0]
Code
... ... @@ -1,5 +1,5 @@
1 1  #set ($userSuggestScope = 'local')
2 -#if ($services.workspace && $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 () {
Icon XWiki.StyleSheetExtension[0]
Code
... ... @@ -2,7 +2,7 @@
2 2  
3 3  .messagestream-tools {
4 4   position: relative;
5 - margin: 2px 0;
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 {
Icon 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)

Actualités

Annonce

Journal

Branches

Maîtrise
Compas
PioCas
Scouts
LouJa
Farfadet

photos

Groupe

Branches

Portrait

Admin

Pédagogie

Cahier de Chant

















contact

This wiki is licensed under a Creative Commons 2.0 license
XWiki 13.10 - Documentation - Conditions