parent
9aaf70ca9d
commit
dd4416488f
@ -1,323 +0,0 @@ |
|||||||
<?php |
|
||||||
/* For licensing terms, see /license.txt */ |
|
||||||
|
|
||||||
/** |
|
||||||
* View (MVC patter) for courses. |
|
||||||
* |
|
||||||
* @todo fix this. use twig templates |
|
||||||
* |
|
||||||
* @author Christian Fasanando <christian1827@gmail.com> - Beeznest |
|
||||||
* |
|
||||||
* @package chamilo.auth |
|
||||||
*/ |
|
||||||
|
|
||||||
// Access rights: anonymous users can't do anything usefull here. |
|
||||||
api_block_anonymous_users(); |
|
||||||
$stok = Security::get_token(); |
|
||||||
$courses_without_category = isset($courses_in_category[0]) ? $courses_in_category[0] : null; |
|
||||||
echo '<div id="actions" class="actions">'; |
|
||||||
if ($action != 'createcoursecategory') { |
|
||||||
echo '<a href="'.api_get_self().'?action=createcoursecategory">'; |
|
||||||
echo Display::return_icon('new_folder.png', get_lang('CreateCourseCategory'), '', '32'); |
|
||||||
echo '</a>'; |
|
||||||
} |
|
||||||
echo '</div>'; |
|
||||||
|
|
||||||
if (!empty($message)) { |
|
||||||
echo Display::return_message($message, 'confirm', false); |
|
||||||
} |
|
||||||
|
|
||||||
$allowCollapsable = api_get_configuration_value('allow_user_course_category_collapsable'); |
|
||||||
$teachersIcon = Display::return_icon('teacher.png', get_lang('Teachers'), null, ICON_SIZE_TINY); |
|
||||||
|
|
||||||
// COURSES WITH CATEGORIES |
|
||||||
if (!empty($user_course_categories)) { |
|
||||||
$counter = 0; |
|
||||||
$last = end($user_course_categories); |
|
||||||
foreach ($user_course_categories as $row) { |
|
||||||
echo Display::page_subheader($row['title']); |
|
||||||
echo '<a name="category'.$row['id'].'"></a>'; |
|
||||||
$url = api_get_path(WEB_CODE_PATH).'auth/courses.php?categoryid='.$row['id'].'&sec_token='.$stok; |
|
||||||
if (isset($_GET['categoryid']) && $_GET['categoryid'] == $row['id']) { |
|
||||||
?> |
|
||||||
<!-- We display the edit form for the category --> |
|
||||||
<form name="edit_course_category" method="post" action="courses.php?action=<?php echo $action; ?>">
|
|
||||||
<input type="hidden" name="edit_course_category" value="<?php echo $row['id']; ?>" />
|
|
||||||
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
|
||||||
<input type="text" name="title_course_category" value="<?php echo $row['title']; ?>" />
|
|
||||||
<button class="save" type="submit" name="submit_edit_course_category"><?php echo get_lang('Ok'); ?></button>
|
|
||||||
</form> |
|
||||||
<?php |
|
||||||
} |
|
||||||
if ($action != 'unsubscribe') { |
|
||||||
if ($allowCollapsable) { |
|
||||||
if (isset($row['collapsed']) && $row['collapsed'] == 0) { |
|
||||||
echo Display::url( |
|
||||||
'<i class="fa fa-folder-open"></i>', |
|
||||||
$url.'&action=set_collapsable&option=1' |
|
||||||
); |
|
||||||
} else { |
|
||||||
echo Display::url( |
|
||||||
'<i class="fa fa-folder"></i>', |
|
||||||
$url.'&action=set_collapsable&option=0' |
|
||||||
); |
|
||||||
} |
|
||||||
} ?> |
|
||||||
<a href="courses.php?action=sortmycourses&categoryid=<?php echo $row['id']; ?>&sec_token=<?php echo $stok; ?>#category<?php echo $row['id']; ?>">
|
|
||||||
<?php echo Display::display_icon('edit.png', get_lang('Edit'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php if (0 != $counter) { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&move=up&category=<?php echo $row['id']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::return_icon('up.png', get_lang('Up'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
?> |
|
||||||
<?php echo Display::return_icon('up_na.png', get_lang('Up'), '', 22); ?> |
|
||||||
<?php |
|
||||||
} |
|
||||||
if ($row['id'] != $last['id']) { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&move=down&category=<?php echo $row['id']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::return_icon('down.png', get_lang('Down'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
echo Display::return_icon('down_na.png', get_lang('Down'), '', 22); ?> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
<a href="courses.php?action=deletecoursecategory&id=<?php echo $row['id']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon( |
|
||||||
'delete.png', |
|
||||||
get_lang('Delete'), |
|
||||||
[ |
|
||||||
'onclick' => "javascript: if (!confirm('".addslashes( |
|
||||||
api_htmlentities( |
|
||||||
get_lang('CourseCategoryAbout2bedeleted'), |
|
||||||
ENT_QUOTES, |
|
||||||
api_get_system_encoding() |
|
||||||
) |
|
||||||
)."')) return false;", |
|
||||||
], |
|
||||||
22 |
|
||||||
); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} |
|
||||||
|
|
||||||
$counter++; |
|
||||||
echo '<br /><br />'; |
|
||||||
// Show the courses inside this category |
|
||||||
echo '<table class="data_table">'; |
|
||||||
$number_of_courses = isset($courses_in_category[$row['id']]) ? count($courses_in_category[$row['id']]) : 0; |
|
||||||
$key = 0; |
|
||||||
if (!empty($courses_in_category[$row['id']])) { |
|
||||||
foreach ($courses_in_category[$row['id']] as $course) { |
|
||||||
echo '<tr><td>'; |
|
||||||
echo '<a name="course'.$course['code'].'"></a>'; |
|
||||||
echo '<strong>'.$course['title'].'</strong>'; |
|
||||||
echo ' ('.$course['visual_code'].')'; |
|
||||||
echo '<br />'; |
|
||||||
echo $teachersIcon; |
|
||||||
echo ' '; |
|
||||||
echo CourseManager::getTeacherListFromCourseCodeToString($course['code']); |
|
||||||
echo '<br />'; |
|
||||||
|
|
||||||
if (api_get_setting('display_teacher_in_courselist') === 'true') { |
|
||||||
echo $course['tutor']; |
|
||||||
} |
|
||||||
echo '</td><td valign="top">'; |
|
||||||
if (isset($_GET['edit']) && $course['code'] == $_GET['edit']) { |
|
||||||
$edit_course = Security::remove_XSS($_GET['edit']); ?> |
|
||||||
|
|
||||||
<form name="edit_course_category" method="post" action="courses.php?action=<?php echo $action; ?>">
|
|
||||||
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
|
||||||
<input type="hidden" name="course_2_edit_category" value="<?php echo $edit_course; ?>" />
|
|
||||||
<select name="course_categories"> |
|
||||||
<option value="0"><?php echo get_lang('NoCourseCategory'); ?></option>
|
|
||||||
<?php foreach ($user_course_categories as $row) { |
|
||||||
?> |
|
||||||
<option value="<?php echo $row['id']; ?>"><?php echo $row['title']; ?></option>
|
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
</select> |
|
||||||
<button class="save" type="submit" name="submit_change_course_category"><?php echo get_lang('Ok'); ?></button>
|
|
||||||
</form> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
<div style="float:left;width:110px;"> |
|
||||||
<?php |
|
||||||
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') { |
|
||||||
$icon_title = get_lang('CourseDetails').' - '.$course['title']; ?> |
|
||||||
<a href="<?php echo api_get_path(WEB_CODE_PATH); ?>inc/ajax/course_home.ajax.php?a=show_course_information&code=<?php echo $course['code']; ?>" data-title="<?php echo $icon_title; ?>" title="<?php echo $icon_title; ?>" class="ajax">
|
|
||||||
<?php echo Display::return_icon('info.png', $icon_title, '', '22'); ?> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
</a> |
|
||||||
|
|
||||||
<?php if (isset($_GET['edit']) && $course['code'] == $_GET['edit']) { |
|
||||||
?> |
|
||||||
<?php echo Display::display_icon('edit_na.png', get_lang('Edit'), '', 22); ?> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&edit=<?php echo $course['code']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon('edit.png', get_lang('Edit'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
|
|
||||||
<?php if ($key > 0) { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&move=up&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon('up.png', get_lang('Up'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
?> |
|
||||||
<?php echo Display::display_icon('up_na.png', get_lang('Up'), '', 22); ?> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
|
|
||||||
<?php if ($key < $number_of_courses - 1) { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&move=down&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon('down.png', get_lang('Down'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
?> |
|
||||||
<?php echo Display::display_icon('down_na.png', get_lang('Down'), '', 22); ?> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
|
|
||||||
</div> |
|
||||||
<div style="float:left; margin-right:10px;"> |
|
||||||
<?php |
|
||||||
if ($course['status'] != 1) { |
|
||||||
if ($course['unsubscr'] == 1) { |
|
||||||
?> |
|
||||||
|
|
||||||
<form action="<?php echo api_get_self(); ?>" method="post" onsubmit="javascript: if (!confirm('<?php echo addslashes(api_htmlentities(get_lang("ConfirmUnsubscribeFromCourse"), ENT_QUOTES, api_get_system_encoding())); ?>')) return false">
|
|
||||||
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
|
||||||
<input type="hidden" name="unsubscribe" value="<?php echo $course['code']; ?>" />
|
|
||||||
<button class="btn btn-default" value="<?php echo get_lang('Unsubscribe'); ?>" name="unsub">
|
|
||||||
<?php echo get_lang('Unsubscribe'); ?> |
|
||||||
</button> |
|
||||||
</form> |
|
||||||
</div> |
|
||||||
<?php |
|
||||||
} |
|
||||||
} |
|
||||||
$key++; |
|
||||||
} |
|
||||||
echo '</table>'; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
echo Display::page_subheader(get_lang('NoCourseCategory')); |
|
||||||
echo '<table class="data_table">'; |
|
||||||
// COURSES WITHOUT CATEGORY |
|
||||||
if (!empty($courses_without_category)) { |
|
||||||
$number_of_courses = count($courses_without_category); |
|
||||||
$key = 0; |
|
||||||
foreach ($courses_without_category as $course) { |
|
||||||
echo '<tr><td>'; |
|
||||||
echo '<a name="course'.$course['code'].'"></a>'; |
|
||||||
echo '<strong>'.$course['title'].'</strong>'; |
|
||||||
echo ' ('.$course['visual_code'].')'; |
|
||||||
echo '<br />'; |
|
||||||
echo $teachersIcon; |
|
||||||
echo ' '; |
|
||||||
echo CourseManager::getTeacherListFromCourseCodeToString($course['code']); |
|
||||||
echo '<br />'; |
|
||||||
|
|
||||||
if (api_get_setting('display_teacher_in_courselist') === 'true') { |
|
||||||
echo $course['tutor']; |
|
||||||
} |
|
||||||
echo '</td><td valign="top">'; |
|
||||||
// the edit icon OR the edit dropdown list |
|
||||||
if (isset($_GET['edit']) && $course['code'] == $_GET['edit']) { |
|
||||||
$edit_course = Security::remove_XSS($_GET['edit']); ?> |
|
||||||
<div style="float:left;"> |
|
||||||
<form name="edit_course_category" method="post" action="courses.php?action=<?php echo $action; ?>">
|
|
||||||
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
|
||||||
<input type="hidden" name="course_2_edit_category" value="<?php echo $edit_course; ?>" />
|
|
||||||
<select name="course_categories"> |
|
||||||
<option value="0"><?php echo get_lang("NoCourseCategory"); ?></option>
|
|
||||||
<?php foreach ($user_course_categories as $row) { |
|
||||||
?> |
|
||||||
<option value="<?php echo $row['id']; ?>"><?php echo $row['title']; ?></option>
|
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
</select> |
|
||||||
<button class="save" type="submit" name="submit_change_course_category"><?php echo get_lang('Ok'); ?></button>
|
|
||||||
</form><br /> |
|
||||||
</div> |
|
||||||
<?php |
|
||||||
} ?> |
|
||||||
<div style="float:left; width:110px"> |
|
||||||
<?php |
|
||||||
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') { |
|
||||||
$icon_title = get_lang('CourseDetails').' - '.$course['title']; ?> |
|
||||||
<a href="<?php echo api_get_path(WEB_CODE_PATH); ?>inc/ajax/course_home.ajax.php?a=show_course_information&code=<?php echo $course['code']; ?>" data-title="<?php echo $icon_title; ?>" title="<?php echo $icon_title; ?>" class="ajax">
|
|
||||||
<?php echo Display::return_icon('info.png', $icon_title, '', '22'); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} |
|
||||||
if (isset($_GET['edit']) && $course['code'] == $_GET['edit']) { |
|
||||||
echo Display::display_icon('edit_na.png', get_lang('Edit'), '', 22); |
|
||||||
} else { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&edit=<?php echo $course['code']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon('edit.png', get_lang('Edit'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} |
|
||||||
if ($key > 0) { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&move=up&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon('up.png', get_lang('Up'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
echo Display::display_icon('up_na.png', get_lang('Up'), '', 22); |
|
||||||
} |
|
||||||
if ($key < $number_of_courses - 1) { |
|
||||||
?> |
|
||||||
<a href="courses.php?action=<?php echo $action; ?>&move=down&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
|
||||||
<?php echo Display::display_icon('down.png', get_lang('Down'), '', 22); ?> |
|
||||||
</a> |
|
||||||
<?php |
|
||||||
} else { |
|
||||||
echo Display::display_icon('down_na.png', get_lang('Down'), '', 22); |
|
||||||
} ?> |
|
||||||
</div> |
|
||||||
<div style="float:left; margin-right:10px;"> |
|
||||||
<!-- cancel subscrioption--> |
|
||||||
<?php |
|
||||||
if ($course['status'] != 1) { |
|
||||||
if ($course['unsubscr'] == 1) { |
|
||||||
?> |
|
||||||
<!-- changed link to submit to avoid action by the search tool indexer --> |
|
||||||
<form action="<?php echo api_get_self(); ?>" method="post" onsubmit="javascript: if (!confirm('<?php echo addslashes(api_htmlentities(get_lang("ConfirmUnsubscribeFromCourse"), ENT_QUOTES, api_get_system_encoding())); ?>')) return false;">
|
|
||||||
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
|
||||||
<input type="hidden" name="unsubscribe" value="<?php echo $course['code']; ?>" />
|
|
||||||
<button class="btn btn-default" value="<?php echo get_lang('Unsubscribe'); ?>" name="unsub">
|
|
||||||
<?php echo get_lang('Unsubscribe'); ?> |
|
||||||
</button> |
|
||||||
</form> |
|
||||||
</div> |
|
||||||
<?php |
|
||||||
} |
|
||||||
} ?> |
|
||||||
</td> |
|
||||||
</tr> |
|
||||||
<?php |
|
||||||
$key++; |
|
||||||
} |
|
||||||
} |
|
||||||
?> |
|
||||||
</table> |
|
@ -0,0 +1,460 @@ |
|||||||
|
<?php |
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
$cidReset = true; // Flag forcing the 'current course' reset |
||||||
|
|
||||||
|
require_once __DIR__.'/../inc/global.inc.php'; |
||||||
|
|
||||||
|
api_block_anonymous_users(); |
||||||
|
|
||||||
|
$auth = new Auth(); |
||||||
|
$user_course_categories = CourseManager::get_user_course_categories(api_get_user_id()); |
||||||
|
$courses_in_category = $auth->get_courses_in_category(); |
||||||
|
|
||||||
|
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; |
||||||
|
$currentUrl = api_get_self(); |
||||||
|
|
||||||
|
$interbreadcrumb[] = [ |
||||||
|
'url' => api_get_self(), |
||||||
|
'name' => get_lang('SortMyCourses'), |
||||||
|
]; |
||||||
|
|
||||||
|
// We are moving the course of the user to a different user defined course category (=Sort My Courses). |
||||||
|
if (isset($_POST['submit_change_course_category'])) { |
||||||
|
$result = $auth->updateCourseCategory($_POST['course_2_edit_category'], $_POST['course_categories']); |
||||||
|
if ($result) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('EditCourseCategorySucces')) |
||||||
|
); |
||||||
|
} |
||||||
|
header('Location: '.api_get_self()); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
// We edit course category |
||||||
|
if (isset($_POST['submit_edit_course_category']) && |
||||||
|
isset($_POST['title_course_category']) |
||||||
|
) { |
||||||
|
$result = $auth->store_edit_course_category($_POST['title_course_category'], $_POST['category_id']); |
||||||
|
if ($result) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('CourseCategoryEditStored')) |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
header('Location: '.api_get_self()); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
// We are creating a new user defined course category (= Create Course Category). |
||||||
|
if (isset($_POST['create_course_category']) && |
||||||
|
isset($_POST['title_course_category']) && |
||||||
|
strlen(trim($_POST['title_course_category'])) > 0 |
||||||
|
) { |
||||||
|
$result = $auth->store_course_category($_POST['title_course_category']); |
||||||
|
if ($result) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('CourseCategoryStored')) |
||||||
|
); |
||||||
|
} else { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message( |
||||||
|
get_lang('ACourseCategoryWithThisNameAlreadyExists'), |
||||||
|
'error' |
||||||
|
) |
||||||
|
); |
||||||
|
} |
||||||
|
header('Location: '.api_get_self()); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
// We are moving a course or category of the user up/down the list (=Sort My Courses). |
||||||
|
if (isset($_GET['move'])) { |
||||||
|
if (isset($_GET['course'])) { |
||||||
|
$result = $auth->move_course($_GET['move'], $_GET['course'], $_GET['category']); |
||||||
|
if ($result) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('CourseSortingDone')) |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
if (isset($_GET['category']) && !isset($_GET['course'])) { |
||||||
|
$result = $auth->move_category($_GET['move'], $_GET['category']); |
||||||
|
if ($result) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('CategorySortingDone')) |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
header('Location: '.api_get_self()); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
switch ($action) { |
||||||
|
case 'edit_category': |
||||||
|
$categoryId = isset($_GET['category_id']) ? (int) $_GET['category_id'] : 0; |
||||||
|
$categoryInfo = $auth->getUserCourseCategory($categoryId); |
||||||
|
if ($categoryInfo) { |
||||||
|
$categoryName = $categoryInfo['title']; |
||||||
|
$form = new FormValidator( |
||||||
|
'edit_course_category', |
||||||
|
'post', |
||||||
|
$currentUrl.'?action=edit_category' |
||||||
|
); |
||||||
|
$form->addText('title_course_category', get_lang('Name')); |
||||||
|
$form->addHidden('category_id', $categoryId); |
||||||
|
$form->addButtonSave(get_lang('Edit'), 'submit_edit_course_category'); |
||||||
|
$form->setDefaults(['title_course_category' => $categoryName]); |
||||||
|
$form->display(); |
||||||
|
} |
||||||
|
exit; |
||||||
|
break; |
||||||
|
case 'edit_course_category': |
||||||
|
$edit_course = (int) $_GET['course_id']; |
||||||
|
$defaultCategoryId = isset($_GET['category_id']) ? (int) $_GET['category_id'] : 0; |
||||||
|
$courseInfo = api_get_course_info_by_id($edit_course); |
||||||
|
|
||||||
|
if (empty($courseInfo)) { |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
$form = new FormValidator( |
||||||
|
'edit_course_category', |
||||||
|
'post', |
||||||
|
$currentUrl.'?action=edit_course_category' |
||||||
|
); |
||||||
|
|
||||||
|
$form->addHeader($courseInfo['title']); |
||||||
|
|
||||||
|
$options = []; |
||||||
|
foreach ($user_course_categories as $row) { |
||||||
|
$options[$row['id']] = $row['title']; |
||||||
|
} |
||||||
|
asort($options); |
||||||
|
|
||||||
|
$form->addSelect( |
||||||
|
'course_categories', |
||||||
|
get_lang('Categories'), |
||||||
|
$options, |
||||||
|
['disable_js' => true, 'placeholder' => get_lang('SelectAnOption')] |
||||||
|
); |
||||||
|
$form->addHidden('course_2_edit_category', $edit_course); |
||||||
|
|
||||||
|
if (!empty($defaultCategoryId)) { |
||||||
|
$form->setDefaults(['course_categories' => $defaultCategoryId]); |
||||||
|
} |
||||||
|
$form->addButtonSave(get_lang('Save'), 'submit_change_course_category'); |
||||||
|
$form->display(); |
||||||
|
exit; |
||||||
|
break; |
||||||
|
case 'deletecoursecategory': |
||||||
|
// we are deleting a course category |
||||||
|
if (isset($_GET['id'])) { |
||||||
|
if (Security::check_token('get')) { |
||||||
|
$result = $auth->delete_course_category($_GET['id']); |
||||||
|
if ($result) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('CourseCategoryDeleted')) |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
header('Location: '.api_get_self()); |
||||||
|
exit; |
||||||
|
break; |
||||||
|
case 'createcoursecategory': |
||||||
|
$form = new FormValidator( |
||||||
|
'create_course_category', |
||||||
|
'post', |
||||||
|
$currentUrl.'?action=createcoursecategory' |
||||||
|
); |
||||||
|
$form->addText('title_course_category', get_lang('Name')); |
||||||
|
$form->addButtonSave(get_lang('AddCategory'), 'create_course_category'); |
||||||
|
$form->display(); |
||||||
|
exit; |
||||||
|
break; |
||||||
|
case 'set_collapsable': |
||||||
|
if (!api_get_configuration_value('allow_user_course_category_collapsable')) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
$userId = api_get_user_id(); |
||||||
|
$categoryId = isset($_REQUEST['categoryid']) ? (int) $_REQUEST['categoryid'] : 0; |
||||||
|
$option = isset($_REQUEST['option']) ? (int) $_REQUEST['option'] : 0; |
||||||
|
$redirect = isset($_REQUEST['redirect']) ? $_REQUEST['redirect'] : 0; |
||||||
|
|
||||||
|
if (empty($userId) || empty($categoryId)) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
$table = Database::get_main_table(TABLE_USER_COURSE_CATEGORY); |
||||||
|
$sql = "UPDATE $table |
||||||
|
SET collapsed = $option |
||||||
|
WHERE user_id = $userId AND id = $categoryId"; |
||||||
|
Database::query($sql); |
||||||
|
Display::addFlash(Display::return_message(get_lang('Updated'))); |
||||||
|
|
||||||
|
if ($redirect === 'home') { |
||||||
|
$url = api_get_path(WEB_PATH).'user_portal.php'; |
||||||
|
header('Location: '.$url); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
$url = api_get_self(); |
||||||
|
header('Location: '.$url); |
||||||
|
exit; |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
Display::display_header(); |
||||||
|
|
||||||
|
$stok = Security::get_token(); |
||||||
|
$courses_without_category = isset($courses_in_category[0]) ? $courses_in_category[0] : null; |
||||||
|
echo '<div id="actions" class="actions">'; |
||||||
|
if ($action != 'createcoursecategory') { |
||||||
|
echo '<a class="ajax" href="'.$currentUrl.'?action=createcoursecategory">'; |
||||||
|
echo Display::return_icon('new_folder.png', get_lang('CreateCourseCategory'), '', '32'); |
||||||
|
echo '</a>'; |
||||||
|
} |
||||||
|
echo '</div>'; |
||||||
|
|
||||||
|
if (!empty($message)) { |
||||||
|
echo Display::return_message($message, 'confirm', false); |
||||||
|
} |
||||||
|
|
||||||
|
$allowCollapsable = api_get_configuration_value('allow_user_course_category_collapsable'); |
||||||
|
$teachersIcon = Display::return_icon('teacher.png', get_lang('Teachers'), null, ICON_SIZE_TINY); |
||||||
|
|
||||||
|
// COURSES WITH CATEGORIES |
||||||
|
if (!empty($user_course_categories)) { |
||||||
|
$counter = 0; |
||||||
|
$last = end($user_course_categories); |
||||||
|
foreach ($user_course_categories as $row) { |
||||||
|
echo Display::page_subheader($row['title']); |
||||||
|
echo '<a name="category'.$row['id'].'"></a>'; |
||||||
|
$url = $currentUrl.'?categoryid='.$row['id'].'&sec_token='.$stok; |
||||||
|
if ($allowCollapsable) { |
||||||
|
if (isset($row['collapsed']) && $row['collapsed'] == 0) { |
||||||
|
echo Display::url( |
||||||
|
'<i class="fa fa-folder-open"></i>', |
||||||
|
$url.'&action=set_collapsable&option=1' |
||||||
|
); |
||||||
|
} else { |
||||||
|
echo Display::url( |
||||||
|
'<i class="fa fa-folder"></i>', |
||||||
|
$url.'&action=set_collapsable&option=0' |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
echo Display::url( |
||||||
|
Display::return_icon('edit.png', get_lang('Edit'), '', 22), |
||||||
|
$currentUrl.'?action=edit_category&category_id='.$row['id'].'&sec_token='.$stok, |
||||||
|
['class' => 'ajax'] |
||||||
|
); |
||||||
|
|
||||||
|
if (0 != $counter) { |
||||||
|
echo Display::url( |
||||||
|
Display::return_icon('up.png', get_lang('Up'), '', 22), |
||||||
|
$currentUrl.'?move=up&category='.$row['id'].'&sec_token='.$stok |
||||||
|
); |
||||||
|
} else { |
||||||
|
echo Display::return_icon('up_na.png', get_lang('Up'), '', 22); |
||||||
|
} |
||||||
|
if ($row['id'] != $last['id']) { |
||||||
|
echo Display::url( |
||||||
|
Display::return_icon('down.png', get_lang('Down'), '', 22), |
||||||
|
$currentUrl.'?move=down&category='.$row['id'].'&sec_token='.$stok |
||||||
|
); |
||||||
|
} else { |
||||||
|
echo Display::return_icon('down_na.png', get_lang('Down'), '', 22); |
||||||
|
} |
||||||
|
|
||||||
|
echo Display::url( |
||||||
|
Display::return_icon( |
||||||
|
'delete.png', |
||||||
|
get_lang('Delete'), |
||||||
|
[ |
||||||
|
'onclick' => "javascript: if (!confirm('".addslashes( |
||||||
|
api_htmlentities( |
||||||
|
get_lang('CourseCategoryAbout2bedeleted'), |
||||||
|
ENT_QUOTES, |
||||||
|
api_get_system_encoding() |
||||||
|
) |
||||||
|
)."')) return false;", |
||||||
|
], |
||||||
|
22 |
||||||
|
), |
||||||
|
$currentUrl.'?action=deletecoursecategory&id='.$row['id'].'&sec_token='.$stok |
||||||
|
); |
||||||
|
|
||||||
|
$counter++; |
||||||
|
echo '<br /><br />'; |
||||||
|
// Show the courses inside this category |
||||||
|
echo '<table class="data_table">'; |
||||||
|
$number_of_courses = isset($courses_in_category[$row['id']]) ? count($courses_in_category[$row['id']]) : 0; |
||||||
|
$key = 0; |
||||||
|
if (!empty($courses_in_category[$row['id']])) { |
||||||
|
foreach ($courses_in_category[$row['id']] as $course) { |
||||||
|
echo '<tr><td>'; |
||||||
|
echo '<a name="course'.$course['code'].'"></a>'; |
||||||
|
echo '<strong>'.$course['title'].'</strong>'; |
||||||
|
echo ' ('.$course['visual_code'].')'; |
||||||
|
echo '<br />'; |
||||||
|
echo $teachersIcon; |
||||||
|
echo ' '; |
||||||
|
echo CourseManager::getTeacherListFromCourseCodeToString($course['code']); |
||||||
|
echo '<br />'; |
||||||
|
|
||||||
|
if (api_get_setting('display_teacher_in_courselist') === 'true') { |
||||||
|
echo $course['tutor']; |
||||||
|
} |
||||||
|
echo '</td><td valign="top">'; |
||||||
|
?> |
||||||
|
<div style="float:left;width:110px;"> |
||||||
|
<?php |
||||||
|
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') { |
||||||
|
$icon_title = get_lang('CourseDetails').' - '.$course['title']; ?> |
||||||
|
<a href="<?php echo api_get_path(WEB_CODE_PATH); ?>inc/ajax/course_home.ajax.php?a=show_course_information&code=<?php echo $course['code']; ?>" data-title="<?php echo $icon_title; ?>" title="<?php echo $icon_title; ?>" class="ajax">
|
||||||
|
<?php |
||||||
|
echo Display::return_icon('info.png', $icon_title, '', '22'); |
||||||
|
} ?> |
||||||
|
</a> |
||||||
|
<?php |
||||||
|
echo Display::url( |
||||||
|
Display::return_icon('edit.png', get_lang('Edit'), '', 22), |
||||||
|
$currentUrl.'?action=edit_course_category&category_id='.$row['id'].'&course_id='.$course['real_id'].'&sec_token='.$stok, |
||||||
|
['class' => 'ajax'] |
||||||
|
); |
||||||
|
|
||||||
|
if ($key > 0) { |
||||||
|
?> |
||||||
|
<a href="<?php echo $currentUrl; ?>?action=<?php echo $action; ?>&move=up&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
||||||
|
<?php echo Display::display_icon('up.png', get_lang('Up'), '', 22); ?> |
||||||
|
</a> |
||||||
|
<?php |
||||||
|
} else { |
||||||
|
echo Display::display_icon('up_na.png', get_lang('Up'), '', 22); |
||||||
|
} |
||||||
|
if ($key < $number_of_courses - 1) { |
||||||
|
?> |
||||||
|
<a href="<?php echo $currentUrl; ?>?action=<?php echo $action; ?>&move=down&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
||||||
|
<?php echo Display::return_icon('down.png', get_lang('Down'), '', 22); ?> |
||||||
|
</a> |
||||||
|
<?php |
||||||
|
} else { |
||||||
|
echo Display::return_icon('down_na.png', get_lang('Down'), '', 22); |
||||||
|
} ?> |
||||||
|
</div> |
||||||
|
<div style="float:left; margin-right:10px;"> |
||||||
|
<?php |
||||||
|
if ($course['status'] != 1) { |
||||||
|
if ($course['unsubscr'] == 1) { |
||||||
|
?> |
||||||
|
|
||||||
|
<form action="<?php echo api_get_self(); ?>" method="post" onsubmit="javascript: if (!confirm('<?php echo addslashes(api_htmlentities(get_lang("ConfirmUnsubscribeFromCourse"), ENT_QUOTES, api_get_system_encoding())); ?>')) return false">
|
||||||
|
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
||||||
|
<input type="hidden" name="unsubscribe" value="<?php echo $course['code']; ?>" />
|
||||||
|
<button class="btn btn-default" value="<?php echo get_lang('Unsubscribe'); ?>" name="unsub">
|
||||||
|
<?php echo get_lang('Unsubscribe'); ?> |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
<?php |
||||||
|
} |
||||||
|
} |
||||||
|
$key++; |
||||||
|
} |
||||||
|
echo '</table>'; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
echo Display::page_subheader(get_lang('NoCourseCategory')); |
||||||
|
echo '<table class="data_table">'; |
||||||
|
// COURSES WITHOUT CATEGORY |
||||||
|
if (!empty($courses_without_category)) { |
||||||
|
$number_of_courses = count($courses_without_category); |
||||||
|
$key = 0; |
||||||
|
foreach ($courses_without_category as $course) { |
||||||
|
echo '<tr><td>'; |
||||||
|
echo '<a name="course'.$course['code'].'"></a>'; |
||||||
|
echo '<strong>'.$course['title'].'</strong>'; |
||||||
|
echo ' ('.$course['visual_code'].')'; |
||||||
|
echo '<br />'; |
||||||
|
echo $teachersIcon; |
||||||
|
echo ' '; |
||||||
|
echo CourseManager::getTeacherListFromCourseCodeToString($course['code']); |
||||||
|
echo '<br />'; |
||||||
|
|
||||||
|
if (api_get_setting('display_teacher_in_courselist') === 'true') { |
||||||
|
echo $course['tutor']; |
||||||
|
} |
||||||
|
echo '</td><td valign="top">'; |
||||||
|
?> |
||||||
|
<div style="float:left; width:110px"> |
||||||
|
<?php |
||||||
|
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') { |
||||||
|
$icon_title = get_lang('CourseDetails').' - '.$course['title']; ?> |
||||||
|
<a href="<?php echo api_get_path(WEB_CODE_PATH); ?>inc/ajax/course_home.ajax.php?a=show_course_information&code=<?php echo $course['code']; ?>" data-title="<?php echo $icon_title; ?>" title="<?php echo $icon_title; ?>" class="ajax">
|
||||||
|
<?php echo Display::return_icon('info.png', $icon_title, '', '22'); ?> |
||||||
|
</a> |
||||||
|
<?php |
||||||
|
} |
||||||
|
echo ''; |
||||||
|
if (isset($_GET['edit']) && $course['code'] == $_GET['edit']) { |
||||||
|
echo Display::return_icon('edit_na.png', get_lang('Edit'), '', 22); |
||||||
|
} else { |
||||||
|
echo Display::url( |
||||||
|
Display::return_icon('edit.png', get_lang('Edit'), '', 22), |
||||||
|
$currentUrl.'?action=edit_course_category&course_id='.$course['real_id'].'&'.$stok, |
||||||
|
['class' => 'ajax'] |
||||||
|
); |
||||||
|
} |
||||||
|
if ($key > 0) { |
||||||
|
?> |
||||||
|
<a href="<?php echo $currentUrl; ?>?action=<?php echo $action; ?>&move=up&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
||||||
|
<?php echo Display::display_icon('up.png', get_lang('Up'), '', 22); ?> |
||||||
|
</a> |
||||||
|
<?php |
||||||
|
} else { |
||||||
|
echo Display::return_icon('up_na.png', get_lang('Up'), '', 22); |
||||||
|
} |
||||||
|
if ($key < $number_of_courses - 1) { |
||||||
|
?> |
||||||
|
<a href="<?php echo $currentUrl; ?>?action=<?php echo $action; ?>&move=down&course=<?php echo $course['code']; ?>&category=<?php echo $course['user_course_cat']; ?>&sec_token=<?php echo $stok; ?>">
|
||||||
|
<?php echo Display::display_icon('down.png', get_lang('Down'), '', 22); ?> |
||||||
|
</a> |
||||||
|
<?php |
||||||
|
} else { |
||||||
|
echo Display::return_icon('down_na.png', get_lang('Down'), '', 22); |
||||||
|
} ?> |
||||||
|
</div> |
||||||
|
<div style="float:left; margin-right:10px;"> |
||||||
|
<?php |
||||||
|
if ($course['status'] != 1) { |
||||||
|
if ($course['unsubscr'] == 1) { |
||||||
|
?> |
||||||
|
<!-- changed link to submit to avoid action by the search tool indexer --> |
||||||
|
<form action="<?php echo api_get_self(); ?>" method="post" onsubmit="javascript: if (!confirm('<?php echo addslashes(api_htmlentities(get_lang("ConfirmUnsubscribeFromCourse"), ENT_QUOTES, api_get_system_encoding())); ?>')) return false;">
|
||||||
|
<input type="hidden" name="sec_token" value="<?php echo $stok; ?>">
|
||||||
|
<input type="hidden" name="unsubscribe" value="<?php echo $course['code']; ?>" />
|
||||||
|
<button class="btn btn-default" value="<?php echo get_lang('Unsubscribe'); ?>" name="unsub">
|
||||||
|
<?php echo get_lang('Unsubscribe'); ?> |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
<?php |
||||||
|
} |
||||||
|
} ?> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<?php |
||||||
|
$key++; |
||||||
|
} |
||||||
|
} |
||||||
|
?> |
||||||
|
</table> |
||||||
|
<?php |
||||||
|
Display::display_footer(); |
||||||
|
|
Loading…
Reference in new issue