/** * Generate a "deletion nomination" form. * @param $article Article object to nominate. */ public function buildForm($article, $queue) { global $wgOut, $wgScript, $wgUser, $wgRequest; // Check for submission if ($this->trySubmit($article, $queue)) { return; } $wgOut->setPageTitle(wfMsg("deletequeue-{$queue}-title", $article->mTitle->getPrefixedText())); $wgOut->addWikiMsg("deletequeue-{$queue}-text", $article->mTitle->getPrefixedText()); // Build deletion form. $fields = array(); $fields['deletequeue-delnom-reason'] = Xml::listDropDown('wpReason', DeleteQueueInterface::getReasonList($queue), wfMsg("deletequeue-delnom-otherreason")); $fields['deletequeue-delnom-extra'] = Xml::input('wpExtra', 45); $article_id = $article->getId(); $title = $this->getTitle("nominate/{$article_id}/{$queue}"); $form = Xml::buildForm($fields, "deletequeue-delnom-submit"); $form .= Html::Hidden('title', $title->getPrefixedText()); $form .= Html::Hidden('queue', $queue); $form .= Html::Hidden('wpEditToken', $wgUser->editToken()); $form = Xml::tags('form', array('action' => $title->getLocalUrl(), 'method' => 'POST'), $form); $wgOut->addHTML($form); }
/** * Process the "Review Speedy" action * @param $article Article object being reviewed */ public function show($params) { global $wgOut, $wgScript, $wgUser, $wgRequest; list($action, $case_id) = $params; $dqi = DeleteQueueItem::newFromId($case_id); $article = $this->mArticle = $dqi->getArticle(); $queue = $dqi->getQueue(); if (!$queue) { // ... $wgOut->addWikiMsg('deletequeue-notqueued'); return; } // Check permissions $editErrors = $article->mTitle->getUserPermissionsErrors('edit', $wgUser); $nomErrors = $article->mTitle->getUserPermissionsErrors("{$queue}-review", $wgUser); if (count(array_merge($editErrors, $nomErrors))) { // Permissions errors. if (count($editErrors)) { $editError = $wgOut->formatPermissionsErrorMessage($editErrors, 'edit'); $nomErrors[] = array('deletequeue-permissions-noedit', $editError); } $wgOut->showPermissionsErrorPage($nomErrors, "{$queue}-review"); return; } list($enabledActions, $disabledActions) = $this->availableActions(); $haveRequeueOption = false; $shownActions = array_merge(array_keys($disabledActions), $enabledActions); foreach ($shownActions as $val) { if (strpos($val, 'requeue') == 0) { $haveRequeueOption = true; } } if (($error = $this->submit($article)) === true) { $wgOut->setPageTitle(wfMsg("deletequeue-review-success-title")); $wgOut->addWikiMsg("deletequeue-review-success"); return; } $wgOut->setPageTitle(wfMsg("deletequeue-review{$queue}-title", $article->mTitle->getPrefixedText())); $discussionPage = $queue == 'deletediscuss' ? $dqi->getDiscussionPage()->mTitle->getPrefixedText() : null; $wgOut->addWikiMsg("deletequeue-review{$queue}-text", $article->mTitle->getPrefixedText(), $discussionPage); // Cautions if there's an objection if (count($dqi->mVotesObject) > 0) { $wgOut->addWikiMsg("deletequeue-review-objections", count($dqi->mVotesObject)); } if ($error) { $wgOut->addHTML('<p>' . $error . '</p>'); } // Details of nomination $wgOut->addHTML(Xml::openElement('fieldset') . Xml::element('legend', array(), wfMsg('deletequeue-review-original'))); $wgOut->addWikitext($dqi->getReason()); $wgOut->addHTML(Xml::closeElement('fieldset')); $output = ''; // Give the user options $option_selection = ''; // // Action radio buttons // Accept the nomination as-is $accept = Xml::radioLabel(wfMsg('deletequeue-review-delete'), 'wpSpeedyAction', 'delete', 'mw-review-accept'); $option_selection .= $this->getActionOrError('delete', $accept, null, Xml::tags('li', array(), '$1')); // Accept nomination, but with a different reasoning. $change_option = Xml::radioLabel(wfMsg('deletequeue-review-change'), 'wpSpeedyAction', 'change', 'mw-review-change'); $change_fields = array(); $change_fields['deletequeue-review-newreason'] = Xml::listDropDown('wpSpeedyNewReason', DeleteQueueInterface::getReasonList($queue), wfMsg('deletequeue-delnom-otherreason')); $change_fields['deletequeue-review-newextra'] = Xml::input('wpSpeedyNewExtra', 45, ''); $change_option .= Xml::buildForm($change_fields); $option_selection .= $this->getActionOrError('delete', $change_option, wfMsgExt('deletequeue-review-change', array('parseinline')), Xml::tags('li', array(), '$1')); // Reject nomination, queue into a different deletion queue. if ($haveRequeueOption) { $requeue_option = Xml::radioLabel(wfMsg('deletequeue-review-requeue'), 'wpSpeedyAction', 'requeue', 'mw-review-requeue'); $new_queues = array('prod', 'deletediscuss'); $requeue_queues = ''; foreach ($new_queues as $option) { $this_queue = Xml::radioLabel(wfMsg("deletequeue-queue-{$option}"), 'wpSpeedyRequeue', $option, "mw-review-requeue-{$option}"); $disabledMsg = wfMsgExt("deletequeue-requeuedisabled", array('parseinline'), array(wfMsgNoTrans("deletequeue-queue-{$option}"))); $requeue_queues .= $this->getActionOrError("requeue-{$option}", $this_queue, $disabledMsg, Xml::tags('li', array(), '$1')); } $requeue_option .= Xml::tags('ul', array(), $requeue_queues); $requeue_fields = array(); $requeue_fields['deletequeue-review-newreason'] = Xml::listDropDown('wpSpeedyNewReason', DeleteQueueInterface::getReasonList('generic'), wfMsg("deletequeue-delnom-otherreason")); $requeue_fields['deletequeue-review-newextra'] = Xml::input('wpSpeedyNewExtra', 45, ''); $requeue_option .= Xml::buildForm($requeue_fields); $option_selection .= Xml::tags('li', array(), $requeue_option); } // Reject nomination outright. $dq = Xml::radioLabel(wfMsg('deletequeue-review-dequeue'), 'wpSpeedyAction', 'dequeue', 'mw-review-dequeue'); $option_selection .= $this->getActionOrError('dequeue', $dq, null, Xml::tags('li', array(), '$1')); // // Convert to a list. $option_selection = Xml::tags('ul', array(), $option_selection); $option_selection = Xml::fieldset(wfMsg('deletequeue-review-action'), $option_selection); $output .= $option_selection; // Reason etc. $fields = array('deletequeue-review-reason' => Xml::input('wpReason', 45, null)); $output .= Xml::buildForm($fields, 'deletequeue-review-submit'); // Form stuff $output .= Html::Hidden('title', $this->getTitle("case/" . $dqi->getCaseID() . "/review")); $output .= Html::Hidden('wpEditToken', $wgUser->editToken()); $output = Xml::tags('form', array('action' => $article->mTitle->getLocalURL(), 'method' => 'POST'), $output); $wgOut->addHTML($output); }