RC
Signed-off-by: bachy <git@g-u-i.net>
This commit is contained in:
parent
626ec7eabc
commit
66ff837039
382
tode.module
382
tode.module
@ -55,7 +55,6 @@ function tode_init() {
|
|||||||
/**
|
/**
|
||||||
* Implementation of hook_field_widget_info().
|
* Implementation of hook_field_widget_info().
|
||||||
*/
|
*/
|
||||||
# BUG PLUS
|
|
||||||
function tode_field_widget_info() {
|
function tode_field_widget_info() {
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
@ -79,10 +78,9 @@ function tode_field_widget_info() {
|
|||||||
/**
|
/**
|
||||||
* Implementation of hook_widget_settings
|
* Implementation of hook_widget_settings
|
||||||
*/
|
*/
|
||||||
#hook_field_widget_settings_form($field, $instance)
|
|
||||||
function tode_field_widget_settings_form($field, $instance){
|
function tode_field_widget_settings_form($field, $instance){
|
||||||
dsm($instance, 'tode_field_widget_settings_form : $instance');
|
// dsm($instance, 'tode_field_widget_settings_form : $instance');
|
||||||
dsm($field, 'field');
|
// dsm($field, 'field');
|
||||||
|
|
||||||
$widget = $instance['widget'];
|
$widget = $instance['widget'];
|
||||||
$settings = $widget['settings'];
|
$settings = $widget['settings'];
|
||||||
@ -102,11 +100,11 @@ function tode_field_widget_settings_form($field, $instance){
|
|||||||
/*
|
/*
|
||||||
TODO complete the all flow of this
|
TODO complete the all flow of this
|
||||||
*/
|
*/
|
||||||
// $form['show_term_form'] = array(
|
$form['show_term_form'] = array(
|
||||||
// '#type' => 'checkbox',
|
'#type' => 'checkbox',
|
||||||
// '#title' => t('Show taxonomy term edit form ?'),
|
'#title' => t('Show taxonomy term edit form ?'),
|
||||||
// '#default_value' => $settings['show_term_form'],
|
'#default_value' => $settings['show_term_form'],
|
||||||
// );
|
);
|
||||||
|
|
||||||
$form['choose_term_parent'] = array(
|
$form['choose_term_parent'] = array(
|
||||||
'#type' => 'checkbox',
|
'#type' => 'checkbox',
|
||||||
@ -146,7 +144,7 @@ function _tode_widget_settings_maxlength_validate($element, &$form_state) {
|
|||||||
*/
|
*/
|
||||||
#hook_element_info() WHY ??
|
#hook_element_info() WHY ??
|
||||||
/*
|
/*
|
||||||
function tode_element_info() {
|
function tode_element_info(){
|
||||||
return array(
|
return array(
|
||||||
'tode' => array(
|
'tode' => array(
|
||||||
'#input' => TRUE,
|
'#input' => TRUE,
|
||||||
@ -162,7 +160,7 @@ function tode_element_info() {
|
|||||||
* Implementation of hook_field_widget_form().
|
* Implementation of hook_field_widget_form().
|
||||||
*/
|
*/
|
||||||
function tode_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
|
function tode_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
|
||||||
// dsm('tode_field_widget_form');
|
// dsm('- - - - tode_field_widget_form');
|
||||||
// dsm($form, '&$form');
|
// dsm($form, '&$form');
|
||||||
// dsm($form_state, '&$form_state');
|
// dsm($form_state, '&$form_state');
|
||||||
// dsm($items, 'items');
|
// dsm($items, 'items');
|
||||||
@ -170,22 +168,30 @@ function tode_field_widget_form(&$form, &$form_state, $field, $instance, $langco
|
|||||||
// dsm($field, '$field');
|
// dsm($field, '$field');
|
||||||
// dsm($instance, '$instance');
|
// dsm($instance, '$instance');
|
||||||
|
|
||||||
|
|
||||||
|
$node = $form_state['node'];
|
||||||
|
// dsm($node, '$node');
|
||||||
|
|
||||||
if(isset($items[$delta])){
|
if(isset($items[$delta])){
|
||||||
$term = taxonomy_term_load($items[$delta]['tid']);
|
$term = taxonomy_term_load($items[$delta]['tid']);
|
||||||
|
// $term = i18n_taxonomy_term_get_translation($term, $node->language); // marche pas avec localized term
|
||||||
// dsm($term, '$term');
|
// dsm($term, '$term');
|
||||||
$term_parents = taxonomy_get_parents($term->tid);
|
$term_parents = taxonomy_get_parents($term->tid);
|
||||||
dsm($term_parents, '$term_parents');
|
// dsm($term_parents, '$term_parents');
|
||||||
$term_parent = array_pop($term_parents);
|
$term_parent = array_pop($term_parents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# no need of $node->translation_source because with node translation (not entity fields translation) tid remains
|
||||||
|
# just have to translate term name on submit
|
||||||
|
// if( !isset($node->id) && isset($node->translation_source) ){
|
||||||
|
// }
|
||||||
|
|
||||||
$form['tode_tid'] = array('#type' => 'hidden', '#value' => isset($term) ? $term->tid : 0,'#delta' => $element['#delta'],);
|
$form['tode_tid'] = array('#type' => 'hidden', '#value' => isset($term) ? $term->tid : 0,'#delta' => $element['#delta'],);
|
||||||
|
|
||||||
|
# parent
|
||||||
// add parent form autocomplete if activated
|
if( $instance['widget']['settings']['choose_term_parent'] ){
|
||||||
if($instance['widget']['settings']['choose_term_parent']){
|
// add parent form autocomplete if activated
|
||||||
|
|
||||||
$vocabularies = array();
|
$vocabularies = array();
|
||||||
|
|
||||||
foreach ($field['settings']['allowed_values'] as $tree)
|
foreach ($field['settings']['allowed_values'] as $tree)
|
||||||
if ($vocabulary = taxonomy_vocabulary_machine_name_load($tree['vocabulary']))
|
if ($vocabulary = taxonomy_vocabulary_machine_name_load($tree['vocabulary']))
|
||||||
$vocabularies[$vocabulary->vid] = $vocabulary;
|
$vocabularies[$vocabulary->vid] = $vocabulary;
|
||||||
@ -202,27 +208,33 @@ function tode_field_widget_form(&$form, &$form_state, $field, $instance, $langco
|
|||||||
'#autocomplete_path' => 'taxonomy/autocomplete' . '/' . $field['field_name'],
|
'#autocomplete_path' => 'taxonomy/autocomplete' . '/' . $field['field_name'],
|
||||||
'#size' => 60,
|
'#size' => 60,
|
||||||
'#maxlength' => 1024,
|
'#maxlength' => 1024,
|
||||||
'#element_validate' => array('tode_autocomplete_validate'),
|
'#element_validate' => array('tode_parent_autocomplete_validate'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
// if parent selection not enabled set the current parent as hidden input
|
||||||
|
$form['tode_parent_term'] = array(
|
||||||
|
'#type' => 'hidden',
|
||||||
|
'#value' => isset($term_parent) ? $term_parent->name : '',
|
||||||
|
'#delta' => $element['#delta'],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// set element form item
|
// set element form item
|
||||||
$element += array(
|
$element += array(
|
||||||
'#type' => 'textfield',
|
'#type' => 'textfield',
|
||||||
'#default_value' => isset($term) ? $term->name : '',
|
'#default_value' => isset($term) ? i18n_taxonomy_term_name($term, $node->language) : '',
|
||||||
'#size' => $instance['widget']['settings']['size'],
|
'#size' => $instance['widget']['settings']['size'],
|
||||||
'#maxlength' => $instance['widget']['settings']['maxlength'],
|
'#maxlength' => $instance['widget']['settings']['maxlength'],
|
||||||
'#element_validate' => array('tode_validate'),
|
'#element_validate' => array('tode_validate'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# add the term edit form
|
# add the term edit form
|
||||||
// if($term_tid)
|
if(isset($term))
|
||||||
// _tode_add_term_form($element, $term, $instance['widget']['settings']['show_term_form']);
|
_tode_add_term_form($form, $term, $instance, $element['#delta']);
|
||||||
|
|
||||||
// dsm($element, '$element');
|
// dsm($form, 'end tode_field_widget_form :: $form');
|
||||||
return $element;
|
return $element;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,72 +245,47 @@ function tode_field_widget_form(&$form, &$form_state, $field, $instance, $langco
|
|||||||
* show the complete taxonomy term form if feature is enabled
|
* show the complete taxonomy term form if feature is enabled
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
# note available yet with 7.x
|
function _tode_add_term_form(&$form, $term, $instance, $delta){
|
||||||
function _tode_add_term_form(&$element, $term, $show){
|
// dsm('- - - - _tode_add_term_form');
|
||||||
module_load_include('inc', 'taxonomy', 'taxonomy.admin');
|
module_load_include('inc', 'taxonomy', 'taxonomy.admin');
|
||||||
|
|
||||||
$term_form = _tode_term_form($term);
|
$term_form = _tode_term_form($term);
|
||||||
dsm($term_form, 'term_form');
|
// dsm($term_form, 'term_form');
|
||||||
|
|
||||||
if($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']);
|
|
||||||
|
|
||||||
$element['term_form'] = array(
|
unset($term_form['actions']);
|
||||||
|
unset($term_form['#action']);
|
||||||
|
unset($term_form['#method']);
|
||||||
|
|
||||||
|
#unset vid info 'cause is in conflict with the node's vid field
|
||||||
|
unset($term_form['vid']);
|
||||||
|
|
||||||
|
$term_form = _tode_clean_form($term_form);
|
||||||
|
|
||||||
|
$prefix = 'tode_termform_'.$instance['field_name'];
|
||||||
|
$term_form = _tode_prefix_form($term_form, $prefix.'_');
|
||||||
|
|
||||||
|
$visible = $instance['widget']['settings']['show_term_form'];
|
||||||
|
|
||||||
|
$form[$prefix] = array(
|
||||||
'#type' => 'fieldset',
|
'#type' => 'fieldset',
|
||||||
'#title' => t('Term edit'),
|
'#title' => t('Term edit'),
|
||||||
'#tree' => TRUE,
|
'#tree' => TRUE,
|
||||||
'#collapsible' => TRUE,
|
'#collapsible' => TRUE,
|
||||||
'#collapsed' => FALSE,
|
'#collapsed' => FALSE,
|
||||||
'#weight'=>1,
|
'#weight'=>1,
|
||||||
'#group'=>'additional_settings',
|
// '#group'=>'additional_settings',
|
||||||
|
'#prefix' => $visible ? null : '<div style="display:none;">',
|
||||||
|
'#suffix' => $visible ? null : '</div>',
|
||||||
);
|
);
|
||||||
|
|
||||||
// if(!$show){
|
$form[$prefix] += $term_form;
|
||||||
// $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'].'_');
|
|
||||||
|
|
||||||
$element['term_form'] += $term_form;
|
|
||||||
|
|
||||||
$element['tode_termform'] = array('#type' => 'hidden', '#value' => 'true','#delta' => $element['#delta'],);
|
// $form['tode_termform'] = array('#type' => 'hidden', '#value' => 'true','#delta' => $delta,);
|
||||||
|
|
||||||
// $element['#prefix'] = '<div class="tode-term-edit-form-box">';
|
|
||||||
// $element['#suffix'] = '</div>';
|
|
||||||
|
|
||||||
dsm($element, 'element');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -307,12 +294,12 @@ function _tode_add_term_form(&$element, $term, $show){
|
|||||||
/**
|
/**
|
||||||
* Form element validate handler for tode parent term autocomplete element.
|
* Form element validate handler for tode parent term autocomplete element.
|
||||||
*/
|
*/
|
||||||
function tode_autocomplete_validate($element, &$form_state) {
|
function tode_parent_autocomplete_validate($element, &$form_state) {
|
||||||
// dsm('tode_autocomplete_validate');
|
// dsm('- - - - tode_autocomplete_validate');
|
||||||
// dsm($element, '$element');
|
// dsm($element, '$element');
|
||||||
// dsm($form_state, '$form_state');
|
// dsm($form_state, '$form_state');
|
||||||
|
|
||||||
$value = null;
|
$value = array();
|
||||||
if ($typed_term = $element['#value']) {
|
if ($typed_term = $element['#value']) {
|
||||||
// Translate term names into actual terms.
|
// Translate term names into actual terms.
|
||||||
// See if the term exists in the chosen vocabulary and return the tid;
|
// See if the term exists in the chosen vocabulary and return the tid;
|
||||||
@ -326,6 +313,7 @@ function tode_autocomplete_validate($element, &$form_state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
// dsm('form_set_value');
|
||||||
form_set_value($element, $value, $form_state);
|
form_set_value($element, $value, $form_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,10 +323,12 @@ function tode_autocomplete_validate($element, &$form_state) {
|
|||||||
* parses input and sets the values as needed (tid) for storing the data
|
* parses input and sets the values as needed (tid) for storing the data
|
||||||
*/
|
*/
|
||||||
function tode_validate($element, &$form_state){
|
function tode_validate($element, &$form_state){
|
||||||
// dsm('tode_validate');
|
// dsm('- - - - tode_validate');
|
||||||
// dsm($form_state, 'form_state');
|
// dsm($form_state, 'form_state');
|
||||||
// dsm($element, 'element');
|
// dsm($element, 'element');
|
||||||
|
|
||||||
|
$node = $form_state['node'];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO term translation (entity translate + node title question)
|
TODO term translation (entity translate + node title question)
|
||||||
*/
|
*/
|
||||||
@ -355,32 +345,33 @@ function tode_validate($element, &$form_state){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get the parent term tid or 0 (no parents)
|
||||||
|
$parent_tid = isset($form_state['values']['tode_parent_term']['tid']) ? $form_state['values']['tode_parent_term']['tid'] : 0;
|
||||||
|
|
||||||
// See if the term already exists and load the term
|
// See if the term already exists and load the term
|
||||||
// otherwise, create a new 'autocreate' term for insert.
|
// otherwise, create a new 'autocreate' term for insert.
|
||||||
if($tid = $form_state['values']['tode_tid']){
|
if($tid = $form_state['values']['tode_tid']){
|
||||||
$term = taxonomy_term_load($tid);
|
$term = taxonomy_term_load($tid);
|
||||||
|
|
||||||
|
$term->name = $typed_term;
|
||||||
|
$term->parent = $parent_tid;
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
$vocabulary = reset($vocabularies);
|
$vocabulary = reset($vocabularies);
|
||||||
$term = array(
|
$term = (object)array(
|
||||||
'tid' => 'autocreate',
|
// 'tid' => 'autocreate', // autocreate not nbeeded with direct taxonomy_term_save
|
||||||
'vid' => $vocabulary->vid,
|
'vid' => $vocabulary->vid,
|
||||||
'name' => $typed_term,
|
'name' => $typed_term,
|
||||||
'vocabulary_machine_name' => $vocabulary->machine_name,
|
'vocabulary_machine_name' => $vocabulary->machine_name,
|
||||||
|
'parent' => $parent_tid,
|
||||||
);
|
);
|
||||||
}
|
taxonomy_term_save($term); // save here the new term to directly get the tid on hook_node_validate
|
||||||
|
|
||||||
// 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// dsm($term, '$term');
|
// dsm($term, '$term');
|
||||||
|
|
||||||
$value = (array)$term;
|
$value = (array)$term;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// dsm($value, '$value');
|
// dsm($value, '$value');
|
||||||
form_set_value($element, $value, $form_state);
|
form_set_value($element, $value, $form_state);
|
||||||
}
|
}
|
||||||
@ -399,62 +390,87 @@ function tode_field_widget_error($element, $error, $form, &$form_state) {
|
|||||||
* use to save the all term form (steel have to be debuged)
|
* use to save the all term form (steel have to be debuged)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function __tode_node_validate($node, $form){
|
function tode_node_validate($node, $form, &$form_state){
|
||||||
|
// dsm('- - - tode_node_validate');
|
||||||
|
// dsm($node, '$node');
|
||||||
|
// dsm($form, '$form');
|
||||||
|
// dsm($form_state, '$form_state');
|
||||||
|
|
||||||
module_load_include('inc', 'taxonomy', 'taxonomy.admin');
|
module_load_include('inc', 'taxonomy', 'taxonomy.admin');
|
||||||
|
// module_load_include('inc', 'i18n_string', 'i18n_string.pages');
|
||||||
dsm('tode_node_validate');
|
//
|
||||||
dsm($node, '&node');
|
|
||||||
dsm($form, '&form');
|
|
||||||
|
|
||||||
$tode_fields = _tode_get_tode_fields_def($node);
|
$tode_fields = _tode_get_tode_fields_def($node);
|
||||||
dsm($tode_fields, '$tode_fields');
|
// dsm($tode_fields, '$tode_fields');
|
||||||
|
|
||||||
# OK
|
|
||||||
|
|
||||||
/*
|
|
||||||
if(!count($tode_fields))
|
if(!count($tode_fields))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
$language = $node->language;
|
||||||
|
|
||||||
|
$default_language = language_default('language');
|
||||||
|
// dsm($default_language, '$default_language');
|
||||||
|
|
||||||
foreach ($tode_fields as $field_name => $field) {
|
foreach ($tode_fields as $field_name => $field) {
|
||||||
$values = array();
|
|
||||||
$prefix = 'tode_termform_'.$field_name.'_';
|
// retreive the prefixed termfom values (hidden or visible)
|
||||||
foreach ($node as $key => $value) {
|
$prefix = 'tode_termform_'.$field_name;
|
||||||
if(strpos($key, $prefix) !== FALSE)
|
|
||||||
$values[$key] = $value;
|
// if we do not have the term form (node creation)
|
||||||
|
if( !isset($form_state['values'][$prefix]) ){
|
||||||
|
$tode_field_term_value = $form_state['values'][$field_name]['und'][0]; // on node creation field language is always to und (sure ?)
|
||||||
|
|
||||||
|
// test the language, if not default language create the term name translation
|
||||||
|
if( $form_state['values']['language'] != 'und' || $form_state['values']['language'] != $default_language){
|
||||||
|
$context= array('term',$tode_field_term_value['tid'],'name');
|
||||||
|
i18n_string_textgroup('taxonomy')->update_translation($context, $language, $tode_field_term_value['name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}else{
|
||||||
|
// retreive the initial tode_field language
|
||||||
|
$init_language = $form[$field_name]['#language'];
|
||||||
|
|
||||||
|
// retreive the value of term field, to get the typed term name
|
||||||
|
$tode_field_term_value = $form_state['values'][$field_name][$init_language][0];
|
||||||
|
// dsm($tode_field_term_value, '$tode_field_term_value');
|
||||||
|
|
||||||
|
$values = _tode_prefix_form($form_state['values'][$prefix], $prefix.'_', FALSE);
|
||||||
|
// dsm($values, 'values');
|
||||||
|
|
||||||
|
if($language == 'und' || $language == $default_language || !module_exists('i18n_taxonomy')){
|
||||||
|
|
||||||
|
// define the form_state for term_form submit
|
||||||
|
$new_term_form_state = array(
|
||||||
|
'build_info'=>array(
|
||||||
|
'args'=>array(0=>(object)$tode_field_term_value),
|
||||||
|
),
|
||||||
|
"values"=>array(
|
||||||
|
'name'=> $tode_field_term_value['name'], // replace the original (hidden) term name value by the typed in the the entity field
|
||||||
|
'op'=> t('Save'),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
// add new values to form_state
|
||||||
|
$new_term_form_state['values'] += $values;
|
||||||
|
|
||||||
|
// dsm($new_term_form_state, 'form_state');
|
||||||
|
drupal_form_submit('taxonomy_form_term', $new_term_form_state);
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$context= array('term',$values['tid'],'name');
|
||||||
|
|
||||||
|
i18n_string_textgroup('taxonomy')->update_translation($context, $language, $tode_field_term_value['name']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// dsm($values, 'values');
|
|
||||||
$values = _tode_prefix_form($values, $prefix, FALSE);
|
|
||||||
// dsm($values, 'values');
|
|
||||||
|
|
||||||
$array_term = (array)taxonomy_get_term($values['tid']);
|
|
||||||
|
|
||||||
foreach ($values as $key => $value) {
|
|
||||||
if(is_array($value))
|
|
||||||
$values += $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
$array_term = (array)taxonomy_get_term($values['tid']);
|
|
||||||
|
|
||||||
// dsm($values, 'values');
|
|
||||||
|
|
||||||
$form_state = array();
|
|
||||||
$form_state['values'] = $values;
|
|
||||||
$form_state['values']['op'] = t('Save');
|
|
||||||
|
|
||||||
// dsm($form_state, 'form_state');
|
|
||||||
|
|
||||||
drupal_execute('taxonomy_form_term', $form_state, taxonomy_vocabulary_load($array_term['vid']), $array_term);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* theme_tode
|
* theme_tode
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
// function theme_tode($element) {
|
// function theme_tode($element) {1
|
||||||
// dsm('theme_tode');
|
// dsm('theme_tode');
|
||||||
// dsm($element, '$element');
|
// dsm($element, '$element');
|
||||||
// return $element['#children'];
|
// return $element['#children'];
|
||||||
@ -469,67 +485,105 @@ function __tode_node_validate($node, $form){
|
|||||||
*/
|
*/
|
||||||
function tode_form_alter(&$form, $form_state, $form_id){
|
function tode_form_alter(&$form, $form_state, $form_id){
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO block the deletion if tode term has children !! cause will delete them to …
|
||||||
|
*/
|
||||||
|
|
||||||
if (stripos($form_id, 'node_delete_confirm') !== false){
|
if (stripos($form_id, 'node_delete_confirm') !== false){
|
||||||
// dsm($form_id, 'tode form_alter form_id');
|
// dsm($form_id, 'tode form_alter form_id');
|
||||||
/*
|
|
||||||
TODO test deletion
|
|
||||||
*/
|
|
||||||
_tode_node_delete_form_alter($form, $form_state);
|
_tode_node_delete_form_alter($form, $form_state);
|
||||||
// dsm($form);
|
// dsm($form);
|
||||||
|
}else if(stripos($form_id, 'node_admin_content') !== false){
|
||||||
|
if(isset($form['operation']) && $form['operation']['#value'] == 'delete'){
|
||||||
|
// dsm($form, 'node_admin_content form');
|
||||||
|
// dsm($form_state, 'form_state');
|
||||||
|
_tode_nodes_delete_form_alter($form, $form_state);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _tode_node_delete_form_alter(&$form){
|
function _tode_node_delete_form_alter(&$form, $form_state){
|
||||||
// dsm($form, '_tode_node_delete_form_alter : form');
|
// dsm($form, '_tode_node_delete_form_alter : form');
|
||||||
#get the node
|
// get the node
|
||||||
$node = $form['#parameters'][2];
|
$node = $form['#node'];
|
||||||
// dsm($node);
|
// dsm($node, '$node');
|
||||||
|
|
||||||
# why that tnid ???
|
|
||||||
// if($node->tnid != 0)
|
|
||||||
// return;
|
|
||||||
|
|
||||||
#get the fields defenition of node type
|
#get the fields defenition of node type
|
||||||
$tode_fields = _tode_get_tode_fields_def($node->type);
|
$tode_fields = _tode_get_tode_fields_def($node);
|
||||||
//dsm($tode_fields);
|
// dsm($tode_fields);
|
||||||
|
|
||||||
if(count($tode_fields) == 0)
|
if(count($tode_fields) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#get the terms value
|
#get the terms value
|
||||||
$terms = array();
|
$terms = array('names'=>array(), 'tids'=>array());
|
||||||
$tids = array();
|
foreach ($tode_fields as $field_name => $field)
|
||||||
foreach ($tode_fields as $field_name => $field) {
|
_tode_populate_terms_node_delete($terms, $node->$field_name);
|
||||||
foreach ($node->$field_name as $term) {
|
|
||||||
$term = taxonomy_get_term($term['value']);
|
_tode_node_delete_prepare_form($form, $terms);
|
||||||
$terms[] = $term->name;
|
}
|
||||||
$tids[] = $term->tid;
|
|
||||||
}
|
function _tode_nodes_delete_form_alter(&$form, $form_state){
|
||||||
|
// dsm($form, '_tode_nodes_delete_form_alter : form');
|
||||||
|
$nodes = array();
|
||||||
|
foreach ($form_state['values']['nodes'] as $nid => $actif)
|
||||||
|
if($actif)
|
||||||
|
$nodes[] = node_load($nid);
|
||||||
|
|
||||||
|
#get the terms value
|
||||||
|
$terms = array('names'=>array(), 'tids'=>array());
|
||||||
|
foreach ($nodes as $node) {
|
||||||
|
#get the fields definition of node type
|
||||||
|
$tode_fields = _tode_get_tode_fields_def($node);
|
||||||
|
//dsm($tode_fields);
|
||||||
|
|
||||||
|
if(count($tode_fields) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
foreach ($tode_fields as $field_name => $field)
|
||||||
|
_tode_populate_terms_node_delete($terms, $node->$field_name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_tode_node_delete_prepare_form($form, $terms);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _tode_populate_terms_node_delete(&$terms, $tode_field){
|
||||||
|
foreach ($tode_field as $language) {
|
||||||
|
foreach ($language as $term) {
|
||||||
|
$term = taxonomy_term_load($term['tid']);
|
||||||
|
if(!in_array($term->tid, $terms['tids'])){
|
||||||
|
$terms['names'][] = $term->name;
|
||||||
|
$terms['tids'][] = $term->tid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _tode_node_delete_prepare_form(&$form, $terms){
|
||||||
if(count($terms)){
|
if(count($terms)){
|
||||||
/*
|
/*
|
||||||
TODO add here a checkbox to select terms to delete
|
TODO add here a checkbox to select terms to delete
|
||||||
*/
|
*/
|
||||||
#add some warning in form description
|
#add some warning in form description
|
||||||
$form['description']['#value'] .= '<br />'.t('this will also delete taxonomy terms : %terms', array('%terms'=>implode(', ', $terms)));
|
$form['description']['#markup'] .= '<br />'.t('this will also delete taxonomy terms : %terms', array('%terms'=>implode(', ', $terms['names'])));
|
||||||
|
|
||||||
$form['tode_delete'] = array( '#type' => 'hidden', '#value' => serialize($tids),);
|
$form['tode_delete'] = array( '#type' => 'hidden', '#value' => serialize($terms['tids']),);
|
||||||
|
|
||||||
$form['tode_terms'] = array('#type' => 'hidden', '#value' => serialize($terms),);
|
$form['tode_terms'] = array('#type' => 'hidden', '#value' => serialize($terms['names']),);
|
||||||
|
|
||||||
$form['#submit'][] = 'tode_delete_submit';
|
$form['#submit'][] = 'tode_delete_submit';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function tode_delete_submit($form, &$form_state){
|
function tode_delete_submit($form, &$form_state){
|
||||||
$tids = unserialize($form['tode_delete']['#value']);
|
$tids = unserialize($form['tode_delete']['#value']);
|
||||||
foreach ($tids as $tid)
|
foreach ($tids as $tid)
|
||||||
taxonomy_del_term($tid);
|
taxonomy_term_delete($tid);
|
||||||
|
|
||||||
$terms = unserialize($form['tode_terms']['#value']);
|
$terms = unserialize($form['tode_terms']['#value']);
|
||||||
drupal_set_message(t('Following Taxonomy terms have been deleted : %terms', array('%terms' => implode(', ', $terms) )), 'status');
|
drupal_set_message(t('Following Taxonomy terms have been deleted : %terms', array('%terms' => implode(', ', $terms) )), 'status');
|
||||||
@ -544,12 +598,13 @@ function tode_delete_submit($form, &$form_state){
|
|||||||
// return $prefix.$k;
|
// return $prefix.$k;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
function _tode_clean_form($form){
|
function _tode_clean_form($form, $level = 0){
|
||||||
foreach ($form as $key => $value) {
|
foreach ($form as $key => $value) {
|
||||||
if(strpos($key,'#') !== false){
|
if(strpos($key,'#') !== false || $key == 'form_build_id' || $key == 'form_id' || $key == 'form_token'){
|
||||||
unset($form[$key]);
|
if( $level == 0 || $key == "#element_validate")
|
||||||
|
unset($form[$key]);
|
||||||
}elseif(is_array($value)){
|
}elseif(is_array($value)){
|
||||||
$form[$key] = _tode_clean_form($value);
|
$form[$key] = _tode_clean_form($value, $level+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $form;
|
return $form;
|
||||||
@ -560,7 +615,7 @@ function _tode_prefix_form($form, $prefix = '', $add = TRUE){
|
|||||||
foreach ($form as $key => $value) {
|
foreach ($form as $key => $value) {
|
||||||
if(strpos($key,'#') === false){
|
if(strpos($key,'#') === false){
|
||||||
|
|
||||||
if($value['#type'] == 'fieldset' || (!$add && is_array($value)))
|
if((isset($value['#type']) && $value['#type'] == 'fieldset') || (!$add && is_array($value)))
|
||||||
$value = _tode_prefix_form($value, $prefix, $add);
|
$value = _tode_prefix_form($value, $prefix, $add);
|
||||||
|
|
||||||
if($add){
|
if($add){
|
||||||
@ -582,11 +637,18 @@ function _tode_prefix_form($form, $prefix = '', $add = TRUE){
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function _tode_term_form($term){
|
function _tode_term_form($term){
|
||||||
|
// dsm('_tode_term_form');
|
||||||
|
if ($term) {
|
||||||
|
|
||||||
if ($array_term = (array)$term) {
|
$form_state = array(
|
||||||
|
'build_info'=>array(
|
||||||
|
'args'=>array(0=>$term)
|
||||||
|
),
|
||||||
|
'method'=>'post',
|
||||||
|
);
|
||||||
|
|
||||||
$form_state = array();
|
// function taxonomy_form_term($form, &$form_state, $edit = array(), $vocabulary = NULL) {
|
||||||
$term_form = drupal_retrieve_form('taxonomy_form_term', $form_state, taxonomy_vocabulary_load($array_term['vid']), $array_term);
|
$term_form = drupal_retrieve_form('taxonomy_form_term', $form_state);
|
||||||
drupal_prepare_form('taxonomy_form_term', $term_form, $form_state);
|
drupal_prepare_form('taxonomy_form_term', $term_form, $form_state);
|
||||||
|
|
||||||
return $term_form;
|
return $term_form;
|
||||||
@ -624,11 +686,11 @@ function _tode_trim_options(&$form, $item){
|
|||||||
* OK OK OK
|
* OK OK OK
|
||||||
*/
|
*/
|
||||||
function _tode_get_tode_fields_def($node){
|
function _tode_get_tode_fields_def($node){
|
||||||
dsm($node, '_tode_get_fields_def');
|
// dsm($node, '_tode_get_fields_def');
|
||||||
|
|
||||||
#get the fields defenition of node type
|
#get the fields defenition of node type
|
||||||
$type_fields = field_info_instances('node');
|
$type_fields = field_info_instances('node');
|
||||||
dsm($type_fields, 'type_fields definition');
|
// dsm($type_fields, 'type_fields definition');
|
||||||
|
|
||||||
#get the tode node fields
|
#get the tode node fields
|
||||||
$tode_fields = array();
|
$tode_fields = array();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user