diff --git a/main/inc/ajax/skill.ajax.php b/main/inc/ajax/skill.ajax.php
index 57e38d5c12..adc1c2a414 100644
--- a/main/inc/ajax/skill.ajax.php
+++ b/main/inc/ajax/skill.ajax.php
@@ -63,14 +63,18 @@ switch ($action) {
echo json_encode($skill_info);
break;
case 'load_children':
- $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
- $skills = $skill->get_children($id);
+ $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
+ $load_user_data = isset($_REQUEST['load_user_data']) ? $_REQUEST['load_user_data'] : null;
+ $skills = $skill->get_children($id, $load_user_data);
+
$return = array();
foreach($skills as $skill) {
- $return [$skill['data']['id']] = array(
+ if (isset($skill['data']) && !empty($skill['data'])) {
+ $return[$skill['data']['id']] = array(
'id' => $skill['data']['id'],
'name' => $skill['data']['name'],
'passed'=> $skill['data']['passed']);
+ }
}
echo json_encode($return);
break;
diff --git a/main/inc/lib/javascript/skills.js b/main/inc/lib/javascript/skills.js
index 4731208054..a45a182cd4 100644
--- a/main/inc/lib/javascript/skills.js
+++ b/main/inc/lib/javascript/skills.js
@@ -109,7 +109,7 @@
@param string block id i.e "block_1"
* */
- function open_block(id) {
+ function open_block(id, load_user_data) {
console.log("open_block id : " + id);
var numeric_id = id.split('_')[1];
for (var i = 0; i < skills.length; i++) {
@@ -117,14 +117,9 @@
if (jQuery.inArray(skills[i].element, parents) == -1) {
//console.log('deleting this'+ skills[i].element);
jsPlumb.deleteEndpoint(skills[i].endp);
- $("#"+skills[i].element).remove();
- //skills.splice(i,1);
- //console.log('Removing '+skills[i].element);
+ $("#"+skills[i].element).remove();
}
- }
- /*if ($('#'+id).length == 0) {
- $('body').append('
'+id+'
');
- }*/
+ }
//Modifying current block position
pos = $('#'+id).position();
@@ -142,7 +137,11 @@
jsPlumb.animate(parents[0], { left: center_x, top:offset_y }, { duration:duration_value });
top_value = 2*space_between_blocks_y +offset_y ;
- load_children(numeric_id, top_value);
+ load_children(numeric_id, top_value, load_user_data);
+ }
+
+ function open_block_student(id) {
+ open_block(id, 1)
}
/* Loads parent blocks */
@@ -180,11 +179,11 @@
});
}
- function load_children(my_id, top_value) {
+ function load_children(my_id, top_value, load_user_data) {
console.log("load_children call : my_id " + my_id + " top_value:" + top_value);
//Loading children
var ix = 0;
- $.getJSON(url+'&a=load_children&id='+my_id, {},
+ $.getJSON(url+'&a=load_children&load_user_data='+load_user_data+'&id='+my_id, {},
function(json) {
$.each(json,function(i,item) {
left_value = ix*space_between_blocks_x + center_x/2 - block_size / 2;
diff --git a/main/inc/lib/skill.lib.php b/main/inc/lib/skill.lib.php
index c8ca2a2b2c..e5fb983d35 100644
--- a/main/inc/lib/skill.lib.php
+++ b/main/inc/lib/skill.lib.php
@@ -121,6 +121,7 @@ class SkillRelSkill extends Model {
$skills = $this->find('all', array('where'=> array('parent_id = ? '=> $skill_id)));
$skill_obj = new Skill();
$skill_rel_user = new SkillRelUser();
+
if ($load_user_data) {
$passed_skills = $skill_rel_user->get_user_skills($user_id);
$done_skills = array();
@@ -129,13 +130,18 @@ class SkillRelSkill extends Model {
}
}
if (!empty($skills)) {
+
foreach ($skills as &$skill) {
$skill['data'] = $skill_obj->get($skill['skill_id']);
- if (!empty($done_skills)) {
- $skill['data']['passed'] = 0;
- if (in_array($skill['skill_id'], $done_skills)) {
- $skill['data']['passed'] = 1;
- }
+ if (isset($skill['data'] )) {
+ if (!empty($done_skills)) {
+ $skill['data']['passed'] = 0;
+ if (in_array($skill['skill_id'], $done_skills)) {
+ $skill['data']['passed'] = 1;
+ }
+ }
+ } else {
+ $skill = null;
}
}
}
@@ -344,10 +350,14 @@ class Skill extends Model {
return $result;
}
- function get_children($skill_id) {
- $skill_rel_skill = new SkillRelSkill();
- $user_id = api_get_user_id();
- $skills = $skill_rel_skill->get_children($skill_id, true, $user_id);
+ function get_children($skill_id, $load_user_data = false) {
+ $skill_rel_skill = new SkillRelSkill();
+ if ($load_user_data) {
+ $user_id = api_get_user_id();
+ $skills = $skill_rel_skill->get_children($skill_id, true, $user_id);
+ } else {
+ $skills = $skill_rel_skill->get_children($skill_id);
+ }
return $skills;
}
diff --git a/main/template/default/skill/skill_tree.tpl b/main/template/default/skill/skill_tree.tpl
index a6e05ad41b..06020ac284 100644
--- a/main/template/default/skill/skill_tree.tpl
+++ b/main/template/default/skill/skill_tree.tpl
@@ -84,7 +84,7 @@ jsPlumb.bind("ready", function() {
parent_id = $("#parent_id option:selected").attr('value');
//Great stuff
- open_block('block_'+parent_id);
+ open_block('block_'+parent_id, 0);
$("#dialog-form").dialog("close");
}
@@ -136,7 +136,7 @@ jsPlumb.bind("ready", function() {
if (jQuery.inArray(id, parents) == -1) {
parents.push(id);
}
- open_block(id);
+ open_block(id, 0);
}
//Setting class
diff --git a/main/template/default/skill/skill_tree_student.tpl b/main/template/default/skill/skill_tree_student.tpl
index f519766bc3..95b8e150ae 100644
--- a/main/template/default/skill/skill_tree_student.tpl
+++ b/main/template/default/skill/skill_tree_student.tpl
@@ -19,13 +19,6 @@ var block_size = {$skill_visualizer->block_size};
//Setting the parent by default
var parents = ['block_1'];
-/* Clean window block classes*/
-function cleanclass(obj) {
- obj.removeClass('first_window');
- obj.removeClass('second_window');
- obj.removeClass('third_window');
-}
-
jsPlumb.bind("ready", function() {
//Open dialog
@@ -74,7 +67,7 @@ jsPlumb.bind("ready", function() {
if (jQuery.inArray(id, parents) == -1) {
parents.push(id);
}
- open_block(id);
+ open_block_student(id);
}
//Setting class
@@ -99,11 +92,7 @@ jsPlumb.bind("ready", function() {
$(".edit_block").live('click',function() {
var my_id = $(this).attr('id');
my_id = my_id.split('_')[2];
-
- //Cleaning selected
- $("#parent_id option:selected").removeAttr('selected');
- $("#gradebook_id option:selected").removeAttr('selected');
-
+
$.ajax({
url: url+'&a=get_skill_info&id='+my_id,
success: function(json) {
@@ -116,15 +105,10 @@ jsPlumb.bind("ready", function() {
//filling the gradebook_id
$("#gradebook_id").html('');
jQuery.each(skill.gradebooks, function(index, data) {
- $("#gradebook_id").append(''+data.name+'');
- gradebook_id
+ $("#gradebook_id").append(''+data.name+'');
});
},
});
-
-
-
-
$("#dialog-form").dialog("open");
return false;