You are here

ctm.module in Menu Settings per Content Type 5

Same filename and directory in other branches
  1. 6.2 ctm.module
  2. 6 ctm.module

File

ctm.module
View source
<?php

/**
 * ctm module for Drupal 5.x (backported from ctm-6.x-1.0 by fde)
 *
 */

/**
 * Implementation of hook_form_alter(). Menu Settings for Content Type.
 */
function ctm_form_alter($form_id, &$form) {

  // Menu Setting for content types - Content Type Form
  if ($form_id == 'node_type_form') {
    $form['menu_settings'] = array(
      '#type' => 'fieldset',
      '#title' => t('Menu Settings'),
      '#description' => t('Enable Menu Settings for this content type.'),
      '#collapsible' => TRUE,
    );
    $default_values = variable_get($form['#node_type']->type . '_menu_settings', array());
    $options = menu_get_root_menus();
    $form['menu_settings']['menu'] = array(
      '#type' => 'checkboxes',
      '#title' => t('Enable the Menus you want to be available for this Content Type'),
      '#default_value' => $default_values,
      '#options' => $options,
    );
    $form['#submit']['ctm_node_type_form_submit'] = array();
  }
  elseif (isset($form['#node']) && $form['#node']->type . '_node_form' == $form_id) {
    $menu_settings = variable_get($form['#node']->type . '_menu_settings', array());
    if ($menu_settings) {
      $menus = array_intersect_key(menu_get_root_menus(), $menu_settings);
      $options = array();
      foreach ($menus as $key => $value) {
        $options += menu_parent_options($form['menu']['mid']['#value'], $key);
      }
      $form['menu']['pid']['#options'] = $options;
    }
    else {
      unset($form['menu']);
    }
  }
  elseif ($form_id == 'node_type_delete_confirm') {
    $form['#submit']['ctm_node_type_delete_confirm'] = array();
  }
}

/**
 *  Content Type Form Submit - Save Menu Settings for Content Type. 
 */
function ctm_node_type_form_submit($form_id, $form_values) {
  $menu_settings = array_filter($form_values['menu']);
  if ($menu_settings) {
    variable_set($form_values['type'] . '_menu_settings', $menu_settings);
  }
  else {
    variable_del($form_values['type'] . '_menu_settings');
  }
}

/**
 *  Delete Content Type Form Submit - Delete Menu Settings Variable. 
 */
function ctm_node_type_delete_confirm($form_id, $form_values) {
  variable_del($form_values['type'] . '_menu_settings');
}

Functions

Namesort descending Description
ctm_form_alter Implementation of hook_form_alter(). Menu Settings for Content Type.
ctm_node_type_delete_confirm Delete Content Type Form Submit - Delete Menu Settings Variable.
ctm_node_type_form_submit Content Type Form Submit - Save Menu Settings for Content Type.