本文整理汇总了PHP中TranslateUtils::addSpecialHelpLink方法的典型用法代码示例。如果您正苦于以下问题:PHP TranslateUtils::addSpecialHelpLink方法的具体用法?PHP TranslateUtils::addSpecialHelpLink怎么用?PHP TranslateUtils::addSpecialHelpLink使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TranslateUtils
的用法示例。
在下文中一共展示了TranslateUtils::addSpecialHelpLink方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
/**
* Entry point : initialise variables and call subfunctions.
* @param $par \string Message key. Becomes "MediaWiki:Allmessages" when called like
* Special:Translations/MediaWiki:Allmessages (default null)
*/
function execute($par)
{
global $wgRequest, $wgOut;
$this->setHeaders();
$this->outputHeader();
self::includeAssets();
if ($this->including()) {
$title = Title::newFromText($par);
if (!$title) {
$wgOut->addWikiMsg('translate-translations-including-no-param');
} else {
$this->showTranslations($title);
}
return;
}
/**
* GET values.
*/
$message = $wgRequest->getText('message');
$namespace = $wgRequest->getInt('namespace', NS_MAIN);
if ($message !== '') {
$title = Title::newFromText($message, $namespace);
} else {
$title = Title::newFromText($par, $namespace);
}
TranslateUtils::addSpecialHelpLink($wgOut, 'Help:Extension:Translate/Statistics_and_reporting#Translations_in_all_languages');
if (!$title) {
$title = Title::makeTitle(NS_MEDIAWIKI, '');
$wgOut->addHTML($this->namespaceMessageForm($title));
} else {
$wgOut->addHTML($this->namespaceMessageForm($title) . '<br />');
$this->showTranslations($title);
}
}
示例2: execute
public function execute($par)
{
$this->setHeaders();
$out = $this->getOutput();
$out->addModules('ext.translate.special.managegroups');
TranslateUtils::addSpecialHelpLink($out, 'Help:Extension:Translate/Group_management');
$changefile = TranslateUtils::cacheFile(self::CHANGEFILE);
if (!file_exists($changefile)) {
// @todo Tell them when changes was last checked/process
// or how to initiate recheck.
$out->addWikiMsg('translate-smg-nochanges');
return;
}
$user = $this->getUser();
$allowed = $user->isAllowed(self::RIGHT);
$req = $this->getRequest();
if (!$req->wasPosted()) {
$this->showChanges($allowed, $this->getLimit());
return;
}
$token = $req->getVal('token');
if (!$allowed || !$user->matchEditToken($token)) {
throw new PermissionsError(self::RIGHT);
}
$this->processSubmit();
}
示例3: execute
public function execute($par)
{
$out = $this->getOutput();
$lang = $this->getLanguage();
// Only for manual debugging nowdays
$this->purge = false;
$this->setHeaders();
$out->addModules('ext.translate.special.supportedlanguages');
TranslateUtils::addSpecialHelpLink($out, 'Help:Extension:Translate/Statistics_and_reporting#List_of_languages_and_translators');
$this->outputHeader();
$dbr = wfGetDB(DB_SLAVE);
if ($dbr->getType() === 'sqlite') {
$out->addWikiText('<div class=errorbox>SQLite is not supported.</div>');
return;
}
$out->addWikiMsg('supportedlanguages-localsummary');
$names = Language::fetchLanguageNames(null, 'all');
$languages = $this->languageCloud();
// There might be all sorts of subpages which are not languages
$languages = array_intersect_key($languages, $names);
$this->outputLanguageCloud($languages, $names);
$out->addWikiMsg('supportedlanguages-count', $lang->formatNum(count($languages)));
if ($par && Language::isKnownLanguageTag($par)) {
$code = $par;
$out->addWikiMsg('supportedlanguages-colorlegend', $this->getColorLegend());
$users = $this->fetchTranslators($code);
if ($users === false) {
// generic-pool-error is from MW core
$out->wrapWikiMsg('<div class="warningbox">$1</div>', 'generic-pool-error');
return;
}
global $wgTranslateAuthorBlacklist;
$users = $this->filterUsers($users, $code, $wgTranslateAuthorBlacklist);
$this->preQueryUsers($users);
$this->showLanguage($code, $users);
}
}
示例4: outputForm
/**
* Constructs and outputs file input form with supported methods.
*/
protected function outputForm()
{
global $wgOut;
$wgOut->addModules('ext.translate.special.importtranslations');
TranslateUtils::addSpecialHelpLink($wgOut, 'Help:Extension:Translate/Off-line_translation');
/**
* Ugly but necessary form building ahead, ohoy
*/
$this->out->addHTML(Xml::openElement('form', array('action' => $this->getTitle()->getLocalUrl(), 'method' => 'post', 'enctype' => 'multipart/form-data', 'id' => 'mw-translate-import')) . Html::hidden('token', $this->user->editToken()) . Html::hidden('title', $this->getTitle()->getPrefixedText()) . Xml::openElement('table') . Xml::openElement('tr') . Xml::openElement('td'));
$class = array('class' => 'mw-translate-import-inputs');
$this->out->addHTML(Xml::radioLabel(wfMsg('translate-import-from-url'), 'upload-type', 'url', 'mw-translate-up-url', $this->request->getText('upload-type') === 'url') . "\n" . Xml::closeElement('td') . Xml::openElement('td') . "\n" . Xml::input('upload-url', 50, $this->request->getText('upload-url'), array('id' => 'mw-translate-up-url-input') + $class) . "\n" . Xml::closeElement('td') . Xml::closeElement('tr') . Xml::openElement('tr') . Xml::openElement('td') . "\n");
$this->out->addHTML(Xml::radioLabel(wfMsg('translate-import-from-wiki'), 'upload-type', 'wiki', 'mw-translate-up-wiki', $this->request->getText('upload-type') === 'wiki') . "\n" . Xml::closeElement('td') . Xml::openElement('td') . "\n" . Xml::input('upload-wiki', 50, $this->request->getText('upload-wiki', 'File:'), array('id' => 'mw-translate-up-wiki-input') + $class) . "\n" . Xml::closeElement('td') . Xml::closeElement('tr') . Xml::openElement('tr') . Xml::openElement('td') . "\n" . Xml::radioLabel(wfMsg('translate-import-from-local'), 'upload-type', 'local', 'mw-translate-up-local', $this->request->getText('upload-type') === 'local') . "\n" . Xml::closeElement('td') . Xml::openElement('td') . "\n" . Xml::input('upload-local', 50, $this->request->getText('upload-local'), array('type' => 'file', 'id' => 'mw-translate-up-local-input') + $class) . "\n" . Xml::closeElement('td') . Xml::closeElement('tr') . Xml::closeElement('table') . Xml::submitButton(wfMsg('translate-import-load')) . Xml::closeElement('form'));
}
示例5: outputForm
/**
* Constructs and outputs file input form with supported methods.
*/
protected function outputForm()
{
$this->getOutput()->addModules('ext.translate.special.importtranslations');
TranslateUtils::addSpecialHelpLink($this->getOutput(), 'Help:Extension:Translate/Off-line_translation');
/**
* Ugly but necessary form building ahead, ohoy
*/
$this->getOutput()->addHTML(Xml::openElement('form', array('action' => $this->getPageTitle()->getLocalUrl(), 'method' => 'post', 'enctype' => 'multipart/form-data', 'id' => 'mw-translate-import')) . Html::hidden('token', $this->getUser()->getEditToken()) . Html::hidden('title', $this->getPageTitle()->getPrefixedText()) . Xml::inputLabel($this->msg('translate-import-from-local')->text(), 'upload-local', 'mw-translate-up-local-input', 50, $this->getRequest()->getText('upload-local'), array('type' => 'file')) . Xml::submitButton($this->msg('translate-import-load')->text()) . Xml::closeElement('form'));
}
示例6: execute
/**
* Access point for this special page.
*/
public function execute($parameters)
{
global $wgTranslateBlacklist, $wgContLang;
$out = $this->getOutput();
$out->addModuleStyles(array('ext.translate.special.translate.styles', 'jquery.uls.grid'));
$out->addModules('ext.translate.special.translate');
$this->setHeaders();
$request = $this->getRequest();
// @todo Move to api or so
if ($parameters === 'editpage') {
$editpage = TranslationEditPage::newFromRequest($request);
if ($editpage) {
$editpage->execute();
return;
}
}
if (!defined('ULS_VERSION')) {
throw new ErrorPageError('translate-ulsdep-title', 'translate-ulsdep-body');
}
$this->setup($parameters);
$isBeta = self::isBeta($request);
if ($this->options['group'] === '' || $isBeta && !$this->group) {
$this->groupInformation();
return;
}
$errors = $this->getFormErrors();
if ($isBeta && $this->options['taction'] !== 'export') {
$out->addHTML(Html::openElement('div', array('class' => 'grid ext-translate-container')));
$out->addHTML($this->tuxSettingsForm($errors));
$out->addHTML($this->messageSelector());
} else {
$out->addModuleStyles('ext.translate.legacy');
TranslateUtils::addSpecialHelpLink($out, 'Help:Extension:Translate/Translation_example');
// Show errors nicely.
$out->addHTML($this->settingsForm($errors));
}
if (count($errors)) {
return;
} else {
$checks = array($this->options['group'], strtok($this->options['group'], '-'), '*');
foreach ($checks as $check) {
if (isset($wgTranslateBlacklist[$check][$this->options['language']])) {
$reason = $wgTranslateBlacklist[$check][$this->options['language']];
$out->addWikiMsg('translate-page-disabled', $reason);
if ($isBeta) {
// Close div.ext-translate-container
$out->addHTML(Html::closeElement('div'));
}
return;
}
}
}
$params = array($this->getContext(), $this->task, $this->group, $this->options);
if (!Hooks::run('SpecialTranslate::executeTask', $params)) {
return;
}
// Initialise and get output.
if (!$this->task) {
return;
}
$this->task->init($this->group, $this->options, $this->nondefaults, $this->getContext());
$output = $this->task->execute();
if ($this->task->plainOutput()) {
$out->disable();
header('Content-type: text/plain; charset=UTF-8');
echo $output;
} else {
$description = $this->getGroupDescription($this->group);
$taskid = $this->options['task'];
if (in_array($taskid, array('untranslated', 'reviewall'), true)) {
$hasOptional = count($this->group->getTags('optional'));
if ($hasOptional) {
$linktext = $this->msg('translate-page-description-hasoptional-open')->escaped();
$params = array('task' => 'optional') + $this->nondefaults;
$link = Linker::link($this->getPageTitle(), $linktext, array(), $params);
$note = $this->msg('translate-page-description-hasoptional')->rawParams($link)->parseAsBlock();
if ($description) {
$description .= '<br />' . $note;
} else {
$description = $note;
}
}
}
$groupId = $this->group->getId();
// PHP is such an awesome language
$priorityLangs = TranslateMetadata::get($groupId, 'prioritylangs');
$priorityLangs = array_flip(array_filter(explode(',', $priorityLangs)));
$priorityLangsCount = count($priorityLangs);
if ($priorityLangsCount && !isset($priorityLangs[$this->options['language']])) {
$priorityForce = TranslateMetadata::get($groupId, 'priorityforce');
if ($priorityForce === 'on') {
// Hide table
$priorityMessageClass = 'errorbox';
$priorityMessageKey = 'tpt-discouraged-language-force';
} else {
$priorityMessageClass = 'warningbox';
$priorityMessageKey = 'tpt-discouraged-language';
//.........这里部分代码省略.........
示例7: execute
function execute( $par ) {
global $wgRequest, $wgOut;
$request = $wgRequest;
$this->purge = $request->getVal( 'action' ) === 'purge';
$this->table = new StatsTable();
$this->setHeaders();
$this->outputHeader();
$wgOut->addModules( 'ext.translate.special.languagestats' );
$wgOut->addModules( 'ext.translate.messagetable' );
$params = explode( '/', $par );
if ( isset( $params[0] ) && trim( $params[0] ) ) {
$this->target = $params[0];
}
if ( isset( $params[1] ) ) {
$this->noComplete = (bool)$params[1];
}
if ( isset( $params[2] ) ) {
$this->noEmpty = (bool)$params[2];
}
// Whether the form has been submitted
$submitted = $request->getVal( 'x' ) === 'D';
// Default booleans to false if the form was submitted
if ( !$this->including() ) {
$this->target = $request->getVal( $this->targetValueName, $this->target );
$this->noComplete = $request->getBool( 'suppresscomplete', $this->noComplete && !$submitted );
$this->noEmpty = $request->getBool( 'suppressempty', $this->noEmpty && !$submitted );
}
if ( !$this->including() ) {
TranslateUtils::addSpecialHelpLink( $wgOut, 'Help:Extension:Translate/Statistics_and_reporting' );
$wgOut->addHTML( $this->getForm() );
}
$allowedValues = $this->getAllowedValues();
if ( in_array( $this->target, $allowedValues, true ) ) {
$this->outputIntroduction();
$output = $this->getTable();
if ( $this->incomplete ) {
$wgOut->wrapWikiMsg( "<div class='error'>$1</div>", 'translate-langstats-incomplete' );
}
if ( $this->nothing ) {
$wgOut->wrapWikiMsg( "<div class='error'>$1</div>", 'translate-mgs-nothing' );
}
$wgOut->addHTML( $output );
} elseif ( $submitted ) {
$this->invalidTarget();
}
}
示例8: execute
/**
* The special page running code
*/
public function execute($parameters)
{
$this->setup($parameters);
$this->setHeaders();
$out = $this->getOutput();
TranslateUtils::addSpecialHelpLink($out, '//translatewiki.net/wiki/FAQ#Special:AdvancedTranslate', true);
$out->addHTML($this->getForm());
if (!$this->options['module']) {
return;
}
switch ($this->options['module']) {
case 'alias':
case self::MODULE_SPECIAL:
$o = new SpecialPageAliasesCM($this->options['language']);
break;
case self::MODULE_MAGIC:
$o = new MagicWordsCM($this->options['language']);
break;
case self::MODULE_NAMESPACE:
$o = new NamespaceCM($this->options['language']);
break;
default:
throw new MWException("Unknown module {$this->options['module']}");
}
$request = $this->getRequest();
if ($request->wasPosted() && $this->options['savetodb']) {
if (!$this->getUser()->isAllowed('translate')) {
throw new PermissionsError('translate');
}
$errors = array();
$o->loadFromRequest($request);
$o->validate($errors);
if ($errors) {
$out->wrapWikiMsg('<div class="error">$1</div>', 'translate-magic-notsaved');
$this->outputErrors($errors);
$out->addHTML($o->output());
return;
} else {
$o->save($request);
$out->wrapWikiMsg('<strong>$1</strong>', 'translate-magic-saved');
$out->addHTML($o->output());
return;
}
}
if ($this->options['export']) {
$output = $o->export();
if ($output === '') {
$out->addWikiMsg('translate-magic-nothing-to-export');
return;
}
$result = Xml::element('textarea', array('rows' => '30'), $output);
$out->addHTML($result);
return;
}
$out->addWikiMsg('translate-magic-help');
$errors = array();
$o->validate($errors);
if ($errors) {
$this->outputErrors($errors);
}
$out->addHTML($o->output());
}
示例9: form
/**
* Constructs the form which can be used to generate custom graphs.
* @param $opts FormOptions
*/
protected function form( FormOptions $opts ) {
global $wgOut, $wgScript;
$this->setHeaders();
TranslateUtils::addSpecialHelpLink( $wgOut, 'Help:Extension:Translate/Statistics_and_reporting' );
$wgOut->addWikiMsg( 'translate-statsf-intro' );
$wgOut->addHTML(
Xml::fieldset( wfMsg( 'translate-statsf-options' ) ) .
Html::openElement( 'form', array( 'action' => $wgScript ) ) .
Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
Html::hidden( 'preview', 1 ) .
'<table>'
);
$submit = Xml::submitButton( wfMsg( 'translate-statsf-submit' ) );
$wgOut->addHTML(
$this->eInput( 'width', $opts ) .
$this->eInput( 'height', $opts ) .
'<tr><td colspan="2"><hr /></td></tr>' .
$this->eInput( 'start', $opts, 12 ) .
$this->eInput( 'days', $opts ) .
$this->eRadio( 'scale', $opts, array( 'months', 'weeks', 'days', 'hours' ) ) .
$this->eRadio( 'count', $opts, array( 'edits', 'users', 'registrations' ) ) .
'<tr><td colspan="2"><hr /></td></tr>' .
$this->eLanguage( 'language', $opts ) .
$this->eGroup( 'group', $opts ) .
'<tr><td colspan="2"><hr /></td></tr>' .
'<tr><td colspan="2">' . $submit . '</td></tr>'
);
$wgOut->addHTML(
'</table>' .
'</form>' .
'</fieldset>'
);
if ( !$opts['preview'] ) {
return;
}
$spiParams = '';
foreach ( $opts->getChangedValues() as $key => $v ) {
if ( $key === 'preview' ) {
continue;
}
if ( $spiParams !== '' ) {
$spiParams .= ';';
}
$spiParams .= wfEscapeWikiText( "$key=$v" );
}
if ( $spiParams !== '' ) {
$spiParams = '/' . $spiParams;
}
$titleText = $this->getTitle()->getPrefixedText();
$wgOut->addHTML(
Html::element( 'hr' ) .
Html::element( 'pre', null, "{{{$titleText}{$spiParams}}}" )
);
$wgOut->addHTML(
Html::element( 'hr' ) .
Html::rawElement( 'div', array( 'style' => 'margin: 1em auto; text-align: center;' ), $this->image( $opts ) )
);
}
示例10: execute
public function execute($parameters)
{
$this->setHeaders();
$user = $this->getUser();
$request = $this->getRequest();
$target = $request->getText('target', $parameters);
$revision = $request->getInt('revision', 0);
$action = $request->getVal('do');
$out = $this->getOutput();
TranslateUtils::addSpecialHelpLink($out, 'Help:Extension:Translate/Page_translation_example');
// No specific page or invalid input
$title = Title::newFromText($target);
if (!$title) {
if ($target !== '') {
$out->addWikiMsg('tpt-badtitle');
} else {
$this->listPages();
}
return;
}
// Check permissions
if (!$user->isAllowed('pagetranslation')) {
throw new PermissionsError('pagetranslation');
}
// Check permissions
if ($request->wasPosted() && !$user->matchEditToken($request->getText('token'))) {
throw new PermissionsError('pagetranslation');
}
// We are processing some specific page
if (!$title->exists()) {
$out->addWikiMsg('tpt-nosuchpage', $title->getPrefixedText());
return;
}
if ($action === 'discourage' || $action === 'encourage') {
$id = TranslatablePage::getMessageGroupIdFromTitle($title);
$current = MessageGroups::getPriority($id);
if ($action === 'encourage') {
$new = '';
} else {
$new = 'discouraged';
}
if ($new !== $current) {
MessageGroups::setPriority($id, $new);
$entry = new ManualLogEntry('pagetranslation', $action);
$entry->setPerformer($user);
$entry->setTarget($title);
$logid = $entry->insert();
$entry->publish($logid);
}
$this->listPages();
$group = MessageGroups::getGroup($id);
$parents = MessageGroups::getSharedGroups($group);
MessageGroupStats::clearGroup($parents);
return;
}
if ($action === 'unlink') {
if (!$request->wasPosted()) {
$this->showUnlinkConfirmation($title);
return;
} else {
$page = TranslatablePage::newFromTitle($title);
$content = ContentHandler::makeContent(self::getStrippedSourcePageText($page->getParse()), $title);
$status = WikiPage::factory($title)->doEditContent($content, $this->msg('tpt-unlink-summary')->inContentLanguage()->text(), EDIT_FORCE_BOT | EDIT_UPDATE);
if (!$status->isOK()) {
$out->wrapWikiMsg('<div class="errorbox">$1</div>', array('tpt-edit-failed', $status->getWikiText()));
return;
}
$page = TranslatablePage::newFromTitle($title);
$this->unmarkPage($page, $user);
$out->wrapWikiMsg('<div class="successbox">$1</div>', array('tpt-unmarked', $title->getPrefixedText()));
$this->listPages();
return;
}
}
if ($action === 'unmark') {
$page = TranslatablePage::newFromTitle($title);
$this->unmarkPage($page, $user);
$out->wrapWikiMsg('<div class="successbox">$1</div>', array('tpt-unmarked', $title->getPrefixedText()));
$this->listPages();
return;
}
if ($revision === 0) {
// Get the latest revision
$revision = intval($title->getLatestRevID());
}
$page = TranslatablePage::newFromRevision($title, $revision);
if (!$page instanceof TranslatablePage) {
$out->wrapWikiMsg('<div class="errorbox">$1</div>', array('tpt-notsuitable', $title->getPrefixedText(), $revision));
return;
}
if ($revision !== intval($title->getLatestRevID())) {
// We do want to notify the reviewer if the underlying page changes during review
$target = $title->getFullUrl(array('oldid' => $revision));
$link = "<span class='plainlinks'>[{$target} {$revision}]</span>";
$out->wrapWikiMsg('<div class="warningbox">$1</div>', array('tpt-oldrevision', $title->getPrefixedText(), $link));
$this->listPages();
return;
}
$lastrev = $page->getMarkedTag();
if ($lastrev !== false && $lastrev === $revision) {
//.........这里部分代码省略.........
示例11: execute
public function execute($par)
{
global $wgLanguageCode;
$this->setHeaders();
$this->checkPermissions();
$server = TTMServer::primary();
if (!$server instanceof SearchableTTMServer) {
throw new ErrorPageError('tux-sst-nosolr-title', 'tux-sst-nosolr-body');
}
$out = $this->getOutput();
$out->addModuleStyles('jquery.uls.grid');
$out->addModuleStyles('ext.translate.special.searchtranslations.styles');
$out->addModuleStyles('ext.translate.special.translate.styles');
$out->addModules('ext.translate.special.searchtranslations');
$out->addModules('ext.translate.special.searchtranslations.operatorsuggest');
TranslateUtils::addSpecialHelpLink($out, 'Help:Extension:Translate#searching');
$this->opts = $opts = new FormOptions();
$opts->add('query', '');
$opts->add('sourcelanguage', $wgLanguageCode);
$opts->add('language', '');
$opts->add('group', '');
$opts->add('grouppath', '');
$opts->add('filter', '');
$opts->add('match', '');
$opts->add('case', '');
$opts->add('limit', $this->limit);
$opts->add('offset', 0);
$opts->fetchValuesFromRequest($this->getRequest());
$queryString = $opts->getValue('query');
if ($queryString === '') {
$this->showEmptySearch();
return;
}
$params = $opts->getAllValues();
$filter = $opts->getValue('filter');
try {
$translationSearch = new CrossLanguageTranslationSearchQuery($params, $server);
if (in_array($filter, $translationSearch->getAvailableFilters())) {
if ($opts->getValue('language') === '') {
$params['language'] = $this->getLanguage()->getCode();
$opts->setValue('language', $params['language']);
}
$documents = $translationSearch->getDocuments();
$total = $translationSearch->getTotalHits();
$resultset = $translationSearch->getResultSet();
} else {
$resultset = $server->search($queryString, $params, $this->hl);
$documents = $server->getDocuments($resultset);
$total = $server->getTotalHits($resultset);
}
} catch (TTMServerException $e) {
error_log('Translation search server unavailable:' . $e->getMessage());
throw new ErrorPageError('tux-sst-solr-offline-title', 'tux-sst-solr-offline-body');
}
// Part 1: facets
$facets = $server->getFacets($resultset);
$facetHtml = '';
if (count($facets['language']) > 0) {
if ($filter !== '') {
$facets['language'] = array_merge($facets['language'], array($opts->getValue('language') => $total));
}
$facetHtml = Html::element('div', array('class' => 'row facet languages', 'data-facets' => FormatJson::encode($this->getLanguages($facets['language'])), 'data-language' => $opts->getValue('language')), $this->msg('tux-sst-facet-language'));
}
if (count($facets['group']) > 0) {
$facetHtml .= Html::element('div', array('class' => 'row facet groups', 'data-facets' => FormatJson::encode($this->getGroups($facets['group'])), 'data-group' => $opts->getValue('group')), $this->msg('tux-sst-facet-group'));
}
// Part 2: results
$resultsHtml = '';
$title = Title::newFromText($queryString);
if ($title && !in_array($filter, $translationSearch->getAvailableFilters())) {
$handle = new MessageHandle($title);
$code = $handle->getCode();
$language = $opts->getValue('language');
if ($handle->isValid() && $code !== '' && $code !== $language) {
$groupId = $handle->getGroup()->getId();
$helpers = new TranslationHelpers($title, $groupId);
$document['wiki'] = wfWikiId();
$document['localid'] = $handle->getTitleForBase()->getPrefixedText();
$document['content'] = $helpers->getTranslation();
$document['language'] = $handle->getCode();
array_unshift($documents, $document);
$total++;
}
}
foreach ($documents as $document) {
$text = $document['content'];
$text = TranslateUtils::convertWhiteSpaceToHTML($text);
list($pre, $post) = $this->hl;
$text = str_replace($pre, '<strong class="tux-search-highlight">', $text);
$text = str_replace($post, '</strong>', $text);
$title = Title::newFromText($document['localid'] . '/' . $document['language']);
if (!$title) {
// Should not ever happen but who knows...
continue;
}
$resultAttribs = array('class' => 'row tux-message', 'data-title' => $title->getPrefixedText(), 'data-language' => $document['language']);
$handle = new MessageHandle($title);
if ($handle->isValid()) {
$groupId = $handle->getGroup()->getId();
$helpers = new TranslationHelpers($title, $groupId);
//.........这里部分代码省略.........
示例12: execute
/**
* Access point for this special page.
*/
public function execute($parameters)
{
global $wgOut, $wgTranslateBlacklist, $wgRequest;
$wgOut->addModules('ext.translate.special.translate');
$this->setHeaders();
// @todo Move to api or so
if ($parameters === 'editpage') {
$editpage = TranslationEditPage::newFromRequest($wgRequest);
if ($editpage) {
$editpage->execute();
return;
}
}
$this->setup($parameters);
$errors = array();
if ($this->options['group'] === '') {
TranslateUtils::addSpecialHelpLink($wgOut, 'Help:Extension:Translate/Translation_example');
$this->groupInformation();
return;
}
$codes = Language::getLanguageNames(false);
if (!$this->options['language'] || !isset($codes[$this->options['language']])) {
$errors['language'] = wfMsgExt('translate-page-no-such-language', array('parse'));
$this->options['language'] = $this->defaults['language'];
}
if (!$this->task instanceof TranslateTask) {
$errors['task'] = wfMsgExt('translate-page-no-such-task', array('parse'));
$this->options['task'] = $this->defaults['task'];
}
if (!$this->group instanceof MessageGroup) {
$errors['group'] = wfMsgExt('translate-page-no-such-group', array('parse'));
$this->options['group'] = $this->defaults['group'];
}
TranslateUtils::addSpecialHelpLink($wgOut, 'Help:Extension:Translate/Translation_example');
// Show errors nicely.
$wgOut->addHTML($this->settingsForm($errors));
if (count($errors)) {
return;
} else {
$checks = array($this->options['group'], strtok($this->options['group'], '-'), '*');
foreach ($checks as $check) {
$reason = @$wgTranslateBlacklist[$check][$this->options['language']];
if ($reason !== null) {
$wgOut->addWikiMsg('translate-page-disabled', $reason);
return;
}
}
}
// Proceed.
$taskOptions = new TaskOptions($this->options['language'], $this->options['limit'], $this->options['offset'], array($this, 'cbAddPagingNumbers'));
// Initialise and get output.
$this->task->init($this->group, $taskOptions);
$output = $this->task->execute();
if ($this->task->plainOutput()) {
$wgOut->disable();
header('Content-type: text/plain; charset=UTF-8');
echo $output;
} else {
$description = $this->getGroupDescription($this->group);
$taskid = $this->options['task'];
if (in_array($taskid, array('untranslated', 'reviewall'), true)) {
$hasOptional = count($this->group->getTags('optional'));
if ($hasOptional) {
$linker = class_exists('DummyLinker') ? new DummyLinker() : new Linker();
$linktext = wfMessage('translate-page-description-hasoptional-open')->escaped();
$params = array('task' => 'optional') + $this->nondefaults;
$link = $linker->link($this->getTitle(), $linktext, array(), $params);
$note = wfMessage('translate-page-description-hasoptional')->rawParams($link)->parseAsBlock();
if ($description) {
$description .= '<br>' . $note;
} else {
$description = $note;
}
}
}
$status = $this->getWorkflowStatus();
if ($status !== false) {
$description = $status . $description;
}
if ($description) {
$description = Xml::fieldset(wfMsg('translate-page-description-legend'), $description);
}
$links = $this->doStupidLinks();
if ($this->paging['count'] === 0) {
$wgOut->addHTML($description . $links);
} else {
$wgOut->addHTML($description . $links . $output . $links);
}
}
}
示例13: execute
public function execute($par)
{
global $wgRequest;
$this->out->setPageTitle(htmlspecialchars(wfMsg('translate-managegroups')));
$group = $wgRequest->getText('group');
$group = MessageGroups::getGroup($group);
if (!$group instanceof FileBasedMessageGroup) {
$group = null;
}
if ($group) {
if ($wgRequest->getBool('rebuildall', false) && $wgRequest->wasPosted() && $this->user->isAllowed('translate-manage') && $this->user->matchEditToken($wgRequest->getVal('token'))) {
$languages = explode(',', $wgRequest->getText('codes'));
foreach ($languages as $code) {
$cache = new MessageGroupCache($group, $code);
$cache->create();
}
}
$code = $wgRequest->getText('language', 'en');
// Go to English for undefined codes.
$codes = array_keys(Language::getLanguageNames(false));
if (!in_array($code, $codes)) {
$code = 'en';
}
if ($wgRequest->getVal('from') !== 'main') {
$this->importForm($group, $code);
return;
}
}
// Main list
global $wgLang, $wgOut;
$groups = MessageGroups::singleton()->getGroups();
TranslateUtils::addSpecialHelpLink($wgOut, 'Help:Extension:Translate/Group_management');
$wgOut->wrapWikiMsg('<h2>$1</h2>', 'translate-manage-listgroups');
$separator = wfMsg('word-separator');
$languages = array_keys(Language::getLanguageNames(false));
foreach ($groups as $group) {
if (!$group instanceof FileBasedMessageGroup) {
continue;
}
wfDebug(__METHOD__ . ": {$group->getId()}\n");
$id = $group->getId();
$link = $this->skin->link($this->getTitle(), $group->getLabel(), array('id' => "mw-group-{$id}"), array('group' => $id));
$out = $link . $separator;
$cache = new MessageGroupCache($group);
if ($cache->exists()) {
$timestamp = wfTimestamp(TS_MW, $cache->getTimestamp());
$out .= wfMsg('translate-manage-cacheat', $wgLang->date($timestamp), $wgLang->time($timestamp));
$modified = array();
foreach ($languages as $code) {
$cache = new MessageGroupCache($group, $code);
if (!$cache->isValid()) {
$modified[] = $code;
}
}
if (count($modified)) {
$out = '[' . implode(",", $modified) . '] ' . $out;
if (!in_array('en', $modified) && $this->user->isAllowed('translate-manage')) {
$out .= $this->rebuildButton($group, $modified, 'main');
}
} else {
// @todo FIXME: should be in CSS file.
$out = Html::rawElement('span', array('style' => 'color:grey'), $out);
}
} else {
$out .= wfMsg('translate-manage-newgroup');
}
$wgOut->addHtml($out);
$wgOut->addHtml('<hr>');
}
$wgOut->wrapWikiMsg('<h2>$1</h2>', 'translate-manage-listgroups-old');
$wgOut->addHTML('<ul>');
foreach ($groups as $group) {
if ($group instanceof FileBasedMessageGroup) {
continue;
}
$wgOut->addHtml(Xml::element('li', null, $group->getLabel()));
}
$wgOut->addHTML('</ul>');
}
示例14: execute
public function execute($par)
{
global $wgLang, $wgOut, $wgRequest;
$this->purge = $wgRequest->getVal('action') === 'purge';
$this->setHeaders();
TranslateUtils::addSpecialHelpLink($wgOut, 'Help:Extension:Translate/Statistics_and_reporting#List_of_languages_and_translators');
$wgOut->addModules('ext.translate.special.supportedlanguages');
$cache = wfGetCache(CACHE_ANYTHING);
$cachekey = wfMemcKey('translate-supportedlanguages', $wgLang->getCode());
$data = $cache->get($cachekey);
if (!$this->purge && is_string($data)) {
$wgOut->addHtml($data);
return;
}
$this->outputHeader();
$wgOut->addWikiMsg('supportedlanguages-colorlegend', $this->getColorLegend());
$wgOut->addWikiMsg('supportedlanguages-localsummary');
// Check if CLDR extension has been installed.
$cldrInstalled = class_exists('LanguageNames');
if ($cldrInstalled) {
$locals = LanguageNames::getNames($wgLang->getCode(), LanguageNames::FALLBACK_NORMAL, LanguageNames::LIST_MW_AND_CLDR);
}
$natives = Language::getLanguageNames(false);
ksort($natives);
$this->outputLanguageCloud($natives);
// Requires NS_PORTAL. If not present, display error text.
if (!defined('NS_PORTAL')) {
$users = $this->fetchTranslatorsAuto();
} else {
$users = $this->fetchTranslatorsPortal($natives);
}
$this->preQueryUsers($users);
list($editcounts, $lastedits) = $this->getUserStats();
global $wgUser;
$skin = $wgUser->getSkin();
// Information to be used inside the foreach loop.
$linkInfo['rc']['title'] = SpecialPage::getTitleFor('Recentchanges');
$linkInfo['rc']['msg'] = wfMsg('supportedlanguages-recenttranslations');
$linkInfo['stats']['title'] = SpecialPage::getTitleFor('LanguageStats');
$linkInfo['stats']['msg'] = wfMsg('languagestats');
foreach (array_keys($natives) as $code) {
if (!isset($users[$code])) {
continue;
}
// If CLDR is installed, add localised header and link title.
if ($cldrInstalled) {
$headerText = wfMsg('supportedlanguages-portallink', $code, $locals[$code], $natives[$code]);
} else {
// No CLDR, so a less localised header and link title.
$headerText = wfMsg('supportedlanguages-portallink-nocldr', $code, $natives[$code]);
}
$headerText = htmlspecialchars($headerText);
$wgOut->addHtml(Html::openElement('h2', array('id' => $code)));
if (defined('NS_PORTAL')) {
$portalTitle = Title::makeTitleSafe(NS_PORTAL, $code);
$wgOut->addHtml($skin->linkKnown($portalTitle, $headerText));
} else {
$wgOut->addHtml($headerText);
}
$wgOut->addHTML("</h2>");
// Add useful links for language stats and recent changes for the language.
$links = array();
$links[] = $skin->link($linkInfo['stats']['title'], $linkInfo['stats']['msg'], array(), array('code' => $code, 'suppresscomplete' => '1'), array('known', 'noclasses'));
$links[] = $skin->link($linkInfo['rc']['title'], $linkInfo['rc']['msg'], array(), array('translations' => 'only', 'trailer' => "/" . $code), array('known', 'noclasses'));
$linkList = $wgLang->listToText($links);
$wgOut->addHTML("<p>" . $linkList . "</p>\n");
$this->makeUserList($users[$code], $editcounts, $lastedits);
}
$wgOut->addHtml(Html::element('hr'));
$wgOut->addWikiMsg('supportedlanguages-count', $wgLang->formatNum(count($users)));
$cache->set($cachekey, $wgOut->getHTML(), 3600);
}