From 20052c7dd295464c7782350628701675b1f07db7 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 15 May 2016 21:20:46 -0400 Subject: User import is now a popover --- app/Controller/Config.php | 2 +- app/Controller/Export.php | 2 +- app/Controller/FileViewer.php | 2 +- app/Controller/TaskImport.php | 2 +- app/Controller/UserImport.php | 66 ---------------------- app/Controller/UserImportController.php | 77 ++++++++++++++++++++++++++ app/Core/Http/Response.php | 2 +- app/ServiceProvider/AuthenticationProvider.php | 2 +- app/Template/user/index.php | 2 +- app/Template/user_import/show.php | 41 ++++++++++++++ app/Template/user_import/step1.php | 46 --------------- 11 files changed, 125 insertions(+), 119 deletions(-) delete mode 100644 app/Controller/UserImport.php create mode 100644 app/Controller/UserImportController.php create mode 100644 app/Template/user_import/show.php delete mode 100644 app/Template/user_import/step1.php diff --git a/app/Controller/Config.php b/app/Controller/Config.php index ebb541d2..deafd05b 100644 --- a/app/Controller/Config.php +++ b/app/Controller/Config.php @@ -176,7 +176,7 @@ class Config extends BaseController public function downloadDb() { $this->checkCSRFParam(); - $this->response->withDownload('db.sqlite.gz'); + $this->response->withFileDownload('db.sqlite.gz'); $this->response->binary($this->config->downloadDatabase()); } diff --git a/app/Controller/Export.php b/app/Controller/Export.php index f5783b72..7e1d2fdc 100644 --- a/app/Controller/Export.php +++ b/app/Controller/Export.php @@ -29,7 +29,7 @@ class Export extends BaseController if ($from && $to) { $data = $this->$model->$method($project['id'], $from, $to); - $this->response->withDownload($filename.'.csv'); + $this->response->withFileDownload($filename.'.csv'); $this->response->csv($data); } diff --git a/app/Controller/FileViewer.php b/app/Controller/FileViewer.php index a990e12a..52ff0d0e 100644 --- a/app/Controller/FileViewer.php +++ b/app/Controller/FileViewer.php @@ -123,7 +123,7 @@ class FileViewer extends BaseController { try { $file = $this->getFile(); - $this->response->withDownload($file['name']); + $this->response->withFileDownload($file['name']); $this->objectStorage->output($file['path']); } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); diff --git a/app/Controller/TaskImport.php b/app/Controller/TaskImport.php index 5dbf8678..5e37fb2f 100644 --- a/app/Controller/TaskImport.php +++ b/app/Controller/TaskImport.php @@ -69,7 +69,7 @@ class TaskImport extends BaseController */ public function template() { - $this->response->withDownload('tasks.csv'); + $this->response->withFileDownload('tasks.csv'); $this->response->csv(array($this->taskImport->getColumnMapping())); } } diff --git a/app/Controller/UserImport.php b/app/Controller/UserImport.php deleted file mode 100644 index b99e56a0..00000000 --- a/app/Controller/UserImport.php +++ /dev/null @@ -1,66 +0,0 @@ -response->html($this->helper->layout->app('user_import/step1', array( - 'values' => $values, - 'errors' => $errors, - 'max_size' => ini_get('upload_max_filesize'), - 'delimiters' => Csv::getDelimiters(), - 'enclosures' => Csv::getEnclosures(), - 'title' => t('Import users from CSV file'), - ))); - } - - /** - * Process CSV file - * - */ - public function step2() - { - $values = $this->request->getValues(); - $filename = $this->request->getFilePath('file'); - - if (! file_exists($filename)) { - $this->step1($values, array('file' => array(t('Unable to read your file')))); - } - - $csv = new Csv($values['delimiter'], $values['enclosure']); - $csv->setColumnMapping($this->userImport->getColumnMapping()); - $csv->read($filename, array($this->userImport, 'import')); - - if ($this->userImport->counter > 0) { - $this->flash->success(t('%d user(s) have been imported successfully.', $this->userImport->counter)); - } else { - $this->flash->failure(t('Nothing have been imported!')); - } - - $this->response->redirect($this->helper->url->to('userImport', 'step1')); - } - - /** - * Generate template - * - */ - public function template() - { - $this->response->withDownload('users.csv'); - $this->response->csv(array($this->userImport->getColumnMapping())); - } -} diff --git a/app/Controller/UserImportController.php b/app/Controller/UserImportController.php new file mode 100644 index 00000000..b3cb52d1 --- /dev/null +++ b/app/Controller/UserImportController.php @@ -0,0 +1,77 @@ +response->html($this->template->render('user_import/show', array( + 'values' => $values, + 'errors' => $errors, + 'max_size' => ini_get('upload_max_filesize'), + 'delimiters' => Csv::getDelimiters(), + 'enclosures' => Csv::getEnclosures(), + ))); + } + + /** + * Submit form + */ + public function save() + { + $values = $this->request->getValues(); + $filename = $this->request->getFilePath('file'); + + if (! file_exists($filename)) { + $this->flash->failure(t('Unable to read your file')); + } else { + $this->importFile($values, $filename); + } + + $this->response->redirect($this->helper->url->to('user', 'index')); + } + + /** + * Generate template + * + */ + public function template() + { + $this->response->withFileDownload('users.csv'); + $this->response->csv(array($this->userImport->getColumnMapping())); + } + + /** + * Process file + * + * @param array $values + * @param $filename + */ + private function importFile(array $values, $filename) + { + $csv = new Csv($values['delimiter'], $values['enclosure']); + $csv->setColumnMapping($this->userImport->getColumnMapping()); + $csv->read($filename, array($this->userImport, 'import')); + + if ($this->userImport->counter > 0) { + $this->flash->success(t('%d user(s) have been imported successfully.', $this->userImport->counter)); + } else { + $this->flash->failure(t('Nothing have been imported!')); + } + } +} diff --git a/app/Core/Http/Response.php b/app/Core/Http/Response.php index fd67ec95..1c5310d0 100644 --- a/app/Core/Http/Response.php +++ b/app/Core/Http/Response.php @@ -172,7 +172,7 @@ class Response extends Base * @param string $filename * @return $this */ - public function withDownload($filename) + public function withFileDownload($filename) { $this->withHeader('Content-Disposition', 'attachment; filename="'.$filename.'"'); $this->withHeader('Content-Transfer-Encoding', 'binary'); diff --git a/app/ServiceProvider/AuthenticationProvider.php b/app/ServiceProvider/AuthenticationProvider.php index b9082c26..8baa02ea 100644 --- a/app/ServiceProvider/AuthenticationProvider.php +++ b/app/ServiceProvider/AuthenticationProvider.php @@ -137,7 +137,7 @@ class AuthenticationProvider implements ServiceProviderInterface $acl->add('ProjectCreation', 'create', Role::APP_MANAGER); $acl->add('Projectuser', '*', Role::APP_MANAGER); $acl->add('Twofactor', 'disable', Role::APP_ADMIN); - $acl->add('UserImport', '*', Role::APP_ADMIN); + $acl->add('UserImportController', '*', Role::APP_ADMIN); $acl->add('User', array('index', 'create', 'save', 'authentication'), Role::APP_ADMIN); $acl->add('UserStatus', '*', Role::APP_ADMIN); diff --git a/app/Template/user/index.php b/app/Template/user/index.php index 0b5da17c..00cd0c82 100644 --- a/app/Template/user/index.php +++ b/app/Template/user/index.php @@ -4,7 +4,7 @@ diff --git a/app/Template/user_import/show.php b/app/Template/user_import/show.php new file mode 100644 index 00000000..54a66237 --- /dev/null +++ b/app/Template/user_import/show.php @@ -0,0 +1,41 @@ + + +
+ +
+ +
+ form->csrf() ?> + + form->label(t('Delimiter'), 'delimiter') ?> + form->select('delimiter', $delimiters, $values) ?> + + form->label(t('Enclosure'), 'enclosure') ?> + form->select('enclosure', $enclosures, $values) ?> + + form->label(t('CSV File'), 'file') ?> + form->file('file', $errors) ?> + +

text->bytes($max_size) : $max_size ?>

+ +
+ + + url->link(t('cancel'), 'user', 'index', array(), false, 'close-popover') ?> +
+
diff --git a/app/Template/user_import/step1.php b/app/Template/user_import/step1.php deleted file mode 100644 index 592587a3..00000000 --- a/app/Template/user_import/step1.php +++ /dev/null @@ -1,46 +0,0 @@ -
- - -
- form->csrf() ?> - - form->label(t('Delimiter'), 'delimiter') ?> - form->select('delimiter', $delimiters, $values) ?> - - form->label(t('Enclosure'), 'enclosure') ?> - form->select('enclosure', $enclosures, $values) ?> - - form->label(t('CSV File'), 'file') ?> - form->file('file', $errors) ?> - -

text->bytes($max_size) : $max_size ?>

- -
- -
-
- -
-
    -
  • -
  • -
  • -
  • -
  • -
  • -
-
-

url->link(t('Download CSV template'), 'userImport', 'template') ?>

-
\ No newline at end of file -- cgit v1.2.3