]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/generic/SugarWidgets/SugarWidgetSubPanelTopButtonQuickCreate.php
Release 6.5.0
[Github/sugarcrm.git] / include / generic / SugarWidgets / SugarWidgetSubPanelTopButtonQuickCreate.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM Community Edition is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
6  * 
7  * This program is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Affero General Public License version 3 as published by the
9  * Free Software Foundation with the addition of the following permission added
10  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13  * 
14  * This program is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
17  * details.
18  * 
19  * You should have received a copy of the GNU Affero General Public License along with
20  * this program; if not, see http://www.gnu.org/licenses or write to the Free
21  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA.
23  * 
24  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26  * 
27  * The interactive user interfaces in modified source and object code versions
28  * of this program must display Appropriate Legal Notices, as required under
29  * Section 5 of the GNU Affero General Public License version 3.
30  * 
31  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32  * these Appropriate Legal Notices must retain the display of the "Powered by
33  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34  * technical reasons, the Appropriate Legal Notices must display the words
35  * "Powered by SugarCRM".
36  ********************************************************************************/
37
38
39
40
41
42
43 class SugarWidgetSubPanelTopButtonQuickCreate extends SugarWidgetSubPanelTopButton
44 {
45
46
47         function &_get_form($defines, $additionalFormFields = null)
48         {
49                 global $app_strings;
50                 global $currentModule;
51
52                 // Create the additional form fields with real values if they were not passed in
53                 if(empty($additionalFormFields) && $this->additional_form_fields)
54                 {
55                         foreach($this->additional_form_fields as $key=>$value)
56                         {
57                                 if(!empty($defines['focus']->$value))
58                                 {
59                                         $additionalFormFields[$key] = $defines['focus']->$value;
60                                 }
61                                 else
62                                 {
63                                         $additionalFormFields[$key] = '';
64                                 }
65                         }
66                 }
67
68                 if(!empty($this->module))
69                 {
70                         $defines['child_module_name'] = $this->module;
71                 }
72                 else
73                 {
74                         $defines['child_module_name'] = $defines['module'];
75                 }
76
77                 $defines['parent_bean_name'] = get_class( $defines['focus']);
78
79                 $relationship_name = $this->get_subpanel_relationship_name($defines);
80
81                 $form = 'form' . $relationship_name;
82                 $button = '<form onsubmit="return SUGAR.subpanelUtils.sendAndRetrieve(this.id, \'subpanel_' . $defines['subpanel_definition']->name . '\', \'' . addslashes($app_strings['LBL_LOADING']) . '\');" action="index.php" method="post" name="form" id="form' . $form . "\">\n";
83
84                 //module_button is used to override the value of module name
85                 $button .= "<input type='hidden' name='target_module' value='".$defines['child_module_name']."'>\n";
86                 $button .= "<input type='hidden' name='".strtolower($defines['parent_bean_name'])."_id' value='".$defines['focus']->id."'>\n";
87
88                 if(isset($defines['focus']->name))
89                 {
90                         $button .= "<input type='hidden' name='".strtolower($defines['parent_bean_name'])."_name' value='".$defines['focus']->name."'>";
91                         #26451,add these fields for custom one-to-many relate field.
92             if(!empty($defines['child_module_name'])){
93                 $button .= "<input type='hidden' name='". $relationship_name ."_name' value='".$defines['focus']->name."'>";
94                 $childFocusName = !empty($GLOBALS['beanList'][$defines['child_module_name']]) ? $GLOBALS['beanList'][$defines['child_module_name']] : "";
95                 if(!empty($GLOBALS['dictionary'][ $childFocusName ]["fields"][$relationship_name .'_name']['id_name'])){
96                         $button .= "<input type='hidden' name='". $GLOBALS['dictionary'][ $childFocusName ]["fields"][$relationship_name .'_name']['id_name'] ."' value='".$defines['focus']->id."'>";
97                 }
98             }
99             
100             //Set the return_name form variable that will allow EditView2.php 
101             $additionalFormFields['return_name'] = $defines['focus']->name;
102                 }
103                 
104                 if(!empty($defines['view']))
105                 $button .= '<input type="hidden" name="target_view" value="'. $defines['view'] . '" />';
106                 $button .= '<input type="hidden" name="to_pdf" value="true" />';
107         $button .= '<input type="hidden" name="tpl" value="QuickCreate.tpl" />';
108                 $button .= '<input type="hidden" name="return_module" value="' . $currentModule . "\" />\n";
109                 $button .= '<input type="hidden" name="return_action" value="' . $defines['action'] . "\" />\n";
110                 $button .= '<input type="hidden" name="return_id" value="' . $defines['focus']->id . "\" />\n";
111                 $button .= '<input type="hidden" name="return_relationship" value="' . $relationship_name . "\" />\n";
112                 $button .= '<input type="hidden" name="record" value="" />';
113
114                 // TODO: move this out and get $additionalFormFields working properly
115                 if(empty($additionalFormFields['parent_type']))
116                 {
117                         if($defines['focus']->object_name=='Contact') {
118                                 $additionalFormFields['parent_type'] = 'Accounts';
119                         }
120                         else {
121                                 $additionalFormFields['parent_type'] = $defines['focus']->module_dir;
122                         }
123                 }
124                 if(empty($additionalFormFields['parent_name']))
125                 {
126                         if($defines['focus']->object_name=='Contact') {
127                                 $additionalFormFields['parent_name'] = $defines['focus']->account_name;
128                                 $additionalFormFields['account_name'] = $defines['focus']->account_name;
129                         }
130                         else {
131                                 $additionalFormFields['parent_name'] = $defines['focus']->name;
132                         }
133                 }
134                 if(empty($additionalFormFields['parent_id']))
135                 {
136                         if($defines['focus']->object_name=='Contact') {
137                                 $additionalFormFields['parent_id'] = $defines['focus']->account_id;
138                                 $additionalFormFields['account_id'] = $defines['focus']->account_id;
139                         }
140                         else {
141                                 $additionalFormFields['parent_id'] = $defines['focus']->id;
142                         }
143                 }
144
145         if(strtolower($defines['child_module_name']) =='contracts') {
146             //set variables to account name, or parent account name
147             if(strtolower($defines['parent_bean_name']) == 'account' ){
148                 //if account is parent bean, then get focus id/focus name
149                 if(isset($defines['focus']->id))$additionalFormFields['account_id'] = $defines['focus']->id;
150                 if(isset($defines['focus']->name))$additionalFormFields['account_name'] = $defines['focus']->name;
151             }elseif(strtolower($defines['parent_bean_name']) == 'quote' ){
152                 //if quote is parent bean, then get billing_account_id/billing_account_name
153                 if(isset($defines['focus']->billing_account_id))$additionalFormFields['account_id'] = $defines['focus']->billing_account_id;
154                 if(isset($defines['focus']->billing_account_name))$additionalFormFields['account_name'] = $defines['focus']->billing_account_name;
155             }else{
156                 if(isset($defines['focus']->account_id))$additionalFormFields['account_id'] = $defines['focus']->account_id;
157                 if(isset($defines['focus']->account_name))$additionalFormFields['account_name'] = $defines['focus']->account_name;
158             }
159         }
160
161                 $button .= '<input type="hidden" name="action" value="SubpanelCreates" />' . "\n";
162                 $button .= '<input type="hidden" name="module" value="Home" />' . "\n";
163                 $button .= '<input type="hidden" name="target_action" value="QuickCreate" />' . "\n";
164
165                 // fill in additional form fields for all but action
166                 foreach($additionalFormFields as $key => $value)
167                 {
168                         if($key != 'action')
169                         {
170                                 $button .= '<input type="hidden" name="' . $key . '" value=\'' . $value . '\' />' . "\n";
171                         }
172                 }
173
174                 return $button;
175         }
176
177         /**
178          * get_subpanel_relationship_name
179          * Get the relationship name based on the subapnel definition
180          * @param mixed $defines The subpanel definition
181          */
182         function get_subpanel_relationship_name($defines) {
183                  $relationship_name = '';
184                  if(!empty($defines)) {
185                         $relationship_name = isset($defines['module']) ? $defines['module'] : '';
186                 $dataSource = $defines['subpanel_definition']->get_data_source_name(true);
187                 if (!empty($dataSource)) {
188                                 $relationship_name = $dataSource;
189                                 //Try to set the relationship name to the real relationship, not the link.
190                                 if (!empty($defines['subpanel_definition']->parent_bean->field_defs[$dataSource])
191                                  && !empty($defines['subpanel_definition']->parent_bean->field_defs[$dataSource]['relationship']))
192                                 {
193                                         $relationship_name = $defines['subpanel_definition']->parent_bean->field_defs[$dataSource]['relationship'];
194                                 }
195                         }
196                  }
197                  return $relationship_name;
198         }
199 }
200 ?>