jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/344344 )
Change subject: Factor out DuplicateFilesPage
......................................................................
Factor out DuplicateFilesPage
Change-Id: Ib938055473ab1e30b81a212b8254231ef602f55d
---
M extension.json
A src/Html/DuplicateFilesPage.php
M src/Html/ImportPreviewPage.php
M src/SpecialImportFile.php
4 files changed, 76 insertions(+), 42 deletions(-)
Approvals:
WMDE-Fisch: Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index 7cdcfa3..48d2f73 100644
--- a/extension.json
+++ b/extension.json
@@ -42,6 +42,7 @@
"FileImporter\\Generic\\Data\\FileRevisions":
"src/Generic/Data/FileRevisions.php",
"FileImporter\\Generic\\Data\\TextRevision":
"src/Generic/Data/TextRevision.php",
"FileImporter\\Generic\\Data\\TextRevisions":
"src/Generic/Data/TextRevisions.php",
+ "FileImporter\\Html\\DuplicateFilesPage":
"src/Html/DuplicateFilesPage.php",
"FileImporter\\Html\\ImportPreviewPage":
"src/Html/ImportPreviewPage.php",
"FileImporter\\Html\\InputFormPage":
"src/Html/InputFormPage.php",
"FileImporter\\Html\\TextRevisionSnippet":
"src/Html/TextRevisionSnippet.php",
diff --git a/src/Html/DuplicateFilesPage.php b/src/Html/DuplicateFilesPage.php
new file mode 100644
index 0000000..539231d
--- /dev/null
+++ b/src/Html/DuplicateFilesPage.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace FileImporter\Html;
+
+use File;
+use Html;
+use Message;
+
+class DuplicateFilesPage {
+
+ /**
+ * @var File[]
+ */
+ private $files;
+
+ /**
+ * @param File[] $files
+ */
+ public function __construct(
+ array $files
+ ) {
+ $this->files = $files;
+ }
+
+ public function getHtml() {
+ $duplicateFilesList = '';
+ $duplicatesMessage = ( new Message(
'fileimporter-duplicatefilesdetected-prefix' ) )->plain();
+ $duplicateFilesList .= Html::rawElement(
+ 'p',
+ [],
+ Html::element( 'strong', [], $duplicatesMessage )
+ );
+ $duplicateFilesList .= Html::openElement( 'ul' );
+ foreach ( $this->files as $file ) {
+ $duplicateFilesList .= Html::rawElement(
+ 'li',
+ [],
+ Html::element(
+ 'a',
+ [ 'href' =>
$file->getTitle()->getInternalURL() ],
+ $file->getTitle()
+ )
+ );
+ }
+ $duplicateFilesList .= Html::closeElement( 'ul' );
+
+ return Html::rawElement(
+ 'div',
+ [ 'class' => 'warningbox' ],
+ Html::element( 'p', [], ( new Message(
'fileimporter-duplicatefilesdetected' ) )->plain() )
+ ) .
+ $duplicateFilesList;
+ }
+
+}
diff --git a/src/Html/ImportPreviewPage.php b/src/Html/ImportPreviewPage.php
index 7a611e1..1aac9be 100644
--- a/src/Html/ImportPreviewPage.php
+++ b/src/Html/ImportPreviewPage.php
@@ -2,17 +2,13 @@
namespace FileImporter\Html;
-use ContentHandler;
use FileImporter\Generic\Data\ImportDetails;
use Html;
use Linker;
use Message;
-use MWContentSerializationException;
use OOUI\ButtonInputWidget;
use OOUI\TextInputWidget;
-use ParserOptions;
use SpecialPage;
-use Title;
/**
* Page displaying the preview of the import before it has happened.
diff --git a/src/SpecialImportFile.php b/src/SpecialImportFile.php
index f439a9f..eab9f52 100644
--- a/src/SpecialImportFile.php
+++ b/src/SpecialImportFile.php
@@ -2,7 +2,6 @@
namespace FileImporter;
-use File;
use FileImporter\Generic\Data\ImportTransformations;
use FileImporter\Generic\Data\ImportDetails;
use FileImporter\Generic\Exceptions\ImportException;
@@ -10,6 +9,7 @@
use FileImporter\Generic\Services\DuplicateFileRevisionChecker;
use FileImporter\Generic\Services\Importer;
use FileImporter\Generic\Data\TargetUrl;
+use FileImporter\Html\DuplicateFilesPage;
use FileImporter\Html\ImportPreviewPage;
use FileImporter\Html\InputFormPage;
use Html;
@@ -60,19 +60,21 @@
$this->getOutput()->addModuleStyles( 'ext.FileImporter.Special'
);
if ( !$targetUrl->getUrl() ) {
- $this->showUrlEntryPage();
+ $this->showInputForm();
return;
}
if ( !$targetUrl->isParsable() ) {
- $this->showUnparsableUrlMessage( $targetUrl->getUrl() );
- $this->showUrlEntryPage();
+ $this->showWarningMessage(
+ ( new Message( 'fileimporter-cantparseurl' )
)->plain() . ': ' . $targetUrl->getUrl()
+ );
+ $this->showInputForm();
return;
}
if ( !$this->detailRetreiver->canGetImportDetails( $targetUrl )
) {
- $this->showDisallowedUrlMessage();
- $this->showUrlEntryPage();
+ $this->showWarningMessage( ( new Message(
'fileimporter-cantimporturl' ) )->plain() );
+ $this->showInputForm();
return;
}
@@ -83,18 +85,23 @@
$this->showInputForm( $targetUrl );
return;
}
+
$duplicateFiles = $this->duplicateFileChecker->findDuplicates(
$importDetails->getFileRevisions()->getLatest()
);
if ( !empty( $duplicateFiles ) ) {
- $this->showDuplicateFilesDetectedMessage(
$duplicateFiles );
+ $out->addHTML( ( new DuplicateFilesPage(
$duplicateFiles ) )->getHtml() );
return;
}
+
if ( $wasPosted ) {
- $this->doImport( $importDetails );
- return;
+ $importResult = $this->doImport( $importDetails );
+ if ( !$importResult ) {
+ $this->showImportPage( $importDetails );
+ }
+ } else {
+ $this->showImportPage( $importDetails );
}
- $this->showImportPage( $importDetails );
}
private function doImport( ImportDetails $importDetails ) {
@@ -105,11 +112,13 @@
if ( $this->getUser()->getEditToken() !== $token ) {
$this->showWarningMessage( 'Incorrect token submitted
for import' ); // TODO i18n
+ return false;
}
if ( $importDetails->getHash() !== $importDetailsHash ) {
// TODO i18n
$this->showWarningMessage( 'Incorrect import details
hash submitted for import' );
+ return false;
}
$adjustments = new ImportTransformations(); // TODO populate
adjustments based on import form
@@ -127,30 +136,7 @@
$this->showWarningMessage( 'Import failed' ); // TODO
i18n
}
- }
-
- private function showUnparsableUrlMessage( $rawUrl ) {
- $this->showWarningMessage(
- ( new Message( 'fileimporter-cantparseurl' ) )->plain()
. ': ' . $rawUrl
- );
- }
-
- private function showDisallowedUrlMessage() {
- $this->showWarningMessage( ( new Message(
'fileimporter-cantimporturl' ) )->plain() );
- }
-
- /**
- * @param File[] $duplicateFiles
- */
- private function showDuplicateFilesDetectedMessage( array
$duplicateFiles ) {
- $this->showWarningMessage(
- ( new Message( 'fileimporter-duplicatefilesdetected' )
)->plain()
- );
- $duplicatesMessage = ( new Message(
'fileimporter-duplicatefilesdetected-prefix' ) )->plain();
- $this->getOutput()->addWikiText( '\'\'\'' . $duplicatesMessage
. '\'\'\'' );
- foreach ( $duplicateFiles as $file ) {
- $this->getOutput()->addWikiText( '* [[:' .
$file->getTitle() . ']]' );
- }
+ return $result;
}
private function showWarningMessage( $message ) {
@@ -161,10 +147,6 @@
Html::element( 'p', [], $message )
)
);
- }
-
- private function showUrlEntryPage() {
- $this->showInputForm();
}
private function showImportPage( ImportDetails $importDetails ) {
--
To view, visit https://gerrit.wikimedia.org/r/344344
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib938055473ab1e30b81a212b8254231ef602f55d
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/FileImporter
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: WMDE-Fisch <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits