vocabulary_terms.inc
File
-
plugins/
content_types/ vocabulary_context/ vocabulary_terms.inc
View source
<?php
/**
* @file
*/
if (module_exists('taxonomy')) {
/**
* Plugins are described by creating a $plugin array which will be used
* by the system that includes this file.
*/
$plugin = array(
'single' => TRUE,
'title' => t('Vocabulary terms'),
'icon' => 'icon_vocabulary.png',
'description' => t('All the terms in a vocabulary.'),
'required context' => new ctools_context_required(t('Vocabulary'), 'entity:taxonomy_vocabulary'),
'category' => t('Vocabulary'),
'defaults' => array(
'max_depth' => 0,
'tree' => 1,
),
);
}
/**
* Output function for the 'vocabulary terms' content type. Outputs a
* list of terms for the input vocabulary.
*/
function ctools_vocabulary_terms_content_type_render($subtype, $conf, $panel_args, $context) {
$vocab = isset($context->data) ? clone $context->data : NULL;
$max_depth = !empty($conf['max_depth']) ? (int) $conf['max_depth'] : NULL;
if ($conf['tree'] == FALSE) {
$terms = taxonomy_get_tree($vocab->vid, 0, $max_depth);
$items = array();
foreach ($terms as $term) {
$items[] = l($term->name, 'taxonomy/term/' . $term->tid);
}
$output = theme('item_list', array(
'items' => $items,
));
}
else {
$output = theme('item_list', array(
'items' => _ctools_content_vocabulary_terms($vocab->vid, $max_depth),
));
}
$block = new stdClass();
$block->module = 'node_type';
$block->title = check_plain($vocab->name);
$block->content = $output;
$block->delta = $vocab->vid;
return $block;
}
function _ctools_content_vocabulary_terms($vid, $max_depth, $depth = -1, $tid = 0) {
$depth++;
if ($max_depth != NULL && $depth == $max_depth) {
return array();
}
$return = array();
$query = db_select('taxonomy_term_data', 't')->fields('t', array(
'tid',
));
$query->join('taxonomy_term_hierarchy', 'h', ' t.tid = h.tid');
$query->condition('t.vid', $vid)
->condition('h.parent', $tid)
->orderBy('t.weight')
->orderBy('t.name');
$tids = $query->execute()
->fetchCol();
$terms = taxonomy_term_load_multiple($tids);
foreach ($terms as $term) {
$return[] = array(
'data' => l($term->name, 'taxonomy/term/' . $term->tid),
'children' => _ctools_content_vocabulary_terms($vid, $max_depth, $depth, $term->tid),
);
}
return $return;
}
function ctools_vocabulary_terms_content_type_admin_title($subtype, $conf, $context) {
return t('"@s" terms', array(
'@s' => $context->identifier,
));
}
function ctools_vocabulary_terms_content_type_edit_form($form, &$form_state) {
$conf = $form_state['conf'];
$form['max_depth'] = array(
'#type' => 'select',
'#title' => t('Maximum depth'),
'#options' => array_merge(array(
t('unlimited'),
), range(1, 9)),
'#default_value' => $conf['max_depth'],
'#description' => t('Define the maximum depth of terms being displayed.'),
);
$form['tree'] = array(
'#type' => 'checkbox',
'#title' => t('Display as tree'),
'#default_value' => $conf['tree'],
'#description' => t('If checked, the terms are displayed in a tree, otherwise in a flat list.'),
);
return $form;
}
function ctools_vocabulary_terms_content_type_edit_form_submit($form, &$form_state) {
// Copy everything from our defaults.
foreach (array_keys($form_state['plugin']['defaults']) as $key) {
$form_state['conf'][$key] = $form_state['values'][$key];
}
}
Functions
Title | Deprecated | Summary |
---|---|---|
ctools_vocabulary_terms_content_type_admin_title | ||
ctools_vocabulary_terms_content_type_edit_form | ||
ctools_vocabulary_terms_content_type_edit_form_submit | ||
ctools_vocabulary_terms_content_type_render | Output function for the 'vocabulary terms' content type. Outputs a list of terms for the input vocabulary. | |
_ctools_content_vocabulary_terms |