diff --git a/admin/static/js/main.js b/admin/static/js/main.js
index 68d25e7..e8b684c 100644
--- a/admin/static/js/main.js
+++ b/admin/static/js/main.js
@@ -267,7 +267,7 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
});
}
}])
- .controller("LessonAdminCtrl", ["$scope", "api", "$routeParams", '$modal', function ($scope, api, $routeParams, $modal) {
+ .controller("LessonAdminCtrl", ["$scope", "api", "$routeParams", "formModalService", function ($scope, api, $routeParams, formModalService) {
$scope.course = api.Model.get({type: 'courses', id: $routeParams.courseId, recurse: true});
var form = {
"form_id": 1,
@@ -291,8 +291,8 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
}
$scope.delete = function (lesson) {
- api.Model.get({type: 'courses', id: $routeParams.courseId}, function (course) {
- api.Model.delete({type: 'lessons', id: lesson.Id}, function () {
+ api.Model.delete({type: 'lessons', id: lesson.Id}, function () {
+ api.Model.get({type: 'courses', id: $routeParams.courseId}, function (course) {
course.lesson_keys.pop(lesson.Id);
$scope.course.lesson_keys.pop(lesson);
api.Model.save({type: 'courses', id: course.Id}, course, function () {
@@ -302,18 +302,10 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
}
$scope.showAddModal = function () {
- var modalInstance = $modal.open({
- templateUrl: 'myModalContent.html',
- controller: ModalInstanceCtrl,
- resolve: {
- form: function () {
- return addForm;
- }
- }
- });
- modalInstance.result.then(function (addForm) {
+ var addForm = $.extend(true, {}, form);
+ formModalService.showFormModal(addForm, function (form) {
lesson = {}
- _.each(addForm.form_fields, function (ele) {
+ _.each(form.form_fields, function (ele) {
lesson[ele.field_title] = ele.field_value;
});
api.Model.save({type: 'lessons'}, lesson, function (data) {
@@ -328,31 +320,21 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
}, function () {
console.log('Modal dismissed at: ' + new Date());
});
-
};
$scope.showEditModal = function (lesson) {
- var editForm = $.extend(true, {}, addForm);
+ var editForm = $.extend(true, {}, form);
editForm["form_name"] = "Edit Lesson";
_.each(editForm.form_fields, function (field) {
field.field_value = lesson[field.field_title];
});
- var modalInstance = $modal.open({
- templateUrl: 'myModalContent.html',
- controller: ModalInstanceCtrl,
- resolve: {
- form: function () {
- return editForm;
- }
- }
- });
- modalInstance.result.then(function (addForm) {
+ formModalService.showFormModal(editForm, function (form) {
lesson_tmp = {}
- _.each(addForm.form_fields, function (ele) {
+ _.each(form.form_fields, function (ele) {
lesson_tmp[ele.field_title] = ele.field_value;
});
api.Model.save({type: 'lessons', id: lesson.Id}, lesson_tmp, function (data) {
//$scope.courses.push(data);
- lesson = _.extend(lesson, lesson_tmp);
+ lesson = _.extend(lesson, data);
$scope.$apply();
})
}, function () {
@@ -410,8 +392,8 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
}
$scope.delete = function (lecture) {
- api.Model.get({type: 'lessons', id: $routeParams.lessonId}, function (lesson) {
- api.Model.delete({type: 'lectures', id: lecture.Id}, function () {
+ api.Model.delete({type: 'lectures', id: lecture.Id}, function () {
+ api.Model.get({type: 'lessons', id: $routeParams.lessonId}, function (lesson) {
lesson.lecture_keys.pop(lecture.Id);
$scope.lesson.lecture_keys.pop(lecture);
api.Model.save({type: 'lessons', id: lesson.Id}, lesson, function () {
@@ -446,7 +428,6 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
}, function () {
console.log('Modal dismissed at: ' + new Date());
});
-
};
$scope.showEditModal = function (lecture) {
@@ -502,8 +483,8 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).success(function (data) {
- lecture.img = data.image_url;
- }).error();
+ lecture.img = data.image_url;
+ }).error();
})
};
@@ -522,71 +503,13 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
};
}])
.controller("QuestionAdminCtrl", ["$scope", "api", "$routeParams", '$modal', '$http', '$sce', '$compile', '$rootScope', "VG_EVENTS", function ($scope, api, $routeParams, $modal, $http, $sce, $compile, $rootScope, VG_EVENTS) {
- var addForm = {
- "form_id": 1,
- "form_name": "Add Question",
- "form_fields": [
- {
- "field_id": 1,
- "field_title": "title",
- "field_type": "textfield",
- "field_value": "",
- "field_required": true
- },
- {
- "field_id": 2,
- "field_title": "description",
- "field_type": "code",
- "field_language": "python",
- "field_value": "",
- "field_required": true
- }
- ]
- }
-
- var ModalInstanceCtrl = function ($scope, $modalInstance, form) {
-
- $scope.form = form;
-
- $scope.ok = function (data) {
- $modalInstance.close($scope.form);
- };
-
- $scope.cancel = function () {
- $modalInstance.dismiss('cancel');
- };
- };
-
- $scope.showAddModal = function () {
- var modalInstance = $modal.open({
- templateUrl: 'myModalContent.html',
- controller: ModalInstanceCtrl,
- resolve: {
- form: function () {
- return addForm;
- }
- }
- });
- modalInstance.result.then(function (addForm) {
- lecture = {}
- _.each(addForm.form_fields, function (ele) {
- lecture[ele.field_title] = ele.field_value;
- });
-// api.Model.save({type: 'lectures'}, lecture, function (data) {
-// api.Model.get({type: 'lessons', id: $routeParams.lessonId}, function (lesson) {
-// lesson.lecture_keys.push(data.Id);
-// api.Model.save({type: 'lessons', id: lesson.Id}, lesson, function () {
-// $scope.lesson.lecture_keys.push(data);
-// });
-// });
-// })
- }, function () {
- console.log('Modal dismissed at: ' + new Date());
- });
-
- };
-
$scope.lecture = api.Model.get({type: 'lectures', id: $routeParams.lectureId, recurse: true}, function (data) {
+// angular.forEach(data.question_keys, function(question){
+// api.Model.get({type: 'questions', id: question.Id, recurse: true}, function (data) {
+// $scope.lecture.question_keys.push(data);
+// console.log($scope.lecture.question_keys);
+// });
+// });
$scope.currentTime = 0;
$scope.totalTime = 0;
$scope.state = null;
@@ -704,7 +627,7 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
quiz: {
data: [
{
- "time": "164",
+ "time": "200",
"question_id": "70d70be689d73e08687496a6d12b2b0d",
"html": "
Select the restaurant(s) that serve Canadian cuisine for a price of $$$.\n\n
\nGeorgie Porgie\n87%\n$$$\nCanadian,Pub Food\n\nSilver Spoon\n97%\n$$$$\nCanadian\n\nCoffee Cafe\n77%\n$$\nCoffee/Tea,Diner\n
\n\n
\n\n\n
\n\n\n
\n\n\n
",
"background": "color",
@@ -725,6 +648,445 @@ angular.module("easylearncode.admin.course", ["easylearncode.admin.core", "com.2
};
$scope.loadLecture();
});
+ var addCodeForm = {
+ "form_id": 1,
+ "form_name": "Add Code",
+ "form_fields": [
+ {
+ "field_id": 1,
+ "field_title": "title",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 2,
+ "field_title": "description",
+ "field_type": "textarea",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 3,
+ "field_title": "content",
+ "field_type": "code",
+ "field_language": "python",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 4,
+ "field_title": "time",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ }
+ ]
+ }
+
+ var addTestForm = {
+ "form_id": 2,
+ "form_name": "Add Test",
+ "form_fields": [
+ {
+ "field_id": 1,
+ "field_title": "title",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 2,
+ "field_title": "description",
+ "field_type": "textarea",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 3,
+ "field_title": "test_script",
+ "field_type": "code",
+ "field_language": "python",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 4,
+ "field_title": "time",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 5,
+ "field_title": "score",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ }
+ ]
+ }
+
+ var addQuizForm = {
+ "form_id": 3,
+ "form_name": "Add Quiz",
+ "form_fields": [
+ {
+ "field_id": 1,
+ "field_title": "title",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 2,
+ "field_title": "question",
+ "field_type": "textarea",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 3,
+ "field_title": "time",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 4,
+ "field_title": "score",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ }
+ ]
+ }
+
+ var addAnswerQuizForm = {
+ "form_id": 4,
+ "form_name": "Add Answer Quiz",
+ "form_fields": [
+ {
+ "field_id": 1,
+ "field_title": "title",
+ "field_type": "textfield",
+ "field_value": "",
+ "field_required": true
+ },
+ {
+ "field_id": 2,
+ "field_title": "is_true",
+ "field_type": "checkbox",
+ "field_value": "True"
+ }
+ ]
+ }
+
+ $scope.showAddAnswerQuizModal = function (quiz) {
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return addAnswerQuizForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ answer = {}
+ _.each(addAnswerQuizForm.form_fields, function (ele) {
+ if (ele.field_title == "is_true") {
+ if (ele.field_value == 1) ele.field_value = true;
+ else ele.field_value = false;
+ }
+ answer[ele.field_title] = ele.field_value;
+ });
+ api.Model.get({type: 'lecture_quizs', id: quiz.Id}, function (quiz_result) {
+ quiz_result.answers.push(answer);
+ api.Model.save({type: 'lecture_quizs', id: quiz_result.Id}, quiz_result, function (data) {
+ quiz.answers.push(answer);
+ });
+ });
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ };
+
+ $scope.deleteAnswerQuiz = function (answer, quiz) {
+ //api.Model.delete({type: 'lecture_quizs', id: quiz.Id}, function () {
+ api.Model.get({type: 'lecture_quizs', id: quiz.Id}, function (quiz_result) {
+ quiz_result.answers.pop(answer);
+ api.Model.save({type: 'lecture_quizs', id: quiz.Id}, quiz_result, function (data) {
+ quiz.answers = _.without(quiz.answers, answer);
+ });
+ });
+ //});
+ };
+
+
+ $scope.showEditAnswerQuizModal = function (answer, quiz) {
+ var editAnswerQuizForm = $.extend(true, {}, addAnswerQuizForm);
+ editAnswerQuizForm["form_name"] = "Edit Answer";
+ _.each(editAnswerQuizForm.form_fields, function (field) {
+ field.field_value = answer[field.field_title];
+ });
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return editAnswerQuizForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ answer_tmp = {}
+ _.each(addForm.form_fields, function (ele) {
+ if (ele.field_title == "time" || ele.field_title == "score")
+ answer_tmp[ele.field_title] = parseFloat(ele.field_value);
+ else answer_tmp[ele.field_title] = ele.field_value;
+ });
+ index = _.indexOf(quiz.answers, answer)
+ quiz.answers[index] = answer_tmp;
+ api.Model.save({type: 'lecture_quizs', id: quiz.Id}, quiz, function (data) {
+ $scope.$apply();
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ }
+
+ var ModalInstanceCtrl = function ($scope, $modalInstance, form) {
+
+ $scope.form = form;
+
+ $scope.ok = function (data) {
+ $modalInstance.close($scope.form);
+ };
+
+ $scope.cancel = function () {
+ $modalInstance.dismiss('cancel');
+ };
+ };
+
+ $scope.showAddQuizModal = function () {
+ $scope.API.pause();
+ addQuizForm.form_fields[2].field_value = $scope.currentTime;
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return addQuizForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ quiz = {}
+ _.each(addQuizForm.form_fields, function (ele) {
+ if (ele.field_title == "time" || ele.field_title == "score") ele.field_value = parseFloat(ele.field_value);
+ quiz[ele.field_title] = ele.field_value;
+ });
+ api.Model.save({type: 'lecture_quizs'}, quiz, function (data) {
+ api.Model.get({type: 'lectures', id: $routeParams.lectureId}, function (lecture) {
+ lecture.quiz_keys.push(data.Id);
+ api.Model.save({type: 'lectures', id: lecture.Id}, lecture, function () {
+ $scope.lecture.quiz_keys.push(data);
+ });
+ });
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ };
+
+ $scope.deleteQuiz = function (quiz) {
+ api.Model.delete({type: 'lecture_quizs', id: quiz.Id}, function () {
+ api.Model.get({type: 'lectures', id: $routeParams.lectureId}, function (lecture) {
+ lecture.quiz_keys.pop(quiz.Id);
+ api.Model.save({type: 'lectures', id: lecture.Id}, lecture, function () {
+ $scope.lecture.quiz_keys = _.without($scope.lecture.quiz_keys, quiz);
+ });
+ });
+ });
+ };
+
+ $scope.showEditQuizModal = function (quiz) {
+ var editQuizForm = $.extend(true, {}, addQuizForm);
+ editQuizForm["form_name"] = "Edit Quiz";
+ _.each(editQuizForm.form_fields, function (field) {
+ field.field_value = quiz[field.field_title];
+ });
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return editQuizForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ quiz_tmp = {}
+ _.each(addForm.form_fields, function (ele) {
+ if (ele.field_title == "time" || ele.field_title == "score")
+ quiz_tmp[ele.field_title] = parseFloat(ele.field_value);
+ else quiz_tmp[ele.field_title] = ele.field_value;
+ });
+ api.Model.save({type: 'tests', id: test.Id}, test_tmp, function (data) {
+ test = _.extend(test, data);
+ $scope.$apply();
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ }
+
+ $scope.showAddTestModal = function () {
+ $scope.API.pause();
+ addTestForm.form_fields[3].field_value = $scope.currentTime;
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return addTestForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ test = {}
+ _.each(addTestForm.form_fields, function (ele) {
+ if (ele.field_title == "time" || ele.field_title == "score") ele.field_value = parseFloat(ele.field_value);
+ test[ele.field_title] = ele.field_value;
+ });
+ api.Model.save({type: 'tests'}, test, function (data) {
+ api.Model.get({type: 'lectures', id: $routeParams.lectureId}, function (lecture) {
+ lecture.test_keys.push(data.Id);
+ api.Model.save({type: 'lectures', id: lecture.Id}, lecture, function () {
+ $scope.lecture.test_keys.push(data);
+ });
+ });
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ };
+
+ $scope.deleteTest = function (test) {
+ api.Model.delete({type: 'tests', id: test.Id}, function () {
+ api.Model.get({type: 'lectures', id: $routeParams.lectureId}, function (lecture) {
+ lecture.test_keys.pop(test.Id);
+ api.Model.save({type: 'lectures', id: lecture.Id}, lecture, function () {
+ $scope.lecture.test_keys = _.without($scope.lecture.test_keys, test);
+ });
+ });
+ });
+ };
+
+ $scope.showEditTestModal = function (test) {
+ var editTestForm = $.extend(true, {}, addTestForm);
+ editTestForm["form_name"] = "Edit Test";
+ _.each(editTestForm.form_fields, function (field) {
+ field.field_value = test[field.field_title];
+ });
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return editTestForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ test_tmp = {}
+ _.each(addForm.form_fields, function (ele) {
+ if (ele.field_title == "time" || ele.field_title == "score")
+ test_tmp[ele.field_title] = parseFloat(ele.field_value);
+ else test_tmp[ele.field_title] = ele.field_value;
+ });
+ api.Model.save({type: 'tests', id: test.Id}, test_tmp, function (data) {
+ test = _.extend(test, data);
+ $scope.$apply();
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ }
+
+ $scope.showAddCodeModal = function () {
+ $scope.API.pause();
+ addCodeForm.form_fields[3].field_value = $scope.currentTime;
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return addCodeForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ code = {}
+ _.each(addForm.form_fields, function (ele) {
+ if (ele.field_title == "time") ele.field_value = parseFloat(ele.field_value);
+ code[ele.field_title] = ele.field_value;
+ });
+ api.Model.save({type: 'codes'}, code, function (data) {
+ api.Model.get({type: 'lectures', id: $routeParams.lectureId}, function (lecture) {
+ lecture.code_keys.push(data.Id);
+ api.Model.save({type: 'lectures', id: lecture.Id}, lecture, function () {
+ $scope.lecture.code_keys.push(data);
+ });
+ });
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ };
+
+ $scope.deleteCode = function (code) {
+ api.Model.delete({type: 'codes', id: code.Id}, function () {
+ api.Model.get({type: 'lectures', id: $routeParams.lectureId}, function (lecture) {
+ lecture.code_keys.pop(code.Id);
+ api.Model.save({type: 'lectures', id: lecture.Id}, lecture, function () {
+ $scope.lecture.code_keys = _.without($scope.lecture.code_keys, code);
+ });
+ });
+ });
+ };
+
+ $scope.showEditCodeModal = function (code) {
+ var editCodeForm = $.extend(true, {}, addCodeForm);
+ editCodeForm["form_name"] = "Edit Code";
+ _.each(editCodeForm.form_fields, function (field) {
+ field.field_value = code[field.field_title];
+ });
+ var modalInstance = $modal.open({
+ templateUrl: 'myModalContent.html',
+ controller: ModalInstanceCtrl,
+ resolve: {
+ form: function () {
+ return editCodeForm;
+ }
+ }
+ });
+ modalInstance.result.then(function (addForm) {
+ code_tmp = {}
+ _.each(addForm.form_fields, function (ele) {
+ if (ele.field_title == "time")
+ code_tmp[ele.field_title] = parseFloat(ele.field_value);
+ else code_tmp[ele.field_title] = ele.field_value;
+ });
+ api.Model.save({type: 'codes', id: code.Id}, code_tmp, function (data) {
+ code = _.extend(code, code_tmp);
+ $scope.$apply();
+ })
+ }, function () {
+ console.log('Modal dismissed at: ' + new Date());
+ });
+ }
}]);
angular.module("easylearncode.admin.quiz", ["easylearncode.admin.core"])
diff --git a/admin/templates/admin/course.html b/admin/templates/admin/course.html
index f59fb5b..9f17c87 100644
--- a/admin/templates/admin/course.html
+++ b/admin/templates/admin/course.html
@@ -238,16 +238,15 @@ Lecture