From 4abe93ae2ec602aea290d9ea0ca215a4e49de44d Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 23 Sep 2015 02:36:16 -0700 Subject: [PATCH] Call the artisan command to do import, show output --- app/config/version.php | 4 +-- app/controllers/admin/AssetsController.php | 18 +++++++++---- app/routes.php | 10 ++++--- .../backend/hardware/import-status.blade.php | 27 +++++++++++++++++++ app/views/backend/hardware/import.blade.php | 16 +++++++---- 5 files changed, 59 insertions(+), 16 deletions(-) create mode 100644 app/views/backend/hardware/import-status.blade.php diff --git a/app/config/version.php b/app/config/version.php index 6967baf460..ca4c335cc4 100644 --- a/app/config/version.php +++ b/app/config/version.php @@ -1,5 +1,5 @@ 'v2.0-139', - 'hash_version' => 'v2.0-139-g586c043', + 'app_version' => 'v2.0-140', + 'hash_version' => 'v2.0-140-gbedb97c', ); \ No newline at end of file diff --git a/app/controllers/admin/AssetsController.php b/app/controllers/admin/AssetsController.php index 5260e7c554..4258cf8879 100755 --- a/app/controllers/admin/AssetsController.php +++ b/app/controllers/admin/AssetsController.php @@ -27,6 +27,9 @@ use Datatable; use TCPDF; use Slack; use Manufacturer; //for embedded-create +use Artisan; +use Symfony\Component\Console\Output\BufferedOutput; + class AssetsController extends AdminController { @@ -620,7 +623,7 @@ class AssetsController extends AdminController } - public function getImport() { + public function getImportUpload() { $path = app_path().'/private_uploads/imports/assets'; $files = array(); @@ -646,14 +649,15 @@ class AssetsController extends AdminController return View::make('backend/hardware/import')->with('files',$files); } - public function apiPostImport() { + public function postAPIImportUpload() { $files = Input::file('files'); $path = app_path().'/private_uploads/imports/assets'; $results = array(); foreach ($files as $file) { - $file->move($path, $file->getClientOriginalName()); + $fixed_filename = str_replace(' ','-',$file->getClientOriginalName()); + $file->move($path, date('Y-m-d-his').'-'.$file->getClientOriginalName()); $name = $file->getClientOriginalName(); $results[] = compact('name'); } @@ -664,10 +668,14 @@ class AssetsController extends AdminController } - public function getProcessFile() { + public function getProcessImportFile($filename) { // php artisan asset-import:csv path/to/your/file.csv --domain=yourdomain.com --email_format=firstname.lastname - Artisan::call('asset-import:csv', ['path/to/your/file.csv']); + $output = new BufferedOutput; + Artisan::call('asset-import:csv', ['filename'=> app_path().'/private_uploads/imports/assets/'.$filename, '--domain'=>'snipe.net', '--email_format'=>'firstname.lastname'], $output); + $display_output = $output->fetch(); + return View::make('backend/hardware/import-status')->with('display_output',$display_output); + } /** diff --git a/app/routes.php b/app/routes.php index df3d59e0a0..d69bce3ba6 100755 --- a/app/routes.php +++ b/app/routes.php @@ -11,7 +11,7 @@ Route::get( 'list/{status?}', [ 'as' => 'api.hardware.list', 'uses' => 'AssetsController@getDatatable' ] ); - Route::post('import', 'AssetsController@apiPostImport' ); + Route::post('import', 'AssetsController@postAPIImportUpload' ); } ); /*---Status Label API---*/ @@ -157,13 +157,15 @@ Route::get( '{assetId}/showfile/{fileId}', [ 'as' => 'show/assetfile', 'uses' => 'AssetsController@displayFile' ] ); - Route::get('import', 'AssetsController@getImport' ); - Route::get( 'import/delete-import/{filename}', [ 'as' => 'assets/import/delete-file', 'uses' => 'AssetsController@getDeleteImportFile' ] ); Route::get( 'import/process/{filename}', - [ 'as' => 'assets/import/process-file', 'uses' => 'AssetsController@getProcessImport' ] ); + [ 'as' => 'assets/import/process-file', 'uses' => 'AssetsController@getProcessImportFile' ] ); + + Route::get( 'import', + [ 'as' => 'assets/import', 'uses' => 'AssetsController@getImportUpload' ] ); + Route::post( '{assetId}/edit', 'AssetsController@postEdit' ); diff --git a/app/views/backend/hardware/import-status.blade.php b/app/views/backend/hardware/import-status.blade.php new file mode 100644 index 0000000000..566906c133 --- /dev/null +++ b/app/views/backend/hardware/import-status.blade.php @@ -0,0 +1,27 @@ +@extends('backend/layouts/default') + +{{-- Page title --}} +@section('title') + @lang('general.import') :: +@parent +@stop + +{{-- Page content --}} +@section('content') + +
+
+ @lang('general.back') +

@lang('general.import')

+
+
+ + +@if ($display_output) +
+    
+
+ +@endif + +@stop diff --git a/app/views/backend/hardware/import.blade.php b/app/views/backend/hardware/import.blade.php index 8b298cac82..1c1b687740 100644 --- a/app/views/backend/hardware/import.blade.php +++ b/app/views/backend/hardware/import.blade.php @@ -61,6 +61,10 @@ $('#progress-container').css('visibility', 'visible'); }); + $('.process').bind('click', function() { + $('#progress-container').addClass('fa-spin'); + }); + $('#fileupload').fileupload({ //maxChunkSize: 100000, dataType: 'json', @@ -75,7 +79,7 @@ } if (progress == 100) { - $('.progress-checkmark').fadeIn('slow'); + $('.progress-checkmark').delay(250).fadeIn('slow'); } } @@ -97,19 +101,21 @@ @foreach ($files as $file) - {{{ $file['filename'] }}} + {{{ $file['filename'] }}} {{{ date("M d, Y g:i A", $file['modified']) }}} {{{ $file['filesize'] }}} - Process - Process + + @endforeach + @stop