From 34bf3ad4f37d953ad380717ad4319df1f4962dd5 Mon Sep 17 00:00:00 2001 From: defacer Date: Fri, 21 May 2004 10:54:46 +0000 Subject: [PATCH] Lots of usability improvements and some bugfixes: Fixed wrong redirection after changing filters for all calendar screens Fixed course selection menu to work without javascript Moved course selection menu to the header, and added it to all screens All screens now conform to the selected course in the menu Small improvements in the way guests are handled --- calendar/lib.php | 48 ++++++++---------- calendar/set.php | 126 +++++++++++++++++++++++----------------------- calendar/view.php | 97 ++++++++++++++++++++--------------- 3 files changed, 141 insertions(+), 130 deletions(-) diff --git a/calendar/lib.php b/calendar/lib.php index decd6a19a2..e7e61182dc 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -556,33 +556,29 @@ function calendar_filter_controls($type, $vars = NULL) { $groupevents = true; - if($vars === NULL) { - switch($type) { - case 'upcoming': - $getvars = ''; - break; - case 'prefs': - $getvars = '&from=prefs&pref='.$_GET['edit']; - break; - case 'event': - global $day, $mon, $yr; - $getvars = '&from=event&id='.$_GET['id']; - break; - case 'day': - global $day, $mon, $yr; - $getvars = '&from=day&cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr; - break; - case 'course': - global $course; - $getvars = '&from=course&id='.$course->id; - if($course->groupmode == NOGROUPS && $course->groupmodeforce) { - $groupevents = false; - } - break; - } + switch($type) { + case 'upcoming': + $getvars = '&from=upcoming'; + break; + case 'prefs': + $getvars = '&from=prefs&pref='.$_GET['edit']; + break; + case 'event': + $getvars = '&from=event&id='.$_GET['id']; + break; + case 'day': + $getvars = '&from=day'; + break; + case 'course': + $getvars = '&from=course&id='.$_GET['id']; + if($course->groupmode == NOGROUPS && $course->groupmodeforce) { + $groupevents = false; + } + break; } - else { - $getvars = '&'.$vars; + + if(!empty($vars)) { + $getvars .= '&'.$vars; } $content = ''; diff --git a/calendar/set.php b/calendar/set.php index 842ce75852..959a89930b 100644 --- a/calendar/set.php +++ b/calendar/set.php @@ -38,72 +38,72 @@ // // ///////////////////////////////////////////////////////////////////////////// - require_once('../config.php'); - require_once('lib.php'); + require_once('../config.php'); + require_once('lib.php'); - require_login(); + require_login(); - require_variable($_GET['from']); - require_variable($_GET['var']); - optional_variable($_GET['value']); - optional_variable($_GET['id']); - optional_variable($_GET['cal_d']); - optional_variable($_GET['cal_m']); - optional_variable($_GET['cal_y']); + require_variable($_GET['from']); + require_variable($_GET['var']); + optional_variable($_GET['value']); + optional_variable($_GET['id']); + optional_variable($_GET['cal_d']); + optional_variable($_GET['cal_m']); + optional_variable($_GET['cal_y']); - switch($_GET['var']) { - case 'setcourse': - $id = intval($_GET['id']); - if($id == 0) { - $SESSION->cal_courses_shown = array(); - } - else if($id == 1) { - $SESSION->cal_courses_shown = calendar_get_default_courses(true); - } - else { - // We don't check for membership anymore: if(isstudent($id, $USER->id) || isteacher($id, $USER->id)) { - $SESSION->cal_courses_shown = $id; - } - break; - case 'showgroups': - $SESSION->cal_show_groups = !$SESSION->cal_show_groups; - break; - case 'showcourses': - $SESSION->cal_show_course = !$SESSION->cal_show_course; - break; - case 'showglobal': - $SESSION->cal_show_global = !$SESSION->cal_show_global; - break; - case 'showuser': - if($SESSION->cal_show_user) { - $SESSION->cal_show_user = false; - } - else { - $SESSION->cal_show_user = $USER->id; - } - break; - } + switch($_GET['var']) { + case 'setcourse': + $id = intval($_GET['id']); + if($id == 0) { + $SESSION->cal_courses_shown = array(); + } + else if($id == 1) { + $SESSION->cal_courses_shown = calendar_get_default_courses(true); + } + else { + // We don't check for membership anymore: if(isstudent($id, $USER->id) || isteacher($id, $USER->id)) { + $SESSION->cal_courses_shown = $id; + } + break; + case 'showgroups': + $SESSION->cal_show_groups = !$SESSION->cal_show_groups; + break; + case 'showcourses': + $SESSION->cal_show_course = !$SESSION->cal_show_course; + break; + case 'showglobal': + $SESSION->cal_show_global = !$SESSION->cal_show_global; + break; + case 'showuser': + if($SESSION->cal_show_user) { + $SESSION->cal_show_user = false; + } + else { + $SESSION->cal_show_user = $USER->id; + } + break; + } - switch($_GET['from']) { - case 'prefs': - redirect($CFG->wwwroot.'/calendar/preferences.php?edit='.$_GET['pref']); - break; - case 'month': - redirect($CFG->wwwroot.'/calendar/view.php?view=month&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); - break; - case 'upcoming': - redirect($CFG->wwwroot.'/calendar/view.php?view=upcoming&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); - break; - case 'event': - redirect($CFG->wwwroot.'/calendar/view.php?view=event&id='.$_GET['id']); - break; - case 'day': - redirect($CFG->wwwroot.'/calendar/view.php?view=day&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); - break; - case 'course': - redirect($CFG->wwwroot.'/course/view.php?id='.intval($_GET['id'])); - break; - default: + switch($_GET['from']) { + case 'prefs': + redirect($CFG->wwwroot.'/calendar/preferences.php?edit='.$_GET['pref']); + break; + case 'month': + redirect($CFG->wwwroot.'/calendar/view.php?view=month&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); + break; + case 'upcoming': + redirect($CFG->wwwroot.'/calendar/view.php?view=upcoming&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); + break; + case 'event': + redirect($CFG->wwwroot.'/calendar/view.php?view=event&id='.$_GET['id']); + break; + case 'day': + redirect($CFG->wwwroot.'/calendar/view.php?view=day&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); + break; + case 'course': + redirect($CFG->wwwroot.'/course/view.php?id='.intval($_GET['id'])); + break; + default: - } + } ?> diff --git a/calendar/view.php b/calendar/view.php index b2be822af1..dfa37d3f82 100644 --- a/calendar/view.php +++ b/calendar/view.php @@ -99,13 +99,7 @@ calendar_set_filters($courses, $groups, $users, $defaultcourses, $defaultcourses); } else { - if($_GET['view'] == 'upcoming') { - $defaultcourses = calendar_get_default_courses(); - calendar_set_filters($courses, $groups, $users, $defaultcourses, $defaultcourses, false); - } - else { - calendar_set_filters($courses, $groups, $users); - } + calendar_set_filters($courses, $groups, $users); } // Let's see if we are supposed to provide a referring course link @@ -165,7 +159,7 @@ print_side_block_start(get_string('monthlyview', 'calendar'), '', 'sideblockmain'); list($prevmon, $prevyr) = calendar_sub_month($mon, $yr); list($nextmon, $nextyr) = calendar_add_month($mon, $yr); - $getvars = 'from=month&cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr; // For filtering + $getvars = 'cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr; // For filtering echo calendar_filter_controls($_GET['view'], $getvars); echo '

'; echo calendar_top_controls('display', array('m' => $prevmon, 'y' => $prevyr)); @@ -207,6 +201,8 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { list($d, $m, $y) = array(intval($now['mday']), intval($now['mon']), intval($now['year'])); } + $getvars = 'from=day&cal_d='.$d.'&cal_m='.$m.'&cal_y='.$y; // For filtering + $starttime = make_timestamp($y, $m, $d); $endtime = $starttime + SECS_IN_DAY - 1; $whereclause = calendar_sql_where($starttime, $endtime, $users, $groups, $courses); @@ -220,10 +216,10 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { // New event button if(isguest()) { - $text = get_string('dayview', 'calendar'); + $text = get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars); } else { - $text = '

'.get_string('dayview', 'calendar').'
'; + $text = '
'.get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars).'
'; $text.= '
'; $text.= ''; $text.= ''; @@ -337,10 +333,10 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { // New event button if(isguest()) { - $text = get_string('detailedmonthview', 'calendar'); + $text = get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars); } else { - $text = '
'.get_string('detailedmonthview', 'calendar').'
'; + $text = '
'.get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars).'
'; $text.= ''; $text.= ''; $text.= ''; @@ -351,33 +347,6 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { print_side_block_start($text, '', 'mycalendar'); - if(isadmin($USER->id)) { - $coursesdata = get_courses('all', 'c.shortname'); - } - elseif(!isguest($USER->id)) { - $coursesdata = get_my_courses($USER->id, 'shortname'); - } - else { - $coursesdata = get_record('course', 'id', $SESSION->cal_course_referer); - } - $coursesdata = array_diff_assoc($coursesdata, array(1 => 1)); - - if(!isguest($USER->id)) { - echo '

'.get_string('eventsfromcourse', 'calendar').': '; - echo '

'; - } - echo calendar_top_controls('month', array('m' => $m, 'y' => $y)); // Start calendar display @@ -560,7 +529,7 @@ function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $ return; } - print_side_block_start(get_string('upcomingevents', 'calendar'), '', 'mycalendar'); + print_side_block_start(get_string('upcomingevents', 'calendar').': '.calendar_course_filter_selector('from=upcoming'), '', 'mycalendar'); for($i = 0; $i < $numevents; ++$i) { echo '

'; if(!empty($events[$i]->icon)) { @@ -571,7 +540,7 @@ function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $ } echo ''.$events[$i]->name.":\n"; echo ''.$events[$i]->time.''; - echo '
'.$events[$i]->description.'
'; + echo '

'.$events[$i]->description.'
'; if($i < $numevents - 1) { echo '
'; } @@ -670,4 +639,50 @@ function calendar_print_event_table($event, $starttime, $endtime, &$coursecache, echo "\n
\n"; } + +function calendar_course_filter_selector($getvars = '') { + global $USER, $SESSION; + + if(isadmin($USER->id)) { + $coursesdata = get_courses('all', 'c.shortname'); + } + elseif(!isguest($USER->id)) { + $coursesdata = get_my_courses($USER->id, 'shortname'); + } + else { + $coursesdata = get_record('course', 'id', $SESSION->cal_course_referer); + } + $coursesdata = array_diff_assoc($coursesdata, array(1 => 1)); + + $selector = ''; + + if(!isguest($USER->id)) { + $selector .= ''; + $selector .= ''; + if(!empty($getvars)) { + $getarray = explode('&', $getvars); + foreach($getarray as $getvar) { + $selector .= ''; + } + } + $selector .= ''; + $selector .= ''; + $selector .= ''; + $selector .= ''; + } + + return $selector; +} + ?> -- 2.39.5