[MediaWiki-commits] [Gerrit] AJAXify watchlist editor - change (mediawiki/core)

2013-05-11 Thread Matmarex (Code Review)
Matmarex has uploaded a new change for review.

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


Change subject: AJAXify watchlist editor
..

AJAXify watchlist editor

Removing items from watchlist is now done with AJAX API calls.

Split from If993f6e8.

Bug: 32151
Change-Id: Icf7c581e238d3b29f7e50ae8b739b6831942c4a0
---
M includes/specials/SpecialEditWatchlist.php
M languages/messages/MessagesEn.php
M languages/messages/MessagesQqq.php
M maintenance/language/messages.inc
M resources/Resources.php
5 files changed, 15 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/74/63274/1

diff --git a/includes/specials/SpecialEditWatchlist.php 
b/includes/specials/SpecialEditWatchlist.php
index 58f715b..a8305ce 100644
--- a/includes/specials/SpecialEditWatchlist.php
+++ b/includes/specials/SpecialEditWatchlist.php
@@ -114,6 +114,7 @@
case self::EDIT_NORMAL:
default:
$out-setPageTitle( $this-msg( 
'watchlistedit-normal-title' ) );
+   $out-addModules( 
'mediawiki.special.editWatchlist' );
$form = $this-getNormalForm();
if ( $form-show() ) {
$out-addHTML( $this-successMessage );
diff --git a/languages/messages/MessagesEn.php 
b/languages/messages/MessagesEn.php
index 79a0a93..88cdc2a 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
@@ -4678,6 +4678,7 @@
 To remove a title, check the box next to it, and click 
{{int:Watchlistedit-normal-submit}}.
 You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'watchlistedit-normal-submit'  = 'Remove titles',
+'watchlistedit-normal-submitting'  = 'Removing titles...',
 'watchlistedit-normal-done'= '{{PLURAL:$1|1 title was|$1 titles were}} 
removed from your watchlist:',
 'watchlistedit-raw-title'  = 'Edit raw watchlist',
 'watchlistedit-raw-legend' = 'Edit raw watchlist',
diff --git a/languages/messages/MessagesQqq.php 
b/languages/messages/MessagesQqq.php
index 38545a1..df73403 100644
--- a/languages/messages/MessagesQqq.php
+++ b/languages/messages/MessagesQqq.php
@@ -8407,6 +8407,7 @@
 * {{msg-mw|Accesskey-watchlistedit-normal-submit}}
 * {{msg-mw|Tooltip-watchlistedit-normal-submit}}',
 'watchlistedit-normal-done' = 'Message on [[Special:EditWatchlist]] after 
pages are removed from the watchlist.',
+'watchlistedit-normal-submitting' = 'Text of submit button on 
[[Special:Watchlist/edit]] when submiting an AJAX request',
 'watchlistedit-raw-title' = 'Title of [[Special:Watchlist/raw|Special page]].
 
 {{Identical|Edit raw watchlist}}',
diff --git a/maintenance/language/messages.inc 
b/maintenance/language/messages.inc
index b99cce0..b778ab6 100644
--- a/maintenance/language/messages.inc
+++ b/maintenance/language/messages.inc
@@ -3534,6 +3534,7 @@
'watchlistedit-normal-legend',
'watchlistedit-normal-explain',
'watchlistedit-normal-submit',
+   'watchlistedit-normal-submiting',
'watchlistedit-normal-done',
'watchlistedit-raw-title',
'watchlistedit-raw-legend',
diff --git a/resources/Resources.php b/resources/Resources.php
index 0d8b330..8960f79 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -901,6 +901,17 @@
'styles' = 
'resources/mediawiki.special/mediawiki.special.changeslist.css',
'dependencies' = array( 'jquery.makeCollapsible' ),
),
+   'mediawiki.special.editWatchlist' = array(
+   'scripts' = 
'resources/mediawiki.special/mediawiki.special.editWatchlist.js',
+   'dependencies' = array(
+   'mediawiki.api',
+   'user.tokens'
+   ),
+   'messages' = array(
+   'watchlistedit-normal-submit',
+   'watchlistedit-normal-submiting'
+   )
+   ),
'mediawiki.special.movePage' = array(
'scripts' = 
'resources/mediawiki.special/mediawiki.special.movePage.js',
'dependencies' = 'jquery.byteLimit',

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icf7c581e238d3b29f7e50ae8b739b6831942c4a0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Matmarex matma@gmail.com
Gerrit-Reviewer: Eranroz eranro...@gmail.com

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


[MediaWiki-commits] [Gerrit] AJAXify watchlist editor - change (mediawiki/core)

2013-03-15 Thread Eranroz (Code Review)
Eranroz has uploaded a new change for review.

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


Change subject: AJAXify watchlist editor
..

AJAXify watchlist editor

This patch makes the watchlist editor to use pagination. That would
avoid old browsers crashing (bug 20483).
Patch also add some AJAX operations to the editor, for example to remove
items from watchlist (bug 32151).

Splitted from: 17216
See also: 53964

Change-Id: I11451c334fba008040b6a3c64b6344b2fc2b6887
---
M includes/specials/SpecialEditWatchlist.php
M languages/messages/MessagesEn.php
M languages/messages/MessagesQqq.php
M maintenance/language/messages.inc
M resources/Resources.php
A resources/mediawiki.special/mediawiki.special.editWatchlist.js
6 files changed, 108 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/68/53968/1

diff --git a/includes/specials/SpecialEditWatchlist.php 
b/includes/specials/SpecialEditWatchlist.php
index d2838e0..9b4aaa4 100644
--- a/includes/specials/SpecialEditWatchlist.php
+++ b/includes/specials/SpecialEditWatchlist.php
@@ -43,6 +43,8 @@
const EDIT_RAW = 2;
const EDIT_NORMAL = 3;
 
+   protected $offset = 0;
+   protected $limit = 0;
protected $successMessage;
 
protected $toc;
@@ -93,6 +95,7 @@
}
}
$mode = self::getMode( $this-getRequest(), $mode );
+   list( $this-limit, $this-offset ) = 
$this-getRequest()-getLimitOffset( 50, 'wllimit' );
 
switch( $mode ) {
case self::EDIT_CLEAR:
@@ -111,6 +114,7 @@
case self::EDIT_NORMAL:
default:
$out-setPageTitle( $this-msg( 
'watchlistedit-normal-title' ) );
+   $out-addModules( 
'mediawiki.special.editWatchlist' );
$form = $this-getNormalForm();
if( $form-show() ) {
$out-addHTML( $this-successMessage );
@@ -279,29 +283,42 @@
}
 
/**
+   * select from DB  watchlist items watched by the current user
+   * @return q query result of watchlist items watched by the current user
+   */
+   private function selectWatchListInfo( ) {
+   $options = array(
+   'ORDER BY' = array( 'wl_namespace', 'wl_title' ),
+   'LIMIT' = intval( $this-limit ),
+   'OFFSET' = intval( $this-offset )
+   );
+   $dbr = wfGetDB( DB_MASTER );
+   //query only non talk namespaces.
+   $nonTalkNamespaces = MWNamespace::getSubjectNamespaces();
+   $res = $dbr-select(
+   array( 'watchlist' ),
+   array( 'wl_namespace',  'wl_title' ),
+   array( 'wl_user' = $this-getUser()-getId(), 
'wl_namespace' = $nonTalkNamespaces  ),
+   __METHOD__,
+   $options
+   );
+
+   return $res;
+   }
+
+   /**
 * Get a list of titles on a user's watchlist, excluding talk pages,
 * and return as a two-dimensional array with namespace and title.
 *
+* @param $watchedItems rows of watched items
 * @return array
 */
-   private function getWatchlistInfo() {
+   private function getWatchlistInfo( $watchedItems ) {
$titles = array();
-   $dbr = wfGetDB( DB_MASTER );
-
-   $res = $dbr-select(
-   array( 'watchlist' ),
-   array( 'wl_namespace', 'wl_title' ),
-   array( 'wl_user' = $this-getUser()-getId() ),
-   __METHOD__,
-   array( 'ORDER BY' = array( 'wl_namespace', 'wl_title' 
) )
-   );
-
$lb = new LinkBatch();
-   foreach ( $res as $row ) {
+   foreach ( $watchedItems as $row ) {
$lb-add( $row-wl_namespace, $row-wl_title );
-   if ( !MWNamespace::isTalk( $row-wl_namespace ) ) {
-   $titles[$row-wl_namespace][$row-wl_title] = 1;
-   }
+   $titles[$row-wl_namespace][$row-wl_title] = 1;
}
 
$lb-execute();
@@ -477,7 +494,9 @@
$fields = array();
$count = 0;
 
-   foreach( $this-getWatchlistInfo() as $namespace = $pages ) {
+   $watchedItems = $this-selectWatchListInfo();
+   $rowNum = $watchedItems-numRows();
+   foreach ( $this-getWatchlistInfo( $watchedItems ) as 
$namespace = $pages ) {
if ( $namespace = 0 ) {
$fields['TitlesNs' . $namespace] =