Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Wikipedia: Mediawiki-CVS

[MediaWiki-commits] [Gerrit] Allow to duplicate subpages - change (mediawiki...Duplicator)

 

 

Wikipedia mediawiki-cvs RSS feed   Index | Next | Previous | View Threaded


gerrit at wikimedia

Aug 11, 2013, 11:02 AM

Post #1 of 1 (9 views)
Permalink
[MediaWiki-commits] [Gerrit] Allow to duplicate subpages - change (mediawiki...Duplicator)

VitaliyFilippov has submitted this change and it was merged.

Change subject: Allow to duplicate subpages
......................................................................


Allow to duplicate subpages

Change-Id: I950ec49fc91f7a99c0722771f8498b15033e86d5
---
M Duplicator.i18n.php
M Duplicator.page.php
2 files changed, 47 insertions(+), 1 deletion(-)

Approvals:
VitaliyFilippov: Verified; Looks good to me, approved



diff --git a/Duplicator.i18n.php b/Duplicator.i18n.php
index 985b8d7..3d56a33 100644
--- a/Duplicator.i18n.php
+++ b/Duplicator.i18n.php
@@ -19,6 +19,7 @@
'duplicator-source' => 'Source:',
'duplicator-dest' => 'Destination:',
'duplicator-dotalk' => 'Duplicate discussion page (if applicable)',
+ 'duplicator-dosubpages' => 'Duplicate subpages (if any)',
'duplicator-dohistory' => 'Duplicate full page history',
'duplicator-submit' => 'Duplicate',
'duplicator-summary' => 'Copied from [[$1]], revision [[$2]]',
@@ -1540,6 +1541,7 @@
'duplicator-source' => 'Откуда:',
'duplicator-dest' => 'Куда:',
'duplicator-dotalk' => 'Клонировать страницу обсуждения (если возможно)',
+ 'duplicator-dosubpages' => 'Клонировать подстраницы (если есть)',
'duplicator-dohistory' => 'Клонировать историю изменений',
'duplicator-submit' => 'Клонировать',
'duplicator-summary' => 'Копия ревизии [[$2]] статьи [[$1]]',
diff --git a/Duplicator.page.php b/Duplicator.page.php
index 1439e26..50d1145 100644
--- a/Duplicator.page.php
+++ b/Duplicator.page.php
@@ -23,9 +23,10 @@
protected $destTitle = null;

/**
- * Whether or not we're duplicating the talk page and the history
+ * Whether or not we're duplicating the talk page, subpages, and the history
*/
protected $talk = true;
+ protected $subpages = true;
protected $history = true;

/**
@@ -98,6 +99,10 @@
if( $num ) {
$success = '* ' . wfMsgNoTrans( 'duplicator-success', $this->sourceTitle->getPrefixedText(), $this->destTitle->getPrefixedText() );
$success .= ' ' . wfMsgNoTrans( 'duplicator-success-revisions', $wgLang->formatNum( $num ) ) . "\n";
+ # If there are subpages and we've been asked to duplicate them, do so
+ if ( $this->subpages ) {
+ $success .= $this->duplicateSubpages( $this->sourceTitle, $this->destTitle, $this->history );
+ }
# If there is a talk page and we've been asked to duplicate it, do so
if( $this->talk && $this->dealWithTalk() ) {
$st = $this->sourceTitle->getTalkPage();
@@ -106,6 +111,9 @@
if ( $num ) {
$success .= '* ' . wfMsgNoTrans( 'duplicator-success', $st->getPrefixedText(), $dt->getPrefixedText() );
$success .= ' ' . wfMsgNoTrans( 'duplicator-success-revisions', $wgLang->formatNum( $num ) ) . "\n";
+ if ( $this->subpages ) {
+ $success .= $this->duplicateSubpages( $st, $dt, $this->history );
+ }
} else {
$success .= '* ' . wfMsgNoTrans( 'duplicator-success-talknotcopied' ) . "\n";
}
@@ -133,6 +141,7 @@
$this->dest = $request->getText( 'dest', '' );
$this->destTitle = Title::newFromText( $this->dest );
$this->talk = $request->getCheck( 'talk' );
+ $this->subpages = $request->getCheck( 'subpages' );
$this->history = $request->getCheck( 'history' );
}

@@ -179,6 +188,9 @@
$form .= '<td>' . Xml::checkLabel( wfMsg( 'duplicator-dotalk' ), 'talk', 'talk', $this->talk ) . '</td>';
$form .= '</tr><tr>';
$form .= '<td>&#160;</td>';
+ $form .= '<td>' . Xml::checkLabel( wfMsg( 'duplicator-dosubpages' ), 'subpages', 'subpages', $this->subpages ) . '</td>';
+ $form .= '</tr><tr>';
+ $form .= '<td>&#160;</td>';
$form .= '<td>' . Xml::checkLabel( wfMsg( 'duplicator-dohistory' ), 'history', 'history', $this->history ) . '</td>';
$form .= '</tr><tr>';
$form .= '<td>&#160;</td>';
@@ -191,6 +203,38 @@
}

/**
+ * Duplicate subpages of $source to $dest
+ *
+ * @param $source Title to duplicate subpages for
+ * @param $dest Title to save subpages to
+ * @return bool
+ */
+ protected function duplicateSubpages( $source, $dest, $includeHistory ) {
+ global $wgLang;
+ $subpages = $source->getSubpages();
+ $len = strlen( $source->getText() );
+ $ns = $dest->getNamespace();
+ $dest = $dest->getText();
+ $success = '';
+ foreach ( $subpages as $sub ) {
+ $destSub = Title::makeTitleSafe( $ns, $dest . substr( $sub->getText(), $len ) );
+ if ( $destSub ) {
+ if ( $destSub->exists() ) {
+ $success .= '* ' . wfMsgNoTrans( 'duplicator-failed-dest-exists', $sub->getPrefixedText(), $destSub->getPrefixedText() ) . "\n";
+ } else {
+ $num = $this->duplicate( $sub, $destSub, $this->history );
+ $success .= '* ' . wfMsgNoTrans( 'duplicator-success', $sub->getPrefixedText(), $destSub->getPrefixedText() );
+ $success .= ' ' . wfMsgNoTrans( 'duplicator-success-revisions', $wgLang->formatNum( $num ) ) . "\n";
+ }
+ } else {
+ # Bad title error can only occur here because of the destination title being too long
+ $success .= '* ' . wfMsgNoTrans( 'duplicator-failed-toolong', $sub->getPrefixedText() ) . "\n";
+ }
+ }
+ return $success;
+ }
+
+ /**
* Duplicate one page to another, including full histories
* Does some basic error-catching, but not as much as the code above [should]
*

--
To view, visit https://gerrit.wikimedia.org/r/65979
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I950ec49fc91f7a99c0722771f8498b15033e86d5
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Duplicator
Gerrit-Branch: master
Gerrit-Owner: VitaliyFilippov <vitalif [at] yourcmc>
Gerrit-Reviewer: VitaliyFilippov <vitalif [at] yourcmc>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits [at] lists
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Wikipedia mediawiki-cvs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.