CRM Open Source Business & Social CRM Software

Results 1 to 2 of 2

Thread: How to make the module 'MergeRecords' compatible with multienum fields

  1. #1
    lionel.ibis is offline Junior Member
    Join Date
    Jan 2008
    Location
    France
    Posts
    4

    Default How to make the module 'MergeRecords' compatible with multienum fields

    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.

  2. #2
    aalexkun is offline Member
    Join Date
    Aug 2008
    Posts
    6

    Default Re: How to make the module 'MergeRecords' compatible with multienum fields

    Thanks very useful.

    I just notice 2 small errors in the Xtemplate assignation. The two lignes

    $xtpl->parse("main.".$section_name.".merge_cell_edit_m ul tienum");
    $field_name="main.".$section_name.".merge_cell_fie ld_value";

    must have the space removed.

    $xtpl->parse("main.".$section_name.".merge_cell_edit_mul tienum");
    $field_name="main.".$section_name.".merge_cell_fie ld_value";

    Also the code in the MergeField.html must be more like
    <!-- BEGIN: merge_cell_edit_multienum -->
    <input type="hidden" value="true" name="{EDIT_FIELD_NAME}_multiselect" id="{EDIT_FIELD_NAME}_multiselect">
    <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 -->

    and we also need to put the ligne

    if(is_array($_POST[$field]))
    {
    $focus->merge_bean->$field = implode('^,^',$_POST[$field]);
    }

    in Savemerge.php


    ...


    Something like that
    Last edited by aalexkun; 2011-01-20 at 07:28 PM.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Make standard fields required
    By imrankha in forum Developer Help
    Replies: 14
    Last Post: 2009-02-16, 09:22 AM
  2. Custom Module - Enum to Multienum
    By cnielsenlev in forum Developer Help
    Replies: 3
    Last Post: 2008-08-16, 12:07 AM
  3. Replies: 1
    Last Post: 2007-12-31, 03:30 PM
  4. Searching multienum fields
    By russellp in forum Help
    Replies: 3
    Last Post: 2006-12-11, 09:53 PM
  5. Replies: 0
    Last Post: 2006-02-27, 07:42 AM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •