git add stuff
This commit is contained in:
238
simpla/design/html/services_menu.tpl
Normal file
238
simpla/design/html/services_menu.tpl
Normal file
@@ -0,0 +1,238 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=ServicesAdmin">Услуги</a></li>
|
||||
<li class="active"><a href="index.php?module=ServicesMenuAdmin">Меню услуг</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Меню услуг' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
<form id="search" method="get">
|
||||
<input class="search" type="text" name="keyword" value="">
|
||||
<input class="search_button" type="submit" value="">
|
||||
</form>
|
||||
|
||||
<style>
|
||||
.jstree-anchor {
|
||||
display: inline-flex !important;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.jstree-search a {
|
||||
color: inherit;
|
||||
}
|
||||
#list .row {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
#list .icons {
|
||||
padding-right: 20px;
|
||||
}
|
||||
#list .icons a {
|
||||
margin: 0 5px;
|
||||
}
|
||||
#list {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Меню услуг</h1>
|
||||
</div>
|
||||
<!-- Заголовок (The End) -->
|
||||
|
||||
{if $services}
|
||||
<div id="main_list">
|
||||
<div class="mb-3">
|
||||
<a id="expand_all" href="#" class="">Развернуть все</a> /
|
||||
<a id="collapse_all" href="#">Свернуть все</a>
|
||||
</div>
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list" class="pb-3">
|
||||
{function name=services_tree level=0}
|
||||
{if $services}
|
||||
<ul class="list">
|
||||
{foreach $services as $service}
|
||||
<li data-id="{$service->id}" data-parent="{$service->parent}" class="row">
|
||||
<span class="flex-grow-1">
|
||||
<a href="{url module=ServiceAdmin id=$service->id return=$smarty.server.REQUEST_URI}">{$service->name|escape}</a>
|
||||
</span>
|
||||
<span class="icons">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../{$root_url}{$service->url}/"
|
||||
target="_blank"></a>
|
||||
<a class="enable{if $service->visible} a-visible{else} a-invisible{/if}" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</span>
|
||||
{services_tree services=$service->children level=$level+1}
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/function}
|
||||
{services_tree services=$services}
|
||||
</div>
|
||||
<div id="action">
|
||||
<div id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет услуг
|
||||
{/if}
|
||||
|
||||
<div id="right_menu">
|
||||
</div>
|
||||
|
||||
{literal}
|
||||
<link rel="stylesheet" href="design/js/jstree/themes/default/style.css">
|
||||
<script src="design/js/jquery/jquery.min.js"></script>
|
||||
<script src="design/js/jstree/jstree.js"></script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var $tree = $("#list"),
|
||||
$form = $("#list_form");
|
||||
|
||||
function enable_node(icon, node) {
|
||||
var visible = icon.hasClass('a-invisible') ? 1 : 0;
|
||||
$tree.jstree('uncheck_all');
|
||||
$tree.jstree('check_node', node);
|
||||
$form.find('select[name="action"]').val(visible ? 'enable' : 'disable');
|
||||
$form.submit();
|
||||
/*$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'object': 'page',
|
||||
'action': 'enable',
|
||||
'id': node.data.id,
|
||||
'values': {'visible': icon.hasClass('a-invisible') ? 1 : 0},
|
||||
'session_id': '{/literal}{$smarty.session.id}{literal}'
|
||||
},
|
||||
beforeSend: function () {
|
||||
icon.addClass('loading_icon');
|
||||
},
|
||||
success: function (data) {
|
||||
$('a.enable:first', icon.closest(".row")).toggleClass('a-invisible').toggleClass('a-visible');
|
||||
icon.removeClass('loading_icon');
|
||||
}
|
||||
});*/
|
||||
}
|
||||
|
||||
function delete_node(icon, node){
|
||||
$tree.jstree('uncheck_all');
|
||||
$tree.jstree('check_node', node);
|
||||
$form.find('select[name="action"]').val('delete')
|
||||
//$form.find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$form.submit();
|
||||
}
|
||||
|
||||
$tree.jstree({
|
||||
"core": {
|
||||
animation: 0,
|
||||
multiple: false,
|
||||
check_callback: function (operation, node, node_parent, node_position, more) {
|
||||
return operation === 'move_node' ? true : false;
|
||||
},
|
||||
themes: {"theme": "default", "dots": false, "stripes": true, icons: false},
|
||||
},
|
||||
"checkbox": {
|
||||
//visible: false,
|
||||
whole_node: false,
|
||||
tie_selection: false,
|
||||
three_state: false
|
||||
//keep_selected_style : false
|
||||
//cascade: 'down'
|
||||
},
|
||||
"plugins": [
|
||||
"dnd", "checkbox", "wholerow", "search"
|
||||
]
|
||||
}).on("click.jstree", function (e, data) {
|
||||
var $el = $(e.target);
|
||||
if ($el.is('a')) {
|
||||
e.stopPropagation();
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
if($el.hasClass('enable') || $el.hasClass('delete')) {
|
||||
if($el.hasClass('enable') )
|
||||
enable_node($el, $tree.jstree('get_node', e.target));
|
||||
else if($el.hasClass('delete') )
|
||||
delete_node($el, $tree.jstree('get_node', e.target));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}).on("move_node.jstree", function (e, data) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'object': 'page',
|
||||
'action': 'move',
|
||||
'id': data.node.id,
|
||||
'values': {
|
||||
'parent': data.parent === "#" ? 28 : data.parent,
|
||||
'position':data.position
|
||||
},
|
||||
'session_id': '{/literal}{$smarty.session.id}{literal}'
|
||||
},
|
||||
success: function (data) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
}).on("ready.jstree", function (e, data){
|
||||
//$tree.jstree('open_all');
|
||||
$tree.show();
|
||||
$.each(data.instance.get_json(null, {flat: true}), function(index, node) {
|
||||
$tree.jstree('set_id', node.id, node.data.id);
|
||||
});
|
||||
});
|
||||
|
||||
$("#search").submit(function (e) {
|
||||
e.preventDefault();
|
||||
$tree.jstree("search", $("#search .search").val());
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#collapse_all').click(function () {
|
||||
$tree.jstree('close_all');
|
||||
return false;
|
||||
});
|
||||
$('#expand_all').click(function () {
|
||||
$tree.jstree('open_all');
|
||||
return false;
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function () {
|
||||
$tree.jstree('check_all');
|
||||
});
|
||||
|
||||
$form.submit(function (e) {
|
||||
// Подтвердить удаление
|
||||
if ($('select[name="action"]').val() === 'delete' && !confirm("Подтвердите удаление.\n\nВнимание!\nБудут удалены ВСЕ страницы, включая дочерние к выбранным!"))
|
||||
return false;
|
||||
|
||||
var inp = document.createElement("INPUT");
|
||||
inp.name = 'check[]';
|
||||
inp.type = "hidden";
|
||||
$($tree.jstree("get_checked", true)).each(function() {
|
||||
$form.append($(inp).clone().val(this.data.id));
|
||||
});
|
||||
//return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
Reference in New Issue
Block a user