diff --git a/main/admin/course_fields.php b/main/admin/course_fields.php new file mode 100644 index 0000000000..09b70ae19d --- /dev/null +++ b/main/admin/course_fields.php @@ -0,0 +1,275 @@ + 'index.php', 'name' => get_lang('PlatformAdmin')); + +$action = isset($_GET['action']) ? $_GET['action'] : null; + +$check = Security::check_token('request'); +$token = Security::get_token(); + +if ($action == 'add') { + $interbreadcrumb[] = array('url' => 'course_fields.php', 'name' => get_lang('CourseFields')); + $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Add')); +} elseif ($action == 'edit') { + $interbreadcrumb[] = array('url' => 'course_fields.php', 'name' => get_lang('CourseFields')); + $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Edit')); +} else { + $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('CourseFields')); +} + +//jqgrid will use this URL to do the selects +$url = api_get_path(WEB_AJAX_PATH) . 'model.ajax.php?a=get_extra_fields&type=course'; + +//The order is important you need to check the the $column variable in the model.ajax.php file +$columns = array( + get_lang('Name'), + get_lang('FieldLabel'), + get_lang('Type'), + get_lang('FieldChangeability'), + get_lang('Visibility'), + get_lang('Filter'), + get_lang('FieldOrder'), + get_lang('Actions') +); + +//Column config +$column_model = array( + array( + 'name' => 'field_display_text', + 'index' => 'field_display_text', + 'width' => '180', + 'align' => 'left' + ), + array( + 'name' => 'field_variable', + 'index' => 'field_variable', + 'width' => '', + 'align' => 'left', + 'sortable' => 'true' + ), + array( + 'name' => 'field_type', + 'index' => 'field_type', + 'width' => '', + 'align' => 'left', + 'sortable' => 'true' + ), + array( + 'name' => 'field_changeable', + 'index' => 'field_changeable', + 'width' => '50', + 'align' => 'left', + 'sortable' => 'true' + ), + array( + 'name' => 'field_visible', + 'index' => 'field_visible', + 'width' => '40', + 'align' => 'left', + 'sortable' => 'true' + ), + array( + 'name' => 'field_filter', + 'index' => 'field_filter', + 'width' => '30', + 'align' => 'left', + 'sortable' => 'true' + ), + array( + 'name' => 'field_order', + 'index' => 'field_order', + 'width' => '40', + 'align' => 'left', + 'sortable' => 'true' + ), + array( + 'name' => 'actions', + 'index' => 'actions', + 'width' => '100', + 'align' => 'left', + 'formatter' => 'action_formatter', + 'sortable' => 'false' + ) +); + +//Autowidth +$extra_params['autowidth'] = 'true'; +//height auto +$extra_params['height'] = 'auto'; +$extra_params['sortname'] = 'field_order'; + +//With this function we can add actions to the jgrid (edit, delete, etc) +$actionLinks = ' +function action_formatter(cellvalue, options, rowObject) { + return \'' + . Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL) . '' + . ' ' + . Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL) . '\'; +}'; + +$htmlHeadXtra[] = ' +'; + +// The header. +Display::display_header(null); + +$obj = new CourseField(); + +// Action handling: Add +switch ($action) { + case 'add': + if (api_get_session_id() != 0 && !api_is_allowed_to_session_edit(false, true)) { + api_not_allowed(); + } + + $url = api_get_self() . '?action=' . Security::remove_XSS($_GET['action']); + $form = $obj->return_form($url, 'add'); + + // The validation or display + if ($form->validate()) { + if ($check) { + $values = $form->exportValues(); + $res = $obj->save($values); + + if ($res) { + Display::display_confirmation_message(get_lang('ItemAdded')); + } + } + + $obj->display(); + } else { + echo '
'; + echo '' . Display::return_icon('back.png', get_lang('Back'), '', + ICON_SIZE_MEDIUM) . ''; + echo '
'; + + $form->addElement('hidden', 'sec_token'); + $form->setConstants(array('sec_token' => $token)); + $form->display(); + } + break; + case 'edit': + // Action handling: Editing + $url = api_get_self() . '?action=' . Security::remove_XSS($_GET['action']) . '&id=' . intval($_GET['id']); + $form = $obj->return_form($url, 'edit'); + + // The validation or display + if ($form->validate()) { + if ($check) { + $values = $form->exportValues(); + $res = $obj->update($values); + + Display::display_confirmation_message( + sprintf(get_lang('ItemUpdated'), $values['field_display_text']), + false + ); + } + $obj->display(); + } else { + echo '
'; + echo ''; + echo Display::return_icon('back.png', get_lang('Back'), '', ICON_SIZE_MEDIUM); + echo ''; + echo '
'; + + $form->addElement('hidden', 'sec_token'); + $form->setConstants(array('sec_token' => $token)); + $form->display(); + } + break; + case 'delete': + // Action handling: delete + if ($check) { + $res = $obj->delete($_GET['id']); + + if ($res) { + Display::display_confirmation_message(get_lang('ItemDeleted')); + } + } + + $obj->display(); + break; + default: + $obj->display(); + break; +} + +Display :: display_footer(); diff --git a/main/admin/index.php b/main/admin/index.php index 2f77193db1..dd6c7c7746 100644 --- a/main/admin/index.php +++ b/main/admin/index.php @@ -140,6 +140,9 @@ if (api_is_platform_admin()) { if (isset($extAuthSource) && isset($extAuthSource['ldap']) && count($extAuthSource['ldap']) > 0) { $items[] = array('url'=>'ldap_import_students.php', 'label' => get_lang('ImportLDAPUsersIntoCourse')); } + + $items[] = array('url'=>'course_fields.php', 'label' => get_lang('ManageCourseFields')); + $blocks['courses']['items'] = $items; $blocks['courses']['extra'] = null; diff --git a/main/inc/lib/CourseField.class.php b/main/inc/lib/CourseField.class.php new file mode 100644 index 0000000000..64b4300779 --- /dev/null +++ b/main/inc/lib/CourseField.class.php @@ -0,0 +1,105 @@ +'; + echo '' . Display::return_icon('back.png', get_lang('BackTo') . ' ' . get_lang('PlatformAdmin'), '', ICON_SIZE_MEDIUM) . ''; + echo '' . Display::return_icon('add_user_fields.png', get_lang('Add'), '', ICON_SIZE_MEDIUM) . ''; + + echo ''; + echo Display::grid_html('course_fields'); + } + + public function return_form($url, $action) { + $form = new FormValidator('course_field', 'post', $url); + $id = isset($_GET['id']) ? intval($_GET['id']) : null; + $form->addElement('hidden', 'id', $id); + + // Settting the form elements + $header = get_lang('Add'); + $defaults = array(); + + if ($action == 'edit') { + $header = get_lang('Modify'); + // Setting the defaults + $defaults = $this->get($id); + } + + $form->addElement('header', $header); + $form->addElement('text', 'field_display_text', get_lang('Name'), array('class' => 'span5')); + + // Field type + $types = self::get_field_types(); + + $form->addElement('select', 'field_type', get_lang('FieldType'), $types, array('id' => 'field_type', 'class' => 'chzn-select', 'data-placeholder' => get_lang('Select'))); + $form->addElement('label', get_lang('Example'), '
-
'); + + //$form->addElement('advanced_settings',''.get_lang('AdvancedParameters').''); + //$form->addElement('html','