farm_ui_map.module in farmOS 2.x
The farmOS UI Map module.
File
modules/core/ui/map/farm_ui_map.moduleView source
<?php
/**
* @file
* The farmOS UI Map module.
*/
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Link;
/**
* Implements hook_farm_dashboard_panes().
*/
function farm_ui_map_farm_dashboard_panes() {
return [
'dashboard_map' => [
'block' => 'map_block',
'args' => [
'map_type' => 'dashboard',
],
'region' => 'top',
],
];
}
/**
* Implements hook_module_implements_alter().
*/
function farm_ui_map_module_implements_alter(&$implementations, $hook) {
// Ensure that this module's hook_views_pre_render() runs first.
if ($hook == 'views_pre_render') {
$module = 'farm_ui_map';
$group = $implementations[$module];
unset($implementations[$module]);
$implementations = array_merge([
$module => $group,
], $implementations);
}
}
/**
* Implements hook_ENTITY_TYPE_view().
*/
function farm_ui_map_asset_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
/** @var \Drupal\farm_entity\Plugin\Asset\AssetType\AssetTypeInterface $entity */
// Bail if not the map_popup view mode.
if ($view_mode !== 'map_popup') {
return $build;
}
// The default view mode is used if a map_popup view mode is not provided.
// Alter the default view mode to only include common fields.
$view_mode_options = \Drupal::service('entity_display.repository')
->getViewModeOptionsByBundle('asset', $entity
->bundle());
if (!array_key_exists($view_mode, $view_mode_options)) {
$common_fields = [
'name',
'type',
'flag',
'notes',
'location',
];
$build = array_filter($build, function ($key) use ($common_fields) {
return strpos($key, '#') === 0 || in_array($key, $common_fields);
}, ARRAY_FILTER_USE_KEY);
}
// Build links.
$links = [];
// Build link to view assets located here.
// Only show this link on location assets.
if (\Drupal::service('asset.location')
->isLocation($entity)) {
$links[] = Link::createFromRoute(t('View assets in this location'), 'view.farm_asset.page_location', [
'asset' => $entity
->id(),
])
->toString();
}
// Build link to view logs referencing the asset.
$links[] = Link::createFromRoute(t('View logs'), 'view.farm_log.page_asset', [
'asset' => $entity
->id(),
'log_type' => 'all',
])
->toString();
// Render links in a list.
$build['links'] = [
'#markup' => '<p>' . implode(' | ', $links) . '</p>',
'#weight' => -100,
];
return $build;
}
Functions
Name | Description |
---|---|
farm_ui_map_asset_view | Implements hook_ENTITY_TYPE_view(). |
farm_ui_map_farm_dashboard_panes | Implements hook_farm_dashboard_panes(). |
farm_ui_map_module_implements_alter | Implements hook_module_implements_alter(). |