Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions drupal-org.make
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,9 @@ projects[title][version] = 1.0-alpha9

projects[token][version] = 1.7

projects[user_notifications][version] = 2.x-dev
projects[user_notifications][patch][] = https://www.drupal.org/files/issues/user_notifications-2926012-1.patch

projects[userone][version] = 1.0-beta1

projects[uuid][version] = 1.0
Expand Down Expand Up @@ -527,6 +530,8 @@ projects[views_megarow][version] = 1.7

projects[views_php][version] = 1.0-alpha3

projects[views_refresh][version] = 1.2

projects[votingapi][version] = 2.12
projects[votingapi][patch][] = https://www.drupal.org/files/issues/updating_voting_api_default_views-2679585-3.patch

Expand Down
2 changes: 2 additions & 0 deletions modules/roomify/roomify_dashboard/roomify_dashboard.info
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ features[panels_mini][] = dashboard_welcome
features[views_view][] = availability_calendar
features[views_view][] = dashboard_bookings
features[views_view][] = dashboard_guest_stays
features[views_view][] = dashboard_notifications
features[views_view][] = email_templates
features[views_view][] = favorite_properties
features[views_view][] = form_submissions
Expand All @@ -38,3 +39,4 @@ files[] = views/roomify_dashboard_filters_handler_filter_language_select.inc
files[] = views/roomify_dashboard_handler_localized_edit_link.inc
files[] = views/roomify_dashboard_handler_properties_types_edit_link.inc
files[] = views/roomify_dashboard_handler_bat_booking_price.inc
files[] = views/roomify_dashboard_handler_hide_notification.inc
105 changes: 105 additions & 0 deletions modules/roomify/roomify_dashboard/roomify_dashboard.module
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,23 @@ function roomify_dashboard_menu() {
'access arguments' => array('administer theme colors'),
);

$items['user-notifications/%user_notifications/hide'] = array(
'delivery callback' => 'ajax_deliver',
'page callback' => 'roomify_dashboard_hide_user_notification',
'page arguments' => array(1),
'access callback' => 'roomify_dashboard_hide_user_notification_access',
'access arguments' => array(1),
'type' => MENU_CALLBACK,
);

$items['user-notifications/hide-all'] = array(
'delivery callback' => 'ajax_deliver',
'page callback' => 'roomify_dashboard_hide_all_user_notification',
'page arguments' => array(1),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);

return $items;
}

Expand Down Expand Up @@ -153,6 +170,31 @@ function roomify_dashboard_views_pre_render(&$view) {
$view->exposed_widgets = FALSE;
}
}

if ($view->name == 'dashboard_notifications') {
global $user;

$query = new EntityFieldQuery();

$query->entityCondition('entity_type', 'user_notifications')
->propertyCondition('state', 'unseen')
->fieldCondition('user_notifications_recipient_uid', 'target_id', $user->uid)
->propertyOrderBy('created', 'DESC')
->range(0, 1);

$last_user_notification = $query->execute();

if (!empty($last_user_notification)) {
$last_user_notifications_id = key($last_user_notification['user_notifications']);

if (!isset($user->data['last_user_notifications_id']) || $user->data['last_user_notifications_id'] < $last_user_notifications_id) {
$view->set_title($view->get_title() . '<div id="notifications-to-read"></div>');

$user->data['last_user_notifications_id'] = $last_user_notifications_id;
user_save($user);
}
}
}
}

/**
Expand Down Expand Up @@ -361,6 +403,14 @@ function roomify_dashboard_views_data_alter(&$data) {
'handler' => 'roomify_dashboard_handler_properties_types_edit_link',
),
);

$data['user_notifications']['hide'] = array(
'field' => array(
'title' => t('Hide notification'),
'help' => t('Hide notification'),
'handler' => 'roomify_dashboard_handler_hide_notification',
),
);
}

/**
Expand Down Expand Up @@ -558,3 +608,58 @@ function roomify_dashboard_views_query_alter(&$view, &$query) {
}
}
}

/**
* Hide user notification access callback.
*/
function roomify_dashboard_hide_user_notification_access($user_notification) {
global $user;

if ($user_notification->wrapper->user_notifications_recipient_uid->uid->value() == $user->uid) {
return TRUE;
}

return FALSE;
}

/**
* Hide user notification.
*/
function roomify_dashboard_hide_user_notification($user_notification) {
$user_notification->update_state('seen');

$commands = array();

$commands[] = views_refresh_ajax_command_refresh('.view-dashboard-notifications');

return array(
'#type' => 'ajax',
'#commands' => $commands,
);
}

function roomify_dashboard_hide_all_user_notification() {
global $user;

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user_notifications');
$query->propertyCondition('state', 'unseen');
$query->fieldCondition('user_notifications_recipient_uid', 'target_id', $user->uid);

$results = $query->execute();
if (isset($results['user_notifications'])) {
foreach ($results['user_notifications'] as $result) {
$user_notification = user_notifications_load($result->user_notifications_id);
$user_notification->update_state('seen');
}
}

$commands = array();

$commands[] = views_refresh_ajax_command_refresh('.view-dashboard-notifications');

return array(
'#type' => 'ajax',
'#commands' => $commands,
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -1597,6 +1597,7 @@ function roomify_dashboard_default_panels_mini() {
),
'middle' => NULL,
'bottom' => NULL,
'middle-second' => NULL,
),
'top' => array(
'style' => 'tabs',
Expand Down Expand Up @@ -1826,6 +1827,28 @@ function roomify_dashboard_default_panels_mini() {
$pane->uuid = 'c58443f0-5efd-440c-916a-c5b8bcbdc63d';
$display->content['new-c58443f0-5efd-440c-916a-c5b8bcbdc63d'] = $pane;
$display->panels['top'][6] = 'new-c58443f0-5efd-440c-916a-c5b8bcbdc63d';
$pane = new stdClass();
$pane->pid = 'new-9c03ae9f-5f7e-43fc-8af3-9bee26ba71d7';
$pane->panel = 'top';
$pane->type = 'views_panes';
$pane->subtype = 'dashboard_notifications-panel_pane_1';
$pane->shown = TRUE;
$pane->access = array();
$pane->configuration = array();
$pane->cache = array();
$pane->style = array(
'settings' => NULL,
);
$pane->css = array(
'css_id' => '',
'css_class' => 'col-xs-12',
);
$pane->extras = array();
$pane->position = 7;
$pane->locks = array();
$pane->uuid = '9c03ae9f-5f7e-43fc-8af3-9bee26ba71d7';
$display->content['new-9c03ae9f-5f7e-43fc-8af3-9bee26ba71d7'] = $pane;
$display->panels['top'][7] = 'new-9c03ae9f-5f7e-43fc-8af3-9bee26ba71d7';
$display->hide_title = PANELS_TITLE_FIXED;
$display->title_pane = '0';
$mini->display = $display;
Expand Down
106 changes: 106 additions & 0 deletions modules/roomify/roomify_dashboard/roomify_dashboard.views_default.inc
Original file line number Diff line number Diff line change
Expand Up @@ -4423,5 +4423,111 @@ function roomify_dashboard_views_default_views() {
);
$export['roomify_user_orders'] = $view;

$view = new view();
$view->name = 'dashboard_notifications';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'user_notifications';
$view->human_name = 'Dashboard notifications';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = '<span id="notifications-tab"></span>Notifications';
$handler->display->display_options['use_ajax'] = TRUE;
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'mini';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['pager']['options']['id'] = '0';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/* Header: Global: Text area */
$handler->display->display_options['header']['area']['id'] = 'area';
$handler->display->display_options['header']['area']['table'] = 'views';
$handler->display->display_options['header']['area']['field'] = 'area';
$handler->display->display_options['header']['area']['content'] = '<a href="/user-notifications/hide-all" class="use-ajax hide-all">Hide all</a>';
$handler->display->display_options['header']['area']['format'] = 'filtered_text';
/* No results behavior: Global: Text area */
$handler->display->display_options['empty']['area']['id'] = 'area';
$handler->display->display_options['empty']['area']['table'] = 'views';
$handler->display->display_options['empty']['area']['field'] = 'area';
$handler->display->display_options['empty']['area']['empty'] = TRUE;
$handler->display->display_options['empty']['area']['content'] = 'No notifications to read.';
$handler->display->display_options['empty']['area']['format'] = 'filtered_text';
/* Field: User notification: Hide notification */
$handler->display->display_options['fields']['hide']['id'] = 'hide';
$handler->display->display_options['fields']['hide']['table'] = 'user_notifications';
$handler->display->display_options['fields']['hide']['field'] = 'hide';
$handler->display->display_options['fields']['hide']['label'] = '';
$handler->display->display_options['fields']['hide']['element_label_colon'] = FALSE;
/* Field: User notification: User Notification type */
$handler->display->display_options['fields']['type']['id'] = 'type';
$handler->display->display_options['fields']['type']['table'] = 'user_notifications';
$handler->display->display_options['fields']['type']['field'] = 'type';
$handler->display->display_options['fields']['type']['label'] = '';
$handler->display->display_options['fields']['type']['element_label_colon'] = FALSE;
/* Field: User notification: New Message */
$handler->display->display_options['fields']['user_notifications_message']['id'] = 'user_notifications_message';
$handler->display->display_options['fields']['user_notifications_message']['table'] = 'field_data_user_notifications_message';
$handler->display->display_options['fields']['user_notifications_message']['field'] = 'user_notifications_message';
$handler->display->display_options['fields']['user_notifications_message']['label'] = '';
$handler->display->display_options['fields']['user_notifications_message']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['user_notifications_message']['settings'] = array(
'conditions' => array(
0 => array(
'condition' => '',
),
),
);
/* Contextual filter: User notification: Notification Recipient (user_notifications_recipient_uid) */
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['id'] = 'user_notifications_recipient_uid_target_id';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['table'] = 'field_data_user_notifications_recipient_uid';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['field'] = 'user_notifications_recipient_uid_target_id';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['default_action'] = 'default';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['default_argument_type'] = 'current_user';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['user_notifications_recipient_uid_target_id']['summary_options']['items_per_page'] = '25';
/* Filter criterion: User notification: State entity */
$handler->display->display_options['filters']['state']['id'] = 'state';
$handler->display->display_options['filters']['state']['table'] = 'user_notifications';
$handler->display->display_options['filters']['state']['field'] = 'state';
$handler->display->display_options['filters']['state']['value'] = array(
'unseen' => 'unseen',
);

/* Display: Content pane */
$handler = $view->new_display('panel_pane', 'Content pane', 'panel_pane_1');
$translatables['dashboard_notifications'] = array(
t('Master'),
t('Notifications'),
t('more'),
t('Apply'),
t('Reset'),
t('Sort by'),
t('Asc'),
t('Desc'),
t('Items per page'),
t('- All -'),
t('Offset'),
t('« first'),
t('‹ previous'),
t('next ›'),
t('last »'),
t('<a href="/user-notifications/hide-all" class="use-ajax hide-all">Hide all</a>'),
t('No notifications to read.'),
t('All'),
t('Content pane'),
t('View panes'),
);
$export['dashboard_notifications'] = $view;

return $export;
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ class roomify_dashboard_handler_bat_booking_price extends views_handler_field {
* {@inheritdoc}
*/
public function render($values) {

// Standard Booking.
if (isset($values->field_booking_price) && (!empty($values->field_booking_price[0]['rendered']['#markup']))) {
return $values->field_booking_price[0]['rendered']['#markup'];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

/**
* @file
*/

/**
*
*/
class roomify_dashboard_handler_hide_notification extends views_handler_field_entity {

/**
* {@inheritdoc}
*/
public function construct() {
parent::construct();
}

/**
* {@inheritdoc}
*/
public function query() {
$this->ensure_my_table();
}

/**
* {@inheritdoc}
*/
public function render($values) {
$user_notification = $this->get_value($values);

return l(t('Hide'), 'user-notifications/' . $user_notification->user_notifications_id . '/hide', array('attributes' => array('class' => 'use-ajax')));
}

}
1 change: 1 addition & 0 deletions modules/roomify/roomify_system/roomify_system.info
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ dependencies[] = file_entity
dependencies[] = panels
dependencies[] = panels_mini
dependencies[] = logintoboggan
dependencies[] = user_notifications
dependencies[] = variable_realm

files[] = views/roomify_system_handler_edit_link_field.inc
Expand Down
Loading