1 /*********************************************************************************
2 * SugarCRM Community Edition is a customer relationship management program developed by
3 * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU Affero General Public License version 3 as published by the
7 * Free Software Foundation with the addition of the following permission added
8 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
9 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
10 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
17 * You should have received a copy of the GNU Affero General Public License along with
18 * this program; if not, see http://www.gnu.org/licenses or write to the Free
19 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
23 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25 * The interactive user interfaces in modified source and object code versions
26 * of this program must display Appropriate Legal Notices, as required under
27 * Section 5 of the GNU Affero General Public License version 3.
29 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
30 * these Appropriate Legal Notices must retain the display of the "Powered by
31 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
32 * technical reasons, the Appropriate Legal Notices must display the words
33 * "Powered by SugarCRM".
34 ********************************************************************************/
39 var popup_request_data;
42 function get_popup_request_data()
44 return YAHOO.lang.JSON.stringify(window.document.popup_request_data);
47 function get_close_popup()
49 return window.document.close_popup;
52 function open_popup(module_name, width, height, initial_filter, close_popup, hide_clear_button, popup_request_data, popup_mode, create, metadata)
54 if (typeof(popupCount) == "undefined" || popupCount == 0)
56 // set the variables that the popup will pull from
57 window.document.popup_request_data = popup_request_data;
58 window.document.close_popup = close_popup;
59 //globally changing width and height of standard pop up window from 600 x 400 to 800 x 800
60 width = (width == 600) ? 800 : width;
61 height = (height == 400) ? 800 : height;
65 + 'module=' + module_name
68 if(initial_filter != '')
70 URL += '&query=true' + initial_filter;
75 URL += '&hide_clear_button=true';
78 windowName = module_name + '_popup_window' + popupCount;
81 windowFeatures = 'width=' + width
83 + ',resizable=1,scrollbars=1';
85 if (popup_mode == '' && popup_mode == 'undefined') {
88 URL+='&mode='+popup_mode;
89 if (create == '' && create == 'undefined') {
92 URL+='&create='+create;
94 if (metadata != '' && metadata != 'undefined') {
95 URL+='&metadata='+metadata;
98 win = window.open(URL, windowName, windowFeatures);
102 // put the focus on the popup if the browser supports the focus() method
106 win.popupCount = popupCount;
112 * The reply data must be a JSON array structured with the following information:
113 * 1) form name to populate
114 * 2) associative array of input names to values for populating the form
116 var from_popup_return = false;
117 function set_return(popup_reply_data)
119 from_popup_return = true;
120 var form_name = popup_reply_data.form_name;
121 var name_to_value_array = popup_reply_data.name_to_value_array;
123 for (var the_key in name_to_value_array)
125 if(the_key == 'toJSON')
131 var displayValue=name_to_value_array[the_key].replace(/&/gi,'&').replace(/</gi,'<').replace(/>/gi,'>').replace(/'/gi,'\'').replace(/"/gi,'"');;
132 if(window.document.forms[form_name] && window.document.forms[form_name].elements[the_key])
134 window.document.forms[form_name].elements[the_key].value = displayValue;
135 SUGAR.util.callOnChangeListers(window.document.forms[form_name].elements[the_key]);
141 function set_return_and_save(popup_reply_data)
143 var form_name = popup_reply_data.form_name;
144 var name_to_value_array = popup_reply_data.name_to_value_array;
146 for (var the_key in name_to_value_array)
148 if(the_key == 'toJSON')
154 window.document.forms[form_name].elements[the_key].value = name_to_value_array[the_key];
155 SUGAR.util.callOnChangeListers(window.document.forms[form_name].elements[the_key]);
159 window.document.forms[form_name].return_module.value = window.document.forms[form_name].module.value;
160 window.document.forms[form_name].return_action.value = 'DetailView';
161 window.document.forms[form_name].return_id.value = window.document.forms[form_name].record.value;
162 window.document.forms[form_name].action.value = 'Save';
163 window.document.forms[form_name].submit();
166 function set_return_and_save_targetlist(popup_reply_data)
168 var form_name = popup_reply_data.form_name;
169 var name_to_value_array = popup_reply_data.name_to_value_array;
170 var form_index = document.forms.length - 1;
171 sugarListView.get_checks();
172 var uids = document.MassUpdate.uid.value;
177 * Add the value returned from the popup to the form for submittal
179 for (var the_key in name_to_value_array)
181 if(the_key == 'toJSON')
187 for ( i = form_index; i >= 0; i--)
189 if ( form_name == window.document.forms[form_index] )
195 window.document.forms[form_index].elements[get_element_index(form_index,the_key)].value = name_to_value_array[the_key];
196 SUGAR.util.callOnChangeListers(window.document.forms[form_index].elements[get_element_index(form_index,the_key)]);
199 window.document.forms[form_index].elements[get_element_index(form_index,"return_module")].value = window.document.forms[form_index].elements[get_element_index(form_index,"module")].value;
200 window.document.forms[form_index].elements[get_element_index(form_index,"return_action")].value = 'ListView';
201 window.document.forms[form_index].elements[get_element_index(form_index,"uids")].value = uids;
202 window.document.forms[form_index].submit();
206 function get_element_index(form_index,element_name) {
208 while (j < window.document.forms[form_index].elements.length) {
209 if(window.document.forms[form_index].elements[j].name == element_name) {
220 * This is a helper function to construct the initial filter that can be
221 * passed into the open_popup() function. It assumes that there is an
222 * account_id and account_name field in the given form_name to use to
223 * construct the intial filter string.
225 function get_initial_filter_by_account(form_name)
227 var account_id = window.document.forms[form_name].account_id.value;
228 var account_name = escape(window.document.forms[form_name].account_name.value);
229 var initial_filter = "&account_id=" + account_id + "&account_name=" + account_name;
231 return initial_filter;