Fixing skill popup when loading my skills #1791

skala
Julio Montoya 14 years ago
parent df2a527c51
commit f596eec692
  1. 10
      main/inc/ajax/skill.ajax.php
  2. 21
      main/inc/lib/javascript/skills.js
  3. 28
      main/inc/lib/skill.lib.php
  4. 4
      main/template/default/skill/skill_tree.tpl
  5. 22
      main/template/default/skill/skill_tree_student.tpl

@ -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;

@ -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('<div id="'+id+'" class="open_block window " >'+id+'</div>');
}*/
}
//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;

@ -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;
}

@ -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

@ -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('<span class="label_tag notice">'+data.name+'</div>');
gradebook_id
$("#gradebook_id").append('<span class="label_tag notice">'+data.name+'</div>');
});
},
});
$("#dialog-form").dialog("open");
return false;

Loading…
Cancel
Save