menu_target.module in Menu target 6
Same filename and directory in other branches
Allows administrators to choose wether or not to open menu items in a new window
File
menu_target.moduleView 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
Name![]() |
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(). |