[MediaWiki-commits] [Gerrit] mediawiki...Newsletter[master]: Introduce ContentHandler on the Newsletter CustomEditpage

2016-10-24 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Introduce ContentHandler on the Newsletter CustomEditpage
..


Introduce ContentHandler on the Newsletter CustomEditpage

* Added in the contenthandler model for Newsletter namespace.
* action=edit, now creates a Newsletter with the Newsletter Contentmodel.
* action=edit on an existing newsletter would redirect to the manage page.
* roll back a newsletter addition on failure to create a content page.

Bug: T138462
Change-Id: I89809a4ec1b524148199ff5d11ee4e96ae716919
---
M Newsletter.hooks.php
M extension.json
M i18n/en.json
M includes/Newsletter.php
M includes/NewsletterDb.php
M includes/NewsletterEditPage.php
M includes/NewsletterStore.php
A includes/content/NewsletterContent.php
A includes/content/NewsletterContentHandler.php
A includes/content/NewsletterDeletionUpdate.php
10 files changed, 694 insertions(+), 66 deletions(-)

Approvals:
  01tonythomas: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Newsletter.hooks.php b/Newsletter.hooks.php
index 0f4f747..2410d69 100755
--- a/Newsletter.hooks.php
+++ b/Newsletter.hooks.php
@@ -129,14 +129,50 @@
return true;
}
 
+   /**
+* @param EditPage $editPage
+* @return bool
+*/
+   public static function onAlternateEdit( EditPage $editPage ) {
+   $out = $editPage->getContext()->getOutput();
+   $title = $editPage->getTitle();
+
+   if ( $title->inNamespace( NS_NEWSLETTER ) ) {
+   if ( $title->hasContentModel( 'NewsletterContent' ) ) {
+   $newsletter = Newsletter::newFromName( 
$title->getText() );
+   if ( $newsletter ) {
+   $title = SpecialPage::getTitleFor( 
'Newsletter', $newsletter->getId() . '/' . 'manage' );
+   $out->redirect( $title->getFullURL() );
+   }
+   }
+   return false;
+   }
+
+   return true;
+   }
+
+   /**
+* @param Article $article
+* @param User $user
+* @return bool
+* @throws ReadOnlyError
+*/
public static function onCustomEditor( Article $article, User $user ) {
+   $out = $article->getContext()->getOutput();
if ( !$article->getTitle()->inNamespace( NS_NEWSLETTER ) ) {
return true;
}
 
+   $newsletter = Newsletter::newFromName( 
$article->getTitle()->getText() );
+   if ( $newsletter ) {
+   // A newsletter exists in that title, lets redirect to 
manage page
+   $title = SpecialPage::getTitleFor( 'Newsletter', 
$newsletter->getId() . '/' .
+   'manage' );
+   $out->redirect( $title->getFullURL() );
+   }
+
$editPage = new NewsletterEditPage( $article->getContext() );
$editPage->edit();
-
return false;
}
 }
diff --git a/extension.json b/extension.json
index 775f2ee..740310f 100644
--- a/extension.json
+++ b/extension.json
@@ -63,6 +63,9 @@
"ExtensionMessagesFiles": {
"NewsletterAlias": "Newsletter.alias.php"
},
+   "ContentHandlers": {
+   "NewsletterContent": "NewsletterContentHandler"
+   },
"AutoloadClasses": {
"Newsletter": "includes/Newsletter.php",
"NewsletterDb": "includes/NewsletterDb.php",
@@ -78,6 +81,9 @@
"NewsletterTablePager": 
"includes/specials/pagers/NewsletterTablePager.php",
"ApiNewsletterManage": "includes/api/ApiNewsletterManage.php",
"ApiNewsletterSubscribe": 
"includes/api/ApiNewsletterSubscribe.php",
+   "NewsletterContent": "includes/content/NewsletterContent.php",
+   "NewsletterContentHandler": 
"includes/content/NewsletterContentHandler.php",
+   "NewsletterDeletionUpdate": 
"includes/content/NewsletterDeletionUpdate.php",
"EchoNewsletterUserLocator": 
"includes/Echo/EchoNewsletterUserLocator.php",
"EchoNewsletterFormatter": 
"includes/Echo/EchoNewsletterFormatter.php",
"BaseNewsletterPresentationModel": 
"includes/Echo/BaseNewsletterPresentationModel.php",
@@ -145,6 +151,9 @@
"UserMergeAccountFields": [
"NewsletterHooks::onUserMergeAccountFields"
],
+   "AlternateEdit": [
+   "NewsletterHooks::onAlternateEdit"
+   ],
"CustomEditor": [
"NewsletterHooks::onCustomEditor"
]
@@ -154,7 +163,8 @@
"id": 5500,

[MediaWiki-commits] [Gerrit] mediawiki...Newsletter[master]: Introduce ContentHandler on the Newsletter CustomEditpage

2016-08-14 Thread 01tonythomas (Code Review)
01tonythomas has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/304692

Change subject: Introduce ContentHandler on the Newsletter CustomEditpage
..

Introduce ContentHandler on the Newsletter CustomEditpage

* Added in the contenthandler model for Newsletter namespace
* action=edit, now creates a Newsletter with the Newsletter Contentmodel

Bug: T138462
Change-Id: I89809a4ec1b524148199ff5d11ee4e96ae716919
---
M Newsletter.hooks.php
M extension.json
M includes/Newsletter.php
M includes/NewsletterDb.php
M includes/NewsletterEditPage.php
M includes/NewsletterStore.php
A includes/content/NewsletterContent.php
A includes/content/NewsletterContentHandler.php
8 files changed, 605 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter 
refs/changes/92/304692/1

diff --git a/Newsletter.hooks.php b/Newsletter.hooks.php
index 0f4f747..0076798 100755
--- a/Newsletter.hooks.php
+++ b/Newsletter.hooks.php
@@ -129,6 +129,31 @@
return true;
}
 
+   /**
+* @param EditPage $editPage
+*/
+   public static function onAlternateEdit( EditPage $editPage ) {
+   global $wgOut;
+   $title = $editPage->getTitle();
+
+   if ( $title->inNamespace( NS_NEWSLETTER ) ) {
+   if ( $title->hasContentModel( 'NewsletterContent' )  ) {
+   $newsletter = Newsletter::newFromName( 
$title->getText() );
+   if ( $newsletter ) {
+   $title = SpecialPage::getTitleFor( 
'Newsletter', $newsletter->getId() . '/' .
+   'manage' );
+   $wgOut->redirect( $title->getFullURL() 
);
+   }
+   }
+   }
+   }
+
+   /**
+* @param Article $article
+* @param User $user
+* @return bool
+* @throws ReadOnlyError
+*/
public static function onCustomEditor( Article $article, User $user ) {
if ( !$article->getTitle()->inNamespace( NS_NEWSLETTER ) ) {
return true;
@@ -136,7 +161,6 @@
 
$editPage = new NewsletterEditPage( $article->getContext() );
$editPage->edit();
-
return false;
}
 }
diff --git a/extension.json b/extension.json
index 775f2ee..383e95d 100644
--- a/extension.json
+++ b/extension.json
@@ -63,6 +63,9 @@
"ExtensionMessagesFiles": {
"NewsletterAlias": "Newsletter.alias.php"
},
+   "ContentHandlers": {
+   "NewsletterContent": "NewsletterContentHandler"
+   },
"AutoloadClasses": {
"Newsletter": "includes/Newsletter.php",
"NewsletterDb": "includes/NewsletterDb.php",
@@ -78,6 +81,8 @@
"NewsletterTablePager": 
"includes/specials/pagers/NewsletterTablePager.php",
"ApiNewsletterManage": "includes/api/ApiNewsletterManage.php",
"ApiNewsletterSubscribe": 
"includes/api/ApiNewsletterSubscribe.php",
+   "NewsletterContent": "includes/content/NewsletterContent.php",
+   "NewsletterContentHandler": 
"includes/content/NewsletterContentHandler.php",
"EchoNewsletterUserLocator": 
"includes/Echo/EchoNewsletterUserLocator.php",
"EchoNewsletterFormatter": 
"includes/Echo/EchoNewsletterFormatter.php",
"BaseNewsletterPresentationModel": 
"includes/Echo/BaseNewsletterPresentationModel.php",
@@ -145,6 +150,9 @@
"UserMergeAccountFields": [
"NewsletterHooks::onUserMergeAccountFields"
],
+   "AlternateEdit": [
+   "NewsletterHooks::onAlternateEdit"
+   ],
"CustomEditor": [
"NewsletterHooks::onCustomEditor"
]
@@ -154,7 +162,8 @@
"id": 5500,
"constant": "NS_NEWSLETTER",
"name": "Newsletter",
-   "protection": "newsletter-create"
+   "protection": "newsletter-create",
+   "defaultcontentmodel": "NewsletterContent"
},
{
"id": 5501,
diff --git a/includes/Newsletter.php b/includes/Newsletter.php
index 26dbd74..a630511 100644
--- a/includes/Newsletter.php
+++ b/includes/Newsletter.php
@@ -62,6 +62,16 @@
}
 
/**
+* Fetch a new newsletter instance from given name
+*
+* @param string $name
+* @return Newsletter|null
+*/
+   public static function newFromName( $name ) {
+   return 
NewsletterStore::getDefaultInstance()->getNewsletterFromName( $name );
+