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
This commit is contained in:
defacer 2004-05-21 10:54:46 +00:00
parent 14fcda781a
commit 34bf3ad4f3
3 changed files with 141 additions and 130 deletions

View file

@ -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 = '<table class="cal_controls" style="width: 98%;">';

View file

@ -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:
}
}
?>

View file

@ -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&amp;cal_d='.$day.'&amp;cal_m='.$mon.'&amp;cal_y='.$yr; // For filtering
$getvars = 'cal_d='.$day.'&amp;cal_m='.$mon.'&amp;cal_y='.$yr; // For filtering
echo calendar_filter_controls($_GET['view'], $getvars);
echo '<p>';
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&amp;cal_d='.$d.'&amp;cal_m='.$m.'&amp;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 = '<div style="float: left;">'.get_string('dayview', 'calendar').'</div><div style="float: right;">';
$text = '<div style="float: left;">'.get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars).'</div><div style="float: right;">';
$text.= '<form style="display: inline;" action="'.CALENDAR_URL.'event.php" method="get">';
$text.= '<input type="hidden" name="action" value="new" />';
$text.= '<input type="hidden" name="cal_m" value="'.$m.'" />';
@ -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 = '<div style="float: left;">'.get_string('detailedmonthview', 'calendar').'</div><div style="float: right;">';
$text = '<div style="float: left;">'.get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars).'</div><div style="float: right;">';
$text.= '<form style="display: inline;" action="'.CALENDAR_URL.'event.php" method="get">';
$text.= '<input type="hidden" name="action" value="new" />';
$text.= '<input type="hidden" name="cal_m" value="'.$m.'" />';
@ -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 '<p style="text-align: center; margin: 1em;"><strong>'.get_string('eventsfromcourse', 'calendar').': ';
echo '<select name="course" onchange="document.location.href=\''.CALENDAR_URL.'set.php?var=setcourse&amp;'.$getvars.'&amp;id=\' + this.value;">';
echo '<option value="1">'.get_string('all')."</option>\n";
if($coursesdata !== false) {
foreach($coursesdata as $coursedata) {
echo "\n<option value='$coursedata->id'";
if(is_numeric($SESSION->cal_courses_shown) && $coursedata->id == $SESSION->cal_courses_shown) {
echo ' selected';
}
echo '>'.$coursedata->shortname."</option>\n";
}
}
echo '</select></strong></p>';
}
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 '<p>';
if(!empty($events[$i]->icon)) {
@ -571,7 +540,7 @@ function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $
}
echo '<span class="cal_event">'.$events[$i]->name.":</span>\n";
echo '<span class="cal_event_date">'.$events[$i]->time.'</span>';
echo '<br />'.$events[$i]->description.'<br />';
echo '<div style="margin-top: -1em; padding-left: 20px;">'.$events[$i]->description.'</div>';
if($i < $numevents - 1) {
echo '<hr />';
}
@ -670,4 +639,50 @@ function calendar_print_event_table($event, $starttime, $endtime, &$coursecache,
echo "</tbody>\n</table>\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 .= '<form method="get" action="set.php" style="display: inline;"><span>';
$selector .= '<input type="hidden" name="var" value="setcourse" />';
if(!empty($getvars)) {
$getarray = explode('&amp;', $getvars);
foreach($getarray as $getvar) {
$selector .= '<input type="hidden" name="'.strtok($getvar, '=').'" value="'.strtok('=').'" />';
}
}
$selector .= '<select name="id" onchange="form.submit();">';
$selector .= '<option value="1">'.get_string('fulllistofcourses')."</option>\n";
if($coursesdata !== false) {
foreach($coursesdata as $coursedata) {
$selector .= "\n<option value='$coursedata->id'";
if(is_numeric($SESSION->cal_courses_shown) && $coursedata->id == $SESSION->cal_courses_shown) {
$selector .= ' selected';
}
$selector .= '>'.$coursedata->shortname."</option>\n";
}
}
$selector .= '</select>';
$selector .= '<noscript id="cal_noscript" style="display: inline;"> <input type="submit" value="'.get_string('show').'" /></noscript>';
$selector .= '<script type="text/javascript">'."\n<!--\n".'document.getElementById("cal_noscript").style.display = "none";'."\n<!--\n".'</script>';
$selector .= '</span></form>';
}
return $selector;
}
?>