You are here

super_login.module in Super Login 7

Same filename and directory in other branches
  1. 8 super_login.module

Creates better login pages

File

super_login.module
View source
<?php

/**
 * @file
 *
 * Creates better login pages
 */

/**
* Implementation of hook_menu
*/
function super_login_menu() {
  $items['admin/config/user-interface/super-login'] = array(
    'title' => t('Super Login'),
    'description' => t('Configure improvements to the Drupal login page.'),
    'file' => 'super_login.admin.inc',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'super_login_admin_form',
    ),
    'access arguments' => array(
      'administer super login',
    ),
  );
  return $items;
}

/**
* Implementation of hook_menu_alter
* Remove tabs from login, registration and password reset pages
*/
function super_login_menu_alter(&$items) {
  $items['user/register']['type'] = MENU_CALLBACK;
  $items['user/login']['type'] = MENU_CALLBACK;
  $items['user/password']['type'] = MENU_CALLBACK;
}

/**
* Implementation of hook_permission
*/
function super_login_permission() {
  return array(
    'administer super login' => array(
      'title' => t('Administer super login'),
      'description' => t('Perform administration tasks for the Super Login module.'),
    ),
  );
}

/**
 * Implementation of hook_form_alter(). *
 *  
 */
function super_login_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'user_login' || $form_id == 'user_pass' || $form_id == 'user_login_block') {

    // Global form functions
    if (variable_get('super_login_autofocus', 0)) {
      $form['name']['#attributes']['autofocus'] = 'autofocus';
    }
    unset($form['name']['#description']);
    unset($form['pass']['#description']);
    $path = drupal_get_path('module', 'super_login');
    if (variable_get('super_login_css', 1)) {
      $form['#attached']['css'][] = $path . '/css/super-login.css';
      if (variable_get('super_login_button_image', 1)) {
        $form['#attached']['css'][] = $path . '/css/super-login-buttons.css';
      }
    }
  }
  switch ($form_id) {
    case 'user_login':
      $form['#attached']['js'][] = $path . '/js/super-login.js';
      $form['title'] = array(
        '#markup' => '<p class="login-title">' . t(filter_xss(variable_get('super_login_log_in_text', 'Log In'))) . '</p>',
        '#weight' => -100,
      );

      // Bypass our forgot password overrides if the No Request New Password module is enabled
      if (!module_exists('noreqnewpass')) {
        $link = l(t(variable_get('super_login_forgot_pw_text', 'Forgot Password?')), 'user/password', array(
          'attributes' => array(
            'title' => t('Get a new password'),
          ),
        ));
        $form['reset'] = array(
          '#markup' => '<p class="forgot-password">' . $link . '</p>',
          '#weight' => 1,
        );
      }
      $form['capslock'] = array(
        '#markup' => '<div id="capslockdiv"><p style="display: none;">' . t(filter_xss(variable_get('super_login_capslock_msg', 'Caps Lock On'))) . '</p></div>',
        '#weight' => 2,
      );
      if (user_register_access()) {
        $actions_suffix = '<div class="actions-suffix">';
        $actions_suffix .= l(t(variable_get('super_login_new_account_text', 'Create new account')), 'user/register', array(
          'attributes' => array(
            'class' => 'super-login-register',
            'title' => t('Create a new user account'),
          ),
        ));
        $actions_suffix .= '</div>';
        $form['actions']['#suffix'] = $actions_suffix;
      }
      $form['name']['#title'] = t(variable_get('super_login_login_title', 'Username or e-mail address'));
      $form['name']['#size'] = 50;
      $form['pass']['#size'] = 50;

      // Set form placeholder text
      if (variable_get('super_login_placeholder', 1)) {
        $form['name']['#attributes']['title'] = $form['name']['#title'];
        $form['pass']['#attributes']['title'] = $form['pass']['#title'];
        $form['name']['#attributes']['placeholder'] = $form['name']['#title'];
        $form['pass']['#attributes']['placeholder'] = $form['pass']['#title'];
      }

      // If logintoboggan is installed and email login email is enabled then skip our own email login modification
      if (!(module_exists('logintoboggan') && variable_get('logintoboggan_login_with_email', 0))) {

        // Ensure a valid validate array to allow login with e-mail address.
        $form['#validate'] = is_array($form['#validate']) ? $form['#validate'] : array();

        // LT's validation function must run first.
        array_unshift($form['#validate'], 'super_login_user_login_validate');
      }
      if (!variable_get('super_login_autofill', 1)) {
        $form['#attributes']['autocomplete'] = 'off';
        $form['name']['#attributes']['autocomplete'] = 'off';
        $form['pass']['#attributes']['autocomplete'] = 'off';
      }
      if (!variable_get('super_login_button_image', 1)) {
        $form['actions']['submit']['#value'] = t(variable_get('super_login_submit_text', 'Log in'));
      }
      break;
    case 'user_login_block':
      $form['#attached']['js'][] = $path . '/js/super-login.js';
      $form['capslock'] = array(
        '#markup' => '<div id="capslockdiv"><p style="display: none;">' . t(filter_xss(variable_get('super_login_capslock_msg', 'Caps Lock On'))) . '</p></div>',
        '#weight' => 2,
      );
      $form['name']['#title'] = t(variable_get('super_login_login_title', 'Username or e-mail address'));

      // Set form placeholder text
      if (variable_get('super_login_placeholder', 1)) {
        $form['name']['#attributes']['title'] = $form['name']['#title'];
        $form['pass']['#attributes']['title'] = $form['pass']['#title'];
        $form['name']['#attributes']['placeholder'] = $form['name']['#title'];
        $form['pass']['#attributes']['placeholder'] = $form['pass']['#title'];
      }

      // If logintoboggan is installed and email login email is enabled then skip our own email login modification
      if (!(module_exists('logintoboggan') && variable_get('logintoboggan_login_with_email', 0))) {

        // Ensure a valid validate array to allow login with e-mail address.
        $form['#validate'] = is_array($form['#validate']) ? $form['#validate'] : array();

        // LT's validation function must run first.
        array_unshift($form['#validate'], 'super_login_user_login_validate');
      }
      if (!variable_get('super_login_autofill', 1)) {
        $form['#attributes']['autocomplete'] = 'off';
        $form['name']['#attributes']['autocomplete'] = 'off';
        $form['pass']['#attributes']['autocomplete'] = 'off';
      }
      break;
    case 'user_pass':
      $form['#attached']['js'][] = $path . '/js/super-login-pw.js';
      $form['title'] = array(
        '#markup' => '<p class="login-title">' . t(filter_xss(variable_get('super_login_password_reset_title', 'Password Reset'))) . '</p>',
        '#weight' => -100,
      );
      $link = l(t(variable_get('super_login_back_link', 'Back to login page')), 'user/login', array(
        'attributes' => array(
          'title' => variable_get('super_login_back_link', 'Go back to the login page.'),
        ),
      ));
      $form['reset'] = array(
        '#markup' => '<p class="back-to-login">' . $link . '</p>',
        '#weight' => 1,
      );
      break;
  }
}
function super_login_form_user_pass_alter(&$form, &$form_state, $form_id) {
  if (variable_get('super_login_placeholder', 1)) {
    $form['name']['#attributes']['title'] = $form['name']['#title'];
    $form['name']['#attributes']['placeholder'] = $form['name']['#title'];
  }
}

/**
 * Custom validation for user login form
 *
*/
function super_login_user_login_validate($form, &$form_state) {
  if (isset($form_state['values']['name']) && $form_state['values']['name']) {
    if ($name = db_query("SELECT name FROM {users} WHERE LOWER(mail) = LOWER(:name)", array(
      ':name' => $form_state['values']['name'],
    ))
      ->fetchField()) {
      form_set_value($form['name'], $name, $form_state);
    }
  }
}

Functions

Namesort descending Description
super_login_form_alter Implementation of hook_form_alter(). *
super_login_form_user_pass_alter
super_login_menu Implementation of hook_menu
super_login_menu_alter Implementation of hook_menu_alter Remove tabs from login, registration and password reset pages
super_login_permission Implementation of hook_permission
super_login_user_login_validate Custom validation for user login form