Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/core/groups.js
Строк: 294
<?php
/**
 * Groups tree
 */

!function(global, $, _) {
    
'use strict';

    function 
ConcreteGroupsTree($elementoptions) {
        var 
my this;
        
options options || {};
        
options = $.extend({
            
treeIDfalse,
            
minimumExpandLevel2,
            
selectNodeByKey: [],
            
enableDragAndDroptrue,
            
onSelectfalse// This is when you click a checkbox or radio button
            
onClickfalse// this is when you click a group title when not in chooseNodeInForm mode.
            
readOnlyfalse,
            
removeNodesByID: [],
            
chooseNodeInFormfalse // false (no ability to choose a node as a form element), "single" uses radio, "multiple" = checkbox.
        
}, options);
        
my.options options;
        
my.$element $element;
        
my._menuTemplate _.template(ConcreteGroupsTree.getMenu());
        
my.setupTree();
        
my.setupTreeEvents();
        return 
my.$element;
    }

    
ConcreteGroupsTree.prototype = {

        
dragRequest: function(sourceNodenodehitMode) {
            var 
treeNodeParentID node.parent.data.key;
            if (
hitMode == 'over') {
                
treeNodeParentID node.data.key;
            }
            
jQuery.fn.dialog.showLoader();
            var 
params = [{'name''sourceTreeNodeID''value'sourceNode.data.key}, {'name''treeNodeParentID''value'treeNodeParentID}];
            var 
childNodes node.parent.getChildren();
            if (
childNodes) {
                for (var 
0childNodes.lengthi++) {
                    var 
childNode childNodes[i];
                    
params.push({'name''treeNodeID[]''value'childNode.data.key});
                }
            }
            $.
ajax({
                
dataType'json',
                
type'POST',
                
dataparams,
                
urlCCM_TOOLS_PATH '/tree/node/drag_request',
                
success: function(r) {
                    
ccm_parseJSON(r, function() {});
                    
jQuery.fn.dialog.hideLoader();
                }
            });
        },

        
setupTree: function() {
            var 
my this,
                
options my.options,
                
classNames = {},
                
checkbox false,
                
ajaxData = {};

            
ajaxData.treeID options.treeID;

            if (
options.chooseNodeInForm) {
                
checkbox true;
                switch(
options.chooseNodeInForm) {
                    case 
'single':
                        
classNames = {'checkbox''dynatree-radio'};
                        break;
                    case 
'multiple':
                        
classNames = {'checkbox''dynatree-checkbox'};
                        break;
                            
                }
                if (
options.selectNodesByKey.length) {
                    
ajaxData.treeNodeSelectedIDs options.selectNodesByKey;
                }
            }
                        
            $(
my.$element).dynatree({
                
autoFocusfalse,
                
cookieId'ConcreteGroups',
                
cookie: {
                    
pathCCM_REL '/'
                
},
                
initAjax: {
                    
urlCCM_TOOLS_PATH '/tree/load',
                    
type'post',
                    
dataajaxData
                
},
                
onLazyRead: function(node) {
                    
my.reloadNode(node);
                },
                
onSelectoptions.onSelect,
                
selectModeoptions.chooseNodeInForm === 'multiple' 1// allow multi-select for checkboxes
                
checkboxcheckbox,
                
classNamesclassNames,
                
minExpandLeveloptions.minimumExpandLevel,
                
clickFolderMode1,
                
onPostInit: function() {
                    var 
$tree my.$element;

                    if (
options.removeNodesByID.length) {
                        for (var 
0options.removeNodesByID.lengthi++) {
                            var 
nodeID options.removeNodesByID[i];
                            var 
node this.getNodeByKey(nodeID);
                            if (
node) {
                                
node.remove();
                            }
                        }
                    }

                    if (
options.readOnly) {
                        
$tree.dynatree('disable');
                    }

                    if (
options.chooseNodeInForm) {
                        var 
selectedNodes $tree.dynatree('getTree');
                        
selectedNodes selectedNodes.getSelectedNodes();
                        if (
selectedNodes[0]) {
                            var 
node selectedNodes[0];
                            
options.onSelect(truenode);
                        }
                    }
                    if (
selectedNodes) {
                        var 
selKeys = $.map(selectedNodes, function(node){
                            
node.makeVisible();
                        });
                    }
                },
                
onClick: function(nodee) {

                    if (
node.getEventTargetType(e) == 'expander') {
                        return 
true;
                    }

                    if (
options.chooseNodeInForm) {
                        var 
targetType node.getEventTargetType(e);
                        if (
targetType == 'checkbox' || targetType == 'title') {
                            if (
targetType == 'title') {
                                
node.select(true);
                            }
                            return 
true;
                        } else {
                            return 
false;
                        }
                    }

                    if (!
node.getEventTargetType(e)) {
                        return 
false;
                    }
                    if (!
options.chooseNodeInForm && node.getEventTargetType(e) == 'title') {
                        if (
options.onClick) {
                            if (!
node.data.gID) {
                                return 
false;
                            }
                            
options.onClick(node);
                        } else {
                            var 
$menu my._menuTemplate({optionsmy.optionsdatanode.data});
                            if (
$menu) {
                                var 
menu = new ConcreteMenu($(node.span), {
                                    
menu$menu,
                                    
handle'none'
                                
});
                                
menu.show(e);
                            }
                        }
                    }
                    return 
true;
                },
                
fx: {height'toggle'duration200},
                
dnd: {
                    
onDragStart: function(node) {
                        if (
options.enableDragAndDrop) {
                            return 
true;
                        } else {
                            return 
false;
                        }
                    },
                    
onDragStop: function(node) {

                    },
                    
autoExpandMS1000,
                    
preventVoidMovestrue,
                    
onDragEnter: function(nodesourceNode) {
                        return 
true;
                    },
                    
onDragOver: function(nodesourceNodehitMode) {
                        if ((!
node.parent.data.treeNodeID) && (node.data.treeNodeID !== '1')) { // Home page has no parents, but we still want to be able to hit it.
                            
return false;
                        }

                        if((
hitMode != 'over') && (node.data.treeNodeID == 1)) {  // Home gets no siblings
                            
return false;
                        }

                        if (
sourceNode.data.treeNodeID == node.data.treeNodeID) {
                            return 
false// can't drag node onto itself.
                        
}

                        if (!
node.data.treeNodeID && hitMode == 'after') {
                            return 
false;
                        }

                        
// Prevent dropping a parent below it's own child
                        
if(node.isDescendantOf(sourceNode)){
                          return 
false;
                        }
                        return 
true;
                    },
                    
onDrop: function(nodesourceNodehitModeuidraggable) {
                        
sourceNode.move(nodehitMode);
                        
my.dragRequest(sourceNodenodehitMode);
                    }
                }
            });
        },

        
setupTreeEvents: function() {

        },

        
reloadNode: function(nodeonComplete) {
            var 
my this,
                
options my.options,
                
params = {
                    
urlCCM_TOOLS_PATH '/tree/node/load',
                    
data: {
                        
treeNodeParentIDnode.data.key
                    
},
                    
success: function() {
                        if (
onComplete) {
                            
onComplete();
                        }
                    }
                };
                
            
node.appendAjax(params);
        }

    };

    
/** 
     * Static methods
     */

    
ConcreteGroupsTree.getMenu = function() {
        return 
'<div class="ccm-popover-page-menu popover fade" data-search-page-menu="<%=data.cID%>" data-search-menu="<%=data.cID%>">' +
            
'<div class="arrow"></div><div class="popover-inner"><ul class="dropdown-menu">' 
            
'<% if (data.canEditTreeNode && data.treeNodeTypeHandle == 'group' && data.gID) { %>' 
                
'<li><a href="' CCM_DISPATCHER_FILENAME '/dashboard/users/groups/-/edit/<%=data.gID%>">' ccmi18n_groups.editGroup '</a></li>' 
            
'<% } %>' +
            
'<% if (data.canEditTreeNodePermissions) { %>' 
                
'<li><a class="dialog-launch" dialog-width="480" dialog-height="380" dialog-modal="true" dialog-title="Edit Permissions" href="' CCM_TOOLS_PATH '/tree/node/permissions?treeNodeID=<%=data.key%>">' ccmi18n_groups.editPermissions '</a></li>' 
            
'<% } %>' +
        
'</ul></div></div>';
    };

    
// jQuery Plugin
    
$.fn.concreteGroupsTree = function(options) {
        return $.
each($(this), function(iobj) {
            new 
ConcreteGroupsTree($(this), options);
        });
    };

    global.
ConcreteGroupsTree ConcreteGroupsTree;

}(
this, $, _);
?>
Онлайн: 1
Реклама