Notifications: Difference between revisions
From LimeSurvey Manual
Line 28: | Line 28: | ||
* title, title of message (shown in dropdown and overview) | * title, title of message (shown in dropdown and overview) | ||
* message, the actual message | * message, the actual message | ||
* | * display_class, success, danger, default | ||
* | * importance, 1 = normal, 3 = high/popup on page load | ||
* status, new, read | * status, new, read | ||
* created, datetime | * created, datetime | ||
* | * first_read, datetime | ||
== Examples == | == Examples == |
Revision as of 15:20, 4 August 2016
Have an icon in top menu about notifications to user. Can be bound to user or survey.
Also need an 'irritating' message type that will be 'new' until a certain condition is fulfilled (like survey must be activated).
GUI
- Bell icon
- List of all messages in menu where you can can see which messages are new
- Delete all messages
Usage
All notifications are created on server side with PHP. A page reload is always necessary to see new notifications.
A notification can either be of type 'important' or the default type 'log'. Important messages will show a modal popup at page load. Default messages will only show a notification at the bell in the admin menu.
See examples below for more information.
Database
New database table required to make notifications persist between login/logout.
Fields:
- id
- entity, like survey, user, ...
- entity_id, survey id, user id, ...
- title, title of message (shown in dropdown and overview)
- message, the actual message
- display_class, success, danger, default
- importance, 1 = normal, 3 = high/popup on page load
- status, new, read
- created, datetime
- first_read, datetime
Examples
Create a new notification for a survey
This notification will be visible for all users who visit the survey.
$not = new Notification(array(
'survey_id' => 316222,
'title' => 'My title',
'message' => 'Hello, and welcome to LimeSurvey! Anyone who can see this survey can see this message.'
));
$not->save();
Send an important notification
Visible on page load.
$not = new Notification(array(
'survey_id' => 316222,
'title' => 'My title',
'importance' => Notification::HIGH_IMPORTANCE,
'message' => 'This notification will be a pop-up modal automaticall opened at load'
));
$not->save();
Notification to a specific user
Only this user can see this notification.
$user = ...
$not = new Notification(array(
'user_id' => $user->id,
'title' => 'My title',
'message' => 'This is a love letter only Marge can see.'
));
$not->save();
Broadcast
All users will get this notification.
Notification::broadcast(array(
'title' => 'To all users',
'message' => 'I\'m in love with Marge. I don\'t care if everyone knows.'
));
Broadcast to superadmin
This is how your broadcast a message to all superadmins. Also using localization.
$superadmins = User::model()->getSuperAdmins();
Notification::broadcast(array(
'title' => gT('Database update'),
'message' => gT('The database has been updated to version 259. New version includes notification system.')
), $superadmins);
Display class
You can change the modal class of the modal popup using display_class.
$not = new Notification(array(
'survey_id' => 316222,
'title' => 'Error',
'message' => 'This modal will have a red panel header, because it\'s an error.',
'display_class' => 'warning'
));
$not->save();
Open issues
- Merge with Yii flash system?
- More plugin friendly? E.g. having a message history page, adding soft delete.