http://www.mediawiki.org/wiki/Special:Code/MediaWiki/84582

Revision: 84582
Author:   krinkle
Date:     2011-03-22 23:12:31 +0000 (Tue, 22 Mar 2011)
Log Message:
-----------
Refactor FlaggedRevs modules:
* Rename "$dir" to "$localModulePath" (more descriptive)
* Add a variable for the remote path (just as important)
* Some ResourceLoader-ish standardizing (renamed /client to /modules)
* Rewrite flaggedrevs.js

== Rewrite flaggedrevs.js ==
* Using new solid and centrally maintained utility functions where possible 
(mediaWiki and jQuery library)
* Performance improvements by not recreating the same jQuery object over again 
(especially with large html-strings this can slow down browsers as it has to 
parse it again and again, re-creating the dom elements. I've cached the result 
like: <code> $result = jQuery(result); ... $result .. $result</code> instead of 
<code> jQuery(result) ... jQuery(result) ... jQuery(result) ...</code>.
* Cleaning up global scope by defining variables locally with 'var' keyword if 
they're only needed locally (instead of implying them globally). ie 
"languageshtml = .." -> "var languageshtml = .."
* Consistent whitespace and quote usage (mixed tabs/spaces, mixed double/single 
quotes). Choose tabs, single quotes and curly brackets ?\226?\128?\147 per our 
[[Code conventions]].
* Cleaned up some trailing whitespace in all FlaggedRevs JS/CSS files
* Passing an object instead of a string to 'data' in $.ajax
* Using the JSON format of XML from the MediaWiki API (native JS object is 
faster)
* Using jQuery.fn.append instead of "innerHTML +=". The latter doesn't append 
but removes old content and replaces it with old+new. In other words everything 
that was added and parsed will be droppend and re-rendered. See also 
http://jsperf.com/innerhtml-vs-append for comparison (big performance increase! 
up to 700 times). Previously this meant that when adding "languageshtml" to 
#mw-fr-revisioncontents it actually deletes the just parsed "parse.text" from 
#mw-fr-revisioncontents and re-renders it (this time including languageshtml. 
(especially on larger articles this can save about half a second on-load).
* Fixing bug that put' #catlinks out of place. Instead of appending it to 
#mw-fr-revisioncontents (causing it to always end up in the wrong place on 
File-pages. And if MW-debug mode is enabled on all other pages as well). Fixed 
by using jQuery.fn.replaceWith on the already present by default (albeit 
hidden/empty) #catlinks element.
* * --> This also fixes the HTML Warning that some consoles/debuggers gave that 
there were two elements with id "catlinks"
* Using mw.html.escape when adding concatenating raw html strings.
* Replacing uses of deprecated javascript with their future successors (wgVars 
-> mw.config)
* Using mw instead of mediaWiki. It's globally available and does not require 
mapping over.
* Reducing (implied) global variables from: mediaWiki, FlaggedRevs, 
wgRevContents, $, jQuery, wgScriptPath, contents, categoryhtml, languageshtml 
and $headitems
  To: mw and jQuery
* Removed unused "var timeoutId = null;"
* Removed addition of 'headitems'. (This reverts the FIXME-marked r83552)
  'headitems' also includes resources unrelated to FlaggedRevs.
  Loading those causes mediaWiki, jQuery, etc. to be redefined which brakes the 
page
  and in some browsers blanks the page. Removed it due to those problems. See 
also r83552 code review comments.
* Passes JSHint :-)

Modified Paths:
--------------
    trunk/extensions/FlaggedRevs/FlaggedRevs.class.php
    trunk/extensions/FlaggedRevs/FlaggedRevs.php
    trunk/extensions/FlaggedRevs/modules/flaggedrevs.css
    trunk/extensions/FlaggedRevs/modules/flaggedrevs.js
    trunk/extensions/FlaggedRevs/modules/review.js

Added Paths:
-----------
    trunk/extensions/FlaggedRevs/modules/

Removed Paths:
-------------
    trunk/extensions/FlaggedRevs/client/

Modified: trunk/extensions/FlaggedRevs/FlaggedRevs.class.php
===================================================================
--- trunk/extensions/FlaggedRevs/FlaggedRevs.class.php  2011-03-22 23:07:21 UTC 
(rev 84581)
+++ trunk/extensions/FlaggedRevs/FlaggedRevs.class.php  2011-03-22 23:12:31 UTC 
(rev 84582)
@@ -375,12 +375,12 @@
        }
        
        /**
-        * Get the URL path to /client (has JS, CSS, & icons)
+        * Get the URL path to where the client side resources are (JS, CSS, 
images..)
         * @return string
         */
        public static function styleUrlPath() {
                global $wgExtensionAssetsPath;
-               return "$wgExtensionAssetsPath/FlaggedRevs/client";
+               return "$wgExtensionAssetsPath/FlaggedRevs/modules";
        }
 
        # ################ Permission functions #################       
@@ -1273,7 +1273,7 @@
                ) );
                $flaggedRevision->insertOn( $auto );
                # Update the article review log
-               FlaggedRevsLogs::updateReviewLog( $title,
+               FlaggedRevsLogs::updateLog( $title,
                        $flags, array(), '', $rev->getId(), $oldSvId, true, 
$auto );
 
                # Update page and tracking tables and clear cache

Modified: trunk/extensions/FlaggedRevs/FlaggedRevs.php
===================================================================
--- trunk/extensions/FlaggedRevs/FlaggedRevs.php        2011-03-22 23:07:21 UTC 
(rev 84581)
+++ trunk/extensions/FlaggedRevs/FlaggedRevs.php        2011-03-22 23:12:31 UTC 
(rev 84582)
@@ -347,7 +347,8 @@
 $wgDefaultUserOptions['flaggedrevsviewdiffs'] = false;
 
 # JS/CSS modules and message bundles used by JS scripts
-$dir = dirname( __FILE__ ) . '/client/';
+$localModulePath = dirname( __FILE__ ) . '/modules/';
+$remoteModulePath = 'FlaggedRevs/modules';
 $wgResourceModules['ext.flaggedRevs.basic'] = array(
        'styles'                => array( 'flaggedrevs.css' ),
        'scripts'               => array( 'flaggedrevs.js' ),
@@ -357,9 +358,9 @@
                'revreview-log-toggle-show', 'revreview-log-toggle-hide',
                'revreview-log-details-show', 'revreview-log-details-hide'
        ),
-       'dependencies'  => array( 'jquery', 'mediawiki.util' ),
-       'localBasePath' => $dir,
-       'remoteExtPath' => 'FlaggedRevs/client'
+       'dependencies'  => array( 'mediawiki.util' ),
+       'localBasePath' => $localModulePath,
+       'remoteExtPath' => $remoteModulePath,
 );
 $wgResourceModules['ext.flaggedRevs.review'] = array(
        'scripts'               => array( 'review.js' ),
@@ -370,9 +371,9 @@
                'revreview-submit-reviewed', 'revreview-submit-unreviewed',
                'revreview-submitting', 'actioncomplete', 'actionfailed'
        ),
-       'dependencies'  => array( 'jquery', 'mediawiki.util' ),
-       'localBasePath' => $dir,
-       'remoteExtPath' => 'FlaggedRevs/client'
+       'dependencies'  => array( 'mediawiki.util' ),
+       'localBasePath' => $localModulePath,
+       'remoteExtPath' => $remoteModulePath,
 );
 
 # ####### HOOK TRIGGERED FUNCTIONS  #########

Modified: trunk/extensions/FlaggedRevs/modules/flaggedrevs.css
===================================================================
--- trunk/extensions/FlaggedRevs/client/flaggedrevs.css 2011-03-22 23:07:21 UTC 
(rev 84581)
+++ trunk/extensions/FlaggedRevs/modules/flaggedrevs.css        2011-03-22 
23:12:31 UTC (rev 84582)
@@ -1,4 +1,7 @@
-/* -- (c) Aaron Schulz */
+/**
+ * FlaggedRevs Stylesheet
+ * @author Aaron Schulz
+ */
 
 /* Standard User Interface */
 div.flaggedrevs_basic,
@@ -80,7 +83,7 @@
 .fr-marker-80,
 .fr-marker-100 {
        background-position: bottom left;
-       background-repeat: no-repeat;    
+       background-repeat: no-repeat;
        padding-bottom: 3px;
 }
 
@@ -347,10 +350,8 @@
        display: none;
 }
 
-.loading { 
-       display: block;
-       color: #666666; 
-       padding-left: 40px;
+.loading {     display: block;
+       color: #666666; padding-left: 40px;
        height: 32px;
 }
 .spinner {
@@ -364,4 +365,4 @@
        margin-top: 1em;
        padding: 5px;
        border: 1px solid #aaa;
-}
+}
\ No newline at end of file

Modified: trunk/extensions/FlaggedRevs/modules/flaggedrevs.js
===================================================================
--- trunk/extensions/FlaggedRevs/client/flaggedrevs.js  2011-03-22 23:07:21 UTC 
(rev 84581)
+++ trunk/extensions/FlaggedRevs/modules/flaggedrevs.js 2011-03-22 23:12:31 UTC 
(rev 84582)
@@ -1,67 +1,75 @@
-/* -- (c) Aaron Schulz */
+/**
+ * FlaggedRevs Stylesheet
+ * @author Aaron Schulz
+ * @author Krinkle <[email protected]> 2011
+ */
 
 window.FlaggedRevs = {
        /* Dropdown collapse timer */
        'boxCollapseTimer': null,
-       
+
        /* Enables rating/diff clutter via show/hide */
        'enableShowhide': function() {
                // Rating detail box
                var toggle = document.getElementById('mw-fr-revisiontoggle');
-               if( toggle ) {
+               if ( toggle ) {
                        toggle.style.display = 'inline'; /* show toggle control 
*/
                        this.hideBoxDetails(); /* hide the initially displayed 
ratings */
                }
                // Diff detail box
                toggle = document.getElementById('mw-fr-difftoggle');
-               if( toggle ) {
+               if ( toggle ) {
                        toggle.style.display = 'inline'; /* show toggle control 
*/
                        var diff = document.getElementById('mw-fr-stablediff');
-                       if( diff ) {
+                       if ( diff ) {
                                diff.style.display = 'none';
                        }
                }
                // Log detail box
                toggle = document.getElementById('mw-fr-logtoggle');
-               if( toggle ) {
+               if ( toggle ) {
                        toggle.style.display = 'inline'; /* show toggle control 
*/
                        var log = document.getElementById('mw-fr-logexcerpt');
-                       if( log ) {
+                       if ( log ) {
                                log.style.display = 'none';
                        }
                }
        },
-       
+
        /* Expands flag info box details */
        'showBoxDetails': function() {
                var ratings = document.getElementById('mw-fr-revisiondetails');
-               if( ratings ) {
+               if ( ratings ) {
                        ratings.style.display = 'block';
                }
        },
-       
+
        /* Collapses flag info box details */
        'hideBoxDetails': function( event ) {
                var ratings = document.getElementById('mw-fr-revisiondetails');
-               if( ratings ) {
+               if ( ratings ) {
                        ratings.style.display = 'none';
                }
        },
-       
+
        /* Toggles flag info box details for (+/-) control */
        'toggleBoxDetails': function() {
                var toggle = document.getElementById('mw-fr-revisiontoggle');
-               if( !toggle ) return;
+               if ( !toggle ) {
+                       return;
+               }
                var ratings = document.getElementById('mw-fr-revisiondetails');
-               if( !ratings ) return;
+               if ( !ratings ) {
+                       return;
+               }
                // Collapsed -> expand
-               if( ratings.style.display == 'none' ) {
+               if ( ratings.style.display == 'none' ) {
                        this.showBoxDetails();
-                       toggle.innerHTML = 
mediaWiki.msg('revreview-toggle-hide');
+                       toggle.innerHTML = mw.msg('revreview-toggle-hide');
                // Expanded -> collapse
                } else {
                        this.hideBoxDetails();
-                       toggle.innerHTML = 
mediaWiki.msg('revreview-toggle-show');
+                       toggle.innerHTML = mw.msg('revreview-toggle-show');
                }
        },
 
@@ -74,23 +82,23 @@
 
        /* Hides flag info box details on mouseOut *except* for event bubbling 
*/
        'onBoxMouseOut': function( event ) {
-               if( !this.isMouseOutBubble( event, 'mw-fr-revisiontag' ) ) {
+               if ( !this.isMouseOutBubble( event, 'mw-fr-revisiontag' ) ) {
                        this.boxCollapseTimer = window.setTimeout( 
this.hideBoxDetails, 150 );
                }
        },
-       
+
        /* Checks is mouseOut event is for a child of parentId */
        'isMouseOutBubble': function( event, parentId ) {
                var toNode = null;
-               if( event.relatedTarget != undefined ) {
+               if ( event.relatedTarget !== undefined ) {
                        toNode = event.relatedTarget; // FF/Opera/Safari
                } else {
                        toNode = event.toElement; // IE
                }
-               if( toNode ) {
+               if ( toNode ) {
                        var nextParent = toNode.parentNode;
-                       while( nextParent ) {
-                               if( nextParent.id == parentId ) {
+                       while ( nextParent ) {
+                               if ( nextParent.id == parentId ) {
                                        return true; // event bubbling
                                }
                                nextParent = nextParent.parentNode; // next up
@@ -98,157 +106,166 @@
                }
                return false;
        },
-       
+
        /* Toggles diffs */
        'toggleDiff': function() {
                var diff = document.getElementById('mw-fr-stablediff');
-               if( !diff ) return;
+               if ( !diff ) {
+                       return;
+               }
                var toggle = document.getElementById('mw-fr-difftoggle');
-               if( !toggle ) return;
-               if( diff.style.display == 'none' ) {
+               if ( !toggle ) {
+                       return;
+               }
+               if ( diff.style.display == 'none' ) {
                        diff.style.display = 'block';
                        toggle.getElementsByTagName('a')[0].innerHTML =
-                               mediaWiki.msg('revreview-diff-toggle-hide');
+                               mw.msg('revreview-diff-toggle-hide');
                } else {
                        diff.style.display = 'none';
                        toggle.getElementsByTagName('a')[0].innerHTML =
-                               mediaWiki.msg('revreview-diff-toggle-show');
+                               mw.msg('revreview-diff-toggle-show');
                }
        },
-       
+
        /* Toggles log excerpts */
        'toggleLog': function() {
                var log = document.getElementById('mw-fr-logexcerpt');
-               if( !log ) return;
+               if ( !log ) {
+                       return;
+               }
                var toggle = document.getElementById('mw-fr-logtoggle');
-               if( !toggle ) return;
-               if( log.style.display == 'none' ) {
+               if ( !toggle ) {
+                       return;
+               }
+               if ( log.style.display == 'none' ) {
                        log.style.display = 'block';
                        toggle.getElementsByTagName('a')[0].innerHTML =
-                               mediaWiki.msg('revreview-log-toggle-hide');
+                               mw.msg('revreview-log-toggle-hide');
                } else {
                        log.style.display = 'none';
                        toggle.getElementsByTagName('a')[0].innerHTML =
-                               mediaWiki.msg('revreview-log-toggle-show');
+                               mw.msg('revreview-log-toggle-show');
                }
        },
-       
+
        /* Toggles log excerpts */
        'toggleLogDetails': function() {
                var log = document.getElementById('mw-fr-logexcerpt');
-               if( !log ) return;
+               if ( !log ) {
+                       return;
+               }
                var toggle = document.getElementById('mw-fr-logtoggle');
-               if( !toggle ) return;
-               if( log.style.display == 'none' ) {
+               if ( !toggle ) {
+                       return;
+               }
+               if ( log.style.display == 'none' ) {
                        log.style.display = 'block';
-                       toggle.getElementsByTagName('a')[0].innerHTML =
-                               mediaWiki.msg('revreview-log-details-hide');
+                       toggle.getElementsByTagName('a')[0].innerHTML = 
mw.msg('revreview-log-details-hide');
                } else {
                        log.style.display = 'none';
-                       toggle.getElementsByTagName('a')[0].innerHTML =
-                               mediaWiki.msg('revreview-log-details-show');
+                       toggle.getElementsByTagName('a')[0].innerHTML = 
mw.msg('revreview-log-details-show');
                }
        },
-       
+
        /* Enables changing of save button when "review this" checkbox changes 
*/
        'setCheckTrigger': function() {
-               var checkbox = document.getElementById("wpReviewEdit");
-               if( checkbox ) {
+               var checkbox = document.getElementById('wpReviewEdit');
+               if ( checkbox ) {
                        checkbox.onclick = FlaggedRevs.updateSaveButton;
                }
        },
-       
+
        /* Update save button when "review this" checkbox changes */
        'updateSaveButton': function() {
-               var checkbox = document.getElementById("wpReviewEdit");
-               var save = document.getElementById("wpSave");
-               if( checkbox && save ) {
+               var checkbox = document.getElementById('wpReviewEdit');
+               var save = document.getElementById('wpSave');
+               if ( checkbox && save ) {
                        // Review pending changes
                        if ( checkbox.checked ) {
-                               save.value = mediaWiki.msg('savearticle');
-                               save.title = mediaWiki.msg('tooltip-save') +
-                                       ' [' + mediaWiki.msg('accesskey-save') 
+ ']';
+                               save.value = mw.msg('savearticle');
+                               save.title = mw.msg('tooltip-save') +
+                                       ' [' + mw.msg('accesskey-save') + ']';
                        // Submit for review
                        } else {
-                               save.value = 
mediaWiki.msg('revreview-submitedit');
-                               save.title = 
mediaWiki.msg('revreview-submitedit-title')
-                                       + ' [' + 
mediaWiki.msg('accesskey-save') + ']';
+                               save.value = mw.msg('revreview-submitedit');
+                               save.title = 
mw.msg('revreview-submitedit-title')
+                                       + ' [' + mw.msg('accesskey-save') + ']';
                        }
                }
-               mediaWiki.util.updateTooltipAccessKeys( [ save ] ); // update 
accesskey in save.title
+               mw.util.updateTooltipAccessKeys( [ save ] ); // update 
accesskey in save.title
        }
 };
 
-// @TODO: move this crap to core or something
+
+// Get the revisioncontents div and replace it with actual parsed article 
contents via an API call
 FlaggedRevs.getRevisionContents = function() {
-       //get the contents div and replace it with actual parsed article 
contents via an API call.
-       var contentsDiv = document.getElementById("mw-fr-revisioncontents");
-       var prevLink = document.getElementById("differences-prevlink");
-       var nextLink = document.getElementById("differences-nextlink");
+       var revContent = mw.config.get( 'wgRevContents' );
+       var $frRevContents = $( '#mw-fr-revisioncontents' );
+       var $prevLink = $( '#differences-prevlink' );
+       var $nextLink = $( '#differences-nextlink' );
 
-       var timeoutId = null;
-       if( contentsDiv ) {
-               var diffUIParams = 
document.getElementById("mw-fr-diff-dataform");
-               var oldRevId = 
diffUIParams.getElementsByTagName('input')[1].value;
-               var origContents = contentsDiv.innerHTML;
-               contentsDiv.innerHTML = "<span class='loading mw-small-spinner 
spinner'>" +
-                       "</span><span class='loading' >" + 
wgRevContents.waiting + "</span>";
-               var requestArgs = 
'action=parse&prop=text|categorieshtml|languageshtml|headitems&format=xml';
-               if ( window.wgCurRevisionId == oldRevId && window.wgPageName ) {
-                       requestArgs += '&page=' + encodeURIComponent( 
window.wgPageName );
+       if ( $frRevContents.size() ) {
+               var diffUIParams = document.getElementById( 
'mw-fr-diff-dataform' );
+               var oldRevId = diffUIParams.getElementsByTagName( 'input' 
)[1].value;
+               var origContents = $frRevContents.html();
+               $frRevContents.html( '<span class="loading mw-small-spinner 
spinner"></span>'
+                       + '<span class="loading">' + mw.html.escape( 
revContent.waiting ) + '</span>' );
+               var queryParams = {
+                       format: 'json',
+                       action: 'parse',
+                       prop: 'text|categorieshtml|languageshtml|headitems'
+               };
+               if ( mw.config.get( 'wgCurRevisionId' ) == oldRevId && 
mw.config.exists( 'wgPageName' ) ) {
+                       queryParams.page = mw.config.get( 'wgPageName' );
                } else {
-                       requestArgs += '&oldid=' + oldRevId;
+                       queryParams.oldid = oldRevId;
                }
 
-               var call = jQuery.ajax({
-                       url             : wgScriptPath + '/api.php',
-                       type    : "GET",
-                       data    : requestArgs,
-                       dataType: "xml",
-                       success : function( result ) {
-                               contentsDiv.innerHTML = "";
-                               contents = jQuery(result).find("text");
-                               if ( contents.text() ) {
-                                       contentsDiv.innerHTML += 
contents.text();
+               var call = $.ajax({
+                       url: mw.config.get( 'wgScriptPath' ) + '/api.php',
+                       data: queryParams,
+                       dataType: 'json',
+                       success: function( result ) {
+                               if ( !result || !result.parse ) {
+                                       return;
+                               }
+                               // Get data
+                               var     parse = result.parse,
+                                       text = parse.text,
+                                       languageshtml = parse.languageshtml,
+                                       categoryhtml = parse.categorieshtml;
+                               // Insert data into page
+                               if ( text && text['*'] ) {
+                                       $frRevContents.empty().append( 
text['*'] );
                                } else {
-                                       contentsDiv.innerHTML = 
wgRevContents.error + " " + origContents;
+                                       $frRevContents.empty().append( 
revContent.error + ' ' + origContents );
                                }
-                               categoryhtml = 
jQuery(result).find("categorieshtml");
-                               if ( categoryhtml.text() ) {
-                                       contentsDiv.innerHTML += 
categoryhtml.text();
+                               if ( languageshtml && languageshtml['*'] ) {
+                                       $frRevContents.append( '<div 
class="langlinks" >' + languageshtml['*'] + '</div>' );
                                }
-                               languageshtml = 
jQuery(result).find("languageshtml");
-                               if ( languageshtml.text() ) {
-                                       contentsDiv.innerHTML += "<div 
class='langlinks' >" +
-                                               languageshtml.text() + "</div>";
+                               if ( categoryhtml && categoryhtml['*'] ) {
+                                       $('#catlinks').replaceWith( 
$(categoryhtml['*']) );
                                }
-                               $headitems = jQuery(result).find("hi");
-                               if ( $headitems.text() ) {
-                                       $('head').append( $headitems.text() );
-                               }
                        },
-                       error   : function(xmlHttpRequest, textStatus, 
errThrown) {
-                               contentsDiv.innerHTML = wgRevContents.error + " 
" + origContents;
+                       error: function(xhttp, status, error) {
+                               $frRevContents.html( revContent.error + ' ' + 
origContents );
                        }
                });
        }
-       if ( prevLink ) {
-               prevLink.onclick = function() {
-                       if ( call ) {
-                               call.abort();
-                       }
-               };
-       }
-       if ( nextLink ) {
-               nextLink.onclick = function() {
-                       if ( call ) {
-                               call.abort();
-                       }
-               };
-       }
+       $prevLink.click( function() {
+               if ( call ) {
+                       call.abort();
+               }
+       } );
+       $nextLink.click( function() {
+               if ( call ) {
+                       call.abort();
+               }
+       } );
 };
 
 // Perform some onload (which is when this script is included) events:
 FlaggedRevs.enableShowhide();
 FlaggedRevs.setCheckTrigger();
-FlaggedRevs.getRevisionContents();
+FlaggedRevs.getRevisionContents();
\ No newline at end of file

Modified: trunk/extensions/FlaggedRevs/modules/review.js
===================================================================
--- trunk/extensions/FlaggedRevs/client/review.js       2011-03-22 23:07:21 UTC 
(rev 84581)
+++ trunk/extensions/FlaggedRevs/modules/review.js      2011-03-22 23:12:31 UTC 
(rev 84582)
@@ -1,12 +1,16 @@
-/* -- (c) Aaron Schulz, Daniel Arnold 2008 */
+/**
+ * FlaggedRevs Stylesheet
+ * @author Aaron Schulz
+ * @author Daniel Arnold 2008
+ */
 
 window.FlaggedRevsReview = {
        /*
        * Updates for radios/checkboxes on patch by Daniel Arnold (bug 13744).
        * Visually update the revision rating form on change.
-       * a) Disable submit in case of invalid input.
-       * b) Update colors when select changes (Opera already does this).
-       * c) Also remove comment box clutter in case of invalid input.
+       * - Disable submit in case of invalid input.
+       * - Update colors when select changes (Opera already does this).
+       * - Also remove comment box clutter in case of invalid input.
        * NOTE: all buttons should exist (perhaps hidden though)
        */
        'updateRatingForm': function() {
@@ -314,4 +318,4 @@
 // Perform some onload (which is when this script is included) events:
 FlaggedRevsReview.maybeDisableAcceptButton();
 FlaggedRevsReview.updateRatingFormColors();
-FlaggedRevsReview.enableAjaxReview();
+FlaggedRevsReview.enableAjaxReview();
\ No newline at end of file


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to