]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/SugarFields/Fields/Parent/SugarFieldParent.php
Release 6.1.4
[Github/sugarcrm.git] / include / SugarFields / Fields / Parent / SugarFieldParent.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37 require_once('include/SugarFields/Fields/Base/SugarFieldBase.php');
38
39 class SugarFieldParent extends SugarFieldBase {
40    
41         function getDetailViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
42                 $nolink = array('Users', 'Teams');
43                 if(in_array($vardef['module'], $nolink)){
44                         $this->ss->assign('nolink', true);
45                 }else{
46                         $this->ss->assign('nolink', false);
47                 }
48         $this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);
49         return $this->fetch('include/SugarFields/Fields/Parent/DetailView.tpl');
50     }
51     
52     function getEditViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
53         $form_name = 'EditView';
54         if(isset($displayParams['formName'])) {
55                 $form_name = $displayParams['formName'];
56         }
57
58         $popup_request_data = array(
59                         'call_back_function' => 'set_return',
60                         'form_name' => $form_name,
61                         'field_to_name_array' => array(
62                                                                                         'id' => $vardef['id_name'],
63                                                                                         'name' => $vardef['name'],
64                                                                          ),
65                 );
66
67
68                 global $app_list_strings;
69                 $parent_types = $app_list_strings['record_type_display'];
70                 
71                 $disabled_parent_types = ACLController::disabledModuleList($parent_types,false, 'list');
72                 foreach($disabled_parent_types as $disabled_parent_type){
73                         if($disabled_parent_type != $focus->parent_type){
74                                 unset($parent_types[$disabled_parent_type]);
75                         }
76                 }
77                 asort($parent_types);
78                 $json = getJSONobj();
79                 $displayParams['popupData'] = '{literal}'.$json->encode($popup_request_data).'{/literal}';
80         $displayParams['disabled_parent_types'] = '<script>var disabledModules='. $json->encode($disabled_parent_types).';</script>';
81         $this->ss->assign('quickSearchCode', $this->createQuickSearchCode($form_name, $vardef));
82         $this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);        
83         return $this->fetch('include/SugarFields/Fields/Parent/EditView.tpl');
84     }
85         
86     function getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
87                 $form_name = 'search_form';
88                                 
89         if(isset($displayParams['formName'])) {
90                 $form_name = $displayParams['formName'];
91         }
92         
93         $this->ss->assign('form_name', $form_name);
94
95         $popup_request_data = array(
96                         'call_back_function' => 'set_return',
97                         'form_name' => $form_name,
98                         'field_to_name_array' => array(
99                                                                                         'id' => $vardef['id_name'],
100                                                                                         'name' => $vardef['name'],
101                                                                          ),
102                 );
103
104
105                 global $app_list_strings;
106                 $parent_types = $app_list_strings['record_type_display'];
107                 $disabled_parent_types = ACLController::disabledModuleList($parent_types,false, 'list');
108                 foreach($disabled_parent_types as $disabled_parent_type){
109                         if($disabled_parent_type != $focus->parent_type){
110                                 unset($parent_types[$disabled_parent_type]);
111                         }
112                 }
113
114                 $json = getJSONobj();
115                 $displayParams['popupData'] = '{literal}'.$json->encode($popup_request_data).'{/literal}';
116         $displayParams['disabled_parent_types'] = '<script>var disabledModules='. $json->encode($disabled_parent_types).';</script>';
117         $this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);        
118         return $this->fetch('include/SugarFields/Fields/Parent/SearchView.tpl');
119     }
120     
121     function createQuickSearchCode($formName = 'EditView', $vardef){
122         
123         require_once('include/QuickSearchDefaults.php');
124         $json = getJSONobj();
125         
126         $dynamicParentTypePlaceHolder = "**@**"; //Placeholder for dynamic parent so smarty tags are not escaped in json encoding.
127         $dynamicParentType = '{/literal}{if !empty($fields.parent_type.value)}{$fields.parent_type.value}{else}Accounts{/if}{literal}';
128         
129         //Get the parent sqs definition
130         $qsd = new QuickSearchDefaults();
131         $qsd->setFormName($formName);
132         $sqsFieldArray = $qsd->getQSParent($dynamicParentTypePlaceHolder);
133         $qsFieldName = $formName . "_" . $vardef['name'];
134         
135         //Build the javascript
136         $quicksearch_js = '<script language="javascript">';
137         $quicksearch_js.= "if(typeof sqs_objects == 'undefined'){var sqs_objects = new Array;}";
138         $quicksearch_js .= "sqs_objects['$qsFieldName']=" . str_replace($dynamicParentTypePlaceHolder, $dynamicParentType,$json->encode($sqsFieldArray)) .';';
139
140         return $quicksearch_js .= '</script>';
141     }
142 }
143 ?>