Skills management, fixing chart UI #1791

skala
Julio Montoya 14 years ago
parent f76509d58e
commit 2d96da783b
  1. 3
      main/css/base.css
  2. 5
      main/inc/ajax/skill.ajax.php
  3. 2
      main/inc/lib/javascript/chosen/chosen.css
  4. 78
      main/inc/lib/skill.lib.php
  5. 77
      main/template/default/skill/skill_tree.tpl

@ -3947,7 +3947,8 @@ form div.error input, form div.error textarea {
.edit_block {
z-index: 100;
font-size:14px;
z-index: 200;
}
#language_list {

@ -18,12 +18,11 @@ $skill_rel_skill = new SkillRelSkill();
switch ($action) {
case 'add':
if (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) {
if (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) {
$skill->edit($_REQUEST);
} else {
$skill->add($_REQUEST);
}
}
break;
case 'find_skills':
$tag = Database::escape_string($_REQUEST['tag']);

@ -364,4 +364,4 @@
background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #ffffff 85%,#eeeeee 99%);
padding: 4px 5px 4px 20px;
}
/* @end */
/* @end */

@ -77,6 +77,22 @@ class SkillRelSkill extends Model {
}
return $skills;
}
function update_by_skill($params) {
$result = Database::update($this->table, $params, array('skill_id = ? '=> $params['skill_id']));
if ($result) {
return true;
}
return false;
}
function relation_exists($skill_id, $parent_id) {
$result = $this->find('all', array('where'=>array('skill_id = ? AND parent_id = ?' => array($skill_id, $parent_id))));
if (!empty($result)) {
return true;
}
return false;
}
}
/**
@ -104,7 +120,55 @@ class SkillRelGradebook extends Model {
if (empty($skill_id)) { return array(); }
$result = Database::select('*',$this->table, array('where'=>array('skill_id = ? AND gradebook_id = ? '=>array($skill_id, $gradebook_id))),'first');
return $result;
}
}
public function update_gradebooks_by_skill($skill_id, $gradebook_list) {
$original_gradebook_list = $this->find('all', array('where'=>array('skill_id = ?' => array($skill_id))));
var_dump($original_gradebook_list);
$gradebooks_to_remove = array();
$gradebooks_to_add = array();
if (!empty($original_gradebook_list))
foreach ($original_gradebook_list as $gradebook) {
if (!in_array($gradebook['gradebook_id'], $gradebook_list)) {
$gradebooks_to_remove[] = $gradebook['id'];
}
}
if (!empty($gradebook_list))
foreach($gradebook_list as $gradebook_id) {
if (!in_array($gradebook_id, array_keys($original_gradebook_list))) {
$gradebooks_to_add[] = $gradebook_id;
}
}
if (!empty($gradebooks_to_remove)) {
foreach($gradebooks_to_remove as $id) {
$this->delete($id);
}
}
if (!empty($gradebooks_to_add)) {
foreach($gradebooks_to_add as $gradebook_id) {
$attributes = array('skill_id' => $skill_id, 'gradebook_id' => $gradebook_id);
$this->save($attributes);
}
}
}
function update_by_skill($params) {
$skill_info = $this->exists_gradebook_skill($params['gradebook_id'], $params['skill_id']);
if ($skill_info) {
return;
} else {
$result = $this->save($params);
}
if ($result) {
return true;
}
return false;
}
}
/**
@ -255,6 +319,7 @@ class Skill extends Model {
$skill_rel_gradebook = new SkillRelGradebook();
//Saving name, description
var_dump($params);
$this->update($params);
$skill_id = $params['id'];
@ -266,16 +331,9 @@ class Skill extends Model {
'relation_type' => $params['relation_type'],
//'level' => $params['level'],
);
$skill_rel_skill->update($attributes);
$skill_rel_skill->update_by_skill($attributes);
if (!empty($params['gradebook_id'])) {
foreach ($params['gradebook_id'] as $gradebook_id) {
$attributes = array();
$attributes['gradebook_id'] = $gradebook_id;
$attributes['skill_id'] = $skill_id;
$skill_rel_gradebook->update($attributes);
}
}
$skill_rel_gradebook->update_gradebooks_by_skill($skill_id, $params['gradebook_id']);
}
}

@ -16,7 +16,6 @@ var space_between_blocks_y = {$skill_visualizer->space_between_blocks_y};
var center_x = {$skill_visualizer->center_x};
var block_size = {$skill_visualizer->block_size};
//Setting the parent by default
var parents = ['block_1'];
@ -115,7 +114,8 @@ jsPlumb.bind("ready", function() {
console.log('hidden_parent : ' + hidden_parent);
});
function open_parent(parent_id, id) {
function open_parent(parent_id, id) {
console.log("open_parent call : id " + id + " parent_id:" + parent_id);
var numeric_parent_id = parent_id.split('_')[1];
var numeric_id = id.split('_')[1];
load_parent(numeric_parent_id, numeric_id);
@ -148,26 +148,18 @@ jsPlumb.bind("ready", function() {
} else {
top_value = pos.left;
}
jsPlumb.animate(id, {
left: left_value,
top:top_value
},
{
duration:duration_value
});
jsPlumb.animate(id, { left: left_value, top:top_value }, { duration:duration_value });
//Modifying root block position
pos_parent = $('#'+parents[0]).position();
jsPlumb.animate(parents[0], {
left: center_x, top:offset_y
},
{ duration:duration_value });
jsPlumb.animate(parents[0], { left: center_x, top:offset_y }, { duration:duration_value });
top_value = parents.length * space_between_blocks_y;
top_value = 2*space_between_blocks_y +offset_y ;
load_children(numeric_id, top_value);
}
function load_parent(parent_id, id) {
console.log("load_parent call : id " + id + " parent_id:" + parent_id);
var ix= 0;
$.ajax({
url: url+'&a=load_direct_parents&id='+id,
@ -186,9 +178,7 @@ jsPlumb.bind("ready", function() {
jsPlumb.connect({
source: es, target:es2
});
jsPlumb.animate("block_" + item.id, {
left: left_value, top : top_value
}, { duration : duration_value});
jsPlumb.animate("block_" + item.id, { left: left_value, top : top_value }, { duration : duration_value});
if (item.parent_id) {
console.log('setting hidden_parent '+item.parent_id);
@ -203,13 +193,14 @@ jsPlumb.bind("ready", function() {
});
}
function load_children(my_id, top_value) {
function load_children(my_id, top_value) {
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, {},
function(json) {
$.each(json,function(i,item) {
left_value = ix*space_between_blocks_x + center_x/2 + block_size / 2;
left_value = ix*space_between_blocks_x + center_x/2 - block_size / 2;
//top_value = 300;
//Display::url($skill['name'], '#', array('id'=>'edit_block_'.$block_id, 'class'=>'edit_block'))
item.name = '<a href="#" class="edit_block" id="edit_block_'+item.id+'">'+item.name+'</a>';
@ -235,6 +226,10 @@ jsPlumb.bind("ready", 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) {
@ -245,21 +240,32 @@ jsPlumb.bind("ready", function() {
//filling parent_id
$("#parent_id option[value='"+skill.extra.parent_id+"']").attr('selected', 'selected');
//filling the gradebook_id
jQuery.each(skill.gradebooks, function(index, data) {
jQuery.each(skill.gradebooks, function(index, data) {
$("#gradebook_id option[value='"+data.id+"']").attr('selected', 'selected');
});
},
});
});
$("#gradebook_id").trigger("liszt:updated");
$("#parent_id").trigger("liszt:updated");
$("#dialog-form").dialog("open");
return false;
});
//Filling select
$("#add_item_link").click(function() {
$("#add_item_link").click(function() {
$("#name").attr('value', '');
$("#description").attr('value', '');
$("#parent_id option:selected").removeAttr('selected');
$("#gradebook_id option:selected").removeAttr('selected');
$("#dialog-form").dialog("open");
$("#gradebook_id").addClass('chzn-select');
$("#gradebook_id").chosen();
$("#parent_id").chosen();
});
var name = $( "#name" ),
@ -345,12 +351,12 @@ jsPlumb.bind("ready", function() {
var editEndpoint = {
//connectorStyle:connectorPaintStyle,
connector:[ "Flowchart", { stub:10 } ],
connector:[ "Flowchart", { stub:28 } ],
hoverPaintStyle:connectorHoverStyle,
connectorHoverStyle:connectorHoverStyle,
anchors: ['BottomCenter','TopCenter'],
endpoint:"Rectangle",
paintStyle:{ width:20, height:20, fillStyle:edit_arrow_color },
paintStyle:{ width:10, height:10, fillStyle:edit_arrow_color },
isSource:true,
scope:'blue rectangle',
maxConnections:10,
@ -450,15 +456,7 @@ jsPlumb.bind("ready", function() {
jsPlumb.Defaults.Overlays = [
[ "Arrow", { location:0.9 } ],
[ "Label", {
location:0.1,
label:function(label) {
return label.connection.labelText || "";
},
cssClass:"aLabel",
}]
//[ "Arrow", { location:0.5 } ], if you want to add an arrow in the connection
];
@ -536,7 +534,8 @@ $(document).ready( function() {
jsPlumb.bind("click", function(endpoint) {
if (confirm("Delete connection from " + conn.sourceId + " to " + conn.targetId + "?"))
jsPlumb.detach(conn);
})
});
$(".chzn-select").chosen();
});
;(function() {
@ -609,7 +608,7 @@ function checkLength( o, n, min, max ) {
<label for="name">Parent</label>
</div>
<div class="formw">
<select id="parent_id" name="parent_id" class="chzn-select" />
<select id="parent_id" name="parent_id" />
</select>
</div>
</div>
@ -618,7 +617,7 @@ function checkLength( o, n, min, max ) {
<label for="name">Gradebook</label>
</div>
<div class="formw">
<select id="gradebook_id" name="gradebook_id[]" multiple="multiple" class="chzn-select" />
<select id="gradebook_id" name="gradebook_id[]" multiple="multiple"/>
</select>
<span class="help-block">
Gradebook Description

Loading…
Cancel
Save