1 define(function(require) {
7 var $ = require('libs/jquery'),
8 _ = require('libs/underscore'),
9 choiceBase = require('./choiceBase'),
10 ListView = require('./list');
13 var choiceMulti = Object.create(choiceBase);
14 _.extend(choiceMulti, {
16 name: gettext('Multiple Choice'),
17 createListView: function(listNode) {
18 return new ListView(this, listNode, {
19 onItemViewAdded: function(itemView) {
20 var checkbox = new CheckboxView(itemView.node.getAttr('answer') === 'true', function(checked) {
21 itemView.node.document.transaction(function() {
22 itemView.node.getParent('exercise.choice').object.setAnswer(itemView.node, checked);
25 description: gettext('Change answer')
29 itemView.addPrefixView(checkbox);
33 onNodeAttrChange: function(event) {
34 if(this.listView.listNode.sameNode(event.meta.node.parent())) {
35 this.listView.getItemView(event.meta.node).prefixView.dom.attr('checked', event.meta.newVal === 'true');
40 var CheckboxView = function(checked, onValueChange) {
41 this.dom = $('<input type="checkbox">')
42 .attr('checked', checked);
43 this.dom.on('click', function() {
44 onValueChange(this.checked);