]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - jssource/src_files/modules/EAPM/EAPMEdit.js
Release 6.5.15
[Github/sugarcrm.git] / jssource / src_files / modules / EAPM / EAPMEdit.js
1 /*********************************************************************************
2  * SugarCRM Community Edition is a customer relationship management program developed by
3  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
4  * 
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.
11  * 
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
15  * details.
16  * 
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
20  * 02110-1301 USA.
21  * 
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.
24  * 
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.
28  * 
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  ********************************************************************************/
35
36
37 /**
38  * Edit functions for EAPM
39  */
40 function EAPMChange() {
41     var apiName = '';
42
43     if ( EAPMFormName == 'EditView' ) {
44         apiName = document.getElementById('application').value;
45     } else {
46         apiName = document.getElementById('application_raw').value;
47     }
48     if(SUGAR.eapm[apiName]){
49         var apiOpts = SUGAR.eapm[apiName];
50
51         var urlObj = new SUGAR.forms.VisibilityAction('url',(apiOpts.needsUrl?'true':'false'), EAPMFormName);
52         urlObj.setContext(new SUGAR.forms.FormExpressionContext(this.form));
53         if ( EAPMFormName == 'EditView' ) {
54             EAPMSetFieldRequired('url',(apiOpts.needsUrl == true));
55         }
56
57         var userObj = new SUGAR.forms.VisibilityAction('name',((apiOpts.authMethod=='password')?'true':'false'), EAPMFormName);
58         userObj.setContext(new SUGAR.forms.FormExpressionContext(this.form));
59         if ( EAPMFormName == 'EditView' ) {
60             EAPMSetFieldRequired('name',(apiOpts.authMethod == 'password'));
61         }
62
63         var passObj = new SUGAR.forms.VisibilityAction('password',((apiOpts.authMethod=='password')?'true':'false'), EAPMFormName);
64         passObj.setContext(new SUGAR.forms.FormExpressionContext(this.form));
65         if ( EAPMFormName == 'EditView' ) {
66             EAPMSetFieldRequired('password',(apiOpts.authMethod == 'password'));
67         }
68
69         urlObj.exec();
70         userObj.exec();
71         passObj.exec();
72
73         //hide/show new window notice
74         var messageDiv = document.getElementById('eapm_notice_div');
75         if ( typeof messageDiv != 'undefined' && messageDiv != null ) {
76             if(apiOpts.authMethod){
77                 if(apiOpts.authMethod == "oauth"){
78                     messageDiv.innerHTML = EAPMOAuthNotice;
79                 }else{
80                     messageDiv.innerHTML = EAPMBAsicAuthNotice;
81                 }
82             }else{
83                 messageDiv.innerHTML = EAPMBAsicAuthNotice;
84             }
85         }
86     }
87 }
88
89 function EAPMSetFieldRequired(fieldName, isRequired) {
90     var formname = 'EditView';
91     for(var i = 0; i < validate[formname].length; i++){
92                 if(validate[formname][i][0] == fieldName){
93             validate[formname][i][2] = isRequired;
94                 }
95     }
96 }
97
98 function EAPMEditStart(userIsAdmin) {
99     var apiElem = document.getElementById('application');
100
101     EAPM_url_validate = null;
102     EAPM_name_validate = null;
103     EAPM_password_validate = null;
104
105     apiElem.onchange = EAPMChange;
106
107     setTimeout(EAPMChange,100);
108     
109     if ( !userIsAdmin ) {
110         // Disable the assigned user picker for non-admins
111         document.getElementById('assigned_user_name').parentNode.innerHTML = document.getElementById('assigned_user_name').value;
112     }
113
114     // Disable the app picker if we are editing an existing record.
115     if ( apiElem.form.record.value != '' ) {
116         apiElem.disabled = true;
117     }
118 }
119
120 var EAPMPopupCheckCount = 0;
121 function EAPMPopupCheck(newWin, popup_url, redirect_url, popup_warning_message) {
122     if ( newWin == false || newWin == null || typeof newWin.close != 'function' || EAPMPopupCheckCount > 35 ) {
123         // Opening the popup failed, redirect them to the popup_url
124         alert(popup_warning_message);
125         document.location = redirect_url;
126         return;
127     }
128     
129     if ( typeof(newWin.innerHeight) != 'undefined' && newWin.innerHeight != 0 ) {
130         // Popup was successful
131         document.location = redirect_url;
132         return;
133     }
134
135     // If we are here, we don't know if it worked or not.
136     EAPMPopupCheckCount++;
137     setTimeout(function() { EAPMPopupCheck(newWin, popup_url, redirect_url, popup_warning_message); },100);
138 }
139
140 function EAPMPopupAndRedirect(popup_url, redirect_url, popup_warning_message) {
141     var newWin = false;
142
143     try {
144         newWin = window.open(popup_url + '&closeWhenDone=1&refreshParentWindow=1','_blank');
145     } catch (e) {
146         newWin = false;
147     }
148
149     EAPMPopupCheck(newWin, popup_url, redirect_url, popup_warning_message);
150 }