From 84c4f7622e8cd2c90374e3907069aa256114558f Mon Sep 17 00:00:00 2001 From: webchick Date: Sat, 28 Apr 2012 23:55:23 -0700 Subject: Issue #787652 by andypost, larowlan: Fixed Forum vocabulary alterations possibly obsolete -- possible to delete forum vocab. --- modules/forum/forum.module | 44 +++++++++++++++++++++++++++++--------------- modules/forum/forum.test | 21 +++++++++++++++++++++ 2 files changed, 50 insertions(+), 15 deletions(-) (limited to 'modules/forum') diff --git a/modules/forum/forum.module b/modules/forum/forum.module index 8389a58ed..98d26a983 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -575,26 +575,40 @@ function forum_field_storage_pre_update($entity_type, $entity, &$skip_fields) { } /** - * Implements hook_form_alter(). + * Implements hook_form_FORM_ID_alter() for taxonomy_form_vocabulary(). */ -function forum_form_alter(&$form, $form_state, $form_id) { +function forum_form_taxonomy_form_vocabulary_alter(&$form, &$form_state, $form_id) { $vid = variable_get('forum_nav_vocabulary', 0); if (isset($form['vid']['#value']) && $form['vid']['#value'] == $vid) { - // Hide critical options from forum vocabulary. - if ($form_id == 'taxonomy_form_vocabulary') { - $form['help_forum_vocab'] = array( - '#markup' => t('This is the designated forum vocabulary. Some of the normal vocabulary options have been removed.'), - '#weight' => -1, - ); - $form['hierarchy'] = array('#type' => 'value', '#value' => 1); - $form['delete']['#access'] = FALSE; - } + $form['help_forum_vocab'] = array( + '#markup' => t('This is the designated forum vocabulary. Some of the normal vocabulary options have been removed.'), + '#weight' => -1, + ); + // Forum's vocabulary always has single hierarchy. Forums and containers + // have only one parent or no parent for root items. By default this value + // is 0. + $form['hierarchy']['#value'] = 1; + // Do not allow to delete forum's vocabulary. + $form['actions']['delete']['#access'] = FALSE; + } +} + +/** + * Implements hook_form_FORM_ID_alter() for taxonomy_form_term(). + */ +function forum_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) { + $vid = variable_get('forum_nav_vocabulary', 0); + if (isset($form['vid']['#value']) && $form['vid']['#value'] == $vid) { // Hide multiple parents select from forum terms. - elseif ($form_id == 'taxonomy_form_term') { - $form['advanced']['parent']['#access'] = FALSE; - } + $form['relations']['parent']['#access'] = FALSE; } - if (!empty($form['#node_edit_form']) && isset($form['taxonomy_forums'])) { +} + +/** + * Implements hook_form_BASE_FORM_ID_alter() for node_form(). + */ +function forum_form_node_form_alter(&$form, &$form_state, $form_id) { + if (isset($form['taxonomy_forums'])) { $langcode = $form['taxonomy_forums']['#language']; // Make the vocabulary required for 'real' forum-nodes. $form['taxonomy_forums'][$langcode]['#required'] = TRUE; diff --git a/modules/forum/forum.test b/modules/forum/forum.test index 663b8725f..906cf9fd6 100644 --- a/modules/forum/forum.test +++ b/modules/forum/forum.test @@ -246,6 +246,27 @@ class ForumTestCase extends DrupalWebTestCase { $this->deleteForum($this->delete_forum['tid']); // Create forum at the top (root) level. $this->root_forum = $this->createForum('forum'); + + // Test vocabulary form alterations. + $this->drupalGet('admin/structure/taxonomy/forums/edit'); + $this->assertFieldByName('op', t('Save'), 'Save button found.'); + $this->assertNoFieldByName('op', t('Delete'), 'Delete button not found.'); + + // Test term edit form alterations. + $this->drupalGet('taxonomy/term/' . $this->container['tid'] . '/edit'); + // Test parent field been hidden by forum module. + $this->assertNoField('parent[]', 'Parent field not found.'); + + // Test tags vocabulary form is not affected. + $this->drupalGet('admin/structure/taxonomy/tags/edit'); + $this->assertFieldByName('op', t('Save'), 'Save button found.'); + $this->assertFieldByName('op', t('Delete'), 'Delete button found.'); + // Test tags vocabulary term form is not affected. + $this->drupalGet('admin/structure/taxonomy/tags/add'); + $this->assertField('parent[]', 'Parent field found.'); + // Test relations fieldset exists. + $relations_fieldset = $this->xpath("//fieldset[@id='edit-relations']"); + $this->assertTrue(isset($relations_fieldset[0]), 'Relations fieldset element found.'); } /** -- cgit v1.2.3