MDL-17816: Changes to the way availability conditions are displayed when viewing...
authorsam_marshall <sam_marshall>
Fri, 17 Apr 2009 11:07:59 +0000 (11:07 +0000)
committersam_marshall <sam_marshall>
Fri, 17 Apr 2009 11:07:59 +0000 (11:07 +0000)
course/lib.php
lang/en_utf8/condition.php

index 7b4a95d5b72e7de561a05c5d41cc31fadfd52e83..7f499b0de0c713985cb7748af0f67b183b524b26 100644 (file)
@@ -1454,6 +1454,27 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
                 }
             }
 
+            // In some cases the activity is visible to user, but it is 
+            // dimmed. This is done if viewhiddenactivities is true and if:
+            // 1. the activity is not visible, or
+            // 2. the activity has dates set which do not include current, or
+            // 3. the activity has any other conditions set (regardless of whether
+            //    current user meets them)
+            $canviewhidden = has_capability(
+                'moodle/course:viewhiddenactivities',
+                get_context_instance(CONTEXT_MODULE, $mod->id));
+            $accessiblebutdim = false;
+            if ($canviewhidden) {
+                $accessiblebutdim = !$mod->visible;
+                if (!empty($CFG->enableavailability)) {
+                    $accessiblebutdim = $accessiblebutdim ||
+                        $mod->availablefrom > time() ||
+                        ($mod->availableuntil && $mod->availableuntil < time()) ||
+                        count($mod->conditionsgrade) > 0 || 
+                        count($mod->conditionscompletion) > 0;
+                }
+            }
+
             echo '<li class="activity '.$mod->modname.'" id="module-'.$modnumber.'">';  // Unique ID
             if ($ismoving) {
                 echo '<a title="'.$strmovefull.'"'.
@@ -1473,12 +1494,12 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
             }
 
             if ($mod->modname == "label") {
-                if (!$mod->visible || !$mod->uservisible) {
+                if ($accessiblebutdim || !$mod->uservisible) {
                     echo '<div class="dimmed_text"><span class="accesshide">'.
                         get_string('hiddenfromstudents').'</span>';
                 }
                 echo format_text($extra, FORMAT_HTML, $labelformatoptions);
-                if (!$mod->visible || !$mod->uservisible) {
+                if ($accessiblebutdim || !$mod->uservisible) {
                     echo "</div>";
                 }
                 if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) {
@@ -1529,7 +1550,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
                 // about visibility, without the actual link
                 if ($mod->uservisible) {
                     // Display normal module link
-                    if ($mod->visible) {
+                    if (!$accessiblebutdim) {
                         $linkcss = '';
                         $accesstext  ='';
                     } else {
@@ -1668,7 +1689,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
             // see the activity itself, or for staff)
             if (!$mod->uservisible) {
                 echo '<div class="availabilityinfo">'.$mod->availableinfo.'</div>';
-            } else if ($isediting && !empty($CFG->enableavailability)) {
+            } else if ($canviewhidden && !empty($CFG->enableavailability)) {
                 $ci = new condition_info($mod);
                 $fullinfo = $ci->get_full_information();
                 if($fullinfo) {
index 4aae29d6f28229ac608cb08505bbe7e60cfde2f3..f10decf23e8a63615edf0a8c54b77625e7178f8c 100644 (file)
@@ -32,6 +32,6 @@ $string['requires_grade_range']='Not available unless you get a particular score
 $string['showavailability']='Before activity is available';
 $string['showavailability_show']='Show activity greyed-out, with restriction information';
 $string['showavailability_hide']='Hide activity entirely';
-$string['userrestriction_visible']='Activity conditionally restricted: &lsquo;$a&rsquo;';
-$string['userrestriction_hidden']='Activity conditionally restricted (completely hidden, no message): &lsquo;$a&rsquo;';
+$string['userrestriction_visible']='Restricted: &lsquo;$a&rsquo;';
+$string['userrestriction_hidden']='Restricted (completely hidden, no message): &lsquo;$a&rsquo;';
 ?>