diff --git a/admin/tool/lp/amd/build/competencyactions.min.js b/admin/tool/lp/amd/build/competencyactions.min.js index 143c935e794..993a3ef943b 100644 --- a/admin/tool/lp/amd/build/competencyactions.min.js +++ b/admin/tool/lp/amd/build/competencyactions.min.js @@ -1 +1 @@ -define(["jquery","core/url","core/templates","core/notification","core/str","core/ajax","tool_lp/dragdrop-reorder","tool_lp/tree","tool_lp/dialogue","tool_lp/menubar","tool_lp/competencypicker","tool_lp/competency_outcomes","tool_lp/competencyruleconfig"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n,o,p,q,r,s,t=null,u=null,v=null,w=null,x=function(){var c=a('[data-region="competencyactions"]').data("competency"),f={competencyframeworkid:t.getCompetencyFrameworkId(),pagecontextid:n};null!==c&&(f.parentid=c.id);var g=function(){var c=a.param(f);window.location=b.relativeUrl("/admin/tool/lp/editcompetency.php?"+c)};null!==c&&t.hasRule(c.id)?e.get_strings([{key:"confirm",component:"moodle"},{key:"addingcompetencywillresetparentrule",component:"tool_lp",param:c.shortname},{key:"yes",component:"core"},{key:"no",component:"core"}]).done(function(a){d.confirm(a[0],a[1],a[2],a[3],g)}).fail(d.exception):g()},y=function(){var b=a('[data-region="filtercompetencies"]').data("frameworkid"),c=f.call([{methodname:"core_competency_set_parent_competency",args:{competencyid:u,parentid:v}},{methodname:"tool_lp_data_for_competencies_manage_page",args:{competencyframeworkid:b,search:a('[data-region="filtercompetencies"] input').val()}}]);c[1].done(E).fail(d.exception)},z=function(){if(v="undefined"==typeof v?0:v,v!=u){var a=t.getCompetency(v)||{},b=t.getCompetency(u)||{},c="movecompetencywillresetrules",f=!1;b.parentid!=v&&(a.path&&a.path.indexOf("/"+b.id+"/")>=0&&(c="movecompetencytochildofselfwillresetrules",f=f||t.hasRule(b.id)),f=f||t.hasRule(a.id)||t.hasRule(b.parentid),f?e.get_strings([{key:"confirm",component:"moodle"},{key:c,component:"tool_lp"},{key:"yes",component:"moodle"},{key:"no",component:"moodle"}]).done(function(a){d.confirm(a[0],a[1],a[2],a[3],y)}).fail(d.exception):y())}},A=function(b){var c=a(b.getContent()),d=c.find("[data-enhance=movetree]"),e=new h(d,(!1));e.on("selectionchanged",function(b,c){var d=c.selected;v=a(d).data("id")}),d.show(),c.on("click",'[data-action="move"]',function(){b.close(),z()}),c.on("click",'[data-action="cancel"]',function(){b.close()})},B=function(a,b){var c;for(c=0;cspan",O).on("dragover","li>span",P).on("dragenter","li>span",Q).on("dragleave","li>span",R).on("drop","li>span",S),b.on("selectionchanged",$),p=new m(t,s),p.on("save",L.bind(this))}}}); \ No newline at end of file +define(["jquery","core/url","core/templates","core/notification","core/str","core/ajax","tool_lp/dragdrop-reorder","tool_lp/tree","tool_lp/dialogue","tool_lp/menubar","tool_lp/competencypicker","tool_lp/competency_outcomes","tool_lp/competencyruleconfig"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n,o,p,q,r,s,t=null,u=null,v=null,w=null,x=function(){var c=a('[data-region="competencyactions"]').data("competency"),f={competencyframeworkid:t.getCompetencyFrameworkId(),pagecontextid:n};null!==c&&(f.parentid=c.id);var g=function(){var c=a.param(f);window.location=b.relativeUrl("/admin/tool/lp/editcompetency.php?"+c)};null!==c&&t.hasRule(c.id)?e.get_strings([{key:"confirm",component:"moodle"},{key:"addingcompetencywillresetparentrule",component:"tool_lp",param:c.shortname},{key:"yes",component:"core"},{key:"no",component:"core"}]).done(function(a){d.confirm(a[0],a[1],a[2],a[3],g)}).fail(d.exception):g()},y=function(){var b=a('[data-region="filtercompetencies"]').data("frameworkid"),c=f.call([{methodname:"core_competency_set_parent_competency",args:{competencyid:u,parentid:v}},{methodname:"tool_lp_data_for_competencies_manage_page",args:{competencyframeworkid:b,search:a('[data-region="filtercompetencies"] input').val()}}]);c[1].done(E).fail(d.exception)},z=function(){if(v="undefined"==typeof v?0:v,v!=u){var a=t.getCompetency(v)||{},b=t.getCompetency(u)||{},c="movecompetencywillresetrules",f=!1;b.parentid!=v&&(a.path&&a.path.indexOf("/"+b.id+"/")>=0&&(c="movecompetencytochildofselfwillresetrules",f=f||t.hasRule(b.id)),f=f||t.hasRule(a.id)||t.hasRule(b.parentid),f?e.get_strings([{key:"confirm",component:"moodle"},{key:c,component:"tool_lp"},{key:"yes",component:"moodle"},{key:"no",component:"moodle"}]).done(function(a){d.confirm(a[0],a[1],a[2],a[3],y)}).fail(d.exception):y())}},A=function(b){var c=a(b.getContent()),d=c.find("[data-enhance=movetree]"),e=new h(d,(!1));e.on("selectionchanged",function(b,c){var d=c.selected;v=a(d).data("id")}),d.show(),c.on("click",'[data-action="move"]',function(){b.close(),z()}),c.on("click",'[data-action="cancel"]',function(){b.close()})},B=function(a,b){var c;for(c=0;cspan",O).on("dragover","li>span",P).on("dragenter","li>span",Q).on("dragleave","li>span",R).on("drop","li>span",S),b.on("selectionchanged",$),p=new m(t,s),p.on("save",L.bind(this))}}}); \ No newline at end of file diff --git a/admin/tool/lp/amd/build/competencytree.min.js b/admin/tool/lp/amd/build/competencytree.min.js index 4de971d440e..3c19f042bb1 100644 --- a/admin/tool/lp/amd/build/competencytree.min.js +++ b/admin/tool/lp/amd/build/competencytree.min.js @@ -1 +1 @@ -define(["core/ajax","core/notification","core/templates","tool_lp/tree","tool_lp/competency_outcomes","jquery"],function(a,b,c,d,e,f){var g={},h=0,i="",j="",k="",l=!1,m=function(a,b){var c=0,d=!1;for(a.haschildren=!1,a.children=[],c=0;c0},hasRule:function(a){var b=this.getCompetency(a);return!!b&&(b.ruleoutcome!=e.OUTCOME_NONE&&b.ruletype)},reloadCompetencies:function(){return n("").fail(b.exception)},listCompetencies:function(){return g}}}); \ No newline at end of file +define(["core/ajax","core/notification","core/templates","tool_lp/tree","tool_lp/competency_outcomes","jquery"],function(a,b,c,d,e,f){var g={},h=0,i="",j="",k="",l=!1,m=function(a,b){var c=0,d=!1;for(a.haschildren=!1,a.children=[],c=0;c0&&(k=g),this.on("selectionchanged",o)},on:function(a,b){f(j).on(a,b)},getChildren:function(a){var b=[];return f.each(g,function(c,d){d.parentid==a&&b.push(d)}),b},getCompetencyFrameworkId:function(){return h},getCompetency:function(a){return g[a]},getCompetencyLevel:function(a){var b=this.getCompetency(a),c=b.path.replace(/^\/|\/$/g,"").split("/").length;return c},hasChildren:function(a){return this.getChildren(a).length>0},hasRule:function(a){var b=this.getCompetency(a);return!!b&&(b.ruleoutcome!=e.OUTCOME_NONE&&b.ruletype)},reloadCompetencies:function(){return n("").fail(b.exception)},listCompetencies:function(){return g}}}); \ No newline at end of file diff --git a/admin/tool/lp/amd/src/competencyactions.js b/admin/tool/lp/amd/src/competencyactions.js index 5c433f4ba7f..60c04daa6d5 100644 --- a/admin/tool/lp/amd/src/competencyactions.js +++ b/admin/tool/lp/amd/src/competencyactions.js @@ -672,6 +672,7 @@ define(['jquery', context.showdeleterelatedaction = true; context.showrelatedcompetencies = true; context.showrule = false; + context.pluginbaseurl = url.relativeUrl('/admin/tool/lp'); if (competency.ruleoutcome != Outcomes.NONE) { // Get the outcome and rule name. diff --git a/admin/tool/lp/amd/src/competencytree.js b/admin/tool/lp/amd/src/competencytree.js index f912b5936cd..d56efa7bbc7 100644 --- a/admin/tool/lp/amd/src/competencytree.js +++ b/admin/tool/lp/amd/src/competencytree.js @@ -136,18 +136,22 @@ define(['core/ajax', 'core/notification', 'core/templates', 'tool_lp/tree', 'too /** * Initialise the tree. * - * @param {Number} id The competency id. + * @param {Number} id The competency framework id. * @param {String} shortname The framework shortname * @param {String} search The current search string * @param {String} selector The selector for the tree div * @param {Boolean} canmanage Can manage the competencies + * @param {Number} competencyid */ - init: function(id, shortname, search, selector, canmanage) { + init: function(id, shortname, search, selector, canmanage, competencyid) { competencyFrameworkId = id; competencyFrameworkShortName = shortname; competencyFramworkCanManage = canmanage; treeSelector = selector; loadCompetencies(search).fail(notification.exception); + if (competencyid > 0) { + currentNodeId = competencyid; + } this.on('selectionchanged', rememberCurrent); }, diff --git a/admin/tool/lp/classes/external/competency_summary_exporter.php b/admin/tool/lp/classes/external/competency_summary_exporter.php index af85059422f..4ab1a954c31 100644 --- a/admin/tool/lp/classes/external/competency_summary_exporter.php +++ b/admin/tool/lp/classes/external/competency_summary_exporter.php @@ -27,6 +27,7 @@ defined('MOODLE_INTERNAL') || die(); use context_course; use renderer_base; use stdClass; +use moodle_url; use core_competency\competency_framework; use core_competency\external\competency_exporter; use core_competency\external\competency_framework_exporter; @@ -82,7 +83,10 @@ class competency_summary_exporter extends \core\external\exporter { ), 'comppath' => array( 'type' => competency_path_exporter::read_properties_definition(), - ) + ), + 'pluginbaseurl' => [ + 'type' => PARAM_URL + ] ); } @@ -136,6 +140,7 @@ class competency_summary_exporter extends \core\external\exporter { 'context' => $context ]); $result->comppath = $exporter->export($output); + $result->pluginbaseurl = (new moodle_url('/admin/tool/lp'))->out(true); return (array) $result; } diff --git a/admin/tool/lp/classes/output/manage_competencies_page.php b/admin/tool/lp/classes/output/manage_competencies_page.php index c7785341f3c..07c3bfb2ed8 100644 --- a/admin/tool/lp/classes/output/manage_competencies_page.php +++ b/admin/tool/lp/classes/output/manage_competencies_page.php @@ -69,10 +69,11 @@ class manage_competencies_page implements renderable, templatable { * @param string $search Search string. * @param context $pagecontext The page context. */ - public function __construct($framework, $search, $pagecontext) { + public function __construct($framework, $search, $pagecontext, $competency) { $this->framework = $framework; $this->pagecontext = $pagecontext; $this->search = $search; + $this->competency = $competency; $addpage = new single_button( new moodle_url('/admin/tool/lp/editcompetencyframework.php'), get_string('addnewcompetency', 'tool_lp') @@ -97,6 +98,11 @@ class manage_competencies_page implements renderable, templatable { $data->pagecontextid = $this->pagecontext->id; $data->pluginbaseurl = (new moodle_url('/admin/tool/lp'))->out(true); + $competencyid = 0; + if ($this->competency) { + $data->competencyid = $this->competency->get('id'); + } + $rulesmodules = array(); $rules = competency::get_available_rules(); foreach ($rules as $type => $rulename) { diff --git a/admin/tool/lp/competencies.php b/admin/tool/lp/competencies.php index facae66724f..3543c181b90 100644 --- a/admin/tool/lp/competencies.php +++ b/admin/tool/lp/competencies.php @@ -25,14 +25,23 @@ require_once(__DIR__ . '/../../../config.php'); require_once($CFG->libdir.'/adminlib.php'); -$pagecontextid = required_param('pagecontextid', PARAM_INT); // Reference to the context we came from. $search = optional_param('search', '', PARAM_RAW); -$id = required_param('competencyframeworkid', PARAM_INT); +$competencyid = optional_param('competencyid', 0, PARAM_INT); +$competency = null; +if ($competencyid) { + $competency = \core_competency\api::read_competency($competencyid); + $id = $competency->get('competencyframeworkid'); + $pagecontext = $competency->get_context(); + $pagecontextid = $pagecontext->id; // Reference to the context we came from. +} else { + $id = required_param('competencyframeworkid', PARAM_INT); + $pagecontextid = required_param('pagecontextid', PARAM_INT); // Reference to the context we came from. + $pagecontext = context::instance_by_id($pagecontextid); +} require_login(); \core_competency\api::require_enabled(); -$pagecontext = context::instance_by_id($pagecontextid); $framework = \core_competency\api::read_framework($id); $context = $framework->get_context(); @@ -58,7 +67,7 @@ $PAGE->set_heading($title); $output = $PAGE->get_renderer('tool_lp'); echo $output->header(); -$page = new \tool_lp\output\manage_competencies_page($framework, $search, $pagecontext); +$page = new \tool_lp\output\manage_competencies_page($framework, $search, $pagecontext, $competency); echo $output->render($page); // Log the framework viewed event after rendering the page. diff --git a/admin/tool/lp/templates/competency_path.mustache b/admin/tool/lp/templates/competency_path.mustache index 96afe156dcf..63dfa451d7f 100644 --- a/admin/tool/lp/templates/competency_path.mustache +++ b/admin/tool/lp/templates/competency_path.mustache @@ -59,7 +59,7 @@ {{{framework.name}}} / {{#ancestors}} - {{{name}}} + {{{name}}} {{^last}} / {{/last}} {{/ancestors}} diff --git a/admin/tool/lp/templates/competency_summary.mustache b/admin/tool/lp/templates/competency_summary.mustache index 1ce22b16c64..85acda08503 100644 --- a/admin/tool/lp/templates/competency_summary.mustache +++ b/admin/tool/lp/templates/competency_summary.mustache @@ -50,7 +50,7 @@ }}
{{#framework}}
diff --git a/admin/tool/lp/templates/manage_competencies_page.mustache b/admin/tool/lp/templates/manage_competencies_page.mustache index 9f5c317af0e..efb82823e87 100644 --- a/admin/tool/lp/templates/manage_competencies_page.mustache +++ b/admin/tool/lp/templates/manage_competencies_page.mustache @@ -135,7 +135,8 @@ require(['tool_lp/tree', 'tool_lp/competencytree', 'tool_lp/competencyactions', {{#quote}} {{{framework.shortname}}} {{/quote}}, '{{search}}', '[data-enhance=tree]', - {{canmanage}}); + {{canmanage}}, + {{competencyid}}); actions.init(treeModel, {{pagecontextid}}, '{{{framework.taxonomies}}}', {{{rulesmodules}}});