private function _prepare_toolbar(&$data, $handler_id) { if ($handler_id !== '____mfa-asgard_midcom.admin.user-user_edit_password' && $this->_config->get('allow_manage_accounts') && $this->_person) { $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard/preferences/{$this->_person->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('user preferences', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/configuration.png')); $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard_midcom.admin.user/password/{$this->_person->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('edit account', 'midcom.admin.user'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/repair.png')); } $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard_midcom.admin.user/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('midcom.admin.user'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_person-new.png')); midgard_admin_asgard_plugin::bind_to_object($this->_person, $handler_id, $data); }
/** * 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->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]); $this->_object->require_do('midgard:update'); $this->_object->require_do('midgard:parameters'); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); // List all parameters for display $qb = midcom_db_parameter::new_query_builder(); $qb->add_constraint('parentguid', '=', $this->_object->guid); $qb->add_order('domain'); $qb->add_order('name'); $data['parameters'] = $qb->execute(); $this->_prepare_request_data(); midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); }
/** * Handler method for listing style elements for the currently used component topic * * @param string $handler_id Name of the used handler * @param mixed $args Array containing the variable arguments passed to the handler * @param mixed &$data Data passed to the show method */ public function _handler_edit($handler_id, array $args, array &$data) { $this->_group = new midcom_db_group($args[0]); $this->_group->require_do('midgard:update'); $controller = $this->get_controller('simple', $this->_group); switch ($controller->process_form()) { case 'save': // Show confirmation for the group midcom::get('uimessages')->add($this->_l10n->get('midcom.admin.user'), sprintf($this->_l10n->get('group %s saved'), $this->_group->name)); return new midcom_response_relocate("__mfa/asgard_midcom.admin.user/group/edit/{$this->_group->guid}/"); case 'cancel': return new midcom_response_relocate('__mfa/asgard_midcom.admin.user/'); } $data['group'] =& $this->_group; $data['controller'] =& $controller; $ref = new midcom_helper_reflector($this->_group); $data['view_title'] = sprintf(midcom::get('i18n')->get_string('edit %s', 'midcom.admin.user'), $ref->get_object_title($this->_group)); midcom::get('head')->set_pagetitle($data['view_title']); $this->_update_breadcrumb(); $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard_midcom.admin.user/group/move/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('move group', 'midcom.admin.user'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/save-as.png')); $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard_midcom.admin.user/group/folders/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('folders', 'midcom.admin.user'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/folder.png')); midgard_admin_asgard_plugin::bind_to_object($this->_group, $handler_id, $data); }
/** * Handler method for listing style elements for the currently used component topic * * @param string $handler_id Name of the used handler * @param mixed $args Array containing the variable arguments passed to the handler * @param mixed &$data Data passed to the show method */ public function _handler_folders($handler_id, array $args, array &$data) { $this->_group = new midcom_db_group($args[0]); midgard_admin_asgard_plugin::bind_to_object($this->_group, $handler_id, $data); $qb = new midgard_query_builder('midcom_core_privilege_db'); $qb->add_constraint('assignee', '=', "group:{$this->_group->guid}"); $privileges = $qb->execute(); $data['objects'] = array(); $data['privileges'] = array(); foreach ($privileges as $privilege) { if (!$privilege->objectguid) { // We're only interested in privs applying to objects now, skip continue; } $data['privileges'][] = $privilege->privilegename; if (!isset($data['objects'][$privilege->objectguid])) { $data['objects'][$privilege->objectguid] = array(); } $data['objects'][$privilege->objectguid][$privilege->privilegename] = $privilege->value; } $data['view_title'] = sprintf(midcom::get('i18n')->get_string('folders of %s', 'midcom.admin.user'), $this->_group->official); midcom::get('head')->set_pagetitle($data['view_title']); $this->_update_breadcrumb(); }
/** * Handler for folder metadata. Checks for updating permissions, initializes * the metadata and the content topic itself. Handles also the sent form. * * @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->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]); // FIXME: We should modify the schema according to whether or not scheduling is used $this->_object->require_do('midgard:update'); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); if (is_a($this->_object, 'midcom_db_topic')) { // This is a topic $this->_topic->require_do('midgard.admin.asgard:topic_management'); } $this->_metadata = midcom_helper_metadata::retrieve($this->_object); if (!$this->_metadata) { throw new midcom_error("Failed to retrieve Metadata for " . get_class($this->_object) . " {$this->_object->guid}."); } // Load the DM2 controller instance $this->_controller = $this->get_controller('simple', $this->_object); switch ($this->_controller->process_form()) { case 'save': // Reindex the object //$indexer = midcom::get('indexer'); //net_nemein_wiki_viewer::index($this->_request_data['controller']->datamanager, $indexer, $this->_topic); // *** FALL-THROUGH *** midcom::get('cache')->invalidate($this->_object->guid); return new midcom_response_relocate("__mfa/asgard/object/metadata/{$this->_object->guid}"); case 'cancel': return new midcom_response_relocate("__mfa/asgard/object/view/{$this->_object->guid}"); } $this->_prepare_request_data(); midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); }
private function _prepare_request_data($handler_id) { midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $this->_request_data); }
/** * Copy handler * * @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_copy($handler_id, array $args, array &$data) { // Get the object that will be copied $this->_load_object($args[0]); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); static $targets = array(); $mgdschema_class = midcom_helper_reflector::resolve_baseclass(get_class($this->_object)); // Get the target details if (in_array($mgdschema_class, $targets)) { $target = $targets[$mgdschema_class]; } else { $target = midcom_helper_reflector_copy::get_target_properties($this->_object); } // Load the schemadb for searching the parent object $this->_load_schemadb($target['class'], $target['parent'], true); // Change the name for the parent field $this->_schemadb['object']->fields[$target['parent']]['title'] = $this->_l10n->get('choose the target'); // Load the nullstorage controller $this->_controller = midcom_helper_datamanager2_controller::create('nullstorage'); $this->_controller->schemadb =& $this->_schemadb; if (!$this->_controller->initialize()) { throw new midcom_error('Failed to initialize the controller'); } $this->_prepare_request_data(); // Process the form switch ($this->_controller->process_form()) { case 'save': $new_object = $this->_process_copy($target); // Relocate to the newly created object return new midcom_response_relocate("__mfa/asgard/object/{$this->_request_data['default_mode']}/{$new_object->guid}/"); case 'cancel': return new midcom_response_relocate("__mfa/asgard/object/{$this->_request_data['default_mode']}/{$args[0]}/"); } // Add Thickbox midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/midgard.admin.asgard/object_browser.js'); midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/jQuery/thickbox/jquery-thickbox-3.1.pack.js'); $this->add_stylesheet(MIDCOM_STATIC_URL . '/jQuery/thickbox/thickbox.css', 'screen'); midcom::get('head')->add_jscript('var tb_pathToImage = "' . MIDCOM_STATIC_URL . '/jQuery/thickbox/loadingAnimation.gif"'); // Add jQuery file for the checkbox operations midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/midgard.admin.asgard/jquery-copytree.js'); midcom::get('head')->add_jscript('jQuery(document).ready(function(){jQuery("#midgard_admin_asgard_copytree").tree_checker();})'); // Common hooks for Asgard midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); // Set the page title switch ($handler_id) { case '____mfa-asgard-object_copy_tree': $data['page_title'] = sprintf($this->_l10n->get('copy %s and its descendants'), $this->_object->{$target}['label']); break; default: $data['page_title'] = sprintf($this->_l10n->get('copy %s'), $this->_object->{$target}['label']); } $data['target'] = $target; }
/** * 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->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]); $this->_object->require_do('midgard:privileges'); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); $script = "\n applyRowClasses();\n "; midcom::get('head')->add_jquery_state_script($script); // Load possible additional component privileges $this->_load_component_privileges(); // Load the datamanager controller $this->_controller = $this->get_controller('simple', $this->_object); if (isset($_POST['midcom_helper_datamanager2_add']) && !empty($_POST['add_assignee'])) { $this->_object->set_privilege('midgard:read', $_POST['add_assignee']); return new midcom_response_relocate("__mfa/asgard/object/permissions/{$this->_object->guid}/"); } switch ($this->_controller->process_form()) { case 'save': //Fall-through //Fall-through case 'cancel': return new midcom_response_relocate("__mfa/asgard/object/view/{$this->_object->guid}/"); } $this->_prepare_request_data(); // Figure out label for the object's class switch (get_class($this->_object)) { case 'midcom_db_topic': $type = midcom::get('i18n')->get_string('folder', 'midgard.admin.asgard'); break; default: $type_parts = explode('_', get_class($this->_object)); $type = $type_parts[count($type_parts) - 1]; } midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); }
/** * @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) { $data['name'] = $args[0]; if (!midcom::get('componentloader')->is_installed($data['name'])) { throw new midcom_error_notfound("Component {$data['name']} was not found."); } if ($handler_id == '____mfa-asgard-components_configuration_edit_folder') { $data['folder'] = new midcom_db_topic($args[1]); if ($data['folder']->component != $data['name']) { throw new midcom_error_notfound("Folder {$args[1]} not found for configuration."); } $data['folder']->require_do('midgard:update'); $data['config'] = $this->_load_configs($data['name'], $data['folder']); } else { $data['config'] = $this->_load_configs($data['name']); } $this->_controller = $this->get_controller('nullstorage'); switch ($this->_controller->process_form()) { case 'save': $this->_save_configuration($data); // *** FALL-THROUGH *** // *** FALL-THROUGH *** case 'cancel': if ($handler_id == '____mfa-asgard-components_configuration_edit_folder') { return new midcom_response_relocate("__mfa/asgard/object/view/{$data['folder']->guid}/"); } return new midcom_response_relocate("__mfa/asgard/components/configuration/{$data['name']}/"); } $data['controller'] =& $this->_controller; if ($handler_id == '____mfa-asgard-components_configuration_edit_folder') { midgard_admin_asgard_plugin::bind_to_object($data['folder'], $handler_id, $data); $data['view_title'] = sprintf($this->_l10n->get('edit configuration for %s folder %s'), $data['name'], $data['folder']->extra); } else { $this->_prepare_toolbar($handler_id); $data['view_title'] = sprintf($this->_l10n->get('edit configuration for %s'), $data['name']); $this->_prepare_breadcrumbs($handler_id); } midcom::get('head')->set_pagetitle($data['view_title']); }
/** * Handler method for confirming file deleting for the requested file * * @param string $handler_id Name of the used handler * @param mixed $args Array containing the variable arguments passed to the handler * @param mixed &$data Data passed to the show method * @return boolean Indicating successful request */ public function _handler_delete($handler_id, array $args, array &$data) { $this->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]); $this->_object->require_do('midgard:update'); $this->_object->require_do('midgard:attachments'); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); $data['filename'] = $args[1]; $this->_file = $this->_get_file($data['filename']); if (!$this->_file) { throw new midcom_error_notfound("Attachment '{$data['filename']}' of object {$this->_object->guid} was not found."); } // Require delete privilege $this->_file->require_do('midgard:delete'); if (isset($_POST['f_cancel'])) { midcom::get('uimessages')->add(midcom::get('i18n')->get_string('midgard.admin.asgard', 'midgard.admin.asgard'), midcom::get('i18n')->get_string('delete cancelled', 'midgard.admin.asgard')); return new midcom_response_relocate("__mfa/asgard/object/attachments/{$this->_object->guid}/{$data['filename']}/"); } if (isset($_POST['f_confirm'])) { if ($this->_file->delete()) { midcom::get('uimessages')->add(midcom::get('i18n')->get_string('midgard.admin.asgard', 'midgard.admin.asgard'), sprintf(midcom::get('i18n')->get_string('file %s deleted', 'midgard.admin.asgard'), $data['filename'])); return new midcom_response_relocate("__mfa/asgard/object/attachments/{$this->_object->guid}/"); } } midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); }