Mercurial > hg > rr-repo
annotate sites/all/modules/ctools/plugins/relationships/term_from_node.inc @ 0:ff03f76ab3fe
initial version
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Wed, 21 Aug 2013 18:51:11 +0100 |
parents | |
children |
rev | line source |
---|---|
danielebarchiesi@0 | 1 <?php |
danielebarchiesi@0 | 2 |
danielebarchiesi@0 | 3 /** |
danielebarchiesi@0 | 4 * @file |
danielebarchiesi@0 | 5 * Plugin to provide an relationship handler for term from node. |
danielebarchiesi@0 | 6 */ |
danielebarchiesi@0 | 7 |
danielebarchiesi@0 | 8 /** |
danielebarchiesi@0 | 9 * Plugins are described by creating a $plugin array which will be used |
danielebarchiesi@0 | 10 * by the system that includes this file. |
danielebarchiesi@0 | 11 */ |
danielebarchiesi@0 | 12 $plugin = array( |
danielebarchiesi@0 | 13 'title' => t('Term from node'), |
danielebarchiesi@0 | 14 'keyword' => 'term', |
danielebarchiesi@0 | 15 'description' => t('Adds a taxonomy term from a node context; if multiple terms are selected, this will get the "first" term only.'), |
danielebarchiesi@0 | 16 'required context' => new ctools_context_required(t('Node'), 'node'), |
danielebarchiesi@0 | 17 'context' => 'ctools_term_from_node_context', |
danielebarchiesi@0 | 18 'edit form' => 'ctools_term_from_node_settings_form', |
danielebarchiesi@0 | 19 'defaults' => array('vid' => ''), |
danielebarchiesi@0 | 20 ); |
danielebarchiesi@0 | 21 |
danielebarchiesi@0 | 22 /** |
danielebarchiesi@0 | 23 * Return a new context based on an existing context. |
danielebarchiesi@0 | 24 */ |
danielebarchiesi@0 | 25 function ctools_term_from_node_context($context, $conf) { |
danielebarchiesi@0 | 26 // If unset it wants a generic, unfilled context, which is just NULL. |
danielebarchiesi@0 | 27 if (empty($context->data)) { |
danielebarchiesi@0 | 28 return ctools_context_create_empty('entity:taxonomy_term', NULL); |
danielebarchiesi@0 | 29 } |
danielebarchiesi@0 | 30 |
danielebarchiesi@0 | 31 if (isset($context->data->taxonomy)) { |
danielebarchiesi@0 | 32 foreach ($context->data->taxonomy as $term) { |
danielebarchiesi@0 | 33 if ($term->vid == $conf['vid']) { |
danielebarchiesi@0 | 34 return ctools_context_create('entity:taxonomy_term', $term); |
danielebarchiesi@0 | 35 } |
danielebarchiesi@0 | 36 } |
danielebarchiesi@0 | 37 } |
danielebarchiesi@0 | 38 } |
danielebarchiesi@0 | 39 |
danielebarchiesi@0 | 40 /** |
danielebarchiesi@0 | 41 * Settings form for the relationship. |
danielebarchiesi@0 | 42 */ |
danielebarchiesi@0 | 43 function ctools_term_from_node_settings_form($form, &$form_state) { |
danielebarchiesi@0 | 44 $conf = $form_state['conf']; |
danielebarchiesi@0 | 45 |
danielebarchiesi@0 | 46 $options = array(); |
danielebarchiesi@0 | 47 foreach (taxonomy_get_vocabularies() as $vid => $vocabulary) { |
danielebarchiesi@0 | 48 $options[$vid] = $vocabulary->name; |
danielebarchiesi@0 | 49 } |
danielebarchiesi@0 | 50 $form['vid'] = array( |
danielebarchiesi@0 | 51 '#title' => t('Vocabulary'), |
danielebarchiesi@0 | 52 '#type' => 'select', |
danielebarchiesi@0 | 53 '#options' => $options, |
danielebarchiesi@0 | 54 '#default_value' => $conf['vid'], |
danielebarchiesi@0 | 55 '#prefix' => '<div class="clearfix">', |
danielebarchiesi@0 | 56 '#suffix' => '</div>', |
danielebarchiesi@0 | 57 ); |
danielebarchiesi@0 | 58 |
danielebarchiesi@0 | 59 return $form; |
danielebarchiesi@0 | 60 } |