diff --git a/lib/Alchemy/Phrasea/Core/Provider/TwigServiceProvider.php b/lib/Alchemy/Phrasea/Core/Provider/TwigServiceProvider.php
index 4dddd878ad..9e4507ba8d 100644
--- a/lib/Alchemy/Phrasea/Core/Provider/TwigServiceProvider.php
+++ b/lib/Alchemy/Phrasea/Core/Provider/TwigServiceProvider.php
@@ -130,17 +130,18 @@ class TwigServiceProvider implements ServiceProviderInterface
$twig->addFilter(new \Twig_SimpleFilter('parseColor', function (\Twig_Environment $twig, $string) use ($app) {
$re = '/^(.*)\[#([0-9a-fA-F]{6})]$/m';
$stringArr = explode(';', $string);
+
foreach ($stringArr as $key => $value) {
preg_match_all($re, trim($value), $matches);
if ($matches && $matches[1] != null && $matches[2] != null) {
$colorCode = '#' . $matches[2][0];
$colorName = $matches[1][0];
- $stringArr[$key] = '' . $colorName . '
';
+ $stringArr[$key] = '' . $colorName . '';
}
}
- return implode('', $stringArr);
+ return implode('; ', $stringArr);
}, ['needs_environment' => true, 'is_safe' => ['html']]));
$twig->addFilter(new \Twig_SimpleFilter('bounce',
diff --git a/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php b/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php
index b9c92f5015..ffc872ec95 100644
--- a/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php
+++ b/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php
@@ -47,12 +47,36 @@ class PhraseanetExtension extends \Twig_Extension
new \Twig_SimpleFunction('record_flags', array($this, 'getRecordFlags')),
new \Twig_SimpleFunction('border_checker_from_fqcn', array($this, 'getCheckerFromFQCN')),
new \Twig_SimpleFunction('caption_field', array($this, 'getCaptionField')),
+ new \Twig_SimpleFunction('caption_field_label', array($this, 'getCaptionFieldLabel')),
new \Twig_SimpleFunction('caption_field_order', array($this, 'getCaptionFieldOrder')),
new \Twig_SimpleFunction('flag_slugify', array(Flag::class, 'normalizeName')),
);
}
+ /**
+ * get localized field's label
+ * @param RecordInterface $record
+ * @param $fieldName
+ * @return string - the name label
+ */
+ public function getCaptionFieldLabel(RecordInterface $record, $fieldName)
+ {
+ if ($record) {
+ /** @var \appbox $appbox */
+ $appbox = $this->app['phraseanet.appbox'];
+ $databox = $appbox->get_databox($record->getDataboxId());
+ foreach ($databox->get_meta_structure() as $meta) {
+ /** @var \databox_field $meta */
+ if ($meta->get_name() === $fieldName) {
+ return $meta->get_label($this->app['locale']);
+ }
+ }
+ }
+
+ return '';
+ }
+
public function getCaptionField(RecordInterface $record, $field, $value)
{
if ($record instanceof ElasticsearchRecord) {
@@ -99,6 +123,31 @@ class PhraseanetExtension extends \Twig_Extension
return $orders[$databoxId][$orderKey];
}
+ /**
+ * @param \databox $databox
+ * @return array
+ */
+ private function retrieveDataboxFieldOrderings(\databox $databox)
+ {
+ $publicOrder = [];
+ $businessOrder = [];
+
+ foreach ($databox->get_meta_structure() as $field) {
+ $fieldName = $field->get_name();
+
+ if (!$field->isBusiness()) {
+ $publicOrder[] = $fieldName;
+ }
+
+ $businessOrder[] = $fieldName;
+ };
+
+ return [
+ 'public' => $publicOrder,
+ 'business' => $businessOrder,
+ ];
+ }
+
public function getRecordFlags(RecordInterface $record)
{
$recordStatuses = [];
@@ -132,24 +181,6 @@ class PhraseanetExtension extends \Twig_Extension
return $recordStatuses;
}
- public function isGrantedOnDatabox($databoxId, $rights)
- {
- if (false === ($this->app->getAuthenticatedUser() instanceof User)) {
-
- return false;
- }
-
- $rights = (array) $rights;
- foreach ($rights as $right) {
- if (false === $this->app->getAclForUser($this->app->getAuthenticatedUser())->has_right_on_sbas($databoxId, $right)) {
-
- return false;
- }
- }
-
- return true;
- }
-
/**
* returns true if user is authenticated and has all the passed rights on the base
* todo : wtf $rights is an array since it's never called with more than 1 right in it ?
@@ -177,6 +208,24 @@ class PhraseanetExtension extends \Twig_Extension
return true;
}
+ public function isGrantedOnDatabox($databoxId, $rights)
+ {
+ if (false === ($this->app->getAuthenticatedUser() instanceof User)) {
+
+ return false;
+ }
+
+ $rights = (array)$rights;
+ foreach ($rights as $right) {
+ if (false === $this->app->getAclForUser($this->app->getAuthenticatedUser())->has_right_on_sbas($databoxId, $right)) {
+
+ return false;
+ }
+ }
+
+ return true;
+ }
+
public function getCollectionLogo($baseId)
{
if (false === $this->app['filesystem']->exists(sprintf('%s/config/minilogos/%s', $this->app['root.path'], $baseId))) {
@@ -242,11 +291,6 @@ class PhraseanetExtension extends \Twig_Extension
return $this->getSubdefUrl($record, 'thumbnail');
}
- public function getThumbnailGifUrl(RecordInterface $record)
- {
- return $this->getSubdefUrl($record, 'thumbnailgif');
- }
-
public function getSubdefUrl(RecordInterface $record, $subdefName)
{
/** @var StaticMode $staticMode */
@@ -279,6 +323,11 @@ class PhraseanetExtension extends \Twig_Extension
return $path;
}
+ public function getThumbnailGifUrl(RecordInterface $record)
+ {
+ return $this->getSubdefUrl($record, 'thumbnailgif');
+ }
+
public function getSubdefSize(RecordInterface $record, $subdefName)
{
$ret = null;
@@ -325,29 +374,4 @@ class PhraseanetExtension extends \Twig_Extension
{
return 'phraseanet';
}
-
- /**
- * @param \databox $databox
- * @return array
- */
- private function retrieveDataboxFieldOrderings(\databox $databox)
- {
- $publicOrder = [];
- $businessOrder = [];
-
- foreach ($databox->get_meta_structure() as $field) {
- $fieldName = $field->get_name();
-
- if (!$field->isBusiness()) {
- $publicOrder[] = $fieldName;
- }
-
- $businessOrder[] = $fieldName;
- };
-
- return [
- 'public' => $publicOrder,
- 'business' => $businessOrder,
- ];
- }
}
diff --git a/templates/web/common/macros.html.twig b/templates/web/common/macros.html.twig
index 1683aa98c3..9d5ed046bc 100644
--- a/templates/web/common/macros.html.twig
+++ b/templates/web/common/macros.html.twig
@@ -93,9 +93,9 @@
{% set terms = [] %}
{% for data in field.values %}
{% if data.from_thesaurus and bounceable %}
- {% set value = data.value|e|bounce(field.name, data.qjs, field.sbas_id) %}
+ {% set value = data.value|e|bounce(field.name, data.qjs, field.sbas_id)|parseColor %}
{% else %}
- {% set value = data.value|e %}
+ {% set value = data.value|e|parseColor %}
{% endif %}
{% set terms = [value]|merge(terms) %}
{% endfor %}
@@ -126,9 +126,9 @@
{% macro caption(record, can_see_business, display_exif, limitedWidth = false) %}