pathauto_i18n_node.module in Pathauto i18n 8
Same filename and directory in other branches
Provides tools for creating multilanguage aliases for nodes.
File
modules/pathauto_i18n_node/pathauto_i18n_node.moduleView source
<?php
/**
* @file
* Provides tools for creating multilanguage aliases for nodes.
*/
/**
* PORTED to 8.x-1.x - pathauto_i18n.module:pathauto_i18n_field_widget_info_alter().
*
* Implements hook_form_BASE_FORM_ID_alter().
*/
function pathauto_i18n_form_node_form_alter(&$form, &$form_state) {
//pathauto_i18n_configuration_form($form, $form_state['node'], 'node', $form['#node']->type);
}
/**
* Implements hook_node_insert().
*/
function pathauto_i18n_node_node_insert($node) {
pathauto_i18n_init_property($node, 'node', $node->type);
pathauto_i18n_process_entity_object($node, 'node', $node->path['pathauto_i18n_status'], 'insert');
}
/**
* Implements hook_node_update().
*/
function pathauto_i18n_node_node_update($node) {
pathauto_i18n_init_property($node, 'node', $node->type);
pathauto_i18n_process_entity_object($node, 'node', $node->path['pathauto_i18n_status'], 'update');
}
/**
* Implements hook_node_delete().
*/
function pathauto_i18n_node_node_delete($node) {
pathauto_i18n_delete_settings($node->nid, 'node');
}
/**
* Implements hook_node_load().
*/
function pathauto_i18n_node_node_load($nodes, $types) {
// Attach pathauto i18n settings to node object.
foreach ($nodes as $node) {
$nids[] = $node->nid;
}
if (!empty($nids)) {
$result = pathauto_i18n_load_settings($nids, 'node');
$settings = array();
foreach ($result as $record) {
$settings[$record->entity_id] = $record->path_status;
}
foreach ($nodes as $nid => $node) {
if (array_key_exists($nid, $settings)) {
$nodes[$nid]->path['pathauto_i18n_status'] = $settings[$nid];
}
else {
$nodes[$nid]->path['pathauto_i18n_status'] = pathauto_i18n_get_bundle_default('node', $node->type);
}
}
}
}
/**
* Implements hook_pathauto_alias_alter().
*/
function pathauto_i18n_node_pathauto_alias_alter(&$alias, &$context) {
$operations = array(
'insert',
'update',
'bulkupdate',
);
// Skip insert of alias for all languages.
if (!empty($context['module']) && $context['module'] == 'node' && in_array($context['op'], $operations) && !empty($context['data']['node'])) {
$entity = $context['data']['node'];
// Run bulk update.
if ($context['op'] == 'bulkupdate') {
pathauto_i18n_node_node_update($entity);
}
if (isset($entity->path['pathauto_i18n_status']) && $entity->path['pathauto_i18n_status'] && $context['language'] == LANGUAGE_NONE) {
$alias = '';
}
}
}
/**
* Implements hook_form_alter().
*/
function pathauto_i18n_node_form_alter(&$form, &$form_state, $form_id) {
if (!empty($form['#node_edit_form']) && $form['#node_edit_form']) {
// Add pathauto value if pathauto_i18n_status TRUE.
// Remove alias value to prevent overwriting.
if (isset($form['#node']->path['pathauto_i18n_status']) && $form['#node']->path['pathauto_i18n_status']) {
$form['path']['pathauto']['#default_value'] = TRUE;
$form['path']['alias']['#default_value'] = '';
}
}
}
/**
* Implements hook_module_implements_alter().
*/
function pathauto_i18n_node_module_implements_alter(&$implementations, $hook) {
// Move pathauto_i18n_node_form_alter to the end of the list.
// By default there not available pathauto value.
if ($hook == 'form_alter') {
$group = $implementations['pathauto_i18n_node'];
unset($implementations['pathauto_i18n_node']);
$implementations['pathauto_i18n_node'] = $group;
}
}
/**
* Implements hook_action_info().
*/
function pathauto_i18n_node_action_info() {
return array(
'pathauto_i18n_node_generate_alias' => array(
'type' => 'node',
'label' => t('Enable generation of aliases for all languages'),
'configurable' => FALSE,
'behavior' => array(
'changes_property',
),
'triggers' => array(
'node_presave',
),
),
'pathauto_i18n_node_remove_alias' => array(
'type' => 'node',
'label' => t('Disable generation of aliases for all languages'),
'configurable' => FALSE,
'behavior' => array(
'changes_property',
),
'triggers' => array(
'node_presave',
),
),
);
}
/**
* Sets the status of a pathauto_i18n_status to 1.
*
* @param object $node
* A node object.
* @param array $context
* (optional) Array of additional information about what triggered the action.
* Not used for this action.
*
* @ingroup actions
*/
function pathauto_i18n_node_generate_alias($node, $context = array()) {
$node->path['pathauto_i18n_status'] = 1;
}
/**
* Sets the status of a pathauto_i18n_status to 0.
*
* @param object $node
* A node object.
* @param array $context
* (optional) Array of additional information about what triggered the action.
* Not used for this action.
*
* @ingroup actions
*/
function pathauto_i18n_node_remove_alias($node, $context = array()) {
$node->path['pathauto_i18n_status'] = 0;
}
/**
* Implements hook_form_FORM_ID_alter().
*
* This will add pathauto_i18n options to the node type form. These settings
* will be used as default for every node of this node type.
*/
function pathauto_i18n_node_form_node_type_form_alter(&$form, $form_state) {
// Add the pathauto i18n form.
$form['workflow']['pathauto_i18n_default_node'] = array(
'#type' => 'checkbox',
'#title' => t('Generate automatic URL alias for all languages by default'),
'#default_value' => pathauto_i18n_get_bundle_default('node', $form['#node_type']->type),
'#description' => t('Set the default behaviour generating aliases for all available languages.'),
);
}
Functions
Name | Description |
---|---|
pathauto_i18n_form_node_form_alter | PORTED to 8.x-1.x - pathauto_i18n.module:pathauto_i18n_field_widget_info_alter(). |
pathauto_i18n_node_action_info | Implements hook_action_info(). |
pathauto_i18n_node_form_alter | Implements hook_form_alter(). |
pathauto_i18n_node_form_node_type_form_alter | Implements hook_form_FORM_ID_alter(). |
pathauto_i18n_node_generate_alias | Sets the status of a pathauto_i18n_status to 1. |
pathauto_i18n_node_module_implements_alter | Implements hook_module_implements_alter(). |
pathauto_i18n_node_node_delete | Implements hook_node_delete(). |
pathauto_i18n_node_node_insert | Implements hook_node_insert(). |
pathauto_i18n_node_node_load | Implements hook_node_load(). |
pathauto_i18n_node_node_update | Implements hook_node_update(). |
pathauto_i18n_node_pathauto_alias_alter | Implements hook_pathauto_alias_alter(). |
pathauto_i18n_node_remove_alias | Sets the status of a pathauto_i18n_status to 0. |