Example #1
0
 /**
  * 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');
 }
Example #2
0
File: item.php Project: trk/ionize
 /**
  * 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');
 }
Example #3
0
 /**
  * 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();
 }
Example #4
0
 /** 
  * 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'));
     }
 }
Example #5
0
 /**
  * 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'));
     }
 }
Example #6
0
 /**
  * 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');
     */
 }
Example #7
0
 /**
  * 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);
     }
 }
Example #8
0
File: page.php Project: trk/ionize
 /**
  * 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'));
     }
 }