@php $field['prefix'] = $field['prefix'] ?? ''; $field['disk'] = $field['disk'] ?? null; $field['temporary'] = $field['temporary'] ?? false; $field['expiration'] = $field['expiration'] ?? 1; $value = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; if (! function_exists('getDiskUrl')) { function getDiskUrl($field, $value) { try { $disk = Storage::disk($field['disk']); try { $origin = $field['temporary'] || $field['disk'] === config('filesystems.cloud') ? config('filesystems.disks.' . $field['disk'].'.url') : substr($disk->url('/'), 0, -1); }catch (Exception $e) { // some drivers like S/FTP don't support getting URLs Log::error($e); } $value = str_replace($origin ?? '', '', $value); $value = Str::of($value)->start('/'); if ($field['temporary']) { return $disk->temporaryUrl($value, now()->addMinutes((int) $field['expiration'])); } return $disk->url($value); } catch (Exception $e) { // the driver does not support retrieving URLs (eg. SFTP) return url($value); } } } if (! function_exists('maximumServerUploadSizeInBytes')) { function maximumServerUploadSizeInBytes() { $val = trim(ini_get('upload_max_filesize')); $last = strtolower($val[strlen($val)-1]); switch($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val = (int)$val * 1073741824; break; case 'm': $val = (int)$val * 1048576; break; case 'k': $val = (int)$val * 1024; break; } return $val; } } // if value isn't a base 64 image, generate URL if($value && !preg_match('/^data\:image\//', $value)) { // make sure to prepend the prefix once to value $imageUrl = Str::start($value, Str::finish($field['prefix'], '/')); // generate URL $imageUrl = getDiskUrl($field, $imageUrl); } $max_image_size_in_bytes = $field['max_file_size'] ?? (int)maximumServerUploadSizeInBytes(); $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; $field['wrapper']['class'] = $field['wrapper']['class'] ?? "form-group col-sm-12"; $field['wrapper']['class'] = $field['wrapper']['class'].' cropperImage'; $field['wrapper']['data-aspectRatio'] = $field['aspect_ratio'] ?? 0; $field['wrapper']['data-crop'] = $field['crop'] ?? false; $field['wrapper']['data-field-name'] = $field['wrapper']['data-field-name'] ?? $field['name']; $field['wrapper']['data-init-function'] = $field['wrapper']['data-init-function'] ?? 'bpFieldInitCropperImageElement'; @endphp @include('crud::fields.inc.wrapper_start') @include('crud::fields.inc.translatable_icon') {{-- Wrap the image or canvas element with a block element (container) --}}
@if(isset($field['crop']) && $field['crop'])
@endif
{{ trans('backpack::crud.choose_file') }}
@if(isset($field['crop']) && $field['crop']) @endif
{{-- HINT --}} @if (isset($field['hint']))

{!! $field['hint'] !!}

@endif @include('crud::fields.inc.wrapper_end') {{-- ########################################## --}} {{-- Extra CSS and JS for this particular field --}} {{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} {{-- FIELD CSS - will be loaded in the after_styles section --}} @push('crud_fields_styles') @basset('https://unpkg.com/cropperjs@1.5.13/dist/cropper.min.css') @bassetBlock('backpack/pro/fields/image-field.css') @endBassetBlock @endpush {{-- FIELD JS - will be loaded in the after_scripts section --}} @push('crud_fields_scripts') @basset('https://unpkg.com/cropperjs@1.5.13/dist/cropper.min.js') @basset('https://unpkg.com/jquery-cropper@1.0.1/dist/jquery-cropper.min.js') @bassetBlock('backpack/pro/fields/image-field.js') @endBassetBlock @endpush {{-- End of Extra CSS and JS --}} {{-- ########################################## --}}