/** @var bool Has a summary been preset using GET parameter &summary= ? */
public $hasPresetSummary = false;
- /** @var Revision|bool */
+ /** @var Revision|bool|null */
public $mBaseRevision = false;
/** @var bool */
// being set. This is used by ConfirmEdit to display a captcha
// without any error message cruft.
} else {
- $this->hookError = $status->getWikiText();
+ $this->hookError = $this->formatStatusErrors( $status );
}
// Use the existing $status->value if the hook set it
if ( !$status->value ) {
} elseif ( !$status->isOK() ) {
# ...or the hook could be expecting us to produce an error
// FIXME this sucks, we should just use the Status object throughout
- $this->hookError = $status->getWikiText();
+ $this->hookError = $this->formatStatusErrors( $status );
$status->fatal( 'hookaborted' );
$status->value = self::AS_HOOK_ERROR_EXPECTED;
return false;
return true;
}
+ /**
+ * Wrap status errors in an errorbox for increased visiblity
+ *
+ * @param Status $status
+ * @return string Wikitext
+ */
+ private function formatStatusErrors( Status $status ) {
+ $errmsg = $status->getWikiText(
+ 'edit-error-short',
+ 'edit-error-long',
+ $this->context->getLanguage()
+ );
+ return <<<ERROR
+<div class="errorbox">
+{$errmsg}
+</div>
+<br clear="all" />
+ERROR;
+ }
+
/**
* Return the summary to be used for a new section.
*
/**
* @note: this method is very poorly named. If the user opened the form with ?oldid=X,
* one might think of X as the "base revision", which is NOT what this returns.
- * @return Revision Current version when the edit was started
+ * @return Revision|null Current version when the edit was started
*/
public function getBaseRevision() {
if ( !$this->mBaseRevision ) {
$displayTitle = $contextTitle->getPrefixedText();
}
$out->setPageTitle( $this->context->msg( $msg, $displayTitle ) );
+
+ $config = $this->context->getConfig();
+
# Transmit the name of the message to JavaScript for live preview
# Keep Resources.php/mediawiki.action.edit.preview in sync with the possible keys
$out->addJsConfigVars( [
'wgEditMessage' => $msg,
- 'wgAjaxEditStash' => $this->context->getConfig()->get( 'AjaxEditStash' ),
+ 'wgAjaxEditStash' => $config->get( 'AjaxEditStash' ),
] );
+
+ // Add whether to use 'save' or 'publish' messages to JavaScript for post-edit, other
+ // editors, etc.
+ $out->addJsConfigVars(
+ 'wgEditSubmitButtonLabelPublish',
+ $config->get( 'EditSubmitButtonLabelPublish' )
+ );
}
/**
if ( $this->wasDeletedSinceLastEdit() && 'save' == $this->formtype ) {
$username = $this->lastDelete->user_name;
- $comment = CommentStore::newKey( 'log_comment' )->getComment( $this->lastDelete )->text;
+ $comment = CommentStore::getStore()
+ ->getComment( 'log_comment', $this->lastDelete )->text;
// 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?
*/
protected function getLastDelete() {
$dbr = wfGetDB( DB_REPLICA );
- $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin();
+ $commentQuery = CommentStore::getStore()->getJoin( 'log_comment' );
$data = $dbr->selectRow(
[ 'logging', 'user' ] + $commentQuery['tables'],
[
$this->mTitle, $pstContent, $user );
$parserOutput = $pstContent->getParserOutput( $this->mTitle, null, $parserOptions );
ScopedCallback::consume( $scopedCallback );
- $parserOutput->setEditSectionTokens( false ); // no section edit links
return [
'parserOutput' => $parserOutput,
'html' => $parserOutput->getText( [