/** * Render the special page * @param string|null $par Username to get uploads from */ public function executeWhenAvailable($par = '') { if (($par === '' || $par === null) && $this->getUser()->isAnon()) { // Anons don't get to see Special:Uploads $this->requireLogin('mobile-frontend-donate-image-anon'); } else { // uploads by a particular user, i.e Special:Uploads/username, are shown even to anons $this->setHeaders(); $output = $this->getOutput(); $output->addJsConfigVars('wgMFPhotoUploadEndpoint', $this->getMFConfig()->get('MFPhotoUploadEndpoint')); if ($par !== '' && $par !== null) { $user = User::newFromName($par); if (!$user || $user->isAnon()) { $output->setPageTitle($this->msg('mobile-frontend-donate-image-title-username', $par)); $output->setStatusCode(404); $html = MobileUI::contentElement(MobileUI::errorBox($this->msg('mobile-frontend-photo-upload-invalid-user', $par))); } else { if ($user->equals($this->getUser())) { $output->setPageTitle($this->msg('mobile-frontend-donate-image-title-you')); } else { $output->setPageTitle($this->msg('mobile-frontend-donate-image-title-username', $par)); } $html = $this->getUserUploadsPageHtml($user); } } else { $user = $this->getUser(); $output->setPageTitle($this->msg('mobile-frontend-donate-image-title-you')); // TODO: what if the user cannot upload to the destination wiki in $wgMFPhotoUploadEndpoint? $html = $this->getUserUploadsPageHtml($user); } $output->addHTML($html); } }
/** * Show error page, that the user does not exist, or no user provided * @param string $msgKey Message key to use as error message body * @return string */ protected function displayNoUserError($msgKey) { $out = $this->getOutput(); // generate a user friendly error with a meaningful message $html = MobileUI::contentElement(MobileUI::errorBox(Html::element('h2', array(), $this->msg('mobile-frontend-profile-error')) . Html::element('p', array(), $this->msg($msgKey)))); // return page with status code 404, instead of 200 and output the error page $out->setStatusCode(404); $out->addHtml($html); }
/** * Render Special Page Nearby * @param string $par Parameter submitted as subpage */ public function executeWhenAvailable($par = '') { $this->setHeaders(); $output = $this->getOutput(); // set config $output->addJsConfigVars('wgMFNearbyRange', $this->getMFConfig()->get('MFNearbyRange')); $output->setPageTitle(wfMessage('mobile-frontend-nearby-title')->escaped()); $html = Html::openElement('div', array('class' => 'content-unstyled', 'id' => 'mw-mf-nearby')) . MobileUI::contentElement(MobileUI::errorBox(Html::element('h2', array(), wfMessage('mobile-frontend-nearby-requirements')) . Html::element('p', array(), wfMessage('mobile-frontend-nearby-requirements-guidance'))), 'noscript') . Html::closeElement('div'); // #mw-mf-nearby $output->addHTML($html); }
/** * Render the page with a list of languages the page is available in * @param string $pagename The name of the page */ public function executeWhenAvailable($pagename) { if (!is_string($pagename) || $pagename === '') { wfHttpError(404, $this->msg('mobile-frontend-languages-404-title')->text(), $this->msg('mobile-frontend-languages-404-desc')->text()); return; } $this->title = Title::newFromText($pagename); $output = $this->getOutput(); $html = ''; if ($this->title && $this->title->exists()) { $titlename = $this->title->getPrefixedText(); $pageTitle = $this->msg('mobile-frontend-languages-header-page', $titlename)->text(); $languages = $this->getLanguages(); $variants = $this->getLanguageVariants(); $languagesCount = count($languages); $variantsCount = count($variants); $html .= Html::element('p', array(), $this->msg('mobile-frontend-languages-text')->params($titlename)->numParams($languagesCount)->text()); $html .= Html::openElement('p'); $html .= Html::element('a', array('href' => $this->title->getLocalUrl()), $this->msg('returnto', $titlename)->text()); $html .= Html::closeElement('p'); if ($languagesCount > 0 || $variantsCount > 1) { // Language variants first if ($variantsCount > 1) { $variantHeader = $variantsCount > 1 ? $this->msg('mobile-frontend-languages-variant-header')->text() : ''; $html .= Html::element('h2', array('id' => 'mw-mf-language-variant-header'), $variantHeader); $html .= Html::openElement('ul', array('id' => 'mw-mf-language-variant-selection')); foreach ($variants as $val) { $html .= $this->makeLangListItem($val); } $html .= Html::closeElement('ul'); } // Then other languages if ($languagesCount > 0) { $languageHeader = $this->msg('mobile-frontend-languages-header')->text(); $html .= Html::element('h2', array('id' => 'mw-mf-language-header'), $languageHeader) . Html::openElement('ul', array('id' => 'mw-mf-language-selection')); foreach ($languages as $val) { $html .= $this->makeLangListItem($val); } $html .= Html::closeElement('ul'); } } } else { $pageTitle = $this->msg('mobile-frontend-languages-header')->text(); $html .= Html::element('p', array(), $this->msg('mobile-frontend-languages-nonexistent-title')->params($pagename)->text()); } $html = MobileUI::contentElement($html); $output->setPageTitle($pageTitle); $output->addHTML($html); }