217 lines
7.2 KiB
JavaScript
217 lines
7.2 KiB
JavaScript
/*+*******************************************************************************
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Original Code is: vtiger CRM Open Source
|
|
* The Initial Developer of the Original Code is vtiger.
|
|
* Portions created by vtiger are Copyright (C) vtiger.
|
|
* All Rights Reserved.
|
|
******************************************************************************/
|
|
|
|
/**
|
|
* Generic uitype popup selection handler
|
|
*/
|
|
function vtlib_setvalue_from_popup(recordid,value,target_fieldname) {
|
|
if(window.opener.document.EditView) {
|
|
var domnode_id = window.opener.document.EditView[target_fieldname];
|
|
var domnode_display = window.opener.document.EditView[target_fieldname+'_display'];
|
|
if(domnode_id) domnode_id.value = recordid;
|
|
if(domnode_display) domnode_display.value = value;
|
|
return true;
|
|
} else if(window.opener.document.QcEditView) {
|
|
var domnode_id = window.opener.document.QcEditView[target_fieldname];
|
|
var domnode_display = window.opener.document.QcEditView[target_fieldname+'_display'];
|
|
if(domnode_id) domnode_id.value = recordid;
|
|
if(domnode_display) domnode_display.value = value;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show the vtiger field help if available.
|
|
*/
|
|
function vtlib_field_help_show(basenode, fldname) {
|
|
var domnode = $('vtlib_fieldhelp_div');
|
|
|
|
if(typeof(fieldhelpinfo) == 'undefined') return;
|
|
|
|
var helpcontent = fieldhelpinfo[fldname];
|
|
if(typeof(helpcontent) == 'undefined') return;
|
|
|
|
if(!domnode) {
|
|
domnode = document.createElement('div');
|
|
domnode.id = 'vtlib_fieldhelp_div';
|
|
domnode.className = 'dvtSelectedCell';
|
|
domnode.style.position = 'absolute';
|
|
domnode.style.width = '150px';
|
|
domnode.style.padding = '4px';
|
|
domnode.style.fontWeight = 'normal';
|
|
document.body.appendChild(domnode);
|
|
|
|
domnode = $('vtlib_fieldhelp_div');
|
|
Event.observe(domnode, 'mouseover', function() {
|
|
$('vtlib_fieldhelp_div').show();
|
|
});
|
|
Event.observe(domnode, 'mouseout', vtlib_field_help_hide);
|
|
}
|
|
else {
|
|
domnode.show();
|
|
}
|
|
domnode.innerHTML = helpcontent;
|
|
fnvshobj(basenode,'vtlib_fieldhelp_div');
|
|
}
|
|
/**
|
|
* Hide the vtiger field help
|
|
*/
|
|
function vtlib_field_help_hide(evt) {
|
|
var domnode = $('vtlib_fieldhelp_div');
|
|
if(domnode) domnode.hide();
|
|
}
|
|
|
|
/**
|
|
* Listview Javascript Event handlers API
|
|
*
|
|
* Example:
|
|
* vtlib_listview.register('cell.onmouseover', function(evtparams, moreparams) { console.log(evtparams); }, [10,20]);
|
|
* vtlib_listview.register('cell.onmouseout', function(evtparams) {console.log(evtparams); });
|
|
*/
|
|
var vtlib_listview = {
|
|
/**
|
|
* Callback function handlers that needs to be triggered for an event
|
|
*
|
|
* _handlers = {
|
|
* 'event1' : [ [handlerfn11, handlerfn11_moreparams], [handlerfn2, handlerfn12_moreparams] ],
|
|
* 'event2' : [ [handlerfn21, handlerfn21_moreparams], [handlerfn2, handlerfn22_moreparams] ]
|
|
* }
|
|
*/
|
|
_handlers : {},
|
|
|
|
/**
|
|
* Register handler function for the event
|
|
*/
|
|
register : function(evttype, handler, callback_params) {
|
|
if(typeof(callback_params) == 'undefined') callback_params = false;
|
|
if(typeof(vtlib_listview._handlers[evttype]) == 'undefined') {
|
|
vtlib_listview._handlers[evttype] = [];
|
|
}
|
|
// Event handlerinfo is an array having (function, optional_more_parameters)
|
|
vtlib_listview._handlers[evttype].push([handler, callback_params]);
|
|
},
|
|
|
|
/**
|
|
* Invoke handler function based on event type
|
|
*/
|
|
invoke_handler : function(evttype, event_params) {
|
|
var evthandlers = vtlib_listview._handlers[evttype];
|
|
if(typeof(evthandlers) == 'undefined') return;
|
|
for(var index = 0; index < evthandlers.length; ++index) {
|
|
var evthandlerinfo = evthandlers[index];
|
|
// Event handlerinfo is an array having (function, optional_more_parameters)
|
|
var evthandlerfn = evthandlerinfo[0];
|
|
if(typeof(evthandlerfn) == 'function') {
|
|
evthandlerfn(event_params, evthandlerinfo[1]);
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Trigger handler function for the event
|
|
*/
|
|
trigger : function(evttype, node) {
|
|
if(evttype == 'cell.onmouseover' || evttype == 'cell.onmouseout') {
|
|
// Catch hold of DOM element which has meta inforamtion.
|
|
var innerNodes = node.getElementsByTagName('span');
|
|
if(typeof(innerNodes) != 'undefined') {
|
|
var cellhandler = false;
|
|
for(var index = 0; index < innerNodes.length; ++index) {
|
|
var innerNodeAttrs = innerNodes[index].attributes;
|
|
if(typeof(innerNodeAttrs) != 'undefined' && typeof(innerNodeAttrs.type) != 'undefined' && innerNodeAttrs['type'].nodeValue == 'vtlib_metainfo') {
|
|
cellhandler = innerNodes[index];
|
|
break;
|
|
}
|
|
}
|
|
if(cellhandler == false) return;
|
|
var event_params = {
|
|
'event' : evttype,
|
|
'domnode': node,
|
|
'module' : cellhandler.attributes['vtmodule'].nodeValue,
|
|
'fieldname': cellhandler.attributes['vtfieldname'].nodeValue,
|
|
'recordid': cellhandler.attributes['vtrecordid'].nodeValue
|
|
}
|
|
vtlib_listview.invoke_handler(evttype, event_params);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/** END **/
|
|
|
|
/**
|
|
* DetailView widget loader API
|
|
*/
|
|
function vtlib_loadDetailViewWidget(urldata, target, indicator) {
|
|
|
|
if(typeof(target) == 'undefined') {
|
|
target = false;
|
|
} else {
|
|
target = $(target);
|
|
}
|
|
if(typeof(indicator) == 'undefined') {
|
|
indicator = false;
|
|
} else {
|
|
indicator = $(indicator);
|
|
}
|
|
|
|
if(indicator) {
|
|
indicator.show();
|
|
}
|
|
|
|
new Ajax.Request('index.php',
|
|
{
|
|
queue: {
|
|
position: 'end',
|
|
scope: 'command'
|
|
},
|
|
method: 'post',
|
|
postBody:urldata,
|
|
onComplete: function(response) {
|
|
if(target) {
|
|
target.innerHTML = response.responseText;
|
|
if(indicator) {
|
|
indicator.hide();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
return false; // To stop event propogation
|
|
}
|
|
|
|
/**
|
|
* return themeurl
|
|
*
|
|
*/
|
|
function vtlib_vtiger_imageurl(theme){
|
|
return "themes/"+theme+"/images";
|
|
}
|
|
|
|
/*
|
|
* getElementsByClassName fix for I.E 8
|
|
*/
|
|
function vtlib_getElementsByClassName(obj,className,tagName){
|
|
//Use getElementsByClassName if it is supported
|
|
if ( typeof(obj.getElementsByClassName) != 'undefined' ) {
|
|
return obj.getElementsByClassName(className);
|
|
}
|
|
|
|
// Otherwise search for all tags of type tagname with class "className"
|
|
var returnList = new Array();
|
|
var nodes = obj.getElementsByTagName(tagName);
|
|
var max = nodes.length;
|
|
for ( var i = 0; i < max; i++ ) {
|
|
if ( nodes[i].className == className ) {
|
|
returnList[returnList.length] = nodes[i];
|
|
}
|
|
}
|
|
return returnList;
|
|
}
|