Mattflaschen has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/72673


Change subject: Add skipIfNeeded public method and use it for shouldSkip.
......................................................................

Add skipIfNeeded public method and use it for shouldSkip.

Also fix misleading var declaration.

Change-Id: I00b62bb5e3e5b5f0e60248b90ff2ef6e055d342f
---
M guiders.js
1 file changed, 39 insertions(+), 12 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/GuidedTour/guiders 
refs/changes/73/72673/1

diff --git a/guiders.js b/guiders.js
index 028bbe3..585f71b 100644
--- a/guiders.js
+++ b/guiders.js
@@ -565,6 +565,40 @@
     guiders._attach(currentGuider);
   };
 
+  // Checks shouldSkip and skips if appropriate.
+  // If it does skip, it shows the resulting guider, unless
+  // it skips past the last one.
+  //
+  // guider parameter is optional and defaults to the guider
+  // corresponding to guiders._currentGuiderID
+  //
+  // Returns true if it skipped, false otherwise
+  guiders.skipIfNeeded = function(guider) {
+    var guiderId, skipped;
+
+    skipped = false;
+
+    if (guider === undefined) {
+      guider = guiders._guiderById(guiders._currentGuiderID);
+    }
+
+    while (guider.shouldSkip && guider.shouldSkip()) {
+      skipped = true;
+      guiderId = guider.next;
+      if (guiderId === undefined) {
+        // Last guider
+        break;
+      }
+      guider = guiders._guiderById(guiderId);
+    }
+
+    // Show the resulting guider if we skipped, unless we skipped past the 
last one
+    if (skipped && guiderId !== undefined) {
+      guiders.show(guiderId);
+    }
+    return skipped;
+  };
+
   guiders.next = function() {
     //var currentGuider = guiders._guiders[guiders._currentGuiderID];
     try {
@@ -583,12 +617,8 @@
     if (nextGuiderId !== null && nextGuiderId !== "") {
       var myGuider = guiders._guiderById(nextGuiderId);
       // If skip function is bound, check to see if we should advance the 
guider
-      if (myGuider.shouldSkip) {
-        if ( myGuider.shouldSkip() ) {
-          guiders._currentGuiderID = myGuider.id;
-          guiders.next();
+      if (guiders.skipIfNeeded(myGuider)) {
           return;
-        }
       }
       var omitHidingOverlay = myGuider.overlay ? true : false;
       guiders.hideAll(omitHidingOverlay, true);
@@ -724,12 +754,14 @@
    * Like show() but skips steps if necessary
    */
   guiders.resume = function(id) {
+    var myGuider;
+
     //if no id, don't resume (user code can call show)
     if ( !id ) {
       return false;
     }
     try {
-      var myGuider = guiders._guiderById(id);
+      myGuider = guiders._guiderById(id);
     } catch (err) {
       if ( guiders.failStep ) {
         guiders.show(guiders.failStep);
@@ -739,13 +771,8 @@
       }
     }
 
-    //skip if should skip
-    if (myGuider.shouldSkip) {
-      if ( myGuider.shouldSkip() ) {
-        guiders._currentGuiderID = myGuider.id;
-        guiders.next();
+    if (guiders.skipIfNeeded(myGuider)) {
         return true;
-      }
     }
     guiders.show(id);
     return true;

-- 
To view, visit https://gerrit.wikimedia.org/r/72673
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I00b62bb5e3e5b5f0e60248b90ff2ef6e055d342f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/GuidedTour/guiders
Gerrit-Branch: master
Gerrit-Owner: Mattflaschen <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to