diff --git a/classes/notifyqueue.php b/classes/notifyqueue.php new file mode 100644 index 0000000..7f42a07 --- /dev/null +++ b/classes/notifyqueue.php @@ -0,0 +1,87 @@ +. + +/** + * Notify queue + * + * @package mod_attendance + * @copyright 2015 Antonio Carlos Mariani + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +class mod_attendance_notifyqueue { + + /** + * Show (print) the pending messages and clear them + */ + public static function show() { + global $SESSION, $OUTPUT; + + if (isset($SESSION->mod_attendance_notifyqueue)) { + foreach ($SESSION->mod_attendance_notifyqueue AS $message) { + echo $OUTPUT->notification($message->message, 'notify'.$message->type); + } + unset($SESSION->mod_attendance_notifyqueue); + } + } + + /** + * Queue a text as a problem message to be shown latter by show() method + * + * @param string $message a text with a message + */ + public static function notify_problem($message) { + self::queue_message($message, \core\output\notification::NOTIFY_PROBLEM); + } + + /** + * Queue a text as a simple message to be shown latter by show() method + * + * @param string $message a text with a message + */ + public static function notify_message($message) { + self::queue_message($message, \core\output\notification::NOTIFY_MESSAGE); + } + + /** + * queue a text as a suceess message to be shown latter by show() method + * + * @param string $message a text with a message + */ + public static function notify_success($message) { + self::queue_message($message, \core\output\notification::NOTIFY_SUCCESS); + } + + /** + * queue a text as a message of some type to be shown latter by show() method + * + * @param string $message a text with a message + * @param string $messagetype one of the \core\output\notification messages ('message', 'suceess' or 'problem') + */ + private static function queue_message($message, $messagetype=\core\output\notification::NOTIFY_MESSAGE) { + global $SESSION; + + if (!isset($SESSION->mod_attendance_notifyqueue)) { + $SESSION->mod_attendance_notifyqueue = array(); + } + $m = new stdclass(); + $m->type = $messagetype; + $m->message = $message; + $SESSION->mod_attendance_notifyqueue[] = $m; + } +} diff --git a/lang/en/attendance.php b/lang/en/attendance.php index 4375926..c4f87e4 100644 --- a/lang/en/attendance.php +++ b/lang/en/attendance.php @@ -225,7 +225,8 @@ $string['sessionexist'] = 'Session not added (already exists)!'; $string['sessions'] = 'Sessions'; $string['sessionscompleted'] = 'Sessions completed'; $string['sessionsids'] = 'IDs of sessions: '; -$string['sessionsgenerated'] = 'Sessions successfully generated'; +$string['sessiongenerated'] = 'One session was successfully generated'; +$string['sessionsgenerated'] = '{$a} sessions were successfully generated'; $string['sessionsnotfound'] = 'There is no sessions in the selected timespan'; $string['sessionstartdate'] = 'Session start date'; $string['sessiontype'] = 'Session type'; diff --git a/locallib.php b/locallib.php index c89b978..637b59f 100644 --- a/locallib.php +++ b/locallib.php @@ -1531,7 +1531,6 @@ class attendance { } } - function att_get_statuses($attid, $onlyvisible=true, $statusset = -1) { global $DB; diff --git a/manage.php b/manage.php index 5d13a52..78aa119 100644 --- a/manage.php +++ b/manage.php @@ -86,6 +86,7 @@ $sesstable = new attendance_manage_data($att); echo $output->header(); echo $output->heading(get_string('attendanceforthecourse', 'attendance').' :: ' .format_string($course->fullname)); +mod_attendance_notifyqueue::show(); echo $output->render($tabs); echo $output->render($filtercontrols); echo $output->render($sesstable); diff --git a/sessions.php b/sessions.php index 0852710..564f9fe 100644 --- a/sessions.php +++ b/sessions.php @@ -71,7 +71,12 @@ switch ($att->pageparams->action) { if ($formdata = $mform->get_data()) { $sessions = construct_sessions_data_for_add($formdata); $att->add_sessions($sessions); - redirect($url, get_string('sessionsgenerated', 'attendance')); + $message = count($sessions) == 1 ? get_string('sessiongenerated', 'attendance') + : get_string('sessionsgenerated', 'attendance', count($sessions)); + mod_attendance_notifyqueue::notify_success($message); + // Redirect to the sessions tab always showing all sessions + $SESSION->attcurrentattview[$cm->course] = ATT_VIEW_ALL; + redirect($att->url_manage()); } break; case att_sessions_page_params::ACTION_UPDATE: @@ -88,7 +93,8 @@ switch ($att->pageparams->action) { if ($formdata = $mform->get_data()) { $att->update_session_from_form_data($formdata, $sessionid); - redirect($att->url_manage(), get_string('sessionupdated', 'attendance')); + mod_attendance_notifyqueue::notify_success(get_string('sessionupdated', 'attendance')); + redirect($att->url_manage()); } break; case att_sessions_page_params::ACTION_DELETE: