Changes for page Message Sender Macro

Last modified by Ludovic Dubost on 2024/07/22 15:51

From version 7.1
edited by Ludovic Dubost
on 2018/12/09 12:24
Change comment: Install extension [org.xwiki.platform:xwiki-platform-messagestream-ui/10.10]
To version 10.1
edited by Ludovic Dubost
on 2020/12/03 18:41
Change comment: Install extension [org.xwiki.platform:xwiki-platform-messagestream-ui/12.8]

Summary

Details

XWiki.JavaScriptExtension[0]
Code
... ... @@ -1,9 +1,10 @@
1 1  var XWiki = (function (XWiki) {
2 2  // Start XWiki augmentation.
3 3  XWiki.MessageStream = Class.create({
4 - initialize : function() {
5 - this.prepareForms();
6 - this.enhanceSelect();
4 + initialize : function(container) {
5 + container = container || $(document.body);
6 + this.prepareForms(container);
7 + this.enhanceSelect(container);
7 7   },
8 8   prepareTargetInput : function(event, element) {
9 9   var targetType = element.options[element.selectedIndex].value;
... ... @@ -30,14 +30,14 @@
30 30   }
31 31   });
32 32   },
33 - enhanceSelect: function () {
34 - $$('.messagestream select[name="visibilityLevel"]').each(function(element) {
34 + enhanceSelect: function (container) {
35 + container.select('.messagestream select[name="visibilityLevel"]').each(function(element) {
35 35   element.observe('change', this.prepareTargetInput.bindAsEventListener(this, element));
36 36   this.prepareTargetInput(null, element);
37 37   }.bind(this));
38 38   },
39 - prepareForms: function() {
40 - $$('.messagestream form').each(function(msForm) {
40 + prepareForms: function(container) {
41 + container.select('.messagestream form').each(function(msForm) {
41 41   msForm.action = msForm.action.replace(/xredirect=.*$/, 'xpage=plain')
42 42   msForm.observe('submit', function(event) {
43 43   event.stop();
... ... @@ -93,11 +93,21 @@
93 93   }
94 94  });
95 95  
96 -var init = function() {
97 - return new XWiki.MessageStream();
97 +var init = function (event) {
98 + var elements = (event && event.memo.elements) || [$(document.body)];
99 + elements.forEach(function(container) {
100 + new XWiki.MessageStream(container);
101 + });
102 + return true;
98 98  };
99 -(XWiki.domIsLoaded && init()) || document.observe('xwiki:dom:loaded', init);
100 100  
105 +// Initialize the message sender macro when the page is loaded.
106 +(XWiki.domIsLoaded && init())
107 +|| document.observe('xwiki:dom:loaded', init);
108 +
109 +// Initialize the message sender macro when it is added after the page is loaded.
110 +document.observe('xwiki:dom:updated', init);
111 +
101 101  // End XWiki augmentation.
102 102  return XWiki;
103 103  }(XWiki || {}));
XWiki.StyleSheetExtension[0]
Code
... ... @@ -1,3 +1,5 @@
1 +#template('colorThemeInit.vm')
2 +
1 1  .messagestream-tools {
2 2   display: flex;
3 3   position: relative;
... ... @@ -10,3 +10,37 @@
10 10   flex-grow: 1;
11 11   margin-left: .3em;
12 12  }
15 +
16 +.messagestream .message-content {
17 + padding: .5em 0 .5em 75px;
18 +}
19 +
20 +.messagestream .activitySnapshot {
21 + height: 30px;
22 + margin: 5px 0 0 -50px;
23 + position: absolute;
24 +}
25 +
26 +.messagestream .activitySnapshot img {
27 + border-radius: 10px 10px 0 10px;
28 + box-shadow: -1px 1px 1px rgba(128,128,128,0.6);
29 +}
30 +
31 +/* User's avatar */
32 +.messagestream .activitySnapshot .avatar {
33 + border-radius: 4px;
34 + box-shadow: 0 0 2px 1px rgba(128,128,128,0.6);
35 +}
36 +
37 +.messagestream .activitySnapshot .activityActionAvatar {
38 + background: $theme.pageContentBackgroundColor;
39 + border-color: $theme.pageContentBackgroundColor;
40 + border-style: solid;
41 + border-width: 4px 1px 1px 3px;
42 + box-sizing: content-box;
43 + bottom: -5px;
44 + height: 16px;
45 + position: absolute;
46 + right: -10px;
47 + width: 16px;
48 +}
Parse content
... ... @@ -1,1 +1,1 @@
1 -No
1 +Yes
XWiki.WikiMacroClass[0]
Macro code
... ... @@ -32,7 +32,6 @@
32 32  ##
33 33  ## Skin Extensions
34 34  ##--------------------------------------------------------------
35 -#set ($discard = $xwiki.ssx.use('Main.Activity'))
36 36  #set ($discard = $xwiki.ssx.use('Main.MessageSenderMacro'))
37 37  #set ($discard = $xwiki.jsx.use('Main.MessageSenderMacro'))
38 38  {{/velocity}}
... ... @@ -111,11 +111,11 @@
111 111   #set ($actionQueryString = "xredirect=$escapetool.url($xredirect)")
112 112   {{html}}
113 113   ## Wrap the form in a div so that the layout is preserved in inline mode (where the form is stripped by the rendering).
114 - <div class='messagestream activityUser xform'>
113 + <div class='messagestream xform'>
115 115   #if (!$inEditMode)
116 116   <form action="${xwiki.getURL('Main.MessageSenderMacro', 'view', $!{actionQueryString})}" method='post'>
117 117   #end
118 - <div class='activityContent'>
117 + <div class='message-content'>
119 119   #if(!$inEditMode)
120 120   ## CSRF prevention
121 121   <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />