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

Reply via email to