diff --git a/main/admin/skills_profile.php b/main/admin/skills_profile.php index a6d30a1610..3a1f5e1486 100644 --- a/main/admin/skills_profile.php +++ b/main/admin/skills_profile.php @@ -17,6 +17,7 @@ $this_section = SECTION_PLATFORM_ADMIN; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; + $htmlHeadXtra[] = api_get_jquery_ui_js(); $skill = new Skill(); @@ -33,6 +34,10 @@ $form->addElement('select', 'skills', null, null, array('id'=>'skills')); $form->addElement('style_submit_button', 'submit', get_lang('Search'), 'class="a_button blue "'); +$profiles = $skill_profile->get_all(); + +$tpl->assign('profiles', $profiles); + $total_skills_to_search = array(); @@ -85,36 +90,17 @@ if (!empty($users)) { foreach($user_list as $user_id => $user_data) { $ordered_user_list[$user_data['total_found_skills']][] = $user_data; } - //sort($ordered_user_list); - var_dump($ordered_user_list); - + if (!empty($ordered_user_list)) { + asort($ordered_user_list); + } } //var_dump($user_list); -$tpl->assign('user_list', $user_list); +//$tpl->assign('user_list', $user_list); +$tpl->assign('order_user_list', $ordered_user_list); $tpl->assign('total_search_skills', $count_skills); - -$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null; -$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null; - -switch ($action) { - case 'remove_skill': - $new_skill = array(); - foreach($skills as $skill_id) { - if ($id != $skill_id) { - $new_skill[] = $skill_id; - } - } - $skills = $_SESSION['skills'] = $new_skill; - break; - - case 'save_profile': - - break; -} - if (!empty($skills)) { $counter = 0; foreach($skills as $hidden_skill_id) { @@ -136,6 +122,29 @@ foreach($total_skills_to_search as &$skill_info) { } + +$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null; +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null; + +switch ($action) { + case 'remove_skill': + $new_skill = array(); + foreach($skills as $skill_id) { + if ($id != $skill_id) { + $new_skill[] = $skill_id; + } + } + $skills = $_SESSION['skills'] = $new_skill; + break; + + case 'load_profile': + $skill_profile = new SkillRelProfile(); + $skills = $skill_profile->get_skills_by_profile($id); + + break; +} + + $tpl->assign('skill_list', $skill_list); $tpl->assign('search_skill_list', $skills); diff --git a/main/inc/ajax/skill.ajax.php b/main/inc/ajax/skill.ajax.php index 39d8fa2e30..105f7bb018 100644 --- a/main/inc/ajax/skill.ajax.php +++ b/main/inc/ajax/skill.ajax.php @@ -77,20 +77,13 @@ switch ($action) { $return = array(); foreach($skills as $skill) { - $return [$skill['data']['id']] = array( + $return [$skill['data']['id']] = array ( + 'id' => $skill['data']['id'], 'parent_id' => $skill['data']['parent_id'], - 'name' => $skill['data']['name'], - 'id' => $skill['data']['id']); + 'name' => $skill['data']['name'] + ); } echo json_encode($return); - break; - case 'skill_exists': - $skill_data = $skill->get($_REQUEST['skill_id']); - if (!empty($skill_data)) { - echo 1; - } else { - echo 0; - } break; case 'remove_skill': if (!empty($_REQUEST['skill_id']) && !empty($_REQUEST['gradebook_id'])) { @@ -102,7 +95,26 @@ switch ($action) { } else { echo 0; } - break; + break; + case 'save_profile': + $skill_profile = new SkillProfile(); + $params = $_REQUEST; + $params['skills'] = isset($_SESSION['skills']) ? $_SESSION['skills'] : null; + $skill_data = $skill_profile->save($params); + if (!empty($skill_data)) { + echo 1; + } else { + echo 0; + } + break; + case 'skill_exists': + $skill_data = $skill->get($_REQUEST['skill_id']); + if (!empty($skill_data)) { + echo 1; + } else { + echo 0; + } + break; default: echo ''; } diff --git a/main/inc/lib/skill.lib.php b/main/inc/lib/skill.lib.php index 54f7f7cd4c..54afc250b2 100644 --- a/main/inc/lib/skill.lib.php +++ b/main/inc/lib/skill.lib.php @@ -21,7 +21,34 @@ class SkillProfile extends Model { var $columns = array('id', 'name','description'); public function __construct() { $this->table = Database::get_main_table(TABLE_MAIN_SKILL_PROFILE); + $this->table_rel_profile = Database::get_main_table(TABLE_MAIN_SKILL_REL_PROFILE); } + + public function get_profiles() { + $sql = "SELECT * FROM $this->table p INNER JOIN $this->table_rel_profile sp ON(p.id = sp.profile_id) "; + + $result = Database::query($sql); + $profiles = Database::store_result($result,'ASSOC'); + return $profiles; + } + + public function save($params) { + if (!empty($params)) { + $profile_id = parent::save($params); + if ($profile_id) { + $skill_rel_profile = new SkillRelProfile(); + if (isset($params['skills'])) { + foreach($params['skills'] as $skill_id) { + $attributes = array('skill_id' => $skill_id, 'profile_id'=>$profile_id); + $skill_rel_profile->save($attributes); + } + } + return $profile_id; + } + } + return false; + + } } class SkillRelProfile extends Model { @@ -29,6 +56,17 @@ class SkillRelProfile extends Model { public function __construct() { $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_PROFILE); } + + public function get_skills_by_profile($profile_id) { + $skills = $this->get_all(array('where'=>array('profile_id = ? ' => $profile_id))); + $return_array = array(); + if (!empty($skills)) { + foreach($skills as $skill_data) { + $return_array[] = $skill_data['skill_id']; + } + } + return $return_array; + } } class SkillRelSkill extends Model { @@ -201,13 +239,16 @@ class SkillRelUser extends Model { } public function get_user_by_skills($skill_list) { - $skill_list = array_map('intval', $skill_list); - $skill_list = implode("', '", $skill_list); - - $sql = "SELECT user_id FROM {$this->table} WHERE skill_id IN ('$skill_list') "; - - $result = Database::query($sql); - $users = Database::store_result($result, 'ASSOC'); + $users = array(); + if (!empty($skill_list)) { + $skill_list = array_map('intval', $skill_list); + $skill_list = implode("', '", $skill_list); + + $sql = "SELECT user_id FROM {$this->table} WHERE skill_id IN ('$skill_list') "; + + $result = Database::query($sql); + $users = Database::store_result($result, 'ASSOC'); + } return $users; } diff --git a/main/template/default/skill/profile.tpl b/main/template/default/skill/profile.tpl index 0348e5c67f..70e2202d11 100644 --- a/main/template/default/skill/profile.tpl +++ b/main/template/default/skill/profile.tpl @@ -13,6 +13,70 @@ $(document).ready( function() { filter_selected: true, newel: true }); + + + //Open dialog + $("#dialog-form").dialog({ + autoOpen: false, + modal : true, + width : 550, + height : 350, + }); + + var name = $( "#name" ), + description = $( "#description" ), + allFields = $( [] ).add( name ).add( description ), tips = $(".validateTips"); + + + $("#dialog-form").dialog({ + buttons: { + "Add" : function() { + var bValid = true; + bValid = bValid && checkLength( name, "name", 1, 255 ); + var params = $("#save_profile_form").serialize(); + + $.ajax({ + url: '{$url}?a=save_profile&'+params, + success:function(data) { + + /*jsPlumb.connect({ + source : "block_2", + target : "block_1", + overlays : overlays + });*/ + + /* + calEvent.title = $("#name").val(); + calEvent.start = calEvent.start; + calEvent.end = calEvent.end; + calEvent.allDay = calEvent.allDay; + calEvent.description = $("#content").val(); + calendar.fullCalendar('updateEvent', + calEvent, + true // make the event "stick" + );*/ + + $("#dialog-form").dialog("close"); + } + }); + }, + }, + close: function() { + $("#name").attr('value', ''); + $("#description").attr('value', ''); + } + }); + + $("#add_profile").click(function() { + + $("#name").attr('value', ''); + $("#description").attr('value', ''); + + $("#dialog-form").dialog("open"); + + }); + + }); function check_skills() { @@ -51,11 +115,15 @@ function checkLength( o, n, min, max ) { } else { return true; } -} +} + +