array('object' => NULL), 'file' => 'includes/context.theme.inc', ); $theme['ctools_context_list_no_table'] = array( 'variables' => array('object' => NULL), 'file' => 'includes/context.theme.inc', ); $theme['ctools_context_item_form'] = array( 'render element' => 'form', 'file' => 'includes/context.theme.inc', ); $theme['ctools_context_item_row'] = array( 'variables' => array('type' => NULL, 'form' => NULL, 'position' => NULL, 'count' => NULL, 'with_tr' => TRUE), 'file' => 'includes/context.theme.inc', ); // For the access plugin. $theme['ctools_access_admin_add'] = array( 'render element' => 'form', 'file' => 'includes/context-access-admin.inc', ); } /** * Theme the form item for the context entry. */ function theme_ctools_context_item_row($vars) { $type = $vars['type']; $form = $vars['form']; $position = $vars['position']; $count = $vars['count']; $with_tr = $vars['with_tr']; $output = ' ' . render($form['title']) . ''; if (!empty($form['position'])) { $output .= ' ' . render($form['position']) . ''; } $output .= '' . render($form['settings']); $output .= render($form['remove']) . ''; if ($with_tr) { $output = '' . $output . ''; } return $output; } /** * Display the context item. */ function theme_ctools_context_item_form($vars) { $form = $vars['form']; $output = ''; $type = $form['#ctools_context_type']; $module = $form['#ctools_context_module']; $cache_key = $form['#cache_key']; $type_info = ctools_context_info($type); if (!empty($form[$type]) && empty($form['#only_buttons'])) { $count = 0; $rows = ''; foreach (array_keys($form[$type]) as $id) { if (!is_numeric($id)) { continue; } $theme_vars = array(); $theme_vars['type'] = $type; $theme_vars['form'] = $form[$type][$id]; $theme_vars['position'] = $id; $theme_vars['count'] = $count++; $rows .= theme('ctools_context_item_row', $theme_vars); } $output .= ''; $output .= ''; $output .= ''; $output .= ''; if (!empty($type_info['sortable']) && $count) { $output .= ''; } $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= $rows; $output .= ''; $output .= '
' . $type_info['title'] . '' . t('Weight') . '' . t('Operation') . '
'; } if (!empty($form['buttons'])) { // Display the add context item. $row = array(); $row[] = array('data' => render($form['buttons'][$type]['item']), 'class' => array('title')); $row[] = array('data' => render($form['buttons'][$type]['add']), 'class' => array('add'), 'width' => "60%"); $output .= '
'; $output .= render($form['buttons'][$type]); $theme_vars = array(); $theme_vars['header'] = array(); $theme_vars['rows'] = array($row); $theme_vars['attributes'] = array('id' => $type . '-add-table'); $output .= theme('table', $theme_vars); $output .= '
'; } if (!empty($form['description'])) { $output .= render($form['description']); } if (!empty($type_info['sortable'])) { drupal_add_tabledrag($type . '-table', 'order', 'sibling', 'drag-position'); } return $output; } /** * Create a visible list of all the contexts available on an object. * Assumes arguments, relationships and context objects. * * Contexts must be preloaded. */ function theme_ctools_context_list($vars) { $object = $vars['object']; $header = $vars['header']; $description = (!empty($vars['description'])) ? $vars['description'] : NULL; $titles = array(); $output = ''; $count = 1; $contexts = ctools_context_load_contexts($object); // Describe 'built in' contexts. if (!empty($object->base_contexts)) { foreach ($object->base_contexts as $id => $context) { $output .= ''; $output .= '' . t('Built in context') . ''; $desc = check_plain($context->identifier); if (isset($context->keyword)) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $context->keyword)); foreach (ctools_context_get_converters('%' . $context->keyword . ':', $context) as $keyword => $title) { $desc .= '
' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); } $desc .= '
'; } if (isset($context->description)) { $desc .= '
' . filter_xss_admin($context->description) . '
'; } $output .= '' . $desc . ''; $output .= ''; $titles[$id] = $context->identifier; } } // First, make a list of arguments. Arguments are pretty simple. if (!empty($object->arguments)) { foreach ($object->arguments as $argument) { $output .= ''; $output .= '' . t('Argument @count', array('@count' => $count)) . ''; $desc = check_plain($argument['identifier']); if (isset($argument['keyword'])) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $argument['keyword'])); if (isset($contexts[ctools_context_id($argument, 'argument')])) { foreach (ctools_context_get_converters('%' . $argument['keyword'] . ':', $contexts[ctools_context_id($argument, 'argument')]) as $keyword => $title) { $desc .= '
' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); } } $desc .= '
'; } $output .= '' . $desc . ''; $output .= ''; $titles[ctools_context_id($argument, 'argument')] = $argument['identifier']; $count++; } } $count = 1; // Then, make a nice list of contexts. if (!empty($object->contexts)) { foreach ($object->contexts as $context) { $output .= ''; $output .= '' . t('Context @count', array('@count' => $count)) . ''; $desc = check_plain($context['identifier']); if (isset($context['keyword'])) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $context['keyword'])); foreach (ctools_context_get_converters('%' . $context['keyword'] . ':', $contexts[ctools_context_id($context, 'context')]) as $keyword => $title) { $desc .= '
' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); } $desc .= '
'; } $output .= '' . $desc . ''; $output .= ''; $titles[ctools_context_id($context)] = $context['identifier']; $count++; } } // And relationships. if (!empty($object->relationships)) { foreach ($object->relationships as $relationship) { $output .= ''; if (is_array($relationship['context'])) { $rtitles = array(); foreach ($relationship['context'] as $cid) { $rtitles[$cid] = $titles[$cid]; } $title = implode(' + ', $rtitles); } else { $title = $titles[$relationship['context']]; } $output .= '' . t('From "@title"', array('@title' => $title)) . ''; $desc = check_plain($relationship['identifier']); if (isset($relationship['keyword'])) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $relationship['keyword'])); foreach (ctools_context_get_converters('%' . $relationship['keyword'] . ':', $contexts[ctools_context_id($relationship, 'relationship')]) as $keyword => $title) { $desc .= '
' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); } $desc .= '
'; } $output .= '' . $desc . ''; $output .= ''; $titles[ctools_context_id($relationship, 'relationship')] = $relationship['identifier']; $count++; } } $head = ''; if ($header) { if ($description) { $header .= '
' . $description . '
'; } $head .= ''; $head .= '' . $header . ''; $head .= ''; } return $output ? "$head$output
\n" : "$head
\n"; } /** * The ctools_context_list() function but not in a table format because * tabledrag won't let us have tables within tables and still drag. */ function theme_ctools_context_list_no_table($vars) { $object = $vars['object']; ctools_add_css('context'); $titles = array(); $output = ''; $count = 1; // Describe 'built in' contexts. if (!empty($object->base_contexts)) { foreach ($object->base_contexts as $id => $context) { $output .= '
'; $output .= '
' . t('Built in context') . '
'; $desc = check_plain($context->identifier); if (isset($context->keyword)) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $context->keyword)) . '
'; } if (isset($context->description)) { $desc .= '
' . filter_xss_admin($context->description) . '
'; } $output .= '
' . $desc . '
'; $output .= '
'; $titles[$id] = $context->identifier; $count++; } } // First, make a list of arguments. Arguments are pretty simple. if (!empty($object->arguments)) { foreach ($object->arguments as $argument) { $output .= '
'; $output .= '
' . t('Argument @count', array('@count' => $count)) . '
'; $desc = check_plain($argument['identifier']); if (isset($argument['keyword'])) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $argument['keyword'])) . '
'; } $output .= '
' . $desc . '
'; $output .= '
'; $titles[ctools_context_id($argument, 'argument')] = $argument['identifier']; $count++; } } $count = 1; // Then, make a nice list of contexts. if (!empty($object->contexts)) { foreach ($object->contexts as $context) { $output .= '
'; $output .= '
' . t('Context @count', array('@count' => $count)) . '
'; $desc = check_plain($context['identifier']); if (isset($context['keyword'])) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $context['keyword'])) . '
'; } $output .= '
' . $desc . '
'; $output .= '
'; $titles[ctools_context_id($context)] = $context['identifier']; $count++; } } // And relationships. if (!empty($object->relationships)) { foreach ($object->relationships as $relationship) { $output .= '
'; if (is_array($relationship['context'])) { $rtitles = array(); foreach ($relationship['context'] as $cid) { $rtitles[$cid] = $titles[$cid]; } $title = implode(' + ', $rtitles); } else { $title = $titles[$relationship['context']]; } $output .= '
' . t('From "@title"', array('@title' => $title)) . '
'; $desc = check_plain($relationship['identifier']); if (isset($relationship['keyword'])) { $desc .= '
' . t('Keyword: %@keyword', array('@keyword' => $relationship['keyword'])) . '
'; } $output .= '
' . $desc . '
'; $output .= '
'; $titles[ctools_context_id($relationship, 'relationship')] = $relationship['identifier']; $count++; } } return $output; }