[MediaWiki-commits] [Gerrit] Fix notifications - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix notifications .. Fix notifications Change-Id: I3cbe2466cb249257a58a04dc80101d13e51f607a --- M frontend/src/components/notifications/notifications.html 1 file changed, 29 insertions(+), 28 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index 4409e9d..43f596e 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -1,34 +1,35 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + {{::event.projectlangname}} - - - - - - - + + + + + + + + -- To view, visit https://gerrit.wikimedia.org/r/235449 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3cbe2466cb249257a58a04dc80101d13e51f607a Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: SiticGerrit-Reviewer: Sitic ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix notifications - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/235449 Change subject: Fix notifications .. Fix notifications Change-Id: I3cbe2466cb249257a58a04dc80101d13e51f607a --- M frontend/src/components/notifications/notifications.html 1 file changed, 29 insertions(+), 28 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/49/235449/1 diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index 4409e9d..43f596e 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -1,34 +1,35 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + {{::event.projectlangname}} - - - - - - - + + + + + + + + -- To view, visit https://gerrit.wikimedia.org/r/235449 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3cbe2466cb249257a58a04dc80101d13e51f607a Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Don't throw exception when failure is expected - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Don't throw exception when failure is expected .. Don't throw exception when failure is expected Applying watchlist filter on undefined variable happens if the wiki has no watchlist entries, don't throw an exception. Change-Id: I1b9ea891a5e36cccd45e03dbb7cb6a451e08eaaa --- M frontend/src/app/filters.js 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js index 8f3376f..57ff8a5 100644 --- a/frontend/src/app/filters.js +++ b/frontend/src/app/filters.js @@ -37,6 +37,9 @@ */ function watchlistFilter () { return function (items, config) { +if (typeof items === 'undefined') { + return false; +} return items.filter(filter, config); }; -- To view, visit https://gerrit.wikimedia.org/r/232936 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1b9ea891a5e36cccd45e03dbb7cb6a451e08eaaa Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Don't throw exception when failure is expected - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/232936 Change subject: Don't throw exception when failure is expected .. Don't throw exception when failure is expected Applying watchlist filter on undefined variable happens if the wiki has no watchlist entries, don't throw an exception. Change-Id: I1b9ea891a5e36cccd45e03dbb7cb6a451e08eaaa --- M frontend/src/app/filters.js 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/36/232936/1 diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js index 8f3376f..57ff8a5 100644 --- a/frontend/src/app/filters.js +++ b/frontend/src/app/filters.js @@ -37,6 +37,9 @@ */ function watchlistFilter () { return function (items, config) { +if (typeof items === 'undefined') { + return false; +} return items.filter(filter, config); }; -- To view, visit https://gerrit.wikimedia.org/r/232936 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1b9ea891a5e36cccd45e03dbb7cb6a451e08eaaa Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix padding for the subdivided watchlists - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix padding for the subdivided watchlists .. Fix padding for the subdivided watchlists Change-Id: I7faa1c81dae6e2c42fea502da6164bca754c0a4c --- M frontend/src/components/watchlist/seperated.html 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/watchlist/seperated.html b/frontend/src/components/watchlist/seperated.html index b3f0b7e..1aa9933 100644 --- a/frontend/src/components/watchlist/seperated.html +++ b/frontend/src/components/watchlist/seperated.html @@ -1,6 +1,6 @@ div ng-controller=WatchlistCtrl as ctrl class=md-padding div layout=row layout-align=center center class=md-padding ng-if=ctrl.watchlist.loading -md-whiteframe class=md-whiteframe-z5 whitebox +md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' md-toolbar class='md-small-tall' div class=md-toolbar-tools h1 -- To view, visit https://gerrit.wikimedia.org/r/232937 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7faa1c81dae6e2c42fea502da6164bca754c0a4c Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix padding for the subdivided watchlists - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/232937 Change subject: Fix padding for the subdivided watchlists .. Fix padding for the subdivided watchlists Change-Id: I7faa1c81dae6e2c42fea502da6164bca754c0a4c --- M frontend/src/components/watchlist/seperated.html 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/37/232937/1 diff --git a/frontend/src/components/watchlist/seperated.html b/frontend/src/components/watchlist/seperated.html index b3f0b7e..1aa9933 100644 --- a/frontend/src/components/watchlist/seperated.html +++ b/frontend/src/components/watchlist/seperated.html @@ -1,6 +1,6 @@ div ng-controller=WatchlistCtrl as ctrl class=md-padding div layout=row layout-align=center center class=md-padding ng-if=ctrl.watchlist.loading -md-whiteframe class=md-whiteframe-z5 whitebox +md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' md-toolbar class='md-small-tall' div class=md-toolbar-tools h1 -- To view, visit https://gerrit.wikimedia.org/r/232937 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7faa1c81dae6e2c42fea502da6164bca754c0a4c Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix expand button size for traditional layout - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix expand button size for traditional layout .. Fix expand button size for traditional layout Change-Id: I01adc2e417ba69bbd83d5bc3277a34f3a35d4547 --- M frontend/src/app/index.css M frontend/src/components/watchlist/seperated.html M frontend/src/components/watchlist/unified.html 3 files changed, 13 insertions(+), 6 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 91f706b..0541ba6 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -149,14 +149,14 @@ border-top: 0; } -.watchlist-list-item-oneline { - min-height: 32px; -} - watchlist-entry { overflow: hidden; width: 100%; margin: 6px 0; +} + +.whitebox-oneline md-list-item { + min-height: 32px; } md-list-item.watchlist:first-child watchlist-entry { @@ -194,11 +194,18 @@ width: 25px; margin-right: 0; } + watchlist-entry .md-button.md-icon-button.expandbutton { height: unset; line-height: normal; } +.whitebox-oneline watchlist-entry .md-button.md-icon-button.expandbutton { + height: 19px; + min-height: unset; + margin-top: -3px; +} + watchlist-entry .ores { margin-right: 18px; } diff --git a/frontend/src/components/watchlist/seperated.html b/frontend/src/components/watchlist/seperated.html index e06a340..b3f0b7e 100644 --- a/frontend/src/components/watchlist/seperated.html +++ b/frontend/src/components/watchlist/seperated.html @@ -27,7 +27,7 @@ /md-toolbar md-list class=watchlist-container md-list-item layout=row class=watchlist - ng-class=[{'watchlist-list-item-oneline': ctrl.config.oneline}, ctrl.config.projectColors[event.project]] + ng-class=ctrl.config.projectColors[event.project] ng-repeat=event in ctrl.watchlist.perProject[project] | watchlist:ctrl.config track by event.id watchlist-entry ng-click=ctrl.clicked(event) md-ink-ripple/watchlist-entry md-divider/md-divider diff --git a/frontend/src/components/watchlist/unified.html b/frontend/src/components/watchlist/unified.html index 23dad7c..46bc08f 100644 --- a/frontend/src/components/watchlist/unified.html +++ b/frontend/src/components/watchlist/unified.html @@ -25,7 +25,7 @@ md-list class=watchlist-container infinite-scroll=ctrl.moreWatchlistEntries() infinite-scroll-immediate-check=false infinite-scroll-distance=1 md-list-item layout=row class=watchlist -ng-class=[{'watchlist-list-item-oneline': ctrl.config.oneline}, ctrl.config.projectColors[event.project]] +ng-class=ctrl.config.projectColors[event.project] ng-repeat=event in ctrl.watchlist.active track by event.id watchlist-entry ng-click=ctrl.clicked(event) md-ink-ripple/watchlist-entry md-divider/md-divider -- To view, visit https://gerrit.wikimedia.org/r/232720 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I01adc2e417ba69bbd83d5bc3277a34f3a35d4547 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix expand button size for traditional layout - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/232720 Change subject: Fix expand button size for traditional layout .. Fix expand button size for traditional layout Change-Id: I01adc2e417ba69bbd83d5bc3277a34f3a35d4547 --- M frontend/src/app/index.css M frontend/src/components/watchlist/seperated.html M frontend/src/components/watchlist/unified.html 3 files changed, 13 insertions(+), 6 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/20/232720/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 91f706b..0541ba6 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -149,14 +149,14 @@ border-top: 0; } -.watchlist-list-item-oneline { - min-height: 32px; -} - watchlist-entry { overflow: hidden; width: 100%; margin: 6px 0; +} + +.whitebox-oneline md-list-item { + min-height: 32px; } md-list-item.watchlist:first-child watchlist-entry { @@ -194,11 +194,18 @@ width: 25px; margin-right: 0; } + watchlist-entry .md-button.md-icon-button.expandbutton { height: unset; line-height: normal; } +.whitebox-oneline watchlist-entry .md-button.md-icon-button.expandbutton { + height: 19px; + min-height: unset; + margin-top: -3px; +} + watchlist-entry .ores { margin-right: 18px; } diff --git a/frontend/src/components/watchlist/seperated.html b/frontend/src/components/watchlist/seperated.html index e06a340..b3f0b7e 100644 --- a/frontend/src/components/watchlist/seperated.html +++ b/frontend/src/components/watchlist/seperated.html @@ -27,7 +27,7 @@ /md-toolbar md-list class=watchlist-container md-list-item layout=row class=watchlist - ng-class=[{'watchlist-list-item-oneline': ctrl.config.oneline}, ctrl.config.projectColors[event.project]] + ng-class=ctrl.config.projectColors[event.project] ng-repeat=event in ctrl.watchlist.perProject[project] | watchlist:ctrl.config track by event.id watchlist-entry ng-click=ctrl.clicked(event) md-ink-ripple/watchlist-entry md-divider/md-divider diff --git a/frontend/src/components/watchlist/unified.html b/frontend/src/components/watchlist/unified.html index 23dad7c..46bc08f 100644 --- a/frontend/src/components/watchlist/unified.html +++ b/frontend/src/components/watchlist/unified.html @@ -25,7 +25,7 @@ md-list class=watchlist-container infinite-scroll=ctrl.moreWatchlistEntries() infinite-scroll-immediate-check=false infinite-scroll-distance=1 md-list-item layout=row class=watchlist -ng-class=[{'watchlist-list-item-oneline': ctrl.config.oneline}, ctrl.config.projectColors[event.project]] +ng-class=ctrl.config.projectColors[event.project] ng-repeat=event in ctrl.watchlist.active track by event.id watchlist-entry ng-click=ctrl.clicked(event) md-ink-ripple/watchlist-entry md-divider/md-divider -- To view, visit https://gerrit.wikimedia.org/r/232720 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I01adc2e417ba69bbd83d5bc3277a34f3a35d4547 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add support for subdivided watchlists - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add support for subdivided watchlists .. Add support for subdivided watchlists Bug: T109188 Change-Id: Ie304ae098488c00a8fe924f6b30f254983d1a1c5 --- M frontend/src/app/filters.js M frontend/src/app/main/main.controller.js M frontend/src/app/main/main.html M frontend/src/app/services.js M frontend/src/components/notifications/notifications.html M frontend/src/components/settings/settings.html A frontend/src/components/watchlist/seperated.html R frontend/src/components/watchlist/unified.html M frontend/src/i18n/de.json M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 11 files changed, 89 insertions(+), 18 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js index 48a9021..8f3376f 100644 --- a/frontend/src/app/filters.js +++ b/frontend/src/app/filters.js @@ -4,7 +4,7 @@ .filter('urlEncode', urlEncodeFilter) .filter('list', listFilter) .filter('watchlist', watchlistFilter) - .filter('projects', projectsFilter) + .filter('projectList', projectsFilter) ; /** @@ -99,7 +99,11 @@ } function projectsFilter () { - return function (items, projects) { -return items.filter(projectsFilterFunc, projects) + return function (items, config) { +return items.filter(projectListFilterFunc, config) }; } + +function projectListFilterFunc (items) { + return (this.projectsSelected.indexOf(items) -1); +} diff --git a/frontend/src/app/main/main.controller.js b/frontend/src/app/main/main.controller.js index 373ac21..ac0db54 100644 --- a/frontend/src/app/main/main.controller.js +++ b/frontend/src/app/main/main.controller.js @@ -1,7 +1,8 @@ 'use strict'; angular.module('crosswatch') - .controller('MainCtrl', function (textDirection) { + .controller('MainCtrl', function (textDirection, dataService) { var vm = this; vm.textDirection = textDirection; +vm.config = dataService.config; }); diff --git a/frontend/src/app/main/main.html b/frontend/src/app/main/main.html index 01e1c92..7565173 100644 --- a/frontend/src/app/main/main.html +++ b/frontend/src/app/main/main.html @@ -3,7 +3,8 @@ div layout=column flex class=md-padding role=main div ng-include='components/settings/settings.html'/div div ng-include='components/notifications/notifications.html'/div -div ng-include='components/watchlist/watchlist.html'/div +div ng-if=!ctrl.config.subdivided ng-include='components/watchlist/unified.html'/div +div ng-if=ctrl.config.subdivided ng-include='components/watchlist/seperated.html'/div /div ng-include src='components/footer/footer.html'/ng-include diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index 1859ce2..3156bda 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -44,6 +44,10 @@ */ vm.watchlist.active = []; /** + * Watchlist sorted as array per project + */ + vm.watchlist.perProject = {}; + /** * loading spinner */ vm.watchlist.loading = true; @@ -106,7 +110,12 @@ /** * Automatically show diff, if edit is unreviewed and user has review right */ -flaggedrevsDiff: true +flaggedrevsDiff: true, +/** + * true: show subdivided wikis watchlist + * false: show unified wikis watchlist + */ +subdivided: false }; // Get config from localstorage or create from defaultconfig if (localStorageService.get('config') !== null) { @@ -176,6 +185,12 @@ for (var i=0; i entries.length; i++) { vm.watchlist.dict[entries[i].id] = entries[i]; } + +if (!Array.isArray(vm.watchlist.perProject[project])) { + vm.watchlist.perProject[project] = entries; +} else { + Array.prototype.push.apply(vm.watchlist.perProject[project], entries); +} }; /** @@ -215,10 +230,11 @@ vm.resetWatchlist = function () { vm.watchlist.original = []; vm.watchlist.filtered = []; -vm.watchlist.dict = []; +vm.watchlist.dict = {}; vm.watchlist.active.length = 0; /* preserve pointer, slow due to GC */ vm.notifications.length = 0; vm.watchlist.loading = true; +vm.watchlist.perProject = {}; vm.queryWatchlist(); vm.saveConfig(); }; diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index 9153d1f..4409e9d 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -1,6 +1,6 @@ -div ng-controller=NotificationsCtrl as ctrl layout=row layout-align=center center class=md-padding - md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' - ng-if=ctrl.notifications.length +div ng-controller=NotificationsCtrl as ctrl layout=row
[MediaWiki-commits] [Gerrit] Add support for seperated watchlists - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/231789 Change subject: Add support for seperated watchlists .. Add support for seperated watchlists Change-Id: Ie304ae098488c00a8fe924f6b30f254983d1a1c5 --- M frontend/src/app/filters.js M frontend/src/app/main/main.controller.js M frontend/src/app/main/main.html M frontend/src/app/services.js M frontend/src/components/notifications/notifications.html M frontend/src/components/settings/settings.html A frontend/src/components/watchlist/seperated.html R frontend/src/components/watchlist/unified.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 10 files changed, 79 insertions(+), 11 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/89/231789/1 diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js index 48a9021..7500018 100644 --- a/frontend/src/app/filters.js +++ b/frontend/src/app/filters.js @@ -4,7 +4,7 @@ .filter('urlEncode', urlEncodeFilter) .filter('list', listFilter) .filter('watchlist', watchlistFilter) - .filter('projects', projectsFilter) + .filter('projectList', projectsFilter) ; /** @@ -99,7 +99,13 @@ } function projectsFilter () { - return function (items, projects) { -return items.filter(projectsFilterFunc, projects) + return function (items, config) { +console.log(config); +console.log(items); +return items.filter(projectListFilterFunc, config) }; } + +function projectListFilterFunc (items) { + return (this.projectsSelected.indexOf(items) -1); +} diff --git a/frontend/src/app/main/main.controller.js b/frontend/src/app/main/main.controller.js index 373ac21..ac0db54 100644 --- a/frontend/src/app/main/main.controller.js +++ b/frontend/src/app/main/main.controller.js @@ -1,7 +1,8 @@ 'use strict'; angular.module('crosswatch') - .controller('MainCtrl', function (textDirection) { + .controller('MainCtrl', function (textDirection, dataService) { var vm = this; vm.textDirection = textDirection; +vm.config = dataService.config; }); diff --git a/frontend/src/app/main/main.html b/frontend/src/app/main/main.html index 01e1c92..94af788 100644 --- a/frontend/src/app/main/main.html +++ b/frontend/src/app/main/main.html @@ -3,7 +3,8 @@ div layout=column flex class=md-padding role=main div ng-include='components/settings/settings.html'/div div ng-include='components/notifications/notifications.html'/div -div ng-include='components/watchlist/watchlist.html'/div +div ng-if=ctrl.config.unified ng-include='components/watchlist/unified.html'/div +div ng-if=!ctrl.config.unified ng-include='components/watchlist/seperated.html'/div /div ng-include src='components/footer/footer.html'/ng-include diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index 1859ce2..0a9d5fa 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -44,6 +44,11 @@ */ vm.watchlist.active = []; /** + * Watchlist sorted as array per project + */ + vm.watchlist.perProject = {}; + vm.watchlist.projects = []; + /** * loading spinner */ vm.watchlist.loading = true; @@ -106,7 +111,12 @@ /** * Automatically show diff, if edit is unreviewed and user has review right */ -flaggedrevsDiff: true +flaggedrevsDiff: true, +/** + * true: show unified wikis diff + * false: show seperated wikis diff + */ +unified: true }; // Get config from localstorage or create from defaultconfig if (localStorageService.get('config') !== null) { @@ -176,6 +186,13 @@ for (var i=0; i entries.length; i++) { vm.watchlist.dict[entries[i].id] = entries[i]; } + +if (!Array.isArray(vm.watchlist.perProject[project])) { + vm.watchlist.perProject[project] = entries; + vm.watchlist.projects.push(project); +} else { + Array.prototype.push.apply(vm.watchlist.perProject[project], entries); +} }; /** diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index 9153d1f..4409e9d 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -1,6 +1,6 @@ -div ng-controller=NotificationsCtrl as ctrl layout=row layout-align=center center class=md-padding - md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' - ng-if=ctrl.notifications.length +div ng-controller=NotificationsCtrl as ctrl layout=row layout-align=center center class=md-padding + ng-if=ctrl.notifications.length + md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' md-toolbar class='md-small-tall' div class=md-toolbar-tools h1 diff --git
[MediaWiki-commits] [Gerrit] Add Extension:PageTriage logevents support - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/230532 Change subject: Add Extension:PageTriage logevents support .. Add Extension:PageTriage logevents support Bug: T108547 Change-Id: I6b75325497995f6da2d3b8dc533ec9c577353645 --- M frontend/src/components/watchlist/logevent.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 3 files changed, 20 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/32/230532/1 diff --git a/frontend/src/components/watchlist/logevent.directive.html b/frontend/src/components/watchlist/logevent.directive.html index 5e4a762..2afea8f 100644 --- a/frontend/src/components/watchlist/logevent.directive.html +++ b/frontend/src/components/watchlist/logevent.directive.html @@ -72,6 +72,18 @@ span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span +span ng-switch-when=pagetriage-curation + span ng-switch=::event.logaction +span ng-switch-when=reviewed translate=LOGEVENT_PAGETRIAGE_REVIEWED translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-when=unreviewed translate=LOGEVENT_PAGETRIAGE_UNREVIEWED translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-when=tag translate=LOGEVENT_PAGETRIAGE_UNREVIEWED translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-when=delete translate=LOGEVENT_PAGETRIAGE_DELETE translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- + /span +/span +span ng-switch-when=pagetriage-deletion +span translate=LOGEVENT_PAGETRIAGE_DELETE translate-values=event translate-interpolation=custom translate-compile/span +/span span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span span ng-if=::event.parsedcomment class=comment(comment/comment)/span diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index a2e9537..8ffad14 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -50,6 +50,10 @@ LOGEVENT_TRANSLATION_MARK: user marked page for translation, LOGEVENT_TRANSLATION_ASSOCIATE: user added translatable page page to aggregate group {{aggregategroup}}, LOGEVENT_TRANSLATION_DISSOCIATE: user removed translatable page page from aggregate group {{aggregategroup}}, + LOGEVENT_PAGETRIAGE_REVIEWED: user marked page as reviewed, + LOGEVENT_PAGETRIAGE_UNREVIEWED: user marked page as unreviewed, + LOGEVENT_PAGETRIAGE_TAG: user tagged page with tags {{tags|list}}, + LOGEVENT_PAGETRIAGE_DELETE: user marked page for deletion with tags {{tags|list}}, OAUTH_FAILURE_TITLE: OAuth authentication failure, OAUTH_FAILURE_CONTENT: Authentication failed, you might have revoked the authorization for this application. Please logout and sign in again. Error information: {{error}}, CLOSE: Close, diff --git a/frontend/src/i18n/qqq.json b/frontend/src/i18n/qqq.json index 987f2aa..a60c829 100644 --- a/frontend/src/i18n/qqq.json +++ b/frontend/src/i18n/qqq.json @@ -18,6 +18,10 @@ ANON_EDITS: Checkbox to filter out anonymous user edits, USER_EDITS: Checkbox to filter out registered user edits, FLAGS: Option to show flags instead of language names (e.g. UK flag for english, flag of Germany for german, …), + LOGEVENT_PAGETRIAGE_REVIEWED: From Extension:PageTriage, log action when someone marks a page as reviewed, {{LogEntry}}., + LOGEVENT_PAGETRIAGE_UNREVIEWED: From Extension:PageTriage, log action when someone marks a page as unreviewed, + LOGEVENT_PAGETRIAGE_TAG: From Extension:PageTriage, log action when someone tags a page with maintenance tags. {{Logentry}}, + LOGEVENT_PAGETRIAGE_DELETE: From Extension:PageTriage, log action when some marks a page for deletion, {{LogEntry}}, OAUTH_FAILURE_TITLE: Title for error message, OAUTH_FAILURE_CONTENT: Error message that MediaWiki login failed, CLOSE: Close dialog button, -- To view, visit https://gerrit.wikimedia.org/r/230532 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6b75325497995f6da2d3b8dc533ec9c577353645 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add Extension:PageTriage logevents support - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add Extension:PageTriage logevents support .. Add Extension:PageTriage logevents support Bug: T108547 Change-Id: I6b75325497995f6da2d3b8dc533ec9c577353645 --- M frontend/src/components/watchlist/logevent.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 3 files changed, 20 insertions(+), 0 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/watchlist/logevent.directive.html b/frontend/src/components/watchlist/logevent.directive.html index 5e4a762..2afea8f 100644 --- a/frontend/src/components/watchlist/logevent.directive.html +++ b/frontend/src/components/watchlist/logevent.directive.html @@ -72,6 +72,18 @@ span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span +span ng-switch-when=pagetriage-curation + span ng-switch=::event.logaction +span ng-switch-when=reviewed translate=LOGEVENT_PAGETRIAGE_REVIEWED translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-when=unreviewed translate=LOGEVENT_PAGETRIAGE_UNREVIEWED translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-when=tag translate=LOGEVENT_PAGETRIAGE_UNREVIEWED translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-when=delete translate=LOGEVENT_PAGETRIAGE_DELETE translate-values=event translate-interpolation=custom translate-compile/span +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- + /span +/span +span ng-switch-when=pagetriage-deletion +span translate=LOGEVENT_PAGETRIAGE_DELETE translate-values=event translate-interpolation=custom translate-compile/span +/span span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span span ng-if=::event.parsedcomment class=comment(comment/comment)/span diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index a2e9537..8ffad14 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -50,6 +50,10 @@ LOGEVENT_TRANSLATION_MARK: user marked page for translation, LOGEVENT_TRANSLATION_ASSOCIATE: user added translatable page page to aggregate group {{aggregategroup}}, LOGEVENT_TRANSLATION_DISSOCIATE: user removed translatable page page from aggregate group {{aggregategroup}}, + LOGEVENT_PAGETRIAGE_REVIEWED: user marked page as reviewed, + LOGEVENT_PAGETRIAGE_UNREVIEWED: user marked page as unreviewed, + LOGEVENT_PAGETRIAGE_TAG: user tagged page with tags {{tags|list}}, + LOGEVENT_PAGETRIAGE_DELETE: user marked page for deletion with tags {{tags|list}}, OAUTH_FAILURE_TITLE: OAuth authentication failure, OAUTH_FAILURE_CONTENT: Authentication failed, you might have revoked the authorization for this application. Please logout and sign in again. Error information: {{error}}, CLOSE: Close, diff --git a/frontend/src/i18n/qqq.json b/frontend/src/i18n/qqq.json index 987f2aa..a60c829 100644 --- a/frontend/src/i18n/qqq.json +++ b/frontend/src/i18n/qqq.json @@ -18,6 +18,10 @@ ANON_EDITS: Checkbox to filter out anonymous user edits, USER_EDITS: Checkbox to filter out registered user edits, FLAGS: Option to show flags instead of language names (e.g. UK flag for english, flag of Germany for german, …), + LOGEVENT_PAGETRIAGE_REVIEWED: From Extension:PageTriage, log action when someone marks a page as reviewed, {{LogEntry}}., + LOGEVENT_PAGETRIAGE_UNREVIEWED: From Extension:PageTriage, log action when someone marks a page as unreviewed, + LOGEVENT_PAGETRIAGE_TAG: From Extension:PageTriage, log action when someone tags a page with maintenance tags. {{Logentry}}, + LOGEVENT_PAGETRIAGE_DELETE: From Extension:PageTriage, log action when some marks a page for deletion, {{LogEntry}}, OAUTH_FAILURE_TITLE: Title for error message, OAUTH_FAILURE_CONTENT: Error message that MediaWiki login failed, CLOSE: Close dialog button, -- To view, visit https://gerrit.wikimedia.org/r/230532 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6b75325497995f6da2d3b8dc533ec9c577353645 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add crosswatch project - change (translatewiki)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229960 Change subject: Add crosswatch project .. Add crosswatch project Bug: T108247 Change-Id: I38e1e13fa2f562fea9547bff04abdcbcacbd3659 --- M REPOCONF M TranslateSettings.php M bin/repocommit M bin/repocreate M bin/repoexport A groups/crosswatch/Checker.php A groups/crosswatch/Suggester.php A groups/crosswatch/crosswatch.yaml 8 files changed, 73 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/translatewiki refs/changes/60/229960/1 diff --git a/REPOCONF b/REPOCONF index 3fa5185..2e4a53c 100644 --- a/REPOCONF +++ b/REPOCONF @@ -8,6 +8,7 @@ REPO_BLOCKLY=git://github.com/google/blockly.git REPO_BLOCKLYGAMES=git://github.com/google/blockly-games.git +REPO_CROSSWATCH=https://gerrit.wikimedia.org/r/labs/tools/crosswatch REPO_ENTRYSCAPE=https://bitbucket.org/metasolutions/entryscape.git REPO_EOL=git://github.com/EOL/eol.git REPO_ETHERPADLITE=git://github.com/ether/etherpad-lite.git diff --git a/TranslateSettings.php b/TranslateSettings.php index 0027f16..edfb6ae 100644 --- a/TranslateSettings.php +++ b/TranslateSettings.php @@ -335,3 +335,6 @@ $wgCapitalLinkOverrides[NS_ENTRYSCAPE] = false; $wgCapitalLinkOverrides[NS_ENTRYSCAPE_TALK] = false; $wgTranslateGroupFiles[] = $GROUPS/EntryScape/EntryScape.yaml; + +wfAddNamespace( 1266, 'crosswatch' ); +$wgTranslateGroupFiles[] = $GROUPS/crosswatch/crosswatch.yaml; diff --git a/bin/repocommit b/bin/repocommit index bb19c71..7d98bb1 100755 --- a/bin/repocommit +++ b/bin/repocommit @@ -79,6 +79,7 @@ # TODO: Move to separate file? GERRITPROJECTS=\ +crosswatch \ pywikibot \ wikimania \ wikipedia-android \ diff --git a/bin/repocreate b/bin/repocreate index 6c9f700..a264617 100755 --- a/bin/repocreate +++ b/bin/repocreate @@ -32,6 +32,11 @@ checkVar 'REPO_BLOCKLYGAMES' git clone $REPO_BLOCKLYGAMES blockly-games +elif [ $PROJECT = crosswatch ] +then + checkVar 'REPO_CROSSWATCH' + $CLUPDATE_GERRIT $REPO_CROSSWATCH $DIR/$PROJECT + elif [ $PROJECT = eol ] then checkVar 'REPO_EOL' diff --git a/bin/repoexport b/bin/repoexport index 26cbec1..a29a74a 100755 --- a/bin/repoexport +++ b/bin/repoexport @@ -24,6 +24,11 @@ then php $EXPORTER --target . --group=out-blockly* --lang='*' --skip en $THRESHOLD + +elif [ $PROJECT = crosswatch ] +then + php $EXPORTER --target . --group=out-crosswatch --lang='*' --skip en $THRESHOLD + elif [ $PROJECT = entryscape ] then php $EXPORTER --target . --group=entryscape-* --lang='*' --skip en $THRESHOLD diff --git a/groups/crosswatch/Checker.php b/groups/crosswatch/Checker.php new file mode 100644 index 000..1d46204 --- /dev/null +++ b/groups/crosswatch/Checker.php @@ -0,0 +1,19 @@ +?php +/** + * Message checks for crosswatch + * + * @ingroup MessageCheckers + */ +class CrosswatchMessageChecker extends MessageChecker { + /** +* Checks for missing and unknown variables in translations. +* Variable sytax examples: user, user name={{title}}, {{number}} or {{flags|list}} +* +* @param $messages \array Iterable list of TMessage objects. +* @param $code \string Language code of the translations. +* @param $warnings \array Array where warnings are appended to. +*/ + protected function CrosswatchVariablesCheck( $messages, $code, $warnings ) { + return parent::parameterCheck( $messages, $code, $warnings, '/[a-zA-Z\=\{\}\s_\|]{2,}|{{[a-zA-Z_\|]+}}/'); + } +} diff --git a/groups/crosswatch/Suggester.php b/groups/crosswatch/Suggester.php new file mode 100644 index 000..e6cf2bc --- /dev/null +++ b/groups/crosswatch/Suggester.php @@ -0,0 +1,16 @@ +?php +/** + * Insertables for crosswatch + */ +class CrosswatchInsertablesSuggester { + public function getInsertables( $text ) { + $matches = array(); + // user name={{title}}, user, /a, {{number}} + preg_match_all( '/\/?[a-zA-Z\=\{\}\s_\|]+|{{[a-zA-Z_\|]+}}/', $text, $matches, PREG_SET_ORDER ); + $insertables = array_map( function( $match ) { + return new Insertable( $match[0], $match[0] ); + }, $matches ); + + return $insertables; + } +} diff --git a/groups/crosswatch/crosswatch.yaml b/groups/crosswatch/crosswatch.yaml new file mode 100644 index 000..bd2ee1b --- /dev/null +++ b/groups/crosswatch/crosswatch.yaml @@ -0,0 +1,23 @@ +--- +BASIC: + id: out-crosswatch + label: crosswatch + description: {{Special:MyLanguage/Translations:Group descriptions/Crosswatch/en}} + namespace: NS_CROSSWATCH + class: FileBasedMessageGroup + +FILES: + class: JsonFFS + sourcePattern: %GROUPROOT%/crosswatch/frontend/src/i18n/%CODE%.json + +CHECKER: + class: CrosswatchMessageChecker + checks: +- CrosswatchVariablesCheck + +INSERTABLES: + class:
[MediaWiki-commits] [Gerrit] Set red as theme accent color - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229406 Change subject: Set red as theme accent color .. Set red as theme accent color People are complaining about the default pink color. Change-Id: I77892de27d0f545b439fb4e4cfeaede35806ec8c --- M frontend/src/app/index.js 1 file changed, 7 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/06/229406/1 diff --git a/frontend/src/app/index.js b/frontend/src/app/index.js index ef185a8..f712b5d 100644 --- a/frontend/src/app/index.js +++ b/frontend/src/app/index.js @@ -15,6 +15,7 @@ .config(routeConfig) .config(locationConfig) .config(storageConfig) + .config(themeConfig) .factory('socket', socketFactory) .directive('stopEvent', stopEventDirective) ; @@ -48,6 +49,12 @@ .setStorageCookie(30, '/crosswatch/'); } +function themeConfig ($mdThemingProvider) { + $mdThemingProvider.theme('default') +.primaryPalette('indigo') +.accentPalette('red'); +} + function socketFactory (socketFactory, $browser, $location) { var baseHref = $browser.baseHref(); var sockjsUrl = baseHref + 'sockjs'; -- To view, visit https://gerrit.wikimedia.org/r/229406 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I77892de27d0f545b439fb4e4cfeaede35806ec8c Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Set fontsize to 13px, fix minor bugs - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229408 Change subject: Set fontsize to 13px, fix minor bugs .. Set fontsize to 13px, fix minor bugs Sets fontsize to 13px, font was too large sometimes in Firefox. Fixes padding issues which come with that. Also don't show connectionerror, if not logged in. Change-Id: I7043e61b2546d8c134948af3aa6f6ab591979911 --- M frontend/gulp/server.js M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/components/settings/settings.controller.js M frontend/src/i18n/de.json M frontend/src/i18n/en.json 6 files changed, 21 insertions(+), 16 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/08/229408/1 diff --git a/frontend/gulp/server.js b/frontend/gulp/server.js index 531abc8..251dcf8 100644 --- a/frontend/gulp/server.js +++ b/frontend/gulp/server.js @@ -27,6 +27,11 @@ middleware: middleware, routes: routes }, +ghostMode: { + clicks: false, + forms: false, + scroll: false +}, browser: browser }); } diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 25ced70..91f706b 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -1,12 +1,10 @@ html { - font-size: 62.5%; - line-height: 1.4; + font-size: 13px; } body { background-color: #edecec; - font-family: 'Roboto', sans-serif; - font-size: 1.4rem; + font-family: 'Lato', sans-serif; } div[role=main] { @@ -94,7 +92,7 @@ a { color: #0645ad; text-decoration: none; - font-weight: 400; + font-weight: normal; border-bottom: none; -webkit-transition: border-bottom 0.25s; -moz-transition: border-bottom 0.25s; @@ -158,12 +156,12 @@ watchlist-entry { overflow: hidden; width: 100%; - margin: 4px 0; + margin: 6px 0; } md-list-item.watchlist:first-child watchlist-entry { - margin-top: 6px; - margin-bottom: 4px; + margin-top: 8px; + margin-bottom: 6px; } watchlist-entry a, diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 287e064..07127af 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -36,8 +36,10 @@ */ socket.setHandler('open', function () { $log.info('sockjs connected'); -dataService.queryWatchlist(); -$timeout(errorHandler, 15000); // show error if no response after 15 secs +if (authService.isLoggedIn()) { + dataService.queryWatchlist(); + $timeout(errorHandler, 15000); // show error if no response after 15 secs +} }); /** diff --git a/frontend/src/components/settings/settings.controller.js b/frontend/src/components/settings/settings.controller.js index 093ca96..c2e0a5e 100644 --- a/frontend/src/components/settings/settings.controller.js +++ b/frontend/src/components/settings/settings.controller.js @@ -11,11 +11,11 @@ vm.namespacesList = []; vm.periodList = []; -debounce(updatePeriodList, 50)(); -debounce(updateNamespaceList, 50)(); +debounce(updatePeriodList, 150)(); +debounce(updateNamespaceList, 150)(); $rootScope.$on('$translateChangeSuccess', function () { - debounce(updatePeriodList, 50)(); - debounce(updateNamespaceList, 50)(); + debounce(updatePeriodList, 20)(); + debounce(updateNamespaceList, 20)(); }); function updatePeriodList () { diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index cf6cffb..0534c7b 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -6,7 +6,7 @@ REPORT_BUGS: Bugs Melden, SIGN_IN: Anmelden, SIGN_OUT: Abmelden, - DESCRIPTION: Eine erweiterte Beobachtungsliste für Wikimedia Projekte., + DESCRIPTION: Eine cross-wiki Beobachtungsliste für Wikimedia Projekte., SIGN_IN_BUTTON: Mit OAuth anmelden, MINOREDIT_FLAG: K, BOTEDIT_FLAG: B, diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 7f8c878..a2e9537 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -6,7 +6,7 @@ REPORT_BUGS: Report Bugs, SIGN_IN: Sign in, SIGN_OUT: Logout, - DESCRIPTION: An enhanced watchlist for Wikimedia projects., + DESCRIPTION: A cross-wiki watchlist for Wikimedia projects., SIGN_IN_BUTTON: Sign in with OAuth, MINOREDIT_FLAG: m, BOTEDIT_FLAG: b, -- To view, visit https://gerrit.wikimedia.org/r/229408 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7043e61b2546d8c134948af3aa6f6ab591979911 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add expand/collapse button for diff preview - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229407 Change subject: Add expand/collapse button for diff preview .. Add expand/collapse button for diff preview Adds button to expand the view and show a diff, does the same thing as clicking on a edit/log event. Adds button to collapse the expanded view. Bug: T107735 Change-Id: Ic6c88b445439f7023e5552f8fc7ede5940fcdaf0 --- M frontend/src/app/index.css M frontend/src/components/watchlist/entry.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 4 files changed, 47 insertions(+), 35 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/07/229407/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 94396ce..25ced70 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -192,15 +192,13 @@ outline:none; } -watchlist-entry .md-button.md-icon-button { - margin: 0 6px; - /* height: 48px; */ - min-width: 0; - /* line-height: 48px; */ - padding-left: 0; - padding-right: 0; - width: 48px; - border-radius: 50%; +watchlist-entry .md-button.md-icon-button.rightbutton { + width: 25px; + margin-right: 0; +} +watchlist-entry .md-button.md-icon-button.expandbutton { + height: unset; + line-height: normal; } watchlist-entry .ores { diff --git a/frontend/src/components/watchlist/entry.directive.html b/frontend/src/components/watchlist/entry.directive.html index 283537a..b724075 100644 --- a/frontend/src/components/watchlist/entry.directive.html +++ b/frontend/src/components/watchlist/entry.directive.html @@ -38,36 +38,46 @@ watchlist-logevent ng-if=::event.type === 'log'/watchlist-logevent /div /div - div layout=column layout-align=start end ng-if=event.showDiff event.type === 'edit' + div layout=column layout-align=start end div stop-event layout=row layout-align=end start - md-button class=md-icon-button title={{'EDIT' | translate}} - href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=edit target=_blank -md-icon md-font-library=material-iconsedit/md-icon - /md-button - md-button class=md-icon-button title={{'UNDO' | translate}} - href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=editundoafter={{::event.old_revid}}undo={{::event.revid}} target=_blank -md-icon md-font-library=material-iconsundo/md-icon - /md-button - md-button class=md-icon-button title={{'WATCHLIST_REMOVE' | translate}} - ng-hide=event.isUnwatched ng-click=ctrl.watchPage(event, true) -md-icon md-font-library=material-iconsstar/md-icon - /md-button - md-button class=md-icon-button title={{'WATCHLIST_ADD' | translate}} - ng-show=event.isUnwatched ng-click=ctrl.watchPage(event, false) -md-icon md-font-library=material-iconsstar_border/md-icon - /md-button - md-button ng-if=event.stableRevid class=md-raised md-accent - href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}oldid={{::event.stableRevid}}diff=cur target=_blank -{{'PENDING_EDITS' | translate}} + div stop-event layout=row layout-align=end start ng-if=event.showDiff event.type === 'edit' +md-button class=md-icon-button title={{'EDIT' | translate}} + href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=edit target=_blank + md-icon md-font-library=material-iconsedit/md-icon +/md-button +md-button class=md-icon-button title={{'UNDO' | translate}} + href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=editundoafter={{::event.old_revid}}undo={{::event.revid}} target=_blank + md-icon md-font-library=material-iconsundo/md-icon +/md-button +md-button class=md-icon-button title={{'WATCHLIST_REMOVE' | translate}} + ng-hide=event.isUnwatched ng-click=ctrl.watchPage(event, true) + md-icon md-font-library=material-iconsstar/md-icon +/md-button +md-button class=md-icon-button title={{'WATCHLIST_ADD' | translate}} + ng-show=event.isUnwatched ng-click=ctrl.watchPage(event, false) + md-icon md-font-library=material-iconsstar_border/md-icon +/md-button +md-button ng-if=event.stableRevid class=md-raised md-accent target=_blank + href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}oldid={{::event.stableRevid}}diff=cur + translate=PENDING_EDITS +/md-button +md-button class=md-icon-button rightbutton + ng-click=ctrl.clicked(event) title={{'COLLAPSE' | translate}} + md-icon
[MediaWiki-commits] [Gerrit] Fix de translations - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix de translations .. Fix de translations Change-Id: I1af3af77da5a2d8870989818e78d511d5c6b25c8 --- M frontend/src/i18n/de.json 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index b152201..cf6cffb 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -19,8 +19,8 @@ SHOW_LAST_DAYS: Zeige letzte {{number}} Tage, MINOR_EDITS: Kleine Änderungen, BOT_EDITS: Bots, - ANON_EDITS: Unangemeldeten Benutzer, - USER_EDITS: Registrierte Benutzern, + ANON_EDITS: Unangemeldete Benutzer, + USER_EDITS: Registrierte Benutzer, FLAGS: Zeige Flaggen anstelle des Names der Sprache, WATCHLIST: Beobachtungsliste, SEARCH_WATCHLIST: Beobachtungsliste durchsuchen, -- To view, visit https://gerrit.wikimedia.org/r/229296 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1af3af77da5a2d8870989818e78d511d5c6b25c8 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Siebrand siebr...@kitano.nl Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Log and ignore partial ORES errors - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Log and ignore partial ORES errors .. Log and ignore partial ORES errors I'm seeing a lot of intermittent ORES error (see one below) for a part of the requested revids, works fine when doing the same request again. I'm also seeing 400 or 502 responses, which seem to be more persisting. Logging it for now and don't cause the whole task to fail. { 674043459: { error: { message: Failed to process revision.metadata: RevisionDocumentNotFound, type: class 'revscoring.dependencies.errors.DependencyError' } } } Change-Id: I570bd225c52f1c3581f32ab0dd4f3784cf7dea6c --- M backend/celery/tasks.py 1 file changed, 6 insertions(+), 2 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 52722db..2cf81c6 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -131,7 +131,7 @@ 'wllimit': 500, 'wlend': mw.timestamp(daysdelta=-days), 'wlprop': ids|flags|title|parsedcomment|userid|user|timestamp| + -sizes|notificationtimestamp|loginfo + sizes|notificationtimestamp|loginfo } if allrev: @@ -193,7 +193,7 @@ 'notalertunreadfirst': , 'notmessagecontinue': , 'notlimit': 15 -} +} response = mw.query(params) result = response['query']['notifications']['list'] @@ -308,6 +308,10 @@ response = mw.ores_scores(wiki['dbname'], edits.keys()) for revid, value in response.items(): +if 'error' in value: +logger.warning('ORES error {} for revid {}, response: {}'.format( +value['error']['message'], revid, value)) +continue if value['probability']['true'] = 0.8: revid = int(revid) probablity = {:.0%}.format(value['probability']['true']) -- To view, visit https://gerrit.wikimedia.org/r/229295 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I570bd225c52f1c3581f32ab0dd4f3784cf7dea6c Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add ability to blacklist wikis - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add ability to blacklist wikis .. Add ability to blacklist wikis For now only loginwiki, which throws errors. Change-Id: I4662a9c33eaac043b5e69322fb38820d209d5114 --- M backend/celery/api.py 1 file changed, 14 insertions(+), 11 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index f56227b..6d65fe4 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -182,6 +182,7 @@ params = {'action': sitematrix} data = self.query(params) +blacklist_wikis = ['loginwiki'] flaggedrevs_wikis = self._flaggedrevs_wikis() wikis = {} @@ -191,19 +192,17 @@ if 'code' in val: for site in val['site']: -wiki = self._create_wiki(site, val['code'], val['name']) -if site['dbname'] in flaggedrevs_wikis: -wiki['flaggedrevs'] = True -wikis[site['dbname']] = wiki +wikis[site['dbname']] = self._create_wiki( +site, val['code'], val['name'], +flaggedrevs_wikis, blacklist_wikis) else: for site in val: -wiki = self._create_wiki(site, '', '') -if site['dbname'] in flaggedrevs_wikis: -wiki['flaggedrevs'] = True -wikis[site['dbname']] = wiki +wikis[site['dbname']] = self._create_wiki( +site, '', '', flaggedrevs_wikis, blacklist_wikis) return wikis -def _create_wiki(self, site, langcode, langname): +def _create_wiki(self, site, langcode, langname, flaggedrevs_wikis, + blacklist_wikis): wiki = { 'lang': langcode, 'langname': langname, @@ -214,9 +213,13 @@ if wiki['group'] == 'wiki': wiki['group'] = 'wikipedia' -inactive_wikis = ['closed', 'private', 'fishbowl'] -if any([key in site for key in inactive_wikis]): +inactive_codes = ['closed', 'private', 'fishbowl'] +if any([key in site for key in inactive_codes]): wiki['closed'] = True +if site['dbname'] in blacklist_wikis: +wiki['closed'] = True +if site['dbname'] in flaggedrevs_wikis: +wiki['flaggedrevs'] = True return wiki def _flaggedrevs_wikis(self): -- To view, visit https://gerrit.wikimedia.org/r/229297 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4662a9c33eaac043b5e69322fb38820d209d5114 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Set red as theme accent color - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Set red as theme accent color .. Set red as theme accent color People are complaining about the default pink color. Change-Id: I77892de27d0f545b439fb4e4cfeaede35806ec8c --- M frontend/src/app/index.js 1 file changed, 7 insertions(+), 0 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.js b/frontend/src/app/index.js index ef185a8..f712b5d 100644 --- a/frontend/src/app/index.js +++ b/frontend/src/app/index.js @@ -15,6 +15,7 @@ .config(routeConfig) .config(locationConfig) .config(storageConfig) + .config(themeConfig) .factory('socket', socketFactory) .directive('stopEvent', stopEventDirective) ; @@ -48,6 +49,12 @@ .setStorageCookie(30, '/crosswatch/'); } +function themeConfig ($mdThemingProvider) { + $mdThemingProvider.theme('default') +.primaryPalette('indigo') +.accentPalette('red'); +} + function socketFactory (socketFactory, $browser, $location) { var baseHref = $browser.baseHref(); var sockjsUrl = baseHref + 'sockjs'; -- To view, visit https://gerrit.wikimedia.org/r/229406 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I77892de27d0f545b439fb4e4cfeaede35806ec8c Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix edge case bug in flaggedrevs task - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix edge case bug in flaggedrevs task .. Fix edge case bug in flaggedrevs task Sometimes, we don't get a dict back, but a list if the result is empty (e.g. only log events). Change-Id: I3b64972247bcac4fba00a08352d710739f66a9ca --- M backend/celery/tasks.py 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 2cf81c6..841a83d 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -364,6 +364,8 @@ unstable = {} for response in mw.query_gen(params): +if not isinstance(response['pages'], dict): +continue for pageid, item in response['pages'].items(): flagged = item.get('flagged', {}) if 'pending_since' in flagged: -- To view, visit https://gerrit.wikimedia.org/r/229298 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3b64972247bcac4fba00a08352d710739f66a9ca Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add expand/collapse button for diff preview - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add expand/collapse button for diff preview .. Add expand/collapse button for diff preview Adds button to expand the view and show a diff, does the same thing as clicking on a edit/log event. Adds button to collapse the expanded view. Bug: T107735 Change-Id: Ic6c88b445439f7023e5552f8fc7ede5940fcdaf0 --- M frontend/src/app/index.css M frontend/src/components/watchlist/entry.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 4 files changed, 47 insertions(+), 35 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 94396ce..25ced70 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -192,15 +192,13 @@ outline:none; } -watchlist-entry .md-button.md-icon-button { - margin: 0 6px; - /* height: 48px; */ - min-width: 0; - /* line-height: 48px; */ - padding-left: 0; - padding-right: 0; - width: 48px; - border-radius: 50%; +watchlist-entry .md-button.md-icon-button.rightbutton { + width: 25px; + margin-right: 0; +} +watchlist-entry .md-button.md-icon-button.expandbutton { + height: unset; + line-height: normal; } watchlist-entry .ores { diff --git a/frontend/src/components/watchlist/entry.directive.html b/frontend/src/components/watchlist/entry.directive.html index 283537a..b724075 100644 --- a/frontend/src/components/watchlist/entry.directive.html +++ b/frontend/src/components/watchlist/entry.directive.html @@ -38,36 +38,46 @@ watchlist-logevent ng-if=::event.type === 'log'/watchlist-logevent /div /div - div layout=column layout-align=start end ng-if=event.showDiff event.type === 'edit' + div layout=column layout-align=start end div stop-event layout=row layout-align=end start - md-button class=md-icon-button title={{'EDIT' | translate}} - href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=edit target=_blank -md-icon md-font-library=material-iconsedit/md-icon - /md-button - md-button class=md-icon-button title={{'UNDO' | translate}} - href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=editundoafter={{::event.old_revid}}undo={{::event.revid}} target=_blank -md-icon md-font-library=material-iconsundo/md-icon - /md-button - md-button class=md-icon-button title={{'WATCHLIST_REMOVE' | translate}} - ng-hide=event.isUnwatched ng-click=ctrl.watchPage(event, true) -md-icon md-font-library=material-iconsstar/md-icon - /md-button - md-button class=md-icon-button title={{'WATCHLIST_ADD' | translate}} - ng-show=event.isUnwatched ng-click=ctrl.watchPage(event, false) -md-icon md-font-library=material-iconsstar_border/md-icon - /md-button - md-button ng-if=event.stableRevid class=md-raised md-accent - href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}oldid={{::event.stableRevid}}diff=cur target=_blank -{{'PENDING_EDITS' | translate}} + div stop-event layout=row layout-align=end start ng-if=event.showDiff event.type === 'edit' +md-button class=md-icon-button title={{'EDIT' | translate}} + href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=edit target=_blank + md-icon md-font-library=material-iconsedit/md-icon +/md-button +md-button class=md-icon-button title={{'UNDO' | translate}} + href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=editundoafter={{::event.old_revid}}undo={{::event.revid}} target=_blank + md-icon md-font-library=material-iconsundo/md-icon +/md-button +md-button class=md-icon-button title={{'WATCHLIST_REMOVE' | translate}} + ng-hide=event.isUnwatched ng-click=ctrl.watchPage(event, true) + md-icon md-font-library=material-iconsstar/md-icon +/md-button +md-button class=md-icon-button title={{'WATCHLIST_ADD' | translate}} + ng-show=event.isUnwatched ng-click=ctrl.watchPage(event, false) + md-icon md-font-library=material-iconsstar_border/md-icon +/md-button +md-button ng-if=event.stableRevid class=md-raised md-accent target=_blank + href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}oldid={{::event.stableRevid}}diff=cur + translate=PENDING_EDITS +/md-button +md-button class=md-icon-button rightbutton + ng-click=ctrl.clicked(event) title={{'COLLAPSE' | translate}} + md-icon md-font-library=material-iconsexpand_less/md-icon +/md-button + /div + md-button
[MediaWiki-commits] [Gerrit] Set fontsize to 13px, fix minor bugs - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Set fontsize to 13px, fix minor bugs .. Set fontsize to 13px, fix minor bugs Sets fontsize to 13px, font was too large sometimes in Firefox. Fixes padding issues which come with that. Also don't show connectionerror, if not logged in. Change-Id: I7043e61b2546d8c134948af3aa6f6ab591979911 --- M frontend/gulp/server.js M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/components/settings/settings.controller.js M frontend/src/i18n/de.json M frontend/src/i18n/en.json 6 files changed, 21 insertions(+), 16 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/gulp/server.js b/frontend/gulp/server.js index 531abc8..251dcf8 100644 --- a/frontend/gulp/server.js +++ b/frontend/gulp/server.js @@ -27,6 +27,11 @@ middleware: middleware, routes: routes }, +ghostMode: { + clicks: false, + forms: false, + scroll: false +}, browser: browser }); } diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 25ced70..91f706b 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -1,12 +1,10 @@ html { - font-size: 62.5%; - line-height: 1.4; + font-size: 13px; } body { background-color: #edecec; - font-family: 'Roboto', sans-serif; - font-size: 1.4rem; + font-family: 'Lato', sans-serif; } div[role=main] { @@ -94,7 +92,7 @@ a { color: #0645ad; text-decoration: none; - font-weight: 400; + font-weight: normal; border-bottom: none; -webkit-transition: border-bottom 0.25s; -moz-transition: border-bottom 0.25s; @@ -158,12 +156,12 @@ watchlist-entry { overflow: hidden; width: 100%; - margin: 4px 0; + margin: 6px 0; } md-list-item.watchlist:first-child watchlist-entry { - margin-top: 6px; - margin-bottom: 4px; + margin-top: 8px; + margin-bottom: 6px; } watchlist-entry a, diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 287e064..07127af 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -36,8 +36,10 @@ */ socket.setHandler('open', function () { $log.info('sockjs connected'); -dataService.queryWatchlist(); -$timeout(errorHandler, 15000); // show error if no response after 15 secs +if (authService.isLoggedIn()) { + dataService.queryWatchlist(); + $timeout(errorHandler, 15000); // show error if no response after 15 secs +} }); /** diff --git a/frontend/src/components/settings/settings.controller.js b/frontend/src/components/settings/settings.controller.js index 093ca96..c2e0a5e 100644 --- a/frontend/src/components/settings/settings.controller.js +++ b/frontend/src/components/settings/settings.controller.js @@ -11,11 +11,11 @@ vm.namespacesList = []; vm.periodList = []; -debounce(updatePeriodList, 50)(); -debounce(updateNamespaceList, 50)(); +debounce(updatePeriodList, 150)(); +debounce(updateNamespaceList, 150)(); $rootScope.$on('$translateChangeSuccess', function () { - debounce(updatePeriodList, 50)(); - debounce(updateNamespaceList, 50)(); + debounce(updatePeriodList, 20)(); + debounce(updateNamespaceList, 20)(); }); function updatePeriodList () { diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index cf6cffb..0534c7b 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -6,7 +6,7 @@ REPORT_BUGS: Bugs Melden, SIGN_IN: Anmelden, SIGN_OUT: Abmelden, - DESCRIPTION: Eine erweiterte Beobachtungsliste für Wikimedia Projekte., + DESCRIPTION: Eine cross-wiki Beobachtungsliste für Wikimedia Projekte., SIGN_IN_BUTTON: Mit OAuth anmelden, MINOREDIT_FLAG: K, BOTEDIT_FLAG: B, diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 7f8c878..a2e9537 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -6,7 +6,7 @@ REPORT_BUGS: Report Bugs, SIGN_IN: Sign in, SIGN_OUT: Logout, - DESCRIPTION: An enhanced watchlist for Wikimedia projects., + DESCRIPTION: A cross-wiki watchlist for Wikimedia projects., SIGN_IN_BUTTON: Sign in with OAuth, MINOREDIT_FLAG: m, BOTEDIT_FLAG: b, -- To view, visit https://gerrit.wikimedia.org/r/229408 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7043e61b2546d8c134948af3aa6f6ab591979911 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Siebrand siebr...@kitano.nl Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Set uselang in MW API for diffs and notifcations - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229627 Change subject: Set uselang in MW API for diffs and notifcations .. Set uselang in MW API for diffs and notifcations Sets uselang MW API paramter for notification and diffs so that the language is the same as in crosswatch. Change-Id: I9196d59867e4c685c149f721ee836ab03bfb2c61 --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/app/services.js 3 files changed, 16 insertions(+), 11 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/27/229627/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index 6d65fe4..54a13c4 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -151,7 +151,7 @@ response = self.query(params) return response['query']['users'][0]['rights'] -def diff(self, pageid, old_revid, new_revid): +def diff(self, pageid, old_revid, new_revid, uselang=): params = { 'action': query, 'prop': revisions, @@ -159,6 +159,7 @@ 'rvendid': old_revid, 'rvdiffto': new_revid, 'pageids': pageid, +'uselang': uselang, 'formatversion': 2 } diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 841a83d..5e2688b 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -176,7 +176,7 @@ @app.task -def notificationgetter(**kwargs): +def notificationgetter(uselang=, **kwargs): Get the echo notifications for a wiki wiki = kwargs['wiki'] access_token = kwargs['access_token'] @@ -192,7 +192,8 @@ 'notformat': html, 'notalertunreadfirst': , 'notmessagecontinue': , -'notlimit': 15 +'notlimit': 15, +'uselang': uselang } response = mw.query(params) @@ -243,7 +244,7 @@ @app.task -def get_diff(access_token=None, redis_channel=None, **kwargs): +def get_diff(access_token=None, redis_channel=None, uselang=, **kwargs): Get a diff for a wiki page projecturl = kwargs['projecturl'] pageid = kwargs['pageid'] @@ -255,7 +256,7 @@ access_token=access_token, redis_channel=redis_channel) -diff = mw.diff(pageid, old_revid, revid) +diff = mw.diff(pageid, old_revid, revid, uselang=uselang) mw.publish({ 'msgtype': 'response', 'request_id': request_id, @@ -319,7 +320,7 @@ @app.task -def _ores_diff(edit, probablity, **kwargs): +def _ores_diff(edit, probablity, uselang=, **kwargs): wiki = kwargs['wiki'] access_token = kwargs['access_token'] redis_channel = kwargs['redis_channel'] @@ -331,7 +332,7 @@ if mw.was_reverted(edit): return -diff = mw.diff(edit['pageid'], edit['old_revid'], edit['revid']) +diff = mw.diff(edit['pageid'], edit['old_revid'], edit['revid'], uselang) mw.publish({ 'msgtype': ores_scores, 'id': edit['id'], @@ -341,7 +342,7 @@ @app.task -def flagged_revs(watchlist_params, items, **kwargs): +def flagged_revs(watchlist_params, items, uselang=, **kwargs): wiki = kwargs['wiki'] access_token = kwargs['access_token'] redis_channel = kwargs['redis_channel'] @@ -377,7 +378,8 @@ for item in items: if item['type'] == 'edit' and pageid == item['pageid'] and \ stable_revid item['revid']: -diff = mw.diff(pageid, item['old_revid'], item['revid']) +diff = mw.diff(pageid, item['old_revid'], item['revid'], + uselang=uselang) mw.publish({ 'msgtype': flaggedrevs, 'id': item['id'], diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index 9ea7c70..1859ce2 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -27,7 +27,7 @@ }; } -function dataService (socket, authService, localStorageService, $log, $filter, debounce, $q) { +function dataService (socket, authService, localStorageService, $log, $filter, debounce, $q, $translate) { var vm = this; vm.watchlist = {}; @@ -262,7 +262,8 @@ access_token: authService.tokens(), watchlistperiod: vm.config.watchlistperiod, allrev: !vm.config.lastrevonly, -projects: vm.config.projectsList +projects: vm.config.projectsList, +uselang: $translate.use() || }; try { socket.send(angular.toJson(watchlistQuery)); @@ -292,6 +293,7 @@ vm.query = function (params) { params.request_id = vm.getRequestId(); params.access_token = authService.tokens(); +params.uselang = $translate.use() || ; var deferred = $q.defer(); callbacks[params.request_id] = deferred; -- To view, visit https://gerrit.wikimedia.org/r/229627 To unsubscribe, visit
[MediaWiki-commits] [Gerrit] Set uselang in MW API for diffs and notifications - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Set uselang in MW API for diffs and notifications .. Set uselang in MW API for diffs and notifications Sets uselang MW API paramter for notification and diffs so that the language in the returned HTML is the same as in crosswatch. Change-Id: I9196d59867e4c685c149f721ee836ab03bfb2c61 --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/app/services.js 3 files changed, 16 insertions(+), 11 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index 6d65fe4..54a13c4 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -151,7 +151,7 @@ response = self.query(params) return response['query']['users'][0]['rights'] -def diff(self, pageid, old_revid, new_revid): +def diff(self, pageid, old_revid, new_revid, uselang=): params = { 'action': query, 'prop': revisions, @@ -159,6 +159,7 @@ 'rvendid': old_revid, 'rvdiffto': new_revid, 'pageids': pageid, +'uselang': uselang, 'formatversion': 2 } diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 841a83d..5e2688b 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -176,7 +176,7 @@ @app.task -def notificationgetter(**kwargs): +def notificationgetter(uselang=, **kwargs): Get the echo notifications for a wiki wiki = kwargs['wiki'] access_token = kwargs['access_token'] @@ -192,7 +192,8 @@ 'notformat': html, 'notalertunreadfirst': , 'notmessagecontinue': , -'notlimit': 15 +'notlimit': 15, +'uselang': uselang } response = mw.query(params) @@ -243,7 +244,7 @@ @app.task -def get_diff(access_token=None, redis_channel=None, **kwargs): +def get_diff(access_token=None, redis_channel=None, uselang=, **kwargs): Get a diff for a wiki page projecturl = kwargs['projecturl'] pageid = kwargs['pageid'] @@ -255,7 +256,7 @@ access_token=access_token, redis_channel=redis_channel) -diff = mw.diff(pageid, old_revid, revid) +diff = mw.diff(pageid, old_revid, revid, uselang=uselang) mw.publish({ 'msgtype': 'response', 'request_id': request_id, @@ -319,7 +320,7 @@ @app.task -def _ores_diff(edit, probablity, **kwargs): +def _ores_diff(edit, probablity, uselang=, **kwargs): wiki = kwargs['wiki'] access_token = kwargs['access_token'] redis_channel = kwargs['redis_channel'] @@ -331,7 +332,7 @@ if mw.was_reverted(edit): return -diff = mw.diff(edit['pageid'], edit['old_revid'], edit['revid']) +diff = mw.diff(edit['pageid'], edit['old_revid'], edit['revid'], uselang) mw.publish({ 'msgtype': ores_scores, 'id': edit['id'], @@ -341,7 +342,7 @@ @app.task -def flagged_revs(watchlist_params, items, **kwargs): +def flagged_revs(watchlist_params, items, uselang=, **kwargs): wiki = kwargs['wiki'] access_token = kwargs['access_token'] redis_channel = kwargs['redis_channel'] @@ -377,7 +378,8 @@ for item in items: if item['type'] == 'edit' and pageid == item['pageid'] and \ stable_revid item['revid']: -diff = mw.diff(pageid, item['old_revid'], item['revid']) +diff = mw.diff(pageid, item['old_revid'], item['revid'], + uselang=uselang) mw.publish({ 'msgtype': flaggedrevs, 'id': item['id'], diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index 9ea7c70..1859ce2 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -27,7 +27,7 @@ }; } -function dataService (socket, authService, localStorageService, $log, $filter, debounce, $q) { +function dataService (socket, authService, localStorageService, $log, $filter, debounce, $q, $translate) { var vm = this; vm.watchlist = {}; @@ -262,7 +262,8 @@ access_token: authService.tokens(), watchlistperiod: vm.config.watchlistperiod, allrev: !vm.config.lastrevonly, -projects: vm.config.projectsList +projects: vm.config.projectsList, +uselang: $translate.use() || }; try { socket.send(angular.toJson(watchlistQuery)); @@ -292,6 +293,7 @@ vm.query = function (params) { params.request_id = vm.getRequestId(); params.access_token = authService.tokens(); +params.uselang = $translate.use() || ; var deferred = $q.defer(); callbacks[params.request_id] = deferred; -- To view, visit https://gerrit.wikimedia.org/r/229627 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
[MediaWiki-commits] [Gerrit] Add ability to blacklist wikis - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229297 Change subject: Add ability to blacklist wikis .. Add ability to blacklist wikis For now only loginwiki, which throws errors. Change-Id: I4662a9c33eaac043b5e69322fb38820d209d5114 --- M backend/celery/api.py 1 file changed, 14 insertions(+), 11 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/97/229297/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index f56227b..6d65fe4 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -182,6 +182,7 @@ params = {'action': sitematrix} data = self.query(params) +blacklist_wikis = ['loginwiki'] flaggedrevs_wikis = self._flaggedrevs_wikis() wikis = {} @@ -191,19 +192,17 @@ if 'code' in val: for site in val['site']: -wiki = self._create_wiki(site, val['code'], val['name']) -if site['dbname'] in flaggedrevs_wikis: -wiki['flaggedrevs'] = True -wikis[site['dbname']] = wiki +wikis[site['dbname']] = self._create_wiki( +site, val['code'], val['name'], +flaggedrevs_wikis, blacklist_wikis) else: for site in val: -wiki = self._create_wiki(site, '', '') -if site['dbname'] in flaggedrevs_wikis: -wiki['flaggedrevs'] = True -wikis[site['dbname']] = wiki +wikis[site['dbname']] = self._create_wiki( +site, '', '', flaggedrevs_wikis, blacklist_wikis) return wikis -def _create_wiki(self, site, langcode, langname): +def _create_wiki(self, site, langcode, langname, flaggedrevs_wikis, + blacklist_wikis): wiki = { 'lang': langcode, 'langname': langname, @@ -214,9 +213,13 @@ if wiki['group'] == 'wiki': wiki['group'] = 'wikipedia' -inactive_wikis = ['closed', 'private', 'fishbowl'] -if any([key in site for key in inactive_wikis]): +inactive_codes = ['closed', 'private', 'fishbowl'] +if any([key in site for key in inactive_codes]): wiki['closed'] = True +if site['dbname'] in blacklist_wikis: +wiki['closed'] = True +if site['dbname'] in flaggedrevs_wikis: +wiki['flaggedrevs'] = True return wiki def _flaggedrevs_wikis(self): -- To view, visit https://gerrit.wikimedia.org/r/229297 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4662a9c33eaac043b5e69322fb38820d209d5114 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix de translations - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229296 Change subject: Fix de translations .. Fix de translations Change-Id: I1af3af77da5a2d8870989818e78d511d5c6b25c8 --- M frontend/src/i18n/de.json 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/96/229296/1 diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index b152201..cf6cffb 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -19,8 +19,8 @@ SHOW_LAST_DAYS: Zeige letzte {{number}} Tage, MINOR_EDITS: Kleine Änderungen, BOT_EDITS: Bots, - ANON_EDITS: Unangemeldeten Benutzer, - USER_EDITS: Registrierte Benutzern, + ANON_EDITS: Unangemeldete Benutzer, + USER_EDITS: Registrierte Benutzer, FLAGS: Zeige Flaggen anstelle des Names der Sprache, WATCHLIST: Beobachtungsliste, SEARCH_WATCHLIST: Beobachtungsliste durchsuchen, -- To view, visit https://gerrit.wikimedia.org/r/229296 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1af3af77da5a2d8870989818e78d511d5c6b25c8 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix edge case bug in flaggedrevs task - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229298 Change subject: Fix edge case bug in flaggedrevs task .. Fix edge case bug in flaggedrevs task Sometimes, we don't get a dict back, but a list if the result is empty (e.g. only log events). Change-Id: I3b64972247bcac4fba00a08352d710739f66a9ca --- M backend/celery/tasks.py 1 file changed, 2 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/98/229298/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 2cf81c6..841a83d 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -364,6 +364,8 @@ unstable = {} for response in mw.query_gen(params): +if not isinstance(response['pages'], dict): +continue for pageid, item in response['pages'].items(): flagged = item.get('flagged', {}) if 'pending_since' in flagged: -- To view, visit https://gerrit.wikimedia.org/r/229298 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3b64972247bcac4fba00a08352d710739f66a9ca Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Log and ignore partial ORES errors - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/229295 Change subject: Log and ignore partial ORES errors .. Log and ignore partial ORES errors I'm seeing a lot of intermittent ORES error (see one below) for a part of the requested revids, works fine when doing the same request again. I'm also seeing 400 or 502 responses, which seem to be more persisting. Logging it for now and don't cause the whole task to fail. { 674043459: { error: { message: Failed to process revision.metadata: RevisionDocumentNotFound, type: class 'revscoring.dependencies.errors.DependencyError' } } } Change-Id: I570bd225c52f1c3581f32ab0dd4f3784cf7dea6c --- M backend/celery/tasks.py 1 file changed, 6 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/95/229295/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 52722db..2cf81c6 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -131,7 +131,7 @@ 'wllimit': 500, 'wlend': mw.timestamp(daysdelta=-days), 'wlprop': ids|flags|title|parsedcomment|userid|user|timestamp| + -sizes|notificationtimestamp|loginfo + sizes|notificationtimestamp|loginfo } if allrev: @@ -193,7 +193,7 @@ 'notalertunreadfirst': , 'notmessagecontinue': , 'notlimit': 15 -} +} response = mw.query(params) result = response['query']['notifications']['list'] @@ -308,6 +308,10 @@ response = mw.ores_scores(wiki['dbname'], edits.keys()) for revid, value in response.items(): +if 'error' in value: +logger.warning('ORES error {} for revid {}, response: {}'.format( +value['error']['message'], revid, value)) +continue if value['probability']['true'] = 0.8: revid = int(revid) probablity = {:.0%}.format(value['probability']['true']) -- To view, visit https://gerrit.wikimedia.org/r/229295 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I570bd225c52f1c3581f32ab0dd4f3784cf7dea6c Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix link to user page and contribs - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix link to user page and contribs .. Fix link to user page and contribs Bug: T107681 Change-Id: I59d749afe282c7b06a0f9a5a391a72a8bd29fb19 --- M frontend/src/components/watchlist/user.directive.js 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/watchlist/user.directive.js b/frontend/src/components/watchlist/user.directive.js index dd29a8e..235e0d9 100644 --- a/frontend/src/components/watchlist/user.directive.js +++ b/frontend/src/components/watchlist/user.directive.js @@ -20,5 +20,8 @@ } else { scope.user = scope.event.user; } + +var split = scope.user.split(':'); +scope.user = split[split.length - 1] } } -- To view, visit https://gerrit.wikimedia.org/r/228664 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I59d749afe282c7b06a0f9a5a391a72a8bd29fb19 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Log more ORES error information - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228663 Change subject: Log more ORES error information .. Log more ORES error information I've seen some 400 BAD REQUEST errors, but I haven't been able to reproduce them. Adding better logging for now. Change-Id: I02e0c22c68e8d96ba471bdb7b33a9143887bf48a --- M backend/celery/api.py 1 file changed, 4 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/63/228663/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index 6466f2d..b1b9770 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -262,7 +262,10 @@ params = {'revids': revids} response = requests.get(url, params=params, headers=self.headers) -response.raise_for_status() + +if response.status_code != requests.codes.ok: +Exception('ORES error code {} for {} with params {}'.format( +response.status_code, dbname, str(params)), response.text) return response.json() -- To view, visit https://gerrit.wikimedia.org/r/228663 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I02e0c22c68e8d96ba471bdb7b33a9143887bf48a Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix link to user page and contribs - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228664 Change subject: Fix link to user page and contribs .. Fix link to user page and contribs Bug: T107681 Change-Id: I59d749afe282c7b06a0f9a5a391a72a8bd29fb19 --- M frontend/src/components/watchlist/user.directive.js 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/64/228664/1 diff --git a/frontend/src/components/watchlist/user.directive.js b/frontend/src/components/watchlist/user.directive.js index dd29a8e..235e0d9 100644 --- a/frontend/src/components/watchlist/user.directive.js +++ b/frontend/src/components/watchlist/user.directive.js @@ -20,5 +20,8 @@ } else { scope.user = scope.event.user; } + +var split = scope.user.split(':'); +scope.user = split[split.length - 1] } } -- To view, visit https://gerrit.wikimedia.org/r/228664 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I59d749afe282c7b06a0f9a5a391a72a8bd29fb19 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Log more ORES error information - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Log more ORES error information .. Log more ORES error information I've seen some 400 BAD REQUEST errors, but I haven't been able to reproduce them. Adding better logging for now. Change-Id: I02e0c22c68e8d96ba471bdb7b33a9143887bf48a --- M backend/celery/api.py 1 file changed, 4 insertions(+), 1 deletion(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index 6466f2d..b1b9770 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -262,7 +262,10 @@ params = {'revids': revids} response = requests.get(url, params=params, headers=self.headers) -response.raise_for_status() + +if response.status_code != requests.codes.ok: +Exception('ORES error code {} for {} with params {}'.format( +response.status_code, dbname, str(params)), response.text) return response.json() -- To view, visit https://gerrit.wikimedia.org/r/228663 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I02e0c22c68e8d96ba471bdb7b33a9143887bf48a Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix ORES error handling - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix ORES error handling .. Fix ORES error handling Fixes 6e49b9c Change-Id: Ie182895d4c8b4c4441d4b766a2eba95ff8b5bbfe --- M backend/celery/api.py 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index b1b9770..f56227b 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -264,7 +264,7 @@ response = requests.get(url, params=params, headers=self.headers) if response.status_code != requests.codes.ok: -Exception('ORES error code {} for {} with params {}'.format( +raise Exception('ORES error code {} for {} with params {}'.format( response.status_code, dbname, str(params)), response.text) return response.json() -- To view, visit https://gerrit.wikimedia.org/r/228665 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie182895d4c8b4c4441d4b766a2eba95ff8b5bbfe Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix ORES error handling - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228665 Change subject: Fix ORES error handling .. Fix ORES error handling Fixes 6e49b9c Change-Id: Ie182895d4c8b4c4441d4b766a2eba95ff8b5bbfe --- M backend/celery/api.py 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/65/228665/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index b1b9770..f56227b 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -264,7 +264,7 @@ response = requests.get(url, params=params, headers=self.headers) if response.status_code != requests.codes.ok: -Exception('ORES error code {} for {} with params {}'.format( +raise Exception('ORES error code {} for {} with params {}'.format( response.status_code, dbname, str(params)), response.text) return response.json() -- To view, visit https://gerrit.wikimedia.org/r/228665 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie182895d4c8b4c4441d4b766a2eba95ff8b5bbfe Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix watchlist padding - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix watchlist padding .. Fix watchlist padding Change-Id: I4e9179c447a3484add7eaae03d7ac0696d8b3e6b --- M frontend/src/app/index.css 1 file changed, 6 insertions(+), 8 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index bbc9afd..94396ce 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -145,14 +145,6 @@ padding-left: 12px; } -md-list-item.watchlist:first-child { - padding-top: 8px; -} - -md-list-item.watchlist:last-child { - padding-bottom: 8px; -} - .watchlist:last-child md-divider, .notifications:last-child md-divider { @@ -166,6 +158,12 @@ watchlist-entry { overflow: hidden; width: 100%; + margin: 4px 0; +} + +md-list-item.watchlist:first-child watchlist-entry { + margin-top: 6px; + margin-bottom: 4px; } watchlist-entry a, -- To view, visit https://gerrit.wikimedia.org/r/228567 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4e9179c447a3484add7eaae03d7ac0696d8b3e6b Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add more de transations - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add more de transations .. Add more de transations Change-Id: Ib68afeefd85002caad35c1eb0713dce505677b1f --- M frontend/src/i18n/de.json 1 file changed, 39 insertions(+), 1 deletion(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index ed70f8d..b152201 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -11,9 +11,19 @@ MINOREDIT_FLAG: K, BOTEDIT_FLAG: B, NEWPAGE_FLAG: N, + PREFERENCES: Einstellungen, + FILTER: Filter, + WIKIS: Wikis, LASTREVONLY: Zeige nur die letzte Änderung pro Seite, SHOW_LAST_HOURS: Zeige letzte {{number}} Stunden, SHOW_LAST_DAYS: Zeige letzte {{number}} Tage, + MINOR_EDITS: Kleine Änderungen, + BOT_EDITS: Bots, + ANON_EDITS: Unangemeldeten Benutzer, + USER_EDITS: Registrierte Benutzern, + FLAGS: Zeige Flaggen anstelle des Names der Sprache, + WATCHLIST: Beobachtungsliste, + SEARCH_WATCHLIST: Beobachtungsliste durchsuchen, LOGEVENT_DELETE_DELETE: user löschte Seite page, LOGEVENT_DELETE_REVISION: user änderte die Sichtbarkeit von Versionen der Seite page, LOGEVENT_DELETE_RESTORE: user stellte Seite page wieder her, @@ -36,5 +46,33 @@ LOGEVENT_NEWUSERS_CREATE: Benutzerkonto user name={{title}} wurde erstellt, LOGEVENT_NEWUSERS_CREATE2: Benutzerkonto user name={{title}} wurde von user erstellt, LOGEVENT_NEWUSERS_BYEMAIL: Benutzerkonto user name={{title}} wurde von user erstellt und das Passwort wurde per E-Mail zugesandt, - LOGEVENT_RENAMEUSER: user hat user name={{olduser}} (mit {{edits}} Bearbeitungen) nach user name={{newuser}} umbennant + LOGEVENT_RENAMEUSER: user hat user name={{olduser}} (mit {{edits}} Bearbeitungen) nach user name={{newuser}} umbennant, + NAMESPACES: Namesräume, + NS_0: Artikel, + NS_1: Diskussion, + NS_2: Benutzer, + NS_3: Benutzer Diskussion, + NS_4: Portal, + NS_5: Portal Diskussion, + NS_6: Datei, + NS_7: Datei Diskussion, + NS_10: Vorlage, + NS_11: Vorlage Diskussion, + NS_12: Hilfe, + NS_13: Hilfe Diskussion, + NS_OTHER: andere Namesräume, + HISTORY: Versionen, + CONTRIBS: Beiträge, + ONELINE: Traditionelles Beobachtungslisten Layout, + NOTIFICATIONS: Benachrichtigungen, + MARKALLREAD: alle als gelesen markieren, + STYLE: Stil, + HIDEOWNEDITS: Eigene Bearbeitungen in der Beobachtungsliste ausblenden, + EDIT: Diese Seite ein einem neuen Tab bearbeiten, + UNDO: Diese Änderung rückgängig machen, öffnet Vorschau in einem neuen Tab, + WATCHLIST_REMOVE: Diese Seite von der Beobachtungsliste entfernen, + WATCHLIST_ADD: Diese Seite zu meiner Beobachtungsliste hinzufügen, + ORES_OPTION: Zeige Versionsänderungen für ORES vorhergesagten Reverts, + PENDING_EDITS: sichten, + FLAGGEDREVS_OPTION: Zeige Versionsänderungen für ungesichtete Bearbeitungen } -- To view, visit https://gerrit.wikimedia.org/r/228568 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib68afeefd85002caad35c1eb0713dce505677b1f Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix watchlist padding - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228567 Change subject: Fix watchlist padding .. Fix watchlist padding Change-Id: I4e9179c447a3484add7eaae03d7ac0696d8b3e6b --- M frontend/src/app/index.css 1 file changed, 6 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/67/228567/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index bbc9afd..94396ce 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -145,14 +145,6 @@ padding-left: 12px; } -md-list-item.watchlist:first-child { - padding-top: 8px; -} - -md-list-item.watchlist:last-child { - padding-bottom: 8px; -} - .watchlist:last-child md-divider, .notifications:last-child md-divider { @@ -166,6 +158,12 @@ watchlist-entry { overflow: hidden; width: 100%; + margin: 4px 0; +} + +md-list-item.watchlist:first-child watchlist-entry { + margin-top: 6px; + margin-bottom: 4px; } watchlist-entry a, -- To view, visit https://gerrit.wikimedia.org/r/228567 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4e9179c447a3484add7eaae03d7ac0696d8b3e6b Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix translation of select lists - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228569 Change subject: Fix translation of select lists .. Fix translation of select lists Didn't properly translate in some cases due to that angular-translate localstorage bug. Change-Id: I2b0211239b9007d45bc8e972ab87b0a071c66654 --- M frontend/src/components/settings/settings.controller.js 1 file changed, 10 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/69/228569/1 diff --git a/frontend/src/components/settings/settings.controller.js b/frontend/src/components/settings/settings.controller.js index 0cdf402..093ca96 100644 --- a/frontend/src/components/settings/settings.controller.js +++ b/frontend/src/components/settings/settings.controller.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('crosswatch') - .controller('SettingsCtrl', function ($translate, $log, dataService, $rootScope) { + .controller('SettingsCtrl', function ($translate, $log, dataService, $rootScope, debounce) { var vm = this; vm.config = dataService.config; vm.saveConfig = function () { @@ -9,18 +9,20 @@ dataService.filterWatchlist(); }; -updatePeriodList(); -updateNamespaceList(); +vm.namespacesList = []; +vm.periodList = []; +debounce(updatePeriodList, 50)(); +debounce(updateNamespaceList, 50)(); $rootScope.$on('$translateChangeSuccess', function () { - updatePeriodList(); - updateNamespaceList(); + debounce(updatePeriodList, 50)(); + debounce(updateNamespaceList, 50)(); }); function updatePeriodList () { var hours = [0.5, 1, 1.5]; var days = [2, 3, 7, 14, 21, 30]; - vm.periodList = []; + vm.periodList.length = 0; var addItem = function (value) { return function (label) { vm.periodList.push({value: value, label: label}) @@ -41,11 +43,11 @@ translateStrings.push(NS_ + list[i]); } $translate(translateStrings).then(function (translations) { -vm.namespacesList = []; +vm.namespacesList.length = 0; for (var i=0; ilist.length; i++) { vm.namespacesList.push({value: list[i], label: translations[translateStrings[i]]}); } - }) + }); } vm.resetWatchlist = function () { -- To view, visit https://gerrit.wikimedia.org/r/228569 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2b0211239b9007d45bc8e972ab87b0a071c66654 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix translation of select lists - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix translation of select lists .. Fix translation of select lists Didn't properly translate in some cases due to that angular-translate localstorage bug. Change-Id: I2b0211239b9007d45bc8e972ab87b0a071c66654 --- M frontend/src/components/settings/settings.controller.js 1 file changed, 10 insertions(+), 8 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/settings/settings.controller.js b/frontend/src/components/settings/settings.controller.js index 0cdf402..093ca96 100644 --- a/frontend/src/components/settings/settings.controller.js +++ b/frontend/src/components/settings/settings.controller.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('crosswatch') - .controller('SettingsCtrl', function ($translate, $log, dataService, $rootScope) { + .controller('SettingsCtrl', function ($translate, $log, dataService, $rootScope, debounce) { var vm = this; vm.config = dataService.config; vm.saveConfig = function () { @@ -9,18 +9,20 @@ dataService.filterWatchlist(); }; -updatePeriodList(); -updateNamespaceList(); +vm.namespacesList = []; +vm.periodList = []; +debounce(updatePeriodList, 50)(); +debounce(updateNamespaceList, 50)(); $rootScope.$on('$translateChangeSuccess', function () { - updatePeriodList(); - updateNamespaceList(); + debounce(updatePeriodList, 50)(); + debounce(updateNamespaceList, 50)(); }); function updatePeriodList () { var hours = [0.5, 1, 1.5]; var days = [2, 3, 7, 14, 21, 30]; - vm.periodList = []; + vm.periodList.length = 0; var addItem = function (value) { return function (label) { vm.periodList.push({value: value, label: label}) @@ -41,11 +43,11 @@ translateStrings.push(NS_ + list[i]); } $translate(translateStrings).then(function (translations) { -vm.namespacesList = []; +vm.namespacesList.length = 0; for (var i=0; ilist.length; i++) { vm.namespacesList.push({value: list[i], label: translations[translateStrings[i]]}); } - }) + }); } vm.resetWatchlist = function () { -- To view, visit https://gerrit.wikimedia.org/r/228569 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2b0211239b9007d45bc8e972ab87b0a071c66654 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add translation file versioning - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add translation file versioning .. Add translation file versioning Tornado sometimes doesn't properly notice in some cases when a translation file changed, adds a gulp task to rename to something unique when the content changes so that it can be cached indefinitely. Change-Id: Idb0755ce974a23067aa5cb8ff73a3403578e122a --- M frontend/gulp/build.js M frontend/package.json M frontend/src/app/translationProvider.js 3 files changed, 29 insertions(+), 3 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/gulp/build.js b/frontend/gulp/build.js index c09312a..49bba0b 100644 --- a/frontend/gulp/build.js +++ b/frontend/gulp/build.js @@ -4,6 +4,7 @@ var jsonAngularTranslate = require('./translate'); var paths = gulp.paths; +var i18nHash; var $ = require('gulp-load-plugins')({ pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del'] @@ -16,8 +17,23 @@ .pipe($.size()); }); -gulp.task('i18n', function () { +gulp.task('i18n-hash', function () { return gulp.src('src/i18n/*.json') +.pipe($.concat('i18n')) +.pipe($.rev()) +.pipe($.util.buffer(function(err, files) { + i18nHash = '-' + files[0].revHash; +})); +}); + +gulp.task('i18n', ['i18n-hash'], function () { + if(typeof i18nHash === 'undefined') { +throw 'i18nHash is undefined'; + } + return gulp.src('src/i18n/*.json') +.pipe($.rename(function (path) { + path.basename += i18nHash; +})) .pipe($.jsonlint()) .pipe($.jsonlint.reporter()) .pipe(gulp.dest(paths.dist + '/i18n')) @@ -48,7 +64,11 @@ .pipe(gulp.dest(paths.tmp + '/partials/')); }); -gulp.task('html', ['inject', 'partials'], function () { +gulp.task('html', ['inject', 'partials', 'i18n-hash'], function () { + if(typeof i18nHash === 'undefined') { +throw 'i18nHash is undefined'; + } + var partialsInjectFile = gulp.src(paths.tmp + '/partials/templateCacheHtml.js', { read: false }); var partialsInjectOptions = { starttag: '!-- inject:partials --', @@ -58,6 +78,7 @@ var htmlFilter = $.filter('*.html'); var jsFilter = $.filter('**/*.js'); + var appFilter = $.filter('**/app-*.js'); var cssFilter = $.filter('**/*.css'); var assets; @@ -65,6 +86,9 @@ .pipe($.inject(partialsInjectFile, partialsInjectOptions)) .pipe(assets = $.useref.assets()) .pipe($.rev()) +.pipe(appFilter) +.pipe($.replace('/* gulp:replace */ ; /* gulp:replace */', '' + i18nHash + ';')) +.pipe(appFilter.restore()) .pipe(jsFilter) .pipe($.ngAnnotate()) .pipe($.uglify({preserveComments: $.uglifySaveLicense})) diff --git a/frontend/package.json b/frontend/package.json index e61d206..790d2f7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,6 +19,7 @@ gulp-concat: ^2.6.0, gulp-consolidate: ~0.1.2, gulp-csso: ~0.2.9, +gulp-debug: ^2.0.1, gulp-filter: ~1.0.2, gulp-flatten: ~0.0.4, gulp-inject: ~1.0.2, diff --git a/frontend/src/app/translationProvider.js b/frontend/src/app/translationProvider.js index d3cd7a4..7221fc6 100644 --- a/frontend/src/app/translationProvider.js +++ b/frontend/src/app/translationProvider.js @@ -15,13 +15,14 @@ } } +var suffix = /* gulp:replace */ ; /* gulp:replace */ $translateProvider .useSanitizeValueStrategy('sanitizeParameters') .useStorage('translateStorage') .addInterpolation('customInterpolation') .useStaticFilesLoader({ prefix: 'i18n/', -suffix: '.json' +suffix: suffix + '.json' }) .registerAvailableLanguageKeys(availableLangs, mappings) .determinePreferredLanguage() -- To view, visit https://gerrit.wikimedia.org/r/228570 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Idb0755ce974a23067aa5cb8ff73a3403578e122a Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add translation file versioning - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228570 Change subject: Add translation file versioning .. Add translation file versioning Tornado sometimes doesn't properly notice in some cases when a translation file changed, adds a gulp task to rename to something unique when the content changes so that it can be cached indefinitely. Change-Id: Idb0755ce974a23067aa5cb8ff73a3403578e122a --- M frontend/gulp/build.js M frontend/package.json M frontend/src/app/translationProvider.js 3 files changed, 29 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/70/228570/1 diff --git a/frontend/gulp/build.js b/frontend/gulp/build.js index c09312a..49bba0b 100644 --- a/frontend/gulp/build.js +++ b/frontend/gulp/build.js @@ -4,6 +4,7 @@ var jsonAngularTranslate = require('./translate'); var paths = gulp.paths; +var i18nHash; var $ = require('gulp-load-plugins')({ pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del'] @@ -16,8 +17,23 @@ .pipe($.size()); }); -gulp.task('i18n', function () { +gulp.task('i18n-hash', function () { return gulp.src('src/i18n/*.json') +.pipe($.concat('i18n')) +.pipe($.rev()) +.pipe($.util.buffer(function(err, files) { + i18nHash = '-' + files[0].revHash; +})); +}); + +gulp.task('i18n', ['i18n-hash'], function () { + if(typeof i18nHash === 'undefined') { +throw 'i18nHash is undefined'; + } + return gulp.src('src/i18n/*.json') +.pipe($.rename(function (path) { + path.basename += i18nHash; +})) .pipe($.jsonlint()) .pipe($.jsonlint.reporter()) .pipe(gulp.dest(paths.dist + '/i18n')) @@ -48,7 +64,11 @@ .pipe(gulp.dest(paths.tmp + '/partials/')); }); -gulp.task('html', ['inject', 'partials'], function () { +gulp.task('html', ['inject', 'partials', 'i18n-hash'], function () { + if(typeof i18nHash === 'undefined') { +throw 'i18nHash is undefined'; + } + var partialsInjectFile = gulp.src(paths.tmp + '/partials/templateCacheHtml.js', { read: false }); var partialsInjectOptions = { starttag: '!-- inject:partials --', @@ -58,6 +78,7 @@ var htmlFilter = $.filter('*.html'); var jsFilter = $.filter('**/*.js'); + var appFilter = $.filter('**/app-*.js'); var cssFilter = $.filter('**/*.css'); var assets; @@ -65,6 +86,9 @@ .pipe($.inject(partialsInjectFile, partialsInjectOptions)) .pipe(assets = $.useref.assets()) .pipe($.rev()) +.pipe(appFilter) +.pipe($.replace('/* gulp:replace */ ; /* gulp:replace */', '' + i18nHash + ';')) +.pipe(appFilter.restore()) .pipe(jsFilter) .pipe($.ngAnnotate()) .pipe($.uglify({preserveComments: $.uglifySaveLicense})) diff --git a/frontend/package.json b/frontend/package.json index e61d206..790d2f7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,6 +19,7 @@ gulp-concat: ^2.6.0, gulp-consolidate: ~0.1.2, gulp-csso: ~0.2.9, +gulp-debug: ^2.0.1, gulp-filter: ~1.0.2, gulp-flatten: ~0.0.4, gulp-inject: ~1.0.2, diff --git a/frontend/src/app/translationProvider.js b/frontend/src/app/translationProvider.js index d3cd7a4..7221fc6 100644 --- a/frontend/src/app/translationProvider.js +++ b/frontend/src/app/translationProvider.js @@ -15,13 +15,14 @@ } } +var suffix = /* gulp:replace */ ; /* gulp:replace */ $translateProvider .useSanitizeValueStrategy('sanitizeParameters') .useStorage('translateStorage') .addInterpolation('customInterpolation') .useStaticFilesLoader({ prefix: 'i18n/', -suffix: '.json' +suffix: suffix + '.json' }) .registerAvailableLanguageKeys(availableLangs, mappings) .determinePreferredLanguage() -- To view, visit https://gerrit.wikimedia.org/r/228570 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idb0755ce974a23067aa5cb8ff73a3403578e122a Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add more de transations - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228568 Change subject: Add more de transations .. Add more de transations Change-Id: Ib68afeefd85002caad35c1eb0713dce505677b1f --- M frontend/src/i18n/de.json 1 file changed, 39 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/68/228568/1 diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index ed70f8d..b152201 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -11,9 +11,19 @@ MINOREDIT_FLAG: K, BOTEDIT_FLAG: B, NEWPAGE_FLAG: N, + PREFERENCES: Einstellungen, + FILTER: Filter, + WIKIS: Wikis, LASTREVONLY: Zeige nur die letzte Änderung pro Seite, SHOW_LAST_HOURS: Zeige letzte {{number}} Stunden, SHOW_LAST_DAYS: Zeige letzte {{number}} Tage, + MINOR_EDITS: Kleine Änderungen, + BOT_EDITS: Bots, + ANON_EDITS: Unangemeldeten Benutzer, + USER_EDITS: Registrierte Benutzern, + FLAGS: Zeige Flaggen anstelle des Names der Sprache, + WATCHLIST: Beobachtungsliste, + SEARCH_WATCHLIST: Beobachtungsliste durchsuchen, LOGEVENT_DELETE_DELETE: user löschte Seite page, LOGEVENT_DELETE_REVISION: user änderte die Sichtbarkeit von Versionen der Seite page, LOGEVENT_DELETE_RESTORE: user stellte Seite page wieder her, @@ -36,5 +46,33 @@ LOGEVENT_NEWUSERS_CREATE: Benutzerkonto user name={{title}} wurde erstellt, LOGEVENT_NEWUSERS_CREATE2: Benutzerkonto user name={{title}} wurde von user erstellt, LOGEVENT_NEWUSERS_BYEMAIL: Benutzerkonto user name={{title}} wurde von user erstellt und das Passwort wurde per E-Mail zugesandt, - LOGEVENT_RENAMEUSER: user hat user name={{olduser}} (mit {{edits}} Bearbeitungen) nach user name={{newuser}} umbennant + LOGEVENT_RENAMEUSER: user hat user name={{olduser}} (mit {{edits}} Bearbeitungen) nach user name={{newuser}} umbennant, + NAMESPACES: Namesräume, + NS_0: Artikel, + NS_1: Diskussion, + NS_2: Benutzer, + NS_3: Benutzer Diskussion, + NS_4: Portal, + NS_5: Portal Diskussion, + NS_6: Datei, + NS_7: Datei Diskussion, + NS_10: Vorlage, + NS_11: Vorlage Diskussion, + NS_12: Hilfe, + NS_13: Hilfe Diskussion, + NS_OTHER: andere Namesräume, + HISTORY: Versionen, + CONTRIBS: Beiträge, + ONELINE: Traditionelles Beobachtungslisten Layout, + NOTIFICATIONS: Benachrichtigungen, + MARKALLREAD: alle als gelesen markieren, + STYLE: Stil, + HIDEOWNEDITS: Eigene Bearbeitungen in der Beobachtungsliste ausblenden, + EDIT: Diese Seite ein einem neuen Tab bearbeiten, + UNDO: Diese Änderung rückgängig machen, öffnet Vorschau in einem neuen Tab, + WATCHLIST_REMOVE: Diese Seite von der Beobachtungsliste entfernen, + WATCHLIST_ADD: Diese Seite zu meiner Beobachtungsliste hinzufügen, + ORES_OPTION: Zeige Versionsänderungen für ORES vorhergesagten Reverts, + PENDING_EDITS: sichten, + FLAGGEDREVS_OPTION: Zeige Versionsänderungen für ungesichtete Bearbeitungen } -- To view, visit https://gerrit.wikimedia.org/r/228568 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib68afeefd85002caad35c1eb0713dce505677b1f Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Don't text-transform uppercase navbar buttons - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228286 Change subject: Don't text-transform uppercase navbar buttons .. Don't text-transform uppercase navbar buttons Change-Id: Ib499e8d23e7ea4fa6809df9b09c846ad2d0911b8 --- M frontend/src/app/index.css M frontend/src/components/navbar/navbar.html 2 files changed, 11 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/86/228286/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 102a6ee..bbc9afd 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -119,6 +119,10 @@ color:#777 } +.nouppercase { + text-transform: none; +} + .whitebox { background-color: white; width: 100%; diff --git a/frontend/src/components/navbar/navbar.html b/frontend/src/components/navbar/navbar.html index 52eeeae..e632977 100644 --- a/frontend/src/components/navbar/navbar.html +++ b/frontend/src/components/navbar/navbar.html @@ -4,19 +4,19 @@ ng-change=ctrl.changeLanguage(ctrl.selectedLang) md-option ng-repeat=lang in ctrl.langs value={{lang.key}}{{lang.language}}/md-option /md-select - md-button href=https://meta.wikimedia.org/wiki/Crosswatch; target=_blank class=md-flat -{{'DOCUMENTATION' | translate}} - /md-button - md-button href=https://meta.wikimedia.org/wiki/Talk:Crosswatch; target=_blank class=md-flat + md-button href=https://meta.wikimedia.org/wiki/Talk:Crosswatch; target=_blank class=md-flat nouppercase {{'TALK' | translate}} /md-button - md-button href=https://phabricator.wikimedia.org/project/view/1224/; target=_blank class=md-flat + md-button href=https://meta.wikimedia.org/wiki/Crosswatch; target=_blank class=md-flat nouppercase +{{'DOCUMENTATION' | translate}} + /md-button + md-button href=https://phabricator.wikimedia.org/project/view/1224/; target=_blank class=md-flat nouppercase {{'REPORT_BUGS' | translate}} /md-button - md-button href=login target=_self class=md-flat ng-hide=ctrl.loggedin + md-button href=login target=_self class=md-flat nouppercase ng-hide=ctrl.loggedin {{'SIGN_IN' | translate}} /md-button - md-button href=logout target=_self class=md-flat ng-show=ctrl.loggedin + md-button href=logout target=_self class=md-flat nouppercase ng-show=ctrl.loggedin {{'SIGN_OUT' | translate}} /md-button /md-toolbar -- To view, visit https://gerrit.wikimedia.org/r/228286 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib499e8d23e7ea4fa6809df9b09c846ad2d0911b8 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix connectionerror handler - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228287 Change subject: Fix connectionerror handler .. Fix connectionerror handler Change-Id: Ib810d83a96a0414012f606b3143efe27260e4910 --- M frontend/src/app/runBlock.js 1 file changed, 1 insertion(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/87/228287/1 diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 3edfb6a..287e064 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -32,20 +32,12 @@ amMoment.changeLocale(lang); /** - * Query watchlist on login. - * Not part of authService to prevent circular dependency. - */ - $rootScope.$on('login', function () { -dataService.queryWatchlist(); -$timeout(errorHandler, 1); // show error if no response after 10 secs - }); - - /** * If logged in before sockjs connected, query watchlist again. */ socket.setHandler('open', function () { $log.info('sockjs connected'); dataService.queryWatchlist(); +$timeout(errorHandler, 15000); // show error if no response after 15 secs }); /** -- To view, visit https://gerrit.wikimedia.org/r/228287 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib810d83a96a0414012f606b3143efe27260e4910 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Don't text-transform uppercase navbar buttons - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Don't text-transform uppercase navbar buttons .. Don't text-transform uppercase navbar buttons Change-Id: Ib499e8d23e7ea4fa6809df9b09c846ad2d0911b8 --- M frontend/src/app/index.css M frontend/src/components/navbar/navbar.html 2 files changed, 11 insertions(+), 7 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 102a6ee..bbc9afd 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -119,6 +119,10 @@ color:#777 } +.nouppercase { + text-transform: none; +} + .whitebox { background-color: white; width: 100%; diff --git a/frontend/src/components/navbar/navbar.html b/frontend/src/components/navbar/navbar.html index 52eeeae..e632977 100644 --- a/frontend/src/components/navbar/navbar.html +++ b/frontend/src/components/navbar/navbar.html @@ -4,19 +4,19 @@ ng-change=ctrl.changeLanguage(ctrl.selectedLang) md-option ng-repeat=lang in ctrl.langs value={{lang.key}}{{lang.language}}/md-option /md-select - md-button href=https://meta.wikimedia.org/wiki/Crosswatch; target=_blank class=md-flat -{{'DOCUMENTATION' | translate}} - /md-button - md-button href=https://meta.wikimedia.org/wiki/Talk:Crosswatch; target=_blank class=md-flat + md-button href=https://meta.wikimedia.org/wiki/Talk:Crosswatch; target=_blank class=md-flat nouppercase {{'TALK' | translate}} /md-button - md-button href=https://phabricator.wikimedia.org/project/view/1224/; target=_blank class=md-flat + md-button href=https://meta.wikimedia.org/wiki/Crosswatch; target=_blank class=md-flat nouppercase +{{'DOCUMENTATION' | translate}} + /md-button + md-button href=https://phabricator.wikimedia.org/project/view/1224/; target=_blank class=md-flat nouppercase {{'REPORT_BUGS' | translate}} /md-button - md-button href=login target=_self class=md-flat ng-hide=ctrl.loggedin + md-button href=login target=_self class=md-flat nouppercase ng-hide=ctrl.loggedin {{'SIGN_IN' | translate}} /md-button - md-button href=logout target=_self class=md-flat ng-show=ctrl.loggedin + md-button href=logout target=_self class=md-flat nouppercase ng-show=ctrl.loggedin {{'SIGN_OUT' | translate}} /md-button /md-toolbar -- To view, visit https://gerrit.wikimedia.org/r/228286 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib499e8d23e7ea4fa6809df9b09c846ad2d0911b8 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix connectionerror handler - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix connectionerror handler .. Fix connectionerror handler Change-Id: Ib810d83a96a0414012f606b3143efe27260e4910 --- M frontend/src/app/runBlock.js 1 file changed, 1 insertion(+), 9 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 3edfb6a..287e064 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -32,20 +32,12 @@ amMoment.changeLocale(lang); /** - * Query watchlist on login. - * Not part of authService to prevent circular dependency. - */ - $rootScope.$on('login', function () { -dataService.queryWatchlist(); -$timeout(errorHandler, 1); // show error if no response after 10 secs - }); - - /** * If logged in before sockjs connected, query watchlist again. */ socket.setHandler('open', function () { $log.info('sockjs connected'); dataService.queryWatchlist(); +$timeout(errorHandler, 15000); // show error if no response after 15 secs }); /** -- To view, visit https://gerrit.wikimedia.org/r/228287 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib810d83a96a0414012f606b3143efe27260e4910 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add FlaggedRevs support - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add FlaggedRevs support .. Add FlaggedRevs support Checks if a page needs review for wikis which have FlaggedRevs. If so and the user has review right the diff and link to review the changes is shown. Adds option to not automatically show diff for unreviewed edits. Bug: T101456 Change-Id: Ic373e0666267e2a1bf953b7bdf4b9a63621a8c7a --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/settings/settings.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 8 files changed, 126 insertions(+), 13 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index d738c1b..6466f2d 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -4,6 +4,7 @@ from __future__ import absolute_import from __future__ import unicode_literals +from collections import namedtuple import requests from requests_oauthlib import OAuth1 from redis import StrictRedis @@ -83,7 +84,9 @@ def query(self, params): params['format'] = json response = requests.get(self.api_url, params=params, auth=self.auth, -headers=self.headers).json() +headers=self.headers) +response.raise_for_status() +response = response.json() self._handle_response(response) return response @@ -121,14 +124,32 @@ token = r['query']['tokens'][type + 'token'] return token -def username(self): +def user_info(self): params = { 'action': query, 'meta': userinfo, +'uiprop': rights } response = self.query(params) -username = response['query']['userinfo']['name'] -return username +response = response['query']['userinfo'] +User = namedtuple('user', ['name', 'rights']) +user = User(response['name'], response['rights']) +return user + +def user_rights(self, username): + +User rights for a given username +:param username: +:return: list of rights + +params = { +'action': query, +'list': users, +'usprop': rights, +'ususers': username +} +response = self.query(params) +return response['query']['users'][0]['rights'] def diff(self, pageid, old_revid, new_revid): params = { @@ -161,6 +182,8 @@ params = {'action': sitematrix} data = self.query(params) +flaggedrevs_wikis = self._flaggedrevs_wikis() + wikis = {} for key, val in data['sitematrix'].items(): if key == 'count': @@ -169,10 +192,14 @@ if 'code' in val: for site in val['site']: wiki = self._create_wiki(site, val['code'], val['name']) +if site['dbname'] in flaggedrevs_wikis: +wiki['flaggedrevs'] = True wikis[site['dbname']] = wiki else: for site in val: wiki = self._create_wiki(site, '', '') +if site['dbname'] in flaggedrevs_wikis: +wiki['flaggedrevs'] = True wikis[site['dbname']] = wiki return wikis @@ -192,6 +219,13 @@ wiki['closed'] = True return wiki +def _flaggedrevs_wikis(self): +url = https://noc.wikimedia.org/conf/flaggedrevs.dblist; +response = requests.get(url, headers=self.headers) +response.raise_for_status() + +return response.text.splitlines() + def ores_context_exists(self, dbname, model='reverted', cached=True): Checks if ORES context for a wiki exists key = config.redis_prefix + 'ores' + model diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 489b3fd..52722db 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -27,6 +27,7 @@ mw = MediaWiki(redis_channel=redis_channel) mw.publish({'msgtype': canary}) + @app.task def initial_task(**kwargs): @@ -38,13 +39,13 @@ redis_channel = kwargs.get('redis_channel', None) mw = MediaWiki(access_token=access_token, redis_channel=redis_channel) -username = mw.username() +username = mw.user_info().name wikis = mw.wikis() # Use cache of known projects to bypass sometimes blocking mysql check for project in preload_projects: wiki = wikis[project] -watchlistgetter.delay(wiki=wiki, **kwargs) +watchlistgetter.delay(wiki=wiki, username=username, **kwargs) notificationgetter.delay(wiki=wiki, **kwargs) db =
[MediaWiki-commits] [Gerrit] Add FlaggedRevs support - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/228212 Change subject: Add FlaggedRevs support .. Add FlaggedRevs support Checks if a page needs review for wikis which have FlaggedRevs. If so and the user has review right the diff and link to review the changes is shown. Adds option to not automatically show diff for unreviewed edits. Bug: T101456 Change-Id: Ic373e0666267e2a1bf953b7bdf4b9a63621a8c7a --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/settings/settings.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 8 files changed, 124 insertions(+), 11 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/12/228212/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index d738c1b..6466f2d 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -4,6 +4,7 @@ from __future__ import absolute_import from __future__ import unicode_literals +from collections import namedtuple import requests from requests_oauthlib import OAuth1 from redis import StrictRedis @@ -83,7 +84,9 @@ def query(self, params): params['format'] = json response = requests.get(self.api_url, params=params, auth=self.auth, -headers=self.headers).json() +headers=self.headers) +response.raise_for_status() +response = response.json() self._handle_response(response) return response @@ -121,14 +124,32 @@ token = r['query']['tokens'][type + 'token'] return token -def username(self): +def user_info(self): params = { 'action': query, 'meta': userinfo, +'uiprop': rights } response = self.query(params) -username = response['query']['userinfo']['name'] -return username +response = response['query']['userinfo'] +User = namedtuple('user', ['name', 'rights']) +user = User(response['name'], response['rights']) +return user + +def user_rights(self, username): + +User rights for a given username +:param username: +:return: list of rights + +params = { +'action': query, +'list': users, +'usprop': rights, +'ususers': username +} +response = self.query(params) +return response['query']['users'][0]['rights'] def diff(self, pageid, old_revid, new_revid): params = { @@ -161,6 +182,8 @@ params = {'action': sitematrix} data = self.query(params) +flaggedrevs_wikis = self._flaggedrevs_wikis() + wikis = {} for key, val in data['sitematrix'].items(): if key == 'count': @@ -169,10 +192,14 @@ if 'code' in val: for site in val['site']: wiki = self._create_wiki(site, val['code'], val['name']) +if site['dbname'] in flaggedrevs_wikis: +wiki['flaggedrevs'] = True wikis[site['dbname']] = wiki else: for site in val: wiki = self._create_wiki(site, '', '') +if site['dbname'] in flaggedrevs_wikis: +wiki['flaggedrevs'] = True wikis[site['dbname']] = wiki return wikis @@ -192,6 +219,13 @@ wiki['closed'] = True return wiki +def _flaggedrevs_wikis(self): +url = https://noc.wikimedia.org/conf/flaggedrevs.dblist; +response = requests.get(url, headers=self.headers) +response.raise_for_status() + +return response.text.splitlines() + def ores_context_exists(self, dbname, model='reverted', cached=True): Checks if ORES context for a wiki exists key = config.redis_prefix + 'ores' + model diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 489b3fd..52722db 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -27,6 +27,7 @@ mw = MediaWiki(redis_channel=redis_channel) mw.publish({'msgtype': canary}) + @app.task def initial_task(**kwargs): @@ -38,13 +39,13 @@ redis_channel = kwargs.get('redis_channel', None) mw = MediaWiki(access_token=access_token, redis_channel=redis_channel) -username = mw.username() +username = mw.user_info().name wikis = mw.wikis() # Use cache of known projects to bypass sometimes blocking mysql check for project in preload_projects: wiki = wikis[project] -watchlistgetter.delay(wiki=wiki, **kwargs) +watchlistgetter.delay(wiki=wiki, username=username, **kwargs)
[MediaWiki-commits] [Gerrit] Fix logevents for pagetranslation - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix logevents for pagetranslation .. Fix logevents for pagetranslation Add i18n logevent strings for pagetranslation, fix error handling when logtype/logaction not recognized. Change-Id: Iddfe60d9e4c0c22869653613d0e11e4d4a902a9d --- M frontend/src/components/watchlist/logevent.directive.html M frontend/src/i18n/en.json 2 files changed, 20 insertions(+), 8 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/watchlist/logevent.directive.html b/frontend/src/components/watchlist/logevent.directive.html index 415c966..5e4a762 100644 --- a/frontend/src/components/watchlist/logevent.directive.html +++ b/frontend/src/components/watchlist/logevent.directive.html @@ -4,7 +4,7 @@ span ng-switch-when=delete translate=LOGEVENT_DELETE_DELETE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=restore translate=LOGEVENT_DELETE_RESTORE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=revision translate=LOGEVENT_DELETE_REVISION translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=protect @@ -13,7 +13,7 @@ span ng-switch-when=move_prot translate=LOGEVENT_PROTECT_MOVE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=protect translate=LOGEVENT_PROTECT_PROTECT translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=unprotect translate=LOGEVENT_PROTECT_UNPROTECT translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=move @@ -24,15 +24,15 @@ span ng-switch-when=block translate=LOGEVENT_BLOCK_BLOCK translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=reblock translate=LOGEVENT_BLOCK_REBLOCK translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=unblock translate=LOGEVENT_BLOCK_UNBLOCK translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=rights span ng-switch=::event.logaction span ng-switch-when=autopromote translate=LOGEVENT_RIGHTS_AUTOPROMOTE translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-when=erevoke{{::event}} !-- TODO, seems to be unused by WMF --/span +span ng-switch-when=erevokecode{{event}}/code !-- TODO, seems to be unused by WMF --/span span ng-switch-when=rights translate=LOGEVENT_RIGHTS_RIGHTS translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=upload @@ -40,14 +40,14 @@ span ng-switch-when=overwrite translate=LOGEVENT_UPLOAD_OVERWRITE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=revert translate=LOGEVENT_UPLOAD_REVERT translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=upload translate=LOGEVENT_UPLOAD_UPLOAD translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=import span ng-switch=::event.logaction span ng-switch-when=interwiki translate=LOGEVENT_IMPORT_INTERWIKI translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=upload translate=LOGEVENT_IMPORT_UPLOAD translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=merge @@ -58,11 +58,20 @@ span ng-switch-when=create translate=LOGEVENT_NEWUSERS_CREATE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=create2 translate=LOGEVENT_NEWUSERS_CREATE2 translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=byemail
[MediaWiki-commits] [Gerrit] Add ORES support - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add ORES support .. Add ORES support Automatically show diff, if ORES predicts that the edit will be reverted and the edit was not already reverted. Adds option to turn ORES off. Bug: T106727 Change-Id: I346655e8b696529ce771bfac57e51a67507a7b47 --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/settings/settings.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json M setup.py 10 files changed, 177 insertions(+), 31 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index 7a4870f..d738c1b 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -10,6 +10,9 @@ import json from datetime import datetime, timedelta +from mw.api import Session as RevertsSession +from mw.lib.reverts import api as reverts + from .. import config from . import logger @@ -19,10 +22,10 @@ access_token=None, redis_channel=None): self.api_url = host + path -user_agent = crosswatch (https://tools.wmflabs.org/crosswatch;; +\ +self.user_agent = crosswatch (https://tools.wmflabs.org/crosswatch;; +\ crosswa...@tools.wmflabs.org) python-requests/ +\ requests.__version__ -self.headers = {'User-Agent': user_agent} +self.headers = {'User-Agent': self.user_agent} if access_token: # Construct an auth object with the consumer and access tokens @@ -41,6 +44,7 @@ db=config.redis_db, decode_responses=True ) +self.ores_url = 'http://ores.wmflabs.org/scores' def publish(self, message): if not self.redis_channel: @@ -187,3 +191,51 @@ if any([key in site for key in inactive_wikis]): wiki['closed'] = True return wiki + +def ores_context_exists(self, dbname, model='reverted', cached=True): +Checks if ORES context for a wiki exists +key = config.redis_prefix + 'ores' + model +if not self.redis.exists(key) or not cached: +self._ores_contexts(model) +return self.redis.sismember(key, dbname) + +def _ores_contexts(self, model): +Fill cache +pipe = self.redis.pipeline() +key = config.redis_prefix + 'ores' + model +pipe.delete(key) + +contexts = requests.get(self.ores_url, headers=self.headers) +contexts.raise_for_status() +contexts = contexts.json()['contexts'] + +for context in contexts: +models = requests.get('{}/{}/'.format(self.ores_url, context), + headers=self.headers) +models.raise_for_status() +models = models.json()['models'] + +if model in models: +pipe.sadd(key, context) +pipe.expire(key, 172800) # 2 days exp. +pipe.execute() + +def ores_scores(self, dbname, revids, model='reverted'): +Get ORES scores for revision ids +url = '{}/{}/{}/'.format(self.ores_url, dbname, model) + +revids = '|'.join([str(id) for id in revids]) +params = {'revids': revids} + +response = requests.get(url, params=params, headers=self.headers) +response.raise_for_status() + +return response.json() + +def was_reverted(self, revision): + +Checks if a revision was reverted +:param revision: a revision dict containing ‘revid’ and ‘pageid’ + +session = RevertsSession(self.api_url, user_agent=self.user_agent) +return reverts.check_rev(session, revision) \ No newline at end of file diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 5c2ab90..489b3fd 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -116,10 +116,10 @@ redis_channel = kwargs['redis_channel'] watchlistperiod = kwargs.get('watchlistperiod', False) allrev = kwargs.get('allrev', False) - -mw = MediaWiki(host=wiki['url'], access_token=access_token, + +mw = MediaWiki(host=wiki['url'], access_token=access_token, redis_channel=redis_channel) - + if watchlistperiod: days = float(watchlistperiod) else: @@ -163,8 +163,12 @@ 'msgtype': 'watchlist', 'entires': items } -if items: -mw.publish(message) +if not items: +return +mw.publish(message) + +if mw.ores_context_exists(wiki['dbname']): +ores.delay(items, **kwargs) @app.task @@ -173,8 +177,8 @@ wiki = kwargs['wiki'] access_token = kwargs['access_token'] redis_channel = kwargs['redis_channel'] - -
[MediaWiki-commits] [Gerrit] Fix logevents for pagetranslation - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/227600 Change subject: Fix logevents for pagetranslation .. Fix logevents for pagetranslation Add i18n logevent strings for pagetranslation, fix error handling when logtype/logaction not recognized. Change-Id: Iddfe60d9e4c0c22869653613d0e11e4d4a902a9d --- M frontend/src/components/watchlist/logevent.directive.html M frontend/src/i18n/en.json 2 files changed, 20 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/00/227600/1 diff --git a/frontend/src/components/watchlist/logevent.directive.html b/frontend/src/components/watchlist/logevent.directive.html index 415c966..5e4a762 100644 --- a/frontend/src/components/watchlist/logevent.directive.html +++ b/frontend/src/components/watchlist/logevent.directive.html @@ -4,7 +4,7 @@ span ng-switch-when=delete translate=LOGEVENT_DELETE_DELETE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=restore translate=LOGEVENT_DELETE_RESTORE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=revision translate=LOGEVENT_DELETE_REVISION translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=protect @@ -13,7 +13,7 @@ span ng-switch-when=move_prot translate=LOGEVENT_PROTECT_MOVE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=protect translate=LOGEVENT_PROTECT_PROTECT translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=unprotect translate=LOGEVENT_PROTECT_UNPROTECT translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=move @@ -24,15 +24,15 @@ span ng-switch-when=block translate=LOGEVENT_BLOCK_BLOCK translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=reblock translate=LOGEVENT_BLOCK_REBLOCK translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=unblock translate=LOGEVENT_BLOCK_UNBLOCK translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=rights span ng-switch=::event.logaction span ng-switch-when=autopromote translate=LOGEVENT_RIGHTS_AUTOPROMOTE translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-when=erevoke{{::event}} !-- TODO, seems to be unused by WMF --/span +span ng-switch-when=erevokecode{{event}}/code !-- TODO, seems to be unused by WMF --/span span ng-switch-when=rights translate=LOGEVENT_RIGHTS_RIGHTS translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=upload @@ -40,14 +40,14 @@ span ng-switch-when=overwrite translate=LOGEVENT_UPLOAD_OVERWRITE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=revert translate=LOGEVENT_UPLOAD_REVERT translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=upload translate=LOGEVENT_UPLOAD_UPLOAD translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=import span ng-switch=::event.logaction span ng-switch-when=interwiki translate=LOGEVENT_IMPORT_INTERWIKI translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=upload translate=LOGEVENT_IMPORT_UPLOAD translate-values=event translate-interpolation=custom translate-compile/span -span ng-switch-default{{event}}/span !-- debug fallback -- +span ng-switch-defaultcode{{event}}/code/span !-- debug fallback -- /span /span span ng-switch-when=merge @@ -58,11 +58,20 @@ span ng-switch-when=create translate=LOGEVENT_NEWUSERS_CREATE translate-values=event translate-interpolation=custom translate-compile/span span ng-switch-when=create2 translate=LOGEVENT_NEWUSERS_CREATE2 translate-values=event translate-interpolation=custom
[MediaWiki-commits] [Gerrit] Switch to python 3 - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/227164 Change subject: Switch to python 3 .. Switch to python 3 \o/ gevent added python 3 support two weeks ago. The switch is needed for mediawiki-utilities to check if a revision was reverted. Change-Id: I1c49eb7b3c68be860cf6a4a0ee3713a3f244bae2 --- M backend/celery/api.py M backend/celery/tasks.py M backend/server/__init__.py M backend/server/flask_mwoauth/__init__.py M scripts/celery.grid.sh M setup.py 6 files changed, 40 insertions(+), 47 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/64/227164/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index fb6146d..7a4870f 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -38,7 +38,8 @@ self.redis = StrictRedis( host=config.redis_server, port=config.redis_port, -db=config.redis_db +db=config.redis_db, +decode_responses=True ) def publish(self, message): diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 6afd300..5c2ab90 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -4,6 +4,7 @@ # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import from __future__ import unicode_literals +from builtins import range from uuid import uuid4 from contextlib import closing @@ -16,7 +17,7 @@ def chunks(l, n): Yield successive n-sized chunks from l. -for i in xrange(0, len(l), n): +for i in range(0, len(l), n): yield l[i:i+n] @@ -49,7 +50,8 @@ db = MySQLdb.connect( host='centralauth.labsdb', user=config.sql_user, -passwd=config.sql_passwd +passwd=config.sql_passwd, +charset='utf8' ) projects = [] @@ -57,7 +59,7 @@ cur.execute(SELECT lu_wiki FROM centralauth_p.localuser WHERE lu_name=%s;, [username]) # NOQA result = cur.fetchall() for row in result: -project = row[0] +project = row[0].decode(utf-8) try: wiki = wikis[project] if 'closed' not in wiki and project not in preload_projects: @@ -84,7 +86,8 @@ db = MySQLdb.connect( host='s4.labsdb', user=config.sql_user, -passwd=config.sql_passwd +passwd=config.sql_passwd, +charset='utf8' ) with closing(db.cursor()) as cur: for wiki in project_chunk: @@ -221,7 +224,7 @@ mw = MediaWiki(access_token=access_token, redis_channel=redis_channel) wikis = mw.wikis() -for project, notifications in notifications.iteritems(): +for project, notifications in notifications.items(): projecturl = wikis[project]['url'] mw = MediaWiki(host=projecturl, access_token=access_token, redis_channel=redis_channel) diff --git a/backend/server/__init__.py b/backend/server/__init__.py index 185ecd2..7264fe6 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -69,7 +69,7 @@ def run(port): -logging.basicConfig(level=logging.DEBUG, +logging.basicConfig(level=logging.INFO, format='%(asctime)s %(name)-12s %(levelname)-8s' + ' %(message)s', datefmt='%m-%d %H:%M') diff --git a/backend/server/flask_mwoauth/__init__.py b/backend/server/flask_mwoauth/__init__.py index a05e110..b9ae9d8 100644 --- a/backend/server/flask_mwoauth/__init__.py +++ b/backend/server/flask_mwoauth/__init__.py @@ -8,31 +8,13 @@ # Licensed under the MIT License // http://opensource.org/licenses/MIT # -__version__ = '0.1.35' - -import urllib +from future.moves.urllib.parse import urlencode from flask import request, session, Blueprint, make_response, redirect, render_template -from flask_oauth import OAuth, OAuthRemoteApp, OAuthException, parse_response +from flask_oauthlib.client import OAuth, OAuthException import json - -class MWOAuthRemoteApp(OAuthRemoteApp): -def handle_oauth1_response(self): -Handles an oauth1 authorization response. The return value of -this method is forwarded as first argument to the handling view -function. - -client = self.make_client() -resp, content = client.request('%soauth_verifier=%s' % ( -self.expand_url(self.access_token_url), -request.args['oauth_verifier'], -), self.access_token_method) -print resp, content -data = parse_response(resp, content) -if not self.status_okay(resp): -raise OAuthException('Invalid response from ' + self.name, - type='invalid_response', data=data) -return data +import logging +log = logging.getLogger('test') class MWOAuth(object): @@ -50,18 +32,22 @@ self.toolname =
[MediaWiki-commits] [Gerrit] Add ORES support - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/227163 Change subject: Add ORES support .. Add ORES support Automatically show diff, if ORES predicts that the edit will be reverted. Adds option to turn it off. Bug: T106727 Change-Id: I346655e8b696529ce771bfac57e51a67507a7b47 --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/settings/settings.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 9 files changed, 147 insertions(+), 27 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/63/227163/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index fb6146d..d16b3d2 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -40,6 +40,7 @@ port=config.redis_port, db=config.redis_db ) +self.ores_url = 'http://ores.wmflabs.org/scores' def publish(self, message): if not self.redis_channel: @@ -186,3 +187,46 @@ if any([key in site for key in inactive_wikis]): wiki['closed'] = True return wiki + +def ores_context_exists(self, dbname, model='reverted', cached=True): +Checks if ORES context for a wiki exists +key = config.redis_prefix + 'ores' + model +if not self.redis.exists(key) or not cached: +self._ores_contexts(model) +return self.redis.sismember(key, dbname) + +def _ores_contexts(self, model): +Fill cache +pipe = self.redis.pipeline() +key = config.redis_prefix + 'ores' + model +pipe.delete(key) + +contexts = requests.get(self.ores_url, headers=self.headers) +contexts.raise_for_status() +contexts = contexts.json()['contexts'] + +for context in contexts: +models = requests.get('{}/{}/'.format(self.ores_url, context), + headers=self.headers) +models.raise_for_status() +models = models.json()['models'] + +if model in models: +pipe.sadd(key, context) +pipe.expire(key, 172800) # 2 days exp. +pipe.execute() + +def ores_scores(self, dbname, revids, model='reverted'): +Get ORES scores for revision ids +url = '{}/{}/{}/'.format(self.ores_url, dbname, model) + +revids = '|'.join([str(id) for id in revids]) +params = {'revids': revids} + +response = requests.get(url, params=params, headers=self.headers) +response.raise_for_status() +logger.info('ores req completed in {} seconds for {} revids.'.format( +response.elapsed.total_seconds(), len(revids) +)) + +return response.json() diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 6afd300..634befb 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -113,10 +113,10 @@ redis_channel = kwargs['redis_channel'] watchlistperiod = kwargs.get('watchlistperiod', False) allrev = kwargs.get('allrev', False) - -mw = MediaWiki(host=wiki['url'], access_token=access_token, + +mw = MediaWiki(host=wiki['url'], access_token=access_token, redis_channel=redis_channel) - + if watchlistperiod: days = float(watchlistperiod) else: @@ -160,8 +160,12 @@ 'msgtype': 'watchlist', 'entires': items } -if items: -mw.publish(message) +if not items: +return +mw.publish(message) + +if mw.ores_context_exists(wiki['dbname']): +ores.delay(items, **kwargs) @app.task @@ -170,8 +174,8 @@ wiki = kwargs['wiki'] access_token = kwargs['access_token'] redis_channel = kwargs['redis_channel'] - -mw = MediaWiki(host=wiki['url'], access_token=access_token, + +mw = MediaWiki(host=wiki['url'], access_token=access_token, redis_channel=redis_channel) params = { @@ -277,5 +281,39 @@ 'data': not watchted }) + +@app.task +def ores(items, **kwargs): +wiki = kwargs['wiki'] +access_token = kwargs['access_token'] +redis_channel = kwargs['redis_channel'] + +mw = MediaWiki(host=wiki['url'], + access_token=access_token, + redis_channel=redis_channel) + +edits = {} +for item in items: +if item['type'] == 'edit': +edits[item['revid']] = item +if not edits: +return + +response = mw.ores_scores(wiki['dbname'], edits.keys()) +for revid, value in response.items(): +if value['probability']['true'] = 0.8: +revid = int(revid) +probablity = {:.0%}.format(value['probability']['true']) + +
[MediaWiki-commits] [Gerrit] Add buttons to edit, revert or unwatch page - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add buttons to edit, revert or unwatch page .. Add buttons to edit, revert or unwatch page * Adds icons with links to edit or revert an edit (opens new tab to MediaWiki) * Added icon to remove page from watchlist/app page to watchlist * Refactored functions to have a generic websocket query function * Set a cookie for consumer version, logout if not up to date Bug: T104572 Change-Id: I94c381d10edef057d5526ddca199ca561a10962b --- M backend/celery/tasks.py M backend/server/__init__.py M backend/server/flask_mwoauth/__init__.py M backend/server/oauth_handler.py M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/navbar/navbar.controller.js M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 12 files changed, 167 insertions(+), 83 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 3cfde96..6afd300 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -246,11 +246,36 @@ diff = mw.diff(pageid, old_revid, revid) mw.publish({ -'msgtype': 'diff_response', +'msgtype': 'response', 'request_id': request_id, -'diff': diff +'data': diff }) +@app.task +def watch(**kwargs): +access_token = kwargs['access_token'] +redis_channel = kwargs['redis_channel'] +request_id = kwargs['request_id'] +projecturl = kwargs['projecturl'] +title = kwargs['title'] +watchted = kwargs['status'] + +mw = MediaWiki(host=projecturl, + access_token=access_token, + redis_channel=redis_channel) + +params = {'action': watch} +payload = {'titles': title} +if watchted: +payload['unwatch'] = +mw.post(params, payload, token_type='watch') + +mw.publish({ +'msgtype': 'response', +'request_id': request_id, +'data': not watchted +}) + if __name__ == '__main__': app.start() diff --git a/backend/server/__init__.py b/backend/server/__init__.py index dfe9245..185ecd2 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -56,6 +56,8 @@ kwargs=data, expires=60) elif data['action'] == 'diff': celery_app.send_task('backend.celery.tasks.get_diff', kwargs=data) +elif data['action'] == 'watch': +celery_app.send_task('backend.celery.tasks.watch', kwargs=data) else: logging.error('Unrecognized action for message: ' + str(data)) diff --git a/backend/server/flask_mwoauth/__init__.py b/backend/server/flask_mwoauth/__init__.py index d89b170..a05e110 100644 --- a/backend/server/flask_mwoauth/__init__.py +++ b/backend/server/flask_mwoauth/__init__.py @@ -10,7 +10,6 @@ __version__ = '0.1.35' -import sys import urllib from flask import request, session, Blueprint, make_response, redirect, render_template from flask_oauth import OAuth, OAuthRemoteApp, OAuthException, parse_response @@ -36,18 +35,20 @@ return data -class MWOAuth(object): # http://stackoverflow.com/a/26691512 +class MWOAuth(object): def __init__(self, base_url='https://www.mediawiki.org/w', clean_url='https://www.mediawiki.org/wiki', consumer_key=None, consumer_secret=None, - toolname='mytool'): + toolname='crosswatch', + consumer_version=1.0): if not consumer_key or not consumer_secret: raise Exception('MWOAuthBlueprintFactory needs consumer key and\ secret') self.base_url = base_url self.toolname = toolname +self.consumer_version = consumer_version self.oauth = OAuth() self.mwoauth = MWOAuthRemoteApp(self.oauth, 'mw.org', @@ -103,6 +104,9 @@ resp.set_cookie(self.toolname + '.user', username, max_age=30*24*60*60, path='/' + self.toolname + '/') +resp.set_cookie(self.toolname + '.version', consumer_version, +max_age=30*24*60*60, +path='/' + self.toolname + '/') session.clear() return resp @@ -115,6 +119,8 @@ path='/' + self.toolname + '/', expires=0) resp.set_cookie(self.toolname + '.user', '', path='/' + self.toolname + '/', expires=0) +resp.set_cookie(self.toolname + '.version', '', +path='/' + self.toolname + '/', expires=0) session.clear()
[MediaWiki-commits] [Gerrit] Add buttons to edit, revert or unwatch page - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/226589 Change subject: Add buttons to edit, revert or unwatch page .. Add buttons to edit, revert or unwatch page * Adds icons with links to edit or revert an edit (opens new tab to MediaWiki) * Added icon to remove page from watchlist/app page to watchlist * Refactored functions to have a generic websocket query function * Set a cookie for consumer version, logout if not up to date Bug: T104572 Change-Id: I94c381d10edef057d5526ddca199ca561a10962b --- M backend/celery/tasks.py M backend/server/__init__.py M backend/server/flask_mwoauth/__init__.py M backend/server/oauth_handler.py M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/navbar/navbar.controller.js M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 12 files changed, 167 insertions(+), 83 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/89/226589/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 3cfde96..6afd300 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -246,11 +246,36 @@ diff = mw.diff(pageid, old_revid, revid) mw.publish({ -'msgtype': 'diff_response', +'msgtype': 'response', 'request_id': request_id, -'diff': diff +'data': diff }) +@app.task +def watch(**kwargs): +access_token = kwargs['access_token'] +redis_channel = kwargs['redis_channel'] +request_id = kwargs['request_id'] +projecturl = kwargs['projecturl'] +title = kwargs['title'] +watchted = kwargs['status'] + +mw = MediaWiki(host=projecturl, + access_token=access_token, + redis_channel=redis_channel) + +params = {'action': watch} +payload = {'titles': title} +if watchted: +payload['unwatch'] = +mw.post(params, payload, token_type='watch') + +mw.publish({ +'msgtype': 'response', +'request_id': request_id, +'data': not watchted +}) + if __name__ == '__main__': app.start() diff --git a/backend/server/__init__.py b/backend/server/__init__.py index dfe9245..185ecd2 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -56,6 +56,8 @@ kwargs=data, expires=60) elif data['action'] == 'diff': celery_app.send_task('backend.celery.tasks.get_diff', kwargs=data) +elif data['action'] == 'watch': +celery_app.send_task('backend.celery.tasks.watch', kwargs=data) else: logging.error('Unrecognized action for message: ' + str(data)) diff --git a/backend/server/flask_mwoauth/__init__.py b/backend/server/flask_mwoauth/__init__.py index d89b170..a05e110 100644 --- a/backend/server/flask_mwoauth/__init__.py +++ b/backend/server/flask_mwoauth/__init__.py @@ -10,7 +10,6 @@ __version__ = '0.1.35' -import sys import urllib from flask import request, session, Blueprint, make_response, redirect, render_template from flask_oauth import OAuth, OAuthRemoteApp, OAuthException, parse_response @@ -36,18 +35,20 @@ return data -class MWOAuth(object): # http://stackoverflow.com/a/26691512 +class MWOAuth(object): def __init__(self, base_url='https://www.mediawiki.org/w', clean_url='https://www.mediawiki.org/wiki', consumer_key=None, consumer_secret=None, - toolname='mytool'): + toolname='crosswatch', + consumer_version=1.0): if not consumer_key or not consumer_secret: raise Exception('MWOAuthBlueprintFactory needs consumer key and\ secret') self.base_url = base_url self.toolname = toolname +self.consumer_version = consumer_version self.oauth = OAuth() self.mwoauth = MWOAuthRemoteApp(self.oauth, 'mw.org', @@ -103,6 +104,9 @@ resp.set_cookie(self.toolname + '.user', username, max_age=30*24*60*60, path='/' + self.toolname + '/') +resp.set_cookie(self.toolname + '.version', consumer_version, +max_age=30*24*60*60, +path='/' + self.toolname + '/') session.clear() return resp @@ -115,6 +119,8 @@ path='/' + self.toolname + '/', expires=0) resp.set_cookie(self.toolname + '.user', '', path='/' + self.toolname + '/', expires=0) +resp.set_cookie(self.toolname + '.version', '', +path='/' +
[MediaWiki-commits] [Gerrit] Fix i18n message interpolation for a tags - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/226309 Change subject: Fix i18n message interpolation for a tags .. Fix i18n message interpolation for a tags Don't interpolate a tags in i18n strings Change-Id: I68b125474386eb7c662dc332d31f5277c8c6dea3 --- M frontend/src/app/translationProvider.js 1 file changed, 5 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/09/226309/1 diff --git a/frontend/src/app/translationProvider.js b/frontend/src/app/translationProvider.js index 7f951c9..d3cd7a4 100644 --- a/frontend/src/app/translationProvider.js +++ b/frontend/src/app/translationProvider.js @@ -47,8 +47,11 @@ }; $translateInterpolator.interpolate = function (string, interpolationParams) { -// user foo user title={{bar|baz}} - user/user foo user title=\{{bar|baz}}\/user -string = string.replace(/(([a-z\-]*)\s?[^]*?)/g, $1/$2).replace(/({{[\w|]+}})/g, \$1\); +/** + * Closes html tags in translation strings (but not for a tags) and adds quotation marks. + * For example: user foo user title={{bar|baz}} - user/user foo user title=\{{bar|baz}}\/user + */ +string = string.replace(/(([a-z\-]{2,})\s?[^]*?)/g, $1/$2).replace(/({{[\w|]+}})/g, \$1\); interpolationParams = interpolationParams || {}; interpolationParams = $translateSanitization.sanitize(interpolationParams, 'params'); -- To view, visit https://gerrit.wikimedia.org/r/226309 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I68b125474386eb7c662dc332d31f5277c8c6dea3 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix i18n message interpolation for a tags - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix i18n message interpolation for a tags .. Fix i18n message interpolation for a tags Don't interpolate a tags in i18n strings Change-Id: I68b125474386eb7c662dc332d31f5277c8c6dea3 --- M frontend/src/app/translationProvider.js 1 file changed, 5 insertions(+), 2 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/translationProvider.js b/frontend/src/app/translationProvider.js index 7f951c9..d3cd7a4 100644 --- a/frontend/src/app/translationProvider.js +++ b/frontend/src/app/translationProvider.js @@ -47,8 +47,11 @@ }; $translateInterpolator.interpolate = function (string, interpolationParams) { -// user foo user title={{bar|baz}} - user/user foo user title=\{{bar|baz}}\/user -string = string.replace(/(([a-z\-]*)\s?[^]*?)/g, $1/$2).replace(/({{[\w|]+}})/g, \$1\); +/** + * Closes html tags in translation strings (but not for a tags) and adds quotation marks. + * For example: user foo user title={{bar|baz}} - user/user foo user title=\{{bar|baz}}\/user + */ +string = string.replace(/(([a-z\-]{2,})\s?[^]*?)/g, $1/$2).replace(/({{[\w|]+}})/g, \$1\); interpolationParams = interpolationParams || {}; interpolationParams = $translateSanitization.sanitize(interpolationParams, 'params'); -- To view, visit https://gerrit.wikimedia.org/r/226309 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I68b125474386eb7c662dc332d31f5277c8c6dea3 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Only use one redis channel per client - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Only use one redis channel per client .. Only use one redis channel per client Change-Id: Ib5a69ab6a74e809ecf00bd475e04ae3a57c45552 --- M backend/server/__init__.py 1 file changed, 6 insertions(+), 15 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/server/__init__.py b/backend/server/__init__.py index 363fe9f..dfe9245 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -39,34 +39,25 @@ class SockConnection(SockJSConnection): def on_open(self, info): -self.channels = [] +self.channel = str(uuid4()) +subscriber.subscribe(self.channel, self) def on_close(self): -for channel in self.channels: -subscriber.unsubscribe(channel, self) +subscriber.unsubscribe(self.channel, self) def on_message(self, message): data = json.loads(message) +data['redis_channel'] = self.channel if data['action'] == 'watchlist': -redis_channel = str(uuid4()) -self.channels.append(redis_channel) - -logging.info('New redis channel ' + redis_channel) -subscriber.subscribe(redis_channel, self) - -data['redis_channel'] = redis_channel celery_app.send_task('backend.celery.tasks.initial_task', kwargs=data, expires=60) elif data['action'] == 'notifications_mark_read': celery_app.send_task('backend.celery.tasks.notifications_mark_read', kwargs=data, expires=60) elif data['action'] == 'diff': -redis_channel = str(uuid4()) -self.channels.append(redis_channel) -subscriber.subscribe(redis_channel, self) - -data['redis_channel'] = redis_channel celery_app.send_task('backend.celery.tasks.get_diff', kwargs=data) +else: +logging.error('Unrecognized action for message: ' + str(data)) class NoChacheStaticFileHandler(StaticFileHandler): -- To view, visit https://gerrit.wikimedia.org/r/226082 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib5a69ab6a74e809ecf00bd475e04ae3a57c45552 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Cleanup backend code - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/226076 Change subject: Cleanup backend code .. Cleanup backend code Uses kwargs properly and adds unicode_literals. Should probably have been done some time ago, doing it now because I'm going to add more celery tasks. Change-Id: If5a940325c4f2ea866e67407276da68b56e3950a --- M backend/__main__.py M backend/celery/__init__.py M backend/celery/api.py M backend/celery/tasks.py M backend/config.py.sample M backend/server/__init__.py 6 files changed, 100 insertions(+), 88 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/76/226076/1 diff --git a/backend/__main__.py b/backend/__main__.py index f55506b..61699b2 100644 --- a/backend/__main__.py +++ b/backend/__main__.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- # ISC License # Copyright (C) 2015 Jan Lebert -from __future__ import print_function from __future__ import absolute_import +from __future__ import unicode_literals +from __future__ import print_function + import sys from .server import run diff --git a/backend/celery/__init__.py b/backend/celery/__init__.py index 23768d3..8935427 100644 --- a/backend/celery/__init__.py +++ b/backend/celery/__init__.py @@ -2,6 +2,8 @@ # ISC License # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import +from __future__ import unicode_literals + from celery import Celery from celery.utils.log import get_task_logger from kombu import Exchange, Queue diff --git a/backend/celery/api.py b/backend/celery/api.py index feb5134..fb6146d 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -2,6 +2,8 @@ # ISC License # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import +from __future__ import unicode_literals + import requests from requests_oauthlib import OAuth1 from redis import StrictRedis @@ -60,7 +62,7 @@ logger.error(response['error']) if self.redis_channel: -if response['error']['code'] == u'mwoauth-invalid-authorization': +if response['error']['code'] == 'mwoauth-invalid-authorization': self.publish({'msgtype': 'loginerror', 'errorinfo': response['error']['info']}) else: diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index a8bd338..37f9f82 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -3,6 +3,7 @@ # ISC License # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import +from __future__ import unicode_literals from uuid import uuid4 from contextlib import closing @@ -14,40 +15,36 @@ def chunks(l, n): - -Yield successive n-sized chunks from l. - - +Yield successive n-sized chunks from l. for i in xrange(0, len(l), n): yield l[i:i+n] @app.task -def canary(obj): - -A canary in a coal mine - -mw = MediaWiki(redis_channel=obj['redis_channel']) +def canary(redis_channel=None, **kwargs): +A canary in a coal mine +mw = MediaWiki(redis_channel=redis_channel) mw.publish({'msgtype': canary}) @app.task -def initial_task(obj): +def initial_task(**kwargs): Task called on login, start the chain to load the watchlist, notifications etc. -:param obj: dict with redis channel and oauth keys - -mw = MediaWiki(access_token=obj['access_token']) +access_token = kwargs['access_token'] +preload_projects = kwargs.get('projects', []) +redis_channel = kwargs.get('redis_channel', None) + +mw = MediaWiki(access_token=access_token, redis_channel=redis_channel) username = mw.username() wikis = mw.wikis() # Use cache of known projects to bypass sometimes blocking mysql check -preload_projects = obj.pop('projects', []) for project in preload_projects: -obj['wiki'] = wikis[project] -watchlistgetter.delay(obj) -notificationgetter.delay(obj) +wiki = wikis[project] +watchlistgetter.delay(wiki=wiki, **kwargs) +notificationgetter.delay(wiki=wiki, **kwargs) db = MySQLdb.connect( host='centralauth.labsdb', @@ -70,21 +67,19 @@ db.close() for chunk in chunks(projects, 50): -check_editcount.delay(obj, chunk, username) +check_editcount.delay(chunk, username, **kwargs) # Send back canary reply to show that the server is working -canary(obj) +canary(redis_channel=redis_channel) @app.task -def check_editcount(obj, project_chunk, username): +def check_editcount(project_chunk, username, **kwargs): Starts the watchlist- and notificationgetter if the user has made more than one edit to a project -:param obj: The dict from tornado :param project_chunk: list of projets -:param username: - +:param username: username db = MySQLdb.connect(
[MediaWiki-commits] [Gerrit] Cleanup backend code - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Cleanup backend code .. Cleanup backend code Uses kwargs properly and adds unicode_literals. Should probably have been done some time ago, doing it now because I'm going to add more celery tasks. Change-Id: If5a940325c4f2ea866e67407276da68b56e3950a --- M backend/__main__.py M backend/celery/__init__.py M backend/celery/api.py M backend/celery/tasks.py M backend/config.py.sample M backend/server/__init__.py 6 files changed, 100 insertions(+), 88 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/__main__.py b/backend/__main__.py index f55506b..61699b2 100644 --- a/backend/__main__.py +++ b/backend/__main__.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- # ISC License # Copyright (C) 2015 Jan Lebert -from __future__ import print_function from __future__ import absolute_import +from __future__ import unicode_literals +from __future__ import print_function + import sys from .server import run diff --git a/backend/celery/__init__.py b/backend/celery/__init__.py index 23768d3..8935427 100644 --- a/backend/celery/__init__.py +++ b/backend/celery/__init__.py @@ -2,6 +2,8 @@ # ISC License # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import +from __future__ import unicode_literals + from celery import Celery from celery.utils.log import get_task_logger from kombu import Exchange, Queue diff --git a/backend/celery/api.py b/backend/celery/api.py index feb5134..fb6146d 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -2,6 +2,8 @@ # ISC License # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import +from __future__ import unicode_literals + import requests from requests_oauthlib import OAuth1 from redis import StrictRedis @@ -60,7 +62,7 @@ logger.error(response['error']) if self.redis_channel: -if response['error']['code'] == u'mwoauth-invalid-authorization': +if response['error']['code'] == 'mwoauth-invalid-authorization': self.publish({'msgtype': 'loginerror', 'errorinfo': response['error']['info']}) else: diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index a8bd338..3cfde96 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -3,6 +3,7 @@ # ISC License # Copyright (C) 2015 Jan Lebert from __future__ import absolute_import +from __future__ import unicode_literals from uuid import uuid4 from contextlib import closing @@ -14,40 +15,36 @@ def chunks(l, n): - -Yield successive n-sized chunks from l. - - +Yield successive n-sized chunks from l. for i in xrange(0, len(l), n): yield l[i:i+n] @app.task -def canary(obj): - -A canary in a coal mine - -mw = MediaWiki(redis_channel=obj['redis_channel']) +def canary(redis_channel=None, **kwargs): +A canary in a coal mine +mw = MediaWiki(redis_channel=redis_channel) mw.publish({'msgtype': canary}) @app.task -def initial_task(obj): +def initial_task(**kwargs): Task called on login, start the chain to load the watchlist, notifications etc. -:param obj: dict with redis channel and oauth keys - -mw = MediaWiki(access_token=obj['access_token']) +access_token = kwargs['access_token'] +preload_projects = kwargs.get('projects', []) +redis_channel = kwargs.get('redis_channel', None) + +mw = MediaWiki(access_token=access_token, redis_channel=redis_channel) username = mw.username() wikis = mw.wikis() # Use cache of known projects to bypass sometimes blocking mysql check -preload_projects = obj.pop('projects', []) for project in preload_projects: -obj['wiki'] = wikis[project] -watchlistgetter.delay(obj) -notificationgetter.delay(obj) +wiki = wikis[project] +watchlistgetter.delay(wiki=wiki, **kwargs) +notificationgetter.delay(wiki=wiki, **kwargs) db = MySQLdb.connect( host='centralauth.labsdb', @@ -70,21 +67,19 @@ db.close() for chunk in chunks(projects, 50): -check_editcount.delay(obj, chunk, username) +check_editcount.delay(chunk, username, **kwargs) # Send back canary reply to show that the server is working -canary(obj) +canary(redis_channel=redis_channel) @app.task -def check_editcount(obj, project_chunk, username): +def check_editcount(project_chunk, username, **kwargs): Starts the watchlist- and notificationgetter if the user has made more than one edit to a project -:param obj: The dict from tornado :param project_chunk: list of projets -:param username: - +:param username: username db = MySQLdb.connect( host='s4.labsdb', @@ -98,30 +93,32 @@ result =
[MediaWiki-commits] [Gerrit] Only use one redis channel per client - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/226082 Change subject: Only use one redis channel per client .. Only use one redis channel per client Change-Id: Ib5a69ab6a74e809ecf00bd475e04ae3a57c45552 --- M backend/server/__init__.py 1 file changed, 6 insertions(+), 15 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/82/226082/1 diff --git a/backend/server/__init__.py b/backend/server/__init__.py index 363fe9f..dfe9245 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -39,34 +39,25 @@ class SockConnection(SockJSConnection): def on_open(self, info): -self.channels = [] +self.channel = str(uuid4()) +subscriber.subscribe(self.channel, self) def on_close(self): -for channel in self.channels: -subscriber.unsubscribe(channel, self) +subscriber.unsubscribe(self.channel, self) def on_message(self, message): data = json.loads(message) +data['redis_channel'] = self.channel if data['action'] == 'watchlist': -redis_channel = str(uuid4()) -self.channels.append(redis_channel) - -logging.info('New redis channel ' + redis_channel) -subscriber.subscribe(redis_channel, self) - -data['redis_channel'] = redis_channel celery_app.send_task('backend.celery.tasks.initial_task', kwargs=data, expires=60) elif data['action'] == 'notifications_mark_read': celery_app.send_task('backend.celery.tasks.notifications_mark_read', kwargs=data, expires=60) elif data['action'] == 'diff': -redis_channel = str(uuid4()) -self.channels.append(redis_channel) -subscriber.subscribe(redis_channel, self) - -data['redis_channel'] = redis_channel celery_app.send_task('backend.celery.tasks.get_diff', kwargs=data) +else: +logging.error('Unrecognized action for message: ' + str(data)) class NoChacheStaticFileHandler(StaticFileHandler): -- To view, visit https://gerrit.wikimedia.org/r/226082 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib5a69ab6a74e809ecf00bd475e04ae3a57c45552 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Cleanup code - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/225675 Change subject: Cleanup code .. Cleanup code Minor changes, renames some functions and moves code around. Change-Id: I9b3ad2da890c23ed784664c84a7be7e30da881f6 --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/components/watchlist/edit_oneline.directive.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/page.directive.js M frontend/src/components/watchlist/user.directive.js M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/components/watchlist/watchlist.html M scripts/restart_celery.sh 10 files changed, 44 insertions(+), 36 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/75/225675/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index 16c7617..feb5134 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -16,7 +16,6 @@ def __init__(self, host=https://en.wikipedia.org;, path=/w/api.php, access_token=None, redis_channel=None): self.api_url = host + path -self.wikis = {} user_agent = crosswatch (https://tools.wmflabs.org/crosswatch;; +\ crosswa...@tools.wmflabs.org) python-requests/ +\ @@ -56,7 +55,7 @@ time = now + delta return time.strftime(%Y%m%d%H%M%S) -def handle_response(self, response): +def _handle_response(self, response): if 'error' in response: logger.error(response['error']) @@ -79,7 +78,7 @@ response = requests.get(self.api_url, params=params, auth=self.auth, headers=self.headers).json() -self.handle_response(response) +self._handle_response(response) return response def query_gen(self, params): @@ -105,7 +104,7 @@ response = requests.post(self.api_url, params=params, data=payload, auth=self.auth, headers=self.headers) -self.handle_response(json.loads(response.text)) +self._handle_response(json.loads(response.text)) def get_token(self, type='csrf'): params = {'action': query, @@ -115,7 +114,7 @@ token = r['query']['tokens'][type + 'token'] return token -def get_username(self): +def username(self): params = { 'action': query, 'meta': userinfo, @@ -124,7 +123,22 @@ username = response['query']['userinfo']['name'] return username -def get_wikis(self, use_cache=True): +def diff(self, pageid, old_revid, new_revid): +params = { +'action': query, +'prop': revisions, +'rvstartid': old_revid, +'rvendid': old_revid, +'rvdiffto': new_revid, +'pageids': pageid, +'formatversion': 2 +} + +response = self.query(params) +diff = response['query']['pages'][0]['revisions'][0]['diff']['body'] +return diff + +def wikis(self, use_cache=True): key = config.redis_prefix + 'cached_wikis' wikis = self.redis.get(key) if use_cache and wikis: @@ -132,29 +146,32 @@ else: # Cache miss, do api request and fill cache wikis = self._get_wikis() -self.redis.setex(key, 86400, json.dumps(wikis)) # 1 day exp. +self.redis.setex(key, 172800, json.dumps(wikis)) # 2 days exp. return wikis def _get_wikis(self): params = {'action': sitematrix} data = self.query(params) + +wikis = {} for key, val in data['sitematrix'].items(): if key == 'count': continue if 'code' in val: for site in val['site']: -self._parse_sitematrix(site, val['code'], val['name']) +wiki = self._create_wiki(site, val['code'], val['name']) +wikis[site['dbname']] = wiki else: for site in val: -self._parse_sitematrix(site, '', '') +wiki = self._create_wiki(site, '', '') +wikis[site['dbname']] = wiki +return wikis -return self.wikis - -def _parse_sitematrix(self, site, lang, langname): +def _create_wiki(self, site, langcode, langname): wiki = { -'lang': lang, +'lang': langcode, 'langname': langname, 'url': site['url'].replace(http://;, https://;), 'dbname': site['dbname'], @@ -166,5 +183,4 @@ inactive_wikis = ['closed', 'private', 'fishbowl'] if any([key in site for key in inactive_wikis]): wiki['closed'] = True - -
[MediaWiki-commits] [Gerrit] Cleanup code - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Cleanup code .. Cleanup code Minor changes, renames some functions and moves code around. Change-Id: I9b3ad2da890c23ed784664c84a7be7e30da881f6 --- M backend/celery/api.py M backend/celery/tasks.py M frontend/src/components/watchlist/edit_oneline.directive.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/page.directive.js M frontend/src/components/watchlist/user.directive.js M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/components/watchlist/watchlist.html M scripts/restart_celery.sh 10 files changed, 44 insertions(+), 36 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index 16c7617..feb5134 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -16,7 +16,6 @@ def __init__(self, host=https://en.wikipedia.org;, path=/w/api.php, access_token=None, redis_channel=None): self.api_url = host + path -self.wikis = {} user_agent = crosswatch (https://tools.wmflabs.org/crosswatch;; +\ crosswa...@tools.wmflabs.org) python-requests/ +\ @@ -56,7 +55,7 @@ time = now + delta return time.strftime(%Y%m%d%H%M%S) -def handle_response(self, response): +def _handle_response(self, response): if 'error' in response: logger.error(response['error']) @@ -79,7 +78,7 @@ response = requests.get(self.api_url, params=params, auth=self.auth, headers=self.headers).json() -self.handle_response(response) +self._handle_response(response) return response def query_gen(self, params): @@ -105,7 +104,7 @@ response = requests.post(self.api_url, params=params, data=payload, auth=self.auth, headers=self.headers) -self.handle_response(json.loads(response.text)) +self._handle_response(json.loads(response.text)) def get_token(self, type='csrf'): params = {'action': query, @@ -115,7 +114,7 @@ token = r['query']['tokens'][type + 'token'] return token -def get_username(self): +def username(self): params = { 'action': query, 'meta': userinfo, @@ -124,7 +123,22 @@ username = response['query']['userinfo']['name'] return username -def get_wikis(self, use_cache=True): +def diff(self, pageid, old_revid, new_revid): +params = { +'action': query, +'prop': revisions, +'rvstartid': old_revid, +'rvendid': old_revid, +'rvdiffto': new_revid, +'pageids': pageid, +'formatversion': 2 +} + +response = self.query(params) +diff = response['query']['pages'][0]['revisions'][0]['diff']['body'] +return diff + +def wikis(self, use_cache=True): key = config.redis_prefix + 'cached_wikis' wikis = self.redis.get(key) if use_cache and wikis: @@ -132,29 +146,32 @@ else: # Cache miss, do api request and fill cache wikis = self._get_wikis() -self.redis.setex(key, 86400, json.dumps(wikis)) # 1 day exp. +self.redis.setex(key, 172800, json.dumps(wikis)) # 2 days exp. return wikis def _get_wikis(self): params = {'action': sitematrix} data = self.query(params) + +wikis = {} for key, val in data['sitematrix'].items(): if key == 'count': continue if 'code' in val: for site in val['site']: -self._parse_sitematrix(site, val['code'], val['name']) +wiki = self._create_wiki(site, val['code'], val['name']) +wikis[site['dbname']] = wiki else: for site in val: -self._parse_sitematrix(site, '', '') +wiki = self._create_wiki(site, '', '') +wikis[site['dbname']] = wiki +return wikis -return self.wikis - -def _parse_sitematrix(self, site, lang, langname): +def _create_wiki(self, site, langcode, langname): wiki = { -'lang': lang, +'lang': langcode, 'langname': langname, 'url': site['url'].replace(http://;, https://;), 'dbname': site['dbname'], @@ -166,5 +183,4 @@ inactive_wikis = ['closed', 'private', 'fishbowl'] if any([key in site for key in inactive_wikis]): wiki['closed'] = True - -self.wikis[site['dbname']] = wiki +return wiki diff --git a/backend/celery/tasks.py
[MediaWiki-commits] [Gerrit] Show error messages one after another - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Show error messages one after another .. Show error messages one after another Bugfix, only show one error message at a time, wait until the user has clicked on close. Change-Id: I44639e4a1d84111e42cd58302662e1c5126576b3 --- M frontend/src/app/runBlock.js 1 file changed, 26 insertions(+), 22 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 4c50a9b..39dfe37 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -63,36 +63,23 @@ dataService.diffResponseHandler(data) } else if (data.msgtype === 'loginerror') { $log.error('login failed with: ' + data.errorinfo); - $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE'], {error: data.errorinfo}) .then(function (translations) { - var alert = $mdDialog.alert({ + registerAlert({ title: translations['OAUTH_FAILURE_TITLE'], content: translations['OAUTH_FAILURE_CONTENT'], ok: translations['CLOSE'] - }); - - $mdDialog - .show( alert ) - .finally(function() { -alert = undefined; }); }); } else if (data.msgtype === 'apierror') { $log.error('API error: ' + data.errorinfo); $translate(['SERVER_ERROR_TITLE', 'API_ERROR_CONTENT', 'CLOSE'], {errorcode: data.errorcode, errorinfo: data.errorinfo}) .then(function (translations) { - var alert = $mdDialog.alert({ + registerAlert({ title: translations['SERVER_ERROR_TITLE'], content: translations['API_ERROR_CONTENT'], ok: translations['CLOSE'] }); - - $mdDialog -.show(alert) -.finally(function () { - alert = undefined; -}); }); } else { $log.error(Unhandled message: %o, data); @@ -110,18 +97,35 @@ if (connectionError) { $log.warn('No websocket message after 20 seconds.'); $translate(['SERVER_ERROR_TITLE', 'SERVER_ERROR_CONTENT', 'CLOSE']).then(function (translations) { -var alert = $mdDialog.alert({ +registerAlert({ title: translations['SERVER_ERROR_TITLE'], content: translations['SERVER_ERROR_CONTENT'], ok: translations['CLOSE'] }); - -$mdDialog - .show(alert) - .finally(function () { -alert = undefined; - }); }); } } + + var currentAlert = false; + var alerts = []; + /** + * Register an $mdDialog alert and schedules it to be shown + * @param arg paramter for $mdDialog.alert() + */ + function registerAlert (arg) { +var alert = $mdDialog.alert(arg); +alerts.push(alert); +showAlert(); + } + function showAlert () { +if (!currentAlert alerts.length) { + currentAlert = alerts.shift(); + $mdDialog +.show(currentAlert) +.finally(function () { + currentAlert = false; + showAlert(); +}); +} + } } -- To view, visit https://gerrit.wikimedia.org/r/225714 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I44639e4a1d84111e42cd58302662e1c5126576b3 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix confusing error message - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix confusing error message .. Fix confusing error message Add a canary task to indicate that the server is working. Change-Id: I960304d1b74490034ee9f25ab899cb5a5a8da032 --- M backend/celery/tasks.py M frontend/src/app/runBlock.js M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 4 files changed, 21 insertions(+), 4 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 196dad5..a8bd338 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -23,6 +23,14 @@ @app.task +def canary(obj): + +A canary in a coal mine + +mw = MediaWiki(redis_channel=obj['redis_channel']) +mw.publish({'msgtype': canary}) + +@app.task def initial_task(obj): Task called on login, start the chain to load the @@ -64,6 +72,9 @@ for chunk in chunks(projects, 50): check_editcount.delay(obj, chunk, username) +# Send back canary reply to show that the server is working +canary(obj) + @app.task def check_editcount(obj, project_chunk, username): diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 39dfe37..8539bf7 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -37,7 +37,7 @@ */ $rootScope.$on('login', function () { dataService.queryWatchlist(); -$timeout(errorHandler, 2); // show error if no watchlist after 20 secs +$timeout(errorHandler, 1); // show error if no response after 10 secs }); /** @@ -61,6 +61,12 @@ dataService.addNotificationEntries(data) } else if (data.msgtype === 'diff_response') { dataService.diffResponseHandler(data) +} else if (data.msgtype === 'canary') { + connectionError = false; + // disable loading spinner after 20 sec (no watchlist entries for the time period) + $timeout(function () { +dataService.watchlist.loading = false; + }, 2) } else if (data.msgtype === 'loginerror') { $log.error('login failed with: ' + data.errorinfo); $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE'], {error: data.errorinfo}) diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index a69150c..6262027 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -51,7 +51,7 @@ OAUTH_FAILURE_CONTENT: Authentication failed, you might have revoked the authorization for this application. Please logout and sign in again. Error information: {{error}}, CLOSE: Close, SERVER_ERROR_TITLE: Server failure, - SERVER_ERROR_CONTENT: No watchlist could be retrieved. Either you have no watchlist events for the selected time period or this is an internal server error., + SERVER_ERROR_CONTENT: No watchlist could be retrieved. This is an internal server error, please open a bug report if the problem persists., API_ERROR_CONTENT: An API request failed with error code {{errorcode}} and error information: {{errorinfo}}, NAMESPACES: Namespaces, NS_0: Article, diff --git a/frontend/src/i18n/qqq.json b/frontend/src/i18n/qqq.json index 455f6c2..2513d7f 100644 --- a/frontend/src/i18n/qqq.json +++ b/frontend/src/i18n/qqq.json @@ -22,8 +22,8 @@ OAUTH_FAILURE_CONTENT: Error message that MediaWiki login failed, CLOSE: Close dialog button, SERVER_ERROR_TITLE: Title for error message, - SERVER_ERROR_CONTENT: Error message shown indicating that the server didn't send any data, - API_ERROR_CONTENT: Error message to show in case of an MediaWiki API error, + SERVER_ERROR_CONTENT: Error message shown indicating that the server didn't respond., + API_ERROR_CONTENT: Error message shown in case of an MediaWiki API error., NAMESPACES: MediaWiki Namespaces, NS_0: MediaWiki namespace name for default namespace, NS_1: MediaWiki namespace name, -- To view, visit https://gerrit.wikimedia.org/r/225738 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I960304d1b74490034ee9f25ab899cb5a5a8da032 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Show error messages one after another - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/225714 Change subject: Show error messages one after another .. Show error messages one after another Bugfix, only show one error message at a time, wait until the user has clicked on close. Change-Id: I44639e4a1d84111e42cd58302662e1c5126576b3 --- M frontend/src/app/runBlock.js 1 file changed, 26 insertions(+), 22 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/14/225714/1 diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 4c50a9b..39dfe37 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -63,36 +63,23 @@ dataService.diffResponseHandler(data) } else if (data.msgtype === 'loginerror') { $log.error('login failed with: ' + data.errorinfo); - $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE'], {error: data.errorinfo}) .then(function (translations) { - var alert = $mdDialog.alert({ + registerAlert({ title: translations['OAUTH_FAILURE_TITLE'], content: translations['OAUTH_FAILURE_CONTENT'], ok: translations['CLOSE'] - }); - - $mdDialog - .show( alert ) - .finally(function() { -alert = undefined; }); }); } else if (data.msgtype === 'apierror') { $log.error('API error: ' + data.errorinfo); $translate(['SERVER_ERROR_TITLE', 'API_ERROR_CONTENT', 'CLOSE'], {errorcode: data.errorcode, errorinfo: data.errorinfo}) .then(function (translations) { - var alert = $mdDialog.alert({ + registerAlert({ title: translations['SERVER_ERROR_TITLE'], content: translations['API_ERROR_CONTENT'], ok: translations['CLOSE'] }); - - $mdDialog -.show(alert) -.finally(function () { - alert = undefined; -}); }); } else { $log.error(Unhandled message: %o, data); @@ -110,18 +97,35 @@ if (connectionError) { $log.warn('No websocket message after 20 seconds.'); $translate(['SERVER_ERROR_TITLE', 'SERVER_ERROR_CONTENT', 'CLOSE']).then(function (translations) { -var alert = $mdDialog.alert({ +registerAlert({ title: translations['SERVER_ERROR_TITLE'], content: translations['SERVER_ERROR_CONTENT'], ok: translations['CLOSE'] }); - -$mdDialog - .show(alert) - .finally(function () { -alert = undefined; - }); }); } } + + var currentAlert = false; + var alerts = []; + /** + * Register an $mdDialog alert and schedules it to be shown + * @param arg paramter for $mdDialog.alert() + */ + function registerAlert (arg) { +var alert = $mdDialog.alert(arg); +alerts.push(alert); +showAlert(); + } + function showAlert () { +if (!currentAlert alerts.length) { + currentAlert = alerts.shift(); + $mdDialog +.show(currentAlert) +.finally(function () { + currentAlert = false; + showAlert(); +}); +} + } } -- To view, visit https://gerrit.wikimedia.org/r/225714 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I44639e4a1d84111e42cd58302662e1c5126576b3 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix confusing error message - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/225738 Change subject: Fix confusing error message .. Fix confusing error message Add a canary task to indicate that the server is working. Change-Id: I960304d1b74490034ee9f25ab899cb5a5a8da032 --- M backend/celery/tasks.py M frontend/src/app/runBlock.js M frontend/src/i18n/en.json M frontend/src/i18n/qqq.json 4 files changed, 21 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/38/225738/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index 196dad5..a8bd338 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -23,6 +23,14 @@ @app.task +def canary(obj): + +A canary in a coal mine + +mw = MediaWiki(redis_channel=obj['redis_channel']) +mw.publish({'msgtype': canary}) + +@app.task def initial_task(obj): Task called on login, start the chain to load the @@ -64,6 +72,9 @@ for chunk in chunks(projects, 50): check_editcount.delay(obj, chunk, username) +# Send back canary reply to show that the server is working +canary(obj) + @app.task def check_editcount(obj, project_chunk, username): diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 39dfe37..8539bf7 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -37,7 +37,7 @@ */ $rootScope.$on('login', function () { dataService.queryWatchlist(); -$timeout(errorHandler, 2); // show error if no watchlist after 20 secs +$timeout(errorHandler, 1); // show error if no response after 10 secs }); /** @@ -61,6 +61,12 @@ dataService.addNotificationEntries(data) } else if (data.msgtype === 'diff_response') { dataService.diffResponseHandler(data) +} else if (data.msgtype === 'canary') { + connectionError = false; + // disable loading spinner after 20 sec (no watchlist entries for the time period) + $timeout(function () { +dataService.watchlist.loading = false; + }, 2) } else if (data.msgtype === 'loginerror') { $log.error('login failed with: ' + data.errorinfo); $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE'], {error: data.errorinfo}) diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index a69150c..6262027 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -51,7 +51,7 @@ OAUTH_FAILURE_CONTENT: Authentication failed, you might have revoked the authorization for this application. Please logout and sign in again. Error information: {{error}}, CLOSE: Close, SERVER_ERROR_TITLE: Server failure, - SERVER_ERROR_CONTENT: No watchlist could be retrieved. Either you have no watchlist events for the selected time period or this is an internal server error., + SERVER_ERROR_CONTENT: No watchlist could be retrieved. This is an internal server error, please open a bug report if the problem persists., API_ERROR_CONTENT: An API request failed with error code {{errorcode}} and error information: {{errorinfo}}, NAMESPACES: Namespaces, NS_0: Article, diff --git a/frontend/src/i18n/qqq.json b/frontend/src/i18n/qqq.json index 455f6c2..2513d7f 100644 --- a/frontend/src/i18n/qqq.json +++ b/frontend/src/i18n/qqq.json @@ -22,8 +22,8 @@ OAUTH_FAILURE_CONTENT: Error message that MediaWiki login failed, CLOSE: Close dialog button, SERVER_ERROR_TITLE: Title for error message, - SERVER_ERROR_CONTENT: Error message shown indicating that the server didn't send any data, - API_ERROR_CONTENT: Error message to show in case of an MediaWiki API error, + SERVER_ERROR_CONTENT: Error message shown indicating that the server didn't respond., + API_ERROR_CONTENT: Error message shown in case of an MediaWiki API error., NAMESPACES: MediaWiki Namespaces, NS_0: MediaWiki namespace name for default namespace, NS_1: MediaWiki namespace name, -- To view, visit https://gerrit.wikimedia.org/r/225738 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I960304d1b74490034ee9f25ab899cb5a5a8da032 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Serve material-design-icons from cdnjs - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Serve material-design-icons from cdnjs .. Serve material-design-icons from cdnjs Bug: T105980 Change-Id: Ie7768b827314dcc46013b88bdf86cea3924ec473 --- M README.md M frontend/bower.json M frontend/src/app/index.css 3 files changed, 6 insertions(+), 6 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/README.md b/README.md index 456f67d..ea5ad0e 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ sudo npm install -g gulp bower cd frontend npm install -bower install +bower install --production ``` While developing use `gulp serve` to preview changes and `gulp build` to diff --git a/frontend/bower.json b/frontend/bower.json index 65f8510..4db058a 100644 --- a/frontend/bower.json +++ b/frontend/bower.json @@ -15,10 +15,10 @@ angular-local-storage: 0.2.x, angular-motion: ~0.4.2, angular-material: ~0.10.0, -material-design-icons: ~2.0.0, ngInfiniteScroll: ~1.2.1 }, devDependencies: { +material-design-icons: ~2.0.0, angular-mocks: ~1.4.0 }, resolutions: { diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index a7538bd..c9bbbf5 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -268,12 +268,12 @@ font-family: 'Material Icons'; font-style: normal; font-weight: 400; - src: url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.eot); /* For IE6-8 */ + src: url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.eot); /* For IE6-8 */ src: local('Material Icons'), local('MaterialIcons-Regular'), - url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.woff2) format('woff2'), - url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.woff) format('woff'), - url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.ttf) format('truetype'); + url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.woff2) format('woff2'), + url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.woff) format('woff'), + url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.ttf) format('truetype'); } .material-icons { -- To view, visit https://gerrit.wikimedia.org/r/225551 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie7768b827314dcc46013b88bdf86cea3924ec473 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Serve material-design-icons from cdnjs - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/225551 Change subject: Serve material-design-icons from cdnjs .. Serve material-design-icons from cdnjs Bug: T105980 Change-Id: Ie7768b827314dcc46013b88bdf86cea3924ec473 --- M README.md M frontend/bower.json M frontend/src/app/index.css 3 files changed, 6 insertions(+), 6 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/51/225551/1 diff --git a/README.md b/README.md index 456f67d..ea5ad0e 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ sudo npm install -g gulp bower cd frontend npm install -bower install +bower install --production ``` While developing use `gulp serve` to preview changes and `gulp build` to diff --git a/frontend/bower.json b/frontend/bower.json index 65f8510..4db058a 100644 --- a/frontend/bower.json +++ b/frontend/bower.json @@ -15,10 +15,10 @@ angular-local-storage: 0.2.x, angular-motion: ~0.4.2, angular-material: ~0.10.0, -material-design-icons: ~2.0.0, ngInfiniteScroll: ~1.2.1 }, devDependencies: { +material-design-icons: ~2.0.0, angular-mocks: ~1.4.0 }, resolutions: { diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index a7538bd..c9bbbf5 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -268,12 +268,12 @@ font-family: 'Material Icons'; font-style: normal; font-weight: 400; - src: url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.eot); /* For IE6-8 */ + src: url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.eot); /* For IE6-8 */ src: local('Material Icons'), local('MaterialIcons-Regular'), - url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.woff2) format('woff2'), - url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.woff) format('woff'), - url(//tools.wmflabs.org/crosswatch/fonts/MaterialIcons-Regular.ttf) format('truetype'); + url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.woff2) format('woff2'), + url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.woff) format('woff'), + url(//tools-static.wmflabs.org/cdnjs/ajax/libs/material-design-icons/2.0.0/iconfont/MaterialIcons-Regular.ttf) format('truetype'); } .material-icons { -- To view, visit https://gerrit.wikimedia.org/r/225551 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie7768b827314dcc46013b88bdf86cea3924ec473 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Improve translation setup, add qqq.json, rtl support - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Improve translation setup, add qqq.json, rtl support .. Improve translation setup, add qqq.json, rtl support * added qqq.json message documentation * fixed message interpolation * added gulp task to autogenerate list of available translations * added support for rtl languages Bug: T101438 Change-Id: I80928d9041df67a450b103e5905cf313fd47b351 --- M frontend/gulp/build.js A frontend/gulp/translate.js M frontend/gulpfile.js M frontend/package.json M frontend/src/app/main/main.controller.js M frontend/src/app/main/main.html A frontend/src/app/translateAutogenerated.js M frontend/src/app/translationProvider.js M frontend/src/components/navbar/navbar.controller.js M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/logevent.directive.html M frontend/src/components/watchlist/user.directive.js R frontend/src/i18n/de.json R frontend/src/i18n/en.json R frontend/src/i18n/pt.json A frontend/src/i18n/qqq.json 16 files changed, 220 insertions(+), 63 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/gulp/build.js b/frontend/gulp/build.js index 3013bbe..c09312a 100644 --- a/frontend/gulp/build.js +++ b/frontend/gulp/build.js @@ -1,6 +1,7 @@ 'use strict'; var gulp = require('gulp'); +var jsonAngularTranslate = require('./translate'); var paths = gulp.paths; @@ -23,6 +24,14 @@ .pipe($.size()); }); +gulp.task('i18n-autogenerate', function() { + return gulp.src('src/i18n/*.json') +.pipe(jsonAngularTranslate(translateAutogenerated.js, { + module: gulp.toolname +})) +.pipe(gulp.dest('src/app')) +}); + gulp.task('partials', function () { return gulp.src([ paths.src + '/{app,components}/**/*.html', diff --git a/frontend/gulp/translate.js b/frontend/gulp/translate.js new file mode 100644 index 000..a508096 --- /dev/null +++ b/frontend/gulp/translate.js @@ -0,0 +1,71 @@ +/** + * Inspired by gulp-angular-translate by RobbinHabermehl + * License: MIT + * */ + +var concat = require('gulp-concat'); +var es = require('event-stream'); +var gutil = require('gulp-util'); + +function cacheTranslations(options) { + return es.map(function(file, callback) { +var template = '{key: %= langcode %, language: %= langname %, dir: %= direction %},'; +var json = JSON.parse(file.contents.toString()); +var langname = json[META_LANGUAGE]; + +var direction = ltr; +if (META_DIRECTION in json) { + direction = json[META_DIRECTION]; +} +var langcode = file.path.split('/').pop().match(/^([a-z]+[_|-]?(?:[A-Z]+)?)\.json$/i).pop(); + +file.contents = new Buffer(gutil.template(template, { + langname: langname, + file: file, + langcode: langcode, + direction: direction +})); + +if (langcode === qqq) { + callback(); +} else { + callback(null, file); +} + }); +} + +function wrapTranslations(options) { + var template = +'\'use strict\';\n' + +'/** This file was autogenerated by gulp task i18n-autogenerate **/\n' + +'angular\n' + +' .module(\'%= module %\')\n' + +' .constant(\'translationList\', [\n' + +'%= contents %\n' + +' ]\n' + +');'; + return es.map(function(file, callback) { +file.contents = new Buffer(gutil.template(template, { + contents: file.contents, + file: file, + module: options.module || 'translate' +})); +callback(null, file); + }); +} + +function crosswatchTranslate(filename, options) { + if (typeof filename === 'string') { +options = options || {}; + } else { +options = filename || {}; +filename = options.filename || 'translations.js'; + } + return es.pipeline( +cacheTranslations(options), +concat(filename), +wrapTranslations(options) + ); +} + +module.exports = crosswatchTranslate; diff --git a/frontend/gulpfile.js b/frontend/gulpfile.js index 809f475..6149538 100644 --- a/frontend/gulpfile.js +++ b/frontend/gulpfile.js @@ -2,7 +2,7 @@ var gulp = require('gulp'); -gulp.toolname = 'crosswatch' +gulp.toolname = 'crosswatch'; gulp.paths = { src: 'src', diff --git a/frontend/package.json b/frontend/package.json index c901473..e61d206 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,40 +8,43 @@ gulp-jsonlint: ^1.0.2 }, devDependencies: { -gulp: ~3.8.10, -gulp-autoprefixer: ~2.0.0, -gulp-angular-templatecache: ~1.4.2, +browser-sync: ~1.7.1, +chalk: ~0.5.1, del: ~0.1.3, +event-stream: ^3.3.1, +gulp: ~3.8.10, +gulp-angular-filesort: ~1.0.4, +gulp-angular-templatecache: ~1.4.2, +gulp-autoprefixer: ~2.0.0, +gulp-concat: ^2.6.0, gulp-consolidate: ~0.1.2, gulp-csso: ~0.2.9, gulp-filter: ~1.0.2, gulp-flatten: ~0.0.4, +gulp-inject: ~1.0.2, gulp-jshint: ~1.9.0, +gulp-karma: ~0.0.4,
[MediaWiki-commits] [Gerrit] Improve translation setup - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/225282 Change subject: Improve translation setup .. Improve translation setup * added qqq.json message documentation * fixed message interpolation * added gulp task to autogenerate list of available translations Bug: T101438 Change-Id: I80928d9041df67a450b103e5905cf313fd47b351 --- M frontend/gulp/build.js A frontend/gulp/translate.js M frontend/gulpfile.js M frontend/package.json A frontend/src/app/translateAutogenerated.js M frontend/src/app/translationProvider.js R frontend/src/i18n/de.json R frontend/src/i18n/en.json R frontend/src/i18n/pt.json A frontend/src/i18n/qqq.json 10 files changed, 173 insertions(+), 46 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/82/225282/1 diff --git a/frontend/gulp/build.js b/frontend/gulp/build.js index 3013bbe..c09312a 100644 --- a/frontend/gulp/build.js +++ b/frontend/gulp/build.js @@ -1,6 +1,7 @@ 'use strict'; var gulp = require('gulp'); +var jsonAngularTranslate = require('./translate'); var paths = gulp.paths; @@ -23,6 +24,14 @@ .pipe($.size()); }); +gulp.task('i18n-autogenerate', function() { + return gulp.src('src/i18n/*.json') +.pipe(jsonAngularTranslate(translateAutogenerated.js, { + module: gulp.toolname +})) +.pipe(gulp.dest('src/app')) +}); + gulp.task('partials', function () { return gulp.src([ paths.src + '/{app,components}/**/*.html', diff --git a/frontend/gulp/translate.js b/frontend/gulp/translate.js new file mode 100644 index 000..af92656 --- /dev/null +++ b/frontend/gulp/translate.js @@ -0,0 +1,64 @@ +/** + * Inspired by gulp-angular-translate by RobbinHabermehl + * License: MIT + * */ + +var concat = require('gulp-concat'); +var es = require('event-stream'); +var gutil = require('gulp-util'); + +function cacheTranslations(options) { + return es.map(function(file, callback) { +var template = '{key: %= langcode %, language: %= langname %},'; +var langname = JSON.parse(file.contents.toString())[META_LANGUAGE]; +var langcode = file.path.split('/').pop().match(/^([a-z]+[_|-]?(?:[A-Z]+)?)\.json$/i).pop(); + +file.contents = new Buffer(gutil.template(template, { + langname: langname, + file: file, + langcode: langcode +})); + +if (langcode === qqq) { + callback(); +} else { + callback(null, file); +} + }); +} + +function wrapTranslations(options) { + var template = +'\'use strict\';\n' + +'/** This file is autogenerated by gulp task i18n-autogenerate, do not change by hand **/\n' + +'angular\n' + +' .module(\'%= module %\')\n' + +' .constant(\'translationList\', [\n' + +'%= contents %\n' + +' ]\n' + +');'; + return es.map(function(file, callback) { +file.contents = new Buffer(gutil.template(template, { + contents: file.contents, + file: file, + module: options.module || 'translate' +})); +callback(null, file); + }); +} + +function crosswatchTranslate(filename, options) { + if (typeof filename === 'string') { +options = options || {}; + } else { +options = filename || {}; +filename = options.filename || 'translations.js'; + } + return es.pipeline( +cacheTranslations(options), +concat(filename), +wrapTranslations(options) + ); +} + +module.exports = crosswatchTranslate; diff --git a/frontend/gulpfile.js b/frontend/gulpfile.js index 809f475..6149538 100644 --- a/frontend/gulpfile.js +++ b/frontend/gulpfile.js @@ -2,7 +2,7 @@ var gulp = require('gulp'); -gulp.toolname = 'crosswatch' +gulp.toolname = 'crosswatch'; gulp.paths = { src: 'src', diff --git a/frontend/package.json b/frontend/package.json index c901473..e61d206 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,40 +8,43 @@ gulp-jsonlint: ^1.0.2 }, devDependencies: { -gulp: ~3.8.10, -gulp-autoprefixer: ~2.0.0, -gulp-angular-templatecache: ~1.4.2, +browser-sync: ~1.7.1, +chalk: ~0.5.1, del: ~0.1.3, +event-stream: ^3.3.1, +gulp: ~3.8.10, +gulp-angular-filesort: ~1.0.4, +gulp-angular-templatecache: ~1.4.2, +gulp-autoprefixer: ~2.0.0, +gulp-concat: ^2.6.0, gulp-consolidate: ~0.1.2, gulp-csso: ~0.2.9, gulp-filter: ~1.0.2, gulp-flatten: ~0.0.4, +gulp-inject: ~1.0.2, gulp-jshint: ~1.9.0, +gulp-karma: ~0.0.4, gulp-load-plugins: ~0.7.1, +gulp-minify-html: ~0.1.7, +gulp-ng-annotate: ~0.3.6, +gulp-protractor: ~0.0.11, +gulp-rename: ~1.2.0, +gulp-replace: ~0.5.0, +gulp-rev: ~2.0.1, +gulp-rev-replace: ~0.3.1, gulp-size: ~1.1.0, gulp-uglify: ~1.0.1, gulp-useref: ~1.0.2, -gulp-ng-annotate: ~0.3.6, -gulp-replace: ~0.5.0, -gulp-rename: ~1.2.0, -gulp-rev: ~2.0.1, -gulp-rev-replace: ~0.3.1, -gulp-minify-html: ~0.1.7, -
[MediaWiki-commits] [Gerrit] Forward API errors to client, fix error handling - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Forward API errors to client, fix error handling .. Forward API errors to client, fix error handling Show error message if error in MW API response, cleanup error handling code. Bug: T106057 Change-Id: I404475b19b9478b4f563453fd944d48785375150 --- M backend/celery/api.py M frontend/src/app/runBlock.js M frontend/src/i18n/locale-en.json 3 files changed, 50 insertions(+), 38 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/api.py b/backend/celery/api.py index 866ccc7..16c7617 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -56,14 +56,21 @@ time = now + delta return time.strftime(%Y%m%d%H%M%S) -@staticmethod -def handle_response(response): +def handle_response(self, response): if 'error' in response: logger.error(response['error']) -if response['error']['code'] == mwoauth-invalid-authorization: -raise Exception(OAuth authentication failed) -raise Exception(str(response['error'])) +if self.redis_channel: +if response['error']['code'] == u'mwoauth-invalid-authorization': +self.publish({'msgtype': 'loginerror', + 'errorinfo': response['error']['info']}) +else: +self.publish({'msgtype': 'apierror', + 'errorcode': response['error']['code'], + 'errorinfo': response['error']['info']}) + +raise Exception(response['error']['code'], str(response)) + if 'warnings' in response: logger.warn(API-request warning: + str(response['warnings'])) @@ -76,20 +83,13 @@ return response def query_gen(self, params): -params['format'] = json params['action'] = query last_continue = {'continue': } while True: p = params.copy() p.update(last_continue) -response = requests.get(self.api_url, params=p, auth=self.auth, -headers=self.headers).json() +response = self.query(p) -if 'error' in response: -raise Exception(str(response['error'])) -if 'warnings' in response: -warning = response['warnings']['query']['*'] -logger.warn(API-request warning: + warning) if 'query' in response: yield response['query'] if 'continue' not in response: @@ -116,19 +116,13 @@ return token def get_username(self): -try: -params = { -'action': query, -'meta': userinfo, -} -response = self.query(params) -username = response['query']['userinfo']['name'] -return username -except KeyError as e: -if response['error']['code'] == mwoauth-invalid-authorization: -logger.error('mwoauth-invalid-authorization') -raise Exception(OAuth authentication failed) -raise e +params = { +'action': query, +'meta': userinfo, +} +response = self.query(params) +username = response['query']['userinfo']['name'] +return username def get_wikis(self, use_cache=True): key = config.redis_prefix + 'cached_wikis' diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 144abb7..4c50a9b 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -62,21 +62,38 @@ } else if (data.msgtype === 'diff_response') { dataService.diffResponseHandler(data) } else if (data.msgtype === 'loginerror') { - $log.error('login failed!'); + $log.error('login failed with: ' + data.errorinfo); - $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE']).then(function (translations) { -var alert = $mdDialog.alert({ - title: translations['OAUTH_FAILURE_TITLE'], - content: translations['OAUTH_FAILURE_CONTENT'], - ok: translations['CLOSE'] -}); + $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE'], {error: data.errorinfo}) +.then(function (translations) { + var alert = $mdDialog.alert({ +title: translations['OAUTH_FAILURE_TITLE'], +content: translations['OAUTH_FAILURE_CONTENT'], +ok: translations['CLOSE'] + }); -$mdDialog + $mdDialog .show( alert ) .finally(function() { alert = undefined; }); - }); +}); +} else if (data.msgtype === 'apierror') { + $log.error('API error: ' + data.errorinfo); +
[MediaWiki-commits] [Gerrit] Forward API errors to client, fix error handling - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/225258 Change subject: Forward API errors to client, fix error handling .. Forward API errors to client, fix error handling Show error message if error in MW API response, cleanup error handling code. Bug: T106057 Change-Id: I404475b19b9478b4f563453fd944d48785375150 --- M backend/celery/api.py M frontend/src/app/runBlock.js M frontend/src/i18n/locale-en.json 3 files changed, 50 insertions(+), 38 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/58/225258/1 diff --git a/backend/celery/api.py b/backend/celery/api.py index 866ccc7..16c7617 100644 --- a/backend/celery/api.py +++ b/backend/celery/api.py @@ -56,14 +56,21 @@ time = now + delta return time.strftime(%Y%m%d%H%M%S) -@staticmethod -def handle_response(response): +def handle_response(self, response): if 'error' in response: logger.error(response['error']) -if response['error']['code'] == mwoauth-invalid-authorization: -raise Exception(OAuth authentication failed) -raise Exception(str(response['error'])) +if self.redis_channel: +if response['error']['code'] == u'mwoauth-invalid-authorization': +self.publish({'msgtype': 'loginerror', + 'errorinfo': response['error']['info']}) +else: +self.publish({'msgtype': 'apierror', + 'errorcode': response['error']['code'], + 'errorinfo': response['error']['info']}) + +raise Exception(response['error']['code'], str(response)) + if 'warnings' in response: logger.warn(API-request warning: + str(response['warnings'])) @@ -76,20 +83,13 @@ return response def query_gen(self, params): -params['format'] = json params['action'] = query last_continue = {'continue': } while True: p = params.copy() p.update(last_continue) -response = requests.get(self.api_url, params=p, auth=self.auth, -headers=self.headers).json() +response = self.query(p) -if 'error' in response: -raise Exception(str(response['error'])) -if 'warnings' in response: -warning = response['warnings']['query']['*'] -logger.warn(API-request warning: + warning) if 'query' in response: yield response['query'] if 'continue' not in response: @@ -116,19 +116,13 @@ return token def get_username(self): -try: -params = { -'action': query, -'meta': userinfo, -} -response = self.query(params) -username = response['query']['userinfo']['name'] -return username -except KeyError as e: -if response['error']['code'] == mwoauth-invalid-authorization: -logger.error('mwoauth-invalid-authorization') -raise Exception(OAuth authentication failed) -raise e +params = { +'action': query, +'meta': userinfo, +} +response = self.query(params) +username = response['query']['userinfo']['name'] +return username def get_wikis(self, use_cache=True): key = config.redis_prefix + 'cached_wikis' diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 144abb7..4c50a9b 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -62,21 +62,38 @@ } else if (data.msgtype === 'diff_response') { dataService.diffResponseHandler(data) } else if (data.msgtype === 'loginerror') { - $log.error('login failed!'); + $log.error('login failed with: ' + data.errorinfo); - $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE']).then(function (translations) { -var alert = $mdDialog.alert({ - title: translations['OAUTH_FAILURE_TITLE'], - content: translations['OAUTH_FAILURE_CONTENT'], - ok: translations['CLOSE'] -}); + $translate(['OAUTH_FAILURE_TITLE', 'OAUTH_FAILURE_CONTENT', 'CLOSE'], {error: data.errorinfo}) +.then(function (translations) { + var alert = $mdDialog.alert({ +title: translations['OAUTH_FAILURE_TITLE'], +content: translations['OAUTH_FAILURE_CONTENT'], +ok: translations['CLOSE'] + }); -$mdDialog + $mdDialog .show( alert ) .finally(function() { alert = undefined; }); - }); +}); +} else if (data.msgtype === 'apierror') {
[MediaWiki-commits] [Gerrit] Reduce font size to 1.4rem, improved traditional watchlist l... - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Reduce font size to 1.4rem, improved traditional watchlist layout .. Reduce font size to 1.4rem, improved traditional watchlist layout * Reduced fontsize from 1.6rem to 1.4rem, 13px seems too small * Increased container width to 1400px for traditional watchlist layout * Added the option for traditional watchlist layout to default filter tab * Added missing spaces Bug: T104606 Change-Id: I56ce26b7c5dd9768f8c70cb14acd65791e5a0b50 --- M frontend/src/app/index.css M frontend/src/components/notifications/notifications.html M frontend/src/components/settings/settings.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/page.directive.js M frontend/src/components/watchlist/user.directive.js M frontend/src/components/watchlist/watchlist.html M frontend/src/i18n/locale-en.json 8 files changed, 22 insertions(+), 8 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 1c9dbcd..a7538bd 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -6,7 +6,7 @@ body { background-color: #edecec; font-family: 'Roboto', sans-serif; - font-size: 1.6rem; + font-size: 1.4rem; } div[role=main] { @@ -125,6 +125,12 @@ max-width: 1200px; } +.whitebox-oneline { + background-color: white; + width: 100%; + max-width: 1400px; +} + .watchlist-container { padding: 0; } diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index c750d74..2046882 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -1,5 +1,6 @@ div ng-controller=NotificationsCtrl as ctrl layout=row layout-align=center center class=md-padding - md-whiteframe class=md-whiteframe-z5 whitebox ng-if=ctrl.notifications.length + md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' + ng-if=ctrl.notifications.length md-toolbar class='md-small-tall' div class=md-toolbar-tools h1 diff --git a/frontend/src/components/settings/settings.html b/frontend/src/components/settings/settings.html index c40abcd..d06f254 100644 --- a/frontend/src/components/settings/settings.html +++ b/frontend/src/components/settings/settings.html @@ -1,5 +1,6 @@ div ng-controller=SettingsCtrl as ctrl layout=row layout-align=center start - md-whitefram class=md-whiteframe-z5 whitebox id=settings + md-whitefram class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' +id=settings md-tabs md-dynamic-height md-border-bottom md-tab label={{'FILTER' | translate}} div layout=row @@ -46,6 +47,11 @@ /md-list-item /md-list /md-item + md-subheader class=md-no-sticky{{'STYLE' | translate}}/md-subheader + md-list-item +p translate=ONELINE/p +md-checkbox ng-model=ctrl.config.oneline ng-change=ctrl.saveConfig()/md-checkbox + /md-list-item /div /md-list /div diff --git a/frontend/src/components/watchlist/edit_twolines.directive.html b/frontend/src/components/watchlist/edit_twolines.directive.html index ecae039..4266f0b 100644 --- a/frontend/src/components/watchlist/edit_twolines.directive.html +++ b/frontend/src/components/watchlist/edit_twolines.directive.html @@ -5,7 +5,7 @@ ng-class=::event.titlestyle target=_blank{{::event.title}}/a span ng-if=event.clicked (a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a) -/span +/span#32; span dir=ltr ng-class=::event.bytestyle({{::event.bytes}})/span div user/user diff --git a/frontend/src/components/watchlist/page.directive.js b/frontend/src/components/watchlist/page.directive.js index c5abfc3..eb3cc37 100644 --- a/frontend/src/components/watchlist/page.directive.js +++ b/frontend/src/components/watchlist/page.directive.js @@ -9,7 +9,7 @@ template: 'a stop-event href={{::event.projecturl}}/wiki/{{::title | urlEncode}} target=_blank{{::title}}/a ' + 'span ng-if=event.clicked' + '(a stop-event href={{::event.projecturl}}/w/index.php?title={{::title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + -'/span', +'/span#32;', restrict: 'E' }; return directive; diff --git a/frontend/src/components/watchlist/user.directive.js b/frontend/src/components/watchlist/user.directive.js index c246eb2..4791753 100644 --- a/frontend/src/components/watchlist/user.directive.js +++ b/frontend/src/components/watchlist/user.directive.js @@ -9,7 +9,7
[MediaWiki-commits] [Gerrit] Reduce font size to 1.4rem, improved traditional watchlist l... - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224776 Change subject: Reduce font size to 1.4rem, improved traditional watchlist layout .. Reduce font size to 1.4rem, improved traditional watchlist layout * Reduced fontsize from 1.6rem to 1.4rem, 13px seems too small * Increased container width to 1400px for traditional watchlist layout * Added the option for traditional watchlist layout to default filter tab * Added missing spaces Bug: T104606 Change-Id: I56ce26b7c5dd9768f8c70cb14acd65791e5a0b50 --- M frontend/src/app/index.css M frontend/src/components/notifications/notifications.html M frontend/src/components/settings/settings.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/page.directive.js M frontend/src/components/watchlist/user.directive.js M frontend/src/components/watchlist/watchlist.html M frontend/src/i18n/locale-en.json 8 files changed, 22 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/76/224776/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 1c9dbcd..a7538bd 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -6,7 +6,7 @@ body { background-color: #edecec; font-family: 'Roboto', sans-serif; - font-size: 1.6rem; + font-size: 1.4rem; } div[role=main] { @@ -125,6 +125,12 @@ max-width: 1200px; } +.whitebox-oneline { + background-color: white; + width: 100%; + max-width: 1400px; +} + .watchlist-container { padding: 0; } diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index c750d74..2046882 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -1,5 +1,6 @@ div ng-controller=NotificationsCtrl as ctrl layout=row layout-align=center center class=md-padding - md-whiteframe class=md-whiteframe-z5 whitebox ng-if=ctrl.notifications.length + md-whiteframe class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' + ng-if=ctrl.notifications.length md-toolbar class='md-small-tall' div class=md-toolbar-tools h1 diff --git a/frontend/src/components/settings/settings.html b/frontend/src/components/settings/settings.html index c40abcd..d06f254 100644 --- a/frontend/src/components/settings/settings.html +++ b/frontend/src/components/settings/settings.html @@ -1,5 +1,6 @@ div ng-controller=SettingsCtrl as ctrl layout=row layout-align=center start - md-whitefram class=md-whiteframe-z5 whitebox id=settings + md-whitefram class=md-whiteframe-z5 ng-class=(ctrl.config.oneline) ? 'whitebox-oneline' : 'whitebox' +id=settings md-tabs md-dynamic-height md-border-bottom md-tab label={{'FILTER' | translate}} div layout=row @@ -46,6 +47,11 @@ /md-list-item /md-list /md-item + md-subheader class=md-no-sticky{{'STYLE' | translate}}/md-subheader + md-list-item +p translate=ONELINE/p +md-checkbox ng-model=ctrl.config.oneline ng-change=ctrl.saveConfig()/md-checkbox + /md-list-item /div /md-list /div diff --git a/frontend/src/components/watchlist/edit_twolines.directive.html b/frontend/src/components/watchlist/edit_twolines.directive.html index ecae039..4266f0b 100644 --- a/frontend/src/components/watchlist/edit_twolines.directive.html +++ b/frontend/src/components/watchlist/edit_twolines.directive.html @@ -5,7 +5,7 @@ ng-class=::event.titlestyle target=_blank{{::event.title}}/a span ng-if=event.clicked (a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a) -/span +/span#32; span dir=ltr ng-class=::event.bytestyle({{::event.bytes}})/span div user/user diff --git a/frontend/src/components/watchlist/page.directive.js b/frontend/src/components/watchlist/page.directive.js index c5abfc3..eb3cc37 100644 --- a/frontend/src/components/watchlist/page.directive.js +++ b/frontend/src/components/watchlist/page.directive.js @@ -9,7 +9,7 @@ template: 'a stop-event href={{::event.projecturl}}/wiki/{{::title | urlEncode}} target=_blank{{::title}}/a ' + 'span ng-if=event.clicked' + '(a stop-event href={{::event.projecturl}}/w/index.php?title={{::title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + -'/span', +'/span#32;', restrict: 'E' }; return directive; diff --git a/frontend/src/components/watchlist/user.directive.js b/frontend/src/components/watchlist/user.directive.js index c246eb2..4791753 100644 --- a/frontend/src/components/watchlist/user.directive.js +++
[MediaWiki-commits] [Gerrit] Add option to hide own edits - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224980 Change subject: Add option to hide own edits .. Add option to hide own edits Also cleaned up dead code. Bug: T105937 Change-Id: I4e3a3e70937426f53ef8648c042afdd675e1f837 --- M frontend/src/app/filters.js M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/settings/settings.html M frontend/src/i18n/locale-en.json 5 files changed, 32 insertions(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/80/224980/1 diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js index 83a8dc6..48a9021 100644 --- a/frontend/src/app/filters.js +++ b/frontend/src/app/filters.js @@ -5,7 +5,6 @@ .filter('list', listFilter) .filter('watchlist', watchlistFilter) .filter('projects', projectsFilter) - .filter('editflags', editflagsFilter) ; /** @@ -51,6 +50,10 @@ if (bool) { bool = namespaceFilterFunc(item, this.namespacesSelected, this.namespacesList) } + +if (bool this.hideOwnEdits) { + bool = usernameFilterFunc(item, this.username) +} return bool; } } @@ -88,14 +91,15 @@ return false; } +/** + * Filter out own edits + */ +function usernameFilterFunc (item, username) { + return item.user !== username; +} + function projectsFilter () { return function (items, projects) { return items.filter(projectsFilterFunc, projects) - }; -} - -function editflagsFilter () { - return function (items, flags) { -return items.filter(editsflagsFilterFunc, flags) }; } diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 835a949..144abb7 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -15,6 +15,7 @@ $location.path('/welcome'); } else { + dataService.config.username = authService.user(); $location.path('/'); } }); diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index 08e94b7..0c59295 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -68,6 +68,9 @@ * Timeperiod for which the watchlist is retrieved in days */ watchlistperiod: 1.5, +/** + * Show flags instead of language names + */ flagsenable: false, /** * Options to show minor, bot, anon and registered user edits @@ -84,8 +87,17 @@ /** * List of namespaces shown in options list */ -namespacesList: [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, OTHER] +namespacesList: [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, OTHER], +/** + * Username + */ +username: , +/** + * Filter out own edits + */ +hideOwnEdits: false }; + // Get config from localstorage or create from defaultconfig if (localStorageService.get('config') !== null) { vm.config = localStorageService.get('config'); vm.config.__proto__ = vm.defaultconfig; @@ -182,6 +194,7 @@ vm.watchlist.original = []; vm.watchlist.filtered = []; vm.watchlist.active.length = 0; /* preserve pointer, slow due to GC */ +vm.notifications.length = 0; vm.queryWatchlist(); vm.saveConfig(); }; diff --git a/frontend/src/components/settings/settings.html b/frontend/src/components/settings/settings.html index d06f254..4666f66 100644 --- a/frontend/src/components/settings/settings.html +++ b/frontend/src/components/settings/settings.html @@ -71,6 +71,10 @@ md-checkbox ng-model=ctrl.config.lastrevonly ng-change=ctrl.resetWatchlist()/md-checkbox /md-list-item md-list-item +p translate=HIDEOWNEDITS/p +md-checkbox ng-model=ctrl.config.hideOwnEdits ng-change=ctrl.saveConfig()/md-checkbox + /md-list-item + md-list-item p translate=ONELINE/p md-checkbox ng-model=ctrl.config.oneline ng-change=ctrl.saveConfig()/md-checkbox /md-list-item diff --git a/frontend/src/i18n/locale-en.json b/frontend/src/i18n/locale-en.json index 1130148..2362c25 100644 --- a/frontend/src/i18n/locale-en.json +++ b/frontend/src/i18n/locale-en.json @@ -69,5 +69,6 @@ ONELINE: Traditional watchlist layout, NOTIFICATIONS: Notifications, MARKALLREAD: mark all as read, - STYLE: Style + STYLE: Style, + HIDEOWNEDITS: Hide my edits from the watchlist } -- To view, visit https://gerrit.wikimedia.org/r/224980 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4e3a3e70937426f53ef8648c042afdd675e1f837 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org
[MediaWiki-commits] [Gerrit] Add missing aria labels - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224981 Change subject: Add missing aria labels .. Add missing aria labels Change-Id: I33617277d5d0e4908d6bb97ec0e26a9db45577a6 --- M frontend/src/components/notifications/notifications.html M frontend/src/components/settings/settings.html 2 files changed, 4 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/81/224981/1 diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index 2046882..9153d1f 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -7,7 +7,7 @@ span translate=NOTIFICATIONS/span /h1 div flex/div -md-button class=md-raised md-accent translate=MARKALLREAD +md-button class=md-raised md-accent aria-label=mark all notifications as read translate=MARKALLREAD ng-click=read = !read; ctrl.markNotificationsRead() ng-disabled=read /md-button /div diff --git a/frontend/src/components/settings/settings.html b/frontend/src/components/settings/settings.html index 4666f66..4f76cd6 100644 --- a/frontend/src/components/settings/settings.html +++ b/frontend/src/components/settings/settings.html @@ -9,13 +9,15 @@ md-subheader class=md-no-sticky{{'WIKIS' | translate}}/md-subheader md-item md-select ng-model=ctrl.config.projectsSelected multiple=true placeholder=Loading … + aria-label=List of selected wikis ng-change=ctrl.saveConfig() md-option ng-repeat=item in ctrl.config.projectsList value={{item}}{{item}}/md-option /md-select /md-item md-subheader class=md-no-sticky{{'NAMESPACES' | translate}}/md-subheader md-item -md-select ng-model=ctrl.config.namespacesSelected multiple=true ng-change=ctrl.saveConfig() +md-select ng-model=ctrl.config.namespacesSelected multiple=true ng-change=ctrl.saveConfig() + aria-label=List of selected namespaces md-option ng-repeat=item in ctrl.namespacesList value={{item.value}}{{item.label}}/md-option /md-select /md-item -- To view, visit https://gerrit.wikimedia.org/r/224981 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I33617277d5d0e4908d6bb97ec0e26a9db45577a6 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add missing aria labels - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add missing aria labels .. Add missing aria labels Change-Id: I33617277d5d0e4908d6bb97ec0e26a9db45577a6 --- M frontend/src/components/notifications/notifications.html M frontend/src/components/settings/settings.html 2 files changed, 4 insertions(+), 2 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/notifications/notifications.html b/frontend/src/components/notifications/notifications.html index 2046882..9153d1f 100644 --- a/frontend/src/components/notifications/notifications.html +++ b/frontend/src/components/notifications/notifications.html @@ -7,7 +7,7 @@ span translate=NOTIFICATIONS/span /h1 div flex/div -md-button class=md-raised md-accent translate=MARKALLREAD +md-button class=md-raised md-accent aria-label=mark all notifications as read translate=MARKALLREAD ng-click=read = !read; ctrl.markNotificationsRead() ng-disabled=read /md-button /div diff --git a/frontend/src/components/settings/settings.html b/frontend/src/components/settings/settings.html index 4666f66..4f76cd6 100644 --- a/frontend/src/components/settings/settings.html +++ b/frontend/src/components/settings/settings.html @@ -9,13 +9,15 @@ md-subheader class=md-no-sticky{{'WIKIS' | translate}}/md-subheader md-item md-select ng-model=ctrl.config.projectsSelected multiple=true placeholder=Loading … + aria-label=List of selected wikis ng-change=ctrl.saveConfig() md-option ng-repeat=item in ctrl.config.projectsList value={{item}}{{item}}/md-option /md-select /md-item md-subheader class=md-no-sticky{{'NAMESPACES' | translate}}/md-subheader md-item -md-select ng-model=ctrl.config.namespacesSelected multiple=true ng-change=ctrl.saveConfig() +md-select ng-model=ctrl.config.namespacesSelected multiple=true ng-change=ctrl.saveConfig() + aria-label=List of selected namespaces md-option ng-repeat=item in ctrl.namespacesList value={{item.value}}{{item.label}}/md-option /md-select /md-item -- To view, visit https://gerrit.wikimedia.org/r/224981 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I33617277d5d0e4908d6bb97ec0e26a9db45577a6 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add option to hide own edits - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add option to hide own edits .. Add option to hide own edits Also cleaned up dead code. Bug: T105937 Change-Id: I4e3a3e70937426f53ef8648c042afdd675e1f837 --- M frontend/src/app/filters.js M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/settings/settings.html M frontend/src/i18n/locale-en.json 5 files changed, 32 insertions(+), 9 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js index 83a8dc6..48a9021 100644 --- a/frontend/src/app/filters.js +++ b/frontend/src/app/filters.js @@ -5,7 +5,6 @@ .filter('list', listFilter) .filter('watchlist', watchlistFilter) .filter('projects', projectsFilter) - .filter('editflags', editflagsFilter) ; /** @@ -51,6 +50,10 @@ if (bool) { bool = namespaceFilterFunc(item, this.namespacesSelected, this.namespacesList) } + +if (bool this.hideOwnEdits) { + bool = usernameFilterFunc(item, this.username) +} return bool; } } @@ -88,14 +91,15 @@ return false; } +/** + * Filter out own edits + */ +function usernameFilterFunc (item, username) { + return item.user !== username; +} + function projectsFilter () { return function (items, projects) { return items.filter(projectsFilterFunc, projects) - }; -} - -function editflagsFilter () { - return function (items, flags) { -return items.filter(editsflagsFilterFunc, flags) }; } diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index 835a949..144abb7 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -15,6 +15,7 @@ $location.path('/welcome'); } else { + dataService.config.username = authService.user(); $location.path('/'); } }); diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index 08e94b7..0c59295 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -68,6 +68,9 @@ * Timeperiod for which the watchlist is retrieved in days */ watchlistperiod: 1.5, +/** + * Show flags instead of language names + */ flagsenable: false, /** * Options to show minor, bot, anon and registered user edits @@ -84,8 +87,17 @@ /** * List of namespaces shown in options list */ -namespacesList: [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, OTHER] +namespacesList: [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, OTHER], +/** + * Username + */ +username: , +/** + * Filter out own edits + */ +hideOwnEdits: false }; + // Get config from localstorage or create from defaultconfig if (localStorageService.get('config') !== null) { vm.config = localStorageService.get('config'); vm.config.__proto__ = vm.defaultconfig; @@ -182,6 +194,7 @@ vm.watchlist.original = []; vm.watchlist.filtered = []; vm.watchlist.active.length = 0; /* preserve pointer, slow due to GC */ +vm.notifications.length = 0; vm.queryWatchlist(); vm.saveConfig(); }; diff --git a/frontend/src/components/settings/settings.html b/frontend/src/components/settings/settings.html index d06f254..4666f66 100644 --- a/frontend/src/components/settings/settings.html +++ b/frontend/src/components/settings/settings.html @@ -71,6 +71,10 @@ md-checkbox ng-model=ctrl.config.lastrevonly ng-change=ctrl.resetWatchlist()/md-checkbox /md-list-item md-list-item +p translate=HIDEOWNEDITS/p +md-checkbox ng-model=ctrl.config.hideOwnEdits ng-change=ctrl.saveConfig()/md-checkbox + /md-list-item + md-list-item p translate=ONELINE/p md-checkbox ng-model=ctrl.config.oneline ng-change=ctrl.saveConfig()/md-checkbox /md-list-item diff --git a/frontend/src/i18n/locale-en.json b/frontend/src/i18n/locale-en.json index 1130148..2362c25 100644 --- a/frontend/src/i18n/locale-en.json +++ b/frontend/src/i18n/locale-en.json @@ -69,5 +69,6 @@ ONELINE: Traditional watchlist layout, NOTIFICATIONS: Notifications, MARKALLREAD: mark all as read, - STYLE: Style + STYLE: Style, + HIDEOWNEDITS: Hide my edits from the watchlist } -- To view, visit https://gerrit.wikimedia.org/r/224980 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4e3a3e70937426f53ef8648c042afdd675e1f837 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Siebrand siebr...@kitano.nl Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org
[MediaWiki-commits] [Gerrit] Stop click propagation for links in comments - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Stop click propagation for links in comments .. Stop click propagation for links in comments Change-Id: Id8a11b8abaa5fc43d3a17c6f0eadd26eb0acf1c8 --- M backend/celery/tasks.py A frontend/src/components/watchlist/comment.directive.js M frontend/src/components/watchlist/edit_oneline.directive.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/logevent.directive.html 5 files changed, 23 insertions(+), 4 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index fe4df54..c9e91c2 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -95,7 +95,7 @@ def fix_urls(html, url): -a = u'a stop-event target=_blank href=' + url + u'/' +a = u'a target=_blank href=' + url + u'/' html = html.replace(u'a href=/', a) return html diff --git a/frontend/src/components/watchlist/comment.directive.js b/frontend/src/components/watchlist/comment.directive.js new file mode 100644 index 000..d2f6446 --- /dev/null +++ b/frontend/src/components/watchlist/comment.directive.js @@ -0,0 +1,19 @@ +angular + .module('crosswatch') + .directive('comment', comment); + +function comment ($sanitize) { + var directive = { +link: link, +restrict: 'E' + }; + return directive; + + function link (scope, element, attrs) { +var html = scope.event.parsedcomment; +element.html($sanitize(html)); +element.find('a').bind('click', function (e) { + e.stopPropagation(); +}); + } +} diff --git a/frontend/src/components/watchlist/edit_oneline.directive.html b/frontend/src/components/watchlist/edit_oneline.directive.html index a051f6c..b1419b7 100644 --- a/frontend/src/components/watchlist/edit_oneline.directive.html +++ b/frontend/src/components/watchlist/edit_oneline.directive.html @@ -12,5 +12,5 @@ span class=mw-changeslist-separator. ./span span user/user - span ng-if=::event.parsedcomment class=comment(span ng-bind-html=::event.parsedcomment/span)/span + span ng-if=::event.parsedcomment class=comment(comment/comment)/span /span diff --git a/frontend/src/components/watchlist/edit_twolines.directive.html b/frontend/src/components/watchlist/edit_twolines.directive.html index 4413525..ecae039 100644 --- a/frontend/src/components/watchlist/edit_twolines.directive.html +++ b/frontend/src/components/watchlist/edit_twolines.directive.html @@ -9,5 +9,5 @@ span dir=ltr ng-class=::event.bytestyle({{::event.bytes}})/span div user/user - span ng-if=::event.parsedcomment class=comment(span ng-bind-html=::event.parsedcomment/span)/span + span ng-if=::event.parsedcomment class=comment(comment/comment)/span /div diff --git a/frontend/src/components/watchlist/logevent.directive.html b/frontend/src/components/watchlist/logevent.directive.html index 8bdfdb2..47dc994 100644 --- a/frontend/src/components/watchlist/logevent.directive.html +++ b/frontend/src/components/watchlist/logevent.directive.html @@ -65,4 +65,4 @@ span translate=LOGEVENT_RENAMEUSER translate-values=event translate-interpolation=custom translate-compile/span /span /span -span ng-if=::event.parsedcomment class=comment(span ng-bind-html=::event.parsedcomment/span)/span +span ng-if=::event.parsedcomment class=comment(comment/comment)/span -- To view, visit https://gerrit.wikimedia.org/r/224605 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id8a11b8abaa5fc43d3a17c6f0eadd26eb0acf1c8 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Stop click propagation for links in comments - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224605 Change subject: Stop click propagation for links in comments .. Stop click propagation for links in comments Change-Id: Id8a11b8abaa5fc43d3a17c6f0eadd26eb0acf1c8 --- M backend/celery/tasks.py A frontend/src/components/watchlist/comment.directive.js M frontend/src/components/watchlist/edit_oneline.directive.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/logevent.directive.html 5 files changed, 23 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/05/224605/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index fe4df54..c9e91c2 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -95,7 +95,7 @@ def fix_urls(html, url): -a = u'a stop-event target=_blank href=' + url + u'/' +a = u'a target=_blank href=' + url + u'/' html = html.replace(u'a href=/', a) return html diff --git a/frontend/src/components/watchlist/comment.directive.js b/frontend/src/components/watchlist/comment.directive.js new file mode 100644 index 000..d2f6446 --- /dev/null +++ b/frontend/src/components/watchlist/comment.directive.js @@ -0,0 +1,19 @@ +angular + .module('crosswatch') + .directive('comment', comment); + +function comment ($sanitize) { + var directive = { +link: link, +restrict: 'E' + }; + return directive; + + function link (scope, element, attrs) { +var html = scope.event.parsedcomment; +element.html($sanitize(html)); +element.find('a').bind('click', function (e) { + e.stopPropagation(); +}); + } +} diff --git a/frontend/src/components/watchlist/edit_oneline.directive.html b/frontend/src/components/watchlist/edit_oneline.directive.html index a051f6c..b1419b7 100644 --- a/frontend/src/components/watchlist/edit_oneline.directive.html +++ b/frontend/src/components/watchlist/edit_oneline.directive.html @@ -12,5 +12,5 @@ span class=mw-changeslist-separator. ./span span user/user - span ng-if=::event.parsedcomment class=comment(span ng-bind-html=::event.parsedcomment/span)/span + span ng-if=::event.parsedcomment class=comment(comment/comment)/span /span diff --git a/frontend/src/components/watchlist/edit_twolines.directive.html b/frontend/src/components/watchlist/edit_twolines.directive.html index 4413525..ecae039 100644 --- a/frontend/src/components/watchlist/edit_twolines.directive.html +++ b/frontend/src/components/watchlist/edit_twolines.directive.html @@ -9,5 +9,5 @@ span dir=ltr ng-class=::event.bytestyle({{::event.bytes}})/span div user/user - span ng-if=::event.parsedcomment class=comment(span ng-bind-html=::event.parsedcomment/span)/span + span ng-if=::event.parsedcomment class=comment(comment/comment)/span /div diff --git a/frontend/src/components/watchlist/logevent.directive.html b/frontend/src/components/watchlist/logevent.directive.html index 8bdfdb2..47dc994 100644 --- a/frontend/src/components/watchlist/logevent.directive.html +++ b/frontend/src/components/watchlist/logevent.directive.html @@ -65,4 +65,4 @@ span translate=LOGEVENT_RENAMEUSER translate-values=event translate-interpolation=custom translate-compile/span /span /span -span ng-if=::event.parsedcomment class=comment(span ng-bind-html=::event.parsedcomment/span)/span +span ng-if=::event.parsedcomment class=comment(comment/comment)/span -- To view, visit https://gerrit.wikimedia.org/r/224605 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id8a11b8abaa5fc43d3a17c6f0eadd26eb0acf1c8 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add coloring to differentiate projects - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224375 Change subject: Add coloring to differentiate projects .. Add coloring to differentiate projects Shows a 4px wide color border for each watchlist event to differentiate projects. Change-Id: Ibd7c228f6c412c16f39e73e4f5a4307f944ac38c --- M frontend/src/app/index.css M frontend/src/app/services.js M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/components/watchlist/watchlist.html 4 files changed, 102 insertions(+), 10 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/75/224375/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 868a0b4..1c9dbcd 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -125,6 +125,30 @@ max-width: 1200px; } +.watchlist-container { + padding: 0; +} + +md-list-item.watchlist { + border-left-width: 4px; + border-left-style: solid; + padding-left: 12px; +} + +md-list-item.watchlist:first-child { + padding-top: 8px; +} + +md-list-item.watchlist:last-child { + padding-bottom: 8px; +} + +.watchlist:last-child md-divider, +.notifications:last-child md-divider +{ + border-top: 0; +} + .watchlist-list-item-oneline { min-height: 32px; } @@ -160,12 +184,6 @@ outline:none; } -.watchlist:last-child md-divider, -.notifications:last-child md-divider -{ - border-top: 0; -} - span.comment{ font-style: italic; unicode-bidi: embed; @@ -183,6 +201,62 @@ font-weight: bold; } +.project-color-white { + border-left-color: white; +} + +.project-color-pink { + border-left-color: #F06292; +} + +.project-color-purple { + border-left-color: #CE93D8; +} + +.project-color-deep-purple { + border-left-color: #9575CD; +} + +.project-color-blue { + border-left-color: #64B5F6; +} + +.project-color-cyan { + border-left-color: #4DD0E1; +} + +.project-color-teal { + border-left-color: #4DB6AC; +} + +.project-color-green { + border-left-color: #81C784; +} + +.project-color-lime { + border-left-color: #DCE775; +} + +.project-color-yellow { + border-left-color: #FFF176; +} + +.project-color-amber { + border-left-color: #FFD54F; +} + +.project-color-orange { + border-left-color: #FFB74D; +} + +.project-color-brown { + border-left-color: #A1887F; +} + +.project-color-blue-grey { + border-left-color: #90A4AE; +} + /** material design icons **/ @font-face { font-family: 'Material Icons'; diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index f08e222..08e94b7 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -105,6 +105,14 @@ * List of selected namespaces */ vm.config.namespacesSelected = vm.config.namespacesSelected || vm.defaultconfig.namespacesList; + /** + * Associative array from project to border color + */ + vm.config.projectColors = vm.config.projectColors || {}; + + + var colors = ['pink', 'deep-purple', 'blue', 'cyan', 'green', 'lime', 'orange', 'brown', 'blue-grey']; + var colorsIndex = 0; /** * Process an array of new watchlist entries. @@ -123,6 +131,16 @@ vm.saveConfig(); } +if (!vm.config.projectColors.hasOwnProperty(project)) { + vm.config.projectColors[project] = 'project-color-' + colors[colorsIndex]; + + colorsIndex += 1; + if (colorsIndex = colors.length) { +colorsIndex = 0; + } + vm.saveConfig(); +} + vm.filterWatchlistDebounced(); }; diff --git a/frontend/src/components/watchlist/watchlist.controller.js b/frontend/src/components/watchlist/watchlist.controller.js index 990d430..81c79c3 100644 --- a/frontend/src/components/watchlist/watchlist.controller.js +++ b/frontend/src/components/watchlist/watchlist.controller.js @@ -19,5 +19,5 @@ event.diff = diff; }) } -} +}; }); diff --git a/frontend/src/components/watchlist/watchlist.html b/frontend/src/components/watchlist/watchlist.html index 3b683a0..decaceb 100644 --- a/frontend/src/components/watchlist/watchlist.html +++ b/frontend/src/components/watchlist/watchlist.html @@ -22,10 +22,10 @@ md-progress-circular md-mode=indeterminate/md-progress-circular /md-list-item /md-list -md-list infinite-scroll=ctrl.moreWatchlistEntries() infinite-scroll-immediate-check=false +md-list class=watchlist-container infinite-scroll=ctrl.moreWatchlistEntries() infinite-scroll-immediate-check=false infinite-scroll-distance=1 - md-list-item layout=row id=watchlist class=watchlist -ng-class=(ctrl.config.oneline) ? 'watchlist-list-item-oneline' : '' + md-list-item layout=row class=watchlist +ng-class=[{'watchlist-list-item-oneline': ctrl.config.oneline}, ctrl.config.projectColors[event.project]] ng-repeat=event in ctrl.watchlist.active track by
[MediaWiki-commits] [Gerrit] Add coloring to differentiate projects - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add coloring to differentiate projects .. Add coloring to differentiate projects Shows a 4px wide color border for each watchlist event to differentiate projects. Change-Id: Ibd7c228f6c412c16f39e73e4f5a4307f944ac38c --- M frontend/src/app/index.css M frontend/src/app/services.js M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/components/watchlist/watchlist.html 4 files changed, 102 insertions(+), 10 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 868a0b4..1c9dbcd 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -125,6 +125,30 @@ max-width: 1200px; } +.watchlist-container { + padding: 0; +} + +md-list-item.watchlist { + border-left-width: 4px; + border-left-style: solid; + padding-left: 12px; +} + +md-list-item.watchlist:first-child { + padding-top: 8px; +} + +md-list-item.watchlist:last-child { + padding-bottom: 8px; +} + +.watchlist:last-child md-divider, +.notifications:last-child md-divider +{ + border-top: 0; +} + .watchlist-list-item-oneline { min-height: 32px; } @@ -160,12 +184,6 @@ outline:none; } -.watchlist:last-child md-divider, -.notifications:last-child md-divider -{ - border-top: 0; -} - span.comment{ font-style: italic; unicode-bidi: embed; @@ -183,6 +201,62 @@ font-weight: bold; } +.project-color-white { + border-left-color: white; +} + +.project-color-pink { + border-left-color: #F06292; +} + +.project-color-purple { + border-left-color: #CE93D8; +} + +.project-color-deep-purple { + border-left-color: #9575CD; +} + +.project-color-blue { + border-left-color: #64B5F6; +} + +.project-color-cyan { + border-left-color: #4DD0E1; +} + +.project-color-teal { + border-left-color: #4DB6AC; +} + +.project-color-green { + border-left-color: #81C784; +} + +.project-color-lime { + border-left-color: #DCE775; +} + +.project-color-yellow { + border-left-color: #FFF176; +} + +.project-color-amber { + border-left-color: #FFD54F; +} + +.project-color-orange { + border-left-color: #FFB74D; +} + +.project-color-brown { + border-left-color: #A1887F; +} + +.project-color-blue-grey { + border-left-color: #90A4AE; +} + /** material design icons **/ @font-face { font-family: 'Material Icons'; diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js index f08e222..08e94b7 100644 --- a/frontend/src/app/services.js +++ b/frontend/src/app/services.js @@ -105,6 +105,14 @@ * List of selected namespaces */ vm.config.namespacesSelected = vm.config.namespacesSelected || vm.defaultconfig.namespacesList; + /** + * Associative array from project to border color + */ + vm.config.projectColors = vm.config.projectColors || {}; + + + var colors = ['pink', 'deep-purple', 'blue', 'cyan', 'green', 'lime', 'orange', 'brown', 'blue-grey']; + var colorsIndex = 0; /** * Process an array of new watchlist entries. @@ -123,6 +131,16 @@ vm.saveConfig(); } +if (!vm.config.projectColors.hasOwnProperty(project)) { + vm.config.projectColors[project] = 'project-color-' + colors[colorsIndex]; + + colorsIndex += 1; + if (colorsIndex = colors.length) { +colorsIndex = 0; + } + vm.saveConfig(); +} + vm.filterWatchlistDebounced(); }; diff --git a/frontend/src/components/watchlist/watchlist.controller.js b/frontend/src/components/watchlist/watchlist.controller.js index 990d430..81c79c3 100644 --- a/frontend/src/components/watchlist/watchlist.controller.js +++ b/frontend/src/components/watchlist/watchlist.controller.js @@ -19,5 +19,5 @@ event.diff = diff; }) } -} +}; }); diff --git a/frontend/src/components/watchlist/watchlist.html b/frontend/src/components/watchlist/watchlist.html index 3b683a0..decaceb 100644 --- a/frontend/src/components/watchlist/watchlist.html +++ b/frontend/src/components/watchlist/watchlist.html @@ -22,10 +22,10 @@ md-progress-circular md-mode=indeterminate/md-progress-circular /md-list-item /md-list -md-list infinite-scroll=ctrl.moreWatchlistEntries() infinite-scroll-immediate-check=false +md-list class=watchlist-container infinite-scroll=ctrl.moreWatchlistEntries() infinite-scroll-immediate-check=false infinite-scroll-distance=1 - md-list-item layout=row id=watchlist class=watchlist -ng-class=(ctrl.config.oneline) ? 'watchlist-list-item-oneline' : '' + md-list-item layout=row class=watchlist +ng-class=[{'watchlist-list-item-oneline': ctrl.config.oneline}, ctrl.config.projectColors[event.project]] ng-repeat=event in ctrl.watchlist.active track by event.id watchlist-entry ng-click=event.clicked =
[MediaWiki-commits] [Gerrit] Fix bug for logevents with spaces in title - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224233 Change subject: Fix bug for logevents with spaces in title .. Fix bug for logevents with spaces in title Fixes i18n strings to use quotation marks when passing variables to directives. Also fixes scope isolation for page directive. Change-Id: I90e7e7b5a809b1b0fa05fd5c21fdee0b94a93db1 --- M frontend/src/components/watchlist/page.directive.js M frontend/src/i18n/locale-en.json 2 files changed, 16 insertions(+), 14 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/33/224233/1 diff --git a/frontend/src/components/watchlist/page.directive.js b/frontend/src/components/watchlist/page.directive.js index a3e79ac..c5abfc3 100644 --- a/frontend/src/components/watchlist/page.directive.js +++ b/frontend/src/components/watchlist/page.directive.js @@ -6,9 +6,9 @@ var directive = { link: link, scope: true, -template: 'a stop-event href={{::event.projecturl}}/wiki/{{::event.title | urlEncode}} target=_blank{{::event.title}}/a ' + +template: 'a stop-event href={{::event.projecturl}}/wiki/{{::title | urlEncode}} target=_blank{{::title}}/a ' + 'span ng-if=event.clicked' + -'(a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + +'(a stop-event href={{::event.projecturl}}/w/index.php?title={{::title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + '/span', restrict: 'E' }; @@ -16,7 +16,9 @@ function link(scope, element, attrs) { if (typeof attrs.title !== 'undefined') { - scope.event.title = attrs.title; + scope.title = attrs.title; +} else { + scope.title = scope.event.title; } } } diff --git a/frontend/src/i18n/locale-en.json b/frontend/src/i18n/locale-en.json index 6b6b241..4c5f66f 100644 --- a/frontend/src/i18n/locale-en.json +++ b/frontend/src/i18n/locale-en.json @@ -28,23 +28,23 @@ LOGEVENT_PROTECT_PROTECT: user protected page page with parameters {{protection_level}}, LOGEVENT_PROTECT_MODIFY: user modified protection on page page with parameters {{protection_level}}, LOGEVENT_PROTECT_UNPROTECT: user unprotected page page, - LOGEVENT_PROTECT_MOVE: user moved protection settings from page to page title={{target_title}}, - LOGEVENT_MOVE: user moved page page to page title={{target_title}}, - LOGEVENT_BLOCK_BLOCK: user blocked user name={{title}} with an expiry time of {{duration}} with parameters {{flags|list}}, - LOGEVENT_BLOCK_REBLOCK: user changed block settings for user name={{title}} with an expiry time of {{duration}} with parameters {{flags|list}}, - LOGEVENT_BLOCK_UNBLOCK: user unblocked user name={{title}}, + LOGEVENT_PROTECT_MOVE: user moved protection settings from page to page title=\{{target_title}}\, + LOGEVENT_MOVE: user moved page page to page title=\{{target_title}}\, + LOGEVENT_BLOCK_BLOCK: user blocked user name=\{{title}}\ with an expiry time of {{duration}} with parameters {{flags|list}}, + LOGEVENT_BLOCK_REBLOCK: user changed block settings for user name=\{{title}}\ with an expiry time of {{duration}} with parameters {{flags|list}}, + LOGEVENT_BLOCK_UNBLOCK: user unblocked user name=\{{title}}\, LOGEVENT_RIGHTS_AUTOPROMOTE: user was automatically promoted from {{oldgroups|list}} to {{newgroups|list}}, - LOGEVENT_RIGHTS_RIGHTS: user changed group membership for user name={{title}} from {{oldgroups|list}} to {{newgroups|list}}, + LOGEVENT_RIGHTS_RIGHTS: user changed group membership for user name=\{{title}}\ from {{oldgroups|list}} to {{newgroups|list}}, LOGEVENT_UPLOAD_OVERWRITE: user uploaded a new version of page, LOGEVENT_UPLOAD_REVERT: user uploaded page, LOGEVENT_UPLOAD_UPLOAD: user uploaded page, LOGEVENT_IMPORT_INTERWIKI: user imported page from another wiki, LOGEVENT_IMPORT_UPLOAD: user imported page by file upload, - LOGEVENT_MERGE: user merged page into page title={{dest_title}} (revisions up to {{mergepoint|amCalendar}}), - LOGEVENT_NEWUSERS_CREATE: User account user name={{title}} was created, - LOGEVENT_NEWUSERS_CREATE2: User account user name={{title}} was created by user, - LOGEVENT_NEWUSERS_BYEMAIL: User account user name={{title}} was created by user and password was sent by email, - LOGEVENT_RENAMEUSER: user renamed user user name={{olduser}} ({{edits}} edits) to user name={{newuser}}, + LOGEVENT_MERGE: user merged page into page title=\{{dest_title}}\ (revisions up to {{mergepoint|amCalendar}}), + LOGEVENT_NEWUSERS_CREATE: User account user name=\{{title}}\ was created, + LOGEVENT_NEWUSERS_CREATE2: User account user name=\{{title}}\ was created by user, + LOGEVENT_NEWUSERS_BYEMAIL: User account user name=\{{title}}\ was created by user and password was sent by email, + LOGEVENT_RENAMEUSER: user renamed user user
[MediaWiki-commits] [Gerrit] Fix bug for logevents with spaces in title - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix bug for logevents with spaces in title .. Fix bug for logevents with spaces in title Fixes i18n strings to use quotation marks when passing variables to directives. Also fixes scope isolation for page directive. Change-Id: I90e7e7b5a809b1b0fa05fd5c21fdee0b94a93db1 --- M frontend/src/components/watchlist/page.directive.js M frontend/src/i18n/locale-en.json 2 files changed, 16 insertions(+), 14 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/watchlist/page.directive.js b/frontend/src/components/watchlist/page.directive.js index a3e79ac..c5abfc3 100644 --- a/frontend/src/components/watchlist/page.directive.js +++ b/frontend/src/components/watchlist/page.directive.js @@ -6,9 +6,9 @@ var directive = { link: link, scope: true, -template: 'a stop-event href={{::event.projecturl}}/wiki/{{::event.title | urlEncode}} target=_blank{{::event.title}}/a ' + +template: 'a stop-event href={{::event.projecturl}}/wiki/{{::title | urlEncode}} target=_blank{{::title}}/a ' + 'span ng-if=event.clicked' + -'(a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + +'(a stop-event href={{::event.projecturl}}/w/index.php?title={{::title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + '/span', restrict: 'E' }; @@ -16,7 +16,9 @@ function link(scope, element, attrs) { if (typeof attrs.title !== 'undefined') { - scope.event.title = attrs.title; + scope.title = attrs.title; +} else { + scope.title = scope.event.title; } } } diff --git a/frontend/src/i18n/locale-en.json b/frontend/src/i18n/locale-en.json index 6b6b241..4c5f66f 100644 --- a/frontend/src/i18n/locale-en.json +++ b/frontend/src/i18n/locale-en.json @@ -28,23 +28,23 @@ LOGEVENT_PROTECT_PROTECT: user protected page page with parameters {{protection_level}}, LOGEVENT_PROTECT_MODIFY: user modified protection on page page with parameters {{protection_level}}, LOGEVENT_PROTECT_UNPROTECT: user unprotected page page, - LOGEVENT_PROTECT_MOVE: user moved protection settings from page to page title={{target_title}}, - LOGEVENT_MOVE: user moved page page to page title={{target_title}}, - LOGEVENT_BLOCK_BLOCK: user blocked user name={{title}} with an expiry time of {{duration}} with parameters {{flags|list}}, - LOGEVENT_BLOCK_REBLOCK: user changed block settings for user name={{title}} with an expiry time of {{duration}} with parameters {{flags|list}}, - LOGEVENT_BLOCK_UNBLOCK: user unblocked user name={{title}}, + LOGEVENT_PROTECT_MOVE: user moved protection settings from page to page title=\{{target_title}}\, + LOGEVENT_MOVE: user moved page page to page title=\{{target_title}}\, + LOGEVENT_BLOCK_BLOCK: user blocked user name=\{{title}}\ with an expiry time of {{duration}} with parameters {{flags|list}}, + LOGEVENT_BLOCK_REBLOCK: user changed block settings for user name=\{{title}}\ with an expiry time of {{duration}} with parameters {{flags|list}}, + LOGEVENT_BLOCK_UNBLOCK: user unblocked user name=\{{title}}\, LOGEVENT_RIGHTS_AUTOPROMOTE: user was automatically promoted from {{oldgroups|list}} to {{newgroups|list}}, - LOGEVENT_RIGHTS_RIGHTS: user changed group membership for user name={{title}} from {{oldgroups|list}} to {{newgroups|list}}, + LOGEVENT_RIGHTS_RIGHTS: user changed group membership for user name=\{{title}}\ from {{oldgroups|list}} to {{newgroups|list}}, LOGEVENT_UPLOAD_OVERWRITE: user uploaded a new version of page, LOGEVENT_UPLOAD_REVERT: user uploaded page, LOGEVENT_UPLOAD_UPLOAD: user uploaded page, LOGEVENT_IMPORT_INTERWIKI: user imported page from another wiki, LOGEVENT_IMPORT_UPLOAD: user imported page by file upload, - LOGEVENT_MERGE: user merged page into page title={{dest_title}} (revisions up to {{mergepoint|amCalendar}}), - LOGEVENT_NEWUSERS_CREATE: User account user name={{title}} was created, - LOGEVENT_NEWUSERS_CREATE2: User account user name={{title}} was created by user, - LOGEVENT_NEWUSERS_BYEMAIL: User account user name={{title}} was created by user and password was sent by email, - LOGEVENT_RENAMEUSER: user renamed user user name={{olduser}} ({{edits}} edits) to user name={{newuser}}, + LOGEVENT_MERGE: user merged page into page title=\{{dest_title}}\ (revisions up to {{mergepoint|amCalendar}}), + LOGEVENT_NEWUSERS_CREATE: User account user name=\{{title}}\ was created, + LOGEVENT_NEWUSERS_CREATE2: User account user name=\{{title}}\ was created by user, + LOGEVENT_NEWUSERS_BYEMAIL: User account user name=\{{title}}\ was created by user and password was sent by email, + LOGEVENT_RENAMEUSER: user renamed user user name=\{{olduser}}\ ({{edits}} edits) to user name=\{{newuser}}\,
[MediaWiki-commits] [Gerrit] Stop click event propagation for a href - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Stop click event propagation for a href .. Stop click event propagation for a href Change-Id: I119bcf84e4ad1ef4e7ea6e50db78d506c7dc957b --- M backend/celery/tasks.py M frontend/src/components/watchlist/edit_oneline.directive.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/page.directive.js M frontend/src/components/watchlist/user.directive.js 6 files changed, 7 insertions(+), 7 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index c9e91c2..fe4df54 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -95,7 +95,7 @@ def fix_urls(html, url): -a = u'a target=_blank href=' + url + u'/' +a = u'a stop-event target=_blank href=' + url + u'/' html = html.replace(u'a href=/', a) return html diff --git a/frontend/src/components/watchlist/edit_oneline.directive.html b/frontend/src/components/watchlist/edit_oneline.directive.html index 91a9b97..a051f6c 100644 --- a/frontend/src/components/watchlist/edit_oneline.directive.html +++ b/frontend/src/components/watchlist/edit_oneline.directive.html @@ -1,7 +1,7 @@ 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 dir=ltr href={{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}diff={{::event.revid}} +a stop-event dir=ltr href={{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}diff={{::event.revid}} ng-class=::event.titlestyle target=_blank{{::event.title}}/a span ng-if=event.clicked (a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a) diff --git a/frontend/src/components/watchlist/edit_twolines.directive.html b/frontend/src/components/watchlist/edit_twolines.directive.html index 50910bb..4413525 100644 --- a/frontend/src/components/watchlist/edit_twolines.directive.html +++ b/frontend/src/components/watchlist/edit_twolines.directive.html @@ -1,7 +1,7 @@ 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}} +a stop-event href={{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}diff={{::event.revid}} ng-class=::event.titlestyle target=_blank{{::event.title}}/a span ng-if=event.clicked (a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a) diff --git a/frontend/src/components/watchlist/entry.directive.html b/frontend/src/components/watchlist/entry.directive.html index c31c419..9adbcbb 100644 --- a/frontend/src/components/watchlist/entry.directive.html +++ b/frontend/src/components/watchlist/entry.directive.html @@ -1,6 +1,6 @@ div ng-if=ctrl.config.oneline layout=row div class=left -a href={{::event.projecturl}}/wiki/Special:Watchlist class=project +a stop-event href={{::event.projecturl}}/wiki/Special:Watchlist class=project title={{::event.project}} target=_blank img height=16px ng-src={{::ctrl.icons[event.projectgroup]}} alt={{::event.projectgroup}} span ng-if=::event.projectlang @@ -22,7 +22,7 @@ div ng-if=!ctrl.config.oneline layout=row div class=left div am-time-ago=event.timestamp/div -a href={{::event.projecturl}}/wiki/Special:Watchlist class=project +a stop-event href={{::event.projecturl}}/wiki/Special:Watchlist class=project title={{::event.project}} target=_blank img height=16px ng-src={{::ctrl.icons[event.projectgroup]}} alt={{::event.projectgroup}} span ng-if=::event.projectlang diff --git a/frontend/src/components/watchlist/page.directive.js b/frontend/src/components/watchlist/page.directive.js index f7b42f8..a3e79ac 100644 --- a/frontend/src/components/watchlist/page.directive.js +++ b/frontend/src/components/watchlist/page.directive.js @@ -6,7 +6,7 @@ var directive = { link: link, scope: true, -template: 'a href={{::event.projecturl}}/wiki/{{::event.title | urlEncode}} target=_blank{{::event.title}}/a ' + +template: 'a stop-event href={{::event.projecturl}}/wiki/{{::event.title | urlEncode}} target=_blank{{::event.title}}/a ' + 'span ng-if=event.clicked' + '(a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a)' + '/span', diff --git
[MediaWiki-commits] [Gerrit] Add checkboxes to multiple select lists - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Add checkboxes to multiple select lists .. Add checkboxes to multiple select lists Bug: T100157 Change-Id: I246a560fcba2002071b4b3b422e1845cb11fc011 --- M frontend/src/app/index.css 1 file changed, 42 insertions(+), 0 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 586a456..868a0b4 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -49,6 +49,48 @@ border-left-color: rgba(0, 0, 0, 0.12); } +/** Add checkbox to multiple select, adapted from https://github.com/angular/material/issues/3244 **/ +md-select-menu[multiple] md-option { + padding-right: 48px; +} + +md-select-menu[multiple] md-option:before { + transition: 240ms; + position: absolute; + top: 13px; + right: 16px; + width: 16px; + height: 16px; + border: 2px solid; + border-radius: 2px; + content: ' '; + border-color: rgba(0, 0, 0, 0.54); + z-index: 1; +} + +md-select-menu[multiple] md-option[selected]:before { + background-color: rgb(63,81,181); + border-color: rgb(63,81,181); +} + +md-select-menu[multiple] md-option[selected]:after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + top: 15px; + right: 23px; + display: table; + width: 4px; + height: 12px; + border: 2px solid; + border-top: 0; + border-left: 0; + content: ' '; + z-index: 2; + border-color: rgb(238,238,238); +} + +/** Links **/ a { color: #0645ad; text-decoration: none; -- To view, visit https://gerrit.wikimedia.org/r/224207 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I246a560fcba2002071b4b3b422e1845cb11fc011 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add checkboxes to multiple select lists - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224207 Change subject: Add checkboxes to multiple select lists .. Add checkboxes to multiple select lists Bug: T100157 Change-Id: I246a560fcba2002071b4b3b422e1845cb11fc011 --- M frontend/src/app/index.css 1 file changed, 42 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/07/224207/1 diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 586a456..868a0b4 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -49,6 +49,48 @@ border-left-color: rgba(0, 0, 0, 0.12); } +/** Add checkbox to multiple select, adapted from https://github.com/angular/material/issues/3244 **/ +md-select-menu[multiple] md-option { + padding-right: 48px; +} + +md-select-menu[multiple] md-option:before { + transition: 240ms; + position: absolute; + top: 13px; + right: 16px; + width: 16px; + height: 16px; + border: 2px solid; + border-radius: 2px; + content: ' '; + border-color: rgba(0, 0, 0, 0.54); + z-index: 1; +} + +md-select-menu[multiple] md-option[selected]:before { + background-color: rgb(63,81,181); + border-color: rgb(63,81,181); +} + +md-select-menu[multiple] md-option[selected]:after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + top: 15px; + right: 23px; + display: table; + width: 4px; + height: 12px; + border: 2px solid; + border-top: 0; + border-left: 0; + content: ' '; + z-index: 2; + border-color: rgb(238,238,238); +} + +/** Links **/ a { color: #0645ad; text-decoration: none; -- To view, visit https://gerrit.wikimedia.org/r/224207 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I246a560fcba2002071b4b3b422e1845cb11fc011 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Stop click event propagation for a href - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/224209 Change subject: Stop click event propagation for a href .. Stop click event propagation for a href Change-Id: I119bcf84e4ad1ef4e7ea6e50db78d506c7dc957b --- M backend/celery/tasks.py M frontend/src/components/watchlist/edit_oneline.directive.html M frontend/src/components/watchlist/edit_twolines.directive.html M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/page.directive.js M frontend/src/components/watchlist/user.directive.js 6 files changed, 7 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/09/224209/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index c9e91c2..fe4df54 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -95,7 +95,7 @@ def fix_urls(html, url): -a = u'a target=_blank href=' + url + u'/' +a = u'a stop-event target=_blank href=' + url + u'/' html = html.replace(u'a href=/', a) return html diff --git a/frontend/src/components/watchlist/edit_oneline.directive.html b/frontend/src/components/watchlist/edit_oneline.directive.html index 91a9b97..a051f6c 100644 --- a/frontend/src/components/watchlist/edit_oneline.directive.html +++ b/frontend/src/components/watchlist/edit_oneline.directive.html @@ -1,7 +1,7 @@ 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 dir=ltr href={{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}diff={{::event.revid}} +a stop-event dir=ltr href={{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}diff={{::event.revid}} ng-class=::event.titlestyle target=_blank{{::event.title}}/a span ng-if=event.clicked (a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a) diff --git a/frontend/src/components/watchlist/edit_twolines.directive.html b/frontend/src/components/watchlist/edit_twolines.directive.html index 50910bb..4413525 100644 --- a/frontend/src/components/watchlist/edit_twolines.directive.html +++ b/frontend/src/components/watchlist/edit_twolines.directive.html @@ -1,7 +1,7 @@ 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}} +a stop-event href={{::event.projecturl}}/w/index.php?oldid={{::event.old_revid}}diff={{::event.revid}} ng-class=::event.titlestyle target=_blank{{::event.title}}/a span ng-if=event.clicked (a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank translate=HISTORY/a) diff --git a/frontend/src/components/watchlist/entry.directive.html b/frontend/src/components/watchlist/entry.directive.html index c31c419..9adbcbb 100644 --- a/frontend/src/components/watchlist/entry.directive.html +++ b/frontend/src/components/watchlist/entry.directive.html @@ -1,6 +1,6 @@ div ng-if=ctrl.config.oneline layout=row div class=left -a href={{::event.projecturl}}/wiki/Special:Watchlist class=project +a stop-event href={{::event.projecturl}}/wiki/Special:Watchlist class=project title={{::event.project}} target=_blank img height=16px ng-src={{::ctrl.icons[event.projectgroup]}} alt={{::event.projectgroup}} span ng-if=::event.projectlang @@ -22,7 +22,7 @@ div ng-if=!ctrl.config.oneline layout=row div class=left div am-time-ago=event.timestamp/div -a href={{::event.projecturl}}/wiki/Special:Watchlist class=project +a stop-event href={{::event.projecturl}}/wiki/Special:Watchlist class=project title={{::event.project}} target=_blank img height=16px ng-src={{::ctrl.icons[event.projectgroup]}} alt={{::event.projectgroup}} span ng-if=::event.projectlang diff --git a/frontend/src/components/watchlist/page.directive.js b/frontend/src/components/watchlist/page.directive.js index f7b42f8..a3e79ac 100644 --- a/frontend/src/components/watchlist/page.directive.js +++ b/frontend/src/components/watchlist/page.directive.js @@ -6,7 +6,7 @@ var directive = { link: link, scope: true, -template: 'a href={{::event.projecturl}}/wiki/{{::event.title | urlEncode}} target=_blank{{::event.title}}/a ' + +template: 'a stop-event href={{::event.projecturl}}/wiki/{{::event.title | urlEncode}} target=_blank{{::event.title}}/a ' + 'span ng-if=event.clicked' + '(a stop-event href={{::event.projecturl}}/w/index.php?title={{::event.title | urlEncode}}action=history target=_blank
[MediaWiki-commits] [Gerrit] Show a edit diff when the user requests it - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/223798 Change subject: Show a edit diff when the user requests it .. Show a edit diff when the user requests it Show a diff for a watchlist edit event when clicking on it. Bug: T103679 Change-Id: I8a25627b68813b3f0d3e77c53f066dc21ce2b9f6 --- M backend/celery/tasks.py M backend/server/__init__.py M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/components/watchlist/watchlist.html 8 files changed, 199 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/98/223798/1 diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index c49e1d2..c9e91c2 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -219,5 +219,32 @@ mw.post(params, payload) +@app.task +def get_diff(obj): + +Get a diff for a wiki page + +mw = MediaWiki(host=obj['projecturl'], + access_token=obj['access_token'], + redis_channel=obj['redis_channel']) +params = { +'action': query, +'prop': revisions, +'rvstartid': obj['old_revid'], +'rvendid': obj['old_revid'], +'rvdiffto': obj['revid'], +'pageids': obj['pageid'], +'formatversion': 2 +} +response = mw.query(params) +diff = response['query']['pages'][0]['revisions'][0]['diff']['body'] + +mw.publish({ +'msgtype': 'diff_response', +'request_id': obj['request_id'], +'diff': diff +}) + + if __name__ == '__main__': app.start() diff --git a/backend/server/__init__.py b/backend/server/__init__.py index 29979d9..f4c1f0d 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -59,6 +59,13 @@ elif data[u'action'] == u'notifications_mark_read': celery_app.send_task('backend.celery.tasks.notifications_mark_read', (data, ), expires=60) +elif data[u'action'] == u'diff': +redis_channel = str(uuid4()) +self.channels.append(redis_channel) +subscriber.subscribe(redis_channel, self) + +data['redis_channel'] = redis_channel +celery_app.send_task('backend.celery.tasks.get_diff', (data, )) class NoChacheStaticFileHandler(StaticFileHandler): diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 3ec86fa..7d7131a 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -207,6 +207,101 @@ overflow: hidden; } +/*! + * Diff rendering + */ +table.diff { + border: none; + border-spacing: 4px; + margin: 0; + width: 100%; + /* Ensure that colums are of equal width */ + table-layout: fixed; +} + +table.diff td { + padding: 0.33em 0.5em; +} + +table.diff td.diff-marker { + /* Compensate padding for increased font-size */ + padding: 0.25em; +} + +table.diff col.diff-marker { + width: 2%; +} + +table.diff col.diff-content { + width: 48%; +} + +table.diff td div { + /* Force-wrap very long lines such as URLs or page-widening char strings */ + word-wrap: break-word; +} + +td.diff-otitle, +td.diff-ntitle { + text-align: center; +} + +td.diff-lineno { + font-weight: bold; +} + +td.diff-marker { + text-align: right; + font-weight: bold; + font-size: 1.25em; + line-height: 1.2; +} + +td.diff-addedline, +td.diff-deletedline, +td.diff-context { + font-size: 88%; + line-height: 1.6; + vertical-align: top; + white-space: -moz-pre-wrap; + white-space: pre-wrap; + border-style: solid; + border-width: 1px 1px 1px 4px; + border-radius: 0.33em; +} + +td.diff-addedline { + border-color: #a3d3ff; +} + +td.diff-deletedline { + border-color: #ffe49c; +} + +td.diff-context { + background: #f9f9f9; + border-color: #e6e6e6; + color: #33; +} + +.diffchange { + font-weight: bold; + text-decoration: none; +} + +td.diff-addedline .diffchange, +td.diff-deletedline .diffchange { + border-radius: 0.33em; + padding: 0.25em 0; +} + +td.diff-addedline .diffchange { + background: #d8ecff; +} + +td.diff-deletedline .diffchange { + background: #feeec8; +} /** material design icons **/ @font-face { diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index f52f1de..835a949 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -58,6 +58,8 @@ dataService.addWatchlistEntries(data.entires); } else if (data.msgtype === 'notification') { dataService.addNotificationEntries(data) +} else if (data.msgtype === 'diff_response') { + dataService.diffResponseHandler(data) } else if (data.msgtype === 'loginerror') { $log.error('login failed!'); @@ -75,7 +77,7 @@ });
[MediaWiki-commits] [Gerrit] Show a edit diff when the user requests it - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Show a edit diff when the user requests it .. Show a edit diff when the user requests it Show a diff for a watchlist edit event when clicking on it. Bug: T103679 Change-Id: I8a25627b68813b3f0d3e77c53f066dc21ce2b9f6 --- M backend/celery/tasks.py M backend/server/__init__.py M frontend/src/app/index.css M frontend/src/app/runBlock.js M frontend/src/app/services.js M frontend/src/components/watchlist/entry.directive.html M frontend/src/components/watchlist/watchlist.controller.js M frontend/src/components/watchlist/watchlist.html 8 files changed, 199 insertions(+), 3 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/backend/celery/tasks.py b/backend/celery/tasks.py index c49e1d2..c9e91c2 100644 --- a/backend/celery/tasks.py +++ b/backend/celery/tasks.py @@ -219,5 +219,32 @@ mw.post(params, payload) +@app.task +def get_diff(obj): + +Get a diff for a wiki page + +mw = MediaWiki(host=obj['projecturl'], + access_token=obj['access_token'], + redis_channel=obj['redis_channel']) +params = { +'action': query, +'prop': revisions, +'rvstartid': obj['old_revid'], +'rvendid': obj['old_revid'], +'rvdiffto': obj['revid'], +'pageids': obj['pageid'], +'formatversion': 2 +} +response = mw.query(params) +diff = response['query']['pages'][0]['revisions'][0]['diff']['body'] + +mw.publish({ +'msgtype': 'diff_response', +'request_id': obj['request_id'], +'diff': diff +}) + + if __name__ == '__main__': app.start() diff --git a/backend/server/__init__.py b/backend/server/__init__.py index 29979d9..f4c1f0d 100644 --- a/backend/server/__init__.py +++ b/backend/server/__init__.py @@ -59,6 +59,13 @@ elif data[u'action'] == u'notifications_mark_read': celery_app.send_task('backend.celery.tasks.notifications_mark_read', (data, ), expires=60) +elif data[u'action'] == u'diff': +redis_channel = str(uuid4()) +self.channels.append(redis_channel) +subscriber.subscribe(redis_channel, self) + +data['redis_channel'] = redis_channel +celery_app.send_task('backend.celery.tasks.get_diff', (data, )) class NoChacheStaticFileHandler(StaticFileHandler): diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 3ec86fa..7d7131a 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -207,6 +207,101 @@ overflow: hidden; } +/*! + * Diff rendering + */ +table.diff { + border: none; + border-spacing: 4px; + margin: 0; + width: 100%; + /* Ensure that colums are of equal width */ + table-layout: fixed; +} + +table.diff td { + padding: 0.33em 0.5em; +} + +table.diff td.diff-marker { + /* Compensate padding for increased font-size */ + padding: 0.25em; +} + +table.diff col.diff-marker { + width: 2%; +} + +table.diff col.diff-content { + width: 48%; +} + +table.diff td div { + /* Force-wrap very long lines such as URLs or page-widening char strings */ + word-wrap: break-word; +} + +td.diff-otitle, +td.diff-ntitle { + text-align: center; +} + +td.diff-lineno { + font-weight: bold; +} + +td.diff-marker { + text-align: right; + font-weight: bold; + font-size: 1.25em; + line-height: 1.2; +} + +td.diff-addedline, +td.diff-deletedline, +td.diff-context { + font-size: 88%; + line-height: 1.6; + vertical-align: top; + white-space: -moz-pre-wrap; + white-space: pre-wrap; + border-style: solid; + border-width: 1px 1px 1px 4px; + border-radius: 0.33em; +} + +td.diff-addedline { + border-color: #a3d3ff; +} + +td.diff-deletedline { + border-color: #ffe49c; +} + +td.diff-context { + background: #f9f9f9; + border-color: #e6e6e6; + color: #33; +} + +.diffchange { + font-weight: bold; + text-decoration: none; +} + +td.diff-addedline .diffchange, +td.diff-deletedline .diffchange { + border-radius: 0.33em; + padding: 0.25em 0; +} + +td.diff-addedline .diffchange { + background: #d8ecff; +} + +td.diff-deletedline .diffchange { + background: #feeec8; +} /** material design icons **/ @font-face { diff --git a/frontend/src/app/runBlock.js b/frontend/src/app/runBlock.js index f52f1de..835a949 100644 --- a/frontend/src/app/runBlock.js +++ b/frontend/src/app/runBlock.js @@ -58,6 +58,8 @@ dataService.addWatchlistEntries(data.entires); } else if (data.msgtype === 'notification') { dataService.addNotificationEntries(data) +} else if (data.msgtype === 'diff_response') { + dataService.diffResponseHandler(data) } else if (data.msgtype === 'loginerror') { $log.error('login failed!'); @@ -75,7 +77,7 @@ }); }); } else { - $log.error(data); +
[MediaWiki-commits] [Gerrit] Cleanup css files - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Cleanup css files .. Cleanup css files Change-Id: I93ad4d9a6d5adb12ec71554701a429692e297fab --- A frontend/src/app/browserfixes.css M frontend/src/app/index.css A frontend/src/app/mediawiki.css 3 files changed, 176 insertions(+), 186 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/app/browserfixes.css b/frontend/src/app/browserfixes.css new file mode 100644 index 000..0ee5f87 --- /dev/null +++ b/frontend/src/app/browserfixes.css @@ -0,0 +1,37 @@ +/*** Browser fixes ***/ +::-webkit-input-placeholder { /* WebKit browsers */ + color:rgba(255,255,255,0.87); +} +::-moz-placeholder { /* Mozilla Firefox 19+ */ + color:rgba(255,255,255,0.87); + opacity: 1; +} +:-ms-input-placeholder { /* Internet Explorer 10+ */ + color:rgba(255,255,255,0.87); +} + +/*** IE fixes ***/ +.browsehappy { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} + +a img{ + border: 0; +} + +/* https://github.com/angular/material/issues/2213 */ +@media screen and (min-width:0\0) { + md-select .md-select-icon { +float: right; + } +} + +/* https://github.com/angular/material/issues/2769 */ +_:-ms-fullscreen, :root /* IE11+ */ md-select-label :first-child{ + flex-basis: auto; + max-width: 100%; + overflow: hidden; +} diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 7d7131a..586a456 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -37,26 +37,10 @@ min-width:100%; } -/* https://github.com/angular/material/issues/3283 should be fixed in material 0.11.0 */ -.md-scroll-mask { - z-index: 0 !important; -} - md-input-container.md-default-theme .md-input { color: rgba(255,255,255,0.87); border-color: rgba(255,255,255,0.87); margin-top: 24px; -} -/*** Browser fixes ***/ -::-webkit-input-placeholder { /* WebKit browsers */ - color:rgba(255,255,255,0.87); -} -::-moz-placeholder { /* Mozilla Firefox 19+ */ - color:rgba(255,255,255,0.87); - opacity: 1; -} -:-ms-input-placeholder { /* Internet Explorer 10+ */ - color:rgba(255,255,255,0.87); } md-divider[role=vertical] { @@ -65,14 +49,7 @@ border-left-color: rgba(0, 0, 0, 0.12); } -/* Should be fixed in ngMaterial 0.10 -md-select.md-default-theme:not([disabled]):focus .md-select-label { - color: white; -} -*/ - a { - /*color: #106CC8;*/ color: #0645ad; text-decoration: none; font-weight: 400; @@ -84,7 +61,6 @@ transition: border-bottom 0.25s; } a:hover, a:focus { - /*border-bottom: 1px solid #4054B2;*/ border-bottom: 1px solid #0645ad; } a.md-button { @@ -165,144 +141,6 @@ font-weight: bold; } - -/** Styles imported from MediaWiki CSS **/ -.mw-title -{ - font-weight: bold; -} - -.mw-echo-notification{ - list-style: none none; -} -.mw-echo-notifications{ - margin:0; - padding:0; - list-style: none none; - overflow:auto; - background-color: rgb(238, 238,238); -} -.mw-echo-notification-wrapper { - display: block; - background-color: rgb(241, 241, 241); - border-bottom: 1px solid rgb(221, 221, 221); - padding: 15px 40px 10px 10px; - white-space: normal; - font-size: 13px; - line-height: 16px; - color: inherit; - text-decoration: inherit; -} -.mw-echo-icon { - width: 30px; - height: 30px; - float: left; - margin-right: 10px; - margin-left: 10px; -} -.mw-echo-content { - font-size: 13px; - font-weight:normal; - line-height: 16px; - overflow: hidden; -} - -/*! - * Diff rendering - */ -table.diff { - border: none; - border-spacing: 4px; - margin: 0; - width: 100%; - /* Ensure that colums are of equal width */ - table-layout: fixed; -} - -table.diff td { - padding: 0.33em 0.5em; -} - -table.diff td.diff-marker { - /* Compensate padding for increased font-size */ - padding: 0.25em; -} - -table.diff col.diff-marker { - width: 2%; -} - -table.diff col.diff-content { - width: 48%; -} - -table.diff td div { - /* Force-wrap very long lines such as URLs or page-widening char strings */ - word-wrap: break-word; -} - -td.diff-otitle, -td.diff-ntitle { - text-align: center; -} - -td.diff-lineno { - font-weight: bold; -} - -td.diff-marker { - text-align: right; - font-weight: bold; - font-size: 1.25em; - line-height: 1.2; -} - -td.diff-addedline, -td.diff-deletedline, -td.diff-context { - font-size: 88%; - line-height: 1.6; - vertical-align: top; - white-space: -moz-pre-wrap; - white-space: pre-wrap; - border-style: solid; - border-width: 1px 1px 1px 4px; - border-radius: 0.33em; -} - -td.diff-addedline { - border-color: #a3d3ff; -} - -td.diff-deletedline { - border-color: #ffe49c; -} - -td.diff-context { - background: #f9f9f9; - border-color: #e6e6e6; - color: #33; -} - -.diffchange { - font-weight: bold; - text-decoration: none; -} - -td.diff-addedline .diffchange, -td.diff-deletedline
[MediaWiki-commits] [Gerrit] Cleanup css files - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/223811 Change subject: Cleanup css files .. Cleanup css files Change-Id: I93ad4d9a6d5adb12ec71554701a429692e297fab --- A frontend/src/app/browserfixes.css M frontend/src/app/index.css A frontend/src/app/mediawiki.css 3 files changed, 176 insertions(+), 186 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/11/223811/1 diff --git a/frontend/src/app/browserfixes.css b/frontend/src/app/browserfixes.css new file mode 100644 index 000..0ee5f87 --- /dev/null +++ b/frontend/src/app/browserfixes.css @@ -0,0 +1,37 @@ +/*** Browser fixes ***/ +::-webkit-input-placeholder { /* WebKit browsers */ + color:rgba(255,255,255,0.87); +} +::-moz-placeholder { /* Mozilla Firefox 19+ */ + color:rgba(255,255,255,0.87); + opacity: 1; +} +:-ms-input-placeholder { /* Internet Explorer 10+ */ + color:rgba(255,255,255,0.87); +} + +/*** IE fixes ***/ +.browsehappy { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} + +a img{ + border: 0; +} + +/* https://github.com/angular/material/issues/2213 */ +@media screen and (min-width:0\0) { + md-select .md-select-icon { +float: right; + } +} + +/* https://github.com/angular/material/issues/2769 */ +_:-ms-fullscreen, :root /* IE11+ */ md-select-label :first-child{ + flex-basis: auto; + max-width: 100%; + overflow: hidden; +} diff --git a/frontend/src/app/index.css b/frontend/src/app/index.css index 7d7131a..586a456 100644 --- a/frontend/src/app/index.css +++ b/frontend/src/app/index.css @@ -37,26 +37,10 @@ min-width:100%; } -/* https://github.com/angular/material/issues/3283 should be fixed in material 0.11.0 */ -.md-scroll-mask { - z-index: 0 !important; -} - md-input-container.md-default-theme .md-input { color: rgba(255,255,255,0.87); border-color: rgba(255,255,255,0.87); margin-top: 24px; -} -/*** Browser fixes ***/ -::-webkit-input-placeholder { /* WebKit browsers */ - color:rgba(255,255,255,0.87); -} -::-moz-placeholder { /* Mozilla Firefox 19+ */ - color:rgba(255,255,255,0.87); - opacity: 1; -} -:-ms-input-placeholder { /* Internet Explorer 10+ */ - color:rgba(255,255,255,0.87); } md-divider[role=vertical] { @@ -65,14 +49,7 @@ border-left-color: rgba(0, 0, 0, 0.12); } -/* Should be fixed in ngMaterial 0.10 -md-select.md-default-theme:not([disabled]):focus .md-select-label { - color: white; -} -*/ - a { - /*color: #106CC8;*/ color: #0645ad; text-decoration: none; font-weight: 400; @@ -84,7 +61,6 @@ transition: border-bottom 0.25s; } a:hover, a:focus { - /*border-bottom: 1px solid #4054B2;*/ border-bottom: 1px solid #0645ad; } a.md-button { @@ -165,144 +141,6 @@ font-weight: bold; } - -/** Styles imported from MediaWiki CSS **/ -.mw-title -{ - font-weight: bold; -} - -.mw-echo-notification{ - list-style: none none; -} -.mw-echo-notifications{ - margin:0; - padding:0; - list-style: none none; - overflow:auto; - background-color: rgb(238, 238,238); -} -.mw-echo-notification-wrapper { - display: block; - background-color: rgb(241, 241, 241); - border-bottom: 1px solid rgb(221, 221, 221); - padding: 15px 40px 10px 10px; - white-space: normal; - font-size: 13px; - line-height: 16px; - color: inherit; - text-decoration: inherit; -} -.mw-echo-icon { - width: 30px; - height: 30px; - float: left; - margin-right: 10px; - margin-left: 10px; -} -.mw-echo-content { - font-size: 13px; - font-weight:normal; - line-height: 16px; - overflow: hidden; -} - -/*! - * Diff rendering - */ -table.diff { - border: none; - border-spacing: 4px; - margin: 0; - width: 100%; - /* Ensure that colums are of equal width */ - table-layout: fixed; -} - -table.diff td { - padding: 0.33em 0.5em; -} - -table.diff td.diff-marker { - /* Compensate padding for increased font-size */ - padding: 0.25em; -} - -table.diff col.diff-marker { - width: 2%; -} - -table.diff col.diff-content { - width: 48%; -} - -table.diff td div { - /* Force-wrap very long lines such as URLs or page-widening char strings */ - word-wrap: break-word; -} - -td.diff-otitle, -td.diff-ntitle { - text-align: center; -} - -td.diff-lineno { - font-weight: bold; -} - -td.diff-marker { - text-align: right; - font-weight: bold; - font-size: 1.25em; - line-height: 1.2; -} - -td.diff-addedline, -td.diff-deletedline, -td.diff-context { - font-size: 88%; - line-height: 1.6; - vertical-align: top; - white-space: -moz-pre-wrap; - white-space: pre-wrap; - border-style: solid; - border-width: 1px 1px 1px 4px; - border-radius: 0.33em; -} - -td.diff-addedline { - border-color: #a3d3ff; -} - -td.diff-deletedline { - border-color: #ffe49c; -} - -td.diff-context { - background: #f9f9f9; - border-color: #e6e6e6; - color: #33; -} - -.diffchange { - font-weight: bold; - text-decoration:
[MediaWiki-commits] [Gerrit] Fix logevent isolate scope - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/223350 Change subject: Fix logevent isolate scope .. Fix logevent isolate scope Scope for logevents was not properly isolated, causing it to overwrite the parent scope. Change-Id: I1d1f797edc4b26636339b84504c7206cf028d036 --- M frontend/src/components/watchlist/logevent.directive.js M frontend/src/components/watchlist/user.directive.js 2 files changed, 5 insertions(+), 6 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/50/223350/1 diff --git a/frontend/src/components/watchlist/logevent.directive.js b/frontend/src/components/watchlist/logevent.directive.js index 1154cf0..a9fc168 100644 --- a/frontend/src/components/watchlist/logevent.directive.js +++ b/frontend/src/components/watchlist/logevent.directive.js @@ -5,7 +5,6 @@ function watchlistLogevent() { var directive = { link: link, -scope: true, templateUrl: 'components/watchlist/logevent.directive.html', restrict: 'E' }; diff --git a/frontend/src/components/watchlist/user.directive.js b/frontend/src/components/watchlist/user.directive.js index c5220f8..8390640 100644 --- a/frontend/src/components/watchlist/user.directive.js +++ b/frontend/src/components/watchlist/user.directive.js @@ -6,9 +6,9 @@ var directive = { link: link, scope: true, -template: 'a href={{::event.projecturl}}/wiki/User:{{::event.user | urlEncode}} target=_blank{{::event.user}}/a ' + +template: 'a href={{::event.projecturl}}/wiki/User:{{::user | urlEncode}} target=_blank{{::user}}/a ' + 'span ng-if=event.clicked' + -'(a stop-event href={{::event.projecturl}}/wiki/Special:Contributions/{{::event.user | urlEncode}} target=_blank translate=CONTRIBS/a)' + +'(a stop-event href={{::event.projecturl}}/wiki/Special:Contributions/{{::user | urlEncode}} target=_blank translate=CONTRIBS/a)' + '/span', restrict: 'E' }; @@ -16,9 +16,9 @@ function link(scope, element, attrs) { if (typeof attrs.name !== 'undefined') { - scope.event.user = attrs.name; + scope.user = attrs.name; +} else { + scope.user = scope.event.user; } - -scope.event.user = scope.event.user.replace(User:, ); } } -- To view, visit https://gerrit.wikimedia.org/r/223350 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1d1f797edc4b26636339b84504c7206cf028d036 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix logevent isolate scope - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix logevent isolate scope .. Fix logevent isolate scope Scope for logevents was not properly isolated, causing it to overwrite the parent scope. Change-Id: I1d1f797edc4b26636339b84504c7206cf028d036 --- M frontend/src/components/watchlist/logevent.directive.js M frontend/src/components/watchlist/user.directive.js 2 files changed, 5 insertions(+), 6 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/components/watchlist/logevent.directive.js b/frontend/src/components/watchlist/logevent.directive.js index 1154cf0..a9fc168 100644 --- a/frontend/src/components/watchlist/logevent.directive.js +++ b/frontend/src/components/watchlist/logevent.directive.js @@ -5,7 +5,6 @@ function watchlistLogevent() { var directive = { link: link, -scope: true, templateUrl: 'components/watchlist/logevent.directive.html', restrict: 'E' }; diff --git a/frontend/src/components/watchlist/user.directive.js b/frontend/src/components/watchlist/user.directive.js index c5220f8..8390640 100644 --- a/frontend/src/components/watchlist/user.directive.js +++ b/frontend/src/components/watchlist/user.directive.js @@ -6,9 +6,9 @@ var directive = { link: link, scope: true, -template: 'a href={{::event.projecturl}}/wiki/User:{{::event.user | urlEncode}} target=_blank{{::event.user}}/a ' + +template: 'a href={{::event.projecturl}}/wiki/User:{{::user | urlEncode}} target=_blank{{::user}}/a ' + 'span ng-if=event.clicked' + -'(a stop-event href={{::event.projecturl}}/wiki/Special:Contributions/{{::event.user | urlEncode}} target=_blank translate=CONTRIBS/a)' + +'(a stop-event href={{::event.projecturl}}/wiki/Special:Contributions/{{::user | urlEncode}} target=_blank translate=CONTRIBS/a)' + '/span', restrict: 'E' }; @@ -16,9 +16,9 @@ function link(scope, element, attrs) { if (typeof attrs.name !== 'undefined') { - scope.event.user = attrs.name; + scope.user = attrs.name; +} else { + scope.user = scope.event.user; } - -scope.event.user = scope.event.user.replace(User:, ); } } -- To view, visit https://gerrit.wikimedia.org/r/223350 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1d1f797edc4b26636339b84504c7206cf028d036 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix pt translation - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Fix pt translation .. Fix pt translation By request from he7d3r. Change-Id: If0c4e1580568b4f32cc4926ef36305b4249387e6 --- M frontend/src/i18n/locale-pt.json 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/frontend/src/i18n/locale-pt.json b/frontend/src/i18n/locale-pt.json index 18f8afc..fd10e12 100644 --- a/frontend/src/i18n/locale-pt.json +++ b/frontend/src/i18n/locale-pt.json @@ -5,7 +5,7 @@ SIGN_IN: Entrar, SIGN_OUT: Sair, DESCRIPTION: Uma lista de páginas vigiadas aprimorada para os projetos Wikimedia., - SIGN_IN_BUTTON: Enrar com OAuth, + SIGN_IN_BUTTON: Entrar com OAuth, MINOREDIT_FLAG: m, BOTEDIT_FLAG: b, NEWPAGE_FLAG: N -- To view, visit https://gerrit.wikimedia.org/r/222621 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: If0c4e1580568b4f32cc4926ef36305b4249387e6 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Fix pt translation - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/222621 Change subject: Fix pt translation .. Fix pt translation By request from he7d3r. Change-Id: If0c4e1580568b4f32cc4926ef36305b4249387e6 --- M frontend/src/i18n/locale-pt.json 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/21/222621/1 diff --git a/frontend/src/i18n/locale-pt.json b/frontend/src/i18n/locale-pt.json index 18f8afc..fd10e12 100644 --- a/frontend/src/i18n/locale-pt.json +++ b/frontend/src/i18n/locale-pt.json @@ -5,7 +5,7 @@ SIGN_IN: Entrar, SIGN_OUT: Sair, DESCRIPTION: Uma lista de páginas vigiadas aprimorada para os projetos Wikimedia., - SIGN_IN_BUTTON: Enrar com OAuth, + SIGN_IN_BUTTON: Entrar com OAuth, MINOREDIT_FLAG: m, BOTEDIT_FLAG: b, NEWPAGE_FLAG: N -- To view, visit https://gerrit.wikimedia.org/r/222621 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If0c4e1580568b4f32cc4926ef36305b4249387e6 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Use webservice-new insead of portgrabber - change (labs...crosswatch)
Sitic has submitted this change and it was merged. Change subject: Use webservice-new insead of portgrabber .. Use webservice-new insead of portgrabber What could possibly go wrong? Change-Id: I7ca6c6bf5606ce43b5c674538d0f3c819a16d5d1 --- D scripts/_sge_webserver.sh M scripts/restart_webserver.sh M scripts/start_webserver.sh D scripts/stop_webserver.sh R scripts/webserver.sh 5 files changed, 2 insertions(+), 15 deletions(-) Approvals: Sitic: Verified; Looks good to me, approved diff --git a/scripts/_sge_webserver.sh b/scripts/_sge_webserver.sh deleted file mode 100755 index 411df8d..000 --- a/scripts/_sge_webserver.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -cd `dirname $0` -exec portgrabber crosswatch ./_sge_webserver_internal.sh diff --git a/scripts/restart_webserver.sh b/scripts/restart_webserver.sh index ef5abe6..02bb0cc 100755 --- a/scripts/restart_webserver.sh +++ b/scripts/restart_webserver.sh @@ -1,7 +1,2 @@ #!/bin/bash -cd `dirname $0` -./stop_webserver.sh -while [ $(qstat -q webgrid-generic | wc -l) -ge 3 ]; do -sleep 1 -done -./start_webserver.sh +webservice-new restart diff --git a/scripts/start_webserver.sh b/scripts/start_webserver.sh index a045a1a..28a3e5d 100755 --- a/scripts/start_webserver.sh +++ b/scripts/start_webserver.sh @@ -1,4 +1,3 @@ #!/bin/bash cd `dirname $0` -echo starting webserver -jstart -N tornado-crosswatch -once -q webgrid-generic -l release=trusty -mem 3G ./_sge_webserver.sh +webservice-new generic start $PWD/webserver.sh diff --git a/scripts/stop_webserver.sh b/scripts/stop_webserver.sh deleted file mode 100755 index fa634d7..000 --- a/scripts/stop_webserver.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -echo stopping webserver -qstat -q webgrid-generic | awk '{ if ($1~/[0-9]+/) cmd=qdel $1; system(cmd); close(cmd)}' diff --git a/scripts/_sge_webserver_internal.sh b/scripts/webserver.sh similarity index 87% rename from scripts/_sge_webserver_internal.sh rename to scripts/webserver.sh index 0d22884..cca236b 100755 --- a/scripts/_sge_webserver_internal.sh +++ b/scripts/webserver.sh @@ -2,5 +2,4 @@ source $HOME/.virtualenvs/backend/bin/activate cd `dirname $0` cd .. -export PORT=$1 python -m backend $PORT -- To view, visit https://gerrit.wikimedia.org/r/222510 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7ca6c6bf5606ce43b5c674538d0f3c819a16d5d1 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de Gerrit-Reviewer: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Use webservice-new insead of portgrabber - change (labs...crosswatch)
Sitic has uploaded a new change for review. https://gerrit.wikimedia.org/r/222510 Change subject: Use webservice-new insead of portgrabber .. Use webservice-new insead of portgrabber What could possibly go wrong? Change-Id: I7ca6c6bf5606ce43b5c674538d0f3c819a16d5d1 --- D scripts/_sge_webserver.sh M scripts/restart_webserver.sh M scripts/start_webserver.sh D scripts/stop_webserver.sh R scripts/webserver.sh 5 files changed, 2 insertions(+), 15 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/tools/crosswatch refs/changes/10/222510/1 diff --git a/scripts/_sge_webserver.sh b/scripts/_sge_webserver.sh deleted file mode 100755 index 411df8d..000 --- a/scripts/_sge_webserver.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -cd `dirname $0` -exec portgrabber crosswatch ./_sge_webserver_internal.sh diff --git a/scripts/restart_webserver.sh b/scripts/restart_webserver.sh index ef5abe6..02bb0cc 100755 --- a/scripts/restart_webserver.sh +++ b/scripts/restart_webserver.sh @@ -1,7 +1,2 @@ #!/bin/bash -cd `dirname $0` -./stop_webserver.sh -while [ $(qstat -q webgrid-generic | wc -l) -ge 3 ]; do -sleep 1 -done -./start_webserver.sh +webservice-new restart diff --git a/scripts/start_webserver.sh b/scripts/start_webserver.sh index a045a1a..28a3e5d 100755 --- a/scripts/start_webserver.sh +++ b/scripts/start_webserver.sh @@ -1,4 +1,3 @@ #!/bin/bash cd `dirname $0` -echo starting webserver -jstart -N tornado-crosswatch -once -q webgrid-generic -l release=trusty -mem 3G ./_sge_webserver.sh +webservice-new generic start $PWD/webserver.sh diff --git a/scripts/stop_webserver.sh b/scripts/stop_webserver.sh deleted file mode 100755 index fa634d7..000 --- a/scripts/stop_webserver.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -echo stopping webserver -qstat -q webgrid-generic | awk '{ if ($1~/[0-9]+/) cmd=qdel $1; system(cmd); close(cmd)}' diff --git a/scripts/_sge_webserver_internal.sh b/scripts/webserver.sh similarity index 87% rename from scripts/_sge_webserver_internal.sh rename to scripts/webserver.sh index 0d22884..cca236b 100755 --- a/scripts/_sge_webserver_internal.sh +++ b/scripts/webserver.sh @@ -2,5 +2,4 @@ source $HOME/.virtualenvs/backend/bin/activate cd `dirname $0` cd .. -export PORT=$1 python -m backend $PORT -- To view, visit https://gerrit.wikimedia.org/r/222510 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7ca6c6bf5606ce43b5c674538d0f3c819a16d5d1 Gerrit-PatchSet: 1 Gerrit-Project: labs/tools/crosswatch Gerrit-Branch: master Gerrit-Owner: Sitic jan.leb...@online.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits