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