Fix checkbox extra field edit see #8022

1.10.x
jmontoya 10 years ago
parent cc9e74208b
commit 8c1de01f63
  1. 42
      main/admin/course_edit.php
  2. 7
      main/inc/lib/extra_field.lib.php
  3. 40
      main/inc/lib/extra_field_value.lib.php

@ -163,7 +163,9 @@ if (!empty($coursesInSession)) {
'advmultiselect',
$groupName,
Display::url(
$session['name'], $sessionUrl, array('target' => '_blank')
$session['name'],
$sessionUrl,
array('target' => '_blank')
) . ' - ' . get_lang('Coaches'),
$allTeachers
);
@ -184,7 +186,6 @@ $categorySelect = $form->addElement(
if (!empty($courseInfo['categoryCode'])) {
$data = getCategory($courseInfo['categoryCode']);
$categorySelect->addOption($data['name'], $data['code']);
}
@ -221,37 +222,9 @@ $form->addElement('text', 'disk_quota', array(get_lang('CourseQuota'), null, get
$form->addRule('disk_quota', get_lang('ThisFieldIsRequired'), 'required');
$form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric');
$specialCourseField = new ExtraField('course');
$specialCourseFieldInfo = $specialCourseField->get_handler_field_info_by_field_variable('special_course');
if (!empty($specialCourseFieldInfo)) {
$specialCourseValue = new ExtraFieldValue('course');
$specialCourseValueInfo = $specialCourseValue->get_values_by_handler_and_field_variable(
$course_code,
'special_course'
);
$specialCourseAttributes = array();
if (!empty($specialCourseValueInfo) && $specialCourseValueInfo['value'] == 1) {
$specialCourseAttributes['checked'] = '';
}
$form->addElement(
'checkbox',
'extra_special_course',
array(
null,
get_lang('AllUsersAreAutomaticallyRegistered')
),
get_lang('SpecialCourse'),
$specialCourseAttributes
);
}
//Extra fields
// Extra fields
$extra_field = new ExtraField('course');
$extra = $extra_field->addElements($form, $courseId, ['special_course']);
$extra = $extra_field->addElements($form, $courseId);
$htmlHeadXtra[] = '
<script>
@ -315,10 +288,9 @@ if ($form->validate()) {
$warn = substr($warn, 0, -1);
}
$teachers = $course['course_teachers'];
$teachers = isset($course['course_teachers']) ? $course['course_teachers'] : '';
$title = $course['title'];
$category_code = $course['category_code'];
$category_code = isset($course['category_code']) ? $course['category_code'] : '';
$department_name = $course['department_name'];
$department_url = $course['department_url'];
$course_language = $course['course_language'];

@ -810,7 +810,7 @@ class ExtraField extends Model
if (isset($field_details['options']) && !empty($field_details['options'])) {
foreach ($field_details['options'] as $option_details) {
$options[$option_details['option_value']] = $option_details['display_text'];
$group[] = $form->createElement(
$group[] = $form->createElement(
'checkbox',
'extra_'.$field_details['variable'],
$option_details['option_value'],
@ -824,7 +824,9 @@ class ExtraField extends Model
$checkboxAttributes = array();
if (is_array($extraData) && array_key_exists($fieldVariable, $extraData)) {
$checkboxAttributes['checked'] = true;
if (!empty($extraData[$fieldVariable])) {
$checkboxAttributes['checked'] = 1;
}
}
// We assume that is a switch on/off with 1 and 0 as values
@ -837,6 +839,7 @@ class ExtraField extends Model
$checkboxAttributes
);
}
$form->addGroup(
$group,
'extra_'.$field_details['variable'],

@ -95,19 +95,25 @@ class ExtraFieldValue extends Model
}
$type = $this->getExtraField()->getExtraFieldType();
$extraField = new ExtraField($this->type);
$extraFields = $extraField->get_all(null, 'option_order');
// Parse params.
foreach ($params as $key => $value) {
if (
substr($key, 0, 6) != 'extra_' &&
substr($key, 0, 7) != '_extra_'
) {
//foreach ($params as $key => $value) {
foreach ($extraFields as $fieldDetails) {
if ($fieldDetails['visible'] != 1) {
continue;
}
// An extra field.
$field_variable = substr($key, 6);
$field_variable = $fieldDetails['variable'];
if (isset($params['extra_'.$field_variable])) {
$value = $params['extra_'.$field_variable];
} else {
$value = '';
}
$extraFieldInfo = $this->getExtraField()->get_handler_field_info_by_field_variable($field_variable);
if (!$extraFieldInfo) {
continue;
}
@ -267,6 +273,24 @@ class ExtraFieldValue extends Model
self::save($new_params);
}
break;
case ExtraField::FIELD_TYPE_CHECKBOX:
$fieldToSave = 0;
if (is_array($value)) {
if (isset($value['extra_'.$field_variable])) {
$fieldToSave = 1;
}
}
$newParams = array(
'item_id' => $params['item_id'],
'field_id' => $extraFieldInfo['id'],
'value' => $fieldToSave,
'comment' => $comment
);
self::save($newParams);
break;
default:
$newParams = array(

Loading…
Cancel
Save