Esempio n. 1
0
 /**
  * Object editing view
  *
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  * @return boolean Indicating success.
  */
 public function _handler_edit($handler_id, array $args, array &$data)
 {
     $this->_load_object($args[0]);
     $this->_object->require_do('midgard:update');
     midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin');
     $this->_load_schemadb();
     $this->_controller = midcom_helper_datamanager2_controller::create('simple');
     $this->_controller->schemadb =& $this->_schemadb;
     $this->_controller->set_storage($this->_object, 'object');
     if (!$this->_controller->initialize()) {
         throw new midcom_error("Failed to initialize a DM2 controller instance for object {$this->_object->guid}.");
     }
     switch ($this->_controller->process_form()) {
         case 'save':
             if (is_a($this->_object, 'midcom_db_topic')) {
                 if (!empty($this->_object->symlink) && !empty($this->_object->component)) {
                     $this->_object->symlink = null;
                     $this->_object->update();
                 }
             }
             if (is_a($this->_object, 'midcom_db_style') || is_a($this->_object, 'midcom_db_element') || is_a($this->_object, 'midcom_db_page') || is_a($this->_object, 'midcom_db_pageelement')) {
                 mgd_cache_invalidate();
             }
             // Reindex the object
             //$indexer = midcom::get('indexer');
             //net_nemein_wiki_viewer::index($this->_request_data['controller']->datamanager, $indexer, $this->_topic);
             return new midcom_response_relocate("__mfa/asgard/object/edit/{$this->_object->guid}/");
         case 'cancel':
             return new midcom_response_relocate("__mfa/asgard/object/{$this->_request_data['default_mode']}/{$this->_object->guid}/");
         case 'edit':
             $qf =& $this->_controller->formmanager->form;
             if (isset($_REQUEST['midcom_helper_datamanager2_save']) && isset($qf->_errors)) {
                 foreach ($qf->_errors as $field => $error) {
                     $element =& $qf->getElement($field);
                     $message = sprintf($this->_l10n->get('validation error in field %s: %s'), $element->getLabel(), $error);
                     midcom::get('uimessages')->add($this->_l10n->get('midgard.admin.asgard'), $message, 'error');
                 }
             }
     }
     $this->_prepare_request_data();
     midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data);
 }