Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
626ec7eabc | ||
|
|
691ecd7d61 | ||
|
|
930913e764 |
+193
-312
@@ -1,6 +1,4 @@
|
||||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* developed by www.g-u-i.net
|
||||
* 2011
|
||||
@@ -16,6 +14,7 @@
|
||||
/**
|
||||
* Implementation of hook_menu().
|
||||
*/
|
||||
/*
|
||||
function tode_menu() {
|
||||
$items = array();
|
||||
|
||||
@@ -32,6 +31,7 @@ function tode_menu() {
|
||||
|
||||
return $items;
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implementation of hook_theme().
|
||||
@@ -60,7 +60,7 @@ function tode_field_widget_info() {
|
||||
|
||||
return array(
|
||||
'tode' => array(
|
||||
'label' => t('Create update/change'),
|
||||
'label' => t('Tode (create then update one unique term)'),
|
||||
'field types' => array('taxonomy_term_reference'),
|
||||
'behaviors' => array(
|
||||
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
|
||||
@@ -68,31 +68,14 @@ function tode_field_widget_info() {
|
||||
),
|
||||
'settings' => array(
|
||||
'size' => 60,
|
||||
'show_term_form'=> 0,
|
||||
'show_term_form'=> -1,
|
||||
'choose_term_parent'=> -1,
|
||||
'maxlength'=> 255,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
# from taxonomy
|
||||
// return array(
|
||||
// 'taxonomy_autocomplete' => array(
|
||||
// 'label' => t('Autocomplete term widget (tagging)'),
|
||||
// 'field types' => array('taxonomy_term_reference'),
|
||||
// 'settings' => array(
|
||||
// 'size' => 60,
|
||||
// 'autocomplete_path' => 'taxonomy/autocomplete',
|
||||
// ),
|
||||
// 'behaviors' => array(
|
||||
// 'multiple values' => FIELD_BEHAVIOR_CUSTOM,
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of hook_widget_settings
|
||||
*/
|
||||
@@ -105,16 +88,9 @@ function tode_field_widget_settings_form($field, $instance){
|
||||
$settings = $widget['settings'];
|
||||
|
||||
|
||||
$form['tode'] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('Settings for terms'),
|
||||
'#collapsible' => TRUE,
|
||||
'#weight' => 10,
|
||||
'#description' => t('First time this field will be used, it will create a new term with the value inserted in the textfield, after that, the term (tid) will always be the same, just update term name by updating the value of the field. You can keep synchronized a fixe term with a node, you can set an auto title from this field, The required, number of value at 1 and term_node synch of global field are required'),
|
||||
);
|
||||
|
||||
// '#description' => t('First time this field will be used, it will create a new term with the value inserted in the textfield, after that, the term (tid) will always be the same, just update term name by updating the value of the field. You can keep synchronized a fixe term with a node, you can set an auto title from this field, The required, number of value at 1 and term_node synch of global field are required')
|
||||
|
||||
$form['tode']['maxlength'] = array(
|
||||
$form['maxlength'] = array(
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Maximum length of term'),
|
||||
'#default_value' => $settings['maxlength'],
|
||||
@@ -122,44 +98,32 @@ function tode_field_widget_settings_form($field, $instance){
|
||||
'#required' => TRUE,
|
||||
'#description' => t('Defines how many characters can be typed into the text field. For values higher than 255, remember that one term name can not be longer than 255 (would be cutted).'),
|
||||
);
|
||||
|
||||
$form['tode']['show_term_form'] = array(
|
||||
'#type' => 'checkbox',
|
||||
'#title' => t('Show taxonomy term edit form ?'),
|
||||
'#default_value' => $settings['show_term_form'],
|
||||
);
|
||||
//
|
||||
|
||||
|
||||
/*
|
||||
TODO active_tags : leave this in place because of the multi terms feature in the future
|
||||
TODO complete the all flow of this
|
||||
*/
|
||||
// if (module_exists('active_tags')) {
|
||||
// $form['update']['active_tags'] = array(
|
||||
// '#type' => 'checkbox',
|
||||
// '#title' => t('Use Active Tags style widget'),
|
||||
// '#default_value' => isset($widget['active_tags']) ? $widget['active_tags'] : 0,
|
||||
// '#description' => t('Use the Active Tags module to improve the usability of this autocomplete widget.'),
|
||||
// );
|
||||
// }
|
||||
// $form['show_term_form'] = array(
|
||||
// '#type' => 'checkbox',
|
||||
// '#title' => t('Show taxonomy term edit form ?'),
|
||||
// '#default_value' => $settings['show_term_form'],
|
||||
// );
|
||||
|
||||
$form['choose_term_parent'] = array(
|
||||
'#type' => 'checkbox',
|
||||
'#title' => t('Enable taxonomy term parent selection ?'),
|
||||
'#default_value' => $settings['choose_term_parent'],
|
||||
);
|
||||
|
||||
return $form;
|
||||
|
||||
}
|
||||
|
||||
// function tode_form_content_field_edit_form_alter(&$form, &$form_state){
|
||||
// dsm('tode_form_content_field_edit_form_alter');
|
||||
// /*
|
||||
// TODO add the multi terms feature
|
||||
// */
|
||||
// if($form['type']['#value'] == 'content_taxonomy' && $form['widget_module']['#value'] == 'tode'){
|
||||
// $form['field']['multiple']['#default_value'] = 0; // 0 here is 1 value for the cck field
|
||||
// $form['field']['multiple']['#prefix'] = '<div style="display:none">';
|
||||
// $form['field']['multiple']['#suffix'] = '</div>';
|
||||
// }
|
||||
// }
|
||||
|
||||
function _tode_widget_settings_maxlength_validate($element, &$form_state) {
|
||||
$value = $form_state['values']['maxlength'];
|
||||
// dsm('_tode_widget_settings_maxlength_validate');
|
||||
// dsm($element, '$element');
|
||||
// dsm($form_state, '$form_state');
|
||||
$widget = $form_state['values']['instance']['widget'];
|
||||
$value = $widget['settings']['maxlength'];
|
||||
if (!is_numeric($value) || intval($value) != $value || $value <= 0) {
|
||||
form_error($element, t('"Maximum length" must be a positive integer.'));
|
||||
}
|
||||
@@ -180,7 +144,8 @@ function _tode_widget_settings_maxlength_validate($element, &$form_state) {
|
||||
* http://drupal.org/node/224333#hook_element_info
|
||||
*
|
||||
*/
|
||||
#hook_element_info()
|
||||
#hook_element_info() WHY ??
|
||||
/*
|
||||
function tode_element_info() {
|
||||
return array(
|
||||
'tode' => array(
|
||||
@@ -191,181 +156,123 @@ function tode_element_info() {
|
||||
),
|
||||
);
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implementation of hook_field_widget_form().
|
||||
*/
|
||||
function tode_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
|
||||
dsm('tode_field_widget_form');
|
||||
dsm($items, 'items');
|
||||
dsm($element, '$element');
|
||||
/*
|
||||
$element['#entity_type']
|
||||
$element['#bundle']
|
||||
$element['#field_name']
|
||||
$element['#language']
|
||||
$element['#columns']
|
||||
$element['#title']
|
||||
$element['#description']
|
||||
$element['#required']
|
||||
$element['#delta']
|
||||
$element['#language']
|
||||
*/
|
||||
|
||||
# thats the original D6 $element
|
||||
// $element = array(
|
||||
// '#type' => 'tode',
|
||||
// '#default_value' => isset($items) ? $items : NULL,
|
||||
// '#vid' => $field['vid'],
|
||||
// );
|
||||
|
||||
# example
|
||||
// // use += to avoid overwriting incoming $element
|
||||
// $element['value'] += array(
|
||||
// // Fill in $element.
|
||||
// );
|
||||
|
||||
// $tags = array();
|
||||
// foreach ($items as $item) {
|
||||
// $tags[$item['tid']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['tid']);
|
||||
// }
|
||||
|
||||
$term_name = '';
|
||||
$term_tid = 0;
|
||||
|
||||
if(count($items)){
|
||||
$term = isset($items[0]['taxonomy_term']) ? $items[0]['taxonomy_term'] : taxonomy_term_load($items[0]['tid']);
|
||||
$term_name = $term->term_name;
|
||||
$term_tid = $term->tid;
|
||||
}
|
||||
// dsm('tode_field_widget_form');
|
||||
// dsm($form, '&$form');
|
||||
// dsm($form_state, '&$form_state');
|
||||
// dsm($items, 'items');
|
||||
// dsm($element, '$element');
|
||||
// dsm($field, '$field');
|
||||
// dsm($instance, '$instance');
|
||||
|
||||
$element['tode_tid'] = array('#type' => 'hidden', '#value' => $term_tid,'#delta' => $element['#delta'],);
|
||||
if(isset($items[$delta])){
|
||||
$term = taxonomy_term_load($items[$delta]['tid']);
|
||||
// dsm($term, '$term');
|
||||
$term_parents = taxonomy_get_parents($term->tid);
|
||||
dsm($term_parents, '$term_parents');
|
||||
$term_parent = array_pop($term_parents);
|
||||
}
|
||||
|
||||
$form['tode_tid'] = array('#type' => 'hidden', '#value' => isset($term) ? $term->tid : 0,'#delta' => $element['#delta'],);
|
||||
|
||||
|
||||
// add parent form autocomplete if activated
|
||||
if($instance['widget']['settings']['choose_term_parent']){
|
||||
|
||||
$vocabularies = array();
|
||||
|
||||
foreach ($field['settings']['allowed_values'] as $tree)
|
||||
if ($vocabulary = taxonomy_vocabulary_machine_name_load($tree['vocabulary']))
|
||||
$vocabularies[$vocabulary->vid] = $vocabulary;
|
||||
|
||||
$vocabulary = reset($vocabularies);
|
||||
// dsm($vocabulary, '$vocabulary');
|
||||
|
||||
$form['tode_vid'] = array('#type' => 'hidden', '#value' => $vocabulary->vid,'#delta' => $element['#delta'],);
|
||||
|
||||
$form['tode_parent_term'] = array(
|
||||
'#title' => 'Parent ' . $vocabulary->name . ' (optional)',
|
||||
'#type' => 'textfield',
|
||||
'#default_value' => isset($term_parent) ? $term_parent->name : '',
|
||||
'#autocomplete_path' => 'taxonomy/autocomplete' . '/' . $field['field_name'],
|
||||
'#size' => 60,
|
||||
'#maxlength' => 1024,
|
||||
'#element_validate' => array('tode_autocomplete_validate'),
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// set element form item
|
||||
$element += array(
|
||||
'#type' => 'textfield',
|
||||
'#default_value' => $term_name,
|
||||
'#default_value' => isset($term) ? $term->name : '',
|
||||
'#size' => $instance['widget']['settings']['size'],
|
||||
'#maxlength' => $instance['widget']['settings']['maxlength'],
|
||||
'#element_validate' => array('tode_validate'),
|
||||
);
|
||||
|
||||
|
||||
|
||||
# add the term edit form
|
||||
// if(isset($value))
|
||||
// _tode_add_term_form($element, $term, $widget['show_term_form']);
|
||||
// if($term_tid)
|
||||
// _tode_add_term_form($element, $term, $instance['widget']['settings']['show_term_form']);
|
||||
|
||||
// dsm($element, '$element');
|
||||
return $element;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process an individual element.
|
||||
*
|
||||
* Build the form element. When creating a form using FAPI #process,
|
||||
* note that $element['#value'] is already set.
|
||||
*
|
||||
*/
|
||||
# OLD NOT USED ANY MORE, TRANSPOSE THIS CODE (ALL OR PART) ON hook_field_widget_form();
|
||||
function tode_element_process($element, $edit, $form_state, $form) {
|
||||
// dsm('tode widget process');
|
||||
// dsm($form, 'form');
|
||||
// dsm($element, 'element');
|
||||
|
||||
$field_name = $element['#field_name'];
|
||||
$field = $form['#field_info'][$field_name];
|
||||
$field_key = $element['#columns'][0];
|
||||
// dsm($field);
|
||||
$widget = $field['widget'];
|
||||
|
||||
$value = NULL;
|
||||
if (count($element['#default_value'])) {
|
||||
$term = taxonomy_get_term($element['#default_value'][0][$field_key]);
|
||||
// dsm($term);
|
||||
$value = $term->name;
|
||||
}
|
||||
|
||||
# converting the tid to term name on visible value oh the text field, we re-convert terma name to tid on the validat function
|
||||
$element['#default_value'][0][$field_key] = $value;
|
||||
$element['#value'][$field_key] = $value;
|
||||
|
||||
# memorize the tid for the validate function
|
||||
if($value)
|
||||
$element['tode_tid'] = array('#type' => 'hidden', '#value' => $term->tid,'#delta' => $element['#delta'],);
|
||||
|
||||
$element[$field_key] = array(
|
||||
'#type' => 'textfield',
|
||||
'#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : '',
|
||||
'#title' => $element['#title'],
|
||||
'#required' => $element['#required'],
|
||||
'#description' => $element['#description'],
|
||||
'#field_name' => $element['#field_name'],
|
||||
'#type_name' => $element['#type_name'],
|
||||
'#delta' => $element['#delta'],
|
||||
'#columns' => $element['#columns'],
|
||||
'#maxlength' => !empty($field['widget']['maxlength']) ? $field['widget']['maxlength'] : 255,
|
||||
);
|
||||
|
||||
# add the term edit form
|
||||
if(isset($value))
|
||||
_tode_add_term_form($element, $term, $widget['show_term_form']);
|
||||
|
||||
# add validation for the fieldform to retrive tid instead of term name (content taxonomy module), As i know we can't add a submit callback to the form from the widget
|
||||
if (empty($element[$field_key]['#element_validate']))
|
||||
$element[$field_key]['#element_validate'] = array();
|
||||
//
|
||||
array_unshift($element[$field_key]['#element_validate'], 'tode_validate');
|
||||
# replace validate with submit added on form alter
|
||||
|
||||
// dsm($form_state, 'form_state');
|
||||
// dsm($element, 'element');
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* _tode_add_term_form($term)
|
||||
*
|
||||
* show the complete taxonomy term form if feature is enabled
|
||||
*
|
||||
*/
|
||||
# note available yet with 7.x
|
||||
function _tode_add_term_form(&$element, $term, $show){
|
||||
module_load_include('inc', 'taxonomy', 'taxonomy.admin');
|
||||
|
||||
$term_form = _tode_term_form($term->tid);
|
||||
// dsm($term_form, 'term_form');
|
||||
$term_form = _tode_term_form($term);
|
||||
dsm($term_form, 'term_form');
|
||||
|
||||
if($term_form){
|
||||
|
||||
$term_form['identification']['#prefix'] = '<div style="display:none;">';
|
||||
$term_form['identification']['#suffix'] = '</div>';
|
||||
$term_form['advanced']['synonyms']['#prefix'] = '<div style="display:none;">';
|
||||
$term_form['advanced']['synonyms']['#suffix'] = '</div>';
|
||||
$term_form['advanced']['weight']['#prefix'] = '<div style="display:none;">';
|
||||
$term_form['advanced']['weight']['#suffix'] = '</div>';
|
||||
$term_form['advanced']['parent']['#prefix'] = '<div style="display:none;">';
|
||||
$term_form['advanced']['parent']['#suffix'] = '</div>';
|
||||
$term_form['advanced']['relations']['#prefix'] = '<div style="display:none;">';
|
||||
$term_form['advanced']['relations']['#suffix'] = '</div>';
|
||||
|
||||
# change appearence of adavnced fiedset to show both fiedlset inline
|
||||
$term_form['advanced']['#collapsible'] = FALSE;
|
||||
$term_form['fields']['#collapsible'] = FALSE;
|
||||
|
||||
_tode_trim_options($term_form, 'advanced');
|
||||
$term_form['advanced']['#attributes'] = array('class'=>'tcu-advanced-options');
|
||||
$term_form['fields']['#attributes'] = array('class'=>'tcu-term-fields');
|
||||
|
||||
foreach($term_form['fields'] as $field_name => $field){
|
||||
if($field['#type'] == 'textfield')
|
||||
$field['#size'] = 30;
|
||||
|
||||
$term_form['fields'][$field_name] = $field;
|
||||
}
|
||||
|
||||
unset($term_form['submit']);
|
||||
unset($term_form['delete']);
|
||||
|
||||
#unset vid info 'cause is in conflict with the node's vid field
|
||||
// unset($term_form['vid']);
|
||||
//
|
||||
// $term_form['identification']['#prefix'] = '<div style="display:none;">';
|
||||
// $term_form['identification']['#suffix'] = '</div>';
|
||||
// $term_form['advanced']['synonyms']['#prefix'] = '<div style="display:none;">';
|
||||
// $term_form['advanced']['synonyms']['#suffix'] = '</div>';
|
||||
// $term_form['advanced']['weight']['#prefix'] = '<div style="display:none;">';
|
||||
// $term_form['advanced']['weight']['#suffix'] = '</div>';
|
||||
// $term_form['advanced']['parent']['#prefix'] = '<div style="display:none;">';
|
||||
// $term_form['advanced']['parent']['#suffix'] = '</div>';
|
||||
// $term_form['advanced']['relations']['#prefix'] = '<div style="display:none;">';
|
||||
// $term_form['advanced']['relations']['#suffix'] = '</div>';
|
||||
//
|
||||
// # change appearence of adavnced fiedset to show both fiedlset inline
|
||||
// $term_form['advanced']['#collapsible'] = FALSE;
|
||||
// $term_form['fields']['#collapsible'] = FALSE;
|
||||
//
|
||||
// _tode_trim_options($term_form, 'advanced');
|
||||
// $term_form['advanced']['#attributes'] = array('class'=>'tcu-advanced-options');
|
||||
// $term_form['fields']['#attributes'] = array('class'=>'tcu-term-fields');
|
||||
//
|
||||
// foreach($term_form['fields'] as $field_name => $field){
|
||||
// if($field['#type'] == 'textfield')
|
||||
// $field['#size'] = 30;
|
||||
//
|
||||
// $term_form['fields'][$field_name] = $field;
|
||||
// }
|
||||
//
|
||||
// unset($term_form['submit']);
|
||||
// unset($term_form['delete']);
|
||||
//
|
||||
// #unset vid info 'cause is in conflict with the node's vid field
|
||||
// // unset($term_form['vid']);
|
||||
|
||||
$element['term_form'] = array(
|
||||
'#type' => 'fieldset',
|
||||
@@ -377,10 +284,10 @@ function _tode_add_term_form(&$element, $term, $show){
|
||||
'#group'=>'additional_settings',
|
||||
);
|
||||
|
||||
if(!$show){
|
||||
$element['term_form']['#prefix'] = '<div style="display:none;">';
|
||||
$element['term_form']['#suffix'] = '</div>';
|
||||
}
|
||||
// if(!$show){
|
||||
// $element['term_form']['#prefix'] = '<div style="display:none;">';
|
||||
// $element['term_form']['#suffix'] = '</div>';
|
||||
// }
|
||||
|
||||
$term_form = _tode_prefix_form($term_form, 'tode_termform_'.$element['#field_name'].'_');
|
||||
|
||||
@@ -391,26 +298,55 @@ function _tode_add_term_form(&$element, $term, $show){
|
||||
// $element['#prefix'] = '<div class="tode-term-edit-form-box">';
|
||||
// $element['#suffix'] = '</div>';
|
||||
|
||||
// dsm($element, 'element');
|
||||
dsm($element, 'element');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Form element validate handler for tode parent term autocomplete element.
|
||||
*/
|
||||
function tode_autocomplete_validate($element, &$form_state) {
|
||||
// dsm('tode_autocomplete_validate');
|
||||
// dsm($element, '$element');
|
||||
// dsm($form_state, '$form_state');
|
||||
|
||||
$value = null;
|
||||
if ($typed_term = $element['#value']) {
|
||||
// Translate term names into actual terms.
|
||||
// See if the term exists in the chosen vocabulary and return the tid;
|
||||
// otherwise, set error.
|
||||
if ($possibilities = taxonomy_term_load_multiple(array(), array('name' => trim($typed_term), 'vid' => $form_state['values']['tode_vid']))) {
|
||||
$term = array_pop($possibilities);
|
||||
$value = (array)$term;
|
||||
}
|
||||
else {
|
||||
form_error($element, t('Parent term can only be an existing term.'));
|
||||
}
|
||||
}
|
||||
//
|
||||
form_set_value($element, $value, $form_state);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validation function for the tode element
|
||||
*
|
||||
* parses input and sets the values as needed (tid) for storing the data
|
||||
*/
|
||||
function tode_validate($element, &$form_state){
|
||||
dsm('tode_validate');
|
||||
dsm($form_state, 'form_state');
|
||||
dsm($element, 'element');
|
||||
// dsm('tode_validate');
|
||||
// dsm($form_state, 'form_state');
|
||||
// dsm($element, 'element');
|
||||
|
||||
/*
|
||||
TODO term translation (entity translate + node title question)
|
||||
*/
|
||||
|
||||
$value = array();
|
||||
if ($typed_term = $element['#value']) {
|
||||
$field = field_widget_field($element, $form_state);
|
||||
dsm($field, 'field');
|
||||
// dsm($field, 'field');
|
||||
|
||||
$vocabularies = array();
|
||||
foreach ($field['settings']['allowed_values'] as $tree) {
|
||||
@@ -419,12 +355,9 @@ function tode_validate($element, &$form_state){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// See if the term exists in the chosen vocabulary and return the tid;
|
||||
// otherwise, create a new 'autocreate' term for insert/update.
|
||||
if($tid = $element['tode_tid']['#value']){
|
||||
// See if the term already exists and load the term
|
||||
// otherwise, create a new 'autocreate' term for insert.
|
||||
if($tid = $form_state['values']['tode_tid']){
|
||||
$term = taxonomy_term_load($tid);
|
||||
}else{
|
||||
$vocabulary = reset($vocabularies);
|
||||
@@ -436,54 +369,20 @@ function tode_validate($element, &$form_state){
|
||||
);
|
||||
}
|
||||
|
||||
dsm($term, '$term');
|
||||
// save the parent term if provided
|
||||
if($parent_term = $form_state['values']['tode_parent_term']){
|
||||
dsm($parent_term, 'tode_parent_term');
|
||||
$term->parent = $parent_term['tid'];
|
||||
taxonomy_term_save($term);
|
||||
}
|
||||
|
||||
$value[] = (array)$term;
|
||||
// dsm($term, '$term');
|
||||
|
||||
$value = (array)$term;
|
||||
|
||||
}
|
||||
dsm($value, '$value');
|
||||
// dsm($value, '$value');
|
||||
form_set_value($element, $value, $form_state);
|
||||
|
||||
|
||||
// $field_name = $element['#field_name'];
|
||||
// $field = content_fields($field_name, $element['#type_name']);
|
||||
// $field_key = $element['#columns'][0];
|
||||
//
|
||||
// #if the element parents array contains the field key, we have to remove it
|
||||
// #because otherwise form_set_value won't work. (still the question why is it in)
|
||||
// if ($element['#parents'][count($element['#parents'])-1] == $field_key) {
|
||||
// array_pop($element['#parents']);
|
||||
// array_pop($element['#array_parents']);
|
||||
// }
|
||||
//
|
||||
// $term_name = $element['#value'] != '' ? $element['#value'] : ($element['#default_value'] != '' ? $element['#default_value'] : NULL);
|
||||
// // dsm($term_name, 'term_name');
|
||||
// $form_state['values']['tode_termform_'.$field_name.'_name'] = $term_name;
|
||||
//
|
||||
// $tid = isset($form_state['values'][$field_name]['tode_tid']) ? $form_state['values'][$field_name]['tode_tid'] : NULL;
|
||||
// // dsm($tid, 'tid');
|
||||
// $value = array();
|
||||
// if($tid){
|
||||
// $value[$tid] = $tid;
|
||||
// }else{
|
||||
// # if no tid it says that we create a node so a term
|
||||
// $term = array(
|
||||
// "vid" => $field['vid'],
|
||||
// "name" => $term_name,
|
||||
// "parent" => $field['widget']['extra_parent'] ? $field['widget']['extra_parent'] : content_taxonomy_field_get_parent($field),
|
||||
// );
|
||||
// $status = taxonomy_save_term($term);
|
||||
// $value[$term['tid']] = $term['tid'];
|
||||
// }
|
||||
//
|
||||
// $values = content_transpose_array_rows_cols(array($element['#columns'][0] => $value));
|
||||
// // dsm($values, 'values');
|
||||
// form_set_value($element, $values, $form_state);
|
||||
//
|
||||
// // dsm($element, 'element');
|
||||
// // dsm($form_state, 'form_state');
|
||||
|
||||
// form_set_value($element, $value, $form_state);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -495,38 +394,25 @@ function tode_field_widget_error($element, $error, $form, &$form_state) {
|
||||
}
|
||||
|
||||
/**
|
||||
* implementation of hook_nodeapi()
|
||||
*
|
||||
* process the tode term on node create or update
|
||||
* we make this on nodeapi cause we can't cache field save from a widget … mayde in D7
|
||||
*
|
||||
* Implements hook_node_validate().
|
||||
*
|
||||
* use to save the all term form (steel have to be debuged)
|
||||
*
|
||||
*/
|
||||
/*
|
||||
TODO add term translation feature
|
||||
*/
|
||||
|
||||
function tode_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
|
||||
// dsm($op, 'tode nodeapi : op');
|
||||
switch($op){
|
||||
// case 'presave':
|
||||
case 'update':
|
||||
// tode_save($node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* submit values
|
||||
*/
|
||||
function tode_save($node) {
|
||||
function __tode_node_validate($node, $form){
|
||||
|
||||
module_load_include('inc', 'taxonomy', 'taxonomy.admin');
|
||||
|
||||
// dsm('tode save');
|
||||
// dsm($node, 'tode submit : node');
|
||||
dsm('tode_node_validate');
|
||||
dsm($node, '&node');
|
||||
dsm($form, '&form');
|
||||
|
||||
$tode_fields = _tode_get_tode_fields_def($node->type);
|
||||
$tode_fields = _tode_get_tode_fields_def($node);
|
||||
dsm($tode_fields, '$tode_fields');
|
||||
|
||||
# OK
|
||||
|
||||
/*
|
||||
if(!count($tode_fields))
|
||||
return;
|
||||
|
||||
@@ -561,18 +447,18 @@ function tode_save($node) {
|
||||
drupal_execute('taxonomy_form_term', $form_state, taxonomy_vocabulary_load($array_term['vid']), $array_term);
|
||||
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* theme_tode
|
||||
*
|
||||
*/
|
||||
function theme_tode($element) {
|
||||
return $element['#children'];
|
||||
}
|
||||
|
||||
|
||||
// function theme_tode($element) {
|
||||
// dsm('theme_tode');
|
||||
// dsm($element, '$element');
|
||||
// return $element['#children'];
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
@@ -594,7 +480,6 @@ function tode_form_alter(&$form, $form_state, $form_id){
|
||||
|
||||
}
|
||||
|
||||
|
||||
function _tode_node_delete_form_alter(&$form){
|
||||
// dsm($form, '_tode_node_delete_form_alter : form');
|
||||
#get the node
|
||||
@@ -641,7 +526,6 @@ function _tode_node_delete_form_alter(&$form){
|
||||
|
||||
}
|
||||
|
||||
|
||||
function tode_delete_submit($form, &$form_state){
|
||||
$tids = unserialize($form['tode_delete']['#value']);
|
||||
foreach ($tids as $tid)
|
||||
@@ -651,8 +535,6 @@ function tode_delete_submit($form, &$form_state){
|
||||
drupal_set_message(t('Following Taxonomy terms have been deleted : %terms', array('%terms' => implode(', ', $terms) )), 'status');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* HELPERS
|
||||
*/
|
||||
@@ -662,7 +544,6 @@ function tode_delete_submit($form, &$form_state){
|
||||
// return $prefix.$k;
|
||||
// }
|
||||
|
||||
|
||||
function _tode_clean_form($form){
|
||||
foreach ($form as $key => $value) {
|
||||
if(strpos($key,'#') !== false){
|
||||
@@ -700,9 +581,9 @@ function _tode_prefix_form($form, $prefix = '', $add = TRUE){
|
||||
* _tode_term_form($tid)
|
||||
*
|
||||
*/
|
||||
function _tode_term_form($tid){
|
||||
function _tode_term_form($term){
|
||||
|
||||
if ($array_term = (array)taxonomy_get_term($tid)) {
|
||||
if ($array_term = (array)$term) {
|
||||
|
||||
$form_state = array();
|
||||
$term_form = drupal_retrieve_form('taxonomy_form_term', $form_state, taxonomy_vocabulary_load($array_term['vid']), $array_term);
|
||||
@@ -740,18 +621,18 @@ function _tode_trim_options(&$form, $item){
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* OK OK OK
|
||||
*/
|
||||
function _tode_get_tode_fields_def($type){
|
||||
// dsm($type, '_tode_get_fields_def');
|
||||
function _tode_get_tode_fields_def($node){
|
||||
dsm($node, '_tode_get_fields_def');
|
||||
|
||||
#get the fields defenition of node type
|
||||
$type_fields = content_types($type);
|
||||
// dsm($type_fields, 'type_fields definition');
|
||||
$type_fields = field_info_instances('node');
|
||||
dsm($type_fields, 'type_fields definition');
|
||||
|
||||
#get the tode node fields
|
||||
$tode_fields = array();
|
||||
foreach ($type_fields['fields'] as $field_name => $field) {
|
||||
foreach ($type_fields[$node->type] as $field_name => $field) {
|
||||
if($field['widget']['type'] == 'tode')
|
||||
$tode_fields[$field_name] = $field;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user