Addshore has uploaded a new change for review.

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

Change subject: Split forms & Logic on Manage Special Page
......................................................................

Split forms & Logic on Manage Special Page

This makes the code much easier to read and follow.
There is now a seperate method to build each
of the forms as well as a seperate method for
the return of the submitted form result...

Change-Id: Ice3f93575ec15cc57f1e98ab8c26eb2b1ef6a056
---
M i18n/en.json
M i18n/qqq.json
M includes/specials/SpecialNewsletterManage.php
3 files changed, 63 insertions(+), 36 deletions(-)


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

diff --git a/i18n/en.json b/i18n/en.json
index 68d316a..e648f97 100755
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -23,7 +23,7 @@
        "newsletter-exist-error": "A newsletter with the same name already 
exists. Try again with another name",
        "newsletter-mainpage-not-found-error": "The Newsletter main page cannot 
be found. Please try again",
        "newsletter-announceissueform-announceissue-section": "Announce new 
issue",
-       "newsletter-announceissueform-addpublisher-section": "Add publishers",
+       "newsletter-addpublisherform-addpublisher-section": "Add publishers",
        "newsletter-create-section": "Create newsletter",
        "newsletter-create-submit": "Create newsletter",
        "newsletter-create-confirmation": "A new newsletter has been 
successfully created. You can manage newsletters through 
[[Special:ManageNewsletter]].",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index a65d318..5c1ec3d 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -25,7 +25,7 @@
        "newsletter-exist-error": "Error message to be displayed in 
[[Special:NewsletterCreate]] when trying to create a newsletter with same name 
as an existing newsletter",
        "newsletter-mainpage-not-found-error": "Error message to be displayed 
in [[Special:NewsletterCreate]] when trying to create a newsletter with invalid 
main page",
        "newsletter-announceissueform-announceissue-section": "Header of 
section in [[Special:NewsletterManage]] which announces issues",
-       "newsletter-announceissueform-addpublisher-section": "Header of section 
in [[Special:NewsletterManage]] which adds publishers",
+       "newsletter-addpublisherform-addpublisher-section": "Header of section 
in [[Special:NewsletterManage]] which adds publishers",
        "newsletter-create-section": "Section header of 
[[Special:NewsletterCreate]]",
        "newsletter-create-submit": "Label of submit button on 
[[Special:NewsletterCreate]]",
        "newsletter-create-confirmation": "Confirmation message displayed after 
creation of a newsletter",
diff --git a/includes/specials/SpecialNewsletterManage.php 
b/includes/specials/SpecialNewsletterManage.php
index 299f34f..8a5ba23 100644
--- a/includes/specials/SpecialNewsletterManage.php
+++ b/includes/specials/SpecialNewsletterManage.php
@@ -18,21 +18,27 @@
                $output->addModules( 'ext.newslettermanage' );
                $output->setSubtitle( LinksGenerator::getSubtitleLinks() );
                $this->requireLogin();
-               $announceIssueArray = $this->getAnnounceFormFields();
 
                # Create HTML forms
                $announceIssueForm = new HTMLForm(
-                       $announceIssueArray,
+                       $this->getAnnounceFormFields(),
                        $this->getContext(),
                        'newsletter-announceissueform'
                );
                $announceIssueForm->setSubmitCallback( array( $this, 
'onSubmitIssue' ) );
+               $addPublisherForm = new HTMLForm(
+                       $this->getPublisherFormFields(),
+                       $this->getContext(),
+                       'newsletter-addpublisherform'
+               );
+               $addPublisherForm->setSubmitCallback( array( $this, 
'onSubmitPublisher' ) );
 
                $pager = new NewsletterManageTablePager();
                if ( $pager->getNumRows() > 0 ) {
                        $output->addParserOutput( $pager->getFullOutput() );
                        // Show HTML forms
                        $announceIssueForm->show();
+                       $addPublisherForm->show();
                } else {
                        $output->showErrorPage( 'newslettermanage', 
'newsletter-none-found' );
                }
@@ -44,10 +50,7 @@
         *
         * @return array
         */
-       protected function getAnnounceFormFields() {
-               $newsletterNames = array();
-               $ownedNewsletter = array();
-               $defaultOption = array( '' => null );
+       private function getAnnounceFormFields() {
                $dbr = wfGetDB( DB_SLAVE );
 
                $publishersTable = PublishersTable::newFromGlobalState();
@@ -55,6 +58,7 @@
                        $this->getUser()->getId()
                );
 
+               $newsletterNames = array();
                foreach ( $userPublishedNewsletters as $value ) {
                        $resl = $dbr->select(
                                'nl_newsletters',
@@ -68,36 +72,12 @@
                        }
                }
 
-               $newsletters = array();
-               $result = $dbr->select(
-                       'nl_newsletters',
-                       array( 'nl_name', 'nl_id' ),
-                       array( 'nl_owner_id' => $this->getUser()->getId() ),
-                       __METHOD__
-               );
-               foreach ( $result as $row ) {
-                       $newsletters[$row->nl_name] = $row->nl_id;
-               }
-               // Get newsletters owned by the logged in user
-               $dbr = wfGetDB( DB_SLAVE );
-               $query = $dbr->select(
-                       'nl_newsletters',
-                       array( 'nl_name', 'nl_id' ),
-                       array( 'nl_owner_id' => $this->getUser()->getId() ),
-                       __METHOD__,
-                       array()
-               );
-
-               foreach ( $query as $row ) {
-                       $ownedNewsletter[$row->nl_name] = $row->nl_id;
-               }
-
                return array(
                        'issue-newsletter' => array(
                                'type' => 'select',
                                'section' => 'announceissue-section',
                                'label-message' => 'newsletter-name',
-                               'options' => array_merge( $defaultOption, 
$newsletterNames ),
+                               'options' => array_merge( array( '' => null ), 
$newsletterNames ),
                        ),
                        'issue-page' => array(
                                'type' => 'text',
@@ -108,11 +88,36 @@
                                'type' => 'hidden',
                                'default' => $this->getUser()->getId(),
                        ),
+               );
+       }
+
+       /**
+        * Function to generate Add Publisher form
+        *
+        * @return array
+        */
+       private function getPublisherFormFields() {
+               // Get newsletters owned by the logged in user
+               $dbr = wfGetDB( DB_SLAVE );
+               $query = $dbr->select(
+                       'nl_newsletters',
+                       array( 'nl_name', 'nl_id' ),
+                       array( 'nl_owner_id' => $this->getUser()->getId() ),
+                       __METHOD__,
+                       array()
+               );
+
+               $ownedNewsletter = array();
+               foreach ( $query as $row ) {
+                       $ownedNewsletter[$row->nl_name] = $row->nl_id;
+               }
+
+               return array(
                        'newsletter-name' => array(
                                'type' => 'select',
                                'section' => 'addpublisher-section',
                                'label-message' => 'newsletter-name',
-                               'options' => array_merge( $defaultOption, 
$ownedNewsletter ),
+                               'options' => array_merge( array( '' => null ), 
$ownedNewsletter ),
                        ),
                        'publisher-name' => array(
                                'section' => 'addpublisher-section',
@@ -131,8 +136,13 @@
         * @return bool|array true on success, array on error
         */
        public function onSubmitIssue( $formData ) {
-               $newsletterId = $formData['issue-newsletter'];
+               if ( !isset( $formData['issue-page'] ) || !isset( 
$formData['issue-newsletter'] ) ) {
+                       // This is not the form that was submitted
+                       return false;
+               }
+
                if ( !empty( $formData['issue-page'] ) && !empty( 
$formData['issue-newsletter'] ) ) {
+                       $newsletterId = $formData['issue-newsletter'];
                        $issuePage = Title::newFromText( 
$formData['issue-page'] );
                        $pageId = $issuePage->getArticleId();
                        $pageNamepace = $issuePage->getNamespace();
@@ -190,6 +200,23 @@
                        }
                }
 
+               return array( 'newsletter-required-fields-error' );
+       }
+
+       /**
+        * Perform insert query on issues table with data retrieved from HTML
+        * form for announcing issues
+        *
+        * @param array $formData The data entered by user in the form
+        *
+        * @return bool|array true on success, array on error
+        */
+       public function onSubmitPublisher( $formData ) {
+               if ( !isset( $formData['newsletter-name'] ) || !isset( 
$formData['publisher-name'] ) ) {
+                       // This is not the form that was submitted
+                       return false;
+               }
+
                if ( !empty( $formData['newsletter-name'] ) && !empty( 
$formData['publisher-name'] ) ) {
                        $pubNewsletterId = $formData['newsletter-name'];
                        $user = User::newFromName( $formData['publisher-name'] 
);
@@ -211,9 +238,9 @@
                        $this->getOutput()->addWikiMsg( 
'newsletter-new-publisher-confirmation' );
 
                        return true;
-
                }
 
                return array( 'newsletter-required-fields-error' );
        }
+
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ice3f93575ec15cc57f1e98ab8c26eb2b1ef6a056
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

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

Reply via email to