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
steps:
- checkout
- run: phpenv versions
- run: phpenv global 7.0.7
- run: php -v
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
- run:
working_directory: ~/alchemy-fr/Phraseanet

View File

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

View File

@@ -48,7 +48,7 @@ class SendValidationRemindersCommand extends Command
/** @var DateTime */
private $now;
private $days;
private $timeLeftPercent;
public function __construct( /** @noinspection PhpUnusedParameterInspection */ $name = null)
{
@@ -56,8 +56,8 @@ class SendValidationRemindersCommand extends Command
$this->setDescription('Send validation reminders. <comment>(experimental)</comment>');
$this->addOption('dry',null, InputOption::VALUE_NONE,'dry run, list but don\'t act');
$this->addOption('now', null,InputArgument::OPTIONAL, 'fake today');
$this->addOption('days', null,InputArgument::OPTIONAL, 'overwrite validation-reminder-days');
$this->addOption('now', null,InputArgument::OPTIONAL, 'fake today as "yyy/mm/dd", "yyyy-mm-dd" or "yyyy-mm-dd hh:mm:ss"');
$this->addOption('p', null,InputArgument::OPTIONAL, 'overwrite Validation-reminder-time-left-percent');
}
@@ -87,15 +87,15 @@ class SendValidationRemindersCommand extends Command
$this->now = new DateTime();
}
// --days
if(($v = $this->input->getOption('days')) !== null) {
if(($this->days = (int)$v) <= 0) {
$this->output->writeln(sprintf('<error>--days must be > 0 (bad value "%s")</error>', $v));
// --p
if(($v = $this->input->getOption('p')) !== null) {
if(($this->timeLeftPercent = (int)$v) <= 0) {
$this->output->writeln(sprintf('<error>--p must be > 0 (bad value "%s")</error>', $v));
$r = false;
}
}
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;
@@ -112,30 +112,29 @@ class SendValidationRemindersCommand extends Command
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) {
$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 ';
//$output->writeln(sprintf($fmt, 'session', 'basket', 'participant', 'user', 'token', 'email'));
$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();
$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
if($validationSession->getId() !== $last_session) {
try {
@@ -222,7 +221,7 @@ class SendValidationRemindersCommand extends Command
}
// $this->dispatch(PhraseaEvents::VALIDATION_REMINDER, new ValidationEvent($participant, $basket, $url));
$this->doRemind($participant, $basket, $url);
$this->doRemind($participant, $basket, $url, $timeLeft);
}
$this->getEntityManager()->flush();
@@ -254,13 +253,14 @@ class SendValidationRemindersCommand extends Command
return $s;
}
private function doRemind(ValidationParticipant $participant, Basket $basket, $url)
private function doRemind(ValidationParticipant $participant, Basket $basket, $url, $timeLeft)
{
$params = [
'from' => $basket->getValidation()->getInitiator()->getId(),
'to' => $participant->getUser()->getId(),
'ssel_id' => $basket->getId(),
'url' => $url,
'time_left'=> $timeLeft
];
$datas = json_encode($params);
@@ -290,6 +290,7 @@ class SendValidationRemindersCommand extends Command
if(!$this->dry) {
// for real
$mail = MailInfoValidationReminder::create($this->container, $receiver, $emitter);
$mail->setTimeLeft($timeLeft);
$mail->setButtonUrl($params['url']);
$mail->setTitle($title);

View File

@@ -433,7 +433,7 @@ class V1Controller extends Controller
'autoRegister' => $conf->get(['registry', 'registration', 'auto-register-enabled']),
],
'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']),
],
],

View File

@@ -594,7 +594,7 @@ class LoginController extends Controller
// move this in an event
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();
/*

View File

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

View File

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

View File

@@ -11,10 +11,12 @@
namespace Alchemy\Phrasea\Model\Repositories;
use Alchemy\Phrasea\Cache\Exception;
use Alchemy\Phrasea\Model\Entities\ValidationParticipant;
use DateTime;
use Doctrine\ORM\EntityRepository;
use Doctrine\DBAL\Types\Type;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
class ValidationParticipantRepository extends EntityRepository
{
@@ -22,24 +24,53 @@ class ValidationParticipantRepository extends EntityRepository
/**
* 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
* (used by SendValidationRemindersCommand.php to debug with --dry)
* @return ValidationParticipant[]
* @throws \Exception
*/
public function findNotConfirmedAndNotRemindedParticipantsByExpireDate(DateTime $expireDate, DateTime $today=null)
public function findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent($timeLeftPercent, DateTime $today=null)
{
$dql = '
SELECT p, s
FROM Phraseanet:ValidationParticipant p
JOIN p.session s
JOIN s.basket b
WHERE p.is_confirmed = 0
AND p.reminded IS NULL
AND s.expires < :date AND s.expires > ' . ($today===null ? 'CURRENT_TIMESTAMP()' : ':today');
$rsm = new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('Alchemy\Phrasea\Model\Entities\ValidationParticipant', 'p');
$selectClause = $rsm->generateSelectClause();
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
AND p.reminded IS NULL
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) {
$q->setParameter('today', $today, Type::DATETIME);
}

View File

@@ -18,6 +18,9 @@ class MailInfoValidationReminder extends AbstractMailWithLink
/** @var string */
private $title;
/** @var string */
private $timeLeft;
/**
* Sets the title of the validation to remind
*
@@ -28,6 +31,15 @@ class MailInfoValidationReminder extends AbstractMailWithLink
$this->title = $title;
}
/**
* Sets time left before the validation expires
* @param $timeLeft
*/
public function setTimeLeft($timeLeft)
{
$this->timeLeft = $timeLeft;
}
/**
* {@inheritdoc}
*/
@@ -45,8 +57,8 @@ class MailInfoValidationReminder extends AbstractMailWithLink
*/
public function getMessage()
{
return $this->app->trans('Il ne vous reste plus que %quantity% jours pour terminer votre validation', [
'%quantity%' => $this->app['conf']->get(['registry', 'actions', 'validation-reminder-days'])
return $this->app->trans('Il ne vous reste plus que %timeLeft% pour terminer votre validation', [
'%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
* Use param "format=json" to retrieve a json
@@ -150,6 +203,7 @@ class PSExposeController extends Controller
$accessToken = $this->getAndSaveToken($exposeConfiguration);
$publication = [];
$resPublication = $exposeClient->get('/publications/' . $request->get('publicationId') , [
'headers' => [
'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", [
'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
* @param $config
@@ -598,12 +741,6 @@ class PSExposeController extends Controller
private function removeAssetPublication(Client $exposeClient, $publicationId, $assetId, $token)
{
$exposeClient->delete('/publication-assets/'.$publicationId.'/'.$assetId, [
'headers' => [
'Authorization' => 'Bearer '. $token
]
]);
return $exposeClient->delete('/assets/'. $assetId, [
'headers' => [
'Authorization' => 'Bearer '. $token

View File

@@ -70,6 +70,14 @@ class PSExposeServiceProvider implements ControllerProviderInterface, ServicePro
->method('POST')
->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;
}

View File

@@ -2,6 +2,7 @@
namespace Alchemy\Phrasea\SearchEngine\Elastic;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Delegate\FetcherDelegateInterface;
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Fetcher;
@@ -23,9 +24,9 @@ class DataboxFetcherFactory
private $conf;
/**
* @var \ArrayAccess
* @var Application
*/
private $container;
private $app;
/**
* @var string
@@ -45,22 +46,26 @@ class DataboxFetcherFactory
/** @var ElasticsearchOptions */
private $options;
/** @var boolean */
private $populatePermalinks;
/**
* @param PropertyAccess $conf
* @param RecordHelper $recordHelper
* @param ElasticsearchOptions $options
* @param \ArrayAccess $container
* @param Application $app
* @param string $structureKey
* @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->recordHelper = $recordHelper;
$this->options = $options;
$this->container = $container;
$this->app = $app;
$this->structureKey = $structureKey;
$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 FlagHydrator($this->getStructure(), $databox),
new ThesaurusHydrator($this->getStructure(), $this->getThesaurus(), $candidateTerms),
new SubDefinitionHydrator($databox)
new SubDefinitionHydrator($this->app, $databox, $this->populatePermalinks)
],
$fetcherDelegate
);
@@ -100,7 +105,7 @@ class DataboxFetcherFactory
*/
private function getStructure()
{
return $this->container[$this->structureKey];
return $this->app[$this->structureKey];
}
/**
@@ -108,6 +113,6 @@ class DataboxFetcherFactory
*/
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;
use Alchemy\Phrasea\Application;
use databox;
use Doctrine\DBAL\Connection;
use media_Permalink_Adapter;
class SubDefinitionHydrator implements HydratorInterface
{
/** @var Application */
private $app;
/** @var 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->populatePermalinks = $populatePermalinks;
}
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
SELECT
@@ -32,6 +88,8 @@ class SubDefinitionHydrator implements HydratorInterface
s.name,
s.height,
s.width,
s.size,
s.mime,
CONCAT(TRIM(TRAILING '/' FROM s.path), '/', s.file) AS path
FROM subdef s
WHERE s.record_id IN (?)
@@ -44,42 +102,15 @@ SQL;
$current_rid = null;
$record = null;
$pls = [];
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'];
$records[$subdef['record_id']]['subdefs'][$name] = array(
'path' => $subdef['path'],
'width' => $subdef['width'],
'height' => $subdef['height'],
/*
* no permalinks for now
*
'permalink' => array_key_exists($name, $pls) ? $pls[$name] : null
*/
'size' => $subdef['size'],
'mime' => $subdef['mime'],
'permalink' => null
);
}
}

View File

@@ -29,9 +29,19 @@ class AdminConfigurationController extends Controller
/** @var WorkerRunningJobRepository $repoWorker */
$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', [
'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'));
$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);
$now = new DateTime();
if ($timeLeftPercent == null) {
$this->logger->error('validation-reminder-time-left-percent is not set in the configuration!');
$dateTo = clone($now);
try {
$dateTo->add(new DateInterval($interval));
} catch(\Exception $e) {
$this->logger->error(sprintf('<error>Bad interval "%s" ?</error>', $interval));
return ;
return 0;
}
foreach ($this->getValidationParticipantRepository()->findNotConfirmedAndNotRemindedParticipantsByExpireDate($dateTo, $now) as $participant) {
foreach ($this->getValidationParticipantRepository()->findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent($timeLeftPercent, new DateTime()) as $participant) {
$validationSession = $participant->getSession();
$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;
$user = $participant->getUser(); // always ok !
@@ -94,19 +98,20 @@ class ValidationReminderWorker implements WorkerInterface
$url = $this->app->url('lightbox_validation', ['basket' => $basket->getId()]);
}
$this->doRemind($participant, $basket, $url);
$this->doRemind($participant, $basket, $url, $timeLeft);
}
$this->getEntityManager()->flush();
}
private function doRemind(ValidationParticipant $participant, Basket $basket, $url)
private function doRemind(ValidationParticipant $participant, Basket $basket, $url, $timeLeft)
{
$params = [
'from' => $basket->getValidation()->getInitiator()->getId(),
'to' => $participant->getUser()->getId(),
'ssel_id' => $basket->getId(),
'url' => $url,
'time_left'=> $timeLeft
];
$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()));
$mail = MailInfoValidationReminder::create($this->app, $receiver, $emitter);
$mail->setTimeLeft($timeLeft);
$mail->setButtonUrl($params['url']);
$mail->setTitle($title);

View File

@@ -40,6 +40,12 @@ class eventsmanager_notify_validationreminder extends eventsmanager_notifyAbstra
$from = $data['from'];
$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)) {
return [];
}
@@ -57,7 +63,7 @@ class eventsmanager_notify_validationreminder extends eventsmanager_notifyAbstra
. $basket_name . '</a>';
$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' : '')
];

View File

@@ -276,7 +276,7 @@ class media_Permalink_Adapter implements cache_cacheableInterface
* @param media_subdef[] $subdefs
* @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);
@@ -303,18 +303,20 @@ class media_Permalink_Adapter implements cache_cacheableInterface
$missing = array_diff_key($media_subdefs, $data);
if ($missing) {
if($missing && $createIfMissing) {
self::createMany($app, $databox, $missing);
$data = array_replace($data, self::fetchData($databox, array_diff_key($subdefIds, $data)));
}
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');
}
$permalinks[$index] = new self($app, $databox, $subdef, $data[$index]);
if(isset($data[$index])) {
$permalinks[$index] = new self($app, $databox, $subdef, $data[$index]);
}
}
}
return $permalinks;

View File

@@ -1564,7 +1564,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
$stmt->execute([':record_id' => $this->getRecordId()]);
$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->execute([':record_id' => $this->getRecordId()]);
$stmt->closeCursor();

View File

@@ -37,6 +37,7 @@ main:
maxResultWindow: 500000
populate_order: RECORD_ID
populate_direction: DESC
populate_permalinks: false
activeTab: '#elastic-search'
facets:
_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"?>
<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>
<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>
@@ -832,7 +832,7 @@
<trans-unit id="c26a1a41764983bc03456d418ee43e732e5f513e" resname="Aide sur les expressions regulieres" approved="yes">
<source>Aide sur les expressions regulieres</source>
<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 id="5e8a35671080dba23a7f84416dcf97fd975a33e6" resname="Ajouter a" approved="yes">
<source>Ajouter a</source>
@@ -965,7 +965,7 @@
<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="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="173">Controller/Prod/BasketController.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="647">Controller/Admin/DataboxController.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="233">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="120">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="23">admin/collection/collection.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>
<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="2076">Controller/Api/V1Controller.php</jms:reference-file>
<jms:reference-file line="2522">Controller/Api/V1Controller.php</jms:reference-file>
<jms:reference-file line="2081">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="135">Controller/Admin/SearchEngineController.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">
<source>Aucun statut editable</source>
<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 id="e8f882731020de75c4168f82456175a386828cd1" resname="Aucune" approved="yes">
<source>Aucune</source>
@@ -2595,7 +2595,7 @@
<trans-unit id="9a15cbc825b5979bd5c5fce02ddc283737928496" resname="Document has been successfully substitued" approved="yes">
<source>Document has been successfully substitued</source>
<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 id="cf25d8937160da72080fc8842d6b68764fe829ab" resname="Document refuse par %name%" approved="yes">
<source>Document refuse par %name%</source>
@@ -2736,7 +2736,7 @@
<trans-unit id="92376275a970f44a04fcce0319075ec61bbac9ca" resname="Edition impossible" approved="yes">
<source>Edition impossible</source>
<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 id="c7e9fb2ea6c3b8c3ce97645eb902c348d859f36d" resname="Editor">
<source>Editor</source>
@@ -3283,9 +3283,9 @@
<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="207">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="54">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="134">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="155">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="136">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="157">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
</trans-unit>
<trans-unit id="3491d2e44dd1896af3411bb1a048847c13647feb" resname="File is too big : 64k max" approved="yes">
<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>
<jms:reference-file line="742">web/setup/step2.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="1e54785f55826fc4cf74fa541efcad1b46998550" resname="Il ne vous reste plus que %quantity% jours pour terminer votre validation">
<source>Il ne vous reste plus que %quantity% jours pour terminer votre validation</source>
<target state="new">Il ne vous reste plus que %quantity% jours pour terminer votre validation</target>
<jms:reference-file line="48">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file>
<trans-unit id="8c2b3e33fa9361614a69fd94f5e0f0a4882f7d18" resname="Il ne vous reste plus que %timeLeft% pour terminer votre validation">
<source>Il ne vous reste plus que %timeLeft% pour terminer votre validation</source>
<target state="new">Il ne vous reste plus que %timeLeft% pour terminer votre validation</target>
<jms:reference-file line="60">Notification/Mail/MailInfoValidationReminder.php</jms:reference-file>
</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">
<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">
<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>
<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 id="663929297180bbb5ff977df2695f71e94c35fa5e" resname="Les termes apparaissent dans le(s) champs" approved="yes">
<source>Les termes apparaissent dans le(s) champs</source>
@@ -4772,11 +4772,6 @@
<target state="translated">Nummer</target>
<jms:reference-file line="22">admin/databox/details.html.twig</jms:reference-file>
</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">
<source>Number of records to process per batch</source>
<target state="new">Number of records to process per batch</target>
@@ -4980,6 +4975,11 @@
<target state="new">Pause</target>
<jms:reference-file line="128">Controller/Prod/LanguageController.php</jms:reference-file>
</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">
<source>Periodically fetches an FTP repository content locally</source>
<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>
<jms:reference-file line="721">web/prod/index.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="4efaf5e07d4b4b4c4373d24615adeed3a0eca433" resname="Rappel : Il vous reste %number% jours pour valider %title% de %user%">
<source>Rappel : Il vous reste %number% jours pour valider %title% de %user%</source>
<target state="new">Rappel : Il vous reste %number% jours pour valider %title% de %user%</target>
<jms:reference-file line="60">eventsmanager/notify/validationreminder.php</jms:reference-file>
<trans-unit id="113e4c4573bc36248145d74e8d235a10dbec320d" resname="Rappel : Il vous reste %timeLeft% pour valider %title% de %user%">
<source>Rappel : Il vous reste %timeLeft% pour valider %title% de %user%</source>
<target state="new">Rappel : Il vous reste %timeLeft% pour valider %title% de %user%</target>
<jms:reference-file line="66">eventsmanager/notify/validationreminder.php</jms:reference-file>
</trans-unit>
<trans-unit id="aba19c22de9ce4775ec46aebd783d496329ceee7" resname="Rappel pour une demande de validation" approved="yes">
<source>Rappel pour une demande de validation</source>
<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 id="aafcf684757a5a4e1bf1630db0821e75f47a2d08" resname="Rapport de Validation" approved="yes">
<source>Rapport de Validation</source>
@@ -5578,7 +5578,7 @@
<trans-unit id="3cd74928930cda94205568949be186e4cae37119" resname="Record Not Found" approved="yes">
<source>Record Not Found</source>
<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 id="ef0112aa634cbad5a586b72e4befe1ab1a39e73f" resname="Record removed from basket" approved="yes">
<source>Record removed from basket</source>
@@ -5610,16 +5610,6 @@
<target state="translated">Type van de records</target>
<jms:reference-file line="20">actions/Property/index.html.twig</jms:reference-file>
</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">
<source>Refus d'elements de commande</source>
<target state="translated">Weigering van producten in bestelling</target>
@@ -5669,7 +5659,7 @@
<trans-unit id="c8005b356e3a4dba94a532df1deec4ebce882d13" resname="Reminder : validate '%title%'">
<source>Reminder : validate '%title%'</source>
<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 id="ecd6539bc6678ec0ff3748ecac64d64cee566b8f" resname="Remove ICC Profile" approved="yes">
<source>Remove ICC Profile</source>
@@ -6335,7 +6325,7 @@
<source>Start validation</source>
<target state="translated">Start validatie</target>
<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 id="faa9e7e7ef5a264c58c68a4a0b9c8bd54241450a" resname="Started">
<source>Started</source>
@@ -6384,7 +6374,7 @@
<trans-unit id="315bc332aafca63cad8ac042c2e2f5111544fe9d" resname="Story Not Found" approved="yes">
<source>Story Not Found</source>
<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 id="94e347da85f4797810ed7987973c8ef79092057e" resname="Story created" approved="yes">
<source>Story created</source>
@@ -6877,7 +6867,7 @@
<trans-unit id="34c6d5d40f46508994dd884386a0ea63970f2e34" resname="Thumbnail has been successfully substitued" approved="yes">
<source>Thumbnail has been successfully substitued</source>
<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 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>
@@ -7124,8 +7114,8 @@
<target state="translated">Een selectie</target>
<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="51">eventsmanager/notify/validationreminder.php</jms:reference-file>
<jms:reference-file line="53">eventsmanager/notify/validationreminder.php</jms:reference-file>
<jms:reference-file line="57">eventsmanager/notify/validationreminder.php</jms:reference-file>
<jms:reference-file line="59">eventsmanager/notify/validationreminder.php</jms:reference-file>
</trans-unit>
<trans-unit id="bb7d1104896554f9308dee9aef38ea55899ba1ab" resname="Unhandled Error" approved="yes">
<source>Unhandled Error</source>
@@ -7350,7 +7340,7 @@
<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="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>
</trans-unit>
<trans-unit id="83da6b62512e6597a104cf295a8f050cd9799a6d" resname="Validation from %user%">
@@ -7431,7 +7421,7 @@
<trans-unit id="f5bd306a7ccf0851eeefd7659ac5c01c382df934" resname="Vocabulary not found" approved="yes">
<source>Vocabulary not found</source>
<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 id="a1e3e6d2f9b416cfab10df81ce100f4fc43eb90a" resname="Vocabulary type" approved="yes">
<source>Vocabulary type</source>
@@ -9675,7 +9665,7 @@
<trans-unit id="afaee7bf6eca9099dc9356fbc46fb4f1716b8916" resname="an error occured" approved="yes">
<source>an error occured</source>
<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 id="feab893253be204583342aa21a1c6e355f805969" resname="an error occured : %message%">
<source>an error occured : %message%</source>
@@ -9759,8 +9749,8 @@
<trans-unit id="d59bc356bd632596c602560d44e1ed9cb7145699" resname="boutton::ajouter" approved="yes">
<source>boutton::ajouter</source>
<target state="translated">Toevoegen</target>
<jms:reference-file line="253">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="254">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>
</trans-unit>
<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="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="254">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="255">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="40">Bridge/Flickr/photo_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>
<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="392">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="393">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="24">web/report/all_content.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">
<source>boutton::remplacer</source>
<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 id="6b9c19dded5ae1d0dbe62a14e2754f2c8cf65302" resname="boutton::renouveller" approved="yes">
<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="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="350">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="351">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="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>
@@ -10377,7 +10367,7 @@
<trans-unit id="8abba1c9ff44c3fcc4d30726337bc02847d67235" resname="edit::preset:: titre" approved="yes">
<source>edit::preset:: titre</source>
<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 id="869b2f5267c5abc112d0f6281b4201a228054f92" resname="effacer (OK) ou quitter (Annuler) ?">
<source>effacer (OK) ou quitter (Annuler) ?</source>
@@ -10491,10 +10481,10 @@
<trans-unit id="a64e848c2600a26fdf2c6b8cfafda22229016983" resname="file is not valid" approved="yes">
<source>file is not valid</source>
<target state="translated">bestand is niet geldig</target>
<jms:reference-file line="214">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="217">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="240">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="269">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="216">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="219">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="242">Controller/Prod/ToolsController.php</jms:reference-file>
<jms:reference-file line="271">Controller/Prod/ToolsController.php</jms:reference-file>
</trans-unit>
<trans-unit id="6117e45ab57f8660d866a21ca5e9d2c31dbc1945" resname="flash">
<source>flash</source>
@@ -11476,13 +11466,13 @@
<trans-unit id="02e53272b6740f58947e81b6fd23e62e2ca5c301" resname="phraseanet:: presse-papier" approved="yes">
<source>phraseanet:: presse-papier</source>
<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 id="da1f4cb9f98aef274dbb8f5992dedaf20e91ea71" resname="phraseanet:: preview" approved="yes">
<source>phraseanet:: preview</source>
<target state="translated">Voorvertoning</target>
<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 id="2baca947f8536e2ff6bab1c45c1876c04706a6a0" resname="phraseanet:: propositions" approved="yes">
<source>phraseanet:: propositions</source>
@@ -11506,7 +11496,7 @@
<source>phraseanet:: thesaurus</source>
<target state="translated">Thesaurus</target>
<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="235">web/thesaurus/thesaurus.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>
<target state="translated">Laden</target>
<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="34">admin/collection/suggested_value.html.twig</jms:reference-file>
</trans-unit>
@@ -11982,16 +11972,6 @@
<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>
</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">
<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>
@@ -12036,27 +12016,27 @@
<trans-unit id="64c5b2559a8a7877b0218fd056b3bc89d48a0937" resname="prod::edit: Confirmation Edition latitude longitude">
<source>prod::edit: Confirmation Edition latitude longitude</source>
<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 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>
<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 id="c3411dbdb5fa1963791b5e8d97b6f2c9532dded8" resname="prod::edit:confirm: Edition latitude longitude">
<source>prod::edit:confirm: Edition latitude longitude</source>
<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 id="e625a89e837b1b0b9450fb89ddc4f29b570df7ab" resname="prod::edit:confirm: No">
<source>prod::edit:confirm: No</source>
<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 id="683af4416e59f0bfc4663f1627063c50c9205df1" resname="prod::edit:confirm: Yes">
<source>prod::edit:confirm: Yes</source>
<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 id="dc14b0cfd6da32eb4f1c2c2697dbb13a44c114f2" resname="prod::edit:story select all">
<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">
<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>
<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 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>
<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 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>
<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 id="93a5e45cf78591b66011a369a41a9faae6439da0" resname="prod::editing: modeles de fiches" approved="yes">
<source>prod::editing: modeles de fiches</source>
<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 id="43cef7ae638274317ae80eeb9d2207fbd8c60889" resname="prod::editing: rechercher-remplacer" approved="yes">
<source>prod::editing: rechercher-remplacer</source>
<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 id="1a368232d8ba90d4b168be2a328b32b2889a909c" resname="prod::editing: valider ou annuler les modifications" approved="yes">
<source>prod::editing: valider ou annuler les modifications</source>
<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 id="f5b80c50fa70208435fd889b73915ca753efabd3" resname="prod::editing::annulation: abandonner les modification ?" approved="yes">
<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">
<source>prod::editing::replace: remplacer dans le champ</source>
<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 id="5abac240c44453bcb822102437d5b2e95115dbe2" resname="prod::editing::replace: remplacer dans tous les champs" approved="yes">
<source>prod::editing::replace: remplacer dans tous les champs</source>
<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 id="7ba84a24ce43f7192d766a7afcda8d7de22ba760" resname="prod::editing:indexation en cours" approved="yes">
<source>prod::editing:indexation en cours</source>
<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 id="f2dbeebb5642463cc9d946ac5fef8b54e3ef9c8d" resname="prod::editing:remplace: chaine remplacante" approved="yes">
<source>prod::editing:remplace: chaine remplacante</source>
<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 id="2d8fd9918eb060abef1aff6634ede1135c2f898a" resname="prod::editing:remplace: options de remplacement" approved="yes">
<source>prod::editing:remplace: options de remplacement</source>
<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 id="9b33f1b01e6908366fc4b3f960d1869ccf1ea6a2" resname="prod::editing:remplace::option : utiliser une expression reguliere" approved="yes">
<source>prod::editing:remplace::option : utiliser une expression reguliere</source>
<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 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>
<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 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>
<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 id="5f18e2b78a5091db78a4adbd14e912959070ebd5" resname="prod::editing:remplace::option respecter la casse" approved="yes">
<source>prod::editing:remplace::option respecter la casse</source>
<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 id="27a3b22c9b8b1abb910147d1d3a556d038f0ab50" resname="prod::editing:remplace::option: remplacer toutes les occurences" approved="yes">
<source>prod::editing:remplace::option: remplacer toutes les occurences</source>
<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 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>
<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 id="dd5e4eca9dfa743d305cd038b0c53b0470c71c61" resname="prod::editing:replace: chaine a rechercher" approved="yes">
<source>prod::editing:replace: chaine a rechercher</source>
<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 id="021da4e7ad79ba6ef0855ecca3539db02b2d12f9" resname="prod::export: send mail notification">
<source>prod::export: send mail notification</source>
@@ -12247,7 +12227,7 @@
<trans-unit id="aaf12963abad8750feb02524d4727cd3dec4a078" resname="prod::thesaurusTab:dlg:%number% record(s) updated">
<source>prod::thesaurusTab:dlg:%number% record(s) updated</source>
<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 id="36ff5f310aa6baf4877a51fdd9ee0e611e1700e2" resname="prod::thesaurusTab:dlg:Acceptation en cours." approved="yes">
<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%)">
<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>
<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 id="1f6ab998dc34b364aa453a71a312e13df837849c" resname="prod::thesaurusTab:thesaurus" approved="yes">
<source>prod::thesaurusTab:thesaurus</source>
@@ -12363,7 +12343,7 @@
<source>prod::tools: document</source>
<target state="new">prod::tools: document</target>
<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 id="e36d93428a247d085ffbb974db21290395643463" resname="prod::videoTools:chapterTitle">
<source>prod::videoTools:chapterTitle</source>
@@ -12416,6 +12396,278 @@
<target state="new">prod:edit: video-editor</target>
<jms:reference-file line="116">Controller/Prod/LanguageController.php</jms:reference-file>
</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">
<source>prod:mapbox Change position</source>
<target state="new">prod:mapbox Change position</target>
@@ -12827,7 +13079,7 @@
<trans-unit id="e32952b1a087c6ba28e13097e0ebb5395c2f2105" resname="reponses::document sans titre" approved="yes">
<source>reponses::document sans titre</source>
<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 id="3efac4485920b8a4db663f9d5295e6fabd4e4a99" resname="report:: (connexions)">
<source>report:: (connexions)</source>
@@ -13546,12 +13798,12 @@
<trans-unit id="5e97a32a49cefaf5c4eb26080caf50d7ac7ea102" resname="task::archive:Archivage" approved="yes">
<source>task::archive:Archivage</source>
<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 id="b94199880758a342c5de52be020699d9b789a7a2" resname="task::archive:Archiving files found into a 'hotfolder'" approved="yes">
<source>task::archive:Archiving files found into a 'hotfolder'</source>
<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 id="af67e20e5e01d46ece2e0eb262b1b0bb9df679d4" resname="task::archive:archivage sur base/collection/" approved="yes">
<source>task::archive:archivage sur base/collection/</source>
@@ -14404,127 +14656,127 @@
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april">
<source>workzone:datepicker:april</source>
<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>
</trans-unit>
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august">
<source>workzone:datepicker:august</source>
<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>
</trans-unit>
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december">
<source>workzone:datepicker:december</source>
<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>
</trans-unit>
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february">
<source>workzone:datepicker:february</source>
<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>
</trans-unit>
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday">
<source>workzone:datepicker:friday</source>
<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>
</trans-unit>
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january">
<source>workzone:datepicker:january</source>
<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>
</trans-unit>
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july">
<source>workzone:datepicker:july</source>
<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>
</trans-unit>
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june">
<source>workzone:datepicker:june</source>
<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>
</trans-unit>
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march">
<source>workzone:datepicker:march</source>
<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>
</trans-unit>
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may">
<source>workzone:datepicker:may</source>
<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>
</trans-unit>
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday">
<source>workzone:datepicker:monday</source>
<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>
</trans-unit>
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
<source>workzone:datepicker:nextText</source>
<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>
</trans-unit>
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november">
<source>workzone:datepicker:november</source>
<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>
</trans-unit>
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october">
<source>workzone:datepicker:october</source>
<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>
</trans-unit>
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
<source>workzone:datepicker:prevText</source>
<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>
</trans-unit>
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday">
<source>workzone:datepicker:saturday</source>
<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>
</trans-unit>
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september">
<source>workzone:datepicker:september</source>
<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>
</trans-unit>
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday">
<source>workzone:datepicker:sunday</source>
<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>
</trans-unit>
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday">
<source>workzone:datepicker:thursday</source>
<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>
</trans-unit>
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday">
<source>workzone:datepicker:tuesday</source>
<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>
</trans-unit>
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday">
<source>workzone:datepicker:wednesday</source>
<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>
</trans-unit>
<trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed">

View File

@@ -1,6 +1,6 @@
<?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">
<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>
<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>

View File

@@ -1,6 +1,6 @@
<?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">
<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>
<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>

View File

@@ -1,6 +1,6 @@
<?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">
<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>
<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>

View File

@@ -1,6 +1,6 @@
<?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">
<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>
<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>

View File

@@ -84,7 +84,7 @@
<div class="control-group text-center">
<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>
<input type="submit" class="btn btn-primary btn-green save-expose"

View File

@@ -1,163 +1,201 @@
<div class="expose-edit-wrapper">
<div class="expose-edit-wrapper" style="margin-top: 100px">
<br/>
<br/>
<br/>
<br/>
<form id="publication-data-form" >
<div class="edit-publication-block">
<div class="ui-widget">
<label>Name </label>
<input type="text" value="{{ publication.title }}" name="title" class="publication-field"/>
</div>
<div class="ui-widget">
<label>Slug: </label>
<input type="text" value="{{ publication.slug }}" name="slug" class=" slug publication-field"/><input type="button"
class="blue_button"
value="check slug availability">
</div>
<div class="ui-widget">
<label>Parent publication </label>
<div id="publication-list-data" class="ui-widget publication_parent_wrapper ">
{% if publication.parent.id %}
{% set parentId = publication.parent.id %}
{% endif %}
<select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">Select a parent publication</option>
{% if publication.parent %}
<option value="{{ publication.parent.id }}" selected="selected">{{ publication.parent.title }}</option>
{% endif %}
</select>
</div>
</div>
<div class="ui-widget profile-wrapper hide">
<label>Profile </label>
{% set nbProfile = publication.profile|length %}
{% block css %}
<style type="text/css">
#permission-editing td, #permission-editing th {
min-width: 150px;
text-align: center;
height: 50px;
}
</style>
{% endblock %}
<select id="profile-field" name="profile" tabindex="-1" aria-hidden="true"
<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">
<br/>
<form id="publication-data-form" >
<div class="edit-publication-block">
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Name' | trans }}</label>
<input type="text" value="{{ publication.title }}" name="title" class="publication-field"/>
</div>
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Slug' | trans }}</label>
<input type="text" value="{{ publication.slug }}" name="slug" class=" slug publication-field"/><input type="button"
class="blue_button"
value="check slug availability">
</div>
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Parent Publication' | trans }}</label>
<div id="publication-list-data" class="ui-widget publication_parent_wrapper ">
{% if publication.parent.id %}
{% set parentId = publication.parent.id %}
{% endif %}
<select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">Select Profile</option>
{% if nbProfile %}
<option value="{{ publication.profile.id }}">{{ publication.profile.name }}</option>
<option value="">{{ 'prod:expose:publication:Select a parent publication' | trans }}</option>
{% if publication.parent %}
<option value="{{ publication.parent.id }}" selected="selected">{{ publication.parent.title }}</option>
{% endif %}
</select>
</div>
<div class="ui-widget">
<label>Enabled </label>
<label class="switch">
<input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled"
{% if publication.enabled == 1 %} checked {% endif %}
>
<span class="slider round"></span>
</label>
</div>
<div class="ui-widget available-wrapper">
<label>Available (leave blank for permanent publication): </label>
<div class="available-widget">
<label>From </label>
<input type="text" value="{{ publication.config.beginsAt }}" name="beginsAt" class="use-datepicker publication-field"/>
</div>
<div class="available-widget">
<label>To </label>
<input type="text" value="{{ publication.config.expiresAt }}" name="expiresAt" class="use-datepicker publication-field"/>
</div>
</div>
<div class="ui-widget">
<label>Publicity listing </label>
<label class="switch">
<input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed"
{% if publication.publiclyListed == 1 %} checked {% endif %}
>
<span class="slider round"></span>
</label>
</div>
<div class="ui-widget access-wrapper available-wrapper">
<label>Access rules </label>
<div class="available-widget">
<select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">open access</option>
<option value="password" {% if publication.securityMethod == 'password'%} selected="selected" {% endif %}>password</option>
<option value="authentication" {% if publication.securityMethod == 'authentication'%} selected="selected" {% endif %}>users</option>
</select>
</div>
<div class="available-widget ui-widget securityOptions_wrapper visibility-hidden">
<input class="publication-field" type="text" name="password" placeholder="Password"
id="publication_password"/>
</div>
<div class="available-widget ui-widget publication_securityMethod_error hidden"
id="publication_securityMethod_error">
<p class="error form-error alert alert-error">Not implemented</p>
</div>
</div>
<div class="ui-widget">
<label>Layout </label>
<select id="publication_layout" name="layout" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">Select Layout</option>
<option value="gallery" {% if publication.layout == 'gallery'%} selected="selected" {% endif %}>Gallery</option>
<option value="mapbox" {% if publication.layout == 'mapbox'%} selected="selected" {% endif %}>Mapbox</option>
<option value="download" {% if publication.layout == 'download'%} selected="selected" {% endif %}>Download</option>
</select>
</div>
<div class="ui-widget">
<label>Theme </label>
<select id="theme-field" name="theme" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">Select Theme</option>
<option value="light" {% if publication.theme == 'light'%} selected="selected" {% endif %}>Light</option>
<option value="dark" {% if publication.theme == 'dark'%} selected="selected" {% endif %}>Dark</option>
</select>
</div>
</div>
</form>
<div class="ui-widget profile-wrapper hide">
<label>{{ 'prod:expose:publication:Profile' | trans }}</label>
{% set nbProfile = publication.profile|length %}
<form name="publication-json" id="publication-json" class="text-center">
<div id="advancedSettingBlock">
<h3 class="toggleSetting">Advanced setting</h3>
<div id="advancedSettingInner" class="hidden">
<div>
<select id="profile-field" name="profile" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">{{ 'prod:expose:publication:Select Profile' | trans }}</option>
{% if nbProfile %}
<option value="{{ publication.profile.id }}">{{ publication.profile.name }}</option>
{% endif %}
</select>
</div>
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Enabled' | trans }} </label>
<label class="switch">
<input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled"
{% if publication.enabled == 1 %} checked {% endif %}
>
<span class="slider round"></span>
</label>
</div>
<div class="ui-widget available-wrapper">
<label>{{ 'prod:expose:publication:Available (leave blank for permanet publication)' | trans }}</label>
<div class="available-widget">
<label>{{ 'prod:expose:publication:From' | trans }}</label>
<input type="text" value="{{ publication.config.beginsAt }}" name="beginsAt" class="use-datepicker publication-field"/>
</div>
<div class="available-widget">
<label>{{ 'prod:expose:publication:To' | trans }} </label>
<input type="text" value="{{ publication.config.expiresAt }}" name="expiresAt" class="use-datepicker publication-field"/>
</div>
</div>
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Publicly listing' | trans }}</label>
<label class="switch">
<input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed"
{% if publication.publiclyListed == 1 %} checked {% endif %}
>
<span class="slider round"></span>
</label>
</div>
<div class="ui-widget access-wrapper available-wrapper">
<label>{{ 'prod:expose:publication:Access rules' | trans }}</label>
<div class="available-widget">
<select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">{{ 'prod:expose:publication:Open access' | trans }}</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 %}>{{ 'prod:expose:publication:Users' | trans }}</option>
</select>
</div>
<div class="available-widget ui-widget securityOptions_wrapper visibility-hidden">
<input class="publication-field" type="text" name="password" placeholder="Password"
id="publication_password"/>
</div>
<div class="available-widget ui-widget publication_securityMethod_error hidden"
id="publication_securityMethod_error">
<p class="error form-error alert alert-error">Not implemented</p>
</div>
</div>
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Layout' | trans }} </label>
<select id="publication_layout" name="layout" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">{{ 'prod:expose:publication:Select Layout' | trans }}</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 %}>{{ 'prod:expose:publication:Mapbox' | trans }}</option>
<option value="download" {% if publication.layout == 'download'%} selected="selected" {% endif %}>{{ 'prod:expose:publication:Download' | trans }}</option>
</select>
</div>
<div class="ui-widget">
<label>{{ 'prod:expose:publication:Theme' | trans }} </label>
<select id="theme-field" name="theme" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">{{ 'prod:expose:publication:Select Theme' | trans }}</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 %}>{{ 'prod:expose:publication:Dark' | trans }}</option>
</select>
</div>
</div>
</form>
<form name="publication-json" id="publication-json" class="text-center">
<div id="advancedSettingBlock">
<h4 class="toggleSetting">{{ 'prod:expose:publication:Advanced setting' | trans }}</h4>
<div id="advancedSettingInner" class="hidden">
<div>
<textarea name="advancedSetting" id="advancedSetting" cols="100"
rows="11"></textarea></div>
</div>
</div>
<div class="publication-btn-container submit-blockr">
<p class="text-center"><span id="pub-error" class="hidden alert alert-error"></span></p>
<p class="text-center"><span id="pub-success" class="hidden alert alert-success"></span></p>
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<div class="ui-dialog-buttonset">
<button type="button"
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">{{ 'prod:expose:publication:Cancel'| trans }}</span>
</button>
<button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="update-publication">
{{ 'prod:expose:publication:Update Publication'| trans }}
</button>
</div>
</div>
<div class="publication-btn-container submit-blockr">
<p class="text-center"><span id="pub-error" class="hidden alert alert-error"></span></p>
<p class="text-center"><span id="pub-success" class="hidden alert alert-success"></span></p>
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<div class="ui-dialog-buttonset">
<button type="button"
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>
</button>
<button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="update-publication">
Update publication
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</form>
</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 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 publicationForm = publicationEdit.find("#publication-data-form");
var publicationParent = publicationEdit.find("#publication_parent");
var securityMethod = publicationEdit.find("#publication_securityMethod");
var profileField = publicationEdit.find("#profile-field");
var userList = publicationEdit.find("#user-list");
var groupList = publicationEdit.find("#group-list");
var advancedSetting = publicationEdit.find("#advancedSetting");
var publicationFieldClass = publicationEdit.find(".publication-field");
var permissionList = publicationEdit.find("#permission-list");
$.datepicker.regional['default'] = {
closeText: "Close",
@@ -172,13 +210,14 @@
altField: ".alternate",
altFormat: "yy-mm-dd",
minDate: 0
};
$(".use-datepicker").datepicker($.datepicker.regional['default']);
//generate publication list
$(document).ready(function () {
$( "#publication-tabs" ).tabs();
publicationEdit.find('.toggleSetting').on('click', function (e) {
$(this).toggleClass('open');
$(this).next("div").toggleClass('hidden');
@@ -207,7 +246,7 @@
url: `/prod/expose/list-profile?exposeName={{ exposeName }}`,
success: function (data) {
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 = '';
if ({{ nbProfile }} && data.profiles[i].id === '{{ publication.profile.id }}') {
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**/
function booleanizeObject(obj) {
var keys = Object.keys(obj);
@@ -301,6 +628,10 @@
function removeSecurityField() {
var datavalueMinus = buildData();
if (publicationEdit.find('input[name="slug"]').val() === '') {
datavalueMinus['slug'] = null;
}
if (publicationParent.val() == "") {
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>
<style>
.visibility-hidden {

View File

@@ -8,64 +8,64 @@
<form id="publication-data-form" >
<div class="edit-publication-block">
<div class="ui-widget">
<label>Name </label>
<label>{{ 'prod:expose:publication:Name' | trans }}</label>
<input type="text" value="" name="title" class="publication-field"/>
</div>
<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"
class="blue_button"
value="check slug availability">
</div>
<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 ">
<select id="publication_parent" name="parentId" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">Select a parent publication</option>
<option value="">{{ 'prod:expose:publication:Select a parent publication' | trans }}</option>
</select>
</div>
</div>
<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"
class="publication-field">
<option value="">Select Profile</option>
<option value="">{{ 'prod:expose:publication:Select Profile' | trans }}</option>
</select>
</div>
<div class="ui-widget">
<label>Enabled </label>
<label>{{ 'prod:expose:publication:Enabled' | trans }}</label>
<label class="switch">
<input id="enabled_combobox" type="checkbox" class="publication-field" name="enabled">
<span class="slider round"></span>
</label>
</div>
<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">
<label>From </label>
<label>{{ 'prod:expose:publication:From' | trans }}</label>
<input type="text" value="" name="beginsAt" class="use-datepicker publication-field"/>
</div>
<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"/>
</div>
</div>
<div class="ui-widget">
<label>Publicity listing </label>
<label>{{ 'prod:expose:publication:Publicly listing' | trans }}</label>
<label class="switch">
<input id="publication_publiclyListed" type="checkbox" class="publication-field" name="publiclyListed">
<span class="slider round"></span>
</label>
</div>
<div class="ui-widget access-wrapper available-wrapper">
<label>Access rules </label>
<label>{{ 'prod:expose:publication:Access rules' | trans }}</label>
<div class="available-widget">
<select id="publication_securityMethod" name="securityMethod" tabindex="-1" aria-hidden="true"
class="publication-field">
<option value="">open access</option>
<option value="password">password</option>
<option value="authentication">users</option>
<option value="">{{ 'prod:expose:publication:Open access' | trans }}</option>
<option value="password">{{ 'prod:expose:publication:Password' | trans }}</option>
<option value="authentication">{{ 'prod:expose:publication:Users' | trans }}</option>
</select>
</div>
<div class="available-widget ui-widget securityOptions_wrapper visibility-hidden">
@@ -78,22 +78,22 @@
</div>
</div>
<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"
class="publication-field">
<option value="" selected="selected">Select Layout</option>
<option value="gallery">Gallery</option>
<option value="mapbox">Mapbox</option>
<option value="download">Download</option>
<option value="" selected="selected">{{ 'prod:expose:publication:Select Layout' | trans }}</option>
<option value="gallery">{{ 'prod:expose:publication:Gallery' | trans }}</option>
<option value="mapbox">{{ 'prod:expose:publication:Mapbox' | trans }}</option>
<option value="download">{{ 'prod:expose:publication:Download' | trans }}</option>
</select>
</div>
<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"
class="publication-field">
<option value="">Select Theme</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
<option value="">{{ 'prod:expose:publication:Select Theme' | trans }}</option>
<option value="light">{{ 'prod:expose:publication:Light' | trans }}</option>
<option value="dark">{{ 'prod:expose:publication:Dark' | trans }}</option>
</select>
</div>
</div>
@@ -101,7 +101,7 @@
<form name="publication-json" id="publication-json" class="text-center">
<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>
<textarea name="advancedSetting" id="advancedSetting" cols="100"
@@ -116,10 +116,10 @@
<div class="ui-dialog-buttonset">
<button type="button"
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 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>
</div>
@@ -216,6 +216,10 @@
function removeSecurityFieldDialogAdd() {
var datavalueMinus = extractData();
if ($('#DIALOG-expose-add').find('input[name="slug"]').val() === '') {
datavalueMinus['slug'] = null;
}
if ($("#DIALOG-expose-add #publication_parent").val() == "") {
delete datavalueMinus['parentId'];
}
@@ -240,6 +244,14 @@
}
$('#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 {
$("#pub-success").addClass("hidden");
$("#pub-error").addClass("hidden");

View File

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

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 %}
<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>
{% if pubAssets[0].publication.children|length == 0 %}
<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>
{% else %}
<span>Parent publication</span>
<span>{{ 'prod:expose:publication:Parent Publication' | trans }}</span>
{% endif %}
</div>

View File

@@ -467,11 +467,11 @@
{% macro make_expose_bloc(app, 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']) %}
<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 %}
{% if expose_list[key].activate_expose %}
<option value="{{ key }}">{{ key }}</option>
@@ -479,12 +479,12 @@
{% endfor %}
</select>
</div>
<div class="add_expose_block">
<div class="add_expose_block" style="padding:10px;">
<a id="add_publication" class="add_publication" href="#" >
<span>{{ 'prod:: workzone:expose: Add publication' | trans }}</span>
<img src="/assets/common/images/icons/Basket-New.png" title="New Expose">
<span>{{ 'prod:expose:Add publication' | trans }}</span>
<img src="/assets/common/images/icons/Basket-New.png" title="{{ 'prod:expose:Add publication' | trans }}">
</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;">
<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'];
$repo = $em->getRepository('Phraseanet:ValidationParticipant');
/* @var $repo Alchemy\Phrasea\Model\Repositories\ValidationParticipantRepository */
$expireDate = new \DateTime('+8 days');
$participants = $repo->findNotConfirmedAndNotRemindedParticipantsByExpireDate($expireDate);
$participants = $repo->findNotConfirmedAndNotRemindedParticipantsByTimeLeftPercent(20, new \DateTime());
$this->assertEquals(3, count($participants));
}
}