You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
5.5 KiB
188 lines
5.5 KiB
<?php
|
|
|
|
/* For license terms, see /license.txt */
|
|
|
|
use Chamilo\CoreBundle\Component\Utils\ActionIcon;
|
|
|
|
require_once __DIR__.'/../../main/inc/global.inc.php';
|
|
|
|
$allow = api_is_platform_admin() || api_is_teacher();
|
|
|
|
if (!$allow) {
|
|
api_not_allowed(true);
|
|
}
|
|
|
|
$plugin = LearningCalendarPlugin::create();
|
|
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
|
|
$calendarId = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
|
|
$formToString = '';
|
|
|
|
switch ($action) {
|
|
case 'add':
|
|
$form = new FormValidator('calendar', 'post', api_get_self().'?action=add');
|
|
$plugin->getForm($form);
|
|
$form->addButtonSave(get_lang('Save'));
|
|
$formToString = $form->returnForm();
|
|
|
|
if ($form->validate()) {
|
|
$values = $form->getSubmitValues();
|
|
$params = [
|
|
'title' => $values['title'],
|
|
'total_hours' => $values['total_hours'],
|
|
'minutes_per_day' => $values['minutes_per_day'],
|
|
'description' => $values['description'],
|
|
'author_id' => api_get_user_id(),
|
|
];
|
|
Database::insert('learning_calendar', $params);
|
|
Display::addFlash(Display::return_message(get_lang('Saved..')));
|
|
header('Location: start.php');
|
|
exit;
|
|
}
|
|
|
|
break;
|
|
case 'edit':
|
|
$form = new FormValidator('calendar', 'post', api_get_self().'?action=edit&id='.$calendarId);
|
|
$plugin->getForm($form);
|
|
$form->addButtonSave(get_lang('Update'));
|
|
$item = $plugin->getCalendar($calendarId);
|
|
$plugin->protectCalendar($item);
|
|
|
|
if (empty($item)) {
|
|
api_not_allowed(true);
|
|
}
|
|
|
|
$form->setDefaults($item);
|
|
$formToString = $form->returnForm();
|
|
|
|
if ($form->validate()) {
|
|
$values = $form->getSubmitValues();
|
|
$params = [
|
|
'title' => $values['title'],
|
|
'total_hours' => $values['total_hours'],
|
|
'minutes_per_day' => $values['minutes_per_day'],
|
|
'description' => $values['description'],
|
|
];
|
|
Database::update('learning_calendar', $params, ['id = ?' => $calendarId]);
|
|
Display::addFlash(Display::return_message(get_lang('Update successful')));
|
|
header('Location: start.php');
|
|
exit;
|
|
}
|
|
|
|
break;
|
|
case 'copy':
|
|
$result = $plugin->copyCalendar($calendarId);
|
|
if ($result) {
|
|
Display::addFlash(Display::return_message(get_lang('Saved..')));
|
|
}
|
|
header('Location: start.php');
|
|
exit;
|
|
|
|
break;
|
|
case 'delete':
|
|
$result = $plugin->deleteCalendar($calendarId);
|
|
if ($result) {
|
|
Display::addFlash(Display::return_message(get_lang('Deleted')));
|
|
}
|
|
header('Location: start.php');
|
|
exit;
|
|
|
|
break;
|
|
case 'toggle_visibility':
|
|
$itemId = isset($_REQUEST['lp_item_id']) ? $_REQUEST['lp_item_id'] : 0;
|
|
$lpId = isset($_REQUEST['lp_id']) ? $_REQUEST['lp_id'] : 0;
|
|
$plugin->toggleVisibility($itemId);
|
|
Display::addFlash(Display::return_message(get_lang('Update successful')));
|
|
$url = api_get_path(WEB_CODE_PATH).
|
|
'lp/lp_controller.php?action=add_item&type=step&lp_id='.$lpId.'&'.api_get_cidreq();
|
|
header("Location: $url");
|
|
exit;
|
|
|
|
break;
|
|
}
|
|
|
|
$htmlHeadXtra[] = api_get_jqgrid_js();
|
|
|
|
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_learning_path_calendars';
|
|
$columns = [
|
|
get_lang('Title'),
|
|
get_lang('Total hours'),
|
|
get_lang('Minutes per day'),
|
|
get_lang('Detail'),
|
|
];
|
|
|
|
$columnModel = [
|
|
[
|
|
'name' => 'title',
|
|
'index' => 'title',
|
|
'width' => '300',
|
|
'align' => 'left',
|
|
'sortable' => 'false',
|
|
],
|
|
[
|
|
'name' => 'total_hours',
|
|
'index' => 'total_hours',
|
|
'width' => '100',
|
|
'align' => 'left',
|
|
'sortable' => 'false',
|
|
],
|
|
[
|
|
'name' => 'minutes_per_day',
|
|
'index' => 'minutes_per_day',
|
|
'width' => '100',
|
|
'align' => 'left',
|
|
'sortable' => 'false',
|
|
],
|
|
[
|
|
'name' => 'actions',
|
|
'index' => 'actions',
|
|
'width' => '150',
|
|
'align' => 'left',
|
|
//'formatter' => 'action_formatter',
|
|
'sortable' => 'false',
|
|
],
|
|
];
|
|
|
|
$extraParams = [];
|
|
$extraParams['autowidth'] = 'true';
|
|
// height auto
|
|
$extraParams['height'] = 'auto';
|
|
|
|
$template = new Template();
|
|
|
|
if (in_array($action, ['add', 'edit'])) {
|
|
$actionLeft = Display::url(
|
|
Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back')),
|
|
api_get_self().'?'.api_get_cidreq()
|
|
);
|
|
} else {
|
|
$actionLeft = Display::url(
|
|
Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Add')),
|
|
api_get_self().'?'.api_get_cidreq().'&action=add'
|
|
);
|
|
|
|
$content = '<script>
|
|
$(function() {'.
|
|
Display::grid_js(
|
|
'calendars',
|
|
$url,
|
|
$columns,
|
|
$columnModel,
|
|
$extraParams,
|
|
[],
|
|
'',
|
|
true
|
|
).'
|
|
});
|
|
</script>';
|
|
|
|
$content .= Display::grid_html('calendars');
|
|
$template->assign('grid', $content);
|
|
}
|
|
|
|
$template->assign('form', $formToString);
|
|
$actions = Display::toolbarAction('toolbar-calendar', [$actionLeft]);
|
|
$content = $template->fetch('learning_calendar/view/start.tpl');
|
|
$template->assign('content', $content);
|
|
$template->assign('actions', $actions);
|
|
|
|
$template->display_one_col_template();
|
|
|