Add order when saving extra_field_search see BT#10849

ofaj
jmontoyaa 10 years ago
parent caf1b25f96
commit ff4be4c5a9
  1. 5
      load_search.php
  2. 75
      main/inc/ajax/extra_field.ajax.php
  3. 49
      main/inc/lib/extra_field.lib.php
  4. 25
      search.php

@ -105,7 +105,9 @@ $extra = $extraField->addElements(
true,
[],
[],
$defaults
$defaults,
[],
true
);
$form->addButtonSearch(get_lang('Search'), 'save');
@ -123,7 +125,6 @@ $result = SessionManager::getGridColumns('simple', $extraFieldsToFilter);
$columns = $result['columns'];
$column_model = $result['column_model'];
$form->setDefaults($defaults);
$filterToSend = '';

@ -113,6 +113,81 @@ switch ($action) {
}
echo json_encode($options);
break;
case 'order':
$variable = isset($_REQUEST['field_variable']) ? $_REQUEST['field_variable'] : '';
$save = isset($_REQUEST['save']) ? $_REQUEST['save'] : '';
$values = isset($_REQUEST['values']) ? json_decode($_REQUEST['values']) : '';
$extraField = new ExtraField('session');
$extraFieldInfo = $extraField->get_handler_field_info_by_field_variable(str_replace('extra_', '', $variable));
$em = Database::getManager();
$search = [
'user' => api_get_user_id(),
'field' => $extraFieldInfo['id']
];
$extraFieldSavedSearch = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search);
if ($save) {
$extraField = new \Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch('session');
if ($extraFieldSavedSearch) {
$extraFieldSavedSearch->setValue($values);
$em->merge($extraFieldSavedSearch);
$em->flush();
}
}
if ($extraFieldInfo) {
/** @var \Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch $options */
$extraFieldSavedSearch = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search);
$values = $extraFieldSavedSearch->getValue();
$url = api_get_self().'?a=order&save=1&field_variable='.$variable;
$html = '
<script>
$(function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
$( "#link_'.$variable.'" ).on("click", function() {
var newList = [];
$("#sortable").find("li").each(function(){
newList.push($(this).text());
});
var save = JSON.stringify(newList);
$.ajax({
url: "'.$url.'",
dataType: "json",
data: "values="+save,
success: function(data) {
console.log(data);
}
});
alert("'.get_lang('Saved').'");
location.reload();
return false;
});
});
</script>';
$html .= '<ul id="sortable">';
foreach ($values as $value) {
$html .= '<li class="ui-state-default">';
$html .= $value;
$html .= '</li>';
}
$html .= '</ul>';
$html .= Display::url(get_lang('Save'), '#', ['id' => 'link_'.$variable, 'class' => 'btn btn-primary']);
echo $html;
}
break;
default:
exit;
break;

@ -398,7 +398,8 @@ class ExtraField extends Model
$showOnlyThisFields = [],
$orderFields = [],
$extraData = [],
$specialUrlList = []
$specialUrlList = [],
$orderDependingDefaults = false
) {
if (empty($form)) {
return false;
@ -406,11 +407,11 @@ class ExtraField extends Model
$itemId = intval($itemId);
$form->addHidden('item_id', $itemId);
if (empty($extraData)) {
if (!empty($itemId)) {
$extraData = self::get_handler_extra_data($itemId);
$extraData = self::get_handler_extra_data($itemId);
if ($form) {
$form->setDefaults($extraData);
}
@ -433,7 +434,8 @@ class ExtraField extends Model
$useTagAsSelect,
$showOnlyThisFields,
$orderFields,
$specialUrlList
$specialUrlList,
$orderDependingDefaults
);
return $extra;
@ -758,7 +760,8 @@ class ExtraField extends Model
$useTagAsSelect = false,
$showOnlyThisFields = [],
$orderFields = [],
$specialUrlList = []
$specialUrlList = [],
$orderDependingDefaults = false
) {
$type = $this->type;
$jquery_ready_content = '';
@ -1101,6 +1104,22 @@ class ExtraField extends Model
foreach ($field_details['options'] as $option_id => $option_details) {
$options[$option_details['option_value']] = $option_details['display_text'];
}
if ($orderDependingDefaults) {
$defaultOptions = $extraData['extra_'.$field_details['variable']];
if (!empty($defaultOptions)) {
$firstList = [];
foreach ($defaultOptions as $key) {
if (isset($options[$key])) {
$firstList[$key] = $options[$key];
}
}
if (!empty($firstList)) {
$options = array_merge($firstList, $options);
}
}
}
$form->addElement(
'select',
'extra_'.$field_details['variable'],
@ -1149,21 +1168,7 @@ class ExtraField extends Model
$("#'.$first_select_id.'").on("change", function() {
var id = $(this).val();
if (id) {
$.ajax({
url: "'.$url.'&a=get_second_select_options",
dataType: "json",
data: "type='.$type.'&field_id='.$field_details['id'].'&option_value_id="+id,
success: function(data) {
$("#second_extra_'.$field_details['variable'].'").empty();
$.each(data, function(index, value) {
$("#second_extra_'.$field_details['variable'].'").append($("<option/>", {
value: index,
text: value
}));
});
$("#second_extra_'.$field_details['variable'].'").selectpicker("refresh");
},
});
ExtraFieldSavedSearch
} else {
$("#second_extra_'.$field_details['variable'].'").empty();
}
@ -1279,7 +1284,7 @@ class ExtraField extends Model
'itemId' => $itemId,
]
);
foreach ($fieldTags as $fieldTag) {
$tag = $em->find('ChamiloCoreBundle:Tag', $fieldTag->getTagId());

@ -53,6 +53,8 @@ if ($hide === false) {
$defaultValueStatus = '';
}
$url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=order&user_id='.$userId;
$htmlHeadXtra[] ='<script>
$(document).ready(function() {
@ -68,6 +70,22 @@ $(document).ready(function() {
}
});
$("#extra_domaine").parent().append(
$("<a>", {
"class": "btn ajax btn-default",
"href": "'.$url.'&field_variable=extra_domaine",
"text": "'.get_lang('Order').'"
})
);
$("#extra_theme").parent().append(
$("<a>", {
"class": "btn ajax btn-default",
"href": "'.$url.'&field_variable=extra_theme",
"text": "'.get_lang('Order').'"
})
);
$("#extra_domaine").on("change", function() {
var domainList = [];
$( "#extra_domaine option:selected" ).each(function() {
@ -303,7 +321,8 @@ $extra = $extraFieldSession->addElements(
$fieldsToShow,
$fieldsToShow,
$defaults,
$specialUrlList
$specialUrlList,
true
);
$jqueryExtra .= $extra['jquery_ready_content'];
@ -369,10 +388,6 @@ $extra = $extraField->addElements(
$jqueryExtra .= $extra['jquery_ready_content'];
/*echo '<pre>';
echo $jqueryExtra;
echo '</pre>';*/
$htmlHeadXtra[] ='<script>
$(document).ready(function(){
'.$jqueryExtra.'

Loading…
Cancel
Save