Hi all,
I discovered that multienum fields are not taken in account within the module 'MergeRecords' (at least with Surgar CE V5.2.0a).
Here is the changes to apply to the 3 files situated in modules/MergeRecords directory :
In Step3.php :
After this code (starting at line #229):
case ('enum') :
$xtpl->assign("SELECT_OPTIONS", get_select_options_with_id($app_list_strings[$field_array['options']], $select_row_curr_field_value));
$xtpl->assign("CELL_WIDTH",$col_width);
$xtpl->parse("main.".$section_name.".merge_cell_edit_dro pdown");
break;
add this :
case ('multienum') :
if (strpos($select_row_curr_field_value,'^,^')) $select_row_curr_field_value = explode('^,^',$select_row_curr_field_value);
$xtpl->assign("SELECT_OPTIONS", get_select_options_with_id($app_list_strings[$field_array['options']], $select_row_curr_field_value));
$xtpl->assign("CELL_WIDTH",$col_width);
$xtpl->parse("main.".$section_name.".merge_cell_edit_mul tienum");
break;
then change this code :
case ('enum') :
if ($mergeBeanArray[$id]-> $field_array['name'] != '' and isset($field_array['options']) and isset($app_list_strings[$field_array['options']][$mergeBeanArray[$id]-> $field_array['name']])) {
display_field_value( $app_list_strings[$field_array['options']][$mergeBeanArray[$id]-> $field_array['name']]);
} else {
display_field_value($mergeBeanArray[$id]-> $field_array['name']);
}
$field_name="main.".$section_name.".merge_cell_fie ld_value";
//$xtpl->parse("main.".$section_name.".merge_cell_field_va lue");
break;
by :
case ('enum') :
case ('multienum') :
if ($mergeBeanArray[$id]-> $field_array['name'] != '' and isset($field_array['options']) and isset($app_list_strings[$field_array['options']][$mergeBeanArray[$id]-> $field_array['name']])) {
display_field_value( $app_list_strings[$field_array['options']][$mergeBeanArray[$id]-> $field_array['name']]);
} else {
if (strpos($mergeBeanArray[$id]->$field_array['name'],'^,^')) {
$selectedValues = '';
foreach (explode('^,^',$mergeBeanArray[$id]->$field_array['name']) as $selectedValue) {
$selectedValues .= $app_list_strings[$field_array['options']][$selectedValue].', ';
}
display_field_value(substr($selectedValues,0,-2));
} else {
display_field_value($mergeBeanArray[$id]-> $field_array['name']);
}
}
$field_name="main.".$section_name.".merge_cell_fie ld_value";
//$xtpl->parse("main.".$section_name.".merge_cell_field_va lue");
break;
In Step3.html
after this (in javascript function copy_value) :
if(json_array['field_type'] == 'enum')
{
for(i=0; i < target_element.options.length; i++)
{
if(target_element.options[i].value == json_array['field_value'])
{
target_element.options[i].selected=true;
i=target_element.options.length+1;
}
}
}
add this :
else if(json_array['field_type'] == 'multienum') {
for(i=0; i < target_element.options.length; i++) {
target_element.options[i].selected = ('^'+json_array['field_value']+'^').indexOf('^'+target_element.options[i].value+'^')==-1 ? false : true;
}
}
In MergeField.html :
after this :
<!-- BEGIN: merge_cell_edit_dropdown -->
<td width="{CELL_WIDTH}" valign="top" class="dataField"><slot><select tabindex="{TAB_INDEX}" name="{EDIT_FIELD_NAME}" id="{EDIT_FIELD_NAME}">{SELECT_OPTIONS}</select></slot></td>
<!-- END: merge_cell_edit_dropdown -->
add this :
<!-- BEGIN: merge_cell_edit_multienum -->
<td width="{CELL_WIDTH}" valign="top" class="dataField"><slot><select tabindex="{TAB_INDEX}" name="{EDIT_FIELD_NAME}" id="{EDIT_FIELD_NAME}" multiple="true" size="6">{SELECT_OPTIONS}</select></slot></td>
<!-- END: merge_cell_edit_multienum -->
I hope this will help other developpers.


LinkBack URL
About LinkBacks



Reply With Quote

Bookmarks