0
0
mirror of https://github.com/salesagility/SuiteCRM.git synced 2024-11-24 08:36:48 +00:00
salesagility_SuiteCRM/jssource/src_files/modules/Studio/studiodd.js
Horus68 34eb8562c6 Copyright notice update - Hotfix
Copyright notice update for hotfix branch
Changes: 
- Year 
- Double spaces
- Brand fix for SalesAgility Ltd. (was Salesagility Ltd)

Created from latest hotfix branch.
2018-08-01 20:14:25 +01:00

223 lines
8.0 KiB
JavaScript
Executable File

/**
*
* SugarCRM Community Edition is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
*
* SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd.
* Copyright (C) 2011 - 2018 SalesAgility Ltd.
*
* 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 and "Supercharged by SuiteCRM" logo. If the display of the logos is not
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
/*Portions Copyright (c) 2006 Yahoo! Inc. All rights reserved. */
/**
* @class a ygDDFramed implementation like ygDDMy, but the content channels are
* not restricted to one column, and we drag a miniature representation of the
* content channel rather than a frame of the channel.
*
* @extends YAHOO.util.DDProxy
* @constructor
* @param {String} id the id of the linked element
* @param {String} sGroup the group of related DragDrop objects
*/
function ygDDSlot(id, sGroup) {
if (id) {
this.init(id, sGroup);
this.initFrame();
}
// Change the style of the frame to be a miniature representation of a
// content channel
var s = this.getDragEl().style;
s.borderColor = "transparent";
s.backgroundColor = "#f6f5e5";
s.opacity = 0.76;
s.filter = "alpha(opacity=76)";
// Specify that we do not want to resize the drag frame... we want to keep
// the drag frame the size of our miniature content channel image
this.resizeFrame = true;
if(id == 's_field_delete'){
this.isValidHandle = false;
}
// Specify that we want the drag frame centered around the cursor rather
// than relative to the click location so that the miniature content
// channel appears in the location that was clicked
//this.centerFrame = true;
}
ygDDSlot.prototype = new YAHOO.util.DDProxy();
ygDDSlot.prototype.handleDelete = function(cur, curb){
var parentID = (typeof(cur.parentID) == 'undefined')?cur.id.substr(4,cur.id.length):cur.parentID ;
if(parentID.indexOf('field') == 0){
return false;
}
var myfieldcount = field_count_MSI;
addNewField('dyn_field_' + field_count_MSI, 'delete', ' ', ' ', 'deleted', 0, 'studio_fields')
yahooSlots["dyn_field_" + myfieldcount] = new ygDDSlot("dyn_field_" + myfieldcount, "studio");
ygDDSlot.prototype.handleSwap(cur, curb, document.getElementById("dyn_field_" + myfieldcount), document.getElementById("dyn_field_" + myfieldcount+ 'b'), true);
}
ygDDSlot.prototype.undo = function(transaction){
ygDDSlot.prototype.handleSwap(document.getElementById(transaction['el']),document.getElementById(transaction['elb']), document.getElementById(transaction['cur']), document.getElementById(transaction['curb']), false);
}
ygDDSlot.prototype.redo = function(transaction){
ygDDSlot.prototype.handleSwap(document.getElementById(transaction['el']),document.getElementById(transaction['elb']), document.getElementById(transaction['cur']), document.getElementById(transaction['curb']), false);
}
ygDDSlot.prototype.handleSwap = function(cur, curb,el, elb, record ){
if(record){
if(curb){
jstransaction.record('studioSwap', {'cur': cur.id, 'curb': curb.id, 'el':el.id, 'elb':elb.id});
}else{
jstransaction.record('studioSwap', {'cur': cur.id, 'curb': null, 'el':el.id, 'elb':null});
}
}
var parentID1 = (typeof(el.parentID) == 'undefined')?el.id.substr(4,el.id.length):el.parentID ;
var parentID2 = (typeof(cur.parentID) == 'undefined')?cur.id.substr(4,cur.id.length):cur.parentID ;
var slot1 = YAHOO.util.DDM.getElement("slot_" + parentID1);
var slot2 = YAHOO.util.DDM.getElement("slot_" + parentID2);
var temp = slot1.value;
slot1.value = slot2.value;
slot2.value = temp;
YAHOO.util.DDM.swapNode(cur, el);
if(curb){
YAHOO.util.DDM.swapNode(curb, elb);
}
//swap ids also or else form swaps don't work properly since the actual div is swapped
cur.parentID = parentID1;
el.parentID = parentID2;
if(parentID1.indexOf('field') == 0){
if(curb)curb.style.display = 'none';
setMouseOverForField(cur, true);
}else{
if(curb)curb.style.display = 'inline';
setMouseOverForField(cur, false);
}
if(parentID2.indexOf('field') == 0){
if(elb)elb.style.display = 'none';
setMouseOverForField(el, true);
}else{
if(elb)elb.style.display = 'inline';
setMouseOverForField(el, false);
}
}
ygDDSlot.prototype.onDragDrop = function(e, id) {
var cur = this.getEl();
var curb;
if ("string" == typeof id) {
curb = YAHOO.util.DDM.getElement(cur.id + "b");
} else {
curb = YAHOO.util.DDM.getBestMatch(cur.id + "b").getEl();
}
if(id == 's_field_delete'){
id = ygDDSlot.prototype.handleDelete(cur, curb);
if(!id)return false;
}
var el;
if ("string" == typeof id) {
el = YAHOO.util.DDM.getElement(id);
} else {
el = YAHOO.util.DDM.getBestMatch(id).getEl();
}
id2 = el.id + "b";
if ("string" == typeof id) {
elb =YAHOO.util.DDM.getElement(id2);
} else {
elb =YAHOO.util.DDM.getBestMatch(id2).getEl();
}
ygDDSlot.prototype.handleSwap(cur, curb, el, elb, true)
var dragEl = this.getDragEl();
dragEl.innerHTML = '';
};
ygDDSlot.prototype.startDrag = function(x, y) {
var dragEl = this.getDragEl();
var clickEl = this.getEl();
dragEl.innerHTML = clickEl.innerHTML;
dragEl.className = clickEl.className;
dragEl.style.color = clickEl.style.color;
dragEl.style.border = "2px 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);
dragEl.style.height = clickEl.style.height;
dragEl.style.width = (clickElRegion.right - clickElRegion.left) + 'px';
clickEl.style.height = (clickElRegion.bottom - clickElRegion.top) + 'px';
//clickEl.innerHTML = ' ';
clickEl.style.border = '2px dashed #cccccc';
clickEl.style.opacity = .5;
clickEl.style.filter = "alpha(opacity=10)";
};
ygDDSlot.prototype.endDrag = function(e) {
// disable moving the linked element
var clickEl = this.getEl();
//clickEl.innerHTML = this.clickContent
if(this.clickHeight)
clickEl.style.height = this.clickHeight;
else
clickEl.style.height = '';
if(this.clickBorder)
clickEl.style.border = this.clickBorder;
else
clickEl.style.border = '';
clickEl.style.opacity = 1;
clickEl.style.filter = "alpha(opacity=100)";
};
jstransaction.register('studioSwap',ygDDSlot.prototype.undo, ygDDSlot.prototype.redo);