You are here

textsize.block.inc in Text Size 7

Same filename and directory in other branches
  1. 5 includes/textsize.block.inc
  2. 6 includes/textsize.block.inc

block, page and theme functions.

File

includes/textsize.block.inc
View source
<?php

/**
 * @file
 * block, page and theme functions.
 */

/**
 * Returns an array of allowed values.
 *
 * @return
 *   An array of allowed values.
 */
function textsize_allowed_values() {
  $ts_in = variable_get('textsize_increment', 6);
  $ts_no = variable_get('textsize_normal', 76);
  $ts_mi = variable_get('textsize_minimum', 50);
  $ts_ma = variable_get('textsize_maximum', 150);
  $textsize_allowed_values = array();
  if (is_numeric($ts_in) && is_numeric($ts_no) && is_numeric($ts_mi) && is_numeric($ts_ma)) {
    if ($ts_in >= 0.01 && $ts_no >= 0.02 && $ts_mi >= 0.01 && $ts_ma >= 0.03) {
      $ts_st = $ts_no - ceil(($ts_no - $ts_mi) / $ts_in) * $ts_in;
      $ts_en = $ts_no + floor(($ts_ma - $ts_no) / $ts_in) * $ts_in;
      for ($value = $ts_st; $value <= $ts_en; $value = $value + $ts_in) {
        $textsize_allowed_values[] = round($value, 2);
      }
    }
  }
  return $textsize_allowed_values;
}

/**
 * Cookie expires.
 *
 * @return
 *   The cookie expires in seconds.
 */
function textsize_cookie_expires($mode = 'php') {
  $textsize_cookie_expires = variable_get('textsize_cookie_expires', 365);
  $output = $textsize_cookie_expires * 24 * 60 * 60;
  if ($mode == 'js') {
    $output = $textsize_cookie_expires;
  }
  return $output;
}

/**
 * Menu callback; increase the textsize, then redirects to the previous page.
 */
function textsize_increase() {
  $textsize_cookie_expires = textsize_cookie_expires($mode = 'php');
  $textsize_cookie_domain = variable_get('textsize_cookie_domain', base_path());
  $textsize_link_type = variable_get('textsize_link_type', 'variable');
  $ts_in = variable_get('textsize_increment', 6);
  $ts_no = variable_get('textsize_normal', 76);
  $ts_ma = variable_get('textsize_maximum', 150);
  $textsize_maximum = $ts_no + floor(($ts_ma - $ts_no) / $ts_in) * $ts_in;
  $textsize_normal_display = textsize_display($ts_no, 2);
  $textsize_maximum_display = textsize_display($textsize_maximum, 2);
  $textsize_message = variable_get('textsize_message', 1);
  $textsize_javascript = variable_get('textsize_javascript', 1);
  $textsize_post = array();
  $textsize_cookie = array();
  $textsize_cookie['textsize'] = NULL;

  // allowed values
  $textsize_allowed = textsize_allowed_values();

  // check the type and the content
  if (isset($_COOKIE['textsize'])) {
    if (in_array($_COOKIE['textsize'], $textsize_allowed)) {
      $textsize_cookie['textsize'] = (double) filter_xss($_COOKIE['textsize']);
    }
  }

  // calculation of text size
  $ts_value = $textsize_cookie['textsize'] + $ts_in;
  $ts_value_display = textsize_display($ts_value, 2);

  // set session/cookie
  if (!isset($_COOKIE['textsize']) && $textsize_message == 1) {
    drupal_set_message(t('The text size have not been saved, because your browser do not accept cookies.'), 'error');
  }
  elseif ($textsize_link_type == 'fix' && $textsize_cookie['textsize'] == $ts_no - $ts_in && $textsize_message == 1) {
    drupal_set_message(t('The text size maximum is: %ts_max%.', array(
      '%ts_max' => textsize_display($ts_no + $ts_in, 2),
    )), 'error');
  }
  elseif ($textsize_cookie['textsize'] == $textsize_maximum && variable_get('textsize_reset', 0) == 1) {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $ts_no;
    }
    setcookie("textsize", $ts_no, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size maximum is: %ts_max%.', array(
        '%ts_max' => $textsize_maximum_display,
      )), 'warning');
      drupal_set_message(t('The text size has been saved as %textsize_normal%.', array(
        '%textsize_normal' => $textsize_normal_display,
      )));
    }
  }
  elseif ($textsize_cookie['textsize'] == $textsize_maximum && $textsize_message == 1) {
    drupal_set_message(t('The text size maximum is: %ts_max%.', array(
      '%ts_max' => $textsize_maximum_display,
    )), 'error');
  }
  elseif ($textsize_link_type == 'fix' && $textsize_cookie['textsize'] == $ts_no || $textsize_link_type == 'fix' && $textsize_cookie['textsize'] == $ts_no + $ts_in) {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $ts_no + $ts_in;
    }
    setcookie("textsize", $ts_no + $ts_in, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size has been saved as %ts_value%.', array(
        '%ts_value' => textsize_display($ts_no + $ts_in, 2),
      )));
    }
  }
  else {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $ts_value;
    }
    setcookie("textsize", $ts_value, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size has been saved as %ts_value%.', array(
        '%ts_value' => $ts_value_display,
      )));
    }
  }
  textsize_clear_cache();
  drupal_goto();
}

/**
 * Menu callback; decrease the textsize, then redirects to the previous page.
 */
function textsize_decrease() {
  $textsize_cookie_expires = textsize_cookie_expires($mode = 'php');
  $textsize_cookie_domain = variable_get('textsize_cookie_domain', base_path());
  $textsize_link_type = variable_get('textsize_link_type', 'variable');
  $ts_in = variable_get('textsize_increment', 6);
  $ts_no = variable_get('textsize_normal', 76);
  $ts_mi = variable_get('textsize_minimum', 50);
  $textsize_minimum = $ts_no - ceil(($ts_no - $ts_mi) / $ts_in) * $ts_in;
  $textsize_normal_display = textsize_display($ts_no, 2);
  $textsize_minimum_display = textsize_display($textsize_minimum, 2);
  $textsize_message = variable_get('textsize_message', 1);
  $textsize_javascript = variable_get('textsize_javascript', 1);
  $textsize_post = array();
  $textsize_cookie = array();
  $textsize_cookie['textsize'] = NULL;

  // allowed values
  $textsize_allowed = textsize_allowed_values();

  // check the type and the content
  if (isset($_COOKIE['textsize'])) {
    if (in_array($_COOKIE['textsize'], $textsize_allowed)) {
      $textsize_cookie['textsize'] = (double) filter_xss($_COOKIE['textsize']);
    }
  }

  // calculation of text size
  $ts_value = $textsize_cookie['textsize'] - $ts_in;
  $ts_value_display = textsize_display($ts_value, 2);

  // set session/cookie
  if (!isset($_COOKIE['textsize']) && $textsize_message == 1) {
    drupal_set_message(t('The text size have not been saved, because your browser do not accept cookies.'), 'error');
  }
  elseif ($textsize_link_type == 'fix' && $textsize_cookie['textsize'] == $ts_no - $ts_in && $textsize_message == 1) {
    drupal_set_message(t('The text size minimum is: %ts_min%.', array(
      '%ts_min' => textsize_display($ts_no - $ts_in, 2),
    )), 'error');
  }
  elseif ($textsize_cookie['textsize'] == $textsize_minimum && variable_get('textsize_reset', 0) == 1) {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $ts_no;
    }
    setcookie("textsize", $ts_no, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size minimum is: %ts_min%.', array(
        '%ts_min' => $textsize_minimum_display,
      )), 'warning');
      drupal_set_message(t('The text size has been saved as %textsize_normal%.', array(
        '%textsize_normal' => $textsize_normal_display,
      )));
    }
  }
  elseif ($textsize_cookie['textsize'] == $textsize_minimum && $textsize_message == 1) {
    drupal_set_message(t('The text size minimum is: %ts_min%.', array(
      '%ts_min' => $textsize_minimum,
    )), 'error');
  }
  elseif ($textsize_link_type == 'fix' && $textsize_cookie['textsize'] == $ts_no || $textsize_link_type == 'fix' && $textsize_cookie['textsize'] == $ts_no + $ts_in) {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $ts_no - $ts_in;
    }
    setcookie("textsize", $ts_no - $ts_in, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size has been saved as %ts_value%.', array(
        '%ts_value' => textsize_display($ts_no - $ts_in, 2),
      )));
    }
  }
  else {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $ts_value;
    }
    setcookie("textsize", $ts_value, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size has been saved as %ts_value%.', array(
        '%ts_value' => $ts_value_display,
      )));
    }
  }
  textsize_clear_cache();
  drupal_goto();
}

/**
 * Menu callback; change the textsize to normal, then redirects to the previous page.
 */
function textsize_normal() {
  $textsize_cookie_expires = textsize_cookie_expires($mode = 'php');
  $textsize_cookie_domain = variable_get('textsize_cookie_domain', base_path());
  $textsize_normal = variable_get('textsize_normal', 76);
  $textsize_normal_display = textsize_display($textsize_normal, 2);
  $textsize_message = variable_get('textsize_message', 1);
  $textsize_javascript = variable_get('textsize_javascript', 1);

  // set session/cookie
  if (!isset($_COOKIE['textsize']) && $textsize_message == 1) {
    drupal_set_message(t('The text size have not been saved, because your browser do not accept cookies.'), 'error');
  }
  else {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $textsize_normal;
    }
    setcookie("textsize", $textsize_normal, time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size has been saved as %textsize_normal%.', array(
        '%textsize_normal' => $textsize_normal_display,
      )));
    }
  }
  textsize_clear_cache();
  drupal_goto();
}

/**
 * Menu callback; change the textsize to the cookie value, then redirects to the previous page.
 */
function textsize_set() {
  $textsize_cookie_expires = textsize_cookie_expires($mode = 'php');
  $textsize_cookie_domain = variable_get('textsize_cookie_domain', base_path());
  $textsize_normal = variable_get('textsize_normal', 76);
  $textsize_message = variable_get('textsize_message', 1);
  $textsize_javascript = variable_get('textsize_javascript', 1);
  $textsize_post = array();
  $textsize_cookie = array();

  // allowed values
  $textsize_allowed = textsize_allowed_values();

  // check the type and the content
  if (in_array($_COOKIE['textsize'], $textsize_allowed)) {
    $textsize_cookie['textsize'] = (double) filter_xss($_COOKIE['textsize']);
  }

  // set session/cookie
  if (!isset($_COOKIE['textsize']) && $textsize_message == 1) {
    drupal_set_message(t('The text size have not been saved, because your browser do not accept cookies.'), 'error');
  }
  elseif (isset($_COOKIE['textsize'])) {
    if ($textsize_javascript == 0 || $textsize_javascript == 1) {
      $_SESSION['textsize'] = $textsize_cookie['textsize'];
    }
    setcookie("textsize", $textsize_cookie['textsize'], time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
    if ($textsize_message == 1) {
      drupal_set_message(t('The text size has been saved as %textsize%.', array(
        '%textsize' => textsize_display($textsize_cookie['textsize'], 2),
      )));
    }
  }
  textsize_clear_cache();
  drupal_goto();
}

/**
 * Clear defined cache tables
 */
function textsize_clear_cache() {
  $tables = array(
    'cache_page',
    'cache_block',
  );
  foreach ($tables as $table) {
    cache_clear_all('*', $table, TRUE);
  }
}

/**
 * Block Title
 *
 * @return
 *   "Text Size" and "Current Size" or "Zoom" and "Current Zoom".
 *
 * @see textsize_admin_settings()
 */
function textsize_block_title($title = 'title') {
  $textsize_block_title = variable_get('textsize_block_title', 'text_size');
  $textsize_block_title_text = t('Text Size');
  $textsize_current_textsize_text = t('Current Size');
  switch ($textsize_block_title) {
    case 'zoom':
      $textsize_block_title_text = t('Zoom');
      $textsize_current_textsize_text = t('Current Zoom');
      break;
  }
  if ($title == 'title') {
    return $textsize_block_title_text;
  }
  elseif ($title == 'current') {
    return $textsize_current_textsize_text;
  }
}

/**
 * Returns an array of available values for the select element in the block text size.
 *
 * @return
 *   An array of available values, for selecting the text size.
 *
 * @see textsize_form()
 */
function textsize_block_form_options() {
  $textsize_link_type = variable_get('textsize_link_type', 'variable');
  $ts_in = variable_get('textsize_increment', 6);
  $ts_no = variable_get('textsize_normal', 76);
  $ts_mi = variable_get('textsize_minimum', 50);
  $ts_ma = variable_get('textsize_maximum', 150);
  if ($textsize_link_type == 'fix') {
    $ts_st = $ts_no - $ts_in;
    $ts_en = $ts_no + $ts_in;
  }
  elseif ($textsize_link_type == 'variable') {
    $ts_st = $ts_no - ceil(($ts_no - $ts_mi) / $ts_in) * $ts_in;
    $ts_en = $ts_no + floor(($ts_ma - $ts_no) / $ts_in) * $ts_in;
  }
  $options = array();
  for ($value = $ts_st; $value <= $ts_en; $value = round($value + $ts_in, 2)) {
    $options[(string) $value] = textsize_display($value, 2) . '';
  }
  return $options;
}

/**
 * Implement hook_form().
 *
 * Generate the select form for the block.
 *
 * @see textsize_block()
 */
function textsize_form($form, &$form_state) {
  $textsize_cookie_expires = textsize_cookie_expires($mode = 'php');
  $textsize_cookie_domain = variable_get('textsize_cookie_domain', base_path());
  $textsize_block_title = textsize_block_title($title = 'title');
  $textsize_increment = variable_get('textsize_increment', 6);
  $textsize_normal = variable_get('textsize_normal', 76);
  $textsize_minimum = variable_get('textsize_minimum', 50);
  $textsize_maximum = variable_get('textsize_maximum', 150);
  $textsize_message = variable_get('textsize_message', 1);
  $display_current_textsize = variable_get('textsize_display_current_textsize', 'display');
  $textsize_javascript = variable_get('textsize_javascript', 1);
  $textsize_current = textsize_get_current($value = 'int');
  $options = textsize_block_form_options();
  $textsize_post = array();
  $textsize_cookie = array();

  // allowed values
  $textsize_allowed = textsize_allowed_values();

  // check the type and the content
  if (isset($_COOKIE['textsize']) && isset($_POST['textsize_select'])) {
    if (in_array(check_plain($_POST['textsize_select']), $textsize_allowed)) {
      $textsize_post['textsize'] = (string) filter_xss($_POST['textsize_select']);
    }

    // set session/cookie
    if ($textsize_post['textsize'] <= $textsize_maximum && $textsize_post['textsize'] >= $textsize_minimum) {
      setcookie("textsize", $textsize_post['textsize'], time() + $textsize_cookie_expires, $textsize_cookie_domain, "");
      if ($textsize_javascript == 0 || $textsize_javascript == 1) {
        $_SESSION['textsize'] = $textsize_post['textsize'];
      }
      if ($textsize_message == 1) {
        drupal_set_message(t('The text size has been saved as %textsize_post%.', array(
          '%textsize_post' => textsize_display($textsize_post['textsize'], 2),
        )));
      }
      textsize_clear_cache();
    }
  }
  elseif (!isset($_COOKIE['textsize']) && isset($_POST['textsize_select']) && $textsize_message == 1) {
    drupal_set_message(t('The text size have not been saved, because your browser do not accept cookies.'), 'error');
  }
  $subtitle = NULL;
  if (variable_get('textsize_display_subtitle', 0) == 1) {
    $subtitle = $textsize_block_title;
  }
  $form = array();
  $form['textsize_select'] = array(
    '#type' => 'select',
    '#title' => check_plain($subtitle),
    '#name' => 'textsize_select',
    '#options' => $options,
    '#default_value' => variable_get('textsize_select', $textsize_current),
    '#weight' => 0,
  );
  $form['#attributes']['class'][] = 'textsize';
  $form['textsize_submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
    '#weight' => 1,
  );
  $form['#skip_duplicate_check'] = TRUE;
  return $form;
}

/**
 * Implement theme().
 *
 * @see textsize_form()
 */
function theme_textsize_form($form) {
  $output = drupal_render($form);
  return $output;
}

/**
 * Implement hook_theme().
 */
function textsize_theme() {
  $variables = array(
    'dest' => NULL,
    'block_title' => NULL,
    'list_inline' => NULL,
    'current_inline' => NULL,
    'subtitle' => NULL,
    'subtitle_text' => NULL,
    'display_links' => NULL,
    'current_textsize' => NULL,
    'display_current_textsize' => NULL,
    'display_current_textsize_text' => NULL,
    'increment' => NULL,
    'normal' => NULL,
    'current_textsize_text' => NULL,
    'textsize' => NULL,
  );
  return array(
    'textsize_text' => array(
      'variables' => $variables,
      'template' => 'textsize-text',
    ),
    'textsize_image' => array(
      'variables' => $variables,
      'template' => 'textsize-image',
    ),
    'textsize_form' => array(
      'render element' => 'form',
      'template' => 'textsize-form',
    ),
  );
}

/**
 * Process variables for textsize-text.tpl.php.
 *
 * The $variables array contains the following arguments:
 * - $dest: The drupal function drupal_get_destination().
 * - $block_title: Block title: "Text Size" or "Zoom".
 * - $list_inline: Display the ul list "inline" or not.
 * - $current_inline: Display the current text size "inline" or not.
 * - $subtitle: The subtitle.
 * - $subtitle_text: "Text Size"/"Zoom" or inline "Text Size: "/"Zoom: ".
 * - $textsize_increase: The text size increase link.
 * - $textsize_decrease: The text size decrease link.
 * - $textsize_normal: The text size normal link.
 * - $display_links: Show or hide ("display_hidden") the text in the links.
 * - $current_textsize: The current text size.
 * - $display_current_textsize: Show or hide ("display_hidden") the text of the current textsize.
 * - $display_current_textsize_text: Show or hide ("display_hidden").
 * - $link_type: Return "variable" for variable or fix.
 * - $increment: The increment step (default 6%).
 * - $normal: The textsize normal (default 76%).
 * - $current_textsize_text: The current textsize text "Current Size" or "Current Zoom".
 * - $textsize: The current text size (default 100%).
 *
 * @see textsize_theme(), textsize-text.tpl.php
 */
function template_preprocess_textsize_text(&$variables) {
  $textsize_block_title = textsize_block_title($title = 'title');
  $textsize_current_textsize_text = textsize_block_title($title = 'current');
  $textsize_increment = variable_get('textsize_increment', 6);
  $textsize_normal = variable_get('textsize_normal', 76);
  $variables['template_files'][] = 'textsize-text';
  if (isset($variables['block'])) {
    $variables['template_files'][] = 'textsize-text';
  }
  $variables['dest'] = drupal_get_destination();
  $variables['block_title'] = $textsize_block_title;
  $variables['list_inline'] = "list";
  $subtitle_add = NULL;
  if (variable_get('textsize_display_list_inline', 0) == 1) {
    $variables['list_inline'] = "inline";
    $subtitle_add = ": ";
  }
  $variables['current_inline'] = "textsize_current_list";
  if (variable_get('textsize_display_current_inline', 0) == 1) {
    $variables['current_inline'] = "textsize_current_inline";
  }
  $variables['subtitle'] = NULL;
  $variables['subtitle_text'] = NULL;
  if (variable_get('textsize_display_subtitle', 0) == 1) {
    $variables['subtitle'] = "subtitle";
    $variables['subtitle_text'] = $textsize_block_title . $subtitle_add;
  }
  $variables['textsize_increase'] = NULL;
  if (variable_get('textsize_display_increase', 1) == 1) {
    $variables['textsize_increase'] = "textsize_increase";
  }
  $variables['textsize_decrease'] = NULL;
  if (variable_get('textsize_display_decrease', 1) == 1) {
    $variables['textsize_decrease'] = "textsize_decrease";
  }
  $variables['textsize_normal'] = NULL;
  if (variable_get('textsize_display_normal', 1) == 1) {
    $variables['textsize_normal'] = "textsize_normal";
  }
  $variables['display_links'] = "display";
  if (variable_get('textsize_display_links', 1) == 0) {
    $variables['display_links'] = "display_hidden";
  }
  $variables['current_textsize'] = NULL;
  $variables['display_current_textsize'] = "display";
  $variables['display_current_textsize_text'] = "display";
  switch (variable_get('textsize_display_current_text_value', 'text_value')) {
    case "text_value":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display";
      $variables['display_current_textsize_text'] = "display";
      break;
    case "value":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
    case "hidden":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display_hidden";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
    case "remove":
      $variables['display_current_textsize'] = "display_hidden";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
  }
  $variables['increment'] = textsize_display($textsize_increment, 2);
  $variables['normal'] = textsize_display($textsize_normal, 2);
  $variables['current_textsize_text'] = $textsize_current_textsize_text;
  $variables['textsize'] = textsize_get_current($value = 'display');
}

/**
 * Process variables for textsize-image.tpl.php.
 *
 * The $variables array contains the following arguments:
 * - $dest: The drupal function drupal_get_destination().
 * - $block_title: Block title: "Text Size" or "Zoom".
 * - $list_inline: Display the ul list "inline" or not.
 * - $current_inline: Display the current text size "inline" or not.
 * - $subtitle: The subtitle.
 * - $subtitle_text: "Text Size"/"Zoom" or inline "Text Size: "/"Zoom: ".
 * - $textsize_increase: The text size increase link.
 * - $textsize_decrease: The text size decrease link.
 * - $textsize_normal: The text size normal link.
 * - $display_links: Show or hide ("display_hidden") the text in the links.
 * - $current_textsize: The current text size.
 * - $display_current_textsize: Show or hide ("display_hidden") the text of the current textsize.
 * - $display_current_textsize_text: Show or hide ("display_hidden").
 * - $link_type: Return "variable" for variable or fix.
 * - $increment: The increment step (default 6%).
 * - $normal: The textsize normal (default 76%).
 * - $current_textsize_text: The current textsize text "Current Size" or "Current Zoom".
 * - $textsize: The current text size (default 100%).
 *
 * @see textsize_theme(), textsize-image.tpl.php
 */
function template_preprocess_textsize_image(&$variables) {
  $textsize_block_title = textsize_block_title($title = 'title');
  $textsize_current_textsize_text = textsize_block_title($title = 'current');
  $textsize_increment = variable_get('textsize_increment', 6);
  $textsize_normal = variable_get('textsize_normal', 76);
  $variables['template_files'][] = 'textsize-image';
  if (isset($variables['block'])) {
    $variables['template_files'][] = 'textsize-image';
  }
  $variables['dest'] = drupal_get_destination();
  $variables['block_title'] = $textsize_block_title;
  $variables['list_inline'] = "list";
  $subtitle_add = NULL;
  if (variable_get('textsize_display_list_inline', 0) == 1) {
    $variables['list_inline'] = "inline";
    $subtitle_add = ": ";
  }
  $variables['current_inline'] = "textsize_current_list";
  if (variable_get('textsize_display_current_inline', 0) == 1) {
    $variables['current_inline'] = "textsize_current_inline";
  }
  $variables['subtitle'] = NULL;
  $variables['subtitle_text'] = NULL;
  if (variable_get('textsize_display_subtitle', 0) == 1) {
    $variables['subtitle'] = "subtitle";
    $variables['subtitle_text'] = $textsize_block_title . $subtitle_add;
  }
  $variables['textsize_increase'] = NULL;
  if (variable_get('textsize_display_increase', 1) == 1) {
    $variables['textsize_increase'] = "textsize_increase";
  }
  $variables['textsize_decrease'] = NULL;
  if (variable_get('textsize_display_decrease', 1) == 1) {
    $variables['textsize_decrease'] = "textsize_decrease";
  }
  $variables['textsize_normal'] = NULL;
  if (variable_get('textsize_display_normal', 1) == 1) {
    $variables['textsize_normal'] = "textsize_normal";
  }
  $variables['display_links'] = "display";
  if (variable_get('textsize_display_links', 1) == 0) {
    $variables['display_links'] = "display_hidden";
  }
  $variables['current_textsize'] = NULL;
  $variables['display_current_textsize'] = "display";
  $variables['display_current_textsize_text'] = "display";
  switch (variable_get('textsize_display_current_text_value', 'text_value')) {
    case "text_value":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display";
      $variables['display_current_textsize_text'] = "display";
      break;
    case "value":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
    case "hidden":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display_hidden";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
    case "remove":
      $variables['display_current_textsize'] = "display_hidden";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
  }
  $variables['link_type'] = variable_get('textsize_link_type', 'variable');
  $variables['increment'] = textsize_display($textsize_increment, 2);
  $variables['normal'] = textsize_display($textsize_normal, 2);
  $variables['current_textsize_text'] = $textsize_current_textsize_text;
  $variables['textsize'] = textsize_get_current($value = 'display');
}

/**
 * Process variables for textsize-form.tpl.php.
 *
 * The $variables array contains the following arguments:
 * - $list_inline: Display the ul list "inline" or not.
 * - $current_inline: Display the current text size "inline" or not.
 * - $current_textsize: The current text size.
 * - $display_current_textsize: Show or hide ("display_hidden") the text of the current textsize.
 * - $display_current_textsize_text: Show or hide ("display_hidden").
 * - $textsize_form: The form.
 * - $current_textsize_text: The current textsize text "Current Size" or "Current Zoom".
 * - $textsize: The current text size (default 100%).
 *
 * @see textsize_theme(), textsize-form.tpl.php
 */
function template_preprocess_textsize_form(&$variables) {
  $textsize_current_textsize_text = textsize_block_title($title = 'current');
  $variables['textsize'] = array();
  $hidden = array();

  // Provide variables named after form keys so themers can print each element independently.
  foreach (element_children($variables['form']) as $key) {
    $type = $variables['form'][$key]['#type'];
    if ($type == 'hidden' || $type == 'token') {
      $hidden[] = drupal_render($variables['form'][$key]);
    }
    else {
      $variables['textsize'][$key] = drupal_render($variables['form'][$key]);
    }
  }
  $variables['list_inline'] = "list";
  if (variable_get('textsize_display_list_inline', 0) == 1) {
    $variables['list_inline'] = "inline";
  }
  $variables['current_inline'] = "textsize_current_list";
  if (variable_get('textsize_display_current_inline', 0) == 1) {
    $variables['current_inline'] = "textsize_current_inline";
  }
  $variables['current_textsize'] = NULL;
  $variables['display_current_textsize'] = "display";
  $variables['display_current_textsize_text'] = "display";
  switch (variable_get('textsize_display_current_text_value', 'text_value')) {
    case "text_value":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display";
      $variables['display_current_textsize_text'] = "display";
      break;
    case "value":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
    case "hidden":
      $variables['current_textsize'] = "current_textsize";
      $variables['display_current_textsize'] = "display_hidden";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
    case "remove":
      $variables['display_current_textsize'] = "display_hidden";
      $variables['display_current_textsize_text'] = "display_hidden";
      break;
  }

  // Hidden form elements have no value to themers. No need for separation.
  $variables['textsize']['hidden'] = implode($hidden);

  // Collect all form elements to make it easier to print the whole form.
  $variables['textsize_form'] = implode($variables['textsize']);
  $variables['current_textsize_text'] = $textsize_current_textsize_text;
  $variables['textsize'] = textsize_get_current($value = 'display');
}

Functions

Namesort descending Description
template_preprocess_textsize_form Process variables for textsize-form.tpl.php.
template_preprocess_textsize_image Process variables for textsize-image.tpl.php.
template_preprocess_textsize_text Process variables for textsize-text.tpl.php.
textsize_allowed_values Returns an array of allowed values.
textsize_block_form_options Returns an array of available values for the select element in the block text size.
textsize_block_title Block Title
textsize_clear_cache Clear defined cache tables
textsize_cookie_expires Cookie expires.
textsize_decrease Menu callback; decrease the textsize, then redirects to the previous page.
textsize_form Implement hook_form().
textsize_increase Menu callback; increase the textsize, then redirects to the previous page.
textsize_normal Menu callback; change the textsize to normal, then redirects to the previous page.
textsize_set Menu callback; change the textsize to the cookie value, then redirects to the previous page.
textsize_theme Implement hook_theme().
theme_textsize_form Implement theme().