Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0 / 0 |
|
100.00% |
0 / 0 |
CRAP | |
6.13% |
16 / 261 |
|
ctools_context_theme | |
100.00% |
1 / 1 |
0 | |
100.00% |
16 / 16 |
|||
theme_ctools_context_item_row | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 15 |
|||
theme_ctools_context_item_form | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 54 |
|||
theme_ctools_context_list | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 102 |
|||
theme_ctools_context_list_no_table | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 74 |
<?php | |
/** | |
* @file | |
* Contains theme registry and theme implementations for the context tool. | |
*/ | |
/** | |
* Implements hook_theme() | |
*/ | |
function ctools_context_theme(&$theme) { | |
$theme['ctools_context_list'] = array( | |
'variables' => 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', | |
// 'variables' => array('form' => NULL), | |
'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 = '<td class="title"> ' . render($form['title']) . '</td>'; | |
if (!empty($form['position'])) { | |
$output .= '<td class="position"> ' . render($form['position']) . '</td>'; | |
} | |
$output .= '<td class="operation">' . render($form['settings']); | |
$output .= render($form['remove']) . '</td>'; | |
if ($with_tr) { | |
$output = '<tr id="' . $type . '-row-' . $position . '" class="draggable ' . $type . '-row ' . ($count % 2 ? 'even' : 'odd') . '">' . $output . '</tr>'; | |
} | |
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 .= '<table id="' . $type . '-table">'; | |
$output .= '<thead>'; | |
$output .= '<tr>'; | |
$output .= '<th class="title">' . $type_info['title'] . '</th>'; | |
if (!empty($type_info['sortable']) && $count) { | |
$output .= '<th class="position">' . t('Weight') . '</th>'; | |
} | |
$output .= '<th class="operation">' . t('Operation') . '</th>'; | |
$output .= '</tr>'; | |
$output .= '</thead>'; | |
$output .= '<tbody>'; | |
$output .= $rows; | |
$output .= '</tbody>'; | |
$output .= '</table>'; | |
} | |
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 .= '<div class="buttons">'; | |
$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 .= '</div>'; | |
} | |
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 .= '<tr>'; | |
$output .= '<td valign="top"><em>' . t('Built in context') . '</em></td>'; | |
$desc = check_plain($context->identifier); | |
if (isset($context->keyword)) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $context->keyword)); | |
foreach (ctools_context_get_converters('%' . $context->keyword . ':', $context) as $keyword => $title) { | |
$desc .= '<br />' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); | |
} | |
$desc .= '</div>'; | |
} | |
if (isset($context->description)) { | |
$desc .= '<div class="description">' . filter_xss_admin($context->description) . '</div>'; | |
} | |
$output .= '<td>' . $desc . '</td>'; | |
$output .= '</tr>'; | |
$titles[$id] = $context->identifier; | |
} | |
} | |
// First, make a list of arguments. Arguments are pretty simple. | |
if (!empty($object->arguments)) { | |
foreach ($object->arguments as $argument) { | |
$output .= '<tr>'; | |
$output .= '<td valign="top"><em>' . t('Argument @count', array('@count' => $count)) . '</em></td>'; | |
$desc = check_plain($argument['identifier']); | |
if (isset($argument['keyword'])) { | |
$desc .= '<div class="description">' . 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 .= '<br />' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); | |
} | |
} | |
$desc .= '</div>'; | |
} | |
$output .= '<td>' . $desc . '</td>'; | |
$output .= '</tr>'; | |
$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 .= '<tr>'; | |
$output .= '<td valign="top"><em>' . t('Context @count', array('@count' => $count)) . '</em></td>'; | |
$desc = check_plain($context['identifier']); | |
if (isset($context['keyword'])) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $context['keyword'])); | |
foreach (ctools_context_get_converters('%' . $context['keyword'] . ':', $contexts[ctools_context_id($context, 'context')]) as $keyword => $title) { | |
$desc .= '<br />' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); | |
} | |
$desc .= '</div>'; | |
} | |
$output .= '<td>' . $desc . '</td>'; | |
$output .= '</tr>'; | |
$titles[ctools_context_id($context)] = $context['identifier']; | |
$count++; | |
} | |
} | |
// And relationships | |
if (!empty($object->relationships)) { | |
foreach ($object->relationships as $relationship) { | |
$output .= '<tr>'; | |
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 .= '<td valign="top"><em>' . t('From "@title"', array('@title' => $title)) . '</em></td>'; | |
$desc = check_plain($relationship['identifier']); | |
if (isset($relationship['keyword'])) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $relationship['keyword'])); | |
foreach (ctools_context_get_converters('%' . $relationship['keyword'] . ':', $contexts[ctools_context_id($relationship, 'relationship')]) as $keyword => $title) { | |
$desc .= '<br />' . t('@keyword --> @title', array('@keyword' => $keyword, '@title' => $title)); | |
} | |
$desc .= '</div>'; | |
} | |
$output .= '<td>' . $desc . '</td>'; | |
$output .= '</tr>'; | |
$titles[ctools_context_id($relationship, 'relationship')] = $relationship['identifier']; | |
$count++; | |
} | |
} | |
$head = ''; | |
if ($header) { | |
if ($description) { | |
$header .= '<div class="description">' . $description . '</div>'; | |
} | |
$head .= '<thead><tr>'; | |
$head .= '<th colspan="2">' . $header . '</th>'; | |
$head .= '</tr></thead>'; | |
} | |
return $output ? "<table>$head<tbody>$output</tbody></table>\n" : "<table>$head</table>\n"; | |
} | |
/** | |
* ctools_context_list() 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 .= '<div class="ctools-context-holder clearfix">'; | |
$output .= '<div class="ctools-context-title">' . t('Built in context') . '</div>'; | |
$desc = check_plain($context->identifier); | |
if (isset($context->keyword)) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $context->keyword)) . '</div>'; | |
} | |
if (isset($context->description)) { | |
$desc .= '<div class="description">' . filter_xss_admin($context->description) . '</div>'; | |
} | |
$output .= '<div class="ctools-context-content">' . $desc . '</div>'; | |
$output .= '</div>'; | |
$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 .= '<div class="ctools-context-holder clearfix">'; | |
$output .= '<div class="ctools-context-title">' . t('Argument @count', array('@count' => $count)) . '</div>'; | |
$desc = check_plain($argument['identifier']); | |
if (isset($argument['keyword'])) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $argument['keyword'])) . '</div>'; | |
} | |
$output .= '<div class="ctools-context-content">' . $desc . '</div>'; | |
$output .= '</div>'; | |
$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 .= '<div class="ctools-context-holder clearfix">'; | |
$output .= '<div class="ctools-context-title">' . t('Context @count', array('@count' => $count)) . '</div>'; | |
$desc = check_plain($context['identifier']); | |
if (isset($context['keyword'])) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $context['keyword'])) . '</div>'; | |
} | |
$output .= '<div class="ctools-context-content">' . $desc . '</div>'; | |
$output .= '</div>'; | |
$titles[ctools_context_id($context)] = $context['identifier']; | |
$count++; | |
} | |
} | |
// And relationships | |
if (!empty($object->relationships)) { | |
foreach ($object->relationships as $relationship) { | |
$output .= '<div class="ctools-context-holder clearfix">'; | |
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 .= '<div class="ctools-context-title">' . t('From "@title"', array('@title' => $title)) . '</div>'; | |
$desc = check_plain($relationship['identifier']); | |
if (isset($relationship['keyword'])) { | |
$desc .= '<div class="description">' . t('Keyword: %@keyword', array('@keyword' => $relationship['keyword'])) . '</div>'; | |
} | |
$output .= '<div class="ctools-context-content">' . $desc . '</div>'; | |
$output .= '</div>'; | |
$titles[ctools_context_id($relationship, 'relationship')] = $relationship['identifier']; | |
$count++; | |
} | |
} | |
return $output; | |
} | |