';
foreach ($documents as $doc) {
$documentId = $doc['document_id'];
@@ -75,11 +74,11 @@ if (empty($docId)) {
}
$document_tree = DocumentManager::get_document_preview($courseInfo, null, null, 0, false, '/', api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId);
- echo Display::page_subheader(get_lang('DocumentToAdd'));
+ echo Display::page_subheader(get_lang('Documents'));
echo $document_tree;
echo '
';
-
} else {
+ $message = null;
$documentInfo = DocumentManager::get_document_data_by_id($docId, $courseInfo['code']);
$form = new FormValidator('add_doc', 'post', api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId.'&document_id='.$docId);
@@ -89,8 +88,6 @@ if (empty($docId)) {
$form->addElement('hidden', 'document_id', $docId);
$form->addElement('label', get_lang('File'), $documentInfo['title']);
$form->addElement('style_submit_button', 'submit', get_lang('Add'));
- $form->display();
-
if ($form->validate()) {
$values = $form->exportValues();
$workId = $values['id'];
@@ -99,14 +96,21 @@ if (empty($docId)) {
if (empty($data)) {
addDocumentToWork($docId, $workId, api_get_course_int_id());
- Display::display_confirmation_message(get_lang('Added'));
+ $url = api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId;
+ header('Location: '.$url);
+ exit;
} else {
- Display::display_warning_message(get_lang('DocumentAlreadyAdded'));
+ $message = Display::return_message(get_lang('DocumentAlreadyAdded'), 'warning');
}
}
+
+ Display :: display_header(null);
+ echo $message;
+ $form->display();
}
/*
+ * DB changes needed
*
CREATE TABLE IF NOT EXISTS c_student_publication_rel_document (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
diff --git a/main/work/add_user.php b/main/work/add_user.php
index eebca90fdf..30d8610394 100644
--- a/main/work/add_user.php
+++ b/main/work/add_user.php
@@ -44,7 +44,6 @@ $error_message = null;
switch ($action) {
case 'add':
-
$data = getUserToWork($userId, $workId, api_get_course_int_id());
if (empty($data)) {
addUserToWork($userId, $workId, api_get_course_int_id());
@@ -52,7 +51,6 @@ switch ($action) {
$url = api_get_path(WEB_CODE_PATH).'work/add_user.php?id='.$workId;
header('Location: '.$url);
exit;
-
break;
case 'delete':
if (!empty($workId) && !empty($userId)) {
@@ -66,11 +64,10 @@ switch ($action) {
Display :: display_header(null);
-echo Display::page_subheader(get_lang('UsersAdded'));
-
$items = getAllUserToWork($workId, api_get_course_int_id());
$usersAdded = array();
if (!empty($items)) {
+ echo Display::page_subheader(get_lang('UsersAdded'));
echo '
';
foreach ($items as $data) {
$myUserId = $data['user_id'];
diff --git a/main/work/download.php b/main/work/download.php
index f1c981c73e..56b88e2201 100644
--- a/main/work/download.php
+++ b/main/work/download.php
@@ -37,8 +37,8 @@ if (empty($course_info)) {
$tbl_student_publication = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
if (!empty($course_info['real_id'])) {
- $sql = 'SELECT * FROM '.$tbl_student_publication.' WHERE c_id = '.$course_info['real_id'].' AND id = "'.$id.'"';
- $result = Database::query($sql);
+ $sql = 'SELECT * FROM '.$tbl_student_publication.' WHERE c_id = '.$course_info['real_id'].' AND id = "'.$id.'"';
+ $result = Database::query($sql);
if ($result && Database::num_rows($result)) {
$row = Database::fetch_array($result, 'ASSOC');
$full_file_name = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/'.$row['url'];
@@ -76,20 +76,24 @@ if (!empty($course_info['real_id'])) {
$work_is_visible = ($item_info['visibility'] == 1 && $row['accepted'] == 1);
$doc_visible_for_all = ($course_info['show_score'] == 1);
- $is_editor = api_is_allowed_to_edit(true,true,true);
- $student_is_owner_of_work = ($row['user_id'] == api_get_user_id());
- if ($is_editor
- || (!$doc_visible_for_all && $work_is_visible && $student_is_owner_of_work)
- || ($doc_visible_for_all && $work_is_visible)) {
- $title = str_replace(' ', '_', $row['title']);
+ $is_editor = api_is_allowed_to_edit(true, true, true);
+ $student_is_owner_of_work = user_is_author($row['id'], $row['user_id']);
+
+ if ($is_editor
+ //|| (!$doc_visible_for_all && $work_is_visible && $student_is_owner_of_work)
+ || ($student_is_owner_of_work)
+ || ($doc_visible_for_all && $work_is_visible)) {
+ $title = str_replace(' ', '_', $row['title']);
event_download($title);
- if (Security::check_abs_path($full_file_name, api_get_path(SYS_COURSE_PATH).api_get_course_path().'/')) {
- DocumentManager::file_send_for_download($full_file_name, true, $title);
- }
- } else {
+ if (Security::check_abs_path($full_file_name, api_get_path(SYS_COURSE_PATH).api_get_course_path().'/')) {
+ DocumentManager::file_send_for_download($full_file_name, true, $title);
+ }
+ } else {
api_not_allowed();
}
- }
+ }
+} else {
+ api_not_allowed();
}
exit;
diff --git a/main/work/edit.php b/main/work/edit.php
index af2de7447a..f8e52f42a0 100644
--- a/main/work/edit.php
+++ b/main/work/edit.php
@@ -66,16 +66,18 @@ if (!$is_author) {
api_not_allowed(true);
}
-// Student's can't edit work
+// Student's can't edit work only if he can delete his docs.
if (!api_is_allowed_to_edit()) {
- api_not_allowed(true);
+ if (api_get_course_setting('student_delete_own_publication') != 1) {
+ api_not_allowed(true);
+ }
}
if (!empty($my_folder_data)) {
$homework = get_work_assignment_by_id($my_folder_data['id']);
if ($homework['expires_on'] != '0000-00-00 00:00:00' || $homework['ends_on'] != '0000-00-00 00:00:00') {
- $time_now = time();
+ $time_now = time();
if (!empty($homework['expires_on']) && $homework['expires_on'] != '0000-00-00 00:00:00') {
$time_expires = api_strtotime($homework['expires_on'], 'UTC');
@@ -110,13 +112,19 @@ $form_title = get_lang('Edit');
$interbreadcrumb[] = array('url' => '#', 'name' => $form_title);
-$form = new FormValidator('form', 'POST', api_get_self()."?".api_get_cidreq()."&id=".$work_id."&gradebook=".Security::remove_XSS($_GET['gradebook'])."&origin=$origin", '', array('enctype' => "multipart/form-data"));
+$form = new FormValidator(
+ 'form',
+ 'POST',
+ api_get_self()."?".api_get_cidreq()."&id=".$work_id."&gradebook=".Security::remove_XSS($_GET['gradebook'])."&origin=$origin",
+ '',
+ array('enctype' => "multipart/form-data")
+);
$form->addElement('header', $form_title);
$show_progress_bar = false;
if ($submitGroupWorkUrl) {
- // For user comming from group space to publish his work
+ // For user coming from group space to publish his work
$realUrl = str_replace($_configuration['root_sys'], api_get_path(WEB_PATH), str_replace("\\", '/', realpath($submitGroupWorkUrl)));
$form->addElement('hidden', 'newWorkUrl', $submitGroupWorkUrl);
$text_document = $form->addElement('text', 'document', get_lang('Document'));
@@ -129,7 +137,7 @@ if ($submitGroupWorkUrl) {
$form->addElement('hidden', 'id', $work_id);
$form->addElement('hidden', 'item_id', $item_id);
$form->addElement('text', 'title', get_lang('Title'), array('id' => 'file_upload', 'class' => 'span4'));
-$form->add_html_editor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'Work', 'Width' => '100%', 'Height' => '200'));
+$form->add_html_editor('description', get_lang('Description'), false, false, getWorkDescriptionToolbar());
$defaults['title'] = $work_item['title'];
$defaults["description"] = $work_item['description'];
@@ -142,7 +150,7 @@ if ($is_allowed_to_edit && !empty($item_id)) {
$row = Database::fetch_array($result);
$qualification_over = $row['qualification'];
if (!empty($qualification_over) && intval($qualification_over) > 0) {
- $form->addElement('text', 'qualification', array(get_lang('Qualification'), null, " / ".$qualification_over), 'size="10"');
+ $form->addElement('text', 'qualification', array(get_lang('Qualification'), null, " / ".$qualification_over), 'size="10"');
$form->addElement('hidden', 'qualification_over', $qualification_over);
}
}
@@ -179,27 +187,28 @@ if ($form->validate()) {
$work_data = get_work_data_by_id($item_to_edit_id);
if (!empty($_POST['title'])) {
- $title = isset($_POST['title']) ? $_POST['title'] : $work_data['title'];
+ $title = isset($_POST['title']) ? $_POST['title'] : $work_data['title'];
}
$description = isset($_POST['description']) ? $_POST['description'] : $work_data['description'];
if ($is_allowed_to_edit && ($_POST['qualification'] !='' )) {
- $add_to_update = ', qualificator_id ='."'".api_get_user_id()."',";
+ $add_to_update = ', qualificator_id ='."'".api_get_user_id()."', ";
$add_to_update .= ' qualification = '."'".Database::escape_string($_POST['qualification'])."',";
- $add_to_update .= ' date_of_qualification ='."'".api_get_utc_datetime()."'";
+ $add_to_update .= ' date_of_qualification = '."'".api_get_utc_datetime()."'";
}
- if ((int)$_POST['qualification'] > (int)$_POST['qualification_over']) {
+ if ($_POST['qualification'] > $_POST['qualification_over']) {
Display::display_error_message(get_lang('QualificationMustNotBeMoreThanQualificationOver'));
} else {
$sql = "UPDATE " . $work_table . "
- SET title = '" . Database::escape_string($title) . "',
- description = '" . Database::escape_string($description) . "'
+ SET title = '".Database::escape_string($title)."',
+ description = '".Database::escape_string($description)."'
".$add_to_update."
WHERE c_id = $course_id AND id = $item_to_edit_id";
Database::query($sql);
}
api_item_property_update($_course, 'work', $item_to_edit_id, 'DocumentUpdated', $user_id);
+
$succeed = true;
$error_message .= Display::return_message(get_lang('ItemUpdated'), false);
} else {
@@ -210,14 +219,13 @@ if ($form->validate()) {
}
Security::clear_token();
} else {
- //Bad token or can't add works
+ // Bad token or can't add works
$error_message = Display::return_message(get_lang('IsNotPosibleSaveTheDocument'), 'error');
}
$script = 'work_list.php';
if ($is_allowed_to_edit) {
$script = 'work_list_all.php';
}
-
header('Location: '.api_get_path(WEB_CODE_PATH).'work/'.$script.'?'.api_get_cidreq().'&id='.$work_id.'&error_message='.$error_message);
exit;
}
diff --git a/main/work/student_work.php b/main/work/student_work.php
index b34b815a05..fc2810ba6a 100644
--- a/main/work/student_work.php
+++ b/main/work/student_work.php
@@ -8,15 +8,11 @@ $language_file = array('exercice', 'work', 'document', 'admin', 'gradebook');
require_once '../inc/global.inc.php';
$current_course_tool = TOOL_STUDENTPUBLICATION;
-/* Configuration settings */
-
api_protect_course_script(true);
-// Including necessary files
require_once 'work.lib.php';
$this_section = SECTION_COURSES;
-//$workId = isset($_GET['id']) ? intval($_GET['id']) : null;
$studentId = isset($_GET['studentId']) ? intval($_GET['studentId']) : null;
if (empty($studentId)) {
@@ -27,11 +23,14 @@ $tool_name = get_lang('StudentPublications');
$group_id = api_get_group_id();
$userInfo = api_get_user_info($studentId);
+$courseInfo = api_get_course_info();
-if (empty($userInfo)) {
+if (empty($userInfo) || empty($courseInfo)) {
api_not_allowed(true);
}
+// Only a teachers page.
+
if (!empty($group_id)) {
$group_properties = GroupManager :: get_group_properties($group_id);
$show_work = false;
@@ -89,11 +88,9 @@ foreach ($workPerUser as $work) {
$column++;
$table->setCellContents($row, $column, $userResult['sent_date']);
$column++;
- //$dateQualification = !empty($workExtraData['expires_on']) && $workExtraData['expires_on'] != '0000-00-00 00:00:00' ? api_get_utc_datetime($workExtraData['expires_on']) : '-';
$dateQualification = !empty($workExtraData['expires_on']) && $workExtraData['expires_on'] != '0000-00-00 00:00:00' ? api_get_local_time($workExtraData['expires_on']) : '-';
$table->setCellContents($row, $column, $dateQualification);
$column++;
- //var_dump($userResult);
$score = '-';
if (!empty($scoreWeight)) {
$score = strip_tags($userResult['qualification'])."/".$scoreWeight;
@@ -104,16 +101,14 @@ foreach ($workPerUser as $work) {
// Actions
$links = null;
- if (empty($userResult['url'])) {
- // is a text
- $url = api_get_path(WEB_CODE_PATH).'work/view.php?'.api_get_cidreq().'&id='.$userResult['id'];
- $links .= Display::url(Display::return_icon('default.png'), $url);
- } else {
+ // is a text
+ $url = api_get_path(WEB_CODE_PATH).'work/view.php?'.api_get_cidreq().'&id='.$userResult['id'];
+ $links .= Display::url(Display::return_icon('default.png'), $url);
+ if (!empty($userResult['url'])) {
$url = api_get_path(WEB_CODE_PATH).'work/download.php?'.api_get_cidreq().'&id='.$userResult['id'];
- $links .= Display::url(Display::return_icon('save.png'), $url);
+ $links .= Display::url(Display::return_icon('save.png', get_lang('Download')), $url);
}
-
$url = api_get_path(WEB_CODE_PATH).'work/edit.php?'.api_get_cidreq().'&item_id='.$userResult['id'].'&id='.$workId.'&parent_id='.$workId;
$links .= Display::url(Display::return_icon('edit.png', get_lang('Comment')), $url);
diff --git a/main/work/upload.php b/main/work/upload.php
index 1ab7a34c5e..669b7fa6e3 100644
--- a/main/work/upload.php
+++ b/main/work/upload.php
@@ -151,7 +151,7 @@ if ($submitGroupWorkUrl) {
$form->addElement('hidden', 'id', $work_id);
$form->addElement('hidden', 'contains_file', 0, array('id'=>'contains_file_id'));
$form->addElement('text', 'title', get_lang('Title'), array('id' => 'file_upload', 'class' => 'span4'));
-$form->add_html_editor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'Work', 'Width' => '100%', 'Height' => '200'));
+$form->add_html_editor('description', get_lang('Description'), false, false, getWorkDescriptionToolbar());
$form->addElement('hidden', 'active', 1);
$form->addElement('hidden', 'accepted', 1);
@@ -328,7 +328,6 @@ if ($form->validate()) {
}
$htmlHeadXtra[] = to_javascript_work();
-
Display :: display_header(null);
if (!empty($work_id)) {
diff --git a/main/work/view.php b/main/work/view.php
index caa7727fc1..520e9343bb 100644
--- a/main/work/view.php
+++ b/main/work/view.php
@@ -23,11 +23,17 @@ $course_info = api_get_course_info();
allowOnlySubscribedUser(api_get_user_id(), $work['parent_id'], $course_info['real_id']);
if (user_is_author($id) || $course_info['show_score'] == 0 && $work['active'] == 1 && $work['accepted'] == 1) {
- $url_dir = 'work.php?&id=' . $my_folder_data['id'];
- $interbreadcrumb[] = array ('url' => $url_dir,'name' => $my_folder_data['title']);
- $interbreadcrumb[] = array ('url' => '#','name' => $work['title']);
-
- if (($course_info['show_score'] == 0 && $work['active'] == 1 && $work['accepted'] == 1) || api_is_allowed_to_edit() || ($work['user_id'] == api_get_user_id() && $work['active'] == 1 && $work['accepted'] == 1)) {
+ if (api_is_allowed_to_edit(null, true)) {
+ $url_dir = 'work_list_all.php?id='.$my_folder_data['id'];
+ } else {
+ $url_dir = 'work_list.php?id='.$my_folder_data['id'];
+ }
+ $interbreadcrumb[] = array('url' => $url_dir, 'name' => $my_folder_data['title']);
+ $interbreadcrumb[] = array('url' => '#','name' => $work['title']);
+ if (
+ ($course_info['show_score'] == 0 && $work['active'] == 1 && $work['accepted'] == 1) ||
+ api_is_allowed_to_edit() ||
+ (user_is_author($id))) {
$tpl = new Template();
$tpl->assign('work', $work);
$template = $tpl->get_template('work/view.tpl');
@@ -35,6 +41,8 @@ if (user_is_author($id) || $course_info['show_score'] == 0 && $work['active'] ==
$tpl->assign('content', $content);
$tpl->display_one_col_template();
} else {
- api_not_allowed();
+ api_not_allowed(true);
}
+} else {
+ api_not_allowed(true);
}
diff --git a/main/work/work.lib.php b/main/work/work.lib.php
index a194dfe7c6..dc9f5a9996 100644
--- a/main/work/work.lib.php
+++ b/main/work/work.lib.php
@@ -8,7 +8,7 @@
* @author Roan Embrechts, code refactoring and virtual course support
* @author Frederic Vauthier, directories management
* @author Julio Montoya
BeezNest 2011 LOTS of bug fixes
- * @todo this lib should be convert in a static class and moved to main/inc/lib
+ * @todo this lib should be convert in a static class and moved to magein/inc/lib
*/
/**
* Initialization
@@ -17,7 +17,11 @@ require_once api_get_path(SYS_CODE_PATH).'document/document.inc.php';
require_once api_get_path(LIBRARY_PATH).'fileDisplay.lib.php';
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/gradebook_functions.inc.php';
-define('ADD_DOCUMENT_TO_WORK', false);
+if (isset($_configuration['add_document_to_work'])) {
+ define('ADD_DOCUMENT_TO_WORK', $_configuration['add_document_to_work']);
+} else {
+ define('ADD_DOCUMENT_TO_WORK', false);
+}
/**
* Displays action links (for admins, authorized groups members and authorized students)
@@ -55,8 +59,6 @@ function display_action_links($id, $cur_dir_path, $action)
}
}
-
-
if (api_is_allowed_to_edit(null, true) && $origin != 'learnpath' && api_is_allowed_to_session_edit(false, true)) {
// Delete all files
if (api_get_setting('permanently_remove_deleted_files') == 'true'){
@@ -66,7 +68,6 @@ function display_action_links($id, $cur_dir_path, $action)
}
}
-
if ($display_output != '') {
echo '';
echo $display_output;
@@ -160,7 +161,6 @@ function display_studentsdelete_form() {
-
0) {
$qualification_exists = true;
@@ -493,7 +508,6 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$group_id = api_get_group_id();
-
if (is_array($work_parents)) {
foreach ($work_parents as $work_parent) {
$sql_select_directory = "SELECT
@@ -516,7 +530,7 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
} else {
$sql_select_directory .= " work.post_group_id = '0' ";
}
- $sql_select_directory .= " AND ".
+ $sql_select_directory .= " AND ".
" work.c_id = $course_id AND ".
" work.id = ".$work_parent->id." AND ".
" work.filetype = 'folder' AND ".
@@ -595,9 +609,7 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$weight_input2[] = $form_folder->createElement('text', 'weight');
$form_folder -> addGroup($weight_input2, 'weight', get_lang('WeightInTheGradebook'), 'size="10"');
-
$form_folder -> addElement('html', '