danielebarchiesi@0: t("Taxonomy term (multiple): ID"), danielebarchiesi@0: // keyword to use for %substitution danielebarchiesi@0: 'keyword' => 'term', danielebarchiesi@0: 'description' => t('Creates a group of taxonomy terms from a list of tids separated by a comma or a plus sign. In general the first term of the list will be used for panes.'), danielebarchiesi@0: 'context' => 'ctools_terms_context', danielebarchiesi@0: 'default' => array('breadcrumb' => TRUE), danielebarchiesi@0: 'settings form' => 'ctools_terms_settings_form', danielebarchiesi@0: 'placeholder form' => array( danielebarchiesi@0: '#type' => 'textfield', danielebarchiesi@0: '#description' => t('Enter a term ID or a list of term IDs separated by a + or a ,'), danielebarchiesi@0: ), danielebarchiesi@0: 'breadcrumb' => 'ctools_terms_breadcrumb', danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Discover if this argument gives us the term we crave. danielebarchiesi@0: */ danielebarchiesi@0: function ctools_terms_context($arg = NULL, $conf = NULL, $empty = FALSE) { danielebarchiesi@0: // If unset it wants a generic, unfilled context. danielebarchiesi@0: if ($empty) { danielebarchiesi@0: return ctools_context_create_empty('terms'); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $terms = ctools_break_phrase($arg); danielebarchiesi@0: if (empty($terms->value) || !empty($terms->invalid_input)) { danielebarchiesi@0: return FALSE; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $context = ctools_context_create('terms', $terms); danielebarchiesi@0: $context->original_argument = $arg; danielebarchiesi@0: return $context; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Settings form for the argument danielebarchiesi@0: */ danielebarchiesi@0: function ctools_terms_settings_form(&$form, &$form_state, $conf) { danielebarchiesi@0: $form['settings']['breadcrumb'] = array( danielebarchiesi@0: '#title' => t('Inject hierarchy of first term into breadcrumb trail'), danielebarchiesi@0: '#type' => 'checkbox', danielebarchiesi@0: '#default_value' => !empty($conf['breadcrumb']), danielebarchiesi@0: '#description' => t('If checked, taxonomy term parents will appear in the breadcrumb trail.'), danielebarchiesi@0: ); danielebarchiesi@0: // return $form; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Inject the breadcrumb trail if necessary. danielebarchiesi@0: */ danielebarchiesi@0: function ctools_terms_breadcrumb($conf, $context) { danielebarchiesi@0: if (empty($conf['breadcrumb'])) { danielebarchiesi@0: return; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $current->tid = $context->tids[0]; danielebarchiesi@0: $breadcrumb = array(); danielebarchiesi@0: while ($parents = taxonomy_get_parents($current->tid)) { danielebarchiesi@0: $current = array_shift($parents); danielebarchiesi@0: $breadcrumb[] = l($current->name, 'taxonomy/term/' . $current->tid); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $breadcrumb = array_merge(drupal_get_breadcrumb(), array_reverse($breadcrumb)); danielebarchiesi@0: drupal_set_breadcrumb($breadcrumb); danielebarchiesi@0: }