Ejemplo n.º 1
0
 /**
  * Adds the topic management commands to the specified toolbar.
  *
  * Repeated calls to the same toolbar are intercepted accordingly.
  *
  * @param midcom_helper_toolbar &$toolbar A reference to the toolbar to use.
  * @param int $context_id The context to use (the topic is drawn from there). This defaults
  *     to the currently active context.
  */
 function add_topic_management_commands(&$toolbar, $context_id = null)
 {
     if (array_key_exists('midcom_services_toolbars_bound_to_topic', $toolbar->customdata)) {
         // We already processed this toolbar, skipping further adds.
         return;
     } else {
         $toolbar->customdata['midcom_services_toolbars_bound_to_topic'] = true;
     }
     $topic = midcom_core_context::get($context_id)->get_key(MIDCOM_CONTEXT_CONTENTTOPIC);
     // Bullet-proof
     if (!$topic || !$topic->guid) {
         return false;
     }
     $topics = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_URLTOPICS);
     $urltopic = end($topics);
     if (!$urltopic) {
         $urltopic = $topic;
     }
     if ($topic->can_do('midgard:update') && $topic->can_do('midcom.admin.folder:topic_management')) {
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/edit/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('edit folder', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ACCESSKEY => 'g'));
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/metadata/{$urltopic->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('edit folder metadata', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/metadata.png'));
     }
     if ($urltopic->can_do('midgard:update') && $urltopic->can_do('midcom.admin.folder:topic_management')) {
         // Allow to move other than root folder
         if ($urltopic->guid !== $GLOBALS['midcom_config']['midcom_root_topic_guid']) {
             $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/move/{$urltopic->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('move', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/save-as.png'));
         }
     }
     if ($topic->can_do('midgard:update') && $topic->can_do('midcom.admin.folder:topic_management')) {
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/order/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('order navigation', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/topic-score.png', MIDCOM_TOOLBAR_ACCESSKEY => 'o'));
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => midcom_connection::get_url('self') . "__mfa/asgard/object/open/{$topic->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('manage object', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/properties.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard.admin.asgard:access', null, 'midgard_admin_asgard_plugin', 'midgard.admin.asgard') && midcom::get('auth')->can_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin')));
     }
     if ($GLOBALS['midcom_config']['metadata_approval'] && $topic->can_do('midcom:approve')) {
         $metadata = midcom_helper_metadata::retrieve($topic);
         if ($metadata->is_approved()) {
             $icon = 'stock-icons/16x16/page-approved.png';
             if (!$GLOBALS['midcom_config']['show_hidden_objects'] && !$metadata->is_visible()) {
                 // Take scheduling into account
                 $icon = 'stock-icons/16x16/page-approved-notpublished.png';
             }
             $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/unapprove/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('unapprove topic', 'midcom'), MIDCOM_TOOLBAR_HELPTEXT => midcom::get('i18n')->get_string('approved', 'midcom'), MIDCOM_TOOLBAR_ICON => $icon, MIDCOM_TOOLBAR_POST => true, MIDCOM_TOOLBAR_POST_HIDDENARGS => array('guid' => $topic->guid, 'return_to' => $_SERVER['REQUEST_URI'])));
         } else {
             $icon = 'stock-icons/16x16/page-notapproved.png';
             if (!$GLOBALS['midcom_config']['show_hidden_objects'] && !$metadata->is_visible()) {
                 // Take scheduling into account
                 $icon = 'stock-icons/16x16/page-notapproved-notpublished.png';
             }
             $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/approve/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('approve topic', 'midcom'), MIDCOM_TOOLBAR_HELPTEXT => midcom::get('i18n')->get_string('unapproved', 'midcom'), MIDCOM_TOOLBAR_ICON => $icon, MIDCOM_TOOLBAR_POST => true, MIDCOM_TOOLBAR_POST_HIDDENARGS => array('guid' => $topic->guid, 'return_to' => $_SERVER['REQUEST_URI'])));
         }
     }
     if ($topic->can_do('midcom.admin.folder:template_management') && midcom::get('auth')->can_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin')) {
         $enabled = false;
         $styleeditor_url = '';
         if ($topic->style != '') {
             $style_id = midcom::get('style')->get_style_id_from_path($topic->style);
             if ($style_id) {
                 try {
                     $style = midcom_db_style::get_cached($style_id);
                     $styleeditor_url = midcom_connection::get_url('self') . "__mfa/asgard/object/view/{$style->guid}/";
                     $enabled = true;
                 } catch (midcom_error $e) {
                     $e->log();
                 }
             }
         }
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $styleeditor_url, MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('edit layout template', 'midgard.admin.asgard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/text-x-generic-template.png', MIDCOM_TOOLBAR_ACCESSKEY => 't', MIDCOM_TOOLBAR_ENABLED => $enabled));
     }
     if ($topic->can_do('midgard:create') && $topic->can_do('midcom.admin.folder:topic_management')) {
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/create/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('create subfolder', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new-dir.png', MIDCOM_TOOLBAR_ACCESSKEY => 'f'));
         if ($GLOBALS['midcom_config']['symlinks'] && $topic->can_do('midcom.admin.folder:symlinks')) {
             $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/createlink/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('create folder link', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new-dir.png', MIDCOM_TOOLBAR_ACCESSKEY => 'f'));
         }
     }
     if ($urltopic->guid !== $GLOBALS['midcom_config']['midcom_root_topic_guid'] && $urltopic->can_do('midgard:delete') && $urltopic->can_do('midcom.admin.folder:topic_management')) {
         $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "__ais/folder/delete/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('delete folder', 'midcom.admin.folder'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png'));
     }
 }