Add freezeSeeOnlySelected option + add custom changes see BT#10849

ofaj
jmontoyaa 9 years ago
parent 1129f85f2d
commit 83678e4b15
  1. 14
      load_search.php
  2. 26
      main/inc/lib/extra_field.lib.php
  3. 2
      main/inc/lib/pear/HTML/Common.php
  4. 1
      main/inc/lib/pear/HTML/QuickForm/group.php
  5. 6
      main/inc/lib/pear/HTML/QuickForm/radio.php
  6. 62
      search.php

@ -306,7 +306,7 @@ if ($formSearch->validate()) {
}
}
}
$params = [];
if ($form->validate()) {
$params = $form->getSubmitValues();
$save = false;
@ -484,15 +484,14 @@ $(function() {
});
</script>';
if (!empty($filterToSend)) {
$userStartDate = $params['extra_access_start_date'];
$userStartDate = isset($params['extra_access_start_date']) ? $params['extra_access_start_date'] : '';
$userEndDate = isset($params['extra_access_end_date']) ? $params['extra_access_end_date'] : '';
$date = new DateTime($userStartDate);
$date->sub(new DateInterval('P3D'));
$userStartDateMinus = $date->format('Y-m-d h:i:s');
$userEndDate = $params['extra_access_end_date'];
$date = new DateTime($userEndDate);
$date->add(new DateInterval('P2D'));
$userEndDatePlus = $date->format('Y-m-d h:i:s');
@ -502,7 +501,10 @@ if (!empty($filterToSend)) {
(s.access_start_date > '$userStartDateMinus' AND (s.access_start_date = '' OR s.access_start_date IS NULL)) OR
((s.access_start_date = '' OR s.access_start_date IS NULL) AND (s.access_end_date = '' OR s.access_end_date IS NULL))
)";
$filterToSend['custom_dates'] = $sql;
if ($userStartDate && !empty($userStartDate)) {
$filterToSend['custom_dates'] = $sql;
}
$filterToSend = json_encode($filterToSend);
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&load_extra_field='.$extraFieldListToString.'&_force_search=true&rows=20&page=1&sidx=&sord=asc&filters2='.$filterToSend;
} else {

@ -454,7 +454,8 @@ class ExtraField extends Model
$forceShowFields = false,
$separateExtraMultipleSelect = [],
$customLabelsExtraMultipleSelect = [],
$fieldsToFreeze = []
$fieldsToFreeze = [],
$addEmptyOptionSelects = false
) {
if (empty($form)) {
return false;
@ -493,7 +494,8 @@ class ExtraField extends Model
$orderDependingDefaults,
$separateExtraMultipleSelect,
$customLabelsExtraMultipleSelect,
$fieldsToFreeze
$fieldsToFreeze,
$addEmptyOptionSelects
);
return $extra;
@ -821,7 +823,8 @@ class ExtraField extends Model
$orderDependingDefaults = false,
$separateExtraMultipleSelect = [],
$customLabelsExtraMultipleSelect = [],
$fieldsToFreeze = []
$fieldsToFreeze = [],
$addEmptyOptionSelects = false
) {
$type = $this->type;
$jquery_ready_content = '';
@ -1163,6 +1166,9 @@ class ExtraField extends Model
$defaultOptions = $extraData['extra_'.$field_details['variable']];
if (!empty($defaultOptions)) {
$firstList = [];
if ($addEmptyOptionSelects) {
$firstList[] = '';
}
foreach ($defaultOptions as $key) {
if (isset($options[$key])) {
$firstList[$key] = $options[$key];
@ -1325,8 +1331,6 @@ class ExtraField extends Model
case ExtraField::FIELD_TYPE_TAG:
$variable = $field_details['variable'];
$field_id = $field_details['id'];
$separateValue = 0;
if (isset($separateExtraMultipleSelect[$field_details['variable']])) {
$separateValue = $separateExtraMultipleSelect[$field_details['variable']];
@ -1363,6 +1367,13 @@ class ExtraField extends Model
null,
array('id' => 'extra_'.$field_details['variable'].'_'.$i)
);
if ($addEmptyOptionSelects) {
$tagsSelect->addOption(
'',
''
);
}
foreach ($fieldTags as $fieldTag) {
$tag = $em->find('ChamiloCoreBundle:Tag', $fieldTag->getTagId());
@ -1371,8 +1382,7 @@ class ExtraField extends Model
}
$tagsSelect->addOption(
$tag->getTag(),
$tag->getTag(),
['selected' => 'selected', 'class' => 'selected']
$tag->getTag()
);
}
}
@ -1931,6 +1941,8 @@ EOF;
}
if (in_array($field_details['variable'], $fieldsToFreeze)) {
$element = $form->getElement('extra_'.$field_details['variable']);
$element->freezeSeeOnlySelected = true;
$form->freeze(
'extra_'.$field_details['variable']
);

@ -69,6 +69,7 @@ class HTML_Common
* @access private
*/
var $_comment = '';
public $freezeSeeOnlySelected;
/**
* Class constructor
@ -79,6 +80,7 @@ class HTML_Common
*/
public function __construct($attributes = null, $tabOffset = 0)
{
$this->freezeSeeOnlySelected = false;
$this->setAttributes($attributes);
$this->setTabOffset($tabOffset);
} // end constructor

@ -503,6 +503,7 @@ class HTML_QuickForm_group extends HTML_QuickForm_element
{
parent::freeze();
foreach (array_keys($this->_elements) as $key) {
$this->_elements[$key]->freezeSeeOnlySelected = $this->freezeSeeOnlySelected;
$this->_elements[$key]->freeze();
}
}

@ -124,8 +124,12 @@ class HTML_QuickForm_radio extends HTML_QuickForm_input
{
if (0 == strlen($this->_text)) {
$label = '';
} elseif ($this->_flagFrozen) {
} elseif ($this->isFrozen()) {
$label = $this->_text;
if ($this->freezeSeeOnlySelected) {
$invisible = $this->getChecked() ? '' : ' style="display:none"';
return "<div $invisible>".HTML_QuickForm_input::toHtml().$this->_text."</div>";
}
} else {
$labelClass = $this->labelClass;
$radioClass = $this->radioClass;

@ -41,8 +41,8 @@ $diagnosisComplete = $extraFieldValue->get_values_by_handler_and_field_variable(
if ($diagnosisComplete && isset($diagnosisComplete['value']) && $diagnosisComplete['value'] == 1) {
if (!isset($_GET['result'])) {
header('Location:'.api_get_self().'?result=1');
exit;
//header('Location:'.api_get_self().'?result=1');
//exit;
}
}
@ -116,39 +116,46 @@ $(document).ready(function() {
"href": "'.$url.'&field_variable=extra_theme_de",
"text": "'.get_lang('Order').'"
})
);
);
$("#extra_domaine").on("change", function() {
$("#extra_domaine_0, #extra_domaine_1, #extra_domaine_2").on("change", function() {
var domainList = [];
$( "#extra_domaine option:selected" ).each(function() {
$("#extra_domaine_0 option:selected").each(function() {
domainList.push($(this).val());
});
$("#extra_domaine_1 option:selected").each(function() {
domainList.push($(this).val());
});
$("#extra_domaine_2 option:selected").each(function() {
domainList.push($(this).val());
});
var domainListToString = JSON.stringify(domainList);
$.ajax({
contentType: "application/x-www-form-urlencoded",
type: "GET",
url: "'.api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=search_options_from_tags&type=session&from=extra_domaine&search="+themeDefault+"&options="+domainListToString,
success: function(data) {
$("#"+themeDefault).find("option").remove().end();
$("#"+themeDefault).empty();
success: function(data) {
var selectToString = "";
jQuery.each(JSON.parse(data), function(i, item) {
selectToString += "<optgroup label=\'"+item.text+"\'>";
jQuery.each(item.children, function(j, data) {
console.log(data);
jQuery.each(item.children, function(j, data) {
if (data.text != "") {
selectToString += "<option value=\'"+data.text+"\'> " +data.text+"</option>"
}
});
selectToString += "</optgroup>";
});
$("#"+themeDefault).html(selectToString);
$("#"+themeDefault).selectpicker("refresh");
}
});
for (i = 0; i <= 5; i++) {
var themeId = "#"+themeDefault+"_"+i;
$(themeId).find("option").remove().end();
$(themeId).empty();
$(themeId).html(selectToString);
$(themeId).selectpicker("refresh");
}
}
});
});
});
@ -234,6 +241,7 @@ if ($form->validate()) {
}
}
}
$forceShowFields = true;
$extraField = new ExtraField('user');
$userForm = new FormValidator('user_form', 'post', api_get_self());
@ -410,10 +418,6 @@ $fieldsToShow = [
$theme
];
/*$specialUrlList = [
$theme => api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=search_tags_from_diagnosis'
];*/
$extra = $extraFieldSession->addElements(
$userForm,
api_get_user_id(),
@ -440,7 +444,9 @@ $extra = $extraFieldSession->addElements(
get_lang('Theme').' 4',
get_lang('Theme').' 5'
],
]
],
[],
true //$addEmptyOptionSelects
);
$jqueryExtra .= $extra['jquery_ready_content'];
@ -599,15 +605,17 @@ if ($userForm->validate()) {
$field_variable = substr($key, 6);
$extraFieldInfo = $extraFieldValueSession
->getExtraField()
->get_handler_field_info_by_field_variable($field_variable);
->get_handler_field_info_by_field_variable($field_variable)
;
if (!$extraFieldInfo) {
continue;
}
$extraFieldObj = $em->getRepository('ChamiloCoreBundle:ExtraField')->find($extraFieldInfo['id']);
$extraFieldObj = $em
->getRepository('ChamiloCoreBundle:ExtraField')
->find($extraFieldInfo['id'])
;
$search = [
'field' => $extraFieldObj,

Loading…
Cancel
Save