function social_activity_social_user_account_header_items in Open Social 8.9
Same name and namespace in other branches
- 8.4 modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 8.5 modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 8.6 modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 8.7 modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 8.8 modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 10.3.x modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 10.0.x modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 10.1.x modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
- 10.2.x modules/social_features/social_activity/social_activity.module \social_activity_social_user_account_header_items()
Implements hook_social_user_account_header_items().
Adds the Notification Center to the account header block.
File
- modules/
social_features/ social_activity/ social_activity.module, line 27 - The Social activity module.
Code
function social_activity_social_user_account_header_items(array $context) {
// We require a valid user to load the notifications for.
if (empty($context['user'])) {
return [];
}
// Get the total amount of notifications for the user.
$num_notifications = social_activity_social_account_notifications_counter($context['user']);
return [
'notifications' => [
'#type' => 'account_header_element',
'#wrapper_attributes' => [
'class' => [
'desktop',
'notification-bell',
],
],
'#title' => new TranslatableMarkup('Notification Centre'),
'#icon' => $num_notifications > 0 ? 'notifications' : 'notifications_none',
'#label' => new TranslatableMarkup('Notifications'),
'#url' => Url::fromRoute('view.activity_stream_notifications.page_1'),
'#notification_count' => $num_notifications,
'#weight' => 800,
'header' => [
'#wrapper_attributes' => [
'class' => 'dropdown-header',
],
'#markup' => new TranslatableMarkup('Notification Centre'),
],
'header-divider' => [
'#wrapper_attributes' => [
'class' => 'divider',
],
'#markup' => '',
],
// Element to contain the link for ajaxified view for notifications.
'load_link' => [
'#title' => '',
'#type' => 'link',
'#url' => Url::fromRoute('activity_creator.stream.notifications'),
'#attributes' => [
'class' => 'use-ajax',
],
],
'notifications' => [
'#wrapper_attributes' => [
'class' => 'js-notification-center-wrapper',
],
// @todo: Change ajax throbber to opensocial spinner.
// @see: https://www.drupal.org/project/social/issues/3074740
'#markup' => '<div className="spinner">
<div className="bounce1"></div>
<div className="bounce2"></div>
<div className="bounce3"></div>
</div>',
'#attached' => [
'library' => [
'core/drupal.ajax',
'activity_creator/activity_creator.notifications',
],
],
'#cache' => [
'max-age' => 0,
],
],
'footer-divider' => [
'#wrapper_attributes' => [
'class' => 'divider',
],
'#markup' => '',
],
'footer' => [
'#wrapper_attributes' => [
'class' => 'dropdown-header',
],
'#type' => 'link',
'#title' => [
'#type' => 'inline_template',
'#template' => "{% trans %}All notifications{% endtrans %} <svg class='btn-icon icon-black pull-right'><use xlink:href='#icon-navigate_next'></use></svg>",
'#allowed_tags' => [
'use',
'svg',
],
],
'#url' => Url::fromRoute('view.activity_stream_notifications.page_1'),
'#attributes' => [
'title' => new TranslatableMarkup('View all notifications'),
'class' => [
'block',
'clearfix',
],
],
// The link is wrapped in a container to avoid .dropdown-menu > li > a
// styling.
'#prefix' => '<div>',
'#suffix' => '</div>',
],
],
];
}