273 lines
12 KiB
JavaScript
Executable File
273 lines
12 KiB
JavaScript
Executable File
/*********************************************************************************
|
|
* SugarCRM is a customer relationship management program developed by
|
|
* SugarCRM, Inc. Copyright (C) 2004-2010 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".
|
|
********************************************************************************/
|
|
/**
|
|
Complex layout init
|
|
*/
|
|
function complexLayoutInit() {
|
|
var se = SUGAR.email2;
|
|
var Dom = YAHOO.util.Dom;
|
|
se.e2Layout = {
|
|
getInnerLayout : function(rows) {
|
|
se.listViewLayout = new YAHOO.widget.Layout('listViewDiv', {
|
|
parent: se.complexLayout,
|
|
border:true,
|
|
hideOnLayout: true,
|
|
height: 400,
|
|
units: [{
|
|
position: "center",
|
|
scroll:false, // grid should autoScroll itself
|
|
split:true,
|
|
body: "<div id='emailGrid'></div><div id='dt-pag-nav'></div> "
|
|
},{
|
|
position: "bottom",
|
|
scroll:true,
|
|
collapse: false,
|
|
resize: true,
|
|
useShim:true,
|
|
height:'250',
|
|
body: "<div id='listBottom' />"
|
|
},{
|
|
position: "right",
|
|
scroll:true,
|
|
collapse: false,
|
|
resize: true,
|
|
useShim:true,
|
|
width:'250',
|
|
body: "<div id='listRight' />",
|
|
titlebar: false //,header: "right"
|
|
}]
|
|
});
|
|
se.complexLayout.on("render", function(){
|
|
var height = SUGAR.email2.innerLayout.get("element").clientHeight - 30;
|
|
SUGAR.email2.innerLayout.get("activeTab").get("contentEl").parentNode.style.height = height + "px";
|
|
SUGAR.email2.listViewLayout.set("height", height);
|
|
SUGAR.email2.listViewLayout.render();
|
|
});
|
|
se.listViewLayout.render();
|
|
//CSS hack for now
|
|
se.listViewLayout.get("element").parentNode.parentNode.style.padding = "0px"
|
|
var rp = se.listViewLayout.resizePreview = function() {
|
|
var pre = Dom.get("displayEmailFramePreview");
|
|
if (pre) {
|
|
var parent = Dom.getAncestorByClassName(pre, "yui-layout-bd");
|
|
pre.style.height = (parent.clientHeight - pre.offsetTop) + "px";
|
|
}
|
|
};
|
|
se.listViewLayout.getUnitByPosition("bottom").on("heightChange", se.autoSetLayout);
|
|
se.listViewLayout.getUnitByPosition("right").on("endResize", se.autoSetLayout);
|
|
se.e2Layout.setPreviewPanel(rows);
|
|
se.previewLayout = se.listViewLayout;
|
|
return se.listViewLayout;
|
|
},
|
|
|
|
getInnerLayout2Rows : function() {
|
|
return this.getInnerLayout(true);
|
|
},
|
|
getInnerLayout2Columns : function() {
|
|
return this.getInnerLayout(false);
|
|
},
|
|
|
|
init : function(){
|
|
// initialize state manager, we will use cookies
|
|
// Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
|
|
var viewHeight = document.documentElement ? document.documentElement.clientHeight : self.innerHeight;
|
|
se.complexLayout = new YAHOO.widget.Layout("container", {
|
|
border:true,
|
|
hideOnLayout: true,
|
|
height: Dom.getViewportHeight() - (document.getElementById('header').clientHeight ) - 65,
|
|
width: Dom.getViewportWidth() - 40,
|
|
units: [{
|
|
position: "center",
|
|
scroll:false,
|
|
body: "<div id='emailtabs'></div>"
|
|
},
|
|
{
|
|
position: "left",
|
|
scroll: true,
|
|
body: "<div id='lefttabs'></div>",
|
|
collapse: true,
|
|
width: 210,
|
|
minWidth: 100,
|
|
resize:true,
|
|
useShim:true,
|
|
titlebar: true,
|
|
header: " "
|
|
},
|
|
{
|
|
header: Dom.get('footerLinks').innerHTML,
|
|
position: 'bottom',
|
|
id: 'mbfooter',
|
|
height: 22,
|
|
border: false
|
|
}]
|
|
});
|
|
se.complexLayout.render();
|
|
var tp = se.innerLayout = new YAHOO.widget.TabView("emailtabs");
|
|
tp.addTab(new YAHOO.widget.Tab({
|
|
label: "Inbox",
|
|
scroll : true,
|
|
content : "<div id='listViewDiv'/>",
|
|
id : "center",
|
|
active : true
|
|
}));
|
|
var centerEl = se.complexLayout.getUnitByPosition('center').get('wrap');
|
|
tp.appendTo(centerEl);
|
|
//CSS hack for now
|
|
tp.get("element").style.borderRight = "1px solid #666"
|
|
|
|
var listV = this.getInnerLayout2Rows();
|
|
listV.set("height", tp.get("element").clientHeight - 25);
|
|
listV.render();
|
|
|
|
se.leftTabs = new YAHOO.widget.TabView("lefttabs");
|
|
var folderTab = new YAHOO.widget.Tab({
|
|
label: app_strings.LBL_EMAIL_FOLDERS_SHORT,
|
|
scroll : true,
|
|
content : "<div id='emailtree'/>",
|
|
id : "tree",
|
|
active : true
|
|
});
|
|
folderTab.on("activeChange", function(o){
|
|
if (o.newValue) {
|
|
se.complexLayout.getUnitByPosition("left").set("header", app_strings.LBL_EMAIL_FOLDERS);
|
|
}
|
|
});
|
|
se.leftTabs.addTab(folderTab);
|
|
|
|
var tabContent = SUGAR.util.getAndRemove("searchTab");
|
|
var searchTab = new YAHOO.widget.Tab({
|
|
label: app_strings.LBL_EMAIL_SEARCH_SHORT,
|
|
scroll : true,
|
|
content : tabContent.innerHTML,
|
|
id : tabContent.id
|
|
});
|
|
searchTab.on("activeChange", function(o){
|
|
if (o.newValue)
|
|
{
|
|
se.complexLayout.getUnitByPosition("left").set("header", app_strings.LBL_EMAIL_SEARCH);
|
|
//Setup the calendars if needed
|
|
Calendar.setup ({inputField : "searchDateFrom", ifFormat : calFormat, showsTime : false, button : "jscal_trigger_from", singleClick : true, step : 1, weekNumbers:false});
|
|
Calendar.setup ({inputField : "searchDateTo", ifFormat : calFormat, showsTime : false, button : "jscal_trigger_to", singleClick : true, step : 1, weekNumbers:false});
|
|
|
|
//Initalize sqs object for assigned user name
|
|
se.e2Layout.initSQSObject('advancedSearchForm','assigned_user_name');
|
|
|
|
//Attach event handler for when the relate module option is selected for the correct sqs object
|
|
var parentSearchArgs = {'formName':'advancedSearchForm','fieldName':'data_parent_name_search',
|
|
'moduleSelectField':'data_parent_type_search','fieldId':'data_parent_id_search'};
|
|
YAHOO.util.Event.addListener('data_parent_type_search', 'change',function(){
|
|
SUGAR.email2.composeLayout.enableQuickSearchRelate(null,parentSearchArgs) });
|
|
|
|
//If enter key is pressed, perform search
|
|
var addKeyPressFields = ['searchSubject','searchFrom','searchTo','data_parent_name_search','searchDateTo','searchDateFrom','attachmentsSearch','assigned_user_name'];
|
|
for(var i=0; i < addKeyPressFields.length;i++)
|
|
{
|
|
YAHOO.util.Event.addListener(window.document.forms['advancedSearchForm'].elements[addKeyPressFields[i]],"keydown", function(e){
|
|
if (e.keyCode == 13) {
|
|
YAHOO.util.Event.stopEvent(e);
|
|
SUGAR.email2.search.searchAdvanced();
|
|
}
|
|
});
|
|
}
|
|
//Initiate quick search for the search tab. Do this only when the tab is selected rather than onDomLoad for perf. gains.
|
|
enableQS(true);
|
|
//Clear parent values if selecting another parent type.
|
|
YAHOO.util.Event.addListener('data_parent_type_search','change',
|
|
function(){
|
|
document.getElementById('data_parent_id_search').value ='';
|
|
document.getElementById('data_parent_name_search').value ='';
|
|
});
|
|
|
|
}
|
|
});
|
|
se.leftTabs.addTab(searchTab);
|
|
|
|
var resizeTabBody = function() {
|
|
var height = SUGAR.email2.leftTabs.get("element").clientHeight - 30;
|
|
SUGAR.email2.leftTabs.get("activeTab").get("contentEl").parentNode.style.height = height + "px";
|
|
}
|
|
resizeTabBody();
|
|
se.complexLayout.on("render", resizeTabBody);
|
|
se.leftTabs.on("activeTabChange", resizeTabBody);
|
|
//hack to allow left pane scroll bar to fully show
|
|
var lefttabsDiv = document.getElementById('lefttabs');
|
|
var lefttabsDivParent = Dom.getAncestorBy(lefttabsDiv);
|
|
var lefttabsDivGParent = Dom.getAncestorBy(lefttabsDivParent);
|
|
lefttabsDivParent.style.width = lefttabsDivGParent.offsetWidth - 10 + "px";
|
|
|
|
},
|
|
initSQSObject: function(formName,fieldName)
|
|
{
|
|
var fullFieldName = formName + '_' + fieldName; //SQS Convention
|
|
var resultName = fullFieldName + '_' + 'results';
|
|
|
|
if (QSFieldsArray[fullFieldName] != null)
|
|
{
|
|
QSFieldsArray[fullFieldName].destroy();
|
|
delete QSFieldsArray[fullFieldName];
|
|
}
|
|
if (QSProcessedFieldsArray[fullFieldName])
|
|
QSProcessedFieldsArray[fullFieldName] = false;
|
|
|
|
if( Dom.get(resultName) )
|
|
{
|
|
var obj = document.getElementById(resultName);
|
|
obj.parentNode.removeChild(obj);
|
|
}
|
|
},
|
|
setPreviewPanel: function(rows) {
|
|
if (rows) {
|
|
SUGAR.email2.listViewLayout.getUnitByPosition("right").set("width", 0);
|
|
SUGAR.email2.listViewLayout.getUnitByPosition("bottom").set("height", 250);
|
|
Dom.get("listRight").innerHTML = "";
|
|
Dom.get("listBottom").innerHTML = "<div id='_blank' />";
|
|
} else {
|
|
SUGAR.email2.listViewLayout.getUnitByPosition("bottom").set("height", 0);
|
|
SUGAR.email2.listViewLayout.getUnitByPosition("right").set("width", 250);
|
|
Dom.get("listBottom").innerHTML = "";
|
|
Dom.get("listRight").innerHTML = "<div id='_blank' />";
|
|
}
|
|
}
|
|
};
|
|
se.e2Layout.init();
|
|
}
|
|
|
|
var myBufferedListenerObject = new Object();
|
|
myBufferedListenerObject.refit = function() {
|
|
if(SUGAR.email2.grid) {
|
|
SUGAR.email2.grid.autoSize();
|
|
}
|
|
}
|