| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- /**
- * 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('<a class="priv-item" data-has-children="' + (item.children ? !!item.children.length : false) + '" href="#" title="' + item.title + '">' + item.title + (item.children ? '' : '<i class="icon icon-close hidden" data-type="recommend" data-privid=' + item.privID + ' data-relationpriv=' + item.relationPriv + '></i>') + '</a>');
- 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('<a class="priv-item" data-has-children="' + (item.children ? !!item.children.length : false) + '" href="#" title="' + item.title + '">' + item.title + (item.children ? '' : '<i class="icon icon-close hidden" data-type="depend" data-privid=' + item.privID + ' data-relationpriv=' + item.relationPriv + '></i>') + '</a>');
- 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');
- })
- });
|