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

Reply via email to