Sn1per has uploaded a new change for review.

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

Change subject: [WIP] Unwatch link for pages in Special:Watchlist
......................................................................

[WIP] Unwatch link for pages in Special:Watchlist

Bug: T2424
Change-Id: I450b2901413d7e75c11de2a446829fdbb22d31e1
---
M includes/changes/EnhancedChangesList.php
M includes/specials/SpecialWatchlist.php
M resources/Resources.php
A resources/src/mediawiki.special/mediawiki.special.watchlist.autoReload.js
M resources/src/mediawiki.special/mediawiki.special.watchlist.js
5 files changed, 48 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/92/293892/1

diff --git a/includes/changes/EnhancedChangesList.php 
b/includes/changes/EnhancedChangesList.php
index 099a295..ff4e1ee 100644
--- a/includes/changes/EnhancedChangesList.php
+++ b/includes/changes/EnhancedChangesList.php
@@ -585,7 +585,12 @@
         * @return string A HTML formatted line (generated using $r)
         */
        protected function recentChangesBlockLine( $rcObj ) {
-               $data = [];
+               $data = [ Linker::linkKnown(
+                       $rcObj->getTitle(),
+                       'x',
+                       [ 'class' => 'mw-unwatch-link' ],
+                       [ 'action' => 'unwatch' ]
+               ) ];
 
                $query['curid'] = $rcObj->mAttribs['rc_cur_id'];
 
diff --git a/includes/specials/SpecialWatchlist.php 
b/includes/specials/SpecialWatchlist.php
index 58cde7e..4c06186 100644
--- a/includes/specials/SpecialWatchlist.php
+++ b/includes/specials/SpecialWatchlist.php
@@ -421,10 +421,13 @@
                $user = $this->getUser();
                $out = $this->getOutput();
 
+               // JavaScript
+               $out->addModules( [ 'mediawiki.special.watchlist' ] );
+
                // if the user wishes, that the watchlist is reloaded, whenever 
a filter changes,
                // add the module for that
                if ( $user->getBoolOption( 'watchlistreloadautomatically' ) ) {
-                       $out->addModules( [ 'mediawiki.special.watchlist' ] );
+                       $out->addModules( [ 
'mediawiki.special.watchlist.autoReload' ] );
                }
 
                $out->addSubtitle(
diff --git a/resources/Resources.php b/resources/Resources.php
index b591b28..b5afa19 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -1985,6 +1985,10 @@
        ],
        'mediawiki.special.watchlist' => [
                'scripts' => 
'resources/src/mediawiki.special/mediawiki.special.watchlist.js',
+               'dependencies' => 'mediawiki.api.watch',
+       ],
+       'mediawiki.special.watchlist.autoReload' => [
+               'scripts' => 
'resources/src/mediawiki.special/mediawiki.special.watchlist.autoReload.js',
        ],
        'mediawiki.special.version' => [
                'styles' => 
'resources/src/mediawiki.special/mediawiki.special.version.css',
diff --git 
a/resources/src/mediawiki.special/mediawiki.special.watchlist.autoReload.js 
b/resources/src/mediawiki.special/mediawiki.special.watchlist.autoReload.js
new file mode 100644
index 0000000..1304922
--- /dev/null
+++ b/resources/src/mediawiki.special/mediawiki.special.watchlist.autoReload.js
@@ -0,0 +1,15 @@
+/*
+ * JavaScript for Special:Watchlist reload on filter option change function
+ *
+ * This script is only loaded, if the user opt-in a setting in 
Special:Preferences,
+ * that the watchlist should be automatically reloaded, when a filter option is
+ * changed in the header form.
+ */
+jQuery( function ( $ ) {
+       // add a listener on all form elements in the header form
+       $( '#mw-watchlist-form input, #mw-watchlist-form select' ).on( 
'change', function () {
+               // submit the form, when one of the input fields was changed
+               $( '#mw-watchlist-form' ).submit();
+       } );
+
+} );
diff --git a/resources/src/mediawiki.special/mediawiki.special.watchlist.js 
b/resources/src/mediawiki.special/mediawiki.special.watchlist.js
index a35f4d1..57cb4ff 100644
--- a/resources/src/mediawiki.special/mediawiki.special.watchlist.js
+++ b/resources/src/mediawiki.special/mediawiki.special.watchlist.js
@@ -1,15 +1,24 @@
-/*!
+/*
  * JavaScript for Special:Watchlist
- *
- * This script is only loaded, if the user opt-in a setting in 
Special:Preferences,
- * that the watchlist should be automatically reloaded, when a filter option is
- * changed in the header form.
  */
-jQuery( function ( $ ) {
+( function ( mw, $ ) {
        // add a listener on all form elements in the header form
-       $( '#mw-watchlist-form input, #mw-watchlist-form select' ).on( 
'change', function () {
-               // submit the form, when one of the input fields was changed
-               $( '#mw-watchlist-form' ).submit();
+       $( '.mw-unwatch-link' ).click( function ( event ) {
+               var $unwatchLink = $( event.toElement ),
+                       $watchlistLine = $unwatchLink.parent(),
+                       $title = $watchlistLine.find( '.mw-title' ),
+                       pageTitle = $title.text(),
+                       api = new mw.Api();
+
+               event.preventDefault();
+               event.stopPropagation();
+
+               api[ 'unwatch' ]( pageTitle )
+                       .done( function () {
+                               $watchlistLine.text( 'Removed' );
+                       } );
+
+
        } );
 
-} );
+}( mediaWiki, jQuery ) );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I450b2901413d7e75c11de2a446829fdbb22d31e1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Sn1per <geof...@gmail.com>

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

Reply via email to