function midgard_admin_asgard_trash_type_show($object, $indent = 0, $prefix = '', $enable_undelete = true) { static $persons = array(); static $shown = array(); static $url_prefix = ''; if (!$url_prefix) { $url_prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX); } if (isset($shown[$object->guid])) { return; } if (!isset($persons[$object->metadata->revisor])) { $persons[$object->metadata->revisor] = midcom::get('auth')->get_user($object->metadata->revisor); } $reflector = midcom_helper_reflector_tree::get($object); $icon = $reflector->get_object_icon($object); echo "{$prefix}<tr>\n"; $disabled = ''; if (!$enable_undelete) { $disabled = ' disabled="disabled"'; } $object_label = $reflector->get_object_label($object); if (empty($object_label)) { $object_label = $object->guid; } echo "{$prefix} <td class=\"checkbox\"><input type=\"checkbox\" name=\"undelete[]\"{$disabled} value=\"{$object->guid}\" id=\"guid_{$object->guid}\" /></td>\n"; echo "{$prefix} <td class=\"label\" style=\"padding-left: {$indent}px\"><label for=\"guid_{$object->guid}\">{$icon}" . $object_label . "</label></td>\n"; echo "{$prefix} <td class=\"nowrap\">" . strftime('%x %X', strtotime($object->metadata->revised)) . "</td>\n"; if (isset($persons[$object->metadata->revisor]->guid)) { echo "{$prefix} <td><a href=\"{$url_prefix}__mfa/asgard/object/view/{$persons[$object->metadata->revisor]->guid}/\">{$persons[$object->metadata->revisor]->name}</a></td>\n"; } else { echo "{$prefix} <td> </td>\n"; } echo "{$prefix} <td>" . midcom_helper_misc::filesize_to_string($object->metadata->size) . "</td>\n"; echo "{$prefix}</tr>\n"; $child_types = midcom_helper_reflector_tree::get_child_objects($object, true); if (is_array($child_types) && count($child_types) > 0) { $child_indent = $indent + 20; echo "{$prefix}<tbody class=\"children\">\n"; foreach ($child_types as $type => $children) { if (count($children) < 10 || isset($_GET['show_children'][$object->guid][$type])) { foreach ($children as $child) { midgard_admin_asgard_trash_type_show($child, $child_indent, "{$prefix} ", false); } } else { echo "{$prefix} <tr>\n"; echo "{$prefix} <td class=\"label\" style=\"padding-left: {$child_indent}px\" colspan=\"5\"><a href=\"?show_children[{$object->guid}][{$type}]=1\">" . sprintf(midcom::get('i18n')->get_string('show %s %s children', 'midgard.admin.asgard'), count($children), midgard_admin_asgard_plugin::get_type_label($type)) . "</a></td>\n"; echo "{$prefix} </tr>\n"; } } echo "{$prefix}</tbody>\n"; } $shown[$object->guid] = true; }
</th> </tr> </thead> <tbody> <?php foreach ($data['types'] as $type => $items) { if ($items == 0) { continue; } ?> <tr> <td><a href="&(prefix);__mfa/asgard/trash/&(type);"><img src="<?php echo MIDCOM_STATIC_URL; ?> /stock-icons/16x16/trash-full.png" /> <?php echo midgard_admin_asgard_plugin::get_type_label($type); ?> </a></td> <td>&(items);</td> </tr> <?php } ?> </tbody> </table> <script type="text/javascript"> // <![CDATA[ jQuery('#deleted').tablesorter( { widgets: ['zebra'], sortList: [[0,0]]
/** * Populate the object breadcrumb * * @param mixed $object MgdSchema object for which the toolbar will be created * @param String $handler_id Initialized handler id * @param array $data Local request data */ private static function _set_object_breadcrumb($object, $handler_id, &$data) { $tmp = array(); $breadcrumb = array(); $label = $data['object_reflector']->get_object_label($object); $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('view', $object->guid), MIDCOM_NAV_NAME => $label); $parent = $object->get_parent(); if (is_a($object, 'midcom_db_parameter') && is_object($parent) && $parent->guid) { // Add "parameters" list to breadcrumb if we're in a param $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('parameters', $parent->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('parameters', 'midcom')); } $i = 0; while (is_object($parent) && $parent->guid && $i < 10) { $i++; $parent_reflector = midcom_helper_reflector::get($parent); $parent_label = $parent_reflector->get_object_label($parent); $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('view', $parent->guid), MIDCOM_NAV_NAME => $parent_label); $parent = $parent->get_parent(); } $breadcrumb = array_reverse($breadcrumb); switch ($handler_id) { case '____mfa-asgard-object_edit': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('edit', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('edit', 'midcom')); break; case '____mfa-asgard-object_copy': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('copy', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('copy', 'midcom')); break; case '____mfa-asgard-object_copy_tree': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('copy/tree', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('copy', 'midcom')); break; case '____mfa-asgard-components_configuration_edit_folder': $breadcrumb[] = array(MIDCOM_NAV_URL => "__mfa/asgard/components/configuration/edit/{$object->component}/{$object->guid}/", MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('component configuration', 'midcom')); break; case '____mfa-asgard-object_metadata': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('metadata', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('metadata', 'midcom')); break; case '____mfa-asgard-object_attachments': case '____mfa-asgard-object_attachments_edit': case '____mfa-asgard-object_attachments_delete': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('attachments', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('attachments', 'midgard.admin.asgard')); if ($handler_id == '____mfa-asgard-object_attachments_edit') { $breadcrumb[] = array(MIDCOM_NAV_URL => "__mfa/asgard/object/attachments/{$object->guid}/edit/", MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('edit', 'midcom')); } if ($handler_id == '____mfa-asgard-object_attachments_delete') { $breadcrumb[] = array(MIDCOM_NAV_URL => "__mfa/asgard/object/attachments/{$object->guid}/delete/", MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('delete', 'midcom')); } break; case '____mfa-asgard-object_parameters': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('parameters', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('parameters', 'midcom')); break; case '____mfa-asgard-object_permissions': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('permissions', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('privileges', 'midcom')); break; case '____mfa-asgard-object_create': if ($data['new_type_arg'] == 'midgard_parameter') { // Add "parameters" list to breadcrumb if we're creating a param $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('parameters', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('parameters', 'midcom')); } $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('create' . $data['new_type_arg'], $object->guid), MIDCOM_NAV_NAME => sprintf(midcom::get('i18n')->get_string('create %s', 'midcom'), midgard_admin_asgard_plugin::get_type_label($data['new_type_arg']))); break; case '____mfa-asgard-object_delete': $breadcrumb[] = array(MIDCOM_NAV_URL => self::_generate_url('delete', $object->guid), MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('delete', 'midcom')); break; case '____mfa-asgard_midcom.helper.replicator-object': $breadcrumb[] = array(MIDCOM_NAV_URL => "__mfa/asgard_midcom.helper.replicator/object/{$object->guid}/", MIDCOM_NAV_NAME => midcom::get('i18n')->get_string('replication information', 'midcom.helper.replicator')); break; case '____mfa-asgard-object_rcs_diff': $tmp[] = array(MIDCOM_NAV_URL => "__mfa/asgard/object/rcs/preview/{$object->guid}/{$data['args'][1]}/{$data['args'][2]}", MIDCOM_NAV_NAME => sprintf($data['l10n']->get('differences between %s and %s'), $data['args'][1], $data['args'][2])); case '____mfa-asgard-object_rcs_preview': if (isset($data['args'][2])) { $current = $data['args'][2]; } else { $current = $data['args'][1]; } $tmp[] = array(MIDCOM_NAV_URL => "__mfa/asgard/object/rcs/preview/{$object->guid}/{$current}/", MIDCOM_NAV_NAME => sprintf($data['l10n']->get('version %s'), $current)); case '____mfa-asgard-object_rcs_history': $tmp[] = array(MIDCOM_NAV_URL => "__mfa/asgard/object/rcs/{$object->guid}/", MIDCOM_NAV_NAME => $data['l10n']->get('show history')); $tmp = array_reverse($tmp); $breadcrumb = array_merge($breadcrumb, $tmp); break; } midcom_core_context::get()->set_custom_key('midcom.helper.nav.breadcrumb', $breadcrumb); }
private function _prepare_toolbar(&$data) { if (midcom::get('auth')->can_user_do('midgard:create', null, $this->type)) { $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard/object/create/{$this->type}/", MIDCOM_TOOLBAR_LABEL => sprintf(midcom::get('i18n')->get_string('create %s', 'midcom'), midgard_admin_asgard_plugin::get_type_label($this->type)), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/' . midcom_helper_reflector_tree::get_create_icon($this->type))); } if (midcom::get('auth')->admin) { $qb = new midgard_query_builder($this->type); $qb->include_deleted(); $qb->add_constraint('metadata.deleted', '=', true); $deleted = $qb->count(); if ($deleted > 0) { $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard/trash/{$this->type}/", MIDCOM_TOOLBAR_LABEL => sprintf(midcom::get('i18n')->get_string('%s deleted items', 'midgard.admin.asgard'), $deleted), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash-full.png')); } else { $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard/trash/{$this->type}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('trash is empty', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png')); } } if ($data['component'] != 'midgard') { $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__mfa/asgard/components/{$data['component']}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string($data['component'], $data['component']), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/component.png')); } $data['asgard_toolbar']->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/help/{$data['documentation_component']}/mgdschemas/#{$this->type}", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('type documentation', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_OPTIONS => array('target' => '_blank'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_help-agent.png')); }
private function _add_linked_field($key) { $linked_type = $this->_reflector->get_link_name($key); $linked_type_reflector = midcom_helper_reflector::get($linked_type); $field_type = $this->_reflector->get_midgard_type($key); if ($key == 'up') { $field_label = sprintf($this->_l10n->get('under %s'), midgard_admin_asgard_plugin::get_type_label($linked_type)); } else { $type_label = midgard_admin_asgard_plugin::get_type_label($linked_type); if (substr($type_label, 0, strlen($key)) == $key) { // Handle abbreviations like "lang" for "language" $field_label = $type_label; } else { if ($key == $type_label) { $field_label = $key; } else { $ref = midcom_helper_reflector::get($this->_object); $component_l10n = $ref->get_component_l10n(); $field_label = sprintf($this->_l10n->get('%s (%s)'), $component_l10n->get($key), $type_label); } } } // Get the chooser widgets switch ($field_type) { case MGD_TYPE_UINT: case MGD_TYPE_STRING: case MGD_TYPE_GUID: $class = midcom::get('dbclassloader')->get_midcom_class_name_for_mgdschema_object($linked_type); if (!$class) { break; } $component = midcom::get('dbclassloader')->get_component_for_class($linked_type); $this->_schemadb['object']->append_field($key, array('title' => $field_label, 'storage' => $key, 'type' => 'select', 'type_config' => array('require_corresponding_option' => false, 'options' => array(), 'allow_other' => true, 'allow_multiple' => false), 'widget' => 'chooser', 'widget_config' => array('class' => $class, 'component' => $component, 'titlefield' => $linked_type_reflector->get_label_property(), 'id_field' => $this->_reflector->get_link_target($key), 'searchfields' => $linked_type_reflector->get_search_properties(), 'result_headers' => $this->_get_result_headers($linked_type_reflector), 'orders' => array(), 'creation_mode_enabled' => true, 'creation_handler' => midcom_connection::get_url('self') . "__mfa/asgard/object/create/chooser/{$linked_type}/", 'creation_default_key' => $linked_type_reflector->get_label_property(), 'generate_path_for' => midcom_helper_reflector::get_name_property($this->_object)))); break; } }
/** * Trash 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_trash_type($handler_id, array $args, array &$data) { midcom::get('auth')->require_admin_user(); midcom::get('cache')->content->no_cache(); $this->type = $args[0]; $data['view_title'] = midgard_admin_asgard_plugin::get_type_label($this->type); midcom::get('head')->set_pagetitle($data['view_title']); $dummy = new $this->type(); $data['midcom_dba_classname'] = midcom::get('dbclassloader')->get_midcom_class_name_for_mgdschema_object($dummy); $data['type'] = $this->type; $data['reflector'] = midcom_helper_reflector::get($data['type']); $data['label_property'] = $data['reflector']->get_label_property(); if (isset($_POST['undelete']) && !isset($_POST['purge']) && is_array($_POST['undelete'])) { $this->_undelete(); return new midcom_response_relocate("__mfa/asgard/trash/{$this->type}/"); } if (isset($_POST['purge']) && is_array($_POST['undelete'])) { $this->_purge(); return new midcom_response_relocate("__mfa/asgard/trash/{$this->type}/"); } $qb = new org_openpsa_qbpager_direct($data['type'], "{$data['type']}_trash"); $qb->include_deleted(); $qb->add_constraint('metadata.deleted', '=', true); $qb->add_order('metadata.revised', 'DESC'); $data['qb'] =& $qb; $data['trash'] = $qb->execute_unchecked(); // Set the breadcrumb data $this->add_breadcrumb('__mfa/asgard/', $this->_l10n->get('midgard.admin.asgard')); $this->add_breadcrumb("__mfa/asgard/{$this->type}/", $data['view_title']); $this->add_breadcrumb("__mfa/asgard/trash/{$this->type}/", sprintf($this->_l10n->get('%s trash'), midgard_admin_asgard_plugin::get_type_label($data['type']))); }
/** * Object creating 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_create($handler_id, array $args, array &$data) { $this->_new_type = midcom::get('dbclassloader')->get_midcom_class_name_for_mgdschema_object($args[0]); if (!$this->_new_type) { throw new midcom_error_notfound('Failed to find type for the new object'); } midcom::get('dbclassloader')->load_mgdschema_class_handler($this->_new_type); if (!class_exists($this->_new_type)) { throw new midcom_error_notfound("Component handling MgdSchema type '{$args[0]}' was not found."); } $data['new_type_arg'] = $args[0]; midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); $data['defaults'] = array(); if ($handler_id == '____mfa-asgard-object_create_toplevel' || $handler_id == '____mfa-asgard-object_create_chooser') { midcom::get('auth')->require_user_do('midgard:create', null, $this->_new_type); $data['view_title'] = sprintf($this->_l10n_midcom->get('create %s'), midgard_admin_asgard_plugin::get_type_label($data['new_type_arg'])); } else { $this->_object = midcom::get('dbfactory')->get_object_by_guid($args[1]); $this->_object->require_do('midgard:create'); midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); // FIXME: Make a general case for all objects that are linked by guid to any other class if ($this->_new_type == 'midcom_db_parameter') { // Parameters are linked a bit differently $parent_property = 'guid'; $data['defaults']['parentguid'] = $this->_object->{$parent_property}; } else { // Set "defaults" $link_info = $this->_find_linking_property($this->_new_type); if (!is_array($link_info)) { throw new midcom_error("Could not establish link between {$this->_new_type} and " . get_class($this->_object)); } $parent_property = $link_info[1]; $data['defaults'][$link_info[0]] = $this->_object->{$parent_property}; } } $this->_load_schemadb($this->_new_type); if (isset($this->_schemadb['object']->fields['guid'])) { $this->_schemadb['object']->fields['guid']['hidden'] = true; } // Allow setting defaults from query string, useful for things like "create event for today" and chooser if (isset($_GET['defaults']) && is_array($_GET['defaults'])) { foreach ($_GET['defaults'] as $key => $value) { if (!isset($this->_schemadb['object']->fields[$key])) { // No such field in schema continue; } $data['defaults'][$key] = trim($value); } } $this->_controller = midcom_helper_datamanager2_controller::create('create'); $this->_controller->schemadb =& $this->_schemadb; $this->_controller->schema = 'object'; $this->_controller->callback_object =& $this; $this->_controller->defaults = $data['defaults']; if (!$this->_controller->initialize()) { throw new midcom_error("Failed to initialize a DM2 create controller."); } switch ($this->_controller->process_form()) { case 'edit': if ($this->_new_object) { $this->_new_object = null; } break; case 'save': if (is_a($this->_new_object, 'midcom_db_style') || is_a($this->_new_object, 'midcom_db_element')) { mgd_cache_invalidate(); } // Reindex the object //$indexer = midcom::get('indexer'); //net_nemein_wiki_viewer::index($this->_request_data['controller']->datamanager, $indexer, $this->_topic); // *** FALL-THROUGH *** $this->_new_object->set_parameter('midcom.helper.datamanager2', 'schema_name', 'default'); if ($handler_id != '____mfa-asgard-object_create_chooser') { $redirect_url = str_replace('//', '/', "__mfa/asgard/object/edit/{$this->_new_object->guid}/"); return new midcom_response_relocate($redirect_url); } break; case 'cancel': $data['cancelled'] = true; if ($this->_object) { $objecturl = "object/{$this->_request_data['default_mode']}/{$this->_object->guid}/"; } else { $objecturl = $args[0]; } if ($handler_id != '____mfa-asgard-object_create_chooser') { return new midcom_response_relocate("__mfa/asgard/{$objecturl}/"); } } $this->_prepare_request_data(); }
/** * Populate the object toolbar * * @param mixed $object MgdSchema object for which the toolbar will be created * @param String $handler_id Initialized handler id * @param array $data Local request data */ public function bind_to_object($object, $handler_id, $data) { // Show view toolbar button, if the user hasn't configured to use straight the edit mode if ($data['default_mode'] === 'view') { $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('view', $object), MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('view', 'midcom'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/view.png', MIDCOM_TOOLBAR_ACCESSKEY => 'v')); } if (!is_a($object, 'midcom_db_style') && !is_a($object, 'midcom_db_element') && !is_a($object, 'midcom_db_snippetdir') && !is_a($object, 'midcom_db_snippet') && !is_a($object, 'midcom_db_page') && !is_a($object, 'midcom_db_pageelement') && !is_a($object, 'midcom_db_parameter') && substr($object->__mgdschema_class_name__, 0, 23) != 'org_routamc_positioning' && substr($object->__mgdschema_class_name__, 0, 14) != 'net_nemein_tag') { $link = midcom::get('permalinks')->resolve_permalink($object->guid); if ($link) { $this->add_item(array(MIDCOM_TOOLBAR_URL => $link, MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('view on site', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_internet.png')); } } if ($object->can_do('midgard:update')) { $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('edit', $object), MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('edit', 'midcom'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ACCESSKEY => 'e')); } if ($object->can_do('midgard:create')) { if (midcom_helper_reflector_tree::get_child_objects($object)) { $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('copy/tree', $object), MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('copy', 'midcom'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/editcopy.png')); } else { $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('copy', $object), MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('copy', 'midcom'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/editcopy.png')); } } if ($object->can_do('midgard:update')) { $this->_add_toolbar_update_items($object); } if ($object->can_do('midgard:create')) { // Find out what types of children the object can have and show create buttons for them $child_types = $data['tree_reflector']->get_child_classes(); if (!is_array($child_types)) { debug_add("\$data['tree_reflector']->get_child_classes() failed critically, recasting \$child_types as array", MIDCOM_LOG_WARN); $child_types = array(); } foreach ($child_types as $type) { $display_button = true; if (is_a($object, 'midcom_db_topic')) { // With topics we should check for component before populating create buttons as so many types can be children of topics switch ($type) { case 'midgard_topic': case 'midgard_article': // Articles and topics can always be created break; default: $midcom_dba_classname = midcom::get('dbclassloader')->get_midcom_class_name_for_mgdschema_object($type); if (!$midcom_dba_classname) { $display_button = false; break; } $component = midcom::get('dbclassloader')->get_component_for_class($type); if ($component != $object->component) { $display_button = false; } break; } } elseif (is_a($object, 'midcom_db_article') && $object->topic) { $topic = new midcom_db_topic($object->topic); // With articles we should check for topic component before populating create buttons as so many types can be children of topics switch ($type) { case 'midgard_article': // Articles can always be created break; default: $component = midcom::get('dbclassloader')->get_component_for_class($type); if ($component != $topic->component) { $display_button = false; } break; } } if (!$display_button) { // Skip this type continue; } $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('create/' . $type, $object), MIDCOM_TOOLBAR_LABEL => sprintf(midcom::get('i18n')->get_string('create %s', 'midcom'), midgard_admin_asgard_plugin::get_type_label($type)), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/' . $data['tree_reflector']->get_create_icon($type))); } } if ($object->can_do('midgard:delete')) { $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('delete', $object), MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('delete', 'midcom'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png', MIDCOM_TOOLBAR_ACCESSKEY => 'd')); } if ($GLOBALS['midcom_config']['midcom_services_rcs_enable'] && $object->can_do('midgard:update') && $object->_use_rcs) { $this->add_item(array(MIDCOM_TOOLBAR_URL => $this->_generate_url('rcs', $object), MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('show history', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/history.png', MIDCOM_TOOLBAR_ENABLED => substr($handler_id, 0, 25) === '____mfa-asgard-object_rcs' ? false : true, MIDCOM_TOOLBAR_ACCESSKEY => 'h')); } $this->_disable_active_item($handler_id, $object, $data); }