rename_admin_paths.module in Rename Admin Paths 7
Same filename and directory in other branches
Allows users to rename admin paths
File
rename_admin_paths.moduleView source
<?php
// $Id;
/**
* @file
* Allows users to rename admin paths
*/
/**
* Implements hook_help().
*/
function rename_admin_paths_help($path, $arg) {
switch ($path) {
case 'admin/help#rename_admin_paths':
$output = '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('The Path Admin module allows users to rename admin paths (/admin/..) to /something/... and (/user/..) to /something_else/...') . '</p>';
$output .= '<h3>' . t('Uses') . '</h3>';
$output .= '<dl><dt>' . t('Rename admin paths') . '</dt>';
$output .= '<dd>' . t('Choose how to rename admin paths by using <a href="@rename_admin_paths">Path Admin configuration</a>.', array(
'@rename_admin_paths' => url('admin/config/user-interface/rename-admin-paths'),
)) . '</dd>';
$output .= '</dl>';
return $output;
case 'admin/config/user-interface/rename-admin-paths':
$output = '<p>' . t('Configure how to rename admin paths.') . '</p>';
return $output;
}
}
/**
* Implements hook_permission().
*/
function rename_admin_paths_permission() {
return array(
'administer path admin' => array(
'title' => t('Administer path admin'),
),
);
}
/**
* Implements hook_menu().
*/
function rename_admin_paths_menu() {
$items['admin/config/user-interface/rename-admin-paths'] = array(
'title' => t('Rename Admin Paths'),
'description' => t('Configure how to rename admin paths.'),
'page callback' => 'drupal_get_form',
'page arguments' => array(
'rename_admin_paths_settings',
),
'access arguments' => array(
'administer path admin',
),
);
return $items;
}
/**
* Implements hook_outbound_alter().
*/
function rename_admin_paths_url_outbound_alter(&$path, &$options, $original_path) {
// Admin path
if (variable_get('rename_admin_path', NULL)) {
$rename_admin_path_value = variable_get('rename_admin_path_value', 'backend');
// Replace admin in path
if (preg_match('|^admin(/{0,1}.*)|', $path, $matches)) {
$path = urlencode($rename_admin_path_value) . $matches[1];
}
}
// user path
if (variable_get('rename_user_path', NULL)) {
$rename_user_path_value = variable_get('rename_user_path_value', 'member');
// Replace user in path
if (preg_match('|^user(/{0,1}.*)|', $path, $matches)) {
$path = urlencode($rename_user_path_value) . $matches[1];
}
}
}
/**
* Implements hook_inbound_alter().
*/
function rename_admin_paths_url_inbound_alter(&$path, $original_path, $path_language) {
// Admin path
if (variable_get('rename_admin_path', NULL)) {
$rename_admin_path_value = variable_get('rename_admin_path_value', 'backend');
// Avoid 404 after overlay module is enabled
// This is not a good way, check $_SESSION['overlay_enable_redirect'] every time
if (!isset($_SESSION['overlay_enable_redirect']) || !$_SESSION['overlay_enable_redirect']) {
// Get back default admin path
if (preg_match('|^' . urlencode($rename_admin_path_value) . '(/{0,1}.*)|', $path, $matches)) {
$path = 'admin' . $matches[1];
}
}
// Get 404 for default admin path
if (preg_match('|^admin(/{0,1}.*)|', $original_path, $matches)) {
$path = '404';
}
}
// user path
if (variable_get('rename_user_path', NULL)) {
$rename_user_path_value = variable_get('rename_user_path_value', 'member');
// Get back default user path
if (preg_match('|^' . urlencode($rename_user_path_value) . '(/{0,1}.*)|', $path, $matches)) {
$path = 'user' . $matches[1];
}
// Get 404 for default user path
if (preg_match('|^user(/{0,1}.*)|', $original_path, $matches)) {
$path = '404';
}
}
}
/**
* Implements hook_admin_paths_alter().
*/
function rename_admin_paths_admin_paths_alter(&$paths) {
// Check if enable
if (variable_get('rename_admin_path', NULL) || variable_get('rename_admin_path', NULL)) {
foreach ($paths as $path => $enable) {
// Add renamed admin paths
if (variable_get('rename_admin_path', NULL)) {
$rename_admin_path_value = variable_get('rename_admin_path_value', 'backend');
$paths[str_replace('admin', urlencode($rename_admin_path_value), $path)] = $enable;
}
// Replace "user" in administrative paths
if (variable_get('rename_user_path', NULL)) {
$rename_user_path_value = variable_get('rename_user_path_value', 'member');
$paths[str_replace('user', urlencode($rename_user_path_value), $path)] = $enable;
}
}
}
}
/**
* Implements hook_overlay_parent_initialize().
* Override administrative paths defined by overlay module
*/
function rename_admin_paths_overlay_parent_initialize() {
// Check if enable
if (variable_get('rename_admin_path', NULL) || variable_get('rename_admin_path', NULL)) {
// Override overlay paths
$paths = path_get_admin_paths();
drupal_add_js(array(
'overlay' => array(
'paths' => $paths,
),
), 'setting');
}
}
/**
* Implements hook_menu().
*/
function rename_admin_paths_settings() {
$form = array();
$form['rename_admin_path'] = array(
'#type' => 'fieldset',
'#title' => t('Rename Admin Path'),
);
$form['rename_admin_path']['rename_admin_path'] = array(
'#type' => 'checkbox',
'#title' => t('Rename Admin Path'),
'#default_value' => variable_get('rename_admin_path', NULL),
'#description' => t('If checked, "admin" will be replaced by the following term in admin path.'),
);
$form['rename_admin_path']['rename_admin_path_value'] = array(
'#type' => 'textfield',
'#title' => t('Replace "admin" in admin path by'),
'#default_value' => variable_get('rename_admin_path_value', 'backend'),
'#description' => t('This value will replace "admin" in admin path.'),
'#element_validate' => array(
'rename_admin_paths_form_validate_path_field',
),
);
$form['rename_user_path'] = array(
'#type' => 'fieldset',
'#title' => t('Rename User Path'),
);
$form['rename_user_path']['rename_user_path'] = array(
'#type' => 'checkbox',
'#title' => t('Rename User Path'),
'#default_value' => variable_get('rename_user_path', NULL),
'#description' => t('If checked, "user" will be replaced by the following term in user path.'),
'#element_validate' => array(
'rename_admin_paths_form_validate_path_field',
),
);
$form['rename_user_path']['path_user_value'] = array(
'#type' => 'textfield',
'#title' => t('Replace "user" in user path by'),
'#default_value' => variable_get('rename_user_path_value', 'member'),
'#description' => t('This value will replace "user" in user path.'),
'#element_validate' => array(
'rename_admin_paths_form_validate_path_field',
),
);
return system_settings_form($form);
}
/**
* Validation for paths values.
*/
function rename_admin_paths_form_validate_path_field($element, &$form_state) {
// Force path replacement values to contain only lowercase letters, numbers, and underscores.
if (!preg_match('!^[a-z0-9_]+$!', $element['#value'])) {
form_error($element, t('Path replacement value must contain only lowercase letters, numbers, and underscores.'));
}
}
Functions
Name | Description |
---|---|
rename_admin_paths_admin_paths_alter | Implements hook_admin_paths_alter(). |
rename_admin_paths_form_validate_path_field | Validation for paths values. |
rename_admin_paths_help | Implements hook_help(). |
rename_admin_paths_menu | Implements hook_menu(). |
rename_admin_paths_overlay_parent_initialize | Implements hook_overlay_parent_initialize(). Override administrative paths defined by overlay module |
rename_admin_paths_permission | Implements hook_permission(). |
rename_admin_paths_settings | Implements hook_menu(). |
rename_admin_paths_url_inbound_alter | Implements hook_inbound_alter(). |
rename_admin_paths_url_outbound_alter | Implements hook_outbound_alter(). |