diff --git a/app/Http/Requests/ImageUploadRequest.php b/app/Http/Requests/ImageUploadRequest.php index 6fb6ead210..b3cd6e102c 100644 --- a/app/Http/Requests/ImageUploadRequest.php +++ b/app/Http/Requests/ImageUploadRequest.php @@ -7,7 +7,9 @@ use enshrined\svgSanitize\Sanitizer; use Intervention\Image\Facades\Image; use App\Http\Traits\ConvertsBase64ToFiles; use Illuminate\Http\UploadedFile; -use Storage; +use Illuminate\Support\Facades\Storage; +use Intervention\Image\Exception\NotReadableException; + class ImageUploadRequest extends Request { @@ -106,10 +108,18 @@ class ImageUploadRequest extends Request \Log::debug('Not an SVG or webp - resize'); \Log::debug('Trying to upload to: '.$path.'/'.$file_name); - $upload = Image::make($image->getRealPath())->resize(null, $w, function ($constraint) { - $constraint->aspectRatio(); - $constraint->upsize(); - }); + try { + $upload = Image::make($image->getRealPath())->resize(null, $w, function ($constraint) { + $constraint->aspectRatio(); + $constraint->upsize(); + }); + } catch(NotReadableException $e) { + \Log::debug($e); + $validator = \Validator::make([], []); + $validator->errors()->add($form_fieldname, trans('general.unaccepted_image_type', ['mimetype' => $image->getClientMimeType()])); + + throw new \Illuminate\Validation\ValidationException($validator); + } // This requires a string instead of an object, so we use ($string) Storage::disk('public')->put($path.'/'.$file_name, (string) $upload->encode()); diff --git a/public/js/build/app.js b/public/js/build/app.js index 5c54959160..c9e1d08a17 100644 --- a/public/js/build/app.js +++ b/public/js/build/app.js @@ -2152,10 +2152,13 @@ $(document).ready(function () { var id = '#' + $this.attr('id'); var status = id + '-status'; var $status = $(status); + var delete_id = $(id + '-deleteCheckbox'); + var preview_container = $(id + '-previewContainer'); $status.removeClass('text-success').removeClass('text-danger'); $(status + ' .goodfile').remove(); $(status + ' .badfile').remove(); $(status + ' .previewSize').hide(); + preview_container.hide(); $(id + '-info').html(''); var max_size = $this.data('maxsize'); var total_size = 0; @@ -2165,9 +2168,6 @@ $(document).ready(function () { $(id + '-info').append('' + htmlEntities(this.files[i].name) + ' (' + formatBytes(this.files[i].size) + ') '); } - console.log('Max size is: ' + max_size); - console.log('Real size is: ' + total_size); - if (total_size > max_size) { $status.addClass('text-danger').removeClass('help-block').prepend(' ').append(' Upload is ' + formatBytes(total_size) + '.'); } else { @@ -2175,6 +2175,8 @@ $(document).ready(function () { var $preview = $(id + '-imagePreview'); readURL(this, $preview); $preview.fadeIn(); + preview_container.fadeIn(); + delete_id.hide(); } }); }); diff --git a/public/js/dist/all.js b/public/js/dist/all.js index 07d4371e2f..e948c91469 100644 --- a/public/js/dist/all.js +++ b/public/js/dist/all.js @@ -61281,10 +61281,13 @@ $(document).ready(function () { var id = '#' + $this.attr('id'); var status = id + '-status'; var $status = $(status); + var delete_id = $(id + '-deleteCheckbox'); + var preview_container = $(id + '-previewContainer'); $status.removeClass('text-success').removeClass('text-danger'); $(status + ' .goodfile').remove(); $(status + ' .badfile').remove(); $(status + ' .previewSize').hide(); + preview_container.hide(); $(id + '-info').html(''); var max_size = $this.data('maxsize'); var total_size = 0; @@ -61294,9 +61297,6 @@ $(document).ready(function () { $(id + '-info').append('' + htmlEntities(this.files[i].name) + ' (' + formatBytes(this.files[i].size) + ') '); } - console.log('Max size is: ' + max_size); - console.log('Real size is: ' + total_size); - if (total_size > max_size) { $status.addClass('text-danger').removeClass('help-block').prepend(' ').append(' Upload is ' + formatBytes(total_size) + '.'); } else { @@ -61304,6 +61304,8 @@ $(document).ready(function () { var $preview = $(id + '-imagePreview'); readURL(this, $preview); $preview.fadeIn(); + preview_container.fadeIn(); + delete_id.hide(); } }); }); diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 73e028bd27..f0fc15863a 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,5 +1,5 @@ { - "/js/build/app.js": "/js/build/app.js?id=790387868822daaa28dcc3722928b7b1", + "/js/build/app.js": "/js/build/app.js?id=da037f537476ebca094531163cb611f5", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", "/css/build/overrides.css": "/css/build/overrides.css?id=d9175e3d9b9074397343dddebfe23888", "/css/build/app.css": "/css/build/app.css?id=dcb8aa9f4501a370214a67442e88daf0", @@ -34,7 +34,7 @@ "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=ee4896df8b8f008ce73a9a0c2549aefd", "/js/build/vendor.js": "/js/build/vendor.js?id=47ecbb4bb3b0e02315f391caadbdf971", "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=14d9a2affec7b066d20fcba2e6e67ad2", - "/js/dist/all.js": "/js/dist/all.js?id=93f3ed97355821b50ee5bbd4f658dd05", + "/js/dist/all.js": "/js/dist/all.js?id=758f256419ccaf4b4266da3bbc742b0b", "/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=c0d21166315b7c2cdd4819fa4a5e4d1e", "/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb", diff --git a/resources/assets/js/snipeit.js b/resources/assets/js/snipeit.js index 62abdafde3..6d5340c80f 100755 --- a/resources/assets/js/snipeit.js +++ b/resources/assets/js/snipeit.js @@ -540,10 +540,16 @@ $(document).ready(function () { var id = '#' + $this.attr('id'); var status = id + '-status'; var $status = $(status); + var delete_id = $(id + '-deleteCheckbox'); + var preview_container = $(id + '-previewContainer'); + + + $status.removeClass('text-success').removeClass('text-danger'); $(status + ' .goodfile').remove(); $(status + ' .badfile').remove(); $(status + ' .previewSize').hide(); + preview_container.hide(); $(id + '-info').html(''); var max_size = $this.data('maxsize'); @@ -554,17 +560,15 @@ $(document).ready(function () { $(id + '-info').append('' + htmlEntities(this.files[i].name) + ' (' + formatBytes(this.files[i].size) + ') '); } - console.log('Max size is: ' + max_size); - console.log('Real size is: ' + total_size); - if (total_size > max_size) { $status.addClass('text-danger').removeClass('help-block').prepend(' ').append(' Upload is ' + formatBytes(total_size) + '.'); } else { - $status.addClass('text-success').removeClass('help-block').prepend(' '); var $preview = $(id + '-imagePreview'); readURL(this, $preview); $preview.fadeIn(); + preview_container.fadeIn(); + delete_id.hide(); } diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index b73f999229..97b82d95a0 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -148,6 +148,7 @@ return [ '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.', + 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'importing' => 'Importing', 'importing_help' => 'You can import assets, accessories, licenses, components, consumables, and users via CSV file.

The CSV should be comma-delimited and formatted with headers that match the ones in the sample CSVs in the documentation.', diff --git a/resources/views/partials/forms/edit/uploadLogo.blade.php b/resources/views/partials/forms/edit/uploadLogo.blade.php index 7237d7b817..6bbc116b64 100644 --- a/resources/views/partials/forms/edit/uploadLogo.blade.php +++ b/resources/views/partials/forms/edit/uploadLogo.blade.php @@ -1,57 +1,66 @@ -
+ + +
- {{ $logoLabel }} +
- - @if (($setting->$logoVariable!='') && (Storage::disk('public')->exists(e($snipeSettings->$logoVariable)))) -
- - - - -
- @if ($logoVariable!='favicon') - - - - @else - - @endif - -
-
- @else -
- @endif - - - - +
+ -

+ {!! $errors->first($logoVariable, ':message') !!} + + +

{{ $helpBlock }}

@if (config('app.lock_passwords')===true)

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

@endif - {!! $errors->first($logoVariable, ':message') !!} +
+ +
+ + @if (($setting->$logoVariable!='') && (Storage::disk('public')->exists(e($snipeSettings->$logoVariable)))) +
+ + + +
+ @endif + + + +
+ @if (($setting->$logoVariable!='') && (Storage::disk('public')->exists(e($snipeSettings->$logoVariable)))) +
- +
+ @endif +
+ + + + + + +