Merge branch '1.10.x' into bootstrap

1.10.x
aragonc 10 years ago
commit e9d5d09617
  1. 41
      app/Resources/public/css/base.css
  2. 110
      main/document/document.php
  3. 32
      main/document/downloadfolder.inc.php
  4. 1
      main/exercice/exercise.php
  5. 2
      main/exercice/hotpotatoes.php
  6. 2
      main/inc/ajax/model.ajax.php
  7. 2
      main/inc/lib/add_course.lib.inc.php
  8. 58
      main/inc/lib/api.lib.php
  9. 33
      main/inc/lib/display.lib.php
  10. 3
      main/inc/lib/formvalidator/Element/DatePicker.php
  11. 12
      main/inc/lib/login.lib.php
  12. 2
      main/inc/lib/pear/HTML/QuickForm/select.php
  13. 1
      main/newscorm/aicc.class.php
  14. 23
      main/template/default/work/view.tpl
  15. 41
      main/user/class.php
  16. 12
      main/work/add_user.php
  17. 3
      main/work/downloadfolder.inc.php
  18. 33
      main/work/view.php
  19. 77
      main/work/work.lib.php
  20. 63
      main/work/work_missing.php

@ -230,6 +230,11 @@ ul#navigation .report a {
padding-top: 0px;
background: none;
}
.work_correction_file_upload {
height: 40px;
}
.impress-content{
position: relative;
width: 100%;
@ -354,24 +359,24 @@ ul#navigation .report a {
display: inline-block;
margin-left: 5px;
padding: 5px;
background: #ffffff;
background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5));
background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%);
background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%);
background: linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 );
background: #ffffff;
background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5));
background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%);
background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%);
background: linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 );
}
.actions a:hover{
background: #f4f4f4;
background: -moz-linear-gradient(top, #f4f4f4 0%, #dddddd 71%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f4f4), color-stop(71%,#dddddd));
background: -webkit-linear-gradient(top, #f4f4f4 0%,#dddddd 71%);
background: -o-linear-gradient(top, #f4f4f4 0%,#dddddd 71%);
background: #f4f4f4;
background: -moz-linear-gradient(top, #f4f4f4 0%, #dddddd 71%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f4f4), color-stop(71%,#dddddd));
background: -webkit-linear-gradient(top, #f4f4f4 0%,#dddddd 71%);
background: -o-linear-gradient(top, #f4f4f4 0%,#dddddd 71%);
background: -ms-linear-gradient(top, #f4f4f4 0%,#dddddd 71%);
background: linear-gradient(to bottom, #f4f4f4 0%,#dddddd 71%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#dddddd',GradientType=0 );
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#dddddd',GradientType=0 );
}*/
.actions .btn-toolbar {
margin : 0px;
@ -3425,7 +3430,7 @@ div#no-data-view div.controls {
padding-top: 1px;
}
/* styles for the star rater
/* styles for the star rater
.star-rating{
list-style:none;
margin: 0px;
@ -4028,7 +4033,7 @@ a.forum_group_link {
min-height: 50px;
}
.new_actions .nav > li > a {
border-radius: 0 0 0 0;
border-right: 1px solid #E5E5E5;
margin: 0;
@ -6197,7 +6202,7 @@ div#chat-remote-video video {
padding-top: 3px;
padding-bottom: 5px;
border-radius: 5px;
}
.hot-course-head{
padding-top: 10px;
@ -6459,7 +6464,7 @@ a.sessionView {
{
width: 70px;
float: left;
margin-right: 5px;
margin-right: 5px;
}
#course-block .list-group .list-group-item .title,
#session-block .list-group .list-group-item .title{

@ -34,7 +34,6 @@ $current_course_tool = TOOL_DOCUMENT;
$this_section = SECTION_COURSES;
$to_user_id = null;
$parent_id = null;
$message = null;
$lib_path = api_get_path(LIBRARY_PATH);
@ -50,16 +49,15 @@ if (
) {
unlink($_SESSION['temp_realpath_image']);
}
$_user = api_get_user_info();
$courseInfo = api_get_course_info();
$course_dir = $courseInfo['directory'] . '/document';
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$base_work_dir = $sys_course_path . $course_dir;
$http_www = api_get_path(WEB_COURSE_PATH) .
$courseInfo['directory'] . '/document';
$http_www = api_get_path(WEB_COURSE_PATH).$courseInfo['directory'] . '/document';
$document_path = $base_work_dir;
$usePpt2lp = api_get_setting('service_ppt2lp', 'active') == 'true';
$courseInfo = api_get_course_info();
$course_dir = $courseInfo['directory'].'/document';
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$base_work_dir = $sys_course_path.$course_dir;
@ -68,7 +66,7 @@ $document_path = $base_work_dir;
$currentUrl = api_get_self().'?'.api_get_cidreq();
//Removing sessions
// Removing sessions
unset($_SESSION['draw_dir']);
unset($_SESSION['paint_dir']);
unset($_SESSION['temp_audio_nanogong']);
@ -229,18 +227,20 @@ switch ($action) {
if ($deleteDocument) {
$certificateId = isset($_GET['delete_certificate_id']) ? $_GET['delete_certificate_id'] : null;
DocumentManager::remove_attach_certificate(api_get_course_id(), $certificateId);
$message = Display::return_message(
DocumentManager::remove_attach_certificate(
api_get_course_id(),
$certificateId
);
Display::addFlash(Display::return_message(
get_lang('DocDeleted') . ': ' . $documentInfo['title'],
'success'
);
));
} else {
$message = Display::return_message(get_lang('DocDeleteError'), 'warning');
Display::addFlash(Display::return_message(get_lang('DocDeleteError'), 'warning'));
}
} else {
$message = Display::return_message(get_lang('FileNotFound'), 'warning');
Display::addFlash(Display::return_message(get_lang('FileNotFound'), 'warning'));
}
Session::write('message', $message);
header("Location: $currentUrl");
exit;
}
@ -390,27 +390,28 @@ switch ($action) {
get_lang('Yes').
'</a></p>';
if (!isset($_GET['copy'])) {
$message = Display::return_message($message, 'warning', false);
Display::addFlash(Display::return_message($message, 'warning', false));
}
if (Security::remove_XSS($_GET['copy']) == 'yes') {
if (!copy($file, $copyfile)) {
$message = Display::return_message(get_lang('CopyFailed'), 'error');
Display::addFlash(Display::return_message(get_lang('CopyFailed'), 'error'));
} else {
$message = Display::return_message(
Display::addFlash(Display::return_message(
get_lang('OverwritenFile').' '.$file_link,
'confirmation',
false
);
));
}
}
} else {
if (!copy($file, $copyfile)) {
$message = Display::return_message(get_lang('CopyFailed'), 'error');
Display::addFlash(Display::return_message(get_lang('CopyFailed'), 'error'));
} else {
$message = Display::return_message(get_lang('CopyMade').' '.$file_link, 'confirmation', false);
Display::addFlash(
Display::return_message(get_lang('CopyMade').' '.$file_link, 'confirmation', false)
);
}
}
Session::write('message', $message);
}
break;
case 'convertToPdf':
@ -432,10 +433,10 @@ switch ($action) {
'/document' . $document_info['path'];
$fileInfo = pathinfo($file);
if ($fileInfo['extension'] == $formatTarget) {
$message = Display::return_message(
Display::addFlash(Display::return_message(
get_lang('ErrorSameFormat'),
'warning'
);
));
} elseif (
!(
in_array(
@ -455,10 +456,10 @@ switch ($action) {
)
)
) {
$message = Display::return_message(
Display::addFlash(Display::return_message(
get_lang('FormatNotSupported'),
'warning'
);
));
} else {
$convertedFile = $fileInfo['dirname'] . DIRECTORY_SEPARATOR .
$fileInfo['filename'] . '_from_' . $fileInfo['extension'] .
@ -466,10 +467,10 @@ switch ($action) {
$convertedTitle = $document_info['title'];
$obj = new OpenofficePresentation(true);
if (file_exists($convertedFile)) {
$message = Display::return_message(
Display::addFlash(Display::return_message(
get_lang('FileExists'),
'error'
);
));
} else {
$result = $obj->convertCopyDocument(
$file,
@ -477,10 +478,10 @@ switch ($action) {
$convertedTitle
);
if (empty($result)) {
$message = Display::return_message(
Display::addFlash(Display::return_message(
get_lang('CopyFailed'),
'error'
);
));
} else {
$cidReq = Security::remove_XSS($_GET['cidReq']);
$id_session = api_get_session_id();
@ -492,11 +493,11 @@ switch ($action) {
'&id_session=' . $id_session . '&' .
'gidReq=' . $gidReq . '&id=' . current($result)
);
$message = Display::return_message(
Display::addFlash(Display::return_message(
get_lang('CopyMade') . ' ' . $file_link,
'confirmation',
false
);
));
}
}
}
@ -1059,7 +1060,7 @@ if ($is_allowed_to_edit ||
null,
$sessionId
);
$message = Display::return_message(get_lang('DirMv'), 'confirmation');
Display::addFlash(Display::return_message(get_lang('DirMv'), 'confirmation'));
} elseif (is_file($real_path_target)) {
api_item_property_update(
$courseInfo,
@ -1073,7 +1074,7 @@ if ($is_allowed_to_edit ||
null,
$sessionId
);
$message = Display::return_message(get_lang('DocMv'), 'confirmation');
Display::addFlash(Display::return_message(get_lang('DocMv'), 'confirmation'));
}
// Set the current path
@ -1086,14 +1087,14 @@ if ($is_allowed_to_edit ||
} elseif (is_file($real_path_target)) {
$message = Display::return_message(get_lang('FileExists'), 'v');
}
Display::addFlash($message);
} else {
$message = Display::return_message(get_lang('Impossible'), 'error');
Display::addFlash(Display::return_message(get_lang('Impossible'), 'error'));
}
}
} else {
$message = Display::return_message(get_lang('Impossible'), 'error');
Display::addFlash(Display::return_message(get_lang('Impossible'), 'error'));
}
Session::write('message', $message);
}
}
@ -1210,8 +1211,7 @@ if ($is_allowed_to_edit ||
}
}
} // endforeach
Session::write('message', $messages);
Display::addFlash($messages);
}
}
@ -1284,7 +1284,7 @@ if ($is_allowed_to_edit ||
}
}
Session::write('message', $message);
Display::addFlash($message);
}
// Show them the form for the directory name
@ -1372,9 +1372,7 @@ if ($is_allowed_to_edit ||
} elseif (isset($_GET['add_as_template']) && isset($_POST['create_template'])) {
$document_id_for_template = intval($_GET['add_as_template']);
$title = Security::remove_XSS($_POST['template_title']);
//$description = Security::remove_XSS($_POST['template_description']);
$user_id = api_get_user_id();
// Create the template_thumbnails folder in the upload folder (if needed)
@ -1425,8 +1423,9 @@ if ($is_allowed_to_edit ||
$user_id,
$new_file_name
);
$message = Display::return_message(get_lang('DocumentSetAsTemplate'), 'confirmation');
Session::write('message', $message);
Display::addFlash(
Display::return_message(get_lang('DocumentSetAsTemplate'), 'confirmation')
);
}
if (isset($_GET['remove_as_template'])) {
@ -1437,8 +1436,10 @@ if ($is_allowed_to_edit ||
$course_code,
$user_id
);
$message = Display::return_message(get_lang('DocumentUnsetAsTemplate'), 'confirmation');
Session::write('message', $message);
Display::addFlash(
Display::return_message(get_lang('DocumentUnsetAsTemplate'), 'confirmation')
);
}
}
@ -1454,7 +1455,9 @@ if (isset($_GET['curdirpath']) &&
$document_id = Security::remove_XSS($_GET['set_certificate']); // document id
DocumentManager::attach_gradebook_certificate($course_id, $document_id);
$message = Display::return_message(get_lang('IsDefaultCertificate'), 'normal');
Session::write('message', $message);
Display::addFlash(
$message
);
}
}
/* GET ALL DOCUMENT DATA FOR CURDIRPATH */
@ -1502,17 +1505,16 @@ if ($groupId != 0) {
if (!isset($folders) || $folders === false) {
$folders = array();
}
$btngroup= array('class' => 'btn btn-default');
$btngroup = array('class' => 'btn btn-default');
/* GO TO PARENT DIRECTORY */
$actionsLeft = '';
if ($curdirpath != '/' && $curdirpath != $group_properties['directory'] && !$is_certificate_mode) {
$actionsLeft = '<a href="'.api_get_self().'?'.api_get_cidreq().'&id='.$parent_id.'">';
$actionsLeft .= Display::return_icon('folder_up.png', get_lang('Up'), '', ICON_SIZE_MEDIUM);
$actionsLeft .= '</a>';
}
if ($is_certificate_mode && $curdirpath != '/certificates') {
@ -1530,9 +1532,7 @@ if ($is_allowed_to_edit ||
) {
// TODO:check enable more options for shared folders
/* CREATE NEW DOCUMENT OR NEW DIRECTORY / GO TO UPLOAD / DOWNLOAD ZIPPED FOLDER */
// Create new document
if (!$is_certificate_mode) {
$actionsLeft .= Display::url(
Display::return_icon('new_document.png', get_lang('CreateDoc'), '', ICON_SIZE_MEDIUM),
@ -1647,11 +1647,10 @@ if (api_is_allowed_to_edit(null, true)) {
Display::return_icon('percentage.png', get_lang('DocumentQuota'), '', ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'document/document_quota.php?'.api_get_cidreq()
);
}
}
$actionsRight = '';
if (!$is_certificate_mode) {
/* BUILD SEARCH FORM */
$form = new FormValidator(
'search_document',
'get',
@ -1741,7 +1740,7 @@ if (isset($documentAndFolders) && is_array($documentAndFolders)) {
$count++;
}
// Validacion when belongs to a session
// Validation when belongs to a session
$session_img = api_get_session_image($document_data['session_id'], $_user['status']);
// Document title with link
@ -1843,8 +1842,6 @@ if (!is_null($documentAndFolders)) {
}
}
if (!empty($moveTo)) {
$document_id = DocumentManager::get_document_id($courseInfo, $moveTo);
}
@ -1966,7 +1963,10 @@ if (!empty($groupId)) {
} else {
Display::display_introduction_section(TOOL_DOCUMENT);
}
$toolbar = Display::toolbarAction('toolbar-document',array(0 => $actionsLeft, 1 => $actionsRight));
$toolbar = Display::toolbarAction(
'toolbar-document',
array(0 => $actionsLeft, 1 => $actionsRight)
);
echo $toolbar;
echo $templateForm;

@ -58,9 +58,6 @@ if (($path == '/shared_folder' ||
exit;
}
// Zip library for creation of the zip file.
require api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
// Creating a ZIP file.
$tempZipFile = api_get_path(SYS_ARCHIVE_PATH).api_get_unique_id().".zip";
@ -94,10 +91,16 @@ function fixDocumentNameCallback($p_event, &$p_header)
);
// Changes file.phps to file.php
$basename = basename($documentNameFixed);
$basenamePHPFixed = str_replace('.phps', '.php', $basename);
$documentNameFixed = str_replace($basename, $basenamePHPFixed, $basenamePHPFixed);
$documentNameFixed = str_replace(
$basename,
$basenamePHPFixed,
$documentNameFixed
);
$documentNameFixed = str_replace($remove_dir, '', $documentNameFixed);
$p_header['stored_filename'] = $documentNameFixed;
return 1;
@ -161,7 +164,8 @@ if (api_is_allowed_to_edit()) {
}
}
}
//error_log($sysCoursePath.$courseInfo['path'].'/document'.$not_deleted_file['path']);
//error_log($sysCoursePath.$courseInfo['path'].'/document'.$remove_dir);
$zip->add(
$sysCoursePath.$courseInfo['path'].'/document'.$not_deleted_file['path'],
PCLZIP_OPT_REMOVE_PATH,
@ -230,12 +234,12 @@ if (api_is_allowed_to_edit()) {
docs.id = props.ref AND
docs.c_id = props.c_id
WHERE
docs.c_id = $courseId AND
props.tool = '".TOOL_DOCUMENT."' AND
docs.path LIKE '".$querypath."/%' AND
props.visibility <> '1' AND
docs.c_id = $courseId AND
props.tool = '".TOOL_DOCUMENT."' AND
docs.path LIKE '".$querypath."/%' AND
props.visibility <> '1' AND
(props.session_id IN ('0', '$sessionId') OR props.session_id IS NULL) AND
docs.filetype = 'folder'";
docs.filetype = 'folder'";
$query2 = Database::query($sql);
// If we get invisible folders, we have to filter out these results from all visible files we found
@ -255,9 +259,9 @@ if (api_is_allowed_to_edit()) {
docs.c_id = $courseId AND
props.tool ='".TOOL_DOCUMENT."' AND
docs.path LIKE '".$invisible_folders['path']."/%' AND
docs.filetype ='file' AND
docs.filetype = 'file' AND
(props.session_id IN ('0', '$sessionId') OR props.session_id IS NULL) AND
props.visibility ='1'";
props.visibility ='1'";
$query3 = Database::query($sql);
// Add tem to an array
while ($files_in_invisible_folder = Database::fetch_assoc($query3)) {
@ -294,7 +298,9 @@ if (api_is_allowed_to_edit()) {
}
// Launch event
Event::event_download(($path == '/') ? 'documents.zip (folder)' : basename($path).'.zip (folder)');
Event::event_download(
($path == '/') ? 'documents.zip (folder)' : basename($path).'.zip (folder)'
);
// Start download of created file
$name = ($path == '/') ? 'documents.zip' : $documentInfo['title'].'.zip';

@ -118,7 +118,6 @@ $nameTools = get_lang('Exercises');
$errorXmlExport = null;
if ($is_allowedToEdit && !empty($choice) && $choice == 'exportqti2') {
require_once api_get_path(SYS_CODE_PATH).'exercice/export/qti2/qti2_export.php';
require_once api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
$export = export_exercise_to_qti($exerciseId, true);
$archive_path = api_get_path(SYS_ARCHIVE_PATH);

@ -8,8 +8,6 @@
require_once '../inc/global.inc.php';
// Including additional libraries.
require_once api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
require_once 'hotpotatoes.lib.php';
// Section (for the tabs).

@ -1509,7 +1509,7 @@ switch ($action) {
$class = 'btn btn-danger';
$text = get_lang('Remove');
} else {
$url = 'class.php?action=add_class_to_course&id='.$group['id'].'&'.api_get_cidreq();
$url = 'class.php?action=add_class_to_course&id='.$group['id'].'&'.api_get_cidreq().'&type=not_registered';
$class = 'btn btn-primary';
//$icon = Display::return_icon('add.png', get_lang('Add'));
$text = get_lang('Add');

@ -1444,8 +1444,6 @@ class AddCourse
*/
public static function readPropertiesInArchive($archive, $is_compressed = true)
{
include api_get_path(LIBRARY_PATH) . 'pclzip/pclzip.lib.php';
debug::printVar(dirname($archive), 'Zip : ');
$uid = api_get_user_id();
/*
string tempnam (string dir, string prefix)

@ -3314,13 +3314,13 @@ function api_not_allowed($print_headers = false, $message = null)
global $this_section;
if (empty($user_id)) {
if (CustomPages::enabled() && !isset($user_id)) {
// Why the CustomPages::enabled() need to be to set the request_uri
$_SESSION['request_uri'] = $_SERVER['REQUEST_URI'];
}
if (empty($user_id)) {
// Why the CustomPages::enabled() need to be to set the request_uri
$_SESSION['request_uri'] = $_SERVER['REQUEST_URI'];
}
if (CustomPages::enabled() && !isset($user_id)) {
CustomPages::display(CustomPages::INDEX_UNLOGGED);
}
@ -3330,7 +3330,11 @@ function api_not_allowed($print_headers = false, $message = null)
if (isset($message)) {
$msg = $message;
} else {
$msg = Display::return_message(get_lang('NotAllowedClickBack').'<br/><br/><a href="'.$home_url.'">'.get_lang('ReturnToCourseHomepage').'</a>', 'error', false);
$msg = Display::return_message(
get_lang('NotAllowedClickBack').'<br/><br/><a href="'.$home_url.'">'.get_lang('ReturnToCourseHomepage').'</a>',
'error',
false
);
}
$msg = Display::div($msg, array('align'=>'center'));
@ -3342,11 +3346,13 @@ function api_not_allowed($print_headers = false, $message = null)
}
$tpl = new Template(null, $show_headers, $show_headers);
$tpl->assign('hide_login_link', 1);
$tpl->assign('content', $msg);
if (($user_id!=0 && !api_is_anonymous()) && (!isset($course) || $course == -1) && empty($_GET['cidReq'])) {
if (($user_id != 0 && !api_is_anonymous()) &&
(!isset($course) || $course == -1) &&
empty($_GET['cidReq'])
) {
// if the access is not authorized and there is some login information
// but the cidReq is not found, assume we are missing course data and send the user
// to the user_portal
@ -3360,29 +3366,41 @@ function api_not_allowed($print_headers = false, $message = null)
$this_section == SECTION_PLATFORM_ADMIN
)
) {
//only display form and return to the previous URL if there was a course ID included
$courseCode = api_get_course_id();
// Only display form and return to the previous URL if there was a course ID included
if ($user_id != 0 && !api_is_anonymous()) {
//if there is a user ID, then the user is not allowed but the session is still there. Say so and exit
$tpl->assign('content', $msg);
$tpl->display_one_col_template();
exit;
}
if (!is_null(api_get_course_id())) {
api_set_firstpage_parameter(api_get_course_id());
if (!is_null($courseCode)) {
api_set_firstpage_parameter($courseCode);
}
// If the user has no user ID, then his session has expired
$action = api_get_self().'?'.Security::remove_XSS($_SERVER['QUERY_STRING']);
$action = str_replace('&amp;', '&', $action);
$form = new FormValidator('formLogin', 'post', $action, null, array(), FormValidator::LAYOUT_BOX_NO_LABEL);
$form = new FormValidator(
'formLogin',
'post',
$action,
null,
array(),
FormValidator::LAYOUT_BOX_NO_LABEL
);
$form->addElement('text', 'login', null, array('placeholder' => get_lang('UserName'), 'class' => 'autocapitalize_off'));
$form->addElement('password', 'password', null, array('placeholder' => get_lang('Password')));
$form->addButton('submitAuth', get_lang('LoginEnter'), '', 'primary');
// see same text in auth/gotocourse.php and main_api.lib.php function api_not_allowed (above)
$content = Display::return_message(get_lang('NotAllowed'), 'error', false);
$content .= '<h4>'.get_lang('LoginToGoToThisCourse').'</h4>';
if (!empty($courseCode)) {
$content .= '<h4>'.get_lang('LoginToGoToThisCourse').'</h4>';
}
if (api_is_cas_activated()) {
$content .= Display::return_message(sprintf(get_lang('YouHaveAnInstitutionalAccount'), api_get_setting("Institution")), '', false);
$content .= Display::div("<br/><a href='".get_cas_direct_URL(api_get_course_id())."'>".sprintf(get_lang('LoginWithYourAccount'), api_get_setting("Institution"))."</a><br/><br/>", array('align'=>'center'));
@ -3396,7 +3414,15 @@ function api_not_allowed($print_headers = false, $message = null)
if (api_is_cas_activated()) {
$content .= "</div>";
}
$content .= '<hr/><p style="text-align:center"><a href="'.$home_url.'">'.get_lang('ReturnToCourseHomepage').'</a></p>';
if (!empty($courseCode)) {
$content .= '<hr/><p style="text-align:center"><a href="'.$home_url.'">'.
get_lang('ReturnToCourseHomepage').'</a></p>';
} else {
$content .= '<hr/><p style="text-align:center"><a href="'.$home_url.'">'.
get_lang('CampusHomepage').'</a></p>';
}
$tpl->setLoginBodyClass();
$tpl->assign('content', $content);
$tpl->display_one_col_template();

@ -1893,9 +1893,9 @@ class Display
foreach ($items as $item) {
$html .= '<div class="accordion-my-group">';
$html .= '<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#'.$id.'" href="#collapse'.$count.'">
'.$item['title'].'
</a>
<a class="accordion-toggle" data-toggle="collapse" data-parent="#'.$id.'" href="#collapse'.$count.'">
'.$item['title'].'
</a>
</div>';
$html .= '<div id="collapse'.$count.'" class="accordion-body">';
@ -1906,6 +1906,7 @@ class Display
}
$html .= '</div>';
}
return $html;
}
@ -1915,8 +1916,10 @@ class Display
public static function group_button($title, $elements)
{
$html = '<div class="btn-group">
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">'.$title.' <span class="caret"></span></button>
<ul class="dropdown-menu">';
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
'.$title.'
<span class="caret"></span></button>
<ul class="dropdown-menu">';
foreach ($elements as $item) {
$html .= Display::tag('li', Display::url($item['title'], $item['href']));
}
@ -1957,6 +1960,7 @@ class Display
<param name="flashvars" value="controls=true&file='.$params['url'].'" />
</object>';
$html .= '</audio>';
return $html;
break;
}
@ -1991,6 +1995,7 @@ class Display
$messageToString .= $message;
}
}
return $messageToString;
}
@ -2032,10 +2037,7 @@ class Display
$objSSO = null;
if (!empty($subSSOClass)) {
require_once api_get_path(
SYS_CODE_PATH
)."auth/sso/sso.$subSSOClass.class.php";
require_once api_get_path(SYS_CODE_PATH)."auth/sso/sso.$subSSOClass.class.php";
$subSSOClass = 'sso'.$subSSOClass;
$objSSO = new $subSSOClass();
} else {
@ -2090,20 +2092,26 @@ class Display
* @param string $text The button content
* @param string $url The url to button
* @param string $icon The Awesome Font class for icon
* @param string $type Ooptional. The button Bootstrap class. Default 'default' class
* @param string $type Optional. The button Bootstrap class. Default 'default' class
* @param array $attributes The additional attributes
* @return string The button HTML
*/
public static function toolbarButton($text, $url, $icon = 'check', $type = 'default', array $attributes = [])
{
$buttonClass = "btn btn-$type";
$icon = self::tag('i', null, ['class' => "fa fa-$icon"]);
$attributes['class'] = isset($attributes['class']) ? "$buttonClass {$attributes['class']}" : $buttonClass;
return self::url("$icon $text", $url, $attributes);
}
/**
* @param int $id
* @param array $content
* @param int $col
* @param bool|true $right
* @return string
*/
public static function toolbarAction($id, $content = array(), $col = 2, $right = true)
{
$columns = 12/$col;
@ -2131,6 +2139,7 @@ class Display
}
$html .= '</div>';
$html .= '</div>';
return $html;
}
}

@ -92,7 +92,8 @@ class DatePicker extends HTML_QuickForm_text
buttonImageOnly: true,
buttonText: '" . get_lang('SelectDate') . "',
changeMonth: true,
changeYear: true
changeYear: true,
yearRange: 'c-60y:c+5y'
});
});
</script>";

@ -333,18 +333,6 @@ class Login
UserManager::update_extra_field_value($_user['user_id'], 'already_logged_in', 'true');
Session::write('is_platformAdmin', $is_platformAdmin);
Session::write('is_allowedCreateCourse', $is_allowedCreateCourse);
//
//
// // If request_uri is setted we have to go further to have course permissions
// if (empty($_SESSION['request_uri']) || !isset($_SESSION['request_uri'])) {
// if (isset($_SESSION['noredirection'])) {
// //If we just want to reset info without redirecting user
// unset($_SESSION['noredirection']);
// } else {
// LoginRedirection::redirect();
// }
// }
} else {
header('location:' . api_get_path(WEB_PATH));
//exit("WARNING UNDEFINED UID !! ");

@ -550,7 +550,7 @@ class HTML_QuickForm_select extends HTML_QuickForm_element
$this->setName($myName);
}
$strHtml .= $tabs . '<select class="selectpicker show-tick form-control"' . $attrString . ">\n";
$strHtml .= $tabs . '<select data-live-search="true" class="selectpicker show-tick form-control"' . $attrString . ">\n";
$strValues = is_array($this->_values)? array_map('strval', $this->_values): array();

@ -668,7 +668,6 @@ class aicc extends learnpath
//error_log('New LP - in export_zip()', 0);
// Zip everything that is in the corresponding scorm dir.
// Write the zip file somewhere (might be too big to return).
require_once api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
require_once 'learnpath_functions.inc.php';
$course_id = api_get_course_int_id();
$tbl_lp = Database::get_course_table(TABLE_LP_MAIN);

@ -1,31 +1,22 @@
<div class="page-header">
<h2>
{{ work.title }}
{% if work.contains_file %}
<a href="{{ work.download_url }}">
<img src="{{ "save.png"|icon(22) }}" width="22" height="22">
</a>
{% endif %}
</h2>
</h2>
</div>
{% if work.url_correction %}
<h3>{{ "Correction" |get_lang }}</h3>
<p>
<a class="btn btn-default" href="{{ work.download_url }}&correction=1">
{{ "Download" |get_lang }}
</a>
</p>
<hr />
{% endif %}
{% if work.description %}
<h3>
{{ 'Description' | get_lang }}
</h3>
<p>
{{ work.description }}
</p>
{% endif %}
{% if work.contains_file and work.show_content %}
<h3>
{{ 'Content' | get_lang }}
</h3>
<p>
{{ work.show_content }}
</p>

@ -37,16 +37,16 @@ $(document).ready( function() {
});
</script>';
Display :: display_header($tool_name, "User");
$actions = '';
$usergroup = new UserGroup();
if (api_is_allowed_to_edit()) {
echo '<div class="actions">';
$actions .= '<div class="actions">';
if ($type == 'registered') {
echo '<a href="class.php?'.api_get_cidreq().'&type=not_registered">'.
$actions .= '<a href="class.php?'.api_get_cidreq().'&type=not_registered">'.
Display::return_icon('add.png', get_lang("AddClassesToACourse"), array(), ICON_SIZE_MEDIUM).'</a>';
} else {
echo '<a href="class.php?'.api_get_cidreq().'&type=registered">'.
Display::return_icon('empty_evaluation.png', get_lang("Classes"), array(), ICON_SIZE_MEDIUM).'</a>';
$actions .= '<a href="class.php?'.api_get_cidreq().'&type=registered">'.
Display::return_icon('back.png', get_lang("Classes"), array(), ICON_SIZE_MEDIUM).'</a>';
$form = new FormValidator('groups', 'post', api_get_self(), '', '', FormValidator::LAYOUT_INLINE);
$options = [
@ -56,13 +56,11 @@ if (api_is_allowed_to_edit()) {
];
$form->addSelect('group_filter', get_lang('Groups'), $options, ['id' => 'group_filter']);
$form->setDefaults(['group_filter' => $groupFilter]);
$form->display();
$actions .= $form->returnForm();
}
echo '</div>';
$actions .= '</div>';
}
echo UserManager::getUserSubscriptionTab(4);
if (api_is_allowed_to_edit()) {
$action = isset($_GET['action']) ? $_GET['action'] : null;
switch ($action) {
@ -74,6 +72,7 @@ if (api_is_allowed_to_edit()) {
array(api_get_course_int_id()),
false
);
Display::addFlash(Display::return_message(get_lang('Added')));
}
break;
case 'remove_class_from_course':
@ -83,6 +82,7 @@ if (api_is_allowed_to_edit()) {
$id,
array(api_get_course_int_id())
);
Display::addFlash(Display::return_message(get_lang('Deleted')));
}
break;
}
@ -101,8 +101,8 @@ $columns = array(
get_lang('Actions'),
);
//Column config
$column_model = array(
// Column config
$columnModel = array(
array('name'=>'name',
'index' => 'name',
'width' => '35',
@ -135,26 +135,25 @@ $column_model = array(
),
);
// Autowidth
$extra_params['autowidth'] = 'true';
$extraParams['autowidth'] = 'true';
// height auto
$extra_params['height'] = 'auto';
// With this function we can add actions to the jgrid
$action_links = 'function action_formatter (cellvalue, options, rowObject) {
return \''
.' <a href="class.php?action=add_class&id=\'+options.rowId+\'"><img src="../img/icons/22/user_to_class.png" title="'.get_lang('SubscribeUsersToClass').'"></a>'
.' <a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="?action=delete&id=\'+options.rowId+\'"><img title="'.get_lang('Delete').'" src="../img/delete.png"></a>\';
}';
$extraParams['height'] = 'auto';
Display :: display_header($tool_name, "User");
?>
<script>
$(function() {
<?php
// grid definition see the $usergroup>display() function
echo Display::grid_js('usergroups', $url, $columns, $column_model, $extra_params, array(), $action_links, true);
echo Display::grid_js('usergroups', $url, $columns, $columnModel, $extraParams, array(), '', true);
?>
});
</script>
<?php
echo $actions;
echo UserManager::getUserSubscriptionTab(4);
$usergroup->display_teacher_view();
Display :: display_footer();

@ -6,7 +6,7 @@ require_once '../inc/global.inc.php';
// Including necessary files
require_once 'work.lib.php';
$current_course_tool = TOOL_STUDENTPUBLICATION;
$current_course_tool = TOOL_STUDENTPUBLICATION;
$workId = isset($_GET['id']) ? intval($_GET['id']) : null;
$userId = isset($_GET['user_id']) ? intval($_GET['user_id']) : null;
@ -30,8 +30,14 @@ if (!api_is_allowed_to_edit()) {
$courseInfo = api_get_course_info();
$interbreadcrumb[] = array('url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(), 'name' => get_lang('StudentPublications'));
$interbreadcrumb[] = array('url' => api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq().'&id='.$workId, 'name' => $my_folder_data['title']);
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(),
'name' => get_lang('StudentPublications'),
);
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq().'&id='.$workId,
'name' => $my_folder_data['title'],
);
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('AddUsers'));
$error_message = null;

@ -35,9 +35,6 @@ if (empty($_course) || empty($_course['path'])) {
$sys_course_path = api_get_path(SYS_COURSE_PATH);
//zip library for creation of the zipfile
require_once api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
// Creating a ZIP file
$temp_zip_file = api_get_path(SYS_ARCHIVE_PATH).api_get_unique_id().".zip";

@ -42,9 +42,11 @@ if ((user_is_author($id) || $isDrhOfCourse || (api_is_allowed_to_edit() || api_i
$url_dir = 'work_list.php?id='.$my_folder_data['id'];
}
$userInfo = api_get_user_info($work['user_id']);
$interbreadcrumb[] = array('url' => $url_dir, 'name' => $my_folder_data['title']);
$interbreadcrumb[] = array('url' => '#', 'name' => $userInfo['complete_name']);
$interbreadcrumb[] = array('url' => '#','name' => $work['title']);
//|| api_is_drh()
if (($courseInfo['show_score'] == 0 &&
$work['active'] == 1 &&
$work['accepted'] == 1
@ -99,6 +101,35 @@ if ((user_is_author($id) || $isDrhOfCourse || (api_is_allowed_to_edit() || api_i
$tpl = new Template();
$tpl->assign('work', $work);
$tpl->assign('comments', $comments);
$actions = '';
if (isset($work['contains_file'])) {
if (isset($work['download_url'])) {
$actions .= Display::url(
Display::return_icon(
'save.png',
get_lang('Download'),
null,
ICON_SIZE_MEDIUM
),
$work['download_url']
);
if (isset($work['url_correction'])) {
$actions .= Display::url(
Display::return_icon(
'check.png',
get_lang('Correction'),
null,
ICON_SIZE_MEDIUM
),
$work['download_url'].'&correction=1'
);
}
}
}
$tpl->assign('actions', $actions);
if (api_is_allowed_to_session_edit()) {
$tpl->assign('form', $commentForm);
}

@ -50,7 +50,7 @@ function display_action_links($id, $cur_dir_path, $action)
$display_output .= Display::return_icon('settings.png', get_lang('EditToolOptions'),'',ICON_SIZE_MEDIUM).'</a>';
}
$display_output .= '<a id="open-view-list" href="#">' . Display::return_icon('listwork.png', get_lang('viewStudents'),'',ICON_SIZE_MEDIUM) . '</a>';
}
if (api_is_allowed_to_edit(null, true) && $origin != 'learnpath' && api_is_allowed_to_session_edit(false, true)) {
@ -1564,6 +1564,11 @@ function getWorkListTeacher(
api_get_path(WEB_CODE_PATH).'work/edit_work.php?id='.$workId.'&'.api_get_cidreq()
);
$correctionLink = Display::url(
Display::return_icon('upload_file.png', get_lang('UploadCorrections'), '', ICON_SIZE_SMALL),
api_get_path(WEB_CODE_PATH).'work/upload_corrections.php?'.api_get_cidreq().'&id='.$workId
);
if ($countUniqueAttempts > 0) {
$downloadLink = Display::url(
Display::return_icon(
@ -1598,7 +1603,7 @@ function getWorkListTeacher(
$deleteLink = null;
$editLink = null;
}
$work['actions'] = $visibilityLink.$downloadLink.$editLink.$deleteLink;
$work['actions'] = $visibilityLink.$correctionLink.$downloadLink.$editLink.$deleteLink;
$works[] = $work;
}
}
@ -1895,7 +1900,9 @@ function get_work_user_list(
u.username,
parent_id,
accepted,
qualificator_id';
qualificator_id,
url_correction
';
if ($getCount) {
$select = "SELECT DISTINCT count(u.user_id) as count ";
}
@ -2055,8 +2062,15 @@ function get_work_user_list(
$action = '';
if (api_is_allowed_to_edit()) {
if (!empty($work['url_correction'])) {
$action .= Display::url(
Display::return_icon('check.png', get_lang('Correction'), null, ICON_SIZE_SMALL),
api_get_path(WEB_CODE_PATH).'work/download.php?id='.$item_id.'&'.api_get_cidreq().'&correction=1'
);
}
$action .= '<a href="'.$url.'view.php?'.api_get_cidreq().'&id='.$item_id.'" title="'.get_lang('View').'">'.
Display::return_icon('default.png', get_lang('View'),array(), ICON_SIZE_SMALL).'</a> ';
Display::return_icon('default.png', get_lang('View'), array(), ICON_SIZE_SMALL).'</a> ';
if ($unoconv && empty($work['contains_file'])) {
$action .= '<a href="'.$url.'work_list_all.php?'.api_get_cidreq().'&id='.$work_id.'&action=export_to_doc&item_id='.$item_id.'" title="'.get_lang('ExportToDoc').'" >'.
@ -2169,6 +2183,7 @@ function get_work_user_list(
$work['qualificator_id'] = $qualificator_id;
$work['actions'] = $send_to.$link_to_download.$action;
$work['correction'] = $correction;
$works[] = $work;
}
}
@ -2422,48 +2437,50 @@ function user_is_author($itemId, $userId = null, $courseId = null, $sessionId =
*/
function get_list_users_without_publication($task_id, $studentId = null)
{
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$session_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
//condition for the session
$session_id = api_get_session_id();
$course_id = api_get_course_int_id();
$users = getAllUserToWork($task_id, api_get_course_int_id());
$users = array_column($users, 'user_id');
// Condition for the session
$session_id = api_get_session_id();
$course_id = api_get_course_int_id();
$task_id = intval($task_id);
if ($session_id == 0) {
$sql = "SELECT user_id as id FROM $work_table
WHERE
c_id = $course_id AND
parent_id='$task_id' AND
parent_id = '$task_id' AND
active IN (0, 1)";
} else {
$sql = "SELECT user_id as id FROM $work_table
WHERE
c_id = $course_id AND
parent_id='$task_id' AND
session_id='".$session_id."' AND
parent_id = '$task_id' AND
session_id = '".$session_id."' AND
active IN (0, 1)";
}
$result = Database::query($sql);
$users_with_tasks = array();
while($row = Database::fetch_array($result)) {
while ($row = Database::fetch_array($result)) {
$users_with_tasks[] = $row['id'];
}
if ($session_id == 0) {
$sql_users = "SELECT cu.user_id, u.lastname, u.firstname, u.email
FROM $table_course_user AS cu, $table_user AS u
WHERE u.status != 1 and cu.c_id='".api_get_course_int_id()."' AND u.user_id = cu.user_id";
WHERE u.status != 1 and cu.c_id='".$course_id."' AND u.user_id = cu.user_id";
} else {
$sql_users = "SELECT cu.user_id, u.lastname, u.firstname, u.email
FROM $session_course_rel_user AS cu, $table_user AS u
WHERE
u.status != 1 AND
cu.c_id='".api_get_course_int_id()."' AND
cu.c_id='".$course_id."' AND
u.user_id = cu.user_id AND
cu.session_id = '".$session_id."'";
}
@ -2487,22 +2504,30 @@ function get_list_users_without_publication($task_id, $studentId = null)
$result_users = Database::query($sql_users);
$users_without_tasks = array();
while ($row_users = Database::fetch_row($result_users)) {
if (in_array($row_users[0], $users_with_tasks)) {
while ($rowUsers = Database::fetch_array($result_users)) {
$userId = $rowUsers['user_id'];
if (in_array($userId, $users_with_tasks)) {
continue;
}
if ($group_id && !in_array($row_users[0], $new_group_user_list)) {
if ($group_id && !in_array($userId, $new_group_user_list)) {
continue;
}
$userId = $row_users[0];
$row_users[0] = $row_users[1];
$row_users[1] = $row_users[2];
$row_users[2] = Display::encrypted_mailto_link($row_users[3]);
if (!empty($users)) {
if (!in_array($userId, $users)) {
continue;
}
}
$row_users = [];
$row_users[0] = $rowUsers['lastname'];
$row_users[1] = $rowUsers['firstname'];
$row_users[2] = Display::encrypted_mailto_link($rowUsers['email']);
$row_users[3] = $userId;
$users_without_tasks[] = $row_users;
}
return $users_without_tasks;
}
@ -2529,9 +2554,6 @@ function display_list_users_without_publication($task_id, $studentId = null)
$paging_options = array();
$my_params = array();
if (isset($_GET['curdirpath'])) {
$my_params['curdirpath'] = Security::remove_XSS($_GET['curdirpath']);
}
if (isset($_GET['edit_dir'])) {
$my_params['edit_dir'] = Security::remove_XSS($_GET['edit_dir']);
}
@ -4873,7 +4895,6 @@ function downloadAllFilesPerUser($userId, $courseInfo)
return false;
}
require_once api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
$tempZipFile = api_get_path(SYS_ARCHIVE_PATH).api_get_unique_id().".zip";
$coursePath = api_get_path(SYS_COURSE_PATH).$courseInfo['path'].'/work/';

@ -1,8 +1,6 @@
<?php
/* For licensing terms, see /license.txt */
use ChamiloSession as Session;
require_once '../inc/global.inc.php';
$current_course_tool = TOOL_STUDENTPUBLICATION;
@ -15,8 +13,8 @@ require_once 'work.lib.php';
$this_section = SECTION_COURSES;
$workId = isset($_GET['id']) ? intval($_GET['id']) : null;
$group_id = api_get_group_id();
$user_id = api_get_user_id();
if (empty($workId)) {
api_not_allowed(true);
@ -38,16 +36,17 @@ switch ($action) {
case 'send_mail':
$check = Security::check_token('get');
if ($check) {
$mails_sent_to = send_reminder_users_without_publication($my_folder_data);
$mails_sent_to = send_reminder_users_without_publication(
$my_folder_data
);
if (empty($mails_sent_to)) {
$error_message = Display::return_message(get_lang('NoResults'), 'warning');
Display::addFlash(Display::return_message(get_lang('NoResults'), 'warning'));
} else {
$error_message = Display::return_message(get_lang('MessageHasBeenSent').' '.implode(', ', $mails_sent_to), 'success');
}
if (!empty($error_message)) {
Session::write('error_message', $error_message);
Display::addFlash(Display::return_message(
get_lang('MessageHasBeenSent').' '.implode(', ', $mails_sent_to),
'success'
));
}
Security::clear_token();
}
@ -75,45 +74,53 @@ if (!empty($group_id)) {
api_not_allowed();
}
$interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'group/group.php', 'name' => get_lang('Groups'));
$interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'group/group_space.php?gidReq='.$group_id, 'name' => get_lang('GroupSpace').' '.$group_properties['name']);
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'group/group.php?'.api_get_cidreq(),
'name' => get_lang('Groups'),
);
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'group/group_space.php?gidReq='.$group_id,
'name' => get_lang('GroupSpace').' '.$group_properties['name']
);
}
$interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(), 'name' => get_lang('StudentPublications'));
$interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq().'&id='.$workId, 'name' => $my_folder_data['title']);
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(),
'name' => get_lang('StudentPublications')
);
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq().'&id='.$workId,
'name' => $my_folder_data['title']
);
if (isset($_GET['list']) && $_GET['list'] == 'with') {
$interbreadcrumb[] = array ('url' => '#', 'name' => get_lang('UsersWithTask'));
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('UsersWithTask'));
} else {
$interbreadcrumb[] = array ('url' => '#', 'name' => get_lang('UsersWithoutTask'));
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('UsersWithoutTask'));
}
Display :: display_header(null);
Display::display_header(null);
echo '<div class="actions">';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/work_list_all.php?id='.$workId.'&'.api_get_cidreq().'&origin='.$origin.'&gradebook='.$gradebook.'">'.Display::return_icon('back.png', get_lang('BackToWorksList'),'',ICON_SIZE_MEDIUM).'</a>';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/work_list_all.php?id='.$workId.'&'.api_get_cidreq().'">'.
Display::return_icon('back.png', get_lang('BackToWorksList'),'',ICON_SIZE_MEDIUM).'</a>';
$output = '';
if (!empty($workId)) {
if (empty($_GET['list']) or Security::remove_XSS($_GET['list']) == 'with') {
$display_output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;id='.$workId.'&amp;curdirpath='.$cur_dir_path.'&amp;origin='.$origin.'&amp;gradebook='.$gradebook.'&amp;list=without">'.
$output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&id='.$workId.'&list=without">'.
Display::return_icon('exercice_uncheck.png', get_lang('ViewUsersWithoutTask'),'',ICON_SIZE_MEDIUM)."</a>";
} else {
if (!isset($_GET['action']) || (isset($_GET['action']) && $_GET['action'] != 'send_mail')) {
$display_output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;id='.$workId.'&amp;curdirpath='.$cur_dir_path.'&amp;origin='.$origin.'&amp;gradebook='.$gradebook.'&amp;list=without&amp;action=send_mail&amp;sec_token='.$token.'">'.
$output .= '<a href="'.api_get_self().'?'.api_get_cidreq().'&id='.$workId.'&list=without&action=send_mail&sec_token='.$token.'">'.
Display::return_icon('mail_send.png', get_lang('ReminderMessage'),'',ICON_SIZE_MEDIUM)."</a>";
} else {
$display_output .= Display::return_icon('mail_send_na.png', get_lang('ReminderMessage'),'',ICON_SIZE_MEDIUM);
$output .= Display::return_icon('mail_send_na.png', get_lang('ReminderMessage'),'',ICON_SIZE_MEDIUM);
}
}
}
echo $display_output;
echo $output;
echo '</div>';
$error_message = Session::read('error_message');
if (!empty($error_message)) {
echo $error_message;
Session::erase('error_message');
}
display_list_users_without_publication($workId);

Loading…
Cancel
Save