From 560f96892a50835d21a025d4f17849f5daec1728 Mon Sep 17 00:00:00 2001 From: Jean-Michel Vedrine Date: Sun, 31 Dec 2017 15:20:52 +0100 Subject: Begin to work on a mobile version --- mobile_src/addon.js | 38 ++++++++++++++++++++++ mobile_src/directive.js | 35 ++++++++++++++++++++ mobile_src/handlers.js | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ mobile_src/main.js | 19 +++++++++++ mobile_src/template.html | 8 +++++ 5 files changed, 183 insertions(+) create mode 100644 mobile_src/addon.js create mode 100644 mobile_src/directive.js create mode 100644 mobile_src/handlers.js create mode 100644 mobile_src/main.js create mode 100644 mobile_src/template.html diff --git a/mobile_src/addon.js b/mobile_src/addon.js new file mode 100644 index 0000000..e85412d --- /dev/null +++ b/mobile_src/addon.js @@ -0,0 +1,38 @@ +angular.module('mm.addons.qtype_algebra', ['mm.core']) +.config(["$mmQuestionDelegateProvider", function($mmQuestionDelegateProvider) { + $mmQuestionDelegateProvider.registerHandler('mmaQtypeAlgebra', 'qtype_algebra', '$mmaQtypeAlgebraHandler'); +}]); + +angular.module('mm.addons.qtype_algebra') +.directive('mmaQtypeAlgebra', ["$log", "$mmQuestionHelper", function($log, $mmQuestionHelper) { + $log = $log.getInstance('mmaQtypeAlgebra'); + return { + restrict: 'A', + priority: 100, + templateUrl: 'addons/qtype/algebra/template.html', + link: function(scope) { + $mmQuestionHelper.inputTextDirective(scope, $log); + } + }; +}]); + +angular.module('mm.addons.qtype_algebra') +.factory('$mmaQtypeAlgebraHandler', ["$mmUtil", function($mmUtil) { + var self = {}; + self.isCompleteResponse = function(question, answers) { + return answers['answer'] || answers['answer'] === 0; + }; + self.isEnabled = function() { + return true; + }; + self.isGradableResponse = function(question, answers) { + return self.isCompleteResponse(question, answers); + }; + self.isSameResponse = function(question, prevAnswers, newAnswers) { + return $mmUtil.sameAtKeyMissingIsBlank(prevAnswers, newAnswers, 'answer'); + }; + self.getDirectiveName = function(question) { + return 'mma-qtype-multichoice-set'; + }; + return self; +}]); diff --git a/mobile_src/directive.js b/mobile_src/directive.js new file mode 100644 index 0000000..2281142 --- /dev/null +++ b/mobile_src/directive.js @@ -0,0 +1,35 @@ +// (C) Copyright 2015 Martin Dougiamas +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +angular.module('mm.addons.qtype_algebra') + +/** + * Directive to render a short answer question. + * + * @module mm.addons.qtype_algebra + * @ngdoc directive + * @name mmaQtypeAlgebra + */ +.directive('mmaQtypeAlgebra', function($log, $mmQuestionHelper) { + $log = $log.getInstance('mmaQtypeAlgebra'); + + return { + restrict: 'A', + priority: 100, + templateUrl: 'addons/qtype/algebra/template.html', + link: function(scope) { + $mmQuestionHelper.inputTextDirective(scope, $log); + } + }; +}); diff --git a/mobile_src/handlers.js b/mobile_src/handlers.js new file mode 100644 index 0000000..a898ccb --- /dev/null +++ b/mobile_src/handlers.js @@ -0,0 +1,83 @@ +// (C) Copyright 2015 Martin Dougiamas +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +angular.module('mm.addons.qtype_algebra') + +/** + * Short answer question handlers. + * + * @module mm.addons.qtype_algebra + * @ngdoc service + * @name $mmaQtypeAlgebraHandler + */ +.factory('$mmaQtypeAlgebraHandler', function($mmUtil) { + + var self = {}; + + /** + * Check if a response is complete. + * + * @param {Object} question Question. + * @param {Object} answers Question answers (without prefix). + * @return {Mixed} True if complete, false if not complete, -1 if cannot determine. + */ + self.isCompleteResponse = function(question, answers) { + return answers['answer'] || answers['answer'] === 0; + }; + + /** + * Whether or not the module is enabled for the site. + * + * @return {Boolean} + */ + self.isEnabled = function() { + return true; + }; + + /** + * Check if a student has provided enough of an answer for the question to be graded automatically, + * or whether it must be considered aborted. + * + * @param {Object} question Question. + * @param {Object} answers Question answers (without prefix). + * @return {Mixed} True if gradable, false if not gradable, -1 if cannot determine. + */ + self.isGradableResponse = function(question, answers) { + return self.isCompleteResponse(question, answers); + }; + + /** + * Check if two responses are the same. + * + * @param {Object} question Question. + * @param {Object} prevAnswers Previous answers. + * @param {Object} newAnswers New answers. + * @return {Boolean} True if same, false otherwise. + */ + self.isSameResponse = function(question, prevAnswers, newAnswers) { + return $mmUtil.sameAtKeyMissingIsBlank(prevAnswers, newAnswers, 'answer'); + }; + + /** + * Get the directive. + * + * @param {Object} question The question. + * @return {String} Directive's name. + */ + self.getDirectiveName = function(question) { + return 'mma-qtype-algebra'; + }; + + return self; +}); diff --git a/mobile_src/main.js b/mobile_src/main.js new file mode 100644 index 0000000..29254ed --- /dev/null +++ b/mobile_src/main.js @@ -0,0 +1,19 @@ +// (C) Copyright 2015 Martin Dougiamas +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +angular.module('mm.addons.qtype_algebra', ['mm.core']) + +.config(function($mmQuestionDelegateProvider) { + $mmQuestionDelegateProvider.registerHandler('mmaQtypeAlgebra', 'qtype_algebra', '$mmaQtypeAlgebraHandler'); +}); diff --git a/mobile_src/template.html b/mobile_src/template.html new file mode 100644 index 0000000..01d9544 --- /dev/null +++ b/mobile_src/template.html @@ -0,0 +1,8 @@ +
+
+

{{ question.text }}

+
+ + + +
-- cgit v1.2.3