123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- var navigationMenuEdited = false;
- //CHARGEMENT DE LA PAGE SETTING
- function init_setting_global_navigation(){
- window.onbeforeunload = function(e){
- if(!navigationMenuEdited) return e = null;
- return "Certaines modifications sur le menu n'ont pas été sauvgardées.\nÊtes-vous sûr de vouloir quitter la page ?";
- };
- navigation_menu_setting_search();
- }
- function navigation_menu_setting_search(){
- navigation_tree_search();
- $( ".navigation-tree-list" ).sortable({
- handle: ".navigation-item-header",
- cancel: ".not-editable",
- helper: "clone",
- opacity: 0.8,
- distance : 15,
- grid: [ 50, 1 ],
- update : function(){
- navigationMenuEdited = true;
- },
- start: function(e,ui) {
- draggedItem = $(ui.item[0]);
- if(draggedItem.hasClass('navigation-line-child')) return;
- children = [];
- var borderReached = false;
- $.each(draggedItem.nextAll('li.navigation-line'), function(i, childLine){
- var line = $(childLine);
- if(borderReached || !line.hasClass('navigation-line-child')) {
- borderReached = true;
- return;
- }
- children.push(line);
- line.addClass('hidden');
- });
- },
- sort: function(event,ui){
- var leftLimit = ui.item.hasClass('navigation-line-child') ? -20 : 15;
- if(ui.position.left < leftLimit){
- ui.helper.css('left',leftLimit+'px');
- }
- if(ui.position.left > 65){
- left = 65;
- ui.helper.css('left',left+'px');
- }
- if(ui.item.index()==1){
- ui.helper.css('left',leftLimit+'px');
- }
- },
- stop: function(event,ui){
- if(ui.position.left>15){
- if(!ui.item.hasClass('navigation-line-child')) navigationMenuEdited = true;
- ui.item.addClass('navigation-line-child');
- }else{
- if(ui.item.hasClass('navigation-line-child')) navigationMenuEdited = true;
- ui.item.removeClass('navigation-line-child');
- }
- if(!children.length) return;
- $.each(children.reverse(), function(i, row){
- $(row).insertAfter(draggedItem).removeClass('hidden');
- });
- },
- // placeholder: "navigation-item-placeholder",
- placeholder: {
- element: function(clone, ui) {
- var placeholderRow = $('<li class="navigation-item-placeholder"></li>');
- /** Lié à la feature de drag&drop de plusieurs lignes à la fois **/
- if(!clone.hasClass('navigation-line-child')){
- var rowNb = 1;
- var borderReached = false;
- $.each(clone.nextAll('li.navigation-line'), function(i, childLine){
- var line = $(childLine);
- if(borderReached || !line.hasClass('navigation-line-child')) {
- borderReached = true;
- return;
- }
- rowNb += 1
- });
- placeholderRow.css({
- height: 'calc(44px * '+rowNb+')',
- });
- }
- return placeholderRow;
- },
- update: function() {
- return;
- }
- }
- });
- $(".navigation-tree > ul").disableSelection();
- }
- /** Éditeur d'arborescence **/
- //Enregistrement des configurations
- function navigation_setting_save(){
- if(isProcessing) return;
- var items = [];
- var lastParentIndex = 0;
- $('.navigation-line:not(.hidden)').each(function(i,element){
- var line = $(element);
- var item = {
- id: line.attr('data-id'),
- label: line.find('.item-label').val(),
- visibility: line.find('input.item-visibility').val(),
- url: line.find('.item-url').val(),
- icon: line.find('.item-icon').val(),
- target: line.find('[name="item-target"]:checked').val(),
- };
- if(line.hasClass('navigation-line-child')){
- items[lastParentIndex].childs.push(item);
- }else{
- lastParentIndex = items.length;
- item.childs = [];
- items.push(item);
- }
- });
- isProcessing = true;
- $.action({
- action: 'navigation_setting_save',
- fields: $('#navigation-setting-form').toJson(),
- items: items,
- firm: $('#navigation-firm').val(),
- menu: $('#navigation-menu').val()
- },function(){
- isProcessing = false;
- navigationMenuEdited = false;
- $.message('success','Enregistré');
- navigation_tree_search();
- $('#navbarCollapse').load(document.URL+' #navbarCollapse > *');
- },function(){
- isProcessing = false;
- });
- }
- function navigation_tree_search(callback){
- var menu = $('#navigation-menu').val();
- if(!menu || menu=='' || isProcessing) return;
- isProcessing = true;
- $.action({
- action: 'navigation_tree_search',
- firm: $('#navigation-firm').val(),
- menu: menu
- },function(r){
- $('.navigation-tree > ul > li:visible').remove();
- for(var key in r.rows){
- var line = r.rows[key];
- navigation_tree_add(line);
- if(line.childs){
- for(var key2 in line.childs){
- navigation_tree_add(line.childs[key2]);
- }
- }
- }
- isProcessing = false;
- },function(r){
- isProcessing = false;
- });
- }
- function navigation_tree_new(element){
- var data = {
- label: 'Sans titre',
- icon: 'far fa-bookmark',
- url: '',
- shortcut: $('#navigation-menu>option:selected').attr('data-slug') == 'shortcut-menu',
- target: {slug:'redirect'}
- };
- if(element){
- data = $.extend(data, $(element).closest('.list-group-item').data());
- $.message('info','Lien "'+data.label+'" ajouté au menu');
- }
- var line = navigation_tree_add(data);
- navigation_tree_toggle(line.find('.navigation-item-toggle'));
- }
- function navigation_tree_add(data){
- var tpl = $('.navigation-line:hidden').get(0).outerHTML;
- if(data.visibility==null) data.visibility = $('.item-visibility',tpl).attr('data-default');
- tpl = tpl.replace('data-type="user-tpl"','data-type="user"');
- var line = $(Mustache.render(tpl,data));
- line.removeClass('hidden');
- $('.navigation-tree > ul').append(line);
- line.find('[name="item-target"][value="'+data.target.slug+'"]').prop('checked',true);
- line.off('keyup','.item-label').on('keyup','.item-label', function(){
- navigationMenuEdited = true;
- line.find('.navigation-item-label').text($(this).val());
- });
- line.off('keyup','.item-url').on('keyup','.item-url', function(){
- navigationMenuEdited = true;
- line.find('.navigation-item-url').text($(this).val());
- });
- line.off('click','[name="item-target"]').on('click','[name="item-target"]', function(){
- navigationMenuEdited = true;
- line.find('.navigation-item-type span').text($(this).parent().text());
- });
- line.off('change','.item-icon').on('change','.item-icon', function(){
- navigationMenuEdited = true;
- line.find('.navigation-item-icon i').attr('class',$(this).val());
- });
- return line;
- }
- function navigation_tree_toggle(element){
- var toggler = $(element).find('i');
- var line = toggler.closest('.navigation-line');
- toggler.toggleClass('fa-angle-right fa-angle-down');
- $('.navigation-item-form',line).toggleClass('hidden');
- init_components(line);
- }
- function navigation_tree_remove(element){
- if(!confirm('Êtes-vous sûr de vouloir supprimer cet élement de menu ?')) return;
- navigationMenuEdited = true;
- $(element).closest('.navigation-line').remove()
- }
|