[MediaWiki-commits] [Gerrit] mediawiki...Newsletter[master]: Introduce ContentHandler on the Newsletter CustomEditpage
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
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 ); +