Deprecating function select_and_sort_categories use select_ajax element see #6836

1.9.x
Julio Montoya 12 years ago
parent 37b222d683
commit d8d4c94603
  1. 5
      main/admin/course_add.php
  2. 2
      main/admin/course_edit.php
  3. 18
      main/admin/course_list.php
  4. 60
      main/admin/course_request_edit.php
  5. 47
      main/admin/course_request_review.php
  6. 18
      main/create_course/add_course.php
  7. 3
      main/inc/ajax/course.ajax.php
  8. 1
      main/inc/lib/course.lib.php
  9. 78
      main/inc/lib/course_request.lib.php
  10. 5
      main/inc/lib/formvalidator/Element/select_ajax.php

@ -40,14 +40,13 @@ if ($_configuration['multiple_access_urls']) {
$res = Database::query($sql);
$teachers = array();
//$teachers[0] = '-- '.get_lang('NoManager').' --';
while ($obj = Database::fetch_object($res)) {
$teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname);
}
// Build the form.
$form = new FormValidator('update_course');
$form->addElement('header', '', $tool_name);
$form->addElement('header', $tool_name);
// Title
$form->add_textfield('title', get_lang('Title'), true, array ('class' => 'span6'));
@ -161,7 +160,5 @@ if ($form->validate()) {
$content = $form->return_form();
$tpl = new Template($tool_name);
$tpl->assign('actions', $actions);
$tpl->assign('message', $message);
$tpl->assign('content', $content);
$tpl->display_one_col_template();

@ -186,7 +186,7 @@ $url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$categoryList = array();
if (!empty($course['category_code'])) {
$data = getCategory($course['category_code']);
$categoryList[] = array('id' => $course['category_code'], 'text' => $data['name']);
$categoryList[] = array('id' => $data['code'], 'text' => $data['name']);
}
$form->addElement('select_ajax', 'category_code', get_lang('CourseFaculty'), null, array('url' => $url, 'defaults' => $categoryList));

@ -18,6 +18,7 @@ $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script();
require_once '../gradebook/lib/be/gradebookitem.class.php';
require_once '../gradebook/lib/be/category.class.php';
require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
/**
* Get the number of courses which will be displayed
@ -186,9 +187,20 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
$form->addElement('header', $tool_name);
$form->add_textfield('keyword_code', get_lang('CourseCode'), false);
$form->add_textfield('keyword_title', get_lang('Title'), false);
$categories = array();
$categories_select = $form->addElement('select', 'keyword_category', get_lang('CourseFaculty'), $categories);
CourseManager::select_and_sort_categories($categories_select);
// Category code
$url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$form->addElement(
'select_ajax',
'keyword_category',
get_lang('CourseFaculty'),
null,
array(
'url' => $url
)
);
$el = $form->addElement('select_language', 'keyword_language', get_lang('CourseLanguage'));
$el->addOption(get_lang('All'), '%');
$form->addElement('radio', 'keyword_visibility', get_lang("CourseAccess"), get_lang('OpenToTheWorld'), COURSE_VISIBILITY_OPEN_WORLD);

@ -13,7 +13,7 @@
$language_file = array('admin', 'create_course');
$cidReset = true;
require '../inc/global.inc.php';
require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN;
$tool_name = get_lang('CourseRequestEdit');
@ -23,6 +23,7 @@ require_once api_get_path(LIBRARY_PATH).'add_course.lib.inc.php';
require_once api_get_path(CONFIGURATION_PATH).'course_info.conf.php';
require_once api_get_path(LIBRARY_PATH).'course_request.lib.php';
require_once api_get_path(LIBRARY_PATH).'mail.lib.inc.php';
require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
// Including a configuration file.
require_once api_get_path(CONFIGURATION_PATH).'add_course.conf.php';
@ -56,7 +57,7 @@ if ($course_validation_feature) {
$form = new FormValidator('add_course', 'post', 'course_request_edit.php?id='.$id.'&caller='.$caller);
// Form title.
$form->addElement('header', '', $tool_name);
$form->addElement('header', $tool_name);
// Title.
$form->addElement('text', 'title', get_lang('CourseName'), array('size' => '60', 'id' => 'title'));
@ -64,9 +65,25 @@ if ($course_validation_feature) {
$form->addRule('title', get_lang('ThisFieldIsRequired'), 'required');
// Course category.
$categories_select = $form->addElement('select', 'category_code', get_lang('Fac'), array());
$form->applyFilter('category_code', 'html_filter');
CourseManager::select_and_sort_categories($categories_select);
$url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$categoryList = array();
if (!empty($course_request_info['category_code'])) {
$data = getCategory($course_request_info['category_code']);
$categoryList[] = array('id' => $data['code'], 'text' => $data['name']);
}
$form->addElement(
'select_ajax',
'category_code',
get_lang('CourseFaculty'),
null,
array(
'url' => $url,
'defaults' => $categoryList
)
);
// Course code.
$form->add_textfield('wanted_code', get_lang('Code'), false, array('size' => '$maxlength', 'maxlength' => $maxlength));
@ -76,7 +93,6 @@ if ($course_validation_feature) {
// The teacher.
$titular = $form->add_textfield('tutor_name', get_lang('Professor'), null, array('size' => '60', 'disabled' => 'disabled'));
//$form->applyFilter('tutor_name', 'html_filter');
// Description of the requested course.
$form->addElement('textarea', 'description', get_lang('Description'), array('style' => 'border:#A5ACB2 solid 1px; font-family:arial,verdana,helvetica,sans-serif; font-size:12px', 'rows' => '3', 'cols' => '116'));
@ -98,15 +114,15 @@ if ($course_validation_feature) {
$form->addElement('checkbox', 'exemplary_content', get_lang('FillWithExemplaryContent'));
// Submit buttons.
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'save_button', get_lang('Save'), array('class' => 'save'));
$submit_buttons[] = $form->createElement('style_submit_button', 'save_button', get_lang('Save'), array('class' => 'save'));
if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED) {
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'accept_button', get_lang('Accept'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/accept.png);'));
$submit_buttons[] = $form->createElement('style_submit_button', 'accept_button', get_lang('Accept'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/accept.png);'));
}
if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && $course_request_info['status'] != COURSE_REQUEST_REJECTED) {
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'reject_button', get_lang('Reject'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/error.png);'));
$submit_buttons[] = $form->createElement('style_submit_button', 'reject_button', get_lang('Reject'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/error.png);'));
}
if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && intval($course_request_info['info']) <= 0) {
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'ask_info_button', get_lang('AskAdditionalInfo'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'request_info.gif);'));
$submit_buttons[] = $form->createElement('style_submit_button', 'ask_info_button', get_lang('AskAdditionalInfo'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'request_info.gif);'));
}
$form->addGroup($submit_buttons);
@ -127,7 +143,7 @@ if ($course_validation_feature) {
$values['course_language'] = $course_request_info['course_language'];
$values['title'] = $course_request_info['title'];
$values['description'] = $course_request_info['description'];
$values['category_code'] = $course_request_info['category_code'];
//$values['category_code'] = $course_request_info['category_code'];
$values['tutor_name'] = $course_request_info['tutor_name'];
$values['visual_code'] = $course_request_info['visual_code'];
$values['request_date'] = $course_request_info['request_date'];
@ -140,12 +156,7 @@ if ($course_validation_feature) {
// Validate the form and perform the ordered actions.
if ($form->validate()) {
$course_request_values = $form->exportValues();
// Filter incoming data.
foreach ($course_request_values as &$value) {
$value = trim(Security::remove_XSS(stripslashes($value)));
}
$course_request_values = $form->getSubmitValues();
// Detection which submit button has been pressed.
$submit_button = isset($_POST['save_button']) ? 'save_button'
@ -164,7 +175,8 @@ if ($course_validation_feature) {
$is_error_message = false;
// Update the course request.
$update_ok = CourseRequestManager::update_course_request($id,
$update_ok = CourseRequestManager::update_course_request(
$id,
$course_request_values['wanted_code'],
$course_request_values['title'],
$course_request_values['description'],
@ -177,7 +189,7 @@ if ($course_validation_feature) {
);
if ($update_ok) {
$message[] = sprintf(get_lang(CourseRequestUpdated), $course_request_values['wanted_code']);
$message[] = sprintf(get_lang('CourseRequestUpdated'), $course_request_values['wanted_code']);
switch ($submit_button) {
case 'accept_button':
@ -209,7 +221,7 @@ if ($course_validation_feature) {
//$message = 'The button "'.$submit_button.'" has been pressed.';
} else {
$message[] = sprintf(get_lang(CourseRequestUpdateFailed), $course_request_values['wanted_code']);
$message[] = sprintf(get_lang('CourseRequestUpdateFailed'), $course_request_values['wanted_code']);
$is_error_message = true;
}
@ -223,22 +235,18 @@ if ($course_validation_feature) {
$back_url = api_add_url_param($back_url, 'is_error_message=1', false);
}
header('location:'.$back_url);
exit;
} else {
$message = $course_request_values['wanted_code'].' - '.get_lang('CourseCodeAlreadyExists');
$is_error_message = true;
}
}
}
} else {
// Prepare an error message notifying that the course validation feature has not been enabled.
$link_to_setting = api_get_path(WEB_CODE_PATH).'admin/settings.php?category=Platform#course_validation';
$link_to_setting = api_get_path(WEB_CODE_PATH).'admin/settings.php?search_field=course_validation&submit_button=&category=search_setting';
$message = sprintf(get_lang('PleaseActivateCourseValidationFeature'), sprintf('<strong><a href="%s">%s</a></strong>', $link_to_setting, get_lang('EnableCourseValidation')));
$is_error_message = true;
}
// Functions.

@ -16,7 +16,7 @@
$language_file = array('admin', 'create_course');
$cidReset = true;
require '../inc/global.inc.php';
require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script();
@ -64,12 +64,10 @@ if ($course_validation_feature) {
$message = sprintf(get_lang('CourseRequestAcceptanceFailed'), $course_request_code);
$is_error_message = true;
}
}
/**
* Course rejection
*/
elseif (!empty($reject_course_request)) {
} elseif (!empty($reject_course_request)) {
/**
* Course rejection
*/
$course_request_code = CourseRequestManager::get_course_request_code($reject_course_request);
$result = CourseRequestManager::reject_course_request($reject_course_request);
if ($result) {
@ -79,12 +77,12 @@ if ($course_validation_feature) {
$message = sprintf(get_lang('CourseRequestRejectionFailed'), $course_request_code);
$is_error_message = true;
}
}
} elseif (!empty($request_info)) {
/**
* Sending to the teacher a request for additional information about the proposed course.
*/
/**
* Sending to the teacher a request for additional information about the proposed course.
*/
elseif (!empty($request_info)) {
$course_request_code = CourseRequestManager::get_course_request_code($request_info);
$result = CourseRequestManager::ask_for_additional_info($request_info);
if ($result) {
@ -94,12 +92,10 @@ if ($course_validation_feature) {
$message = sprintf(get_lang('CourseRequestInfoFailed'), $course_request_code);
$is_error_message = true;
}
}
/**
* Deletion of a course request.
*/
elseif (!empty($delete_course_request)) {
} elseif (!empty($delete_course_request)) {
/**
* Deletion of a course request.
*/
$course_request_code = CourseRequestManager::get_course_request_code($delete_course_request);
$result = CourseRequestManager::delete_course_request($delete_course_request);
if ($result) {
@ -109,15 +105,13 @@ if ($course_validation_feature) {
$message = sprintf(get_lang('CourseRequestDeletionFailed'), $course_request_code);
$is_error_message = true;
}
}
/**
* Form actions: delete.
*/
elseif (DELETE_ACTION_ENABLED && isset($_POST['action'])) {
} elseif (DELETE_ACTION_ENABLED && isset($_POST['action'])) {
/**
* Form actions: delete.
*/
switch ($_POST['action']) {
// Delete selected courses
case 'delete_course_requests' :
case 'delete_course_requests':
$course_requests = $_POST['course_request'];
if (is_array($_POST['course_request']) && !empty($_POST['course_request'])) {
$success = true;
@ -151,10 +145,7 @@ function get_number_of_requests() {
*/
function get_request_data($from, $number_of_items, $column, $direction) {
global $keyword;
$course_request_table = Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST);
$users_table = Database :: get_main_table(TABLE_MAIN_USER);
$course_users_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
if (DELETE_ACTION_ENABLED) {
$sql = "SELECT id AS col0,

@ -23,6 +23,7 @@ $cidReset = true;
// Including the global initialization file.
require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
// Section for the tabs.
$this_section = SECTION_COURSES;
@ -92,11 +93,18 @@ $advanced = '<a href="javascript://" onclick=" return advanced_parameters()"><sp
$form -> addElement('advanced_settings',$advanced);
$form -> addElement('html','<div id="options" style="display:none">');
// Course category.
$categories_select = $form->addElement('select', 'category_code', array(get_lang('Fac'), get_lang('TargetFac')), array(), array('id'=> 'category_code','class'=>'chzn-select', 'style'=>'width:350px'));
$form->applyFilter('category_code', 'html_filter');
$categories_select->addOption('-', '');
CourseManager::select_and_sort_categories($categories_select);
// Category category.
$url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$form->addElement(
'select_ajax',
'category_code',
get_lang('CourseFaculty'),
null,
array(
'url' => $url
)
);
// Course code
$form->add_textfield('wanted_code', array(get_lang('Code'), get_lang('OnlyLettersAndNumbers')), '', array('class' => 'span3', 'maxlength' => CourseManager::MAX_COURSE_LENGTH_CODE));

@ -41,9 +41,8 @@ switch ($action) {
break;
case 'search_category':
require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
if (api_is_platform_admin()) {
if (api_is_platform_admin() || api_is_allowed_to_create_course()) {
$results = searchCategoryByKeyword($_REQUEST['q']);
if (!empty($results)) {
foreach ($results as &$item) {
$item['id'] = $item['code'];

@ -2142,6 +2142,7 @@ class CourseManager
* @param string $defaultCode the option value to select by default (used mainly for edition of courses)
* @param string $parentCode the parent category of the categories added (default=null for root category)
* @param string $padding the indent param (you shouldn't indicate something here)
* @deprecated use the select_ajax solution see admin/course_edit.php
*/
public static function select_and_sort_categories($element, $defaultCode = null, $parentCode = null , $padding = null)
{

@ -77,7 +77,7 @@ class CourseRequestManager {
if (!is_array($user_info)) {
return false;
}
$tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
$request_date = api_get_utc_datetime();
@ -184,8 +184,18 @@ class CourseRequestManager {
* @param int/string $user_id
* @return bool Returns TRUE on success or FALSE on failure.
*/
public static function update_course_request($id, $wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience, $user_id, $exemplary_content) {
global $_configuration;
public static function update_course_request(
$id,
$wanted_code,
$title,
$description,
$category_code,
$course_language,
$objetives,
$target_audience,
$user_id,
$exemplary_content
) {
$id = (int)$id;
$wanted_code = trim($wanted_code);
$user_id = (int)$user_id;
@ -199,7 +209,7 @@ class CourseRequestManager {
return false;
}
// Retrieve request's data
// Retrieve request data
$course_request_info = self::get_course_request_info($id);
if (!is_array($course_request_info)) {
return false;
@ -251,10 +261,23 @@ class CourseRequestManager {
tutor_name = "%s", visual_code = "%s", request_date = "%s",
objetives = "%s", target_audience = "%s", status = "%s", info = "%s", exemplary_content = "%s"
WHERE id = '.$id, Database::get_main_table(TABLE_MAIN_COURSE_REQUEST),
Database::escape_string($code), Database::escape_string($user_id), Database::escape_string($directory), Database::escape_string($db_name),
Database::escape_string($course_language), Database::escape_string($title), Database::escape_string($description), Database::escape_string($category_code),
Database::escape_string($tutor_name), Database::escape_string($visual_code), Database::escape_string($request_date),
Database::escape_string($objetives), Database::escape_string($target_audience), Database::escape_string($status), Database::escape_string($info), Database::escape_string($exemplary_content));
Database::escape_string($code),
Database::escape_string($user_id),
Database::escape_string($directory),
Database::escape_string($db_name),
Database::escape_string($course_language),
Database::escape_string($title),
Database::escape_string($description),
Database::escape_string($category_code),
Database::escape_string($tutor_name),
Database::escape_string($visual_code),
Database::escape_string($request_date),
Database::escape_string($objetives),
Database::escape_string($target_audience),
Database::escape_string($status),
Database::escape_string($info),
Database::escape_string($exemplary_content)
);
$result_sql = Database::query($sql);
return $result_sql !== false;
@ -326,8 +349,9 @@ class CourseRequestManager {
* @param int/string $id The id (an integer number) of the corresponding database record.
* @return string/bool Returns the code of the newly created course or FALSE on failure.
*/
public static function accept_course_request($id) {
global $_configuration;
public static function accept_course_request($id)
{
$id = (int)$id;
// Retrieve request's data
@ -337,44 +361,45 @@ class CourseRequestManager {
}
// Make all the checks again before the new course creation.
if (CourseManager::course_code_exists($wanted_code)) {
/*if (CourseManager::course_code_exists($wanted_code)) {
return false;
}
}*/
$user_id = (int)$course_request_info['user_id'];
if ($user_id <= 0) {
return false;
}
$user_info = api_get_user_info($user_id);
if (!is_array($user_info)) {
return false;
}
// Create the requested course
$params = array();
$params['title'] = $course_request_info['title'];
$params['category_code'] = $course_request_info['category_code'];
$params['course_category'] = $course_request_info['category_code'];
$params['course_language'] = $course_request_info['course_language'];
$params['exemplary_content'] = intval($course_request_info['exemplary_content']) > 0;
$params['wanted_code'] = $course_request_info['code'];
$params['user_id'] = $course_request_info['user_id'];
$params['tutor_name'] = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
$params['tutor_name'] = api_get_person_name($user_info['firstname'], $user_info['lastname']);
$course_info = CourseManager::create_course($params);
if (!empty($course_info)) {
// Mark the request as accepted.
$sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id;
Database::query($sql);
// E-mail notification.
// E-mail language: The platform language seems to be the best choice
$email_language = api_get_setting('platformLanguage');
$email_subject = sprintf(get_lang('CourseRequestAcceptedEmailSubject', null, $email_language), '['.api_get_setting('siteName').']', $course_info['code']);
$email_body = get_lang('Dear', null, $email_language).' ';
$email_body .= api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $email_language).",\n\n";
$email_body .= sprintf(get_lang('CourseRequestAcceptedEmailText', null, $email_language), $wanted_code, $course_info['code'], api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/')."\n";
@ -384,13 +409,13 @@ class CourseRequestManager {
$email_body .= get_lang('Phone', null, $email_language).': '.api_get_setting('administratorTelephone')."\n";
$email_body .= get_lang('Email', null, $email_language).': '.api_get_setting('emailAdministrator', null, $email_language)."\n";
$email_body .= "\n".get_lang('CourseRequestLegalNote', null, $email_language)."\n";
$sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS);
$sender_email = get_setting('emailAdministrator');
$recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
$recipient_email = $user_info['mail'];
$extra_headers = 'Bcc: '.$sender_email;
@api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email);
return $course_info['code'];
}
@ -402,7 +427,8 @@ class CourseRequestManager {
* @param int/string $id The id (an integer number) of the corresponding database record.
* @return bool Returns TRUE on success or FALSE on failure.
*/
public static function reject_course_request($id) {
public static function reject_course_request($id)
{
$id = (int)$id;

@ -47,12 +47,11 @@ class HTML_QuickForm_Select_Ajax extends HTML_QuickForm_select
$dataCondition = null;
$tags = null;
if (!empty($defaultValues)) {
$result = json_encode($defaultValues);
$result = str_replace('"id"', 'id', $result);
$result = str_replace('"text"', 'text', $result);
$dataCondition = '$("#'.$this->getAttribute('name').'").select2("data", '.$result.')';
$tags = ',tags : function() { return '.$result.'} ';
$tags = ', tags : function() { return '.$result.'} ';
}
$html .= '<script>
@ -87,7 +86,7 @@ class HTML_QuickForm_Select_Ajax extends HTML_QuickForm_select
});
</script>';
$html .= '<input id="'.$this->getAttribute('name').'" name = "'.$this->getAttribute('name').'" />';
$html .= '<input id="'.$this->getAttribute('name').'" name="'.$this->getAttribute('name').'" />';
return $html;
}
}
Loading…
Cancel
Save