Portfolio: Allow teacher edit all posts and save last user who edited - refs BT#18201

pull/4368/head
Angel Fernando Quiroz Campos 4 years ago
parent cdba6a3836
commit 1a82caaee3
  1. 79
      main/inc/lib/PortfolioController.php
  2. 8
      main/template/default/portfolio/items.html.twig
  3. 25
      main/template/default/portfolio/view.html.twig

@ -642,13 +642,12 @@ class PortfolioController
{
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()}");
@ -724,6 +723,21 @@ class PortfolioController
);
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'));
@ -1024,6 +1038,9 @@ class PortfolioController
->notifyItemViewed()
;
$itemCourse = $item->getCourse();
$itemSession = $item->getSession();
$form = $this->createCommentForm($item);
$commentsRepo = $this->em->getRepository(PortfolioComment::class);
@ -1172,6 +1189,25 @@ class PortfolioController
$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);
@ -2888,20 +2924,43 @@ class PortfolioController
/** @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>';

@ -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>
@ -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 }}

@ -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) }}
@ -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) }}
@ -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>

Loading…
Cancel
Save