From: Raimond Spekking Date: Tue, 22 Jan 2008 14:19:35 +0000 (+0000) Subject: * (bug 6436) Localization of Special:Import XML parser Error message(s) X-Git-Tag: 1.31.0-rc.0~49848 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=0582c135269a9aca9406087e22d8324a6e251727;p=lhc%2Fweb%2Fwiklou.git * (bug 6436) Localization of Special:Import XML parser Error message(s) * Add some more specific error messages * Use proper Xxl:: functions --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 085adcc036..be151966dc 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -331,6 +331,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN Non-image handlers and full-size images may now decline it, fixing mystery failures when using $wgThumbnailScriptPath. * (bug 12327) Comma in username no longer disrupts mail headers +* (bug 6436) Localization of Special:Import XML parser Error message(s). == Parser changes in 1.12 == diff --git a/includes/SpecialImport.php b/includes/SpecialImport.php index d22e2a582a..2a6fba1d59 100644 --- a/includes/SpecialImport.php +++ b/includes/SpecialImport.php @@ -66,7 +66,7 @@ function wfSpecialImport( $page = '' ) { } if( WikiError::isError( $source ) ) { - $wgOut->addWikiText( wfEscapeWikiText( $source->getMessage() ) ); + $wgOut->addWikiText( '

' . wfMsg( 'importfailed', wfEscapeWikiText( $source->getMessage() ) ) . '

' ); } else { $wgOut->addWikiText( wfMsg( "importstart" ) ); @@ -78,15 +78,19 @@ function wfSpecialImport( $page = '' ) { $reporter->open(); $result = $importer->doImport(); - $reporter->close(); + $resultCount = $reporter->close(); if( WikiError::isError( $result ) ) { - $wgOut->addWikiText( wfMsg( "importfailed", - wfEscapeWikiText( $result->getMessage() ) ) ); + # No source or XML parse error + $wgOut->addWikiText( '

' . wfMsg( 'importfailed', wfEscapeWikiText( $result->getMessage() ) ) . '

' ); + } elseif( WikiError::isError( $resultCount ) ) { + # Zero revisions + $wgOut->addWikiText( '

' . wfMsg( 'importfailed', wfEscapeWikiText( $resultCount->getMessage() ) ) . '

' ); } else { # Success! - $wgOut->addWikiText( wfMsg( "importsuccess" ) ); + $wgOut->addWikiText( wfMsg( 'importsuccess' ) ); } + $wgOut->addWikiText( '
' ); } } @@ -94,17 +98,17 @@ function wfSpecialImport( $page = '' ) { if( $wgUser->isAllowed( 'importupload' ) ) { $wgOut->addWikiText( wfMsg( "importtext" ) ); - $wgOut->addHTML( " -
- " . wfMsgHtml('upload') . " -
- - - - -
-
-" ); + $wgOut->addHTML( + Xml::openElement( 'fieldset' ). + Xml::element( 'legend', null, wfMsg( 'upload' ) ) . + Xml::openElement( 'form', array( 'enctype' => 'multipart/form-data', 'method' => 'post', 'action' => $action ) ) . + Xml::hidden( 'action', 'submit' ) . + Xml::hidden( 'source', 'upload' ) . + "" . // No Xml function for type=file? Todo? + Xml::submitButton( wfMsg( 'uploadbtn' ) ) . + Xml::closeElement( 'form' ) . + Xml::closeElement( 'fieldset' ) + ); } else { if( empty( $wgImportSources ) ) { $wgOut->addWikiText( wfMsg( 'importnosources' ) ); @@ -112,53 +116,56 @@ function wfSpecialImport( $page = '' ) { } if( !empty( $wgImportSources ) ) { - $wgOut->addHTML( " -
- " . wfMsgHtml('importinterwiki') . " -
" . - $wgOut->parse( wfMsg( 'import-interwiki-text' ) ) . " - - - - - + + $wgOut->addHTML( + Xml::closeElement( 'select' ) . + " - + - + - + - -
-
" . + Xml::openElement( 'select', array( 'name' => 'interwiki' ) ) + ); foreach( $wgImportSources as $prefix ) { $iw = htmlspecialchars( $prefix ); $selected = ($interwiki === $prefix) ? ' selected="selected"' : ''; - $wgOut->addHTML( "\n" ); + $wgOut->addHTML( Xml::option( $iw, $iw, $selected ) ); } - $wgOut->addHTML( " - - " . - wfInput( 'frompage', 50, $frompage ) . + Xml::input( 'frompage', 50, $frompage ) . "
+ " . - wfCheckLabel( wfMsg( 'import-interwiki-history' ), - 'interwikiHistory', 'interwikiHistory', $history ) . + Xml::checkLabel( wfMsg( 'import-interwiki-history' ), 'interwikiHistory', 'interwikiHistory', $history ) . "
- " . wfMsgHtml( 'import-interwiki-namespace' ) . " " . - HTMLnamespaceselector( $namespace, '' ) . " " . + Xml::label( wfMsg( 'import-interwiki-namespace' ), 'namespace' ) . + Xml::namespaceSelector( $namespace, '' ) . + "
+ " . - wfSubmitButton( wfMsg( 'import-interwiki-submit' ) ) . + Xml::submitButton( wfMsg( 'import-interwiki-submit' ) ) . "
-
-
-" ); + " . + Xml::closeElement( 'table' ). + Xml::closeElement( 'form' ) . + Xml::closeElement( 'fieldset' ) + ); } } @@ -189,12 +196,12 @@ class ImportReporter { $localCount = $wgLang->formatNum( $successCount ); $contentCount = $wgContLang->formatNum( $successCount ); - $wgOut->addHtml( "
  • " . $skin->makeKnownLinkObj( $title ) . - " " . - wfMsgExt( 'import-revision-count', array( 'parsemag', 'escape' ), $localCount ) . - "
  • \n" ); - if( $successCount > 0 ) { + $wgOut->addHtml( "
  • " . $skin->makeKnownLinkObj( $title ) . " " . + wfMsgExt( 'import-revision-count', array( 'parsemag', 'escape' ), $localCount ) . + "
  • \n" + ); + $log = new LogPage( 'import' ); if( $this->mIsUpload ) { $detail = wfMsgExt( 'import-logentry-upload-detail', array( 'content', 'parsemag' ), @@ -216,15 +223,20 @@ class ImportReporter { # Update page record $article = new Article( $title ); $article->updateRevisionOn( $dbw, $nullRevision ); + } else { + $wgOut->addHtml( '
  • ' . wfMsgHtml( 'import-nonewrevisions' ) . '
  • ' ); } } function close() { global $wgOut; if( $this->mPageCount == 0 ) { - $wgOut->addHtml( "
  • " . wfMsgHtml( 'importnopages' ) . "
  • \n" ); + $wgOut->addHtml( "\n" ); + return new WikiErrorMsg( "importnopages" ); } $wgOut->addHtml( "\n" ); + + return $this->mPageCount; } } @@ -432,7 +444,7 @@ class WikiImporter { $chunk = $this->mSource->readChunk(); if( !xml_parse( $parser, $chunk, $this->mSource->atEnd() ) ) { wfDebug( "WikiImporter::doImport encountered XML parsing error\n" ); - return new WikiXmlError( $parser, 'XML import parse failure', $chunk, $offset ); + return new WikiXmlError( $parser, wfMsgHtml( 'import-parse-failure' ), $chunk, $offset ); } $offset += strlen( $chunk ); } while( $chunk !== false && !$this->mSource->atEnd() ); @@ -894,6 +906,9 @@ class ImportStreamSource { } public static function newFromInterwiki( $interwiki, $page, $history=false ) { + if( $page == '' ) { + return new WikiErrorMsg( 'import-noarticle' ); + } $link = Title::newFromText( "$interwiki:Special:Export/$page" ); if( is_null( $link ) || $link->getInterwiki() == '' ) { return new WikiErrorMsg( 'importbadinterwiki' ); @@ -905,6 +920,3 @@ class ImportStreamSource { } } } - - - diff --git a/includes/WikiError.php b/includes/WikiError.php index efb645bbd6..dede157416 100644 --- a/includes/WikiError.php +++ b/includes/WikiError.php @@ -101,7 +101,7 @@ class WikiXmlError extends WikiError { /** @return string */ function getMessage() { - return sprintf( '%s at line %d, col %d (byte %d%s): %s', + return sprintf( wfMsgHtml( 'xml-error-string', '%s', '%d', '%d', '%d%s', '%s' ), $this->mMessage, $this->mLine, $this->mColumn, @@ -120,5 +120,3 @@ class WikiXmlError extends WikiError { } } } - - diff --git a/languages/messages/MessagesDe.php b/languages/messages/MessagesDe.php index 66fa714d16..060e84ab5f 100644 --- a/languages/messages/MessagesDe.php +++ b/languages/messages/MessagesDe.php @@ -1867,21 +1867,25 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p 'import-interwiki-submit' => 'Import', 'import-interwiki-namespace' => 'Importiere die Seite in den Namensraum:', 'importtext' => 'Auf dieser Spezialseite können über [[{{ns:special}}:Export]] exportierte Seiten in dieses Wiki importiert werden.', -'importstart' => 'Importiere Seiten …', +'importstart' => 'Importiere Seite …', 'import-revision-count' => '– {{PLURAL:$1|1 Version|$1 Versionen}}', -'importnopages' => 'Keine Seiten zum Importieren vorhanden.', +'importnopages' => 'Keine Seite zum Importieren vorhanden.', 'importfailed' => 'Import fehlgeschlagen: $1', 'importunknownsource' => 'Unbekannte Importquelle', 'importcantopen' => 'Importdatei konnte nicht geöffnet werden', 'importbadinterwiki' => 'Falscher Interwiki-Link', 'importnotext' => 'Leer oder kein Text', -'importsuccess' => 'Import erfolgreich!', +'importsuccess' => 'Import abgeschlossen!', 'importhistoryconflict' => 'Es existieren bereits ältere Versionen, welche mit diesen kollidieren. Möglicherweise wurde die Seite bereits vorher importiert.', 'importnosources' => 'Für den Transwiki-Import sind keine Quellen definiert. Das direkte Hochladen von Versionen ist gesperrt.', 'importnofile' => 'Es ist keine Importdatei ausgewählt worden!', 'importuploaderrorsize' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Die Datei ist größer als die maximal erlaubte Dateigröße.', 'importuploaderrorpartial' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Die Datei wurde nur teilweise hochgeladen.', 'importuploaderrortemp' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Ein temporäres Verzeichnis fehlt.', +'import-parse-failure' => 'Fehler beim XML-Import:', +'import-noarticle' => 'Es wurde kein zu importierender Artikel angegeben!', +'import-nonewrevisions' => 'Es sind keine neuen Versionen zum Import vorhanden, alle Versionen wurden bereits früher importiert.', +'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5' , # Import log 'importlogpage' => 'Import-Logbuch', diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 7296772bbe..514b3ada0b 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -2301,13 +2301,17 @@ All transwiki import actions are logged at the [[Special:Log/import|import log]] 'importcantopen' => "Couldn't open import file", 'importbadinterwiki' => 'Bad interwiki link', 'importnotext' => 'Empty or no text', -'importsuccess' => 'Import succeeded!', +'importsuccess' => 'Import finished!', 'importhistoryconflict' => 'Conflicting history revision exists (may have imported this page before)', 'importnosources' => 'No transwiki import sources have been defined and direct history uploads are disabled.', 'importnofile' => 'No import file was uploaded.', 'importuploaderrorsize' => 'Upload of import file failed. The file is bigger than the allowed upload size.', 'importuploaderrorpartial' => 'Upload of import file failed. The file was only partially uploaded.', 'importuploaderrortemp' => 'Upload of import file failed. A temporary folder is missing.', +'import-parse-failure' => 'XML import parse failure', +'import-noarticle' => 'No article to import!', +'import-nonewrevisions' => 'All revisions were previously imported.', +'xml-error-string' => '$1 at line $2, col $3 (byte $4): $5', # Import log 'importlogpage' => 'Import log', diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 9bbf8a8f73..82005a753f 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -1563,6 +1563,10 @@ $wgMessageStructure = array( 'importuploaderrorsize', 'importuploaderrorpartial', 'importuploaderrortemp', + 'import-parse-failure', + 'import-noarticle', + 'import-nonewrevisions', + 'xml-error-string', ), 'importlog' => array( 'importlogpage',