From 86483349663d735a85d09c072ab5197000b45ddb Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Fri, 19 Oct 2012 11:58:25 +0800 Subject: [PATCH] MDL-36131 AJAX: Conditional activities will behave same as in non-ajax mode --- course/lib.php | 12 ++++++++---- course/yui/toolboxes/toolboxes.js | 27 ++++++++++++++++++++------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/course/lib.php b/course/lib.php index ef150d0653d..fcbd1b627e0 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1548,8 +1548,8 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, $linkclasses = ''; $textclasses = ''; if ($accessiblebutdim) { - $linkclasses .= ' dimmed'; - $textclasses .= ' dimmed_text'; + $linkclasses .= ' dimmed conditionalhidden'; + $textclasses .= ' dimmed_text conditionalhidden'; $accesstext = ''. get_string('hiddenfromstudents').': '; } else { @@ -1731,11 +1731,15 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, // see the activity itself, or for staff) if (!$mod->uservisible) { echo '
'.$mod->availableinfo.'
'; - } else if ($canviewhidden && !empty($CFG->enableavailability) && $mod->visible) { + } else if ($canviewhidden && !empty($CFG->enableavailability)) { + $visibilityclass = ''; + if (!$mod->visible) { + $visibilityclass = 'accesshide'; + } $ci = new condition_info($mod); $fullinfo = $ci->get_full_information(); if($fullinfo) { - echo '
'.get_string($mod->showavailability + echo '
'.get_string($mod->showavailability ? 'userrestriction_visible' : 'userrestriction_hidden','condition', $fullinfo).'
'; diff --git a/course/yui/toolboxes/toolboxes.js b/course/yui/toolboxes/toolboxes.js index 0f70c2c870b..db7dae8c9fc 100644 --- a/course/yui/toolboxes/toolboxes.js +++ b/course/yui/toolboxes/toolboxes.js @@ -33,7 +33,11 @@ YUI.add('moodle-course-toolboxes', function(Y) { SECTIONIDPREFIX : 'section-', SECTIONLI : 'li.section', SHOW : 'a.editing_show', - SHOWHIDE : 'a.editing_showhide' + SHOWHIDE : 'a.editing_showhide', + CONDITIONALHIDDEN : 'conditionalhidden', + AVAILABILITYINFODIV : 'div.availabilityinfo', + SHOWCLASS : 'editing_show', + ACCESSHIDECLASS : 'accesshide' }; /** @@ -68,18 +72,14 @@ YUI.add('moodle-course-toolboxes', function(Y) { var status = ''; var value; - if (dimarea.hasClass(toggle_class)) { + if (button.hasClass(CSS.SHOWCLASS)) { status = 'hide'; value = 1; } else { status = 'show'; value = 0; } - - // Change the UI - dimarea.toggleClass(toggle_class); - // We need to toggle dimming on the description too - element.all(CSS.CONTENTAFTERLINK).toggleClass(CSS.DIMMEDTEXT); + // Update button info. var newstring = M.util.get_string(status, 'moodle'); hideicon.setAttrs({ 'alt' : newstring, @@ -88,6 +88,19 @@ YUI.add('moodle-course-toolboxes', function(Y) { button.set('title', newstring); button.set('className', 'editing_'+status); + // If activity is conditionally hidden, then don't toggle. + if (!dimarea.hasClass(CSS.CONDITIONALHIDDEN)) { + // Change the UI. + dimarea.toggleClass(toggle_class); + // We need to toggle dimming on the description too. + element.all(CSS.CONTENTAFTERLINK).toggleClass(CSS.DIMMEDTEXT); + } + // Toggle availablity info for conditional activities. + var availabilityinfo = element.one(CSS.AVAILABILITYINFODIV); + + if (availabilityinfo) { + availabilityinfo.toggleClass(CSS.ACCESSHIDECLASS); + } return value; }, /**