Index: col_picker_helper.php =================================================================== --- col_picker_helper.php (revision 13128) +++ col_picker_helper.php (working copy) @@ -20,6 +20,13 @@ var $GridName; var $UseFreezer; + /** + * Columns renamed by formatter in last used grid + * + * @var Array + */ + var $formatterRenamed = Array (); + function Init($prefix,$special,$event_params=null) { parent::Init($prefix, $special, $event_params); @@ -66,13 +73,23 @@ function CmpElems($a, $b) { + // remove language prefix from field, because formatter renamed column + if (in_array($a, $this->formatterRenamed)) { + $a = preg_replace('/^l[\d]+_/', '', $a); + } + + if (in_array($b, $this->formatterRenamed)) { + $b = preg_replace('/^l[\d]+_/', '', $b); + } + $a_index = array_search($a, $this->PickerData['order']); $b_index = array_search($b, $this->PickerData['order']); if ($a_index == $b_index) { - return 0; - } - return ($a_index < $b_index) ? -1 : 1; + return 0; + } + + return ($a_index < $b_index) ? -1 : 1; } function RebuildColumns($prefix, $current=null) @@ -147,6 +164,12 @@ $titles = array(); $widths = array(); foreach ($conf_fields as $name => $options) { + if (array_key_exists('formatter_renamed', $options) && $options['formatter_renamed']) { + // remove language prefix from field, because formatter renamed column + $this->formatterRenamed[] = $name; + $name = preg_replace('/^l[\d]+_/', '', $name); + } + $fields[$counter] = $name; $titles[$name] = $options['title']; $widths[$name] = array_key_exists('width', $options) ? $options['width'] : 100; // only once per grid ! @@ -181,10 +204,19 @@ { $to_remove = array(); foreach ($fields as $name => $options) { - if (array_search($name, $this->PickerData['hidden_fields']) !== false) { + if (array_key_exists('formatter_renamed', $options) && $options['formatter_renamed']) { + // remove language prefix from field, because formatter renamed column + $name_renamed = preg_replace('/^l[\d]+_/', '', $name); + } + else { + $name_renamed = $name; + } + + if (array_search($name_renamed, $this->PickerData['hidden_fields']) !== false) { $to_remove[] = $name; } } + foreach ($to_remove as $name) { unset($fields[$name]); }