From fb21712a6815ff6b4a8a09d7d831ee1f2474f62e Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 19:38:40 -0800 Subject: [PATCH 01/24] Added restore modal HTML Signed-off-by: snipe --- resources/views/layouts/default.blade.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php index e9c1553bba..46ca5be033 100644 --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -852,6 +852,28 @@ + + + {{-- Javascript files --}} From 0e21a9581738cfc9017862eda41bb3aba15082f5 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 19:39:32 -0800 Subject: [PATCH 02/24] Escape error message in asset autdit apI (same as in v5) Signed-off-by: snipe --- app/Http/Controllers/Api/AssetsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 6e56b317d2..b1337c45b2 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -899,7 +899,7 @@ class AssetsController extends Controller } } - return response()->json(Helper::formatStandardApiResponse('error', ['asset_tag'=> e($request->input('asset_tag'))], 'Asset with tag '.$request->input('asset_tag').' not found')); + return response()->json(Helper::formatStandardApiResponse('error', ['asset_tag'=> e($request->input('asset_tag'))], 'Asset with tag '.e($request->input('asset_tag')).' not found')); From 542ab75d892aa1130bb9bf010bcbb340952a5c54 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 19:39:50 -0800 Subject: [PATCH 03/24] Added new backup routes Signed-off-by: snipe --- routes/web.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/routes/web.php b/routes/web.php index c1c439638e..a17c511516 100644 --- a/routes/web.php +++ b/routes/web.php @@ -189,6 +189,14 @@ Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'authorize:superuser [SettingsController::class, 'postBackups'] )->name('settings.backups.create'); + Route::post('/restore/{filename}', + [SettingsController::class, 'postRestore'] + )->name('settings.backups.restore'); + + Route::post('/upload', + [SettingsController::class, 'postUploadBackup'] + )->name('settings.backups.upload'); + Route::get('/', [SettingsController::class, 'getBackups'])->name('settings.backups.index'); }); From 1b1b54fbf4635d1aadcd0a805d0a6aabddab73d8 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 22:37:49 -0800 Subject: [PATCH 04/24] Add modified_value and modified_display so we can use the formatted date but still sort correctly Signed-off-by: snipe --- app/Http/Controllers/SettingsController.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index a52598592f..22a4336e61 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -1018,17 +1018,25 @@ class SettingsController extends Controller $backup_files = Storage::files($path); $files_raw = []; + if (count($backup_files) > 0) { for ($f = 0; $f < count($backup_files); $f++) { // Skip dotfiles like .gitignore and .DS_STORE if ((substr(basename($backup_files[$f]), 0, 1) != '.')) { + //$lastmodified = Carbon::parse(Storage::lastModified($backup_files[$f]))->toDatetimeString(); + $file_timestamp = Storage::lastModified($backup_files[$f]); + + $files_raw[] = [ 'filename' => basename($backup_files[$f]), 'filesize' => Setting::fileSizeConvert(Storage::size($backup_files[$f])), - 'modified' => Storage::lastModified($backup_files[$f]), + 'modified_value' => $file_timestamp, + 'modified_display' => Helper::getFormattedDateObject($file_timestamp, $type = 'datetime', false), + ]; } + } } From 76506dabbfdc3d405bd1425aff3c3bec2b9410bc Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 22:38:14 -0800 Subject: [PATCH 05/24] Made helpers call full namespace (tho I have no idea why this was necessary) Signed-off-by: snipe --- app/Http/Requests/AssetFileRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/AssetFileRequest.php b/app/Http/Requests/AssetFileRequest.php index 1aa1fadb89..f8631f23ba 100644 --- a/app/Http/Requests/AssetFileRequest.php +++ b/app/Http/Requests/AssetFileRequest.php @@ -21,7 +21,7 @@ class AssetFileRequest extends Request */ public function rules() { - $max_file_size = Helper::file_upload_max_size(); + $max_file_size = \App\Helpers\Helper::file_upload_max_size(); return [ 'file.*' => 'required|mimes:png,gif,jpg,svg,jpeg,doc,docx,pdf,txt,zip,rar,xls,xlsx,lic,xml,rtf,webp|max:'.$max_file_size, From 3b25093aeb0bf4f6d4e56d03396d05ea69cf47de Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 22:38:27 -0800 Subject: [PATCH 06/24] Removed noisy debugging Signed-off-by: snipe --- app/Http/Requests/ImageUploadRequest.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/Http/Requests/ImageUploadRequest.php b/app/Http/Requests/ImageUploadRequest.php index c492011110..45d7bca5e6 100644 --- a/app/Http/Requests/ImageUploadRequest.php +++ b/app/Http/Requests/ImageUploadRequest.php @@ -90,11 +90,6 @@ class ImageUploadRequest extends Request $use_db_field = $db_fieldname; } - \Log::info('Image path is: '.$path); - \Log::debug('Type is: '.$type); - \Log::debug('Form fieldname is: '.$form_fieldname); - \Log::debug('DB fieldname is: '.$use_db_field); - \Log::debug('Trying to upload to '. $path); // ConvertBase64ToFiles just changes object type, // as it cannot currently insert files to $this->files From 05c6254fdc223ab1e42bbcdc000e03896310b108 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 9 Nov 2021 22:39:33 -0800 Subject: [PATCH 07/24] Updated snipeit.js with "restore" modal code Signed-off-by: snipe --- package-lock.json | 2 +- public/css/build/overrides.css | Bin 11384 -> 11383 bytes public/css/dist/all.css | Bin 475782 -> 475783 bytes public/js/build/app.js | Bin 1547422 -> 1548459 bytes public/js/dist/all.js | Bin 3321602 -> 3322639 bytes public/js/snipeit.js | Bin 26045 -> 27003 bytes public/mix-manifest.json | 4 ++-- resources/assets/js/snipeit.js | 32 ++++++++++++++++++++++++++++++++ 8 files changed, 35 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 463ca7dc3d..05d2f032f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15845,7 +15845,7 @@ "jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + "integrity": "sha1-xyoJ8Vwb3OFC9J2/EXC9+K2sJHA=" }, "jquery-form-validator": { "version": "2.3.79", diff --git a/public/css/build/overrides.css b/public/css/build/overrides.css index 2ce2c232726c4b38ce0dc988652b70369bdf22c4..c676b59b66bd85c0854bee2dc1f8f459753bce3c 100644 GIT binary patch delta 15 Wcmewn@jYULvd&~fZG*`nIw}AEHPV)<=y(N3g?Qwz!f)!=zR@ne(};M6SS31P1RK3wsP$I6bon#=gNPs|C^1z+1u@ympFanBi_1E*6M0Q%gz}%&(CP8J z*TZwoYHvK$T3^j>2p5^5ubWI`8nFdd)cQY&y{+vgOvNB#tNU{3F zF(s@_O}xpdW)_5A440I2B}W7~CKr}*Jf;{WF0~^(+z#?|+qaZN2S}DAgeAOX6$(1R zs%9&DI#D5#QN`+1t&RgYfeVa*ao`3X-~|%^fk`k0rhyO4fLSmH=7Aq9fWV#A3Cd5u D%q6{$ delta 188 zcmZ2|FmB$?xDA(QOlF(IH~G;F>CFandYC60%wgO7eg0BWp3IWe++w}7%$$YoXGh_Ag5_3~G2V7}jnw)rDrn&BVd);+L zAZ7w$W*}w(Vpbq#17da{<^W<&Am##MZXo6XVqPHT17dz4764*FAQl2*VIUR(V$tn& J*Tr;C0s#CKS5*K2 diff --git a/public/js/dist/all.js b/public/js/dist/all.js index f22f12b489288e6f5e2d50405d5579c3dab0b386..35aa39b9dd96b1fc4cd40dca4a6f69bd65a85957 100644 GIT binary patch delta 502 zcmY+;Jxe1|6b4{oG-}+9Mx(Ade%zRt%=j^*l`OiIteu702#ZC~8y%QTqP73P6EzDd9(cL$IoxyduM#+WtOSlRfGrrrR&2u% zwqpl&Vi>#d1AfE^c4H4lu^0O=hW$8zgZK%DF#ZeXy^!FpEC{veK`ONNmj6zgadqUu ze&Vg)iB^Wp|6;ui7meb% z46AC&gSd)%5c4-YI1l!%y{6%W^nZbhe~baGDofDRg!aW=wEd z6b@UL!g6-B`ZJxeXJ@y#W~R-ZX_iT6^Ly&F3Q6_73IodQ7>)!N!iVa24Mu)cYe0rc nJ&%$x!bpOQlO#!z36drmq7j`;k|{DxW{5#dGV51sbH<++#;DD{ delta 254 zcmeBwc8am--YLe07RDB)7UmX~7S9;?4DGkIjKr9QyazHE(#0o&H2*gT2tPI2|K&%SHYCx^(_s69mxlT$0YFo76951J diff --git a/public/js/snipeit.js b/public/js/snipeit.js index cfa646d9e5717cd8ffb67721119a2b89ac38d293..81c79c884b792ba343347b4e4b43d23029d4258e 100644 GIT binary patch delta 97 zcmdmcn(_A~#tpy4#JCiIKwn=WIX^EgvnW@gD7CmGzi4uTuqs;+gxMv0f*m57x;ae5 ciIEqo6e>Me^cOEwS~oX8B{667VlgRy0QXuX&;S4c delta 14 Wcmex;iE-~~#tpy4Ht&== Date: Wed, 10 Nov 2021 00:07:17 -0800 Subject: [PATCH 08/24] INCOMPLETE: Added restore and upload methods for backups Signed-off-by: snipe --- app/Http/Controllers/SettingsController.php | 95 ++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 22a4336e61..9f15493e21 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -11,7 +11,6 @@ use App\Models\Setting; use App\Models\User; use App\Notifications\FirstAdminNotification; use App\Notifications\MailTest; -use Artisan; use Auth; use Crypt; use DB; @@ -22,6 +21,8 @@ use Image; use Input; use Redirect; use Response; +use Illuminate\Support\Str; +use Illuminate\Support\Facades\Artisan; /** * This controller handles all actions related to Settings for @@ -1136,6 +1137,98 @@ class SettingsController extends Controller } } + + /** + * Uploads a backup file + * + * @author [A. Gianotto] [] + * + * @since [v6.0] + * + * @return Redirect + */ + + public function postUploadBackup(Request $request) { + + $max_file_size = Helper::file_upload_max_size(); + + $rules = [ + 'file' => 'required|mimes:zip|max:'.$max_file_size, + ]; + + $validator = \Validator::make($request->all(), $rules); + + if ($validator->passes()) { + + if ($request->hasFile('file')) { + + $upload_filename = 'uploaded-'.date('U').'-'.Str::slug(pathinfo($request->file('file')->getClientOriginalName(), PATHINFO_FILENAME)).'.zip'; + + Storage::putFileAs('app/backups', $request->file('file'), $upload_filename); + + return redirect()->route('settings.backups.index')->with('success', 'File uploaded'); + + } else { + return redirect()->route('settings.backups.index')->with('error', 'No file uploaded'); + } + + } else { + return redirect()->route('settings.backups.index')->withErrors($request->getErrors()); + } + + } + + /** + * Restore the backup file. + * + * @author [A. Gianotto] [] + * + * @since [v6.0] + * + * @return View + */ + public function postRestore($filename = null) + { + + if (! config('app.lock_passwords')) { + $path = 'app/backups'; + + if (Storage::exists($path.'/'.$filename)) { + + // grab the user's info so we can make sure they exist in the system + $user = User::find(Auth::user()->id); + + // run the restore command + Artisan::call('snipeit:restore', + [ + '--force' => true, + '--no-progress' => true, + 'filename' => storage_path($path).'/'.$filename + ]); + + $output = Artisan::output(); + + + // If it's greater than 300, it probably worked + if (strlen($output) > 300) { + return redirect()->route('settings.backups.index')->with('success', 'Your system has been restored.'); + + } else { + return redirect()->route('settings.backups.index')->with('error', $output); + + } + //dd($output); + + // insert the user if they are not there in the old one + // log the user out + } else { + return redirect()->route('settings.backups.index')->with('error', trans('admin/settings/message.backup.file_not_found')); + } + } else { + return redirect()->route('settings.backups.index')->with('error', trans('general.feature_disabled')); + } + } + /** * Return a form to allow a super admin to update settings. * From 76685d7fd31d7bcf8bcaa4daeff482d603b48174 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 00:07:32 -0800 Subject: [PATCH 09/24] Clearer text in restore artisan command Signed-off-by: snipe --- app/Console/Commands/RestoreFromBackup.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Console/Commands/RestoreFromBackup.php b/app/Console/Commands/RestoreFromBackup.php index 8f8114229e..93aacbeb36 100644 --- a/app/Console/Commands/RestoreFromBackup.php +++ b/app/Console/Commands/RestoreFromBackup.php @@ -14,7 +14,7 @@ class RestoreFromBackup extends Command */ protected $signature = 'snipeit:restore {--force : Skip the danger prompt; assuming you hit "y"} - {filename : The zip file to be migrated} + {filename : The full path of the .zip file to be migrated} {--no-progress : Don\'t show a progress bar}'; /** @@ -22,7 +22,7 @@ class RestoreFromBackup extends Command * * @var string */ - protected $description = 'Restore from a previously created backup'; + protected $description = 'Restore from a previously created Snipe-IT backup file'; /** * Create a new command instance. @@ -67,7 +67,7 @@ class RestoreFromBackup extends Command ZipArchive::ER_INCONS => 'Zip archive inconsistent.', ZipArchive::ER_INVAL => 'Invalid argument.', ZipArchive::ER_MEMORY => 'Malloc failure.', - ZipArchive::ER_NOENT => 'No such file.', + ZipArchive::ER_NOENT => 'No such file ('.$filename.') in directory '.$dir.'.', ZipArchive::ER_NOZIP => 'Not a zip archive.', ZipArchive::ER_OPEN => "Can't open file.", ZipArchive::ER_READ => 'Read error.', From cf070866f0ee9602e8e4710826afbe5f6236406e Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 00:07:47 -0800 Subject: [PATCH 10/24] INCOMPLETE: Added more generic language strings Signed-off-by: snipe --- resources/lang/en/general.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index 942947e6c1..c16d464da1 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -113,6 +113,8 @@ 'image' => 'Image', 'image_delete' => 'Delete Image', 'image_upload' => 'Upload Image', + 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', + 'filetypes_size_help' => 'Max upload size allowed is :size.', 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, and svg. Max upload size allowed is :size.', 'import' => 'Import', 'importing' => 'Importing', From 8590e5d67e6e195402c15a081bd60a17866afd13 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 00:08:15 -0800 Subject: [PATCH 11/24] UNRELATED: fixed wrong html tag for license view badge count Signed-off-by: snipe --- resources/views/licenses/view.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/licenses/view.blade.php b/resources/views/licenses/view.blade.php index 5d5eadb880..7e4253f108 100755 --- a/resources/views/licenses/view.blade.php +++ b/resources/views/licenses/view.blade.php @@ -47,7 +47,7 @@ - {{ $license->availCount()->count() }} / {{ $license->seats }} + {{ $license->availCount()->count() }} / {{ $license->seats }} From 856b9294f8e5ab63d7307af1df69f26f98fc6450 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 00:08:43 -0800 Subject: [PATCH 12/24] Improved BS tables on backups Signed-off-by: snipe --- resources/views/settings/backups.blade.php | 86 ++++++++++++++++------ 1 file changed, 64 insertions(+), 22 deletions(-) diff --git a/resources/views/settings/backups.blade.php b/resources/views/settings/backups.blade.php index 78537bb92e..fed72052ed 100644 --- a/resources/views/settings/backups.blade.php +++ b/resources/views/settings/backups.blade.php @@ -7,7 +7,15 @@ @stop @section('header_right') - {{ trans('general.back') }} + + {{ trans('general.back') }} + + +
+ {{ Form::hidden('_token', csrf_token()) }} + +
+ @stop {{-- Page content --}} @@ -15,10 +23,16 @@
+
+
+ + +
+ - - - + + + + + + @foreach ($files as $file) @@ -43,7 +60,8 @@ {{ $file['filename'] }} - + + @endforeach
FileCreatedSize
FileCreatedSize {{ trans('general.delete') }}
{{ date("M d, Y g:i A", $file['modified']) }} {{ $file['modified_display'] }} {{ $file['modified_value'] }} {{ $file['filesize'] }} @@ -53,38 +71,62 @@ {{ trans('general.delete') }} + + + + Restore + + @endcan
-
-
-
-
+
+ + + +
-
- {{ Form::hidden('_token', csrf_token()) }} + +

Backup files are located in: {{ $path }}

-

- -

+

Upload Backup

- @if (config('app.lock_passwords')) -

{{ trans('general.feature_disabled') }}

- @endif + +
+
+ + {{ Form::open([ + 'method' => 'POST', + 'route' => 'settings.backups.upload', + 'files' => true, + 'class' => 'form-horizontal' ]) }} + @csrf - -

Backup files are located in: {{ $path }}

+ + + + +

{{ trans_choice('general.filetypes_accepted_help', 3, ['size' => Helper::file_upload_max_size_readable(), 'types' => '.zip']) }}

+ {!! $errors->first('file', '') !!} + + {{ Form::close() }} + +
+
- -
- + + @stop From 457c6080cc60da50639c118ef1cb6520525327cf Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 01:43:45 -0800 Subject: [PATCH 13/24] Better handling if there was no file uploaded Signed-off-by: snipe --- app/Http/Controllers/SettingsController.php | 77 ++++++++++++--------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 9f15493e21..716743a175 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -1150,31 +1150,32 @@ class SettingsController extends Controller public function postUploadBackup(Request $request) { - $max_file_size = Helper::file_upload_max_size(); - - $rules = [ - 'file' => 'required|mimes:zip|max:'.$max_file_size, - ]; - - $validator = \Validator::make($request->all(), $rules); - - if ($validator->passes()) { - - if ($request->hasFile('file')) { - - $upload_filename = 'uploaded-'.date('U').'-'.Str::slug(pathinfo($request->file('file')->getClientOriginalName(), PATHINFO_FILENAME)).'.zip'; - - Storage::putFileAs('app/backups', $request->file('file'), $upload_filename); - - return redirect()->route('settings.backups.index')->with('success', 'File uploaded'); - - } else { - return redirect()->route('settings.backups.index')->with('error', 'No file uploaded'); - } - + if (!$request->hasFile('file')) { + return redirect()->route('settings.backups.index')->with('error', 'No file uploaded'); } else { - return redirect()->route('settings.backups.index')->withErrors($request->getErrors()); + $max_file_size = Helper::file_upload_max_size(); + + $rules = [ + 'file' => 'required|mimes:zip|max:'.$max_file_size, + ]; + + $validator = \Validator::make($request->all(), $rules); + + if ($validator->passes()) { + + + + $upload_filename = 'uploaded-'.date('U').'-'.Str::slug(pathinfo($request->file('file')->getClientOriginalName(), PATHINFO_FILENAME)).'.zip'; + + Storage::putFileAs('app/backups', $request->file('file'), $upload_filename); + + return redirect()->route('settings.backups.index')->with('success', 'File uploaded'); + } else { + return redirect()->route('settings.backups.index')->withErrors($request->getErrors()); + } } + + } @@ -1198,29 +1199,41 @@ class SettingsController extends Controller // grab the user's info so we can make sure they exist in the system $user = User::find(Auth::user()->id); + + // TODO: run a backup + + // TODO: add db:wipe + + // run the restore command Artisan::call('snipeit:restore', - [ - '--force' => true, - '--no-progress' => true, - 'filename' => storage_path($path).'/'.$filename - ]); + [ + '--force' => true, + '--no-progress' => true, + 'filename' => storage_path($path).'/'.$filename + ]); $output = Artisan::output(); - - + + // If it's greater than 300, it probably worked if (strlen($output) > 300) { return redirect()->route('settings.backups.index')->with('success', 'Your system has been restored.'); - } else { return redirect()->route('settings.backups.index')->with('error', $output); } //dd($output); - // insert the user if they are not there in the old one + // TODO: insert the user if they are not there in the old one + + + + // log the user out + // \Auth::logout(); + + } else { return redirect()->route('settings.backups.index')->with('error', trans('admin/settings/message.backup.file_not_found')); } From 230a56814585b66d042dd4c400e63f47c72134ad Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 01:44:11 -0800 Subject: [PATCH 14/24] Added help text and more info in the modal Signed-off-by: snipe --- resources/views/settings/backups.blade.php | 69 +++++++++++++--------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/resources/views/settings/backups.blade.php b/resources/views/settings/backups.blade.php index fed72052ed..90d17b0d7c 100644 --- a/resources/views/settings/backups.blade.php +++ b/resources/views/settings/backups.blade.php @@ -1,4 +1,6 @@ -@extends('layouts/default') +@extends('layouts/default', [ + 'helpText' => 'Backup files are located in: '.$path.'', +]) {{-- Page title --}} @section('title') @@ -72,8 +74,8 @@ {{ trans('general.delete') }} - + Restore @@ -91,37 +93,48 @@
+

Upload Backup

- -

Backup files are located in: {{ $path }}

+ {{ Form::open([ + 'method' => 'POST', + 'route' => 'settings.backups.upload', + 'files' => true, + 'class' => 'form-horizontal' ]) }} -

Upload Backup

+ @csrf - -
+ +
+
+ + + + + + +
+
+ +
- {{ Form::open([ - 'method' => 'POST', - 'route' => 'settings.backups.upload', - 'files' => true, - 'class' => 'form-horizontal' ]) }} - - @csrf - - - - - -

{{ trans_choice('general.filetypes_accepted_help', 3, ['size' => Helper::file_upload_max_size_readable(), 'types' => '.zip']) }}

- {!! $errors->first('file', '') !!} - - - {{ Form::close() }} +

+

{{ trans_choice('general.filetypes_accepted_help', 3, ['size' => Helper::file_upload_max_size_readable(), 'types' => '.zip']) }}

+ {!! $errors->first('image', '') !!} + +
+ + +
+ + {{ Form::close() }} + + +
From ec2a3b0f35af3654ca076d87c60bad5b913cd0dd Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Nov 2021 01:44:34 -0800 Subject: [PATCH 15/24] Updated label names Signed-off-by: snipe --- resources/views/layouts/default.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php index 46ca5be033..0138a61923 100644 --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -853,12 +853,12 @@ -