Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/core/topics.js
Строк: 491
<?php
(function($, window) {

  var 
methods = {

    private:  {

        
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();
                }
            });
        },

        
getMenu: function(dataoptions) {
            var 
menu '<div class="ccm-topic-menu ccm-popover-page-menu popover fade popover fade"><div class="arrow"></div><div class="popover-inner">';
            
menu += '<ul class="dropdown-menu">';

            if (
data.canAddTopicCategoryTreeNode) {
                
menu += '<li><a class="dialog-launch" dialog-width="550" dialog-on-open="$('[data-topic-form=add-category-node]').ccmtopicstree('initAddNodeForm', ' options.treeID ');" dialog-height="auto" dialog-modal="false" dialog-title="' ccmi18n_topics.addCategory '" href="' CCM_DISPATCHER_FILENAME '/tools/required/tree/node/add/topic_category?treeNodeParentID=' data.key '">' ccmi18n_topics.addCategory '</a></li>';
            }
            if (
data.canAddTopicTreeNode) {
                
menu += '<li><a class="dialog-launch" dialog-width="550" dialog-on-open="$('[data-topic-form=add-topic-node]').ccmtopicstree('initAddNodeForm', ' options.treeID ');" dialog-height="auto" dialog-modal="false" dialog-title="' ccmi18n_topics.addTopic '" href="' CCM_DISPATCHER_FILENAME '/tools/required/tree/node/add/topic?treeNodeParentID=' data.key '">' ccmi18n_topics.addTopic '</a></li>';
            }

            if (
data.canEditTreeNode && data.treeNodeTypeHandle == 'topic_category') {
                
menu += '<li><a class="dialog-launch" dialog-width="550" dialog-on-open="$('[data-topic-form=update-category-node]').ccmtopicstree('initUpdateCategoryNodeForm', ' options.treeID ');" dialog-height="auto" dialog-modal="false" dialog-title="' ccmi18n_topics.editCategory '" href="' CCM_DISPATCHER_FILENAME '/tools/required/tree/node/edit/topic_category?treeNodeID=' data.key '">' ccmi18n_topics.editCategory '</a></li>';
            }
            if (
data.canDuplicateTreeNode && data.treeNodeTypeHandle == 'topic_category') {
                
menu += '<li><a href="#" onclick="$.fn.ccmtopicstree('cloneNode', 'node', ' options.treeID ',' data.key ')">' ccmi18n_topics.cloneCategory '</a></li>';
            }

            if (
data.canEditTreeNode && data.treeNodeTypeHandle == 'topic') {
                
menu += '<li><a class="dialog-launch" dialog-width="550" dialog-on-open="$('[data-topic-form=update-topic-node]').ccmtopicstree('initUpdateTopicNodeForm', ' options.treeID ');" dialog-height="auto" dialog-modal="false" dialog-title="' ccmi18n_topics.editTopic '" href="' CCM_DISPATCHER_FILENAME '/tools/required/tree/node/edit/topic?treeNodeID=' data.key '">' ccmi18n_topics.editTopic '</a></li>';
            }
            if (
data.canDuplicateTreeNode && data.treeNodeTypeHandle == 'topic') {
                
menu += '<li><a href="#" onclick="$.fn.ccmtopicstree('cloneNode', 'node', ' options.treeID ',' data.key ')">' ccmi18n_topics.cloneTopic '</a></li>';
            }

            if (
data.canEditTreeNodePermissions) {
                
menu += '<li><a class="dialog-launch" dialog-width="480" dialog-height="auto" dialog-modal="true" dialog-title="' ccmi18n_topics.editPermissions '" href="' CCM_TOOLS_PATH '/tree/node/permissions?treeNodeID=' data.key '">' ccmi18n_topics.editPermissions '</a></li>';
            }
            if (
data.treeNodeParentID && data.treeNodeTypeHandle == 'topic_category' && data.canDeleteTreeNode) {
                
menu += '<li><a class="dialog-launch" dialog-width="550" dialog-on-open="$('[data-topic-form=remove-tree-node]').ccmtopicstree('initRemoveNodeForm', ' options.treeID ');" dialog-height="auto" dialog-modal="false" dialog-title="' ccmi18n_topics.deleteCategory '" href="' CCM_TOOLS_PATH '/tree/node/remove?treeNodeID=' data.key '">' ccmi18n_topics.deleteCategory '</a></li>';
            }
            if (
data.treeNodeParentID && data.treeNodeTypeHandle == 'topic' && data.canDeleteTreeNode) {
                
menu += '<li><a class="dialog-launch" dialog-width="550" dialog-on-open="$('[data-topic-form=remove-tree-node]').ccmtopicstree('initRemoveNodeForm', ' options.treeID ');" dialog-height="auto" dialog-modal="false" dialog-title="' ccmi18n_topics.deleteTopic '" href="' CCM_TOOLS_PATH '/tree/node/remove?treeNodeID=' data.key '">' ccmi18n_topics.deleteTopic '</a></li>';
            }
            
menu += '</ul></div></div>';
            var 
$menu = $(menu);
            if (
$menu.find('li').length == 0) {
                return 
false;
            }

            return 
$menu;

        },
        

        
reloadNode: function(optionsnodeonComplete) {
            var 
obj this,
                
data options.ajaxData;
            
data.treeNodeParentID node.data.key;

            var 
params = {
                
urlCCM_TOOLS_PATH '/tree/node/load',
                
datadata,
                
success: function() {
                    if (
onComplete) {
                        
onComplete();
                    }
                }
            };
            
            
node.appendAjax(params);

        },

        
setupDialogForm: function($formonSuccess) {
            
$form.closest('.ui-dialog').find("button[type=submit]").on('click', function() { $form.trigger('submit'); });
            
$form.on('submit', function() {
                
jQuery.fn.dialog.showLoader();
                var 
data $form.serializeArray();
                $.
ajax({
                    
'dataType''json',
                    
'type''post',
                    
'data'data,
                    
'url'$form.attr('action'),
                    
success: function(r) {
                        if (
r.error == true) {
                            
ConcreteAlert.dialog(ccmi18n.errorr.errors.join("<br>"));
                        } else {
                            
jQuery.fn.dialog.closeTop();
                            
onSuccess(r);
                        }
                    },
                    
error: function(r) {
                        
ConcreteAlert.dialog(ccmi18n.errorr.responseText);
                    },
                    
complete: function() {
                        
jQuery.fn.dialog.hideLoader();
                    }
                });
                return 
false;
            });
        }
    },

    
initAddNodeForm: function(treeID) {
        
methods.private.setupDialogForm($(this), function(r) {
            var 
$tree = $('[data-topic-tree=' treeID ']');
            if (
r.length) {
                for (var 
0r.lengthi++) {
                    var 
node $tree.dynatree('getTree').getNodeByKey(r[i].treeNodeParentID);
                    
node.addChild(r[i]);
                }
            } else {
                var 
node $tree.dynatree('getTree').getNodeByKey(r.treeNodeParentID);
                
node.addChild(r);
            }
            
node.expand();
        });
    },

    
cloneNode: function(cloneTypetreeIDtreeNodeID) {
          var 
$tree = $('[data-topic-tree=' treeID ']');
        $.
ajax({
            
'dataType''json',
            
'type''post',
            
'data': {
                
'treeNodeID'treeNodeID
            
},
            
'url'CCM_TOOLS_PATH '/tree/node/duplicate/' cloneType,
            
success: function(r) {
                if (
r.error == true) {
                    
ConcreteAlert.dialog(ccmi18n.errorr.errors.join("<br>"));
                } else {
                    
jQuery.fn.dialog.closeTop();
                    var 
node $tree.dynatree('getTree').getNodeByKey(r.treeNodeParentID);
                    
node.setLazyNodeStatus(DTNodeStatus_Loading);    
                    
methods.private.reloadNode($tree.data('options'), node, function() {
                        
node.setLazyNodeStatus(DTNodeStatus_Ok);    
                    });
                }
            },
            
error: function(r) {
                
ConcreteAlert.dialog(ccmi18n.error'<div class="alert alert-danger">' r.responseText '</div>');
            },
            
complete: function() {
                
jQuery.fn.dialog.hideLoader();
            }
        });
        return 
false;
    },

    
initUpdateCategoryNodeForm: function(treeID) {
        
methods.private.setupDialogForm($(this), function(r) {
            var 
$tree = $('[data-topic-tree=' treeID ']');
            var 
node $tree.dynatree('getTree').getNodeByKey(r.key);
            
node.data r;
            
node.render();
        });
    },

    
initUpdateTopicNodeForm: function(treeID) {
        
methods.private.setupDialogForm($(this), function(r) {
            var 
$tree = $('[data-topic-tree=' treeID ']');
            var 
node $tree.dynatree('getTree').getNodeByKey(r.key);
            
node.data r;
            
node.render();
        });
    },


    
initRemoveNodeForm: function(treeID) {
        
methods.private.setupDialogForm($(this), function(r) {
            var 
$tree = $('[data-topic-tree=' treeID ']');
            var 
node $tree.dynatree('getTree').getNodeByKey(r.treeNodeID);
            
node.remove();
        });
    },

    
init: function(options) {
        
options = $.extend({
            
readonlyfalse,
            
chooseNodeInFormfalse,
            
onSelectfalse,
            
allowFolderSelectiontrue,
            
selectNodesByKey: []
        }, 
options);

        var 
checkbox false,
            
classNames false;

        
/* var ajaxData =  {
            'treeID': options.treeID
        }; */

        
if(!options.treeNodeParentID) {
            var 
ajaxData = { 'treeID'options.treeID };
        } else {
            var 
ajaxData = { 'treeNodeParentID'options.treeNodeParentID };
        }

        if (
options.allowFolderSelection) {
            
ajaxData.allowFolderSelection 1;
        }

        var 
persist true;

        if (
options.chooseNodeInForm) {
            
checkbox true;
            
persist false;
            
classNames = {
                
'checkbox''dynatree-radio'
            
};
            if (
options.selectNodesByKey.length) {
                
ajaxData.treeNodeSelectedIDs options.selectNodesByKey;
            }
        }
        
        if (
options.chooseNodeInForm === 'multiple') {
            
checkbox true;
            
persist false;
            
classNames = {
                
'checkbox''dynatree-checkbox'
            
};
            if (
options.selectNodesByKey.length) {
                
ajaxData.treeNodeSelectedIDs options.selectNodesByKey;
            }
        }
        
        var 
selectMode 1;
        if(
options.selectMode) {
            
selectMode options.selectMode;
        }
        var 
minExpandLevel 2;
        if(
options.minExpandLevel) {
            
minExpandLevel options.minExpandLevel;
        }

        return 
this.each(function() {
            if(!
options.treeNodeParentID) {
                var 
loadToolsURL CCM_TOOLS_PATH '/tree/load';
            } else {
                var 
loadToolsURL CCM_TOOLS_PATH '/tree/node/load';
            }
            var 
$obj = $(this);
            
options.ajaxData ajaxData;
            
$obj.data('options'options);
            
$obj.dynatree({
                
autoFocusfalse,
                
/*cookieId: cookieId,
                cookie: {
                    path: CCM_REL + '/'
                },*/

                
onSelect: function(selectnode) {
                    if (
options.chooseNodeInForm) {
                        
options.onSelect(selectnode);
                    }
                },
                
/*
                persist: persist,
                */
                
selectModeselectMode,
                
checkboxcheckbox,
                
classNamesclassNames,
                
minExpandLevel:  minExpandLevel,
                
clickFolderMode1,
                
initAjax: {
                    
urlloadToolsURL,
                    
type'post',
                    
dataajaxData
                
},
                
onLazyRead: function(node) {
                    
methods.private.reloadNode(optionsnode);
                },

                
onPostInit: function() {
                    var 
$tree $obj;
                    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 && node.getEventTargetType(e) != 'checkbox') {
                        return 
false;
                    }
                    if (!
node.getEventTargetType(e)) {
                        return 
false;
                    }
                    if (!
options.chooseNodeInForm && node.getEventTargetType(e) == 'title' && !options.noForm) {
                        var 
$menu methods.private.getMenu(node.dataoptions);
                        if (
$menu) {
                            var 
menu = new ConcreteMenu($(node.span), {
                                
menu$menu,
                                
launcher'none'
                            
});
                            
menu.show(e);
                        }
                    }
                },
                
dnd: {
                    
onDragStart: function(node) {
                        if(
options.noDrag) {
                            return 
false;
                        } else {
                            return 
true;
                        }
                    },
                    
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;
                        }

                        
// you can only drag shit into other categories.
                        // Restriction lifted. Topics can live inside other topics.
                        /*
                        var nodeTypeHandle = node.data.treeNodeType;
                        if (hitMode === 'over' && jQuery.inArray(node.data.treeNodeTypeHandle, ['topic']) > -1) {
                            return false;
                        }
                        */

                        // Prevent dropping a parent below its own child
                        
if(node.isDescendantOf(sourceNode)){
                          return 
false;
                        }
                        return 
true;

                    },
                    
onDrop: function(nodesourceNodehitModeuidraggable) {
                        
sourceNode.move(nodehitMode);
                        
methods.private.dragRequest(sourceNodenodehitMode);
                    }
                }                
            });

        });
    }


  };

  $.
fn.ccmtopicstree = function(method) {

    if ( 
methods[method] ) {
      return 
methods[method].applythis, Array.prototype.slice.callarguments));
    } else if ( 
typeof method === 'object' || ! method ) {
      return 
methods.init.applythisarguments );
    } else {
      $.
error'Method ' +  method ' does not exist on jQuery.ccmtopicstree' );
    }   

  };
})(
jQuerywindow);
?>
Онлайн: 1
Реклама