Replace fcbkComplete with select2 for extra field of type tag #1941

pull/2487/head
Angel Fernando Quiroz Campos 9 years ago
parent 2a07dd3942
commit fffaf10cd6
  1. 18
      main/inc/ajax/extra_field.ajax.php
  2. 48
      main/inc/lib/extra_field.lib.php
  3. 4
      main/inc/lib/extra_field_value.lib.php

@ -22,12 +22,20 @@ switch ($action) {
}
break;
case 'search_tags':
header('Content-Type: application/json');
$type = isset($_REQUEST['type']) ? $_REQUEST['type'] : null;
$fieldId = isset($_REQUEST['field_id']) ? $_REQUEST['field_id'] : null;
$tag = isset($_REQUEST['tag']) ? $_REQUEST['tag'] : null;
$tag = isset($_REQUEST['q']) ? $_REQUEST['q'] : null;
$result = [];
if (empty($tag)) {
echo json_encode(['items' => $result]);
exit;
}
$extraFieldOption = new ExtraFieldOption($type);
$result = [];
$tags = Database::getManager()
->getRepository('ChamiloCoreBundle:Tag')
->createQueryBuilder('t')
@ -41,12 +49,12 @@ switch ($action) {
/** @var Tag $tag */
foreach ($tags as $tag) {
$result[] = [
'key' => $tag->getTag(),
'value' => $tag->getTag()
'id' => $tag->getTag(),
'text' => $tag->getTag()
];
}
echo json_encode($result);
echo json_encode(['items' => $result]);
break;
default:
exit;

@ -1286,7 +1286,9 @@ class ExtraField extends Model
$tagsSelect = $form->addSelect(
"extra_{$field_details['variable']}",
$field_details['display_text']
$field_details['display_text'],
[],
['style' => 'width: 100%;']
);
if ($useTagAsSelect == false) {
@ -1296,6 +1298,8 @@ class ExtraField extends Model
$tagsSelect->setAttribute('id', "extra_{$field_details['variable']}");
$tagsSelect->setMultiple(true);
$selectedOptions = [];
if ($this->type === 'user') {
// The magic should be here
$user_tags = UserManager::get_user_tags($itemId, $field_details['id']);
@ -1304,9 +1308,10 @@ class ExtraField extends Model
foreach ($user_tags as $tag) {
$tagsSelect->addOption(
$tag['tag'],
$tag['tag'],
['selected' => 'selected', 'class' => 'selected']
$tag['tag']
);
$selectedOptions[] = $tag['tag'];
}
}
$url = api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php';
@ -1319,7 +1324,9 @@ class ExtraField extends Model
'fieldId' => $field_id,
'itemId' => $itemId
]);
/** @var \Chamilo\CoreBundle\Entity\ExtraFieldRelTag $fieldTag */
foreach ($fieldTags as $fieldTag) {
/** @var \Chamilo\CoreBundle\Entity\Tag $tag */
$tag = $em->find('ChamiloCoreBundle:Tag', $fieldTag->getTagId());
if (empty($tag)) {
@ -1327,9 +1334,9 @@ class ExtraField extends Model
}
$tagsSelect->addOption(
$tag->getTag(),
$tag->getTag(),
['selected' => 'selected', 'class' => 'selected']
$tag->getTag()
);
$selectedOptions[] = $tag->getTag();
}
if ($useTagAsSelect) {
@ -1366,22 +1373,27 @@ class ExtraField extends Model
$url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php';
}
if ($useTagAsSelect == false) {
$complete_text = get_lang('StartToType');
//if cache is set to true the jquery will be called 1 time
$form->setDefaults([
'extra_'.$field_details['variable'] => $selectedOptions
]);
$jquery_ready_content .= <<<EOF
$("#extra_$variable").fcbkcomplete({
json_url: "$url?a=search_tags&field_id=$field_id&type={$this->type}",
if ($useTagAsSelect == false) {
$jquery_ready_content .= "
$('#extra_$variable').select2({
ajax: {
url: '$url?a=search_tags&field_id=$field_id&type={$this->type}',
processResults: function (data) {
return {
results: data.items
}
}
},
cache: false,
filter_case: true,
filter_hide: true,
complete_text:"$complete_text",
firstselected: false,
filter_selected: true,
newel: true
tags: true,
tokenSeparators: [','],
placeholder: '".get_lang('StartToType')."'
});
EOF;
";
}
break;
case self::FIELD_TYPE_TIMEZONE:

@ -160,6 +160,10 @@ class ExtraFieldValue extends Model
$tags = [];
foreach ($tagValues as $tagValue) {
if (empty($tagValue)) {
continue;
}
$tagsResult = $em->getRepository('ChamiloCoreBundle:Tag')
->findBy([
'tag' => $tagValue,

Loading…
Cancel
Save