Sitic has submitted this change and it was merged.
Change subject: Improved logevent support
......................................................................
Improved logevent support
* Added list filter, fixed design bugs.
* Added user and page directive.
* Refactored code from service to directives.
* Fixed complicated translation variables.
* Added de translations.
Bug: T100339
Change-Id: Idd01bed6705c9fae0b945a21f5e73b516a25d5d6
---
M frontend/src/app/index.css
M frontend/src/app/index.js
M frontend/src/app/translationProvider.js
M frontend/src/components/watchlist/edit.directive.html
M frontend/src/components/watchlist/edit.directive.js
M frontend/src/components/watchlist/entry.directive.html
M frontend/src/components/watchlist/logevent.directive.html
M frontend/src/components/watchlist/logevent.directive.js
A frontend/src/components/watchlist/page.directive.js
A frontend/src/components/watchlist/user.directive.js
M frontend/src/components/watchlist/watchlist.html
M frontend/src/i18n/locale-de.json
M frontend/src/i18n/locale-en.json
13 files changed, 199 insertions(+), 131 deletions(-)
Approvals:
Sitic: Verified; Looks good to me, approved
diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css
index a501dc1..57f3fd6 100644
--- a/frontend/src/app/index.css
+++ b/frontend/src/app/index.css
@@ -89,6 +89,10 @@
overflow: hidden;
}
+.watchlist a{
+ color:#0645ad;
+}
+
.watchlist .left {
float: left;
width: 125px;
@@ -96,6 +100,7 @@
.watchlist .right {
width: auto;
+ overflow: hidden;
word-break: break-all;
}
diff --git a/frontend/src/app/index.js b/frontend/src/app/index.js
index 9a7fb4e..88c29da 100644
--- a/frontend/src/app/index.js
+++ b/frontend/src/app/index.js
@@ -16,6 +16,7 @@
.config(storageConfig)
.factory('socket', socketFactory)
.filter('urlEncode', urlEncodeFilter)
+ .filter('list', listFiler)
.service('authService', authService)
.service('dataService', dataService)
.run(runBlock)
@@ -59,11 +60,29 @@
});
}
-/*
+/**
* Filter for encoding strings for use in URL query strings
*/
function urlEncodeFilter () {
return window.encodeURIComponent;
+}
+
+/**
+ * Formats lists:
+ * ["a", "b", "c"] -> "(a, b, c)"
+ * [] -> "(–)"
+ */
+function listFiler () {
+ return function (list) {
+ list = list || [];
+ var result = list.join(', ');
+ if (result.length === 0) {
+ result = "–";
+ }
+ result = "(" + result + ")";
+
+ return result;
+ }
}
function authService (localStorageService, $rootScope, $log) {
@@ -143,53 +162,7 @@
* @param entries
*/
vm.addWatchlistEntries = function (entries) {
- for (var i = 0; i < entries.length; i++) {
- if (entries[i].type === 'edit') {
- var byte_change = entries[i].newlen - entries[i].oldlen;
- entries[i].bytes = vm.numberFormat(byte_change);
- entries[i].bytestyle = vm.byteStyle(byte_change);
- entries[i].titlestyle =
vm.titleStyle(entries[i].notificationtimestamp);
- } else {
- /*
- * Make html partials used by the translation templates
- */
- entries[i].username = vm.usernameHTML(entries[i].projecturl,
entries[i].user);
- entries[i].page = vm.titleHTML(entries[i].projecturl,
entries[i].title);
-
- if (entries[i].logtype === 'move') {
- entries[i].target_title = vm.titleHTML(entries[i].projecturl,
entries[i].target_title);
- } else if (entries[i].logaction === 'move_prot') {
- entries[i].target_title = vm.titleHTML(entries[i].projecturl,
entries[i].logparams['0']);
- } else if (entries[i].logtype === 'protect') {
- entries[i].protection_level = entries[i].logparams['0'];
- }
- }
- }
vm.watchlist.push.apply(vm.watchlist, entries);
- };
-
- /**
- * Build <a href> tag for a username
- * TODO: Make a directive out of it?
- * @param projecturl
- * @param user
- * @returns {string}
- */
- vm.usernameHTML = function (projecturl, user) {
- var html = "<a href=\"" + projecturl + "/wiki/User:" + user + "\"
target=\"_blank\">" + user + "</a>";
- return html;
- };
-
- /**
- * Build <a href> tag for a page
- * TODO: Make a directive out of it?
- * @param projecturl
- * @param title
- * @returns {string}
- */
- vm.titleHTML = function (projecturl, title) {
- var html = "<a href=\"" + projecturl + "/wiki/" + title +"\"
target=\"_blank\">" + title + "</a>";
- return html;
};
/**
@@ -206,53 +179,6 @@
*/
vm.saveConfig = function() {
localStorageService.set('config', vm.config);
- };
-
- /**
- * Formats the string for the number of changed bytes in a edit.
- * @param x
- * @returns human readable number
- */
- vm.numberFormat = function (x) {
- var result = $filter('number')(x);
- if (x > 0) {
- result = '+' + result;
- }
- return result;
- };
-
- /**
- * Get span class name from the number of changed bytes in a edit.
- * @param byte_change
- * @returns span class name
- */
- vm.byteStyle = function (byte_change) {
- var result;
- if (byte_change <= -500) {
- result = 'text-danger strong';
- } else if (byte_change < 0) {
- result = 'text-danger';
- } else if (byte_change === 0) {
- result = 'text-muted';
- } else if (byte_change >= 500) {
- result = 'text-success strong';
- } else { // 0 < byte_change <= 500
- result = 'text-success';
- }
- return result;
- };
-
- /**
- * Returns style for the page title based on the notificationtimestamp
- * @param timestamp
- * @returns {*}
- */
- vm.titleStyle = function(timestamp) {
- if (timestamp) {
- return 'mw-title';
- } else {
- return '';
- }
};
/**
diff --git a/frontend/src/app/translationProvider.js
b/frontend/src/app/translationProvider.js
index 3df9735..06d6881 100644
--- a/frontend/src/app/translationProvider.js
+++ b/frontend/src/app/translationProvider.js
@@ -26,6 +26,7 @@
// translation config
$translateProvider
.useSanitizeValueStrategy('sanitizeParameters')
+ .usePostCompiling(true)
.useStaticFilesLoader({
prefix: 'i18n/locale-',
suffix: '.json'
diff --git a/frontend/src/components/watchlist/edit.directive.html
b/frontend/src/components/watchlist/edit.directive.html
index e262046..0c6929a 100644
--- a/frontend/src/components/watchlist/edit.directive.html
+++ b/frontend/src/components/watchlist/edit.directive.html
@@ -1,10 +1,10 @@
-<span class="newpage" ng-if="::event.new" translate="NEWPAGE_FLAG"></span>
-<span class="minoredit" ng-if="::event.minor"
translate="MINOREDIT_FLAG"></span>
-<span class="botedit" ng-if="::event.bot" translate="BOTEDIT_FLAG"></span>
+<span class="newpage" ng-if="::event.new" translate="NEWPAGE_FLAG"></span
+><span class="minoredit" ng-if="::event.minor"
translate="MINOREDIT_FLAG"></span
+><span class="botedit" ng-if="::event.bot" translate="BOTEDIT_FLAG"></span>
<a
href="{{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}&diff={{::event.revid}}"
ng-class="::event.titlestyle" target="_blank">{{::event.title}}</a>
<span ng-class="::event.bytestyle">({{::event.bytes}})</span>
<div>
- <a href="{{::event.projecturl}}/wiki/User:{{::event.user | urlEncode}}"
target="_blank">{{::event.user}}</a>
+ <user></user>
<span ng-if="::event.parsedcomment" class="comment">(<span
ng-bind-html="::event.parsedcomment"></span>)</span>
</div>
diff --git a/frontend/src/components/watchlist/edit.directive.js
b/frontend/src/components/watchlist/edit.directive.js
index d8a503e..6ce2eb2 100644
--- a/frontend/src/components/watchlist/edit.directive.js
+++ b/frontend/src/components/watchlist/edit.directive.js
@@ -5,12 +5,63 @@
function watchlistEdit() {
var directive = {
link: link,
+ scope: true,
templateUrl: 'components/watchlist/edit.directive.html',
- restrict: 'EA'
+ restrict: 'E'
};
return directive;
- function link(scope, element, attrs) {
- /* */
+ function link(scope, element, attrs, ctrl) {
+ var byte_change = scope.event.newlen - scope.event.oldlen;
+ scope.event.bytes = numberFormat(byte_change);
+ scope.event.bytestyle = byteStyle(byte_change);
+ scope.event.titlestyle = titleStyle(scope.event.notificationtimestamp);
+
+ /**
+ * Formats the string for the number of changed bytes in a edit.
+ * @param x
+ * @returns human readable number
+ */
+ function numberFormat (x) {
+ var result = x.toLocaleString();
+ if (x > 0) {
+ result = '+' + result;
+ }
+ return result;
+ }
+
+ /**
+ * Get span class name from the number of changed bytes in a edit.
+ * @param byte_change
+ * @returns span class name
+ */
+ function byteStyle (byte_change) {
+ var result;
+ if (byte_change <= -500) {
+ result = 'text-danger strong';
+ } else if (byte_change < 0) {
+ result = 'text-danger';
+ } else if (byte_change === 0) {
+ result = 'text-muted';
+ } else if (byte_change >= 500) {
+ result = 'text-success strong';
+ } else { // 0 < byte_change <= 500
+ result = 'text-success';
+ }
+ return result;
+ }
+
+ /**
+ * Returns style for the page title based on the notificationtimestamp
+ * @param timestamp
+ * @returns {*}
+ */
+ function titleStyle (timestamp) {
+ if (timestamp) {
+ return 'mw-title';
+ } else {
+ return '';
+ }
+ }
}
}
diff --git a/frontend/src/components/watchlist/entry.directive.html
b/frontend/src/components/watchlist/entry.directive.html
index bc18f13..88907b0 100644
--- a/frontend/src/components/watchlist/entry.directive.html
+++ b/frontend/src/components/watchlist/entry.directive.html
@@ -10,6 +10,6 @@
</a>
</div>
<div class="right">
- <watchlist-edit ng-if="event.type === 'edit'">{{::event}}</watchlist-edit>
- <watchlist-logevent ng-if="event.type ===
'log'">{{::event}}</watchlist-logevent>
+ <watchlist-edit ng-if="event.type === 'edit'"></watchlist-edit>
+ <watchlist-logevent ng-if="event.type === 'log'"></watchlist-logevent>
</div>
diff --git a/frontend/src/components/watchlist/logevent.directive.html
b/frontend/src/components/watchlist/logevent.directive.html
index 344faad..d9d867f 100644
--- a/frontend/src/components/watchlist/logevent.directive.html
+++ b/frontend/src/components/watchlist/logevent.directive.html
@@ -20,7 +20,6 @@
</span>
<span ng-if="::event.logtype === 'block'">
<span ng-switch="::event.logaction">
- <!--{{event.logparams['expiry'] | amCalendar}}-->
<span ng-switch-when="block" translate="LOGEVENT_BLOCK_BLOCK"
translate-values="{{::event}}"></span>
<span ng-switch-when="reblock" translate="LOGEVENT_BLOCK_REBLOCK"
translate-values="{{::event}}"></span>
<span ng-switch-when="unblock" translate="LOGEVENT_BLOCK_UNBLOCK"
translate-values="{{::event}}"></span>
diff --git a/frontend/src/components/watchlist/logevent.directive.js
b/frontend/src/components/watchlist/logevent.directive.js
index f3e33f0..b519b68 100644
--- a/frontend/src/components/watchlist/logevent.directive.js
+++ b/frontend/src/components/watchlist/logevent.directive.js
@@ -5,12 +5,35 @@
function watchlistLogevent() {
var directive = {
link: link,
+ scope: true,
templateUrl: 'components/watchlist/logevent.directive.html',
- restrict: 'EA'
+ restrict: 'E'
};
return directive;
function link(scope, element, attrs) {
- /* */
+ /*
+ * copy event.logparams properties to event
+ */
+ for (var prop in scope.event.logparams) {
+ if (scope.event.logparams.hasOwnProperty(prop)) {
+ if ((isNumber(prop)) || (scope.event.hasOwnProperty(prop))) {
+ console.log(prop);
+ } else {
+ scope.event[prop] = scope.event.logparams[prop];
+ }
+ }
+ }
+
+ /*
+ * Rename badly named logparams properties
+ */
+ if (scope.event.logaction === 'move_prot') {
+ scope.event.target_title = scope.event.logparams['0'];
+ } else if (scope.event.logtype === 'protect') {
+ scope.event.protection_level = scope.event.logparams['0'];
+ }
+
+ function isNumber(obj) { return !isNaN(parseFloat(obj)) }
}
}
diff --git a/frontend/src/components/watchlist/page.directive.js
b/frontend/src/components/watchlist/page.directive.js
new file mode 100644
index 0000000..043f6d4
--- /dev/null
+++ b/frontend/src/components/watchlist/page.directive.js
@@ -0,0 +1,19 @@
+angular
+ .module('crosswatch')
+ .directive('page', page);
+
+function page() {
+ var directive = {
+ link: link,
+ scope: true,
+ template: '<a href="{{::event.projecturl}}/wiki/{{::event.title |
urlEncode}}" target="_blank">{{::event.title}}</a>',
+ restrict: 'E'
+ };
+ return directive;
+
+ function link(scope, element, attrs) {
+ if (typeof attrs.title !== 'undefined') {
+ scope.event.title = attrs.title;
+ }
+ }
+}
diff --git a/frontend/src/components/watchlist/user.directive.js
b/frontend/src/components/watchlist/user.directive.js
new file mode 100644
index 0000000..cd21010
--- /dev/null
+++ b/frontend/src/components/watchlist/user.directive.js
@@ -0,0 +1,21 @@
+angular
+ .module('crosswatch')
+ .directive('user', user);
+
+function user() {
+ var directive = {
+ link: link,
+ scope: true,
+ template: '<a href="{{::event.projecturl}}/wiki/User:{{::event.user |
urlEncode}}" target="_blank">{{::event.user}}</a>',
+ restrict: 'E'
+ };
+ return directive;
+
+ function link(scope, element, attrs) {
+ if (typeof attrs.name !== 'undefined') {
+ scope.event.user = attrs.name;
+ }
+
+ scope.event.user = scope.event.user.replace("User:", "");
+ }
+}
diff --git a/frontend/src/components/watchlist/watchlist.html
b/frontend/src/components/watchlist/watchlist.html
index f9f4d3c..583b145 100644
--- a/frontend/src/components/watchlist/watchlist.html
+++ b/frontend/src/components/watchlist/watchlist.html
@@ -38,7 +38,7 @@
<ul class="example-animate-container">
<li class="watchlist"
ng-repeat="event in ctrl.watchlist| orderBy:'-timestamp' |
filter:ctrl.searchText">
- <watchlist-entry>{{event}}</watchlist-entry>
+ <watchlist-entry></watchlist-entry>
</li>
</ul>
</div>
diff --git a/frontend/src/i18n/locale-de.json b/frontend/src/i18n/locale-de.json
index a98b473..70d1711 100644
--- a/frontend/src/i18n/locale-de.json
+++ b/frontend/src/i18n/locale-de.json
@@ -15,5 +15,28 @@
"LASTREVONLY": "Zeige nur die letzte Änderung pro Seite",
"TIMEPERIOD": "Zeige letzte",
"HOURS": "{{number}} Stunden",
- "DAYS": "{{number}} Tage"
+ "DAYS": "{{number}} Tage",
+ "LOGEVENT_DELETE_DELETE": "<user></user> löschte Seite <page></page>",
+ "LOGEVENT_DELETE_REVISION": "<user></user> änderte die Sichtbarkeit von
Versionen der Seite <page></page>",
+ "LOGEVENT_DELETE_RESTORE": "<user></user> stellte Seite <page></page> wieder
her",
+ "LOGEVENT_PROTECT_PROTECT": "<user></user> schütze die Seite <page></page>
mit {{protection_level}}",
+ "LOGEVENT_PROTECT_MODIFY": "<user></user> änderte den Schutz der Seite
<page></page> auf {{protection_level}}",
+ "LOGEVENT_PROTECT_UNPROTECT": "<user></user> hob den Schutz der Seite
<page></page> auf",
+ "LOGEVENT_PROTECT_MOVE": "<user></user> übertrug den Seitenschutz von
<page></page> auf <page title={{target_title}}></page>",
+ "LOGEVENT_MOVE": "<user></user> verschob <page></page> nach <page
title={{target_title}}></page>",
+ "LOGEVENT_BLOCK_BLOCK": "<user></user> sperrte <user name={{title}}></user>
für den Zeitraum {{duration}} mit den Parametern {{flags | list}}",
+ "LOGEVENT_BLOCK_REBLOCK": "<user></user> änderte die Sperre von <user
name={{title}}></user> für den Zeitraum {{duration}} mit den Parametern {{flags
| list}}",
+ "LOGEVENT_BLOCK_UNBLOCK": "<user></user> hob die Sperre von <user
name={{title}}></user> auf",
+ "LOGEVENT_RIGHTS_AUTOPROMOTE": "<user></user> wurde automatisch von
{{oldgroups | list}} zu {{newgroups | list}} zugeordnet",
+ "LOGEVENT_RIGHTS_RIGHTS": "<user></user> änderte die Gruppenzugehörigkeit
für <user name={{title}}></user> von {{oldgroups | list}} zu {{newgroups |
list}}",
+ "LOGEVENT_UPLOAD_OVERWRITE": "<user></user> lud eine neue Version von
<page></page> hoch",
+ "LOGEVENT_UPLOAD_REVERT": "<user></user> lud <page></page> hoch",
+ "LOGEVENT_UPLOAD_UPLOAD": "<user></user> lud <page></page> hoch",
+ "LOGEVENT_IMPORT_INTERWIKI": "<user></user> importierte <page></page> aus
einem anderen wiki",
+ "LOGEVENT_IMPORT_UPLOAD": "<user></user> importierte <page></page> durch das
hochladen einer Datei",
+ "LOGEVENT_MERGE": "<user></user> vereinigte <page></page> in die Seite <page
title={{dest_title}}></page> (Versionen bis zum {{mergepoint | amCalendar}})",
+ "LOGEVENT_NEWUSERS_CREATE": "Benutzerkonto <user name={{title}}></user>
wurde erstellt",
+ "LOGEVENT_NEWUSERS_CREATE2": "Benutzerkonto <user name={{title}}></user>
wurde von <user></user> erstellt",
+ "LOGEVENT_NEWUSERS_BYEMAIL": "Benutzerkonto <user name={{title}}></user>
wurde von <user></user> erstellt und das Passwort wurde per E-Mail zugesandt",
+ "LOGEVENT_RENAMEUSER": "<user></user> hat <user name={{olduser}}></user>
(mit {{edits}} Bearbeitungen) nach <user name={{newuser}}></user> umbennant"
}
diff --git a/frontend/src/i18n/locale-en.json b/frontend/src/i18n/locale-en.json
index 339fc45..4ab9d9f 100644
--- a/frontend/src/i18n/locale-en.json
+++ b/frontend/src/i18n/locale-en.json
@@ -16,27 +16,27 @@
"TIMEPERIOD": "Show last",
"HOURS": "{{number}} hours",
"DAYS": "{{number}} days",
- "LOGEVENT_DELETE_DELETE": "{{username}} deleted page {{page}}",
- "LOGEVENT_DELETE_REVISION": "{{username}} changed visibility of a revision
on page {{page}}",
- "LOGEVENT_DELETE_RESTORE": "{{username}} restored {{page}}",
- "LOGEVENT_PROTECT_PROTECT": "{{username}} protected page {{page}}
{{protection_level}}",
- "LOGEVENT_PROTECT_MODIFY": "{{username}} modified protection on page
{{page}} with parameters {{protection_level}}",
- "LOGEVENT_PROTECT_UNPROTECT": "{{username}} unprotected page {{page}} with
parameters {{protection_level}}",
- "LOGEVENT_PROTECT_MOVE": "{{username}} moved protection settings from
{{page}} to {{target_title}}",
- "LOGEVENT_MOVE": "{{username}} moved page {{page}} to {{target_title}}",
- "LOGEVENT_BLOCK_BLOCK": "{{username}} blocked {{page}} with an expiry time
of {{logparams['duration']}} with parameters {{logparams['flags']}}",
- "LOGEVENT_BLOCK_REBLOCK": "{{username}} changed block settings for {{page}}
with an expiry time of {{logparams['duration']}} with parameters
{{logparams['flags']}}",
- "LOGEVENT_BLOCK_UNBLOCK": "{{username}} unblocked {{page}}",
- "LOGEVENT_RIGHTS_AUTOPROMOTE": "{{username}} was automatically promoted from
{{logparams['oldgroups']}} to {{logparams['newgroups']}}",
- "LOGEVENT_RIGHTS_RIGHTS": "{{username}} changed group membership for
{{page}} from {{logparams['oldgroups']}} to {{logparams['newgroups']}}",
- "LOGEVENT_UPLOAD_OVERWRITE": "{{username}} uploaded a new version of
{{page}}",
- "LOGEVENT_UPLOAD_REVERT": "{{username}} uploaded {{page}}",
- "LOGEVENT_UPLOAD_UPLOAD": "{{username}} uploaded {{page}}",
- "LOGEVENT_IMPORT_INTERWIKI": "{{username}} imported {{page}} from another
wiki",
- "LOGEVENT_IMPORT_UPLOAD": "{{username}} imported {{page}} by file upload",
- "LOGEVENT_MERGE": "{{username}} merged {{page}} into
{{logparams['dest_title']}} (revisions up to {{logparams['mergepoint'] |
amCalendar}})",
- "LOGEVENT_NEWUSERS_CREATE": "User account {{page}} was created",
- "LOGEVENT_NEWUSERS_CREATE2": "User account {{page}} was created by
{{username}}",
- "LOGEVENT_NEWUSERS_BYEMAIL": "User account {{page}} was created by
{{username}} and password was sent by email",
- "LOGEVENT_RENAMEUSER": "{{username}} renamed user {{logparams['olduser']}}
({{logparams['edits']}} edits) to {{logparams['newuser']}}"
+ "LOGEVENT_DELETE_DELETE": "<user></user> deleted page <page></page>",
+ "LOGEVENT_DELETE_REVISION": "<user></user> changed visibility of a revision
on page <page></page>",
+ "LOGEVENT_DELETE_RESTORE": "<user></user> restored <page></page>",
+ "LOGEVENT_PROTECT_PROTECT": "<user></user> protected page <page></page> with
parameters {{protection_level}}",
+ "LOGEVENT_PROTECT_MODIFY": "<user></user> modified protection on page
<page></page> with parameters {{protection_level}}",
+ "LOGEVENT_PROTECT_UNPROTECT": "<user></user> unprotected page <page></page>",
+ "LOGEVENT_PROTECT_MOVE": "<user></user> moved protection settings from
<page></page> to <page title={{target_title}}></page>",
+ "LOGEVENT_MOVE": "<user></user> moved page <page></page> to <page
title={{target_title}}></page>",
+ "LOGEVENT_BLOCK_BLOCK": "<user></user> blocked <user name={{title}}></user>
with an expiry time of {{duration}} with parameters {{flags | list}}",
+ "LOGEVENT_BLOCK_REBLOCK": "<user></user> changed block settings for <user
name={{title}}></user> with an expiry time of {{duration}} with parameters
{{flags | list}}",
+ "LOGEVENT_BLOCK_UNBLOCK": "<user></user> unblocked <user
name={{title}}></user>",
+ "LOGEVENT_RIGHTS_AUTOPROMOTE": "<user></user> was automatically promoted
from {{oldgroups | list}} to {{newgroups | list}}",
+ "LOGEVENT_RIGHTS_RIGHTS": "<user></user> changed group membership for <user
name={{title}}></user> from {{oldgroups | list}} to {{newgroups | list}}",
+ "LOGEVENT_UPLOAD_OVERWRITE": "<user></user> uploaded a new version of
<page></page>",
+ "LOGEVENT_UPLOAD_REVERT": "<user></user> uploaded <page></page>",
+ "LOGEVENT_UPLOAD_UPLOAD": "<user></user> uploaded <page></page>",
+ "LOGEVENT_IMPORT_INTERWIKI": "<user></user> imported <page></page> from
another wiki",
+ "LOGEVENT_IMPORT_UPLOAD": "<user></user> imported <page></page> by file
upload",
+ "LOGEVENT_MERGE": "<user></user> merged <page></page> into <page
title={{dest_title}}></page> (revisions up to {{mergepoint | amCalendar}})",
+ "LOGEVENT_NEWUSERS_CREATE": "User account <user name={{title}}></user> was
created",
+ "LOGEVENT_NEWUSERS_CREATE2": "User account <user name={{title}}></user> was
created by <user></user>",
+ "LOGEVENT_NEWUSERS_BYEMAIL": "User account <user name={{title}}></user> was
created by <user></user> and password was sent by email",
+ "LOGEVENT_RENAMEUSER": "<user></user> renamed user <user
name={{olduser}}></user> ({{edits}} edits) to <user name={{newuser}}></user>"
}
--
To view, visit https://gerrit.wikimedia.org/r/215894
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Idd01bed6705c9fae0b945a21f5e73b516a25d5d6
Gerrit-PatchSet: 3
Gerrit-Project: labs/tools/crosswatch
Gerrit-Branch: master
Gerrit-Owner: Sitic <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Sitic <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits