01tonythomas has uploaded a new change for review.
https://gerrit.wikimedia.org/r/319007
Change subject: Add in NewsletterDiffEngine to explore history
......................................................................
Add in NewsletterDiffEngine to explore history
Bug: T138462
Change-Id: I2dcc79762f8e129996e8f5f5dd6c568b0144102e
---
M Newsletter.hooks.php
M extension.json
M includes/NewsletterEditPage.php
A includes/content/NewsletterDiffEngine.php
4 files changed, 69 insertions(+), 6 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter
refs/changes/07/319007/1
diff --git a/Newsletter.hooks.php b/Newsletter.hooks.php
index 193808e..2410d69 100755
--- a/Newsletter.hooks.php
+++ b/Newsletter.hooks.php
@@ -166,10 +166,9 @@
$newsletter = Newsletter::newFromName(
$article->getTitle()->getText() );
if ( $newsletter ) {
// A newsletter exists in that title, lets redirect to
manage page
- $editPage = new NewsletterEditPage(
$article->getContext(), $newsletter, $user );
- $editPage->edit();
-
- return false;
+ $title = SpecialPage::getTitleFor( 'Newsletter',
$newsletter->getId() . '/' .
+ 'manage' );
+ $out->redirect( $title->getFullURL() );
}
$editPage = new NewsletterEditPage( $article->getContext() );
diff --git a/extension.json b/extension.json
index 740310f..6876d65 100644
--- a/extension.json
+++ b/extension.json
@@ -83,6 +83,7 @@
"ApiNewsletterSubscribe":
"includes/api/ApiNewsletterSubscribe.php",
"NewsletterContent": "includes/content/NewsletterContent.php",
"NewsletterContentHandler":
"includes/content/NewsletterContentHandler.php",
+ "NewsletterDiffEngine":
"includes/content/NewsletterDiffEngine.php",
"NewsletterDeletionUpdate":
"includes/content/NewsletterDeletionUpdate.php",
"EchoNewsletterUserLocator":
"includes/Echo/EchoNewsletterUserLocator.php",
"EchoNewsletterFormatter":
"includes/Echo/EchoNewsletterFormatter.php",
diff --git a/includes/NewsletterEditPage.php b/includes/NewsletterEditPage.php
index aab3708..4a35ac6 100644
--- a/includes/NewsletterEditPage.php
+++ b/includes/NewsletterEditPage.php
@@ -10,11 +10,10 @@
public function __construct( IContextSource $context, Newsletter
$newsletter = null, User $user = null) {
$this->context = $context;
- $this->user = $context->getUser();
+ $this->user = $user ? : $context->getUser();
$this->title = $context->getTitle();
$this->out = $context->getOutput();
$this->newsletter = $newsletter;
- $this->user = $user;
}
public function edit() {
diff --git a/includes/content/NewsletterDiffEngine.php
b/includes/content/NewsletterDiffEngine.php
new file mode 100644
index 0000000..939c81d
--- /dev/null
+++ b/includes/content/NewsletterDiffEngine.php
@@ -0,0 +1,64 @@
+<?php
+
+class NewsletterDiffEngine extends DifferenceEngine {
+ public function generateContentDiffBody( Content $old, Content $new ) {
+ if ( !( $old instanceof NewsletterContent )
+ || !( $new instanceof NewsletterContent ) ) {
+ throw new Exception( 'Cannot diff content types other
than NewsletterContent' );
+ }
+
+ $output = '';
+
+ $descDiff = $this->generateTextDiffBody(
+ $old->getDescription(), $new->getDescription()
+ );
+
+ if ( $descDiff ) {
+ if ( trim( $descDiff ) !== '' ) {
+ $output .= Html::openElement( 'tr' );
+ $output .= Html::openElement( 'td',
+ [ 'colspan' => 4, 'id' =>
'mw-newsletter-diffdescheader' ] );
+ $output .= Html::element( 'h4', [],
+ $this->msg(
'newsletter-diff-descheader' )->text() );
+ $output .= Html::closeElement( 'td' );
+ $output .= Html::closeElement( 'tr' );
+ $output .= $descDiff;
+ }
+ }
+
+ $mainPageDiff = $this->generateTextDiffBody(
+ $old->getMainPage(), $new->getMainPage()
+ );
+
+ if ( $mainPageDiff ) {
+ if( trim( $mainPageDiff ) !== '' ) {
+ $output .= Html::openElement( 'tr' );
+ $output .= Html::openElement( 'td',
+ [ 'colspan' => 4, 'id' =>
'mw-newsletter-diffmainpageheader' ] );
+ $output .= Html::element( 'h4', [],
+ $this->msg(
'newsletter-diff-mainpageheader' )->text() );
+ $output .= Html::closeElement( 'td' );
+ $output .= Html::closeElement( 'tr' );
+ $output .= $mainPageDiff;
+ }
+ }
+
+ $publishersDiff = $this->generateTextDiffBody(
+ implode( $old->getPublishers(), "\n" ),
+ implode( $new->getPublishers(), "\n" )
+ );
+
+ if ( trim( $publishersDiff ) !== '' ) {
+ $output .= Html::openElement( 'tr' );
+ $output .= Html::openElement( 'td',
+ [ 'colspan' => 4, 'id' =>
'mw-massmessage-diffpublishersheader' ] );
+ $output .= Html::element( 'h4', [],
+ $this->msg( 'massmessage-diff-publishersheader'
)->text() );
+ $output .= Html::closeElement( 'td' );
+ $output .= Html::closeElement( 'tr' );
+ $output .= $publishersDiff;
+ }
+
+ return $output;
+ }
+}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/319007
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2dcc79762f8e129996e8f5f5dd6c568b0144102e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: 01tonythomas <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits