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