Attendance: Add author of the comment - refs BT#20363

pull/4544/head
Christian 3 years ago
parent fe97b2dd72
commit 4caa233d2c
  1. 26
      main/attendance/attendance_comment.inc.php
  2. 9
      main/inc/ajax/user_manager.ajax.php
  3. 28
      main/inc/lib/attendance.lib.php
  4. 2
      main/install/configuration.dist.php
  5. 31
      src/Chamilo/CourseBundle/Entity/CAttendanceResultComment.php

@ -1,6 +1,7 @@
<div id="comment-popup" style="display: none">
<div id="comment-area" class="well">
<textarea id="txt-comment" style="width: 100%;height: 150px;" placeholder="<?php echo get_lang('WriteAComment'); ?>"></textarea>
<div id="comment-author"></div>
</div>
<span id="save-comment-controls">
<span id="comment-results"></span>
@ -54,6 +55,7 @@
$('#save-comment-controls').show();
$('#comment-area').show();
$("#txt-comment").val('');
$("#comment-author").text('');
});
$(".attendance-comment").on("click", function() {
@ -67,22 +69,20 @@
$("#comment-results").hide();
$("#save-comment-controls").show();
$('#comment-area').show();
var comment = getComment(selected);
$("#txt-comment").val(comment);
setComment(selected);
});
function getComment(selected) {
var response = $.ajax({
data: "a=get_attendance_comment&selected="+selected,
url: urlAjax,
async: false,
success: function (comment) {
response = comment;
},
type: 'post'
function setComment(selected) {
$('#txt-comment').val('...');
$("#comment-author").text('');
$.getJSON(urlAjax + "&a=get_attendance_comment&selected=" + selected).done(function (data) {
if (data.comment) {
$('#txt-comment').val(data.comment);
}
if (data.author) {
$("#comment-author").text(data.author);
}
});
return response.responseText;
}
});
</script>

@ -40,11 +40,16 @@ switch ($action) {
if (!empty($selected)) {
list($prefix, $userId, $attendanceCalendarId) = explode('-', $selected);
$attendance = new Attendance();
$comment = $attendance->getComment(
$commentInfo = $attendance->getComment(
(int) $userId,
(int) $attendanceCalendarId
);
echo $comment;
echo json_encode(
[
'comment' => $commentInfo['comment'],
'author' => !empty($commentInfo['author']) ? get_lang('Author').': '.$commentInfo['author'] : '',
]
);
}
break;
case 'block_attendance_calendar':

@ -2741,7 +2741,14 @@ class Attendance
$result['count'] = $count;
$result['full_name'] = api_get_person_name($user['firstname'], $user['lastname']);
foreach ($calendar as $classDay) {
$comment = $this->getComment($user['user_id'], $classDay['id']);
$commentInfo = $this->getComment($user['user_id'], $classDay['id']);
$comment = '';
if (!empty($commentInfo['comment'])) {
$comment .= $commentInfo['comment'];
}
if (!empty($commentInfo['author'])) {
$comment .= ' - '.get_lang('Author').': '.$commentInfo['author'];
}
$txtComment = !empty($comment) ? '[comment]'.$comment : '';
if (1 == (int) $classDay['done_attendance']) {
if (1 == (int) $dataUsersPresence[$user['user_id']][$classDay['id']]['presence']) {
@ -2768,7 +2775,7 @@ class Attendance
/**
* Get the user comment in attendance sheet.
*
* @return false|string
* @return false|array The comment text and the author.
*/
public function getComment(
int $userId,
@ -2803,13 +2810,24 @@ class Attendance
$repo = $em->getRepository('ChamiloCourseBundle:CAttendanceResultComment');
$attendanceResultComment = $repo->findOneBy($criteria);
$author = '';
/** @var CAttendanceResultComment $attendanceResultComment */
if ($attendanceResultComment) {
$comment = $attendanceResultComment->getComment();
$authorId = $attendanceResultComment->getAuthorUserId();
if (!empty($authorId)) {
$authorInfo = api_get_user_info($authorId);
$author = api_get_person_name($authorInfo['firstname'], $authorInfo['lastname']);
}
}
}
return $comment;
$commentInfo = [
'comment' => $comment,
'author' => $author,
];
return $commentInfo;
}
/**
@ -2868,6 +2886,7 @@ class Attendance
if ($attendanceResultComment) {
$attendanceResultComment->setComment($comment);
$attendanceResultComment->setUpdatedAt(api_get_utc_datetime(null, false, true));
$attendanceResultComment->setAuthorUserId(api_get_user_id());
$em->persist($attendanceResultComment);
$em->flush();
} else {
@ -2875,7 +2894,8 @@ class Attendance
$attendanceResultComment
->setAttendanceSheetId($attendanceSheetId)
->setUserId($userId)
->setComment($comment);
->setComment($comment)
->setAuthorUserId(api_get_user_id());
$em->persist($attendanceResultComment);
$em->flush();

@ -2343,7 +2343,7 @@ INSERT INTO `extra_field` (`extra_field_type`, `field_type`, `variable`, `displa
// Enable comments in attendance sheet for users
// Require DB changes:
//CREATE TABLE c_attendance_result_comment (iid int not null PRIMARY KEY AUTO_INCREMENT, attendance_sheet_id int not null, user_id int not null, created_at datetime not null, updated_at datetime not null, comment text not null);
//CREATE TABLE c_attendance_result_comment (iid int not null PRIMARY KEY AUTO_INCREMENT, attendance_sheet_id int not null, user_id int not null, created_at datetime not null, updated_at datetime not null, comment text not null, author_user_id int not null);
//CREATE INDEX c_attendance_sheet_user ON track_e_access_complete (attendance_sheet_id, user_id);
//$_configuration['attendance_allow_comments'] = false;

@ -63,6 +63,13 @@ class CAttendanceResultComment
*/
protected $updatedAt;
/**
* @var int
*
* @ORM\Column(name="author_user_id", type="integer", nullable=false)
*/
protected $authorUserId;
/**
* Project constructor.
*/
@ -179,4 +186,28 @@ class CAttendanceResultComment
{
return $this->comment;
}
/**
* Set authorUserId.
*
* @param int $authorUserId
*
* @return CAttendanceResultComment
*/
public function setAuthorUserId($authorUserId)
{
$this->authorUserId = $authorUserId;
return $this;
}
/**
* Get authorUserId.
*
* @return int
*/
public function getAuthorUserId()
{
return $this->authorUserId;
}
}

Loading…
Cancel
Save