diff --git a/css/uw_dashboard.css b/css/uw_dashboard.css index 38b8271ced14440a11335edb22a7b4b7455ea2e3..e1c0776c6e23960d89c3cb3cd7855ccceabe9e76 100644 --- a/css/uw_dashboard.css +++ b/css/uw_dashboard.css @@ -10,3 +10,8 @@ flex-grow: 1; flex-basis: 0; } + +.dashboard__site-info { + float: right; + margin-bottom: 0.2rem; +} diff --git a/uw_dashboard.module b/uw_dashboard.module index d85453f54507a02c56c1271c75649022c8e6ad94..743e88495f3004b8333e90de631cfa8bcea60534 100644 --- a/uw_dashboard.module +++ b/uw_dashboard.module @@ -5,6 +5,7 @@ * UW Dashboard module file. */ +use Drupal\Core\Link; use Drupal\Core\Url; use Drupal\user\Entity\User; use Drupal\uw_dashboard\Handler\UWWebformEntityListBuilder; @@ -154,3 +155,59 @@ function uw_dashboard_views_pre_execute(ViewExecutable $view) { $view->pager->options['id'] = $view_instances_count; } } + +/** + * Implements hook_preprocess_page(). + */ +function uw_dashboard_preprocess_page(&$variables) { + if (\Drupal::routeMatch()->getRouteName() == 'entity.dashboard.canonical') { + // Start building the site info string with the version information. + $string = 'WCMS version ' . \Drupal::service('extension.list.profile')->getList()['uw_base_profile']->info['version']; + $string = Link::fromTextAndUrl($string, Url::fromUri('https://uwaterloo.ca/web-resources/news?tags[90]=90'))->toString(); + + // Get the website lead(s). + $query = \Drupal::entityQuery('user') + ->condition('status', 1) + ->condition('roles', 'uw_role_website_lead') + ->sort('field_uw_last_name', 'ASC') + ->sort('field_uw_first_name', 'ASC'); + $uids = $query->execute(); + $users = User::loadMultiple($uids); + $user_list = []; + foreach ($users as $user) { + $user_list[] = Link::fromTextAndUrl($user->getDisplayName(), Url::fromUri('mailto:' . $user->getEmail()))->toString(); + } + if (!$user_list) { + $user_list[] = 'not set'; + } + $string .= ' • Website lead'; + if (count($user_list) > 1) { + $string .= 's'; + } + $string .= ': ' . implode(', ', $user_list); + + // Get the site owner(s). + $query = \Drupal::entityQuery('user') + ->condition('status', 1) + ->condition('roles', 'uw_role_site_owner') + ->sort('field_uw_last_name', 'ASC') + ->sort('field_uw_first_name', 'ASC'); + $uids = $query->execute(); + $users = User::loadMultiple($uids); + $user_list = []; + foreach ($users as $user) { + $user_list[] = Link::fromTextAndUrl($user->getDisplayName(), Url::fromUri('mailto:' . $user->getEmail()))->toString(); + } + if (!$user_list) { + $user_list[] = 'not set'; + } + $string .= ' • Site owner'; + if (count($user_list) > 1) { + $string .= 's'; + } + $string .= ': ' . implode(', ', $user_list); + + // Get the site owner(s). + $variables['page']['help']['#markup'] = '<div class="dashboard__site-info">' . $string . '</div>'; + } +}