aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Michel Vedrine <vedrine@vedrine.org>2017-12-31 15:20:52 +0100
committerJean-Michel Vedrine <vedrine@vedrine.org>2017-12-31 15:20:52 +0100
commit560f96892a50835d21a025d4f17849f5daec1728 (patch)
treee56222fcbe665dcf83497d7322f840848bf629a2
parentd2d679fbaa6df34681c96398ee60d7d04c11224a (diff)
Begin to work on a mobile version
-rw-r--r--mobile_src/addon.js38
-rw-r--r--mobile_src/directive.js35
-rw-r--r--mobile_src/handlers.js83
-rw-r--r--mobile_src/main.js19
-rw-r--r--mobile_src/template.html8
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>