/********************************************************************************* * SugarCRM Community Edition is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004-2011 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". ********************************************************************************/ /** * Helper function used in send_backs to close the popup window if closePopup is true. */ function closePopup() { var closePopup = window.opener.get_close_popup(); if (closePopup) { window.close(); } } /** * Bug: 48726 * Helper function used in send_backs to show confirm dialog with appropriate message. * Collects label data from the the parent window. * * If similar bugs appear, please refer to Bug 48726, and use these helper functions. */ function confirmDialog(arrayContents, formName) { var newData = ''; var labels = ''; var oldData = ''; eval("var data = {" + arrayContents.join(",") + "}"); var opener = window.opener.document; for (var key in data) { var displayValue = replaceHTMLChars(data[key]); if (opener.forms[formName] && opener.getElementById(key + '_label') != null && !key.match(/account/)) { var dataLabel = opener.getElementById(key + '_label').innerHTML.replace(/\n/gi,'').replace(/<\/?[^>]+(>|$)/g, ""); labels += dataLabel + ' \n'; newData += dataLabel + ' ' + displayValue + '\n'; if(window.opener.document.forms[formName].elements[key]) { oldData += dataLabel + ' ' + opener.forms[formName].elements[key].value + '\n'; } } } var popupConfirm = 0; if (data['account_id'] && (newData.split("\n").length - 1) > 2) { if(newData != oldData && oldData != labels) { if(confirm(SUGAR.language.get('app_strings', 'NTC_OVERWRITE_ADDRESS_PHONE_CONFIRM') + '\n\n' + newData)) { popupConfirm = 1; } else { popupConfirm = -1; } } } return popupConfirm; } function send_back(module, id) { var associated_row_data = associated_javascript_data[id]; // cn: bug 12274 - stripping false-positive security envelope eval("var temp_request_data = " + window.document.forms['popup_query_form'].request_data.value); if(temp_request_data.jsonObject) { var request_data = temp_request_data.jsonObject; } else { var request_data = temp_request_data; // passed data that is NOT incorrectly encoded via JSON.encode(); } // cn: end bug 12274 fix var passthru_data = Object(); if(typeof(request_data.passthru_data) != 'undefined') { passthru_data = request_data.passthru_data; } var form_name = request_data.form_name; var field_to_name_array = request_data.field_to_name_array; var call_back_function = eval("window.opener." + request_data.call_back_function); var array_contents = Array(); // constructs the array of values associated to the bean that the user clicked for(var the_key in field_to_name_array) { if(the_key != 'toJSON') { var the_name = field_to_name_array[the_key]; var the_value = ''; if(module != '' && id != '') { if(associated_row_data['DOCUMENT_NAME'] && the_key.toUpperCase() == "NAME"){ the_value = associated_row_data['DOCUMENT_NAME']; } else if((the_key.toUpperCase() == 'USER_NAME' || the_key.toUpperCase() == 'LAST_NAME' || the_key.toUpperCase() == 'FIRST_NAME') && typeof(is_show_fullname) != 'undefined' && is_show_fullname && form_name != 'search_form') {//if it is from searchform, it will search by assigned_user_name like 'ABC%', then it will return nothing the_value = associated_row_data['FULL_NAME']; } else { the_value = associated_row_data[the_key.toUpperCase()]; } } if (typeof(the_value) == 'string') { the_value = the_value.replace(/\r\n|\n|\r/g, '\\n'); } array_contents.push('"' + the_name + '":"' + the_value + '"'); } } var popupConfirm = confirmDialog(array_contents, form_name); eval("var name_to_value_array = {" + array_contents.join(",") + "}"); closePopup(); var result_data = {"form_name":form_name,"name_to_value_array":name_to_value_array,"passthru_data":passthru_data,"popupConfirm":popupConfirm}; call_back_function(result_data); } function send_back_teams(module, form, field, error_message, request_data, form_team_id) { var array_contents = Array(); if(form_team_id){ array_contents.push(form_team_id); }else{ var j=0; for (i = 0; i < form.elements.length; i++){ if(form.elements[i].name == field) { if (form.elements[i].checked == true) { array_contents.push(form.elements[i].value); } } } } if (array_contents.length ==0 ) { window.alert(error_message); return; } var field_to_name_array = request_data.field_to_name_array; var array_teams = new Array(); for(team_id in array_contents) { if(typeof array_contents[team_id] == 'string') { var team = {"team_id" : associated_javascript_data[array_contents[team_id]].ID, "team_name" : associated_javascript_data[array_contents[team_id]].NAME}; array_teams.push(team); } } var passthru_data = Object(); if(typeof request_data.call_back_function == 'undefined' && typeof request_data == 'object') { request_data = YAHOO.lang.JSON.parse(request_data.value); } if(typeof(request_data.passthru_data) != 'undefined') { passthru_data = request_data.passthru_data; } var form_name = request_data.form_name; var field_name = request_data.field_name; closePopup(); var call_back_function = eval("window.opener." + request_data.call_back_function); var result_data={"form_name":form_name,"field_name":field_name,"teams":array_teams,"passthru_data":passthru_data}; call_back_function(result_data); } function send_back_selected(module, form, field, error_message, request_data) { var array_contents = Array(); var j=0; for (i = 0; i < form.elements.length; i++){ if(form.elements[i].name == field) { if (form.elements[i].checked == true) { ++j; array_contents.push('"' + "ID_" + j + '":"' + form.elements[i].value + '"'); } } } if (array_contents.length ==0 ) { window.alert(error_message); return; } eval("var selection_list_array = {" + array_contents.join(",") + "}"); // cn: bug 12274 - stripping false-positive security envelope eval("var temp_request_data = " + window.document.forms['popup_query_form'].request_data.value); if(temp_request_data.jsonObject) { var request_data = temp_request_data.jsonObject; } else { var request_data = temp_request_data; // passed data that is NOT incorrectly encoded via JSON.encode(); } // cn: end bug 12274 fix var passthru_data = Object(); if(typeof(request_data.passthru_data) != 'undefined') { passthru_data = request_data.passthru_data; } var form_name = request_data.form_name; var field_to_name_array = request_data.field_to_name_array; closePopup(); var call_back_function = eval("window.opener." + request_data.call_back_function); var result_data={"form_name":form_name,"selection_list":selection_list_array ,"passthru_data":passthru_data,"select_entire_list":form.select_entire_list.value,"current_query_by_page":form.current_query_by_page.value}; call_back_function(result_data); } function toggleMore(spanId, img_id, module, action, params){ toggle_more_go = function() { oReturn = function(body, caption, width, theme) { return overlib(body, CAPTION, caption, STICKY, MOUSEOFF, 1000, WIDTH, width, CLOSETEXT, (''), CLOSETITLE, 'Click to Close', CLOSECLICK, FGCLASS, 'olFgClass', CGCLASS, 'olCgClass', BGCLASS, 'olBgClass', TEXTFONTCLASS, 'olFontClass', CAPTIONFONTCLASS, 'olCapFontClass', CLOSEFONTCLASS, 'olCloseFontClass', REF, spanId, REFC, 'LL', REFX, 13); } success = function(data) { eval(data.responseText); SUGAR.util.additionalDetailsCache[spanId] = new Array(); SUGAR.util.additionalDetailsCache[spanId]['body'] = result['body']; SUGAR.util.additionalDetailsCache[spanId]['caption'] = result['caption']; SUGAR.util.additionalDetailsCache[spanId]['width'] = result['width']; SUGAR.util.additionalDetailsCache[spanId]['theme'] = result['theme']; ajaxStatus.hideStatus(); return oReturn(SUGAR.util.additionalDetailsCache[spanId]['body'], SUGAR.util.additionalDetailsCache[spanId]['caption'], SUGAR.util.additionalDetailsCache[spanId]['width'], SUGAR.util.additionalDetailsCache[spanId]['theme']); } if(typeof SUGAR.util.additionalDetailsCache[spanId] != 'undefined') return oReturn(SUGAR.util.additionalDetailsCache[spanId]['body'], SUGAR.util.additionalDetailsCache[spanId]['caption'], SUGAR.util.additionalDetailsCache[spanId]['width'], SUGAR.util.additionalDetailsCache[spanId]['theme']); if(typeof SUGAR.util.additionalDetailsCalls[spanId] != 'undefined') // call already in progress return; ajaxStatus.showStatus(SUGAR.language.get('app_strings', 'LBL_LOADING')); url = 'index.php?module='+module+'&action='+action+'&'+params; SUGAR.util.additionalDetailsCalls[spanId] = YAHOO.util.Connect.asyncRequest('GET', url, {success: success, failure: success}); return false; } SUGAR.util.additionalDetailsRpcCall = window.setTimeout('toggle_more_go()', 250); } // The following line of code was copy / pasted in a whole bunch of modules. SUGAR.util.doWhen("window.document.forms['popup_query_form'] != null " + "&& typeof(window.document.forms['popup_query_form'].request_data) != 'undefined'", function() { /* initialize the popup request from the parent */ if(window.document.forms['popup_query_form'].request_data.value == "") { window.document.forms['popup_query_form'].request_data.value = window.opener.get_popup_request_data(); } } );