X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fspecials%2FSpecialMovepage.php;h=cac324ac009dd0a7e3e44aaad7dcd107db53560f;hp=ec9593f77fa73ec24957b84d9dd6304b282abe18;hb=90b6409cb9a0191e159a525d4abe9194da70b8e4;hpb=b308ab4fb67db3e3df8174aabde97d487e5b883d diff --git a/includes/specials/SpecialMovepage.php b/includes/specials/SpecialMovepage.php index ec9593f77f..cac324ac00 100644 --- a/includes/specials/SpecialMovepage.php +++ b/includes/specials/SpecialMovepage.php @@ -165,17 +165,7 @@ class MovePageForm extends UnlistedSpecialPage { $out->addWikiMsg( 'delete_and_move_text', $newTitle->getPrefixedText() ); $movepagebtn = $this->msg( 'delete_and_move' )->text(); $submitVar = 'wpDeleteAndMove'; - $confirm = " - - - " . - Xml::checkLabel( - $this->msg( 'delete_and_move_confirm' )->text(), - 'wpConfirm', - 'wpConfirm' - ) . - " - "; + $confirm = true; $err = array(); } else { if ( $this->oldTitle->getNamespace() == NS_USER && !$this->oldTitle->isSubpage() ) { @@ -310,12 +300,15 @@ class MovePageForm extends UnlistedSpecialPage { 'id' => 'movepage' ) ) . - Xml::openElement( 'fieldset' ) . - Xml::element( 'legend', null, $this->msg( 'move-page-legend' )->text() ) . - Xml::openElement( 'table', array( 'id' => 'mw-movepage-table' ) ) . - " + Xml::openElement( 'fieldset' ) . + Xml::element( 'legend', null, $this->msg( 'move-page-legend' )->text() ) . + Xml::openElement( 'table', array( 'id' => 'mw-movepage-table' ) ) + ); + + $out->addHTML( + " " . - $this->msg( 'movearticle' )->escaped() . + $this->msg( 'movearticle' )->escaped() . " {$oldTitleLink} @@ -323,32 +316,32 @@ class MovePageForm extends UnlistedSpecialPage { " . - Xml::label( $this->msg( 'newtitle' )->text(), 'wpNewTitleMain' ) . + Xml::label( $this->msg( 'newtitle' )->text(), 'wpNewTitleMain' ) . " " . - Html::namespaceSelector( - array( - 'selected' => $newTitle->getNamespace(), - 'exclude' => $immovableNamespaces - ), - array( 'name' => 'wpNewTitleNs', 'id' => 'wpNewTitleNs' ) - ) . - Xml::input( - 'wpNewTitleMain', - 60, - $wgContLang->recodeForEdit( $newTitle->getText() ), - array( - 'type' => 'text', - 'id' => 'wpNewTitleMain', - 'maxlength' => 255 - ) - ) . - Html::hidden( 'wpOldTitle', $this->oldTitle->getPrefixedText() ) . + Html::namespaceSelector( + array( + 'selected' => $newTitle->getNamespace(), + 'exclude' => $immovableNamespaces + ), + array( 'name' => 'wpNewTitleNs', 'id' => 'wpNewTitleNs' ) + ) . + Xml::input( + 'wpNewTitleMain', + 60, + $wgContLang->recodeForEdit( $newTitle->getText() ), + array( + 'type' => 'text', + 'id' => 'wpNewTitleMain', + 'maxlength' => 255 + ) + ) . + Html::hidden( 'wpOldTitle', $this->oldTitle->getPrefixedText() ) . " " . - Xml::label( $this->msg( 'movereason' )->text(), 'wpReason' ) . + Xml::label( $this->msg( 'movereason' )->text(), 'wpReason' ) . " " . Xml::input( 'wpReason', 60, $this->reason, array( @@ -365,12 +358,12 @@ class MovePageForm extends UnlistedSpecialPage { " . - Xml::checkLabel( - $this->msg( 'movetalk' )->text(), - 'wpMovetalk', - 'wpMovetalk', - $this->moveTalk - ) . + Xml::checkLabel( + $this->msg( 'movetalk' )->text(), + 'wpMovetalk', + 'wpMovetalk', + $this->moveTalk + ) . " " ); @@ -389,14 +382,14 @@ class MovePageForm extends UnlistedSpecialPage { $out->addHTML( " - " . - Xml::checkLabel( - $this->msg( 'move-leave-redirect' )->text(), - 'wpLeaveRedirect', - 'wpLeaveRedirect', - $isChecked, - $options - ) . + " . + Xml::checkLabel( + $this->msg( 'move-leave-redirect' )->text(), + 'wpLeaveRedirect', + 'wpLeaveRedirect', + $isChecked, + $options + ) . " " ); @@ -406,13 +399,13 @@ class MovePageForm extends UnlistedSpecialPage { $out->addHTML( " - " . - Xml::checkLabel( - $this->msg( 'fix-double-redirects' )->text(), - 'wpFixRedirects', - 'wpFixRedirects', - $this->fixRedirects - ) . + " . + Xml::checkLabel( + $this->msg( 'fix-double-redirects' )->text(), + 'wpFixRedirects', + 'wpFixRedirects', + $this->fixRedirects + ) . " " ); @@ -423,21 +416,23 @@ class MovePageForm extends UnlistedSpecialPage { $out->addHTML( " - " . - Xml::check( - 'wpMovesubpages', - # Don't check the box if we only have talk subpages to - # move and we aren't moving the talk page. - $this->moveSubpages && ( $this->oldTitle->hasSubpages() || $this->moveTalk ), - array( 'id' => 'wpMovesubpages' ) - ) . ' ' . - Xml::tags( 'label', array( 'for' => 'wpMovesubpages' ), - $this->msg( - ( $this->oldTitle->hasSubpages() - ? 'move-subpages' - : 'move-talk-subpages' ) - )->numParams( $maximumMovedPages )->params( $maximumMovedPages )->parse() - ) . + " . + Xml::check( + 'wpMovesubpages', + # Don't check the box if we only have talk subpages to + # move and we aren't moving the talk page. + $this->moveSubpages && ( $this->oldTitle->hasSubpages() || $this->moveTalk ), + array( 'id' => 'wpMovesubpages' ) + ) . ' ' . + Xml::tags( + 'label', + array( 'for' => 'wpMovesubpages' ), + $this->msg( + ( $this->oldTitle->hasSubpages() + ? 'move-subpages' + : 'move-talk-subpages' ) + )->numParams( $maximumMovedPages )->params( $maximumMovedPages )->parse() + ) . " " ); @@ -448,32 +443,50 @@ class MovePageForm extends UnlistedSpecialPage { # Don't allow watching if user is not logged in if ( $user->isLoggedIn() ) { $out->addHTML( " - - - " . - Xml::checkLabel( - $this->msg( 'move-watch' )->text(), - 'wpWatch', - 'watch', - $watchChecked - ) . - " - " ); + + + " . + Xml::checkLabel( + $this->msg( 'move-watch' )->text(), + 'wpWatch', + 'watch', + $watchChecked + ) . + " + " + ); + } + + if ( $confirm ) { + $out->addHTML( " + + + " . + Xml::checkLabel( + $this->msg( 'delete_and_move_confirm' )->text(), + 'wpConfirm', + 'wpConfirm' + ) . + " + " + ); } $out->addHTML( " - {$confirm} -   + " . - Xml::submitButton( $movepagebtn, array( 'name' => $submitVar ) ) . + Xml::submitButton( $movepagebtn, array( 'name' => $submitVar ) ) . " - " . - Xml::closeElement( 'table' ) . - Html::hidden( 'wpEditToken', $user->getEditToken() ) . - Xml::closeElement( 'fieldset' ) . - Xml::closeElement( 'form' ) . - "\n" + " + ); + + $out->addHTML( + Xml::closeElement( 'table' ) . + Html::hidden( 'wpEditToken', $user->getEditToken() ) . + Xml::closeElement( 'fieldset' ) . + Xml::closeElement( 'form' ) . + "\n" ); $this->showLogFragment( $this->oldTitle ); @@ -549,10 +562,22 @@ class MovePageForm extends UnlistedSpecialPage { } # Do the actual move. - $error = $ot->moveTo( $nt, true, $this->reason, $createRedirect ); - if ( $error !== true ) { - $this->showForm( $error ); + $mp = new MovePage( $ot, $nt ); + $valid = $mp->isValidMove(); + if ( !$valid->isOK() ) { + $this->showForm( $valid->getErrorsArray() ); + return; + } + + $permStatus = $mp->checkPermissions( $user, $this->reason ); + if ( !$permStatus->isOK() ) { + $this->showForm( $permStatus->getErrorsArray() ); + return; + } + $status = $mp->move( $user, $this->reason, $createRedirect ); + if ( !$status->isOK() ) { + $this->showForm( $status->getErrorsArray() ); return; } @@ -592,7 +617,7 @@ class MovePageForm extends UnlistedSpecialPage { $newLink )->params( $oldText, $newText )->parseAsBlock() ); $out->addWikiMsg( $msgName ); - wfRunHooks( 'SpecialMovepageAfterMove', array( &$this, &$ot, &$nt ) ); + Hooks::run( 'SpecialMovepageAfterMove', array( &$this, &$ot, &$nt ) ); # Now we move extra pages we've been asked to move: subpages and talk # pages. First, if the old page or the new page is a talk page, we @@ -673,7 +698,10 @@ class MovePageForm extends UnlistedSpecialPage { $oldSubpage->getDBkey() ); - if ( $oldSubpage->isTalkPage() ) { + if ( $oldSubpage->isSubpage() && ( $ot->isTalkPage() xor $nt->isTalkPage() ) ) { + // Moving a subpage from a subject namespace to a talk namespace or vice-versa + $newNs = $nt->getNamespace(); + } elseif ( $oldSubpage->isTalkPage() ) { $newNs = $nt->getTalkPage()->getNamespace(); } else { $newNs = $nt->getSubjectPage()->getNamespace();