/** * Get the detail of one Element (Add box) * */ function get_element_detail() { $id_element = $this->input->post('id_element_definition'); $element_definition = $this->element_definition_model->get(array('id_element_definition' => $id_element), Settings::get_lang('default')); // Element's fields definition $fields = $this->extend_field_model->get_list(array('parent' => 'element', 'id_parent' => $id_element, 'order_by' => 'ordering ASC')); $this->template['element_definition'] = $element_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; } } // 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->template['has_lang_fields'] = $has_lang_fields; $this->template['parent'] = $this->input->post('parent'); $this->template['id_parent'] = $this->input->post('id_parent'); $this->output('element/detail'); }
/** * 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'); }
/** * Saves one media metadata * */ public function save() { // Clear the cache Cache()->clear_cache(); // Standard data; $data = array(); // Standard fields $fields = $this->db->list_fields('media'); foreach ($fields as $field) { if ($this->input->post($field) !== FALSE) { $data[$field] = htmlentities($this->input->post($field), ENT_QUOTES, 'utf-8'); } } // Lang data $lang_data = array(); $fields = $this->db->list_fields('media_lang'); foreach (Settings::get_languages() as $language) { foreach ($fields as $field) { if ($this->input->post($field . '_' . $language['lang']) !== FALSE) { $lang_data[$language['lang']][$field] = htmlentities($this->input->post($field . '_' . $language['lang']), ENT_QUOTES, 'utf-8'); } } } // Event $event_data = array('base' => $data, 'lang' => $lang_data); $event_received = Event::fire('Media.save.before', $event_data); $event_received = array_pop($event_received); if (!empty($event_received['base']) && !empty($event_received['lang'])) { $data = $event_received['base']; $lang_data = $event_received['lang']; } // Database save $id_media = $this->media_model->save($data, $lang_data); // Event $event_data = array('base' => $data, 'lang' => $lang_data); Event::fire('Media.save.success', $event_data); // Save extend fields data $this->extend_field_model->save_data('media', $id_media, $_POST); // Save parent context data $this->media_model->save_context_data($_POST); $media = $this->media_model->get($id_media, Settings::get_lang('default')); // Delete picture thumbnails if ($media['type'] == 'picture') { $this->medias->delete_thumbs($media); } if ($id_media !== FALSE) { // Success Message $this->callback = array(array('fn' => 'mediaManager.loadMediaList', 'args' => $media['type']), array('fn' => 'ION.notification', 'args' => array('success', lang('ionize_message_media_data_saved')))); } else { Event::fire('Media.save.error'); // Error Message $this->callback[] = array('fn' => 'ION.notification', 'args' => array('error', lang('ionize_message_media_data_not_saved'))); } $this->response(); }
/** * Saves extending fields ordering * * @param String Parent type * * @return String Success or error message * */ function save_ordering() { $order = $this->input->post('order'); if ($order !== FALSE) { // Saves the new ordering $this->extend_field_model->save_ordering($order); // Answer $this->success(lang('ionize_message_operation_ok')); } else { $this->error(lang('ionize_message_operation_nok')); } }
/** * Saves media order for one parent * */ public function save_extend_ordering() { $parent = $this->input->post('parent'); $id_parent = $this->input->post('id_parent'); $id_extend = $this->input->post('id_extend'); $lang = $this->input->post('lang'); $value = $this->input->post('order'); if ($value !== FALSE) { $this->extend_field_model->save_extend_field_value($id_extend, $parent, $id_parent, $value, $lang); // Answer $this->success(lang('ionize_message_operation_ok')); } else { $this->error(lang('ionize_message_operation_nok')); } }
/** * 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'); */ }
/** * Edit one article * * @param string $rel article REL. Composed by the page ID and the article ID * Example : 1.23 * 1 : id_page * 23 : id_article */ public function edit($rel) { // IDs $rel = explode(".", $rel); $id_page = !empty($rel[1]) ? $rel[0] : '0'; $id_article = !empty($rel[1]) ? $rel[1] : NULL; $resource = $this->_get_resource_name('backend', 'article', $id_article); $page_resource = $this->_get_resource_name('backend', 'page', $id_page); if (Authority::can('edit', 'admin/article') && Authority::can('edit', $resource, NULL, TRUE) && Authority::can('edit', $page_resource, NULL, TRUE)) { // Edit article if ID exists if (!is_null($id_article)) { $article = $this->article_model->get_by_id($id_article); if (!empty($article)) { // Loads the modules addons $this->load_modules_addons($article); // Page context of the current edited article $article['id_page'] = $id_page; // Data & Lang Data $this->template = array_merge($this->template, $article); $this->article_model->feed_lang_template($id_article, $this->template); // Extends fields $extend_fields = $this->extend_field_model->get_element_extend_fields('article', $id_article); $this->template['has_translated_extend_fields'] = $this->_has_translated_extend_fields($extend_fields); $this->template['extend_fields'] = $extend_fields; // Link : Depending on the context $context = $this->article_model->get_context($id_article, $id_page); if (!empty($context)) { $this->template['main_parent'] = $context['main_parent']; $pages = $this->page_model->get_parent_array($id_page, array(), Settings::get_lang('default')); // Breadcrump $breadcrump = array(); foreach ($pages as $page) { $breadcrump[] = !empty($page['title']) ? $page['title'] : $page['name']; } $this->template['breadcrump'] = implode(' > ', $breadcrump); } else { $this->template['main_parent'] = '0'; } Event::fire('Article.edit', $this->template); $this->output('article/article'); } } } else { $this->output(self::$_DENY_MAIN_VIEW); } }
/** * Saves a page * */ public function save() { /* Check if the default lang URL or the default lang title are set * One of these need to be set to save the page * */ if ($this->_check_before_save() === TRUE) { $id_page = $this->input->post('id_page'); // Clear the cache Cache()->clear_cache(); // Prepare data before save $this->_prepare_data(); // Event : On before save $event_data = array('base' => $this->data, 'lang' => $this->lang_data, 'post' => $this->input->post()); $event_received = Event::fire('Page.save.before', $event_data); $event_received = array_pop($event_received); if (!empty($event_received['base']) && !empty($event_received['lang'])) { $this->data = $event_received['base']; $this->lang_data = $event_received['lang']; } // Save Page $saved_id = $this->page_model->save($this->data, $this->lang_data); // Correct Pages levels // TODO : Move this into the model. if (!empty($id_page)) { // Correct pages levels regarding parents. $this->system_check_model->check_page_level(TRUE); } // Save extends fields data $this->extend_field_model->save_data('page', $saved_id, $_POST); // Save linked access groups authorizations // $this->base_model->join_items_keys_to('user_groups', $this->input->post('groups'), 'page', $this->id); // Save the Sitemap $this->structure->build_sitemap(); // Prepare the Json answer $page = array_merge($this->lang_data[Settings::get_lang('default')], $this->page_model->get_by_id($saved_id)); $page['menu'] = $this->menu_model->get(array('id_menu' => $page['id_menu'])); // Remove HTML tags from returned array strip_html($page); $this->callback = array(); // Event : On after save $event_data = array('base' => $this->data, 'lang' => $this->lang_data, 'post' => $this->input->post()); Event::fire('Page.save.success', $event_data); // New page : Simply reloads the panel if (empty($id_page)) { // Save the Urls $this->page_model->save_urls($saved_id); // Used by JS Tree to detect if page in inserted in tree or not $page['inserted'] = TRUE; $this->callback[] = array('fn' => $page['menu']['name'] . 'Tree.insertElement', 'args' => array($page, 'page')); // Reload the panel $this->_reload_panel($saved_id); $this->success(lang('ionize_message_page_saved')); } else { // Save options : as callback $this->callback[] = array('fn' => 'ION.sendForm', 'args' => array('page/save_options', 'pageOptionsForm')); $this->response(); } } else { Event::fire('Page.save.error'); $this->error(lang('ionize_message_page_needs_url_or_title')); } }