first commit
This commit is contained in:
249
admin/templates/utils/blocks.tpl
Normal file
249
admin/templates/utils/blocks.tpl
Normal file
@@ -0,0 +1,249 @@
|
||||
<div id="pageBlocksOuterContainer">
|
||||
<div class="row bottom-space">
|
||||
|
||||
<div class="col-md-3">
|
||||
<a href="#" data-form-custom-add-root class="btn btn-success btn-block"><span class="glyphicon glyphicon-plus"></span> {"add"|translate:"blocks"}</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 col-md-offset-1">
|
||||
{if $editLink && $body.data.id}
|
||||
<a href="{$editLink}?inlineEditable=1" class="btn btn-primary btn-block" target="_blank"><span class="glyphicon glyphicon-edit"></span> {"editBlocek"|translate:"menulinks"}</a>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="col-md-1 col-md-offset-4 text-center" data-form-mass-open>
|
||||
<a class="btn btn-sm" style="margin-left:10px;">
|
||||
<i class="glyphicon glyphicon-plus-sign"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-group panel-group-lists collapse in">
|
||||
|
||||
<div class="panel">
|
||||
<div class="panel-heading" style="padding-bottom:4px">
|
||||
<div class="row">
|
||||
<div class="col-md-1 text-center">
|
||||
<small><strong>{"position"|translate:"blocks"}</strong></small>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<small><strong>{"name"|translate:"blocks"}</strong></small>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<small><strong>{"action"|translate:"blocks"}</strong></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="pageBlocksContainer" class="ui-nested-sortable">
|
||||
|
||||
{** default reference block *}
|
||||
<li class="panel blockItem" data-form-item="0" data-form-index="0" style="display:none;">
|
||||
<div class="panel-heading collapsed row-orange" data-toggle="collapse" data-target="#collapse_0" >
|
||||
<div class="row">
|
||||
<div class="col-md-1 text-center">
|
||||
<span class="drag-drop-mover pull-right">
|
||||
<i class="bi bi-arrows-move handle"></i>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-7">
|
||||
<p class="input-height" data-block-heading-name>[{"new"|translate:"blocks"}]</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
{if isSuperuser()}
|
||||
<p class="input-height" data-block-heading-identifier></p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2 text-right">
|
||||
<div class="pull-right">
|
||||
<a class="btn-sm btn btn-danger" data-form-delete>
|
||||
<input class="hidden" type="checkbox" name="data[blocks][0][delete]" />
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<span class="spacer"> </span>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<a class="btn-sm btn btn-default" data-form-custom-add>
|
||||
<span class="glyphicon glyphicon-plus" title="{"add_subblock"|translate:"blocks"}"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="collapse_0" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="row bottom-space">
|
||||
<div class="form-group">
|
||||
<div class="col-md-2 control-label"><label>{"name"|translate:"blocks"}</label></div>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control input-sm" name="data[blocks][0][name]" size="30" maxlength="100" value="">
|
||||
</div>
|
||||
{if isSuperuser() or !empty($identifiers)}
|
||||
<div class="col-md-2 control-label"><label>{"identifier"|translate:"blocks"}</label></div>
|
||||
<div class="col-md-3">
|
||||
{if !empty($identifiers)}
|
||||
<select class="selecter" name="data[blocks][0][identifier]">
|
||||
{foreach $identifiers as $key => $option}
|
||||
<option value="{$key}">{$option.title}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{else}
|
||||
<input type="text" class="form-control input-sm" name="data[blocks][0][identifier]" size="30" maxlength="255" value="">
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{if $hideImgBlock!=1 || $photos}
|
||||
<div class="form-group">
|
||||
<div class="col-md-2 control-label"><label>{"photos"|translate:"blocks"}</label></div>
|
||||
<div class="col-md-9">
|
||||
{if $photos}
|
||||
<select multiple name="data[blocks][0][photos][]" class="photo-select">
|
||||
{foreach $photos as $photo}
|
||||
<option data-img-src="{get_photo id=$photo.id_photo image='admin'}" value="{$photo.id_photo}">#{$photo.id_photo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{else}
|
||||
<p style="padding-top: 5px;">
|
||||
<a href="#" onclick="switchTab('flapPhotos');return false;">{"uploadImage"|translate:"sliders"}</a>
|
||||
|
||||
</p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
{function renderBlocks level=0}
|
||||
{foreach $blocks as $block}
|
||||
<li class="panel blockItem" data-form-item="{$block.id}" data-form-index="{$block.id}" data-form-item-id="{$block.id}">
|
||||
<div class="panel-heading collapsed row-green" data-toggle="collapse" data-target="#collapse_{$block.id}" >
|
||||
<div class="row">
|
||||
<div class="col-md-1 text-center">
|
||||
<input type="hidden" name="data[blocks][{$block.id}][id]" value="{$block.id}">
|
||||
<span class="drag-drop-mover pull-right">
|
||||
<i class="bi bi-arrows-move handle"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<span data-toggle-subtree style="display:none;"><span class="glyphicon glyphicon-minus-sign"></span></span>
|
||||
<p class="input-height" data-block-heading-name>
|
||||
{if $block.name}
|
||||
{$block.name}
|
||||
{else}
|
||||
{$block.content|strip_tags|truncate:50:"..."}
|
||||
{/if}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
{if isSuperuser() || !empty($identifiers)}
|
||||
<p class="input-height" data-block-heading-identifier>
|
||||
{if !empty($identifiers)}
|
||||
{$identifiers[$block.identifier].title}
|
||||
{else}
|
||||
{$block.identifier}
|
||||
{/if}
|
||||
</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2 text-right">
|
||||
<div class="pull-right">
|
||||
<a class="btn-sm btn btn-danger" data-form-delete>
|
||||
<input class="hidden" type="checkbox" name="data[blocks][{$block.id}][delete]" />
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<span class="spacer"> </span>
|
||||
</div>
|
||||
{if $block.id}
|
||||
<div class="pull-right">
|
||||
<a class="btn-sm btn btn-primary" target="_blank" href="{path('kupshop_content_block_editblock', ['id' => $block.id, 'inlineEditable' => 1])}">
|
||||
<span class="glyphicon glyphicon-edit"></span>
|
||||
</a>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="pull-right">
|
||||
<span class="spacer"> </span>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<a class="btn-sm btn btn-default" data-form-custom-add>
|
||||
<span class="glyphicon glyphicon-plus" title="{"add_subblock"|translate:"blocks"}"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="collapse_{$block.id}" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="row bottom-space">
|
||||
<div class="form-group">
|
||||
<div class="col-md-2 control-label"><label>{"name"|translate:"blocks"}</label></div>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control input-sm" name="data[blocks][{$block.id}][name]" size="30" maxlength="100" value="{$block.name}">
|
||||
</div>
|
||||
{block "block-identifier"}
|
||||
{if isSuperuser() || !empty($identifiers)}
|
||||
<div class="col-md-2 control-label"><label>{"identifier"|translate:"blocks"}</label></div>
|
||||
<div class="col-md-3">
|
||||
{if !empty($identifiers)}
|
||||
<select class="selecter" name="data[blocks][{$block.id}][identifier]">
|
||||
{foreach $identifiers as $key => $option}
|
||||
<option value="{$key}" {if $key == $block.identifier}selected{/if}>{$option.title}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{else}
|
||||
<input type="text" class="form-control input-sm" name="data[blocks][{$block.id}][identifier]" size="30" maxlength="255" value="{$block.identifier}">
|
||||
{/if}
|
||||
</div>
|
||||
{elseif $body.duplicate}
|
||||
<input type="hidden" name="data[blocks][{$block.id}][identifier]" value="{$block.identifier}">
|
||||
{/if}
|
||||
{/block}
|
||||
</div>
|
||||
{if $hideImgBlock!=1 || $photos}
|
||||
<div class="form-group">
|
||||
<div class="col-md-2 control-label"><label>{"photos"|translate:"blocks"}</label></div>
|
||||
<div class="col-md-9">
|
||||
{if $photos}
|
||||
{$block_photos = array_column($block.photos, 'id')}
|
||||
<select multiple name="data[blocks][{$block.id}][photos][]" class="photo-select">
|
||||
{foreach $photos as $photo}
|
||||
<option data-img-src="{get_photo id=$photo.id_photo image='admin'}" value="{$photo.id_photo}" {$photo.id_photo|selected:$block_photos}>#{$photo.id_photo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{else}
|
||||
<p style="padding-top: 5px;">
|
||||
<a href="#" onclick="switchTab('flapPhotos');return false;">{"uploadImage"|translate:"sliders"}</a>
|
||||
</p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{if $block.children}
|
||||
<ul>{renderBlocks blocks=$block.children level=$level+1}</ul>
|
||||
{/if}
|
||||
</li>
|
||||
{/foreach}
|
||||
{*{if level > 0}</ul>{/if}*}
|
||||
{/function}
|
||||
|
||||
{renderBlocks blocks=$blocks level=0}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var options = {['acn' => $acn, 'isSuperuser' => isSuperuser()]|json_encode nofilter};
|
||||
$(".ui-nested-sortable").blocks(options);
|
||||
</script>
|
||||
61
admin/templates/utils/blocksHistory.tpl
Normal file
61
admin/templates/utils/blocksHistory.tpl
Normal file
@@ -0,0 +1,61 @@
|
||||
{$blocks_history=$blocks_history|default:$body.data.blocks_history}
|
||||
<h1 class="h4 main-panel-title">Historie</h1>
|
||||
|
||||
<div class="panel-group panel-group-lists" data-values="items">
|
||||
<div class="panel">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col-md-3 text-left col-md-offset-1" style="padding-left: 0;">
|
||||
<small><strong>Datum verze</strong></small>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<small><strong>Naposledy upravil</strong></small>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<small><strong>Název</strong></small>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<small><strong>Akce</strong></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{foreach $blocks_history as $historyId => $history}
|
||||
<div class="panel">
|
||||
<div class="row bottom-space">
|
||||
<div class="col-md-1">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<span style="display:inline-block;padding: 6px 0;">{$history['date']}</span>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<span style="display:inline-block;padding: 6px 0;">{$history['admin_login']}</span>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<span style="display:inline-block;padding: 6px 0;">{$history['name']}</span>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<a data-rename="{$history['date']}" href="launch.php?s={$smarty.GET.s}&acn=rename&flap=flapBlocks&ID={$body.data.id}&rename={$historyId}" class="btn btn-sm btn-default">Pojmenovat</a>
|
||||
<a href="javascript:nw('blocksHistory', '{$historyId}', '');" class="btn btn-sm btn-default">Zobrazit</a>
|
||||
<a href="launch.php?s={$smarty.GET.s}&acn=revert&flap=flapBlocks&ID={$body.data.id}&revert={$historyId}" title="Obnovit na verzi z data {$history['date']}"
|
||||
class="btn btn-sm btn-primary confirm">Obnovit</a>
|
||||
<a href="launch.php?s={$smarty.GET.s}&acn=deleteHistory&flap=flapBlocks&ID={$body.data.id}&delete={$historyId}" title="Smazat verzi z data {$history['date']}"
|
||||
class="btn btn-sm btn-danger confirm">Smazat</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('[data-rename]').click(function() {
|
||||
var name = window.prompt('Zadejte název pro verzi z data ' + $(this).data('rename'));
|
||||
|
||||
if (name)
|
||||
window.location = $(this).attr('href') + '&name=' + name;
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
17
admin/templates/utils/codesModal.tpl
Normal file
17
admin/templates/utils/codesModal.tpl
Normal file
@@ -0,0 +1,17 @@
|
||||
<div class="modal fade" id="{$modal_id}" tabindex="-1">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
<h4 class="modal-title">{$title}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<textarea class="form-control" id="paste-modal" rows="8" style="resize: vertical;"></textarea>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Zavřít</button>
|
||||
<button type="button" class="btn btn-primary" data-save>Uložit</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
121
admin/templates/utils/fileUploader.tpl
Normal file
121
admin/templates/utils/fileUploader.tpl
Normal file
@@ -0,0 +1,121 @@
|
||||
<div class="cart-file-uploader">
|
||||
{$pageType = $pageType|default:'admin'}
|
||||
<div id="thumbnail-fine-uploader"></div>
|
||||
|
||||
{get_user_content type=$pageType assign='files'}
|
||||
|
||||
{if $files == false}
|
||||
{$files = []}
|
||||
{/if}
|
||||
|
||||
{if $files}
|
||||
<ul class="qq-upload-list">
|
||||
{foreach $files as $uid => $file}
|
||||
<li data-file-uid="{$uid}">
|
||||
{$file.originalFilename}
|
||||
<span class="qq-upload-delete" data-file-delete="{$uid}">Smazat</span></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
$('[data-file-delete]').click(function() {
|
||||
var uid = $(this).data('file-delete');
|
||||
|
||||
$(this).text('Probíhá smazání...');
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: '/_upload/{$pageType}/delete/' + uid,
|
||||
}).done(function(result) {
|
||||
var obj = jQuery.parseJSON(result);
|
||||
if (obj.success == true) {
|
||||
var $file = $(document).find('[data-file-uid="' + uid + '"]');
|
||||
$file.detach();
|
||||
}
|
||||
});
|
||||
});
|
||||
</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 soubory</strong>
|
||||
podporované formáty jsou .jpg, .jpeg, .gif, .png, .svg a .pdf
|
||||
</p>
|
||||
</div>
|
||||
<span class="qq-drop-processing-selector qq-drop-processing">
|
||||
<span>Zpracovávám soubory...</span>
|
||||
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
|
||||
</span>
|
||||
<ul class="qq-upload-list-selector qq-upload-list">
|
||||
<li>
|
||||
<div class="qq-progress-bar-container-selector">
|
||||
<div class="qq-progress-bar-selector qq-progress-bar"></div>
|
||||
</div>
|
||||
<span class="qq-upload-spinner-selector qq-upload-spinner"></span>
|
||||
<div class="qq-thumb-img">
|
||||
<img class="qq-thumbnail-selector" qq-max-size="100" qq-server-scale>
|
||||
</div>
|
||||
<span class="qq-edit-filename-icon-selector qq-edit-filename-icon"></span>
|
||||
<span class="qq-upload-file-selector qq-upload-file"></span>
|
||||
<input class="qq-edit-filename-selector qq-edit-filename" tabindex="0" type="text">
|
||||
<span class="qq-upload-size-selector qq-upload-size"></span>
|
||||
<a class="qq-upload-cancel-selector qq-upload-cancel" href="#">Zrušit</a>
|
||||
<a class="qq-upload-retry-selector qq-upload-retry" href="#">Opakovat</a>
|
||||
<a class="qq-upload-delete-selector qq-upload-delete" href="#">Smazat</a>
|
||||
<span class="qq-upload-status-text-selector qq-upload-status-text"></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
var pageType = '{$pageType}';
|
||||
$('#thumbnail-fine-uploader').fineUploader({
|
||||
pageType: pageType,
|
||||
template: 'qq-simple-thumbnails-template',
|
||||
thumbnails: {
|
||||
placeholders: {
|
||||
waitingPath: '/admin/static/fineuploader/placeholders/waiting-generic.png',
|
||||
notAvailablePath: '/admin/static/fineuploader/placeholders/not_available-generic.png',
|
||||
},
|
||||
},
|
||||
request: {
|
||||
endpoint: '/_upload/' + pageType + '/upload/',
|
||||
},
|
||||
deleteFile: {
|
||||
enabled: true,
|
||||
method: 'DELETE',
|
||||
endpoint: '/_upload/' + pageType + '/delete',
|
||||
},
|
||||
blobProperties: {
|
||||
name: 'filename',
|
||||
},
|
||||
scaling: {
|
||||
sendOriginal: false,
|
||||
includeExif: true,
|
||||
sizes: [
|
||||
{
|
||||
name: 'full',
|
||||
maxSize: 2000,
|
||||
},
|
||||
],
|
||||
},
|
||||
validation: {
|
||||
allowedExtensions: ['jpeg', 'jpg', 'gif', 'png', 'svg', 'pdf'],
|
||||
},
|
||||
maxConnections: 1
|
||||
}).on('allComplete', function(event, success, failed) {
|
||||
//$('form').submit();
|
||||
});
|
||||
</script>
|
||||
104
admin/templates/utils/listFilter.tpl
Normal file
104
admin/templates/utils/listFilter.tpl
Normal file
@@ -0,0 +1,104 @@
|
||||
<div class="wpj-panel-heading">
|
||||
<div class="list-filters-wrapper">
|
||||
<div class="list-filters-left">
|
||||
{if isset($filtersStorage)}
|
||||
<label class="small text-muted">Filtry</label>
|
||||
{/if}
|
||||
|
||||
<div class="d-flex flex-wrap">
|
||||
{if isset($filtersStorage)}
|
||||
{if $filtersStorage.storage|count}
|
||||
{$activeFilter = $smarty.get.adminFilter}
|
||||
{foreach $filtersStorage.storage as $adminfilter}
|
||||
{if empty($adminfilter.name)}
|
||||
{continue}
|
||||
{/if}
|
||||
<div class="filter-item">
|
||||
<a target="mainFrame" href="launch.php?s=list.php&type={$adminfilter.type}&adminFilter={$adminfilter.id}"
|
||||
class="btn btn-xs btn-custom"
|
||||
style="background-color: {$adminfilter.color}; {if $activeFilter == $adminfilter.id}border-color: #000;{else}border-color: {$adminfilter.color};{/if}"
|
||||
title="{$adminfilter.description}">{$adminfilter.name}
|
||||
</a>
|
||||
</div>
|
||||
{if $activeFilter == $adminfilter.id}{$activeFilterName = $adminfilter.name}{/if}
|
||||
{/foreach}
|
||||
{/if}
|
||||
|
||||
<div class="d-flex justify-content-start">
|
||||
{block "list-filter-item"}
|
||||
{if !$smarty.get.window}
|
||||
<div class="filter-item">
|
||||
<div class="dropdown">
|
||||
<a class="btn btn-xs btn-ghost dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="bi bi-plus-lg m-r-1"></span>{'addFilterTip'|translate:'filters'}
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="disabled"><a>{'editFilterTip'|translate:'filters'}:</a></li>
|
||||
{foreach $filtersStorage.storage as $adminfilter}
|
||||
{if empty($adminfilter.name)}
|
||||
{continue}
|
||||
{/if}
|
||||
<li>
|
||||
<a href="javascript:nw('addFilter','{$adminfilter.id}','{$filtersStorage.listName}','{$param2}')"
|
||||
title="{$adminfilter.description}">
|
||||
{if $activeFilter == $adminfilter.id}<b>{$adminfilter.name}</b>{else}{$adminfilter.name}{/if}
|
||||
</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
<li style="border-top: 1px solid #ddd;">
|
||||
<a href="javascript:nw('addFilter','','{$filtersStorage.listName}','{$param2}')">
|
||||
<span class="bi bi-plus-lg m-r-1"></span>{'saveAsNewTip'|translate:'filters'}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<a href="javascript:nw('filtersList','','{$filtersStorage.listName}')"
|
||||
class="btn btn-xs btn-ghost btn-block" title="{'filtersListTip'|translate:'filters'}">
|
||||
<span class="bi bi-funnel-fill m-r-1"></span>{'filtersList'|translate:'filters'}
|
||||
</a>
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{block addFilter}{/block}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list-filters-right">
|
||||
{block "list-filter-pager"}
|
||||
{if $pager}
|
||||
<div class="filter-item">
|
||||
<span class="small text-muted">
|
||||
{if $pager.isInfinite}
|
||||
{$pageDiff = $pager.onPage - $pageCount}
|
||||
Zobrazeno {($pager->from() + 1)}–{(($pager->to() + 1) - $pageDiff)} z {if $pager.number == 1 && $pageCount < $pager.onPage}{$pageCount|number_format:0:".":" "}{else}<a href="{$pager->getUrl(["loadTotalCount" => 1])}">mnoha</a>{/if}
|
||||
{else}
|
||||
Zobrazeno {if $pager.total}{($pager->from() + 1)}{else}0{/if}–{min($pager->to() + 1, $pager.total)} z {$pager.total|number_format:0:".":" "}
|
||||
{/if}
|
||||
</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block "list-filter-columns-settings"}
|
||||
{if !$productsMassModification}
|
||||
<div class="filter-item">
|
||||
{if $activeFilter}
|
||||
<button title="Upravit aktuální filtr [{$activeFilterName}]" onclick="nw('filters', '{$activeFilter}')"
|
||||
class="btn btn-ghost btn-xs"><span class="bi bi-arrows-move m-r-1"></span>{'editFilter'|translate:'filters'}
|
||||
</button>
|
||||
{else}
|
||||
<button title="Upravit výchozí zobrazení sloupců" onclick="nw('ListColumns', '', 'acn=add&pg={$smarty.get.type}')"
|
||||
class="btn btn-ghost btn-xs"><span class="bi bi-arrows-move m-r-1"></span>{'editListColumns'|translate:'filters'}
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
67
admin/templates/utils/pager.tpl
Normal file
67
admin/templates/utils/pager.tpl
Normal file
@@ -0,0 +1,67 @@
|
||||
{if $pager.count > 1}
|
||||
<div class="pager">
|
||||
<ul class="pagination">
|
||||
{$pg = $pager.number - 1}
|
||||
<li {if $pager.number == 1}class="disabled"{/if}>
|
||||
<a {if $pager.number > 1}href="{$pager->getUrl(["page" => $pg ])}"{/if}>«</a>
|
||||
</li>
|
||||
|
||||
{if $pager.first && !$pager.isInfinite}
|
||||
{for $page=1 to $pager.pageSideCount}
|
||||
<li><a href="{$pager->getUrl(["page" => $page ])}">{$page}</a></li>
|
||||
{/for}
|
||||
{if $pager.firstDots}
|
||||
<li class="unactive">
|
||||
<a>…</a>
|
||||
</li>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
{$pagerFrom = $pager.number-$pager.pageInsideCount}
|
||||
{$pagerTo = $pager.number+$pager.pageInsideCount}
|
||||
|
||||
{if $pager.isInfinite}
|
||||
{$pagerFrom = $pager.number}
|
||||
{$pagerTo = $pager.number}
|
||||
{/if}
|
||||
|
||||
{for $page=$pagerFrom to $pagerTo}
|
||||
{if $page > 0 && $page <= $pager.count}
|
||||
|
||||
{if $pager.number == $page}
|
||||
<li class="active"><a href="{$pager->getUrl(["page" => $page ])}">{$page}</a></li>
|
||||
{else}
|
||||
<li><a href="{$pager->getUrl(["page" => $page ])}">{$page}</a></li>
|
||||
{/if}
|
||||
{/if}
|
||||
{/for}
|
||||
|
||||
{if $pager.last && !$pager.isInfinite}
|
||||
{if $pager.lastDots}
|
||||
<li class="unactive">
|
||||
<a>…</a>
|
||||
</li>
|
||||
{/if}
|
||||
{for $page=$pager.count-$pager.pageSideCount+1 to $pager.count}
|
||||
<li><a href="{$pager->getUrl(["page" => $page ])}">{$page}</a></li>
|
||||
{/for}
|
||||
{/if}
|
||||
|
||||
{$pg = $pager.number + 1}
|
||||
{$nextDisabled = $pager.number == $pager.count || ($pager.isInfinite && $pageCount < $pager.onPage)}
|
||||
<li {if $nextDisabled}class="disabled"{/if}>
|
||||
<a {if !$nextDisabled} href="{$pager->getUrl(["page" => $pg ])}"{/if} >»</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="go-to-page">
|
||||
<div class="input-group">
|
||||
<input type="number" min="1" max="{$pager.count}" class="form-control" name="goToPagePage" placeholder="Strana"
|
||||
data-url="{$pager->getUrl(["page" => 1]) nofilter}">
|
||||
<div class="input-group-btn">
|
||||
<input type="button" name="goToPageButton" class="btn btn-primary" value="Přejít">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
32
admin/templates/utils/priceDropdown.tpl
Normal file
32
admin/templates/utils/priceDropdown.tpl
Normal file
@@ -0,0 +1,32 @@
|
||||
{*
|
||||
$fieldName - fieldname prefix
|
||||
$price - price without vat
|
||||
$vat - vat
|
||||
$withoutVat - state of dropdown
|
||||
$currency - currency
|
||||
$fieldAttributes - additional input attributes
|
||||
*}
|
||||
{if !$dropDownIndex}
|
||||
{assign var=$dropDownIndex value=1 scope='global'}
|
||||
{/if}
|
||||
|
||||
<div class="input-group" id="priceBuyVatDropdown-{$dropDownIndex}">
|
||||
<input type="text" class="form-control input-sm" name="{$fieldName}[value]" data-price value="{$price}" {$fieldAttributes}/>
|
||||
<input type="hidden" name="{$fieldName}[with_vat]" data-price-vat value="">
|
||||
<input type="hidden" name="{$fieldName}[vat]" data-vat value="{$vat}">
|
||||
<span class="input-group-addon">{$currency|default:$dbcfg.currency}</span>
|
||||
<div class="input-group-btn" data-dropdown="">
|
||||
<a class="btn btn-primary dropdown-toggle btn-sm" data-toggle="dropdown">
|
||||
<span data-dropdown-state=""></span>
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a data-value="1">{'withTax'|translate:'choice'}</a></li>
|
||||
<li><a data-value="0">{'withoutTax'|translate:'choice'}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
priceVatDropdown($('#priceBuyVatDropdown-{$dropDownIndex}'), {if $withoutVat}0{else}1{/if});
|
||||
</script>
|
||||
29
admin/templates/utils/sentry.tpl
Normal file
29
admin/templates/utils/sentry.tpl
Normal file
@@ -0,0 +1,29 @@
|
||||
{if !isLocalDevelopment()}
|
||||
<script src="/common/static/js/sentry-6.16.1.min.js"></script>
|
||||
|
||||
<script>
|
||||
Sentry.init({
|
||||
dsn: 'https://bfce65214ee44aed9bbf7bb7bddc3113@sentry.wpj.cz/11',
|
||||
denyUrls: [
|
||||
/extensions\//i,
|
||||
/^chrome:\/\//i,
|
||||
/kupshop\.local/i
|
||||
],
|
||||
});
|
||||
|
||||
function getParameterByName(name, url = window.location.href) {
|
||||
name = name.replace(/[\[\]]/g, '\\$&');
|
||||
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
|
||||
results = regex.exec(url);
|
||||
|
||||
if (!results) return null;
|
||||
if (!results[2]) return '';
|
||||
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
||||
}
|
||||
|
||||
Sentry.setTag("user", "{if isSuperuser()}wpjadmin{else}admin{/if}");
|
||||
Sentry.setTag("s", getParameterByName('s'));
|
||||
Sentry.setTag("l", getParameterByName('l'));
|
||||
Sentry.setTag("r", getParameterByName('r'));
|
||||
</script>
|
||||
{/if}
|
||||
31
admin/templates/utils/smartform.tpl
Normal file
31
admin/templates/utils/smartform.tpl
Normal file
@@ -0,0 +1,31 @@
|
||||
{if $dbcfg.smartform == "Y"}
|
||||
<script type="text/javascript" src="https://client.smartform.cz/v2/smartform.js" async></script>
|
||||
<script type="text/javascript">
|
||||
var smartform = smartform || { };
|
||||
smartform.beforeInit = function () {
|
||||
smartform.setClientId('v9QX920R74');
|
||||
}
|
||||
|
||||
var invoice_country = $('[name=\'data[invoice_country]\'], [name=\'data[country]\']').val();
|
||||
var delivery_country = $('[name=\'data[delivery_country]\']').val();
|
||||
|
||||
smartform.afterInit = function () {
|
||||
smartform.getInstance('smartform-instance-invoice').addressControl.setAllSuggestionsEnabled((invoice_country === 'CZ' || invoice_country === 'SK'));
|
||||
smartform.getInstance('smartform-instance-invoice').companyControl.setAllSuggestionsEnabled((invoice_country === 'CZ'));
|
||||
smartform.getInstance('smartform-instance-invoice').addressControl.setCountry(invoice_country);
|
||||
|
||||
smartform.getInstance('smartform-instance-delivery').addressControl.setAllSuggestionsEnabled((delivery_country === 'CZ' || delivery_country === 'SK'));
|
||||
smartform.getInstance('smartform-instance-delivery').companyControl.setAllSuggestionsEnabled((delivery_country === 'CZ'));
|
||||
smartform.getInstance('smartform-instance-delivery').addressControl.setCountry(delivery_country);
|
||||
}
|
||||
|
||||
$('[name*=\'country\']').on('change', function () {
|
||||
var instance = $(this).data('smartform-instance'),
|
||||
country = $(this).val();
|
||||
|
||||
smartform.getInstance('smartform-instance-' + instance).addressControl.setAllSuggestionsEnabled((country === 'CZ' || country === 'SK'));
|
||||
smartform.getInstance('smartform-instance-' + instance).companyControl.setAllSuggestionsEnabled((country === 'CZ'));
|
||||
smartform.getInstance('smartform-instance-' + instance).addressControl.setCountry(country);
|
||||
});
|
||||
</script>
|
||||
{/if}
|
||||
12
admin/templates/utils/tabs.tpl
Normal file
12
admin/templates/utils/tabs.tpl
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="panel box">
|
||||
<ul id="windowTables" class="nav nav-tabs nav-justified">
|
||||
{foreach $tabs as $windowTab}
|
||||
{windowTab id=$windowTab->getTitle() label=$windowTab->getLabel() wpjadmin=$windowTab->isOnlyForWpjAdmin()}
|
||||
{/foreach}
|
||||
</ul>
|
||||
<div class="tab-content boxFlex box">
|
||||
{foreach $tabs as $windowTab}
|
||||
{insertWindowTab windowTab=$windowTab}
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
36
admin/templates/utils/translations.figure.tpl
Normal file
36
admin/templates/utils/translations.figure.tpl
Normal file
@@ -0,0 +1,36 @@
|
||||
{ifmodule TRANSLATIONS}
|
||||
{if !$target}
|
||||
{$uniqueKey = rand()}
|
||||
{$target = "data-translations-figure=\"`$uniqueKey`\""}
|
||||
<div {$target nofilter} class="translations-figure"></div>
|
||||
{$target = "[`$target`]"}
|
||||
{/if}
|
||||
<script type="text/javascript">
|
||||
$(() => {
|
||||
{get_contexts language=1 assign='ctx'}
|
||||
const languages = [{foreach $ctx.language->getAll() as $lang => $_}
|
||||
{if $lang === $ctx.language->getDefaultId()}{continue}{/if}
|
||||
'{$lang}',
|
||||
{/foreach}];
|
||||
|
||||
const figureToggles = new wpj.TranslationsFigure(
|
||||
languages,
|
||||
'{if $inputPrefix}{$inputPrefix nofilter}[translation_figure]{else}data[translation_figure]{/if}',
|
||||
{if $parentFigure}'{$parentFigure}',{/if}
|
||||
);
|
||||
|
||||
{if $figureData}
|
||||
figureToggles.setState({$figureData|json_encode nofilter});
|
||||
{/if}
|
||||
|
||||
figureToggles.render($(`{$target nofilter}`)[0]);
|
||||
{if !$parentFigureInput}
|
||||
{$parentFigureInput = '[name="data[figure]"]'}
|
||||
{/if}
|
||||
|
||||
$(`{$parentFigureInput nofilter}`).on('click', function () {
|
||||
figureToggles.toggleParentFigure();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/ifmodule}
|
||||
7
admin/templates/utils/wysiwyg.tpl
Normal file
7
admin/templates/utils/wysiwyg.tpl
Normal file
@@ -0,0 +1,7 @@
|
||||
{if $index == 0}
|
||||
<script type="text/javascript" src="../ckeditor/ckeditor.js?v1"></script>
|
||||
{/if}
|
||||
|
||||
<script type="text/javascript">
|
||||
activateWysiwyg('{$target nofilter}', '{$type}', { {$config nofilter} }, '{$index}');
|
||||
</script>
|
||||
Reference in New Issue
Block a user