Browse Source

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

Angel Fernando Quiroz Campos 10 years ago
parent
commit
4206c7f399

+ 1 - 1
main/admin/course_add.php

@@ -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[] ='

+ 18 - 9
main/admin/course_edit.php

@@ -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

+ 52 - 0
main/inc/lib/CourseField.class.php

@@ -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;
+    }
 }

+ 1 - 1
main/install/db_main.sql

@@ -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