Files
kupshop/admin/templates/list/photos.tpl
2025-08-02 16:30:27 +02:00

182 lines
7.3 KiB
Smarty

{extends "../list.tpl"}
{block "list-filter"}
{/block}
{block "list-wrapper-class"}list-photos{/block}
{block "list-panel-class"}{/block}
{block listTable}
<div class="row">
<form data-photos-container class="photos-selection-container">
<div class="{if $searchWnd}col-md-2 col-sm-3 col-xs-6{else}col-md-1 col-sm-2 col-xs-4{/if}" data-uploader-wrapper>
<div class="file-uploader" data-file-upload>
<div id="file-uploader"></div>
</div>
</div>
<div data-file-upload-list
class="{if $searchWnd}col-md-2 col-sm-3 col-xs-6{else}col-md-1 col-sm-2 col-xs-4{/if} photos photos-file-upload-list"></div>
{foreach from=$SQL item=image}
<div class="{if $searchWnd}col-md-2 col-sm-3 col-xs-6{else}col-md-1 col-sm-2 col-xs-4{/if} photos">
{if getVal('multiSelect')}
<div class="checkbox">
<input type="checkbox" id="checkbox_{$image.id}" data-photo="{$image.id}" class="check">
<label for="checkbox_{$image.id}"></label>
</div>
{/if}
<div class="thumbnail">
{if $image.id_video}
<span class="glyphicon glyphicon-film"></span>
{/if}
{if $image.image_tablet || $image.image_mobile}
<span class="glyphicon glyphicon-phone"></span>
{/if}
<a href="{if getVal('multiSelect')}#photo{else}javascript:{if $searchWnd}searchResult('{$image.id}'){else}nw('photo', '{$image.id}'){/if};{/if}">
<img src="{static_url url=$image.img.src}" class="img-rounded img-responsive" alt="">
</a>
{if $image.descr}
<div class="caption text-center list_item">{$image.descr}</div>
{/if}
</div>
</div>
{/foreach}
</form>
</div>
{/block}
{block bottomPagination}
<div class="row footer window-btns">
<div class="col-xs-8">
{include "utils/pager.tpl"}
</div>
<div class="col-xs-4">
{if getVal('multiSelect')}
<button class="btn btn-primary btn-block submitPhotosSelectionBtn" data-submit-selection-btn>Vybrat obrázky</button>
{/if}
</div>
</div>
{/block}
{* Image uploader *}
{block js append}
<script src="/admin/static/fineuploader/jquery.fine-uploader.min.js"></script>
<script type="text/template" id="qq-simple-thumbnails-template">
<div class="qq-uploader-selector qq-uploader">
<div class="qq-upload-drop-area-selector qq-upload-drop-area" qq-hide-dropzone>
<div>
<span></span>Přesuňte soubory sem
</div>
</div>
<div class="qq-upload-button-selector">
<p>
<strong>Nahrát obrázek{ifmodule VIDEOS} nebo video{/ifmodule}</strong>
<small>podporované formáty jsou .jpg, .jpeg, .png, .webp, .avif, .gif{if {find_module name='videos'}}, .mp4, .mkv, .m4a{/if}</small>
</p>
</div>
<span class="qq-drop-processing-selector qq-drop-processing">
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
<span>Zpracovávám soubory...</span>
</span>
<div class="qq-upload-list-selector qq-upload-list">
<div class="qq-upload-instance">
<span class="qq-upload-spinner-selector qq-upload-spinner"></span>
<input class="qq-edit-filename-selector qq-edit-filename" tabindex="0" type="text">
<a class="qq-upload-cancel-selector qq-upload-cancel" href="#">Zrušit <span class="fc icons_close"></span></a>
<span class="qq-upload-status-text-selector qq-upload-status-text"></span>
<span class="qq-upload-file-selector qq-upload-file"></span>
</div>
</div>
</div>
</script>
{/block}
<script>
{block onready append}
// Keep in sync with engine/admin/templates/adminPhotos.tpl !!
var $el = $('[data-file-upload]');
var $fileUploader = $el.find('#file-uploader');
var extensions = ['jpeg', 'jpg', 'png', 'svg', 'webp', 'avif', 'gif'];
{ifModule VIDEOS}
extensions.push('mp4', 'mkv', 'm4a', 'm4v', 'mov');
{/ifModule}
var uploaderOptions = {
template: 'qq-simple-thumbnails-template',
listElement: $('[data-file-upload-list]')[0],
thumbnails: {
placeholders: {
waitingPath: 'static/fineuploader/placeholders/waiting-generic.png',
notAvailablePath: 'static/fineuploader/placeholders/not_available-generic.png',
},
},
request: {
inputName: 'uploader',
endpoint: 'launch.php?s=list.php&type=photos&acn=uploadImage&photos_type={$smarty.get.photos_type}',
},
blobProperties: {
name: 'filename',
},
validation: {
allowedExtensions: extensions,
},
callbacks: {
onComplete: function(id, name, response) {
var imageId = response.id;
if (response.success) {
var href = '#photo';
{if !getVal('multiSelect')}
href = "javascript:{if $searchWnd}searchResult('" + imageId + "'){else}nw('photo', '" + imageId + "'){/if};";
{/if}
var $photo = $('<div class="{if $searchWnd}col-md-2 col-sm-3 col-xs-6{else}col-md-1 col-sm-2 col-xs-4{/if} photos">\n' +
'{if getVal('multiSelect')}<div class="checkbox">' +
'<input type="checkbox" id="checkbox_' + imageId + '" data-photo="' + imageId + '" class="check" checked="checked">' +
'<label for="checkbox_' + imageId + '"></label></div>{/if}' +
' <div class="thumbnail">\n' +
' <a href="' + href + '">\n' +
' <img src="" class="img-rounded img-responsive" alt="">\n' +
' </a>' +
' <div class="caption text-center list_item">' + name + '</div>' +
' </div>' +
' </div>');
$fileUploader.fineUploader('drawThumbnail', id, $photo.find('img'), 250, false);
$('[data-uploader-wrapper]').after($photo);
}
},
onAllComplete: function(succeeded, failed) {
if (!failed.length) {
$('[data-file-upload-list]').empty();
}
},
},
maxConnections: 1,
};
$fileUploader.fineUploader(uploaderOptions);
{if getVal('multiSelect')}
var $photosContainer = $('[data-photos-container]');
$photosContainer.on('click', '.thumbnail > a', function(event) {
event.preventDefault();
var $checkbox = $(this).closest('.photos').find('input[type=checkbox]');
$checkbox.prop('checked', !$checkbox.prop('checked'));
});
$('[data-submit-selection-btn]').on('click', function(event) {
event.preventDefault();
var selectedIDs = [];
$photosContainer.find('[data-photo]:checked').each(function(index, el) {
selectedIDs.push($(el).attr('data-photo'));
});
searchResult(selectedIDs);
});
{/if}
{/block}
</script>