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