objects = array();
list_ui::set_without_data(true);
if (file_exists($this->get_list_directory()."catalog_subst.xml")) {
$filename = $this->get_list_directory()."catalog_subst.xml";
} else {
$filename = $this->get_list_directory()."catalog.xml";
}
$xml=file_get_contents($filename);
$directories_lists=_parser_text_no_function_($xml,"LISTS",$filename);
if(!empty($directories_lists)) {
foreach ($directories_lists as $directory_lists) {
foreach ($directory_lists as $lists) {
$directory_path = $lists['PATH'][0]['value'];
$directory_label = $lists['LABEL'][0]['value'];
foreach ($lists['LIST'] as $list) {
$object = new stdClass();
$object->directory_path = $directory_path;
$object->directory_label = get_msg_to_display($directory_label);
$object->name = $list['NAME'][0]['value'];
$object->type = $list['NAME'][0]['value']."_ui";
$object->label = get_msg_to_display($list['LABEL'][0]['value']);
$object->class_name = "list_".$list['NAME'][0]['value']."_ui";
if(!empty($list['PROPERTIES'])) {
$class_name = $object->class_name;
foreach ($list['PROPERTIES'][0] as $name=>$property) {
$setter = "set_".strtolower($name);
$class_name::$setter($property[0]['value']);
}
}
$object->num_dataset = list_model::get_num_dataset_common_list($object->type);
$object->instance = new $object->class_name();
$this->add_object($object);
}
}
}
}
list_ui::set_without_data(false);
$this->messages = "";
}
/**
* Initialisation des filtres disponibles
*/
protected function init_available_filters() {
$this->available_filters['main_fields'] = array();
$this->available_filters['custom_fields'] = array();
}
/**
* Initialisation des colonnes disponibles
*/
protected function init_available_columns() {
$this->available_columns =
array('main_fields' =>
array(
'label' => 'list_label',
'default_selected_filters' => 'filters',
'default_selected_columns' => 'list_ui_options_selected_columns',
'default_applied_sort' => 'list_applied_sort',
'default_pager' => 'list_pager',
'default_applied_group' => 'list_ui_options_group_by',
)
);
$this->available_columns['custom_fields'] = array();
}
public function init_applied_group($applied_group=array()) {
$this->applied_group = array(0 => 'directory_label');
}
/**
* Initialisation du tri par défaut appliqué
*/
protected function init_default_applied_sort() {
$this->add_applied_sort('label', 'asc');
}
protected function init_no_sortable_columns() {
$this->no_sortable_columns = array(
'default_selected_filters', 'default_selected_columns', 'default_applied_sort',
'default_pager', 'default_applied_group'
);
}
protected function init_default_pager() {
parent::init_default_pager();
$this->pager['nb_per_page'] = 1000; //Illimité;
$this->set_pager_in_session();
}
/**
* Fonction de callback
* @param $a
* @param $b
*/
protected function _compare_objects($a, $b) {
$sort_by = $this->applied_sort[0]['by'];
switch ($sort_by) {
default:
return parent::_compare_objects($a, $b);
}
}
protected function init_default_columns() {
$this->add_column('label');
$this->add_column('default_selected_filters');
$this->add_column('default_selected_columns');
$this->add_column('default_applied_sort');
$this->add_column('default_pager');
$this->add_column('default_applied_group');
}
protected function init_default_settings() {
parent::init_default_settings();
$this->set_setting_display('search_form', 'visible', false);
$this->set_setting_display('search_form', 'export_icons', false);
$this->set_setting_display('query', 'human', false);
$this->set_setting_column('default', 'align', 'left');
$this->settings['objects']['default']['display_mode'] = 'expandable_table';
$this->settings['grouped_objects']['level_1']['display_mode'] = 'expandable_table';
}
protected function get_js_sort_script_sort() {
$display = parent::get_js_sort_script_sort();
$display = str_replace('!!categ!!', 'lists', $display);
$display = str_replace('!!sub!!', '', $display);
$display = str_replace('!!action!!', 'list', $display);
return $display;
}
protected function get_cell_content($object, $property) {
global $msg;
$content = '';
switch($property) {
case 'default_selected_filters' :
case 'default_selected_columns' :
$method_name = str_replace('default_', 'get_', $property);
$values = $object->instance->{$method_name}();
$data = array();
if(!empty($values)) {
foreach ($values as $value) {
if($value) {
if(isset($msg[$value])) {
$data[] = $msg[$value];
} else {
$data[] = $value;
}
}
}
}
$content .= implode('
', $data);
break;
case 'default_applied_sort' :
$sorted_available_columns = $object->instance->get_sorted_available_columns();
$method_name = str_replace('default_', 'get_', $property);
$values = $object->instance->{$method_name}();
if(!empty($values)) {
foreach ($values as $i=>$value) {
if($i > 0) {
$content .= "
".$msg['list_ui_sort_by_then']." ";
}
if(!empty($sorted_available_columns[$value['by']])) {
$content .= $sorted_available_columns[$value['by']];
} else {
$content .= $value['by'];
}
$content .= " ".$msg["list_applied_sort_".$value['asc_desc']];
}
}
break;
case 'default_pager' :
$method_name = str_replace('default_', 'get_', $property);
$values = $object->instance->{$method_name}();
$content .= $msg['per_page']." ".$values['nb_per_page'];
break;
case 'default_applied_group' :
$sorted_available_columns = $object->instance->get_sorted_available_columns();
$method_name = str_replace('default_', 'get_', $property);
$values = $object->instance->{$method_name}();
if(!empty($values)) {
foreach ($values as $i=>$value) {
if($i > 0) {
$content .= "
".$msg['list_ui_options_group_by_then']." ";
}
if(!empty($sorted_available_columns[$value])) {
$content .= $sorted_available_columns[$value];
} else {
$content .= $value;
}
}
}
break;
default :
$content .= parent::get_cell_content($object, $property);
break;
}
return $content;
}
protected function get_display_cell($object, $property) {
$attributes = array();
$attributes['onclick'] = "window.location=\"".static::get_controller_url_base()."&action=edit&object_type=".$object->instance->get_objects_type()."&id=".$object->num_dataset."\"";
$content = $this->get_cell_content($object, $property);
$display = $this->get_display_format_cell($content, $property, $attributes);
return $display;
}
protected function get_grouped_label($object, $property) {
$grouped_label = '';
switch($property) {
default:
$grouped_label = parent::get_grouped_label($object, $property);
break;
}
return $grouped_label;
}
public static function set_list_objects_type($list_objects_type) {
static::$list_objects_type = $list_objects_type;
}
}