Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
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->_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);
 }
Ejemplo n.º 3
0
 /**
  * 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);
 }
Ejemplo n.º 4
0
 /**
  * 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();
 }
Ejemplo n.º 5
0
 /**
  * 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);
 }
Ejemplo n.º 6
0
 private function _prepare_request_data($handler_id)
 {
     midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $this->_request_data);
 }
Ejemplo n.º 7
0
 /**
  * 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;
 }
Ejemplo n.º 8
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->_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);
 }
Ejemplo n.º 9
0
 /**
  * @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']);
 }
Ejemplo n.º 10
0
 /**
  * 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);
 }