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

Revision: 89898
Author:   robin
Date:     2011-06-11 22:14:03 +0000 (Sat, 11 Jun 2011)
Log Message:
-----------
Show an error when prefix or URL is empty, instead of adding it.
Various other small fixes, including:
* Show "return to Special:Interwiki" always when on the submit form
* Use nice url Special:Interwiki/add instead of ...&action=add
* Move inline css to css file

Modified Paths:
--------------
    trunk/extensions/Interwiki/Interwiki.css
    trunk/extensions/Interwiki/Interwiki.i18n.php
    trunk/extensions/Interwiki/Interwiki.php
    trunk/extensions/Interwiki/Interwiki_body.php

Modified: trunk/extensions/Interwiki/Interwiki.css
===================================================================
--- trunk/extensions/Interwiki/Interwiki.css    2011-06-11 21:47:06 UTC (rev 
89897)
+++ trunk/extensions/Interwiki/Interwiki.css    2011-06-11 22:14:03 UTC (rev 
89898)
@@ -1,6 +1,10 @@
 /**
  * CSS for Special:Interwiki
  */
+table.mw-interwikitable {
+       width: 100%;
+}
+
 table.mw-interwikitable.intro th {
        padding-right: 1.4ex;
        vertical-align: top;

Modified: trunk/extensions/Interwiki/Interwiki.i18n.php
===================================================================
--- trunk/extensions/Interwiki/Interwiki.i18n.php       2011-06-11 21:47:06 UTC 
(rev 89897)
+++ trunk/extensions/Interwiki/Interwiki.i18n.php       2011-06-11 22:14:03 UTC 
(rev 89898)
@@ -46,7 +46,7 @@
        'interwiki_trans_intro' => 'If wikitext syntax <code>{<nowiki 
/>{prefix:<i>pagename</i>}}</code> is used, then:',
        'interwiki_trans_1_intro' => 'allow transclusion from the foreign wiki, 
if interwiki transclusions are generally permitted in this wiki,',
        'interwiki_trans_0_intro' => 'do not allow it, rather look for a page 
in the template namespace.',
-       'interwiki_intro_footer' => 'See 
[http://www.mediawiki.org/wiki/Interwiki_table MediaWiki.org] for more 
information about the interwiki table.
+       'interwiki_intro_footer' => 'See 
[http://www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] for more 
information about the interwiki table.
 There is a [[Special:Log/interwiki|log of changes]] to the interwiki table.',
        'interwiki_1' => 'yes',
        'interwiki_0' => 'no',
@@ -70,16 +70,17 @@
        'interwiki_added' => 'Prefix "$1" was successfully added to the 
interwiki table.',
        'interwiki_addfailed' => 'Prefix "$1" could not be added to the 
interwiki table.
 Possibly it already exists in the interwiki table.',
-       'interwiki_defaulturl' => 'http://www.example.com/$1', # do not 
translate or duplicate this message to other languages
+       'interwiki-defaulturl' => 'http://www.example.com/$1', # do not 
translate or duplicate this message to other languages
 
        # editing a prefix
        'interwiki_edittext' => 'Editing an interwiki prefix',
        'interwiki_editintro' => 'You are editing an interwiki prefix.
 Remember that this can break existing links.',
        'interwiki_edited' => 'Prefix "$1" was successfully modified in the 
interwiki table.',
-       'interwiki_editerror' => 'Prefix "$1" can not be modified in the 
interwiki table.
+       'interwiki_editerror' => 'Prefix "$1" could not be modified in the 
interwiki table.
 Possibly it does not exist.',
        'interwiki-badprefix' => 'Specified interwiki prefix "$1" contains 
invalid characters',
+       'interwiki-submit-empty' => 'The prefix and URL cannot be empty.',
 
        # interwiki log
        'interwiki_logpagename' => 'Interwiki table log',

Modified: trunk/extensions/Interwiki/Interwiki.php
===================================================================
--- trunk/extensions/Interwiki/Interwiki.php    2011-06-11 21:47:06 UTC (rev 
89897)
+++ trunk/extensions/Interwiki/Interwiki.php    2011-06-11 22:14:03 UTC (rev 
89898)
@@ -9,7 +9,7 @@
  * @ingroup Extensions
  * @version 1.3
  * @author Stephanie Amanda Stevens <phroz...@gmail.com>
- * @author SPQRobin <robin_1...@hotmail.com>
+ * @author SPQRobin <robinp.1...@gmail.com>
  * @copyright Copyright © 2005-2007 Stephanie Amanda Stevens
  * @copyright Copyright © 2007 SPQRobin
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
@@ -26,7 +26,7 @@
        'path' => __FILE__,
        'name' => 'SpecialInterwiki',
        'author' => array( 'Stephanie Amanda Stevens', 'SPQRobin', '...' ),
-       'version' => '1.3.2',
+       'version' => '1.4.0',
        'url' => 'http://www.mediawiki.org/wiki/Extension:SpecialInterwiki',
        'descriptionmsg' => 'interwiki-desc',
 );

Modified: trunk/extensions/Interwiki/Interwiki_body.php
===================================================================
--- trunk/extensions/Interwiki/Interwiki_body.php       2011-06-11 21:47:06 UTC 
(rev 89897)
+++ trunk/extensions/Interwiki/Interwiki_body.php       2011-06-11 22:14:03 UTC 
(rev 89898)
@@ -38,40 +38,37 @@
 
                $admin = $wgUser->isAllowed( 'interwiki' );
                $action = $wgRequest->getVal( 'action', $par );
+               $return = SpecialPage::getTitleFor( 'Interwiki' );
 
                switch( $action ) {
                case 'delete':
                case 'edit':
                case 'add':
-                       // Check permissions
                        if( !$admin ) {
+                               // Check permissions
                                $wgOut->permissionRequired( 'interwiki' );
-                               return;
-                       }
-                       // Is the database in read-only mode?
-                       if( wfReadOnly() ) {
+                       } elseif( wfReadOnly() ) {
+                               // Is the database in read-only mode?
                                $wgOut->readOnlyPage();
-                               return;
+                       } else {
+                               $this->showForm( $action );
                        }
-                       $this->showForm( $action );
+                       $wgOut->returnToMain( false, $return );
                        break;
                case 'submit':
-                       // Check permissions
                        if( !$admin ) {
+                               // Check permissions
                                $wgOut->permissionRequired( 'interwiki' );
-                               return;
-                       }
-                       // Is the database in read-only mode?
-                       if( wfReadOnly() ) {
+                       } elseif( wfReadOnly() ) {
+                               // Is the database in read-only mode?
                                $wgOut->readOnlyPage();
-                               return;
-                       }
-                       // Prevent cross-site request forgeries
-                       if( !$wgRequest->wasPosted() || 
!$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
+                       } elseif( !$wgRequest->wasPosted() || 
!$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
+                               // Prevent cross-site request forgeries
                                $wgOut->addWikiMsg( 'sessionfailure' );
-                               return;
+                       } else {
+                               $this->doSubmit();
                        }
-                       $this->doSubmit();
+                       $wgOut->returnToMain( false, $return );
                        break;
                default:
                        $this->showList( $admin );
@@ -99,15 +96,15 @@
                                Xml::element( 'legend', null, $topmessage ) .
                                Xml::openElement( 'form', array( 'id' => 
'mw-interwiki-deleteform', 'method' => 'post', 'action' => $actionUrl ) ) .
                                Xml::openElement( 'table' ) .
-                               "<tr><td>$deletingmessage</td></tr>".
+                               "<tr><td 
colspan='2'>$deletingmessage</td></tr>".
                                '<tr><td class="mw-label">' . Xml::label( 
$reasonmessage, 'mw-interwiki-deletereason' ) . '</td>' .
                                '<td class="mw-input">' .
                                Xml::input( 'wpInterwikiReason', 60, '', array( 
'tabindex' => '1', 'id' => 'mw-interwiki-deletereason', 'maxlength' => '200' ) 
) .
                                '</td></tr>' .
                                '<tr><td></td><td class="mw-submit">' . 
Xml::submitButton( $button, array( 'id' => 'mw-interwiki-submit' ) ) .
-                               Html::Hidden( 'wpInterwikiPrefix', $prefix ) .
-                               Html::Hidden( 'wpInterwikiAction', $action ) .
-                               Html::Hidden( 'wpEditToken', $token ) .
+                               Html::hidden( 'wpInterwikiPrefix', $prefix ) .
+                               Html::hidden( 'wpInterwikiAction', $action ) .
+                               Html::hidden( 'wpEditToken', $token ) .
                                '</td></tr>' .
                                Xml::closeElement( 'table' ) .
                                Xml::closeElement( 'form' ) .
@@ -128,7 +125,7 @@
                                $defaulturl = $row->iw_url;
                                $trans = $row->iw_trans;
                                $local = $row->iw_local;
-                               $old = Html::Hidden( 'wpInterwikiPrefix', 
$row->iw_prefix );
+                               $old = Html::hidden( 'wpInterwikiPrefix', 
$row->iw_prefix );
                                $topmessage = wfMsgExt( 'interwiki_edittext', 
array( 'parseinline' ) );
                                $intromessage = wfMsgExt( 
'interwiki_editintro', array( 'parseinline' ) );
                                $button = wfMsg( 'edit' );
@@ -138,7 +135,7 @@
                                $local = $wgRequest->getCheck( 
'wpInterwikiLocal' );
                                $trans = $wgRequest->getCheck( 
'wpInterwikiTrans' );
                                $old = '';
-                               $defaulturl = $wgRequest->getVal( 
'wpInterwikiURL' ) ? $wgRequest->getVal( 'wpInterwikiURL' ) : wfMsg( 
'interwiki_defaulturl' );
+                               $defaulturl = $wgRequest->getVal( 
'wpInterwikiURL' ) ? $wgRequest->getVal( 'wpInterwikiURL' ) : wfMsg( 
'interwiki-defaulturl' );
                                $topmessage = wfMsgExt( 'interwiki_addtext', 
array( 'parseinline' ) );
                                $intromessage = wfMsgExt( 'interwiki_addintro', 
array( 'parseinline' ) );
                                $button = wfMsg( 'interwiki_addbutton' );
@@ -164,9 +161,9 @@
                                '<td class="mw-input">' . Xml::input( 
'wpInterwikiURL', 60, $defaulturl, array( 'tabindex' => '1', 'maxlength' => 
'200', 'id' => 'mw-interwiki-url' ) ) . '</td></tr>' .
                                '<tr><td class="mw-label">' . Xml::label( 
$reasonmessage, 'mw-interwiki-editreason' ) . '</td>' .
                                '<td class="mw-input">' . Xml::input( 
'wpInterwikiReason', 60, '', array( 'tabindex' => '1', 'id' => 
'mw-interwiki-editreason', 'maxlength' => '200' ) ) .
-                               Html::Hidden( 'wpInterwikiAction', $action ) .
+                               Html::hidden( 'wpInterwikiAction', $action ) .
                                $old .
-                               Html::Hidden( 'wpEditToken', $token ) .
+                               Html::hidden( 'wpEditToken', $token ) .
                                '</td></tr>' .
                                '<tr><td></td><td class="mw-submit">' . 
Xml::submitButton( $button, array( 'id' => 'mw-interwiki-submit' ) ) . 
'</td></tr>' .
                                Xml::closeElement( 'table' ) .
@@ -199,7 +196,6 @@
                                $this->showForm( $do );
                        } else {
                                $wgOut->addWikiMsg( 'interwiki_deleted', 
$prefix );
-                               $wgOut->returnToMain( false, $selfTitle );
                                $log = new LogPage( 'interwiki' );
                                $log->addEntry( 'iw_delete', $selfTitle, 
$reason, array( $prefix ) );
                        }
@@ -215,6 +211,12 @@
                                'iw_local' => $local,
                                'iw_trans' => $trans
                        );
+                       
+                       if( $prefix == '' || $theurl == '' ) {
+                               $this->error( 'interwiki-submit-empty' );
+                               $this->showForm( $do );
+                               return;
+                       }
 
                        if( $do == 'add' ){
                                $dbw->insert( 'interwiki', $data, __METHOD__, 
'IGNORE' );
@@ -227,7 +229,6 @@
                                $this->showForm( $do );
                        } else {
                                $wgOut->addWikiMsg( "interwiki_{$do}ed", 
$prefix );
-                               $wgOut->returnToMain( false, $selfTitle );
                                $log = new LogPage( 'interwiki' );
                                $log->addEntry( 'iw_' . $do, $selfTitle, 
$reason, array( $prefix, $theurl, $trans, $local ) );
                        }
@@ -258,7 +259,7 @@
                $message_1 = wfMsgHtml( 'interwiki_1' );
 
                $out = '
-<table width="100%" class="mw-interwikitable wikitable intro">
+<table class="mw-interwikitable wikitable intro">
 <tr><th class="mw-align-left">' . $prefixmessage . '</th><td>' . wfMsgExt( 
'interwiki_prefix_intro', 'parseinline' ) . '</td></tr>
 <tr><th class="mw-align-left">' . $urlmessage . '</th><td>' . wfMsgExt( 
'interwiki_url_intro', 'parseinline' ) . '</td></tr>
 <tr><th class="mw-align-left">' . $localmessage . '</th><td>' . wfMsgExt( 
'interwiki_local_intro', 'parseinline' ) . '</td></tr>
@@ -272,14 +273,13 @@
                $wgOut->addWikiMsg( 'interwiki_intro' );
                $wgOut->addHTML( $out );
                $wgOut->addWikiMsg( 'interwiki_intro_footer' );
-               $selfTitle = $this->getTitle();
 
                // Privileged users can add new prefixes
                if ( $admin ) {
                        $skin = $wgUser->getSkin();
                        $addtext = wfMsgHtml( 'interwiki_addtext' );
-                       $addlink = $skin->link( $selfTitle, $addtext, array(), 
array( 'action' => 'add' ) );
-                       $wgOut->addHTML( '<p>' . $addlink . '</p>' );
+                       $addlink = $skin->link( SpecialPage::getTitleFor( 
'Interwiki', 'add' ), $addtext );
+                       $wgOut->addHTML( '<p class="mw-interwiki-addlink">' . 
$addlink . '</p>' );
                }
 
                $dbr = wfGetDB( DB_SLAVE );
@@ -291,8 +291,10 @@
                        return;
                }
 
+               $selfTitle = $this->getTitle();
+
                $out = "
-               <table width='100%' class='mw-interwikitable wikitable sortable 
body'>
+               <table class='mw-interwikitable wikitable sortable body'>
                <tr id='interwikitable-header'><th>$prefixmessage</th> 
<th>$urlmessage</th> <th>$localmessage</th> <th>$transmessage</th>";
                // Privileged users can modify and delete existing prefixes
                if( $admin ) {


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

Reply via email to