From f596eec6921b0bcbe7a96df986d5a1bcc0b2e6b2 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Mon, 14 Nov 2011 14:10:45 +0100 Subject: [PATCH] Fixing skill popup when loading my skills #1791 --- main/inc/ajax/skill.ajax.php | 10 +++++-- main/inc/lib/javascript/skills.js | 21 +++++++------- main/inc/lib/skill.lib.php | 28 +++++++++++++------ main/template/default/skill/skill_tree.tpl | 4 +-- .../default/skill/skill_tree_student.tpl | 22 ++------------- 5 files changed, 41 insertions(+), 44 deletions(-) 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;