/********************************************************************************* * SugarCRM Community Edition is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by the * Free Software Foundation with the addition of the following permission added * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along with * this program; if not, see http://www.gnu.org/licenses or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road, * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * SugarCRM" logo. If the display of the logo is not reasonably feasible for * technical reasons, the Appropriate Legal Notices must display the words * "Powered by SugarCRM". ********************************************************************************/ /* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */ /** * @class a YAHOO.util.DDProxy implementation. During the drag over event, the * dragged element is inserted before the dragged-over element. * * @extends YAHOO.util.DDProxy * @constructor * @param {String} id the id of the linked element * @param {String} sGroup the group of related DragDrop objects */ var addListStudioCount = 0; var moduleTabs = []; function ygDDListStudio(id, sGroup, fromOnly) { if (id) { if(id == 'trashcan' || id.indexOf('noselect') ==0){ this.initTarget(id, sGroup); }else{ this.init(id, sGroup); } this.initFrame(); this.fromOnly = fromOnly; } var s = this.getDragEl().style; s.borderColor = "transparent"; s.backgroundColor = "#f6f5e5"; s.opacity = 0.76; s.filter = "alpha(opacity=76)"; } ygDDListStudio.prototype = new YAHOO.util.DDProxy(); ygDDListStudio.prototype.clickContent = ''; ygDDListStudio.prototype.clickBorder = ''; ygDDListStudio.prototype.clickHeight = ''; ygDDListStudio.prototype.lastNode = false; ygDDListStudio.prototype.startDrag ygDDListStudio.prototype.startDrag = function(x, y) { var dragEl = this.getDragEl(); var clickEl = this.getEl(); this.parentID = clickEl.parentNode.id; dragEl.innerHTML = clickEl.innerHTML; dragElObjects = dragEl.getElementsByTagName('object'); dragEl.className = clickEl.className; dragEl.style.color = clickEl.style.color; dragEl.style.border = "1px solid #aaa"; // save the style of the object this.clickContent = clickEl.innerHTML; this.clickBorder = clickEl.style.border; this.clickHeight = clickEl.style.height; clickElRegion = YAHOO.util.Dom.getRegion(clickEl); clickEl.style.height = (clickElRegion.bottom - clickElRegion.top) + 'px'; clickEl.style.opacity = .5; clickEl.style.filter = "alpha(opacity=10)"; clickEl.style.border = '2px dashed #cccccc'; }; ygDDListStudio.prototype.updateTabs = function(){ moduleTabs = []; for(j = 0; j < slotCount; j++){ var ul = document.getElementById('ul' + j); moduleTabs[j] = []; items = ul.getElementsByTagName("li"); for(i = 0; i < items.length; i++) { if(items.length == 1){ items[i].innerHTML = SUGAR.language.get('app_strings', 'LBL_DROP_HERE'); }else{ if(items[i].innerHTML == SUGAR.language.get('app_strings', 'LBL_DROP_HERE')){ items[i].innerHTML=''; } } moduleTabs[ul.id.substr(2, ul.id.length)][subtabModules[items[i].id]] = true; } } }; ygDDListStudio.prototype.endDrag = function(e) { var clickEl = this.getEl(); clickEl.innerHTML = this.clickContent var p = clickEl.parentNode; if(p.id == 'trash'){ p.removeChild(clickEl); this.lastNode = false; this.updateTabs(); return; } if(this.clickHeight) { clickEl.style.height = this.clickHeight; if(this.lastNode)this.lastNode.style.height=this.clickHeight; } else{ clickEl.style.height = ''; if(this.lastNode)this.lastNode.style.height=''; } if(this.clickBorder){ clickEl.style.border = this.clickBorder; if(this.lastNode)this.lastNode.style.border=this.clickBorder; } else { clickEl.style.border = ''; if(this.lastNode)this.lastNode.style.border=''; } clickEl.style.opacity = 1; clickEl.style.filter = "alpha(opacity=100)"; if(this.lastNode){ this.lastNode.id = 'addLS' + addListStudioCount; subtabModules[this.lastNode.id] = this.lastNode.module; yahooSlots[this.lastNode.id] = new ygDDListStudio(this.lastNode.id, 'subTabs', false); addListStudioCount++; this.lastNode.style.opacity = 1; this.lastNode.style.filter = "alpha(opacity=100)"; } this.lastNode = false; this.updateTabs(); }; ygDDListStudio.prototype.onDrag = function(e, id) { }; ygDDListStudio.prototype.onDragOver = function(e, id) { // this.logger.debug(this.id.toString() + " onDragOver " + id); var el; if(this.lastNode){ this.lastNode.parentNode.removeChild(this.lastNode); this.lastNode = false; } if(id.substr(0, 7) == 'modSlot'){ return; } if ("string" == typeof id) { el = YAHOO.util.DDM.getElement(id); } else { el = YAHOO.util.DDM.getBestMatch(id).getEl(); } dragEl = this.getDragEl(); elRegion = YAHOO.util.Dom.getRegion(el); var mid = YAHOO.util.DDM.getPosY(el) + (Math.floor((elRegion.bottom - elRegion.top) / 2)); var el2 = this.getEl(); var p = el.parentNode; if( (this.fromOnly || ( el.id != 'trashcan' && el2.parentNode.id != p.id && el2.parentNode.id == this.parentID)) ){ if(typeof(moduleTabs[p.id.substr(2,p.id.length)][subtabModules[el2.id]]) != 'undefined')return; } if(this.fromOnly && el.id != 'trashcan'){ el2 = el2.cloneNode(true); el2.module = subtabModules[el2.id]; el2.id = 'addListStudio' + addListStudioCount; this.lastNode = el2; this.lastNode.clickContent = el2.clickContent; this.lastNode.clickBorder = el2.clickBorder; this.lastNode.clickHeight = el2.clickHeight } if (YAHOO.util.DDM.getPosY(dragEl) < mid ) { // insert on top triggering item p.insertBefore(el2, el); } if (YAHOO.util.DDM.getPosY(dragEl) >= mid ) { // insert below triggered item p.insertBefore(el2, el.nextSibling); } }; ygDDListStudio.prototype.onDragEnter = function(e, id) { }; ygDDListStudio.prototype.onDragOut = function(e, id) { } ///////////////////////////////////////////////////////////////////////////// function ygDDListStudioBoundary(id, sGroup) { if (id) { this.init(id, sGroup); this.isBoundary = true; } } ygDDListStudioBoundary.prototype = new YAHOO.util.DDTarget();