MDL-68565 tool_usertours: account for optional config in WS response. 3bd9e1e8d264b9b43ea89f105ab4dc8877ffe43e
authorPaul Holden <paulh@moodle.com>
Thu, 30 Apr 2020 16:24:44 +0000 (17:24 +0100)
committerPaul Holden <paulh@moodle.com>
Thu, 28 May 2020 09:51:50 +0000 (10:51 +0100)
admin/tool/usertours/amd/build/usertours.min.js
admin/tool/usertours/amd/build/usertours.min.js.map
admin/tool/usertours/amd/src/usertours.js
admin/tool/usertours/classes/external/tour.php
admin/tool/usertours/upgrade.txt

index 6895e75..6b16a51 100644 (file)
Binary files a/admin/tool/usertours/amd/build/usertours.min.js and b/admin/tool/usertours/amd/build/usertours.min.js differ
index ebfcda0..9f614ad 100644 (file)
Binary files a/admin/tool/usertours/amd/build/usertours.min.js.map and b/admin/tool/usertours/amd/build/usertours.min.js.map differ
index 70bd057..4bb1050 100644 (file)
@@ -69,6 +69,11 @@ function(ajax, BootstrapTour, $, templates, str, log, notification) {
                 templates.render('tool_usertours/tourstep', {})
             )
             .then(function(response, template) {
+                // If we don't have any tour config (because it doesn't need showing for the current user), return early.
+                if (!response.hasOwnProperty('tourconfig')) {
+                    return;
+                }
+
                 return usertours.startBootstrapTour(tourId, template[0], response.tourconfig);
             })
             .always(function() {
index d24c684..c16c5a0 100644 (file)
@@ -70,9 +70,9 @@ class tour extends external_api {
 
         \tool_usertours\event\tour_started::create([
             'contextid' => $context->id,
-            'objectid'  => $tourid,
+            'objectid'  => $tour->get_id(),
             'other'     => [
-                'pageurl' => $pageurl,
+                'pageurl' => $params['pageurl'],
             ],
         ])->trigger();
 
@@ -104,7 +104,7 @@ class tour extends external_api {
             'tourconfig'    => new external_single_structure([
                 'name'      => new external_value(PARAM_RAW, 'Tour Name'),
                 'steps'     => new external_multiple_structure(self::step_structure_returns()),
-            ])
+            ], 'Tour config', VALUE_OPTIONAL)
         ]);
     }
 
index c123bd4..cf5ddba 100644 (file)
@@ -1,4 +1,9 @@
 This files describes API changes in the tool_usertours code.
 
+=== 3.9 ===
+* The `tourconfig` property returned by the `tool_usertours_fetch_and_start_tour`
+  external method is now optional, and will be omitted if the tour shouldn't be
+  shown to the current user
+
 === 3.5 ===
 * Third party library Popper.js was moved from this plugin into core (core/popper)