EBernhardson has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/169597

Change subject: K2: Timestamps
......................................................................

K2: Timestamps

Change-Id: I6080979e3f64a7dca7b3c88d8e8c6973a845282b
---
M Resources.php
M handlebars/compiled/flow_block_header_edit.handlebars.php
M handlebars/compiled/flow_block_topic_lock.handlebars.php
M handlebars/compiled/flow_block_topic_moderate_post.handlebars.php
M handlebars/compiled/flow_block_topic_moderate_topic.handlebars.php
M handlebars/compiled/flow_block_topiclist_newtopic.handlebars.php
M handlebars/compiled/flow_block_topicsummary_edit.handlebars.php
M handlebars/compiled/flow_form_buttons.handlebars.php
M handlebars/compiled/flow_post.handlebars.php
M handlebars/compiled/timestamp.handlebars.php
M handlebars/flow_post_meta_actions.handlebars
M handlebars/timestamp.handlebars
M i18n/en.json
M i18n/qqq.json
M includes/Formatter/RevisionFormatter.php
M modules/styles/board/timestamps.less
16 files changed, 261 insertions(+), 193 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Flow 
refs/changes/97/169597/1

diff --git a/Resources.php b/Resources.php
index bd767ec..c6d6331 100644
--- a/Resources.php
+++ b/Resources.php
@@ -284,6 +284,7 @@
                        'ext.mantle.handlebars',
                        // the timestamp helper uses the timestamp template
                        'ext.flow.templating',
+                       'moment',
                ),
        ) + $mobile,
        'ext.flow' => $flowResourceTemplate + array(
diff --git a/handlebars/compiled/flow_block_header_edit.handlebars.php 
b/handlebars/compiled/flow_block_header_edit.handlebars.php
index 575eef7..36cf521 100644
--- a/handlebars/compiled/flow_block_header_edit.handlebars.php
+++ b/handlebars/compiled/flow_block_header_edit.handlebars.php
@@ -46,20 +46,18 @@
                                        class="mw-ui-button mw-ui-constructive"
                                        
data-flow-interactive-handler="apiRequest"
                                        
data-flow-api-handler="submitHeader">'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-edit-header-submit'),Array()), 'encq').'</button>
-                               '.'
-       <button data-flow-api-handler="preview"
-               data-flow-api-target="< form textarea"
-               name="preview"
-               data-role="action"
-               class="mw-ui-button mw-ui-progressive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+                               <button data-flow-api-handler="preview"
+        data-flow-api-target="< form textarea"
+        name="preview"
+        data-role="action"
+        class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
 
-       <button data-flow-interactive-handler="cancelForm"
-               data-role="cancel"
-               type="reset"
-               class="mw-ui-button mw-ui-destructive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
-'.'
+<button data-flow-interactive-handler="cancelForm"
+        data-role="cancel"
+        type="reset"
+        class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
 
                                <small class="flow-terms-of-use 
plainlinks">'.LCRun3::ch($cx, 'l10nParse', 
Array(Array('flow-terms-of-use-edit'),Array()), 'encq').'</small>
                        </div>
diff --git a/handlebars/compiled/flow_block_topic_lock.handlebars.php 
b/handlebars/compiled/flow_block_topic_lock.handlebars.php
index bb58920..c721025 100644
--- a/handlebars/compiled/flow_block_topic_lock.handlebars.php
+++ b/handlebars/compiled/flow_block_topic_lock.handlebars.php
@@ -56,20 +56,18 @@
                                                '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-topic-action-lock-topic'),Array()), 'encq').'
                                        ').'
                                </button>
-                               '.'
-       <button data-flow-api-handler="preview"
-               data-flow-api-target="< form textarea"
-               name="preview"
-               data-role="action"
-               class="mw-ui-button mw-ui-progressive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+                               <button data-flow-api-handler="preview"
+        data-flow-api-target="< form textarea"
+        name="preview"
+        data-role="action"
+        class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
 
-       <button data-flow-interactive-handler="cancelForm"
-               data-role="cancel"
-               type="reset"
-               class="mw-ui-button mw-ui-destructive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
-'.'
+<button data-flow-interactive-handler="cancelForm"
+        data-role="cancel"
+        type="reset"
+        class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
 
                                <small class="flow-terms-of-use plainlinks">
                                        '.((LCRun3::ifvar($cx, ((is_array($in) 
&& isset($in['isModerated'])) ? $in['isModerated'] : null))) ? '
@@ -86,4 +84,4 @@
 
 ';
 }
-?>
+?>
\ No newline at end of file
diff --git a/handlebars/compiled/flow_block_topic_moderate_post.handlebars.php 
b/handlebars/compiled/flow_block_topic_moderate_post.handlebars.php
index 8d86061..f75a47d 100644
--- a/handlebars/compiled/flow_block_topic_moderate_post.handlebars.php
+++ b/handlebars/compiled/flow_block_topic_moderate_post.handlebars.php
@@ -9,13 +9,11 @@
             'mustlok' => false,
             'debug' => $debugopt,
         ),
-        'helpers' => Array(            'l10n' => 'Flow\TemplateHelper::l10n',
-            'uuidTimestamp' => 'Flow\TemplateHelper::uuidTimestamp',
+        'helpers' => Array(            'uuidTimestamp' => 
'Flow\TemplateHelper::uuidTimestamp',
             'html' => 'Flow\TemplateHelper::htmlHelper',
             'post' => 'Flow\TemplateHelper::post',
             'l10nParse' => 'Flow\TemplateHelper::l10nParse',
             'moderationAction' => 'Flow\TemplateHelper::moderationAction',
-            'concat' => 'Flow\TemplateHelper::concat',
             'linkWithReturnTo' => 'Flow\TemplateHelper::linkWithReturnTo',
             'escapeContent' => 'Flow\TemplateHelper::escapeContent',
 ),
@@ -53,17 +51,17 @@
                  data-flow-expandable="true"
                  class="mw-ui-input"
                  data-role="content"
-                 placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-moderation-placeholder-',((is_array($cx['scopes'][0]['submitted'])
 && isset($cx['scopes'][0]['submitted']['moderationState'])) ? 
$cx['scopes'][0]['submitted']['moderationState'] : null),'-post'),Array()), 
'raw')),Array()), 'encq').'"
+                 placeholder="'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'"
                  autofocus>'.((LCRun3::ifvar($cx, 
((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['reason'])) ? 
$cx['scopes'][0]['submitted']['reason'] : null))) ? 
''.htmlentities(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['reason'])) ? 
$cx['scopes'][0]['submitted']['reason'] : null), ENT_QUOTES, 'UTF-8').'' : 
'').'</textarea>
        <div class="flow-form-actions flow-form-collapsible">
                <button data-flow-interactive-handler="apiRequest"
                        data-flow-api-handler="moderatePost"
                        class="mw-ui-button mw-ui-constructive"
-                       data-role="submit">'.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-moderation-confirm-',((is_array($cx['scopes'][0]['submitted'])
 && isset($cx['scopes'][0]['submitted']['moderationState'])) ? 
$cx['scopes'][0]['submitted']['moderationState'] : null),'-post'),Array()), 
'raw')),Array()), 'encq').'</button>
+                       data-role="submit">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</button>
                <a data-flow-interactive-handler="cancelForm"
                   class="mw-ui-button mw-ui-destructive mw-ui-quiet"
                   href="'.htmlentities(((is_array($in['links']['topic']) && 
isset($in['links']['topic']['url'])) ? $in['links']['topic']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                  title="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-cancel'),Array()), 'encq').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-cancel'),Array()), 'encq').'</a>
+                  title="'.htmlentities(((is_array($in) && isset($in['l10n'])) 
? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) 
&& isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
        </div>
 </form>
 
@@ -118,19 +116,19 @@
 
        <div class="flow-form-actions flow-form-collapsible">
                <button class="mw-ui-button mw-ui-constructive"
-                       
data-flow-api-handler="submitEditPost">'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post-submit'),Array()), 'encq').'</button>
+                       
data-flow-api-handler="submitEditPost">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</button>
                <button data-flow-api-handler="preview"
         data-flow-api-target="< form textarea"
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                <small class="flow-terms-of-use plainlinks">'.LCRun3::ch($cx, 
'l10nParse', Array(Array('flow-terms-of-use-edit'),Array()), 'encq').'</small>
        </div>
@@ -168,22 +166,22 @@
                           '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['name'])) ? $in['name'] : null))) ? 
'title="'.htmlentities(((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['title'])) ? $in['links']['userpage']['title'] : 
null), ENT_QUOTES, 'UTF-8').'"' : '').'
                           class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['exists'])) ? $in['links']['userpage']['exists'] 
: null))) ? 'new ' : '').'mw-userlink">
                ' : '').'
-               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-anonymous'),Array()), 'encq').'
+               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
                ').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['userpage'])) ? $in['links']['userpage'] : null))) ? '</a>' 
: '').'<span class="mw-usertoollinks flow-pipelist">'.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['talk'])) ? $in['links']['talk'] 
: null))) ? '<span><a href="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['url'])) ? $in['links']['talk']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                    class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['talk']) && isset($in['links']['talk']['exists'])) ? 
$in['links']['talk']['exists'] : null))) ? 'new ' : '').'"
-                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('talkpagelinktext'),Array()), 'encq').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
-                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('contribslink'),Array()), 'encq').'</a>
+                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
+                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
                                </span>' : '').''.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['block'])) ? 
$in['links']['block'] : null))) ? '<span><a class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['block']) && isset($in['links']['block']['exists'])) ? 
$in['links']['block']['exists'] : null))) ? 'new ' : '').'"
                                   
href="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['url'])) ? $in['links']['block']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('blocklink'),Array()), 'encq').'</a></span>' : '').'</span>
+                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').'</span>
        ' : '').'
 </span>
 
        ';}).'
 
        '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['isModerated'])) ? 
$in['isModerated'] : null))) ? '
-               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.LCRun3::ch($cx, 'l10n', Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-',((is_array($in) && isset($in['moderateState'])) ? 
$in['moderateState'] : null),'-post-content'),Array()), 
'raw'),((is_array($in['moderator']) && isset($in['moderator']['name'])) ? 
$in['moderator']['name'] : null)),Array()), 'encq').'
-                       ' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', Array(Array('flow-',((is_array($in) && 
isset($in['moderateState'])) ? $in['moderateState'] : 
null),'-title-content'),Array()), 'raw'),((is_array($in['moderator']) && 
isset($in['moderator']['name'])) ? $in['moderator']['name'] : null)),Array()), 
'encq').'
+               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
+                       ' : ''.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        ').'</div>
        ' : '').'
 
@@ -208,7 +206,7 @@
                           data-flow-api-target="< .flow-post-main"
                           data-flow-interactive-handler="apiRequest"
                           class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">
-                               '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post'),Array()), 'encq').'
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        </a>
                ' : '').'
                '.((LCRun3::ifvar($cx, ((is_array($in['actions']) && 
isset($in['actions']['thank'])) ? $in['actions']['thank'] : null))) ? '
@@ -230,7 +228,17 @@
                ' : '').'
                &#8226;
        ' : '').'
-       '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+
+       <span class="flow-post-timestamp">
+               '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOriginalContent'])) ? $in['isOriginalContent'] : null))) ? '
+                       '.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($in['lastEditUser']) && 
isset($in['lastEditUser']['name'])) ? $in['lastEditUser']['name'] : 
null),'!==',((is_array($in['author']) && isset($in['author']['name'])) ? 
$in['author']['name'] : null)),Array()), $in, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}).'
+               ' : '').'
+               '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) 
&& isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+       </span>
 </div>
 
                <div class="flow-menu">
@@ -242,7 +250,7 @@
                                   
href="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['url'])) ? $in['links']['post']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                   
title="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['title'])) ? $in['links']['post']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">
                                        <span class="wikiglyph 
wikiglyph-link"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-view'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -255,7 +263,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="hide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-hide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -268,7 +276,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unhide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unhide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -281,7 +289,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="delete">
                                        <span class="wikiglyph 
wikiglyph-trash"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-delete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -294,7 +302,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="undelete">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-undelete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -307,7 +315,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="suppress">
                                        <span class="wikiglyph 
wikiglyph-block"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-suppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -320,7 +328,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unsuppress">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unsuppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -363,22 +371,22 @@
                           '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['name'])) ? $in['name'] : null))) ? 
'title="'.htmlentities(((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['title'])) ? $in['links']['userpage']['title'] : 
null), ENT_QUOTES, 'UTF-8').'"' : '').'
                           class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['exists'])) ? $in['links']['userpage']['exists'] 
: null))) ? 'new ' : '').'mw-userlink">
                ' : '').'
-               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-anonymous'),Array()), 'encq').'
+               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
                ').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['userpage'])) ? $in['links']['userpage'] : null))) ? '</a>' 
: '').'<span class="mw-usertoollinks flow-pipelist">'.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['talk'])) ? $in['links']['talk'] 
: null))) ? '<span><a href="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['url'])) ? $in['links']['talk']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                    class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['talk']) && isset($in['links']['talk']['exists'])) ? 
$in['links']['talk']['exists'] : null))) ? 'new ' : '').'"
-                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('talkpagelinktext'),Array()), 'encq').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
-                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('contribslink'),Array()), 'encq').'</a>
+                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
+                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
                                </span>' : '').''.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['block'])) ? 
$in['links']['block'] : null))) ? '<span><a class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['block']) && isset($in['links']['block']['exists'])) ? 
$in['links']['block']['exists'] : null))) ? 'new ' : '').'"
                                   
href="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['url'])) ? $in['links']['block']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('blocklink'),Array()), 'encq').'</a></span>' : '').'</span>
+                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').'</span>
        ' : '').'
 </span>
 
        ';}).'
 
        '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['isModerated'])) ? 
$in['isModerated'] : null))) ? '
-               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.LCRun3::ch($cx, 'l10n', Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-',((is_array($in) && isset($in['moderateState'])) ? 
$in['moderateState'] : null),'-post-content'),Array()), 
'raw'),((is_array($in['moderator']) && isset($in['moderator']['name'])) ? 
$in['moderator']['name'] : null)),Array()), 'encq').'
-                       ' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', Array(Array('flow-',((is_array($in) && 
isset($in['moderateState'])) ? $in['moderateState'] : 
null),'-title-content'),Array()), 'raw'),((is_array($in['moderator']) && 
isset($in['moderator']['name'])) ? $in['moderator']['name'] : null)),Array()), 
'encq').'
+               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
+                       ' : ''.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        ').'</div>
        ' : '').'
 
@@ -403,7 +411,7 @@
                           data-flow-api-target="< .flow-post-main"
                           data-flow-interactive-handler="apiRequest"
                           class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">
-                               '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post'),Array()), 'encq').'
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        </a>
                ' : '').'
                '.((LCRun3::ifvar($cx, ((is_array($in['actions']) && 
isset($in['actions']['thank'])) ? $in['actions']['thank'] : null))) ? '
@@ -425,7 +433,17 @@
                ' : '').'
                &#8226;
        ' : '').'
-       '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+
+       <span class="flow-post-timestamp">
+               '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOriginalContent'])) ? $in['isOriginalContent'] : null))) ? '
+                       '.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($in['lastEditUser']) && 
isset($in['lastEditUser']['name'])) ? $in['lastEditUser']['name'] : 
null),'!==',((is_array($in['author']) && isset($in['author']['name'])) ? 
$in['author']['name'] : null)),Array()), $in, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}).'
+               ' : '').'
+               '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) 
&& isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+       </span>
 </div>
 
                <div class="flow-menu">
@@ -437,7 +455,7 @@
                                   
href="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['url'])) ? $in['links']['post']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                   
title="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['title'])) ? $in['links']['post']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">
                                        <span class="wikiglyph 
wikiglyph-link"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-view'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -450,7 +468,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="hide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-hide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -463,7 +481,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unhide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unhide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -476,7 +494,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="delete">
                                        <span class="wikiglyph 
wikiglyph-trash"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-delete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -489,7 +507,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="undelete">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-undelete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -502,7 +520,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="suppress">
                                        <span class="wikiglyph 
wikiglyph-block"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-suppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -515,7 +533,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unsuppress">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unsuppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -585,7 +603,7 @@
                                data-flow-expandable="true"
                                class="mw-ui-input"
                                type="text"
-                               placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-reply-topic-title-placeholder',((is_array($in['properties']) 
&& isset($in['properties']['topic-of-post'])) ? 
$in['properties']['topic-of-post'] : null)),Array()), 'encq').'"
+                               placeholder="'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'"
                                data-role="content">'.((LCRun3::ifvar($cx, 
((is_array($cx['scopes'][0]) && isset($cx['scopes'][0]['submitted'])) ? 
$cx['scopes'][0]['submitted'] : null))) ? ''.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['postId'])) ? 
$cx['scopes'][0]['submitted']['postId'] : null),'===',((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), $in, function($cx, 
$in) {return ''.htmlentities(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['content'])) ? 
$cx['scopes'][0]['submitted']['content'] : null), ENT_QUOTES, 'UTF-8').'';}).'' 
: '').'</textarea>
 
                <div class="flow-form-actions flow-form-collapsible">
@@ -599,13 +617,13 @@
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                        <small class="flow-terms-of-use 
plainlinks">'.LCRun3::ch($cx, 'l10nParse', 
Array(Array('flow-terms-of-use-reply'),Array()), 'encq').'</small>
                </div>
diff --git a/handlebars/compiled/flow_block_topic_moderate_topic.handlebars.php 
b/handlebars/compiled/flow_block_topic_moderate_topic.handlebars.php
index d510a10..21705c9 100644
--- a/handlebars/compiled/flow_block_topic_moderate_topic.handlebars.php
+++ b/handlebars/compiled/flow_block_topic_moderate_topic.handlebars.php
@@ -9,13 +9,11 @@
             'mustlok' => false,
             'debug' => $debugopt,
         ),
-        'helpers' => Array(            'l10n' => 'Flow\TemplateHelper::l10n',
-            'uuidTimestamp' => 'Flow\TemplateHelper::uuidTimestamp',
+        'helpers' => Array(            'uuidTimestamp' => 
'Flow\TemplateHelper::uuidTimestamp',
             'html' => 'Flow\TemplateHelper::htmlHelper',
             'post' => 'Flow\TemplateHelper::post',
             'l10nParse' => 'Flow\TemplateHelper::l10nParse',
             'moderationAction' => 'Flow\TemplateHelper::moderationAction',
-            'concat' => 'Flow\TemplateHelper::concat',
             'linkWithReturnTo' => 'Flow\TemplateHelper::linkWithReturnTo',
             'escapeContent' => 'Flow\TemplateHelper::escapeContent',
 ),
@@ -53,17 +51,17 @@
                  data-flow-expandable="true"
                  class="mw-ui-input"
                  data-role="content"
-                 placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-moderation-placeholder-',((is_array($cx['scopes'][0]['submitted'])
 && isset($cx['scopes'][0]['submitted']['moderationState'])) ? 
$cx['scopes'][0]['submitted']['moderationState'] : null),'-topic'),Array()), 
'raw')),Array()), 'encq').'"
+                 placeholder="'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'"
                  autofocus>'.((LCRun3::ifvar($cx, 
((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['reason'])) ? 
$cx['scopes'][0]['submitted']['reason'] : null))) ? 
''.htmlentities(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['reason'])) ? 
$cx['scopes'][0]['submitted']['reason'] : null), ENT_QUOTES, 'UTF-8').'' : 
'').'</textarea>
        <div class="flow-form-actions flow-form-collapsible">
                <button class="mw-ui-button mw-ui-constructive"
                        data-flow-interactive-handler="apiRequest"
                        data-flow-api-handler="moderateTopic"
-                       data-role="submit">'.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-moderation-confirm-',((is_array($cx['scopes'][0]['submitted'])
 && isset($cx['scopes'][0]['submitted']['moderationState'])) ? 
$cx['scopes'][0]['submitted']['moderationState'] : null),'-topic'),Array()), 
'raw')),Array()), 'encq').'</button>
+                       data-role="submit">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</button>
                <a class="mw-ui-button mw-ui-quiet mw-ui-destructive"
                   href="'.htmlentities(((is_array($in['links']['topic']) && 
isset($in['links']['topic']['url'])) ? $in['links']['topic']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                  title="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-cancel'),Array()), 'encq').'"
-                  data-flow-interactive-handler="cancelForm">'.LCRun3::ch($cx, 
'l10n', Array(Array('flow-cancel'),Array()), 'encq').'</a>
+                  title="'.htmlentities(((is_array($in) && isset($in['l10n'])) 
? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'"
+                  
data-flow-interactive-handler="cancelForm">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
        </div>
 </form>
 
@@ -118,19 +116,19 @@
 
        <div class="flow-form-actions flow-form-collapsible">
                <button class="mw-ui-button mw-ui-constructive"
-                       
data-flow-api-handler="submitEditPost">'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post-submit'),Array()), 'encq').'</button>
+                       
data-flow-api-handler="submitEditPost">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</button>
                <button data-flow-api-handler="preview"
         data-flow-api-target="< form textarea"
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                <small class="flow-terms-of-use plainlinks">'.LCRun3::ch($cx, 
'l10nParse', Array(Array('flow-terms-of-use-edit'),Array()), 'encq').'</small>
        </div>
@@ -168,22 +166,22 @@
                           '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['name'])) ? $in['name'] : null))) ? 
'title="'.htmlentities(((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['title'])) ? $in['links']['userpage']['title'] : 
null), ENT_QUOTES, 'UTF-8').'"' : '').'
                           class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['exists'])) ? $in['links']['userpage']['exists'] 
: null))) ? 'new ' : '').'mw-userlink">
                ' : '').'
-               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-anonymous'),Array()), 'encq').'
+               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
                ').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['userpage'])) ? $in['links']['userpage'] : null))) ? '</a>' 
: '').'<span class="mw-usertoollinks flow-pipelist">'.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['talk'])) ? $in['links']['talk'] 
: null))) ? '<span><a href="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['url'])) ? $in['links']['talk']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                    class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['talk']) && isset($in['links']['talk']['exists'])) ? 
$in['links']['talk']['exists'] : null))) ? 'new ' : '').'"
-                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('talkpagelinktext'),Array()), 'encq').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
-                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('contribslink'),Array()), 'encq').'</a>
+                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
+                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
                                </span>' : '').''.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['block'])) ? 
$in['links']['block'] : null))) ? '<span><a class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['block']) && isset($in['links']['block']['exists'])) ? 
$in['links']['block']['exists'] : null))) ? 'new ' : '').'"
                                   
href="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['url'])) ? $in['links']['block']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('blocklink'),Array()), 'encq').'</a></span>' : '').'</span>
+                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').'</span>
        ' : '').'
 </span>
 
        ';}).'
 
        '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['isModerated'])) ? 
$in['isModerated'] : null))) ? '
-               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.LCRun3::ch($cx, 'l10n', Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-',((is_array($in) && isset($in['moderateState'])) ? 
$in['moderateState'] : null),'-post-content'),Array()), 
'raw'),((is_array($in['moderator']) && isset($in['moderator']['name'])) ? 
$in['moderator']['name'] : null)),Array()), 'encq').'
-                       ' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', Array(Array('flow-',((is_array($in) && 
isset($in['moderateState'])) ? $in['moderateState'] : 
null),'-title-content'),Array()), 'raw'),((is_array($in['moderator']) && 
isset($in['moderator']['name'])) ? $in['moderator']['name'] : null)),Array()), 
'encq').'
+               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
+                       ' : ''.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        ').'</div>
        ' : '').'
 
@@ -208,7 +206,7 @@
                           data-flow-api-target="< .flow-post-main"
                           data-flow-interactive-handler="apiRequest"
                           class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">
-                               '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post'),Array()), 'encq').'
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        </a>
                ' : '').'
                '.((LCRun3::ifvar($cx, ((is_array($in['actions']) && 
isset($in['actions']['thank'])) ? $in['actions']['thank'] : null))) ? '
@@ -230,7 +228,17 @@
                ' : '').'
                &#8226;
        ' : '').'
-       '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+
+       <span class="flow-post-timestamp">
+               '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOriginalContent'])) ? $in['isOriginalContent'] : null))) ? '
+                       '.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($in['lastEditUser']) && 
isset($in['lastEditUser']['name'])) ? $in['lastEditUser']['name'] : 
null),'!==',((is_array($in['author']) && isset($in['author']['name'])) ? 
$in['author']['name'] : null)),Array()), $in, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}).'
+               ' : '').'
+               '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) 
&& isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+       </span>
 </div>
 
                <div class="flow-menu">
@@ -242,7 +250,7 @@
                                   
href="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['url'])) ? $in['links']['post']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                   
title="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['title'])) ? $in['links']['post']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">
                                        <span class="wikiglyph 
wikiglyph-link"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-view'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -255,7 +263,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="hide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-hide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -268,7 +276,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unhide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unhide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -281,7 +289,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="delete">
                                        <span class="wikiglyph 
wikiglyph-trash"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-delete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -294,7 +302,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="undelete">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-undelete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -307,7 +315,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="suppress">
                                        <span class="wikiglyph 
wikiglyph-block"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-suppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -320,7 +328,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unsuppress">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unsuppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -363,22 +371,22 @@
                           '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['name'])) ? $in['name'] : null))) ? 
'title="'.htmlentities(((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['title'])) ? $in['links']['userpage']['title'] : 
null), ENT_QUOTES, 'UTF-8').'"' : '').'
                           class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['exists'])) ? $in['links']['userpage']['exists'] 
: null))) ? 'new ' : '').'mw-userlink">
                ' : '').'
-               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-anonymous'),Array()), 'encq').'
+               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
                ').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['userpage'])) ? $in['links']['userpage'] : null))) ? '</a>' 
: '').'<span class="mw-usertoollinks flow-pipelist">'.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['talk'])) ? $in['links']['talk'] 
: null))) ? '<span><a href="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['url'])) ? $in['links']['talk']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                    class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['talk']) && isset($in['links']['talk']['exists'])) ? 
$in['links']['talk']['exists'] : null))) ? 'new ' : '').'"
-                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('talkpagelinktext'),Array()), 'encq').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
-                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('contribslink'),Array()), 'encq').'</a>
+                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
+                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
                                </span>' : '').''.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['block'])) ? 
$in['links']['block'] : null))) ? '<span><a class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['block']) && isset($in['links']['block']['exists'])) ? 
$in['links']['block']['exists'] : null))) ? 'new ' : '').'"
                                   
href="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['url'])) ? $in['links']['block']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('blocklink'),Array()), 'encq').'</a></span>' : '').'</span>
+                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').'</span>
        ' : '').'
 </span>
 
        ';}).'
 
        '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['isModerated'])) ? 
$in['isModerated'] : null))) ? '
-               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.LCRun3::ch($cx, 'l10n', Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-',((is_array($in) && isset($in['moderateState'])) ? 
$in['moderateState'] : null),'-post-content'),Array()), 
'raw'),((is_array($in['moderator']) && isset($in['moderator']['name'])) ? 
$in['moderator']['name'] : null)),Array()), 'encq').'
-                       ' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', Array(Array('flow-',((is_array($in) && 
isset($in['moderateState'])) ? $in['moderateState'] : 
null),'-title-content'),Array()), 'raw'),((is_array($in['moderator']) && 
isset($in['moderator']['name'])) ? $in['moderator']['name'] : null)),Array()), 
'encq').'
+               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
+                       ' : ''.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        ').'</div>
        ' : '').'
 
@@ -403,7 +411,7 @@
                           data-flow-api-target="< .flow-post-main"
                           data-flow-interactive-handler="apiRequest"
                           class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">
-                               '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post'),Array()), 'encq').'
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        </a>
                ' : '').'
                '.((LCRun3::ifvar($cx, ((is_array($in['actions']) && 
isset($in['actions']['thank'])) ? $in['actions']['thank'] : null))) ? '
@@ -425,7 +433,17 @@
                ' : '').'
                &#8226;
        ' : '').'
-       '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+
+       <span class="flow-post-timestamp">
+               '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOriginalContent'])) ? $in['isOriginalContent'] : null))) ? '
+                       '.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($in['lastEditUser']) && 
isset($in['lastEditUser']['name'])) ? $in['lastEditUser']['name'] : 
null),'!==',((is_array($in['author']) && isset($in['author']['name'])) ? 
$in['author']['name'] : null)),Array()), $in, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}).'
+               ' : '').'
+               '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) 
&& isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+       </span>
 </div>
 
                <div class="flow-menu">
@@ -437,7 +455,7 @@
                                   
href="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['url'])) ? $in['links']['post']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                   
title="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['title'])) ? $in['links']['post']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">
                                        <span class="wikiglyph 
wikiglyph-link"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-view'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -450,7 +468,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="hide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-hide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -463,7 +481,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unhide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unhide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -476,7 +494,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="delete">
                                        <span class="wikiglyph 
wikiglyph-trash"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-delete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -489,7 +507,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="undelete">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-undelete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -502,7 +520,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="suppress">
                                        <span class="wikiglyph 
wikiglyph-block"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-suppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -515,7 +533,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unsuppress">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unsuppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -585,7 +603,7 @@
                                data-flow-expandable="true"
                                class="mw-ui-input"
                                type="text"
-                               placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-reply-topic-title-placeholder',((is_array($in['properties']) 
&& isset($in['properties']['topic-of-post'])) ? 
$in['properties']['topic-of-post'] : null)),Array()), 'encq').'"
+                               placeholder="'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'"
                                data-role="content">'.((LCRun3::ifvar($cx, 
((is_array($cx['scopes'][0]) && isset($cx['scopes'][0]['submitted'])) ? 
$cx['scopes'][0]['submitted'] : null))) ? ''.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['postId'])) ? 
$cx['scopes'][0]['submitted']['postId'] : null),'===',((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), $in, function($cx, 
$in) {return ''.htmlentities(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['content'])) ? 
$cx['scopes'][0]['submitted']['content'] : null), ENT_QUOTES, 'UTF-8').'';}).'' 
: '').'</textarea>
 
                <div class="flow-form-actions flow-form-collapsible">
@@ -599,13 +617,13 @@
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                        <small class="flow-terms-of-use 
plainlinks">'.LCRun3::ch($cx, 'l10nParse', 
Array(Array('flow-terms-of-use-reply'),Array()), 'encq').'</small>
                </div>
diff --git a/handlebars/compiled/flow_block_topiclist_newtopic.handlebars.php 
b/handlebars/compiled/flow_block_topiclist_newtopic.handlebars.php
index 9730b30..fec8cee 100644
--- a/handlebars/compiled/flow_block_topiclist_newtopic.handlebars.php
+++ b/handlebars/compiled/flow_block_topiclist_newtopic.handlebars.php
@@ -9,8 +9,7 @@
             'mustlok' => false,
             'debug' => $debugopt,
         ),
-        'helpers' => Array(            'l10n' => 'Flow\TemplateHelper::l10n',
-            'html' => 'Flow\TemplateHelper::htmlHelper',
+        'helpers' => Array(            'html' => 
'Flow\TemplateHelper::htmlHelper',
             'l10nParse' => 'Flow\TemplateHelper::l10nParse',
             'linkWithReturnTo' => 'Flow\TemplateHelper::linkWithReturnTo',
 ),
@@ -61,30 +60,30 @@
                <input type="hidden" name="topiclist_replyTo" 
value="'.htmlentities(((is_array($in) && isset($in['workflowId'])) ? 
$in['workflowId'] : null), ENT_QUOTES, 'UTF-8').'" />
                <input name="topiclist_topic" class="mw-ui-input 
mw-ui-input-large"
                        required
-                       type="text" placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-newtopic-start-placeholder'),Array()), 'encq').'" 
data-role="title"/>
+                       type="text" placeholder="'.htmlentities(((is_array($in) 
&& isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'" 
data-role="title"/>
                <textarea name="topiclist_content"
                        data-flow-preview-template="flow_topic"
                        class="mw-ui-input flow-form-collapsible 
mw-ui-input-large"
                        '.((LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOnFlowBoard'])) ? $in['isOnFlowBoard'] : null))) ? 
'style="display:none;"' : '').'
-                       placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-newtopic-content-placeholder',((is_array($cx['scopes'][0]) && 
isset($cx['scopes'][0]['title'])) ? $cx['scopes'][0]['title'] : 
null)),Array()), 'encq').'" data-role="content" required></textarea>
+                       placeholder="'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'" 
data-role="content" required></textarea>
 
                <div class="flow-form-actions flow-form-collapsible"
                        '.((LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOnFlowBoard'])) ? $in['isOnFlowBoard'] : null))) ? 
'style="display:none;"' : '').'>
                        <button data-role="submit" 
data-flow-api-handler="newTopic"
                                data-flow-interactive-handler="apiRequest"
-                               class="mw-ui-button mw-ui-constructive 
mw-ui-flush-right">'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-newtopic-save'),Array()), 'encq').'</button>
+                               class="mw-ui-button mw-ui-constructive 
mw-ui-flush-right">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</button>
                        <button data-flow-api-handler="preview"
         data-flow-api-target="< form textarea"
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                        <small class="flow-terms-of-use 
plainlinks">'.LCRun3::ch($cx, 'l10nParse', 
Array(Array('flow-terms-of-use-new-topic'),Array()), 'encq').'</small>
                </div>
diff --git a/handlebars/compiled/flow_block_topicsummary_edit.handlebars.php 
b/handlebars/compiled/flow_block_topicsummary_edit.handlebars.php
index 06e8ae8..fa74f28 100644
--- a/handlebars/compiled/flow_block_topicsummary_edit.handlebars.php
+++ b/handlebars/compiled/flow_block_topicsummary_edit.handlebars.php
@@ -56,20 +56,18 @@
                                        data-flow-api-target="< 
.flow-topic-summary-container">
                                                '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-topic-action-summarize-topic'),Array()), 'encq').'
                                </button>
-                               '.'
-       <button data-flow-api-handler="preview"
-               data-flow-api-target="< form textarea"
-               name="preview"
-               data-role="action"
-               class="mw-ui-button mw-ui-progressive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+                               <button data-flow-api-handler="preview"
+        data-flow-api-target="< form textarea"
+        name="preview"
+        data-role="action"
+        class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
 
-       <button data-flow-interactive-handler="cancelForm"
-               data-role="cancel"
-               type="reset"
-               class="mw-ui-button mw-ui-destructive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
-'.'
+<button data-flow-interactive-handler="cancelForm"
+        data-role="cancel"
+        type="reset"
+        class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
 
                                <small class="flow-terms-of-use 
plainlinks">'.LCRun3::ch($cx, 'l10nParse', 
Array(Array('flow-terms-of-use-summarize'),Array()), 'encq').'</small>
                        </div>
diff --git a/handlebars/compiled/flow_form_buttons.handlebars.php 
b/handlebars/compiled/flow_form_buttons.handlebars.php
index 167970d..c11c372 100644
--- a/handlebars/compiled/flow_form_buttons.handlebars.php
+++ b/handlebars/compiled/flow_form_buttons.handlebars.php
@@ -17,20 +17,18 @@
         'sp_vars' => Array(),
 
     );
-    return ''.'
-       <button data-flow-api-handler="preview"
-               data-flow-api-target="< form textarea"
-               name="preview"
-               data-role="action"
-               class="mw-ui-button mw-ui-progressive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+    return '<button data-flow-api-handler="preview"
+        data-flow-api-target="< form textarea"
+        name="preview"
+        data-role="action"
+        class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
 
-       <button data-flow-interactive-handler="cancelForm"
-               data-role="cancel"
-               type="reset"
-               class="mw-ui-button mw-ui-destructive mw-ui-quiet 
mw-ui-flush-right flow-js"
-       >'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
-'.'
+<button data-flow-interactive-handler="cancelForm"
+        data-role="cancel"
+        type="reset"
+        class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
+>'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
 ';
 }
 ?>
\ No newline at end of file
diff --git a/handlebars/compiled/flow_post.handlebars.php 
b/handlebars/compiled/flow_post.handlebars.php
index 026f7d0..5de140b 100644
--- a/handlebars/compiled/flow_post.handlebars.php
+++ b/handlebars/compiled/flow_post.handlebars.php
@@ -9,12 +9,10 @@
             'mustlok' => false,
             'debug' => $debugopt,
         ),
-        'helpers' => Array(            'l10n' => 'Flow\TemplateHelper::l10n',
-            'uuidTimestamp' => 'Flow\TemplateHelper::uuidTimestamp',
+        'helpers' => Array(            'uuidTimestamp' => 
'Flow\TemplateHelper::uuidTimestamp',
             'html' => 'Flow\TemplateHelper::htmlHelper',
             'post' => 'Flow\TemplateHelper::post',
             'l10nParse' => 'Flow\TemplateHelper::l10nParse',
-            'concat' => 'Flow\TemplateHelper::concat',
             'linkWithReturnTo' => 'Flow\TemplateHelper::linkWithReturnTo',
             'escapeContent' => 'Flow\TemplateHelper::escapeContent',
 ),
@@ -80,19 +78,19 @@
 
        <div class="flow-form-actions flow-form-collapsible">
                <button class="mw-ui-button mw-ui-constructive"
-                       
data-flow-api-handler="submitEditPost">'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post-submit'),Array()), 'encq').'</button>
+                       
data-flow-api-handler="submitEditPost">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</button>
                <button data-flow-api-handler="preview"
         data-flow-api-target="< form textarea"
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                <small class="flow-terms-of-use plainlinks">'.LCRun3::ch($cx, 
'l10nParse', Array(Array('flow-terms-of-use-edit'),Array()), 'encq').'</small>
        </div>
@@ -130,22 +128,22 @@
                           '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['name'])) ? $in['name'] : null))) ? 
'title="'.htmlentities(((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['title'])) ? $in['links']['userpage']['title'] : 
null), ENT_QUOTES, 'UTF-8').'"' : '').'
                           class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['exists'])) ? $in['links']['userpage']['exists'] 
: null))) ? 'new ' : '').'mw-userlink">
                ' : '').'
-               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-anonymous'),Array()), 'encq').'
+               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
                ').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['userpage'])) ? $in['links']['userpage'] : null))) ? '</a>' 
: '').'<span class="mw-usertoollinks flow-pipelist">'.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['talk'])) ? $in['links']['talk'] 
: null))) ? '<span><a href="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['url'])) ? $in['links']['talk']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                    class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['talk']) && isset($in['links']['talk']['exists'])) ? 
$in['links']['talk']['exists'] : null))) ? 'new ' : '').'"
-                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('talkpagelinktext'),Array()), 'encq').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
-                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('contribslink'),Array()), 'encq').'</a>
+                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
+                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
                                </span>' : '').''.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['block'])) ? 
$in['links']['block'] : null))) ? '<span><a class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['block']) && isset($in['links']['block']['exists'])) ? 
$in['links']['block']['exists'] : null))) ? 'new ' : '').'"
                                   
href="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['url'])) ? $in['links']['block']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('blocklink'),Array()), 'encq').'</a></span>' : '').'</span>
+                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').'</span>
        ' : '').'
 </span>
 
        ';}).'
 
        '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['isModerated'])) ? 
$in['isModerated'] : null))) ? '
-               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.LCRun3::ch($cx, 'l10n', Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-',((is_array($in) && isset($in['moderateState'])) ? 
$in['moderateState'] : null),'-post-content'),Array()), 
'raw'),((is_array($in['moderator']) && isset($in['moderator']['name'])) ? 
$in['moderator']['name'] : null)),Array()), 'encq').'
-                       ' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', Array(Array('flow-',((is_array($in) && 
isset($in['moderateState'])) ? $in['moderateState'] : 
null),'-title-content'),Array()), 'raw'),((is_array($in['moderator']) && 
isset($in['moderator']['name'])) ? $in['moderator']['name'] : null)),Array()), 
'encq').'
+               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
+                       ' : ''.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        ').'</div>
        ' : '').'
 
@@ -170,7 +168,7 @@
                           data-flow-api-target="< .flow-post-main"
                           data-flow-interactive-handler="apiRequest"
                           class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">
-                               '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post'),Array()), 'encq').'
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        </a>
                ' : '').'
                '.((LCRun3::ifvar($cx, ((is_array($in['actions']) && 
isset($in['actions']['thank'])) ? $in['actions']['thank'] : null))) ? '
@@ -192,7 +190,17 @@
                ' : '').'
                &#8226;
        ' : '').'
-       '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+
+       <span class="flow-post-timestamp">
+               '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOriginalContent'])) ? $in['isOriginalContent'] : null))) ? '
+                       '.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($in['lastEditUser']) && 
isset($in['lastEditUser']['name'])) ? $in['lastEditUser']['name'] : 
null),'!==',((is_array($in['author']) && isset($in['author']['name'])) ? 
$in['author']['name'] : null)),Array()), $in, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}).'
+               ' : '').'
+               '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) 
&& isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+       </span>
 </div>
 
                <div class="flow-menu">
@@ -204,7 +212,7 @@
                                   
href="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['url'])) ? $in['links']['post']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                   
title="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['title'])) ? $in['links']['post']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">
                                        <span class="wikiglyph 
wikiglyph-link"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-view'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -217,7 +225,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="hide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-hide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -230,7 +238,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unhide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unhide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -243,7 +251,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="delete">
                                        <span class="wikiglyph 
wikiglyph-trash"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-delete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -256,7 +264,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="undelete">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-undelete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -269,7 +277,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="suppress">
                                        <span class="wikiglyph 
wikiglyph-block"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-suppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -282,7 +290,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unsuppress">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unsuppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -325,22 +333,22 @@
                           '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['name'])) ? $in['name'] : null))) ? 
'title="'.htmlentities(((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['title'])) ? $in['links']['userpage']['title'] : 
null), ENT_QUOTES, 'UTF-8').'"' : '').'
                           class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['userpage']) && 
isset($in['links']['userpage']['exists'])) ? $in['links']['userpage']['exists'] 
: null))) ? 'new ' : '').'mw-userlink">
                ' : '').'
-               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-anonymous'),Array()), 'encq').'
+               '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['name'])) ? 
$in['name'] : null))) ? ''.htmlentities(((is_array($in) && isset($in['name'])) 
? $in['name'] : null), ENT_QUOTES, 'UTF-8').'' : 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
                ').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['userpage'])) ? $in['links']['userpage'] : null))) ? '</a>' 
: '').'<span class="mw-usertoollinks flow-pipelist">'.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['talk'])) ? $in['links']['talk'] 
: null))) ? '<span><a href="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['url'])) ? $in['links']['talk']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                    class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['talk']) && isset($in['links']['talk']['exists'])) ? 
$in['links']['talk']['exists'] : null))) ? 'new ' : '').'"
-                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('talkpagelinktext'),Array()), 'encq').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
-                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('contribslink'),Array()), 'encq').'</a>
+                                   
title="'.htmlentities(((is_array($in['links']['talk']) && 
isset($in['links']['talk']['title'])) ? $in['links']['talk']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && isset($in['l10n'])) ? 
$in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').''.((LCRun3::ifvar($cx, ((is_array($in['links']) && 
isset($in['links']['contribs'])) ? $in['links']['contribs'] : null))) ? '<span>
+                                       <a 
href="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['url'])) ? $in['links']['contribs']['url'] : 
null), ENT_QUOTES, 'UTF-8').'" 
title="'.htmlentities(((is_array($in['links']['contribs']) && 
isset($in['links']['contribs']['title'])) ? $in['links']['contribs']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a>
                                </span>' : '').''.((LCRun3::ifvar($cx, 
((is_array($in['links']) && isset($in['links']['block'])) ? 
$in['links']['block'] : null))) ? '<span><a class="'.((!LCRun3::ifvar($cx, 
((is_array($in['links']['block']) && isset($in['links']['block']['exists'])) ? 
$in['links']['block']['exists'] : null))) ? 'new ' : '').'"
                                   
href="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['url'])) ? $in['links']['block']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
-                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.LCRun3::ch($cx, 'l10n', 
Array(Array('blocklink'),Array()), 'encq').'</a></span>' : '').'</span>
+                                  
title="'.htmlentities(((is_array($in['links']['block']) && 
isset($in['links']['block']['title'])) ? $in['links']['block']['title'] : 
null), ENT_QUOTES, 'UTF-8').'">'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'</a></span>' : 
'').'</span>
        ' : '').'
 </span>
 
        ';}).'
 
        '.((LCRun3::ifvar($cx, ((is_array($in) && isset($in['isModerated'])) ? 
$in['isModerated'] : null))) ? '
-               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.LCRun3::ch($cx, 'l10n', Array(Array(LCRun3::ch($cx, 'concat', 
Array(Array('flow-',((is_array($in) && isset($in['moderateState'])) ? 
$in['moderateState'] : null),'-post-content'),Array()), 
'raw'),((is_array($in['moderator']) && isset($in['moderator']['name'])) ? 
$in['moderator']['name'] : null)),Array()), 'encq').'
-                       ' : ''.LCRun3::ch($cx, 'l10n', 
Array(Array(LCRun3::ch($cx, 'concat', Array(Array('flow-',((is_array($in) && 
isset($in['moderateState'])) ? $in['moderateState'] : 
null),'-title-content'),Array()), 'raw'),((is_array($in['moderator']) && 
isset($in['moderator']['name'])) ? $in['moderator']['name'] : null)),Array()), 
'encq').'
+               <div class="flow-moderated-post-content">'.((LCRun3::ifvar($cx, 
((is_array($in) && isset($in['replyToId'])) ? $in['replyToId'] : null))) ? 
''.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'
+                       ' : ''.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        ').'</div>
        ' : '').'
 
@@ -365,7 +373,7 @@
                           data-flow-api-target="< .flow-post-main"
                           data-flow-interactive-handler="apiRequest"
                           class="mw-ui-anchor mw-ui-progressive mw-ui-quiet">
-                               '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-edit-post'),Array()), 'encq').'
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                        </a>
                ' : '').'
                '.((LCRun3::ifvar($cx, ((is_array($in['actions']) && 
isset($in['actions']['thank'])) ? $in['actions']['thank'] : null))) ? '
@@ -387,7 +395,17 @@
                ' : '').'
                &#8226;
        ' : '').'
-       '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+
+       <span class="flow-post-timestamp">
+               '.((!LCRun3::ifvar($cx, ((is_array($in) && 
isset($in['isOriginalContent'])) ? $in['isOriginalContent'] : null))) ? '
+                       '.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($in['lastEditUser']) && 
isset($in['lastEditUser']['name'])) ? $in['lastEditUser']['name'] : 
null),'!==',((is_array($in['author']) && isset($in['author']['name'])) ? 
$in['author']['name'] : null)),Array()), $in, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}, function($cx, $in) {return '
+                               '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
+                       ';}).'
+               ' : '').'
+               '.LCRun3::ch($cx, 'uuidTimestamp', Array(Array(((is_array($in) 
&& isset($in['postId'])) ? $in['postId'] : null)),Array()), 'encq').'
+       </span>
 </div>
 
                <div class="flow-menu">
@@ -399,7 +417,7 @@
                                   
href="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['url'])) ? $in['links']['post']['url'] : null), 
ENT_QUOTES, 'UTF-8').'"
                                   
title="'.htmlentities(((is_array($in['links']['post']) && 
isset($in['links']['post']['title'])) ? $in['links']['post']['title'] : null), 
ENT_QUOTES, 'UTF-8').'">
                                        <span class="wikiglyph 
wikiglyph-link"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-view'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -412,7 +430,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="hide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-hide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -425,7 +443,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unhide">
                                        <span class="wikiglyph 
wikiglyph-flag"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unhide-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -438,7 +456,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="delete">
                                        <span class="wikiglyph 
wikiglyph-trash"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-delete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -451,7 +469,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="undelete">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-undelete-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -464,7 +482,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="suppress">
                                        <span class="wikiglyph 
wikiglyph-block"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-suppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -477,7 +495,7 @@
                                   data-template="flow_moderate_post"
                                   data-role="unsuppress">
                                        <span class="wikiglyph 
wikiglyph-eye-lid"></span>
-                                       '.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-post-action-unsuppress-post'),Array()), 'encq').'
+                                       '.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'
                                </a>
                        </li>
                ' : '').'
@@ -547,7 +565,7 @@
                                data-flow-expandable="true"
                                class="mw-ui-input"
                                type="text"
-                               placeholder="'.LCRun3::ch($cx, 'l10n', 
Array(Array('flow-reply-topic-title-placeholder',((is_array($in['properties']) 
&& isset($in['properties']['topic-of-post'])) ? 
$in['properties']['topic-of-post'] : null)),Array()), 'encq').'"
+                               placeholder="'.htmlentities(((is_array($in) && 
isset($in['l10n'])) ? $in['l10n'] : null), ENT_QUOTES, 'UTF-8').'"
                                data-role="content">'.((LCRun3::ifvar($cx, 
((is_array($cx['scopes'][0]) && isset($cx['scopes'][0]['submitted'])) ? 
$cx['scopes'][0]['submitted'] : null))) ? ''.LCRun3::hbch($cx, 'ifCond', 
Array(Array(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['postId'])) ? 
$cx['scopes'][0]['submitted']['postId'] : null),'===',((is_array($in) && 
isset($in['postId'])) ? $in['postId'] : null)),Array()), $in, function($cx, 
$in) {return ''.htmlentities(((is_array($cx['scopes'][0]['submitted']) && 
isset($cx['scopes'][0]['submitted']['content'])) ? 
$cx['scopes'][0]['submitted']['content'] : null), ENT_QUOTES, 'UTF-8').'';}).'' 
: '').'</textarea>
 
                <div class="flow-form-actions flow-form-collapsible">
@@ -561,13 +579,13 @@
         name="preview"
         data-role="action"
         class="mw-ui-button mw-ui-progressive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-preview'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
 <button data-flow-interactive-handler="cancelForm"
         data-role="cancel"
         type="reset"
         class="mw-ui-button mw-ui-destructive mw-ui-quiet mw-ui-flush-right 
flow-js"
->'.LCRun3::ch($cx, 'l10n', Array(Array('flow-cancel'),Array()), 
'encq').'</button>
+>'.htmlentities(((is_array($in) && isset($in['l10n'])) ? $in['l10n'] : null), 
ENT_QUOTES, 'UTF-8').'</button>
 
                        <small class="flow-terms-of-use 
plainlinks">'.LCRun3::ch($cx, 'l10nParse', 
Array(Array('flow-terms-of-use-reply'),Array()), 'encq').'</small>
                </div>
diff --git a/handlebars/compiled/timestamp.handlebars.php 
b/handlebars/compiled/timestamp.handlebars.php
index a5a10aa..d5c627f 100644
--- a/handlebars/compiled/timestamp.handlebars.php
+++ b/handlebars/compiled/timestamp.handlebars.php
@@ -25,7 +25,7 @@
              data-time-ago-only="'.htmlentities(((is_array($in) && 
isset($in['time_ago_only'])) ? $in['time_ago_only'] : null), ENT_QUOTES, 
'UTF-8').'"
        >
 ').'
-       <span class="flow-timestamp-now">'.htmlentities(((is_array($in) && 
isset($in['time_readable'])) ? $in['time_readable'] : null), ENT_QUOTES, 
'UTF-8').'</span>
+       <span 
class="flow-timestamp-user-formatted">'.htmlentities(((is_array($in) && 
isset($in['time_readable'])) ? $in['time_readable'] : null), ENT_QUOTES, 
'UTF-8').'</span>
        <span id="'.htmlentities(((is_array($in) && isset($in['guid'])) ? 
$in['guid'] : null), ENT_QUOTES, 'UTF-8').'" 
class="flow-timestamp-ago">'.htmlentities(((is_array($in) && 
isset($in['time_ago'])) ? $in['time_ago'] : null), ENT_QUOTES, 'UTF-8').'</span>
 </time>
 ';
diff --git a/handlebars/flow_post_meta_actions.handlebars 
b/handlebars/flow_post_meta_actions.handlebars
index 268b4a1..d282b97 100644
--- a/handlebars/flow_post_meta_actions.handlebars
+++ b/handlebars/flow_post_meta_actions.handlebars
@@ -42,5 +42,15 @@
                {{/if}}
                &#8226;
        {{/if}}
-       {{uuidTimestamp postId}}
+
+       <span class="flow-post-timestamp">
+               {{#unless isOriginalContent}}
+                       {{#ifCond lastEditUser.name "!==" author.name}}
+                               {{l10n "flow-edited"}}
+                       {{else}}
+                               {{l10n "flow-edited-by" lastEditUser.name}}
+                       {{/ifCond}}
+               {{/unless}}
+               {{uuidTimestamp postId}}
+       </span>
 </div>
diff --git a/handlebars/timestamp.handlebars b/handlebars/timestamp.handlebars
index ce61575..7415a0a 100644
--- a/handlebars/timestamp.handlebars
+++ b/handlebars/timestamp.handlebars
@@ -7,6 +7,6 @@
              data-time-ago-only="{{time_ago_only}}"
        >
 {{/if}}
-       <span class="flow-timestamp-now">{{time_readable}}</span>
+       <span class="flow-timestamp-user-formatted">{{time_readable}}</span>
        <span id="{{guid}}" class="flow-timestamp-ago">{{time_ago}}</span>
 </time>
diff --git a/i18n/en.json b/i18n/en.json
index 679b695..5f20f49 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -352,5 +352,7 @@
     "flow-preview-return-edit-post": "Keep editing",
     "flow-anonymous": "Anonymous",
     "flow-embedding-unsupported": "Discussions cannot be embedded yet.",
-    "mw-ui-unsubmitted-confirm": "You have unsubmitted changes on this page. 
Are you sure you want to navigate away and lose your work?"
+    "mw-ui-unsubmitted-confirm": "You have unsubmitted changes on this page. 
Are you sure you want to navigate away and lose your work?",
+    "flow-edited": "Edited",
+    "flow-edited-by": "Edited by $1"
 }
diff --git a/i18n/qqq.json b/i18n/qqq.json
index b446431..56f88ac 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -356,5 +356,7 @@
        "flow-preview-return-edit-post": "Used as text for a button that hides 
previewed text and returns to the editing view",
        "flow-anonymous": "{{Identical|Anonymous}}",
        "flow-embedding-unsupported": "Error message displayed if a user tries 
to transclude a Flow page.",
-       "mw-ui-unsubmitted-confirm": "You have unsubmitted changes on this 
page. Are you sure you want to navigate away and lose your work?"
+       "mw-ui-unsubmitted-confirm": "You have unsubmitted changes on this 
page. Are you sure you want to navigate away and lose your work?",
+       "flow-edited": "Message displayed below a post to indicate it has last 
been edited by the original author",
+       "flow-edited-by": "Message displayed below a post to indicate it has 
last been edited by a user other than the original author"
 }
diff --git a/includes/Formatter/RevisionFormatter.php 
b/includes/Formatter/RevisionFormatter.php
index 723872c..6a9c0d0 100644
--- a/includes/Formatter/RevisionFormatter.php
+++ b/includes/Formatter/RevisionFormatter.php
@@ -173,10 +173,11 @@
                        'workflowId' => 
$row->workflow->getId()->getAlphadecimal(),
                        'revisionId' => 
$row->revision->getRevisionId()->getAlphadecimal(),
                        'timestamp' => $ts->getTimestamp( TS_MW ),
-                       'timestamp_readable' => $language->userTimeAndDate( 
$ts, $user ),
                        'changeType' => $row->revision->getChangeType(),
+                       // @todo push all date formatting to the render side?
                        'dateFormats' => $this->getDateFormats( $row->revision, 
$ctx ),
                        'properties' => $this->buildProperties( 
$row->workflow->getId(), $row->revision, $ctx, $row ),
+                       'isOriginalContent' => 
$row->revision->isOriginalContent(),
                        'isModerated' => $moderatedRevision->isModerated(),
                        // These are read urls
                        'links' => $this->buildLinks( $row ),
@@ -191,6 +192,13 @@
                                $row->revision->getUserId(),
                                $row->revision->getUserIp()
                        ),
+                       'lastEditUser' => $row->revision->isOriginalContent()
+                               ? $this->serializeUser(
+                                       
$row->revision->getLastContentEditUserWiki(),
+                                       
$row->revision->getLastContentEditUserId(),
+                                       
$row->revision->getLastContentEditUserIp()
+                                 )
+                               : array()
                );
 
                $prevRevId = $row->revision->getPrevRevisionId();
diff --git a/modules/styles/board/timestamps.less 
b/modules/styles/board/timestamps.less
index affaddf..8bc03ac 100644
--- a/modules/styles/board/timestamps.less
+++ b/modules/styles/board/timestamps.less
@@ -6,7 +6,7 @@
        display: inline-block;
        text-align: left;
 
-       .flow-timestamp-now {
+       .flow-timestamp-user-formatted {
                display: none;
        }
        .flow-timestamp-ago {
@@ -15,7 +15,7 @@
 }
 
 .flow-timestamp-ago,
-.flow-timestamp-now {
+.flow-timestamp-user-formatted {
        display: block;
        position: relative;
        line-height: 1em;
@@ -30,7 +30,7 @@
        .flow-timestamp {
 
                &:hover {
-                       .flow-timestamp-now {
+                       .flow-timestamp-user-formatted {
                                display: block;
                        }
                        .flow-timestamp-ago {

-- 
To view, visit https://gerrit.wikimedia.org/r/169597
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6080979e3f64a7dca7b3c88d8e8c6973a845282b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: EBernhardson <ebernhard...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to