From c7484fcc35944e3bb2a76f2ab25250e4b1e5af99 Mon Sep 17 00:00:00 2001 From: Serge Gauthier Date: Tue, 23 Feb 2016 13:09:23 -0500 Subject: [PATCH] MDL-52754 tool_lp: Dropdown list of scales with single quotes in values --- .../build/grade_user_competency_inline.min.js | 2 +- admin/tool/lp/amd/build/scalevalues.min.js | 1 + .../amd/src/grade_user_competency_inline.js | 96 ++++++++++--------- admin/tool/lp/amd/src/scalevalues.js | 57 +++++++++++ .../external/competency_summary_exporter.php | 6 ++ .../user_competency_summary.mustache | 3 +- ...user_competency_summary_in_course.mustache | 3 +- .../user_competency_summary_in_plan.mustache | 3 +- 8 files changed, 119 insertions(+), 52 deletions(-) create mode 100644 admin/tool/lp/amd/build/scalevalues.min.js create mode 100644 admin/tool/lp/amd/src/scalevalues.js diff --git a/admin/tool/lp/amd/build/grade_user_competency_inline.min.js b/admin/tool/lp/amd/build/grade_user_competency_inline.min.js index 58dd21e425f3d..8f1d7c39ad75d 100644 --- a/admin/tool/lp/amd/build/grade_user_competency_inline.min.js +++ b/admin/tool/lp/amd/build/grade_user_competency_inline.min.js @@ -1 +1 @@ -define(["jquery","core/notification","core/ajax","core/log","tool_lp/grade_dialogue","tool_lp/event_base"],function(a,b,c,d,e,f){var g=function(b,c,d,e,g,h,i,j,k){f.prototype.constructor.apply(this,[]);var l=a(b);if(!l.length)throw new Error("Could not find the trigger");this._scaleConfig=c,this._competencyId=d,this._userId=e,this._planId=g,this._courseId=h,this._chooseStr=i,this._canGrade=j,this._canSuggest=k,this._setUp(),l.click(function(a){a.preventDefault(),this._dialogue.display()}.bind(this)),this._planId?(this._methodName="tool_lp_grade_competency_in_plan",this._args={competencyid:this._competencyId,planid:this._planId}):this._courseId?(this._methodName="tool_lp_grade_competency_in_course",this._args={competencyid:this._competencyId,courseid:this._courseId,userid:this._userId}):(this._methodName="tool_lp_grade_competency",this._args={userid:this._userId,competencyid:this._competencyId})};return g.prototype=Object.create(f.prototype),g.prototype._setUp=function(){var a=[],d=this;a.push({value:"",name:this._chooseStr});for(var f=1;f. + +/** + * Module to get the scale values. + * + * @package tool_lp + * @copyright 2016 Serge Gauthier + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +define(['jquery', 'core/ajax'], function($, ajax) { + var localCache = []; + + return /** @alias module:tool_lp/scalevalues */ { + + /** + * Return a promise object that will be resolved into a string eventually (maybe immediately). + * + * @method get_values + * @param {Number} scaleid The scale id + * @return [] {Promise} + */ + + get_values: function(scaleid) { + + var deferred = $.Deferred(); + + if (!localCache[scaleid]) { + ajax.call([{ + methodname: 'tool_lp_get_scale_values', + args: {scaleid : scaleid}, + done: function(scaleinfo) { + localCache[scaleid] = scaleinfo; + deferred.resolve(scaleinfo); + }, + fail: (deferred.reject) + }]); + } else { + deferred.resolve(localCache[scaleid]); + } + + return deferred.promise(); + } + }; +}); diff --git a/admin/tool/lp/classes/external/competency_summary_exporter.php b/admin/tool/lp/classes/external/competency_summary_exporter.php index eb424576c4ecf..db8d02ff671ed 100644 --- a/admin/tool/lp/classes/external/competency_summary_exporter.php +++ b/admin/tool/lp/classes/external/competency_summary_exporter.php @@ -68,6 +68,9 @@ protected static function define_other_properties() { 'hasrelatedcompetencies' => array( 'type' => PARAM_BOOL ), + 'scaleid' => array( + 'type' => PARAM_INT + ), 'scaleconfiguration' => array( 'type' => PARAM_RAW ), @@ -108,10 +111,13 @@ protected function get_other_values(renderer_base $output) { $exporter = new competency_framework_exporter($this->related['framework']); $result->framework = $exporter->export($output); $scaleconfiguration = $this->related['framework']->get_scaleconfiguration(); + $scaleid = $this->related['framework']->get_scaleid(); if ($competency->get_scaleid()) { $scaleconfiguration = $competency->get_scaleconfiguration(); + $scaleid = $competency->get_scaleid(); } $result->scaleconfiguration = $scaleconfiguration; + $result->scaleid = $scaleid; $level = $competency->get_level(); $taxonomy = $this->related['framework']->get_taxonomy($level); diff --git a/admin/tool/lp/templates/user_competency_summary.mustache b/admin/tool/lp/templates/user_competency_summary.mustache index 248f71afdf7c8..6a9a0cebadc72 100644 --- a/admin/tool/lp/templates/user_competency_summary.mustache +++ b/admin/tool/lp/templates/user_competency_summary.mustache @@ -71,7 +71,6 @@ {{#js}} require(['jquery', 'tool_lp/grade_user_competency_inline', 'tool_lp/user_competency_info', 'tool_lp/user_competency_workflow'], function($, mod, info, UserCompWorkflow) { - var scaleConfig = JSON.parse('{{{competency.scaleconfiguration}}}'); var competencyElement = $('[data-region-id="{{uniqid}}"]'); var infoReloader = new info(competencyElement, '{{competency.competency.id}}', '{{user.id}}'); @@ -81,7 +80,7 @@ ucw.on('status-changed', infoReloader.reload.bind(infoReloader)); ucw.on('error-occured', infoReloader.reload.bind(infoReloader)); - var inlineGrader = new mod('#rate_{{uniqid}}', scaleConfig, '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}', '', '{{#str}}chooserating, tool_lp{{/str}}', {{cangrade}}, {{cansuggest}}); + var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}', '', '{{#str}}chooserating, tool_lp{{/str}}', {{cangrade}}, {{cansuggest}}); inlineGrader.on('competencyupdated', infoReloader.reload.bind(infoReloader)); }); {{/js}} diff --git a/admin/tool/lp/templates/user_competency_summary_in_course.mustache b/admin/tool/lp/templates/user_competency_summary_in_course.mustache index 8e1e3a0b83d3c..a06f9d4f25c62 100644 --- a/admin/tool/lp/templates/user_competency_summary_in_course.mustache +++ b/admin/tool/lp/templates/user_competency_summary_in_course.mustache @@ -89,9 +89,8 @@ {{#js}} require(['jquery', 'tool_lp/grade_user_competency_inline', 'tool_lp/user_competency_info'], function($, mod, info) { - var scaleConfig = JSON.parse('{{{competency.scaleconfiguration}}}'); - var inlineGrader = new mod('#rate_{{uniqid}}', scaleConfig, '{{competency.competency.id}}', '{{user.id}}', '', '{{course.id}}', '{{#str}}chooserating, tool_lp{{/str}}', {{cangrade}}, {{cansuggest}}); + var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '', '{{course.id}}', '{{#str}}chooserating, tool_lp{{/str}}', {{cangrade}}, {{cansuggest}}); var competencyElement = $('[data-region-id="{{uniqid}}"]'); var displayuser = ('{{displayuser}}' == 'true') ? true : false; diff --git a/admin/tool/lp/templates/user_competency_summary_in_plan.mustache b/admin/tool/lp/templates/user_competency_summary_in_plan.mustache index d93ed0bd172a2..bd84ec16cb336 100644 --- a/admin/tool/lp/templates/user_competency_summary_in_plan.mustache +++ b/admin/tool/lp/templates/user_competency_summary_in_plan.mustache @@ -73,7 +73,6 @@ {{#js}} require(['jquery', 'tool_lp/grade_user_competency_inline', 'tool_lp/user_competency_info', 'tool_lp/user_competency_workflow'], function($, mod, info, UserCompWorkflow) { - var scaleConfig = JSON.parse('{{{competency.scaleconfiguration}}}'); var competencyElement = $('[data-region-id="{{uniqid}}"]'); var infoReloader = new info(competencyElement, '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}'); @@ -84,7 +83,7 @@ ucw.on('error-occured', infoReloader.reload.bind(infoReloader)); {{#cangradeorsuggest}} - var inlineGrader = new mod('#rate_{{uniqid}}', scaleConfig, '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}', '', '{{#str}}chooserating, tool_lp{{/str}}', {{cangrade}}, {{cansuggest}}); + var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}', '', '{{#str}}chooserating, tool_lp{{/str}}', {{cangrade}}, {{cansuggest}}); inlineGrader.on('competencyupdated', infoReloader.reload.bind(infoReloader)); {{/cangradeorsuggest}} });