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', 'advmultiselect',
$groupName, $groupName,
Display::url( Display::url(
$session['name'], $sessionUrl, array('target' => '_blank') $session['name'],
$sessionUrl,
array('target' => '_blank')
) . ' - ' . get_lang('Coaches'), ) . ' - ' . get_lang('Coaches'),
$allTeachers $allTeachers
); );
@ -184,7 +186,6 @@ $categorySelect = $form->addElement(
if (!empty($courseInfo['categoryCode'])) { if (!empty($courseInfo['categoryCode'])) {
$data = getCategory($courseInfo['categoryCode']); $data = getCategory($courseInfo['categoryCode']);
$categorySelect->addOption($data['name'], $data['code']); $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('ThisFieldIsRequired'), 'required');
$form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric'); $form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric');
$specialCourseField = new ExtraField('course'); // Extra fields
$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_field = new ExtraField('course'); $extra_field = new ExtraField('course');
$extra = $extra_field->addElements($form, $courseId, ['special_course']); $extra = $extra_field->addElements($form, $courseId);
$htmlHeadXtra[] = ' $htmlHeadXtra[] = '
<script> <script>
@ -315,10 +288,9 @@ if ($form->validate()) {
$warn = substr($warn, 0, -1); $warn = substr($warn, 0, -1);
} }
$teachers = $course['course_teachers']; $teachers = isset($course['course_teachers']) ? $course['course_teachers'] : '';
$title = $course['title']; $title = $course['title'];
$category_code = $course['category_code']; $category_code = isset($course['category_code']) ? $course['category_code'] : '';
$department_name = $course['department_name']; $department_name = $course['department_name'];
$department_url = $course['department_url']; $department_url = $course['department_url'];
$course_language = $course['course_language']; $course_language = $course['course_language'];

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

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

Loading…
Cancel
Save