diff --git a/core/modules/taxonomy/taxonomy.admin.inc b/core/modules/taxonomy/taxonomy.admin.inc index 99114a6420242b776b730c27fc4e13020a568841..8541b783ebd4ccbc79b3f7767f5b6c41fc98b3ab 100644 --- a/core/modules/taxonomy/taxonomy.admin.inc +++ b/core/modules/taxonomy/taxonomy.admin.inc @@ -115,7 +115,7 @@ function taxonomy_form_vocabulary($form, &$form_state, $edit = array()) { 'name' => '', 'machine_name' => '', 'description' => '', - 'hierarchy' => 0, + 'hierarchy' => TAXONOMY_HIERARCHY_DISABLED, 'weight' => 0, ); foreach ($defaults as $key => $value) { @@ -368,7 +368,7 @@ function taxonomy_overview_terms($form, &$form_state, $vocabulary) { } $form[$key]['view'] = array('#type' => 'link', '#title' => $term->name, '#href' => "taxonomy/term/$term->tid"); - if ($vocabulary->hierarchy < 2 && count($tree) > 1) { + if ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) { $form['#parent_fields'] = TRUE; $form[$key]['tid'] = array( '#type' => 'hidden', @@ -402,7 +402,7 @@ function taxonomy_overview_terms($form, &$form_state, $vocabulary) { $form['#forward_step'] = $forward_step; $form['#empty_text'] = t('No terms available. Add term.', array('@link' => url('admin/structure/taxonomy/' . $vocabulary->machine_name . '/add'))); - if ($vocabulary->hierarchy < 2 && count($tree) > 1) { + if ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) { $form['actions'] = array('#type' => 'actions', '#tree' => FALSE); $form['actions']['submit'] = array( '#type' => 'submit', @@ -449,7 +449,8 @@ function taxonomy_overview_terms_submit($form, &$form_state) { uasort($form_state['values'], 'drupal_sort_weight'); $vocabulary = $form['#vocabulary']; - $hierarchy = 0; // Update the current hierarchy type as we go. + // Update the current hierarchy type as we go. + $hierarchy = TAXONOMY_HIERARCHY_DISABLED; $changed_terms = array(); $tree = taxonomy_get_tree($vocabulary->vid); @@ -468,7 +469,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) { $changed_terms[$term['tid']] = $term; } $weight++; - $hierarchy = $term['parents'][0] != 0 ? 1 : $hierarchy; + $hierarchy = $term['parents'][0] != 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy; $term = (array) $tree[$weight]; } @@ -495,7 +496,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) { $term['parent'] = $values['parent']; $changed_terms[$term['tid']] = $term; } - $hierarchy = $term['parent'] != 0 ? 1 : $hierarchy; + $hierarchy = $term['parent'] != 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy; $weight++; } } @@ -508,7 +509,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) { $term['weight'] = $weight; $changed_terms[$term['tid']] = $term; } - $hierarchy = $term['parents'][0] != 0 ? 1 : $hierarchy; + $hierarchy = $term['parents'][0] != 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy; } // Save all updated terms. @@ -702,7 +703,7 @@ function taxonomy_form_term($form, &$form_state, $edit = array(), $vocabulary = '#type' => 'fieldset', '#title' => t('Relations'), '#collapsible' => TRUE, - '#collapsed' => $vocabulary->hierarchy < 2, + '#collapsed' => ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE), '#weight' => 10, ); @@ -840,8 +841,8 @@ function taxonomy_form_term_submit($form, &$form_state) { } // If we've increased the number of parents and this is a single or flat // hierarchy, update the vocabulary immediately. - elseif ($current_parent_count > $previous_parent_count && $form['#vocabulary']->hierarchy < 2) { - $form['#vocabulary']->hierarchy = $current_parent_count == 1 ? 1 : 2; + elseif ($current_parent_count > $previous_parent_count && $form['#vocabulary']->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE) { + $form['#vocabulary']->hierarchy = $current_parent_count == 1 ? TAXONOMY_HIERARCHY_SINGLE : TAXONOMY_HIERARCHY_MULTIPLE; taxonomy_vocabulary_save($form['#vocabulary']); } diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module index 191b51972fd5d0638de05917e43f4dc1c118de33..c495a1eb0a6924170f6f721be19c43bfca10c5d7 100644 --- a/core/modules/taxonomy/taxonomy.module +++ b/core/modules/taxonomy/taxonomy.module @@ -5,6 +5,21 @@ * Enables the organization of content into categories. */ +/** + * Denotes that no term in the vocabulary has a parent. + */ +const TAXONOMY_HIERARCHY_DISABLED = 0; + +/** + * Denotes that one or more terms in the vocabulary has a single parent. + */ +const TAXONOMY_HIERARCHY_SINGLE = 1; + +/** + * Denotes that one or more terms in the vocabulary have multiple parents. + */ +const TAXONOMY_HIERARCHY_MULTIPLE = 2; + /** * Users can create new terms in a free-tagging vocabulary when * submitting a taxonomy_autocomplete_widget. We store a term object @@ -51,11 +66,11 @@ function taxonomy_help($path, $arg) { case 'admin/structure/taxonomy/%': $vocabulary = taxonomy_vocabulary_machine_name_load($arg[3]); switch ($vocabulary->hierarchy) { - case 0: + case TAXONOMY_HIERARCHY_DISABLED: return '

' . t('You can reorganize the terms in %capital_name using their drag-and-drop handles, and group terms under a parent term by sliding them under and to the right of the parent.', array('%capital_name' => drupal_ucfirst($vocabulary->name), '%name' => $vocabulary->name)) . '

'; - case 1: + case TAXONOMY_HIERARCHY_SINGLE: return '

' . t('%capital_name contains terms grouped under parent terms. You can reorganize the terms in %capital_name using their drag-and-drop handles.', array('%capital_name' => drupal_ucfirst($vocabulary->name), '%name' => $vocabulary->name)) . '

'; - case 2: + case TAXONOMY_HIERARCHY_MULTIPLE: return '

' . t('%capital_name contains terms with multiple parents. Drag and drop of terms with multiple parents is not supported, but you can re-enable drag-and-drop support by editing each term to include only a single parent.', array('%capital_name' => drupal_ucfirst($vocabulary->name))) . '

'; } } @@ -519,10 +534,11 @@ function taxonomy_taxonomy_vocabulary_update($vocabulary) { * * Checks the current parents of all terms in a vocabulary and updates the * vocabulary's hierarchy setting to the lowest possible level. If no term - * has parent terms then the vocabulary will be given a hierarchy of 0. - * If any term has a single parent then the vocabulary will be given a - * hierarchy of 1. If any term has multiple parents then the vocabulary - * will be given a hierarchy of 2. + * has parent terms then the vocabulary will be given a hierarchy of + * TAXONOMY_HIERARCHY_DISABLED. If any term has a single parent then the + * vocabulary will be given a hierarchy of TAXONOMY_HIERARCHY_SINGLE. If any + * term has multiple parents then the vocabulary will be given a hierarchy of + * TAXONOMY_HIERARCHY_MULTIPLE. * * @param $vocabulary * A vocabulary object. @@ -534,7 +550,7 @@ function taxonomy_taxonomy_vocabulary_update($vocabulary) { */ function taxonomy_check_vocabulary_hierarchy($vocabulary, $changed_term) { $tree = taxonomy_get_tree($vocabulary->vid); - $hierarchy = 0; + $hierarchy = TAXONOMY_HIERARCHY_DISABLED; foreach ($tree as $term) { // Update the changed term with the new parent value before comparison. if ($term->tid == $changed_term['tid']) { @@ -543,11 +559,11 @@ function taxonomy_check_vocabulary_hierarchy($vocabulary, $changed_term) { } // Check this term's parent count. if (count($term->parents) > 1) { - $hierarchy = 2; + $hierarchy = TAXONOMY_HIERARCHY_MULTIPLE; break; } elseif (count($term->parents) == 1 && 0 !== array_shift($term->parents)) { - $hierarchy = 1; + $hierarchy = TAXONOMY_HIERARCHY_SINGLE; } } if ($hierarchy != $vocabulary->hierarchy) {