Adding comments per work, configuration $_configuration['work_user_comments'] has to be set as well as the new tables see chash. Otherwise any change will appear in the work tool.

1.9.x
Julio Montoya 12 years ago
parent 262727c68c
commit c6232154d2
  1. 2
      main/inc/lib/database.constants.inc.php
  2. 2
      main/inc/lib/template.lib.php
  3. 27
      main/template/default/work/view.tpl
  4. 21
      main/work/view.php
  5. 129
      main/work/work.lib.php

@ -168,6 +168,8 @@ define('TABLE_STUDENT_PUBLICATION_ASSIGNMENT', 'student_publication_assignment'
define('TABLE_STUDENT_PUBLICATION_REL_DOCUMENT', 'student_publication_rel_document');
define('TABLE_STUDENT_PUBLICATION_REL_USER', 'student_publication_rel_user');
define('TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT', 'student_publication_comment');
// Course forum tables
define('TABLE_FORUM_CATEGORY', 'forum_category');
define('TABLE_FORUM', 'forum_forum');

@ -98,7 +98,7 @@ class Template
);
$this->twig->addFilter('icon', new Twig_Filter_Function('Template::get_icon_path'));
$this->twig->addFilter('format_date', new Twig_Filter_Function('Template::format_date'));
$this->twig->addFilter('api_get_local_time', new Twig_Filter_Function('api_get_local_time'));
/*
$lexer = new Twig_Lexer($this->twig, array(

@ -1,7 +1,30 @@
<div class="page-header">
<h2>{{ work.title }}</h2>
</div>
<p>
{{ work.description }}
{{ work.description }}
</p>
{# "UpdatedBy"|get_lang|format(comment.username) #}
{% if work_comment_enabled %}
<h4>
{{ 'Comments' | get_lang }}
</h4>
<hr>
<ul>
{% for comment in comments %}
<li>
<div class="page-header">
<a href="{{ _p.web_code }}"><img height="24" src="{{ comment.picture }}"/> {{ comment.username }} </a>- {{ comment.sent_at | api_get_local_time }}
</div>
<p>
{{ comment.comment }}
</p>
</li>
{% endfor %}
</ul>
<br />
<hr>
{{ form }}
{% endif %}

@ -1,5 +1,4 @@
<?php
/* For licensing terms, see /license.txt */
$language_file = array('exercice', 'work', 'document', 'admin');
@ -32,13 +31,29 @@ if (user_is_author($id) || $course_info['show_score'] == 0 && $work['active'] ==
$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))) {
api_is_allowed_to_edit() || user_is_author($id)
) {
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'send_comment') {
addWorkComment(api_get_user_id(), $work, $_POST);
$url = api_get_path(WEB_CODE_PATH).'work/view.php?id='.$work['id'].'&'.api_get_cidreq();
header('Location: '.$url);
exit;
}
$tpl = new Template();
$tpl->assign('work', $work);
$tpl->assign('work_comment_enabled', ALLOW_USER_COMMENTS);
$comments = getWorkComments($work);
$commentForm = getWorkCommentForm($work);
$tpl->assign('comments', $comments);
$tpl->assign('form', $commentForm);
$template = $tpl->get_template('work/view.tpl');
$content = $tpl->fetch($template);
$tpl->assign('content', $content);
$tpl->display_one_col_template();
} else {
api_not_allowed(true);

@ -23,6 +23,13 @@ if (isset($_configuration['add_document_to_work'])) {
define('ADD_DOCUMENT_TO_WORK', false);
}
$_configuration['work_user_comments'] = true;
if (isset($_configuration['work_user_comments'])) {
define('ALLOW_USER_COMMENTS', $_configuration['work_user_comments']);
} else {
define('ALLOW_USER_COMMENTS', false);
}
/**
* Displays action links (for admins, authorized groups members and authorized students)
* @param string Current dir
@ -625,10 +632,10 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$there_is_a_expire_date = true;
$defaults['enableExpiryDate'] = true;
$form_folder -> addElement('checkbox', 'enableExpiryDate',null,get_lang('EnableExpiryDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option1\').style.display = \'block\';}else{document.getElementById(\'option1\').style.display = \'none\';}"');
$form_folder -> addElement('html', '<div id=\'option1\' style="display:block">');
$form_folder -> addGroup(create_group_date_select(), 'expires', get_lang('ExpiresAt'));
$form_folder -> addElement('html', '</div>');
$form_folder->addElement('checkbox', 'enableExpiryDate',null,get_lang('EnableExpiryDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option1\').style.display = \'block\';}else{document.getElementById(\'option1\').style.display = \'none\';}"');
$form_folder->addElement('html', '<div id=\'option1\' style="display:block">');
$form_folder->addGroup(create_group_date_select(), 'expires', get_lang('ExpiresAt'));
$form_folder->addElement('html', '</div>');
} else {
$homework['expires_on'] = api_get_local_time();
@ -637,10 +644,10 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$there_is_a_expire_date = false;
$form_folder -> addElement('checkbox', 'enableExpiryDate',null,get_lang('EnableExpiryDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option1\').style.display = \'block\';}else{document.getElementById(\'option1\').style.display = \'none\';}"');
$form_folder -> addElement('html', '<div id=\'option1\' style="display:none">');
$form_folder -> addGroup(create_group_date_select(), 'expires', get_lang('ExpiresAt'));
$form_folder -> addElement('html', '</div>');
$form_folder->addElement('checkbox', 'enableExpiryDate',null,get_lang('EnableExpiryDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option1\').style.display = \'block\';}else{document.getElementById(\'option1\').style.display = \'none\';}"');
$form_folder->addElement('html', '<div id=\'option1\' style="display:none">');
$form_folder->addGroup(create_group_date_select(), 'expires', get_lang('ExpiresAt'));
$form_folder->addElement('html', '</div>');
}
if ($homework['ends_on'] != '0000-00-00 00:00:00') {
@ -649,11 +656,11 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$defaults['enableEndDate'] = true;
$form_folder -> addElement('checkbox', 'enableEndDate', null, get_lang('EnableEndDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option2\').style.display = \'block\';}else{document.getElementById(\'option2\').style.display = \'none\';}"');
$form_folder -> addElement('html', '<div id=\'option2\' style="display:block">');
$form_folder -> addGroup(create_group_date_select(), 'ends', get_lang('EndsAt'));
$form_folder -> addElement('html', '</div>');
$form_folder -> addRule(array('expires', 'ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
$form_folder->addElement('checkbox', 'enableEndDate', null, get_lang('EnableEndDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option2\').style.display = \'block\';}else{document.getElementById(\'option2\').style.display = \'none\';}"');
$form_folder->addElement('html', '<div id=\'option2\' style="display:block">');
$form_folder->addGroup(create_group_date_select(), 'ends', get_lang('EndsAt'));
$form_folder->addElement('html', '</div>');
$form_folder->addRule(array('expires', 'ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
} else {
$homework['ends_on'] = api_get_local_time();
@ -663,20 +670,20 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$there_is_a_end_date = false;
$form_folder -> addElement('checkbox', 'enableEndDate', null, get_lang('EnableEndDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option2\').style.display = \'block\';}else{document.getElementById(\'option2\').style.display = \'none\';}"');
$form_folder -> addElement('html', '<div id=\'option2\' style="display:none">');
$form_folder -> addGroup(create_group_date_select(), 'ends', get_lang('EndsAt'));
$form_folder -> addElement('html', '</div>');
$form_folder -> addRule(array('expires', 'ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
$form_folder->addElement('checkbox', 'enableEndDate', null, get_lang('EnableEndDate'), 'onclick="javascript: if(this.checked){document.getElementById(\'option2\').style.display = \'block\';}else{document.getElementById(\'option2\').style.display = \'none\';}"');
$form_folder->addElement('html', '<div id=\'option2\' style="display:none">');
$form_folder->addGroup(create_group_date_select(), 'ends', get_lang('EndsAt'));
$form_folder->addElement('html', '</div>');
$form_folder->addRule(array('expires', 'ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
}
if ($there_is_a_expire_date && $there_is_a_end_date) {
$form_folder -> addRule(array('expires', 'ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
}
$form_folder -> addElement('checkbox', 'allow_text_assignment', null, get_lang('AllowTextAssignments'));
$form_folder -> addElement('html', '</div>');
$form_folder -> addElement('style_submit_button', 'submit', get_lang('ModifyDirectory'), 'class="save"');
$form_folder->addElement('checkbox', 'allow_text_assignment', null, get_lang('AllowTextAssignments'));
$form_folder->addElement('html', '</div>');
$form_folder->addElement('style_submit_button', 'submit', get_lang('ModifyDirectory'), 'class="save"');
if ($there_is_a_end_date) {
$end_date_array = convert_date_to_array($homework['ends_on'], 'ends');
@ -2390,3 +2397,83 @@ function getWorkDescriptionToolbar()
{
return array('ToolbarSet' => 'Work', 'Width' => '100%', 'Height' => '400');
}
/**
* @param array $work
* @return string
*/
function getWorkComments($work) {
if (ADD_DOCUMENT_TO_WORK == false) {
return array();
}
$commentTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT);
$userTable= Database::get_main_table(TABLE_MAIN_USER);
$courseId = $work['c_id'];
$workId = $work['id'];
$sql = "SELECT c.*, u.firstname, u.lastname, u.username, u.picture_uri
FROM $commentTable c INNER JOIN $userTable u ON(u.user_id = c.user_id)
WHERE c_id = $courseId AND work_id = $workId
ORDER BY sent_at
";
$result = Database::query($sql);
$comments = Database::store_result($result, 'ASSOC');
foreach ($comments as &$comment) {
$pictureInfo = UserManager::get_picture_user($comment['user_id'], $comment['picture_uri'], 24, USER_IMAGE_SIZE_SMALL);
$comment['picture'] = $pictureInfo['file'];
}
return $comments;
}
/**
* @param int $userId
* @param array $work
* @param array $data
* @return int
*/
function addWorkComment($userId, $work, $data)
{
if (ADD_DOCUMENT_TO_WORK == false) {
return null;
}
$commentTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT);
if (empty($data['comment'])) {
return null;
}
$params = array(
'work_id' => $work['id'],
'c_id' => $work['c_id'],
'user_id' => $userId,
'comment' => $data['comment'],
'sent_at' => api_get_utc_datetime()
);
return Database::insert($commentTable, $params);
}
/**
* @param array $work
* @return string
*/
function getWorkCommentForm($work)
{
if (ADD_DOCUMENT_TO_WORK == false) {
return null;
}
$form = new FormValidator(
'work_comment',
'post',
api_get_path(WEB_CODE_PATH).'work/view.php?id='.$work['id'].'&action=send_comment&'.api_get_cidreq()
);
$form->addElement('textarea', 'comment', get_lang('Comment'), array('class' => 'span5', 'rows' => '8'));
$form->addRule('comment', get_lang('ThisFieldIsRequired'), 'required');
$form->addElement('hidden', 'id', $work['id']);
$form->addElement('button', 'button', get_lang('Send'));
return $form->return_form();
}

Loading…
Cancel
Save