summaryrefslogtreecommitdiff
path: root/modules/taxonomy/taxonomy.admin.inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/taxonomy/taxonomy.admin.inc')
-rw-r--r--modules/taxonomy/taxonomy.admin.inc35
1 files changed, 31 insertions, 4 deletions
diff --git a/modules/taxonomy/taxonomy.admin.inc b/modules/taxonomy/taxonomy.admin.inc
index 63729fbb1..d83f5d367 100644
--- a/modules/taxonomy/taxonomy.admin.inc
+++ b/modules/taxonomy/taxonomy.admin.inc
@@ -1,5 +1,4 @@
<?php
-// $Id$
/**
* @file
@@ -100,10 +99,11 @@ function theme_taxonomy_overview_vocabularies($variables) {
}
/**
- * Display form for adding and editing vocabularies.
+ * Form builder for the vocabulary editing form.
*
* @ingroup forms
* @see taxonomy_form_vocabulary_submit()
+ * @see taxonomy_form_vocabulary_validate()
*/
function taxonomy_form_vocabulary($form, &$form_state, $edit = array()) {
// During initial form build, add the entity to the form state for use
@@ -147,7 +147,7 @@ function taxonomy_form_vocabulary($form, &$form_state, $edit = array()) {
$form['machine_name'] = array(
'#type' => 'machine_name',
'#default_value' => $vocabulary->machine_name,
- '#maxlength' => 21,
+ '#maxlength' => 255,
'#machine_name' => array(
'exists' => 'taxonomy_vocabulary_machine_name_load',
),
@@ -175,11 +175,38 @@ function taxonomy_form_vocabulary($form, &$form_state, $edit = array()) {
$form['vid'] = array('#type' => 'value', '#value' => $vocabulary->vid);
$form['module'] = array('#type' => 'value', '#value' => $vocabulary->module);
}
+ $form['#validate'][] = 'taxonomy_form_vocabulary_validate';
+
return $form;
}
/**
- * Accept the form submission for a vocabulary and save the results.
+ * Form validation handler for taxonomy_form_vocabulary().
+ *
+ * Makes sure that the machine name of the vocabulary is not in the
+ * disallowed list (names that conflict with menu items, such as 'list'
+ * and 'add').
+ *
+ * @see taxonomy_form_vocabulary()
+ * @see taxonomy_form_vocabulary_submit()
+ */
+function taxonomy_form_vocabulary_validate($form, &$form_state) {
+ // During the deletion there is no 'machine_name' key
+ if (isset($form_state['values']['machine_name'])) {
+ // Do not allow machine names to conflict with taxonomy path arguments.
+ $machine_name = $form_state['values']['machine_name'];
+ $disallowed = array('add', 'list');
+ if (in_array($machine_name, $disallowed)) {
+ form_set_error('machine_name', t('The machine-readable name cannot be "add" or "list".'));
+ }
+ }
+}
+
+/**
+ * Form submission handler for taxonomy_form_vocabulary().
+ *
+ * @see taxonomy_form_vocabulary()
+ * @see taxonomy_form_vocabulary_validate()
*/
function taxonomy_form_vocabulary_submit($form, &$form_state) {
if ($form_state['clicked_button']['#value'] == t('Delete')) {