You are here

menu_target.module in Menu target 6

Same filename and directory in other branches
  1. 8 menu_target.module
  2. 7 menu_target.module

Allows administrators to choose wether or not to open menu items in a new window

File

menu_target.module
View source
<?php

// $Id: menu_target.module, v 0.1, 2010/11/23 12:07:27, skilip Exp $

/**
 * @file
 *
 * Allows administrators to choose wether or not to open menu items in a new window
 */

/**
 * Implementation of hook_form_alter().
 */
function menu_target_form_alter(&$form, $form_state, $form_id) {
  if ($form['#node'] && $form['#node']->type . '_node_form' == $form_id || $form_id == 'menu_edit_item') {
    if ($form['menu']) {
      $options = $form_id == 'menu_edit_item' ? $form['menu']['#item']['options'] : $form['menu']['options']['#value'];
      $form['menu']['target'] = array(
        '#type' => 'checkbox',
        '#title' => t('Open this link in a new window'),
        '#default_value' => $options['attributes'] && $options['attributes']['class'] && strstr($options['attributes']['class'], 'target-blank'),
      );
      array_unshift($form['#submit'], 'menu_target_menu_edit_item_submit');
    }
  }
}

/**
 * Implementation of hook_form_submit().
 */
function menu_target_menu_edit_item_submit($form, &$form_state) {
  if ($form_state['values']['menu']['target']) {
    if (!$form_state['values']['menu']['options']['attributes']) {
      $form_state['values']['menu']['options']['attributes'] = array(
        'class' => 'target-blank',
      );
    }
    elseif (!$form_state['values']['menu']['options']['attributes']['class']) {
      $form_state['values']['menu']['options']['attributes']['class'] = 'target-blank';
    }
    elseif (!strstr($form_state['values']['menu']['options']['attributes']['class'], 'target-blank')) {
      $form_state['values']['menu']['options']['attributes']['class'] .= ' target-blank';
    }
  }
  else {
    if ($form_state['values']['menu']['options']['attributes'] && $form_state['values']['menu']['options']['attributes']['class'] && strstr($form_state['values']['menu']['options']['attributes']['class'], 'target-blank')) {
      $form_state['values']['menu']['options']['attributes']['class'] = trim(str_replace('target-blank', '', $form_state['values']['menu']['options']['attributes']['class']));
      if (empty($form_state['values']['menu']['options']['attributes']['class'])) {
        unset($form_state['values']['menu']['options']['attributes']['class']);
      }
    }
  }
}

/**
 * Implementation of hook_init().
 */
function menu_target_init() {
  drupal_add_js(drupal_get_path('module', 'menu_target') . '/menu_target.js');
}

Functions

Namesort descending Description
menu_target_form_alter Implementation of hook_form_alter().
menu_target_init Implementation of hook_init().
menu_target_menu_edit_item_submit Implementation of hook_form_submit().