Krinkle has uploaded a new change for review. https://gerrit.wikimedia.org/r/84991
Change subject: Exception: Clean up html document for error pages ...................................................................... Exception: Clean up html document for error pages Interface: * Restore sitename as part of error page document title (follows-up 4ca9805). Moved to general Exception class as it is useful in general, this effectively changes the title from "This wiki has a problem" to "Internal error - Wikipedia". * Added basic <style> to have it use a sans-serif font and a bit padding to offset it from the edge of the window. Clean up: * Removed spurious "<!-- SiteSearch Google -->" comment. * Change sitesearch radio button to not need the id/for attributes but simply nest them. Visual rendering and browser behaviour is identical. * Renamed $text to $html since that is what it is (follows-up 4ca9805 which reused that variable for html, it used to contain text). * Remove odd linebreak from "dberr-problems" message, it was being output as-is in the html (html escaped, of course) and line breaks have no meaning inside an <h1> tag. Using a simple space instead. Visual rendering is identical. Coding style: * Using <DOCTYPE html> instead of <doctype html> for consistency with other documents we output. * Switched a few inline #-style comments to use // instead. * Switched a few strings from double quotes to single quotes in areas close to the changed code. Change-Id: I33232d871200cbd23501c9a6c5f8a178931e135e --- M includes/Exception.php M includes/db/DatabaseError.php M languages/messages/MessagesEn.php 3 files changed, 37 insertions(+), 42 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/91/84991/1 diff --git a/includes/Exception.php b/includes/Exception.php index e1bfb2d..40f6784 100644 --- a/includes/Exception.php +++ b/includes/Exception.php @@ -165,7 +165,8 @@ * @return string */ function getPageTitle() { - return $this->msg( 'internalerror', "Internal error" ); + global $wgSitename; + return $this->msg( 'dberr-header', "Internal error - $wgSitename" ); } /** @@ -225,13 +226,14 @@ $wgOut->output(); } else { - header( "Content-Type: text/html; charset=utf-8" ); - echo "<!doctype html>\n" . + header( 'Content-Type: text/html; charset=utf-8' ); + echo "<!DOCTYPE html>\n" . '<html><head>' . '<title>' . htmlspecialchars( $this->getPageTitle() ) . '</title>' . + '<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' . "</head><body>\n"; - $hookResult = $this->runHooks( get_class( $this ) . "Raw" ); + $hookResult = $this->runHooks( get_class( $this ) . 'Raw' ); if ( $hookResult ) { echo $hookResult; } else { @@ -258,8 +260,8 @@ } elseif ( self::isCommandLine() ) { MWExceptionHandler::printError( $this->getText() ); } else { - header( "HTTP/1.1 500 MediaWiki exception" ); - header( "Status: 500 MediaWiki exception", true ); + header( 'HTTP/1.1 500 MediaWiki exception' ); + header( 'Status: 500 MediaWiki exception', true ); header( "Content-Type: $wgMimeType; charset=utf-8", true ); $this->reportHTML(); diff --git a/includes/db/DatabaseError.php b/includes/db/DatabaseError.php index da391d7..ebf5ae6 100644 --- a/includes/db/DatabaseError.php +++ b/includes/db/DatabaseError.php @@ -137,15 +137,8 @@ * @return bool */ function getLogMessage() { - # Don't send to the exception log + // Don't send to the exception log return false; - } - - /** - * @return string - */ - function getPageTitle() { - return $this->msg( 'dberr-header', 'This wiki has a problem' ); } /** @@ -154,7 +147,7 @@ function getHTML() { global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors; - $sorry = htmlspecialchars( $this->msg( 'dberr-problems', "Sorry!\nThis site is experiencing technical difficulties." ) ); + $sorry = htmlspecialchars( $this->msg( 'dberr-problems', 'Sorry! This site is experiencing technical difficulties.' ) ); $again = htmlspecialchars( $this->msg( 'dberr-again', 'Try waiting a few minutes and reloading.' ) ); if ( $wgShowHostnames || $wgShowSQLErrors ) { @@ -169,17 +162,17 @@ # No database access MessageCache::singleton()->disable(); - $text = "<h1>$sorry</h1><p>$again</p><p><small>$info</small></p>"; + $html = "<h1>$sorry</h1><p>$again</p><p><small>$info</small></p>"; if ( $wgShowDBErrorBacktrace ) { - $text .= '<p>Backtrace:</p><p>' . + $html .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) ) . '</p>'; } - $text .= '<hr />'; - $text .= $this->searchForm(); + $html .= '<hr />'; + $html .= $this->searchForm(); - return $text; + return $html; } protected function getTextContent() { @@ -195,21 +188,21 @@ public function reportHTML() { global $wgUseFileCache; - # Check whether we can serve a file-cached copy of the page with the error underneath + // Check whether we can serve a file-cached copy of the page with the error underneath if ( $wgUseFileCache ) { try { $cache = $this->fileCachedPage(); - # Cached version on file system? + // Cached version on file system? if ( $cache !== null ) { - # Hack: extend the body for error messages + // Hack: extend the body for error messages $cache = str_replace( array( '</html>', '</body>' ), '', $cache ); - # Add cache notice... - $cache .= '<div style="color:red;font-size:150%;font-weight:bold;">' . + // Add cache notice... + $cache .= '<div style="border:1px solid #ffd0d0;padding:1em;">' . htmlspecialchars( $this->msg( 'dberr-cachederror', - 'This is a cached copy of the requested page, and may not be up to date. ' ) ) . + 'This is a cached copy of the requested page, and may not be up to date.' ) ) . '</div>'; - # Output cached page with notices on bottom and re-close body + // Output cached page with notices on bottom and re-close body echo "{$cache}<hr />{$this->getHTML()}</body></html>"; return; } @@ -218,7 +211,7 @@ } } - # We can't, cough and die in the usual fashion + // We can't, cough and die in the usual fashion parent::reportHTML(); } @@ -239,8 +232,8 @@ $trygoogle = <<<EOT <div style="margin: 1.5em">$usegoogle<br /> -<small>$outofdate</small></div> -<!-- SiteSearch Google --> +<small>$outofdate</small> +</div> <form method="get" action="//www.google.com/search" id="googlesearch"> <input type="hidden" name="domains" value="$server" /> <input type="hidden" name="num" value="50" /> @@ -249,12 +242,11 @@ <input type="text" name="q" size="31" maxlength="255" value="$search" /> <input type="submit" name="btnG" value="$googlesearch" /> - <div> - <input type="radio" name="sitesearch" id="gwiki" value="$server" checked="checked" /><label for="gwiki">$sitename</label> - <input type="radio" name="sitesearch" id="gWWW" value="" /><label for="gWWW">WWW</label> - </div> + <p> + <label><input type="radio" name="sitesearch" value="$server" checked="checked" />$sitename</label> + <label><input type="radio" name="sitesearch" value="" />WWW</label> + </p> </form> -<!-- SiteSearch Google --> EOT; return $trygoogle; } @@ -266,15 +258,17 @@ global $wgTitle, $wgOut, $wgRequest; if ( $wgOut->isDisabled() ) { - return ''; // Done already? + // Done already? + return ''; } - if ( $wgTitle ) { // use $wgTitle if we managed to set it + if ( $wgTitle ) { + // use $wgTitle if we managed to set it $t = $wgTitle->getPrefixedDBkey(); } else { - # Fallback to the raw title URL param. We can't use the Title - # class is it may hit the interwiki table and give a DB error. - # We may get a cache miss due to not sanitizing the title though. + // Fallback to the raw title URL param. We can't use the Title + // class is it may hit the interwiki table and give a DB error. + // We may get a cache miss due to not sanitizing the title though. $t = str_replace( ' ', '_', $wgRequest->getVal( 'title' ) ); if ( $t == '' ) { // fallback to main page $t = Title::newFromText( diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 5e66259..6eb61a9 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -4945,8 +4945,7 @@ # Database error messages 'dberr-header' => 'This wiki has a problem', -'dberr-problems' => 'Sorry! -This site is experiencing technical difficulties.', +'dberr-problems' => 'Sorry! This site is experiencing technical difficulties.', 'dberr-again' => 'Try waiting a few minutes and reloading.', 'dberr-info' => '(Cannot contact the database server: $1)', 'dberr-info-hidden' => '(Cannot contact the database server)', -- To view, visit https://gerrit.wikimedia.org/r/84991 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I33232d871200cbd23501c9a6c5f8a178931e135e Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Krinkle <krinklem...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits