You are here

title_override.module in Title Override 6

Same filename and directory in other branches
  1. 7.2 title_override.module
  2. 7 title_override.module

File

title_override.module
View source
<?php

/**
 * Implementation of hook_menu().
 */
function title_override_menu() {
  $items = array();
  $items['admin/settings/title_override'] = array(
    'title' => t('Title Overrides'),
    'description' => t('Override Page Titles'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'title_override_admin',
    ),
    'access arguments' => array(
      'administer title overrides',
    ),
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}

/**
 * Provides the admin form page.
 */
function title_override_admin() {
  $form = array();
  $form['title_override_form'] = array(
    '#type' => 'textarea',
    '#title' => t('Title Overrides'),
    '#default_value' => title_override_admin_display_default(),
    '#description' => t("Format: system|drupal-node-link|pagetitle or node|nid|pagetitle"),
  );
  $form['submit_clear'] = array(
    '#type' => 'submit',
    '#value' => t('Save and clear caches'),
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  $form['#submit'][] = 'title_override_admin_settings';
  return $form;
}
function title_override_admin_settings($form, &$form_state) {

  // Parses the overrides form variable into an array.
  $itemValues = array();
  if ($form_state['values']['title_override_form']) {
    $temp = explode("\n", $form_state['values']['title_override_form']);
    foreach ($temp as $item) {
      $values = explode("|", $item);
      array_push($itemValues, $values);
    }
  }
  variable_set('title_overrides', $itemValues);
  if ($form_state['values']['op'] != 'Save') {

    // Rebuilds the caches so our updates are shown.
    drupal_flush_all_caches();
    drupal_set_message('Caches cleared');
  }
}

/**
 * Returns formatted text string for form defaults.
 */
function title_override_admin_display_default() {
  $return = '';
  $titles = variable_get('title_overrides', array());

  // Chr(10) is the line break character.
  foreach ($titles as $item) {
    $return .= $item[0] . '|' . $item[1] . '|' . $item[2] . chr(10);
  }

  // Return string minus extra line break.
  return drupal_substr($return, 0, -1);
}

/**
 * Overrides system pages.
 */
function title_override_menu_alter(&$items) {
  $itemValues = variable_get('title_overrides', array());
  foreach ($itemValues as $item) {
    if ($item[0] == 'system') {
      $items[$item[1] . '']['title'] = $item[2] . '';
      $items[$item[1] . '']['title callback'] = FALSE;
    }
  }
}

/**
 * Overrides node pages.
 */
function title_override_nodeapi(&$node, $op) {
  if ($op == 'alter') {
    $itemValues = variable_get('title_overrides', array());
    foreach ($itemValues as $item) {
      if ($item[0] == 'node') {
        if ($node->nid == $item[1]) {
          drupal_set_title(check_plain($item[2]));
        }
      }
    }
  }
}

Functions

Namesort descending Description
title_override_admin Provides the admin form page.
title_override_admin_display_default Returns formatted text string for form defaults.
title_override_admin_settings
title_override_menu Implementation of hook_menu().
title_override_menu_alter Overrides system pages.
title_override_nodeapi Overrides node pages.