]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/generic/SugarWidgets/SugarWidgetSubPanelTopButtonQuickCreate.php
Release 6.2.2
[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-2011 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 require_once('include/generic/SugarWidgets/SugarWidgetSubPanelTopButton.php');
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                 // TODO: move this out and get $additionalFormFields working properly
113                 if(empty($additionalFormFields['parent_type']))
114                 {
115                         if($defines['focus']->object_name=='Contact') {
116                                 $additionalFormFields['parent_type'] = 'Accounts';
117                         }
118                         else {
119                                 $additionalFormFields['parent_type'] = $defines['focus']->module_dir;
120                         }
121                 }
122                 if(empty($additionalFormFields['parent_name']))
123                 {
124                         if($defines['focus']->object_name=='Contact') {
125                                 $additionalFormFields['parent_name'] = $defines['focus']->account_name;
126                                 $additionalFormFields['account_name'] = $defines['focus']->account_name;
127                         }
128                         else {
129                                 $additionalFormFields['parent_name'] = $defines['focus']->name;
130                         }
131                 }
132                 if(empty($additionalFormFields['parent_id']))
133                 {
134                         if($defines['focus']->object_name=='Contact') {
135                                 $additionalFormFields['parent_id'] = $defines['focus']->account_id;
136                                 $additionalFormFields['account_id'] = $defines['focus']->account_id;
137                         }
138                         else {
139                                 $additionalFormFields['parent_id'] = $defines['focus']->id;
140                         }
141                 }
142
143         if(strtolower($defines['child_module_name']) =='contracts') {
144             //set variables to account name, or parent account name
145             if(strtolower($defines['parent_bean_name']) == 'account' ){
146                 //if account is parent bean, then get focus id/focus name
147                 if(isset($defines['focus']->id))$additionalFormFields['account_id'] = $defines['focus']->id;
148                 if(isset($defines['focus']->name))$additionalFormFields['account_name'] = $defines['focus']->name;
149             }elseif(strtolower($defines['parent_bean_name']) == 'quote' ){
150                 //if quote is parent bean, then get billing_account_id/billing_account_name
151                 if(isset($defines['focus']->billing_account_id))$additionalFormFields['account_id'] = $defines['focus']->billing_account_id;
152                 if(isset($defines['focus']->billing_account_name))$additionalFormFields['account_name'] = $defines['focus']->billing_account_name;
153             }else{
154                 if(isset($defines['focus']->account_id))$additionalFormFields['account_id'] = $defines['focus']->account_id;
155                 if(isset($defines['focus']->account_name))$additionalFormFields['account_name'] = $defines['focus']->account_name;
156             }
157         }
158
159                 $button .= '<input type="hidden" name="action" value="SubpanelCreates" />' . "\n";
160                 $button .= '<input type="hidden" name="module" value="Home" />' . "\n";
161                 $button .= '<input type="hidden" name="target_action" value="QuickCreate" />' . "\n";
162
163                 // fill in additional form fields for all but action
164                 foreach($additionalFormFields as $key => $value)
165                 {
166                         if($key != 'action')
167                         {
168                                 $button .= '<input type="hidden" name="' . $key . '" value=\'' . $value . '\' />' . "\n";
169                         }
170                 }
171
172                 return $button;
173         }
174         
175         /**
176          * get_subpanel_relationship_name
177          * Get the relationship name based on the subapnel definition
178          * @param mixed $defines The subpanel definition
179          */
180         function get_subpanel_relationship_name($defines) {
181                  $relationship_name = '';
182                  if(!empty($defines)) {
183                         $relationship_name = isset($defines['module']) ? $defines['module'] : '';
184                 $dataSource = $defines['subpanel_definition']->get_data_source_name(true);
185                 if (!empty($dataSource)) {
186                                 $relationship_name = $dataSource;
187                                 //Try to set the relationship name to the real relationship, not the link.
188                                 if (!empty($defines['subpanel_definition']->parent_bean->field_defs[$dataSource])
189                                  && !empty($defines['subpanel_definition']->parent_bean->field_defs[$dataSource]['relationship']))
190                                 {
191                                         $relationship_name = $defines['subpanel_definition']->parent_bean->field_defs[$dataSource]['relationship'];
192                                 }
193                         }
194                  }
195                  return $relationship_name;
196         }
197 }
198 ?>