From 402e2dc4ee087f4cd348703135a4d8c03bb27c1a Mon Sep 17 00:00:00 2001 From: moloko Date: Mon, 14 Mar 2016 15:51:32 +0000 Subject: [PATCH] update so that allComponentsComplete no longer uses PLP to determine if it should be checking to see if a component needs to be completed or not (fixes #8). Also implement some changes to make PIP compatible with the new version of Notify (n.b. this is pending a further update to the framework to add in a notify:cancelled event) --- bower.json | 2 +- js/adapt-pageIncompletePrompt.js | 23 +++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/bower.json b/bower.json index 89878bc..5775239 100644 --- a/bower.json +++ b/bower.json @@ -2,7 +2,7 @@ "name": "adapt-pageIncompletePrompt", "repository": "git://github.com/cgkineo/adapt-pageIncompletePrompt", "framework": "^2.0.0", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/cgkineo/adapt-pageIncompletePrompt", "issues": "https://github.com/cgkineo/adapt-pageIncompletePrompt/issues/", "displayName": "Page Incomplete Prompt", diff --git a/js/adapt-pageIncompletePrompt.js b/js/adapt-pageIncompletePrompt.js index 4e191d4..c07a917 100644 --- a/js/adapt-pageIncompletePrompt.js +++ b/js/adapt-pageIncompletePrompt.js @@ -44,6 +44,7 @@ define([ if (!this.inPopup) return; this.inPopup = false; + this.stopListening(Adapt, "notify:cancelled"); this.enableRouterNavigation(true); this.handleRoute = false; this.inPage = false; @@ -55,13 +56,16 @@ define([ onLeaveCancel: function() { if (!this.inPopup) return; + this.inPopup = false; + + this.stopListening(Adapt, "notify:cancelled"); this.routeArguments = undefined; this.enableRouterNavigation(true); this.handleRoute = true; - this.inPopup = false; }, onRouterNavigate: function(routeArguments) { + if(!this.isEnabled() || this.allComponentsComplete()) return; if (routeArguments[0]) { @@ -114,7 +118,7 @@ define([ }; } - this.listenToOnce(Adapt, "notify:closed", this.onLeaveCancel); + this.listenToOnce(Adapt, "notify:cancelled", this.onLeaveCancel); Adapt.trigger("notify:prompt", promptObject); }, @@ -149,15 +153,18 @@ define([ }, allComponentsComplete: function() { - var allComplete = true; - _.each(this.pageComponents, function(component) { - var hasPageProgress = component.get("_pageLevelProgress") && component.get("_pageLevelProgress")._isEnabled; + if(this.pageComponents === null) return true; + + for(var i = 0, count = this.pageComponents.length; i < count; i++) { + var component = this.pageComponents[i]; + var isMandatory = (component.get('_isOptional') === false); var isComplete = component.get("_isComplete"); - if(hasPageProgress && !isComplete) allComplete = false; - }); - return allComplete; + if(isMandatory && !isComplete) return false; + } + + return true; }, enableRouterNavigation: function(value) {