Merge branch 'master' into PHRAS-3276-invert-push-and-validation-string

This commit is contained in:
Nicolas Maillat
2020-12-16 22:56:53 +01:00
committed by GitHub
35 changed files with 2586 additions and 921 deletions

View File

@@ -18,6 +18,9 @@ jobs:
- image: circleci/rabbitmq:3.7.7 - image: circleci/rabbitmq:3.7.7
steps: steps:
- checkout - checkout
- run: phpenv versions
- run: phpenv global 7.0.7
- run: php -v
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
- run: - run:
working_directory: ~/alchemy-fr/Phraseanet working_directory: ~/alchemy-fr/Phraseanet

View File

@@ -36,6 +36,7 @@ main:
highlight: true highlight: true
populate_order: RECORD_ID populate_order: RECORD_ID
populate_direction: DESC populate_direction: DESC
populate_permalinks: false
activeTab: '' activeTab: ''
facets: facets:
_base: _base:

View File

@@ -48,7 +48,7 @@ class SendValidationRemindersCommand extends Command
/** @var DateTime */ /** @var DateTime */
private $now; private $now;
private $days; private $timeLeftPercent;
public function __construct( /** @noinspection PhpUnusedParameterInspection */ $name = null) public function __construct( /** @noinspection PhpUnusedParameterInspection */ $name = null)
{ {
@@ -56,8 +56,8 @@ class SendValidationRemindersCommand extends Command
$this->setDescription('Send validation reminders. <comment>(experimental)</comment>'); $this->setDescription('Send validation reminders. <comment>(experimental)</comment>');
$this->addOption('dry',null, InputOption::VALUE_NONE,'dry run, list but don\'t act'); $this->addOption('dry',null, InputOption::VALUE_NONE,'dry run, list but don\'t act');
$this->addOption('now', null,InputArgument::OPTIONAL, 'fake today'); $this->addOption('now', null,InputArgument::OPTIONAL, 'fake today as "yyy/mm/dd", "yyyy-mm-dd" or "yyyy-mm-dd hh:mm:ss"');
$this->addOption('days', null,InputArgument::OPTIONAL, 'overwrite validation-reminder-days'); $this->addOption('p', null,InputArgument::OPTIONAL, 'overwrite Validation-reminder-time-left-percent');
} }
@@ -87,15 +87,15 @@ class SendValidationRemindersCommand extends Command
$this->now = new DateTime(); $this->now = new DateTime();
} }
// --days // --p
if(($v = $this->input->getOption('days')) !== null) { if(($v = $this->input->getOption('p')) !== null) {
if(($this->days = (int)$v) <= 0) { if(($this->timeLeftPercent = (int)$v) <= 0) {
$this->output->writeln(sprintf('<error>--days must be > 0 (bad value "%s")</error>', $v)); $this->output->writeln(sprintf('<error>--p must be > 0 (bad value "%s")</error>', $v));
$r = false; $r = false;
} }
} }
else { else {
$this->days = (int)$this->getConf()->get(['registry', 'actions', 'validation-reminder-days']); $this->timeLeftPercent = (int)$this->getConf()->get(['registry', 'actions', 'validation-reminder-time-left-percent']);
} }
return $r; return $r;
@@ -112,30 +112,29 @@ class SendValidationRemindersCommand extends Command
return -1; return -1;
} }
$date_to = clone($this->now);
$interval = sprintf('P%dD', $this->days);
try {
$date_to->add(new DateInterval($interval));
}
catch(Exception $e) {
$this->output->writeln(sprintf('<error>Bad interval "%s" ?</error>', $interval));
return -1;
}
if($this->dry) { if($this->dry) {
$this->output->writeln('<info>dry mode : emails will NOT be sent</info>'); $this->output->writeln('<info>dry mode : emails will NOT be sent</info>');
} }
$output->writeln(sprintf('from "%s" to "%s" (days=%d), ', $this->now->format(self::DATE_FMT), $date_to->format(self::DATE_FMT), $this->days)); $output->writeln(sprintf('from "%s" to validation-reminder-time-left-percent "%s" percent, ', $this->now->format(self::DATE_FMT), $this->timeLeftPercent));
$fmt = ' participant: %-11s user: %-10s %s token: %-10s '; $fmt = ' participant: %-11s user: %-10s %s token: %-10s ';
//$output->writeln(sprintf($fmt, 'session', 'basket', 'participant', 'user', 'token', 'email')); //$output->writeln(sprintf($fmt, 'session', 'basket', 'participant', 'user', 'token', 'email'));
$last_session = null; $last_session = null;
foreach ($this->getValidationParticipantRepository()->findNotConfirmedAndNotRemindedParticipantsByExpireDate($date_to, $this->now) as $participant) { foreach ($this->getValidationParticipantRepository()->findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent($this->timeLeftPercent, $this->now) as $participant) {
$validationSession = $participant->getSession(); $validationSession = $participant->getSession();
$basket = $validationSession->getBasket(); $basket = $validationSession->getBasket();
$expiresDate = $validationSession->getExpires();
$diffInterval = $expiresDate->diff(new DateTime());
if ($diffInterval->days) {
$timeLeft = $diffInterval->format(' %d days %Hh%I ');
} else {
$timeLeft = $diffInterval->format(' %Hh%I ');
}
// change session ? display header // change session ? display header
if($validationSession->getId() !== $last_session) { if($validationSession->getId() !== $last_session) {
try { try {
@@ -222,7 +221,7 @@ class SendValidationRemindersCommand extends Command
} }
// $this->dispatch(PhraseaEvents::VALIDATION_REMINDER, new ValidationEvent($participant, $basket, $url)); // $this->dispatch(PhraseaEvents::VALIDATION_REMINDER, new ValidationEvent($participant, $basket, $url));
$this->doRemind($participant, $basket, $url); $this->doRemind($participant, $basket, $url, $timeLeft);
} }
$this->getEntityManager()->flush(); $this->getEntityManager()->flush();
@@ -254,13 +253,14 @@ class SendValidationRemindersCommand extends Command
return $s; return $s;
} }
private function doRemind(ValidationParticipant $participant, Basket $basket, $url) private function doRemind(ValidationParticipant $participant, Basket $basket, $url, $timeLeft)
{ {
$params = [ $params = [
'from' => $basket->getValidation()->getInitiator()->getId(), 'from' => $basket->getValidation()->getInitiator()->getId(),
'to' => $participant->getUser()->getId(), 'to' => $participant->getUser()->getId(),
'ssel_id' => $basket->getId(), 'ssel_id' => $basket->getId(),
'url' => $url, 'url' => $url,
'time_left'=> $timeLeft
]; ];
$datas = json_encode($params); $datas = json_encode($params);
@@ -290,6 +290,7 @@ class SendValidationRemindersCommand extends Command
if(!$this->dry) { if(!$this->dry) {
// for real // for real
$mail = MailInfoValidationReminder::create($this->container, $receiver, $emitter); $mail = MailInfoValidationReminder::create($this->container, $receiver, $emitter);
$mail->setTimeLeft($timeLeft);
$mail->setButtonUrl($params['url']); $mail->setButtonUrl($params['url']);
$mail->setTitle($title); $mail->setTitle($title);

View File

@@ -433,7 +433,7 @@ class V1Controller extends Controller
'autoRegister' => $conf->get(['registry', 'registration', 'auto-register-enabled']), 'autoRegister' => $conf->get(['registry', 'registration', 'auto-register-enabled']),
], ],
'push' => [ 'push' => [
'validationReminder' => $conf->get(['registry', 'actions', 'validation-reminder-days']), 'validationReminder' => $conf->get(['registry', 'actions', 'validation-reminder-time-left-percent']),
'expirationValue' => $conf->get(['registry', 'actions', 'validation-expiration-days']), 'expirationValue' => $conf->get(['registry', 'actions', 'validation-expiration-days']),
], ],
], ],

View File

@@ -594,7 +594,7 @@ class LoginController extends Controller
// move this in an event // move this in an event
public function postAuthProcess(Request $request, User $user) public function postAuthProcess(Request $request, User $user)
{ {
$date = new DateTime('+' . (int) $this->getConf()->get(['registry', 'actions', 'validation-reminder-days']) . ' days'); $date = new DateTime('+' . (int) $this->getConf()->get(['registry', 'actions', 'validation-reminder-time-left-percent']) . ' days');
$manager = $this->getEntityManager(); $manager = $this->getEntityManager();
/* /*

View File

@@ -117,7 +117,7 @@ class RegistryFormManipulator
], ],
'actions' => [ 'actions' => [
'download-max-size' => 120, 'download-max-size' => 120,
'validation-reminder-days' => 2, 'validation-reminder-time-left-percent' => 20,
'validation-expiration-days' => 10, 'validation-expiration-days' => 10,
'auth-required-for-export' => true, 'auth-required-for-export' => true,
'tou-validation-required-for-export' => false, 'tou-validation-required-for-export' => false,

View File

@@ -22,8 +22,8 @@ class ActionsFormType extends AbstractType
'label' => 'Maximum megabytes allowed for download', 'label' => 'Maximum megabytes allowed for download',
'help_message' => 'If request is bigger, then mail is still available', 'help_message' => 'If request is bigger, then mail is still available',
]); ]);
$builder->add('validation-reminder-days', 'integer', [ $builder->add('validation-reminder-time-left-percent', 'integer', [
'label' => 'Number of days before the end of the validation to send a reminder email', 'label' => 'Percent of the time left before the end of the validation to send a reminder email',
]); ]);
$builder->add('validation-expiration-days', 'integer', [ $builder->add('validation-expiration-days', 'integer', [
'label' => 'Default validation links duration', 'label' => 'Default validation links duration',

View File

@@ -11,10 +11,12 @@
namespace Alchemy\Phrasea\Model\Repositories; namespace Alchemy\Phrasea\Model\Repositories;
use Alchemy\Phrasea\Cache\Exception;
use Alchemy\Phrasea\Model\Entities\ValidationParticipant; use Alchemy\Phrasea\Model\Entities\ValidationParticipant;
use DateTime; use DateTime;
use Doctrine\ORM\EntityRepository; use Doctrine\ORM\EntityRepository;
use Doctrine\DBAL\Types\Type; use Doctrine\DBAL\Types\Type;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
class ValidationParticipantRepository extends EntityRepository class ValidationParticipantRepository extends EntityRepository
{ {
@@ -22,24 +24,53 @@ class ValidationParticipantRepository extends EntityRepository
/** /**
* Retrieve all not reminded participants where the validation has not expired * Retrieve all not reminded participants where the validation has not expired
* *
* @param $expireDate DateTime The expiration Date * @param $timeLeftPercent float Percent of the time left before the validation expires.
* @param $today DateTime fake "today" to allow to get past/future events * @param $today DateTime fake "today" to allow to get past/future events
* (used by SendValidationRemindersCommand.php to debug with --dry) * (used by SendValidationRemindersCommand.php to debug with --dry)
* @return ValidationParticipant[] * @return ValidationParticipant[]
* @throws \Exception
*/ */
public function findNotConfirmedAndNotRemindedParticipantsByExpireDate(DateTime $expireDate, DateTime $today=null) public function findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent($timeLeftPercent, DateTime $today=null)
{ {
$dql = ' $rsm = new ResultSetMappingBuilder($this->_em);
SELECT p, s $rsm->addRootEntityFromClassMetadata('Alchemy\Phrasea\Model\Entities\ValidationParticipant', 'p');
FROM Phraseanet:ValidationParticipant p $selectClause = $rsm->generateSelectClause();
JOIN p.session s
JOIN s.basket b switch($this->_em->getConnection()->getDriver()->getName()) {
case 'pdo_mysql':
$sql = '
SELECT ' . $selectClause . '
FROM ValidationParticipants p
INNER JOIN ValidationSessions s on p.validation_session_id = s.id
INNER JOIN Baskets b on b.id = s.basket_id
WHERE p.is_confirmed = 0 WHERE p.is_confirmed = 0
AND p.reminded IS NULL AND p.reminded IS NULL
AND s.expires < :date AND s.expires > ' . ($today===null ? 'CURRENT_TIMESTAMP()' : ':today'); AND s.expires > '. ($today===null ? 'CURRENT_TIMESTAMP()' : ':today') . '
AND DATE_SUB(s.expires, INTERVAL FLOOR((TO_SECONDS(s.expires) - TO_SECONDS(s.created)) * :percent) SECOND) <= '. ($today===null ? 'CURRENT_TIMESTAMP()' : ':today')
;
break;
case 'pdo_sqlite':
$sql = '
SELECT ' . $selectClause . '
FROM ValidationParticipants p
INNER JOIN ValidationSessions s on p.validation_session_id = s.id
INNER JOIN Baskets b on b.id = s.basket_id
WHERE p.is_confirmed = 0
AND p.reminded IS NULL
AND s.expires > '. ($today===null ? 'strftime("%s","now")' : 'strftime("%s", :today)') . '
AND (strftime("%s", s.expires) - ((strftime("%s", s.expires) - strftime("%s", s.created)) * :percent) )<= '. ($today===null ? 'strftime("%s","now")' : 'strftime("%s", :today)')
;
break;
default:
throw new Exception('Unused PDO!, if necessary define the query for this PDO');
}
$q = $this->_em->createNativeQuery($sql, $rsm);
$q->setParameter('percent', (float)($timeLeftPercent/100));
$q = $this->_em->createQuery($dql)
->setParameter('date', $expireDate, Type::DATETIME);
if($today !== null) { if($today !== null) {
$q->setParameter('today', $today, Type::DATETIME); $q->setParameter('today', $today, Type::DATETIME);
} }

View File

@@ -18,6 +18,9 @@ class MailInfoValidationReminder extends AbstractMailWithLink
/** @var string */ /** @var string */
private $title; private $title;
/** @var string */
private $timeLeft;
/** /**
* Sets the title of the validation to remind * Sets the title of the validation to remind
* *
@@ -28,6 +31,15 @@ class MailInfoValidationReminder extends AbstractMailWithLink
$this->title = $title; $this->title = $title;
} }
/**
* Sets time left before the validation expires
* @param $timeLeft
*/
public function setTimeLeft($timeLeft)
{
$this->timeLeft = $timeLeft;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@@ -45,8 +57,8 @@ class MailInfoValidationReminder extends AbstractMailWithLink
*/ */
public function getMessage() public function getMessage()
{ {
return $this->app->trans('Il ne vous reste plus que %quantity% jours pour terminer votre validation', [ return $this->app->trans('Il ne vous reste plus que %timeLeft% pour terminer votre validation', [
'%quantity%' => $this->app['conf']->get(['registry', 'actions', 'validation-reminder-days']) '%timeLeft%' => isset($this->timeLeft)? $this->timeLeft : ''
]); ]);
} }

View File

@@ -68,6 +68,59 @@ class PSExposeController extends Controller
]); ]);
} }
/**
* Add update or delete access control entry (ACE) for a publication
* "action" param value : "update" or "delete"
*
* @param PhraseaApplication $app
* @param Request $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function updatePublicationPermissionAction(PhraseaApplication $app, Request $request)
{
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration);
try {
$guzzleParams = [
'headers' => [
'Authorization' => 'Bearer '. $accessToken,
'Content-Type' => 'application/json'
],
'json' => $request->get('jsonData')
];
if ($request->get('action') == 'delete') {
$response = $exposeClient->delete('/permissions/ace', $guzzleParams);
$message = 'Permission successfully deleted!';
} else {
$response = $exposeClient->put('/permissions/ace', $guzzleParams);
$message = 'Permission successfully updated!';
}
} catch(\Exception $e) {
return $this->app->json([
'success' => false,
'message' => $e->getMessage()
]);
}
if ($response->getStatusCode() !== 200) {
return $this->app->json([
'success' => false,
'message' => 'Status code: '. $response->getStatusCode()
]);
}
return $this->app->json([
'success' => true,
'message' => $message
]);
}
/** /**
* Get list of publication * Get list of publication
* Use param "format=json" to retrieve a json * Use param "format=json" to retrieve a json
@@ -150,6 +203,7 @@ class PSExposeController extends Controller
$accessToken = $this->getAndSaveToken($exposeConfiguration); $accessToken = $this->getAndSaveToken($exposeConfiguration);
$publication = []; $publication = [];
$resPublication = $exposeClient->get('/publications/' . $request->get('publicationId') , [ $resPublication = $exposeClient->get('/publications/' . $request->get('publicationId') , [
'headers' => [ 'headers' => [
'Authorization' => 'Bearer '. $accessToken, 'Authorization' => 'Bearer '. $accessToken,
@@ -175,9 +229,37 @@ class PSExposeController extends Controller
]); ]);
} }
list($permissions, $listUsers, $listGroups) = $this->getPermissions($exposeClient, $request->get('publicationId'), $accessToken);
return $this->render("prod/WorkZone/ExposeEdit.html.twig", [ return $this->render("prod/WorkZone/ExposeEdit.html.twig", [
'publication' => $publication, 'publication' => $publication,
'exposeName' => $request->get('exposeName') 'exposeName' => $request->get('exposeName'),
'permissions' => $permissions,
'listUsers' => $listUsers,
'listGroups' => $listGroups
]);
}
/**
* @param PhraseaApplication $app
* @param Request $request
* @return string
*/
public function listPublicationPermissionAction(PhraseaApplication $app, Request $request)
{
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration);
list($permissions, $listUsers, $listGroups) = $this->getPermissions($exposeClient, $request->get('publicationId'), $accessToken);
return $this->render("prod/WorkZone/ExposePermission.html.twig", [
'permissions' => $permissions,
'listUsers' => $listUsers,
'listGroups' => $listGroups
]); ]);
} }
@@ -516,6 +598,67 @@ class PSExposeController extends Controller
]); ]);
} }
/**
* @param Client $exposeClient
* @param $publicationId
* @param $accessToken
* @return array
*/
private function getPermissions(Client $exposeClient, $publicationId, $accessToken)
{
$permissions = [];
$listUsers = [];
$listGroups = [];
$resPermission = $exposeClient->get('/permissions/aces?objectType=publication&objectId=' . $publicationId, [
'headers' => [
'Authorization' => 'Bearer '. $accessToken
]
]);
if ($resPermission->getStatusCode() == 200) {
$permissions = json_decode($resPermission->getBody()->getContents(),true);
}
$resUsers = $exposeClient->get('/permissions/users', [
'headers' => [
'Authorization' => 'Bearer '. $accessToken
]
]);
if ($resUsers->getStatusCode() == 200) {
$listUsers = json_decode($resUsers->getBody()->getContents(),true);
}
$resGroups = $exposeClient->get('/permissions/groups', [
'headers' => [
'Authorization' => 'Bearer '. $accessToken
]
]);
if ($resGroups->getStatusCode() == 200) {
$listGroups = json_decode($resGroups->getBody()->getContents(),true);
}
foreach ($permissions as &$permission) {
if ($permission['userType'] == 'user') {
$key = array_search($permission['userId'], array_column($listUsers, 'id'));
$permission = array_merge($permission, $listUsers[$key]);
$listUsers[$key]['selected'] = true;
} elseif ($permission['userType'] == 'group') {
$key = array_search($permission['userId'], array_column($listGroups, 'id'));
$permission = array_merge($permission, $listGroups[$key]);
$listGroups[$key]['selected'] = true;
}
}
return [
$permissions,
$listUsers,
$listGroups
];
}
/** /**
* Get Token and save in session * Get Token and save in session
* @param $config * @param $config
@@ -598,12 +741,6 @@ class PSExposeController extends Controller
private function removeAssetPublication(Client $exposeClient, $publicationId, $assetId, $token) private function removeAssetPublication(Client $exposeClient, $publicationId, $assetId, $token)
{ {
$exposeClient->delete('/publication-assets/'.$publicationId.'/'.$assetId, [
'headers' => [
'Authorization' => 'Bearer '. $token
]
]);
return $exposeClient->delete('/assets/'. $assetId, [ return $exposeClient->delete('/assets/'. $assetId, [
'headers' => [ 'headers' => [
'Authorization' => 'Bearer '. $token 'Authorization' => 'Bearer '. $token

View File

@@ -70,6 +70,14 @@ class PSExposeServiceProvider implements ControllerProviderInterface, ServicePro
->method('POST') ->method('POST')
->bind('ps_expose_publication_add_assets'); ->bind('ps_expose_publication_add_assets');
$controllers->match('/publication/permission/update', 'controller.ps.expose:updatePublicationPermissionAction')
->method('POST')
->bind('ps_expose_publication_permission_update');
$controllers->match('/publication/permission/list', 'controller.ps.expose:listPublicationPermissionAction')
->method('GET')
->bind('ps_expose_publication_permission_list');
return $controllers; return $controllers;
} }

View File

@@ -2,6 +2,7 @@
namespace Alchemy\Phrasea\SearchEngine\Elastic; namespace Alchemy\Phrasea\SearchEngine\Elastic;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess; use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Delegate\FetcherDelegateInterface; use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Delegate\FetcherDelegateInterface;
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Fetcher; use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Fetcher;
@@ -23,9 +24,9 @@ class DataboxFetcherFactory
private $conf; private $conf;
/** /**
* @var \ArrayAccess * @var Application
*/ */
private $container; private $app;
/** /**
* @var string * @var string
@@ -45,22 +46,26 @@ class DataboxFetcherFactory
/** @var ElasticsearchOptions */ /** @var ElasticsearchOptions */
private $options; private $options;
/** @var boolean */
private $populatePermalinks;
/** /**
* @param PropertyAccess $conf * @param PropertyAccess $conf
* @param RecordHelper $recordHelper * @param RecordHelper $recordHelper
* @param ElasticsearchOptions $options * @param ElasticsearchOptions $options
* @param \ArrayAccess $container * @param Application $app
* @param string $structureKey * @param string $structureKey
* @param string $thesaurusKey * @param string $thesaurusKey
*/ */
public function __construct(PropertyAccess $conf, RecordHelper $recordHelper, ElasticsearchOptions $options, \ArrayAccess $container, $structureKey, $thesaurusKey) public function __construct(PropertyAccess $conf, RecordHelper $recordHelper, ElasticsearchOptions $options, Application $app, $structureKey, $thesaurusKey)
{ {
$this->conf = $conf; $this->conf = $conf;
$this->recordHelper = $recordHelper; $this->recordHelper = $recordHelper;
$this->options = $options; $this->options = $options;
$this->container = $container; $this->app = $app;
$this->structureKey = $structureKey; $this->structureKey = $structureKey;
$this->thesaurusKey = $thesaurusKey; $this->thesaurusKey = $thesaurusKey;
$this->populatePermalinks = $conf->get(['main', 'search-engine', 'options', 'populate_permalinks'], false) ;
} }
/** /**
@@ -82,7 +87,7 @@ class DataboxFetcherFactory
new MetadataHydrator($this->conf, $connection, $this->getStructure(), $this->recordHelper), new MetadataHydrator($this->conf, $connection, $this->getStructure(), $this->recordHelper),
new FlagHydrator($this->getStructure(), $databox), new FlagHydrator($this->getStructure(), $databox),
new ThesaurusHydrator($this->getStructure(), $this->getThesaurus(), $candidateTerms), new ThesaurusHydrator($this->getStructure(), $this->getThesaurus(), $candidateTerms),
new SubDefinitionHydrator($databox) new SubDefinitionHydrator($this->app, $databox, $this->populatePermalinks)
], ],
$fetcherDelegate $fetcherDelegate
); );
@@ -100,7 +105,7 @@ class DataboxFetcherFactory
*/ */
private function getStructure() private function getStructure()
{ {
return $this->container[$this->structureKey]; return $this->app[$this->structureKey];
} }
/** /**
@@ -108,6 +113,6 @@ class DataboxFetcherFactory
*/ */
private function getThesaurus() private function getThesaurus()
{ {
return $this->container[$this->thesaurusKey]; return $this->app[$this->thesaurusKey];
} }
} }

View File

@@ -11,20 +11,76 @@
namespace Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator; namespace Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator;
use Alchemy\Phrasea\Application;
use databox; use databox;
use Doctrine\DBAL\Connection; use Doctrine\DBAL\Connection;
use media_Permalink_Adapter;
class SubDefinitionHydrator implements HydratorInterface class SubDefinitionHydrator implements HydratorInterface
{ {
/** @var Application */
private $app;
/** @var databox */ /** @var databox */
private $databox; private $databox;
public function __construct(databox $databox) /** @var boolean */
private $populatePermalinks;
public function __construct(Application $app, databox $databox, $populatePermalinks)
{ {
$this->app = $app;
$this->databox = $databox; $this->databox = $databox;
$this->populatePermalinks = $populatePermalinks;
} }
public function hydrateRecords(array &$records) public function hydrateRecords(array &$records)
{
if ($this->populatePermalinks) {
$this->hydrateRecordsWithPermalinks($records);
} else {
$this->hydrateRecordsWithoutPermalinks($records);
}
}
private function hydrateRecordsWithPermalinks(&$records)
{
foreach(array_keys($records) as $rid) {
try {
$subdefs = $this->databox->getRecordRepository()->find($rid)->get_subdefs();
$pls = array_map(
/** media_Permalink_Adapter|null $plink */
function($plink) {
return $plink ? ((string) $plink->get_url()) : null;
},
media_Permalink_Adapter::getMany($this->app, $subdefs, false) // false: don't create missing plinks
);
foreach($subdefs as $subdef) {
$name = $subdef->get_name();
if(substr(($path = $subdef->get_path()), -1) !== '/') {
$path .= '/';
}
$records[$rid]['subdefs'][$name] = array(
'path' => $path . $subdef->get_file(),
'width' => $subdef->get_width(),
'height' => $subdef->get_height(),
'size' => $subdef->get_size(),
'mime' => $subdef->get_mime(),
'permalink' => array_key_exists($name, $pls) ? $pls[$name] : null
);
}
}
catch (\Exception $e) {
// cant get record ? ignore
}
}
}
private function hydrateRecordsWithoutPermalinks(&$records)
{ {
$sql = <<<SQL $sql = <<<SQL
SELECT SELECT
@@ -32,6 +88,8 @@ class SubDefinitionHydrator implements HydratorInterface
s.name, s.name,
s.height, s.height,
s.width, s.width,
s.size,
s.mime,
CONCAT(TRIM(TRAILING '/' FROM s.path), '/', s.file) AS path CONCAT(TRIM(TRAILING '/' FROM s.path), '/', s.file) AS path
FROM subdef s FROM subdef s
WHERE s.record_id IN (?) WHERE s.record_id IN (?)
@@ -44,42 +102,15 @@ SQL;
$current_rid = null; $current_rid = null;
$record = null; $record = null;
$pls = [];
while ($subdef = $statement->fetch()) { while ($subdef = $statement->fetch()) {
/*
* for now disable permalink fetch, since if permalink does not exists, it will
* be created and it's very sloooow (btw: why ?)
*
// too bad : to get permalinks we must instantiate a recordadapter
// btw : why the unique permalink is not stored in subdef table ???
if($subdef['record_id'] !== $current_rid) {
// sql is ordered by rid so we won't find the same record twice.
$current_rid = $subdef['record_id'];
// getting all subdefs once is faster than getting subdef one by one in the main loop
$pls = []; // permalinks, by subdef name
try {
$subdefs = $this->databox->getRecordRepository()->find($current_rid)->get_subdefs();
foreach ($subdefs as $s) {
if(!is_null($pl = $s->get_permalink())) {
$pls[$s->get_name()] = (string)($pl->get_url());
}
}
}
catch (\Exception $e) {
// cant get record ? ignore
}
}
*/
$name = $subdef['name']; $name = $subdef['name'];
$records[$subdef['record_id']]['subdefs'][$name] = array( $records[$subdef['record_id']]['subdefs'][$name] = array(
'path' => $subdef['path'], 'path' => $subdef['path'],
'width' => $subdef['width'], 'width' => $subdef['width'],
'height' => $subdef['height'], 'height' => $subdef['height'],
/* 'size' => $subdef['size'],
* no permalinks for now 'mime' => $subdef['mime'],
* 'permalink' => null
'permalink' => array_key_exists($name, $pls) ? $pls[$name] : null
*/
); );
} }
} }

View File

@@ -29,9 +29,19 @@ class AdminConfigurationController extends Controller
/** @var WorkerRunningJobRepository $repoWorker */ /** @var WorkerRunningJobRepository $repoWorker */
$repoWorker = $app['repo.worker-running-job']; $repoWorker = $app['repo.worker-running-job'];
$filterStatus = [
WorkerRunningJob::RUNNING,
WorkerRunningJob::FINISHED,
WorkerRunningJob::ERROR,
WorkerRunningJob::INTERRUPT
];
$workerRunningJob = $repoWorker->findByStatus($filterStatus);
return $this->render('admin/worker-manager/index.html.twig', [ return $this->render('admin/worker-manager/index.html.twig', [
'isConnected' => ($serverConnection->getChannel() != null) ? true : false, 'isConnected' => ($serverConnection->getChannel() != null) ? true : false,
'workerRunningJob' => $repoWorker->findAll(), 'workerRunningJob' => $workerRunningJob,
'reload' => false
]); ]);
} }

View File

@@ -44,23 +44,27 @@ class ValidationReminderWorker implements WorkerInterface
{ {
$this->setDelivererLocator(new LazyLocator($this->app, 'notification.deliverer')); $this->setDelivererLocator(new LazyLocator($this->app, 'notification.deliverer'));
$days = (int)$this->getConf()->get(['registry', 'actions', 'validation-reminder-days']); $timeLeftPercent = (int)$this->getConf()->get(['registry', 'actions', 'validation-reminder-time-left-percent']);
$interval = sprintf('P%dD', $days); if ($timeLeftPercent == null) {
$now = new DateTime(); $this->logger->error('validation-reminder-time-left-percent is not set in the configuration!');
$dateTo = clone($now); return 0;
try {
$dateTo->add(new DateInterval($interval));
} catch(\Exception $e) {
$this->logger->error(sprintf('<error>Bad interval "%s" ?</error>', $interval));
return ;
} }
foreach ($this->getValidationParticipantRepository()->findNotConfirmedAndNotRemindedParticipantsByExpireDate($dateTo, $now) as $participant) { foreach ($this->getValidationParticipantRepository()->findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent($timeLeftPercent, new DateTime()) as $participant) {
$validationSession = $participant->getSession(); $validationSession = $participant->getSession();
$basket = $validationSession->getBasket(); $basket = $validationSession->getBasket();
$expiresDate = $validationSession->getExpires();
$diffInterval = $expiresDate->diff(new DateTime());
if ($diffInterval->days) {
$timeLeft = $diffInterval->format(' %d days %Hh%I ');
} else {
$timeLeft = $diffInterval->format(' %Hh%I ');
}
$canSend = true; $canSend = true;
$user = $participant->getUser(); // always ok ! $user = $participant->getUser(); // always ok !
@@ -94,19 +98,20 @@ class ValidationReminderWorker implements WorkerInterface
$url = $this->app->url('lightbox_validation', ['basket' => $basket->getId()]); $url = $this->app->url('lightbox_validation', ['basket' => $basket->getId()]);
} }
$this->doRemind($participant, $basket, $url); $this->doRemind($participant, $basket, $url, $timeLeft);
} }
$this->getEntityManager()->flush(); $this->getEntityManager()->flush();
} }
private function doRemind(ValidationParticipant $participant, Basket $basket, $url) private function doRemind(ValidationParticipant $participant, Basket $basket, $url, $timeLeft)
{ {
$params = [ $params = [
'from' => $basket->getValidation()->getInitiator()->getId(), 'from' => $basket->getValidation()->getInitiator()->getId(),
'to' => $participant->getUser()->getId(), 'to' => $participant->getUser()->getId(),
'ssel_id' => $basket->getId(), 'ssel_id' => $basket->getId(),
'url' => $url, 'url' => $url,
'time_left'=> $timeLeft
]; ];
$datas = json_encode($params); $datas = json_encode($params);
@@ -135,6 +140,7 @@ class ValidationReminderWorker implements WorkerInterface
$this->logger->info(sprintf(' -> remind "%s" from "%s" to "%s"', $title, $emitter->getEmail(), $receiver->getEmail())); $this->logger->info(sprintf(' -> remind "%s" from "%s" to "%s"', $title, $emitter->getEmail(), $receiver->getEmail()));
$mail = MailInfoValidationReminder::create($this->app, $receiver, $emitter); $mail = MailInfoValidationReminder::create($this->app, $receiver, $emitter);
$mail->setTimeLeft($timeLeft);
$mail->setButtonUrl($params['url']); $mail->setButtonUrl($params['url']);
$mail->setTitle($title); $mail->setTitle($title);

View File

@@ -40,6 +40,12 @@ class eventsmanager_notify_validationreminder extends eventsmanager_notifyAbstra
$from = $data['from']; $from = $data['from'];
$ssel_id = $data['ssel_id']; $ssel_id = $data['ssel_id'];
// for the old notifications
$timeLeft = '2 days';
if (isset($data['time_left'])) {
$timeLeft = $data['time_left'];
}
if (null === $user = $this->app['repo.users']->find($from)) { if (null === $user = $this->app['repo.users']->find($from)) {
return []; return [];
} }
@@ -57,7 +63,7 @@ class eventsmanager_notify_validationreminder extends eventsmanager_notifyAbstra
. $basket_name . '</a>'; . $basket_name . '</a>';
$ret = [ $ret = [
'text' => $this->app->trans('Rappel : Il vous reste %number% jours pour valider %title% de %user%', ['%number%' => $this->app['conf']->get(['registry', 'actions', 'validation-reminder-days']), '%title%' => $bask_link, '%user%' => $sender]) 'text' => $this->app->trans('Rappel : Il vous reste %timeLeft% pour valider %title% de %user%', ['%timeLeft%' => $timeLeft, '%title%' => $bask_link, '%user%' => $sender])
, 'class' => ($unread == 1 ? 'reload_baskets' : '') , 'class' => ($unread == 1 ? 'reload_baskets' : '')
]; ];

View File

@@ -276,7 +276,7 @@ class media_Permalink_Adapter implements cache_cacheableInterface
* @param media_subdef[] $subdefs * @param media_subdef[] $subdefs
* @return media_Permalink_Adapter[] * @return media_Permalink_Adapter[]
*/ */
public static function getMany(Application $app, $subdefs) public static function getMany(Application $app, $subdefs, $createIfMissing = true)
{ {
Assertion::allIsInstanceOf($subdefs, media_subdef::class); Assertion::allIsInstanceOf($subdefs, media_subdef::class);
@@ -303,20 +303,22 @@ class media_Permalink_Adapter implements cache_cacheableInterface
$missing = array_diff_key($media_subdefs, $data); $missing = array_diff_key($media_subdefs, $data);
if ($missing) { if($missing && $createIfMissing) {
self::createMany($app, $databox, $missing); self::createMany($app, $databox, $missing);
$data = array_replace($data, self::fetchData($databox, array_diff_key($subdefIds, $data))); $data = array_replace($data, self::fetchData($databox, array_diff_key($subdefIds, $data)));
} }
foreach ($media_subdefs as $index => $subdef) { foreach ($media_subdefs as $index => $subdef) {
if (!isset($data[$index])) { if ($createIfMissing && !isset($data[$index])) {
throw new \RuntimeException('Could not fetch some data. Should never happen'); throw new \RuntimeException('Could not fetch some data. Should never happen');
} }
if(isset($data[$index])) {
$permalinks[$index] = new self($app, $databox, $subdef, $data[$index]); $permalinks[$index] = new self($app, $databox, $subdef, $data[$index]);
} }
} }
}
return $permalinks; return $permalinks;
} }

View File

@@ -1564,7 +1564,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
$stmt->execute([':record_id' => $this->getRecordId()]); $stmt->execute([':record_id' => $this->getRecordId()]);
$stmt->closeCursor(); $stmt->closeCursor();
$sql = "DELETE FROM permalinks WHERE subdef_id IN (SELECT subdef_id FROM subdef WHERE record_id=:record_id)"; $sql = "DELETE permalinks FROM subdef INNER JOIN permalinks USING(subdef_id) WHERE record_id=:record_id";
$stmt = $connection->prepare($sql); $stmt = $connection->prepare($sql);
$stmt->execute([':record_id' => $this->getRecordId()]); $stmt->execute([':record_id' => $this->getRecordId()]);
$stmt->closeCursor(); $stmt->closeCursor();

View File

@@ -37,6 +37,7 @@ main:
maxResultWindow: 500000 maxResultWindow: 500000
populate_order: RECORD_ID populate_order: RECORD_ID
populate_direction: DESC populate_direction: DESC
populate_permalinks: false
activeTab: '#elastic-search' activeTab: '#elastic-search'
facets: facets:
_base: _base:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-11-30T11:50:52Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available"> <file date="2020-12-16T08:32:13Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
@@ -832,7 +832,7 @@
<trans-unit id="c26a1a41764983bc03456d418ee43e732e5f513e" resname="Aide sur les expressions regulieres" approved="yes"> <trans-unit id="c26a1a41764983bc03456d418ee43e732e5f513e" resname="Aide sur les expressions regulieres" approved="yes">
<source>Aide sur les expressions regulieres</source> <source>Aide sur les expressions regulieres</source>
<target state="translated">Help over reguliere expressies</target> <target state="translated">Help over reguliere expressies</target>
<jms:reference-file line="324">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="325">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="5e8a35671080dba23a7f84416dcf97fd975a33e6" resname="Ajouter a" approved="yes"> <trans-unit id="5e8a35671080dba23a7f84416dcf97fd975a33e6" resname="Ajouter a" approved="yes">
<source>Ajouter a</source> <source>Ajouter a</source>
@@ -965,7 +965,7 @@
<target state="translated">Er is een fout opgetreden</target> <target state="translated">Er is een fout opgetreden</target>
<jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file> <jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file>
<jms:reference-file line="218">Controller/Prod/StoryController.php</jms:reference-file> <jms:reference-file line="218">Controller/Prod/StoryController.php</jms:reference-file>
<jms:reference-file line="174">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="176">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="173">Controller/Prod/BasketController.php</jms:reference-file> <jms:reference-file line="173">Controller/Prod/BasketController.php</jms:reference-file>
<jms:reference-file line="186">Controller/Admin/CollectionController.php</jms:reference-file> <jms:reference-file line="186">Controller/Admin/CollectionController.php</jms:reference-file>
@@ -990,8 +990,8 @@
<jms:reference-file line="581">Controller/Admin/DataboxController.php</jms:reference-file> <jms:reference-file line="581">Controller/Admin/DataboxController.php</jms:reference-file>
<jms:reference-file line="647">Controller/Admin/DataboxController.php</jms:reference-file> <jms:reference-file line="647">Controller/Admin/DataboxController.php</jms:reference-file>
<jms:reference-file line="71">Controller/Admin/DataboxesController.php</jms:reference-file> <jms:reference-file line="71">Controller/Admin/DataboxesController.php</jms:reference-file>
<jms:reference-file line="118">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="233">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="239">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="15">web/admin/databases.html.twig</jms:reference-file> <jms:reference-file line="15">web/admin/databases.html.twig</jms:reference-file>
<jms:reference-file line="23">admin/collection/collection.html.twig</jms:reference-file> <jms:reference-file line="23">admin/collection/collection.html.twig</jms:reference-file>
<jms:reference-file line="25">admin/collection/suggested_value.html.twig</jms:reference-file> <jms:reference-file line="25">admin/collection/suggested_value.html.twig</jms:reference-file>
@@ -1040,8 +1040,8 @@
<target state="translated">Er is een fout opgetreden</target> <target state="translated">Er is een fout opgetreden</target>
<jms:reference-file line="77">Order/Controller/ProdOrderController.php</jms:reference-file> <jms:reference-file line="77">Order/Controller/ProdOrderController.php</jms:reference-file>
<jms:reference-file line="145">Controller/Prod/BasketController.php</jms:reference-file> <jms:reference-file line="145">Controller/Prod/BasketController.php</jms:reference-file>
<jms:reference-file line="2076">Controller/Api/V1Controller.php</jms:reference-file> <jms:reference-file line="2081">Controller/Api/V1Controller.php</jms:reference-file>
<jms:reference-file line="2522">Controller/Api/V1Controller.php</jms:reference-file> <jms:reference-file line="2527">Controller/Api/V1Controller.php</jms:reference-file>
<jms:reference-file line="126">Controller/Admin/CollectionController.php</jms:reference-file> <jms:reference-file line="126">Controller/Admin/CollectionController.php</jms:reference-file>
<jms:reference-file line="135">Controller/Admin/SearchEngineController.php</jms:reference-file> <jms:reference-file line="135">Controller/Admin/SearchEngineController.php</jms:reference-file>
<jms:reference-file line="521">Controller/Admin/DataboxController.php</jms:reference-file> <jms:reference-file line="521">Controller/Admin/DataboxController.php</jms:reference-file>
@@ -1231,7 +1231,7 @@
<trans-unit id="5c4eb810a8d51375a0e76c76d183446905d39d3a" resname="Aucun statut editable" approved="yes"> <trans-unit id="5c4eb810a8d51375a0e76c76d183446905d39d3a" resname="Aucun statut editable" approved="yes">
<source>Aucun statut editable</source> <source>Aucun statut editable</source>
<target state="translated">Geen enkele bewerkbare status</target> <target state="translated">Geen enkele bewerkbare status</target>
<jms:reference-file line="216">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="217">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="e8f882731020de75c4168f82456175a386828cd1" resname="Aucune" approved="yes"> <trans-unit id="e8f882731020de75c4168f82456175a386828cd1" resname="Aucune" approved="yes">
<source>Aucune</source> <source>Aucune</source>
@@ -2595,7 +2595,7 @@
<trans-unit id="9a15cbc825b5979bd5c5fce02ddc283737928496" resname="Document has been successfully substitued" approved="yes"> <trans-unit id="9a15cbc825b5979bd5c5fce02ddc283737928496" resname="Document has been successfully substitued" approved="yes">
<source>Document has been successfully substitued</source> <source>Document has been successfully substitued</source>
<target state="translated">Document werd met succes vervangen</target> <target state="translated">Document werd met succes vervangen</target>
<jms:reference-file line="212">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="214">Controller/Prod/ToolsController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="cf25d8937160da72080fc8842d6b68764fe829ab" resname="Document refuse par %name%" approved="yes"> <trans-unit id="cf25d8937160da72080fc8842d6b68764fe829ab" resname="Document refuse par %name%" approved="yes">
<source>Document refuse par %name%</source> <source>Document refuse par %name%</source>
@@ -2736,7 +2736,7 @@
<trans-unit id="92376275a970f44a04fcce0319075ec61bbac9ca" resname="Edition impossible" approved="yes"> <trans-unit id="92376275a970f44a04fcce0319075ec61bbac9ca" resname="Edition impossible" approved="yes">
<source>Edition impossible</source> <source>Edition impossible</source>
<target state="translated">Kan niet worden bewerkt</target> <target state="translated">Kan niet worden bewerkt</target>
<jms:reference-file line="409">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="410">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="c7e9fb2ea6c3b8c3ce97645eb902c348d859f36d" resname="Editor"> <trans-unit id="c7e9fb2ea6c3b8c3ce97645eb902c348d859f36d" resname="Editor">
<source>Editor</source> <source>Editor</source>
@@ -3283,9 +3283,9 @@
<target state="translated">Bestand is niet meer in de quarantiane aanwezig, gelieve te vernieuwen</target> <target state="translated">Bestand is niet meer in de quarantiane aanwezig, gelieve te vernieuwen</target>
<jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="54">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="134">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="136">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="155">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="157">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3491d2e44dd1896af3411bb1a048847c13647feb" resname="File is too big : 64k max" approved="yes"> <trans-unit id="3491d2e44dd1896af3411bb1a048847c13647feb" resname="File is too big : 64k max" approved="yes">
<source>File is too big : 64k max</source> <source>File is too big : 64k max</source>
@@ -3695,10 +3695,10 @@
<target state="translated">Als u grotere files wilt opslaan, wees dan zeker deze in die mappen zullen passen.</target> <target state="translated">Als u grotere files wilt opslaan, wees dan zeker deze in die mappen zullen passen.</target>
<jms:reference-file line="742">web/setup/step2.html.twig</jms:reference-file> <jms:reference-file line="742">web/setup/step2.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1e54785f55826fc4cf74fa541efcad1b46998550" resname="Il ne vous reste plus que %quantity% jours pour terminer votre validation"> <trans-unit id="8c2b3e33fa9361614a69fd94f5e0f0a4882f7d18" resname="Il ne vous reste plus que %timeLeft% pour terminer votre validation">
<source>Il ne vous reste plus que %quantity% jours pour terminer votre validation</source> <source>Il ne vous reste plus que %timeLeft% pour terminer votre validation</source>
<target state="new">Il ne vous reste plus que %quantity% jours pour terminer votre validation</target> <target state="new">Il ne vous reste plus que %timeLeft% pour terminer votre validation</target>
<jms:reference-file line="48">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file> <jms:reference-file line="60">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6e730f5633a67f2c86d20b9263e271582684558b" resname="Il se peux que vous ne voyez pas tous les elements. Vous ne verrez que les elements correspondants aux collections sur lesquelles vous gerez les commandes" approved="yes"> <trans-unit id="6e730f5633a67f2c86d20b9263e271582684558b" resname="Il se peux que vous ne voyez pas tous les elements. Vous ne verrez que les elements correspondants aux collections sur lesquelles vous gerez les commandes" approved="yes">
<source>Il se peux que vous ne voyez pas tous les elements. Vous ne verrez que les elements correspondants aux collections sur lesquelles vous gerez les commandes</source> <source>Il se peux que vous ne voyez pas tous les elements. Vous ne verrez que les elements correspondants aux collections sur lesquelles vous gerez les commandes</source>
@@ -4096,7 +4096,7 @@
<trans-unit id="a733c2df9772facab04b4773c9d2bed560c25e9a" resname="Les status de certains documents ne sont pas accessibles par manque de droits" approved="yes"> <trans-unit id="a733c2df9772facab04b4773c9d2bed560c25e9a" resname="Les status de certains documents ne sont pas accessibles par manque de droits" approved="yes">
<source>Les status de certains documents ne sont pas accessibles par manque de droits</source> <source>Les status de certains documents ne sont pas accessibles par manque de droits</source>
<target state="translated">De status van bepaalde documenten is niet toegestaan omwille van gebrek aan rechten.</target> <target state="translated">De status van bepaalde documenten is niet toegestaan omwille van gebrek aan rechten.</target>
<jms:reference-file line="219">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="220">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="663929297180bbb5ff977df2695f71e94c35fa5e" resname="Les termes apparaissent dans le(s) champs" approved="yes"> <trans-unit id="663929297180bbb5ff977df2695f71e94c35fa5e" resname="Les termes apparaissent dans le(s) champs" approved="yes">
<source>Les termes apparaissent dans le(s) champs</source> <source>Les termes apparaissent dans le(s) champs</source>
@@ -4772,11 +4772,6 @@
<target state="translated">Nummer</target> <target state="translated">Nummer</target>
<jms:reference-file line="22">admin/databox/details.html.twig</jms:reference-file> <jms:reference-file line="22">admin/databox/details.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="b026cbda12bcd36b85f03ebaebae02f686cfac40" resname="Number of days before the end of the validation to send a reminder email" approved="yes">
<source>Number of days before the end of the validation to send a reminder email</source>
<target state="translated">Aantal dagen voor het einde van de validatie om een herinneringsmail te sturen.</target>
<jms:reference-file line="26">Form/Configuration/ActionsFormType.php</jms:reference-file>
</trans-unit>
<trans-unit id="39e336676dcacd1411fbc236d035878a38989667" resname="Number of records to process per batch"> <trans-unit id="39e336676dcacd1411fbc236d035878a38989667" resname="Number of records to process per batch">
<source>Number of records to process per batch</source> <source>Number of records to process per batch</source>
<target state="new">Number of records to process per batch</target> <target state="new">Number of records to process per batch</target>
@@ -4980,6 +4975,11 @@
<target state="new">Pause</target> <target state="new">Pause</target>
<jms:reference-file line="128">Controller/Prod/LanguageController.php</jms:reference-file> <jms:reference-file line="128">Controller/Prod/LanguageController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="102bbf0d1fb0a23cb8d8fb6eb03685b4509176c0" resname="Percent of the time left before the end of the validation to send a reminder email">
<source>Percent of the time left before the end of the validation to send a reminder email</source>
<target state="new">Percent of the time left before the end of the validation to send a reminder email</target>
<jms:reference-file line="26">Form/Configuration/ActionsFormType.php</jms:reference-file>
</trans-unit>
<trans-unit id="3d8de900b56813bb78e97afbf22578720d473219" resname="Periodically fetches an FTP repository content locally"> <trans-unit id="3d8de900b56813bb78e97afbf22578720d473219" resname="Periodically fetches an FTP repository content locally">
<source>Periodically fetches an FTP repository content locally</source> <source>Periodically fetches an FTP repository content locally</source>
<target state="new">Periodically fetches an FTP repository content locally</target> <target state="new">Periodically fetches an FTP repository content locally</target>
@@ -5435,15 +5435,15 @@
<target state="translated">tab/shift-tab verspringt tussen de velden</target> <target state="translated">tab/shift-tab verspringt tussen de velden</target>
<jms:reference-file line="721">web/prod/index.html.twig</jms:reference-file> <jms:reference-file line="721">web/prod/index.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4efaf5e07d4b4b4c4373d24615adeed3a0eca433" resname="Rappel : Il vous reste %number% jours pour valider %title% de %user%"> <trans-unit id="113e4c4573bc36248145d74e8d235a10dbec320d" resname="Rappel : Il vous reste %timeLeft% pour valider %title% de %user%">
<source>Rappel : Il vous reste %number% jours pour valider %title% de %user%</source> <source>Rappel : Il vous reste %timeLeft% pour valider %title% de %user%</source>
<target state="new">Rappel : Il vous reste %number% jours pour valider %title% de %user%</target> <target state="new">Rappel : Il vous reste %timeLeft% pour valider %title% de %user%</target>
<jms:reference-file line="60">eventsmanager/notify/validationreminder.php</jms:reference-file> <jms:reference-file line="66">eventsmanager/notify/validationreminder.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="aba19c22de9ce4775ec46aebd783d496329ceee7" resname="Rappel pour une demande de validation" approved="yes"> <trans-unit id="aba19c22de9ce4775ec46aebd783d496329ceee7" resname="Rappel pour une demande de validation" approved="yes">
<source>Rappel pour une demande de validation</source> <source>Rappel pour une demande de validation</source>
<target state="translated">Aanmaning voor een goedkeuringsaanvraag</target> <target state="translated">Aanmaning voor een goedkeuringsaanvraag</target>
<jms:reference-file line="82">eventsmanager/notify/validationreminder.php</jms:reference-file> <jms:reference-file line="88">eventsmanager/notify/validationreminder.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="aafcf684757a5a4e1bf1630db0821e75f47a2d08" resname="Rapport de Validation" approved="yes"> <trans-unit id="aafcf684757a5a4e1bf1630db0821e75f47a2d08" resname="Rapport de Validation" approved="yes">
<source>Rapport de Validation</source> <source>Rapport de Validation</source>
@@ -5578,7 +5578,7 @@
<trans-unit id="3cd74928930cda94205568949be186e4cae37119" resname="Record Not Found" approved="yes"> <trans-unit id="3cd74928930cda94205568949be186e4cae37119" resname="Record Not Found" approved="yes">
<source>Record Not Found</source> <source>Record Not Found</source>
<target state="translated">Document niet gevonden</target> <target state="translated">Document niet gevonden</target>
<jms:reference-file line="2074">Controller/Api/V1Controller.php</jms:reference-file> <jms:reference-file line="2079">Controller/Api/V1Controller.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ef0112aa634cbad5a586b72e4befe1ab1a39e73f" resname="Record removed from basket" approved="yes"> <trans-unit id="ef0112aa634cbad5a586b72e4befe1ab1a39e73f" resname="Record removed from basket" approved="yes">
<source>Record removed from basket</source> <source>Record removed from basket</source>
@@ -5610,16 +5610,6 @@
<target state="translated">Type van de records</target> <target state="translated">Type van de records</target>
<jms:reference-file line="20">actions/Property/index.html.twig</jms:reference-file> <jms:reference-file line="20">actions/Property/index.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="56e3badc4e6c5cc95e0ea5a9a878b9bd09f319d4" resname="Refresh">
<source>Refresh</source>
<target state="new">Refresh</target>
<jms:reference-file line="487">prod/WorkZone/Macros.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="8341fb596e80ccb2c214adc31d72bcd66f02dac8" resname="Refresh Publication">
<source>Refresh Publication</source>
<target state="new">Refresh Publication</target>
<jms:reference-file line="3">prod/WorkZone/ExposePublicationAssets.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="68bac4f29bb7ff60923642c9caaae69862bbd2dc" resname="Refus d'elements de commande" approved="yes"> <trans-unit id="68bac4f29bb7ff60923642c9caaae69862bbd2dc" resname="Refus d'elements de commande" approved="yes">
<source>Refus d'elements de commande</source> <source>Refus d'elements de commande</source>
<target state="translated">Weigering van producten in bestelling</target> <target state="translated">Weigering van producten in bestelling</target>
@@ -5669,7 +5659,7 @@
<trans-unit id="c8005b356e3a4dba94a532df1deec4ebce882d13" resname="Reminder : validate '%title%'"> <trans-unit id="c8005b356e3a4dba94a532df1deec4ebce882d13" resname="Reminder : validate '%title%'">
<source>Reminder : validate '%title%'</source> <source>Reminder : validate '%title%'</source>
<target state="new">Reminder : validate '%title%'</target> <target state="new">Reminder : validate '%title%'</target>
<jms:reference-file line="40">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file> <jms:reference-file line="52">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ecd6539bc6678ec0ff3748ecac64d64cee566b8f" resname="Remove ICC Profile" approved="yes"> <trans-unit id="ecd6539bc6678ec0ff3748ecac64d64cee566b8f" resname="Remove ICC Profile" approved="yes">
<source>Remove ICC Profile</source> <source>Remove ICC Profile</source>
@@ -6335,7 +6325,7 @@
<source>Start validation</source> <source>Start validation</source>
<target state="translated">Start validatie</target> <target state="translated">Start validatie</target>
<jms:reference-file line="87">Notification/Mail/MailInfoValidationRequest.php</jms:reference-file> <jms:reference-file line="87">Notification/Mail/MailInfoValidationRequest.php</jms:reference-file>
<jms:reference-file line="58">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file> <jms:reference-file line="70">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="faa9e7e7ef5a264c58c68a4a0b9c8bd54241450a" resname="Started"> <trans-unit id="faa9e7e7ef5a264c58c68a4a0b9c8bd54241450a" resname="Started">
<source>Started</source> <source>Started</source>
@@ -6384,7 +6374,7 @@
<trans-unit id="315bc332aafca63cad8ac042c2e2f5111544fe9d" resname="Story Not Found" approved="yes"> <trans-unit id="315bc332aafca63cad8ac042c2e2f5111544fe9d" resname="Story Not Found" approved="yes">
<source>Story Not Found</source> <source>Story Not Found</source>
<target state="translated">Artikel niet gevonden</target> <target state="translated">Artikel niet gevonden</target>
<jms:reference-file line="2520">Controller/Api/V1Controller.php</jms:reference-file> <jms:reference-file line="2525">Controller/Api/V1Controller.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="94e347da85f4797810ed7987973c8ef79092057e" resname="Story created" approved="yes"> <trans-unit id="94e347da85f4797810ed7987973c8ef79092057e" resname="Story created" approved="yes">
<source>Story created</source> <source>Story created</source>
@@ -6877,7 +6867,7 @@
<trans-unit id="34c6d5d40f46508994dd884386a0ea63970f2e34" resname="Thumbnail has been successfully substitued" approved="yes"> <trans-unit id="34c6d5d40f46508994dd884386a0ea63970f2e34" resname="Thumbnail has been successfully substitued" approved="yes">
<source>Thumbnail has been successfully substitued</source> <source>Thumbnail has been successfully substitued</source>
<target state="translated">Thumbnail werd met succes vervangen</target> <target state="translated">Thumbnail werd met succes vervangen</target>
<jms:reference-file line="266">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="268">Controller/Prod/ToolsController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="56972a74c8bd7510e5ca07b4d56bf31fdc495aa5" resname="Thumbnails directory is mounted to be accessible via HTTP, while other files are not." approved="yes"> <trans-unit id="56972a74c8bd7510e5ca07b4d56bf31fdc495aa5" resname="Thumbnails directory is mounted to be accessible via HTTP, while other files are not." approved="yes">
<source>Thumbnails directory is mounted to be accessible via HTTP, while other files are not.</source> <source>Thumbnails directory is mounted to be accessible via HTTP, while other files are not.</source>
@@ -7124,8 +7114,8 @@
<target state="translated">Een selectie</target> <target state="translated">Een selectie</target>
<jms:reference-file line="51">eventsmanager/notify/validate.php</jms:reference-file> <jms:reference-file line="51">eventsmanager/notify/validate.php</jms:reference-file>
<jms:reference-file line="53">eventsmanager/notify/validate.php</jms:reference-file> <jms:reference-file line="53">eventsmanager/notify/validate.php</jms:reference-file>
<jms:reference-file line="51">eventsmanager/notify/validationreminder.php</jms:reference-file> <jms:reference-file line="57">eventsmanager/notify/validationreminder.php</jms:reference-file>
<jms:reference-file line="53">eventsmanager/notify/validationreminder.php</jms:reference-file> <jms:reference-file line="59">eventsmanager/notify/validationreminder.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="bb7d1104896554f9308dee9aef38ea55899ba1ab" resname="Unhandled Error" approved="yes"> <trans-unit id="bb7d1104896554f9308dee9aef38ea55899ba1ab" resname="Unhandled Error" approved="yes">
<source>Unhandled Error</source> <source>Unhandled Error</source>
@@ -7350,7 +7340,7 @@
<jms:reference-file line="78">eventsmanager/notify/validate.php</jms:reference-file> <jms:reference-file line="78">eventsmanager/notify/validate.php</jms:reference-file>
<jms:reference-file line="23">eventsmanager/notify/validationdone.php</jms:reference-file> <jms:reference-file line="23">eventsmanager/notify/validationdone.php</jms:reference-file>
<jms:reference-file line="20">eventsmanager/notify/validationreminder.php</jms:reference-file> <jms:reference-file line="20">eventsmanager/notify/validationreminder.php</jms:reference-file>
<jms:reference-file line="73">eventsmanager/notify/validationreminder.php</jms:reference-file> <jms:reference-file line="79">eventsmanager/notify/validationreminder.php</jms:reference-file>
<jms:reference-file line="86">lightbox/IE6/validate.html.twig</jms:reference-file> <jms:reference-file line="86">lightbox/IE6/validate.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="83da6b62512e6597a104cf295a8f050cd9799a6d" resname="Validation from %user%"> <trans-unit id="83da6b62512e6597a104cf295a8f050cd9799a6d" resname="Validation from %user%">
@@ -7431,7 +7421,7 @@
<trans-unit id="f5bd306a7ccf0851eeefd7659ac5c01c382df934" resname="Vocabulary not found" approved="yes"> <trans-unit id="f5bd306a7ccf0851eeefd7659ac5c01c382df934" resname="Vocabulary not found" approved="yes">
<source>Vocabulary not found</source> <source>Vocabulary not found</source>
<target state="translated">Vocabulary niet gevonden</target> <target state="translated">Vocabulary niet gevonden</target>
<jms:reference-file line="258">Controller/Prod/EditController.php</jms:reference-file> <jms:reference-file line="260">Controller/Prod/EditController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="a1e3e6d2f9b416cfab10df81ce100f4fc43eb90a" resname="Vocabulary type" approved="yes"> <trans-unit id="a1e3e6d2f9b416cfab10df81ce100f4fc43eb90a" resname="Vocabulary type" approved="yes">
<source>Vocabulary type</source> <source>Vocabulary type</source>
@@ -9675,7 +9665,7 @@
<trans-unit id="afaee7bf6eca9099dc9356fbc46fb4f1716b8916" resname="an error occured" approved="yes"> <trans-unit id="afaee7bf6eca9099dc9356fbc46fb4f1716b8916" resname="an error occured" approved="yes">
<source>an error occured</source> <source>an error occured</source>
<target state="translated">een fout geeft zich voorgedaan</target> <target state="translated">een fout geeft zich voorgedaan</target>
<jms:reference-file line="295">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="297">Controller/Prod/ToolsController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="feab893253be204583342aa21a1c6e355f805969" resname="an error occured : %message%"> <trans-unit id="feab893253be204583342aa21a1c6e355f805969" resname="an error occured : %message%">
<source>an error occured : %message%</source> <source>an error occured : %message%</source>
@@ -9759,8 +9749,8 @@
<trans-unit id="d59bc356bd632596c602560d44e1ed9cb7145699" resname="boutton::ajouter" approved="yes"> <trans-unit id="d59bc356bd632596c602560d44e1ed9cb7145699" resname="boutton::ajouter" approved="yes">
<source>boutton::ajouter</source> <source>boutton::ajouter</source>
<target state="translated">Toevoegen</target> <target state="translated">Toevoegen</target>
<jms:reference-file line="253">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="254">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="358">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="359">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="111">admin/collection/suggested_value.html.twig</jms:reference-file> <jms:reference-file line="111">admin/collection/suggested_value.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8641f76c3f062372dc5509faad531672cf3558a5" resname="boutton::annuler" approved="yes"> <trans-unit id="8641f76c3f062372dc5509faad531672cf3558a5" resname="boutton::annuler" approved="yes">
@@ -9773,8 +9763,8 @@
<jms:reference-file line="250">web/common/dialog_export.html.twig</jms:reference-file> <jms:reference-file line="250">web/common/dialog_export.html.twig</jms:reference-file>
<jms:reference-file line="404">web/common/dialog_export.html.twig</jms:reference-file> <jms:reference-file line="404">web/common/dialog_export.html.twig</jms:reference-file>
<jms:reference-file line="487">web/common/dialog_export.html.twig</jms:reference-file> <jms:reference-file line="487">web/common/dialog_export.html.twig</jms:reference-file>
<jms:reference-file line="254">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="255">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="373">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="374">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="13">Bridge/Flickr/photo_modify.html.twig</jms:reference-file> <jms:reference-file line="13">Bridge/Flickr/photo_modify.html.twig</jms:reference-file>
<jms:reference-file line="40">Bridge/Flickr/photo_modify.html.twig</jms:reference-file> <jms:reference-file line="40">Bridge/Flickr/photo_modify.html.twig</jms:reference-file>
<jms:reference-file line="13">Bridge/Youtube/video_modify.html.twig</jms:reference-file> <jms:reference-file line="13">Bridge/Youtube/video_modify.html.twig</jms:reference-file>
@@ -9867,8 +9857,8 @@
<target state="translated">Sluiten</target> <target state="translated">Sluiten</target>
<jms:reference-file line="58">Controller/Prod/LanguageController.php</jms:reference-file> <jms:reference-file line="58">Controller/Prod/LanguageController.php</jms:reference-file>
<jms:reference-file line="90">web/common/dialog_export.html.twig</jms:reference-file> <jms:reference-file line="90">web/common/dialog_export.html.twig</jms:reference-file>
<jms:reference-file line="392">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="393">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="397">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="398">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="11">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="11">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="24">web/report/all_content.html.twig</jms:reference-file> <jms:reference-file line="24">web/report/all_content.html.twig</jms:reference-file>
<jms:reference-file line="115">web/thesaurus/accept.html.twig</jms:reference-file> <jms:reference-file line="115">web/thesaurus/accept.html.twig</jms:reference-file>
@@ -9940,7 +9930,7 @@
<trans-unit id="7c93f19dc5b7cef99db6fb84975ef795e3e87102" resname="boutton::remplacer" approved="yes"> <trans-unit id="7c93f19dc5b7cef99db6fb84975ef795e3e87102" resname="boutton::remplacer" approved="yes">
<source>boutton::remplacer</source> <source>boutton::remplacer</source>
<target state="translated">Vervangen</target> <target state="translated">Vervangen</target>
<jms:reference-file line="252">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="253">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6b9c19dded5ae1d0dbe62a14e2754f2c8cf65302" resname="boutton::renouveller" approved="yes"> <trans-unit id="6b9c19dded5ae1d0dbe62a14e2754f2c8cf65302" resname="boutton::renouveller" approved="yes">
<source>boutton::renouveller</source> <source>boutton::renouveller</source>
@@ -10043,8 +10033,8 @@
<jms:reference-file line="75">web/account/access.html.twig</jms:reference-file> <jms:reference-file line="75">web/account/access.html.twig</jms:reference-file>
<jms:reference-file line="48">web/account/reset-email.html.twig</jms:reference-file> <jms:reference-file line="48">web/account/reset-email.html.twig</jms:reference-file>
<jms:reference-file line="229">web/account/account.html.twig</jms:reference-file> <jms:reference-file line="229">web/account/account.html.twig</jms:reference-file>
<jms:reference-file line="350">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="351">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="372">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="373">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="39">Bridge/Flickr/photo_modify.html.twig</jms:reference-file> <jms:reference-file line="39">Bridge/Flickr/photo_modify.html.twig</jms:reference-file>
<jms:reference-file line="27">Bridge/Flickr/photo_moveinto_photoset.html.twig</jms:reference-file> <jms:reference-file line="27">Bridge/Flickr/photo_moveinto_photoset.html.twig</jms:reference-file>
<jms:reference-file line="53">Bridge/Flickr/photoset_createcontainer.html.twig</jms:reference-file> <jms:reference-file line="53">Bridge/Flickr/photoset_createcontainer.html.twig</jms:reference-file>
@@ -10377,7 +10367,7 @@
<trans-unit id="8abba1c9ff44c3fcc4d30726337bc02847d67235" resname="edit::preset:: titre" approved="yes"> <trans-unit id="8abba1c9ff44c3fcc4d30726337bc02847d67235" resname="edit::preset:: titre" approved="yes">
<source>edit::preset:: titre</source> <source>edit::preset:: titre</source>
<target state="translated">Titel</target> <target state="translated">Titel</target>
<jms:reference-file line="403">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="404">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="869b2f5267c5abc112d0f6281b4201a228054f92" resname="effacer (OK) ou quitter (Annuler) ?"> <trans-unit id="869b2f5267c5abc112d0f6281b4201a228054f92" resname="effacer (OK) ou quitter (Annuler) ?">
<source>effacer (OK) ou quitter (Annuler) ?</source> <source>effacer (OK) ou quitter (Annuler) ?</source>
@@ -10491,10 +10481,10 @@
<trans-unit id="a64e848c2600a26fdf2c6b8cfafda22229016983" resname="file is not valid" approved="yes"> <trans-unit id="a64e848c2600a26fdf2c6b8cfafda22229016983" resname="file is not valid" approved="yes">
<source>file is not valid</source> <source>file is not valid</source>
<target state="translated">bestand is niet geldig</target> <target state="translated">bestand is niet geldig</target>
<jms:reference-file line="214">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="216">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="217">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="219">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="240">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="242">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="269">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="271">Controller/Prod/ToolsController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6117e45ab57f8660d866a21ca5e9d2c31dbc1945" resname="flash"> <trans-unit id="6117e45ab57f8660d866a21ca5e9d2c31dbc1945" resname="flash">
<source>flash</source> <source>flash</source>
@@ -11476,13 +11466,13 @@
<trans-unit id="02e53272b6740f58947e81b6fd23e62e2ca5c301" resname="phraseanet:: presse-papier" approved="yes"> <trans-unit id="02e53272b6740f58947e81b6fd23e62e2ca5c301" resname="phraseanet:: presse-papier" approved="yes">
<source>phraseanet:: presse-papier</source> <source>phraseanet:: presse-papier</source>
<target state="translated">Klembord</target> <target state="translated">Klembord</target>
<jms:reference-file line="269">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="270">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="da1f4cb9f98aef274dbb8f5992dedaf20e91ea71" resname="phraseanet:: preview" approved="yes"> <trans-unit id="da1f4cb9f98aef274dbb8f5992dedaf20e91ea71" resname="phraseanet:: preview" approved="yes">
<source>phraseanet:: preview</source> <source>phraseanet:: preview</source>
<target state="translated">Voorvertoning</target> <target state="translated">Voorvertoning</target>
<jms:reference-file line="22">prod/actions/printer_default.html.twig</jms:reference-file> <jms:reference-file line="22">prod/actions/printer_default.html.twig</jms:reference-file>
<jms:reference-file line="266">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="267">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="2baca947f8536e2ff6bab1c45c1876c04706a6a0" resname="phraseanet:: propositions" approved="yes"> <trans-unit id="2baca947f8536e2ff6bab1c45c1876c04706a6a0" resname="phraseanet:: propositions" approved="yes">
<source>phraseanet:: propositions</source> <source>phraseanet:: propositions</source>
@@ -11506,7 +11496,7 @@
<source>phraseanet:: thesaurus</source> <source>phraseanet:: thesaurus</source>
<target state="translated">Thesaurus</target> <target state="translated">Thesaurus</target>
<jms:reference-file line="15">web/prod/tab_headers.html.twig</jms:reference-file> <jms:reference-file line="15">web/prod/tab_headers.html.twig</jms:reference-file>
<jms:reference-file line="264">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="265">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="5">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="5">web/thesaurus/thesaurus.html.twig</jms:reference-file>
<jms:reference-file line="235">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="235">web/thesaurus/thesaurus.html.twig</jms:reference-file>
<jms:reference-file line="5">web/thesaurus/index.html.twig</jms:reference-file> <jms:reference-file line="5">web/thesaurus/index.html.twig</jms:reference-file>
@@ -11598,7 +11588,7 @@
<source>phraseanet::chargement</source> <source>phraseanet::chargement</source>
<target state="translated">Laden</target> <target state="translated">Laden</target>
<jms:reference-file line="47">Controller/Prod/LanguageController.php</jms:reference-file> <jms:reference-file line="47">Controller/Prod/LanguageController.php</jms:reference-file>
<jms:reference-file line="277">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="278">prod/actions/edit_default.html.twig</jms:reference-file>
<jms:reference-file line="78">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="78">web/thesaurus/thesaurus.html.twig</jms:reference-file>
<jms:reference-file line="34">admin/collection/suggested_value.html.twig</jms:reference-file> <jms:reference-file line="34">admin/collection/suggested_value.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -11982,16 +11972,6 @@
<jms:reference-file line="258">actions/Tools/index.html.twig</jms:reference-file> <jms:reference-file line="258">actions/Tools/index.html.twig</jms:reference-file>
<jms:reference-file line="308">actions/Tools/videoEditor.html.twig</jms:reference-file> <jms:reference-file line="308">actions/Tools/videoEditor.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="07ac659e68701b8add70118c3b1d8979ac594f90" resname="prod:: workzone:expose: Add publication">
<source>prod:: workzone:expose: Add publication</source>
<target state="new">prod:: workzone:expose: Add publication</target>
<jms:reference-file line="484">prod/WorkZone/Macros.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="ff7a621abf41f26fa3db20540a94c532051f2dc4" resname="prod:: workzone:expose: select expose">
<source>prod:: workzone:expose: select expose</source>
<target state="new">prod:: workzone:expose: select expose</target>
<jms:reference-file line="474">prod/WorkZone/Macros.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f63658cad863dee4a5876278e836472380183ade" resname="prod::Les enregistrements ne provienent pas tous de la meme base et ne peuvent donc etre traites ensemble" approved="yes"> <trans-unit id="f63658cad863dee4a5876278e836472380183ade" resname="prod::Les enregistrements ne provienent pas tous de la meme base et ne peuvent donc etre traites ensemble" approved="yes">
<source>prod::Les enregistrements ne provienent pas tous de la meme base et ne peuvent donc etre traites ensemble</source> <source>prod::Les enregistrements ne provienent pas tous de la meme base et ne peuvent donc etre traites ensemble</source>
<target state="translated">De records zijn niet allemaal afkomstig van dezelfde database en kan dus niet samen behandeld worden</target> <target state="translated">De records zijn niet allemaal afkomstig van dezelfde database en kan dus niet samen behandeld worden</target>
@@ -12036,27 +12016,27 @@
<trans-unit id="64c5b2559a8a7877b0218fd056b3bc89d48a0937" resname="prod::edit: Confirmation Edition latitude longitude"> <trans-unit id="64c5b2559a8a7877b0218fd056b3bc89d48a0937" resname="prod::edit: Confirmation Edition latitude longitude">
<source>prod::edit: Confirmation Edition latitude longitude</source> <source>prod::edit: Confirmation Edition latitude longitude</source>
<target state="new">prod::edit: Confirmation Edition latitude longitude</target> <target state="new">prod::edit: Confirmation Edition latitude longitude</target>
<jms:reference-file line="421">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="422">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="063431f63e0c593c52fffb55f390d1d9c216ee4a" resname="prod::edit: Impossible d'editer simultanement des documents provenant de bases differentes" approved="yes"> <trans-unit id="063431f63e0c593c52fffb55f390d1d9c216ee4a" resname="prod::edit: Impossible d'editer simultanement des documents provenant de bases differentes" approved="yes">
<source>prod::edit: Impossible d'editer simultanement des documents provenant de bases differentes</source> <source>prod::edit: Impossible d'editer simultanement des documents provenant de bases differentes</source>
<target state="translated">Onmogelijk om documenten afkomstig van verschillende databases samen te bewerken</target> <target state="translated">Onmogelijk om documenten afkomstig van verschillende databases samen te bewerken</target>
<jms:reference-file line="413">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="414">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="c3411dbdb5fa1963791b5e8d97b6f2c9532dded8" resname="prod::edit:confirm: Edition latitude longitude"> <trans-unit id="c3411dbdb5fa1963791b5e8d97b6f2c9532dded8" resname="prod::edit:confirm: Edition latitude longitude">
<source>prod::edit:confirm: Edition latitude longitude</source> <source>prod::edit:confirm: Edition latitude longitude</source>
<target state="new">prod::edit:confirm: Edition latitude longitude</target> <target state="new">prod::edit:confirm: Edition latitude longitude</target>
<jms:reference-file line="420">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="421">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="e625a89e837b1b0b9450fb89ddc4f29b570df7ab" resname="prod::edit:confirm: No"> <trans-unit id="e625a89e837b1b0b9450fb89ddc4f29b570df7ab" resname="prod::edit:confirm: No">
<source>prod::edit:confirm: No</source> <source>prod::edit:confirm: No</source>
<target state="new">prod::edit:confirm: No</target> <target state="new">prod::edit:confirm: No</target>
<jms:reference-file line="424">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="425">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="683af4416e59f0bfc4663f1627063c50c9205df1" resname="prod::edit:confirm: Yes"> <trans-unit id="683af4416e59f0bfc4663f1627063c50c9205df1" resname="prod::edit:confirm: Yes">
<source>prod::edit:confirm: Yes</source> <source>prod::edit:confirm: Yes</source>
<target state="new">prod::edit:confirm: Yes</target> <target state="new">prod::edit:confirm: Yes</target>
<jms:reference-file line="423">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="424">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="dc14b0cfd6da32eb4f1c2c2697dbb13a44c114f2" resname="prod::edit:story select all"> <trans-unit id="dc14b0cfd6da32eb4f1c2c2697dbb13a44c114f2" resname="prod::edit:story select all">
<source>prod::edit:story select all</source> <source>prod::edit:story select all</source>
@@ -12071,32 +12051,32 @@
<trans-unit id="b4647a860e97f9b173747e8736ae36630631fbb4" resname="prod::editing: %not_actionable% documents ne peuvent etre edites car vos droits sont induffisants" approved="yes"> <trans-unit id="b4647a860e97f9b173747e8736ae36630631fbb4" resname="prod::editing: %not_actionable% documents ne peuvent etre edites car vos droits sont induffisants" approved="yes">
<source>prod::editing: %not_actionable% documents ne peuvent etre edites car vos droits sont induffisants</source> <source>prod::editing: %not_actionable% documents ne peuvent etre edites car vos droits sont induffisants</source>
<target state="translated">%not_actionable% documenten kunnen niet bewerkt worden omdat u niet voldoende rechten heeft</target> <target state="translated">%not_actionable% documenten kunnen niet bewerkt worden omdat u niet voldoende rechten heeft</target>
<jms:reference-file line="448">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="449">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="e58fe53260dcb47548d687b0aac89a231f8fd349" resname="prod::editing: 1 document ne peut etre edite car vos droits sont induffisants" approved="yes"> <trans-unit id="e58fe53260dcb47548d687b0aac89a231f8fd349" resname="prod::editing: 1 document ne peut etre edite car vos droits sont induffisants" approved="yes">
<source>prod::editing: 1 document ne peut etre edite car vos droits sont induffisants</source> <source>prod::editing: 1 document ne peut etre edite car vos droits sont induffisants</source>
<target state="translated">1 document kan niet worden bewerkt omdat u niet voldoende rechten heeft</target> <target state="translated">1 document kan niet worden bewerkt omdat u niet voldoende rechten heeft</target>
<jms:reference-file line="450">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="451">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="d06429358cfa7814d995cffec515505b4babbdf3" resname="prod::editing: aucun documents ne peuvent etre edites car vos droits sont induffisants" approved="yes"> <trans-unit id="d06429358cfa7814d995cffec515505b4babbdf3" resname="prod::editing: aucun documents ne peuvent etre edites car vos droits sont induffisants" approved="yes">
<source>prod::editing: aucun documents ne peuvent etre edites car vos droits sont induffisants</source> <source>prod::editing: aucun documents ne peuvent etre edites car vos droits sont induffisants</source>
<target state="translated">Geen enkel document kan worden bewerkt omdat u niet voldoende rechten heeft</target> <target state="translated">Geen enkel document kan worden bewerkt omdat u niet voldoende rechten heeft</target>
<jms:reference-file line="415">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="416">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="93a5e45cf78591b66011a369a41a9faae6439da0" resname="prod::editing: modeles de fiches" approved="yes"> <trans-unit id="93a5e45cf78591b66011a369a41a9faae6439da0" resname="prod::editing: modeles de fiches" approved="yes">
<source>prod::editing: modeles de fiches</source> <source>prod::editing: modeles de fiches</source>
<target state="translated">Bestandsmodellen</target> <target state="translated">Bestandsmodellen</target>
<jms:reference-file line="268">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="269">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="43cef7ae638274317ae80eeb9d2207fbd8c60889" resname="prod::editing: rechercher-remplacer" approved="yes"> <trans-unit id="43cef7ae638274317ae80eeb9d2207fbd8c60889" resname="prod::editing: rechercher-remplacer" approved="yes">
<source>prod::editing: rechercher-remplacer</source> <source>prod::editing: rechercher-remplacer</source>
<target state="translated">Zoeken-vervangen</target> <target state="translated">Zoeken-vervangen</target>
<jms:reference-file line="267">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="268">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1a368232d8ba90d4b168be2a328b32b2889a909c" resname="prod::editing: valider ou annuler les modifications" approved="yes"> <trans-unit id="1a368232d8ba90d4b168be2a328b32b2889a909c" resname="prod::editing: valider ou annuler les modifications" approved="yes">
<source>prod::editing: valider ou annuler les modifications</source> <source>prod::editing: valider ou annuler les modifications</source>
<target state="translated">Bewaar of annuleer de aanpassingen</target> <target state="translated">Bewaar of annuleer de aanpassingen</target>
<jms:reference-file line="398">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="399">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="f5b80c50fa70208435fd889b73915ca753efabd3" resname="prod::editing::annulation: abandonner les modification ?" approved="yes"> <trans-unit id="f5b80c50fa70208435fd889b73915ca753efabd3" resname="prod::editing::annulation: abandonner les modification ?" approved="yes">
<source>prod::editing::annulation: abandonner les modification ?</source> <source>prod::editing::annulation: abandonner les modification ?</source>
@@ -12111,62 +12091,62 @@
<trans-unit id="be0abffee86e7b309d3ff31af3ab46a7e3927914" resname="prod::editing::replace: remplacer dans le champ" approved="yes"> <trans-unit id="be0abffee86e7b309d3ff31af3ab46a7e3927914" resname="prod::editing::replace: remplacer dans le champ" approved="yes">
<source>prod::editing::replace: remplacer dans le champ</source> <source>prod::editing::replace: remplacer dans le champ</source>
<target state="translated">Vervangen in het veld</target> <target state="translated">Vervangen in het veld</target>
<jms:reference-file line="288">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="289">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="5abac240c44453bcb822102437d5b2e95115dbe2" resname="prod::editing::replace: remplacer dans tous les champs" approved="yes"> <trans-unit id="5abac240c44453bcb822102437d5b2e95115dbe2" resname="prod::editing::replace: remplacer dans tous les champs" approved="yes">
<source>prod::editing::replace: remplacer dans tous les champs</source> <source>prod::editing::replace: remplacer dans tous les champs</source>
<target state="translated">Vervangen in alle velden</target> <target state="translated">Vervangen in alle velden</target>
<jms:reference-file line="291">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="292">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="7ba84a24ce43f7192d766a7afcda8d7de22ba760" resname="prod::editing:indexation en cours" approved="yes"> <trans-unit id="7ba84a24ce43f7192d766a7afcda8d7de22ba760" resname="prod::editing:indexation en cours" approved="yes">
<source>prod::editing:indexation en cours</source> <source>prod::editing:indexation en cours</source>
<target state="translated">Indexatie is bezig</target> <target state="translated">Indexatie is bezig</target>
<jms:reference-file line="385">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="386">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="f2dbeebb5642463cc9d946ac5fef8b54e3ef9c8d" resname="prod::editing:remplace: chaine remplacante" approved="yes"> <trans-unit id="f2dbeebb5642463cc9d946ac5fef8b54e3ef9c8d" resname="prod::editing:remplace: chaine remplacante" approved="yes">
<source>prod::editing:remplace: chaine remplacante</source> <source>prod::editing:remplace: chaine remplacante</source>
<target state="translated">Vervangende string</target> <target state="translated">Vervangende string</target>
<jms:reference-file line="305">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="306">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="2d8fd9918eb060abef1aff6634ede1135c2f898a" resname="prod::editing:remplace: options de remplacement" approved="yes"> <trans-unit id="2d8fd9918eb060abef1aff6634ede1135c2f898a" resname="prod::editing:remplace: options de remplacement" approved="yes">
<source>prod::editing:remplace: options de remplacement</source> <source>prod::editing:remplace: options de remplacement</source>
<target state="translated">Vervanging opties</target> <target state="translated">Vervanging opties</target>
<jms:reference-file line="311">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="312">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="9b33f1b01e6908366fc4b3f960d1869ccf1ea6a2" resname="prod::editing:remplace::option : utiliser une expression reguliere" approved="yes"> <trans-unit id="9b33f1b01e6908366fc4b3f960d1869ccf1ea6a2" resname="prod::editing:remplace::option : utiliser une expression reguliere" approved="yes">
<source>prod::editing:remplace::option : utiliser une expression reguliere</source> <source>prod::editing:remplace::option : utiliser une expression reguliere</source>
<target state="translated">Een reguliere expressie gebruiken</target> <target state="translated">Een reguliere expressie gebruiken</target>
<jms:reference-file line="314">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="315">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="5649e43cc87b1330e3a5ad75b54c6096561e00cd" resname="prod::editing:remplace::option la valeur du cahmp doit etre exacte" approved="yes"> <trans-unit id="5649e43cc87b1330e3a5ad75b54c6096561e00cd" resname="prod::editing:remplace::option la valeur du cahmp doit etre exacte" approved="yes">
<source>prod::editing:remplace::option la valeur du cahmp doit etre exacte</source> <source>prod::editing:remplace::option la valeur du cahmp doit etre exacte</source>
<target state="translated">De waarde van het veld moet exact zijn</target> <target state="translated">De waarde van het veld moet exact zijn</target>
<jms:reference-file line="337">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="338">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="cb4a27dc95b4aaf582361724327b0937991b6884" resname="prod::editing:remplace::option la valeur est comprise dans le champ" approved="yes"> <trans-unit id="cb4a27dc95b4aaf582361724327b0937991b6884" resname="prod::editing:remplace::option la valeur est comprise dans le champ" approved="yes">
<source>prod::editing:remplace::option la valeur est comprise dans le champ</source> <source>prod::editing:remplace::option la valeur est comprise dans le champ</source>
<target state="translated">De waarde is in het veld opgenomen</target> <target state="translated">De waarde is in het veld opgenomen</target>
<jms:reference-file line="340">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="341">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="5f18e2b78a5091db78a4adbd14e912959070ebd5" resname="prod::editing:remplace::option respecter la casse" approved="yes"> <trans-unit id="5f18e2b78a5091db78a4adbd14e912959070ebd5" resname="prod::editing:remplace::option respecter la casse" approved="yes">
<source>prod::editing:remplace::option respecter la casse</source> <source>prod::editing:remplace::option respecter la casse</source>
<target state="translated">Respecteer de hoofdlettergevoeligheid</target> <target state="translated">Respecteer de hoofdlettergevoeligheid</target>
<jms:reference-file line="343">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="344">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="27a3b22c9b8b1abb910147d1d3a556d038f0ab50" resname="prod::editing:remplace::option: remplacer toutes les occurences" approved="yes"> <trans-unit id="27a3b22c9b8b1abb910147d1d3a556d038f0ab50" resname="prod::editing:remplace::option: remplacer toutes les occurences" approved="yes">
<source>prod::editing:remplace::option: remplacer toutes les occurences</source> <source>prod::editing:remplace::option: remplacer toutes les occurences</source>
<target state="translated">Alle zoektekst vervangen</target> <target state="translated">Alle zoektekst vervangen</target>
<jms:reference-file line="330">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="331">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="a77e26d6710709aca37c36887252c53bc238ec43" resname="prod::editing:remplace::option: rester insensible a la casse" approved="yes"> <trans-unit id="a77e26d6710709aca37c36887252c53bc238ec43" resname="prod::editing:remplace::option: rester insensible a la casse" approved="yes">
<source>prod::editing:remplace::option: rester insensible a la casse</source> <source>prod::editing:remplace::option: rester insensible a la casse</source>
<target state="translated">Hoofdletterongevoelig blijven</target> <target state="translated">Hoofdletterongevoelig blijven</target>
<jms:reference-file line="333">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="334">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="dd5e4eca9dfa743d305cd038b0c53b0470c71c61" resname="prod::editing:replace: chaine a rechercher" approved="yes"> <trans-unit id="dd5e4eca9dfa743d305cd038b0c53b0470c71c61" resname="prod::editing:replace: chaine a rechercher" approved="yes">
<source>prod::editing:replace: chaine a rechercher</source> <source>prod::editing:replace: chaine a rechercher</source>
<target state="translated">String zoeken</target> <target state="translated">String zoeken</target>
<jms:reference-file line="299">prod/actions/edit_default.html.twig</jms:reference-file> <jms:reference-file line="300">prod/actions/edit_default.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="021da4e7ad79ba6ef0855ecca3539db02b2d12f9" resname="prod::export: send mail notification"> <trans-unit id="021da4e7ad79ba6ef0855ecca3539db02b2d12f9" resname="prod::export: send mail notification">
<source>prod::export: send mail notification</source> <source>prod::export: send mail notification</source>
@@ -12247,7 +12227,7 @@
<trans-unit id="aaf12963abad8750feb02524d4727cd3dec4a078" resname="prod::thesaurusTab:dlg:%number% record(s) updated"> <trans-unit id="aaf12963abad8750feb02524d4727cd3dec4a078" resname="prod::thesaurusTab:dlg:%number% record(s) updated">
<source>prod::thesaurusTab:dlg:%number% record(s) updated</source> <source>prod::thesaurusTab:dlg:%number% record(s) updated</source>
<target state="new">prod::thesaurusTab:dlg:%number% record(s) updated</target> <target state="new">prod::thesaurusTab:dlg:%number% record(s) updated</target>
<jms:reference-file line="1418">Controller/Thesaurus/ThesaurusXmlHttpController.php</jms:reference-file> <jms:reference-file line="1425">Controller/Thesaurus/ThesaurusXmlHttpController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="36ff5f310aa6baf4877a51fdd9ee0e611e1700e2" resname="prod::thesaurusTab:dlg:Acceptation en cours." approved="yes"> <trans-unit id="36ff5f310aa6baf4877a51fdd9ee0e611e1700e2" resname="prod::thesaurusTab:dlg:Acceptation en cours." approved="yes">
<source>prod::thesaurusTab:dlg:Acceptation en cours.</source> <source>prod::thesaurusTab:dlg:Acceptation en cours.</source>
@@ -12302,7 +12282,7 @@
<trans-unit id="735bd738f9e75e066751d9444eedf6e1f27a1f58" resname="prod::thesaurusTab:dlg:too many (%number%) records to update (limit=%maximum%)"> <trans-unit id="735bd738f9e75e066751d9444eedf6e1f27a1f58" resname="prod::thesaurusTab:dlg:too many (%number%) records to update (limit=%maximum%)">
<source>prod::thesaurusTab:dlg:too many (%number%) records to update (limit=%maximum%)</source> <source>prod::thesaurusTab:dlg:too many (%number%) records to update (limit=%maximum%)</source>
<target state="new">prod::thesaurusTab:dlg:too many (%number%) records to update (limit=%maximum%)</target> <target state="new">prod::thesaurusTab:dlg:too many (%number%) records to update (limit=%maximum%)</target>
<jms:reference-file line="1421">Controller/Thesaurus/ThesaurusXmlHttpController.php</jms:reference-file> <jms:reference-file line="1428">Controller/Thesaurus/ThesaurusXmlHttpController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1f6ab998dc34b364aa453a71a312e13df837849c" resname="prod::thesaurusTab:thesaurus" approved="yes"> <trans-unit id="1f6ab998dc34b364aa453a71a312e13df837849c" resname="prod::thesaurusTab:thesaurus" approved="yes">
<source>prod::thesaurusTab:thesaurus</source> <source>prod::thesaurusTab:thesaurus</source>
@@ -12363,7 +12343,7 @@
<source>prod::tools: document</source> <source>prod::tools: document</source>
<target state="new">prod::tools: document</target> <target state="new">prod::tools: document</target>
<jms:reference-file line="41">Controller/Prod/ShareController.php</jms:reference-file> <jms:reference-file line="41">Controller/Prod/ShareController.php</jms:reference-file>
<jms:reference-file line="72">Controller/Prod/ToolsController.php</jms:reference-file> <jms:reference-file line="74">Controller/Prod/ToolsController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="e36d93428a247d085ffbb974db21290395643463" resname="prod::videoTools:chapterTitle"> <trans-unit id="e36d93428a247d085ffbb974db21290395643463" resname="prod::videoTools:chapterTitle">
<source>prod::videoTools:chapterTitle</source> <source>prod::videoTools:chapterTitle</source>
@@ -12416,6 +12396,278 @@
<target state="new">prod:edit: video-editor</target> <target state="new">prod:edit: video-editor</target>
<jms:reference-file line="116">Controller/Prod/LanguageController.php</jms:reference-file> <jms:reference-file line="116">Controller/Prod/LanguageController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="005732e7c099d2d88bd81fd2cad73961e6889c85" resname="prod:expose:Add publication">
<source>prod:expose:Add publication</source>
<target state="new">prod:expose:Add publication</target>
<jms:reference-file line="484">prod/WorkZone/Macros.html.twig</jms:reference-file>
<jms:reference-file line="485">prod/WorkZone/Macros.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="9f37a39537149886c8fd492dfdbdc596f01e09fd" resname="prod:expose:Refresh">
<source>prod:expose:Refresh</source>
<target state="new">prod:expose:Refresh</target>
<jms:reference-file line="487">prod/WorkZone/Macros.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="37a8c50528409fa7c358d659ea11c3eb3252760b" resname="prod:expose:connection:Auth connexion">
<source>prod:expose:connection:Auth connexion</source>
<target state="new">prod:expose:connection:Auth connexion</target>
<jms:reference-file line="2">prod/WorkZone/ExposeOauthLogin.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="94ed9c45e3cbaef64547b6fddc9b244b9c0955df" resname="prod:expose:connection:Password">
<source>prod:expose:connection:Password</source>
<target state="new">prod:expose:connection:Password</target>
<jms:reference-file line="11">prod/WorkZone/ExposeOauthLogin.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="1417edde7a5adc20001a2352757bb87ff607b1c5" resname="prod:expose:connection:Sign in">
<source>prod:expose:connection:Sign in</source>
<target state="new">prod:expose:connection:Sign in</target>
<jms:reference-file line="15">prod/WorkZone/ExposeOauthLogin.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="1a923a2bcaea92b6d38dfae378552c932df0a592" resname="prod:expose:connection:Username">
<source>prod:expose:connection:Username</source>
<target state="new">prod:expose:connection:Username</target>
<jms:reference-file line="7">prod/WorkZone/ExposeOauthLogin.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="324e7cea705016a31d01d0bde3ee526a92ea881c" resname="prod:expose:publication:Access rules">
<source>prod:expose:publication:Access rules</source>
<target state="new">prod:expose:publication:Access rules</target>
<jms:reference-file line="97">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="62">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="af3ad24004cd69b0254f1c8c2e5089d35b3844da" resname="prod:expose:publication:Advanced setting">
<source>prod:expose:publication:Advanced setting</source>
<target state="new">prod:expose:publication:Advanced setting</target>
<jms:reference-file line="139">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="104">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="551db59cb8c5b618adffe5719f791fc5c07a63cd" resname="prod:expose:publication:Available (leave blank for permanet publication)">
<source>prod:expose:publication:Available (leave blank for permanet publication)</source>
<target state="new">prod:expose:publication:Available (leave blank for permanet publication)</target>
<jms:reference-file line="77">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="44">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="03fa83cecf49d9c7a3813b4a019c6d2d2ff50c30" resname="prod:expose:publication:Cancel">
<source>prod:expose:publication:Cancel</source>
<target state="new">prod:expose:publication:Cancel</target>
<jms:reference-file line="154">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="119">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="fdeebeeec3860ccbd6f36b4aeaf7cb77ce7312b1" resname="prod:expose:publication:Create publication">
<source>prod:expose:publication:Create publication</source>
<target state="new">prod:expose:publication:Create publication</target>
<jms:reference-file line="122">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="829875af60c25eadba563170b4f9e5f8db2ba688" resname="prod:expose:publication:Dark">
<source>prod:expose:publication:Dark</source>
<target state="new">prod:expose:publication:Dark</target>
<jms:reference-file line="131">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="96">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="8e6332dde288968d262020d7f1d0679a0a8bcb8d" resname="prod:expose:publication:Delete">
<source>prod:expose:publication:Delete</source>
<target state="new">prod:expose:publication:Delete</target>
<jms:reference-file line="7">prod/WorkZone/ExposePublicationAssets.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="ee5cd9a1dd713bd55ca3b3919466e4ac9b297c77" resname="prod:expose:publication:Download">
<source>prod:expose:publication:Download</source>
<target state="new">prod:expose:publication:Download</target>
<jms:reference-file line="122">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="87">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="3ca4394264a3c86daf2d088f072dca679d82bb6a" resname="prod:expose:publication:Editing">
<source>prod:expose:publication:Editing</source>
<target state="new">prod:expose:publication:Editing</target>
<jms:reference-file line="15">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="27a3d37e05caa995cb1a7b58c36fe1936b00f866" resname="prod:expose:publication:Enabled">
<source>prod:expose:publication:Enabled</source>
<target state="new">prod:expose:publication:Enabled</target>
<jms:reference-file line="68">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="37">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="1964c90b5229b7aed8e0e4cead60cd6f0cd49b76" resname="prod:expose:publication:From">
<source>prod:expose:publication:From</source>
<target state="new">prod:expose:publication:From</target>
<jms:reference-file line="79">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="46">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="22b12bdabd78e4c9dfcd2a3c202a7ed02af28746" resname="prod:expose:publication:Gallery">
<source>prod:expose:publication:Gallery</source>
<target state="new">prod:expose:publication:Gallery</target>
<jms:reference-file line="120">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="85">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="879311e23dbb4491b0144ce49a6d66e83bd660e7" resname="prod:expose:publication:Layout">
<source>prod:expose:publication:Layout</source>
<target state="new">prod:expose:publication:Layout</target>
<jms:reference-file line="116">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="81">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="123400d6203202f86844b765e6f85509f6ebb1f6" resname="prod:expose:publication:Light">
<source>prod:expose:publication:Light</source>
<target state="new">prod:expose:publication:Light</target>
<jms:reference-file line="130">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="95">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="0a35952e92e77bf6a762055c17aab923e4dc3a46" resname="prod:expose:publication:Mapbox">
<source>prod:expose:publication:Mapbox</source>
<target state="new">prod:expose:publication:Mapbox</target>
<jms:reference-file line="121">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="86">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="85dffecce40b9a951d2e11cb518280dcce7ee31a" resname="prod:expose:publication:Name">
<source>prod:expose:publication:Name</source>
<target state="new">prod:expose:publication:Name</target>
<jms:reference-file line="31">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="11">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="ca3d77bf1e62e1cf39bf5b8a3a161ab17b28f375" resname="prod:expose:publication:Open access">
<source>prod:expose:publication:Open access</source>
<target state="new">prod:expose:publication:Open access</target>
<jms:reference-file line="101">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="66">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="a2a8888f67982de346cedbe03b5884757de77925" resname="prod:expose:publication:Parent Publication">
<source>prod:expose:publication:Parent Publication</source>
<target state="new">prod:expose:publication:Parent Publication</target>
<jms:reference-file line="41">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="21">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
<jms:reference-file line="10">prod/WorkZone/ExposePublicationAssets.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="d190364e0bc239d60124d5a906249199fcedbcf7" resname="prod:expose:publication:Password">
<source>prod:expose:publication:Password</source>
<target state="new">prod:expose:publication:Password</target>
<jms:reference-file line="102">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="67">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="37fc20596092e78e7c9f232b1d5a1792c3338286" resname="prod:expose:publication:Permission">
<source>prod:expose:publication:Permission</source>
<target state="new">prod:expose:publication:Permission</target>
<jms:reference-file line="20">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="172">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="6e4586d5715234b05a5637d7232d42289efd54e3" resname="prod:expose:publication:Profile">
<source>prod:expose:publication:Profile</source>
<target state="new">prod:expose:publication:Profile</target>
<jms:reference-file line="56">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="30">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="055d4b2c4be0a43224479c371b7e0c4da2719756" resname="prod:expose:publication:Publicly listing">
<source>prod:expose:publication:Publicly listing</source>
<target state="new">prod:expose:publication:Publicly listing</target>
<jms:reference-file line="88">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="55">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="2a1795f494a3d378d7e089f44aaba611d2840f96" resname="prod:expose:publication:Refresh Publication">
<source>prod:expose:publication:Refresh Publication</source>
<target state="new">prod:expose:publication:Refresh Publication</target>
<jms:reference-file line="3">prod/WorkZone/ExposePublicationAssets.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f0ee6ea23eac8f7db8e39a77d3027629342b0e10" resname="prod:expose:publication:Select Layout">
<source>prod:expose:publication:Select Layout</source>
<target state="new">prod:expose:publication:Select Layout</target>
<jms:reference-file line="119">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="84">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="14a842c2a43ef10eec62cc59c8e3c151ca99c660" resname="prod:expose:publication:Select Profile">
<source>prod:expose:publication:Select Profile</source>
<target state="new">prod:expose:publication:Select Profile</target>
<jms:reference-file line="61">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="33">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="a55b57125f0703c7fe2393a15ee3ae4e9882763e" resname="prod:expose:publication:Select Theme">
<source>prod:expose:publication:Select Theme</source>
<target state="new">prod:expose:publication:Select Theme</target>
<jms:reference-file line="129">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="94">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="89bd08c42543705b2b8ec5046cf43e26cc7a85b1" resname="prod:expose:publication:Select a parent publication">
<source>prod:expose:publication:Select a parent publication</source>
<target state="new">prod:expose:publication:Select a parent publication</target>
<jms:reference-file line="48">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="25">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="77e197ee00b2da0b378e08f9717e9029907dde6d" resname="prod:expose:publication:Slug">
<source>prod:expose:publication:Slug</source>
<target state="new">prod:expose:publication:Slug</target>
<jms:reference-file line="35">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="15">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="09e31f070644dc5cdce690efdd861868fbe36c8a" resname="prod:expose:publication:Theme">
<source>prod:expose:publication:Theme</source>
<target state="new">prod:expose:publication:Theme</target>
<jms:reference-file line="126">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="91">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="26b15d28f92ef84be6ca70cbe4b3cf12cb418ac0" resname="prod:expose:publication:To">
<source>prod:expose:publication:To</source>
<target state="new">prod:expose:publication:To</target>
<jms:reference-file line="83">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="50">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="7665e294abb20f03a6664346b679992539de9e77" resname="prod:expose:publication:Update Publication">
<source>prod:expose:publication:Update Publication</source>
<target state="new">prod:expose:publication:Update Publication</target>
<jms:reference-file line="157">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="b74f6e47a7bbe1f0b8d486f5f87344e29e15599f" resname="prod:expose:publication:Users">
<source>prod:expose:publication:Users</source>
<target state="new">prod:expose:publication:Users</target>
<jms:reference-file line="103">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="68">prod/WorkZone/ExposeNew.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="9664183fc801100081920a8c1dc3cd7e48d7e304" resname="prod:expose:publication:permission:Group Name">
<source>prod:expose:publication:permission:Group Name</source>
<target state="new">prod:expose:publication:permission:Group Name</target>
<jms:reference-file line="2">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f79c912b02c8e1ff29d30eff397e286e9e4187f7" resname="prod:expose:publication:permission:User Name">
<source>prod:expose:publication:permission:User Name</source>
<target state="new">prod:expose:publication:permission:User Name</target>
<jms:reference-file line="59">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="03cf46374a19f99e46f79eb7a7d58b996c4411bb" resname="prod:expose:publication:permission:list:Delete">
<source>prod:expose:publication:permission:list:Delete</source>
<target state="new">prod:expose:publication:permission:list:Delete</target>
<jms:reference-file line="24">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
<jms:reference-file line="81">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f50ce78ba045b720d82f8abd2977529258dbd508" resname="prod:expose:publication:permission:list:Edit">
<source>prod:expose:publication:permission:list:Edit</source>
<target state="new">prod:expose:publication:permission:list:Edit</target>
<jms:reference-file line="21">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
<jms:reference-file line="78">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="9e90d5e52babd373d6190296c8e2b474a2c5c8bf" resname="prod:expose:publication:permission:list:Group">
<source>prod:expose:publication:permission:list:Group</source>
<target state="new">prod:expose:publication:permission:list:Group</target>
<jms:reference-file line="15">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="ff194a1339b1676517802c3877619000be921bb5" resname="prod:expose:publication:permission:list:Remove Group">
<source>prod:expose:publication:permission:list:Remove Group</source>
<target state="new">prod:expose:publication:permission:list:Remove Group</target>
<jms:reference-file line="104">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="debf785d635c1ed519e0eddce2a28e89ef3cf0ef" resname="prod:expose:publication:permission:list:Remove User">
<source>prod:expose:publication:permission:list:Remove User</source>
<target state="new">prod:expose:publication:permission:list:Remove User</target>
<jms:reference-file line="47">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="c5d834a3c4b5c49acf6a973d759fe6c7319331bf" resname="prod:expose:publication:permission:list:User">
<source>prod:expose:publication:permission:list:User</source>
<target state="new">prod:expose:publication:permission:list:User</target>
<jms:reference-file line="72">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="42ff6e6031a42375b44ede6daa880b539b706b1c" resname="prod:expose:publication:permission:list:View">
<source>prod:expose:publication:permission:list:View</source>
<target state="new">prod:expose:publication:permission:list:View</target>
<jms:reference-file line="18">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
<jms:reference-file line="75">prod/WorkZone/ExposePermission.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="d92238599ea91a94089177e8ecf239302fae86fe" resname="prod:expose:select expose">
<source>prod:expose:select expose</source>
<target state="new">prod:expose:select expose</target>
<jms:reference-file line="474">prod/WorkZone/Macros.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="1e6f012d49cfe36080713edf24ad202a1d4de16d" resname="prod:mapbox Change position"> <trans-unit id="1e6f012d49cfe36080713edf24ad202a1d4de16d" resname="prod:mapbox Change position">
<source>prod:mapbox Change position</source> <source>prod:mapbox Change position</source>
<target state="new">prod:mapbox Change position</target> <target state="new">prod:mapbox Change position</target>
@@ -12827,7 +13079,7 @@
<trans-unit id="e32952b1a087c6ba28e13097e0ebb5395c2f2105" resname="reponses::document sans titre" approved="yes"> <trans-unit id="e32952b1a087c6ba28e13097e0ebb5395c2f2105" resname="reponses::document sans titre" approved="yes">
<source>reponses::document sans titre</source> <source>reponses::document sans titre</source>
<target state="translated">Documenten zonder titel</target> <target state="translated">Documenten zonder titel</target>
<jms:reference-file line="942">classes/record/adapter.php</jms:reference-file> <jms:reference-file line="949">classes/record/adapter.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3efac4485920b8a4db663f9d5295e6fabd4e4a99" resname="report:: (connexions)"> <trans-unit id="3efac4485920b8a4db663f9d5295e6fabd4e4a99" resname="report:: (connexions)">
<source>report:: (connexions)</source> <source>report:: (connexions)</source>
@@ -13546,12 +13798,12 @@
<trans-unit id="5e97a32a49cefaf5c4eb26080caf50d7ac7ea102" resname="task::archive:Archivage" approved="yes"> <trans-unit id="5e97a32a49cefaf5c4eb26080caf50d7ac7ea102" resname="task::archive:Archivage" approved="yes">
<source>task::archive:Archivage</source> <source>task::archive:Archivage</source>
<target state="translated">Archivering</target> <target state="translated">Archivering</target>
<jms:reference-file line="42">TaskManager/Job/ArchiveJob.php</jms:reference-file> <jms:reference-file line="44">TaskManager/Job/ArchiveJob.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="b94199880758a342c5de52be020699d9b789a7a2" resname="task::archive:Archiving files found into a 'hotfolder'" approved="yes"> <trans-unit id="b94199880758a342c5de52be020699d9b789a7a2" resname="task::archive:Archiving files found into a 'hotfolder'" approved="yes">
<source>task::archive:Archiving files found into a 'hotfolder'</source> <source>task::archive:Archiving files found into a 'hotfolder'</source>
<target state="translated">Archivering files gevonden in een 'hotfolder'</target> <target state="translated">Archivering files gevonden in een 'hotfolder'</target>
<jms:reference-file line="58">TaskManager/Job/ArchiveJob.php</jms:reference-file> <jms:reference-file line="60">TaskManager/Job/ArchiveJob.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="af67e20e5e01d46ece2e0eb262b1b0bb9df679d4" resname="task::archive:archivage sur base/collection/" approved="yes"> <trans-unit id="af67e20e5e01d46ece2e0eb262b1b0bb9df679d4" resname="task::archive:archivage sur base/collection/" approved="yes">
<source>task::archive:archivage sur base/collection/</source> <source>task::archive:archivage sur base/collection/</source>
@@ -14404,127 +14656,127 @@
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april"> <trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april">
<source>workzone:datepicker:april</source> <source>workzone:datepicker:april</source>
<target state="new">workzone:datepicker:april</target> <target state="new">workzone:datepicker:april</target>
<jms:reference-file line="167">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="205">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august"> <trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august">
<source>workzone:datepicker:august</source> <source>workzone:datepicker:august</source>
<target state="new">workzone:datepicker:august</target> <target state="new">workzone:datepicker:august</target>
<jms:reference-file line="168">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="206">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december"> <trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december">
<source>workzone:datepicker:december</source> <source>workzone:datepicker:december</source>
<target state="new">workzone:datepicker:december</target> <target state="new">workzone:datepicker:december</target>
<jms:reference-file line="168">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="206">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february"> <trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february">
<source>workzone:datepicker:february</source> <source>workzone:datepicker:february</source>
<target state="new">workzone:datepicker:february</target> <target state="new">workzone:datepicker:february</target>
<jms:reference-file line="167">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="205">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday"> <trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday">
<source>workzone:datepicker:friday</source> <source>workzone:datepicker:friday</source>
<target state="new">workzone:datepicker:friday</target> <target state="new">workzone:datepicker:friday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january"> <trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january">
<source>workzone:datepicker:january</source> <source>workzone:datepicker:january</source>
<target state="new">workzone:datepicker:january</target> <target state="new">workzone:datepicker:january</target>
<jms:reference-file line="167">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="205">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july"> <trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july">
<source>workzone:datepicker:july</source> <source>workzone:datepicker:july</source>
<target state="new">workzone:datepicker:july</target> <target state="new">workzone:datepicker:july</target>
<jms:reference-file line="168">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="206">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june"> <trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june">
<source>workzone:datepicker:june</source> <source>workzone:datepicker:june</source>
<target state="new">workzone:datepicker:june</target> <target state="new">workzone:datepicker:june</target>
<jms:reference-file line="167">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="205">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march"> <trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march">
<source>workzone:datepicker:march</source> <source>workzone:datepicker:march</source>
<target state="new">workzone:datepicker:march</target> <target state="new">workzone:datepicker:march</target>
<jms:reference-file line="167">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="205">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may"> <trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may">
<source>workzone:datepicker:may</source> <source>workzone:datepicker:may</source>
<target state="new">workzone:datepicker:may</target> <target state="new">workzone:datepicker:may</target>
<jms:reference-file line="167">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="205">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday"> <trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday">
<source>workzone:datepicker:monday</source> <source>workzone:datepicker:monday</source>
<target state="new">workzone:datepicker:monday</target> <target state="new">workzone:datepicker:monday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText"> <trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
<source>workzone:datepicker:nextText</source> <source>workzone:datepicker:nextText</source>
<target state="new">workzone:datepicker:nextText</target> <target state="new">workzone:datepicker:nextText</target>
<jms:reference-file line="165">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="203">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="165">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="165">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november"> <trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november">
<source>workzone:datepicker:november</source> <source>workzone:datepicker:november</source>
<target state="new">workzone:datepicker:november</target> <target state="new">workzone:datepicker:november</target>
<jms:reference-file line="168">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="206">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october"> <trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october">
<source>workzone:datepicker:october</source> <source>workzone:datepicker:october</source>
<target state="new">workzone:datepicker:october</target> <target state="new">workzone:datepicker:october</target>
<jms:reference-file line="168">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="206">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText"> <trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
<source>workzone:datepicker:prevText</source> <source>workzone:datepicker:prevText</source>
<target state="new">workzone:datepicker:prevText</target> <target state="new">workzone:datepicker:prevText</target>
<jms:reference-file line="164">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="202">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="164">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="164">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday"> <trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday">
<source>workzone:datepicker:saturday</source> <source>workzone:datepicker:saturday</source>
<target state="new">workzone:datepicker:saturday</target> <target state="new">workzone:datepicker:saturday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september"> <trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september">
<source>workzone:datepicker:september</source> <source>workzone:datepicker:september</source>
<target state="new">workzone:datepicker:september</target> <target state="new">workzone:datepicker:september</target>
<jms:reference-file line="168">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="206">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday"> <trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday">
<source>workzone:datepicker:sunday</source> <source>workzone:datepicker:sunday</source>
<target state="new">workzone:datepicker:sunday</target> <target state="new">workzone:datepicker:sunday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday"> <trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday">
<source>workzone:datepicker:thursday</source> <source>workzone:datepicker:thursday</source>
<target state="new">workzone:datepicker:thursday</target> <target state="new">workzone:datepicker:thursday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday"> <trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday">
<source>workzone:datepicker:tuesday</source> <source>workzone:datepicker:tuesday</source>
<target state="new">workzone:datepicker:tuesday</target> <target state="new">workzone:datepicker:tuesday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday"> <trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday">
<source>workzone:datepicker:wednesday</source> <source>workzone:datepicker:wednesday</source>
<target state="new">workzone:datepicker:wednesday</target> <target state="new">workzone:datepicker:wednesday</target>
<jms:reference-file line="169">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file> <jms:reference-file line="207">prod/WorkZone/ExposeEdit.html.twig</jms:reference-file>
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file> <jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed"> <trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed">

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-11-30T11:48:30Z" source-language="en" target-language="de" datatype="plaintext" original="not.available"> <file date="2020-12-16T08:29:44Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-11-30T11:49:15Z" source-language="en" target-language="en" datatype="plaintext" original="not.available"> <file date="2020-12-16T08:30:32Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-11-30T11:50:02Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available"> <file date="2020-12-16T08:31:21Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-11-30T11:50:52Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available"> <file date="2020-12-16T08:32:13Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -84,7 +84,7 @@
<div class="control-group text-center"> <div class="control-group text-center">
<div><input id="add-new-expose" type="button" class="btn btn-primary " data-list="#expose-list" <div><input id="add-new-expose" type="button" class="btn btn-primary " data-list="#expose-list"
value="admin:phrasea-service-setting:tab:expose:: Add a new expose interconnection"> value="admin:phrasea-service-setting:tab:expose:: New expose interconnection name">
</div> </div>
<div> <div>
<input type="submit" class="btn btn-primary btn-green save-expose" <input type="submit" class="btn btn-primary btn-green save-expose"

View File

@@ -1,30 +1,51 @@
{% block css %}
<style type="text/css">
#permission-editing td, #permission-editing th {
min-width: 150px;
text-align: center;
height: 50px;
}
</style>
{% endblock %}
<div id="publication-tabs" class=" PNB10 expose-edit-wrapper" >
<ul>
<li>
<a href="#publication-editing">
{{ 'prod:expose:publication:Editing' | trans }}
</a>
</li>
<li>
<a href="#permission-editing">
{{ 'prod:expose:publication:Permission' | trans }}
</a>
</li>
</ul>
<div id="publication-editing">
<div class="expose-edit-wrapper"> <div class="expose-edit-wrapper">
<div class="expose-edit-wrapper" style="margin-top: 100px">
<br/>
<br/>
<br/>
<br/> <br/>
<form id="publication-data-form" > <form id="publication-data-form" >
<div class="edit-publication-block"> <div class="edit-publication-block">
<div class="ui-widget"> <div class="ui-widget">
<label>Name </label> <label>{{ 'prod:expose:publication:Name' | trans }}</label>
<input type="text" value="{{ publication.title }}" name="title" class="publication-field"/> <input type="text" value="{{ publication.title }}" name="title" class="publication-field"/>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Slug: </label> <label>{{ 'prod:expose:publication:Slug' | trans }}</label>
<input type="text" value="{{ publication.slug }}" name="slug" class=" slug publication-field"/><input type="button" <input type="text" value="{{ publication.slug }}" name="slug" class=" slug publication-field"/><input type="button"
class="blue_button" class="blue_button"
value="check slug availability"> value="check slug availability">
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Parent publication </label> <label>{{ 'prod:expose:publication:Parent Publication' | trans }}</label>
<div id="publication-list-data" class="ui-widget publication_parent_wrapper "> <div id="publication-list-data" class="ui-widget publication_parent_wrapper ">
{% if publication.parent.id %} {% if publication.parent.id %}
{% set parentId = publication.parent.id %} {% set parentId = publication.parent.id %}
{% endif %} {% endif %}
<select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true" <select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select a parent publication</option> <option value="">{{ 'prod:expose:publication:Select a parent publication' | trans }}</option>
{% if publication.parent %} {% if publication.parent %}
<option value="{{ publication.parent.id }}" selected="selected">{{ publication.parent.title }}</option> <option value="{{ publication.parent.id }}" selected="selected">{{ publication.parent.title }}</option>
{% endif %} {% endif %}
@@ -32,19 +53,19 @@
</div> </div>
</div> </div>
<div class="ui-widget profile-wrapper hide"> <div class="ui-widget profile-wrapper hide">
<label>Profile </label> <label>{{ 'prod:expose:publication:Profile' | trans }}</label>
{% set nbProfile = publication.profile|length %} {% set nbProfile = publication.profile|length %}
<select id="profile-field" name="profile" tabindex="-1" aria-hidden="true" <select id="profile-field" name="profile" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select Profile</option> <option value="">{{ 'prod:expose:publication:Select Profile' | trans }}</option>
{% if nbProfile %} {% if nbProfile %}
<option value="{{ publication.profile.id }}">{{ publication.profile.name }}</option> <option value="{{ publication.profile.id }}">{{ publication.profile.name }}</option>
{% endif %} {% endif %}
</select> </select>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Enabled </label> <label>{{ 'prod:expose:publication:Enabled' | trans }} </label>
<label class="switch"> <label class="switch">
<input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled" <input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled"
{% if publication.enabled == 1 %} checked {% endif %} {% if publication.enabled == 1 %} checked {% endif %}
@@ -53,18 +74,18 @@
</label> </label>
</div> </div>
<div class="ui-widget available-wrapper"> <div class="ui-widget available-wrapper">
<label>Available (leave blank for permanent publication): </label> <label>{{ 'prod:expose:publication:Available (leave blank for permanet publication)' | trans }}</label>
<div class="available-widget"> <div class="available-widget">
<label>From </label> <label>{{ 'prod:expose:publication:From' | trans }}</label>
<input type="text" value="{{ publication.config.beginsAt }}" name="beginsAt" class="use-datepicker publication-field"/> <input type="text" value="{{ publication.config.beginsAt }}" name="beginsAt" class="use-datepicker publication-field"/>
</div> </div>
<div class="available-widget"> <div class="available-widget">
<label>To </label> <label>{{ 'prod:expose:publication:To' | trans }} </label>
<input type="text" value="{{ publication.config.expiresAt }}" name="expiresAt" class="use-datepicker publication-field"/> <input type="text" value="{{ publication.config.expiresAt }}" name="expiresAt" class="use-datepicker publication-field"/>
</div> </div>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Publicity listing </label> <label>{{ 'prod:expose:publication:Publicly listing' | trans }}</label>
<label class="switch"> <label class="switch">
<input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed" <input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed"
{% if publication.publiclyListed == 1 %} checked {% endif %} {% if publication.publiclyListed == 1 %} checked {% endif %}
@@ -73,13 +94,13 @@
</label> </label>
</div> </div>
<div class="ui-widget access-wrapper available-wrapper"> <div class="ui-widget access-wrapper available-wrapper">
<label>Access rules </label> <label>{{ 'prod:expose:publication:Access rules' | trans }}</label>
<div class="available-widget"> <div class="available-widget">
<select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true" <select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">open access</option> <option value="">{{ 'prod:expose:publication:Open access' | trans }}</option>
<option value="password" {% if publication.securityMethod == 'password'%} selected="selected" {% endif %}>password</option> <option value="password" {% if publication.securityMethod == 'password'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Password' | trans }}</option>
<option value="authentication" {% if publication.securityMethod == 'authentication'%} selected="selected" {% endif %}>users</option> <option value="authentication" {% if publication.securityMethod == 'authentication'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Users' | trans }}</option>
</select> </select>
</div> </div>
<div class="available-widget ui-widget securityOptions_wrapper visibility-hidden"> <div class="available-widget ui-widget securityOptions_wrapper visibility-hidden">
@@ -92,22 +113,22 @@
</div> </div>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Layout </label> <label>{{ 'prod:expose:publication:Layout' | trans }} </label>
<select id="publication_layout" name="layout" tabindex="-1" aria-hidden="true" <select id="publication_layout" name="layout" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select Layout</option> <option value="">{{ 'prod:expose:publication:Select Layout' | trans }}</option>
<option value="gallery" {% if publication.layout == 'gallery'%} selected="selected" {% endif %}>Gallery</option> <option value="gallery" {% if publication.layout == 'gallery'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Gallery' | trans }}</option>
<option value="mapbox" {% if publication.layout == 'mapbox'%} selected="selected" {% endif %}>Mapbox</option> <option value="mapbox" {% if publication.layout == 'mapbox'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Mapbox' | trans }}</option>
<option value="download" {% if publication.layout == 'download'%} selected="selected" {% endif %}>Download</option> <option value="download" {% if publication.layout == 'download'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Download' | trans }}</option>
</select> </select>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Theme </label> <label>{{ 'prod:expose:publication:Theme' | trans }} </label>
<select id="theme-field" name="theme" tabindex="-1" aria-hidden="true" <select id="theme-field" name="theme" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select Theme</option> <option value="">{{ 'prod:expose:publication:Select Theme' | trans }}</option>
<option value="light" {% if publication.theme == 'light'%} selected="selected" {% endif %}>Light</option> <option value="light" {% if publication.theme == 'light'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Light' | trans }}</option>
<option value="dark" {% if publication.theme == 'dark'%} selected="selected" {% endif %}>Dark</option> <option value="dark" {% if publication.theme == 'dark'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Dark' | trans }}</option>
</select> </select>
</div> </div>
</div> </div>
@@ -115,7 +136,7 @@
<form name="publication-json" id="publication-json" class="text-center"> <form name="publication-json" id="publication-json" class="text-center">
<div id="advancedSettingBlock"> <div id="advancedSettingBlock">
<h3 class="toggleSetting">Advanced setting</h3> <h4 class="toggleSetting">{{ 'prod:expose:publication:Advanced setting' | trans }}</h4>
<div id="advancedSettingInner" class="hidden"> <div id="advancedSettingInner" class="hidden">
<div> <div>
<textarea name="advancedSetting" id="advancedSetting" cols="100" <textarea name="advancedSetting" id="advancedSetting" cols="100"
@@ -130,10 +151,10 @@
<div class="ui-dialog-buttonset"> <div class="ui-dialog-buttonset">
<button type="button" <button type="button"
class="close-expose-modal ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" class="close-expose-modal ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
role="button" aria-disabled="false"><span class="ui-button-text">Cancel</span> role="button" aria-disabled="false"><span class="ui-button-text">{{ 'prod:expose:publication:Cancel'| trans }}</span>
</button> </button>
<button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="update-publication"> <button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="update-publication">
Update publication {{ 'prod:expose:publication:Update Publication'| trans }}
</button> </button>
</div> </div>
@@ -144,20 +165,37 @@
</div> </div>
</div>
<div id="permission-editing">
<div>
<h3 style="display:inline-block">{{ 'prod:expose:publication:Permission'| trans }}</h3>
<div style="float:right;margin:10px;">
<p id="permission-success" class="hidden alert alert-success text-center"></p>
<p id="permission-error" class="hidden alert alert-error text-center"></p>
</div>
</div> </div>
<script type="text/javascript"> <div id="permission-list" style="padding: 10px;">
{% include 'prod/WorkZone/ExposePermission.html.twig' %}
</div>
</div>
</div>
<script type="text/javascript">
var publicationEdit = $(document).find("#DIALOG-expose-edit"); var publicationEdit = $(document).find("#DIALOG-expose-edit");
var publicationForm = publicationEdit.find("#publication-data-form"); var publicationForm = publicationEdit.find("#publication-data-form");
var publicationParent = publicationEdit.find("#publication_parent"); var publicationParent = publicationEdit.find("#publication_parent");
var securityMethod = publicationEdit.find("#publication_securityMethod");
var profileField = publicationEdit.find("#profile-field"); var profileField = publicationEdit.find("#profile-field");
var userList = publicationEdit.find("#user-list");
var groupList = publicationEdit.find("#group-list");
var advancedSetting = publicationEdit.find("#advancedSetting"); var advancedSetting = publicationEdit.find("#advancedSetting");
var publicationFieldClass = publicationEdit.find(".publication-field"); var publicationFieldClass = publicationEdit.find(".publication-field");
var permissionList = publicationEdit.find("#permission-list");
$.datepicker.regional['default'] = { $.datepicker.regional['default'] = {
closeText: "Close", closeText: "Close",
@@ -172,13 +210,14 @@
altField: ".alternate", altField: ".alternate",
altFormat: "yy-mm-dd", altFormat: "yy-mm-dd",
minDate: 0 minDate: 0
}; };
$(".use-datepicker").datepicker($.datepicker.regional['default']); $(".use-datepicker").datepicker($.datepicker.regional['default']);
//generate publication list //generate publication list
$(document).ready(function () { $(document).ready(function () {
$( "#publication-tabs" ).tabs();
publicationEdit.find('.toggleSetting').on('click', function (e) { publicationEdit.find('.toggleSetting').on('click', function (e) {
$(this).toggleClass('open'); $(this).toggleClass('open');
$(this).next("div").toggleClass('hidden'); $(this).next("div").toggleClass('hidden');
@@ -207,7 +246,7 @@
url: `/prod/expose/list-profile?exposeName={{ exposeName }}`, url: `/prod/expose/list-profile?exposeName={{ exposeName }}`,
success: function (data) { success: function (data) {
profileField.empty().html('<option value="">Select Profile</option>'); profileField.empty().html('<option value="">Select Profile</option>');
for (i = 0; i < data.profiles.length; i++) { for (let i = 0; i < data.profiles.length; i++) {
let selected = ''; let selected = '';
if ({{ nbProfile }} && data.profiles[i].id === '{{ publication.profile.id }}') { if ({{ nbProfile }} && data.profiles[i].id === '{{ publication.profile.id }}') {
selected = 'selected="selected"'; selected = 'selected="selected"';
@@ -225,6 +264,294 @@
}); });
bindPermissionEvent();
publicationFieldClass.on('keyup change', function (e) {
if ($(this).attr('id') === 'publication_securityMethod') {
if ($(this).val() === 'password') {
$(".securityOptions_wrapper").removeClass('visibility-hidden');
} else {
publicationEdit.find("#publication_password").val('');
$(".securityOptions_wrapper").addClass('visibility-hidden');
}
}
try {
publicationEdit.find("#pub-success").addClass("hidden");
publicationEdit.find("#pub-error").addClass("hidden");
jQuery.parseJSON(JSON.stringify($(this).val()));
} catch (err) {
publicationEdit.find("#pub-error").removeClass("hidden").text(err.message);
}
removeSecurityField();
});
publicationEdit.find('#publication-json').on('submit', function (e) {
e.preventDefault();
try {
publicationEdit.find("#pub-error").addClass("hidden");
} catch (err) {
publicationEdit.find("#pub-error").removeClass("hidden").text(err.message);
return;
}
if (advancedSetting.val() !== '') {
$.ajax({
type: "PUT",
url: "/prod/expose/update-publication/{{ publication.id }}",
dataType: 'json',
data: {
exposeName: "{{ exposeName }}",
publicationData: advancedSetting.val()
},
success: function (data) {console.log(data.success);
if (data.success) {
publicationEdit.find("#pub-success").removeClass("hidden").html(data.message);
document.getElementById("publication-data-form").reset();
setTimeout(function(){
$('#DIALOG-expose-edit').dialog('close');
}
, 2000
);
} else {
publicationEdit.find("#pub-error").removeClass("hidden").text(data.message);
}
}
});
} else {
publicationEdit.find("#pub-error").removeClass("hidden").text("No changed!");
}
});
permissionList.on('change', '#input-user-list', function () {
let optionSelected = permissionList.find('#user-list option[value="'+this.value+'"]');
if (optionSelected.length !== 0) {
let userId = optionSelected.text();
if (userId !== '') {
optionSelected.attr('disabled','disabled');
let userName = this.value;
let permissionLine = '<tr data-user-id="'+ userId +'" data-mask="0">\n' +
' <td>\n' + userName +
' </td>\n' +
' <td>\n' +
' <input class="user-view" type="checkbox" />\n' +
' </td>\n' +
' <td>\n' +
' <input class="user-edit" type="checkbox" />\n' +
' </td>\n' +
' <td>\n' +
' <input class="user-delete" type="checkbox" />\n' +
' </td>\n' +
'<td><button class="btn-danger btn-mini delete-user-permission" >Delete</button></td>\n'+
' </tr>'
;
permissionList.find("#user-permission-list").append(permissionLine);
// new permission
updatePermission(null, userId, 0, 1, 'user', true);
}
}
});
permissionList.on('change', '#input-group-list', function() {
let optionSelected = permissionList.find('#group-list option[value="'+this.value+'"]');
if (optionSelected.length !== 0) {
let groupId = optionSelected.text();
if (groupId !== '') {
optionSelected.attr('disabled','disabled');
let groupName = this.value;
let permissionLine = '<tr data-group-id="'+ groupId +'" data-mask="0">\n' +
' <td>\n' + groupName +
' </td>\n' +
' <td>\n' +
' <input class="group-view" type="checkbox" />\n' +
' </td>\n' +
' <td>\n' +
' <input class="group-edit" type="checkbox" />\n' +
' </td>\n' +
' <td>\n' +
' <input class="group-delete" type="checkbox" />\n' +
' </td>\n' +
'<td><button class="btn-danger btn-mini delete-group-permission">Delete</button></td>\n'+
' </tr>'
;
permissionList.find("#group-permission-list").append(permissionLine);
// new permission
updatePermission(null, groupId, 0, 1, 'group', true);
}
}
});
function bindPermissionEvent() {
// user right
permissionList.on('change', '.user-view', function () {
updatePermission(
$(this),
$(this).parents('tr').attr('data-user-id'),
$(this).parents('tr').attr('data-mask'),
1,
'user'
);
});
permissionList.on('change', '.user-edit', function () {
updatePermission(
$(this),
$(this).parents('tr').attr('data-user-id'),
$(this).parents('tr').attr('data-mask'),
4,
'user'
);
});
permissionList.on('change', '.user-delete', function () {
updatePermission(
$(this),
$(this).parents('tr').attr('data-user-id'),
$(this).parents('tr').attr('data-mask'),
8,
'user'
);
});
permissionList.on('click', '.delete-user-permission', function () {
deletePermission('user', $(this).parents('tr').attr('data-user-id'));
});
// group right
permissionList.on('change', '.group-view', function () {
updatePermission(
$(this),
$(this).parents('tr').attr('data-group-id'),
$(this).parents('tr').attr('data-mask'),
1,
'group'
);
});
permissionList.on('change', '.group-edit', function () {
updatePermission(
$(this),
$(this).parents('tr').attr('data-group-id'),
$(this).parents('tr').attr('data-mask'),
4,
'group'
);
});
permissionList.on('change', '.group-delete', function () {
updatePermission(
$(this),
$(this).parents('tr').attr('data-group-id'),
$(this).parents('tr').attr('data-mask'),
8,
'group'
);
});
permissionList.on('click', '.delete-group-permission', function () {
deletePermission('group', $(this).parents('tr').attr('data-group-id'));
});
}
function updatePermission(checkboxSelector, userId, mask, singleMask, userType, isNew = false) {
hideInfo();
if ( !isNew ) {
if (checkboxSelector.is(':checked')) {
mask = mask | singleMask;
} else {
mask = mask & (~singleMask);
}
checkboxSelector.parents('tr').attr('data-mask', mask);
}
$.ajax({
type: "POST",
url: "/prod/expose/publication/permission/update",
dataType: 'json',
data: {
exposeName: "{{ exposeName }}",
jsonData: {
userType: userType,
userId: userId,
objectType: "publication",
objectId: "{{ publication.id }}",
mask: mask
},
action: "update"
},
success: function (data) {
if (data.success) {
publicationEdit.find("#permission-error").addClass("hidden");
publicationEdit.find("#permission-success").removeClass("hidden").html(data.message);
} else {
publicationEdit.find("#permission-success").addClass("hidden");
publicationEdit.find("#permission-error").removeClass("hidden").html(data.message);
}
}
});
}
function deletePermission(userType, userId) {
hideInfo();
$.ajax({
type: "POST",
url: "/prod/expose/publication/permission/update",
dataType: 'json',
data: {
exposeName: "{{ exposeName }}",
jsonData: {
userType: userType,
userId: userId,
objectType: "publication",
objectId: "{{ publication.id }}"
},
action: "delete"
},
success: function (data) {
if (data.success) {
publicationEdit.find("#permission-error").addClass("hidden");
publicationEdit.find("#permission-success").removeClass("hidden").html(data.message);
$.ajax({
type: "GET",
url: "/prod/expose/publication/permission/list?exposeName={{ exposeName }}&publicationId={{ publication.id }}",
success: function (data) {
permissionList.empty().append(data);
// bindCheckboxEvent();
}
});
} else {
publicationEdit.find("#permission-success").addClass("hidden");
publicationEdit.find("#permission-error").removeClass("hidden").html(data.message);
}
}
});
}
function hideInfo() {
publicationEdit.find("#permission-error").addClass("hidden");
publicationEdit.find("#permission-success").addClass("hidden");
}
/**convert Object data to Json**/ /**convert Object data to Json**/
function booleanizeObject(obj) { function booleanizeObject(obj) {
var keys = Object.keys(obj); var keys = Object.keys(obj);
@@ -301,6 +628,10 @@
function removeSecurityField() { function removeSecurityField() {
var datavalueMinus = buildData(); var datavalueMinus = buildData();
if (publicationEdit.find('input[name="slug"]').val() === '') {
datavalueMinus['slug'] = null;
}
if (publicationParent.val() == "") { if (publicationParent.val() == "") {
delete datavalueMinus['parentId']; delete datavalueMinus['parentId'];
} }
@@ -323,57 +654,6 @@
} }
publicationFieldClass.on('keyup change', function (e) {
try {
publicationEdit.find("#pub-success").addClass("hidden");
publicationEdit.find("#pub-error").addClass("hidden");
jQuery.parseJSON(JSON.stringify($(this).val()));
} catch (err) {
publicationEdit.find("#pub-error").removeClass("hidden").text(err.message);
}
removeSecurityField();
});
publicationEdit.find('#publication-json').on('submit', function (e) {
e.preventDefault();
try {
publicationEdit.find("#pub-error").addClass("hidden");
} catch (err) {
publicationEdit.find("#pub-error").removeClass("hidden").text(err.message);
return;
}
if (advancedSetting.val() !== '') {
$.ajax({
type: "PUT",
url: "/prod/expose/update-publication/{{ publication.id }}",
dataType: 'json',
data: {
exposeName: "{{ exposeName }}",
publicationData: advancedSetting.val()
},
success: function (data) {console.log(data.success);
if (data.success) {
publicationEdit.find("#pub-success").removeClass("hidden").html(data.message);
document.getElementById("publication-data-form").reset();
setTimeout(function(){
$('#DIALOG-expose-edit').dialog('close');
}
, 2000
);
} else {
publicationEdit.find("#pub-error").removeClass("hidden").text(data.message);
}
}
});
} else {
publicationEdit.find("#pub-error").removeClass("hidden").text("No changed!");
}
});
</script> </script>
<style> <style>
.visibility-hidden { .visibility-hidden {

View File

@@ -8,64 +8,64 @@
<form id="publication-data-form" > <form id="publication-data-form" >
<div class="edit-publication-block"> <div class="edit-publication-block">
<div class="ui-widget"> <div class="ui-widget">
<label>Name </label> <label>{{ 'prod:expose:publication:Name' | trans }}</label>
<input type="text" value="" name="title" class="publication-field"/> <input type="text" value="" name="title" class="publication-field"/>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Slug: </label> <label>{{ 'prod:expose:publication:Slug' | trans }}</label>
<input type="text" value="" name="slug" class=" slug publication-field"/><input type="button" <input type="text" value="" name="slug" class=" slug publication-field"/><input type="button"
class="blue_button" class="blue_button"
value="check slug availability"> value="check slug availability">
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Parent publication </label> <label>{{ 'prod:expose:publication:Parent Publication' | trans }}</label>
<div id="publication-list-data" class="ui-widget publication_parent_wrapper "> <div id="publication-list-data" class="ui-widget publication_parent_wrapper ">
<select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true" <select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select a parent publication</option> <option value="">{{ 'prod:expose:publication:Select a parent publication' | trans }}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="ui-widget profile-wrapper hide"> <div class="ui-widget profile-wrapper hide">
<label>Profile </label> <label>{{ 'prod:expose:publication:Profile' | trans }} </label>
<select id="profile-field" name="profile" tabindex="-1" aria-hidden="true" <select id="profile-field" name="profile" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select Profile</option> <option value="">{{ 'prod:expose:publication:Select Profile' | trans }}</option>
</select> </select>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Enabled </label> <label>{{ 'prod:expose:publication:Enabled' | trans }}</label>
<label class="switch"> <label class="switch">
<input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled"> <input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled">
<span class="slider round"></span> <span class="slider round"></span>
</label> </label>
</div> </div>
<div class="ui-widget available-wrapper"> <div class="ui-widget available-wrapper">
<label>Available (leave blank for permanet publication): </label> <label>{{ 'prod:expose:publication:Available (leave blank for permanet publication)' | trans }}</label>
<div class="available-widget"> <div class="available-widget">
<label>From </label> <label>{{ 'prod:expose:publication:From' | trans }}</label>
<input type="text" value="" name="beginsAt" class="use-datepicker publication-field"/> <input type="text" value="" name="beginsAt" class="use-datepicker publication-field"/>
</div> </div>
<div class="available-widget"> <div class="available-widget">
<label>To </label> <label>{{ 'prod:expose:publication:To' | trans }} </label>
<input type="text" value="" name="expiresAt" class="use-datepicker publication-field"/> <input type="text" value="" name="expiresAt" class="use-datepicker publication-field"/>
</div> </div>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Publicity listing </label> <label>{{ 'prod:expose:publication:Publicly listing' | trans }}</label>
<label class="switch"> <label class="switch">
<input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed"> <input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed">
<span class="slider round"></span> <span class="slider round"></span>
</label> </label>
</div> </div>
<div class="ui-widget access-wrapper available-wrapper"> <div class="ui-widget access-wrapper available-wrapper">
<label>Access rules </label> <label>{{ 'prod:expose:publication:Access rules' | trans }}</label>
<div class="available-widget"> <div class="available-widget">
<select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true" <select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">open access</option> <option value="">{{ 'prod:expose:publication:Open access' | trans }}</option>
<option value="password">password</option> <option value="password">{{ 'prod:expose:publication:Password' | trans }}</option>
<option value="authentication">users</option> <option value="authentication">{{ 'prod:expose:publication:Users' | trans }}</option>
</select> </select>
</div> </div>
<div class="available-widget ui-widget securityOptions_wrapper visibility-hidden"> <div class="available-widget ui-widget securityOptions_wrapper visibility-hidden">
@@ -78,22 +78,22 @@
</div> </div>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Layout </label> <label>{{ 'prod:expose:publication:Layout' | trans }}</label>
<select id="publication_layout" name="layout" tabindex="-1" aria-hidden="true" <select id="publication_layout" name="layout" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="" selected="selected">Select Layout</option> <option value="" selected="selected">{{ 'prod:expose:publication:Select Layout' | trans }}</option>
<option value="gallery">Gallery</option> <option value="gallery">{{ 'prod:expose:publication:Gallery' | trans }}</option>
<option value="mapbox">Mapbox</option> <option value="mapbox">{{ 'prod:expose:publication:Mapbox' | trans }}</option>
<option value="download">Download</option> <option value="download">{{ 'prod:expose:publication:Download' | trans }}</option>
</select> </select>
</div> </div>
<div class="ui-widget"> <div class="ui-widget">
<label>Theme </label> <label>{{ 'prod:expose:publication:Theme' | trans }}</label>
<select id="theme-field" name="theme" tabindex="-1" aria-hidden="true" <select id="theme-field" name="theme" tabindex="-1" aria-hidden="true"
class="publication-field"> class="publication-field">
<option value="">Select Theme</option> <option value="">{{ 'prod:expose:publication:Select Theme' | trans }}</option>
<option value="light">Light</option> <option value="light">{{ 'prod:expose:publication:Light' | trans }}</option>
<option value="dark">Dark</option> <option value="dark">{{ 'prod:expose:publication:Dark' | trans }}</option>
</select> </select>
</div> </div>
</div> </div>
@@ -101,7 +101,7 @@
<form name="publication-json" id="publication-json" class="text-center"> <form name="publication-json" id="publication-json" class="text-center">
<div id="advancedSettingBlock"> <div id="advancedSettingBlock">
<h3 class="toggleSetting">Advanced setting</h3> <h4 class="toggleSetting">{{ 'prod:expose:publication:Advanced setting' | trans }}</h4>
<div id="advancedSettingInner" class="hidden"> <div id="advancedSettingInner" class="hidden">
<div> <div>
<textarea name="advancedSetting" id="advancedSetting" cols="100" <textarea name="advancedSetting" id="advancedSetting" cols="100"
@@ -116,10 +116,10 @@
<div class="ui-dialog-buttonset"> <div class="ui-dialog-buttonset">
<button type="button" <button type="button"
class="close-expose-modal ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" class="close-expose-modal ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
role="button" aria-disabled="false"><span class="ui-button-text">Cancel</span> role="button" aria-disabled="false"><span class="ui-button-text">{{ 'prod:expose:publication:Cancel'| trans }}</span>
</button> </button>
<button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="create-publication"> <button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="create-publication">
Create publication {% if lst %} from {{ lst|split(';')|length }} selected {% endif %} {{ 'prod:expose:publication:Create publication'| trans }}
</button> </button>
</div> </div>
@@ -216,6 +216,10 @@
function removeSecurityFieldDialogAdd() { function removeSecurityFieldDialogAdd() {
var datavalueMinus = extractData(); var datavalueMinus = extractData();
if ($('#DIALOG-expose-add').find('input[name="slug"]').val() === '') {
datavalueMinus['slug'] = null;
}
if ($("#DIALOG-expose-add #publication_parent").val() == "") { if ($("#DIALOG-expose-add #publication_parent").val() == "") {
delete datavalueMinus['parentId']; delete datavalueMinus['parentId'];
} }
@@ -240,6 +244,14 @@
} }
$('#DIALOG-expose-add').find('.publication-field').on('keyup change', function (e) { $('#DIALOG-expose-add').find('.publication-field').on('keyup change', function (e) {
if ($(this).attr('id') === 'publication_securityMethod') {
if ($(this).val() === 'password') {
$(".securityOptions_wrapper").removeClass('visibility-hidden');
} else {
$('#DIALOG-expose-add').find("#publication_password").val('');
$(".securityOptions_wrapper").addClass('visibility-hidden');
}
}
try { try {
$("#pub-success").addClass("hidden"); $("#pub-success").addClass("hidden");
$("#pub-error").addClass("hidden"); $("#pub-error").addClass("hidden");

View File

@@ -1,20 +1,22 @@
<h3>Auth connexion</h3> <div style="padding:10px;">
<h3>{{ 'prod:expose:connection:Auth connexion' |trans }}</h3>
<div class=""> <div class="">
<form id="oauth-login-form" method="post" name="login" novalidate action="{{ path('ps_expose_authenticate') }}"> <form id="oauth-login-form" method="post" name="login" novalidate action="{{ path('ps_expose_authenticate') }}">
<input type="hidden" name="exposeName" value="{{ exposeName }}"/> <input type="hidden" name="exposeName" value="{{ exposeName }}"/>
<div class="control-group"> <div class="control-group">
<label for="auth-email">Username</label> <label for="auth-email">{{ 'prod:expose:connection:Username' |trans }}</label>
<input value="" type="text" name="auth-username" id="auth-email" placeholder="Enter your email" required=""> <input value="" type="text" name="auth-username" id="auth-email" placeholder="Enter your email" required="">
</div> </div>
<div class="control-group"> <div class="control-group">
<label for="auth-password">Password</label> <label for="auth-password">{{ 'prod:expose:connection:Password' |trans }}</label>
<input type="password" name="auth-password" id="auth-password" placeholder="Enter your password" required=""> <input type="password" name="auth-password" id="auth-password" placeholder="Enter your password" required="">
</div> </div>
<div> <div>
<button class="btn btn-block btn-primary auth-sign-in">Sign in</button> <button class="btn btn-block btn-primary auth-sign-in">{{ 'prod:expose:connection:Sign in' |trans }}</button>
</div> </div>
</form> </form>
</div> </div>
</div>
<script type="text/javascript"> <script type="text/javascript">
$('.publication-list').on('click', '.auth-sign-in' , function (e) { $('.publication-list').on('click', '.auth-sign-in' , function (e) {

View File

@@ -0,0 +1,110 @@
<div class="ui-widget">
<input id="input-group-list" placeholder="{{ 'prod:expose:publication:permission:Group Name'| trans }}" list="group-list">
<datalist id="group-list" tabindex="-1" aria-hidden="true"
class="">
{% for group in listGroups %}
<option value="{{ group.name }}" {% if group.selected %} disabled {% endif %}>{{ group.id }}</option>
{% endfor %}
</datalist>
</div>
<table>
<thead>
<tr>
<th>
{{ 'prod:expose:publication:permission:list:Group'| trans }}
</th>
<th>
{{ 'prod:expose:publication:permission:list:View'| trans }}
</th>
<th>
{{ 'prod:expose:publication:permission:list:Edit'| trans }}
</th>
<th>
{{ 'prod:expose:publication:permission:list:Delete'| trans }}
</th>
<th>
</th>
</tr>
</thead>
<tbody id="group-permission-list">
{% for permission in permissions %}
{% if permission.userType == 'group' %}
<tr data-group-id="{{ permission.userId }}" data-mask="{{ permission.mask }}">
<td>
{{ permission.name }}
</td>
<td>
<input class="group-view" type="checkbox" {% if (permission.mask b-and 1) != 0 %} checked {% endif %} />
</td>
<td>
<input class="group-edit" type="checkbox" {% if (permission.mask b-and 4) != 0 %} checked {% endif %}/>
</td>
<td>
<input class="group-delete" type="checkbox" {% if (permission.mask b-and 8) != 0 %} checked {% endif %}/>
</td>
<td>
<button class="btn-danger btn-mini delete-group-permission" >{{ 'prod:expose:publication:permission:list:Remove User'| trans }}</button>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
<br/>
<br/>
<div class="ui-widget">
<input id="input-user-list" placeholder="{{ 'prod:expose:publication:permission:User Name'| trans }}" list="user-list">
<datalist id="user-list" tabindex="-1" aria-hidden="true"
class="">
{% for user in listUsers %}
<option value="{{ user.username }}" {% if user.selected %} disabled {% endif %}>{{ user.id }}</option>
{% endfor %}
</datalist>
</div>
<table>
<thead>
<tr>
<th>
{{ 'prod:expose:publication:permission:list:User'| trans }}
</th>
<th>
{{ 'prod:expose:publication:permission:list:View'| trans }}
</th>
<th>
{{ 'prod:expose:publication:permission:list:Edit'| trans }}
</th>
<th>
{{ 'prod:expose:publication:permission:list:Delete'| trans }}
</th>
<th>
</th>
</tr>
</thead>
<tbody id="user-permission-list">
{% for permission in permissions %}
{% if permission.userType == 'user' %}
<tr data-user-id="{{ permission.userId }}" data-mask="{{ permission.mask }}">
<td>
{{ permission.username }}
</td>
<td>
<input class="user-view" type="checkbox" {% if (permission.mask b-and 1) != 0 %} checked {% endif %}/>
</td>
<td>
<input class="user-edit" type="checkbox" {% if (permission.mask b-and 4) != 0 %} checked {% endif %}/>
</td>
<td>
<input class="user-delete" type="checkbox" {% if (permission.mask b-and 8) != 0 %} checked {% endif %}/>
</td>
<td>
<button class="btn-danger btn-mini delete-user-permission" >{{ 'prod:expose:publication:permission:list:Remove Group'| trans }}</button>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>

View File

@@ -1,13 +1,13 @@
{% if page == 1 %} {% if page == 1 %}
<div class="expose_item_top"> <div class="expose_item_top">
<button class="btn-success refresh-publication pull-right" data-publication-id="{{ publicationId }}">{{ 'Refresh Publication' | trans }}</button> <button class="btn-success refresh-publication pull-right" data-publication-id="{{ publicationId }}">{{ 'prod:expose:publication:Refresh Publication' | trans }}</button>
<span class="green_button edit_expose" data-id="{{ publicationId }}"><i class="fa fa-edit"></i></span> <span class="green_button edit_expose" data-id="{{ publicationId }}"><i class="fa fa-edit"></i></span>
{% if pubAssets[0].publication.children|length == 0 %} {% if pubAssets[0].publication.children|length == 0 %}
<button type="button" class="delete-publication btn-danger" data-publication-id="{{ publicationId }}"> <button type="button" class="delete-publication btn-danger" data-publication-id="{{ publicationId }}">
<i class="fa fa-trash"></i> Delete <i class="fa fa-trash"></i> {{ 'prod:expose:publication:Delete' | trans }}
</button> </button>
{% else %} {% else %}
<span>Parent publication</span> <span>{{ 'prod:expose:publication:Parent Publication' | trans }}</span>
{% endif %} {% endif %}
</div> </div>

View File

@@ -467,11 +467,11 @@
{% macro make_expose_bloc(app, WorkZone) %} {% macro make_expose_bloc(app, WorkZone) %}
<div id="expose_workzone" class="expose_workzone"> <div id="expose_workzone" class="expose_workzone">
<div id="expose_sel" class="custom_select_dark" style="display: inline-block;"> <div id="expose_sel" class="custom_select_dark" style="display: inline-block;padding:10px;">
{% set expose_list= app['conf'].get(['phraseanet-service', 'expose-service', 'exposes']) %} {% set expose_list= app['conf'].get(['phraseanet-service', 'expose-service', 'exposes']) %}
<select id="expose_list" name="expose_list" class="expose_list"> <select id="expose_list" name="expose_list" class="expose_list">
<option value="">{{ 'prod:: workzone:expose: select expose' | trans }}</option> <option value="">{{ 'prod:expose:select expose' | trans }}</option>
{% for key in expose_list|keys %} {% for key in expose_list|keys %}
{% if expose_list[key].activate_expose %} {% if expose_list[key].activate_expose %}
<option value="{{ key }}">{{ key }}</option> <option value="{{ key }}">{{ key }}</option>
@@ -479,12 +479,12 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div class="add_expose_block"> <div class="add_expose_block" style="padding:10px;">
<a id="add_publication" class="add_publication" href="#" > <a id="add_publication" class="add_publication" href="#" >
<span>{{ 'prod:: workzone:expose: Add publication' | trans }}</span> <span>{{ 'prod:expose:Add publication' | trans }}</span>
<img src="/assets/common/images/icons/Basket-New.png" title="New Expose"> <img src="/assets/common/images/icons/Basket-New.png" title="{{ 'prod:expose:Add publication' | trans }}">
</a> </a>
<button class="btn-success refresh-list" style="margin-bottom: 5px;">{{ 'Refresh' | trans }}</button> <button class="btn-success refresh-list" style="margin-bottom: 5px;">{{ 'prod:expose:Refresh' | trans }}</button>
<button class="btn display-tree pull-right" style="padding-bottom: 2px;padding-top: 2px;"> <button class="btn display-tree pull-right" style="padding-bottom: 2px;padding-top: 2px;">
<img src="/assets/common/images/icons/tree-icon.png" title="Display hierarchical"> <img src="/assets/common/images/icons/tree-icon.png" title="Display hierarchical">

View File

@@ -12,8 +12,7 @@ class ValidationParticipantRepositoryTest extends \PhraseanetTestCase
$em = self::$DI['app']['orm.em']; $em = self::$DI['app']['orm.em'];
$repo = $em->getRepository('Phraseanet:ValidationParticipant'); $repo = $em->getRepository('Phraseanet:ValidationParticipant');
/* @var $repo Alchemy\Phrasea\Model\Repositories\ValidationParticipantRepository */ /* @var $repo Alchemy\Phrasea\Model\Repositories\ValidationParticipantRepository */
$expireDate = new \DateTime('+8 days'); $participants = $repo->findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent(20, new \DateTime());
$participants = $repo->findNotConfirmedAndNotRemindedParticipantsByExpireDate($expireDate);
$this->assertEquals(3, count($participants)); $this->assertEquals(3, count($participants));
} }
} }