https://www.mediawiki.org/wiki/Special:Code/MediaWiki/108267

Revision: 108267
Author:   ashley
Date:     2012-01-06 18:42:42 +0000 (Fri, 06 Jan 2012)
Log Message:
-----------
LinkFilter: version 2.1:
*fixes for ResourceLoader compatibility
*dropped backwards compatibility with pre-1.18 MediaWikis
*removed $wgLinkFilterScripts global, unnecessary now thanks to RL

This is also a follow-up to r108266.

Modified Paths:
--------------
    trunk/extensions/LinkFilter/Link.php
    trunk/extensions/LinkFilter/LinkFilter.js
    trunk/extensions/LinkFilter/LinkFilterHooks.php
    trunk/extensions/LinkFilter/LinkPage.php
    trunk/extensions/LinkFilter/SpecialLinkApprove.php
    trunk/extensions/LinkFilter/SpecialLinkEdit.php
    trunk/extensions/LinkFilter/SpecialLinkRedirect.php
    trunk/extensions/LinkFilter/SpecialLinkSubmit.php
    trunk/extensions/LinkFilter/SpecialLinksHome.php

Modified: trunk/extensions/LinkFilter/Link.php
===================================================================
--- trunk/extensions/LinkFilter/Link.php        2012-01-06 18:41:50 UTC (rev 
108266)
+++ trunk/extensions/LinkFilter/Link.php        2012-01-06 18:42:42 UTC (rev 
108267)
@@ -5,11 +5,11 @@
  *
  * @file
  * @ingroup Extensions
- * @version 2.0
+ * @version 2.1
  * @author Aaron Wright <aaron.wri...@gmail.com>
  * @author David Pean <david.p...@gmail.com>
  * @author Jack Phoenix <j...@countervandalism.net>
- * @link http://www.mediawiki.org/wiki/Extension:LinkFilter Documentation
+ * @link https://www.mediawiki.org/wiki/Extension:LinkFilter Documentation
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
  */
 
@@ -25,7 +25,7 @@
 $wgExtensionCredits['other'][] = array( 
        'path' => __FILE__,
        'name' => 'LinkFilter',
-       'version' => '2.0.1',
+       'version' => '2.1',
        'author' => array( 'Aaron Wright', 'David Pean', 'Jack Phoenix' ),
        'descriptionmsg' => 'linkfilter-desc',
        'url' => 'https://www.mediawiki.org/wiki/Extension:LinkFilter'
@@ -55,9 +55,6 @@
 // Path to the LinkFilter extension files
 $wgLinkFilterDirectory = "$IP/extensions/LinkFilter";
 
-// Same as above, but a web-readable path instead
-$wgLinkFilterScripts = "$wgScriptPath/extensions/LinkFilter";
-
 // Array of LinkFilter types
 // Key is: number => 'description'
 // For example: 2 => 'Awesome',
@@ -104,6 +101,7 @@
 $wgAutoloadClasses['LinkEdit'] = 
"{$wgLinkFilterDirectory}/SpecialLinkEdit.php";
 $wgSpecialPages['LinkEdit'] = 'LinkEdit';
 
+// AJAX functions called by the JavaScript file
 require_once("{$wgLinkFilterDirectory}/LinkFilter_AjaxFunctions.php");
 
 // Default setup for displaying sections

Modified: trunk/extensions/LinkFilter/LinkFilter.js
===================================================================
--- trunk/extensions/LinkFilter/LinkFilter.js   2012-01-06 18:41:50 UTC (rev 
108266)
+++ trunk/extensions/LinkFilter/LinkFilter.js   2012-01-06 18:42:42 UTC (rev 
108267)
@@ -7,17 +7,7 @@
  */
 var LinkFilter = {
        linkAction: function( action, link_id ) {
-               var acceptMsg, rejectMsg;
-               if( typeof( mediaWiki ) == 'undefined' ) {
-                       //acceptMsg = 'The link was accepted';
-                       //rejectMsg = 'The link was rejected';
-                       acceptMsg = _LINKFILTER_ACCEPT;
-                       rejectMsg = _LINKFILTER_REJECT;
-               } else {
-                       acceptMsg = mediaWiki.msg( 
'linkfilter-admin-accept-success' );
-                       rejectMsg = mediaWiki.msg( 
'linkfilter-admin-reject-success' );
-               }
-               getElementsByClassName( document, 'div', 'action-buttons-1' 
).display = 'none';
+               jQuery( 'div.action-buttons-1' ).hide();
                sajax_request_type = 'POST';
                sajax_do_call(
                        'wfLinkFilterStatus',
@@ -26,10 +16,10 @@
                                var msg;
                                switch( action ) {
                                        case 1:
-                                               msg = acceptMsg;
+                                               msg = mediaWiki.msg( 
'linkfilter-admin-accept-success' );
                                                break;
                                        case 2:
-                                               msg = rejectMsg;
+                                               msg = mediaWiki.msg( 
'linkfilter-admin-reject-success' );
                                                break;
                                }
                                var elementToDisplay = document.getElementById( 
'action-buttons-' + link_id );
@@ -40,28 +30,18 @@
        },
 
        submitLink: function() {
-               var noTitleMsg, noTypeMsg;
-               if( typeof( mediaWiki ) == 'undefined' ) {
-                       //noTitleMsg = 'Please enter a title';
-                       //noTypeMsg = 'Hey, pick a link type!';
-                       noTitleMsg = _LINKFILTER_NO_TITLE;
-                       noTypeMsg = _LINKFILTER_NO_TYPE;
-               } else {
-                       noTitleMsg = mediaWiki.msg( 
'linkfilter-submit-no-title' );
-                       noTypeMsg = mediaWiki.msg( 'linkfilter-submit-no-type' 
);
-               }
                if (
                        typeof( wgCanonicalSpecialPageName ) !== 'undefined' &&
                        wgCanonicalSpecialPageName !== 'LinkEdit'
                )
                {
                        if( document.getElementById( 'lf_title' ).value === '' 
) {
-                               alert( noTitleMsg );
+                               alert( mediaWiki.msg( 
'linkfilter-submit-no-title' ) );
                                return '';
                        }
                }
                if( document.getElementById( 'lf_type' ).value === '' ) {
-                       alert( noTypeMsg );
+                       alert( mediaWiki.msg( 'linkfilter-submit-no-type' ) );
                        return '';
                }
                document.link.submit();
@@ -73,4 +53,30 @@
                }
                document.getElementById( 'desc-remaining' ).innerHTML = limit - 
field.value.length;
        }
-};
\ No newline at end of file
+};
+
+jQuery( document ).ready( function() {
+       // "Accept" links on Special:LinkApprove
+       jQuery( 'a.action-accept' ).click( function() {
+               var that = jQuery( this );
+               LinkFilter.linkAction( 1, that.data( 'link-id' ) );
+       } );
+
+       // "Reject" links on Special:LinkApprove
+       jQuery( 'a.action-reject' ).click( function() {
+               var that = jQuery( this );
+               LinkFilter.linkAction( 2, that.data( 'link-id' ) );
+       } );
+
+       // Textarea on Special:LinkEdit/Special:LinkSubmit
+       jQuery( 'textarea.lr-input' ).bind( 'keyup', function() {
+               LinkFilter.limitText( document.link.lf_desc, 300 );
+       } ).bind( 'keydown', function() {
+               LinkFilter.limitText( document.link.lf_desc, 300 );
+       } );
+
+       // Submit button on Special:LinkEdit/Special:LinkSubmit
+       jQuery( '#link-submit-button' ).click( function() {
+               LinkFilter.submitLink();
+       } );
+} );
\ No newline at end of file

Modified: trunk/extensions/LinkFilter/LinkFilterHooks.php
===================================================================
--- trunk/extensions/LinkFilter/LinkFilterHooks.php     2012-01-06 18:41:50 UTC 
(rev 108266)
+++ trunk/extensions/LinkFilter/LinkFilterHooks.php     2012-01-06 18:42:42 UTC 
(rev 108267)
@@ -68,7 +68,7 @@
         */
        public static function linkFromTitle( &$title, &$article ) {
                if ( $title->getNamespace() == NS_LINK ) {
-                       global $wgRequest, $wgOut, $wgTitle, 
$wgSupressPageTitle, $wgSupressSubTitle, $wgLinkFilterScripts;
+                       global $wgRequest, $wgOut, $wgTitle, 
$wgSupressPageTitle, $wgSupressSubTitle;
                        $wgOut->enableClientCache( false );
 
                        if( $wgRequest->getVal( 'action' ) == 'edit' ) {
@@ -89,11 +89,7 @@
                        $wgSupressSubTitle = true;
 
                        // Add CSS
-                       if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
-                               $wgOut->addModuleStyles( 'ext.linkFilter' );
-                       } else {
-                               $wgOut->addExtensionStyle( $wgLinkFilterScripts 
. '/LinkFilter.css' );
-                       }
+                       $wgOut->addModuleStyles( 'ext.linkFilter' );
 
                        $article = new LinkPage( $title );
                }
@@ -116,19 +112,17 @@
         * Callback function for registerLinkFilterHook.
         */
        public static function renderLinkFilterHook( $input, $args, $parser ) {
-               global $wgMemc, $wgOut, $wgLinkFilterScripts;
+               global $wgMemc, $wgOut;
 
-               // Add CSS
-               if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
-                       $wgOut->addModuleStyles( 'ext.linkFilter' );
-               } else {
-                       $wgOut->addExtensionStyle( $wgLinkFilterScripts . 
'/LinkFilter.css' );
-               }
-
                $parser->disableCache();
 
-               $count = intval( $args['count'] );
-               if( !$count ) {
+               // Add CSS (ParserOutput class only has addModules(), not
+               // addModuleStyles() or addModuleScripts()...strange)
+               $wgOut->addModuleStyles( 'ext.linkFilter' );
+
+               if ( isset( $args['count'] ) ) {
+                       $count = intval( $args['count'] );
+               } else {
                        $count = 10;
                }
 
@@ -243,18 +237,13 @@
         *              stats_links_approved columns; if not, apply
         *              patch-columns_for_user_stats.sql against the database
         *
-        * @param $updater Object: instance of DatabaseUpdater
+        * @param $updater DatabaseUpdater
         * @return Boolean: true
         */
-       public static function applySchemaChanges( $updater = null ) {
+       public static function applySchemaChanges( $updater ) {
                $dir = dirname( __FILE__ );
                $file = "$dir/link.sql";
-               if ( $updater === null ) {
-                       global $wgExtNewTables;
-                       $wgExtNewTables[] = array( 'link', $file );
-               } else {
-                       $updater->addExtensionUpdate( array( 'addTable', 
'link', $file, true ) );
-               }
+               $updater->addExtensionUpdate( array( 'addTable', 'link', $file, 
true ) );
                return true;
        }
 

Modified: trunk/extensions/LinkFilter/LinkPage.php
===================================================================
--- trunk/extensions/LinkFilter/LinkPage.php    2012-01-06 18:41:50 UTC (rev 
108266)
+++ trunk/extensions/LinkFilter/LinkPage.php    2012-01-06 18:42:42 UTC (rev 
108267)
@@ -37,12 +37,12 @@
        }
 
        function view() {
-               global $wgOut, $wgUser, $wgTitle, $wgLinkPageDisplay;
+               global $wgOut, $wgUser, $wgLinkPageDisplay;
 
                $sk = $wgUser->getSkin();
 
-               $wgOut->setHTMLTitle( $wgTitle->getText() );
-               $wgOut->setPageTitle( $wgTitle->getText() );
+               $wgOut->setHTMLTitle( $this->getTitle()->getText() );
+               $wgOut->setPageTitle( $this->getTitle()->getText() );
 
                $wgOut->addHTML( '<div id="link-page-container" 
class="clearfix">' );
 

Modified: trunk/extensions/LinkFilter/SpecialLinkApprove.php
===================================================================
--- trunk/extensions/LinkFilter/SpecialLinkApprove.php  2012-01-06 18:41:50 UTC 
(rev 108266)
+++ trunk/extensions/LinkFilter/SpecialLinkApprove.php  2012-01-06 18:42:42 UTC 
(rev 108267)
@@ -91,7 +91,7 @@
         * @param $par Mixed: parameter passed to the page or null
         */
        public function execute( $par ) {
-               global $wgUser, $wgOut, $wgRequest, $wgHooks, 
$wgLinkFilterScripts; 
+               global $wgUser, $wgOut, $wgRequest;
 
                // Check for linkadmin permission
                if( !$wgUser->isAllowed( 'linkadmin' ) ) {
@@ -114,21 +114,8 @@
                // Set the page title
                $wgOut->setPageTitle( wfMsgHtml( 'linkfilter-approve-title' ) );
 
-               // i18n for JS
-               $wgHooks['MakeGlobalVariablesScript'][] = function( $vars ) {
-                       $vars['_LINKFILTER_ACCEPT'] = wfMsg( 
'linkfilter-admin-accept-success' );
-                       $vars['_LINKFILTER_REJECT'] = wfMsg( 
'linkfilter-admin-reject-success' );
-                       return true;
-               };
-
                // Add CSS & JS
-               if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
-                       $wgOut->addModuleStyles( 'ext.linkFilter' );
-                       $wgOut->addModuleScripts( 'ext.linkFilter' );
-               } else {
-                       $wgOut->addExtensionStyle( $wgLinkFilterScripts . 
'/LinkFilter.css' );
-                       $wgOut->addScriptFile( $wgLinkFilterScripts . 
'/LinkFilter.js' );
-               }
+               $wgOut->addModules( 'ext.linkFilter' );
 
                $output = '';
                $output .= '<div class="lr-left">';
@@ -178,9 +165,9 @@
                                                Link::getLinkType( 
$link['type'] )
                                        ) . "</div>
                                        <div 
id=\"action-buttons-{$link['id']}\" class=\"action-buttons\">
-                                               <a 
href=\"javascript:LinkFilter.linkAction(1,{$link['id']})\" 
class=\"action-accept\">" .
+                                               <a href=\"javascript:void(0);\" 
class=\"action-accept\" data-link-id=\"{$link['id']}\">" .
                                                        wfMsgHtml( 
'linkfilter-admin-accept' ) . "</a>
-                                               <a 
href=\"javascript:LinkFilter.linkAction(2,{$link['id']})\" 
class=\"action-reject\">" .
+                                               <a href=\"javascript:void(0);\" 
class=\"action-reject\" data-link-id=\"{$link['id']}\">" .
                                                        wfMsgHtml( 
'linkfilter-admin-reject' ) . '</a>
                                                <div class="cleared"></div>
                                        </div>';
@@ -193,7 +180,7 @@
                $output .= '</div>';
                $output .= '<div class="lr-right">
                        <div class="admin-link-instruction">' .
-                               wfMsgExt( 'linkfilter-admin-instructions', 
'parse' ) .
+                               wfMessage( 'linkfilter-admin-instructions' 
)->inContentLanguage()->parse() .
                        '</div>
                        <div class="approved-link-container">
                                <h3>' . wfMsgHtml( 'linkfilter-admin-recent' ) 
. '</h3>';

Modified: trunk/extensions/LinkFilter/SpecialLinkEdit.php
===================================================================
--- trunk/extensions/LinkFilter/SpecialLinkEdit.php     2012-01-06 18:41:50 UTC 
(rev 108266)
+++ trunk/extensions/LinkFilter/SpecialLinkEdit.php     2012-01-06 18:42:42 UTC 
(rev 108267)
@@ -15,7 +15,7 @@
         * @param $par Mixed: parameter passed to the page or null
         */
        public function execute( $par ) {
-               global $wgUser, $wgOut, $wgRequest, $wgLinkFilterScripts; 
+               global $wgUser, $wgOut, $wgRequest;
 
                // Check permissions
                if ( !Link::canAdmin() ) {
@@ -36,13 +36,7 @@
                }
 
                // Add CSS & JS
-               if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
-                       $wgOut->addModuleStyles( 'ext.linkFilter' );
-                       $wgOut->addModuleScripts( 'ext.linkFilter' );
-               } else {
-                       $wgOut->addExtensionStyle( $wgLinkFilterScripts . 
'/LinkFilter.css' );
-                       $wgOut->addScriptFile( $wgLinkFilterScripts . 
'/LinkFilter.js' );
-               }
+               $wgOut->addModules( 'ext.linkFilter' );
 
                if ( $wgRequest->wasPosted() && $_SESSION['alreadysubmitted'] 
== false ) {
                        $_SESSION['alreadysubmitted'] = true;
@@ -104,19 +98,19 @@
                $output .= '<div class="cleared"></div>
                        </div>
                        <form name="link" id="linksubmit" method="post" 
action="">
-                               <div class="link-submit-title"> 
+                               <div class="link-submit-title">
                                        <label>' . wfMsg( 'linkfilter-url' ) . 
'</label>
                                </div>
                                <input tabindex="2" class="lr-input" 
type="text" name="lf_URL" id="lf_URL" value="' . $url . '"/>
 
-                               <div class="link-submit-title"> 
+                               <div class="link-submit-title">
                                        <label>' . wfMsg( 
'linkfilter-description' ) . '</label>
                                </div>
                                <div class="link-characters-left">' .
                                        wfMsg( 'linkfilter-description-max' ) . 
' - ' .
                                        wfMsg( 'linkfilter-description-left', 
'<span id="desc-remaining">300</span>' ) .
                                '</div>
-                               <textarea tabindex="3" class="lr-input" 
onkeyup="LinkFilter.limitText(document.link.lf_desc,300)" 
onkeydown="LinkFilter.limitText(document.link.lf_desc,300)" rows="4" 
name="lf_desc" id="lf_desc">'
+                               <textarea tabindex="3" class="lr-input" 
rows="4" name="lf_desc" id="lf_desc">'
                                . $description .
                                '</textarea>
 
@@ -135,7 +129,7 @@
                }
                $output .= '</select>
                                <div class="link-submit-button">
-                                       <input tabindex="5" class="site-button" 
type="button" onclick="javascript:LinkFilter.submitLink()" value="' . wfMsg( 
'linkfilter-submit-button' ) . '" />
+                                       <input tabindex="5" class="site-button" 
type="button" id="link-submit-button" value="' . wfMsg( 
'linkfilter-submit-button' ) . '" />
                                </div>
                        </form>
                </div>';

Modified: trunk/extensions/LinkFilter/SpecialLinkRedirect.php
===================================================================
--- trunk/extensions/LinkFilter/SpecialLinkRedirect.php 2012-01-06 18:41:50 UTC 
(rev 108266)
+++ trunk/extensions/LinkFilter/SpecialLinkRedirect.php 2012-01-06 18:42:42 UTC 
(rev 108267)
@@ -23,7 +23,7 @@
                $wgOut->addHTML(
                        "<html>
                                <body onload=window.location=\"{$url}\">
-                               {$sk->bottomScripts()}
+                               {$sk->bottomScripts( $wgOut )}
                                </body>
                        </html>"
                );

Modified: trunk/extensions/LinkFilter/SpecialLinkSubmit.php
===================================================================
--- trunk/extensions/LinkFilter/SpecialLinkSubmit.php   2012-01-06 18:41:50 UTC 
(rev 108266)
+++ trunk/extensions/LinkFilter/SpecialLinkSubmit.php   2012-01-06 18:42:42 UTC 
(rev 108267)
@@ -20,7 +20,7 @@
         * @param $par Mixed: parameter passed to the page or null
         */
        public function execute( $par ) {
-               global $wgUser, $wgOut, $wgRequest, $wgHooks, 
$wgLinkFilterScripts;
+               global $wgUser, $wgOut, $wgRequest;
 
                // Anonymous users need to log in first
                if ( $wgUser->isAnon() ) {
@@ -40,21 +40,8 @@
                        return false;
                }
 
-               // i18n for JS
-               $wgHooks['MakeGlobalVariablesScript'][] = function( $vars ) {
-                       $vars['_LINKFILTER_NO_TITLE'] = wfMsg( 
'linkfilter-submit-no-title' );
-                       $vars['_LINKFILTER_NO_TYPE'] = wfMsg( 
'linkfilter-submit-no-type' );
-                       return true;
-               };
-
                // Add CSS & JS (JS is required by displayAddForm())
-               if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
-                       $wgOut->addModuleStyles( 'ext.linkFilter' );
-                       $wgOut->addModuleScripts( 'ext.linkFilter' );
-               } else {
-                       $wgOut->addExtensionStyle( $wgLinkFilterScripts . 
'/LinkFilter.css' );
-                       $wgOut->addScriptFile( $wgLinkFilterScripts . 
'/LinkFilter.js' );
-               }
+               $wgOut->addModules( 'ext.linkFilter' );
 
                // If the request was POSTed and we haven't already submitted 
it, start
                // processing it
@@ -170,7 +157,7 @@
                                        wfMsg( 'linkfilter-description-max' ) . 
' - ' .
                                        wfMsg( 'linkfilter-description-left', 
'<span id="desc-remaining">300</span>' ) .
                                '</div>
-                               <textarea tabindex="3" class="lr-input" 
onkeyup="LinkFilter.limitText(document.link.lf_desc,300)" 
onkeydown="LinkFilter.limitText(document.link.lf_desc,300)" rows="4" 
name="lf_desc" id="lf_desc" value="' . $lf_desc . '"/></textarea>
+                               <textarea tabindex="3" class="lr-input" 
rows="4" name="lf_desc" id="lf_desc" value="' . $lf_desc . '"></textarea>
 
                                <div class="link-submit-title">
                                        <label>' . wfMsg( 'linkfilter-type' ) . 
'</label>
@@ -183,13 +170,13 @@
                }
                $output .= '</select>
                                <div class="link-submit-button">
-                                       <input tabindex="5" class="site-button" 
type="button" onclick="javascript:LinkFilter.submitLink()" value="' . wfMsg( 
'linkfilter-submit-button' ) . '" />
+                                       <input tabindex="5" class="site-button" 
type="button" id="link-submit-button" value="' . wfMsg( 
'linkfilter-submit-button' ) . '" />
                                </div>
                        </form>
                </div>';
 
                $output .= '<div class="lr-right">' .
-                       wfMsgExt( 'linkfilter-instructions', 'parse' ) .
+                       wfMessage( 'linkfilter-instructions' 
)->inContentLanguage()->parse() .
                '</div>
                <div class="cleared"></div>';
 

Modified: trunk/extensions/LinkFilter/SpecialLinksHome.php
===================================================================
--- trunk/extensions/LinkFilter/SpecialLinksHome.php    2012-01-06 18:41:50 UTC 
(rev 108266)
+++ trunk/extensions/LinkFilter/SpecialLinksHome.php    2012-01-06 18:42:42 UTC 
(rev 108267)
@@ -148,18 +148,12 @@
         * @param $par Mixed: parameter passed to the page or null
         */
        public function execute( $par ) {
-               global $wgOut, $wgRequest, $wgSupressPageTitle, 
$wgLinkFilterScripts;
+               global $wgOut, $wgRequest, $wgSupressPageTitle;
 
                $wgSupressPageTitle = true;
 
                // Add CSS & JS
-               if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
-                       $wgOut->addModuleStyles( 'ext.linkFilter' );
-                       $wgOut->addModuleScripts( 'ext.linkFilter' );
-               } else {
-                       $wgOut->addExtensionStyle( $wgLinkFilterScripts . 
'/LinkFilter.css' );
-                       $wgOut->addScriptFile( $wgLinkFilterScripts . 
'/LinkFilter.js' );
-               }
+               $wgOut->addModules( 'ext.linkFilter' );
 
                $per_page = 20;
                $page = $wgRequest->getInt( 'page', 1 );


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

Reply via email to