MDL-53186 tool_lp: Send competencies in review from evidence interface

This commit is contained in:
Serge Gauthier 2016-03-15 17:05:43 -04:00 committed by Frederic Massart
parent e821c94799
commit 71cb304ad8
18 changed files with 565 additions and 43 deletions

View file

@ -1 +1 @@
define(["jquery","core/notification","core/ajax","core/templates","core/str","tool_lp/tree","tool_lp/competencypicker"],function(a,b,c,d,e,f,g){var h=function(a,b,c){g.prototype.constructor.apply(this,[1,!1,"self",c]),this._userId=a,this._plans=[],b&&(this._planId=b,this._singlePlan=!0)};return h.prototype=Object.create(g.prototype),h.prototype._plans=null,h.prototype._planId=null,h.prototype._singlePlan=!1,h.prototype._userId=null,h.prototype._afterRender=function(){var b=this;g.prototype._afterRender.apply(b,arguments),b._singlePlan||b._find('[data-action="chooseplan"]').change(function(c){b._planId=a(c.target).val(),b._loadCompetencies().then(b._refresh.bind(b))}.bind(b))},h.prototype._fetchCompetencies=function(a,d){var e=this;return c.call([{methodname:"tool_lp_list_plan_competencies",args:{id:a}}])[0].done(function(a){var b,c,f=[];for(b=0;b<a.length;b++)c=a[b].competency,c.shortname.toLowerCase().indexOf(d.toLowerCase())<0||(c.children=[],c.haschildren=0,f.push(c));e._competencies=f}).fail(b.exception)},h.prototype._getPlan=function(b){var c;return a.each(this._plans,function(a,d){return d.id==b?(c=d,!1):void 0}),c},h.prototype._loadCompetencies=function(){return this._fetchCompetencies(this._planId,this._searchText)},h.prototype._loadPlans=function(){var d,e=this;return e._plans.length>0?a.when():(d=e._singlePlan?c.call([{methodname:"tool_lp_read_plan",args:{id:this._planId}}])[0].then(function(a){return[a]}):c.call([{methodname:"tool_lp_list_user_plans",args:{userid:e._userId}}])[0],d.done(function(a){e._plans=a}).fail(b.exception))},h.prototype._preRender=function(){var b=this;return b._loadPlans().then(function(){return!b._planId&&b._plans.length>0&&(b._planId=b._plans[0].id),b._planId?b._loadCompetencies():(b._plans=[],a.when())}.bind(b))},h.prototype._render=function(){var b=this;return b._preRender().then(function(){b._singlePlan||a.each(b._plans,function(a,c){c.id==b._planId?c.selected=!0:c.selected=!1});var c={competencies:b._competencies,plan:b._getPlan(b._planId),plans:b._plans,search:b._searchText,singlePlan:b._singlePlan};return d.render("tool_lp/competency_picker_user_plans",c)}.bind(b))},h});
define(["jquery","core/notification","core/ajax","core/templates","core/str","tool_lp/tree","tool_lp/competencypicker"],function(a,b,c,d,e,f,g){var h=function(a,b,c){g.prototype.constructor.apply(this,[1,!1,"self",c]),this._userId=a,this._plans=[],b&&(this._planId=b,this._singlePlan=!0)};return h.prototype=Object.create(g.prototype),h.prototype._plans=null,h.prototype._planId=null,h.prototype._singlePlan=!1,h.prototype._userId=null,h.prototype._requestReview=!1,h.prototype._afterRender=function(){var b=this;g.prototype._afterRender.apply(b,arguments),b._singlePlan||b._find('[data-action="chooseplan"]').change(function(c){b._planId=a(c.target).val(),b._loadCompetencies().then(b._refresh.bind(b))}.bind(b)),b._find('[data-action="request-review"]').change(function(c){b._requestReview=a(c.target).is(":checked"),b._refresh.bind(b)}.bind(b))},h.prototype._fetchCompetencies=function(a,d){var e=this;return c.call([{methodname:"tool_lp_list_plan_competencies",args:{id:a}}])[0].done(function(a){var b,c,f=[];for(b=0;b<a.length;b++)c=a[b].competency,c.shortname.toLowerCase().indexOf(d.toLowerCase())<0||(c.children=[],c.haschildren=0,f.push(c));e._competencies=f}).fail(b.exception)},h.prototype._getPlan=function(b){var c;return a.each(this._plans,function(a,d){return d.id==b?(c=d,!1):void 0}),c},h.prototype._loadCompetencies=function(){return this._fetchCompetencies(this._planId,this._searchText)},h.prototype._loadPlans=function(){var d,e=this;return e._plans.length>0?a.when():(d=e._singlePlan?c.call([{methodname:"tool_lp_read_plan",args:{id:this._planId}}])[0].then(function(a){return[a]}):c.call([{methodname:"tool_lp_list_user_plans",args:{userid:e._userId}}])[0],d.done(function(a){e._plans=a}).fail(b.exception))},h.prototype._preRender=function(){var b=this;return b._loadPlans().then(function(){return!b._planId&&b._plans.length>0&&(b._planId=b._plans[0].id),b._planId?b._loadCompetencies():(b._plans=[],a.when())}.bind(b))},h.prototype._render=function(){var b=this;return b._preRender().then(function(){b._singlePlan||a.each(b._plans,function(a,c){c.id==b._planId?c.selected=!0:c.selected=!1});var c={competencies:b._competencies,plan:b._getPlan(b._planId),plans:b._plans,search:b._searchText,singlePlan:b._singlePlan};return d.render("tool_lp/competency_picker_user_plans",c)}.bind(b))},h.prototype._trigger=function(a,b){var c=this;return"save"===a&&(b.requestReview=c._requestReview),g.prototype._trigger.apply(c,arguments)},h});

File diff suppressed because one or more lines are too long

View file

@ -63,6 +63,8 @@ define(['jquery',
Picker.prototype._singlePlan = false;
/** @type {Number} The user the plans belongs to. */
Picker.prototype._userId = null;
/** @type {Boolean} Whether user want to send competencies to review. */
Picker.prototype._requestReview = false;
/**
* Hook to executed after the view is rendered.
@ -81,6 +83,12 @@ define(['jquery',
}.bind(self));
}
// Add listener for checkbox change.
self._find('[data-action="request-review"]').change(function(e) {
self._requestReview = $(e.target).is(":checked");
self._refresh.bind(self);
}.bind(self));
};
/**
@ -236,6 +244,22 @@ define(['jquery',
}.bind(self));
};
/**
* Trigger an event.
*
* @param {String} type The type of event.
* @param {Object} The data to pass to the listeners.
* @method _reset
*/
Picker.prototype._trigger = function(type, args) {
var self = this;
if (type === 'save') {
args.requestReview = self._requestReview;
}
return PickerBase.prototype._trigger.apply(self, arguments);
};
return /** @alias module:tool_lp/competencypicker_user_plans */ Picker;
});

View file

@ -196,8 +196,9 @@ define(['jquery',
*
* @param {Object} evidenceData Evidence data from evidence node.
* @param {Number} competencyIds The competency IDs.
* @param {Boolean} requestReview Send competencies to review.
*/
UserEvidenceActions.prototype._doCreateUserEvidenceCompetency = function(evidenceData, competencyIds) {
UserEvidenceActions.prototype._doCreateUserEvidenceCompetency = function(evidenceData, competencyIds, requestReview) {
var self = this,
calls = [];
@ -209,6 +210,16 @@ define(['jquery',
competencyid: competencyId,
}
});
if (requestReview) {
calls.push({
methodname: 'tool_lp_user_competency_request_review',
args: {
userid: evidenceData.userid,
competencyid: competencyId,
checkstatus: false
}
});
}
});
self._callAndRefresh(calls, evidenceData);
@ -225,7 +236,7 @@ define(['jquery',
picker.on('save', function(e, data) {
var competencyIds = data.competencyIds;
self._doCreateUserEvidenceCompetency(evidenceData, competencyIds);
self._doCreateUserEvidenceCompetency(evidenceData, competencyIds, data.requestReview);
}.bind(self));
picker.display();
@ -285,6 +296,66 @@ define(['jquery',
this.deleteUserEvidenceCompetency(data, competencyId);
};
/**
* Send request review for user evidence competencies and reload the region.
*
* @param {Object} evidenceData Evidence data from evidence node.
*/
UserEvidenceActions.prototype._doReviewUserEvidenceCompetencies = function(evidenceData) {
var self = this,
calls = [{
methodname: 'tool_lp_request_review_of_user_evidence_linked_competencies',
args: { id: evidenceData.id }
}];
self._callAndRefresh(calls, evidenceData);
};
/**
* Send request review for user evidence competencies.
*
* @param {Object} evidenceData Evidence data from evidence node.
*/
UserEvidenceActions.prototype.reviewUserEvidenceCompetencies = function(evidenceData) {
var self = this,
requests;
requests = ajax.call([{
methodname: 'tool_lp_read_user_evidence',
args: { id: evidenceData.id }
}]);
requests[0].done(function(evidence) {
str.get_strings([
{ key: 'confirm', component: 'moodle' },
{ key: 'sendallcompetenciestoreview', component: 'tool_lp', param: evidence.name },
{ key: 'confirm', component: 'moodle' },
{ key: 'cancel', component: 'moodle' }
]).done(function (strings) {
notification.confirm(
strings[0], // Confirm.
strings[1], // Send all competencies in review for X?
strings[2], // Confirm.
strings[3], // Cancel.
function() {
self._doReviewUserEvidenceCompetencies(evidenceData);
}.bind(self)
);
}).fail(notification.exception);
}).fail(notification.exception);
};
/**
* Send request review for user evidence competencies handler.
*
* @param {Event} e The event.
*/
UserEvidenceActions.prototype._reviewUserEvidenceCompetenciesHandler = function(e) {
e.preventDefault();
var data = this._findEvidenceData($(e.target));
this.reviewUserEvidenceCompetencies(data);
};
/**
* Find the evidence data from the evidence node.
*
@ -317,6 +388,7 @@ define(['jquery',
Menubar.enhance(selector, {
'[data-action="user-evidence-delete"]': self._deleteEvidenceHandler.bind(self),
'[data-action="link-competency"]': self._createUserEvidenceCompetencyHandler.bind(self),
'[data-action="send-competencies-review"]': self._reviewUserEvidenceCompetenciesHandler.bind(self),
});
};
@ -333,6 +405,7 @@ define(['jquery',
wrapper.find('[data-action="user-evidence-delete"]').click(self._deleteEvidenceHandler.bind(self));
wrapper.find('[data-action="link-competency"]').click(self._createUserEvidenceCompetencyHandler.bind(self));
wrapper.find('[data-action="delete-competency-link"]').click(self._deleteUserEvidenceCompetencyHandler.bind(self));
wrapper.find('[data-action="send-competencies-review"]').click(self._reviewUserEvidenceCompetenciesHandler.bind(self));
};
return /** @alias module:tool_lp/user_evidence_actions */ UserEvidenceActions;