diff options
-rw-r--r-- | mobile_src/addon.js | 38 | ||||
-rw-r--r-- | mobile_src/directive.js | 35 | ||||
-rw-r--r-- | mobile_src/handlers.js | 83 | ||||
-rw-r--r-- | mobile_src/main.js | 19 | ||||
-rw-r--r-- | mobile_src/template.html | 8 |
5 files changed, 183 insertions, 0 deletions
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 @@ +<section class="list" ng-if="question.text || question.text === ''"> + <div class="item item-text-wrap"> + <p><mm-format-text watch="true" component="{{component}}" component-id="{{componentId}}">{{ question.text }}</mm-format-text></p> + </div> + <ion-input class="item item-input" ng-class='{"mm-question-answer-correct": input.isCorrect === 1, "mm-question-answer-incorrect": input.isCorrect === 0}'> + <input type="text" placeholder="{{ 'mm.question.answer' | translate }}" name="{{input.name}}" value="{{input.value}}" autocorrect="off" ng-disabled="input.readOnly" > + </ion-input> +</section> |