var melisSearchPageTree = (function($, window) {
// cache DOM
var $body = $('body');
$body.on("click", "#leftSearchTreeView", function(e){
startTreeSearch();
});
// page lock icon locked/unlocked drag and drop of fancytree node
$body.on("click", "#leftLockDragDropTreeView", function() {
var $this = $(this),
$resetTree = $("#leftResetTreeView"),
$pageLock = $this.find(".fa.fa-lock"),
$pageUnlock = $this.find(".fa.fa-unlock");
// trigger refresh
$resetTree.trigger("click");
// toggle of lock and unlock icon
if ( $pageLock.length ) {
$pageLock.removeClass("fa-lock").addClass("fa-unlock");
$this.attr("title", translations.tr_meliscms_menu_treeview_page_unlock);
lockDragDropCmsMenuTreeView();
}
if ( $pageUnlock.length ) {
$pageUnlock.removeClass("fa-unlock").addClass("fa-lock");
$this.attr("title", translations.tr_meliscms_menu_treeview_page_lock);
}
});
// lock on drag and drop treeview, automatic locked after 5 minutes
function lockDragDropCmsMenuTreeView() {
var toLockTime = 300000, // 300000 5 minutes, 60000 1 minute
intervalTime = 30000; // 30 seconds
var checkUnlock = setInterval(function() {
var $lockDragDropTreeView = $("#leftLockDragDropTreeView"),
$pageUnlock = $lockDragDropTreeView.find(".fa.fa-unlock");
if ( $pageUnlock.length ) {
setTimeout(function() {
$pageUnlock.removeClass("fa-unlock").addClass("fa-lock");
$lockDragDropTreeView.attr("title", translations.tr_meliscms_menu_treeview_page_lock);
}, toLockTime);
clearInterval( checkUnlock );
}
}, intervalTime);
}
// Filter Search
$(document).on("keyup", "input[name=left_tree_search]", function(event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if ( keycode == '13' ) {
startTreeSearch();
}
});
$body.on("click", "#leftResetTreeView", function(e) {
$("input[name=left_tree_search]").val('');
$("#id-mod-menu-dynatree").fancytree("destroy");
mainTree();
});
function startTreeSearch() {
var match = $.trim( $("input[name=left_tree_search]").val() ),
tree = $("#id-mod-menu-dynatree").fancytree("getTree"),
filterFunc = tree.filterNodes;
if ( match.length ) {
var opts = {},
tmp = '';
$(".meliscms-search-box.sidebar-treeview-search").append("<div class='melis-overlay-loading'></div>");
tree.clearFilter();
$("#id-mod-menu-dynatree").fancytree("getRootNode").visit(function(node){
if(node.isExpanded() ) {
node.resetLazy();
}
});
// disable searchbar while searchign
$("input[name=left_tree_search]").prop('disabled', true);
var searchContainer = $("input[name=left_tree_search]").closest(".meliscms-search-box");
$.ajax({
type : 'POST',
url : 'melis/MelisCms/Page/searchTreePages',
data : {name: 'value', value: match},
dataType : 'json',
encode : true
}).done(function(data) {
if(!$.trim(data)) {
searchContainer.append("<div class='melis-search-overlay'>"+translations.tr_meliscms_form_search_not_found+"</div>").hide().fadeIn(600);
setTimeout(function() {
$(".melis-search-overlay").fadeOut(600, function() {
$(this).remove();
});
$("input[name=left_tree_search]").prop('disabled', false);
$("input[name=left_tree_search]").focus();
$(".meliscms-search-box.sidebar-treeview-search .melis-overlay-loading").remove();
}, 1000);
} else {
var arr = $.map(data, function(el) { return el });
tree.loadKeyPath(arr, function(node, status) {
switch( status ) {
case "loaded":
node.makeVisible();
break;
case "ok":
node.makeVisible();
break;
}
filterFunc.call(tree, match, opts);
}).done(function(){
$("input[name=left_tree_search]").prop('disabled', false);
$(".meliscms-search-box.sidebar-treeview-search .melis-overlay-loading").remove();
$("input[name=left_tree_search]").focus();
});
}
}).fail(function(xhr, textStatus, errorThrown) {
alert( translations.tr_meliscore_error_message );
});
}
}
var $leftLockDragDropTreeView = $("#leftLockDragDropTreeView");
$leftLockDragDropTreeView.attr("title", translations.tr_meliscms_menu_treeview_page_lock);
})(jQuery, window);
|