diff --git a/course/completion.js b/course/completion.js index bca0d813177..459f88920fd 100644 --- a/course/completion.js +++ b/course/completion.js @@ -10,10 +10,84 @@ M.core_completion.init = function(Y) { return; } + var handle_success = function(id, o, args) { + Y.one('#completion_dynamic_change').set('value', 1); + + if (o.responseText != 'OK') { + alert('An error occurred when attempting to save your tick mark.\n\n('+o.responseText+'.)'); //TODO: localize + + } else { + var current = args.state.get('value'); + + if (current == 1) { + args.state.set('value', 0); + args.image.set('src', M.util.image_url('i/completion-manual-y', 'moodle')); + args.image.set('alt', mstr.completion['completion-alt-manual-y']); + args.image.set('title', mstr.completion['completion-title-manual-y']); + } else { + args.state.set('value', 1); + args.image.set('src', M.util.image_url('i/completion-manual-n', 'moodle')); + args.image.set('alt', mstr.completion['completion-alt-manual-n']); + args.image.set('title', mstr.completion['completion-title-manual-n']); + } + } + + args.ajax.remove(); + } + + var handle_failure = function(id, o, args) { + alert('An error occurred when attempting to save your tick mark.\n\n('+o.responseText+'.)'); //TODO: localize + args.ajax.remove(); + } + + var toggle = function(e) { + e.preventDefault(); + + var form = e.target; + var cmid = 0; + var completionstate = 0; + var state = null; + var image = null; + + var inputs = Y.Node.getDOMNode(form).getElementsByTagName('input'); + for (var i=0; i'); + form.append(ajax); + + var cfg = { + method: "POST", + data: 'id='+cmid+'&completionstate='+completionstate+'&fromajax=1&sesskey='+M.cfg.sesskey, + on: { + success: handle_success, + failure: handle_failure + }, + arguments: {state: state, image: image, ajax: ajax} + }; + + Y.use('io', function(Y) { + Y.io(M.cfg.wwwroot+'/course/togglecompletion.php', cfg); + }); + } + // register submit handlers on manual tick completion forms Y.all('form.togglecompletion').each(function(form) { if (!form.hasClass('preventjs')) { - Y.on('submit', M.core_completion.toggle, form); + Y.on('submit', toggle, form); } }); @@ -24,78 +98,4 @@ M.core_completion.init = function(Y) { } } -M.core_completion.toggle = function(e) { - e.preventDefault(); - - var form = e.target; - var cmid = 0; - var completionstate = 0; - var state = null; - var image = null; - - var inputs = Y.Node.getDOMNode(form).getElementsByTagName('input'); - for (var i=0; i'); - form.append(ajax); - - var cfg = { - method: "POST", - data: 'id='+cmid+'&completionstate='+completionstate+'&fromajax=1&sesskey='+M.cfg.sesskey, - on: { - success: M.core_completion.handle_success, - failure: M.core_completion.handle_failure - }, - arguments: {state: state, image: image, ajax: ajax} - }; - - Y.use('io', function(Y) { - Y.io(M.cfg.wwwroot+'/course/togglecompletion.php', cfg); - }); -} - -M.core_completion.handle_success = function(id, o, args) { - Y.one('#completion_dynamic_change').set('value', 1); - - if (o.responseText != 'OK') { - alert('An error occurred when attempting to save your tick mark.\n\n('+o.responseText+'.)'); //TODO: localize - - } else { - var current = args.state.get('value'); - - if (current == 1) { - args.state.set('value', 0); - args.image.set('src', M.util.image_url('i/completion-manual-y', 'moodle')); - args.image.set('alt', mstr.completion['completion-alt-manual-y']); - args.image.set('title', mstr.completion['completion-title-manual-y']); - } else { - args.state.set('value', 1); - args.image.set('src', M.util.image_url('i/completion-manual-n', 'moodle')); - args.image.set('alt', mstr.completion['completion-alt-manual-n']); - args.image.set('title', mstr.completion['completion-title-manual-n']); - } - } - - args.ajax.remove(); -} - -M.core_completion.handle_failure = function(id, o, args) { - alert('An error occurred when attempting to save your tick mark.\n\n('+o.responseText+'.)'); //TODO: localize - args.ajax.remove(); -} -