diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/model/LessonInfoModel.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/model/LessonInfoModel.java index 7840cf7ce..d49ea6bd3 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/model/LessonInfoModel.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/model/LessonInfoModel.java @@ -34,7 +34,8 @@ public class LessonInfoModel { if (lesson.getCategory().equals(Category.CHALLENGE)) { this.numberHints = (lesson.isAuthorized(webSession, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)) ? lesson.getHintCount(webSession) : 0; this.hasSource = (lesson.isAuthorized(webSession, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)); - this.hasSolution = (lesson.isAuthorized(webSession, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)); //assuming we want this as well + this.hasSolution = (lesson.isAuthorized(webSession, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)); //assuming we want this to fall in line with source and solution + this.hasPlan = (lesson.isAuthorized(webSession, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)); //assuming we want this to fall in line with source and solutionn } } diff --git a/webgoat-container/src/main/webapp/js/goatApp/controller/LessonController.js b/webgoat-container/src/main/webapp/js/goatApp/controller/LessonController.js index 94214a97f..1d14179f5 100644 --- a/webgoat-container/src/main/webapp/js/goatApp/controller/LessonController.js +++ b/webgoat-container/src/main/webapp/js/goatApp/controller/LessonController.js @@ -88,19 +88,18 @@ define(['jquery', this.onContentLoaded = function(loadHelps) { this.lessonInfoModel = new LessonInfoModel(); - this.listenTo(this.lessonInfoModel,'info:loaded',this.onInfoLoaded); //TODO onInfoLoaded function to handle title view and helpview + this.listenTo(this.lessonInfoModel,'info:loaded',this.onInfoLoaded); if (loadHelps) { this.helpControlsView = null; this.lessonView.model = this.lessonContent; this.lessonView.render(); - //load title view (initially hidden) << //TODO: currently handled via menu click but need to be able to handle via routed request + this.planView = new PlanView(); this.solutionView = new SolutionView(); this.sourceView = new SourceView(); this.lessonHintView = new HintView(); this.cookieView = new CookieView(); - // parameter model & view //TODO: instantiate model with values (not sure why was not working before) var paramModel = new ParamModel({}); paramModel.set('screenParam',this.lessonContent.get('screenParam')); @@ -109,7 +108,7 @@ define(['jquery', this.paramView = new ParamView({model:paramModel}); $('.lesson-help').hide(); - } + } this.trigger('menu:reload'); }; diff --git a/webgoat-container/src/main/webapp/js/goatApp/controller/MenuController.js b/webgoat-container/src/main/webapp/js/goatApp/controller/MenuController.js index d9df4e021..933a0a05c 100644 --- a/webgoat-container/src/main/webapp/js/goatApp/controller/MenuController.js +++ b/webgoat-container/src/main/webapp/js/goatApp/controller/MenuController.js @@ -11,15 +11,22 @@ define(['jquery', _.extend(Controller.prototype,Backbone.Events); options = options || {}; this.menuView = options.menuView; + this.titleView = options.titleView; - this.initMenu = function() { - //this.listenTo(this.menuView,'lesson:click',this.renderTitle); - } + // this.initMenu = function() { + // this.listenTo(this.menuView,'lesson:click',this.renderTitle); + // } this.updateMenu = function(){ this.menuView.updateMenu(); + }, + + //TODO: move title rendering into lessonContent/View pipeline once data can support it + this.renderTitle = function(title) { + this.titleView.render(title); } + }; return Controller; diff --git a/webgoat-container/src/main/webapp/js/goatApp/model/LessonInfoModel.js b/webgoat-container/src/main/webapp/js/goatApp/model/LessonInfoModel.js index edbf3daff..83419e336 100644 --- a/webgoat-container/src/main/webapp/js/goatApp/model/LessonInfoModel.js +++ b/webgoat-container/src/main/webapp/js/goatApp/model/LessonInfoModel.js @@ -13,9 +13,8 @@ define(['jquery', }, infoLoaded: function(data) { - console.log (data); this.trigger('info:loaded',this,data); } }); -}); \ No newline at end of file +});6 \ No newline at end of file diff --git a/webgoat-container/src/main/webapp/js/goatApp/view/GoatRouter.js b/webgoat-container/src/main/webapp/js/goatApp/view/GoatRouter.js index c31f35785..9b1b20717 100644 --- a/webgoat-container/src/main/webapp/js/goatApp/view/GoatRouter.js +++ b/webgoat-container/src/main/webapp/js/goatApp/view/GoatRouter.js @@ -33,7 +33,7 @@ define(['jquery', init:function() { goatRouter = new GoatAppRouter(); this.lessonController.start(); - this.menuController.initMenu(); + // this.menuController.initMenu(); goatRouter.on('route:attackRoute', function(scr,menu,stage) { this.lessonController.loadLesson(scr,menu,stage); diff --git a/webgoat-container/src/main/webapp/js/goatApp/view/LessonContentView.js b/webgoat-container/src/main/webapp/js/goatApp/view/LessonContentView.js index 26e3c507d..94d5176bc 100644 --- a/webgoat-container/src/main/webapp/js/goatApp/view/LessonContentView.js +++ b/webgoat-container/src/main/webapp/js/goatApp/view/LessonContentView.js @@ -10,15 +10,18 @@ define(['jquery', JQueryForm) { return Backbone.View.extend({ el:'#lesson-content-wrapper', //TODO << get this fixed up in DOM + initialize: function(options) { options = options || {}; }, + render: function() { this.$el.html(this.model.get('content')); this.makeFormsAjax(); this.ajaxifyAttackHref(); $(window).scrollTop(0); //work-around til we get the scroll down sorted out }, + //TODO: reimplement this in custom fashion maybe? makeFormsAjax: function () { var options = { diff --git a/webgoat-container/src/main/webapp/js/goatApp/view/TitleView.js b/webgoat-container/src/main/webapp/js/goatApp/view/TitleView.js index 5df9353f0..f1698b9ec 100644 --- a/webgoat-container/src/main/webapp/js/goatApp/view/TitleView.js +++ b/webgoat-container/src/main/webapp/js/goatApp/view/TitleView.js @@ -4,6 +4,7 @@ define(['jquery', function($,_,Backbone) { return Backbone.View.extend({ el:'#header #lesson-title-wrapper', + render:function(title) { var lessonTitleEl = $('

',{id:'lesson-title',text:title}); this.$el.html(lessonTitleEl);