Skip to content

Commit

Permalink
Portfolio: Allow teacher edit all posts and save last user who edited…
Browse files Browse the repository at this point in the history
… - refs BT#18201
  • Loading branch information
AngelFQC committed Sep 8, 2022
1 parent cdba6a3 commit 1a82caa
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 18 deletions.
79 changes: 69 additions & 10 deletions main/inc/lib/PortfolioController.php
Expand Up @@ -642,13 +642,12 @@ public function editItem(Portfolio $item)
{
global $interbreadcrumb;

if (!$this->itemBelongToOwner($item)) {
if (!api_is_allowed_to_edit() && !$this->itemBelongToOwner($item)) {
api_not_allowed(true);
}

$categories = $this->em
->getRepository('ChamiloCoreBundle:PortfolioCategory')
->findBy(['user' => $this->owner]);
$itemCourse = $item->getCourse();
$itemSession = $item->getSession();

$form = new FormValidator('edit_portfolio', 'post', $this->baseUrl."action=edit_item&id={$item->getId()}");

Expand Down Expand Up @@ -724,6 +723,21 @@ public function editItem(Portfolio $item)
);

if ($form->validate()) {
if ($itemCourse) {
api_item_property_update(
api_get_course_info($itemCourse->getCode()),
TOOL_PORTFOLIO,
$item->getId(),
'PortfolioUpdated',
api_get_user_id(),
[],
null,
'',
'',
$itemSession ? $itemSession->getId() : 0
);
}

$values = $form->exportValues();
$currentTime = new DateTime(api_get_utc_datetime(), new DateTimeZone('UTC'));

Expand Down Expand Up @@ -1024,6 +1038,9 @@ public function view(Portfolio $item)
->notifyItemViewed()
;

$itemCourse = $item->getCourse();
$itemSession = $item->getSession();

$form = $this->createCommentForm($item);

$commentsRepo = $this->em->getRepository(PortfolioComment::class);
Expand Down Expand Up @@ -1172,6 +1189,25 @@ public function view(Portfolio $item)
$template->assign('form', $form);
$template->assign('attachment_list', $this->generateAttachmentList($item));

if ($itemCourse) {
$propertyInfo = api_get_item_property_info(
$itemCourse->getId(),
TOOL_PORTFOLIO,
$item->getId(),
$itemSession ? $itemSession->getId() : 0
);

if ($propertyInfo) {
$template->assign(
'last_edit',
[
'date' => $propertyInfo['lastedit_date'],
'user' => api_get_user_entity($propertyInfo['lastedit_user_id'])->getCompleteName(),
]
);
}
}

$layout = $template->get_template('portfolio/view.html.twig');
$content = $template->fetch($layout);

Expand Down Expand Up @@ -2888,20 +2924,43 @@ private function getItemsInHtmlFormatted(array $items): array

/** @var Portfolio $item */
foreach ($items as $item) {
$itemCourse = $item->getCourse();
$itemSession = $item->getSession();

$creationDate = api_convert_and_format_date($item->getCreationDate());
$updateDate = api_convert_and_format_date($item->getUpdateDate());

$metadata = '<ul class="list-unstyled text-muted">';

if ($item->getSession()) {
$metadata .= '<li>'.get_lang('Course').': '.$item->getSession()->getName().' ('
.$item->getCourse()->getTitle().') </li>';
} elseif (!$item->getSession() && $item->getCourse()) {
$metadata .= '<li>'.get_lang('Course').': '.$item->getCourse()->getTitle().'</li>';
if ($itemSession) {
$metadata .= '<li>'.get_lang('Course').': '.$itemSession->getName().' ('
.$itemCourse->getTitle().') </li>';
} elseif ($itemCourse) {
$metadata .= '<li>'.get_lang('Course').': '.$itemCourse->getTitle().'</li>';
}

$metadata .= '<li>'.sprintf(get_lang('CreationDateXDate'), $creationDate).'</li>';
$metadata .= '<li>'.sprintf(get_lang('UpdateDateXDate'), $updateDate).'</li>';

if ($itemCourse) {
$propertyInfo = api_get_item_property_info(
$itemCourse->getId(),
TOOL_PORTFOLIO,
$item->getId(),
$itemSession ? $itemSession->getId() : 0
);

if ($propertyInfo) {
$metadata .= '<li>'
.sprintf(
get_lang('UpdatedOnDateXByUserY'),
api_convert_and_format_date($propertyInfo['lastedit_date'], DATE_TIME_FORMAT_LONG),
api_get_user_entity($propertyInfo['lastedit_user_id'])->getCompleteName()
)
.'</li>';
}
} else {
$metadata .= '<li>'.sprintf(get_lang('UpdateDateXDate'), $updateDate).'</li>';
}

if ($item->getCategory()) {
$metadata .= '<li>'.sprintf(get_lang('CategoryXName'), $item->getCategory()->getTitle()).'</li>';
Expand Down
8 changes: 7 additions & 1 deletion main/template/default/portfolio/items.html.twig
Expand Up @@ -35,6 +35,12 @@
{{ 'delete.png'|img(22, 'Delete'|get_lang) }}
</a>
</div>
{% elseif false|api_is_allowed_to_edit %}
<div class="portfolio-actions pull-right">
<a href="{{ baseurl ~ {'action':'edit_item', 'id':item.id}|url_encode }}">
{{ 'edit.png'|img(22, 'Edit'|get_lang) }}
</a>
</div>
{% endif %}

<h3>
Expand Down Expand Up @@ -66,7 +72,7 @@
{{ 'CreationDate'|get_lang ~ ': ' ~ item.creationDate|date_to_time_ago }}
</li>

{% if _u.id == item.user.id and item.creationDate != item.updateDate %}
{% if item.creationDate != item.updateDate %}
<li>
<span class="fa-li fa fa-clock-o" aria-hidden="true"></span>
{{ 'UpdateDate'|get_lang ~ ': ' ~ item.updateDate|date_to_time_ago }}
Expand Down
25 changes: 18 additions & 7 deletions main/template/default/portfolio/view.html.twig
Expand Up @@ -34,6 +34,10 @@
{{ 'copy.png'|img(22, 'CopyToStudentPortfolio'|get_lang) }}
</a>

<a href="{{ baseurl ~ {'action':'edit_item', 'id':item.id}|url_encode }}">
{{ 'edit.png'|img(22, 'Edit'|get_lang) }}
</a>

{% if item.course and '1' == 'qualify_portfolio_item'|api_get_course_setting %}
<a href="{{ baseurl ~ {'action':'qualify', 'item':item.id}|url_encode }}">
{{ 'quiz.png'|img(22, 'QualifyThisPortfolioItem'|get_lang) }}
Expand Down Expand Up @@ -69,13 +73,6 @@
{{ 'CreationDate'|get_lang ~ ': ' ~ item.creationDate|date_to_time_ago }}
</li>

{% if _u.id == item.user.id and item.creationDate != item.updateDate %}
<li>
<span class="fa-li fa fa-clock-o" aria-hidden="true"></span>
{{ 'UpdateDate'|get_lang ~ ': ' ~ item.updateDate|date_to_time_ago }}
</li>
{% endif %}

<li>
<span class="fa-li fa fa-comment-o" aria-hidden="true"></span>
{{ 'XComments'|get_lang|format(item.comments.count) }}
Expand All @@ -91,6 +88,20 @@

{{ attachment_list }}
{% endif %}

{% if last_edit %}
<hr>
<p>
<span class="fa fa-fw fa-clock-o" aria-hidden="true"></span>
{{ 'UpdatedOnDateXByUserY'|get_lang|format(last_edit.date|date_to_time_ago, last_edit.user) }}
</p>
{% elseif item.creationDate != item.updateDate %}
<hr>
<p>
<span class="fa fa-fw fa fa-clock-o" aria-hidden="true"></span>
{{ 'UpdatedOnDateX'|get_lang|format(item.updateDate|date_to_time_ago) }}
</p>
{% endif %}
</div>
</article>

Expand Down

0 comments on commit 1a82caa

Please sign in to comment.