/** * Init comp recomend-tree. * * @param array data * @access public * @return void */ function initRecomendTree(data) { $(".menuTree.recommend").tree( { data: data, initialState: 'active', itemCreator: function($li, item) { $li.append('' + item.title + (item.children ? '' : '') + ''); if(item.active) $li.addClass('active open in'); } }); } /** * Init comp depend-tree. * * @param array data * @access public * @return void */ function initDependTree(data) { $(".menuTree.depend").tree( { data: data, initialState: 'active', itemCreator: function($li, item) { $li.append('' + item.title + (item.children ? '' : '') + ''); if(item.active) $li.addClass('active open in'); } }); } /** * update comp tree after click checkbox-label. * * @param obj objTree * @access public * @return void */ function updatePrivTree(objTree) { $(".menuTree.depend").data('zui.tree').reload(objTree.dependData || [] ); if(objTree.dependData && objTree.dependData.length) { $(".menuTree.depend + .empty-tip").addClass('hidden'); var privCount = 0; $.each(objTree.dependData, function(index, item){if(item.children) privCount += item.children.length;}); $(".menuTree.depend").closest('.priv-panel').find('.panel-title .priv-count').html('(' + privCount + ')'); } else { $(".menuTree.depend + .empty-tip").removeClass('hidden'); $(".menuTree.depend").closest('.priv-panel').find('.panel-title .priv-count').html(''); } $(".menuTree.recommend").data('zui.tree').reload(objTree.recommendData || []); if(objTree.recommendData && objTree.recommendData.length) { $(".menuTree.recommend + .empty-tip").addClass('hidden'); var privCount = 0; $.each(objTree.recommendData, function(index, item){if(item.children) privCount += item.children.length;}); $(".menuTree.recommend").closest('.priv-panel').find('.panel-title .priv-count').html('(' + privCount + ')'); } else { $(".menuTree.recommend + .empty-tip").removeClass('hidden'); $(".menuTree.recommend").closest('.priv-panel').find('.panel-title .priv-count').html(''); } if(!canDeleteRelation) $('.side a.priv-item .icon-close').remove(); } /** * Get relation side. * * @param int $privID * @access public * @return void */ function getSideRelation(privID) { $.get(createLink('group', 'ajaxGetPrivRelations', "privID=" + privID), function(data) { var objTree = {}; if(data) { var relatedPriv = JSON.parse(data); objTree.dependData = relatedPriv.depend; objTree.recommendData = relatedPriv.recommend; } updatePrivTree(objTree); }) } /** * Update depend and recommend privs. * * @param e $e * @access public * @return void */ function updateRelations(e) { if($('.bg-primary-pale').length) $('.bg-primary-pale').removeClass('bg-primary-pale'); $('#privListTable').length > 0 ? $(e.target).closest('tr').addClass('bg-primary-pale') : $(e.target).addClass('bg-primary-pale'); var selectedID = $('#privListTable').length == 0 ? $(e.target).siblings('input:checkbox').data('id') : $(e.target).closest('tr').attr('data-id'); $('.side a#addDependent').attr('href', createLink('group', 'addRelation', "privIdList=" + selectedID + '&type=depend')).removeAttr('disabled'); $('.side a#addRecommendation').attr('href', createLink('group', 'addRelation', "privIdList=" + selectedID + '&type=recommend')).removeAttr('disabled'); if(!$('.side a#addDependent').hasClass('modaled')) $('.side a#addDependent,.side a#addRecommendation').modal().addClass('modaled'); getSideRelation(selectedID); } $(function() { $(".menuTree").on('mouseover', ".priv-item", function() { $(this).addClass('text-primary'); $(this).find('.icon').removeClass('hidden'); }).on('mouseout', '.priv-item', function() { $(this).removeClass('text-primary'); $(this).find('.icon').addClass('hidden'); }); initRecomendTree([]); initDependTree([]); $('li.has-list > ul').addClass("menu-active-primary menu-hover-primary"); $('.sorter-group').sortable( { 'selector': '.group-item', finish: function(e) { var orders = {}; var arrGetItems = $(e.target).parent().data('zui.sortable').getItems(); for(var i = 0; i < arrGetItems.length; i++) { var groupItem = arrGetItems[i]; var privID = $(groupItem.item).find('input').data('id'); orders['orders[' + privID + ']'] = groupItem.order; } $.post(createLink('group', 'ajaxUpdatePrivOrder'), orders).error(function() { bootbox.alert(lang.timeout); }); } }); $('.btn-switch').on('click', function() { $.cookie('managePrivEditType', $(this).data('type'), {expires: config.cookieLife, path: config.webRoot}); location.href = location.href; }); $('.permission-row .checkbox-primary').on('click', 'label', function(e) { e.stopPropagation(); if($(e.target).prop('tagName') == 'LABEL') updateRelations(e); }); $('#privListTable tr').on('click', 'td', function(e) { if(!$(e.target.closest('td')).hasClass('c-actions') && $(e.target).attr('type') != 'checkbox') { e.stopPropagation(); updateRelations(e); } }); $(document).on('click', '.side .priv-item .icon-close', function() { var $this = $(this); var privCount = $this.closest('.menuTree').find('.priv-item[data-has-children="false"]').length; var type = $this.data('type') var privID = $this.data('privid') var relationPriv = $this.data('relationpriv'); $.get(createLink('group', 'deleteRelation', 'type=' + type + '&privID=' + privID + '&relationPriv=' + relationPriv)); $this.closest('.priv-panel').find('.panel-title .priv-count').html('(' + (privCount - 1) + ')'); if($this.closest('ul').find('li').length == 1) $this.closest('ul').closest('li').remove(); $this.closest('li').remove(); }) $(document).on('change', '.checkbox-primary input[type=checkbox], #privListTable input[type=checkbox]', function() { var privIdList = ''; $('.checkbox-primary input[type=checkbox]:checked').each(function() { var privID = $(this).data('id'); if(privID) privIdList += ',' + privID; }); $('#privListTable input[type=checkbox]:checked').each(function() { var privID = $(this).closest('tr').data('id'); if(privID) privIdList += ',' + privID; }); if(privIdList == '') { $('#batchSetDepend,#batchSetRecommend,#batchDeleteDepend,#batchDeleteRecommend').attr('href', '#'); $('#batchActions').addClass('disabled'); return; } privIdList = privIdList.substr(1); $('#batchSetDepend').attr('href', createLink('group', 'addRelation', "privIdList=" + privIdList + '&type=depend')); $('#batchSetRecommend').attr('href', createLink('group', 'addRelation', "privIdList=" + privIdList + '&type=recommend')); $('#batchDeleteDepend').attr('href', createLink('group', 'batchDeleteRelation', "privIdList=" + privIdList + '&type=depend')); $('#batchDeleteRecommend').attr('href', createLink('group', 'batchDeleteRelation', "privIdList=" + privIdList + '&type=recommend')); $('#batchActions').removeClass('disabled'); }) });