Fix the Edit Course form by 'special course' field - refs BT#9049

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent 80f524718e
commit 4206c7f399
  1. 2
      main/admin/course_add.php
  2. 27
      main/admin/course_edit.php
  3. 52
      main/inc/lib/CourseField.class.php
  4. 2
      main/install/db_main.sql

@ -117,7 +117,7 @@ $obj = new GradeModel();
$obj->fill_grade_model_select_in_form($form);
//Extra fields
$extra_field = new ExtraField('course');
$extra_field = new CourseField();
$extra = $extra_field->addElements($form);
$htmlHeadXtra[] ='

@ -16,6 +16,8 @@ api_protect_admin_script();
require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php';
require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
@ -227,16 +229,23 @@ $form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric');
$list_course_extra_field = CourseManager::get_course_extra_field_list($course_code);
//@todo this is wrong
foreach ($list_course_extra_field as $extra_field) {
switch ($extra_field['field_type']) {
case CourseManager::COURSE_FIELD_TYPE_CHECKBOX:
$checked = (array_key_exists('extra_field_value', $extra_field) && $extra_field['extra_field_value'] == 1)? array('checked'=>'checked'): '';
$form->addElement('hidden', '_extra_'.$extra_field['field_variable'], 0);
$field_display_text = $extra_field['field_display_text'];
$form->addElement('checkbox', 'extra_'.$extra_field['field_variable'], array(null, get_lang('AllUsersAreAutomaticallyRegistered')), get_lang('SpecialCourse'), $checked);
break;
$specialCourseField = new CourseField();
$specialCourseFieldInfo = $specialCourseField->get_handler_field_info_by_field_variable('special_course');
if (!empty($specialCourseFieldInfo)) {
$specialCourseValue = new CourseFieldValue();
$specialCourseValueInfo = $specialCourseValue->get_values_by_handler_and_field_variable($course_code, 'special_course');
$specialCourseAttributes = array();
if (!empty($specialCourseValueInfo) && $specialCourseValueInfo['field_value'] == 1) {
$specialCourseAttributes['checked'] = '';
}
$form->addElement('hidden', '_extra_special_course', 0);
$form->addElement('checkbox', 'extra_special_course', array(
null, get_lang('AllUsersAreAutomaticallyRegistered')
), get_lang('SpecialCourse'), $specialCourseAttributes);
}
//Extra fields

@ -4,6 +4,8 @@
class CourseField extends ExtraField {
const SPECIAL_COURSE_FIELD = 'special_course';
public function __construct() {
parent::__construct('course');
}
@ -102,4 +104,54 @@ class CourseField extends ExtraField {
return $form;
}
/**
* Add elements to a form
*
* @param FormValidator $form
* @param int $courseCode
*
* @return array|bool
*/
public function addElements($form, $courseCode = null)
{
if (empty($form)) {
return false;
}
$extra_data = false;
if (!empty($courseCode)) {
$extra_data = self::get_handler_extra_data($courseCode);
if ($form) {
$form->setDefaults($extra_data);
}
}
$extra_fields = $this->get_all(null, 'option_order');
$specilCourseFieldId = -1;
foreach ($extra_fields as $id => $extraField) {
if ($extraField['field_variable'] === self::SPECIAL_COURSE_FIELD) {
$specilCourseFieldId = $id;
}
}
if (isset($extra_fields[$specilCourseFieldId])) {
unset($extra_fields[$specilCourseFieldId]);
}
$extra = $this->set_extra_fields_in_form(
$form,
$extra_data,
$this->type.'_field',
false,
false,
$extra_fields,
$courseCode
);
return $extra;
}
}

@ -2714,7 +2714,7 @@ CREATE TABLE IF NOT EXISTS message_attachment (
INSERT INTO course_field (field_type, field_variable, field_display_text, field_default_value, field_visible, field_changeable) values (10, 'special_course','Special course', 'Yes', 1 , 1);
INSERT INTO course_field (field_type, field_variable, field_display_text, field_default_value, field_visible, field_changeable) values (10, 'special_course','Special course', '', 1 , 1);
--
-- Table structure for table block

Loading…
Cancel
Save