]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/generic/SugarWidgets/SugarWidgetSubPanelTopButtonQuickCreate.php
Release 6.2.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-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         function &_get_form($defines, $additionalFormFields = null)
47         {
48                 global $app_strings;
49                 global $currentModule;
50
51                 // Create the additional form fields with real values if they were not passed in
52                 if(empty($additionalFormFields) && $this->additional_form_fields)
53                 {
54                         foreach($this->additional_form_fields as $key=>$value)
55                         {
56                                 if(!empty($defines['focus']->$value))
57                                 {
58                                         $additionalFormFields[$key] = $defines['focus']->$value;
59                                 }
60                                 else
61                                 {
62                                         $additionalFormFields[$key] = '';
63                                 }
64                         }
65                 }
66
67                 if(!empty($this->module))
68                 {
69                         $defines['child_module_name'] = $this->module;
70                 }
71                 else
72                 {
73                         $defines['child_module_name'] = $defines['module'];
74                 }
75
76                 $defines['parent_bean_name'] = get_class( $defines['focus']);
77                 $relationship_name = $this->get_subpanel_relationship_name($defines);
78
79                 $form = 'form' . $relationship_name;
80                 $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";
81
82                 //module_button is used to override the value of module name
83                 $button .= "<input type='hidden' name='target_module' value='".$defines['child_module_name']."'>\n";
84                 $button .= "<input type='hidden' name='".strtolower($defines['parent_bean_name'])."_id' value='".$defines['focus']->id."'>\n";
85
86                 if(isset($defines['focus']->name))
87                 {
88                         $button .= "<input type='hidden' name='".strtolower($defines['parent_bean_name'])."_name' value='".$defines['focus']->name."'>";
89                         #26451,add these fields for custom one-to-many relate field.
90             if(!empty($defines['child_module_name'])){
91                 $button .= "<input type='hidden' name='". $relationship_name ."_name' value='".$defines['focus']->name."'>";
92                 $childFocusName = !empty($GLOBALS['beanList'][$defines['child_module_name']]) ? $GLOBALS['beanList'][$defines['child_module_name']] : "";
93                 if(!empty($GLOBALS['dictionary'][ $childFocusName ]["fields"][$relationship_name .'_name']['id_name'])){
94                         $button .= "<input type='hidden' name='". $GLOBALS['dictionary'][ $childFocusName ]["fields"][$relationship_name .'_name']['id_name'] ."' value='".$defines['focus']->id."'>";
95                 }
96             }
97                 }
98                 if(!empty($defines['view']))
99                 $button .= '<input type="hidden" name="target_view" value="'. $defines['view'] . '" />';
100                 $button .= '<input type="hidden" name="to_pdf" value="true" />';
101         $button .= '<input type="hidden" name="tpl" value="QuickCreate.tpl" />';
102                 $button .= '<input type="hidden" name="return_module" value="' . $currentModule . "\" />\n";
103                 $button .= '<input type="hidden" name="return_action" value="' . $defines['action'] . "\" />\n";
104                 $button .= '<input type="hidden" name="return_id" value="' . $defines['focus']->id . "\" />\n";
105                 $button .= '<input type="hidden" name="return_relationship" value="' . $relationship_name . "\" />\n";   
106                 // TODO: move this out and get $additionalFormFields working properly
107                 if(empty($additionalFormFields['parent_type']))
108                 {
109                         if($defines['focus']->object_name=='Contact') {
110                                 $additionalFormFields['parent_type'] = 'Accounts';
111                         }
112                         else {
113                                 $additionalFormFields['parent_type'] = $defines['focus']->module_dir;
114                         }
115                 }
116                 if(empty($additionalFormFields['parent_name']))
117                 {
118                         if($defines['focus']->object_name=='Contact') {
119                                 $additionalFormFields['parent_name'] = $defines['focus']->account_name;
120                                 $additionalFormFields['account_name'] = $defines['focus']->account_name;
121                         }
122                         else {
123                                 $additionalFormFields['parent_name'] = $defines['focus']->name;
124                         }
125                 }
126                 if(empty($additionalFormFields['parent_id']))
127                 {
128                         if($defines['focus']->object_name=='Contact') {
129                                 $additionalFormFields['parent_id'] = $defines['focus']->account_id;
130                                 $additionalFormFields['account_id'] = $defines['focus']->account_id;
131                         }
132                         else {
133                                 $additionalFormFields['parent_id'] = $defines['focus']->id;
134                         }
135                 }
136
137         if(strtolower($defines['child_module_name']) =='contracts') {
138             //set variables to account name, or parent account name
139             if(strtolower($defines['parent_bean_name']) == 'account' ){
140                 //if account is parent bean, then get focus id/focus name
141                 if(isset($defines['focus']->id))$additionalFormFields['account_id'] = $defines['focus']->id;
142                 if(isset($defines['focus']->name))$additionalFormFields['account_name'] = $defines['focus']->name;
143             }elseif(strtolower($defines['parent_bean_name']) == 'quote' ){
144                 //if quote is parent bean, then get billing_account_id/billing_account_name
145                 if(isset($defines['focus']->billing_account_id))$additionalFormFields['account_id'] = $defines['focus']->billing_account_id;
146                 if(isset($defines['focus']->billing_account_name))$additionalFormFields['account_name'] = $defines['focus']->billing_account_name;
147             }else{
148                 if(isset($defines['focus']->account_id))$additionalFormFields['account_id'] = $defines['focus']->account_id;
149                 if(isset($defines['focus']->account_name))$additionalFormFields['account_name'] = $defines['focus']->account_name;
150             }
151         }
152
153                 $button .= '<input type="hidden" name="action" value="SubpanelCreates" />' . "\n";
154                 $button .= '<input type="hidden" name="module" value="Home" />' . "\n";
155                 $button .= '<input type="hidden" name="target_action" value="QuickCreate" />' . "\n";
156
157                 // fill in additional form fields for all but action
158                 foreach($additionalFormFields as $key => $value)
159                 {
160                         if($key != 'action')
161                         {
162                                 $button .= '<input type="hidden" name="' . $key . '" value=\'' . $value . '\' />' . "\n";
163                         }
164                 }
165
166                 return $button;
167         }
168         
169         /**
170          * get_subpanel_relationship_name
171          * Get the relationship name based on the subapnel definition
172          * @param mixed $defines The subpanel definition
173          */
174         function get_subpanel_relationship_name($defines) {
175                  $relationship_name = '';
176                  if(!empty($defines)) {
177                         $relationship_name = isset($defines['module']) ? $defines['module'] : '';
178                 $dataSource = $defines['subpanel_definition']->get_data_source_name(true);
179                 if (!empty($dataSource)) {
180                                 $relationship_name = $dataSource;
181                                 //Try to set the relationship name to the real relationship, not the link.
182                                 if (!empty($defines['subpanel_definition']->parent_bean->field_defs[$dataSource])
183                                  && !empty($defines['subpanel_definition']->parent_bean->field_defs[$dataSource]['relationship']))
184                                 {
185                                         $relationship_name = $defines['subpanel_definition']->parent_bean->field_defs[$dataSource]['relationship'];
186                                 }
187                         }
188                  }
189                  return $relationship_name;
190         }
191 }
192 ?>