Friday, October 15, 2010

SugarCrm 5.5.2 Editview: Fieldlevel localizable tooltip in Module Builder

Sugar and module builder supports field specific help that will be shown as tooltip of a control in the different views. There is unfortunately no localization support for this in sugar (meaning that the tooltips will always be in one language).
This posting and hack adds that localization support of vardefs field help text.

The way this works is:

1. Create or edit a field in Module Builder. (You will notice a new help text & help label field.)
2. The default language help text needs to be entered in help text. (There is no need to modify help label name.)



3. Save the field.
4. Go to labels localization screen, change the desired language, find the field help label and enter localized value then save the label. Put the field in one of the layouts. Then deploy package.




5. Based on login language, help tool tip value will be shown from language file.




This customization is nonupgrade safe.
The following files have been modified

1. include/EditView/EditView2.php
a. Following block added in function display to assign localized help value to editview.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//HACK : -- Add localization to vardef field_help   
foreach($this->fieldDefs as $key => $val){
 $tempk = ''; $tempv='';
 if(isset($this->fieldDefs[$key]['help'])){
  $tempk = $this->fieldDefs[$key]['help'];
 }else{
  $tempk = "LBL_".mb_strtoupper($this->fieldDefs[$key]['name'])."_HELP";
 }
 $tempv = translate($tempk, $this->module);        
 if($tempv!=$tempk){
 //HACK :-- Translating help fields
  //$this->fieldDefs[$key]['help'] = $tempv;
  if($this->fieldDefs[$key]['type']=='radioenum'){
   $this->fieldDefs[$key]['help'] = $tempk;
  }else{
   $this->fieldDefs[$key]['help'] = "{php}echo smarty_function_sugar_translate(array('label' => '$tempk' ,'module' => '$this->module'), \$this);{/php}";
  }
 //HACK : -- Add localization to vardef field_help
 }else{
  $this->fieldDefs[$key]['help'] =''
 }
 if(isset($this->fieldDefs[$key]['validation']['functionName']) && !empty($this->fieldDefs[$key]['validation']['functionName'])){
  if(isset($this->fieldDefs[$key]['customjs'])){
     $tempscript.='{literal}<script type="text/javascript" language="Javascript">'.html_entity_decode($this->fieldDefs[$key]['customjs'],ENT_QUOTES).'</script>{/literal}';
  }
  if(isset($this->fieldDefs[$key]['validation'])&& is_array($this->fieldDefs[$key]['validation'])!=true){
     $this->fieldDefs[$key]['validation'] = unserialize(html_entity_decode($this->fieldDefs[$key]['validation']));
  }
 }
}
 $this->th->ss->assign('scriptBlocks', $tempscript);
//HACK :


2. include/SearchForm/SearchForm2.php
a. Following block added in function display to assign localized help value to editview.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//HACK : -- Add localization to vardef field_help 
foreach($this->fieldDefs as $key => $val){
 $tempk = ''; $tempv='';
 if(isset($this->fieldDefs[$key]['help'])){
  $tempk = $this->fieldDefs[$key]['help'];
 }else{
  $tempk = "LBL_".mb_strtoupper($this->fieldDefs[$key]['name'])."_HELP";
 }
 $tempv = translate($tempk, $this->module);        
 if($tempv!=$tempk){
 //HACK :-- Translating help fields
    //$this->fieldDefs[$key]['help'] = $tempv;
  if($this->fieldDefs[$key]['type']=='radioenum'){
   $this->fieldDefs[$key]['help'] = $tempk;
  }else{
   $this->fieldDefs[$key]['help'] = "{php}echo smarty_function_sugar_translate(array('label' => '$tempk' ,'module' => '$this->module'), \$this);{/php}";
  }
 //HACK : -- Add localization to vardef field_help
 }else{
  $this->fieldDefs[$key]['help'] =''
 }
}
//HACK :


3. modules/DynamicFields/DynamicField.php
a. In function addFieldObject, value of $fmd->help set from $field->help_label.
1
2
3
//HACK : -- Add localization to vardef field_help
$fmd->help = $field->help_label;
//HACK : -- Add localization to vardef field_help


4. modules/DynamicFields/templates/Fields/Forms/coreTop.tpl
a. Template modified for help label & its automatic assignment of value based on its field name.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<table width="100%">
<tr>
 <td class='mbLBL' width='30%' >{$MOD.COLUMN_TITLE_NAME}:</td>
 <td>
 {if $hideLevel == 0}
  {* HACK:  -- Add localization to vardef field_help
   Added javascript statement for automatic help label assignment *}
  <input id="field_name_id" maxlength=30 type="text" name="name" value="{$vardef.name}" onchange="document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase();
  document.getElementById('label_value_id').value = document.getElementById('field_name_id').value.replace(/_/,' ');
  document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase(); 
  document.getElementById('help_key_id').value = 'LBL_'+(document.getElementById('field_name_id').value.toUpperCase())+'_HELP';" />
  {* HACK:  *}
 {else}
  {* HACK:  -- Add localization to vardef field_help
   Added javascript statement for automatic help label assignment *}
  <input id= "field_name_id" maxlength=30 type="hidden" name="name" value="{$vardef.name}"
    onchange="document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase();
  document.getElementById('label_value_id').value = document.getElementById('field_name_id').value.replace(/_/,' ');
  document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase();
  document.getElementById('help_key_id').value = 'LBL_'+(document.getElementById('field_name_id').value.toUpperCase())+'_HELP';"/>{$vardef.name}{/if}
  {* HACK: *}
  <script>
  addToValidate('popup_form', 'name', 'DBName', true,'{$MOD.COLUMN_TITLE_NAME} [a-zA-Z_]' );
  addToValidateIsInArray('popup_form', 'name', 'in_array', true,'{$MOD.ERR_RESERVED_FIELD_NAME}', '{$field_name_exceptions}', 'u==');
  </script>
 </td>
</tr>
<tr>
 <td class='mbLBL'>{$MOD.COLUMN_TITLE_DISPLAY_LABEL}:</td>
 <td>
  <input id="label_value_id" type="text" name="labelValue" value="{$lbl_value}">
 </td>
</tr>
<tr>
 <td class='mbLBL'>{$MOD.COLUMN_TITLE_LABEL}:</td>
 <td>
 {if $hideLevel < 5}
  <input id ="label_key_id" type="text" name="label" value="{$vardef.vname}">
 {else}
  <input id ="label_key_id" type="hidden" name="label" value="{$vardef.vname}">{$vardef.vname}
 {/if}
 </td>
</tr>
{* HACK:  -- Add localization to vardef field_help ,Course module Accounting type does not work *}
<tr>
 <td class='mbLBL'>{$MOD.COLUMN_TITLE_HELP_TEXT}:</td>
 <td>
  <input type="text" id="help_value_id" name="help" value="{$vardef.help}" onchange="if(document.getElementById('help_key_id').value == '') document.getElementById('help_key_id').value='LBL_'+(document.getElementById('field_name_id').value.toUpperCase())+'_HELP';">
 </td>
</tr>
 
<tr>
 <td class='mbLBL'>{$MOD.COLUMN_TITLE_HELP_LABEL}:</td>
 <td>{if $hideLevel < 5 }
  <input type="text" id="help_key_id" name="help_label" value="{$vardef.help_label}">
  {else}
  <input type="hidden" id="help_key_id" name="help_label" value="{$vardef.help_label}">{$vardef.help_label}
  {/if}
 </td>
</tr>
{* HACK: *}
<tr>
    <td class='mbLBL'>{$MOD.COLUMN_TITLE_COMMENT_TEXT}:</td><td>{if $hideLevel < 5 }<input type="text" name="comments" value="{$vardef.comments}">{else}<input type="hidden" name="comment" value="{$vardef.comment}">{$vardef.comment}{/if}
    </td>
</tr>


5. modules/DynamicFields/templates/Fields/TemplateField.php
a. New class variable added
1
2
3
4
//HACK : -- Add localization to vardef field_help
// for initialisation of bean value.
var $help_label ='';
//HACK : -- Add localization to vardef field_help

b. New key value pair added to array for new vardef property help_label
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var $vardef_map = array(
 'name'=>'name',
 'label'=>'vname',
 // bug 15801 - need to ALWAYS keep default and default_value consistent as some methods/classes use one, some use another...
 'default_value'=>'default',
 'default'=>'default_value',
 //'default_value'=>'default_value',
 //'default'=>'default_value',
 'len'=>'len',
 'required'=>'required',
 'type'=>'type',
 'audited'=>'audited',
 'massupdate'=>'massupdate',
 'options'=>'ext1',
 'help'=>'help',
 'comments'=>'comment',
 'importable'=>'importable',
 'duplicate_merge'=>'duplicate_merge',
 //'duplicate_merge_dom_value'=>'duplicate_merge', //bug #14897
 'reportable' => 'reportable',
 'min'=>'ext1',
 'max'=>'ext2',
 'ext2'=>'ext2',
 'ext4'=>'ext4',
 //'disable_num_format'=>'ext3',
 'ext3'=>'ext3',
 'label_value'=>'label_value',
 
 //HACK :  -- Add localization to vardef field_help
 //used for vardef mapping.
 'help_label'=>'help_label',
 //HACK : 
);


6. modules/EditCustomFields/FieldsMetaData.php
a. In class FieldsMetaData 2 new class variable added.
1
2
3
4
//HACK : -- Add localization to vardef field_help
var $help;
var $help_label;
//HACK : -- Add localization to vardef field_help

b. 2 New key value pair added to array for new vardef property .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var $column_fields = array(
 'id',
 'name',
 'vname',
 'custom_module',
 'type',
 'len',
 'required',
 'default_value',
 'deleted',
 'ext1',
 'ext2',
 'ext3',
 //HACK : -- Add localization to vardef field_help
 'help',
 'help_label',
 //HACK :
 'audited',
 'massupdate',
 'duplicate_merge',
 'reportable',
);


7. modules/EditCustomFields/language/en_us.lang.php
a. Help label
1
2
3
4
// HACK : -- Add localization to vardef field_help
// label for the new help label
$mod_strings['COLUMN_TITLE_HELP_LABEL'] = 'Help Label';
// HACK : -- Add localization to vardef field_help


8. modules/EditCustomFields/vardefs.php
a. New field added for help_label.
1
2
3
4
// HACK : -- Add localization to vardef field_help
// Added for adding new field help label in module builder.
$dictionary['FieldsMetaData']['fields']['help_label']=array('name' =>'help_label' ,'type' =>'varchar','vname'=>'COLUMN_TITLE_LABEL', 'len'=>'255');
// HACK : -- Add localization to vardef field_help


9. modules/ModuleBuilder/controller.php
a. function action_SaveLabel modified to set value of help_label.
1
2
3
4
5
6
7
8
// HACK : -- Add localization to vardef field_help
 if (isset($_REQUEST['help_label']) && isset ($_REQUEST['help' ])){
 if(empty($_REQUEST['help_label'])){
  $_REQUEST['help_label']="LBL_".$_REQUEST['name']."_HELP";
 }
 $_REQUEST [ "label_" . $_REQUEST['help_label'] ] = $_REQUEST [ 'help' ] ;
 }
// HACK : -- Add localization to vardef field_help

b. function action_SaveField is modified to set help_label value in vardefs before saving mbvardefs & value of label in language file of current language before saving modue.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//HACK : -- Add localization to vardef field_help
if(isset($_REQUEST['help_label']) && empty($_REQUEST['help_label']))
  $_REQUEST['help_label']="LBL_".mb_strtoupper($_REQUEST['name'])."_HELP";        
 
$module->mbvardefs->vardef['fields'][$_REQUEST['name']]['help']=$_REQUEST['help_label'];
//HACK :
$module->mbvardefs->save () ;
// get the module again to refresh the labels we might have saved with the $field->save (e.g., for address fields)
$module = & $mb->getPackageModule ( $_REQUEST [ 'view_package' ], $_REQUEST [ 'view_module' ] ) ;
if (isset ( $_REQUEST [ 'label' ] ) && isset ( $_REQUEST [ 'labelValue' ] ))
 $module->setLabel ( $GLOBALS [ 'current_language' ], $_REQUEST [ 'label' ], $_REQUEST [ 'labelValue' ] ) ;
//HACK : -- Add localization to vardef field_help
//setting the help text and label for current language.           
if (isset($_REQUEST['help_label']) && isset ($_REQUEST['help']))
 $module->setLabel($GLOBALS['current_language'],$_REQUEST['help_label'],$_REQUEST['help']);        
//HACK :


10. modules/ModuleBuilder/views/view.modulefield.php
a. Code block added to set value fo $vardef[‘help’] and $vardef[‘help_label’]. Following code block is for studio code.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//HACK : -- Add localization to vardef field_help
$temp_var_help_translation='';
if(isset($vardef['help'])){
 if(!empty($vardef['help'])){
  $temp_var_help_translation=translate(mb_strtoupper($vardef['help']),$moduleName);
  if($temp_var_help_translation != mb_strtoupper($vardef['help'])){
   $vardef['help_label']=$vardef['help'];
   $vardef['help']=$temp_var_help_translation;
  }else{
   $vardef['help_label']=$vardef['help'];
   $vardef['help']='';     
  }
 }
}elseif(!empty($vardef['name'])){
 $tempkey="LBL_".mb_strtoupper($vardef['name'])."_HELP";
 $temp_var_help_translation = translate(mb_strtoupper($tempkey),$moduleName);
 if($temp_var_help_translation != mb_strtoupper($tempkey)){
  $vardef['help_label']=$tempkey;
  $vardef['help']=$temp_var_help_translation;
 }else{
  $vardef['help_label']=$tempkey;
  $vardef['help']='';         
 }
}
//HACK :

b. Code block added to set value fo $vardef[‘help’] and $vardef[‘help_label’]. Following code block is for module builder code.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//HACK : -- Add localization to vardef field_help
$temp_var_help_translation='';
if(isset($vardef['help'])){
 if(!empty($vardef['help'])){
  //HACK:Upgrade sugarbase to SugarCRM 5.5
  $temp_var_help_translation=$module->getLabel($GLOBALS['current_language'],$vardef['help']);
  //HACK:Upgrade sugarbase to SugarCRM 5.5
  if(!empty($temp_var_help_translation)){
   $vardef['help_label']=$vardef['help'];
   $vardef['help']=$temp_var_help_translation;
  }else{
   $vardef['help_label']=$vardef['help'];
   $vardef['help']='';     
  }
 }
}elseif(!empty($vardef['name'])){
 $tempkey="LBL_".mb_strtoupper($vardef['name'])."_HELP";
 //HACK:Upgrade sugarbase to SugarCRM 5.5
 $temp_var_help_translation=$module->getLabel($GLOBALS['current_language'],$tempkey);
 //HACK:Upgrade sugarbase to SugarCRM 5.5
 if(!empty($temp_var_help_translation)){
  $vardef['help_label']=$tempkey;
  $vardef['help']=$temp_var_help_translation;
 }else{
  $vardef['help_label']=$tempkey;
  $vardef['help']='';         
 }
}
//HACK :


11. Add new field in fields_meta_data table by running following query.
1
2
ALTER TABLE fields_meta_data
add column help_label varchar (255) Null

Changes made in language file & vardefs files are not upgrade safe. While building package move it to upgrade-safe files.

And finally the SVN diff containing the changes


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
Index: include/EditView/EditView2.php
===================================================================
--- include/EditView/EditView2.php (revision 1)
+++ include/EditView/EditView2.php (working copy)
@@ -447,6 +447,38 @@
         $this->th->ss->assign('offset', $this->offset + 1);
         $this->th->ss->assign('APP', $app_strings);
         $this->th->ss->assign('MOD', $mod_strings);
+  //HACK : -- Add localization to vardef field_help   
+        foreach($this->fieldDefs as $key => $val){
+            $tempk = ''; $tempv='';
+            if(isset($this->fieldDefs[$key]['help'])){
+             $tempk = $this->fieldDefs[$key]['help'];
+            }else{
+             $tempk = "LBL_".mb_strtoupper($this->fieldDefs[$key]['name'])."_HELP";
+            }
+         $tempv = translate($tempk, $this->module);        
+            if($tempv!=$tempk){
+   //HACK :-- Translating help fields
+                //$this->fieldDefs[$key]['help'] = $tempv;
+    if($this->fieldDefs[$key]['type']=='radioenum'){
+                 $this->fieldDefs[$key]['help'] = $tempk;
+                }else{
+     $this->fieldDefs[$key]['help'] = "{php}echo smarty_function_sugar_translate(array('label' => '$tempk' ,'module' => '$this->module'), \$this);{/php}";
+    }
+   //HACK :
+            }else{
+             $this->fieldDefs[$key]['help'] =''; 
+            }
+            if(isset($this->fieldDefs[$key]['validation']['functionName']) && !empty($this->fieldDefs[$key]['validation']['functionName'])){
+    if(isset($this->fieldDefs[$key]['customjs'])){
+                $tempscript.='{literal}<script type="text/javascript" language="Javascript">'.html_entity_decode($this->fieldDefs[$key]['customjs'],ENT_QUOTES).'</script>{/literal}';
+             }
+             if(isset($this->fieldDefs[$key]['validation'])&& is_array($this->fieldDefs[$key]['validation'])!=true){
+                $this->fieldDefs[$key]['validation'] = unserialize(html_entity_decode($this->fieldDefs[$key]['validation']));
+             }
+   }
+        }
+         $this->th->ss->assign('scriptBlocks', $tempscript);
+        //HACK :
         $this->th->ss->assign('fields', $this->fieldDefs);
         $this->th->ss->assign('sectionPanels', $this->sectionPanels);
         $this->th->ss->assign('returnModule', $this->returnModule);
Index: include/SearchForm/SearchForm2.php
===================================================================
--- include/SearchForm/SearchForm2.php (revision 1)
+++ include/SearchForm/SearchForm2.php (working copy)
@@ -161,7 +161,29 @@
   if($this->nbTabs>1){
       $this->th->ss->assign('TABS', $this->_displayTabs($this->module . '|' . $this->displayView));
   }
-
+      //HACK : -- Add localization to vardef field_help 
+      foreach($this->fieldDefs as $key => $val){
+            $tempk = ''; $tempv='';
+            if(isset($this->fieldDefs[$key]['help'])){
+             $tempk = $this->fieldDefs[$key]['help'];
+            }else{
+             $tempk = "LBL_".mb_strtoupper($this->fieldDefs[$key]['name'])."_HELP";
+            }
+         $tempv = translate($tempk, $this->module);        
+            if($tempv!=$tempk){
+   //HACK :-- Translating help fields
+               //$this->fieldDefs[$key]['help'] = $tempv;
+       if($this->fieldDefs[$key]['type']=='radioenum'){
+                 $this->fieldDefs[$key]['help'] = $tempk;
+                }else{
+     $this->fieldDefs[$key]['help'] = "{php}echo smarty_function_sugar_translate(array('label' => '$tempk' ,'module' => '$this->module'), \$this);{/php}";
+    }
+   //HACK :
+            }else{
+             $this->fieldDefs[$key]['help'] =''; 
+            }
+        }
+        //HACK :
   $this->th->ss->assign('fields', $this->fieldDefs);
   $this->th->ss->assign('customFields', $this->customFieldDefs);
   $this->th->ss->assign('formData', $this->formData);
Index: modules/DynamicFields/DynamicField.php
===================================================================
--- modules/DynamicFields/DynamicField.php (revision 1)
+++ modules/DynamicFields/DynamicField.php (working copy)
@@ -507,7 +507,9 @@
         $fmd->name = $db_name;
         $fmd->vname = $label;
         $fmd->type = $field->type;
-        $fmd->help = $field->help;
+        //HACK : -- Add localization to vardef field_help
+        $fmd->help = $field->help_label;
+        //HACK :
         if (!empty($field->len))
             $fmd->len = $field->len; // tyoung bug 15407 - was being set to $field->size so changes weren't being saved
         $fmd->required = ($field->required ? 1 : 0);
Index: modules/DynamicFields/templates/Fields/Forms/coreTop.tpl
===================================================================
--- modules/DynamicFields/templates/Fields/Forms/coreTop.tpl (revision 1)
+++ modules/DynamicFields/templates/Fields/Forms/coreTop.tpl (working copy)
@@ -44,19 +44,22 @@
  <td class='mbLBL' width='30%' >{$MOD.COLUMN_TITLE_NAME}:</td>
  <td>
  {if $hideLevel == 0}
-  <input id="field_name_id" maxlength=30 type="text" name="name" value="{$vardef.name}"
-    onchange="
-  document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase();
+  {* HACK:  -- Add localization to vardef field_help
+   Added javascript statement for automatic help label assignment *}
+  <input id="field_name_id" maxlength=30 type="text" name="name" value="{$vardef.name}" onchange="document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase();
   document.getElementById('label_value_id').value = document.getElementById('field_name_id').value.replace(/_/,' ');
-  document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase();" />
+  document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase(); 
+  document.getElementById('help_key_id').value = 'LBL_'+(document.getElementById('field_name_id').value.toUpperCase())+'_HELP';" />
+  {* HACK:  *}
  {else}
+  {* HACK:  -- Add localization to vardef field_help
+   Added javascript statement for automatic help label assignment *}
   <input id= "field_name_id" maxlength=30 type="hidden" name="name" value="{$vardef.name}"
-    onchange="
-  document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase();
+    onchange="document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase();
   document.getElementById('label_value_id').value = document.getElementById('field_name_id').value.replace(/_/,' ');
-  document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase();"/>
-  {$vardef.name}
- {/if}
+  document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase();
+  document.getElementById('help_key_id').value = 'LBL_'+(document.getElementById('field_name_id').value.toUpperCase())+'_HELP';"/>{$vardef.name}{/if}
+  {* HACK: *}
   <script>
   addToValidate('popup_form', 'name', 'DBName', true,'{$MOD.COLUMN_TITLE_NAME} [a-zA-Z_]' );
   addToValidateIsInArray('popup_form', 'name', 'in_array', true,'{$MOD.ERR_RESERVED_FIELD_NAME}', '{$field_name_exceptions}', 'u==');
@@ -79,11 +82,25 @@
  {/if}
  </td>
 </tr>
+{* HACK:  -- Add localization to vardef field_help ,Course module Accounting type does not work *}
 <tr>
- <td class='mbLBL'>{$MOD.COLUMN_TITLE_HELP_TEXT}:</td><td>{if $hideLevel < 5 }<input type="text" name="help" value="{$vardef.help}">{else}<input type="hidden" name="help" value="{$vardef.help}">{$vardef.help}{/if}
+ <td class='mbLBL'>{$MOD.COLUMN_TITLE_HELP_TEXT}:</td>
+ <td>
+  <input type="text" id="help_value_id" name="help" value="{$vardef.help}" onchange="if(document.getElementById('help_key_id').value == '') document.getElementById('help_key_id').value='LBL_'+(document.getElementById('field_name_id').value.toUpperCase())+'_HELP';">
  </td>
 </tr>
+
 <tr>
+ <td class='mbLBL'>{$MOD.COLUMN_TITLE_HELP_LABEL}:</td>
+ <td>{if $hideLevel < 5 }
+  <input type="text" id="help_key_id" name="help_label" value="{$vardef.help_label}">
+  {else}
+  <input type="hidden" id="help_key_id" name="help_label" value="{$vardef.help_label}">{$vardef.help_label}
+  {/if}
+ </td>
+</tr>
+{* HACK: *}
+<tr>
     <td class='mbLBL'>{$MOD.COLUMN_TITLE_COMMENT_TEXT}:</td><td>{if $hideLevel < 5 }<input type="text" name="comments" value="{$vardef.comments}">{else}<input type="hidden" name="comment" value="{$vardef.comment}">{$vardef.comment}{/if}
     </td>
 </tr>
Index: modules/DynamicFields/templates/Fields/TemplateField.php
===================================================================
--- modules/DynamicFields/templates/Fields/TemplateField.php (revision 1)
+++ modules/DynamicFields/templates/Fields/TemplateField.php (working copy)
@@ -67,6 +67,10 @@
  var $reportable = false;
  var $label_value = '';
  var $help = '';
+ //HACK : -- Add localization to vardef field_help
+ // for initialisation of bean value.
+ var $help_label ='';
+ //HACK :
  
  var $vardef_map = array(
   'name'=>'name',
@@ -95,6 +99,11 @@
      //'disable_num_format'=>'ext3',
      'ext3'=>'ext3',
   'label_value'=>'label_value',
+
+  //HACK :  -- Add localization to vardef field_help
+  //used for vardef mapping.
+  'help_label'=>'help_label',
+  //HACK : 
  );
  /*
   HTML FUNCTIONS
Index: modules/EditCustomFields/FieldsMetaData.php
===================================================================
--- modules/EditCustomFields/FieldsMetaData.php (revision 1)
+++ modules/EditCustomFields/FieldsMetaData.php (working copy)
@@ -60,6 +60,10 @@
    var $ext1;
    var $ext2;
    var $ext3;
+ //HACK : -- Add localization to vardef field_help
+   var $help;
+   var $help_label;
+   //HACK :
  var $audited;
     var $duplicate_merge;
     var $reportable;
@@ -81,6 +85,10 @@
   'ext1',
   'ext2',
   'ext3',
+     //HACK : -- Add localization to vardef field_help
+  'help',
+  'help_label',
+     //HACK :
   'audited',
   'massupdate',
         'duplicate_merge',
Index: modules/EditCustomFields/language/en_us.lang.php
===================================================================
--- modules/EditCustomFields/language/en_us.lang.php (revision 1)
+++ modules/EditCustomFields/language/en_us.lang.php (working copy)
@@ -92,4 +92,9 @@
  'LBL_DEPENDENT_TRIGGER'=>'Trigger',
  'LBL_BTN_EDIT_VISIBILITY'=>'Edit Visibility',
 );
+
+// HACK : -- Add localization to vardef field_help
+// label for the new help label
+$mod_strings['COLUMN_TITLE_HELP_LABEL'] = 'Help Label';
+// HACK :
 ?>
Index: modules/EditCustomFields/vardefs.php
===================================================================
--- modules/EditCustomFields/vardefs.php (revision 1)
+++ modules/EditCustomFields/vardefs.php (working copy)
@@ -66,4 +66,8 @@
   array('name' => 'idx_meta_cm_del', 'type' => 'index', 'fields' => array('custom_module', 'deleted')),
  ),
 );
+// HACK : -- Add localization to vardef field_help
+// Added for adding new field help label in module builder.
+$dictionary['FieldsMetaData']['fields']['help_label']=array('name' =>'help_label' ,'type' =>'varchar','vname'=>'COLUMN_TITLE_LABEL', 'len'=>'255');
+// HACK : -- Add localization to vardef field_help
 ?>
Index: modules/ModuleBuilder/controller.php
===================================================================
--- modules/ModuleBuilder/controller.php (revision 1)
+++ modules/ModuleBuilder/controller.php (working copy)
@@ -269,6 +269,14 @@
         if (! empty ( $_REQUEST [ 'view_module' ] ) && !empty($_REQUEST [ 'labelValue' ]))
         {
             $_REQUEST [ "label_" . $_REQUEST [ 'label' ] ] = $_REQUEST [ 'labelValue' ] ;
+   // HACK : -- Add localization to vardef field_help
+             if (isset($_REQUEST['help_label']) && isset ($_REQUEST['help' ])){
+    if(empty($_REQUEST['help_label'])){
+              $_REQUEST['help_label']="LBL_".$_REQUEST['name']."_HELP";
+                }
+    $_REQUEST [ "label_" . $_REQUEST['help_label'] ] = $_REQUEST [ 'help' ] ;
+             }
+            // HACK :
             require_once 'modules/ModuleBuilder/parsers/parser.label.php' ;
             $parser = new ParserLabel ( $_REQUEST['view_module'] , isset ( $_REQUEST [ 'view_package' ] ) ? $_REQUEST [ 'view_package' ] : null ) ;
             $parser->handleSave ( $_REQUEST, $GLOBALS [ 'current_language' ] ) ;
@@ -332,11 +340,22 @@
             $mb = new ModuleBuilder ( ) ;
             $module = & $mb->getPackageModule ( $_REQUEST [ 'view_package' ], $_REQUEST [ 'view_module' ] ) ;
             $field->save ( $module ) ;
+            //HACK : -- Add localization to vardef field_help
+            if(isset($_REQUEST['help_label']) && empty($_REQUEST['help_label']))
+              $_REQUEST['help_label']="LBL_".mb_strtoupper($_REQUEST['name'])."_HELP";        
+          
+   $module->mbvardefs->vardef['fields'][$_REQUEST['name']]['help']=$_REQUEST['help_label'];
+            //HACK :
             $module->mbvardefs->save () ;
             // get the module again to refresh the labels we might have saved with the $field->save (e.g., for address fields)
             $module = & $mb->getPackageModule ( $_REQUEST [ 'view_package' ], $_REQUEST [ 'view_module' ] ) ;
             if (isset ( $_REQUEST [ 'label' ] ) && isset ( $_REQUEST [ 'labelValue' ] ))
                 $module->setLabel ( $GLOBALS [ 'current_language' ], $_REQUEST [ 'label' ], $_REQUEST [ 'labelValue' ] ) ;
+            //HACK : -- Add localization to vardef field_help
+            //setting the help text and label for current language.           
+            if (isset($_REQUEST['help_label']) && isset ($_REQUEST['help']))
+              $module->setLabel($GLOBALS['current_language'],$_REQUEST['help_label'],$_REQUEST['help']);        
+            //HACK :
             $module->save();
         }
         $this->view = 'modulefields' ;
Index: modules/ModuleBuilder/views/view.modulefield.php
===================================================================
--- modules/ModuleBuilder/views/view.modulefield.php (revision 1)
+++ modules/ModuleBuilder/views/view.modulefield.php (working copy)
@@ -145,6 +145,31 @@
             if(!empty($vardef['vname'])){
                 $fv->ss->assign('lbl_value', htmlentities(translate($vardef['vname'], $moduleName), ENT_QUOTES, 'UTF-8'));
             }
+            //HACK : -- Add localization to vardef field_help
+            $temp_var_help_translation='';
+            if(isset($vardef['help'])){
+             if(!empty($vardef['help'])){
+              $temp_var_help_translation=translate(mb_strtoupper($vardef['help']),$moduleName);
+              if($temp_var_help_translation != mb_strtoupper($vardef['help'])){
+      $vardef['help_label']=$vardef['help'];
+               $vardef['help']=$temp_var_help_translation;
+     }else{
+      $vardef['help_label']=$vardef['help'];
+               $vardef['help']='';     
+     }
+             }
+         }elseif(!empty($vardef['name'])){
+    $tempkey="LBL_".mb_strtoupper($vardef['name'])."_HELP";
+    $temp_var_help_translation = translate(mb_strtoupper($tempkey),$moduleName);
+             if($temp_var_help_translation != mb_strtoupper($tempkey)){
+     $vardef['help_label']=$tempkey;
+              $vardef['help']=$temp_var_help_translation;
+    }else{
+     $vardef['help_label']=$tempkey;
+              $vardef['help']='';         
+    }
+         }
+            //HACK :
             //$package = new stdClass;
             //$package->name = 'studio';
             //$fv->ss->assign('package', $package);
@@ -186,6 +211,35 @@
             $fv->ss->assign('module', $module);
             $fv->ss->assign('package', $package);
             $fv->ss->assign('MB','1');
+   //HACK : -- Add localization to vardef field_help
+            $temp_var_help_translation='';
+            if(isset($vardef['help'])){
+             if(!empty($vardef['help'])){
+     //HACK:Upgrade sugarbase to SugarCRM 5.5
+              $temp_var_help_translation=$module->getLabel($GLOBALS['current_language'],$vardef['help']);
+     //HACK:Upgrade sugarbase to SugarCRM 5.5
+              if(!empty($temp_var_help_translation)){
+      $vardef['help_label']=$vardef['help'];
+               $vardef['help']=$temp_var_help_translation;
+     }else{
+      $vardef['help_label']=$vardef['help'];
+               $vardef['help']='';     
+     }
+             }
+         }elseif(!empty($vardef['name'])){
+    $tempkey="LBL_".mb_strtoupper($vardef['name'])."_HELP";
+    //HACK:Upgrade sugarbase to SugarCRM 5.5
+    $temp_var_help_translation=$module->getLabel($GLOBALS['current_language'],$tempkey);
+    //HACK:Upgrade sugarbase to SugarCRM 5.5
+             if(!empty($temp_var_help_translation)){
+     $vardef['help_label']=$tempkey;
+              $vardef['help']=$temp_var_help_translation;
+    }else{
+     $vardef['help_label']=$tempkey;
+              $vardef['help']='';         
+    }
+         }
+            //HACK :
  
             if(isset($vardef['vname']))
                 $fv->ss->assign('lbl_value', htmlentities($module->getLabel('en_us',$vardef['vname']), ENT_QUOTES, 'UTF-8'));

1 comment:

Shyam Gaikwad said...

Thanks Kenneth Thorman for this post..
This post really good.