/** * Add item windows * Purpose : Create one item (backend) * At this state, the item isn't added * */ public function add_item() { $id_definition = $this->input->post('id_item_definition'); $item_definition = $this->item_definition_model->get(array('id_item_definition' => $id_definition), Settings::get_lang('default')); // Element's fields $fields = $this->extend_field_model->get_lang_list(array('parent' => 'item', 'id_parent' => $id_definition, 'order_by' => 'ordering ASC'), Settings::get_lang('default')); $fields_lang = $this->extend_field_model->get_all('extend_field_lang'); foreach ($fields as &$field) { foreach (Settings::get_languages() as $lang) { $langs = array_values(array_filter($fields_lang, create_function('$row', 'return $row["id_extend_field"] == "' . $field['id_extend_field'] . '";'))); $field['langs'][$lang['lang']] = array_pop(array_filter($langs, create_function('$row', 'return $row["lang"] == "' . $lang['lang'] . '";'))); } } $this->template['item_definition'] = $item_definition; $this->template['fields'] = $fields; $lang_fields = array_values(array_filter($fields, create_function('$row', 'return $row["translated"] == 1;'))); $this->template['lang_fields'] = $lang_fields; // Check for langs fields different from $has_lang_fields = FALSE; foreach ($lang_fields as $lf) { if ($lf['type'] != 8) { $has_lang_fields = TRUE; } } $this->template['has_lang_fields'] = $has_lang_fields; // Check for Media type $has_media_fields = FALSE; foreach ($fields as $f) { if ($f['type'] == 8) { $has_media_fields = TRUE; } } $this->template['has_media_fields'] = $has_media_fields; $this->output('item/instance/edit'); }
/** * Returns one definition fields list * * */ function get_field_list() { $fields = array(); if (Authority::can('edit', 'admin/item/definition')) { $id_definition = $this->input->post('id_item_definition'); $fields = $this->extend_field_model->get_lang_list(array('parent' => 'item', 'id_parent' => $id_definition), Settings::get_lang('default')); } $this->xhr_output($fields); // /* $this->template['id_item_definition'] = $id_definition; $this->template['fields'] = $fields; $this->output('item/definition/fields'); */ }
/** * Returns all the extend fields (definitions) for one kind of parent * Used by Admin panel to display the extend fields list * Called by XHR by admin/views/extend/index.php * * @param String Parent type. Can be 'article', 'page', etc. * */ function get_extend_fields() { $mode = $this->input->post('mode'); // Get data formed to feed the category select box $where = array('parent !=' => 'element'); // Order By $order_by = $this->input->post('order_by'); if ($order_by) { $where['order_by'] = $order_by; } // Limit to one parent type : Useful for limited lists $parent = $this->input->post('parent'); if ($parent) { $where['parent'] = $parent; } // Limit to several parents $parents = $this->input->post('parents'); if ($parents) { $parents = explode(',', $parents); $where['where_in'] = array('parent' => $parents); } // Returns the extends list ordered by 'ordering' $extend_fields = $this->extend_field_model->get_lang_list($where, Settings::get_lang('default')); if ($mode === 'json') { $this->xhr_output($extend_fields); } else { // Get the parents $parents = array(); foreach ($extend_fields as $extend) { if (!in_array($extend['parent'], $parents)) { $parents[] = $extend['parent']; } } $this->template['parent'] = $parent ? $parent : FALSE; $this->template['parents'] = $parents; $this->template['extend_fields'] = $extend_fields; $this->output('extend/list'); } }