PHP Classes

File: public/js/tools/mini-template/menu-manager-tool.js

Recommend this page to a friend!
  Classes of Fabrice Fesch   Melis CMS   public/js/tools/mini-template/menu-manager-tool.js   Download  
File: public/js/tools/mini-template/menu-manager-tool.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Melis CMS
Content management system that provides its tools
Author: By
Last change:
Date: 1 year ago
Size: 33,452 bytes
 

Contents

Class file image Download
$(function () { var $body = $('body'); var siteSelect = '#mini-template-menu-manager-site-select'; var languageSelect = '.mini-template-menu-manager-lang-select li a'; var form = '#id_menu_manager_tool_site'; var tree = '#mini-template-category-tree'; var isInitialized = false; var selectedNode = ''; var locale = melisLangId; $body.on('click', '.mtpl-menu-plugins-tab', function () { $('.melis-mini-template-menu-manager-table-refresh').trigger('click'); }); // how to get selected node // $(tree).jstree().get_selected(true)[0].text $body.on('click', '.melis-mini-template-menu-manager-table-refresh', function () { melisHelper.zoneReload( 'id_meliscms_mini_template_menu_manager_tool_add_category_body_plugins_table', 'meliscms_mini_template_menu_manager_tool_add_category_body_plugins_table', { formType: 'edit' } ); }) $body.on('click', '.add-m-tpl-category', function () { $('#id_meliscms_mini_template_menu_manager_tool_add_category_container').removeClass('hidden'); melisHelper.zoneReload( 'id_meliscms_mini_template_menu_manager_tool_add_category_container', 'meliscms_mini_template_menu_manager_tool_add_category_container', { isHidden: false }, function () { $('#id_meliscms_mini_template_menu_manager_tool_header a').click(); } ); }); $body.on('click', '.add-m-tpl-plugin', function () { melisHelper.tabOpen(translations.tr_meliscms_mini_template_manager_tool, 'fa fa-tasks', 'id_meliscms_mini_template_manager_tool', 'meliscms_mini_template_manager_tool'); var alreadyOpen = $("body #melis-id-nav-bar-tabs li a.tab-element[data-id='id_meliscms_mini_template_manager_tool']"); var checkTab = setInterval(function() { if (alreadyOpen.length) { $(".close.close-tab[data-id='new_template_id_meliscms_mini_template_manager_tool_add']").click(); melisHelper.tabOpen( translations.tr_meliscms_mini_template_manager_tool_header_add_btn, 'fa fa-list-alt', 'new_template_id_meliscms_mini_template_manager_tool_add', 'meliscms_mini_template_manager_tool_add', { templateName: 'new_template', module: $(siteSelect).find('option:selected').val() }, 'id_meliscms_mini_template_manager_tool' ); clearInterval(checkTab); } }, 500); }); $body.on('click', '.close', function () { if ($(this).data('id') == 'id_meliscms_mini_template_menu_manager_tool') { isInitialized = false; locale = melisLangId; } }); $body.on('click', '#close-all-tab', function () { isInitialized = false; }); $body.on('change', siteSelect, function () { var value = $(this).val(); $("#mini-template-tree-no-data").css("display","none"); if (! $('#id_meliscms_mini_template_menu_manager_tool_add_category_container').hasClass('hidden')) { melisHelper.zoneReload( 'id_meliscms_mini_template_menu_manager_tool_add_category_container', 'meliscms_mini_template_menu_manager_tool_add_category_container', {}, function () {} ); } if (value != 0) { if (isInitialized) { $(tree).jstree(true).settings.core.data.data = [ {name: 'langlocale', value: $("#mini-template-category-tree").data('langlocale')}, {name: 'siteId', value: $(siteSelect).find('option:selected').data('id')} ]; $(tree).jstree(true).refresh(); } else { initCmsMiniTemplateCategoryTree(); isInitialized = true; } } else { $(tree).jstree(true).destroy(); isInitialized = false; $('.add-m-tpl-category').attr('disabled', 'disabled'); $('.add-m-tpl-category').attr('title', translations.tr_meliscms_mini_template_menu_manager_select_site_first_btn_title); $('.add-m-tpl-plugin').attr('disabled', 'disabled'); $('.add-m-tpl-plugin').attr('title', translations.tr_meliscms_mini_template_menu_manager_select_site_first_btn_title); $('.mini-template-menu-manager-lang').find('a').addClass('disabled'); $('.mini-template-menu-manager-lang').find('a').attr('title', translations.tr_meliscms_mini_template_menu_manager_select_site_first_btn_title); } }); $body.on('click', languageSelect, function () { var $this = $(this); var text = $this.text(); // var locale = $this.data('locale'); locale = $this.data('locale'); $('.mini-template-menu-manager-lang a span.filter-key').text(text); $(tree).data('langlocale', locale); $(tree).jstree(true).settings.core.data.data = [{name : "langlocale", value: locale}, {name:"module", value : $(siteSelect).val()}]; $(tree).jstree(true).refresh(); }); $body.on('click', '#id_meliscms_mini_template_menu_manager_save_btn', function () { var status = $('#mtpl-category-status').find('.switch-on'); if (status.length) { status = 1; } else { status = 0; } var formData = $("#id_meliscms_mini_template_menu_manager_tool_add_category_body_properties_form form").serializeArray(); formData.push({ name: 'site_id', value: $(siteSelect).find('option:selected').data('id') }); formData.push({ name: 'cat_id', value: $('#menu-manager-category-id').data('id') }); formData.push({ name: 'status', value: status }); formData.push({ name: 'status', value: status }); formData.push({ name: 'currentLocale', value: melisLangId }); melisCoreTool.pending('#id_meliscms_mini_template_menu_manager_save_btn'); $.ajax({ type: 'POST', url: '/melis/MelisCms/MiniTemplateMenuManager/saveCategory', data: formData }).done(function (data) { if (data.success) { $(tree).jstree(true).refresh(); melisHelper.zoneReload( 'id_meliscms_mini_template_menu_manager_tool_add_category_container', 'meliscms_mini_template_menu_manager_tool_add_category_container', { isHidden: false, id: data.id + '-' + data.categoryName, formType: 'edit', status: status }, function () { if ($('#id_meliscms_mini_template_menu_manager_tool_header a').hasClass('collapsed')) $('#id_meliscms_mini_template_menu_manager_tool_header a').click(); } ); melisHelper.melisOkNotification(data.textTitle, data.textMessage); } else { var errors = {}; $.each(data.errors, function (key, value) { if (value.error === translations.tr_meliscms_mini_template_error_category_atleast_one_provided) { errors[key] = value; return false; } else { errors[key] = value; } }); melisHelper.melisKoNotification(translations.tr_meliscms_mini_template_menu_manager_save_category, '', errors); var formData = $("#id_meliscms_mini_template_menu_manager_tool_add_category_body_properties_form form").serializeArray(); var form_id = '_id_menu_manager_tool_site_add_category'; var tab = '-mini-template-menu-manager-category'; if (typeof $('#menu-manager-category-id').data('id') !== 'undefined') form_id = '_id_menu_manager_tool_site_update_category'; $.each(formData, function (key, value) { var eSuccess = 1; var input_lang_id = value.name.split('_', 1); var form_errors = {}; var count = 0; $.each(data.errors, function (eKey, eValue) { if (value.name == eKey) { eSuccess = 0; form_errors[input_lang_id + '_category_name'] = eValue; $('a[href="#' + input_lang_id + tab + '"] span.mm-lang-name').addClass('mm-tab-error-color'); count++; } }); if (count == 0) { $('a[href="#' + input_lang_id + tab + '"] span.mm-lang-name').removeClass('mm-tab-error-color'); } melisCoreTool.highlightErrors(eSuccess, form_errors, input_lang_id + form_id); }); } melisCore.flashMessenger(); melisCoreTool.done('#id_meliscms_mini_template_menu_manager_save_btn'); }).fail(function (data) { melisCoreTool.done('#id_meliscms_mini_template_menu_manager_save_btn'); }); }); $body.on('click', '.menu-mini-template-tool-edit-btn', function() { var row_data = $('#tableMiniTemplateMenuManagerPlugins').DataTable().row('#'+$(this).closest('tr').attr('id')).data(); if ($(this).closest('tr').hasClass('child')) { row_data = $('#tableMiniTemplateMenuManagerPlugins').DataTable().row('#'+$(this).closest('tr').prev().attr('id')).data(); } var templateName = row_data.DT_RowAttr.templateName; var module = row_data.DT_RowAttr.module; var thumbnail = row_data.DT_RowAttr.thumbnail; melisHelper.tabOpen(translations.tr_meliscms_mini_template_manager_tool, 'fa fa-tasks', 'id_meliscms_mini_template_manager_tool', 'meliscms_mini_template_manager_tool'); var alreadyOpen = $("body #melis-id-nav-bar-tabs li a.tab-element[data-id='id_meliscms_mini_template_manager_tool']"); var checkTab = setInterval(function() { if (alreadyOpen.length) { melisHelper.tabOpen( 'Tpl ' + templateName, 'fa fa-tasks', templateName + '_id_meliscms_mini_template_manager_tool_add', 'meliscms_mini_template_manager_tool_add', { module: module, templateName: templateName, thumbnail: thumbnail }, 'id_meliscms_mini_template_manager_tool' ); clearInterval(checkTab); } }, 500); }); $body.on('click', '.menu-mini-template-tool-delete-btn', function() { var row_data = $('#tableMiniTemplateMenuManagerPlugins').DataTable().row('#'+$(this).closest('tr').attr('id')).data(); if ($(this).closest('tr').hasClass('child')) { row_data = $('#tableMiniTemplateMenuManagerPlugins').DataTable().row('#' + $(this).closest('tr').prev().attr('id')).data(); } var templateName = row_data.DT_RowAttr.templateName; melisCoreTool.confirm( translations.tr_meliscms_mini_template_manager_tool_delete_modal_confirm, translations.tr_meliscms_mini_template_manager_tool_delete_modal_cancel, translations.tr_meliscms_mini_template_menu_manager_remove_plugin, translations.tr_meliscms_mini_template_menu_manager_remove_plugin_text, function () { $.ajax({ type: 'POST', url: '/melis/MelisCms/MiniTemplateMenuManager/removePluginFromCategory', data: { template: templateName, siteId: $(siteSelect).find('option:selected').data('id') }, }).done(function (response) { if (response.success) { $body.find('.melis-mini-template-menu-manager-table-refresh').trigger('click'); if ($body.find('#id_meliscms_mini_template_menu_manager_tool').length) { $(tree).jstree(true).refresh(); } $('li[data-tool-id="' + templateName + '_id_meliscms_mini_template_manager_tool_add"]').find('a.close').trigger('click'); } else { melisHelper.melisKoNotification( translations.tr_meliscms_mini_template_manager_tool_delete_modal_title, translations.tr_meliscms_mini_template_delete_fail ); } }).fail(function (data) { }); } ); }); function initCmsMiniTemplateCategoryTree () { var current_level; var query = 'langlocale=' + $("#mini-template-category-tree").data('langlocale'); query = query + ' &siteId=' + $(siteSelect).find('option:selected').data('id'); $body.on("click", "#mini-template-category-tree", function(evt) { $("#mini-template-category-tree ul li div").removeClass("jstree-wholerow-clicked"); evt.stopPropagation(); evt.preventDefault(); }); $(tree) .on('#mini-template-category-tree changed.jstree', function (e, data) { }) .on('#mini-template-category-tree refresh.jstree', function (e, data) { if ($("#mini-template-category-tree .jstree-container-ul").children("li").length === 0) { $("#mini-template-tree-no-data").css("display","inline-block"); } else { $("#mini-template-tree-no-data").css("display","none"); } }) .on('#mini-template-category-tree loading.jstree', function (e, data) {}) .on('#mini-template-category-tree loaded.jstree', function (e, data) { if ($("#mini-template-category-tree .jstree-container-ul").children("li").length === 0) { $("#mini-template-tree-no-data").css("display","inline-block"); } else { $("#mini-template-tree-no-data").css("display","none"); } $('.add-m-tpl-category').removeAttr('disabled'); $('.add-m-tpl-category').attr('title', ''); $('.add-m-tpl-plugin').removeAttr('disabled'); $('.add-m-tpl-plugin').attr('title', ''); $('.mini-template-menu-manager-lang').find('a').removeClass('disabled'); $('.mini-template-menu-manager-lang').find('a').attr('title', ''); }) .on('#mini-template-category-tree ready.jstree', function (e, data) {}) .on('#mini-template-category-tree load_node.jstree', function (e, data) {}) .on('#mini-template-category-tree open_node.jstree', function (e, data) {}) .on('#mini-template-category-tree after_open.jstree', function (e, data) {}) .on('#mini-template-category-tree dblclick.jstree', function (e, data) { var selected = $(tree).jstree().get_selected(true)[0]; if (selected.type == 'category') { $('#id_meliscms_mini_template_menu_manager_tool_add_category_container').removeClass('hidden'); melisHelper.zoneReload( 'id_meliscms_mini_template_menu_manager_tool_add_category_container', 'meliscms_mini_template_menu_manager_tool_add_category_container', { isHidden: false, id: selected.id, formType: 'edit', status: selected.original.status }, function () { $('#id_meliscms_mini_template_menu_manager_tool_header a').click(); } ); } else if (selected.type == 'mini-template') { melisHelper.tabOpen(translations.tr_meliscms_mini_template_manager_tool, 'fa fa-tasks', 'id_meliscms_mini_template_manager_tool', 'meliscms_mini_template_manager_tool'); var alreadyOpen = $("body #melis-id-nav-bar-tabs li a.tab-element[data-id='id_meliscms_mini_template_manager_tool']"); var checkTab = setInterval(function() { if (alreadyOpen.length) { melisHelper.tabOpen( 'Tpl ' + selected.original.id, 'fa fa-tasks', selected.original.id + '_id_meliscms_mini_template_manager_tool_add', 'meliscms_mini_template_manager_tool_add', { module: selected.original.module, templateName: selected.original.id, thumbnail: selected.original.imgSource }, 'id_meliscms_mini_template_manager_tool' ); clearInterval(checkTab); } }, 500); } }) .on('#mini-template-category-tree move_node.jstree', function (e, data) { var tree_data = $(tree).jstree(true).get_json('#', {flat:true}); $.ajax({ type: 'POST', url: '/melis/MelisCms/MiniTemplateMenuManager/saveTree', data: { tree_data: JSON.stringify(tree_data), site_id: $(siteSelect).find('option:selected').data('id') }, }).done(function (data) { if (data.success) { $('.melis-mini-template-menu-manager-table-refresh').trigger('click'); } else { } }).fail(function (data) { }); }) .on('#mini-template-category-tree select_node.jstree', function (e, data) { // if (selectedNode === data.node.text) { // $(tree).jstree().deselect_all(); // selectedNode = ''; // } else { // selectedNode = data.node.text; // } }) .jstree({ "contextmenu" : { "items" : function (node) { var menu = { 'add_category_template' : { "label" : translations.tr_meliscms_mini_template_menu_manager_tool_jstree_add_minitemplate, "icon" : "fa fa-plus", "action" : function (obj) { melisHelper.tabOpen(translations.tr_meliscms_mini_template_manager_tool, 'fa fa-tasks', 'id_meliscms_mini_template_manager_tool', 'meliscms_mini_template_manager_tool'); var alreadyOpen = $("body #melis-id-nav-bar-tabs li a.tab-element[data-id='id_meliscms_mini_template_manager_tool']"); var checkTab = setInterval(function() { if (alreadyOpen.length) { $(".close.close-tab[data-id='new_template_id_meliscms_mini_template_manager_tool_add']").click(); melisHelper.tabOpen( translations.tr_meliscms_mini_template_manager_tool_header_add_btn, 'fa fa-tasks', 'new_template_id_meliscms_mini_template_manager_tool_add', 'meliscms_mini_template_manager_tool_add', { templateName: 'new_template', siteId: $(siteSelect).find('option:selected').data('id'), module: $(siteSelect).find('option:selected').val(), categoryId: node.original.categoryId }, 'id_meliscms_mini_template_manager_tool' ); clearInterval(checkTab); } }, 500); } }, "edit_category" : { "label" : translations.tr_meliscms_mini_template_menu_manager_tool_jstree_edit_category, "icon" : "fa fa-edit", "action" : function (obj) { var parentId = parseInt(node.id), position = node.children.length + 1; $('#id_meliscms_mini_template_menu_manager_tool_add_category_container').removeClass('hidden'); melisHelper.zoneReload( 'id_meliscms_mini_template_menu_manager_tool_add_category_container', 'meliscms_mini_template_menu_manager_tool_add_category_container', { isHidden: false, id: node.id, formType: 'edit', status: node.original.status }, function () { $('#id_meliscms_mini_template_menu_manager_tool_header a').click(); } ); } }, "delete_category" : { "label" : translations.tr_meliscms_mini_template_menu_manager_tool_jstree_delete_category, "icon" : "fa fa-trash-o", "action" : function (obj) { if (node.children.length == 0) { melisCoreTool.confirm( translations.tr_meliscms_mini_template_manager_tool_delete_modal_confirm, translations.tr_meliscms_mini_template_manager_tool_delete_modal_cancel, translations.tr_meliscms_mini_template_menu_manager_tool_jstree_delete_category_title, translations.tr_meliscms_mini_template_menu_manager_tool_jstree_delete_category_text, function () { $.ajax({ type: 'POST', url: '/melis/MelisCms/MiniTemplateMenuManager/deleteCategory', data: { id: node.id }, }).done(function (data) { if (data.success) { $(tree).jstree(true).refresh(); melisHelper.melisOkNotification(data.textTitle, data.textMessage); } else { melisHelper.melisKoNotification( translations.tr_meliscms_mini_template_menu_manager_tool_jstree_delete_category_title, translations.tr_meliscms_mini_template_menu_manager_category_delete_fail ); } melisCore.flashMessenger(); }).fail(function (data) { }); } ); } else { melisHelper.melisKoNotification( translations.tr_meliscms_mini_template_menu_manager_tool_jstree_delete_category_title, translations.tr_meliscms_mini_template_menu_manager_tool_jstree_delete_category_error_children, [] ); } } }, 'edit_plugin': { "label" : translations.tr_meliscms_mini_template_menu_manager_tool_jstree_edit_minitemplate, "icon" : "fa fa-edit", "action" : function (obj) { melisHelper.tabOpen(translations.tr_meliscms_mini_template_manager_tool, 'fa fa-tasks', 'id_meliscms_mini_template_manager_tool', 'meliscms_mini_template_manager_tool'); var alreadyOpen = $("body #melis-id-nav-bar-tabs li a.tab-element[data-id='id_meliscms_mini_template_manager_tool']"); var checkTab = setInterval(function() { if (alreadyOpen.length) { melisHelper.tabOpen( 'Tpl ' + node.original.id, 'fa fa-tasks', node.original.id + '_id_meliscms_mini_template_manager_tool_add', 'meliscms_mini_template_manager_tool_add', { module: node.original.module, templateName: node.original.id, thumbnail: node.original.imgSource }, 'id_meliscms_mini_template_manager_tool' ); clearInterval(checkTab); } }, 500); } }, }; if (node.original.type == 'category') { delete menu.edit_plugin; delete menu.delete_plugin; } if (node.original.type == 'mini-template') { delete menu.edit_category; delete menu.delete_category; delete menu.add_category_template; } return menu; } }, "core" : { "multiple": false, "check_callback": function (operation, node, node_parent, node_position, more) { // if ( // more // && more.dnd // && (operation === 'move_node' || operation === 'copy_node') // && node.type == 'mini-template' // && node_parent.id == '#' // ) { // return false; // } // if ( // more // && more.dnd // && (operation === 'move_node' || operation === 'copy_node') // && node.type == 'category' // && $(tree).jstree(true).get_node( // $(tree).jstree(true).get_node('#').children[node_position] // ).type == 'mini-template' // ){ // return false; // } // return true; }, "animation" : 500, "themes": { "name": "proton", "responsive": false }, "dblclick_toggle" : false, "data" : { "cache" : false, "url" : "/melis/MelisCms/MiniTemplateMenuManager/getTree?" + query, }, 'strings': { 'Loading ...' : translations.tr_meliscms_mini_template_menu_manager_js_tree_loading }, }, "types" : { "#" : { "valid_children" : ["mini-template", "category"] }, "category" : { "valid_children" : ["mini-template"] }, "mini-template" : { "valid_children" : ["none"] }, }, "plugins": [ "contextmenu", // plugin makes it possible to right click nodes and shows a list of configurable actions in a menu. "changed", // Plugins for Change and Click Event "dnd", // Plugins for Drag and Drop "search", // Plugins for Search of the Node(s) of the Tree View "types", // Plugins for Customizing the Nodes ] }); } }); window.initMiniTemplateMenuManagerPluginTables = function (data, tableSettings) { data.id = $('#menu-manager-category-id').data('id'); $('#tableMiniTemplateMenuManagerPlugins').on('row-reorder.dt', function ( e, diff, edit ) { var result = 'Reorder started on row: '+edit.triggerRow.data()[1]+'<br>'; for ( var i=0, ien=diff.length ; i<ien ; i++ ) { var rowData = $('#tableMiniTemplateMenuManagerPlugins').DataTable().row(diff[i].node).data(); result += rowData[1]+' updated to be in position '+ diff[i].newData+' (was '+diff[i].oldData+')<br>'; } if (!$.isEmptyObject(diff) ) { // var form_data = $('#tableMiniTemplateMenuManagerPlugins').DataTable().rows().data(); var dataString = new Array, prdNodes = new Array; $.each(diff, function() { prdNodes.push(this.node.id+'-'+this.newPosition); }); dataString.push({ name : "data", value: prdNodes.join() }); dataString = $.param(dataString); $.ajax({ type : "POST", url : "/melis/MelisCms/MiniTemplateMenuManager/reorderMiniTemplates", data : dataString, dataType : "json", encode : true, beforeSend: function () { $('#tableMiniTemplateMenuManagerPlugins').addClass('loading-changes'); $('#tableMiniTemplateMenuManagerPlugins').DataTable().rowReorder.disable(); } }).done(function(data) { $('#mini-template-category-tree').jstree(true).refresh(); $('#tableMiniTemplateMenuManagerPlugins').DataTable().rowReorder.enable(); $('#tableMiniTemplateMenuManagerPlugins').removeClass('loading-changes'); }).fail(function(){ }); } }); };