diff --git a/main/admin/course_add.php b/main/admin/course_add.php index e717bcd150..a163bf90e6 100644 --- a/main/admin/course_add.php +++ b/main/admin/course_add.php @@ -1,5 +1,5 @@ 'index.php', "name" => get_lang('PlatformAd ============================================================================== */ -// Get all course categories -$table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY); -$sql = "SELECT code,name FROM ".$table_course_category." WHERE auth_course_child ='TRUE' ORDER BY tree_pos"; -$res = api_sql_query($sql, __FILE__, __LINE__); -while ($cat = mysql_fetch_array($res)) -{ - $categories[$cat['code']] = '('.$cat['code'].') '.$cat['name']; -} + // Get all possible teachers $table_user = Database :: get_main_table(TABLE_MAIN_USER); @@ -82,7 +76,8 @@ $form->addRule('wanted_code',get_lang('Max'),'maxlength',20); $form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers); $form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size=5'); $form->add_textfield('title', get_lang('Title'),true, array ('size' => '60')); -$form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories); +$categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories); +CourseManager::select_and_sort_categories($categories_select); $form->add_textfield('department_name', get_lang('CourseDepartment'),false, array ('size' => '60')); $form->add_textfield('department_url', get_lang('CourseDepartmentURL'),false, array ('size' => '60')); $form->addElement('select_language', 'course_language', get_lang('CourseLanguage')); diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php index 8f4aa66a8a..9d14d45024 100644 --- a/main/admin/course_edit.php +++ b/main/admin/course_edit.php @@ -1,6 +1,6 @@ "course_list.php", "name" => get_lang('Admi */ // Get all course categories $table_user = Database :: get_main_table(TABLE_MAIN_USER); -$table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY); -$sql = "SELECT code,name FROM ".$table_course_category." WHERE auth_course_child ='TRUE' ORDER BY tree_pos"; -$res = api_sql_query($sql, __FILE__, __LINE__); -while ($cat = mysql_fetch_array($res)) -{ - $categories[$cat['code']] = '('.$cat['code'].') '.$cat['name']; -} //Get the course infos $sql = "SELECT * FROM $course_table WHERE code='".mysql_real_escape_string($course_code)."'"; @@ -160,7 +154,8 @@ $renderer -> setElementTemplate($element_template, 'group'); $form -> addGroup($group,'group',get_lang('CourseTeachers'),'

'); $form->add_textfield( 'title', get_lang('Title'),true, array ('size' => '60')); -$form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories); +$categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories); +CourseManager::select_and_sort_categories($categories_select); $form->add_textfield( 'department_name', get_lang('CourseDepartment'), false,array ('size' => '60')); $form->add_textfield( 'department_url', get_lang('CourseDepartmentURL'),false, array ('size' => '60')); $form->addElement('select_language', 'course_language', get_lang('CourseLanguage')); diff --git a/main/create_course/add_course.php b/main/create_course/add_course.php index 025035636f..321076fab1 100644 --- a/main/create_course/add_course.php +++ b/main/create_course/add_course.php @@ -1,5 +1,5 @@ add_textfield('title',get_lang('Title'),true,array('size'=>'60')); $form->addElement('static',null,null,get_lang('Ex')); -$form->addElement('select', 'category_code', get_lang('Fac'), $categories); +$categories_select = $form->addElement('select', 'category_code', get_lang('Fac'), $categories); +CourseManager::select_and_sort_categories($categories_select); $form->addElement('static',null,null, get_lang('TargetFac')); $form->add_textfield('wanted_code', get_lang('Code'),false,array('size'=>'20','maxlength'=>20)); $form->addRule('wanted_code',get_lang('Max'),'maxlength',20); diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 5c657598c9..cd82ff6cd6 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -1641,5 +1641,36 @@ class CourseManager return $i_course_sort; } + /** + * create recursively all categories as option of the select passed in paramater. + * + * @param object $select_element the quickform select where the options will be added + * @param string $category_selected_code the option value to select by default (used mainly for edition of courses) + * @param string $parent_code the parent category of the categories added (default=null for root category) + * @param string $padding the indent param (you shouldn't indicate something here) + */ + function select_and_sort_categories($select_element, $category_selected_code="", $parent_code=null , $padding="") + { + $table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY); + $sql = "SELECT code, name, auth_course_child, auth_cat_child + FROM ".$table_course_category." + WHERE parent_id ".(is_null($parent_code) ? "IS NULL" : "='".Database::escape_string($parent_code)."'")." + ORDER BY tree_pos"; + $res = api_sql_query($sql, __FILE__, __LINE__); + + $new_padding = $padding.str_repeat('-',3); + + while ($cat = Database::fetch_array($res)) + { + $params = $cat['auth_course_child'] == 'TRUE' ? '' : 'disabled'; + $params .= ($cat['code'] == $category_selected_code) ? ' selected' : ''; + $select_element->addOption($padding.'('.$cat['code'].') '.$cat['name'], $cat['code'], $params); + if($cat['auth_cat_child']) + { + CourseManager::select_and_sort_categories($select_element, $cat['code'], $category_selected_code, $new_padding); + } + } +} + } //end class CourseManager ?> \ No newline at end of file