MDL-45398 Manage availability restrictions: Show/hide not working
authorsam marshall <s.marshall@open.ac.uk>
Fri, 2 May 2014 17:42:59 +0000 (18:42 +0100)
committersam marshall <s.marshall@open.ac.uk>
Wed, 7 May 2014 09:15:27 +0000 (10:15 +0100)
The show/hide icons were not working correctly. In addition, the
report still displayed even when availability feature was turned
off.

As well as fixing them, I added a Behat test to cover this report.

admin/tool/availabilityconditions/index.php
admin/tool/availabilityconditions/settings.php
admin/tool/availabilityconditions/tests/behat/manage_conditions.feature [new file with mode: 0644]

index 4852c4e..485fc23 100644 (file)
@@ -43,7 +43,7 @@ foreach (core_component::get_plugin_list('availability') as $plugin => $plugindi
 core_collator::asort($plugins);
 
 // Do plugin actions.
 core_collator::asort($plugins);
 
 // Do plugin actions.
-$pageurl = new moodle_url('/' . $CFG->admin . '/availabilityconditions.php');
+$pageurl = new moodle_url('/' . $CFG->admin . '/tool/availabilityconditions/');
 if (($plugin = optional_param('plugin', '', PARAM_PLUGIN))) {
     require_sesskey();
     if (!array_key_exists($plugin, $plugins)) {
 if (($plugin = optional_param('plugin', '', PARAM_PLUGIN))) {
     require_sesskey();
     if (!array_key_exists($plugin, $plugins)) {
@@ -103,8 +103,6 @@ foreach ($plugins as $plugin => $name) {
 
     // Make enable control. This is a POST request (using a form control rather
     // than just a link) because it makes a database change.
 
     // Make enable control. This is a POST request (using a form control rather
     // than just a link) because it makes a database change.
-    $targeturl = new moodle_url('availabilityconditions.php', array(
-            'plugin' => $plugin, 'action' => $enabledaction, 'sesskey' => sesskey()));
     $enablecontrol = html_writer::tag('form', html_writer::div(
             html_writer::empty_tag('input', array('type' => 'hidden',
                     'name' => 'sesskey', 'value' => sesskey())) .
     $enablecontrol = html_writer::tag('form', html_writer::div(
             html_writer::empty_tag('input', array('type' => 'hidden',
                     'name' => 'sesskey', 'value' => sesskey())) .
@@ -116,7 +114,7 @@ foreach ($plugins as $plugin => $name) {
                     'src' => $OUTPUT->pix_url('t/' . $enabledaction), 'alt' => $enabledstr,
                     'title' => $enabledstr))
             ), array(
                     'src' => $OUTPUT->pix_url('t/' . $enabledaction), 'alt' => $enabledstr,
                     'title' => $enabledstr))
             ), array(
-            'method' => 'post', 'action' => 'availabilityconditions.php'));
+            'method' => 'post', 'action' => './'));
 
     $table->add_data(array($namespan, $version, $enablecontrol));
 }
 
     $table->add_data(array($namespan, $version, $enablecontrol));
 }
index 95765ec..13c5c65 100644 (file)
@@ -24,7 +24,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
 
 defined('MOODLE_INTERNAL') || die();
 
-if ($hassiteconfig) {
+if ($hassiteconfig && !empty($CFG->enableavailability)) {
     $ADMIN->add('modules', new admin_category('availabilitysettings',
             new lang_string('type_availability_plural', 'plugin')));
     $ADMIN->add('availabilitysettings', new admin_externalpage('manageavailability',
     $ADMIN->add('modules', new admin_category('availabilitysettings',
             new lang_string('type_availability_plural', 'plugin')));
     $ADMIN->add('availabilitysettings', new admin_externalpage('manageavailability',
diff --git a/admin/tool/availabilityconditions/tests/behat/manage_conditions.feature b/admin/tool/availabilityconditions/tests/behat/manage_conditions.feature
new file mode 100644 (file)
index 0000000..3df48ed
--- /dev/null
@@ -0,0 +1,58 @@
+@tool @tool_availabilityconditions
+Feature: Manage availability conditions
+  In order to control availability restrictions
+  As an administrator
+  I need to see the list of restrictions and hide or show them
+
+  @javascript
+  Scenario: Display list of availability conditions
+    # Check the report doesn't show when not enabled.
+    Given I log in as "admin"
+    And I expand "Site administration" node
+    When I expand "Plugins" node
+    Then I should not see "Availability restrictions"
+
+    # Enable it and check I can now see and click on it.
+    And I set the following administration settings values:
+      | Enable conditional access | 1 |
+    And I am on homepage
+    And I navigate to "Manage restrictions" node in "Site administration > Plugins > Availability restrictions"
+
+    # Having clicked on it, I should also see the list of plugins.
+    And I should see "Restriction by date"
+    And I should see "Restriction by grades"
+
+  @javascript
+  Scenario: Hide and show conditions
+    # Get to the right page
+    Given the following "courses" exist:
+      | fullname | shortname | format |
+      | Course 1 | C1        | topics |
+    And I log in as "admin"
+    And I set the following administration settings values:
+      | Enable conditional access | 1 |
+    And I am on homepage
+    When I navigate to "Manage restrictions" node in "Site administration > Plugins > Availability restrictions"
+
+    # Check the icon is there (it should be a Hide icon, meaning is currently visible).
+    Then "input[title=Hide]" "css_element" should exist in the "Restriction by date" "table_row"
+
+    # Click the icon. It should toggle to hidden (title=Show).
+    And I click on "input[title=Hide]" "css_element" in the "Restriction by date" "table_row"
+    And "input[title=Show]" "css_element" should exist in the "Restriction by date" "table_row"
+
+    # Toggle it back to visible (title=Hide).
+    And I click on "input[title=Show]" "css_element" in the "Restriction by date" "table_row"
+    And "input[title=Hide]" "css_element" should exist in the "Restriction by date" "table_row"
+
+    # OK, toggling works. Set the grade one to Hide and we'll go see if it actually worked.
+    And I click on "input[title=Hide]" "css_element" in the "Restriction by grade" "table_row"
+    And I am on homepage
+    And I follow "Course 1"
+    And I turn editing mode on
+    And I add a "Page" to section "1"
+    And I expand all fieldsets
+    And I click on "Add restriction..." "button"
+    And "Add restriction..." "dialogue" should be visible
+    And "Date" "button" should exist in the "Add restriction..." "dialogue"
+    And "Grade" "button" should not exist in the "Add restriction..." "dialogue"