📄 dndmodule.js
字号:
var self=this;var config=this.getDragConfig();if(this.fireEvent("beforeDragInit",ev)===false){return true;}if(Zapatec.GlobalEvents.fireEvent("beforeDragInit",ev,this)===false){return true;}this._setDragging(true);if(config.eventCapture&&(config.method=="dummy"||config.method=="copy")){var draggables=Zapatec.Array(this.getDraggableElements());draggables.each(function(index,draggable){draggable.restorer.saveProp("style.zIndex");draggable.style.zIndex=2000001;});}this._proceedDraggableElements("dragStart");var oPos=Zapatec.Utils.getMousePos(ev);var mouseX=oPos.pageX;var mouseY=oPos.pageY;this.makeMovable();this.startMove();var elements=Zapatec.Array(this.getMovableElements());elements.each(function(index,movable){if(Zapatec.isHtmlElement(movable)){movable.restorer.saveProp("style.zIndex");movable.style.zIndex=1000000+(parseInt(movable.style.zIndex,10)||0);self._proceedDragStyles(movable,"dragStart");if(config.eventCapture){movable.restorer.saveProp("style.cursor");movable.style.cursor="move";}}else if(Zapatec.isMovableObj(movable)){var elems=Zapatec.Array(movable.getMovableElements());elems.each(arguments.calee);}});Zapatec.Utils.cover.show(config.eventCapture?999999:2000000,"move",function(ev){return self.dragMove(ev);},function(ev){return self.dragEnd(ev);});this._setMovingPoint(mouseX,mouseY);this.fireEvent("onDragInit",ev);Zapatec.GlobalEvents.fireEvent("onDragInit",ev,this);if(config.stopEvent){return Zapatec.Utils.stopEvent(ev);}else{return true;}};Zapatec.Draggable.dragMove=function(ev){if(!this.isDragging()){return true;}ev=ev||window.event;if(this.fireEvent("beforeDragMove",ev)===false){return true;}if(Zapatec.GlobalEvents.fireEvent("beforeDragMove",ev,this)===false){return true;}if(Zapatec.Utils.cover.style.zIndex!=2000000){var config=this.getDragConfig();if(config.eventCapture&&(config.method=="dummy"||config.method=="copy")){var draggables=Zapatec.Array(this.getDraggableElements());draggables.each(function(index,draggable){draggable.restorer.restoreProp("style.zIndex");});}Zapatec.Utils.cover.style.zIndex=2000000;}var oPos=Zapatec.Utils.getMousePos(ev);var mouseX=oPos.pageX;var mouseY=oPos.pageY;var movePoint=this.getMovingPoint();this.moveFor(mouseX-movePoint.x,mouseY-movePoint.y);this._setMovingPoint(mouseX,mouseY);this.fireEvent("onDragMove",ev);Zapatec.GlobalEvents.fireEvent("onDragMove",ev,this);return Zapatec.Utils.stopEvent(ev);};Zapatec.Draggable.dragEnd=function(ev){if(!this.isDragging()){return true;}ev=ev||window.event;var self=this;if(this.fireEvent("beforeDragEnd",ev)===false){return true;}if(Zapatec.GlobalEvents.fireEvent("beforeDragEnd",ev,this)===false){return true;}var config=this.getDragConfig();if(config.eventCapture&&(config.method=="dummy"||config.method=="copy")){var draggables=Zapatec.Array(this.getDraggableElements());draggables.each(function(index,draggable){draggable.restorer.restoreProp("style.zIndex",true);});}var elements=Zapatec.Array(this.getMovableElements());elements.each(function(index,movable){if(Zapatec.isHtmlElement(movable)){movable.restorer.restoreProp("style.zIndex");movable.restorer.restoreProp("style.cursor");self._proceedDragStyles(movable,"dragEnd");}else if(Zapatec.isMovableObj(movable)){var elems=Zapatec.Array(movable.getMovableElements());elems.each(arguments.calee);}});this._proceedDraggableElements("dragEnd");Zapatec.Utils.cover.hide();this._setMovingPoint(null,null);this._setDragging(false);this.endMove();this.fireEvent("onDragEnd",ev);Zapatec.GlobalEvents.fireEvent("onDragEnd",ev,this);return Zapatec.Utils.stopEvent(ev);};Zapatec.Draggable.restorePos=function(){this.restoreOfMove();};Zapatec.Draggable.restoreOfDrag=function(){var listenersObj=this._getRestorer().getSavedProps()["dragListeners"];if(!listenersObj){return false;}this.restoreOfMove();var hooks=Zapatec.Array(this._getDraggableHooks());var draggables=Zapatec.Array(this.getDraggableElements());var self=this;var config=this.getDragConfig();hooks.each(function(index,hook){if(!Zapatec.isHtmlElement(hook)){return;}if(Zapatec.is_gecko){hook.style.setProperty("-moz-user-select","","");}Zapatec.Utils.removeEvent(hook,'mousedown',listenersObj.mousedown);if(config.eventCapture){Zapatec.Utils.removeEvent(hook,'mousemove',listenersObj.mousemove);Zapatec.Utils.removeEvent(hook,'mouseup',listenersObj.mouseup);}});draggables.each(function(index,draggable){if(!Zapatec.isHtmlElement(draggable)){return;}draggable.dragObj=null;});return true;};Zapatec.Draggable.getDraggableElements=function(){return this.getContainer();};Zapatec.Draggable._getDraggableHooks=function(){return this.getContainer();};Zapatec.Draggable.getContainer=function(){return this.getDragConfig().container;};Zapatec.Draggable.isDragging=function(){return this.dragging;};Zapatec.Draggable.canDrag=function(){return this.canDrag;};Zapatec.Draggable._setCanDrag=function(on){this.canDrag=on;};Zapatec.Draggable.getDragConfig=function(){return this.getConfiguration();};Zapatec.Draggable.setDragConfig=function(config){this.reconfigure(config);};Zapatec.Draggable._setDragging=function(on){this.dragging=on;};Zapatec.Draggable._handleCoordOverflow=function(limit,dimension){if(!this.isDragging()){Zapatec.Movable._handleCoordOverflow.call(this,limit,dimension);}return limit;};Zapatec.Draggable._getRestorer=function(){if(!this.restorer){this.restorer=new Zapatec.SRProp(this);}return this.restorer;};Zapatec.Draggable._proceedDraggableElements=function(dragState){var config=this.getDragConfig(),restorer=this._getRestorer(),copies=null,measurement=null,self=this,listenersObj=restorer.getProp("dragListeners");function toggleEvents(action,hooks,listenersObj){hooks.each(function(index,hook){Zapatec.Utils[action+"Event"](hook,"mousedown",listenersObj.mousedown);if(config.eventCapture){Zapatec.Utils[action+"Event"](hook,'mousemove',listenersObj.mousemove);Zapatec.Utils[action+"Event"](hook,'mouseup',listenersObj.mouseup);}});}switch(config.method){case"copy":case"dummy":{if(dragState=="dragStart"){var elements=Zapatec.Array(this.getDraggableElements());var hooks=Zapatec.Array(this._getDraggableHooks());copies=Zapatec.Array();toggleEvents("remove",hooks,listenersObj);elements.each(function(index,movable){if(Zapatec.isHtmlElement(movable)){var newNode=movable.cloneNode(config.copyChilds);newNode.dragObj=self;if(config.eventCapture){Zapatec.Utils.addEvent(newNode,'mousemove',listenersObj.mousemove);Zapatec.Utils.addEvent(newNode,'mouseup',listenersObj.mouseup);}movable.parentNode.insertBefore(newNode,movable);newNode.style.visibility="visible";copies.push(newNode);if(movable==self.getMovableMeasurement()){measurement=newNode;}}else if(Zapatec.isMovableObj(movable)){var elems=Zapatec.Array(movable.getMovableElements());elems.each(arguments.calee);}});toggleEvents("add",hooks,listenersObj);if(!measurement){measurement=this.getMovableMeasurement();}restorer.saveProp("getMovableElements");restorer.saveProp("isMovableSafely()");this._setMovableSafely(false);this.getMovableElements=function(resetArray){var arr=copies;copies=resetArray?null:copies;return arr;};restorer.saveProp("getMovableMeasurement");this.getMovableMeasurement=function(){return measurement;};}else if(dragState=="dragEnd"){var elements=Zapatec.Array(this.getMovableElements(true));elements.each(function(index,movable){if(config.method=="dummy"){movable.parentNode.removeChild(movable);}movable.dragObj=null;if(config.eventCapture){Zapatec.Utils.removeEvent(movable,'mousemove',listenersObj.mousemove);Zapatec.Utils.removeEvent(movable,'mouseup',listenersObj.mouseup);}});this.restoreOfMove();restorer.restoreProp("getMovableElements");this._setMovableSafely(restorer.getProp("isMovableSafely()"));restorer.restoreProp("isMovableSafely()");restorer.restoreProp("getMovableMeasurement");}break;}default:{break;}}};Zapatec.Draggable._proceedDragStyles=function(movable,dragState){var config=this.getDragConfig();if(config.overwriteCSS){if(dragState=="dragStart"){movable.restorer.saveProp("className");movable.className=config.overwriteCSS;}else if(dragState=="dragEnd"){movable.restorer.restoreProp("className");}}if(config.dragCSS){if(dragState=="dragStart"){Zapatec.Utils.addClass(movable,config.dragCSS);}else if(dragState=="dragEnd"){Zapatec.Utils.removeClass(movable,config.dragCSS);}}};Zapatec.Draggable._setMovingPoint=function(x,y){var movingPoint=this._getMovingPointObject();if(x===null||y===null){movingPoint.x=null;movingPoint.y=null;movingPoint.offsetX=null;movingPoint.offsetY=null;return;}if(movingPoint.x===null||movingPoint.y===null){var pos=this.getPagePosition();movingPoint.x=x;movingPoint.y=y;movingPoint.offsetX=x-pos.x;movingPoint.offsetY=y-pos.y;}else{var pos=this.getPagePosition();movingPoint.x=pos.x+movingPoint.offsetX;movingPoint.y=pos.y+movingPoint.offsetY;}return;};Zapatec.Draggable.getMovingPoint=function(){var movingPoint=this._getMovingPointObject();return{x:movingPoint.x,y:movingPoint.y};};Zapatec.Draggable._getMovingPointObject=function(){if(!this.movingPoint||typeof this.movingPoint!="object"){this.movingPoint={x:null,y:null,offsetX:null,offsetY:null};}return this.movingPoint;};Zapatec.Utils.Draggable=function(config){if(arguments.length>1){var args=arguments[1];args.container=config;config=args;}if(typeof config.left!="undefined"||typeof config.right!="undefined"||typeof config.top!="undefined"||typeof config.bottom!="undefined"){config.limit={minX:config.left,maxX:config.right,minY:config.top,maxY:config.bottom};}if(config.dragLayer){config.moveLayer=config.dragLayer;}if(!config.eventListeners){config.eventListeners={};}if(config.beforeDragInit){config.eventListeners.beforeDragInit=config.beforeDragInit;}if(config.beforeDragMove){config.eventListeners.beforeDragMove=config.beforeDragMove;}if(config.beforeDragEnd){config.eventListeners.beforeDragEnd=config.beforeDragEnd;}if(config.onDragInit){config.eventListeners.onDragInit=config.onDragInit;}if(config.onDragMove){config.eventListeners.onDragMove=config.onDragMove;}if(config.onDragEnd){config.eventListeners.onDragEnd=config.onDragEnd;}if(config.stopEv){config.stopEvent=config.stopEv;}config=Zapatec.Hash.remove(config,"left","top","right","bottom","dragLayer","beforeDragInit","beforeDragMove","beforeDragEnd","onDragInit","onDragMove","onDragEnd","stopEv");Zapatec.Utils.Draggable.SUPERconstructor.call(this,config);};Zapatec.Utils.Draggable.id="Zapatec.Utils.Draggable";Zapatec.inherit(Zapatec.Utils.Draggable,Zapatec.Utils.Movable);Zapatec.implement(Zapatec.Utils.Draggable,"Zapatec.Draggable");Zapatec.Utils.Draggable.prototype.init=function(config){Zapatec.Utils.Draggable.SUPERclass.init.call(this,config);this.makeDraggable();};Zapatec.Utils.Draggable.prototype.configure=function(config){this.defineConfigOption("method","cut");this.defineConfigOption("stopEvent",true);this.defineConfigOption("eventCapture",false);this.defineConfigOption("handler",null);this.defineConfigOption("dragCSS",null);this.defineConfigOption("overwriteCSS",null);this.defineConfigOption("copyChilds",true);this.defineConfigOption("makeMovable",false);Zapatec.Utils.Draggable.SUPERclass.configure.call(this,config);config=this.getConfiguration();if(Zapatec.is_opera){config.eventCapture=true;}config.handler=Zapatec.Widget.getElementById(config.handler);config.handler=Zapatec.Utils.img2div(config.handler);if(!Zapatec.isHtmlElement(config.handler)){config.handler=config.container;}};Zapatec.Utils.Draggable.prototype.reconfigure=function(config){Zapatec.Utils.Draggable.SUPERclass.reconfigure.call(this,config);};Zapatec.Utils.Draggable.prototype.getDraggableElements=function(){return this.movableElements;};Zapatec.Utils.Draggable.prototype._getDraggableHooks=function(){return this.getConfiguration().handler;};Zapatec.Utils.initDragObjects=function(className,el,recursive,config){if(!className)return;var elements=Zapatec.Utils.getElementsByAttribute('className',className,el,recursive,true);return Zapatec.Utils.applyToElements(Zapatec.Utils.Draggable,elements,config);}Zapatec.Utils.DropArea=function(config){if(arguments.length>1){config={container:config};config.dropName=arguments[1];config.eventListeners={onDrop:arguments[2],onDragInit:arguments[3],onDragOver:arguments[4],onDragOut:arguments[5],onDragEnd:arguments[6]}}Zapatec.Utils.DropArea.SUPERconstructor.call(this,config);};Zapatec.Utils.DropArea.id="Zapatec.DropArea";Zapatec.inherit(Zapatec.Utils.DropArea,Zapatec.Widget);Zapatec.implement(Zapatec.Utils.DropArea,"Zapatec.CommandEvent");Zapatec.Utils.DropArea.prototype.init=function(config){Zapatec.Utils.DropArea.SUPERclass.init.call(this,config);this.dropArea=this.getConfiguration().container;this.elementOver=false;this.addListeners();};Zapatec.Utils.DropArea.prototype.configure=function(config){this.defineConfigOption("container",null);this.defineConfigOption("dropName",null);this.defineConfigOption("theme",null);Zapatec.Utils.DropArea.SUPERclass.configure.call(this,config);config=this.getConfiguration();config.container=Zapatec.Widget.getElementById(config.container);};Zapatec.Utils.DropArea.prototype.reconfigure=function(config){Zapatec.Utils.DropArea.SUPERclass.reconfigure.call(this,config);};Zapatec.Utils.DropArea.prototype.dragInit=function(ev,movable){this.mousePos=movingPoint=movable.getMovingPoint();var dropArea=Zapatec.Utils.getElementOffset(this.dropArea);var elems=Zapatec.Array(movable.getMovableElements());if(elems.length==1){elems=elems[0];}if((movingPoint.x>dropArea.x)&&(movingPoint.x<dropArea.x+dropArea.width)&&(movingPoint.y>dropArea.y)&&(movingPoint.y<dropArea.y+dropArea.height)){this.elementOver=elems;}if(this.fireEvent("onDragInit",elems,this)=="parent-re-execute"){return"re-execute";}if(this.elementOver){if(this.fireEvent("onDragOver",elems,this)=="parent-re-execute"){return"re-execute";}}};Zapatec.Utils.DropArea.prototype.dragMove=function(ev,movable){this.mousePos=movingPoint=movable.getMovingPoint();var dropArea=Zapatec.Utils.getElementOffset(this.dropArea);var elems=Zapatec.Array(movable.getMovableElements());if(elems.length==1){elems=elems[0];}if((movingPoint.x>dropArea.x)&&(movingPoint.x<dropArea.x+dropArea.width)&&(movingPoint.y>dropArea.y)&&(movingPoint.y<dropArea.y+dropArea.height)){if(!this.elementOver){if(this.fireEvent("onDragOver",elems,this)=="parent-re-execute"){return"re-execute";}}this.elementOver=elems;}else{if(this.elementOver){if(this.fireEvent("onDragOut",elems,this)=="parent-re-execute"){return"re-execute";}}this.elementOver=null;}};Zapatec.Utils.DropArea.prototype.dragEnd=function(ev,movable){var elems=Zapatec.Array(movable.getMovableElements());if(elems.length==1){elems=elems[0];}if(this.elementOver){if(this.fireEvent("onDrop",elems,this)=="parent-re-execute"){return"re-execute";}}if(this.fireEvent("onDragEnd",elems,this)=="parent-re-execute"){return"re-execute";}this.movingPoint=null;this.elementOver=null;};Zapatec.Utils.DropArea.prototype.removeListeners=function(){Zapatec.GlobalEvents.removeEventListener("onDragInit",this.tmp.onDragInit);Zapatec.GlobalEvents.removeEventListener("onDragMove",this.tmp.onDragMove);Zapatec.GlobalEvents.removeEventListener("onDragEnd",this.tmp.onDragEnd);}Zapatec.Utils.DropArea.prototype.addListeners=function(){var self=this;if(!this.tmp){this.tmp={};}this.tmp.onDragInit=function(ev,movable){this.returnValue(self.dragInit(ev,movable));};this.tmp.onDragMove=function(ev,movable){this.returnValue(self.dragMove(ev,movable));};this.tmp.onDragEnd=function(ev,movable){this.returnValue(self.dragEnd(ev,movable));};Zapatec.GlobalEvents.addEventListener("onDragInit",this.tmp.onDragInit);Zapatec.GlobalEvents.addEventListener("onDragMove",this.tmp.onDragMove);Zapatec.GlobalEvents.addEventListener("onDragEnd",this.tmp.onDragEnd);}Zapatec.Utils.DropArea.prototype.destroy=function(){this.dropArea=null;this.removeListeners();};Zapatec.Utils.addEvent(window, 'load', Zapatec.Utils.checkActivation);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -