]> git.mjollnir.org Git - moodle.git/commitdiff
Lots of usability improvements and some bugfixes:
authordefacer <defacer>
Fri, 21 May 2004 10:54:46 +0000 (10:54 +0000)
committerdefacer <defacer>
Fri, 21 May 2004 10:54:46 +0000 (10:54 +0000)
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
calendar/set.php
calendar/view.php

index decd6a19a2ebb23513b38d3b9f28e3f666aab055..e7e61182dc5a4349e37bb43291455d7d499fbc72 100644 (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 = '&amp;from=prefs&amp;pref='.$_GET['edit'];
-            break;
-            case 'event':
-                global $day, $mon, $yr;
-                $getvars = '&amp;from=event&amp;id='.$_GET['id'];
-            break;
-            case 'day':
-                global $day, $mon, $yr;
-                $getvars = '&amp;from=day&amp;cal_d='.$day.'&amp;cal_m='.$mon.'&amp;cal_y='.$yr;
-            break;
-            case 'course':
-                global $course;
-                $getvars = '&amp;from=course&amp;id='.$course->id;
-                if($course->groupmode == NOGROUPS && $course->groupmodeforce) {
-                    $groupevents = false;
-                }
-            break;
-        }
+    switch($type) {
+        case 'upcoming':
+            $getvars = '&amp;from=upcoming';
+        break;
+        case 'prefs':
+            $getvars = '&amp;from=prefs&amp;pref='.$_GET['edit'];
+        break;
+        case 'event':
+            $getvars = '&amp;from=event&amp;id='.$_GET['id'];
+        break;
+        case 'day':
+            $getvars = '&amp;from=day';
+        break;
+        case 'course':
+            $getvars = '&amp;from=course&amp;id='.$_GET['id'];
+            if($course->groupmode == NOGROUPS && $course->groupmodeforce) {
+                $groupevents = false;
+            }
+        break;
     }
-    else {
-        $getvars = '&amp;'.$vars;
+
+    if(!empty($vars)) {
+        $getvars .= '&amp;'.$vars;
     }
 
     $content = '<table class="cal_controls" style="width: 98%;">';
index 842ce7585217e867765acf752f274a5210c6ffed..959a89930b07a13d6970b05b13ba1233050b5ad0 100644 (file)
 //                                                                         //
 /////////////////////////////////////////////////////////////////////////////
 
-       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:
 
-       }
+    }
 ?>
index b2be822af1c0528401237da3f305960c374df41d..dfa37d3f82aa3bfa55ce238edb5d9db9d6040851 100644 (file)
         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
     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;
+}
+
 ?>