diff --git a/DependencyInjection/ChillActivityExtension.php b/DependencyInjection/ChillActivityExtension.php
index 613fa7493..9567514aa 100644
--- a/DependencyInjection/ChillActivityExtension.php
+++ b/DependencyInjection/ChillActivityExtension.php
@@ -78,9 +78,10 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
{
$container->prependExtensionConfig('security', array(
'role_hierarchy' => array(
- ActivityVoter::UPDATE => array(ActivityVoter::SEE),
- ActivityVoter::CREATE => array(ActivityVoter::SEE),
- ActivityVoter::DELETE => array(ActivityVoter::SEE)
+ ActivityVoter::UPDATE => array(ActivityVoter::SEE_DETAILS),
+ ActivityVoter::CREATE => array(ActivityVoter::SEE_DETAILS),
+ ActivityVoter::DELETE => array(ActivityVoter::SEE_DETAILS),
+ ActivityVoter::SEE_DETAILS => array(ActivityVoter::SEE)
)
));
}
diff --git a/Resources/views/Timeline/activity_person_context.html.twig b/Resources/views/Timeline/activity_person_context.html.twig
index 686219619..21b704f6d 100644
--- a/Resources/views/Timeline/activity_person_context.html.twig
+++ b/Resources/views/Timeline/activity_person_context.html.twig
@@ -1,3 +1,5 @@
+{% import 'ChillActivityBundle:ActivityReason:macro.html.twig' as m %}
+
{{ activity.date|localizeddate('long', 'none') }} / {{ 'Activity'|trans }}
@@ -9,5 +11,20 @@
) }}
{{ 'Show the activity'|trans }}
+ {% if is_granted(constant('Chill\\ActivityBundle\\Security\\Authorization\\ActivityVoter::SEE_DETAILS'), activity) %}
+
+ - {{ 'Remark'|trans }}
+ - {% if activity.remark is empty %}{{ 'No remarks'|trans }}{% else %}
{{ activity.remark|nl2br }}
{% endif %}
+
+ - {{ 'Reasons'|trans }}
+ {%- if activity.reasons is empty -%}
+ - {{ 'No reason associated'|trans }}
+ {%- else -%}
+ - {% for r in activity.reasons %}{{ m.reason(r) }} {% endfor %}
+ {%- endif -%}
+
+
+ {% endif %}
+
diff --git a/Security/Authorization/ActivityStatsVoter.php b/Security/Authorization/ActivityStatsVoter.php
index 66788041a..dc8832635 100644
--- a/Security/Authorization/ActivityStatsVoter.php
+++ b/Security/Authorization/ActivityStatsVoter.php
@@ -21,7 +21,7 @@ namespace Chill\ActivityBundle\Security\Authorization;
use Chill\MainBundle\Security\Authorization\AbstractChillVoter;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
-use Chill\MainBundle\Security\ProvideRoleInterface;
+use Chill\MainBundle\Security\ProvideRoleHierarchyInterface;
use Chill\MainBundle\Entity\Center;
/**
@@ -29,7 +29,7 @@ use Chill\MainBundle\Entity\Center;
*
* @author Julien Fastré
*/
-class ActivityStatsVoter extends AbstractChillVoter implements ProvideRoleInterface
+class ActivityStatsVoter extends AbstractChillVoter implements ProvideRoleHierarchyInterface
{
const STATS = 'CHILL_ACTIVITY_STATS';
const LISTS = 'CHILL_ACTIVITY_LIST';
@@ -74,4 +74,8 @@ class ActivityStatsVoter extends AbstractChillVoter implements ProvideRoleInterf
return $this->getSupportedAttributes();
}
+ public function getRolesWithHierarchy()
+ {
+ return [ 'Activity' => $this->getRoles() ];
+ }
}
diff --git a/Security/Authorization/ActivityVoter.php b/Security/Authorization/ActivityVoter.php
index 4836b5665..b4d0feb2f 100644
--- a/Security/Authorization/ActivityVoter.php
+++ b/Security/Authorization/ActivityVoter.php
@@ -32,6 +32,7 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn
{
const CREATE = 'CHILL_ACTIVITY_CREATE';
const SEE = 'CHILL_ACTIVITY_SEE';
+ const SEE_DETAILS = 'CHILL_ACTIVITY_SEE_DETAILS';
const UPDATE = 'CHILL_ACTIVITY_UPDATE';
const DELETE = 'CHILL_ACTIVITY_DELETE';
@@ -48,7 +49,8 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn
protected function getSupportedAttributes()
{
- return array(self::CREATE, self::SEE, self::UPDATE, self::DELETE);
+ return array(self::CREATE, self::SEE, self::UPDATE, self::DELETE,
+ self::SEE_DETAILS);
}
protected function getSupportedClasses()