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; $groupevents = true;
if($vars === NULL) {
switch($type) { switch($type) {
case 'upcoming': case 'upcoming':
$getvars = ''; $getvars = '&from=upcoming';
break; break;
case 'prefs': case 'prefs':
$getvars = '&from=prefs&pref='.$_GET['edit']; $getvars = '&from=prefs&pref='.$_GET['edit'];
break; break;
case 'event': case 'event':
global $day, $mon, $yr;
$getvars = '&from=event&id='.$_GET['id']; $getvars = '&from=event&id='.$_GET['id'];
break; break;
case 'day': case 'day':
global $day, $mon, $yr; $getvars = '&from=day';
$getvars = '&from=day&cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr;
break; break;
case 'course': case 'course':
global $course; $getvars = '&from=course&id='.$_GET['id'];
$getvars = '&from=course&id='.$course->id;
if($course->groupmode == NOGROUPS && $course->groupmodeforce) { if($course->groupmode == NOGROUPS && $course->groupmodeforce) {
$groupevents = false; $groupevents = false;
} }
break; break;
} }
}
else { if(!empty($vars)) {
$getvars = '&'.$vars; $getvars .= '&'.$vars;
} }
$content = '<table class="cal_controls" style="width: 98%;">'; $content = '<table class="cal_controls" style="width: 98%;">';

View file

@ -98,15 +98,9 @@
$defaultcourses = calendar_get_default_courses(); $defaultcourses = calendar_get_default_courses();
calendar_set_filters($courses, $groups, $users, $defaultcourses, $defaultcourses); 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 { 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 // Let's see if we are supposed to provide a referring course link
// but NOT for the "main page" course // but NOT for the "main page" course
@ -165,7 +159,7 @@
print_side_block_start(get_string('monthlyview', 'calendar'), '', 'sideblockmain'); print_side_block_start(get_string('monthlyview', 'calendar'), '', 'sideblockmain');
list($prevmon, $prevyr) = calendar_sub_month($mon, $yr); list($prevmon, $prevyr) = calendar_sub_month($mon, $yr);
list($nextmon, $nextyr) = calendar_add_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 calendar_filter_controls($_GET['view'], $getvars);
echo '<p>'; echo '<p>';
echo calendar_top_controls('display', array('m' => $prevmon, 'y' => $prevyr)); 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'])); 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); $starttime = make_timestamp($y, $m, $d);
$endtime = $starttime + SECS_IN_DAY - 1; $endtime = $starttime + SECS_IN_DAY - 1;
$whereclause = calendar_sql_where($starttime, $endtime, $users, $groups, $courses); $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 // New event button
if(isguest()) { if(isguest()) {
$text = get_string('dayview', 'calendar'); $text = get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars);
} }
else { 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.= '<form style="display: inline;" action="'.CALENDAR_URL.'event.php" method="get">';
$text.= '<input type="hidden" name="action" value="new" />'; $text.= '<input type="hidden" name="action" value="new" />';
$text.= '<input type="hidden" name="cal_m" value="'.$m.'" />'; $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 // New event button
if(isguest()) { if(isguest()) {
$text = get_string('detailedmonthview', 'calendar'); $text = get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars);
} }
else { 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.= '<form style="display: inline;" action="'.CALENDAR_URL.'event.php" method="get">';
$text.= '<input type="hidden" name="action" value="new" />'; $text.= '<input type="hidden" name="action" value="new" />';
$text.= '<input type="hidden" name="cal_m" value="'.$m.'" />'; $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'); 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)); echo calendar_top_controls('month', array('m' => $m, 'y' => $y));
// Start calendar display // Start calendar display
@ -560,7 +529,7 @@ function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $
return; 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) { for($i = 0; $i < $numevents; ++$i) {
echo '<p>'; echo '<p>';
if(!empty($events[$i]->icon)) { 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">'.$events[$i]->name.":</span>\n";
echo '<span class="cal_event_date">'.$events[$i]->time.'</span>'; 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) { if($i < $numevents - 1) {
echo '<hr />'; echo '<hr />';
} }
@ -670,4 +639,50 @@ function calendar_print_event_table($event, $starttime, $endtime, &$coursecache,
echo "</tbody>\n</table>\n"; 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;
}
?> ?>