/** * 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); }