You are here

logouttab.module in Logout Tab 7

Same filename and directory in other branches
  1. 8 logouttab.module
  2. 5 logouttab.module
  3. 6 logouttab.module

Adds a logout tab to the profile area.

File

logouttab.module
View source
<?php

/**
 * @file
 * Adds a logout tab to the profile area.
 */

/**
 * Implements hook_menu().
 */
function logouttab_menu() {
  $items['user/%user/logouttab'] = array(
    'title' => 'Log out',
    'page callback' => '_logouttab_redirect_url',
    'access callback' => 'user_is_logged_in',
    'weight' => variable_get('logouttab_weight', 8),
    'type' => MENU_LOCAL_TASK,
  );
  $items['admin/config/people/logouttab'] = array(
    'title' => 'Logout settings',
    'description' => 'Choose the page that the user account logout tab link goes to.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'logouttab_admin_settings',
    ),
    'access arguments' => array(
      'administer users',
    ),
  );
  return $items;
}

/**
 * Redirects user to defined page.
 */
function _logouttab_redirect_url() {
  drupal_goto(variable_get('logouttab_url', 'user/logout'));
}

/**
 * Defines the settings form.
 */
function logouttab_admin_settings() {
  $form['logouttab_url'] = array(
    '#type' => 'textfield',
    '#title' => t('URL for the account logout page'),
    '#description' => t('Enter the relative path for the user account logout page.'),
    '#default_value' => variable_get('logouttab_url', 'user/logout'),
  );
  $form['logouttab_weight'] = array(
    '#type' => 'weight',
    '#title' => t('Weight of the logout tab'),
    '#default_value' => variable_get('logouttab_weight', 8),
    '#delta' => 30,
  );

  // Add own submit handler to request menu rebuild if weight changed.
  $form['#submit'][] = 'logouttab_admin_settings_submit';
  return system_settings_form($form);
}

/**
 * Form submission handler for logouttab_admin_settings().
 */
function logouttab_admin_settings_submit($form, &$form_state) {
  if (variable_get('logouttab_weight', 8) != $form_state['values']['logouttab_weight']) {

    // Rebuild menu.
    variable_set('menu_rebuild_needed', TRUE);
  }
}

Functions

Namesort descending Description
logouttab_admin_settings Defines the settings form.
logouttab_admin_settings_submit Form submission handler for logouttab_admin_settings().
logouttab_menu Implements hook_menu().
_logouttab_redirect_url Redirects user to defined page.