本文整理汇总了PHP中Linker::formatTemplates方法的典型用法代码示例。如果您正苦于以下问题:PHP Linker::formatTemplates方法的具体用法?PHP Linker::formatTemplates怎么用?PHP Linker::formatTemplates使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Linker
的用法示例。
在下文中一共展示了Linker::formatTemplates方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: readOnlyPage
/**
* Display a page stating that the Wiki is in read-only mode,
* and optionally show the source of the page that the user
* was trying to edit. Should only be called (for this
* purpose) after wfReadOnly() has returned true.
*
* For historical reasons, this function is _also_ used to
* show the error message when a user tries to edit a page
* they are not allowed to edit. (Unless it's because they're
* blocked, then we show blockedPage() instead.) In this
* case, the second parameter should be set to true and a list
* of reasons supplied as the third parameter.
*
* @todo Needs to be split into multiple functions.
*
* @param string $source Source code to show (or null).
* @param bool $protected Is this a permissions error?
* @param array $reasons List of reasons for this error, as returned by Title::getUserPermissionsErrors().
* @param string $action Action that was denied or null if unknown
* @throws ReadOnlyError
*/
public function readOnlyPage($source = null, $protected = false, $reasons = array(), $action = null)
{
$this->setRobotPolicy('noindex,nofollow');
$this->setArticleRelated(false);
// If no reason is given, just supply a default "I can't let you do
// that, Dave" message. Should only occur if called by legacy code.
if ($protected && empty($reasons)) {
$reasons[] = array('badaccess-group0');
}
if (!empty($reasons)) {
// Permissions error
if ($source) {
$this->setPageTitle($this->msg('viewsource-title', $this->getTitle()->getPrefixedText()));
$this->addBacklinkSubtitle($this->getTitle());
} else {
$this->setPageTitle($this->msg('badaccess'));
}
$this->addWikiText($this->formatPermissionsErrorMessage($reasons, $action));
} else {
// Wiki is read only
throw new ReadOnlyError();
}
// Show source, if supplied
if (is_string($source)) {
$this->addWikiMsg('viewsourcetext');
$pageLang = $this->getTitle()->getPageLanguage();
$params = array('id' => 'wpTextbox1', 'name' => 'wpTextbox1', 'cols' => $this->getUser()->getOption('cols'), 'rows' => $this->getUser()->getOption('rows'), 'readonly' => 'readonly', 'lang' => $pageLang->getHtmlCode(), 'dir' => $pageLang->getDir());
$this->addHTML(Html::element('textarea', $params, $source));
// Show templates used by this article
$templates = Linker::formatTemplates($this->getTitle()->getTemplateLinksFrom());
$this->addHTML("<div class='templatesUsed'>\n{$templates}\n</div>\n");
}
# If the title doesn't exist, it's fairly pointless to print a return
# link to it. After all, you just tried editing it and couldn't, so
# what's there to do there?
if ($this->getTitle()->exists()) {
$this->returnToMain(null, $this->getTitle());
}
}
示例2: showEditForm
/**
* Send the edit form and related headers to $wgOut
* @param $formCallback Callback that takes an OutputPage parameter; will be called
* during form output near the top, for captchas and the like.
*/
function showEditForm($formCallback = null)
{
global $wgOut, $wgUser;
wfProfileIn(__METHOD__);
#need to parse the preview early so that we know which templates are used,
#otherwise users with "show preview after edit box" will get a blank list
#we parse this near the beginning so that setHeaders can do the title
#setting work instead of leaving it in getPreviewText
$previewOutput = '';
if ($this->formtype == 'preview') {
$previewOutput = $this->getPreviewText();
}
wfRunHooks('EditPage::showEditForm:initial', array(&$this));
$this->setHeaders();
if ($this->showHeader() === false) {
wfProfileOut(__METHOD__);
return;
}
$wgOut->addHTML($this->editFormPageTop);
if ($wgUser->getOption('previewontop')) {
$this->displayPreviewArea($previewOutput, true);
}
$wgOut->addHTML($this->editFormTextTop);
$showToolbar = true;
if ($this->wasDeletedSinceLastEdit()) {
if ($this->formtype == 'save') {
// Hide the toolbar and edit area, user can click preview to get it back
// Add an confirmation checkbox and explanation.
$showToolbar = false;
} else {
$wgOut->wrapWikiMsg("<div class='error mw-deleted-while-editing'>\n\$1\n</div>", 'deletedwhileediting');
}
}
$wgOut->addHTML(Html::openElement('form', array('id' => 'editform', 'name' => 'editform', 'method' => 'post', 'action' => $this->getActionURL($this->getContextTitle()), 'enctype' => 'multipart/form-data')));
if (is_callable($formCallback)) {
call_user_func_array($formCallback, array(&$wgOut));
}
wfRunHooks('EditPage::showEditForm:fields', array(&$this, &$wgOut));
// Put these up at the top to ensure they aren't lost on early form submission
$this->showFormBeforeText();
if ($this->wasDeletedSinceLastEdit() && 'save' == $this->formtype) {
$username = $this->lastDelete->user_name;
$comment = $this->lastDelete->log_comment;
// It is better to not parse the comment at all than to have templates expanded in the middle
// TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used?
$key = $comment === '' ? 'confirmrecreate-noreason' : 'confirmrecreate';
$wgOut->addHTML('<div class="mw-confirm-recreate">' . wfMsgExt($key, 'parseinline', $username, "<nowiki>{$comment}</nowiki>") . Xml::checkLabel(wfMsg('recreate'), 'wpRecreate', 'wpRecreate', false, array('title' => Linker::titleAttrib('recreate'), 'tabindex' => 1, 'id' => 'wpRecreate')) . '</div>');
}
# If a blank edit summary was previously provided, and the appropriate
# user preference is active, pass a hidden tag as wpIgnoreBlankSummary. This will stop the
# user being bounced back more than once in the event that a summary
# is not required.
#####
# For a bit more sophisticated detection of blank summaries, hash the
# automatic one and pass that in the hidden field wpAutoSummary.
if ($this->missingSummary || $this->section == 'new' && $this->nosummary) {
$wgOut->addHTML(Html::hidden('wpIgnoreBlankSummary', true));
}
$autosumm = $this->autoSumm ? $this->autoSumm : md5($this->summary);
$wgOut->addHTML(Html::hidden('wpAutoSummary', $autosumm));
$wgOut->addHTML(Html::hidden('oldid', $this->oldid));
if ($this->section == 'new') {
$this->showSummaryInput(true, $this->summary);
$wgOut->addHTML($this->getSummaryPreview(true, $this->summary));
}
$wgOut->addHTML($this->editFormTextBeforeContent);
if (!$this->isCssJsSubpage && $showToolbar && $wgUser->getOption('showtoolbar')) {
$wgOut->addHTML(EditPage::getEditToolbar());
}
if ($this->isConflict) {
// In an edit conflict bypass the overrideable content form method
// and fallback to the raw wpTextbox1 since editconflicts can't be
// resolved between page source edits and custom ui edits using the
// custom edit ui.
$this->textbox2 = $this->textbox1;
$this->textbox1 = $this->getCurrentText();
$this->showTextbox1();
} else {
$this->showContentForm();
}
$wgOut->addHTML($this->editFormTextAfterContent);
$wgOut->addWikiText($this->getCopywarn());
$wgOut->addHTML($this->editFormTextAfterWarn);
$this->showStandardInputs();
$this->showFormAfterText();
$this->showTosSummary();
$this->showEditTools();
$wgOut->addHTML($this->editFormTextAfterTools . "\n");
$wgOut->addHTML(Html::rawElement('div', array('class' => 'templatesUsed'), Linker::formatTemplates($this->getTemplates(), $this->preview, $this->section != '')));
$wgOut->addHTML(Html::rawElement('div', array('class' => 'hiddencats'), Linker::formatHiddenCategories($this->mArticle->getHiddenCategories())));
if ($this->isConflict) {
$this->showConflict();
}
$wgOut->addHTML($this->editFormTextBottom . "\n</form>\n");
if (!$wgUser->getOption('previewontop')) {
//.........这里部分代码省略.........
示例3: formatTemplates
public function formatTemplates($templates, $preview = false, $section = false, $more = null)
{
return Linker::formatTemplates($templates, $preview, $section, $more);
}
示例4: onView
//.........这里部分代码省略.........
}
if ($userCanViewUnwatchedPages) {
// Number of page watchers
$table = $this->addRow($table, $this->msg('pageinfo-watchers')->escaped(), $lang->formatNum($pageInfo['watchers']));
}
// Redirects to this page
$whatLinksHere = SpecialPage::getTitleFor('Whatlinkshere', $title->getPrefixedText());
$table = $this->addRow($table, Linker::link($whatLinksHere, $this->msg('pageinfo-redirects-name')->escaped(), array(), array('hidelinks' => 1, 'hidetrans' => 1)), $this->msg('pageinfo-redirects-value')->numParams(count($title->getRedirectsHere()))->escaped());
// Subpages of this page, if subpages are enabled for the current NS
if (MWNamespace::hasSubpages($title->getNamespace())) {
$prefixIndex = SpecialPage::getTitleFor('Prefixindex', $title->getPrefixedText() . '/');
$table = $this->addRow($table, Linker::link($prefixIndex, $this->msg('pageinfo-subpages-name')->escaped()), $this->msg('pageinfo-subpages-value')->numParams($pageInfo['subpages']['total'], $pageInfo['subpages']['redirects'], $pageInfo['subpages']['nonredirects'])->escaped());
}
// Page protection
$content = $this->addTable($content, $table);
$content = $this->addHeader($content, $this->msg('pageinfo-header-restrictions')->text());
$table = '';
// Page protection
foreach ($wgRestrictionTypes as $restrictionType) {
$protectionLevel = implode(', ', $title->getRestrictions($restrictionType));
if ($protectionLevel == '') {
// Allow all users
$message = $this->msg('protect-default')->escaped();
} else {
// Administrators only
$message = $this->msg("protect-level-{$protectionLevel}");
if ($message->isDisabled()) {
// Require "$1" permission
$message = $this->msg("protect-fallback", $protectionLevel)->parse();
} else {
$message = $message->escaped();
}
}
$table = $this->addRow($table, $this->msg('pageinfo-restriction', $this->msg("restriction-{$restrictionType}")->plain())->parse(), $message);
}
// Edit history
$content = $this->addTable($content, $table);
$content = $this->addHeader($content, $this->msg('pageinfo-header-edits')->text());
$table = '';
$firstRev = $this->page->getOldestRevision();
// Page creator
$table = $this->addRow($table, $this->msg('pageinfo-firstuser')->escaped(), $firstRev->getUserText(Revision::FOR_THIS_USER, $user));
// Date of page creation
$table = $this->addRow($table, $this->msg('pageinfo-firsttime')->escaped(), Linker::linkKnown($title, $lang->userTimeAndDate($firstRev->getTimestamp(), $user), array(), array('oldid' => $firstRev->getId())));
// Latest editor
$table = $this->addRow($table, $this->msg('pageinfo-lastuser')->escaped(), $this->page->getUserText(Revision::FOR_THIS_USER, $user));
// Date of latest edit
$table = $this->addRow($table, $this->msg('pageinfo-lasttime')->escaped(), Linker::linkKnown($title, $lang->userTimeAndDate($this->page->getTimestamp(), $user), array(), array('oldid' => $this->page->getLatest())));
// Total number of edits
$table = $this->addRow($table, $this->msg('pageinfo-edits')->escaped(), $lang->formatNum($pageInfo['edits']));
// Total number of distinct authors
$table = $this->addRow($table, $this->msg('pageinfo-authors')->escaped(), $lang->formatNum($pageInfo['authors']));
// Recent number of edits (within past 30 days)
$table = $this->addRow($table, $this->msg('pageinfo-recent-edits', $lang->formatDuration($wgRCMaxAge))->escaped(), $lang->formatNum($pageInfo['recent_edits']));
// Recent number of distinct authors
$table = $this->addRow($table, $this->msg('pageinfo-recent-authors')->escaped(), $lang->formatNum($pageInfo['recent_authors']));
$content = $this->addTable($content, $table);
// Array of MagicWord objects
$magicWords = MagicWord::getDoubleUnderscoreArray();
// Array of magic word IDs
$wordIDs = $magicWords->names;
// Array of IDs => localized magic words
$localizedWords = $wgContLang->getMagicWords();
$listItems = array();
foreach ($pageProperties as $property => $value) {
if (in_array($property, $wordIDs)) {
$listItems[] = Html::element('li', array(), $localizedWords[$property][1]);
}
}
$localizedList = Html::rawElement('ul', array(), implode('', $listItems));
$hiddenCategories = $this->page->getHiddenCategories();
$transcludedTemplates = $title->getTemplateLinksFrom();
if (count($listItems) > 0 || count($hiddenCategories) > 0 || count($transcludedTemplates) > 0) {
// Page properties
$content = $this->addHeader($content, $this->msg('pageinfo-header-properties')->text());
$table = '';
// Magic words
if (count($listItems) > 0) {
$table = $this->addRow($table, $this->msg('pageinfo-magic-words')->numParams(count($listItems))->escaped(), $localizedList);
}
// Hide "This page is a member of # hidden categories explanation
$content .= Html::element('style', array(), '.mw-hiddenCategoriesExplanation { display: none; }');
// Hidden categories
if (count($hiddenCategories) > 0) {
$table = $this->addRow($table, $this->msg('pageinfo-hidden-categories')->numParams(count($hiddenCategories))->escaped(), Linker::formatHiddenCategories($hiddenCategories));
}
// Hide "Templates used on this page:" explanation
$content .= Html::element('style', array(), '.mw-templatesUsedExplanation { display: none; }');
// Transcluded templates
if (count($transcludedTemplates) > 0) {
$table = $this->addRow($table, $this->msg('pageinfo-templates')->numParams(count($transcludedTemplates))->escaped(), Linker::formatTemplates($transcludedTemplates));
}
$content = $this->addTable($content, $table);
}
// Footer
if (!$this->msg('pageinfo-footer')->isDisabled()) {
$content .= $this->msg('pageinfo-footer')->parse();
}
return $content;
}
示例5: pageInfo
//.........这里部分代码省略.........
// restriction-upload
$pageInfo['header-restrictions'][] = array($this->msg("restriction-{$restrictionType}"), $message);
}
if (!$this->page->exists()) {
return $pageInfo;
}
// Edit history
$pageInfo['header-edits'] = array();
$firstRev = $this->page->getOldestRevision();
$lastRev = $this->page->getRevision();
$batch = new LinkBatch();
if ($firstRev) {
$firstRevUser = $firstRev->getUserText(Revision::FOR_THIS_USER);
if ($firstRevUser !== '') {
$batch->add(NS_USER, $firstRevUser);
$batch->add(NS_USER_TALK, $firstRevUser);
}
}
if ($lastRev) {
$lastRevUser = $lastRev->getUserText(Revision::FOR_THIS_USER);
if ($lastRevUser !== '') {
$batch->add(NS_USER, $lastRevUser);
$batch->add(NS_USER_TALK, $lastRevUser);
}
}
$batch->execute();
if ($firstRev) {
// Page creator
$pageInfo['header-edits'][] = array($this->msg('pageinfo-firstuser'), Linker::revUserTools($firstRev));
// Date of page creation
$pageInfo['header-edits'][] = array($this->msg('pageinfo-firsttime'), Linker::linkKnown($title, htmlspecialchars($lang->userTimeAndDate($firstRev->getTimestamp(), $user)), array(), array('oldid' => $firstRev->getId())));
}
if ($lastRev) {
// Latest editor
$pageInfo['header-edits'][] = array($this->msg('pageinfo-lastuser'), Linker::revUserTools($lastRev));
// Date of latest edit
$pageInfo['header-edits'][] = array($this->msg('pageinfo-lasttime'), Linker::linkKnown($title, htmlspecialchars($lang->userTimeAndDate($this->page->getTimestamp(), $user)), array(), array('oldid' => $this->page->getLatest())));
}
// Total number of edits
$pageInfo['header-edits'][] = array($this->msg('pageinfo-edits'), $lang->formatNum($pageCounts['edits']));
// Total number of distinct authors
if ($pageCounts['authors'] > 0) {
$pageInfo['header-edits'][] = array($this->msg('pageinfo-authors'), $lang->formatNum($pageCounts['authors']));
}
// Recent number of edits (within past 30 days)
$pageInfo['header-edits'][] = array($this->msg('pageinfo-recent-edits', $lang->formatDuration($config->get('RCMaxAge'))), $lang->formatNum($pageCounts['recent_edits']));
// Recent number of distinct authors
$pageInfo['header-edits'][] = array($this->msg('pageinfo-recent-authors'), $lang->formatNum($pageCounts['recent_authors']));
// Array of MagicWord objects
$magicWords = MagicWord::getDoubleUnderscoreArray();
// Array of magic word IDs
$wordIDs = $magicWords->names;
// Array of IDs => localized magic words
$localizedWords = $wgContLang->getMagicWords();
$listItems = array();
foreach ($pageProperties as $property => $value) {
if (in_array($property, $wordIDs)) {
$listItems[] = Html::element('li', array(), $localizedWords[$property][1]);
}
}
$localizedList = Html::rawElement('ul', array(), implode('', $listItems));
$hiddenCategories = $this->page->getHiddenCategories();
if (count($listItems) > 0 || count($hiddenCategories) > 0 || $pageCounts['transclusion']['from'] > 0 || $pageCounts['transclusion']['to'] > 0) {
$options = array('LIMIT' => $config->get('PageInfoTransclusionLimit'));
$transcludedTemplates = $title->getTemplateLinksFrom($options);
if ($config->get('MiserMode')) {
$transcludedTargets = array();
} else {
$transcludedTargets = $title->getTemplateLinksTo($options);
}
// Page properties
$pageInfo['header-properties'] = array();
// Magic words
if (count($listItems) > 0) {
$pageInfo['header-properties'][] = array($this->msg('pageinfo-magic-words')->numParams(count($listItems)), $localizedList);
}
// Hidden categories
if (count($hiddenCategories) > 0) {
$pageInfo['header-properties'][] = array($this->msg('pageinfo-hidden-categories')->numParams(count($hiddenCategories)), Linker::formatHiddenCategories($hiddenCategories));
}
// Transcluded templates
if ($pageCounts['transclusion']['from'] > 0) {
if ($pageCounts['transclusion']['from'] > count($transcludedTemplates)) {
$more = $this->msg('morenotlisted')->escaped();
} else {
$more = null;
}
$pageInfo['header-properties'][] = array($this->msg('pageinfo-templates')->numParams($pageCounts['transclusion']['from']), Linker::formatTemplates($transcludedTemplates, false, false, $more));
}
if (!$config->get('MiserMode') && $pageCounts['transclusion']['to'] > 0) {
if ($pageCounts['transclusion']['to'] > count($transcludedTargets)) {
$more = Linker::link($whatLinksHere, $this->msg('moredotdotdot')->escaped(), array(), array('hidelinks' => 1, 'hideredirs' => 1));
} else {
$more = null;
}
$pageInfo['header-properties'][] = array($this->msg('pageinfo-transclusions')->numParams($pageCounts['transclusion']['to']), Linker::formatTemplates($transcludedTargets, false, false, $more));
}
}
return $pageInfo;
}
示例6: showEditForm
//.........这里部分代码省略.........
}
}
// @todo add EditForm plugin interface and use it here!
// search for textarea1 and textares2, and allow EditForm to override all uses.
$wgOut->addHTML(Html::openElement('form', array('id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID, 'method' => 'post', 'action' => $this->getActionURL($this->getContextTitle()), 'enctype' => 'multipart/form-data')));
if (is_callable($formCallback)) {
call_user_func_array($formCallback, array(&$wgOut));
}
// Add an empty field to trip up spambots
$wgOut->addHTML(Xml::openElement('div', array('id' => 'antispam-container', 'style' => 'display: none;')) . Html::rawElement('label', array('for' => 'wpAntiSpam'), wfMessage('simpleantispam-label')->parse()) . Xml::element('input', array('type' => 'text', 'name' => 'wpAntispam', 'id' => 'wpAntispam', 'value' => '')) . Xml::closeElement('div'));
wfRunHooks('EditPage::showEditForm:fields', array(&$this, &$wgOut));
// Put these up at the top to ensure they aren't lost on early form submission
$this->showFormBeforeText();
if ($this->wasDeletedSinceLastEdit() && 'save' == $this->formtype) {
$username = $this->lastDelete->user_name;
$comment = $this->lastDelete->log_comment;
// It is better to not parse the comment at all than to have templates expanded in the middle
// TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used?
$key = $comment === '' ? 'confirmrecreate-noreason' : 'confirmrecreate';
$wgOut->addHTML('<div class="mw-confirm-recreate">' . wfMessage($key, $username, "<nowiki>{$comment}</nowiki>")->parse() . Xml::checkLabel(wfMessage('recreate')->text(), 'wpRecreate', 'wpRecreate', false, array('title' => Linker::titleAttrib('recreate'), 'tabindex' => 1, 'id' => 'wpRecreate')) . '</div>');
}
# When the summary is hidden, also hide them on preview/show changes
if ($this->nosummary) {
$wgOut->addHTML(Html::hidden('nosummary', true));
}
# If a blank edit summary was previously provided, and the appropriate
# user preference is active, pass a hidden tag as wpIgnoreBlankSummary. This will stop the
# user being bounced back more than once in the event that a summary
# is not required.
#####
# For a bit more sophisticated detection of blank summaries, hash the
# automatic one and pass that in the hidden field wpAutoSummary.
if ($this->missingSummary || $this->section == 'new' && $this->nosummary) {
$wgOut->addHTML(Html::hidden('wpIgnoreBlankSummary', true));
}
if ($this->undidRev) {
$wgOut->addHTML(Html::hidden('wpUndidRevision', $this->undidRev));
}
if ($this->hasPresetSummary) {
// If a summary has been preset using &summary= we don't want to prompt for
// a different summary. Only prompt for a summary if the summary is blanked.
// (Bug 17416)
$this->autoSumm = md5('');
}
$autosumm = $this->autoSumm ? $this->autoSumm : md5($this->summary);
$wgOut->addHTML(Html::hidden('wpAutoSummary', $autosumm));
$wgOut->addHTML(Html::hidden('oldid', $this->oldid));
$wgOut->addHTML(Html::hidden('format', $this->contentFormat));
$wgOut->addHTML(Html::hidden('model', $this->contentModel));
if ($this->section == 'new') {
$this->showSummaryInput(true, $this->summary);
$wgOut->addHTML($this->getSummaryPreview(true, $this->summary));
}
$wgOut->addHTML($this->editFormTextBeforeContent);
if (!$this->isCssJsSubpage && $showToolbar && $wgUser->getOption('showtoolbar')) {
$wgOut->addHTML(EditPage::getEditToolbar());
}
if ($this->blankArticle) {
$wgOut->addHTML(Html::hidden('wpIgnoreBlankArticle', true));
}
if ($this->isConflict) {
// In an edit conflict bypass the overridable content form method
// and fallback to the raw wpTextbox1 since editconflicts can't be
// resolved between page source edits and custom ui edits using the
// custom edit ui.
$this->textbox2 = $this->textbox1;
$content = $this->getCurrentContent();
$this->textbox1 = $this->toEditText($content);
$this->showTextbox1();
} else {
$this->showContentForm();
}
$wgOut->addHTML($this->editFormTextAfterContent);
$this->showStandardInputs();
$this->showFormAfterText();
$this->showTosSummary();
$this->showEditTools();
$wgOut->addHTML($this->editFormTextAfterTools . "\n");
$wgOut->addHTML(Html::rawElement('div', array('class' => 'templatesUsed'), Linker::formatTemplates($this->getTemplates(), $this->preview, $this->section != '')));
$wgOut->addHTML(Html::rawElement('div', array('class' => 'hiddencats'), Linker::formatHiddenCategories($this->mArticle->getHiddenCategories())));
$wgOut->addHTML(Html::rawElement('div', array('class' => 'limitreport'), self::getPreviewLimitReport($this->mParserOutput)));
$wgOut->addModules('mediawiki.action.edit.collapsibleFooter');
if ($this->isConflict) {
try {
$this->showConflict();
} catch (MWContentSerializationException $ex) {
// this can't really happen, but be nice if it does.
$msg = wfMessage('content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage());
$wgOut->addWikiText('<div class="error">' . $msg->text() . '</div>');
}
}
// Marker for detecting truncated form data. This must be the last
// parameter sent in order to be of use, so do not move me.
$wgOut->addHTML(Html::hidden('wpUltimateParam', true));
$wgOut->addHTML($this->editFormTextBottom . "\n</form>\n");
if (!$wgUser->getOption('previewontop')) {
$this->displayPreviewArea($previewOutput, false);
}
wfProfileOut(__METHOD__);
}
示例7: pageInfo
//.........这里部分代码省略.........
$pageInfo['header-basic'][] = array(Linker::link($whatLinksHere, $this->msg('pageinfo-redirects-name')->escaped(), array(), array('hidelinks' => 1, 'hidetrans' => 1)), $this->msg('pageinfo-redirects-value')->numParams(count($title->getRedirectsHere())));
// Is it counted as a content page?
if ($this->page->isCountable()) {
$pageInfo['header-basic'][] = array($this->msg('pageinfo-contentpage'), $this->msg('pageinfo-contentpage-yes'));
}
// Subpages of this page, if subpages are enabled for the current NS
if (MWNamespace::hasSubpages($title->getNamespace())) {
$prefixIndex = SpecialPage::getTitleFor('Prefixindex', $title->getPrefixedText() . '/');
$pageInfo['header-basic'][] = array(Linker::link($prefixIndex, $this->msg('pageinfo-subpages-name')->escaped()), $this->msg('pageinfo-subpages-value')->numParams($pageCounts['subpages']['total'], $pageCounts['subpages']['redirects'], $pageCounts['subpages']['nonredirects']));
}
// Page protection
$pageInfo['header-restrictions'] = array();
// Is this page effected by the cascading protection of something which includes it?
if ($title->isCascadeProtected()) {
$cascadingFrom = '';
$sources = $title->getCascadeProtectionSources();
// Array deferencing is in PHP 5.4 :(
foreach ($sources[0] as $sourceTitle) {
$cascadingFrom .= Html::rawElement('li', array(), Linker::linkKnown($sourceTitle));
}
$cascadingFrom = Html::rawElement('ul', array(), $cascadingFrom);
$pageInfo['header-restrictions'][] = array($this->msg('pageinfo-protect-cascading-from'), $cascadingFrom);
}
// Is out protection set to cascade to other pages?
if ($title->areRestrictionsCascading()) {
$pageInfo['header-restrictions'][] = array($this->msg('pageinfo-protect-cascading'), $this->msg('pageinfo-protect-cascading-yes'));
}
// Page protection
foreach ($title->getRestrictionTypes() as $restrictionType) {
$protectionLevel = implode(', ', $title->getRestrictions($restrictionType));
if ($protectionLevel == '') {
// Allow all users
$message = $this->msg('protect-default')->escaped();
} else {
// Administrators only
$message = $this->msg("protect-level-{$protectionLevel}");
if ($message->isDisabled()) {
// Require "$1" permission
$message = $this->msg("protect-fallback", $protectionLevel)->parse();
} else {
$message = $message->escaped();
}
}
$pageInfo['header-restrictions'][] = array($this->msg("restriction-{$restrictionType}"), $message);
}
if (!$this->page->exists()) {
return $pageInfo;
}
// Edit history
$pageInfo['header-edits'] = array();
$firstRev = $this->page->getOldestRevision();
// Page creator
$pageInfo['header-edits'][] = array($this->msg('pageinfo-firstuser'), Linker::revUserTools($firstRev));
// Date of page creation
$pageInfo['header-edits'][] = array($this->msg('pageinfo-firsttime'), Linker::linkKnown($title, $lang->userTimeAndDate($firstRev->getTimestamp(), $user), array(), array('oldid' => $firstRev->getId())));
// Latest editor
$pageInfo['header-edits'][] = array($this->msg('pageinfo-lastuser'), Linker::revUserTools($this->page->getRevision()));
// Date of latest edit
$pageInfo['header-edits'][] = array($this->msg('pageinfo-lasttime'), Linker::linkKnown($title, $lang->userTimeAndDate($this->page->getTimestamp(), $user), array(), array('oldid' => $this->page->getLatest())));
// Total number of edits
$pageInfo['header-edits'][] = array($this->msg('pageinfo-edits'), $lang->formatNum($pageCounts['edits']));
// Total number of distinct authors
$pageInfo['header-edits'][] = array($this->msg('pageinfo-authors'), $lang->formatNum($pageCounts['authors']));
// Recent number of edits (within past 30 days)
$pageInfo['header-edits'][] = array($this->msg('pageinfo-recent-edits', $lang->formatDuration($wgRCMaxAge)), $lang->formatNum($pageCounts['recent_edits']));
// Recent number of distinct authors
$pageInfo['header-edits'][] = array($this->msg('pageinfo-recent-authors'), $lang->formatNum($pageCounts['recent_authors']));
// Array of MagicWord objects
$magicWords = MagicWord::getDoubleUnderscoreArray();
// Array of magic word IDs
$wordIDs = $magicWords->names;
// Array of IDs => localized magic words
$localizedWords = $wgContLang->getMagicWords();
$listItems = array();
foreach ($pageProperties as $property => $value) {
if (in_array($property, $wordIDs)) {
$listItems[] = Html::element('li', array(), $localizedWords[$property][1]);
}
}
$localizedList = Html::rawElement('ul', array(), implode('', $listItems));
$hiddenCategories = $this->page->getHiddenCategories();
$transcludedTemplates = $title->getTemplateLinksFrom();
if (count($listItems) > 0 || count($hiddenCategories) > 0 || count($transcludedTemplates) > 0) {
// Page properties
$pageInfo['header-properties'] = array();
// Magic words
if (count($listItems) > 0) {
$pageInfo['header-properties'][] = array($this->msg('pageinfo-magic-words')->numParams(count($listItems)), $localizedList);
}
// Hidden categories
if (count($hiddenCategories) > 0) {
$pageInfo['header-properties'][] = array($this->msg('pageinfo-hidden-categories')->numParams(count($hiddenCategories)), Linker::formatHiddenCategories($hiddenCategories));
}
// Transcluded templates
if (count($transcludedTemplates) > 0) {
$pageInfo['header-properties'][] = array($this->msg('pageinfo-templates')->numParams(count($transcludedTemplates)), Linker::formatTemplates($transcludedTemplates));
}
}
return $pageInfo;
}
示例8: displayPermissionsError
/**
* Show a read-only error
* Parameters are the same as OutputPage:readOnlyPage()
* Redirect to the article page if redlink=1
*/
function displayPermissionsError(array $permErrors)
{
$this->mIsReadOnlyPage = true;
$this->helper->addJsVariable('wgEditPageIsReadOnly', true);
$formatPermissionsErrorMessage = $this->app->wg->Out->formatPermissionsErrorMessage($permErrors, 'edit');
$content = $this->app->wg->Out->parse($formatPermissionsErrorMessage);
$this->mEditPagePreloads['PermissionsError'] = array('content' => $content, 'class' => 'permissions-errors');
// All of the following is pasted from EditPage:displayPermissionsError and pruned
if ($this->app->wg->Request->getBool('redlink')) {
// The edit page was reached via a red link.
// Redirect to the article page and let them click the edit tab if
// they really want a permission error.
$this->app->wg->Out->redirect($this->mTitle->getFullUrl());
return;
}
$content = $this->getContent();
$this->app->wg->Out->setPageTitle(wfMessage('viewsource-title', $this->getContextTitle()->getPrefixedText()));
$this->app->wg->Out->addBacklinkSubtitle($this->getContextTitle());
# If the user made changes, preserve them when showing the markup
# (This happens when a user is blocked during edit, for instance)
if (!$this->firsttime) {
$content = $this->textbox1;
$this->app->wg->Out->addWikiMsg('viewyourtext');
} else {
$this->app->wg->Out->addWikiMsg('viewsourcetext');
}
$this->showTextbox($content, 'wpTextbox1', array('readonly'));
$this->app->wg->Out->addHTML(Html::rawElement('div', array('class' => 'templatesUsed'), Linker::formatTemplates($this->getTemplates())));
if ($this->mTitle->exists()) {
$this->app->wg->Out->returnToMain(null, $this->mTitle);
}
}
示例9: getTemplatesList
public function getTemplatesList()
{
wfProfileIn(__METHOD__);
$templates = $this->mTitle->getTemplateLinksFrom();
$html = Linker::formatTemplates($templates);
wfProfileOut(__METHOD__);
return $html;
}
示例10: formatTemplates
/**
* @deprecated since 1.28, use TemplatesOnThisPageFormatter directly
*/
public function formatTemplates($templates, $preview = false, $section = false, $more = null)
{
wfDeprecated(__METHOD__, '1.28');
return Linker::formatTemplates($templates, $preview, $section, $more);
}