context_respect.module in Context Respect 7
Same filename and directory in other branches
Context Respect module file.
File
context_respect.moduleView source
<?php
/**
* @file
* Context Respect module file.
*/
/*
* Implements hook_ctools_plugin_api().
*/
function context_respect_ctools_plugin_api($module, $api) {
if ($module == 'context' && $api == 'plugins') {
return array(
'version' => 3,
);
}
}
/**
* Implements hook_context_plugins().
*/
function context_respect_context_plugins() {
$plugins['context_respect_reaction_block'] = array(
'handler' => array(
'path' => drupal_get_path('module', 'context_respect') . '/plugins',
'file' => 'context_respect_reaction_block.inc',
'class' => 'context_respect_reaction_block',
'parent' => 'context_reaction_block',
),
);
$plugins['context_respect_layouts_reaction_block'] = array(
'handler' => array(
'path' => drupal_get_path('module', 'context_respect') . '/plugins',
'file' => 'context_respect_layouts_reaction_block.inc',
'class' => 'context_respect_layouts_reaction_block',
'parent' => 'context_respect_reaction_block',
),
);
return $plugins;
}
/**
* Implements hook_context_registry_alter().
*/
function context_respect_context_registry_alter(&$registry) {
if (!empty($registry['reactions']['block'])) {
$registry['reactions']['block']['plugin'] = 'context_respect_reaction_block';
if (module_exists('context_layouts')) {
$registry['reactions']['block']['plugin'] = 'context_respect_layouts_reaction_block';
}
}
}
/**
* Implements hook_form_alter()
*
* By default, when context respect is installed all core block display settings will be
* followed. This setting allows them to be ignored on a block-by-block level as there are use
* cases where context should determine display options and "disrespect" context respect.
*/
function context_respect_form_alter(&$form, &$form_state, $form_id) {
if ($form_id != 'block_admin_configure') {
return;
}
$block = new stdClass();
$block->bid = "{$form['module']['#value']}-{$form['delta']['#value']}";
$ignore_page = _context_respect_get_override('context_respect_override_page', $block);
$ignore_role = _context_respect_get_override('context_respect_override_role', $block);
$form['visiblity']['context_respect'] = array(
'#type' => 'fieldset',
'#title' => t('Context Respect'),
'#collapsible' => 1,
'#collapsed' => 1,
'#weight' => 5,
'#group' => 'visibility',
);
$form['visiblity']['context_respect']['ignore_page'] = array(
'#type' => 'checkbox',
'#title' => t('Context Ignore Pages'),
'#description' => t('Block page display settings will be ignored by context (overriding context respect).'),
'#default_value' => $ignore_page,
);
$form['visiblity']['context_respect']['ignore_role'] = array(
'#type' => 'checkbox',
'#title' => t('Context Ignore Roles'),
'#description' => t('Block role display settings will be ignored by context (overriding context respect).'),
'#default_value' => $ignore_role,
);
$form['#submit'][] = 'context_respect_form_submit';
}
/**
* Implements hook_form_submit().
*/
function context_respect_form_submit($form, &$form_state) {
$block = new stdClass();
$block->bid = "{$form['module']['#value']}-{$form['delta']['#value']}";
$page_value = isset($form_state['values']['ignore_page']) ? $form_state['values']['ignore_page'] : FALSE;
$role_value = isset($form_state['values']['ignore_role']) ? $form_state['values']['ignore_role'] : FALSE;
if ($page_value) {
_context_respect_set_override('context_respect_override_page', $block, 1);
}
else {
_context_respect_del_override('context_respect_override_page', $block);
}
if ($role_value) {
_context_respect_set_override('context_respect_override_role', $block, 1);
}
else {
_context_respect_del_override('context_respect_override_role', $block);
}
}
/**
* Returns the context_respect_override_role values of a block
* @param $name
* - The override name (context_respect_override_role, context_respect_override_page)
* @param $block
* - A block object
* @return bool|mixed
*/
function _context_respect_get_override($name, $block) {
$overrides = variable_get($name, false);
return isset($overrides[$block->bid]) ? $overrides[$block->bid] : FALSE;
}
/**
* Saves a context_respect_override_page value
* @param $name
* - The override name (context_respect_override_role, context_respect_override_page)
* @param $block
* - The block to save
* @param $value
* - The overriden value. Typically set to 1
*/
function _context_respect_set_override($name, $block, $value) {
$overrides = variable_get($name, array());
$overrides[$block->bid] = $value;
variable_set($name, $overrides);
}
/**
* Removes an array element from the context respect variable
* * @param $name
* - The override name (context_respect_override_role, context_respect_override_page)
* @param $block
* - A block object
*/
function _context_respect_del_override($name, $block) {
$overrides = variable_get($name, array());
unset($overrides[$block->bid]);
variable_set($name, $overrides);
}
Functions
Name | Description |
---|---|
context_respect_context_plugins | Implements hook_context_plugins(). |
context_respect_context_registry_alter | Implements hook_context_registry_alter(). |
context_respect_ctools_plugin_api | |
context_respect_form_alter | Implements hook_form_alter() |
context_respect_form_submit | Implements hook_form_submit(). |
_context_respect_del_override | Removes an array element from the context respect variable |
_context_respect_get_override | Returns the context_respect_override_role values of a block |
_context_respect_set_override | Saves a context_respect_override_page value |