Merge pull request #4544 from christianbeeznest/Majorel-20363-3

Attendance: Add author of the comment - refs BT#20363
pull/4550/head
Yannick Warnier 3 years ago committed by GitHub
commit 264ca872bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  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-popup" style="display: none">
<div id="comment-area" class="well"> <div id="comment-area" class="well">
<textarea id="txt-comment" style="width: 100%;height: 150px;" placeholder="<?php echo get_lang('WriteAComment'); ?>"></textarea> <textarea id="txt-comment" style="width: 100%;height: 150px;" placeholder="<?php echo get_lang('WriteAComment'); ?>"></textarea>
<div id="comment-author"></div>
</div> </div>
<span id="save-comment-controls"> <span id="save-comment-controls">
<span id="comment-results"></span> <span id="comment-results"></span>
@ -54,6 +55,7 @@
$('#save-comment-controls').show(); $('#save-comment-controls').show();
$('#comment-area').show(); $('#comment-area').show();
$("#txt-comment").val(''); $("#txt-comment").val('');
$("#comment-author").text('');
}); });
$(".attendance-comment").on("click", function() { $(".attendance-comment").on("click", function() {
@ -67,22 +69,20 @@
$("#comment-results").hide(); $("#comment-results").hide();
$("#save-comment-controls").show(); $("#save-comment-controls").show();
$('#comment-area').show(); $('#comment-area').show();
var comment = getComment(selected); setComment(selected);
$("#txt-comment").val(comment);
}); });
function getComment(selected) { function setComment(selected) {
var response = $.ajax({ $('#txt-comment').val('...');
data: "a=get_attendance_comment&selected="+selected, $("#comment-author").text('');
url: urlAjax, $.getJSON(urlAjax + "&a=get_attendance_comment&selected=" + selected).done(function (data) {
async: false, if (data.comment) {
success: function (comment) { $('#txt-comment').val(data.comment);
response = comment; }
}, if (data.author) {
type: 'post' $("#comment-author").text(data.author);
}
}); });
return response.responseText;
} }
}); });
</script> </script>

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

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

@ -2343,7 +2343,7 @@ INSERT INTO `extra_field` (`extra_field_type`, `field_type`, `variable`, `displa
// Enable comments in attendance sheet for users // Enable comments in attendance sheet for users
// Require DB changes: // 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); //CREATE INDEX c_attendance_sheet_user ON track_e_access_complete (attendance_sheet_id, user_id);
//$_configuration['attendance_allow_comments'] = false; //$_configuration['attendance_allow_comments'] = false;

@ -63,6 +63,13 @@ class CAttendanceResultComment
*/ */
protected $updatedAt; protected $updatedAt;
/**
* @var int
*
* @ORM\Column(name="author_user_id", type="integer", nullable=false)
*/
protected $authorUserId;
/** /**
* Project constructor. * Project constructor.
*/ */
@ -179,4 +186,28 @@ class CAttendanceResultComment
{ {
return $this->comment; 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