array( 'label' => t('Combine term and num line field'), 'description' => t('Store items operative combine term data in the database.'), ), ); } /** * Implementation of hook_field_settings(). */ function cck_plan_fields_combine_term_field_settings($op, $field) { switch ($op) { case 'form': $form = array(); $vocabularies = taxonomy_get_vocabularies(); $vocabulary_options = array(); foreach($vocabularies as $vocabulary) { $vocabulary_options[$vocabulary->vid] = $vocabulary->name; } $form['vid'] = array( '#type' => 'select', '#title' => t('Taxonomy'), '#default_value' => !empty($field['vid']) ? $field['vid'] : '', '#options' => $vocabulary_options, ); if (!empty($field['vid'])) { $vid = $field['vid']; //$terms = taxonomy_get_tree($vid); $tree = taxonomy_get_tree($vid); $options = array(); if ($tree) { foreach ($tree as $term) { $choice = new stdClass(); $choice->option = array($term->tid => str_repeat('-', $term->depth) . $term->name); $options[] = $choice; } } $form['vtid'] = array( '#type' => 'select', '#default_value' => isset($field['vtid']) ? $field['vtid'] : array(), '#options' => $options, '#multiple' => TRUE, ); } $types = array( 'int' => t('Integer'), 'float' => t('Float'), ); $form['cck_plan_fields_simple_type'] = array( '#type' => 'select', '#title' => t('Type'), '#default_value' => !empty($field['cck_plan_fields_simple_type']) ? $field['cck_plan_fields_simple_type'] : 'int', '#options' => $types, ); $form['cck_plan_fields_simple_titulo_term'] = array( '#type' => 'textfield', '#title' => t('Titulo del Termino de la taxonomia'), //'#required' => TRUE, '#weight' => -9, '#default_value' => !empty($field['cck_plan_fields_simple_titulo_term']) ? $field['cck_plan_fields_simple_titulo_term'] : t('Term'), ); $form['cck_plan_fields_simple_titulo'] = array( '#type' => 'textfield', '#title' => t('Titulo del monto'), //'#required' => TRUE, '#weight' => -9, '#default_value' => !empty($field['cck_plan_fields_simple_titulo']) ? $field['cck_plan_fields_simple_titulo'] : t('Monto'), ); return $form; case 'save': $save_settings = array( 'vid', 'vtid', 'cck_plan_fields_simple_type', 'cck_plan_fields_simple_titulo_term', 'cck_plan_fields_simple_titulo', ); return $save_settings; case 'database columns': $columns['tid'] = array( 'type' => 'int', 'not null' => FALSE, 'sortable' => TRUE, 'views' => TRUE, ); $columns['value'] = array( 'type' => 'numeric', 'size' => 'normal', 'not null' => TRUE, 'default' => 0, 'precision' => 32, 'scale' => 0, ); return $columns; case 'views data': $data = content_views_field_views_data($field); $db_info = content_database_info($field); $table_alias = content_views_tablename($field); $titulo_term = !empty($field['cck_plan_fields_simple_titulo_term']) ? $field['cck_plan_fields_simple_titulo_term'] : t('Term'); $titulo_monto = !empty($field['cck_plan_fields_simple_titulo']) ? $field['cck_plan_fields_simple_titulo'] : t('Monto'); $ftypes = array( 'tid' => $titulo_term, 'value' => $titulo_monto, ); foreach ($ftypes as $ftype => $label) { $copy = $data[$table_alias][$field['field_name'] . $ftype]; $copy['title'] = t($label); $copy['filter']['handler'] = 'content_handler_filter_many_to_one'; $copy['filter']['numeric'] = TRUE; unset($copy['field'], $copy['argument'], $copy['sort']); $data[$table_alias][$field['field_name'] . $ftype . '_many_to_one'] = $copy; $data[$table_alias][$field['field_name'] . $ftype]['argument']['handler'] = 'content_handler_argument_many_to_one'; if ($ftype != 'description') { $data[$table_alias][$field['field_name'] . $ftype]['argument']['numeric'] = TRUE; } } return $data; } } /** * Implementation of hook_content_is_empty(). */ function cck_plan_fields_combine_term_content_is_empty($item, $field) { $flat = TRUE; foreach (array_keys($field['columns']) as $ftype) { if ($ftype != 'tid' && !empty($item[$ftype])) { $flat = FALSE; } } return $flat; } /** * Implementation of hook_field_formatter_info(). */ function cck_plan_fields_combine_term_field_formatter_info() { $formatters = array( 'default' => array( 'label' => t('Default'), 'multiple values' => CONTENT_HANDLE_CORE, 'field types' => array('cck_plan_fields_combine_term'), ), ); return $formatters; } /** * Implementation of hook_theme(). */ function cck_plan_fields_combine_term_theme() { return array( // Shows address in the default view: Multilines 'cck_plan_fields_combine_term_formatter_default' => array( 'arguments' => array('element'), ), 'cck_plan_fields_combine_term_table' => array( 'arguments' => array('form' => NULL), ), ); } /** * Proxy theme function for cck_plan_fields formatters. */ function theme_cck_plan_fields_combine_term_formatter_generic($element) { $output = ''; $flag = explode('single_line_', $element['#formatter']); $field_name = $element['#field_name']; $type_name = $element['#type_name']; $field = content_fields($field_name, $type_name); $ftypes = array( 'tid' => $field['cck_plan_fields_simple_titulo_term'], 'value' => $field['cck_plan_fields_simple_titulo'], ); if ($flag[1] == 'tid') { $term = taxonomy_get_term($element['#item'][$flag[1]]); // If this term's vocabulary supports localization. if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) { $term->name = tt("taxonomy:term:$term->tid:name", $term->name); } $output = ''. $ftypes[$flag[1]] .': '. check_plain($term->name); } else { $output = ''. $ftypes[$flag[1]] .': '. number_format($element['#item'][$flag[1]], 2, '.', ','); } return $output; } /** * theme_cck_plan_fields_formatter_default(). * default formatter theme */ function theme_cck_plan_fields_combine_term_formatter_default($element) { $field_name = $element['#field_name']; $type_name = $element['#type_name']; $field = content_fields($field_name, $type_name); $output = ''; // If all fields are hidden, return '' if (empty($element['#item']['tid'])) { return $output; } $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $headers = array(); $rows = array(); $row = array(); $total = 0; // If this term's vocabulary supports localization. $term = taxonomy_get_term($element['#item']['tid']); if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) { $term->name = tt("taxonomy:term:$term->tid:name", $term->name); } $numero = number_format($element['#item']['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']); return $numero . ' ' . $term->name; } /** * Implementation of hook_widget_info(). */ function cck_plan_fields_combine_term_widget_info() { return array( 'cck_plan_fields_combine_term' => array( 'label' => t('Items combine term Field'), 'field types' => array('cck_plan_fields_combine_term'), 'multiple values' => CONTENT_HANDLE_CORE, 'callbacks' => array('default value' => CONTENT_CALLBACK_DEFAULT), ), ); } /** * Implementation of hook_widget_settings(). */ function cck_plan_fields_combine_term_widget_settings($op, $widget) { switch ($op) { case 'form': $form = array(); $form['min'] = array( '#type' => 'textfield', '#title' => t('Minimum'), '#element_validate' => array('_element_validate_number'), '#default_value' => is_numeric($widget['min']) ? $widget['min'] : '', ); $form['max'] = array( '#type' => 'textfield', '#title' => t('Maximum'), '#element_validate' => array('_element_validate_number'), '#default_value' => is_numeric($widget['max']) ? $widget['max'] : '', ); return $form; break; case 'save': return array( 'min', 'max', ); break; } } /** * Implementation of theme_cck_plan_fields_combine_term_table(). */ function theme_cck_plan_fields_combine_term_table($form = array()) { $headers = array(); $rows = array(); $row = array(); $ftypes = array( 'value' => t('Cantidad'), 'tid' => t('Term'), ); $backgrounds = array( 'tid' => 'blue', 'value' => 'black', ); if (isset($form['#title']) && $form['#title']) { $field = str_replace('_', '-', $form['#field_name']); $output .= '