block_titlelink.module in Block Title Link 6
module for adding a link to a block title
File
block_titlelink.module
View source
<?php
define('BLOCK_TITLELINK_VARIABLE_PREFIX', 'block_titlelink_');
function block_titlelink_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'block_admin_configure') {
$block->module = $form['module']['#value'];
$block->delta = $form['delta']['#value'];
$link = _block_titlelink_get_link($block);
if (!isset($form['block_settings']['#weight'])) {
$form['block_settings']['#weight'] = -1;
}
$form['block_titlelink'] = array(
'#type' => 'fieldset',
'#title' => t('Block Title Link settings'),
'#collapsible' => TRUE,
'#weight' => 0,
);
$form['block_titlelink']['title_path'] = array(
'#type' => 'textfield',
'#title' => t('Title Path'),
'#default_value' => $link,
'#description' => t('URL for Block Title to link to.'),
);
$form['#validate'][] = 'block_titlelink_validate';
}
}
function block_titlelink_validate($form, &$form_state) {
if ($form_state['values']['form_id'] == 'block_admin_configure') {
if (isset($form_state['values']['title_path']) && user_access('administer blocks')) {
$module = arg(4);
$delta = arg(5);
$link = $form_state['values']['title_path'];
if ($module && (isset($delta) || $delta !== FALSE)) {
$name = $module . '_' . $delta;
if (strlen($link) == 0) {
_block_titlelink_delete_link($name);
}
else {
_block_titlelink_save_link($name, $link);
}
}
}
}
block_admin_configure_validate($form, $form_state);
}
function block_titlelink_preprocess_block(&$vars, $hook) {
if ($hook == 'block') {
$vars['block']->title_link = _block_titlelink_get_link($vars['block']);
$title_link = $vars['block']->title_link;
if ($title_link != '') {
$vars['block']->subject = l($vars['block']->subject, $title_link, array(
'attributes' => array(
'class' => 'block-title-link',
),
'html' => 'true',
));
}
}
}
function _block_titlelink_get_link($block) {
if (!isset($block->module) && !isset($block->delta)) {
return FALSE;
}
$varname = BLOCK_TITLELINK_VARIABLE_PREFIX . $block->module . '_' . $block->delta;
return variable_get($varname, NULL);
}
function _block_titlelink_save_link($name, $value) {
$varname = BLOCK_TITLELINK_VARIABLE_PREFIX . $name;
variable_set($varname, $value);
}
function _block_titlelink_delete_link($name) {
$varname = BLOCK_TITLELINK_VARIABLE_PREFIX . $name;
variable_del($varname);
}