| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- MODx.DataView.dropZone = function(view, config){
- config = config || {};
- this.view = view;
- var ddGroup = config.ddGroup || 'dataviewdd';
- var dd;
- if (Ext.isArray(ddGroup)){
- dd = ddGroup.shift();
- } else {
- dd = ddGroup;
- ddGroup = null;
- }
- MODx.DataView.dropZone.superclass.constructor.call(this, view.getEl(), { containerScroll: true/*, ddGroup: dd */});
- };
- Ext.extend(MODx.DataView.dropZone, Ext.dd.DropZone,{
- getTargetFromEvent: function(e) {
- return e.getTarget('.modx-pb-thumb-wrap');
- }
-
- ,onNodeEnter : function(target, dd, e, data) {
- Ext.fly(target).addClass('x-view-selected');
- }
- ,onNodeOut : function(target, dd, e, data) {
- Ext.fly(target).removeClass('x-view-selected');
- }
- ,onNodeOver : function(target, dd, e, data) {
- return Ext.dd.DropZone.prototype.dropAllowed && (target != data.nodes[0]);
- }
-
- ,onNodeDrop : function(target, dd, e, data) {
- var targetNode = this.view.getRecord(target);
- var sourceNode = this.view.getRecord(data.nodes[0]);
- if (sourceNode == targetNode) { return false; }
- var targetElement = Ext.get(target);
- var sourceElement = Ext.get(data.nodes[0]);
- sourceElement.insertBefore(targetElement);
- this.view.fireEvent('sort',{
- target: targetNode
- ,source: sourceNode
- ,event: e
- ,dd: dd
- });
- return true;
- }
-
- });
- MODx.DataView.dragZone = function(view,config) {
- config = config || {};
- this.view = view;
- MODx.DataView.dragZone.superclass.constructor.call(this,view.getEl());
- };
- Ext.extend(MODx.DataView.dragZone,Ext.dd.DragZone,{
- getDragData : function(e){
- var target = e.getTarget('.modx-pb-thumb-wrap');
- if(target){
- var view = this.view;
- if(!view.isSelected(target)){
- view.onClick(e);
- }
- var selNodes = view.getSelectedNodes();
- var dragData = {
- nodes: selNodes
- };
- if(selNodes.length == 1){
- dragData.ddel = target;
- dragData.single = true;
- }else{
- var div = document.createElement('div'); // create the multi element drag "ghost"
- div.className = 'multi-proxy';
- for(var i = 0, len = selNodes.length; i < len; i++){
- div.appendChild(selNodes[i].firstChild.firstChild.cloneNode(true)); // image nodes only
- if((i+1) % 3 == 0){
- div.appendChild(document.createElement('br'));
- }
- }
- var count = document.createElement('div'); // selected image count
- count.innerHTML = _('gallery.images_selected',{ count: i });
- div.appendChild(count);
-
- dragData.ddel = div;
- dragData.multi = true;
- }
- return dragData;
- }
- return false;
- }
-
-
- // the default action is to "highlight" after a bad drop
- // but since an image can't be highlighted, let's frame it
- ,afterRepair:function(){
- for(var i = 0, len = this.dragData.nodes.length; i < len; i++){
- Ext.fly(this.dragData.nodes[i]).frame('#8db2e3', 1);
- }
- this.dragging = false;
- }
-
- // override the default repairXY with one offset for the margins and padding
- ,getRepairXY : function(e){
- if(!this.dragData.multi){
- var xy = Ext.Element.fly(this.dragData.ddel).getXY();
- xy[0]+=3;xy[1]+=3;
- return xy;
- }
- return false;
- }
- })
|