show lesson solution

This commit is contained in:
lawson89@gmail.com 2014-08-26 08:03:08 -04:00
parent 5f378a7520
commit 37aed7ffe1
3 changed files with 60 additions and 41 deletions

View File

@ -31,10 +31,7 @@
package org.owasp.webgoat.service; package org.owasp.webgoat.service;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import static org.owasp.webgoat.LessonSource.END_SOURCE_SKIP;
import static org.owasp.webgoat.LessonSource.START_SOURCE_SKIP;
import org.owasp.webgoat.lessons.AbstractLesson; import org.owasp.webgoat.lessons.AbstractLesson;
import org.owasp.webgoat.lessons.model.SourceListing;
import org.owasp.webgoat.session.Course; import org.owasp.webgoat.session.Course;
import org.owasp.webgoat.session.WebSession; import org.owasp.webgoat.session.WebSession;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;

View File

@ -76,7 +76,7 @@
<button type="button" class="btn btn-primary btn-sm">Hints</button> <button type="button" class="btn btn-primary btn-sm">Hints</button>
<button type="button" class="btn btn-primary btn-sm">Lesson Plan</button> <button type="button" class="btn btn-primary btn-sm">Lesson Plan</button>
<button type="button" class="btn btn-primary btn-sm" ng-click="showSource('lg')">Java [Source]</button> <button type="button" class="btn btn-primary btn-sm" ng-click="showSource('lg')">Java [Source]</button>
<button type="button" class="btn btn-primary btn-sm">Solution</button> <button type="button" class="btn btn-primary btn-sm" ng-click="showSolution('lg')">Solution</button>
</div><!--toggle navigation end--> </div><!--toggle navigation end-->
</header> </header>
@ -114,20 +114,7 @@
</div> </div>
</div> </div>
</div> </div>
<!--
<div class="row">
<div class="col-md-12">
<h4>Lesson Source Code</h4>
<div class="panel" >
<div class="panel-body">
<pre>{{lessonSource}}</pre>
</div>
</div>
</div>
</div>
-->
</section> </section>
</section> </section>
@ -135,13 +122,7 @@
</section> </section>
<!-- <script src="plugins/waypoints/waypoints.min.js"></script> --> <!-- TODO pull source into project instead of loading from external -->
<!-- <script src="js/application.js"></script> -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> -->
<script src="http://malsup.github.com/jquery.form.js"></script> <script src="http://malsup.github.com/jquery.form.js"></script>
<script> <script>
//Load global functions //Load global functions
@ -231,6 +212,20 @@
<button class="btn btn-primary" ng-click="ok()">Close</button> <button class="btn btn-primary" ng-click="ok()">Close</button>
</div> </div>
</script> </script>
<script type="text/ng-template" id="showSolution.html">
<div class="modal-header">
<button class="btn btn-primary pull-right" ng-click="ok()">Close</button>
<h3 class="modal-title">Lesson Solution</h3>
</div>
<div class="modal-body" ng-include="lessonSolutionUrl">
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok()">Close</button>
</div>
</script>

View File

@ -6,7 +6,7 @@
/** Menu Controller /** Menu Controller
* prepares and updates menu topic items for the view * prepares and updates menu topic items for the view
*/ */
goat.controller('goatLesson', function($scope, $http, $modal, $log) { goat.controller('goatLesson', function($scope, $http, $modal, $log, $templateCache) {
//TODO: implement via separate promise and use config for menu (goat.data.loadMenuData()) //TODO: implement via separate promise and use config for menu (goat.data.loadMenuData())
$http({method: 'GET', url: goatConstants.lessonService}).then( $http({method: 'GET', url: goatConstants.lessonService}).then(
function(menuData) { function(menuData) {
@ -33,15 +33,6 @@ goat.controller('goatLesson', function($scope, $http, $modal, $log) {
} }
} }
); );
/*
console.log("Updating Lesson Source...");
$http.get('service/source.mvc').success(function(data) {
$scope.lessonSource = data.source;
}).error(function(data) {
$scope.lessonSource = data.message;
console.log("LessonSource = '" + data.message + "'");
});
*/
}; };
//TODO: Move show Source into it's own angular controller //TODO: Move show Source into it's own angular controller
/* /*
@ -56,10 +47,9 @@ goat.controller('goatLesson', function($scope, $http, $modal, $log) {
}).error(function(data) { }).error(function(data) {
$scope.lessonSource = data.message; $scope.lessonSource = data.message;
console.log("LessonSource = '" + data.message + "'"); console.log("LessonSource = '" + data.message + "'");
$scope.openSourceModal(size); $scope.openSourceModal(size);
}) });
};
}
$scope.openSourceModal = function(size) { $scope.openSourceModal = function(size) {
var modalInstance = $modal.open({ var modalInstance = $modal.open({
@ -75,7 +65,30 @@ goat.controller('goatLesson', function($scope, $http, $modal, $log) {
modalInstance.result.then(function() { modalInstance.result.then(function() {
$log.info('Modal dismissed at: ' + new Date()); $log.info('Modal dismissed at: ' + new Date());
}); });
} };
/*
* Function to load lesson solution
* @returns {undefined}
*/
$scope.showSolution = function(size) {
$scope.lessonSolutionUrl = "service/solution.mvc";
// clear the template cache otherwise we display stale lesson solutions
$templateCache.remove($scope.lessonSolutionUrl);
var modalInstance = $modal.open({
templateUrl: 'showSolution.html',
controller: showSolutionController,
size: size,
resolve: {
lessonSolutionUrl: function() {
return $scope.lessonSolutionUrl;
}
}
});
modalInstance.result.then(function() {
$log.info('Modal dismissed at: ' + new Date());
});
};
}).animation('.slideDown', function() { }).animation('.slideDown', function() {
var NgHideClassName = 'ng-hide'; var NgHideClassName = 'ng-hide';
@ -90,7 +103,7 @@ goat.controller('goatLesson', function($scope, $http, $modal, $log) {
$(element).hide().slideDown(done); $(element).hide().slideDown(done);
} }
} }
} };
}); });
@ -108,5 +121,19 @@ var showSourceController = function($scope, $modalInstance, lessonSource) {
}; };
}; };
var showSolutionController = function($scope, $modalInstance, lessonSolutionUrl) {
$scope.lessonSolutionUrl = lessonSolutionUrl;
$scope.ok = function() {
$modalInstance.close();
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
};