From b74521e32bfd6be2166e4637a50ddc7bcd47ea7c Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 4 Nov 2011 19:21:54 +0100 Subject: [PATCH] Skil management adding form #1791 --- main/inc/ajax/skill.ajax.php | 20 ++++++++---- main/inc/lib/skill.lib.php | 47 +++++++++++++++++++++++++-- main/inc/lib/skill.visualizer.lib.php | 13 +++----- 3 files changed, 63 insertions(+), 17 deletions(-) diff --git a/main/inc/ajax/skill.ajax.php b/main/inc/ajax/skill.ajax.php index c840b8e8d7..1f56664f6e 100644 --- a/main/inc/ajax/skill.ajax.php +++ b/main/inc/ajax/skill.ajax.php @@ -17,8 +17,13 @@ $skill_gradebook = new SkillRelGradebook(); $skill_rel_skill = new SkillRelSkill(); switch ($action) { - case 'add': - $skill->add($_REQUEST); + case 'add': + if (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) { + $skill->edit($_REQUEST); + } else { + $skill->add($_REQUEST); + } + break; case 'find_skills': $tag = Database::escape_string($_REQUEST['tag']); @@ -52,8 +57,12 @@ switch ($action) { $load_user_data = isset($_REQUEST['load_user_data']) ? $_REQUEST['load_user_data'] : null; $skills = $skill->get_all($load_user_data); echo json_encode($skills); - break; - + break; + case 'get_skill_info': + $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; + $skill_info = $skill->get_skill_info($id); + echo json_encode($skill_info); + break; case 'load_children': $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; $skills = $skill->get_children($id); @@ -85,8 +94,7 @@ switch ($action) { } break; case 'remove_skill': - if (!empty($_REQUEST['skill_id']) && !empty($_REQUEST['gradebook_id'])) { - + if (!empty($_REQUEST['skill_id']) && !empty($_REQUEST['gradebook_id'])) { $skill_item = $skill_gradebook->get_skill_info($_REQUEST['skill_id'], $_REQUEST['gradebook_id']); if (!empty($skill_item)) { $skill_gradebook->delete($skill_item['id']); diff --git a/main/inc/lib/skill.lib.php b/main/inc/lib/skill.lib.php index 9a98bf021f..15b3ae12b3 100644 --- a/main/inc/lib/skill.lib.php +++ b/main/inc/lib/skill.lib.php @@ -86,7 +86,7 @@ class SkillRelGradebook extends Model { var $columns = array('id', 'gradebook_id','skill_id'); public function __construct() { - $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK); + $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK); } public function exists_gradebook_skill($gradebook_id, $skill_id) { @@ -104,8 +104,7 @@ 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; - } - + } } /** @@ -131,6 +130,16 @@ class Skill extends Model { $this->table_gradebook = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); } + function get_skill_info($id) { + $skill_rel_skill = new SkillRelSkill(); + $skill_info = $this->get($id); + if (!empty($skill_info)) { + $skill_info['extra'] = $skill_rel_skill->get_skill_info($id); + $skill_info['gradebooks'] = self::get_gradebooks_by_skill($id); + } + return $skill_info; + } + public function skill_exists($skill_id) { } @@ -237,6 +246,38 @@ class Skill extends Model { } } } + + public function edit($params) { + if (!isset($params['parent_id'])) { + $params['parent_id'] = 1; + } + $skill_rel_skill = new SkillRelSkill(); + $skill_rel_gradebook = new SkillRelGradebook(); + + //Saving name, description + $this->update($params); + $skill_id = $params['id']; + + if ($skill_id) { + //Saving skill_rel_skill (parent_id, relation_type) + $attributes = array( + 'skill_id' => $skill_id, + 'parent_id' => $params['parent_id'], + 'relation_type' => $params['relation_type'], + //'level' => $params['level'], + ); + $skill_rel_skill->update($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); + } + } + } + } /** * Return true if the user has the skill diff --git a/main/inc/lib/skill.visualizer.lib.php b/main/inc/lib/skill.visualizer.lib.php index cd33835b15..a326838e58 100644 --- a/main/inc/lib/skill.visualizer.lib.php +++ b/main/inc/lib/skill.visualizer.lib.php @@ -40,9 +40,9 @@ $this->html .= '
'; $gradebook_string = ''; if (!empty($skill['gradebooks'])) { - foreach($skill['gradebooks'] as $gradebook) { + foreach ($skill['gradebooks'] as $gradebook) { //uncomment this to show the gradebook tags - //$gradebook_string .= Display::span($gradebook['name'], array('class'=>'label_tag notice','style'=>'width:50px')).'
'; + $gradebook_string .= Display::span($gradebook['name'], array('class'=>'label_tag notice','style'=>'width:50px')).'
'; } } $skill['name'] = Display::url($skill['name'], '#', array('id'=>'edit_block_'.$block_id, 'class'=>'edit_block')); @@ -147,10 +147,8 @@ //$skill['description'] = "{$brothers[$skill['parent_id']]} $x - $y"; //$skill['name'] = $skill['name']." | $x = $my_count * 150 + $parent_x - (150* $max/2) - 10*$childs "; $this->add_item($skill, array('x' => $this->offset_x + $x, 'y' => $this->offset_y +$y)); - } - - echo $this->get_html(); - + } + echo $this->get_html(); } /** @@ -158,8 +156,7 @@ */ public function display_js() { echo $this->get_js(); - } - + } private function get_html() { return $this->html;