You are here

function panels_renderer_editor::get_pane_links in Panels 7.3

Same name and namespace in other branches
  1. 6.3 plugins/display_renderers/panels_renderer_editor.class.php \panels_renderer_editor::get_pane_links()

Render the links to display when editing a pane.

1 call to panels_renderer_editor::get_pane_links()
panels_renderer_editor::render_pane in plugins/display_renderers/panels_renderer_editor.class.php
Render a pane using its designated style.

File

plugins/display_renderers/panels_renderer_editor.class.php, line 304
Class file to control the main Panels editor.

Class

panels_renderer_editor
@file Class file to control the main Panels editor.

Code

function get_pane_links($pane, $content_type) {
  if (!empty($this->no_edit_links)) {
    return '';
  }
  $links = array();
  if (!empty($pane->shown)) {
    $links['top']['disabled'] = array(
      'title' => t('Disable this pane'),
      'href' => $this
        ->get_url('hide', $pane->pid),
      'attributes' => array(
        'class' => array(
          'use-ajax',
        ),
      ),
    );
  }
  else {
    $links['top']['enable'] = array(
      'title' => t('Enable this pane'),
      'href' => $this
        ->get_url('show', $pane->pid),
      'attributes' => array(
        'class' => array(
          'use-ajax',
        ),
      ),
    );
  }
  if (isset($this->display->title_pane) && $this->display->title_pane == $pane->pid) {
    $links['top']['panels-set-title'] = array(
      'title' => t('✓Panel title'),
      'html' => TRUE,
    );
  }
  else {
    $links['top']['panels-set-title'] = array(
      'title' => t('Panel title'),
      'href' => $this
        ->get_url('panel-title', $pane->pid),
      'attributes' => array(
        'class' => array(
          'use-ajax',
        ),
      ),
    );
  }
  $subtype = ctools_content_get_subtype($content_type, $pane->subtype);
  if (ctools_content_editable($content_type, $subtype, $pane->configuration)) {
    $links['top']['settings'] = array(
      'title' => isset($content_type['edit text']) ? $content_type['edit text'] : t('Settings'),
      'href' => $this
        ->get_url('edit-pane', $pane->pid),
      'attributes' => array(
        'class' => array(
          'ctools-use-modal',
        ),
      ),
    );
  }
  if (user_access('administer advanced pane settings')) {
    $links['top']['css'] = array(
      'title' => t('CSS properties'),
      'href' => $this
        ->get_url('pane-css', $pane->pid),
      'attributes' => array(
        'class' => array(
          'ctools-use-modal',
        ),
      ),
    );
  }
  if (user_access('administer panels pane styles')) {
    $links['style'] = $this
      ->get_style_links('pane', $pane->pid);
  }
  if (user_access('administer pane access')) {
    $contexts = $this->display->context;

    // Make sure we have the logged in user context.
    if (!isset($contexts['logged-in-user'])) {
      $contexts['logged-in-user'] = ctools_access_get_loggedin_context();
    }
    $visibility_links = array();
    if (!empty($pane->access['plugins'])) {
      foreach ($pane->access['plugins'] as $id => $test) {
        $plugin = ctools_get_access_plugin($test['name']);
        $access_title = isset($plugin['title']) ? $plugin['title'] : t('Broken/missing access plugin %plugin', array(
          '%plugin' => $test['name'],
        ));
        $access_description = ctools_access_summary($plugin, $contexts, $test);
        $visibility_links[] = array(
          'title' => $access_description,
          'href' => $this
            ->get_url('access-configure-test', $pane->pid, $id),
          'attributes' => array(
            'class' => array(
              'ctools-use-modal',
              'panels-italic',
            ),
          ),
        );
      }
    }
    if (empty($visibility_links)) {
      $visibility_links['no_rules'] = array(
        'title' => t('No rules'),
        'attributes' => array(
          'class' => array(
            'panels-text',
          ),
        ),
      );
    }
    $visibility_links['add_rule'] = array(
      'title' => t('Add new rule'),
      'href' => $this
        ->get_url('access-add-test', $pane->pid),
      'attributes' => array(
        'class' => array(
          'ctools-use-modal',
        ),
      ),
    );
    $visibility_links['settings'] = array(
      'title' => t('Settings'),
      'href' => $this
        ->get_url('access-settings', $pane->pid),
      'attributes' => array(
        'class' => array(
          'ctools-use-modal',
        ),
      ),
    );
    $links['visibility'] = $visibility_links;
  }
  if (user_access('use panels locks')) {
    $lock_type = !empty($pane->locks['type']) ? $pane->locks['type'] : 'none';
    switch ($lock_type) {
      case 'immovable':
        $lock_method = t('Immovable');
        break;
      case 'regions':
        $lock_method = t('Regions');
        break;
      case 'none':
      default:
        $lock_method = t('No lock');
        break;
    }
    $lock_links['lock'] = array(
      'title' => $lock_method,
      'attributes' => array(
        'class' => array(
          'panels-text',
        ),
      ),
    );
    $lock_links['change'] = array(
      'title' => t('Change'),
      'href' => $this
        ->get_url('lock', $pane->pid),
      'attributes' => array(
        'class' => array(
          'ctools-use-modal',
        ),
      ),
    );
    $links['lock'] = $lock_links;
  }
  if (panels_get_caches() && user_access('use panels caching features')) {
    $method = isset($pane->cache['method']) ? $pane->cache['method'] : 0;
    $info = panels_get_cache($method);
    $cache_method = isset($info['title']) ? $info['title'] : t('No caching');
    $cache_links['title'] = array(
      'title' => $cache_method,
      'attributes' => array(
        'class' => array(
          'panels-text',
        ),
      ),
    );
    $cache_links['change'] = array(
      'title' => t('Change'),
      'href' => $this
        ->get_url('cache-method', $pane->pid),
      'attributes' => array(
        'class' => array(
          'ctools-use-modal',
        ),
      ),
    );
    if (panels_plugin_get_function('cache', $info, 'settings form')) {
      $cache_links['settings'] = array(
        'title' => t('Settings'),
        'href' => $this
          ->get_url('cache-settings', $pane->pid),
        'attributes' => array(
          'class' => array(
            'ctools-use-modal',
          ),
        ),
      );
    }
    $links['cache'] = $cache_links;
  }
  $links['bottom']['remove'] = array(
    'title' => t('Remove'),
    'href' => '#',
    'attributes' => array(
      'class' => array(
        'pane-delete',
      ),
      'id' => "pane-delete-panel-pane-{$pane->pid}",
    ),
  );

  // Allow others to add/remove links from pane context menu.
  // Grouped by 'top', 'style', 'visibility', 'lock', 'cache' and 'bottom'.
  drupal_alter('get_pane_links', $links, $pane, $content_type);
  $dropdown_links = $links['top'];
  $category_labels = array(
    'style' => 'Style',
    'visibility' => 'Visibility rules',
    'lock' => 'Locking',
    'cache' => 'Caching',
  );
  foreach ($category_labels as $category => $label) {
    if (array_key_exists($category, $links)) {
      $dropdown_links[] = array(
        'title' => '<hr />',
        'html' => TRUE,
      );
      $dropdown_links[] = array(
        'title' => '<span class="dropdown-header">' . t($label) . '</span>' . theme_links(array(
          'links' => $links[$category],
          'attributes' => array(),
          'heading' => array(),
        )),
        'html' => TRUE,
        'attributes' => array(
          'class' => array(
            'panels-sub-menu',
          ),
        ),
      );
    }
  }
  $dropdown_links[] = array(
    'title' => '<hr />',
    'html' => TRUE,
  );
  $dropdown_links = array_merge($dropdown_links, $links['bottom']);
  return theme('ctools_dropdown', array(
    'title' => theme('image', array(
      'path' => ctools_image_path('icon-configure.png', 'panels'),
    )),
    'links' => $dropdown_links,
    'image' => TRUE,
  ));
}