/** * Generates the html snippet for ajax edit. Echoes it to the output and * disabled all other output. */ public function execute() { global $wgServer, $wgScriptPath; $context = RequestContext::getMain(); $context->getOutput()->disable(); $data = $this->getEditInfo(); $helpers = new TranslationHelpers($this->getTitle(), ''); $id = "tm-target-{$helpers->dialogID()}"; $helpers->setTextareaId($id); if ($this->suggestions === 'checks') { echo $helpers->getBoxes($this->suggestions); return; } $handle = new MessageHandle($this->getTitle()); $groupId = MessageIndex::getPrimaryGroupId($handle); $translation = ''; if ($groupId) { $translation = $helpers->getTranslation(); } $targetLang = Language::factory($helpers->getTargetLanguage()); $textareaParams = array('name' => 'text', 'class' => 'mw-translate-edit-area', 'id' => $id, 'lang' => $targetLang->getCode(), 'dir' => $targetLang->getDir()); if (!$groupId || !$context->getUser()->isAllowed('translate')) { $textareaParams['readonly'] = 'readonly'; } $extraInputs = ''; Hooks::run('TranslateGetExtraInputs', array(&$translation, &$extraInputs)); $textarea = Html::element('textarea', $textareaParams, $translation); $hidden = array(); $hidden[] = Html::hidden('title', $this->getTitle()->getPrefixedDbKey()); if (isset($data['revisions'][0]['timestamp'])) { $hidden[] = Html::hidden('basetimestamp', $data['revisions'][0]['timestamp']); } $hidden[] = Html::hidden('starttimestamp', $data['starttimestamp']); if (isset($data['edittoken'])) { $hidden[] = Html::hidden('token', $data['edittoken']); } $hidden[] = Html::hidden('format', 'json'); $hidden[] = Html::hidden('action', 'edit'); $summary = Xml::inputLabel($context->msg('translate-js-summary')->text(), 'summary', 'summary', 40); $save = Xml::submitButton($context->msg('translate-js-save')->text(), array('class' => 'mw-translate-save')); $saveAndNext = Xml::submitButton($context->msg('translate-js-next')->text(), array('class' => 'mw-translate-next')); $skip = Html::element('input', array('class' => 'mw-translate-skip', 'type' => 'button', 'value' => $context->msg('translate-js-skip')->text())); if ($this->getTitle()->exists()) { $history = Html::element('input', array('class' => 'mw-translate-history', 'type' => 'button', 'value' => $context->msg('translate-js-history')->text())); } else { $history = ''; } $support = $this->getSupportButton($this->getTitle()); if ($context->getUser()->isAllowed('translate')) { $bottom = "{$summary}{$save}{$saveAndNext}{$skip}{$history}{$support}"; } else { $text = $context->msg('translate-edit-nopermission')->escaped(); $button = $this->getPermissionPageButton(); $bottom = "{$text} {$button}{$skip}{$history}{$support}"; } // Use the api to submit edits $formParams = array('action' => "{$wgServer}{$wgScriptPath}/api.php", 'method' => 'post'); $form = Html::rawElement('form', $formParams, implode("\n", $hidden) . "\n" . $helpers->getBoxes($this->suggestions) . "\n" . Html::rawElement('div', array('class' => 'mw-translate-inputs'), "{$textarea}\n{$extraInputs}") . "\n" . Html::rawElement('div', array('class' => 'mw-translate-bottom'), $bottom)); echo Html::rawElement('div', array('class' => 'mw-ajax-dialog'), $form); }
/** * Generates the html snippet for ajax edit. Echoes it to the output and * disabled all other output. */ public function execute() { global $wgOut, $wgServer, $wgScriptPath, $wgUser, $wgRequest; $wgOut->disable(); $data = $this->getEditInfo(); $groupId = $wgRequest->getText( 'loadgroup', '' ); $helpers = new TranslationHelpers( $this->getTitle(), $groupId ); $id = "tm-target-{$helpers->dialogID()}"; $helpers->setTextareaId( $id ); if ( $this->suggestions === 'only' ) { echo $helpers->getBoxes( $this->suggestions ); return; } if ( $this->suggestions === 'checks' ) { echo $helpers->getBoxes( $this->suggestions ); return; } $translation = $helpers->getTranslation(); $targetLang = Language::factory( $helpers->getTargetLanguage() ); $textareaParams = array( 'name' => 'text', 'class' => 'mw-translate-edit-area', 'id' => $id, /* Target language might differ from interface language. Set * a suitable default direction */ 'lang' => $targetLang->getCode(), 'dir' => $targetLang->getDir(), ); if ( !$wgUser->isAllowed( 'translate' ) ) { $textareaParams['readonly'] = 'readonly'; } $textarea = Html::element( 'textarea', $textareaParams, $translation ); $hidden = array(); $hidden[] = Html::hidden( 'title', $this->getTitle()->getPrefixedDbKey() ); if ( isset( $data['revisions'][0]['timestamp'] ) ) { $hidden[] = Html::hidden( 'basetimestamp', $data['revisions'][0]['timestamp'] ); } $hidden[] = Html::hidden( 'starttimestamp', $data['starttimestamp'] ); $hidden[] = Html::hidden( 'token', $data['edittoken'] ); $hidden[] = Html::hidden( 'format', 'json' ); $hidden[] = Html::hidden( 'action', 'edit' ); $summary = Xml::inputLabel( wfMsg( 'translate-js-summary' ), 'summary', 'summary', 40 ); $save = Xml::submitButton( wfMsg( 'translate-js-save' ), array( 'class' => 'mw-translate-save' ) ); $saveAndNext = Xml::submitButton( wfMsg( 'translate-js-next' ), array( 'class' => 'mw-translate-next' ) ); $skip = Html::element( 'input', array( 'class' => 'mw-translate-skip', 'type' => 'button', 'value' => wfMsg( 'translate-js-skip' ) ) ); if ( $this->getTitle()->exists() ) { $history = Html::element( 'input', array( 'class' => 'mw-translate-history', 'type' => 'button', 'value' => wfMsg( 'translate-js-history' ) ) ); } else { $history = ''; } $support = $this->getSupportButton( $this->getTitle() ); if ( $wgUser->isAllowed( 'translate' ) ) { $bottom = "$summary$save$saveAndNext$skip$history$support"; } else { $text = wfMessage( 'translate-edit-nopermission' )->escaped(); $button = $this->getPermissionPageButton(); $bottom = "$text $button$skip$history$support"; } // Use the api to submit edits $formParams = array( 'action' => "{$wgServer}{$wgScriptPath}/api.php", 'method' => 'post', ); $form = Html::rawElement( 'form', $formParams, implode( "\n", $hidden ) . "\n" . $helpers->getBoxes( $this->suggestions ) . "\n" . "$textarea\n$bottom" ); echo Html::rawElement( 'div', array( 'class' => 'mw-ajax-dialog' ), $form ); }