]> BookStack Code Mirror - bookstack/blob - resources/views/components/image-picker.blade.php
Actually include the Queueable namespace...
[bookstack] / resources / views / components / image-picker.blade.php
1 <div class="image-picker" image-picker="{{$name}}" data-default-image="{{ $defaultImage }}" data-resize-height="{{ $resizeHeight }}" data-resize-width="{{ $resizeWidth }}" data-current-id="{{ $currentId or '' }}" data-resize-crop="{{ $resizeCrop or '' }}">
2
3     <div>
4         <img @if($currentImage && $currentImage !== 'none') src="{{$currentImage}}" @else src="{{$defaultImage}}" @endif  class="{{$imageClass}} @if($currentImage=== 'none') none @endif" alt="{{ trans('components.image_preview') }}">
5     </div>
6
7     <button class="button" type="button" data-action="show-image-manager">{{ trans('components.image_select_image') }}</button>
8     <br>
9     <button class="text-button" data-action="reset-image" type="button">{{ trans('common.reset') }}</button>
10
11     @if ($showRemove)
12         <span class="sep">|</span>
13         <button class="text-button neg" data-action="remove-image" type="button">{{ trans('common.remove') }}</button>
14     @endif
15
16     <input type="hidden" name="{{$name}}" id="{{$name}}" value="{{ isset($currentId) && ($currentId !== '' && $currentId !== false) ? $currentId : $currentImage}}">
17 </div>
18
19 <script>
20     (function(){
21
22         var picker = document.querySelector('[image-picker="{{$name}}"]');
23         picker.addEventListener('click', function(event) {
24             if (event.target.nodeName.toLowerCase() !== 'button') return;
25              var button = event.target;
26              var action = button.getAttribute('data-action');
27              var resize = picker.getAttribute('data-resize-height') && picker.getAttribute('data-resize-width');
28              var usingIds = picker.getAttribute('data-current-id') !== '';
29              var resizeCrop = picker.getAttribute('data-resize-crop') !== '';
30              var imageElem = picker.querySelector('img');
31              var input = picker.querySelector('input');
32
33              function setImage(image) {
34                  if (image === 'none') {
35                      imageElem.src = picker.getAttribute('data-default-image');
36                      imageElem.classList.add('none');
37                      input.value = 'none';
38                      return;
39                  }
40                  imageElem.src = image.url;
41                  input.value = usingIds ? image.id : image.url;
42                  imageElem.classList.remove('none');
43              }
44
45              if (action === 'show-image-manager') {
46                  window.ImageManager.showExternal((image) => {
47                      if (!resize) {
48                          setImage(image);
49                          return;
50                      }
51                      var requestString = '/images/thumb/' + image.id + '/' + picker.getAttribute('data-resize-width') + '/' + picker.getAttribute('data-resize-height') + '/' + (resizeCrop ? 'true' : 'false');
52                      $.get(window.baseUrl(requestString), resp => {
53                          image.url = resp.url;
54                          setImage(image);
55                      });
56                  });
57              } else if (action === 'reset-image') {
58                  setImage({id: 0, url: picker.getAttribute('data-default-image')});
59              } else if (action === 'remove-image') {
60                  setImage('none');
61              }
62
63             });
64
65     })();
66 </script>