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()) { if ($form->validate()) {
$params = $form->getSubmitValues(); $params = $form->getSubmitValues();
$save = false; $save = false;
@ -484,15 +484,14 @@ $(function() {
}); });
</script>'; </script>';
if (!empty($filterToSend)) { 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 = new DateTime($userStartDate);
$date->sub(new DateInterval('P3D')); $date->sub(new DateInterval('P3D'));
$userStartDateMinus = $date->format('Y-m-d h:i:s'); $userStartDateMinus = $date->format('Y-m-d h:i:s');
$userEndDate = $params['extra_access_end_date'];
$date = new DateTime($userEndDate); $date = new DateTime($userEndDate);
$date->add(new DateInterval('P2D')); $date->add(new DateInterval('P2D'));
$userEndDatePlus = $date->format('Y-m-d h:i:s'); $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 > '$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)) ((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); $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; $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 { } else {

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

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

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

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

Loading…
Cancel
Save