hijri.module in Hijri 8.2
Same filename and directory in other branches
This module provides Hijri Date integration with Drupal core date field and with other Drupal contributions such as Views and Date.
File
hijri.moduleView source
<?php
/**
* @file
* This module provides Hijri Date integration with Drupal core date field and with other Drupal contributions such as Views and Date.
*/
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_help().
*/
function hijri_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
case 'help.page.saudi_identity':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('This module provides Hijri Date integration with Drupal core date field and with other Drupal contributions such as Views and Date.') . '</p>';
return $output;
}
}
/**
* Implements hook_field_formatter_info_alter().
*/
function hijri_field_formatter_info_alter(&$info) {
$info['string']['field_types'][] = 'hijri';
}
/**
* Implements hook_element_info_alter().
*
* Swap drupal elements with calendar_systems elements.
*/
function hijri_element_info_alter(array &$info) {
$rep = function ($find_for) {
switch ($find_for) {
case \Drupal\Core\Datetime\Element\Datelist::class:
$rep = \Drupal\hijri\Element\HijriDateList::class;
break;
case \Drupal\Core\Datetime\Element\Datetime::class:
$rep = NULL;
break;
case \Drupal\Core\Render\Element\Date::class:
$rep = NULL;
break;
default:
$rep = NULL;
}
return $rep;
};
foreach ([
'date',
'datelist',
'datetime',
] as $el_) {
if (!isset($info[$el_])) {
continue;
}
$el =& $info[$el_];
if ($el_ === 'date' || $el_ === 'datetime') {
$el['#attached']['library'][] = 'calendar_systems/picker';
}
foreach ([
'#process',
'#pre_render',
'#element_validate',
'#value_callback',
] as $attr_) {
if (!isset($el[$attr_])) {
continue;
}
foreach ($el[$attr_] as $ai => &$a) {
if (is_array($a)) {
$a[0] = $rep($a[0]) ?: $a[0];
}
else {
$el[$attr_][$ai] = $rep($a) ?: $a;
}
}
}
}
}
/**
* Prepares variables for node templates.
*
* Default template: node.html.twig.
*
* Most themes use their own copy of node.html.twig. The default is located
* inside "/core/modules/node/templates/node.html.twig". Look in there for the
* full list of variables.
*
* @param array $variables
* An associative array containing:
* - elements: An array of elements to display in view mode.
* - node: The node object.
* - view_mode: View mode; e.g., 'full', 'teaser', etc.
*/
function hijri_preprocess_node(&$variables) {
$node = $variables['node'];
$node_types = \Drupal::config('hijri.config')
->get('hijri_types');
$correction = \Drupal::config('hijri.config')
->get('correction_value');
$hijri_display = \Drupal::config('hijri.config')
->get('hijri_display');
/** @var \Drupal\hijri\HijriFormatter $hijri_formatter */
$hijri_formatter = \Drupal::service('hijri.formatter');
if (isset($node_types[$node
->getType()]) && (string) $node_types[$node
->getType()] == $node
->getType()) {
switch ($hijri_display) {
case 'full':
case 'long':
case 'medium':
case 'short':
$format = $hijri_formatter
->format($node
->getCreatedTime(), $hijri_display);
break;
default:
$format = $node
->getCreatedTime();
break;
}
$node_type = $node->type->entity;
// Display post information only on certain node types.
if ($node_type
->displaySubmitted()) {
$variables['display_submitted'] = TRUE;
$variables['date'] = $format;
}
}
}
/**
* Prepares variables for comment templates.
*
* Default template: comment.html.twig.
*
* @param array $variables
* An associative array containing:
* - elements: An associative array containing the comment and entity objects.
* Array keys: #comment, #commented_entity.
*/
function hijri_preprocess_comment(&$variables) {
$comment = $variables['elements']['#comment'];
$node = $comment
->getCommentedEntity();
$variables['comment'] = $comment;
$node_types = \Drupal::config('hijri.config')
->get('hijri_types');
$correction = \Drupal::config('hijri.config')
->get('correction_value');
$hijri_display = \Drupal::config('hijri.config')
->get('hijri_comment_display');
/** @var \Drupal\hijri\HijriFormatter $hijri_formatter */
$hijri_formatter = \Drupal::service('hijri.formatter');
if (isset($node_types[$node
->getType()]) && (string) $node_types[$node
->getType()] == $node
->getType()) {
switch ($hijri_display) {
case 'full':
case 'long':
case 'medium':
case 'short':
$format = $hijri_formatter
->format($comment
->getCreatedTime(), $hijri_display);
break;
default:
$format = $variables['created'];
break;
}
$variables['submitted'] = t('Submitted by @username on @datetime', array(
'@username' => $variables['author'],
'@datetime' => $format,
));
$variables['created'] = $format;
}
}
Functions
Name![]() |
Description |
---|---|
hijri_element_info_alter | Implements hook_element_info_alter(). |
hijri_field_formatter_info_alter | Implements hook_field_formatter_info_alter(). |
hijri_help | Implements hook_help(). |
hijri_preprocess_comment | Prepares variables for comment templates. |
hijri_preprocess_node | Prepares variables for node templates. |