Fix select skills when create/edit gradebooks. Conflict with fcbkcomplete

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent fc843a5cc1
commit f953ab299f
  1. 58
      main/gradebook/gradebook_add_cat.php
  2. 58
      main/gradebook/gradebook_edit_cat.php
  3. 2
      main/gradebook/lib/be/category.class.php
  4. 54
      main/gradebook/lib/fe/catform.class.php
  5. 20
      main/inc/ajax/skill.ajax.php
  6. 51
      main/inc/lib/gradebook.lib.php

@ -17,64 +17,6 @@ GradebookUtils::block_students();
$edit_cat = isset($_REQUEST['editcat']) ? intval($_REQUEST['editcat']) : '';
$htmlHeadXtra[] = '<script>
$(document).ready(function () {
$("#skills").fcbkcomplete({
json_url: "'.api_get_path(WEB_AJAX_PATH).'skill.ajax.php?a=find_skills",
cache: false,
filter_case: false,
filter_hide: true,
complete_text:"'.get_lang('StartToType').'",
firstselected: true,
//onremove: "testme",
onselect:"check_skills",
filter_selected: true,
newel: true
});
$(".closebutton").click(function() {
var skill_id = ($(this).attr("id")).split("_")[1];
if (skill_id) {
$.ajax({
url: "'.api_get_path(WEB_AJAX_PATH).'skill.ajax.php?a=remove_skill",
data: "gradebook_id=' . $edit_cat . '&skill_id="+skill_id,
success: function(return_value) {
if (return_value == 1 ) {
$("#skill_"+skill_id).remove();
}
}
});
}
});
});
function check_skills() {
// selecting only selected users
$("#skills option:selected").each(function() {
var skill_id = $(this).val();
if (skill_id != "" ) {
$.ajax({
url: "'.api_get_path(WEB_AJAX_PATH).'skill.ajax.php?a=skill_exists",
data: "skill_id="+skill_id,
success: function(return_value) {
if (return_value == 0 ) {
alert("'.get_lang('SkillDoesNotExist').'");
//Deleting select option tag
$("#skills option[value="+skill_id+"]").remove();
//Deleting holder
$(".holder li").each(function () {
if ($(this).attr("rel") == skill_id) {
$(this).remove();
}
});
}
}
});
}
});
}
</script>';
$get_select_cat = intval($_GET['selectcat']);
$catadd = new Category();

@ -12,64 +12,6 @@ GradebookUtils::block_students();
$edit_cat = isset($_REQUEST['editcat']) ? intval($_REQUEST['editcat']) : '';
$htmlHeadXtra[] = '<script>
$(document).ready(function() {
$("#skills").fcbkcomplete({
json_url: "'.api_get_path(WEB_AJAX_PATH).'skill.ajax.php?a=find_skills",
cache: false,
filter_case: false,
filter_hide: true,
complete_text:"'.get_lang('StartToType').'",
firstselected: true,
//onremove: "testme",
onselect:"check_skills",
filter_selected: true,
newel: true
});
$(".closebutton").click(function() {
var skill_id = ($(this).attr("id")).split("_")[1];
if (skill_id) {
$.ajax({
url: "'.api_get_path(WEB_AJAX_PATH).'skill.ajax.php?a=remove_skill",
data: "gradebook_id='.$edit_cat.'&skill_id="+skill_id,
success: function(return_value) {
if (return_value == 1 ) {
$("#skill_"+skill_id).remove();
}
}
});
}
});
});
function check_skills() {
//selecting only selected users
$("#skills option:selected").each(function() {
var skill_id = $(this).val();
if (skill_id != "" ) {
$.ajax({
url: "'.api_get_path(WEB_AJAX_PATH).'skill.ajax.php?a=skill_exists",
data: "skill_id="+skill_id,
success: function(return_value) {
if (return_value == 0 ) {
alert("'.get_lang('SkillDoesNotExist').'");
//Deleting select option tag
$("#skills option[value="+skill_id+"]").remove();
//Deleting holder
$(".holder li").each(function () {
if ($(this).attr("rel") == skill_id) {
$(this).remove();
}
});
}
}
});
}
});
}
</script>';
$catedit = Category::load($edit_cat);
$form = new CatForm(
CatForm::TYPE_EDIT,

@ -687,7 +687,7 @@ class Category implements GradebookItem
$gradebook->update_skills_to_gradebook(
$this->id,
$this->get_skills(false),
false
true
);
}

@ -227,51 +227,33 @@ class CatForm extends FormValidator
);
$this->addRule('weight', get_lang('ThisFieldIsRequired'), 'required');
$skillsDefaults = [];
if (api_is_platform_admin() || api_is_drh()) {
if (api_get_setting('allow_skills_tool') == 'true') {
// The magic should be here
$skills = $this->category_object->get_skills();
$skillToSelect = array();
foreach ($skills as $skill) {
$skillToSelect[$skill['id']] = $skill['name'];
}
$this->addElement(
'select',
$skillSelect = $this->addElement(
'select_ajax',
'skills',
array(
get_lang('Skills'),
get_lang('SkillsAchievedWhenAchievingThisGradebook')
),
$skillToSelect,
array('id' => 'skills', 'multiple' => 'multiple')
null,
[
'id' => 'skills',
'multiple' => 'multiple',
'url' => api_get_path(WEB_AJAX_PATH) . 'skill.ajax.php?a=search_skills'
]
);
$content = '';
if (!empty($skills)) {
foreach ($skills as $skill) {
$content .= Display::tag(
'li',
$skill['name'] . '<a id="deleteskill_' . $skill['id'] . '" class="closebutton" href="#"></a>',
array(
'id' => 'skill_' . $skill['id'],
'class' => 'bit-box'
)
);
}
}
// The magic should be here
$skills = $this->category_object->get_skills();
$this->addElement(
'label',
null,
Display::tag(
'ul',
$content,
array('class' => 'holder holder_simple')
)
);
foreach ($skills as $skill) {
$skillsDefaults[] = $skill['id'];
$skillSelect->addOption($skill['name'], $skill['id']);
}
}
}
@ -399,7 +381,7 @@ class CatForm extends FormValidator
if (isset($setting['gradebook']) && $setting['gradebook'] == 'false') {
$visibility_default = 0;
}
$this->setDefaults(array('visible' => $visibility_default));
$this->setDefaults(array('visible' => $visibility_default, 'skills' => $skillsDefaults));
}
/**

@ -346,6 +346,26 @@ switch ($action) {
echo 0;
}
break;
case 'search_skills':
$skills = $skill->find(
'all',
[
'where' => ['name LIKE %?% ' => $_REQUEST['q']]
]
);
$returnSkills = [];
foreach ($skills as $skill) {
$returnSkills[] = [
'id' => $skill['id'],
'text' => $skill['name']
];
}
echo json_encode([
'items' => $returnSkills
]);
break;
default:
echo '';
}

@ -106,22 +106,23 @@ class Gradebook extends Model
$skill_list,
$deleteSkillNotInList = true
) {
if (!empty($skill_list)) {
$skill_gradebook = new SkillRelGradebook();
$skill_gradebooks_source = $skill_gradebook->get_all(
array('where' => array('gradebook_id = ?' => $gradebook_id))
);
$clean_gradebook = array();
//Cleaning skills
$skill_list = array_map('intval', $skill_list);
$skill_list = array_filter($skill_list);
$skill_gradebook = new SkillRelGradebook();
$skill_gradebooks_source = $skill_gradebook->get_all(
array('where' => array('gradebook_id = ?' => $gradebook_id))
);
$clean_gradebook = array();
if (!empty($skill_gradebooks_source)) {
foreach($skill_gradebooks_source as $source) {
$clean_gradebook[]= $source['skill_id'];
}
if (!empty($skill_gradebooks_source)) {
foreach($skill_gradebooks_source as $source) {
$clean_gradebook[] = $source['skill_id'];
}
}
//Cleaning skills
$skill_list = array_map('intval', $skill_list);
$skill_list = array_filter($skill_list);
if (!empty($skill_list)) {
if (!empty($clean_gradebook)) {
$skill_to_remove = array_diff($clean_gradebook, $skill_list);
@ -135,20 +136,20 @@ class Gradebook extends Model
$skill_gradebook->save($params);
}
}
} else {
$skill_to_remove = $clean_gradebook;
}
if ($deleteSkillNotInList) {
if (!empty($skill_to_remove)) {
foreach ($skill_to_remove as $remove) {
$skill_item = $skill_gradebook->get_skill_info(
$remove,
$gradebook_id
);
$skill_gradebook->delete($skill_item['id']);
}
if ($deleteSkillNotInList) {
if (!empty($skill_to_remove)) {
foreach ($skill_to_remove as $remove) {
$skill_item = $skill_gradebook->get_skill_info(
$remove,
$gradebook_id
);
$skill_gradebook->delete($skill_item['id']);
}
}
return true;
}
return false;

Loading…
Cancel
Save