Files
aportil/themes/sources4.0/dhtmlxTree/codebase/ext/dhtmlxtree_dragin.js

76 lines
2.8 KiB
JavaScript

/*
Product Name: dhtmlxSuite
Version: 4.0.3
Edition: Professional
License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com
Copyright UAB Dinamenta http://www.dhtmlx.com
*/
/**
* @desc: adds drag-n-drop capabilities (with possibility to drop into dhtmlxTree) to HTML object.
* @param: obj - HTML object, or HTML object ID
* @param: func - custom drag processor function, optional
* @type: public
* @topic: 0
*/
dhtmlXTreeObject.prototype.makeDraggable=function(obj,func){
if (typeof(obj)!="object")
obj=document.getElementById(obj);
dragger=new dhtmlDragAndDropObject();
dropper=new dhx_dragSomethingInTree();
dragger.addDraggableItem(obj,dropper);
obj.dragLanding=null;
obj.ondragstart=dropper._preventNsDrag;
obj.onselectstart=new Function("return false;");
obj.parentObject=new Object;
obj.parentObject.img=obj;
obj.parentObject.treeNod=dropper;
dropper._customDrop=func;
}
dhtmlXTreeObject.prototype.makeDragable=dhtmlXTreeObject.prototype.makeDraggable;
/**
* @desc: adds drag-n-drop capabilities (with possibility to drop into dhtmlxTree) to all HTML items with dragInDhtmlXTree attribute
* @param: func - custom drag processor function, optional
* @type: public
* @topic: 0
*/
dhtmlXTreeObject.prototype.makeAllDraggable=function(func){
var z=document.getElementsByTagName("div");
for (var i=0; i<z.length; i++)
if (z[i].getAttribute("dragInDhtmlXTree"))
this.makeDragable(z[i],func);
}
function dhx_dragSomethingInTree(){
this.lWin=window;
//this function creates a HTML object which will be used while drag-n-drop
this._createDragNode=function(node){
var dragSpan=document.createElement('div');
dragSpan.style.position="absolute";
dragSpan.innerHTML=(node.innerHTML||node.value);
dragSpan.className="dragSpanDiv";
return dragSpan;
};
//this function necessary for correct browser support
//doesn't change anything in it
this._preventNsDrag=function(e){
(e||window.event).cancelBubble=true;
if ((e)&&(e.preventDefault)) { e.preventDefault(); return false; }
return false;
}
//this function contains a reaction on drop operation
//the tree don't know what to do with custom item
//so you must define this reaction
this._nonTrivialNode=function(tree,item,bitem,source){
if (this._customDrop) return this._customDrop(tree,source.img.id,item.id,bitem?bitem.id:null);
var image=(source.img.getAttribute("image")||"");
var id=source.img.id||"new";
var text=(source.img.getAttribute("text")||(_isIE?source.img.innerText:source.img.textContent));
tree[bitem?"insertNewNext":"insertNewItem"](bitem?bitem.id:item.id,id,text,"",image,image,image);
}
}
//(c)dhtmlx ltd. www.dhtmlx.com