mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-23 09:53:15 +00:00
Merge branch 'master' into PHRAS-2972_update_readme-1
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
/.env.*
|
/.env.*
|
||||||
/env.*
|
/env.*
|
||||||
/.git
|
/.git
|
||||||
|
/.gitignore
|
||||||
/.travis.yml
|
/.travis.yml
|
||||||
/AUTHORS
|
/AUTHORS
|
||||||
/CONTRIBUTORS
|
/CONTRIBUTORS
|
||||||
|
60
Dockerfile
60
Dockerfile
@@ -4,7 +4,11 @@
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
FROM php:7.0-fpm-stretch as phraseanet-system
|
FROM php:7.0-fpm-stretch as phraseanet-system
|
||||||
RUN apt-get update \
|
|
||||||
|
ENV FFMPEG_VERSION=4.2.2
|
||||||
|
|
||||||
|
RUN echo "deb http://deb.debian.org/debian stretch main non-free" > /etc/apt/sources.list \
|
||||||
|
&& apt-get update \
|
||||||
&& apt-get install -y \
|
&& apt-get install -y \
|
||||||
apt-transport-https \
|
apt-transport-https \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
@@ -40,6 +44,29 @@ RUN apt-get update \
|
|||||||
libreoffice-math \
|
libreoffice-math \
|
||||||
libreoffice-writer \
|
libreoffice-writer \
|
||||||
libreoffice-pdfimport \
|
libreoffice-pdfimport \
|
||||||
|
# FFmpeg
|
||||||
|
yasm \
|
||||||
|
libvorbis-dev \
|
||||||
|
texi2html \
|
||||||
|
nasm \
|
||||||
|
zlib1g-dev \
|
||||||
|
libx264-dev \
|
||||||
|
libfdk-aac-dev \
|
||||||
|
libopus-dev \
|
||||||
|
libvpx-dev \
|
||||||
|
libmp3lame-dev \
|
||||||
|
libogg-dev \
|
||||||
|
libopencore-amrnb-dev \
|
||||||
|
libopencore-amrwb-dev \
|
||||||
|
libdc1394-22-dev \
|
||||||
|
libx11-dev \
|
||||||
|
libswscale-dev \
|
||||||
|
libpostproc-dev \
|
||||||
|
libxvidcore-dev \
|
||||||
|
libtheora-dev \
|
||||||
|
libgsm1-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
# End FFmpeg
|
||||||
&& update-locale "LANG=fr_FR.UTF-8 UTF-8" \
|
&& update-locale "LANG=fr_FR.UTF-8 UTF-8" \
|
||||||
&& dpkg-reconfigure --frontend noninteractive locales \
|
&& dpkg-reconfigure --frontend noninteractive locales \
|
||||||
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
||||||
@@ -54,6 +81,37 @@ RUN apt-get update \
|
|||||||
&& docker-php-ext-enable redis amqp zmq imagick \
|
&& docker-php-ext-enable redis amqp zmq imagick \
|
||||||
&& pecl clear-cache \
|
&& pecl clear-cache \
|
||||||
&& docker-php-source delete \
|
&& docker-php-source delete \
|
||||||
|
&& mkdir /tmp/ffmpeg \
|
||||||
|
&& curl -s https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 | tar jxf - -C /tmp/ffmpeg \
|
||||||
|
&& ( \
|
||||||
|
cd /tmp/ffmpeg/ffmpeg-${FFMPEG_VERSION} \
|
||||||
|
&& ./configure \
|
||||||
|
--enable-gpl \
|
||||||
|
--enable-nonfree \
|
||||||
|
--enable-libfdk-aac \
|
||||||
|
--enable-libfdk_aac \
|
||||||
|
--enable-libgsm \
|
||||||
|
--enable-libmp3lame \
|
||||||
|
--enable-libtheora \
|
||||||
|
--enable-libvorbis \
|
||||||
|
--enable-libvpx \
|
||||||
|
--enable-libfreetype \
|
||||||
|
--enable-libopus \
|
||||||
|
--enable-libx264 \
|
||||||
|
--enable-libxvid \
|
||||||
|
--enable-zlib \
|
||||||
|
--enable-postproc \
|
||||||
|
--enable-swscale \
|
||||||
|
--enable-pthreads \
|
||||||
|
--enable-libdc1394 \
|
||||||
|
--enable-version3 \
|
||||||
|
--enable-libopencore-amrnb \
|
||||||
|
--enable-libopencore-amrwb \
|
||||||
|
&& make \
|
||||||
|
&& make install \
|
||||||
|
&& make distclean \
|
||||||
|
) \
|
||||||
|
&& rm -rf /tmp/ffmpeg \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists \
|
&& rm -rf /var/lib/apt/lists \
|
||||||
&& mkdir /entrypoint /var/alchemy \
|
&& mkdir /entrypoint /var/alchemy \
|
||||||
|
@@ -57,6 +57,7 @@ use Alchemy\Phrasea\Command\User\UserCreateCommand;
|
|||||||
use Alchemy\Phrasea\Command\User\UserPasswordCommand;
|
use Alchemy\Phrasea\Command\User\UserPasswordCommand;
|
||||||
use Alchemy\Phrasea\Command\User\UserListCommand;
|
use Alchemy\Phrasea\Command\User\UserListCommand;
|
||||||
use Alchemy\Phrasea\Command\UpgradeDBDatas;
|
use Alchemy\Phrasea\Command\UpgradeDBDatas;
|
||||||
|
use Alchemy\Phrasea\Command\ApplyRightsCommand;
|
||||||
|
|
||||||
require_once __DIR__ . '/../lib/autoload.php';
|
require_once __DIR__ . '/../lib/autoload.php';
|
||||||
|
|
||||||
@@ -93,6 +94,7 @@ $cli->command(new \module_console_aboutLicense('about:license'));
|
|||||||
$cli->command(new CheckConfig('check:config'));
|
$cli->command(new CheckConfig('check:config'));
|
||||||
|
|
||||||
$cli->command(new UpgradeDBDatas('system:upgrade-datas'));
|
$cli->command(new UpgradeDBDatas('system:upgrade-datas'));
|
||||||
|
$cli->command(new ApplyRightsCommand('system:apply-rights'));
|
||||||
|
|
||||||
$cli->command(new \module_console_systemMailCheck('system:mail-check'));
|
$cli->command(new \module_console_systemMailCheck('system:mail-check'));
|
||||||
$cli->command(new \module_console_systemBackupDB('system:backup-db'));
|
$cli->command(new \module_console_systemBackupDB('system:backup-db'));
|
||||||
@@ -160,9 +162,9 @@ $cli->command(new QueryParseCommand());
|
|||||||
$cli->command(new QuerySampleCommand());
|
$cli->command(new QuerySampleCommand());
|
||||||
$cli->command(new FindConceptsCommand());
|
$cli->command(new FindConceptsCommand());
|
||||||
|
|
||||||
$cli->command($cli['alchemy_worker.commands.run_dispatcher_command']);
|
//$cli->command($cli['alchemy_worker.commands.run_dispatcher_command']);
|
||||||
$cli->command($cli['alchemy_worker.commands.run_worker_command']);
|
//$cli->command($cli['alchemy_worker.commands.run_worker_command']);
|
||||||
$cli->command($cli['alchemy_worker.commands.show_configuration']);
|
//$cli->command($cli['alchemy_worker.commands.show_configuration']);
|
||||||
|
|
||||||
$cli->loadPlugins();
|
$cli->loadPlugins();
|
||||||
|
|
||||||
|
0
cache/.gitkeep
vendored
0
cache/.gitkeep
vendored
@@ -96,7 +96,7 @@
|
|||||||
"league/flysystem": "^1.0",
|
"league/flysystem": "^1.0",
|
||||||
"league/flysystem-aws-s3-v2": "^1.0",
|
"league/flysystem-aws-s3-v2": "^1.0",
|
||||||
"league/fractal": "dev-webgalleries#af1acc0275438571bc8c1d08a05a4b5af92c9f97 as 0.13.0",
|
"league/fractal": "dev-webgalleries#af1acc0275438571bc8c1d08a05a4b5af92c9f97 as 0.13.0",
|
||||||
"media-alchemyst/media-alchemyst": "^0.5.5",
|
"media-alchemyst/media-alchemyst": "^0.5.6",
|
||||||
"monolog/monolog": "~1.3",
|
"monolog/monolog": "~1.3",
|
||||||
"mrclay/minify": "~2.1.6",
|
"mrclay/minify": "~2.1.6",
|
||||||
"neutron/process-manager": "2.0.x-dev@dev",
|
"neutron/process-manager": "2.0.x-dev@dev",
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
"neutron/silex-imagine-provider": "~0.1.0",
|
"neutron/silex-imagine-provider": "~0.1.0",
|
||||||
"neutron/temporary-filesystem": "~2.1",
|
"neutron/temporary-filesystem": "~2.1",
|
||||||
"pagerfanta/pagerfanta": "^1.0",
|
"pagerfanta/pagerfanta": "^1.0",
|
||||||
"php-ffmpeg/php-ffmpeg": "~0.5.0",
|
"php-ffmpeg/php-ffmpeg": "^v0.15",
|
||||||
"php-xpdf/php-xpdf": "~0.2.1",
|
"php-xpdf/php-xpdf": "~0.2.1",
|
||||||
"exiftool/exiftool": "^11",
|
"exiftool/exiftool": "^11",
|
||||||
"ramsey/uuid": "^3.0",
|
"ramsey/uuid": "^3.0",
|
||||||
|
57
composer.lock
generated
57
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "5a4a0be62b13071a6b06893b7ce08372",
|
"content-hash": "008ff0b5d3d13b4f0ce5d34348ded83a",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "alchemy-fr/tcpdf-clone",
|
"name": "alchemy-fr/tcpdf-clone",
|
||||||
@@ -4331,16 +4331,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "media-alchemyst/media-alchemyst",
|
"name": "media-alchemyst/media-alchemyst",
|
||||||
"version": "0.5.5",
|
"version": "0.5.6",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/alchemy-fr/Media-Alchemyst.git",
|
"url": "https://github.com/alchemy-fr/Media-Alchemyst.git",
|
||||||
"reference": "3bd3204b69882f495adfb617383a077face92ed0"
|
"reference": "2b9f7697997f7863bbc3d08344c559a1cba519c2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/3bd3204b69882f495adfb617383a077face92ed0",
|
"url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/2b9f7697997f7863bbc3d08344c559a1cba519c2",
|
||||||
"reference": "3bd3204b69882f495adfb617383a077face92ed0",
|
"reference": "2b9f7697997f7863bbc3d08344c559a1cba519c2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -4350,7 +4350,7 @@
|
|||||||
"monolog/monolog": "~1.0",
|
"monolog/monolog": "~1.0",
|
||||||
"neutron/temporary-filesystem": "^2.1.1",
|
"neutron/temporary-filesystem": "^2.1.1",
|
||||||
"php": ">=5.3.3",
|
"php": ">=5.3.3",
|
||||||
"php-ffmpeg/php-ffmpeg": ">=0.4.2,<0.6",
|
"php-ffmpeg/php-ffmpeg": "^v0.15",
|
||||||
"php-mp4box/php-mp4box": "~0.3.0",
|
"php-mp4box/php-mp4box": "~0.3.0",
|
||||||
"php-unoconv/php-unoconv": "~0.3.1",
|
"php-unoconv/php-unoconv": "~0.3.1",
|
||||||
"pimple/pimple": "~1.0",
|
"pimple/pimple": "~1.0",
|
||||||
@@ -4401,7 +4401,7 @@
|
|||||||
"video",
|
"video",
|
||||||
"video processing"
|
"video processing"
|
||||||
],
|
],
|
||||||
"time": "2019-12-11T07:20:45+00:00"
|
"time": "2020-04-01T08:51:55+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "monolog/monolog",
|
"name": "monolog/monolog",
|
||||||
@@ -5147,29 +5147,29 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-ffmpeg/php-ffmpeg",
|
"name": "php-ffmpeg/php-ffmpeg",
|
||||||
"version": "0.5.1",
|
"version": "v0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git",
|
"url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git",
|
||||||
"reference": "c8949fe3df89edd7692368cc110a51a27971f28a"
|
"reference": "984dbd046b6d8c285f9e7419fc7645f197513bfa"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/c8949fe3df89edd7692368cc110a51a27971f28a",
|
"url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/984dbd046b6d8c285f9e7419fc7645f197513bfa",
|
||||||
"reference": "c8949fe3df89edd7692368cc110a51a27971f28a",
|
"reference": "984dbd046b6d8c285f9e7419fc7645f197513bfa",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"alchemy/binary-driver": "~1.5",
|
"alchemy/binary-driver": "^1.5 || ~2.0.0 || ^5.0",
|
||||||
"doctrine/cache": "~1.0",
|
"doctrine/cache": "^1.0",
|
||||||
"evenement/evenement": "~1.0",
|
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
|
||||||
"neutron/temporary-filesystem": "~2.1, >=2.1.1",
|
"neutron/temporary-filesystem": "^2.1.1",
|
||||||
"php": ">=5.3.3"
|
"php": "^5.3.9 || ^7.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "~3.7",
|
|
||||||
"sami/sami": "~1.0",
|
"sami/sami": "~1.0",
|
||||||
"silex/silex": "~1.0"
|
"silex/silex": "~1.0",
|
||||||
|
"symfony/phpunit-bridge": "^5.0.4"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg"
|
"php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg"
|
||||||
@@ -5177,7 +5177,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "0.5-dev"
|
"dev-master": "0.7-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -5199,6 +5199,21 @@
|
|||||||
"name": "Phraseanet Team",
|
"name": "Phraseanet Team",
|
||||||
"email": "info@alchemy.fr",
|
"email": "info@alchemy.fr",
|
||||||
"homepage": "http://www.phraseanet.com/"
|
"homepage": "http://www.phraseanet.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Patrik Karisch",
|
||||||
|
"email": "patrik@karisch.guru",
|
||||||
|
"homepage": "http://www.karisch.guru"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Romain Biard",
|
||||||
|
"email": "romain.biard@gmail.com",
|
||||||
|
"homepage": "https://www.strime.io/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jens Hausdorf",
|
||||||
|
"email": "hello@jens-hausdorf.de",
|
||||||
|
"homepage": "https://jens-hausdorf.de"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg",
|
"description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg",
|
||||||
@@ -5212,7 +5227,7 @@
|
|||||||
"video",
|
"video",
|
||||||
"video processing"
|
"video processing"
|
||||||
],
|
],
|
||||||
"time": "2014-08-26T08:46:56+00:00"
|
"time": "2020-03-23T09:32:09+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-mp4box/php-mp4box",
|
"name": "php-mp4box/php-mp4box",
|
||||||
@@ -7772,7 +7787,7 @@
|
|||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "mikey179/vfsStream",
|
"name": "mikey179/vfsstream",
|
||||||
"version": "v1.6.4",
|
"version": "v1.6.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@@ -15,6 +15,7 @@ chown -R app:app \
|
|||||||
FILE=config/configuration.yml
|
FILE=config/configuration.yml
|
||||||
|
|
||||||
if [ -f "$FILE" ]; then
|
if [ -f "$FILE" ]; then
|
||||||
|
bin/setup system:config set registry.general.title $PHRASEANET_PROJECT_NAME
|
||||||
echo "$FILE exists, skip setup."
|
echo "$FILE exists, skip setup."
|
||||||
else
|
else
|
||||||
echo "$FILE doesn't exist, entering setup..."
|
echo "$FILE doesn't exist, entering setup..."
|
||||||
|
@@ -167,11 +167,11 @@ class AccountService
|
|||||||
* @param string $login
|
* @param string $login
|
||||||
* @throws AccountException
|
* @throws AccountException
|
||||||
*/
|
*/
|
||||||
public function deleteAccount($login = null)
|
public function deleteAccount($login = null, array $grantedBaseIdList = array())
|
||||||
{
|
{
|
||||||
$user = $this->getUserOrCurrentUser($login);
|
$user = $this->getUserOrCurrentUser($login);
|
||||||
|
|
||||||
$this->userManipulator->delete($user);
|
$this->userManipulator->delete($user, $grantedBaseIdList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -328,11 +328,9 @@ class RegistrationService
|
|||||||
|
|
||||||
|
|
||||||
$autoReg = $acl->get_granted_base();
|
$autoReg = $acl->get_granted_base();
|
||||||
$granted = [];
|
|
||||||
foreach ($autoReg as $baseId => $collection) {
|
foreach ($autoReg as $baseId => $collection) {
|
||||||
$granted[$baseId] = $collection->get_label($this->app['locale']);
|
$granted[$baseId] = $collection->get_label($this->app['locale']);
|
||||||
}
|
|
||||||
if(count($granted) > 0) {
|
|
||||||
$this->app['manipulator.webhook-event']->create(
|
$this->app['manipulator.webhook-event']->create(
|
||||||
WebhookEvent::USER_REGISTRATION_GRANTED,
|
WebhookEvent::USER_REGISTRATION_GRANTED,
|
||||||
WebhookEvent::USER_REGISTRATION_TYPE,
|
WebhookEvent::USER_REGISTRATION_TYPE,
|
||||||
@@ -340,8 +338,11 @@ class RegistrationService
|
|||||||
'user_id' => $user->getId(),
|
'user_id' => $user->getId(),
|
||||||
'granted' => $granted,
|
'granted' => $granted,
|
||||||
'rejected' => []
|
'rejected' => []
|
||||||
]
|
],
|
||||||
|
[$baseId]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
unset($granted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -14,6 +14,8 @@ namespace Alchemy\Phrasea\Border;
|
|||||||
use Alchemy\Phrasea\Application;
|
use Alchemy\Phrasea\Application;
|
||||||
use Alchemy\Phrasea\Border\Checker\CheckerInterface;
|
use Alchemy\Phrasea\Border\Checker\CheckerInterface;
|
||||||
use Alchemy\Phrasea\Border\Attribute\AttributeInterface;
|
use Alchemy\Phrasea\Border\Attribute\AttributeInterface;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Exception\RuntimeException;
|
use Alchemy\Phrasea\Exception\RuntimeException;
|
||||||
use Alchemy\Phrasea\Metadata\Tag\TfArchivedate;
|
use Alchemy\Phrasea\Metadata\Tag\TfArchivedate;
|
||||||
use Alchemy\Phrasea\Metadata\Tag\TfQuarantine;
|
use Alchemy\Phrasea\Metadata\Tag\TfQuarantine;
|
||||||
@@ -333,7 +335,7 @@ class Manager
|
|||||||
$this->app['phraseanet.metadata-setter']->replaceMetadata($newMetadata, $element);
|
$this->app['phraseanet.metadata-setter']->replaceMetadata($newMetadata, $element);
|
||||||
|
|
||||||
if(!$nosubdef) {
|
if(!$nosubdef) {
|
||||||
$element->rebuild_subdefs();
|
$this->app['dispatcher']->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($element, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $element;
|
return $element;
|
||||||
|
89
lib/Alchemy/Phrasea/Command/ApplyRightsCommand.php
Normal file
89
lib/Alchemy/Phrasea/Command/ApplyRightsCommand.php
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file is part of Phraseanet
|
||||||
|
*
|
||||||
|
* (c) 2005-2020 Alchemy
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Command;
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use Alchemy\Phrasea\Model\Entities\User;
|
||||||
|
|
||||||
|
class ApplyRightsCommand extends Command
|
||||||
|
{
|
||||||
|
public function __construct($name = null)
|
||||||
|
{
|
||||||
|
parent::__construct($name);
|
||||||
|
|
||||||
|
$this->setDescription('Apply right on databox, inject appbox:basusr to dboxes:collusr')
|
||||||
|
->addOption('user_id', null, InputOption::VALUE_REQUIRED, 'the user ID to apply rights')
|
||||||
|
;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function doExecute(InputInterface $input, OutputInterface $output)
|
||||||
|
{
|
||||||
|
$userId = $input->getOption('user_id');
|
||||||
|
$userRepository = $this->container['repo.users'];
|
||||||
|
|
||||||
|
if ($userId) {
|
||||||
|
if (($user = $userRepository->find($userId)) === null) {
|
||||||
|
$output->writeln('user not found!');
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->injectRightsSbas($user);
|
||||||
|
} else {
|
||||||
|
foreach ($userRepository->findAll() as $user) {
|
||||||
|
$this->injectRightsSbas($user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$output->writeln('Apply right on databox finished!');
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function injectRightsSbas(User $user)
|
||||||
|
{
|
||||||
|
$userAcl = $this->container->getAclForUser($user);
|
||||||
|
|
||||||
|
foreach ($userAcl->get_granted_sbas() as $databox) {
|
||||||
|
|
||||||
|
$userAcl->delete_injected_rights_sbas($databox);
|
||||||
|
|
||||||
|
$sql = "INSERT INTO collusr
|
||||||
|
(site, usr_id, coll_id, mask_and, mask_xor, ord)
|
||||||
|
VALUES (:site_id, :usr_id, :coll_id, :mask_and, :mask_xor, :ord)";
|
||||||
|
$stmt = $databox->get_connection()->prepare($sql);
|
||||||
|
$iord = 0;
|
||||||
|
|
||||||
|
// fix collusr if user has right on collection
|
||||||
|
foreach ($userAcl->get_granted_base([], [$databox->get_sbas_id()]) as $collection) {
|
||||||
|
try {
|
||||||
|
$stmt->execute([
|
||||||
|
':site_id' => $this->container['conf']->get(['main', 'key']),
|
||||||
|
':usr_id' => $user->getId(),
|
||||||
|
':coll_id' => $collection->get_coll_id(),
|
||||||
|
':mask_and' => $userAcl->get_mask_and($collection->get_base_id()),
|
||||||
|
':mask_xor' => $userAcl->get_mask_xor($collection->get_base_id()),
|
||||||
|
':ord' => $iord++
|
||||||
|
]);
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$stmt->closeCursor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -383,7 +383,7 @@ class SubdefsController extends Controller
|
|||||||
Video::OPTION_GOPSIZE => "25",
|
Video::OPTION_GOPSIZE => "25",
|
||||||
Video::OPTION_SIZE => "480",
|
Video::OPTION_SIZE => "480",
|
||||||
Video::OPTION_FRAMERATE => "25",
|
Video::OPTION_FRAMERATE => "25",
|
||||||
Video::OPTION_VCODEC => "libtheora",
|
Video::OPTION_VCODEC => "libx264",
|
||||||
Video::OPTION_ACODEC => "libmp3lame",
|
Video::OPTION_ACODEC => "libmp3lame",
|
||||||
Subdef::OPTION_DEVICE => ["all"]
|
Subdef::OPTION_DEVICE => ["all"]
|
||||||
],
|
],
|
||||||
@@ -449,7 +449,7 @@ class SubdefsController extends Controller
|
|||||||
Video::OPTION_GOPSIZE => "25",
|
Video::OPTION_GOPSIZE => "25",
|
||||||
Video::OPTION_SIZE => "480",
|
Video::OPTION_SIZE => "480",
|
||||||
Video::OPTION_FRAMERATE => "25",
|
Video::OPTION_FRAMERATE => "25",
|
||||||
Video::OPTION_VCODEC => "libtheora",
|
Video::OPTION_VCODEC => "libx264",
|
||||||
Video::OPTION_ACODEC => "libfdk_aac",
|
Video::OPTION_ACODEC => "libfdk_aac",
|
||||||
Subdef::OPTION_DEVICE => ["all"]
|
Subdef::OPTION_DEVICE => ["all"]
|
||||||
],
|
],
|
||||||
|
@@ -515,9 +515,9 @@ class UserController extends Controller
|
|||||||
$denyColl[] = $label;
|
$denyColl[] = $label;
|
||||||
$hookData['rejected'][$bas] = $label;
|
$hookData['rejected'][$bas] = $label;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$this->app['manipulator.webhook-event']->create($hookName, $hookType, $hookData);
|
$this->app['manipulator.webhook-event']->create($hookName, $hookType, $hookData, [$bas]);
|
||||||
|
}
|
||||||
|
|
||||||
if ($user->hasMailNotificationsActivated() && (0 !== count($acceptColl) || 0 !== count($denyColl))) {
|
if ($user->hasMailNotificationsActivated() && (0 !== count($acceptColl) || 0 !== count($denyColl))) {
|
||||||
$message = '';
|
$message = '';
|
||||||
|
@@ -15,6 +15,7 @@ use Alchemy\Phrasea\Application\Helper\FilesystemAware;
|
|||||||
use Alchemy\Phrasea\Application\Helper\NotifierAware;
|
use Alchemy\Phrasea\Application\Helper\NotifierAware;
|
||||||
use Alchemy\Phrasea\Controller\Controller;
|
use Alchemy\Phrasea\Controller\Controller;
|
||||||
use Alchemy\Phrasea\Core\Event\ExportFailureEvent;
|
use Alchemy\Phrasea\Core\Event\ExportFailureEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\ExportMailEvent;
|
||||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
||||||
use Alchemy\Phrasea\Model\Manipulator\TokenManipulator;
|
use Alchemy\Phrasea\Model\Manipulator\TokenManipulator;
|
||||||
@@ -193,42 +194,26 @@ class ExportController extends Controller
|
|||||||
$token = $this->getTokenManipulator()->createEmailExportToken(serialize($list));
|
$token = $this->getTokenManipulator()->createEmailExportToken(serialize($list));
|
||||||
|
|
||||||
if (count($destMails) > 0) {
|
if (count($destMails) > 0) {
|
||||||
//zip documents
|
$emitterId = $this->getAuthenticatedUser()->getId();
|
||||||
\set_export::build_zip(
|
|
||||||
$this->app,
|
|
||||||
$token,
|
|
||||||
$list,
|
|
||||||
$this->app['tmp.download.path'].'/'. $token->getValue() . '.zip'
|
|
||||||
);
|
|
||||||
|
|
||||||
$remaingEmails = $destMails;
|
$tokenValue = $token->getValue();
|
||||||
|
|
||||||
$url = $this->app->url('prepare_download', ['token' => $token->getValue(), 'anonymous' => false, 'type' => \Session_Logger::EVENT_EXPORTMAIL]);
|
$url = $this->app->url('prepare_download', ['token' => $token->getValue(), 'anonymous' => false, 'type' => \Session_Logger::EVENT_EXPORTMAIL]);
|
||||||
|
|
||||||
$user = $this->getAuthenticatedUser();
|
$params = [
|
||||||
$emitter = new Emitter($user->getDisplayName(), $user->getEmail());
|
'url' => $url,
|
||||||
|
'textmail' => $request->request->get('textmail'),
|
||||||
|
'reading_confirm' => !!$request->request->get('reading_confirm', false),
|
||||||
|
'ssttid' => $ssttid = $request->request->get('ssttid', ''),
|
||||||
|
'lst' => $lst = $request->request->get('lst', ''),
|
||||||
|
];
|
||||||
|
|
||||||
foreach ($destMails as $key => $mail) {
|
$this->dispatch(PhraseaEvents::EXPORT_MAIL_CREATE, new ExportMailEvent(
|
||||||
try {
|
$emitterId,
|
||||||
$receiver = new Receiver(null, trim($mail));
|
$tokenValue,
|
||||||
} catch (InvalidArgumentException $e) {
|
$destMails,
|
||||||
continue;
|
$params
|
||||||
}
|
));
|
||||||
|
|
||||||
$mail = MailRecordsExport::create($this->app, $receiver, $emitter, $request->request->get('textmail'));
|
|
||||||
$mail->setButtonUrl($url);
|
|
||||||
$mail->setExpiration($token->getExpiration());
|
|
||||||
|
|
||||||
$this->deliver($mail, !!$request->request->get('reading_confirm', false));
|
|
||||||
unset($remaingEmails[$key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
//some mails failed
|
|
||||||
if (count($remaingEmails) > 0) {
|
|
||||||
foreach ($remaingEmails as $mail) {
|
|
||||||
$this->dispatch(PhraseaEvents::EXPORT_MAIL_FAILURE, new ExportFailureEvent($this->getAuthenticatedUser(), $ssttid, $lst, \eventsmanager_notify_downloadmailfail::MAIL_FAIL, $mail));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->app->json([
|
return $this->app->json([
|
||||||
|
@@ -98,7 +98,7 @@ class PushController extends Controller
|
|||||||
$Basket->setUser($user_receiver);
|
$Basket->setUser($user_receiver);
|
||||||
$Basket->setPusher($this->getAuthenticatedUser());
|
$Basket->setPusher($this->getAuthenticatedUser());
|
||||||
$Basket->markUnread();
|
$Basket->markUnread();
|
||||||
|
|
||||||
$manager->persist($Basket);
|
$manager->persist($Basket);
|
||||||
|
|
||||||
foreach ($pusher->get_elements() as $element) {
|
foreach ($pusher->get_elements() as $element) {
|
||||||
@@ -600,6 +600,38 @@ class PushController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateExpirationAction(Request $request)
|
||||||
|
{
|
||||||
|
$ret = [
|
||||||
|
'success' => false,
|
||||||
|
'message' => $this->app->trans('Unable to save the expiration date')
|
||||||
|
];
|
||||||
|
if (is_null($request->request->get('date'))) {
|
||||||
|
$ret['message'] = $this->app->trans('The provided date is null!');
|
||||||
|
return $this->app->json($ret);
|
||||||
|
}
|
||||||
|
$repository = $this->app['repo.baskets'];
|
||||||
|
$manager = $this->getEntityManager();
|
||||||
|
$manager->beginTransaction();
|
||||||
|
try {
|
||||||
|
$basket = $repository->findUserBasket($request->request->get('basket_id'), $this->app->getAuthenticatedUser(), true);
|
||||||
|
$date = new \DateTime($request->request->get('date') . " 23:59:59");
|
||||||
|
$validation = $basket->getValidation();
|
||||||
|
if (is_null($validation)) {
|
||||||
|
return $this->app->json($ret);
|
||||||
|
}
|
||||||
|
$validation->setExpires($date);
|
||||||
|
$manager->persist($validation);
|
||||||
|
$manager->flush();
|
||||||
|
$manager->commit();
|
||||||
|
$ret['message'] = $this->app->trans('Expiration date successfully updated!');
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$ret['message'] = $e->getMessage();
|
||||||
|
$manager->rollback();
|
||||||
|
}
|
||||||
|
return $this->app->json($ret);
|
||||||
|
}
|
||||||
|
|
||||||
private function formatUser(User $user)
|
private function formatUser(User $user)
|
||||||
{
|
{
|
||||||
$subtitle = array_filter([$user->getJob(), $user->getCompany()]);
|
$subtitle = array_filter([$user->getJob(), $user->getCompany()]);
|
||||||
@@ -734,4 +766,5 @@ class PushController extends Controller
|
|||||||
{
|
{
|
||||||
return $this->app['random.medium'];
|
return $this->app['random.medium'];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -269,7 +269,7 @@ class QueryController extends Controller
|
|||||||
|
|
||||||
$infoResult = '<div id="docInfo">'
|
$infoResult = '<div id="docInfo">'
|
||||||
. $this->app->trans('%number% documents<br/>selectionnes', ['%number%' => '<span id="nbrecsel"></span>'])
|
. $this->app->trans('%number% documents<br/>selectionnes', ['%number%' => '<span id="nbrecsel"></span>'])
|
||||||
. '<div class="detailed_info_holder"><img src="/assets/common/images/icons/dots.png" class="image-normal"><img src="/assets/common/images/icons/dots-darkgreen-hover.png" class="image-hover">'
|
. '<div class="detailed_info_holder"><img src="/assets/common/images/icons/dots.png" class="image-normal hidden"><img src="/assets/common/images/icons/dots-darkgreen-hover.png" class="image-hover">'
|
||||||
. '<div class="detailed_info">
|
. '<div class="detailed_info">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
@@ -14,6 +14,8 @@ use Alchemy\Phrasea\Application\Helper\EntityManagerAware;
|
|||||||
use Alchemy\Phrasea\Application\Helper\SearchEngineAware;
|
use Alchemy\Phrasea\Application\Helper\SearchEngineAware;
|
||||||
use Alchemy\Phrasea\Controller\Controller;
|
use Alchemy\Phrasea\Controller\Controller;
|
||||||
use Alchemy\Phrasea\Controller\RecordsRequest;
|
use Alchemy\Phrasea\Controller\RecordsRequest;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\DeleteEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
use Alchemy\Phrasea\Core\Event\RecordEdit;
|
use Alchemy\Phrasea\Core\Event\RecordEdit;
|
||||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||||
use Alchemy\Phrasea\Model\Entities\BasketElement;
|
use Alchemy\Phrasea\Model\Entities\BasketElement;
|
||||||
@@ -234,7 +236,7 @@ class RecordController extends Controller
|
|||||||
if($trashCollectionsBySbasId[$sbasId] !== null) {
|
if($trashCollectionsBySbasId[$sbasId] !== null) {
|
||||||
if($record->getCollection()->get_coll_id() == $trashCollectionsBySbasId[$sbasId]->get_coll_id()) {
|
if($record->getCollection()->get_coll_id() == $trashCollectionsBySbasId[$sbasId]->get_coll_id()) {
|
||||||
// record is already in trash so delete it
|
// record is already in trash so delete it
|
||||||
$record->delete();
|
$this->getEventDispatcher()->dispatch(RecordEvents::DELETE, new DeleteEvent($record));
|
||||||
} else {
|
} else {
|
||||||
// move to trash collection
|
// move to trash collection
|
||||||
$record->move_to_collection($trashCollectionsBySbasId[$sbasId], $this->getApplicationBox());
|
$record->move_to_collection($trashCollectionsBySbasId[$sbasId], $this->getApplicationBox());
|
||||||
@@ -247,7 +249,7 @@ class RecordController extends Controller
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// no trash collection, delete
|
// no trash collection, delete
|
||||||
$record->delete();
|
$this->getEventDispatcher()->dispatch(RecordEvents::DELETE, new DeleteEvent($record));
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,8 @@ use Alchemy\Phrasea\Application\Helper\EntityManagerAware;
|
|||||||
use Alchemy\Phrasea\Controller\Controller;
|
use Alchemy\Phrasea\Controller\Controller;
|
||||||
use Alchemy\Phrasea\Controller\RecordsRequest;
|
use Alchemy\Phrasea\Controller\RecordsRequest;
|
||||||
use Alchemy\Phrasea\Controller\Exception as ControllerException;
|
use Alchemy\Phrasea\Controller\Exception as ControllerException;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\RecordEdit;
|
use Alchemy\Phrasea\Core\Event\RecordEdit;
|
||||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||||
use Alchemy\Phrasea\Model\Entities\StoryWZ;
|
use Alchemy\Phrasea\Model\Entities\StoryWZ;
|
||||||
@@ -68,7 +70,9 @@ class StoryController extends Controller
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$story->set_metadatas($metadatas)->rebuild_subdefs();
|
$recordAdapter = $story->set_metadatas($metadatas);
|
||||||
|
// tell phraseanet to rebuild subdef
|
||||||
|
$this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($recordAdapter));
|
||||||
|
|
||||||
$storyWZ = new StoryWZ();
|
$storyWZ = new StoryWZ();
|
||||||
$storyWZ->setUser($this->getAuthenticatedUser());
|
$storyWZ->setUser($this->getAuthenticatedUser());
|
||||||
|
@@ -16,6 +16,7 @@ use Alchemy\Phrasea\Application\Helper\SubDefinitionSubstituerAware;
|
|||||||
use Alchemy\Phrasea\Controller\Controller;
|
use Alchemy\Phrasea\Controller\Controller;
|
||||||
use Alchemy\Phrasea\Controller\RecordsRequest;
|
use Alchemy\Phrasea\Controller\RecordsRequest;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Exception\RuntimeException;
|
use Alchemy\Phrasea\Exception\RuntimeException;
|
||||||
use Alchemy\Phrasea\Metadata\PhraseanetMetadataReader;
|
use Alchemy\Phrasea\Metadata\PhraseanetMetadataReader;
|
||||||
use Alchemy\Phrasea\Metadata\PhraseanetMetadataSetter;
|
use Alchemy\Phrasea\Metadata\PhraseanetMetadataSetter;
|
||||||
@@ -156,7 +157,7 @@ class ToolsController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$substituted || $force) {
|
if (!$substituted || $force) {
|
||||||
$record->rebuild_subdefs();
|
$this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($record));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -518,7 +518,9 @@ class AccountController extends Controller
|
|||||||
$this->getApiApplicationManipulator()->deleteApiApplications($applications);
|
$this->getApiApplicationManipulator()->deleteApiApplications($applications);
|
||||||
|
|
||||||
|
|
||||||
// revoke access and delete phraseanet user account
|
// get list of old granted base_id then revoke access and delete phraseanet user account
|
||||||
|
|
||||||
|
$oldGrantedBaseIds = array_keys($this->app->getAclForUser($user)->get_granted_base());
|
||||||
|
|
||||||
$list = array_keys($this->app['repo.collections-registry']->getBaseIdMap());
|
$list = array_keys($this->app['repo.collections-registry']->getBaseIdMap());
|
||||||
|
|
||||||
@@ -542,8 +544,9 @@ class AccountController extends Controller
|
|||||||
$mail = null;
|
$mail = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->app['manipulator.user']->delete($user);
|
$mail = MailSuccessAccountDelete::create($this->app, $receiver);
|
||||||
|
|
||||||
|
$this->app['manipulator.user']->delete($user, [$user->getId() => $oldGrantedBaseIds]);
|
||||||
if($mail) {
|
if($mail) {
|
||||||
$this->deliver($mail);
|
$this->deliver($mail);
|
||||||
}
|
}
|
||||||
|
@@ -59,6 +59,9 @@ class Push implements ControllerProviderInterface, ServiceProviderInterface
|
|||||||
$controllers->post('/validate/', 'controller.prod.push:validateAction')
|
$controllers->post('/validate/', 'controller.prod.push:validateAction')
|
||||||
->bind('prod_push_validate');
|
->bind('prod_push_validate');
|
||||||
|
|
||||||
|
$controllers->post('/update-expiration/', 'controller.prod.push:updateExpirationAction')
|
||||||
|
->bind('prod_push_do_update_expiration');
|
||||||
|
|
||||||
$controllers->get('/user/{usr_id}/', 'controller.prod.push:getUserAction')
|
$controllers->get('/user/{usr_id}/', 'controller.prod.push:getUserAction')
|
||||||
->assert('usr_id', '\d+');
|
->assert('usr_id', '\d+');
|
||||||
|
|
||||||
|
@@ -102,6 +102,8 @@ class RegistryFormManipulator
|
|||||||
'keywords' => null,
|
'keywords' => null,
|
||||||
'description' => null,
|
'description' => null,
|
||||||
'analytics' => null,
|
'analytics' => null,
|
||||||
|
'matomo-analytics-url' => null,
|
||||||
|
'matomo-analytics-id' => null,
|
||||||
'allow-indexation' => true,
|
'allow-indexation' => true,
|
||||||
'home-presentation-mode' => 'GALLERIA',
|
'home-presentation-mode' => 'GALLERIA',
|
||||||
'default-subdef-url-ttl' => 7200,
|
'default-subdef-url-ttl' => 7200,
|
||||||
|
53
lib/Alchemy/Phrasea/Core/Event/ExportMailEvent.php
Normal file
53
lib/Alchemy/Phrasea/Core/Event/ExportMailEvent.php
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Phraseanet
|
||||||
|
*
|
||||||
|
* (c) 2005-2019 Alchemy
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Core\Event;
|
||||||
|
|
||||||
|
use Symfony\Component\EventDispatcher\Event as SfEvent;
|
||||||
|
|
||||||
|
class ExportMailEvent extends SfEvent
|
||||||
|
{
|
||||||
|
private $emitterUserId;
|
||||||
|
private $tokenValue;
|
||||||
|
/** @var array */
|
||||||
|
private $destinationMails;
|
||||||
|
/** @var array */
|
||||||
|
private $params;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct($emitterUserId, $tokenValue, array $destMails, array $params)
|
||||||
|
{
|
||||||
|
$this->emitterUserId = $emitterUserId;
|
||||||
|
$this->tokenValue = $tokenValue;
|
||||||
|
$this->destinationMails = $destMails;
|
||||||
|
$this->params = $params;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTokenValue()
|
||||||
|
{
|
||||||
|
return $this->tokenValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDestinationMails()
|
||||||
|
{
|
||||||
|
return $this->destinationMails;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEmitterUserId()
|
||||||
|
{
|
||||||
|
return $this->emitterUserId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getParams()
|
||||||
|
{
|
||||||
|
return $this->params;
|
||||||
|
}
|
||||||
|
}
|
7
lib/Alchemy/Phrasea/Core/Event/Record/DeleteEvent.php
Normal file
7
lib/Alchemy/Phrasea/Core/Event/Record/DeleteEvent.php
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Core\Event\Record;
|
||||||
|
|
||||||
|
class DeleteEvent extends RecordEvent
|
||||||
|
{
|
||||||
|
}
|
@@ -13,8 +13,10 @@ namespace Alchemy\Phrasea\Core\Event\Record;
|
|||||||
|
|
||||||
final class RecordEvents
|
final class RecordEvents
|
||||||
{
|
{
|
||||||
const CREATED = 'record.created';
|
const CREATED = 'record.created';
|
||||||
const DELETED = 'record.deleted';
|
const DELETED = 'record.deleted';
|
||||||
|
const DELETE = 'record.delete';
|
||||||
|
|
||||||
// Change
|
// Change
|
||||||
const COLLECTION_CHANGED = 'record.collection_changed';
|
const COLLECTION_CHANGED = 'record.collection_changed';
|
||||||
const METADATA_CHANGED = 'record.metadata_changed';
|
const METADATA_CHANGED = 'record.metadata_changed';
|
||||||
@@ -29,6 +31,8 @@ final class RecordEvents
|
|||||||
const SUB_DEFINITIONS_CREATED = 'record.sub_definitions_created';
|
const SUB_DEFINITIONS_CREATED = 'record.sub_definitions_created';
|
||||||
const SUB_DEFINITION_CREATION_FAILED = 'record.sub_definition_creation_failed';
|
const SUB_DEFINITION_CREATION_FAILED = 'record.sub_definition_creation_failed';
|
||||||
|
|
||||||
|
const SUBDEFINITION_CREATE = 'record.subdefinition_create';
|
||||||
|
|
||||||
const MEDIA_SUBSTITUTED = 'record.media_substituted';
|
const MEDIA_SUBSTITUTED = 'record.media_substituted';
|
||||||
|
|
||||||
const STORY_COVER_CHANGED = 'record.story_cover_changed';
|
const STORY_COVER_CHANGED = 'record.story_cover_changed';
|
||||||
|
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Phraseanet
|
||||||
|
*
|
||||||
|
* (c) 2005-2014 Alchemy
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Core\Event\Record;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Model\RecordInterface;
|
||||||
|
|
||||||
|
class SubdefinitionCreateEvent extends RecordEvent
|
||||||
|
{
|
||||||
|
private $isNewRecord;
|
||||||
|
|
||||||
|
public function __construct(RecordInterface $record, $isNewRecord = false)
|
||||||
|
{
|
||||||
|
parent::__construct($record);
|
||||||
|
|
||||||
|
$this->isNewRecord = $isNewRecord;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isNewRecord()
|
||||||
|
{
|
||||||
|
return $this->isNewRecord;
|
||||||
|
}
|
||||||
|
}
|
@@ -12,7 +12,15 @@
|
|||||||
namespace Alchemy\Phrasea\Core\Event\Subscriber;
|
namespace Alchemy\Phrasea\Core\Event\Subscriber;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Core\Event\ExportFailureEvent;
|
use Alchemy\Phrasea\Core\Event\ExportFailureEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\ExportMailEvent;
|
||||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||||
|
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
||||||
|
use Alchemy\Phrasea\Model\Entities\Token;
|
||||||
|
use Alchemy\Phrasea\Model\Repositories\TokenRepository;
|
||||||
|
use Alchemy\Phrasea\Model\Repositories\UserRepository;
|
||||||
|
use Alchemy\Phrasea\Notification\Emitter;
|
||||||
|
use Alchemy\Phrasea\Notification\Mail\MailRecordsExport;
|
||||||
|
use Alchemy\Phrasea\Notification\Receiver;
|
||||||
|
|
||||||
class ExportSubscriber extends AbstractNotificationSubscriber
|
class ExportSubscriber extends AbstractNotificationSubscriber
|
||||||
{
|
{
|
||||||
@@ -39,10 +47,65 @@ class ExportSubscriber extends AbstractNotificationSubscriber
|
|||||||
$this->app['event-manager']->notify($params['usr_id'], 'eventsmanager_notify_downloadmailfail', $datas, $mailed);
|
$this->app['event-manager']->notify($params['usr_id'], 'eventsmanager_notify_downloadmailfail', $datas, $mailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onCreateExportMail(ExportMailEvent $event)
|
||||||
|
{
|
||||||
|
$destMails = $event->getDestinationMails();
|
||||||
|
|
||||||
|
$params = $event->getParams();
|
||||||
|
|
||||||
|
/** @var UserRepository $userRepository */
|
||||||
|
$userRepository = $this->app['repo.users'];
|
||||||
|
|
||||||
|
$user = $userRepository->find($event->getEmitterUserId());
|
||||||
|
|
||||||
|
/** @var TokenRepository $tokenRepository */
|
||||||
|
$tokenRepository = $this->app['repo.tokens'];
|
||||||
|
|
||||||
|
/** @var Token $token */
|
||||||
|
$token = $tokenRepository->findValidToken($event->getTokenValue());
|
||||||
|
|
||||||
|
$list = unserialize($token->getData());
|
||||||
|
|
||||||
|
//zip documents
|
||||||
|
\set_export::build_zip(
|
||||||
|
$this->app,
|
||||||
|
$token,
|
||||||
|
$list,
|
||||||
|
$this->app['tmp.download.path'].'/'. $token->getValue() . '.zip'
|
||||||
|
);
|
||||||
|
|
||||||
|
$remaingEmails = $destMails;
|
||||||
|
|
||||||
|
$emitter = new Emitter($user->getDisplayName(), $user->getEmail());
|
||||||
|
|
||||||
|
foreach ($destMails as $key => $mail) {
|
||||||
|
try {
|
||||||
|
$receiver = new Receiver(null, trim($mail));
|
||||||
|
} catch (InvalidArgumentException $e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$mail = MailRecordsExport::create($this->app, $receiver, $emitter, $params['textmail']);
|
||||||
|
$mail->setButtonUrl($params['url']);
|
||||||
|
$mail->setExpiration($token->getExpiration());
|
||||||
|
|
||||||
|
$this->deliver($mail, $params['reading_confirm']);
|
||||||
|
unset($remaingEmails[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//some mails failed
|
||||||
|
if (count($remaingEmails) > 0) {
|
||||||
|
foreach ($remaingEmails as $mail) {
|
||||||
|
$this->app['dispatcher']->dispatch(PhraseaEvents::EXPORT_MAIL_FAILURE, new ExportFailureEvent($user, $params['ssttid'], $params['lst'], \eventsmanager_notify_downloadmailfail::MAIL_FAIL, $mail));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static function getSubscribedEvents()
|
public static function getSubscribedEvents()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
PhraseaEvents::EXPORT_MAIL_FAILURE => 'onMailExportFailure'
|
PhraseaEvents::EXPORT_MAIL_FAILURE => 'onMailExportFailure',
|
||||||
|
PhraseaEvents::EXPORT_MAIL_CREATE => 'onCreateExportMail',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -33,7 +33,8 @@ class FeedEntrySubscriber extends AbstractNotificationSubscriber
|
|||||||
$this->app['manipulator.webhook-event']->create(
|
$this->app['manipulator.webhook-event']->create(
|
||||||
WebhookEvent::NEW_FEED_ENTRY,
|
WebhookEvent::NEW_FEED_ENTRY,
|
||||||
WebhookEvent::FEED_ENTRY_TYPE,
|
WebhookEvent::FEED_ENTRY_TYPE,
|
||||||
array_merge(array('feed_id' => $entry->getFeed()->getId()), $params)
|
array_merge(array('feed_id' => $entry->getFeed()->getId()), $params),
|
||||||
|
$entry->getFeed()->getBaseId() ? [$entry->getFeed()->getBaseId()] : []
|
||||||
);
|
);
|
||||||
|
|
||||||
$datas = json_encode($params);
|
$datas = json_encode($params);
|
||||||
|
@@ -41,13 +41,13 @@ class OrderSubscriber extends AbstractNotificationSubscriber
|
|||||||
|
|
||||||
public function onCreate(OrderEvent $event)
|
public function onCreate(OrderEvent $event)
|
||||||
{
|
{
|
||||||
$base_ids = array_unique(array_map(function (OrderElement $element) {
|
$baseIds = array_unique(array_map(function (OrderElement $element) {
|
||||||
return $element->getBaseId();
|
return $element->getBaseId();
|
||||||
}, iterator_to_array($event->getOrder()->getElements())));
|
}, iterator_to_array($event->getOrder()->getElements())));
|
||||||
|
|
||||||
$query = $this->app['phraseanet.user-query'];
|
$query = $this->app['phraseanet.user-query'];
|
||||||
/** @var User[] $users */
|
/** @var User[] $users */
|
||||||
$users = $query->on_base_ids($base_ids)
|
$users = $query->on_base_ids($baseIds)
|
||||||
->who_have_right([\ACL::ORDER_MASTER])
|
->who_have_right([\ACL::ORDER_MASTER])
|
||||||
->execute()->get_results();
|
->execute()->get_results();
|
||||||
|
|
||||||
@@ -60,10 +60,12 @@ class OrderSubscriber extends AbstractNotificationSubscriber
|
|||||||
'order_id' => $event->getOrder()->getId(),
|
'order_id' => $event->getOrder()->getId(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
|
// notify by webhook
|
||||||
|
$notifier = $this->notifierRegistry->getNotifier(Order::NOTIFY_WEBHOOK);
|
||||||
|
|
||||||
$notifier->notifyCreation($event->getOrder(), $event->getOrder()->getUser());
|
$notifier->notifyCreation($event->getOrder(), $event->getOrder()->getUser(), $baseIds);
|
||||||
|
|
||||||
|
// notify by mail
|
||||||
$notifier = $this->notifierRegistry->getNotifier(Order::NOTIFY_MAIL);
|
$notifier = $this->notifierRegistry->getNotifier(Order::NOTIFY_MAIL);
|
||||||
|
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
@@ -85,7 +87,13 @@ class OrderSubscriber extends AbstractNotificationSubscriber
|
|||||||
|
|
||||||
public function onDeliver(OrderDeliveryEvent $event)
|
public function onDeliver(OrderDeliveryEvent $event)
|
||||||
{
|
{
|
||||||
|
// notify by webhook
|
||||||
|
$notifier = $this->notifierRegistry->getNotifier(Order::NOTIFY_WEBHOOK);
|
||||||
|
$notifier->notifyDelivery($event->getDelivery(), $event->getDelivery()->getPartialOrder()->getBaseIds());
|
||||||
|
|
||||||
$notified = false;
|
$notified = false;
|
||||||
|
|
||||||
|
// actually NotificationMethod is always by mail
|
||||||
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
|
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
|
||||||
$notificationData = json_encode([
|
$notificationData = json_encode([
|
||||||
'from' => $event->getDelivery()->getAdmin()->getId(),
|
'from' => $event->getDelivery()->getAdmin()->getId(),
|
||||||
@@ -109,7 +117,13 @@ class OrderSubscriber extends AbstractNotificationSubscriber
|
|||||||
|
|
||||||
public function onDeny(OrderDeliveryEvent $event)
|
public function onDeny(OrderDeliveryEvent $event)
|
||||||
{
|
{
|
||||||
|
// notify by webhook
|
||||||
|
$notifier = $this->notifierRegistry->getNotifier(Order::NOTIFY_WEBHOOK);
|
||||||
|
$notifier->notifyDenial($event->getDelivery(), $event->getDelivery()->getPartialOrder()->getBaseIds());
|
||||||
|
|
||||||
$notified = false;
|
$notified = false;
|
||||||
|
|
||||||
|
// actually NotificationMethod is always by mail
|
||||||
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
|
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
|
||||||
$notificationData = json_encode([
|
$notificationData = json_encode([
|
||||||
'from' => $event->getDelivery()->getAdmin()->getId(),
|
'from' => $event->getDelivery()->getAdmin()->getId(),
|
||||||
|
@@ -11,8 +11,10 @@
|
|||||||
namespace Alchemy\Phrasea\Core\Event\Subscriber;
|
namespace Alchemy\Phrasea\Core\Event\Subscriber;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Core\Event\Record\CollectionChangedEvent;
|
use Alchemy\Phrasea\Core\Event\Record\CollectionChangedEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\DeleteEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvent;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\RecordEdit;
|
use Alchemy\Phrasea\Core\Event\RecordEdit;
|
||||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||||
use Alchemy\Phrasea\Metadata\Tag\TfEditdate;
|
use Alchemy\Phrasea\Metadata\Tag\TfEditdate;
|
||||||
@@ -26,10 +28,12 @@ class RecordEditSubscriber implements EventSubscriberInterface
|
|||||||
public static function getSubscribedEvents()
|
public static function getSubscribedEvents()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
PhraseaEvents::RECORD_EDIT => 'onEdit',
|
PhraseaEvents::RECORD_EDIT => 'onEdit',
|
||||||
PhraseaEvents::RECORD_UPLOAD => 'onEdit',
|
PhraseaEvents::RECORD_UPLOAD => 'onEdit',
|
||||||
RecordEvents::ROTATE => 'onRecordChange',
|
RecordEvents::ROTATE => 'onRecordChange',
|
||||||
RecordEvents::COLLECTION_CHANGED => 'onCollectionChanged',
|
RecordEvents::COLLECTION_CHANGED => 'onCollectionChanged',
|
||||||
|
RecordEvents::SUBDEFINITION_CREATE => 'onSubdefinitionCreate',
|
||||||
|
RecordEvents::DELETE => 'onDelete',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,6 +53,18 @@ class RecordEditSubscriber implements EventSubscriberInterface
|
|||||||
$recordAdapter->clearStampCache();
|
$recordAdapter->clearStampCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onSubdefinitionCreate(SubdefinitionCreateEvent $event)
|
||||||
|
{
|
||||||
|
$recordAdapter = $this->convertToRecordAdapter($event->getRecord());
|
||||||
|
$recordAdapter->rebuild_subdefs();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onDelete(DeleteEvent $event)
|
||||||
|
{
|
||||||
|
$recordAdapter = $this->convertToRecordAdapter($event->getRecord());
|
||||||
|
$recordAdapter->delete();
|
||||||
|
}
|
||||||
|
|
||||||
public function onEdit(RecordEdit $event)
|
public function onEdit(RecordEdit $event)
|
||||||
{
|
{
|
||||||
static $into = false;
|
static $into = false;
|
||||||
|
@@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Core\Event\Subscriber;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreatedEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationFailedEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionsCreatedEvent;
|
||||||
|
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
|
||||||
|
use Silex\Application;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
class WebhookSubdefEventSubscriber implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
private $app;
|
||||||
|
|
||||||
|
public function __construct(Application $app)
|
||||||
|
{
|
||||||
|
$this->app = $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onSubdefCreated(SubDefinitionCreatedEvent $event)
|
||||||
|
{
|
||||||
|
$eventData = [
|
||||||
|
'databox_id' => $event->getRecord()->getDataboxId(),
|
||||||
|
'record_id' => $event->getRecord()->getRecordId(),
|
||||||
|
'subdef' => $event->getSubDefinitionName()
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->app['manipulator.webhook-event']->create(
|
||||||
|
WebhookEvent::RECORD_SUBDEF_CREATED,
|
||||||
|
WebhookEvent::RECORD_SUBDEF_TYPE,
|
||||||
|
$eventData
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onSubdefCreationFailed(SubDefinitionCreationFailedEvent $event)
|
||||||
|
{
|
||||||
|
$eventData = [
|
||||||
|
'databox_id' => $event->getRecord()->getDataboxId(),
|
||||||
|
'record_id' => $event->getRecord()->getRecordId(),
|
||||||
|
'subdef' => $event->getSubDefinitionName()
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->app['manipulator.webhook-event']->create(
|
||||||
|
WebhookEvent::RECORD_SUBDEF_FAILED,
|
||||||
|
WebhookEvent::RECORD_SUBDEF_TYPE,
|
||||||
|
$eventData
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onSubdefsCreated(SubDefinitionsCreatedEvent $event)
|
||||||
|
{
|
||||||
|
$eventData = [
|
||||||
|
'databox_id' => $event->getRecord()->getDataboxId(),
|
||||||
|
'record_id' => $event->getRecord()->getRecordId(),
|
||||||
|
'subdef_count' => count($event->getMedia())
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->app['manipulator.webhook-event']->create(
|
||||||
|
WebhookEvent::RECORD_SUBDEFS_CREATED,
|
||||||
|
WebhookEvent::RECORD_SUBDEF_TYPE,
|
||||||
|
$eventData
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
RecordEvents::SUB_DEFINITION_CREATED => 'onSubdefCreated',
|
||||||
|
RecordEvents::SUB_DEFINITIONS_CREATED => 'onSubdefsCreated',
|
||||||
|
RecordEvents::SUB_DEFINITION_CREATION_FAILED => 'onSubdefCreationFailed'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
@@ -45,7 +45,7 @@ class WebhookUserEventSubscriber implements EventSubscriberInterface
|
|||||||
'user_id' => $event->getUserId(),
|
'user_id' => $event->getUserId(),
|
||||||
'email' => $event->getEmailAddress(),
|
'email' => $event->getEmailAddress(),
|
||||||
'login' => $event->getLogin()
|
'login' => $event->getLogin()
|
||||||
]);
|
], $event->getGrantedBaseIds());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getSubscribedEvents()
|
public static function getSubscribedEvents()
|
||||||
|
@@ -36,4 +36,12 @@ class DeletedEvent extends UserEvent
|
|||||||
{
|
{
|
||||||
return $this->args['email'];
|
return $this->args['email'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getGrantedBaseIds()
|
||||||
|
{
|
||||||
|
return $this->args['grantedBaseIds'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -48,7 +48,8 @@ final class PhraseaEvents
|
|||||||
const BRIDGE_UPLOAD_FAILURE = 'bridge.upload-failure';
|
const BRIDGE_UPLOAD_FAILURE = 'bridge.upload-failure';
|
||||||
|
|
||||||
const EXPORT_MAIL_FAILURE = 'export.mail-failure';
|
const EXPORT_MAIL_FAILURE = 'export.mail-failure';
|
||||||
const EXPORT_CREATE = 'export.create';
|
const EXPORT_CREATE = 'export.create';
|
||||||
|
const EXPORT_MAIL_CREATE = 'export.mail-create';
|
||||||
|
|
||||||
const RECORD_EDIT = 'record.edit';
|
const RECORD_EDIT = 'record.edit';
|
||||||
const RECORD_UPLOAD = 'record.upload';
|
const RECORD_UPLOAD = 'record.upload';
|
||||||
|
@@ -43,6 +43,7 @@ use Silex\ServiceProviderInterface;
|
|||||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||||
use Symfony\Component\HttpKernel\KernelEvents;
|
use Symfony\Component\HttpKernel\KernelEvents;
|
||||||
|
|
||||||
|
|
||||||
class SearchEngineServiceProvider implements ServiceProviderInterface
|
class SearchEngineServiceProvider implements ServiceProviderInterface
|
||||||
{
|
{
|
||||||
public function register(Application $app)
|
public function register(Application $app)
|
||||||
@@ -145,6 +146,7 @@ class SearchEngineServiceProvider implements ServiceProviderInterface
|
|||||||
|
|
||||||
$app['elasticsearch.indexer.databox_fetcher_factory'] = $app->share(function ($app) {
|
$app['elasticsearch.indexer.databox_fetcher_factory'] = $app->share(function ($app) {
|
||||||
return new DataboxFetcherFactory(
|
return new DataboxFetcherFactory(
|
||||||
|
$app['conf'],
|
||||||
$app['elasticsearch.record_helper'],
|
$app['elasticsearch.record_helper'],
|
||||||
$app['elasticsearch.options'],
|
$app['elasticsearch.options'],
|
||||||
$app,
|
$app,
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Alchemy\Phrasea\Core\Provider;
|
namespace Alchemy\Phrasea\Core\Provider;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Core\Event\Subscriber\WebhookSubdefEventSubscriber;
|
||||||
use Alchemy\Phrasea\Webhook\EventProcessorFactory;
|
use Alchemy\Phrasea\Webhook\EventProcessorFactory;
|
||||||
use Alchemy\Phrasea\Webhook\EventProcessorWorker;
|
use Alchemy\Phrasea\Webhook\EventProcessorWorker;
|
||||||
use Alchemy\Phrasea\Webhook\WebhookInvoker;
|
use Alchemy\Phrasea\Webhook\WebhookInvoker;
|
||||||
@@ -10,6 +11,7 @@ use Alchemy\Worker\CallableWorkerFactory;
|
|||||||
use Alchemy\Worker\TypeBasedWorkerResolver;
|
use Alchemy\Worker\TypeBasedWorkerResolver;
|
||||||
use Silex\Application;
|
use Silex\Application;
|
||||||
use Silex\ServiceProviderInterface;
|
use Silex\ServiceProviderInterface;
|
||||||
|
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||||
|
|
||||||
class WebhookServiceProvider implements ServiceProviderInterface
|
class WebhookServiceProvider implements ServiceProviderInterface
|
||||||
{
|
{
|
||||||
@@ -58,6 +60,14 @@ class WebhookServiceProvider implements ServiceProviderInterface
|
|||||||
return $resolver;
|
return $resolver;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$app['dispatcher'] = $app->share(
|
||||||
|
$app->extend('dispatcher', function (EventDispatcher $dispatcher, Application $app) {
|
||||||
|
$dispatcher->addSubscriber(new WebhookSubdefEventSubscriber($app));
|
||||||
|
|
||||||
|
return $dispatcher;
|
||||||
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createAlias(Application $app, $alias, $targetServiceKey)
|
private function createAlias(Application $app, $alias, $targetServiceKey)
|
||||||
@@ -69,6 +79,6 @@ class WebhookServiceProvider implements ServiceProviderInterface
|
|||||||
|
|
||||||
public function boot(Application $app)
|
public function boot(Application $app)
|
||||||
{
|
{
|
||||||
// no-op
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,11 +32,12 @@ class WorkerConfigurationServiceProvider implements ServiceProviderInterface
|
|||||||
$app['alchemy_queues.queues'] = $app->share(function (Application $app) {
|
$app['alchemy_queues.queues'] = $app->share(function (Application $app) {
|
||||||
$defaultConfiguration = [
|
$defaultConfiguration = [
|
||||||
'worker-queue' => [
|
'worker-queue' => [
|
||||||
'registry' => 'alchemy_worker.queue_registry',
|
'registry' => 'alchemy_worker.queue_registry',
|
||||||
'host' => 'localhost',
|
'host' => 'localhost',
|
||||||
'port' => 5672,
|
'port' => 5672,
|
||||||
'user' => 'guest',
|
'user' => 'guest',
|
||||||
'vhost' => '/'
|
'password' => 'guest',
|
||||||
|
'vhost' => '/'
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -46,19 +47,22 @@ class WorkerConfigurationServiceProvider implements ServiceProviderInterface
|
|||||||
|
|
||||||
$queueConfigurations = $configuration->get(['workers', 'queue'], $defaultConfiguration);
|
$queueConfigurations = $configuration->get(['workers', 'queue'], $defaultConfiguration);
|
||||||
|
|
||||||
$queueConfiguration = reset($queueConfigurations);
|
$config = [];
|
||||||
$queueKey = key($queueConfigurations);
|
|
||||||
|
|
||||||
if (! isset($queueConfiguration['name'])) {
|
foreach($queueConfigurations as $name => $queueConfiguration) {
|
||||||
if (! is_string($queueKey)) {
|
$queueKey = $name;
|
||||||
throw new \RuntimeException('Invalid queue configuration: configuration has no key or name.');
|
|
||||||
|
if (! isset($queueConfiguration['name'])) {
|
||||||
|
if (! is_string($queueKey)) {
|
||||||
|
throw new \RuntimeException('Invalid queue configuration: configuration has no key or name.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$queueConfiguration['name'] = $queueKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
$queueConfiguration['name'] = $queueKey;
|
$config[$queueConfiguration['name']] = $queueConfiguration ;
|
||||||
}
|
}
|
||||||
|
|
||||||
$config = [ $queueConfiguration['name'] => $queueConfiguration ];
|
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
}
|
}
|
||||||
catch (RuntimeException $exception) {
|
catch (RuntimeException $exception) {
|
||||||
|
@@ -38,6 +38,12 @@ class GeneralFormType extends AbstractType
|
|||||||
$builder->add('analytics', 'text', [
|
$builder->add('analytics', 'text', [
|
||||||
'label' => 'Google Analytics identifier',
|
'label' => 'Google Analytics identifier',
|
||||||
]);
|
]);
|
||||||
|
$builder->add('matomo-analytics-url', 'text', [
|
||||||
|
'label' => 'Matomo Analytics url',
|
||||||
|
]);
|
||||||
|
$builder->add('matomo-analytics-id', 'text', [
|
||||||
|
'label' => 'Matomo Analytics identifier',
|
||||||
|
]);
|
||||||
$builder->add('allow-indexation', 'checkbox', [
|
$builder->add('allow-indexation', 'checkbox', [
|
||||||
'label' => 'Allow the website to be indexed by search engines like Google',
|
'label' => 'Allow the website to be indexed by search engines like Google',
|
||||||
]);
|
]);
|
||||||
|
@@ -73,10 +73,12 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
|
|||||||
{
|
{
|
||||||
$list = array_keys($this->app->getAclForUser($this->app->getAuthenticatedUser())->get_granted_base([\ACL::CANADMIN]));
|
$list = array_keys($this->app->getAclForUser($this->app->getAuthenticatedUser())->get_granted_base([\ACL::CANADMIN]));
|
||||||
|
|
||||||
|
$oldGrantedBaseIds = array_keys($this->app->getAclForUser($user)->get_granted_base());
|
||||||
|
|
||||||
$this->app->getAclForUser($user)->revoke_access_from_bases($list);
|
$this->app->getAclForUser($user)->revoke_access_from_bases($list);
|
||||||
|
|
||||||
if ($this->app->getAclForUser($user)->is_phantom()) {
|
if ($this->app->getAclForUser($user)->is_phantom()) {
|
||||||
$this->app['manipulator.user']->delete($user);
|
$this->app['manipulator.user']->delete($user, [$user->getId() => $oldGrantedBaseIds]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
@@ -583,8 +585,8 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
|
|||||||
$user = $this->app['repo.users']->find($usr_id);
|
$user = $this->app['repo.users']->find($usr_id);
|
||||||
|
|
||||||
$this->app->getAclForUser($user)->revoke_access_from_bases($delete)
|
$this->app->getAclForUser($user)->revoke_access_from_bases($delete)
|
||||||
->give_access_to_base($create)
|
->give_access_to_sbas($create_sbas) // give access to sbas before bas
|
||||||
->give_access_to_sbas($create_sbas);
|
->give_access_to_base($create);
|
||||||
|
|
||||||
foreach ($update as $base_id => $rights) {
|
foreach ($update as $base_id => $rights) {
|
||||||
$this->app->getAclForUser($user)
|
$this->app->getAclForUser($user)
|
||||||
|
@@ -18,6 +18,7 @@ use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationEvent;
|
|||||||
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionsCreationEvent;
|
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionsCreationEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationFailedEvent;
|
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationFailedEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Databox\Subdef\MediaSubdefRepository;
|
||||||
use Alchemy\Phrasea\Filesystem\FilesystemService;
|
use Alchemy\Phrasea\Filesystem\FilesystemService;
|
||||||
use Alchemy\Phrasea\Media\Subdef\Specification\PdfSpecification;
|
use Alchemy\Phrasea\Media\Subdef\Specification\PdfSpecification;
|
||||||
use MediaAlchemyst\Alchemyst;
|
use MediaAlchemyst\Alchemyst;
|
||||||
@@ -170,13 +171,53 @@ class SubdefGenerator
|
|||||||
unset($this->tmpFilePath);
|
unset($this->tmpFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->dispatch(
|
// if we created subdef one by one
|
||||||
RecordEvents::SUB_DEFINITIONS_CREATED,
|
if (count($wanted_subdefs) == 1) {
|
||||||
new SubDefinitionsCreatedEvent(
|
$mediaSubdefRepository = $this->getMediaSubdefRepository($record->getDataboxId());
|
||||||
$record,
|
$mediaSubdefs = $mediaSubdefRepository->findByRecordIdsAndNames([$record->getRecordId()]);
|
||||||
$mediaCreated
|
$medias = [];
|
||||||
)
|
foreach ($mediaSubdefs as $subdef) {
|
||||||
);
|
try {
|
||||||
|
$medias[$subdef->get_name()] = $this->mediavorus->guess($subdef->getRealPath());
|
||||||
|
} catch (MediaVorusFileNotFoundException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->dispatch(
|
||||||
|
RecordEvents::SUB_DEFINITIONS_CREATED,
|
||||||
|
new SubDefinitionsCreatedEvent(
|
||||||
|
$record,
|
||||||
|
$medias
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->dispatch(
|
||||||
|
RecordEvents::SUB_DEFINITIONS_CREATED,
|
||||||
|
new SubDefinitionsCreatedEvent(
|
||||||
|
$record,
|
||||||
|
$mediaCreated
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set a logger to use
|
||||||
|
* @param LoggerInterface $logger
|
||||||
|
*/
|
||||||
|
public function setLogger(LoggerInterface $logger)
|
||||||
|
{
|
||||||
|
$this->logger = $logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to get the logger
|
||||||
|
* @return LoggerInterface
|
||||||
|
*/
|
||||||
|
public function getLogger()
|
||||||
|
{
|
||||||
|
return $this->logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateSubdef(\record_adapter $record, \databox_subdef $subdef_class, $pathdest)
|
private function generateSubdef(\record_adapter $record, \databox_subdef $subdef_class, $pathdest)
|
||||||
@@ -276,4 +317,14 @@ class SubdefGenerator
|
|||||||
$i = floor(log($bytes, 1024));
|
$i = floor(log($bytes, 1024));
|
||||||
return round($bytes / pow(1024, $i), [0,0,2,2,3][$i]).['B','kB','MB','GB'][$i];
|
return round($bytes / pow(1024, $i), [0,0,2,2,3][$i]).['B','kB','MB','GB'][$i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $databoxId
|
||||||
|
*
|
||||||
|
* @return MediaSubdefRepository|Object
|
||||||
|
*/
|
||||||
|
private function getMediaSubdefRepository($databoxId)
|
||||||
|
{
|
||||||
|
return $this->app['provider.repo.media_subdef']->getRepositoryForDatabox($databoxId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -13,6 +13,7 @@ namespace Alchemy\Phrasea\Media;
|
|||||||
use Alchemy\Phrasea\Application;
|
use Alchemy\Phrasea\Application;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\MediaSubstitutedEvent;
|
use Alchemy\Phrasea\Core\Event\Record\MediaSubstitutedEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Filesystem\FilesystemService;
|
use Alchemy\Phrasea\Filesystem\FilesystemService;
|
||||||
use MediaAlchemyst\Alchemyst;
|
use MediaAlchemyst\Alchemyst;
|
||||||
use MediaAlchemyst\Exception\ExceptionInterface as MediaAlchemystException;
|
use MediaAlchemyst\Exception\ExceptionInterface as MediaAlchemystException;
|
||||||
@@ -79,7 +80,7 @@ class SubdefSubstituer
|
|||||||
$record->write_metas();
|
$record->write_metas();
|
||||||
|
|
||||||
if ($shouldSubdefsBeRebuilt) {
|
if ($shouldSubdefsBeRebuilt) {
|
||||||
$record->rebuild_subdefs();
|
$this->dispatcher->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($record));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->dispatcher->dispatch(RecordEvents::MEDIA_SUBSTITUTED, new MediaSubstitutedEvent($record));
|
$this->dispatcher->dispatch(RecordEvents::MEDIA_SUBSTITUTED, new MediaSubstitutedEvent($record));
|
||||||
|
@@ -68,6 +68,14 @@ class WebhookEvent
|
|||||||
*/
|
*/
|
||||||
private $created;
|
private $created;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of collection base_id concerned
|
||||||
|
* @var array
|
||||||
|
*
|
||||||
|
* @ORM\Column(name="collection_base_ids", type="json_array", nullable=true)
|
||||||
|
*/
|
||||||
|
private $collectionBaseIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \DateTime $created
|
* @param \DateTime $created
|
||||||
*
|
*
|
||||||
@@ -175,4 +183,24 @@ class WebhookEvent
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $collectionBaseIds
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setCollectionBaseIds(array $collectionBaseIds)
|
||||||
|
{
|
||||||
|
$this->collectionBaseIds = $collectionBaseIds;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getCollectionBaseIds()
|
||||||
|
{
|
||||||
|
return $this->collectionBaseIds;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -126,8 +126,9 @@ class UserManipulator implements ManipulatorInterface
|
|||||||
* Deletes a user.
|
* Deletes a user.
|
||||||
*
|
*
|
||||||
* @param User|User[] $users
|
* @param User|User[] $users
|
||||||
|
* @param array $grantedBaseIdList List of the old granted base_id per userId [user_id => [base_id, ...] ]
|
||||||
*/
|
*/
|
||||||
public function delete($users)
|
public function delete($users, array $grantedBaseIdList = array())
|
||||||
{
|
{
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
foreach ($this->makeTraversable($users) as $user) {
|
foreach ($this->makeTraversable($users) as $user) {
|
||||||
@@ -146,9 +147,10 @@ class UserManipulator implements ManipulatorInterface
|
|||||||
new DeletedEvent(
|
new DeletedEvent(
|
||||||
null,
|
null,
|
||||||
array(
|
array(
|
||||||
'user_id'=>$old_id,
|
'user_id' => $old_id,
|
||||||
'login'=>$old_login,
|
'login' => $old_login,
|
||||||
'email'=>$old_email
|
'email' => $old_email,
|
||||||
|
'grantedBaseIds' => isset($grantedBaseIdList[$old_id]) ? $grantedBaseIdList[$old_id] : []
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
namespace Alchemy\Phrasea\Model\Manipulator;
|
namespace Alchemy\Phrasea\Model\Manipulator;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
|
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
|
||||||
use Alchemy\Phrasea\Webhook\WebhookPublisher;
|
use Alchemy\Phrasea\Webhook\WebhookPublisherInterface;
|
||||||
use Doctrine\Common\Persistence\ObjectManager;
|
use Doctrine\Common\Persistence\ObjectManager;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
|
||||||
@@ -29,18 +29,18 @@ class WebhookEventManipulator implements ManipulatorInterface
|
|||||||
private $repository;
|
private $repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var WebhookPublisher
|
* @var WebhookPublisherInterface
|
||||||
*/
|
*/
|
||||||
private $publisher;
|
private $publisher;
|
||||||
|
|
||||||
public function __construct(ObjectManager $om, EntityRepository $repo, WebhookPublisher $publisher)
|
public function __construct(ObjectManager $om, EntityRepository $repo, WebhookPublisherInterface $publisher)
|
||||||
{
|
{
|
||||||
$this->om = $om;
|
$this->om = $om;
|
||||||
$this->repository = $repo;
|
$this->repository = $repo;
|
||||||
$this->publisher = $publisher;
|
$this->publisher = $publisher;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create($eventName, $type, array $data)
|
public function create($eventName, $type, array $data, array $collectionBaseIds = array())
|
||||||
{
|
{
|
||||||
$event = new WebhookEvent();
|
$event = new WebhookEvent();
|
||||||
|
|
||||||
@@ -48,6 +48,10 @@ class WebhookEventManipulator implements ManipulatorInterface
|
|||||||
$event->setType($type);
|
$event->setType($type);
|
||||||
$event->setData($data);
|
$event->setData($data);
|
||||||
|
|
||||||
|
if (count($collectionBaseIds) > 0) {
|
||||||
|
$event->setCollectionBaseIds($collectionBaseIds);
|
||||||
|
}
|
||||||
|
|
||||||
$this->update($event);
|
$this->update($event);
|
||||||
|
|
||||||
$this->publisher->publishWebhookEvent($event);
|
$this->publisher->publishWebhookEvent($event);
|
||||||
|
@@ -172,7 +172,7 @@ class BaseOrderController extends Controller
|
|||||||
$manager->persist($element);
|
$manager->persist($element);
|
||||||
}
|
}
|
||||||
|
|
||||||
$delivery = new OrderDelivery($order, $acceptor, count($basketElements));
|
$delivery = new OrderDelivery($order, $acceptor, count($basketElements), $partialOrder);
|
||||||
|
|
||||||
$this->dispatch(PhraseaEvents::ORDER_DELIVER, new OrderDeliveryEvent($delivery));
|
$this->dispatch(PhraseaEvents::ORDER_DELIVER, new OrderDeliveryEvent($delivery));
|
||||||
}
|
}
|
||||||
@@ -198,11 +198,13 @@ class BaseOrderController extends Controller
|
|||||||
$elements = $this->findRequestedElements($order_id, $elementIds, $acceptor);
|
$elements = $this->findRequestedElements($order_id, $elementIds, $acceptor);
|
||||||
$order = $this->findOr404($order_id);
|
$order = $this->findOr404($order_id);
|
||||||
|
|
||||||
|
$partialOrder = new PartialOrder($order, $elements);
|
||||||
|
|
||||||
$this->getOrderValidator()->deny($acceptor, new PartialOrder($order, $elements));
|
$this->getOrderValidator()->deny($acceptor, new PartialOrder($order, $elements));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!empty($elements)) {
|
if (!empty($elements)) {
|
||||||
$delivery = new OrderDelivery($order, $acceptor, count($elements));
|
$delivery = new OrderDelivery($order, $acceptor, count($elements), $partialOrder);
|
||||||
|
|
||||||
$this->dispatch(PhraseaEvents::ORDER_DENY, new OrderDeliveryEvent($delivery));
|
$this->dispatch(PhraseaEvents::ORDER_DENY, new OrderDeliveryEvent($delivery));
|
||||||
}
|
}
|
||||||
|
@@ -31,16 +31,23 @@ class OrderDelivery
|
|||||||
*/
|
*/
|
||||||
private $quantity;
|
private $quantity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PartialOrder
|
||||||
|
*/
|
||||||
|
private $partialOrder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Order $deliveredOrder
|
* @param Order $deliveredOrder
|
||||||
* @param User $manager
|
* @param User $manager
|
||||||
* @param int $quantity
|
* @param int $quantity
|
||||||
|
* @param PartialOrder $partialOrder
|
||||||
*/
|
*/
|
||||||
public function __construct(Order $deliveredOrder, User $manager, $quantity)
|
public function __construct(Order $deliveredOrder, User $manager, $quantity, PartialOrder $partialOrder)
|
||||||
{
|
{
|
||||||
$this->order = $deliveredOrder;
|
$this->order = $deliveredOrder;
|
||||||
$this->admin = $manager;
|
$this->admin = $manager;
|
||||||
$this->quantity = $quantity;
|
$this->quantity = $quantity;
|
||||||
|
$this->partialOrder = $partialOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,4 +73,12 @@ class OrderDelivery
|
|||||||
{
|
{
|
||||||
return $this->quantity;
|
return $this->quantity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PartialOrder
|
||||||
|
*/
|
||||||
|
public function getPartialOrder()
|
||||||
|
{
|
||||||
|
return $this->partialOrder;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,20 +19,23 @@ interface ValidationNotifier
|
|||||||
/**
|
/**
|
||||||
* @param Order $order
|
* @param Order $order
|
||||||
* @param User $recipient
|
* @param User $recipient
|
||||||
|
* @param array $baseIds
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function notifyCreation(Order $order, User $recipient);
|
public function notifyCreation(Order $order, User $recipient, array $baseIds = array());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function notifyDelivery(OrderDelivery $delivery);
|
public function notifyDelivery(OrderDelivery $delivery, array $baseIds = array());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function notifyDenial(OrderDelivery $delivery);
|
public function notifyDenial(OrderDelivery $delivery, array $baseIds = array());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -26,8 +26,9 @@ class CompositeNotifier implements ValidationNotifier
|
|||||||
/**
|
/**
|
||||||
* @param Order $order
|
* @param Order $order
|
||||||
* @param User $recipient
|
* @param User $recipient
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyCreation(Order $order, User $recipient)
|
public function notifyCreation(Order $order, User $recipient, array $baseIds = array())
|
||||||
{
|
{
|
||||||
foreach ($this->notifiers as $notifier) {
|
foreach ($this->notifiers as $notifier) {
|
||||||
$notifier->notifyCreation($order, $recipient);
|
$notifier->notifyCreation($order, $recipient);
|
||||||
@@ -36,21 +37,23 @@ class CompositeNotifier implements ValidationNotifier
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyDelivery(OrderDelivery $delivery)
|
public function notifyDelivery(OrderDelivery $delivery, array $baseIds = array())
|
||||||
{
|
{
|
||||||
foreach ($this->notifiers as $notifier) {
|
foreach ($this->notifiers as $notifier) {
|
||||||
$notifier->notifyDelivery($delivery);
|
$notifier->notifyDelivery($delivery, $baseIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyDenial(OrderDelivery $delivery)
|
public function notifyDenial(OrderDelivery $delivery, array $baseIds = array())
|
||||||
{
|
{
|
||||||
foreach ($this->notifiers as $notifier) {
|
foreach ($this->notifiers as $notifier) {
|
||||||
$notifier->notifyDenial($delivery);
|
$notifier->notifyDenial($delivery, $baseIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -46,8 +46,9 @@ class MailNotifier implements ValidationNotifier
|
|||||||
/**
|
/**
|
||||||
* @param Order $order
|
* @param Order $order
|
||||||
* @param User $recipient
|
* @param User $recipient
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyCreation(Order $order, User $recipient)
|
public function notifyCreation(Order $order, User $recipient, array $baseIds = array())
|
||||||
{
|
{
|
||||||
$mail = MailInfoNewOrder::create($this->application, Receiver::fromUser($recipient));
|
$mail = MailInfoNewOrder::create($this->application, Receiver::fromUser($recipient));
|
||||||
|
|
||||||
@@ -58,8 +59,9 @@ class MailNotifier implements ValidationNotifier
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyDelivery(OrderDelivery $delivery)
|
public function notifyDelivery(OrderDelivery $delivery, array $baseIds = array())
|
||||||
{
|
{
|
||||||
$order = $delivery->getOrder();
|
$order = $delivery->getOrder();
|
||||||
|
|
||||||
@@ -85,8 +87,9 @@ class MailNotifier implements ValidationNotifier
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyDenial(OrderDelivery $delivery)
|
public function notifyDenial(OrderDelivery $delivery, array $baseIds = array())
|
||||||
{
|
{
|
||||||
$sender = Emitter::fromUser($delivery->getAdmin());
|
$sender = Emitter::fromUser($delivery->getAdmin());
|
||||||
$recipient = Receiver::fromUser($delivery->getOrder()->getUser());
|
$recipient = Receiver::fromUser($delivery->getOrder()->getUser());
|
||||||
|
@@ -47,21 +47,23 @@ class WebhookNotifier implements ValidationNotifier
|
|||||||
/**
|
/**
|
||||||
* @param Order $order
|
* @param Order $order
|
||||||
* @param User $recipient
|
* @param User $recipient
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyCreation(Order $order, User $recipient)
|
public function notifyCreation(Order $order, User $recipient, array $baseIds = array())
|
||||||
{
|
{
|
||||||
$eventData = [
|
$eventData = [
|
||||||
'order_id' => $order->getId(),
|
'order_id' => $order->getId(),
|
||||||
'user_id' => $recipient->getId(),
|
'user_id' => $recipient->getId(),
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->getManipulator()->create(WebhookEvent::ORDER_CREATED, WebhookEvent::ORDER_TYPE, $eventData);
|
$this->getManipulator()->create(WebhookEvent::ORDER_CREATED, WebhookEvent::ORDER_TYPE, $eventData, $baseIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyDelivery(OrderDelivery $delivery)
|
public function notifyDelivery(OrderDelivery $delivery, array $baseIds = array())
|
||||||
{
|
{
|
||||||
$eventData = [
|
$eventData = [
|
||||||
'order_id' => $delivery->getOrder()->getId(),
|
'order_id' => $delivery->getOrder()->getId(),
|
||||||
@@ -69,13 +71,14 @@ class WebhookNotifier implements ValidationNotifier
|
|||||||
'quantity' => $delivery->getQuantity()
|
'quantity' => $delivery->getQuantity()
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->getManipulator()->create(WebhookEvent::ORDER_DELIVERED, WebhookEvent::ORDER_TYPE, $eventData);
|
$this->getManipulator()->create(WebhookEvent::ORDER_DELIVERED, WebhookEvent::ORDER_TYPE, $eventData, $baseIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderDelivery $delivery
|
* @param OrderDelivery $delivery
|
||||||
|
* @param array $baseIds
|
||||||
*/
|
*/
|
||||||
public function notifyDenial(OrderDelivery $delivery)
|
public function notifyDenial(OrderDelivery $delivery, array $baseIds = array())
|
||||||
{
|
{
|
||||||
$eventData = [
|
$eventData = [
|
||||||
'order_id' => $delivery->getOrder()->getId(),
|
'order_id' => $delivery->getOrder()->getId(),
|
||||||
@@ -83,6 +86,6 @@ class WebhookNotifier implements ValidationNotifier
|
|||||||
'quantity' => $delivery->getQuantity()
|
'quantity' => $delivery->getQuantity()
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->getManipulator()->create(WebhookEvent::ORDER_DENIED, WebhookEvent::ORDER_TYPE, $eventData);
|
$this->getManipulator()->create(WebhookEvent::ORDER_DENIED, WebhookEvent::ORDER_TYPE, $eventData, $baseIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Alchemy\Phrasea\SearchEngine\Elastic;
|
namespace Alchemy\Phrasea\SearchEngine\Elastic;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Delegate\FetcherDelegateInterface;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Delegate\FetcherDelegateInterface;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Fetcher;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Fetcher;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator\CoreHydrator;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator\CoreHydrator;
|
||||||
@@ -13,8 +14,14 @@ use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator\TitleHydrator;
|
|||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Structure;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Structure;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Thesaurus\CandidateTerms;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Thesaurus\CandidateTerms;
|
||||||
|
|
||||||
|
|
||||||
class DataboxFetcherFactory
|
class DataboxFetcherFactory
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var PropertyAccess phraseanet configuration
|
||||||
|
*/
|
||||||
|
private $conf;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \ArrayAccess
|
* @var \ArrayAccess
|
||||||
*/
|
*/
|
||||||
@@ -39,14 +46,16 @@ class DataboxFetcherFactory
|
|||||||
private $options;
|
private $options;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param PropertyAccess $conf
|
||||||
* @param RecordHelper $recordHelper
|
* @param RecordHelper $recordHelper
|
||||||
* @param ElasticsearchOptions $options
|
* @param ElasticsearchOptions $options
|
||||||
* @param \ArrayAccess $container
|
* @param \ArrayAccess $container
|
||||||
* @param string $structureKey
|
* @param string $structureKey
|
||||||
* @param string $thesaurusKey
|
* @param string $thesaurusKey
|
||||||
*/
|
*/
|
||||||
public function __construct(RecordHelper $recordHelper, ElasticsearchOptions $options, \ArrayAccess $container, $structureKey, $thesaurusKey)
|
public function __construct(PropertyAccess $conf, RecordHelper $recordHelper, ElasticsearchOptions $options, \ArrayAccess $container, $structureKey, $thesaurusKey)
|
||||||
{
|
{
|
||||||
|
$this->conf = $conf;
|
||||||
$this->recordHelper = $recordHelper;
|
$this->recordHelper = $recordHelper;
|
||||||
$this->options = $options;
|
$this->options = $options;
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
@@ -70,7 +79,7 @@ class DataboxFetcherFactory
|
|||||||
[
|
[
|
||||||
new CoreHydrator($databox->get_sbas_id(), $databox->get_viewname(), $this->recordHelper),
|
new CoreHydrator($databox->get_sbas_id(), $databox->get_viewname(), $this->recordHelper),
|
||||||
new TitleHydrator($connection, $this->recordHelper),
|
new TitleHydrator($connection, $this->recordHelper),
|
||||||
new MetadataHydrator($connection, $this->getStructure(), $this->recordHelper),
|
new MetadataHydrator($this->conf, $connection, $this->getStructure(), $this->recordHelper),
|
||||||
new FlagHydrator($this->getStructure(), $databox),
|
new FlagHydrator($this->getStructure(), $databox),
|
||||||
new ThesaurusHydrator($this->getStructure(), $this->getThesaurus(), $candidateTerms),
|
new ThesaurusHydrator($this->getStructure(), $this->getThesaurus(), $candidateTerms),
|
||||||
new SubDefinitionHydrator($connection)
|
new SubDefinitionHydrator($connection)
|
||||||
|
@@ -15,6 +15,7 @@ use Assert\Assertion;
|
|||||||
|
|
||||||
class GpsPosition
|
class GpsPosition
|
||||||
{
|
{
|
||||||
|
const FULL_GEO_NOTATION = 'FullNotation';
|
||||||
const LONGITUDE_TAG_NAME = 'Longitude';
|
const LONGITUDE_TAG_NAME = 'Longitude';
|
||||||
const LONGITUDE_REF_TAG_NAME = 'LongitudeRef';
|
const LONGITUDE_REF_TAG_NAME = 'LongitudeRef';
|
||||||
const LONGITUDE_REF_WEST = 'W';
|
const LONGITUDE_REF_WEST = 'W';
|
||||||
@@ -29,6 +30,16 @@ class GpsPosition
|
|||||||
private $latitude;
|
private $latitude;
|
||||||
private $latitude_ref;
|
private $latitude_ref;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function clear()
|
||||||
|
{
|
||||||
|
$this->longitude = $this->longitude_ref = $this->latitude = $this->latitude_ref = null;
|
||||||
|
}
|
||||||
|
|
||||||
public function set($tag_name, $value)
|
public function set($tag_name, $value)
|
||||||
{
|
{
|
||||||
switch ($tag_name) {
|
switch ($tag_name) {
|
||||||
@@ -64,6 +75,53 @@ class GpsPosition
|
|||||||
$this->latitude_ref = $normalized;
|
$this->latitude_ref = $normalized;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case self::FULL_GEO_NOTATION:
|
||||||
|
$re = '/(-?\d+(?:\.\d+)?°?)\s*(\d+(?:\.\d+)?\')?\s*(\d+(?:\.\d+)?")?\s*(N|S|E|W)?/um';
|
||||||
|
$normalized = trim(strtoupper($value));
|
||||||
|
$matches = null;
|
||||||
|
preg_match_all($re, $normalized, $matches, PREG_SET_ORDER, 0);
|
||||||
|
if(count($matches) === 2) { // we need lat and lon
|
||||||
|
$lat = $lon = null;
|
||||||
|
foreach ($matches as $imatch => $match) {
|
||||||
|
if(count($match) != 5) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$v = 0.0;
|
||||||
|
for($part=1, $div=1.0; $part<=3; $part++, $div*=60.0) {
|
||||||
|
$v += floatval($match[$part]) / $div;
|
||||||
|
}
|
||||||
|
switch($match[4]) { // N S E W
|
||||||
|
case 'N':
|
||||||
|
$lat = $v;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
$lat = -$v;
|
||||||
|
break;
|
||||||
|
case 'E':
|
||||||
|
$lon = $v;
|
||||||
|
break;
|
||||||
|
case 'W':
|
||||||
|
$lon = -$v;
|
||||||
|
break;
|
||||||
|
case '': // no ref -> lat lon (first=lat, second=lon)
|
||||||
|
if($imatch === 0) {
|
||||||
|
$lat = $v;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$lon = $v;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new \InvalidArgumentException(sprintf('Unsupported reference "%s", should be N|S|E|W.', $match[4]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($lat !== null && $lon != null) {
|
||||||
|
$this->set(self::LATITUDE_TAG_NAME, $lat);
|
||||||
|
$this->set(self::LONGITUDE_TAG_NAME, $lon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new \InvalidArgumentException(sprintf('Unsupported tag name "%s".', $tag_name));
|
throw new \InvalidArgumentException(sprintf('Unsupported tag name "%s".', $tag_name));
|
||||||
}
|
}
|
||||||
@@ -95,19 +153,11 @@ class GpsPosition
|
|||||||
|
|
||||||
public function getCompositeLongitude()
|
public function getCompositeLongitude()
|
||||||
{
|
{
|
||||||
if ($this->longitude === null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->longitude ;
|
return $this->longitude ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCompositeLatitude()
|
public function getCompositeLatitude()
|
||||||
{
|
{
|
||||||
if ($this->latitude === null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->latitude;
|
return $this->latitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator;
|
namespace Alchemy\Phrasea\SearchEngine\Elastic\Indexer\Record\Hydrator;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Exception\Exception;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Exception\Exception;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\FieldMapping;
|
use Alchemy\Phrasea\SearchEngine\Elastic\FieldMapping;
|
||||||
use Alchemy\Phrasea\SearchEngine\Elastic\Mapping;
|
use Alchemy\Phrasea\SearchEngine\Elastic\Mapping;
|
||||||
@@ -24,28 +25,48 @@ use InvalidArgumentException;
|
|||||||
|
|
||||||
class MetadataHydrator implements HydratorInterface
|
class MetadataHydrator implements HydratorInterface
|
||||||
{
|
{
|
||||||
|
private $conf;
|
||||||
private $connection;
|
private $connection;
|
||||||
private $structure;
|
private $structure;
|
||||||
private $helper;
|
private $helper;
|
||||||
|
|
||||||
private $gps_position_buffer = [];
|
private $position_fields_mapping; // get from conf
|
||||||
|
|
||||||
public function __construct(DriverConnection $connection, Structure $structure, RecordHelper $helper)
|
private $caption_gps_position;
|
||||||
|
private $exif_gps_position;
|
||||||
|
|
||||||
|
public function __construct(PropertyAccess $conf, DriverConnection $connection, Structure $structure, RecordHelper $helper)
|
||||||
{
|
{
|
||||||
|
$this->conf = $conf;
|
||||||
$this->connection = $connection;
|
$this->connection = $connection;
|
||||||
$this->structure = $structure;
|
$this->structure = $structure;
|
||||||
$this->helper = $helper;
|
$this->helper = $helper;
|
||||||
|
|
||||||
|
// get the fieldnames of source of lat / lon geo fields (defined in instance conf)
|
||||||
|
$this->position_fields_mapping = [];
|
||||||
|
foreach($conf->get(['geocoding-providers'], []) as $provider) {
|
||||||
|
if($provider['enabled'] && array_key_exists('position-fields', $provider)) {
|
||||||
|
foreach ($provider['position-fields'] as $position_field) {
|
||||||
|
$this->position_fields_mapping[$position_field['name']] = $position_field['type'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->caption_gps_position = new GpsPosition();
|
||||||
|
$this->exif_gps_position = new GpsPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hydrateRecords(array &$records)
|
public function hydrateRecords(array &$records)
|
||||||
{
|
{
|
||||||
$sql = "(SELECT record_id, ms.name AS `key`, m.value AS value, 'caption' AS type, ms.business AS private\n"
|
$sql = "SELECT * FROM ("
|
||||||
|
. "(SELECT record_id, ms.name AS `key`, m.value AS value, 'caption' AS type, ms.business AS private\n"
|
||||||
. " FROM metadatas AS m INNER JOIN metadatas_structure AS ms ON (ms.id = m.meta_struct_id)\n"
|
. " FROM metadatas AS m INNER JOIN metadatas_structure AS ms ON (ms.id = m.meta_struct_id)\n"
|
||||||
. " WHERE record_id IN (?))\n"
|
. " WHERE record_id IN (?))\n"
|
||||||
. "UNION\n"
|
. "UNION\n"
|
||||||
. "(SELECT record_id, t.name AS `key`, t.value AS value, 'exif' AS type, 0 AS private\n"
|
. "(SELECT record_id, t.name AS `key`, t.value AS value, 'exif' AS type, 0 AS private\n"
|
||||||
. " FROM technical_datas AS t\n"
|
. " FROM technical_datas AS t\n"
|
||||||
. " WHERE record_id IN (?))\n";
|
. " WHERE record_id IN (?))\n"
|
||||||
|
. ") AS t ORDER BY record_id";
|
||||||
|
|
||||||
$ids = array_keys($records);
|
$ids = array_keys($records);
|
||||||
$statement = $this->connection->executeQuery(
|
$statement = $this->connection->executeQuery(
|
||||||
@@ -54,7 +75,17 @@ class MetadataHydrator implements HydratorInterface
|
|||||||
array(Connection::PARAM_INT_ARRAY, Connection::PARAM_INT_ARRAY)
|
array(Connection::PARAM_INT_ARRAY, Connection::PARAM_INT_ARRAY)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$record_id = -1;
|
||||||
while ($metadata = $statement->fetch()) {
|
while ($metadata = $statement->fetch()) {
|
||||||
|
|
||||||
|
if($metadata['record_id'] !== $record_id) {
|
||||||
|
// record has changed, don't mix with previous one
|
||||||
|
$this->caption_gps_position->clear();
|
||||||
|
$this->exif_gps_position->clear();
|
||||||
|
|
||||||
|
$record_id = $metadata['record_id'];
|
||||||
|
}
|
||||||
|
|
||||||
// Store metadata value
|
// Store metadata value
|
||||||
$key = $metadata['key'];
|
$key = $metadata['key'];
|
||||||
$value = trim($metadata['value']);
|
$value = trim($metadata['value']);
|
||||||
@@ -64,10 +95,10 @@ class MetadataHydrator implements HydratorInterface
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$id = $metadata['record_id'];
|
if (isset($records[$record_id])) {
|
||||||
if (isset($records[$id])) {
|
$record =& $records[$record_id];
|
||||||
$record =& $records[$id];
|
}
|
||||||
} else {
|
else {
|
||||||
throw new Exception('Received metadata from unexpected record');
|
throw new Exception('Received metadata from unexpected record');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,11 +120,31 @@ class MetadataHydrator implements HydratorInterface
|
|||||||
$record[$field] = array();
|
$record[$field] = array();
|
||||||
}
|
}
|
||||||
$record[$field][] = $value;
|
$record[$field][] = $value;
|
||||||
|
|
||||||
|
if(array_key_exists($key, $this->position_fields_mapping)) {
|
||||||
|
// this field is mapped as a position part (lat, lon, latlon), push it
|
||||||
|
switch($this->position_fields_mapping[$key]) {
|
||||||
|
case 'lat':
|
||||||
|
$this->handleGpsPosition($this->caption_gps_position, $record, GpsPosition::LATITUDE_TAG_NAME, $value);
|
||||||
|
break;
|
||||||
|
case 'lng':
|
||||||
|
case 'lon':
|
||||||
|
$this->handleGpsPosition($this->caption_gps_position, $record, GpsPosition::LONGITUDE_TAG_NAME, $value);
|
||||||
|
break;
|
||||||
|
case 'latlng':
|
||||||
|
case 'latlon':
|
||||||
|
$this->handleGpsPosition($this->caption_gps_position, $record, GpsPosition::FULL_GEO_NOTATION, $value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'exif':
|
case 'exif':
|
||||||
if (GpsPosition::isSupportedTagName($key)) {
|
// exif gps is a first-chance if caption is not yet set
|
||||||
$this->handleGpsPosition($records, $id, $key, $value);
|
// anyway if caption is set later, it will override the exif values
|
||||||
|
if (GpsPosition::isSupportedTagName($key) && !$this->caption_gps_position->isCompleteComposite()) {
|
||||||
|
$this->handleGpsPosition($this->exif_gps_position, $record, $key, $value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$tag = $this->structure->getMetadataTagByName($key);
|
$tag = $this->structure->getMetadataTagByName($key);
|
||||||
@@ -109,38 +160,25 @@ class MetadataHydrator implements HydratorInterface
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->clearGpsPositionBuffer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function handleGpsPosition(&$records, $id, $tag_name, $value)
|
private function handleGpsPosition(GpsPosition &$position, &$record, $tag_name, $value)
|
||||||
{
|
{
|
||||||
// Get position object
|
|
||||||
if (!isset($this->gps_position_buffer[$id])) {
|
|
||||||
$this->gps_position_buffer[$id] = new GpsPosition();
|
|
||||||
}
|
|
||||||
$position = $this->gps_position_buffer[$id];
|
|
||||||
// Push this tag into object
|
// Push this tag into object
|
||||||
$position->set($tag_name, $value);
|
$position->set($tag_name, $value);
|
||||||
|
|
||||||
// Try to output complete position
|
// Try to output complete position
|
||||||
if ($position->isCompleteComposite()) {
|
if ($position->isCompleteComposite()) {
|
||||||
$lon = $position->getCompositeLongitude();
|
$lon = $position->getCompositeLongitude();
|
||||||
$lat = $position->getCompositeLatitude();
|
$lat = $position->getCompositeLatitude();
|
||||||
|
|
||||||
$records[$id]['metadata_tags']['Longitude'] = $lon;
|
$record['metadata_tags']['Longitude'] = $lon;
|
||||||
$records[$id]['metadata_tags']['Latitude'] = $lat;
|
$record['metadata_tags']['Latitude'] = $lat;
|
||||||
|
|
||||||
$records[$id]["location"] = [
|
$record["location"] = [
|
||||||
"lat" => $lat,
|
"lat" => $lat,
|
||||||
"lon" => $lon
|
"lon" => $lon
|
||||||
];
|
];
|
||||||
|
|
||||||
unset($this->gps_position_buffer[$id]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function clearGpsPositionBuffer()
|
|
||||||
{
|
|
||||||
$this->gps_position_buffer = [];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -151,6 +151,7 @@ class RecordHelper
|
|||||||
return (bool) $value;
|
return (bool) $value;
|
||||||
|
|
||||||
case FieldMapping::TYPE_STRING:
|
case FieldMapping::TYPE_STRING:
|
||||||
|
$value = substr($value, 0, 32766); // for lucene limit, before a better solution
|
||||||
return str_replace("\0", '', $value);
|
return str_replace("\0", '', $value);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@@ -12,6 +12,8 @@
|
|||||||
namespace Alchemy\Phrasea\TaskManager\Job;
|
namespace Alchemy\Phrasea\TaskManager\Job;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application;
|
use Alchemy\Phrasea\Application;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Exception\RuntimeException;
|
use Alchemy\Phrasea\Exception\RuntimeException;
|
||||||
use Alchemy\Phrasea\Border\File;
|
use Alchemy\Phrasea\Border\File;
|
||||||
use Alchemy\Phrasea\Border\Manager as borderManager;
|
use Alchemy\Phrasea\Border\Manager as borderManager;
|
||||||
@@ -1001,7 +1003,7 @@ class ArchiveJob extends AbstractJob
|
|||||||
{
|
{
|
||||||
// quick fix to reconnect if mysql is lost
|
// quick fix to reconnect if mysql is lost
|
||||||
$app->getApplicationBox()->get_connection();
|
$app->getApplicationBox()->get_connection();
|
||||||
$databox->get_connection();
|
$collection->get_connection();
|
||||||
|
|
||||||
$status = \databox_status::operation_or($stat0, $stat1);
|
$status = \databox_status::operation_or($stat0, $stat1);
|
||||||
|
|
||||||
@@ -1032,7 +1034,8 @@ class ArchiveJob extends AbstractJob
|
|||||||
}
|
}
|
||||||
|
|
||||||
$story->setStatus(\databox_status::operation_or($stat0, $stat1));
|
$story->setStatus(\databox_status::operation_or($stat0, $stat1));
|
||||||
$story->rebuild_subdefs();
|
|
||||||
|
$app['dispatcher']->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($story));
|
||||||
|
|
||||||
unset($media);
|
unset($media);
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@ use Alchemy\Phrasea\Webhook\Processor\ProcessorFactory;
|
|||||||
use Alchemy\Phrasea\Webhook\Processor\ProcessorInterface;
|
use Alchemy\Phrasea\Webhook\Processor\ProcessorInterface;
|
||||||
use Alchemy\Phrasea\Webhook\Processor\UserDeletedProcessorFactory;
|
use Alchemy\Phrasea\Webhook\Processor\UserDeletedProcessorFactory;
|
||||||
use Alchemy\Phrasea\Webhook\Processor\UserRegistrationProcessorFactory;
|
use Alchemy\Phrasea\Webhook\Processor\UserRegistrationProcessorFactory;
|
||||||
|
use Alchemy\Phrasea\Webhook\Processor\SubdefEventProcessor;
|
||||||
|
|
||||||
class EventProcessorFactory
|
class EventProcessorFactory
|
||||||
{
|
{
|
||||||
@@ -29,7 +30,10 @@ class EventProcessorFactory
|
|||||||
$this->registerFactory(WebhookEvent::FEED_ENTRY_TYPE, new FeedEntryProcessorFactory($app));
|
$this->registerFactory(WebhookEvent::FEED_ENTRY_TYPE, new FeedEntryProcessorFactory($app));
|
||||||
$this->registerFactory(WebhookEvent::USER_REGISTRATION_TYPE, new UserRegistrationProcessorFactory($app));
|
$this->registerFactory(WebhookEvent::USER_REGISTRATION_TYPE, new UserRegistrationProcessorFactory($app));
|
||||||
$this->registerFactory(WebhookEvent::ORDER_TYPE, new OrderNotificationProcessorFactory($app));
|
$this->registerFactory(WebhookEvent::ORDER_TYPE, new OrderNotificationProcessorFactory($app));
|
||||||
$this->registerFactory(WebhookEvent::USER_DELETED_TYPE, new UserDeletedProcessorFactory($app));
|
$this->registerFactory(WebhookEvent::USER_DELETED_TYPE, new UserDeletedProcessorFactory());
|
||||||
|
$this->registerCallableFactory(WebhookEvent::RECORD_SUBDEF_TYPE, function () {
|
||||||
|
return new SubdefEventProcessor();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,7 +47,7 @@ class EventProcessorFactory
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $eventType
|
* @param string $eventType
|
||||||
* @param callback|callable $callable
|
* @param callback|callable|\Closure $callable
|
||||||
*/
|
*/
|
||||||
public function registerCallableFactory($eventType, $callable)
|
public function registerCallableFactory($eventType, $callable)
|
||||||
{
|
{
|
||||||
|
@@ -34,17 +34,16 @@ class FeedEntryProcessor implements ProcessorInterface
|
|||||||
{
|
{
|
||||||
$data = $event->getData();
|
$data = $event->getData();
|
||||||
|
|
||||||
if (!isset($data->entry_id)) {
|
if (!isset($data['entry_id'])) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$entry = $this->entryRepository->find($data->entry_id);
|
$entry = $this->entryRepository->find($data['entry_id']);
|
||||||
|
|
||||||
if (null === $entry) {
|
if (null === $entry) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $event->getData();
|
|
||||||
$feed = $entry->getFeed();
|
$feed = $entry->getFeed();
|
||||||
|
|
||||||
$query = $this->userQuery;
|
$query = $this->userQuery;
|
||||||
@@ -54,8 +53,8 @@ class FeedEntryProcessor implements ProcessorInterface
|
|||||||
->include_templates(false)
|
->include_templates(false)
|
||||||
->email_not_null(true);
|
->email_not_null(true);
|
||||||
|
|
||||||
if ($feed->getCollection($this->app)) {
|
if ($feed->getCollection($this->application)) {
|
||||||
$query->on_base_ids([$feed->getCollection($this->app)->get_base_id()]);
|
$query->on_base_ids([$feed->getCollection($this->application)->get_base_id()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$start = 0;
|
$start = 0;
|
||||||
@@ -76,7 +75,7 @@ class FeedEntryProcessor implements ProcessorInterface
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
'event' => $event->getName(),
|
'event' => $event->getName(),
|
||||||
'users_were_notified' => isset($data->notify_email) ?: (bool) $data->notify_email,
|
'users_were_notified' => isset($data['notify_email']) ? (bool) $data['notify_email'] : false,
|
||||||
'feed' => [
|
'feed' => [
|
||||||
'id' => $feed->getId(),
|
'id' => $feed->getId(),
|
||||||
'title' => $feed->getTitle(),
|
'title' => $feed->getTitle(),
|
||||||
|
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Webhook\Processor;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
|
||||||
|
|
||||||
|
class SubdefEventProcessor implements ProcessorInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
public function process(WebhookEvent $event)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'event' => $event->getName(),
|
||||||
|
'data' => $event->getData()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
@@ -19,7 +19,7 @@ use Alchemy\Queue\MessageQueueRegistry;
|
|||||||
* Class WebhookPublisher publishes webhook event notifications in message queues
|
* Class WebhookPublisher publishes webhook event notifications in message queues
|
||||||
* @package Alchemy\Phrasea\Webhook
|
* @package Alchemy\Phrasea\Webhook
|
||||||
*/
|
*/
|
||||||
class WebhookPublisher
|
class WebhookPublisher implements WebhookPublisherInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var MessageQueueRegistry
|
* @var MessageQueueRegistry
|
||||||
|
10
lib/Alchemy/Phrasea/Webhook/WebhookPublisherInterface.php
Normal file
10
lib/Alchemy/Phrasea/Webhook/WebhookPublisherInterface.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Webhook;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
|
||||||
|
|
||||||
|
interface WebhookPublisherInterface
|
||||||
|
{
|
||||||
|
public function publishWebhookEvent(WebhookEvent $event);
|
||||||
|
}
|
@@ -120,6 +120,16 @@ class phraseadate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTranslatedDate(DateTime $date = null)
|
||||||
|
{
|
||||||
|
$fmt = new IntlDateFormatter(
|
||||||
|
$this->app['locale'] ?: 'en',
|
||||||
|
NULL, NULL, NULL, NULL, 'dd MMMM yyyy'
|
||||||
|
);
|
||||||
|
|
||||||
|
return $fmt->format($date);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param DateTime $date
|
* @param DateTime $date
|
||||||
@@ -139,17 +149,25 @@ class phraseadate
|
|||||||
*/
|
*/
|
||||||
private function formatDate(DateTime $date, $locale, $format)
|
private function formatDate(DateTime $date, $locale, $format)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch ($locale) {
|
switch ($locale) {
|
||||||
default:
|
default:
|
||||||
|
case 'de':
|
||||||
case 'fr':
|
case 'fr':
|
||||||
switch ($format) {
|
switch ($format) {
|
||||||
default:
|
default:
|
||||||
case 'DAY_MONTH':
|
case 'DAY_MONTH':
|
||||||
$date_formated = strftime("%e %B", $date->format('U'));
|
$formatM = new IntlDateFormatter(
|
||||||
|
$locale,
|
||||||
|
NULL, NULL, NULL, NULL, 'dd MMMM'
|
||||||
|
);
|
||||||
|
$date_formated = $formatM->format($date);
|
||||||
break;
|
break;
|
||||||
case 'DAY_MONTH_YEAR':
|
case 'DAY_MONTH_YEAR':
|
||||||
$date_formated = strftime("%e %B %Y", $date->format('U'));
|
$formatY = new IntlDateFormatter(
|
||||||
|
$locale,
|
||||||
|
NULL, NULL, NULL, NULL, 'dd MMMM yyyy'
|
||||||
|
);
|
||||||
|
$date_formated = $formatY->format($date);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -157,26 +175,22 @@ class phraseadate
|
|||||||
switch ($format) {
|
switch ($format) {
|
||||||
default:
|
default:
|
||||||
case 'DAY_MONTH':
|
case 'DAY_MONTH':
|
||||||
$date_formated = strftime("%B %e", $date->format('U'));
|
$formatM = new IntlDateFormatter(
|
||||||
|
$locale,
|
||||||
|
NULL, NULL, NULL, NULL, 'MMMM dd'
|
||||||
|
);
|
||||||
|
$date_formated = $formatM->format($date);
|
||||||
break;
|
break;
|
||||||
case 'DAY_MONTH_YEAR':
|
case 'DAY_MONTH_YEAR':
|
||||||
$date_formated = strftime("%B %e %Y", $date->format('U'));
|
$formatY = new IntlDateFormatter(
|
||||||
break;
|
$locale,
|
||||||
}
|
NULL, NULL, NULL, NULL, 'MMMM dd yyyy'
|
||||||
break;
|
);
|
||||||
case 'de':
|
$date_formated = $formatY->format($date);
|
||||||
switch ($format) {
|
|
||||||
default:
|
|
||||||
case 'DAY_MONTH':
|
|
||||||
$date_formated = strftime("%e. %B", $date->format('U'));
|
|
||||||
break;
|
|
||||||
case 'DAY_MONTH_YEAR':
|
|
||||||
$date_formated = strftime("%e. %B %Y", $date->format('U'));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $date_formated;
|
return $date_formated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ use Alchemy\Phrasea\Core\Event\Record\OriginalNameChangedEvent;
|
|||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvent;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvent;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
|
||||||
use Alchemy\Phrasea\Core\Event\Record\StatusChangedEvent;
|
use Alchemy\Phrasea\Core\Event\Record\StatusChangedEvent;
|
||||||
|
use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent;
|
||||||
use Alchemy\Phrasea\Core\PhraseaTokens;
|
use Alchemy\Phrasea\Core\PhraseaTokens;
|
||||||
use Alchemy\Phrasea\Databox\Subdef\MediaSubdefRepository;
|
use Alchemy\Phrasea\Databox\Subdef\MediaSubdefRepository;
|
||||||
use Alchemy\Phrasea\Filesystem\FilesystemService;
|
use Alchemy\Phrasea\Filesystem\FilesystemService;
|
||||||
@@ -284,7 +285,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
$this->getDataboxConnection()->executeUpdate($sql, ['type' => $type, 'record_id' => $this->getRecordId()]);
|
$this->getDataboxConnection()->executeUpdate($sql, ['type' => $type, 'record_id' => $this->getRecordId()]);
|
||||||
|
|
||||||
if ($old_type !== $type) {
|
if ($old_type !== $type) {
|
||||||
$this->rebuild_subdefs();
|
$this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($this));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
@@ -341,7 +342,8 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
array(':mime' => $mime, ':record_id' => $this->getRecordId())
|
array(':mime' => $mime, ':record_id' => $this->getRecordId())
|
||||||
)) {
|
)) {
|
||||||
|
|
||||||
$this->rebuild_subdefs();
|
$this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($this));
|
||||||
|
|
||||||
$this->delete_data_from_cache();
|
$this->delete_data_from_cache();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1735,7 +1737,9 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
throw new Exception('This record is not a grouping');
|
throw new Exception('This record is not a grouping');
|
||||||
}
|
}
|
||||||
|
|
||||||
$selections = $this->getDatabox()->getRecordRepository()->findChildren([$this->getRecordId()], null, $offset, $max_items);
|
$user = $this->getAuthenticatedUser();
|
||||||
|
|
||||||
|
$selections = $this->getDatabox()->getRecordRepository()->findChildren([$this->getRecordId()], $user, $offset, $max_items);
|
||||||
|
|
||||||
return reset($selections);
|
return reset($selections);
|
||||||
}
|
}
|
||||||
@@ -1745,7 +1749,9 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
*/
|
*/
|
||||||
public function get_grouping_parents()
|
public function get_grouping_parents()
|
||||||
{
|
{
|
||||||
$selections = $this->getDatabox()->getRecordRepository()->findParents([$this->getRecordId()]);
|
$user = $this->getAuthenticatedUser();
|
||||||
|
|
||||||
|
$selections = $this->getDatabox()->getRecordRepository()->findParents([$this->getRecordId()], $user);
|
||||||
|
|
||||||
return reset($selections);
|
return reset($selections);
|
||||||
}
|
}
|
||||||
@@ -1948,4 +1954,15 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
{
|
{
|
||||||
return $this->app['provider.repo.media_subdef']->getRepositoryForDatabox($this->getDataboxId());
|
return $this->app['provider.repo.media_subdef']->getRepositoryForDatabox($this->getDataboxId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return User|null
|
||||||
|
*/
|
||||||
|
protected function getAuthenticatedUser()
|
||||||
|
{
|
||||||
|
/** @var \Alchemy\Phrasea\Authentication\Authenticator $authenticator */
|
||||||
|
$authenticator = $this->app['authentication'];
|
||||||
|
|
||||||
|
return $authenticator->getUser();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -79,7 +79,7 @@
|
|||||||
<size>748</size>
|
<size>748</size>
|
||||||
<mediatype>video</mediatype>
|
<mediatype>video</mediatype>
|
||||||
<writeDatas>yes</writeDatas>
|
<writeDatas>yes</writeDatas>
|
||||||
<acodec>libmp3lame</acodec>
|
<acodec>libfdk_aac</acodec>
|
||||||
<vcodec>libx264</vcodec>
|
<vcodec>libx264</vcodec>
|
||||||
<devices>screen</devices>
|
<devices>screen</devices>
|
||||||
<bitrate>1000</bitrate>
|
<bitrate>1000</bitrate>
|
||||||
|
@@ -79,7 +79,7 @@
|
|||||||
<size>748</size>
|
<size>748</size>
|
||||||
<mediatype>video</mediatype>
|
<mediatype>video</mediatype>
|
||||||
<writeDatas>yes</writeDatas>
|
<writeDatas>yes</writeDatas>
|
||||||
<acodec>libmp3lame</acodec>
|
<acodec>libfdk_aac</acodec>
|
||||||
<vcodec>libx264</vcodec>
|
<vcodec>libx264</vcodec>
|
||||||
<devices>screen</devices>
|
<devices>screen</devices>
|
||||||
<bitrate>1000</bitrate>
|
<bitrate>1000</bitrate>
|
||||||
|
@@ -79,7 +79,7 @@
|
|||||||
<size>748</size>
|
<size>748</size>
|
||||||
<mediatype>video</mediatype>
|
<mediatype>video</mediatype>
|
||||||
<writeDatas>yes</writeDatas>
|
<writeDatas>yes</writeDatas>
|
||||||
<acodec>libmp3lame</acodec>
|
<acodec>libfdk_aac</acodec>
|
||||||
<vcodec>libx264</vcodec>
|
<vcodec>libx264</vcodec>
|
||||||
<devices>screen</devices>
|
<devices>screen</devices>
|
||||||
<bitrate>1000</bitrate>
|
<bitrate>1000</bitrate>
|
||||||
|
@@ -65,7 +65,7 @@
|
|||||||
"normalize-css": "^2.1.0",
|
"normalize-css": "^2.1.0",
|
||||||
"npm": "^6.0.0",
|
"npm": "^6.0.0",
|
||||||
"npm-modernizr": "^2.8.3",
|
"npm-modernizr": "^2.8.3",
|
||||||
"phraseanet-production-client": "0.34.150-d",
|
"phraseanet-production-client": "0.34.160-d",
|
||||||
"requirejs": "^2.3.5",
|
"requirejs": "^2.3.5",
|
||||||
"tinymce": "^4.0.28",
|
"tinymce": "^4.0.28",
|
||||||
"underscore": "^1.8.3",
|
"underscore": "^1.8.3",
|
||||||
|
@@ -84,5 +84,7 @@ define('GV_homeTitle', 'SuperPhraseanet');
|
|||||||
define('GV_metaKeywords', '');
|
define('GV_metaKeywords', '');
|
||||||
define('GV_metaDescription', '');
|
define('GV_metaDescription', '');
|
||||||
define('GV_googleAnalytics', '');
|
define('GV_googleAnalytics', '');
|
||||||
|
define('GV_matomoAnalyticsUrl', '');
|
||||||
|
define('GV_matomoAnalyticsId', '');
|
||||||
define('GV_allow_search_engine', true);
|
define('GV_allow_search_engine', true);
|
||||||
define('GV_display_gcf', true);
|
define('GV_display_gcf', true);
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:06:24Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:44:42Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
@@ -192,8 +192,9 @@
|
|||||||
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records" approved="yes">
|
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records" approved="yes">
|
||||||
<source>%nb_records% records</source>
|
<source>%nb_records% records</source>
|
||||||
<target state="translated">%nb_records% Datensätze</target>
|
<target state="translated">%nb_records% Datensätze</target>
|
||||||
|
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="25">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="29">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
||||||
<source>%nb_view% vue</source>
|
<source>%nb_view% vue</source>
|
||||||
@@ -1689,7 +1690,7 @@
|
|||||||
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
||||||
<source>Certaines donnees du panier ont change</source>
|
<source>Certaines donnees du panier ont change</source>
|
||||||
<target state="translated">Einige Daten des Sammelkorbs wurden verändert</target>
|
<target state="translated">Einige Daten des Sammelkorbs wurden verändert</target>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
||||||
<source>Certaines donnees du reportage ont change</source>
|
<source>Certaines donnees du reportage ont change</source>
|
||||||
@@ -3165,6 +3166,11 @@
|
|||||||
<target state="translated">Einstellungen von ausführbaren Programme</target>
|
<target state="translated">Einstellungen von ausführbaren Programme</target>
|
||||||
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="7e4ab5feaafcefe0d6fa300a11dfc921f12b5a40" resname="Expiration date successfully updated!">
|
||||||
|
<source>Expiration date successfully updated!</source>
|
||||||
|
<target state="new">Expiration date successfully updated!</target>
|
||||||
|
<jms:reference-file line="627">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
||||||
<source>Export</source>
|
<source>Export</source>
|
||||||
<target state="translated">Exportieren</target>
|
<target state="translated">Exportieren</target>
|
||||||
@@ -6685,6 +6691,11 @@
|
|||||||
<target state="translated">Die folgende Fehler wurden festgestellt</target>
|
<target state="translated">Die folgende Fehler wurden festgestellt</target>
|
||||||
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="99d8c6d419ad0732e7d87098c3f60b62f2316e61" resname="The provided date is null!">
|
||||||
|
<source>The provided date is null!</source>
|
||||||
|
<target state="new">The provided date is null!</target>
|
||||||
|
<jms:reference-file line="610">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
||||||
<source>The publication has been stopped</source>
|
<source>The publication has been stopped</source>
|
||||||
<target state="translated">Veröffentlichung wurde gestoppt</target>
|
<target state="translated">Veröffentlichung wurde gestoppt</target>
|
||||||
@@ -7046,6 +7057,11 @@
|
|||||||
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
||||||
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="c35e31f5dafff1fdd756af111f7699abf3a5ffd0" resname="Unable to save the expiration date">
|
||||||
|
<source>Unable to save the expiration date</source>
|
||||||
|
<target state="new">Unable to save the expiration date</target>
|
||||||
|
<jms:reference-file line="607">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
||||||
<source>Unable to send the documents</source>
|
<source>Unable to send the documents</source>
|
||||||
<target state="translated">Es ist nicht möglich Dokumente zu senden</target>
|
<target state="translated">Es ist nicht möglich Dokumente zu senden</target>
|
||||||
@@ -11718,7 +11734,13 @@
|
|||||||
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date">
|
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date">
|
||||||
<source>prod:workzone:basket:creation-date</source>
|
<source>prod:workzone:basket:creation-date</source>
|
||||||
<target state="new">prod:workzone:basket:creation-date</target>
|
<target state="new">prod:workzone:basket:creation-date</target>
|
||||||
<jms:reference-file line="26">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="98">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="30">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5f352a91ba9ba55245e244f3834ec906c27b1378" resname="prod:workzone:basket:updated-message">
|
||||||
|
<source>prod:workzone:basket:updated-message</source>
|
||||||
|
<target state="new">prod:workzone:basket:updated-message</target>
|
||||||
|
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options">
|
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options">
|
||||||
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
||||||
@@ -11826,7 +11848,7 @@
|
|||||||
<target state="translated">Aktualisieren</target>
|
<target state="translated">Aktualisieren</target>
|
||||||
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -13397,128 +13419,134 @@
|
|||||||
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april">
|
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april">
|
||||||
<source>workzone:datepicker:april</source>
|
<source>workzone:datepicker:april</source>
|
||||||
<target state="new">workzone:datepicker:april</target>
|
<target state="new">workzone:datepicker:april</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august">
|
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august">
|
||||||
<source>workzone:datepicker:august</source>
|
<source>workzone:datepicker:august</source>
|
||||||
<target state="new">workzone:datepicker:august</target>
|
<target state="new">workzone:datepicker:august</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText">
|
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText">
|
||||||
<source>workzone:datepicker:closeText</source>
|
<source>workzone:datepicker:closeText</source>
|
||||||
<target state="new">workzone:datepicker:closeText</target>
|
<target state="new">workzone:datepicker:closeText</target>
|
||||||
<jms:reference-file line="110">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="165">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText">
|
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText">
|
||||||
<source>workzone:datepicker:currentText</source>
|
<source>workzone:datepicker:currentText</source>
|
||||||
<target state="new">workzone:datepicker:currentText</target>
|
<target state="new">workzone:datepicker:currentText</target>
|
||||||
<jms:reference-file line="113">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december">
|
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december">
|
||||||
<source>workzone:datepicker:december</source>
|
<source>workzone:datepicker:december</source>
|
||||||
<target state="new">workzone:datepicker:december</target>
|
<target state="new">workzone:datepicker:december</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february">
|
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february">
|
||||||
<source>workzone:datepicker:february</source>
|
<source>workzone:datepicker:february</source>
|
||||||
<target state="new">workzone:datepicker:february</target>
|
<target state="new">workzone:datepicker:february</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday">
|
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday">
|
||||||
<source>workzone:datepicker:friday</source>
|
<source>workzone:datepicker:friday</source>
|
||||||
<target state="new">workzone:datepicker:friday</target>
|
<target state="new">workzone:datepicker:friday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january">
|
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january">
|
||||||
<source>workzone:datepicker:january</source>
|
<source>workzone:datepicker:january</source>
|
||||||
<target state="new">workzone:datepicker:january</target>
|
<target state="new">workzone:datepicker:january</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july">
|
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july">
|
||||||
<source>workzone:datepicker:july</source>
|
<source>workzone:datepicker:july</source>
|
||||||
<target state="new">workzone:datepicker:july</target>
|
<target state="new">workzone:datepicker:july</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june">
|
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june">
|
||||||
<source>workzone:datepicker:june</source>
|
<source>workzone:datepicker:june</source>
|
||||||
<target state="new">workzone:datepicker:june</target>
|
<target state="new">workzone:datepicker:june</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march">
|
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march">
|
||||||
<source>workzone:datepicker:march</source>
|
<source>workzone:datepicker:march</source>
|
||||||
<target state="new">workzone:datepicker:march</target>
|
<target state="new">workzone:datepicker:march</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may">
|
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may">
|
||||||
<source>workzone:datepicker:may</source>
|
<source>workzone:datepicker:may</source>
|
||||||
<target state="new">workzone:datepicker:may</target>
|
<target state="new">workzone:datepicker:may</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday">
|
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday">
|
||||||
<source>workzone:datepicker:monday</source>
|
<source>workzone:datepicker:monday</source>
|
||||||
<target state="new">workzone:datepicker:monday</target>
|
<target state="new">workzone:datepicker:monday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
|
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
|
||||||
<source>workzone:datepicker:nextText</source>
|
<source>workzone:datepicker:nextText</source>
|
||||||
<target state="new">workzone:datepicker:nextText</target>
|
<target state="new">workzone:datepicker:nextText</target>
|
||||||
<jms:reference-file line="112">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november">
|
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november">
|
||||||
<source>workzone:datepicker:november</source>
|
<source>workzone:datepicker:november</source>
|
||||||
<target state="new">workzone:datepicker:november</target>
|
<target state="new">workzone:datepicker:november</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october">
|
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october">
|
||||||
<source>workzone:datepicker:october</source>
|
<source>workzone:datepicker:october</source>
|
||||||
<target state="new">workzone:datepicker:october</target>
|
<target state="new">workzone:datepicker:october</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
|
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
|
||||||
<source>workzone:datepicker:prevText</source>
|
<source>workzone:datepicker:prevText</source>
|
||||||
<target state="new">workzone:datepicker:prevText</target>
|
<target state="new">workzone:datepicker:prevText</target>
|
||||||
<jms:reference-file line="111">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="166">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday">
|
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday">
|
||||||
<source>workzone:datepicker:saturday</source>
|
<source>workzone:datepicker:saturday</source>
|
||||||
<target state="new">workzone:datepicker:saturday</target>
|
<target state="new">workzone:datepicker:saturday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september">
|
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september">
|
||||||
<source>workzone:datepicker:september</source>
|
<source>workzone:datepicker:september</source>
|
||||||
<target state="new">workzone:datepicker:september</target>
|
<target state="new">workzone:datepicker:september</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday">
|
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday">
|
||||||
<source>workzone:datepicker:sunday</source>
|
<source>workzone:datepicker:sunday</source>
|
||||||
<target state="new">workzone:datepicker:sunday</target>
|
<target state="new">workzone:datepicker:sunday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday">
|
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday">
|
||||||
<source>workzone:datepicker:thursday</source>
|
<source>workzone:datepicker:thursday</source>
|
||||||
<target state="new">workzone:datepicker:thursday</target>
|
<target state="new">workzone:datepicker:thursday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday">
|
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday">
|
||||||
<source>workzone:datepicker:tuesday</source>
|
<source>workzone:datepicker:tuesday</source>
|
||||||
<target state="new">workzone:datepicker:tuesday</target>
|
<target state="new">workzone:datepicker:tuesday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday">
|
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday">
|
||||||
<source>workzone:datepicker:wednesday</source>
|
<source>workzone:datepicker:wednesday</source>
|
||||||
<target state="new">workzone:datepicker:wednesday</target>
|
<target state="new">workzone:datepicker:wednesday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a272c87e7e6d13003b19b8b8169847c9c2fe8ef0" resname="workzone:feedback:expiration">
|
<trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed">
|
||||||
<source>workzone:feedback:expiration</source>
|
<source>workzone:feedback:expiration-closed</source>
|
||||||
<target state="new">workzone:feedback:expiration</target>
|
<target state="new">workzone:feedback:expiration-closed</target>
|
||||||
<jms:reference-file line="95">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="105">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="15">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="32285b1e113decb0a3fdf090b0698c5508a2bd09" resname="workzone:feedback:expiration-open">
|
||||||
|
<source>workzone:feedback:expiration-open</source>
|
||||||
|
<target state="new">workzone:feedback:expiration-open</target>
|
||||||
|
<jms:reference-file line="107">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="17">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update">
|
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update">
|
||||||
<source>workzone:feedback:update</source>
|
<source>workzone:feedback:update</source>
|
||||||
<target state="new">workzone:feedback:update</target>
|
<target state="new">workzone:feedback:update</target>
|
||||||
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
||||||
<source>yes</source>
|
<source>yes</source>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:06:35Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:44:55Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
@@ -192,8 +192,9 @@
|
|||||||
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records" approved="yes">
|
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records" approved="yes">
|
||||||
<source>%nb_records% records</source>
|
<source>%nb_records% records</source>
|
||||||
<target state="translated">%nb_records% records</target>
|
<target state="translated">%nb_records% records</target>
|
||||||
|
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="25">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="29">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
||||||
<source>%nb_view% vue</source>
|
<source>%nb_view% vue</source>
|
||||||
@@ -1690,7 +1691,7 @@
|
|||||||
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
||||||
<source>Certaines donnees du panier ont change</source>
|
<source>Certaines donnees du panier ont change</source>
|
||||||
<target state="translated">This basket has been updated</target>
|
<target state="translated">This basket has been updated</target>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
||||||
<source>Certaines donnees du reportage ont change</source>
|
<source>Certaines donnees du reportage ont change</source>
|
||||||
@@ -3168,6 +3169,11 @@
|
|||||||
<target state="translated">Executables setting</target>
|
<target state="translated">Executables setting</target>
|
||||||
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="7e4ab5feaafcefe0d6fa300a11dfc921f12b5a40" resname="Expiration date successfully updated!">
|
||||||
|
<source>Expiration date successfully updated!</source>
|
||||||
|
<target state="new">Expiration date successfully updated!</target>
|
||||||
|
<jms:reference-file line="627">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
||||||
<source>Export</source>
|
<source>Export</source>
|
||||||
<target state="translated">Export</target>
|
<target state="translated">Export</target>
|
||||||
@@ -6688,6 +6694,11 @@
|
|||||||
<target state="translated">The following errors have been detected</target>
|
<target state="translated">The following errors have been detected</target>
|
||||||
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="99d8c6d419ad0732e7d87098c3f60b62f2316e61" resname="The provided date is null!">
|
||||||
|
<source>The provided date is null!</source>
|
||||||
|
<target state="new">The provided date is null!</target>
|
||||||
|
<jms:reference-file line="610">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
||||||
<source>The publication has been stopped</source>
|
<source>The publication has been stopped</source>
|
||||||
<target state="translated">The publication has been stopped.</target>
|
<target state="translated">The publication has been stopped.</target>
|
||||||
@@ -7049,6 +7060,11 @@
|
|||||||
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
||||||
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="c35e31f5dafff1fdd756af111f7699abf3a5ffd0" resname="Unable to save the expiration date">
|
||||||
|
<source>Unable to save the expiration date</source>
|
||||||
|
<target state="new">Unable to save the expiration date</target>
|
||||||
|
<jms:reference-file line="607">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
||||||
<source>Unable to send the documents</source>
|
<source>Unable to send the documents</source>
|
||||||
<target state="translated">Unable to send the documents</target>
|
<target state="translated">Unable to send the documents</target>
|
||||||
@@ -11721,10 +11737,16 @@ It is possible to place several search areas</target>
|
|||||||
<target state="translated">Delete Selection</target>
|
<target state="translated">Delete Selection</target>
|
||||||
<jms:reference-file line="223">prod/actions/Push.html.twig</jms:reference-file>
|
<jms:reference-file line="223">prod/actions/Push.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date" approved="no">
|
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date">
|
||||||
<source>prod:workzone:basket:creation-date</source>
|
<source>prod:workzone:basket:creation-date</source>
|
||||||
<target state="needs-translation">Creation</target>
|
<target state="needs-translation">Creation</target>
|
||||||
<jms:reference-file line="26">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="98">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="30">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5f352a91ba9ba55245e244f3834ec906c27b1378" resname="prod:workzone:basket:updated-message">
|
||||||
|
<source>prod:workzone:basket:updated-message</source>
|
||||||
|
<target state="new">prod:workzone:basket:updated-message</target>
|
||||||
|
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options">
|
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options">
|
||||||
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
||||||
@@ -11832,7 +11854,7 @@ It is possible to place several search areas</target>
|
|||||||
<target state="translated">Refresh</target>
|
<target state="translated">Refresh</target>
|
||||||
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -13403,128 +13425,134 @@ It is possible to place several search areas</target>
|
|||||||
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april" approved="yes">
|
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april" approved="yes">
|
||||||
<source>workzone:datepicker:april</source>
|
<source>workzone:datepicker:april</source>
|
||||||
<target state="translated">April</target>
|
<target state="translated">April</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august" approved="yes">
|
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august" approved="yes">
|
||||||
<source>workzone:datepicker:august</source>
|
<source>workzone:datepicker:august</source>
|
||||||
<target state="translated">August</target>
|
<target state="translated">August</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText">
|
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText" approved="no">
|
||||||
<source>workzone:datepicker:closeText</source>
|
<source>workzone:datepicker:closeText</source>
|
||||||
<target state="new">workzone:datepicker:closeText</target>
|
<target state="needs-translation">Close</target>
|
||||||
<jms:reference-file line="110">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="165">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText">
|
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText" approved="no">
|
||||||
<source>workzone:datepicker:currentText</source>
|
<source>workzone:datepicker:currentText</source>
|
||||||
<target state="new">workzone:datepicker:currentText</target>
|
<target state="needs-translation">Current</target>
|
||||||
<jms:reference-file line="113">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december" approved="yes">
|
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december" approved="yes">
|
||||||
<source>workzone:datepicker:december</source>
|
<source>workzone:datepicker:december</source>
|
||||||
<target state="translated">December</target>
|
<target state="translated">December</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february" approved="yes">
|
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february" approved="yes">
|
||||||
<source>workzone:datepicker:february</source>
|
<source>workzone:datepicker:february</source>
|
||||||
<target state="translated">February</target>
|
<target state="translated">February</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday" approved="yes">
|
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday" approved="yes">
|
||||||
<source>workzone:datepicker:friday</source>
|
<source>workzone:datepicker:friday</source>
|
||||||
<target state="translated">Friday</target>
|
<target state="translated">Friday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january" approved="yes">
|
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january" approved="yes">
|
||||||
<source>workzone:datepicker:january</source>
|
<source>workzone:datepicker:january</source>
|
||||||
<target state="translated">January</target>
|
<target state="translated">January</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july" approved="yes">
|
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july" approved="yes">
|
||||||
<source>workzone:datepicker:july</source>
|
<source>workzone:datepicker:july</source>
|
||||||
<target state="translated">July</target>
|
<target state="translated">July</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june" approved="yes">
|
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june" approved="yes">
|
||||||
<source>workzone:datepicker:june</source>
|
<source>workzone:datepicker:june</source>
|
||||||
<target state="translated">June</target>
|
<target state="translated">June</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march" approved="yes">
|
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march" approved="yes">
|
||||||
<source>workzone:datepicker:march</source>
|
<source>workzone:datepicker:march</source>
|
||||||
<target state="translated">March</target>
|
<target state="translated">March</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may" approved="yes">
|
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may" approved="yes">
|
||||||
<source>workzone:datepicker:may</source>
|
<source>workzone:datepicker:may</source>
|
||||||
<target state="translated">May</target>
|
<target state="translated">May</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday" approved="yes">
|
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday" approved="yes">
|
||||||
<source>workzone:datepicker:monday</source>
|
<source>workzone:datepicker:monday</source>
|
||||||
<target state="translated">Monday</target>
|
<target state="translated">Monday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText" approved="no">
|
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
|
||||||
<source>workzone:datepicker:nextText</source>
|
<source>workzone:datepicker:nextText</source>
|
||||||
<target state="needs-translation">Next</target>
|
<target state="needs-translation">Next</target>
|
||||||
<jms:reference-file line="112">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november" approved="yes">
|
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november" approved="yes">
|
||||||
<source>workzone:datepicker:november</source>
|
<source>workzone:datepicker:november</source>
|
||||||
<target state="translated">November</target>
|
<target state="translated">November</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october" approved="yes">
|
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october" approved="yes">
|
||||||
<source>workzone:datepicker:october</source>
|
<source>workzone:datepicker:october</source>
|
||||||
<target state="translated">October</target>
|
<target state="translated">October</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText" approved="no">
|
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
|
||||||
<source>workzone:datepicker:prevText</source>
|
<source>workzone:datepicker:prevText</source>
|
||||||
<target state="needs-translation">Previous</target>
|
<target state="needs-translation">Previous</target>
|
||||||
<jms:reference-file line="111">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="166">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday" approved="yes">
|
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday" approved="yes">
|
||||||
<source>workzone:datepicker:saturday</source>
|
<source>workzone:datepicker:saturday</source>
|
||||||
<target state="translated">Saturday</target>
|
<target state="translated">Saturday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september" approved="yes">
|
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september" approved="yes">
|
||||||
<source>workzone:datepicker:september</source>
|
<source>workzone:datepicker:september</source>
|
||||||
<target state="translated">September</target>
|
<target state="translated">September</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday" approved="yes">
|
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday" approved="yes">
|
||||||
<source>workzone:datepicker:sunday</source>
|
<source>workzone:datepicker:sunday</source>
|
||||||
<target state="translated">Sunday</target>
|
<target state="translated">Sunday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday" approved="yes">
|
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday" approved="yes">
|
||||||
<source>workzone:datepicker:thursday</source>
|
<source>workzone:datepicker:thursday</source>
|
||||||
<target state="translated">Thursday</target>
|
<target state="translated">Thursday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday" approved="yes">
|
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday" approved="yes">
|
||||||
<source>workzone:datepicker:tuesday</source>
|
<source>workzone:datepicker:tuesday</source>
|
||||||
<target state="translated">Tuesday</target>
|
<target state="translated">Tuesday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday" approved="yes">
|
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday" approved="yes">
|
||||||
<source>workzone:datepicker:wednesday</source>
|
<source>workzone:datepicker:wednesday</source>
|
||||||
<target state="translated">Wednesday</target>
|
<target state="translated">Wednesday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a272c87e7e6d13003b19b8b8169847c9c2fe8ef0" resname="workzone:feedback:expiration">
|
<trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed">
|
||||||
<source>workzone:feedback:expiration</source>
|
<source>workzone:feedback:expiration-closed</source>
|
||||||
<target state="needs-translation">Feedback open Until</target>
|
<target state="new">workzone:feedback:expiration-closed</target>
|
||||||
<jms:reference-file line="95">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="105">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="15">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update" approved="no">
|
<trans-unit id="32285b1e113decb0a3fdf090b0698c5508a2bd09" resname="workzone:feedback:expiration-open" approved="no">
|
||||||
|
<source>workzone:feedback:expiration-open</source>
|
||||||
|
<target state="needs-translation">Feedback open until</target>
|
||||||
|
<jms:reference-file line="107">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="17">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update">
|
||||||
<source>workzone:feedback:update</source>
|
<source>workzone:feedback:update</source>
|
||||||
<target state="needs-translation">Update Date</target>
|
<target state="needs-translation">Update Date</target>
|
||||||
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
||||||
<source>yes</source>
|
<source>yes</source>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:06:47Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:45:08Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
@@ -192,8 +192,9 @@
|
|||||||
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records" approved="yes">
|
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records" approved="yes">
|
||||||
<source>%nb_records% records</source>
|
<source>%nb_records% records</source>
|
||||||
<target state="translated">%nb_records% enregistrement(s)</target>
|
<target state="translated">%nb_records% enregistrement(s)</target>
|
||||||
|
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="25">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="29">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
||||||
<source>%nb_view% vue</source>
|
<source>%nb_view% vue</source>
|
||||||
@@ -1689,7 +1690,7 @@
|
|||||||
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
||||||
<source>Certaines donnees du panier ont change</source>
|
<source>Certaines donnees du panier ont change</source>
|
||||||
<target state="translated">Certaines données du panier ont changé</target>
|
<target state="translated">Certaines données du panier ont changé</target>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
||||||
<source>Certaines donnees du reportage ont change</source>
|
<source>Certaines donnees du reportage ont change</source>
|
||||||
@@ -3165,6 +3166,11 @@
|
|||||||
<target state="translated">Paramètres d'exécutables</target>
|
<target state="translated">Paramètres d'exécutables</target>
|
||||||
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="7e4ab5feaafcefe0d6fa300a11dfc921f12b5a40" resname="Expiration date successfully updated!">
|
||||||
|
<source>Expiration date successfully updated!</source>
|
||||||
|
<target state="new">Expiration date successfully updated!</target>
|
||||||
|
<jms:reference-file line="627">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
||||||
<source>Export</source>
|
<source>Export</source>
|
||||||
<target state="translated">Exporter</target>
|
<target state="translated">Exporter</target>
|
||||||
@@ -6687,6 +6693,11 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
|
|||||||
<target state="translated">Les erreurs suivantes ont été détectées.</target>
|
<target state="translated">Les erreurs suivantes ont été détectées.</target>
|
||||||
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="99d8c6d419ad0732e7d87098c3f60b62f2316e61" resname="The provided date is null!">
|
||||||
|
<source>The provided date is null!</source>
|
||||||
|
<target state="new">The provided date is null!</target>
|
||||||
|
<jms:reference-file line="610">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
||||||
<source>The publication has been stopped</source>
|
<source>The publication has been stopped</source>
|
||||||
<target state="translated">La publication a été suspendue</target>
|
<target state="translated">La publication a été suspendue</target>
|
||||||
@@ -7048,6 +7059,11 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
|
|||||||
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
||||||
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="c35e31f5dafff1fdd756af111f7699abf3a5ffd0" resname="Unable to save the expiration date">
|
||||||
|
<source>Unable to save the expiration date</source>
|
||||||
|
<target state="new">Unable to save the expiration date</target>
|
||||||
|
<jms:reference-file line="607">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
||||||
<source>Unable to send the documents</source>
|
<source>Unable to send the documents</source>
|
||||||
<target state="translated">Impossible d'envoyer les documents</target>
|
<target state="translated">Impossible d'envoyer les documents</target>
|
||||||
@@ -11724,10 +11740,16 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le
|
|||||||
<target state="translated">Supprimer la selection</target>
|
<target state="translated">Supprimer la selection</target>
|
||||||
<jms:reference-file line="223">prod/actions/Push.html.twig</jms:reference-file>
|
<jms:reference-file line="223">prod/actions/Push.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date" approved="no">
|
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date">
|
||||||
<source>prod:workzone:basket:creation-date</source>
|
<source>prod:workzone:basket:creation-date</source>
|
||||||
<target state="needs-translation">Date de création</target>
|
<target state="needs-translation">Date de création</target>
|
||||||
<jms:reference-file line="26">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="98">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="30">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5f352a91ba9ba55245e244f3834ec906c27b1378" resname="prod:workzone:basket:updated-message">
|
||||||
|
<source>prod:workzone:basket:updated-message</source>
|
||||||
|
<target state="new">prod:workzone:basket:updated-message</target>
|
||||||
|
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options" approved="yes">
|
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options" approved="yes">
|
||||||
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
||||||
@@ -11835,7 +11857,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le
|
|||||||
<target state="translated">Rafraîchir</target>
|
<target state="translated">Rafraîchir</target>
|
||||||
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -13406,128 +13428,134 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le
|
|||||||
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april" approved="yes">
|
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april" approved="yes">
|
||||||
<source>workzone:datepicker:april</source>
|
<source>workzone:datepicker:april</source>
|
||||||
<target state="translated">Avril</target>
|
<target state="translated">Avril</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august" approved="yes">
|
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august" approved="yes">
|
||||||
<source>workzone:datepicker:august</source>
|
<source>workzone:datepicker:august</source>
|
||||||
<target state="translated">Aout</target>
|
<target state="translated">Aout</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText" approved="no">
|
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText">
|
||||||
<source>workzone:datepicker:closeText</source>
|
<source>workzone:datepicker:closeText</source>
|
||||||
<target state="needs-translation">Clore</target>
|
<target state="needs-translation">Clore</target>
|
||||||
<jms:reference-file line="110">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="165">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText" approved="no">
|
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText">
|
||||||
<source>workzone:datepicker:currentText</source>
|
<source>workzone:datepicker:currentText</source>
|
||||||
<target state="needs-translation">courant</target>
|
<target state="needs-translation">courant</target>
|
||||||
<jms:reference-file line="113">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december" approved="yes">
|
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december" approved="yes">
|
||||||
<source>workzone:datepicker:december</source>
|
<source>workzone:datepicker:december</source>
|
||||||
<target state="translated">Décembre</target>
|
<target state="translated">Décembre</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february" approved="yes">
|
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february" approved="yes">
|
||||||
<source>workzone:datepicker:february</source>
|
<source>workzone:datepicker:february</source>
|
||||||
<target state="translated">Février</target>
|
<target state="translated">Février</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday" approved="yes">
|
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday" approved="yes">
|
||||||
<source>workzone:datepicker:friday</source>
|
<source>workzone:datepicker:friday</source>
|
||||||
<target state="translated">Vendredi</target>
|
<target state="translated">Vendredi</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january" approved="yes">
|
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january" approved="yes">
|
||||||
<source>workzone:datepicker:january</source>
|
<source>workzone:datepicker:january</source>
|
||||||
<target state="translated">Janvier</target>
|
<target state="translated">Janvier</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july" approved="yes">
|
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july" approved="yes">
|
||||||
<source>workzone:datepicker:july</source>
|
<source>workzone:datepicker:july</source>
|
||||||
<target state="translated">Juillet</target>
|
<target state="translated">Juillet</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june" approved="yes">
|
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june" approved="yes">
|
||||||
<source>workzone:datepicker:june</source>
|
<source>workzone:datepicker:june</source>
|
||||||
<target state="translated">Juin</target>
|
<target state="translated">Juin</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march" approved="yes">
|
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march" approved="yes">
|
||||||
<source>workzone:datepicker:march</source>
|
<source>workzone:datepicker:march</source>
|
||||||
<target state="translated">Mars</target>
|
<target state="translated">Mars</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may" approved="yes">
|
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may" approved="yes">
|
||||||
<source>workzone:datepicker:may</source>
|
<source>workzone:datepicker:may</source>
|
||||||
<target state="translated">Mai</target>
|
<target state="translated">Mai</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday" approved="yes">
|
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday" approved="yes">
|
||||||
<source>workzone:datepicker:monday</source>
|
<source>workzone:datepicker:monday</source>
|
||||||
<target state="translated">Lundi</target>
|
<target state="translated">Lundi</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText" approved="no">
|
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
|
||||||
<source>workzone:datepicker:nextText</source>
|
<source>workzone:datepicker:nextText</source>
|
||||||
<target state="needs-translation">Suivant</target>
|
<target state="needs-translation">Suivant</target>
|
||||||
<jms:reference-file line="112">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november" approved="yes">
|
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november" approved="yes">
|
||||||
<source>workzone:datepicker:november</source>
|
<source>workzone:datepicker:november</source>
|
||||||
<target state="translated">Novembre</target>
|
<target state="translated">Novembre</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october" approved="yes">
|
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october" approved="yes">
|
||||||
<source>workzone:datepicker:october</source>
|
<source>workzone:datepicker:october</source>
|
||||||
<target state="translated">Octobre</target>
|
<target state="translated">Octobre</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText" approved="no">
|
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
|
||||||
<source>workzone:datepicker:prevText</source>
|
<source>workzone:datepicker:prevText</source>
|
||||||
<target state="needs-translation">Précédent</target>
|
<target state="needs-translation">Précédent</target>
|
||||||
<jms:reference-file line="111">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="166">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday" approved="yes">
|
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday" approved="yes">
|
||||||
<source>workzone:datepicker:saturday</source>
|
<source>workzone:datepicker:saturday</source>
|
||||||
<target state="translated">Samedi</target>
|
<target state="translated">Samedi</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september" approved="yes">
|
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september" approved="yes">
|
||||||
<source>workzone:datepicker:september</source>
|
<source>workzone:datepicker:september</source>
|
||||||
<target state="translated">Septembre</target>
|
<target state="translated">Septembre</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday" approved="yes">
|
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday" approved="yes">
|
||||||
<source>workzone:datepicker:sunday</source>
|
<source>workzone:datepicker:sunday</source>
|
||||||
<target state="translated">Dimanche</target>
|
<target state="translated">Dimanche</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday" approved="yes">
|
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday" approved="yes">
|
||||||
<source>workzone:datepicker:thursday</source>
|
<source>workzone:datepicker:thursday</source>
|
||||||
<target state="translated">Jeudi</target>
|
<target state="translated">Jeudi</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday" approved="yes">
|
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday" approved="yes">
|
||||||
<source>workzone:datepicker:tuesday</source>
|
<source>workzone:datepicker:tuesday</source>
|
||||||
<target state="translated">Mardi</target>
|
<target state="translated">Mardi</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday" approved="yes">
|
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday" approved="yes">
|
||||||
<source>workzone:datepicker:wednesday</source>
|
<source>workzone:datepicker:wednesday</source>
|
||||||
<target state="translated">Mercredi</target>
|
<target state="translated">Mercredi</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a272c87e7e6d13003b19b8b8169847c9c2fe8ef0" resname="workzone:feedback:expiration">
|
<trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed" approved="no">
|
||||||
<source>workzone:feedback:expiration</source>
|
<source>workzone:feedback:expiration-closed</source>
|
||||||
<target state="needs-translation">Validation ouverte jusqu'au</target>
|
<target state="needs-translation">Validation close depuis</target>
|
||||||
<jms:reference-file line="95">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="105">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="15">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update" approved="no">
|
<trans-unit id="32285b1e113decb0a3fdf090b0698c5508a2bd09" resname="workzone:feedback:expiration-open" approved="no">
|
||||||
|
<source>workzone:feedback:expiration-open</source>
|
||||||
|
<target state="needs-translation">validation ouverte jusqu'au</target>
|
||||||
|
<jms:reference-file line="107">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="17">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update">
|
||||||
<source>workzone:feedback:update</source>
|
<source>workzone:feedback:update</source>
|
||||||
<target state="needs-translation">Valider</target>
|
<target state="needs-translation">Valider</target>
|
||||||
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
||||||
<source>yes</source>
|
<source>yes</source>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:07:03Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:45:26Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
@@ -196,8 +196,9 @@
|
|||||||
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records">
|
<trans-unit id="24c43d6925295b9738f6fe69e4fb3dc7a2030f0f" resname="%nb_records% records">
|
||||||
<source>%nb_records% records</source>
|
<source>%nb_records% records</source>
|
||||||
<target>%nb_records% records</target>
|
<target>%nb_records% records</target>
|
||||||
|
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="14">prod/Tooltip/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="25">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="29">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
<trans-unit id="e39dc3a90b0674916ef22f19912638564f33e518" resname="%nb_view% vue" approved="yes">
|
||||||
<source>%nb_view% vue</source>
|
<source>%nb_view% vue</source>
|
||||||
@@ -1694,7 +1695,7 @@
|
|||||||
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
<trans-unit id="3f2e437119fb80c64e6a9c7fff66c4160856dc40" resname="Certaines donnees du panier ont change" approved="yes">
|
||||||
<source>Certaines donnees du panier ont change</source>
|
<source>Certaines donnees du panier ont change</source>
|
||||||
<target state="translated">Sommige gegevens in het mandje zijn veranderd</target>
|
<target state="translated">Sommige gegevens in het mandje zijn veranderd</target>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
<trans-unit id="3062356beeb0f20cb9418d55769ea256059d611e" resname="Certaines donnees du reportage ont change" approved="yes">
|
||||||
<source>Certaines donnees du reportage ont change</source>
|
<source>Certaines donnees du reportage ont change</source>
|
||||||
@@ -3175,6 +3176,11 @@
|
|||||||
<target state="translated">Executables instellingen</target>
|
<target state="translated">Executables instellingen</target>
|
||||||
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
<jms:reference-file line="58">Form/Configuration/MainConfigurationFormType.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="7e4ab5feaafcefe0d6fa300a11dfc921f12b5a40" resname="Expiration date successfully updated!">
|
||||||
|
<source>Expiration date successfully updated!</source>
|
||||||
|
<target state="new">Expiration date successfully updated!</target>
|
||||||
|
<jms:reference-file line="627">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
<trans-unit id="f3e4fadb9e370a1e2c0c622c01fc8c77daf93a2c" resname="Export" approved="yes">
|
||||||
<source>Export</source>
|
<source>Export</source>
|
||||||
<target state="translated">Exporteer</target>
|
<target state="translated">Exporteer</target>
|
||||||
@@ -6695,6 +6701,11 @@
|
|||||||
<target state="translated">De volgende fouten werden opgemerkt</target>
|
<target state="translated">De volgende fouten werden opgemerkt</target>
|
||||||
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
<jms:reference-file line="5">user/import/view.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="99d8c6d419ad0732e7d87098c3f60b62f2316e61" resname="The provided date is null!">
|
||||||
|
<source>The provided date is null!</source>
|
||||||
|
<target state="new">The provided date is null!</target>
|
||||||
|
<jms:reference-file line="610">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
<trans-unit id="d22c09c164965d42fcdb8d8fe2b40d7d57799a8f" resname="The publication has been stopped" approved="yes">
|
||||||
<source>The publication has been stopped</source>
|
<source>The publication has been stopped</source>
|
||||||
<target state="translated">Het programma is gestopt</target>
|
<target state="translated">Het programma is gestopt</target>
|
||||||
@@ -7056,6 +7067,11 @@
|
|||||||
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
<jms:reference-file line="678">Controller/Root/LoginController.php</jms:reference-file>
|
||||||
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
<jms:reference-file line="224">Controller/Api/OAuth2Controller.php</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="c35e31f5dafff1fdd756af111f7699abf3a5ffd0" resname="Unable to save the expiration date">
|
||||||
|
<source>Unable to save the expiration date</source>
|
||||||
|
<target state="new">Unable to save the expiration date</target>
|
||||||
|
<jms:reference-file line="607">Controller/Prod/PushController.php</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
<trans-unit id="6af8293be2ccc7fc664c96b11293a226fd300026" resname="Unable to send the documents" approved="yes">
|
||||||
<source>Unable to send the documents</source>
|
<source>Unable to send the documents</source>
|
||||||
<target state="translated">Documenten kunnen niet worden verstuurd</target>
|
<target state="translated">Documenten kunnen niet worden verstuurd</target>
|
||||||
@@ -11728,7 +11744,13 @@
|
|||||||
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date">
|
<trans-unit id="6024f9d9ecbc9b6e3b531d630df53f92235a8497" resname="prod:workzone:basket:creation-date">
|
||||||
<source>prod:workzone:basket:creation-date</source>
|
<source>prod:workzone:basket:creation-date</source>
|
||||||
<target state="new">prod:workzone:basket:creation-date</target>
|
<target state="new">prod:workzone:basket:creation-date</target>
|
||||||
<jms:reference-file line="26">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="98">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="30">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5f352a91ba9ba55245e244f3834ec906c27b1378" resname="prod:workzone:basket:updated-message">
|
||||||
|
<source>prod:workzone:basket:updated-message</source>
|
||||||
|
<target state="new">prod:workzone:basket:updated-message</target>
|
||||||
|
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options">
|
<trans-unit id="052118f44df2bb35620741b7efe68fd84f77e2ef" resname="prod:workzone:facetstab:search_and_facets_sort_options">
|
||||||
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
<source>prod:workzone:facetstab:search_and_facets_sort_options</source>
|
||||||
@@ -11836,7 +11858,7 @@
|
|||||||
<target state="translated">vernieuwen</target>
|
<target state="translated">vernieuwen</target>
|
||||||
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
<jms:reference-file line="89">prod/WorkZone/Story.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
<jms:reference-file line="3">prod/WorkZone/Macros.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="132">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="123">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="17">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
<jms:reference-file line="22">prod/results/feeds.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -13407,128 +13429,134 @@
|
|||||||
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april">
|
<trans-unit id="ecbe1590a62c751a6bafe631fc5d05158d0962b4" resname="workzone:datepicker:april">
|
||||||
<source>workzone:datepicker:april</source>
|
<source>workzone:datepicker:april</source>
|
||||||
<target state="new">workzone:datepicker:april</target>
|
<target state="new">workzone:datepicker:april</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august">
|
<trans-unit id="23ed9061fbf1a184658e05e57a121a72474b54eb" resname="workzone:datepicker:august">
|
||||||
<source>workzone:datepicker:august</source>
|
<source>workzone:datepicker:august</source>
|
||||||
<target state="new">workzone:datepicker:august</target>
|
<target state="new">workzone:datepicker:august</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText">
|
<trans-unit id="63c83f397c51202a27320349456ec75b844a75e6" resname="workzone:datepicker:closeText">
|
||||||
<source>workzone:datepicker:closeText</source>
|
<source>workzone:datepicker:closeText</source>
|
||||||
<target state="new">workzone:datepicker:closeText</target>
|
<target state="new">workzone:datepicker:closeText</target>
|
||||||
<jms:reference-file line="110">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="165">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText">
|
<trans-unit id="32037015798672f75f469624c847da64e5953a27" resname="workzone:datepicker:currentText">
|
||||||
<source>workzone:datepicker:currentText</source>
|
<source>workzone:datepicker:currentText</source>
|
||||||
<target state="new">workzone:datepicker:currentText</target>
|
<target state="new">workzone:datepicker:currentText</target>
|
||||||
<jms:reference-file line="113">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="168">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december">
|
<trans-unit id="7e55bc758f272d38198385584d6f50c2dd0eae13" resname="workzone:datepicker:december">
|
||||||
<source>workzone:datepicker:december</source>
|
<source>workzone:datepicker:december</source>
|
||||||
<target state="new">workzone:datepicker:december</target>
|
<target state="new">workzone:datepicker:december</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february">
|
<trans-unit id="db178b383e47bbe58670afd6a67528a4712444d7" resname="workzone:datepicker:february">
|
||||||
<source>workzone:datepicker:february</source>
|
<source>workzone:datepicker:february</source>
|
||||||
<target state="new">workzone:datepicker:february</target>
|
<target state="new">workzone:datepicker:february</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday">
|
<trans-unit id="a4e3f12ef1defef487381a8339ea49840666414a" resname="workzone:datepicker:friday">
|
||||||
<source>workzone:datepicker:friday</source>
|
<source>workzone:datepicker:friday</source>
|
||||||
<target state="new">workzone:datepicker:friday</target>
|
<target state="new">workzone:datepicker:friday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january">
|
<trans-unit id="93f6bd6902114b73c225005188bce87569a3ac9c" resname="workzone:datepicker:january">
|
||||||
<source>workzone:datepicker:january</source>
|
<source>workzone:datepicker:january</source>
|
||||||
<target state="new">workzone:datepicker:january</target>
|
<target state="new">workzone:datepicker:january</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july">
|
<trans-unit id="0f1d297c3d3d9bc7cd800a9bd1a938904f4440ab" resname="workzone:datepicker:july">
|
||||||
<source>workzone:datepicker:july</source>
|
<source>workzone:datepicker:july</source>
|
||||||
<target state="new">workzone:datepicker:july</target>
|
<target state="new">workzone:datepicker:july</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june">
|
<trans-unit id="8d860a667674628da86b76fb3be676370a61893c" resname="workzone:datepicker:june">
|
||||||
<source>workzone:datepicker:june</source>
|
<source>workzone:datepicker:june</source>
|
||||||
<target state="new">workzone:datepicker:june</target>
|
<target state="new">workzone:datepicker:june</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march">
|
<trans-unit id="2242d17f28dc262529688d688b5c2e128813ad8b" resname="workzone:datepicker:march">
|
||||||
<source>workzone:datepicker:march</source>
|
<source>workzone:datepicker:march</source>
|
||||||
<target state="new">workzone:datepicker:march</target>
|
<target state="new">workzone:datepicker:march</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may">
|
<trans-unit id="2ce30e1185f0f46df340ca727d4d9d89f42b6f5b" resname="workzone:datepicker:may">
|
||||||
<source>workzone:datepicker:may</source>
|
<source>workzone:datepicker:may</source>
|
||||||
<target state="new">workzone:datepicker:may</target>
|
<target state="new">workzone:datepicker:may</target>
|
||||||
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="169">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday">
|
<trans-unit id="8a7199e82486037293a2cfb17003ed9a30e2cfb2" resname="workzone:datepicker:monday">
|
||||||
<source>workzone:datepicker:monday</source>
|
<source>workzone:datepicker:monday</source>
|
||||||
<target state="new">workzone:datepicker:monday</target>
|
<target state="new">workzone:datepicker:monday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
|
<trans-unit id="0bbaf1d4dbaa3b5eb27154fcc9579f89c848b091" resname="workzone:datepicker:nextText">
|
||||||
<source>workzone:datepicker:nextText</source>
|
<source>workzone:datepicker:nextText</source>
|
||||||
<target state="new">workzone:datepicker:nextText</target>
|
<target state="new">workzone:datepicker:nextText</target>
|
||||||
<jms:reference-file line="112">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="167">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november">
|
<trans-unit id="ba391713621e89b5ecec7bc867e949e386332732" resname="workzone:datepicker:november">
|
||||||
<source>workzone:datepicker:november</source>
|
<source>workzone:datepicker:november</source>
|
||||||
<target state="new">workzone:datepicker:november</target>
|
<target state="new">workzone:datepicker:november</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october">
|
<trans-unit id="46727c5b9b3455e2cec4fc761568262af710f119" resname="workzone:datepicker:october">
|
||||||
<source>workzone:datepicker:october</source>
|
<source>workzone:datepicker:october</source>
|
||||||
<target state="new">workzone:datepicker:october</target>
|
<target state="new">workzone:datepicker:october</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
|
<trans-unit id="7eef21d25b8fa0b6940fe6c87640f82612d0393f" resname="workzone:datepicker:prevText">
|
||||||
<source>workzone:datepicker:prevText</source>
|
<source>workzone:datepicker:prevText</source>
|
||||||
<target state="new">workzone:datepicker:prevText</target>
|
<target state="new">workzone:datepicker:prevText</target>
|
||||||
<jms:reference-file line="111">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="166">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday">
|
<trans-unit id="9d4fa7c1a1d4486201a760bcfb2f342ec8329f00" resname="workzone:datepicker:saturday">
|
||||||
<source>workzone:datepicker:saturday</source>
|
<source>workzone:datepicker:saturday</source>
|
||||||
<target state="new">workzone:datepicker:saturday</target>
|
<target state="new">workzone:datepicker:saturday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september">
|
<trans-unit id="a8aa1e4c6df39f7365a4fab8f3c70d3d8d4757ee" resname="workzone:datepicker:september">
|
||||||
<source>workzone:datepicker:september</source>
|
<source>workzone:datepicker:september</source>
|
||||||
<target state="new">workzone:datepicker:september</target>
|
<target state="new">workzone:datepicker:september</target>
|
||||||
<jms:reference-file line="115">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="170">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday">
|
<trans-unit id="cd48f23064201336fafcab46a34c085d5a886cb6" resname="workzone:datepicker:sunday">
|
||||||
<source>workzone:datepicker:sunday</source>
|
<source>workzone:datepicker:sunday</source>
|
||||||
<target state="new">workzone:datepicker:sunday</target>
|
<target state="new">workzone:datepicker:sunday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday">
|
<trans-unit id="de522dc0285d55c95bb9af4aa39020ac35548353" resname="workzone:datepicker:thursday">
|
||||||
<source>workzone:datepicker:thursday</source>
|
<source>workzone:datepicker:thursday</source>
|
||||||
<target state="new">workzone:datepicker:thursday</target>
|
<target state="new">workzone:datepicker:thursday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday">
|
<trans-unit id="d274289f8c48bcb43c06efe9386967b7f8fb56df" resname="workzone:datepicker:tuesday">
|
||||||
<source>workzone:datepicker:tuesday</source>
|
<source>workzone:datepicker:tuesday</source>
|
||||||
<target state="new">workzone:datepicker:tuesday</target>
|
<target state="new">workzone:datepicker:tuesday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday">
|
<trans-unit id="423742b6f616f9847ea24afec03e24b15f3ff10f" resname="workzone:datepicker:wednesday">
|
||||||
<source>workzone:datepicker:wednesday</source>
|
<source>workzone:datepicker:wednesday</source>
|
||||||
<target state="new">workzone:datepicker:wednesday</target>
|
<target state="new">workzone:datepicker:wednesday</target>
|
||||||
<jms:reference-file line="116">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="171">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a272c87e7e6d13003b19b8b8169847c9c2fe8ef0" resname="workzone:feedback:expiration">
|
<trans-unit id="cbfb58c29147c5881e828d18a477f922211873a0" resname="workzone:feedback:expiration-closed">
|
||||||
<source>workzone:feedback:expiration</source>
|
<source>workzone:feedback:expiration-closed</source>
|
||||||
<target state="new">workzone:feedback:expiration</target>
|
<target state="new">workzone:feedback:expiration-closed</target>
|
||||||
<jms:reference-file line="95">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="105">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
<jms:reference-file line="14">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="15">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="32285b1e113decb0a3fdf090b0698c5508a2bd09" resname="workzone:feedback:expiration-open">
|
||||||
|
<source>workzone:feedback:expiration-open</source>
|
||||||
|
<target state="new">workzone:feedback:expiration-open</target>
|
||||||
|
<jms:reference-file line="107">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
|
<jms:reference-file line="17">prod/Tooltip/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update">
|
<trans-unit id="2f0e2fbacaf98478f0a46f828495e0dac8772a32" resname="workzone:feedback:update">
|
||||||
<source>workzone:feedback:update</source>
|
<source>workzone:feedback:update</source>
|
||||||
<target state="new">workzone:feedback:update</target>
|
<target state="new">workzone:feedback:update</target>
|
||||||
<jms:reference-file line="100">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
<jms:reference-file line="114">prod/WorkZone/Basket.html.twig</jms:reference-file>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
<trans-unit id="fb360f9c09ac8c5edb2f18be5de4e80ea4c430d0" resname="yes" approved="yes">
|
||||||
<source>yes</source>
|
<source>yes</source>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:06:24Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:44:42Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:06:35Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:44:55Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:06:47Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:45:08Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||||
<file date="2020-03-13T14:07:03Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
<file date="2020-03-17T12:45:26Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
||||||
<header>
|
<header>
|
||||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||||
|
@@ -24,5 +24,6 @@
|
|||||||
<body>
|
<body>
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
{% include 'common/analytics.html.twig' %}
|
{% include 'common/analytics.html.twig' %}
|
||||||
|
{% include 'common/matomo_analytics.html.twig' %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
18
templates/mobile/common/matomo_analytics.html.twig
Normal file
18
templates/mobile/common/matomo_analytics.html.twig
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{% if app['conf'].get(['registry', 'general', 'matomo-analytics-url']) != '' %}
|
||||||
|
{% if app['conf'].get(['registry', 'general', 'matomo-analytics-id']) != '' %}
|
||||||
|
<!-- Matomo -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
var _paq = window._paq || [];
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u="//{{ app['conf'].get(['registry', 'general', 'matomo-analytics-url']) }}/";
|
||||||
|
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||||||
|
_paq.push(['setSiteId', {{ app['conf'].get(['registry', 'general', 'matomo-analytics-id']) }}]);
|
||||||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<!-- End Matomo Code -->
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
@@ -42,5 +42,6 @@
|
|||||||
{% block extra_content %}{% endblock %}
|
{% block extra_content %}{% endblock %}
|
||||||
{% block bodyJavascript %}{% endblock %}
|
{% block bodyJavascript %}{% endblock %}
|
||||||
{% include 'common/analytics.html.twig' %}
|
{% include 'common/analytics.html.twig' %}
|
||||||
|
{% include 'common/matomo_analytics.html.twig' %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -25,5 +25,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% include 'common/analytics.html.twig' %}
|
{% include 'common/analytics.html.twig' %}
|
||||||
|
{% include 'common/matomo_analytics.html.twig' %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
18
templates/web/common/matomo_analytics.html.twig
Normal file
18
templates/web/common/matomo_analytics.html.twig
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{% if app['conf'].get(['registry', 'general', 'matomo-analytics-url']) != '' %}
|
||||||
|
{% if app['conf'].get(['registry', 'general', 'matomo-analytics-id']) != '' %}
|
||||||
|
<!-- Matomo -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
var _paq = window._paq || [];
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u="{{ app['conf'].get(['registry', 'general', 'matomo-analytics-url']) }}/";
|
||||||
|
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||||||
|
_paq.push(['setSiteId', {{ app['conf'].get(['registry', 'general', 'matomo-analytics-id']) }}]);
|
||||||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<!-- End Matomo Code -->
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
@@ -100,6 +100,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block analytics %}
|
{% block analytics %}
|
||||||
{% include 'common/analytics.html.twig' %}
|
{% include 'common/analytics.html.twig' %}
|
||||||
|
{% include 'common/matomo_analytics.html.twig' %}
|
||||||
{% endblock analytics %}
|
{% endblock analytics %}
|
||||||
|
|
||||||
{% block scripts %}{% endblock scripts %}
|
{% block scripts %}{% endblock scripts %}
|
||||||
|
@@ -11,7 +11,11 @@
|
|||||||
<span class="expiredDate">
|
<span class="expiredDate">
|
||||||
{% if basket.getValidation() %}
|
{% if basket.getValidation() %}
|
||||||
{% set dateExpired = app['date-formatter'].getPrettyString(basket.getValidation().getExpires()) %}
|
{% set dateExpired = app['date-formatter'].getPrettyString(basket.getValidation().getExpires()) %}
|
||||||
{{ 'workzone:feedback:expiration' | trans }} : {{ dateExpired }}
|
{% if basket.getValidation().getExpires() < date() %}
|
||||||
|
<span>{{ 'workzone:feedback:expiration-closed' | trans }} :</span>
|
||||||
|
{% else %}
|
||||||
|
<span>{{ 'workzone:feedback:expiration-open' | trans }} :</span>
|
||||||
|
{% endif %} {{ dateExpired }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
<div style="margin:5px 0;max-height:160px;overflow:hidden;text-overflow:ellipsis;">
|
<div style="margin:5px 0;max-height:160px;overflow:hidden;text-overflow:ellipsis;">
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
|
<script src="https://rawgithub.com/trentrichardson/jQuery-Timepicker-Addon/master/jquery-ui-timepicker-addon.js"></script>
|
||||||
<div>
|
<div>
|
||||||
<button class="tools-accordion">Actions</button>
|
<button class="tools-accordion">Actions</button>
|
||||||
<div class="tools-panel">
|
<div class="tools-panel">
|
||||||
@@ -99,15 +99,22 @@
|
|||||||
</p>
|
</p>
|
||||||
<div class="record-number"> {% trans with {'%nb_records%' : nb_records} %}%nb_records% records{% endtrans %}</div>
|
<div class="record-number"> {% trans with {'%nb_records%' : nb_records} %}%nb_records% records{% endtrans %}</div>
|
||||||
|
|
||||||
{% set dateExpired = app['date-formatter'].getPrettyString(basket.getValidation().getExpires()) %}
|
{% set dateExpired = app['date-formatter'].getTranslatedDate(basket.getValidation().getExpires()) %}
|
||||||
<div class="expiredDate">
|
<div class="expiredDate">
|
||||||
<span>{{ 'workzone:feedback:expiration' | trans }} :</span>
|
{% if basket.getValidation().getExpires() < date() %}
|
||||||
|
<span>{{ 'workzone:feedback:expiration-closed' | trans }} :</span>
|
||||||
|
{% else %}
|
||||||
|
<span>{{ 'workzone:feedback:expiration-open' | trans }} :</span>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<form class="update-feed-validation">
|
<form class="update-feed-validation">
|
||||||
<input type="hidden" name="feedback-id" value={{ basket.getValidation().getId}} />
|
<input type="hidden" name="feedbackId" value={{ basket.getId}} />
|
||||||
<input type="hidden" name="feedback-deadline-format" class="alternate" />
|
<input type="hidden" name="feedbackDate" class="alternate" />
|
||||||
<input type="text" class="btn datepicker" name="feedback-deadline" value="{{ dateExpired }}">
|
<input type="text" class="btn feed-datepicker" name="feedback-deadline" value="{{ dateExpired }}">
|
||||||
<button type="submit" class="submit" title="{{ 'workzone:feedback:update' | trans }}"><i class="fa fa-save"></i></button>
|
<button type="submit" class="submit submit-validation btn-not-shown" title="{{ 'workzone:feedback:update' | trans }}"><svg width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="calendar-check" class="svg-inline--fa fa-calendar-check fa-w-14" role="img" viewBox="0 0 448 512"><path fill="currentColor" d="M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"/></svg></button>
|
||||||
|
<span class="cancel-date btn-not-shown"><i class="fa fa-times"></i></span>
|
||||||
</form>
|
</form>
|
||||||
|
<p class="message text-right" style="opacity: 0;transition: all 0.2s; color: green; display: block; ">{{ 'prod:workzone:basket:updated-message' | trans }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -135,7 +142,22 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$( ".update-feed-validation" ).on( "submit", function( event ) {
|
$( ".update-feed-validation" ).on( "submit", function( event ) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
console.log( $( this ).serialize() );
|
var formData = $(this).serializeArray();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: '/prod/push/update-expiration/',
|
||||||
|
data: {
|
||||||
|
basket_id: formData[0].value,
|
||||||
|
date: formData[1].value
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
$('.message').css('opacity',1);
|
||||||
|
$('.submit-validation').addClass ('btn-not-shown');
|
||||||
|
$('.cancel-date').addClass ('btn-not-shown');
|
||||||
|
setTimeout(function(){ $('.message').css('opacity',0); }, 2000);
|
||||||
|
},
|
||||||
|
});
|
||||||
});
|
});
|
||||||
$( function() {
|
$( function() {
|
||||||
$.datepicker.regional['default'] = {
|
$.datepicker.regional['default'] = {
|
||||||
@@ -149,11 +171,21 @@
|
|||||||
dayNamesMin: [ "D","L","M","M","J","V","S" ],
|
dayNamesMin: [ "D","L","M","M","J","V","S" ],
|
||||||
dateFormat: "d MM yy",
|
dateFormat: "d MM yy",
|
||||||
altField: ".alternate",
|
altField: ".alternate",
|
||||||
altFormat: "yy-mm-dd"
|
altFormat: "yy-mm-dd",
|
||||||
|
minDate: 0
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$( ".datepicker" ).datepicker( $.datepicker.regional[ 'default' ]);
|
$(".feed-datepicker" ).datepicker( $.datepicker.regional[ 'default' ]);
|
||||||
|
$(".feed-datepicker" ).change(function() {
|
||||||
|
$('.submit-validation').removeClass('btn-not-shown');
|
||||||
|
$('.cancel-date').removeClass('btn-not-shown');
|
||||||
|
});
|
||||||
|
$(".cancel-date" ).click(function() {
|
||||||
|
$('.cancel-date').removeClass('btn-not-shown');
|
||||||
|
$('.feed-datepicker').val('{{ dateExpired }}');
|
||||||
|
setTimeout(function(){ $('.cancel-date').addClass('btn-not-shown');$('.submit-validation').addClass('btn-not-shown'); }, 1000);
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@@ -23,19 +23,19 @@
|
|||||||
data-position="0"
|
data-position="0"
|
||||||
data-id="{{basket.getId()}}"
|
data-id="{{basket.getId()}}"
|
||||||
data-reload="true"
|
data-reload="true"
|
||||||
class="otherBaskToolTip open-preview-action" title="{{basket.getDescription()}}">
|
class="otherBaskToolTip to-open-preview-action" title="{{basket.getDescription()}}">
|
||||||
{#<img style="vertical-align:middle" src="/assets/common/images/icons/basket.png" width="16">#}
|
{#<img style="vertical-align:middle" src="/assets/common/images/icons/basket.png" width="16">#}
|
||||||
|
|
||||||
{% if basket.getValidation() %}
|
{% if basket.getValidation() %}
|
||||||
<img src='/assets/common/images/icons/basket_validation.png' title='' width="16" class="btn-image"/>
|
<img src='/assets/common/images/icons/basket_validation.png' title='' width="24" class="btn-image"/>
|
||||||
{% elseif basket.getPusher() %}
|
{% elseif basket.getPusher() %}
|
||||||
{% if not basket.isRead() %}
|
{% if not basket.isRead() %}
|
||||||
<img src='/assets/common/images/icons/basket_push_unread.png' title='' width="16" class="btn-image"/>
|
<img src='/assets/common/images/icons/basket_push_unread.png' title='' width="24" class="btn-image"/>
|
||||||
{% else %}
|
{% else %}
|
||||||
<img src='/assets/common/images/icons/basket_push.png' title='' width="16" class="btn-image"/>
|
<img src='/assets/common/images/icons/basket_push.png' title='' width="24" class="btn-image"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<img src='/assets/common/images/icons/basket.png' title='' width="16" class="btn-image"/>
|
<img src='/assets/common/images/icons/basket.png' title='' width="24" class="btn-image"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<span class="title">{{basket.getName()}}</span>
|
<span class="title">{{basket.getName()}}</span>
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
<div style="margin:3px 0">
|
<div style="margin:3px 0">
|
||||||
|
|
||||||
{% set appbox = '' %}
|
{% set appbox = '' %}
|
||||||
<div class="history-{{action}}">
|
<div class="history-block history-{{action}}">
|
||||||
{% if action == 'push' %}
|
{% if action == 'push' %}
|
||||||
{% set n_user = done['final']|length %}
|
{% set n_user = done['final']|length %}
|
||||||
{% set appbox = '<span class="provenance">' ~ site %}
|
{% set appbox = '<span class="provenance">' ~ site %}
|
||||||
@@ -63,11 +63,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
|
<p style="font-size:10px;text-decoration:italic;">{{hour}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="font-size:10px;text-decoration:italic;">{{hour}}</div>
|
|
||||||
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -169,7 +169,8 @@ class ExportTest extends \PhraseanetAuthenticatedWebTestCase
|
|||||||
*/
|
*/
|
||||||
public function testExportMail()
|
public function testExportMail()
|
||||||
{
|
{
|
||||||
$this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailRecordsExport');
|
// deliver method removed in the listener
|
||||||
|
// $this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailRecordsExport');
|
||||||
|
|
||||||
$this->getClient()->request('POST', '/prod/export/mail/', [
|
$this->getClient()->request('POST', '/prod/export/mail/', [
|
||||||
'lst' => $this->getRecord1()->getId(),
|
'lst' => $this->getRecord1()->getId(),
|
||||||
|
@@ -193,6 +193,8 @@ registry:
|
|||||||
keywords: ''
|
keywords: ''
|
||||||
description: ''
|
description: ''
|
||||||
analytics: ''
|
analytics: ''
|
||||||
|
matomo-analytics-url: ''
|
||||||
|
matomo-analytics-id: ''
|
||||||
allow-indexation: true
|
allow-indexation: true
|
||||||
home-presentation-mode: COOLIRIS
|
home-presentation-mode: COOLIRIS
|
||||||
modules:
|
modules:
|
||||||
|
@@ -79,7 +79,7 @@ class UserDeletionTest extends \PhraseanetAuthenticatedWebTestCase
|
|||||||
$apiLog = $apiLogManipulator->create($account, new Request(), new Response());
|
$apiLog = $apiLogManipulator->create($account, new Request(), new Response());
|
||||||
$apiLogId = $apiLog->getId();
|
$apiLogId = $apiLog->getId();
|
||||||
|
|
||||||
$this->userManipulator->delete($this->user, true);
|
$this->userManipulator->delete($this->user);
|
||||||
$this->assertTrue($this->user->isDeleted(), 'User was not properly deleted');
|
$this->assertTrue($this->user->isDeleted(), 'User was not properly deleted');
|
||||||
|
|
||||||
$apiLogRepository->clear();
|
$apiLogRepository->clear();
|
||||||
|
@@ -12,6 +12,6 @@ class WebhookEventRepositoryTest extends \PhraseanetTestCase
|
|||||||
{
|
{
|
||||||
$events = self::$DI['app']['orm.em']->getRepository('Phraseanet:WebhookEvent')->findUnprocessedEvents();
|
$events = self::$DI['app']['orm.em']->getRepository('Phraseanet:WebhookEvent')->findUnprocessedEvents();
|
||||||
// I have no clue as to why this magic number is here, probably best to discard test
|
// I have no clue as to why this magic number is here, probably best to discard test
|
||||||
$this->assertCount(6, $events);
|
$this->assertCount(41, $events);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -59,6 +59,6 @@ class FeedEntryProcessorTest extends \PhraseanetTestCase
|
|||||||
self::$DI['app']['repo.feed-entries'],
|
self::$DI['app']['repo.feed-entries'],
|
||||||
self::$DI['app']['phraseanet.user-query']
|
self::$DI['app']['phraseanet.user-query']
|
||||||
);
|
);
|
||||||
$this->assertEquals($processor->process($event), null);
|
$this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, $processor->process($event));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
16
yarn.lock
16
yarn.lock
@@ -5305,14 +5305,10 @@ jquery-simplecolorpicker@^0.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/jquery-simplecolorpicker/-/jquery-simplecolorpicker-0.3.1.tgz#4f6befd380ab05470f585d5482e5180556e460eb"
|
resolved "https://registry.yarnpkg.com/jquery-simplecolorpicker/-/jquery-simplecolorpicker-0.3.1.tgz#4f6befd380ab05470f585d5482e5180556e460eb"
|
||||||
integrity sha1-T2vv04CrBUcPWF1UguUYBVbkYOs=
|
integrity sha1-T2vv04CrBUcPWF1UguUYBVbkYOs=
|
||||||
|
|
||||||
"jquery-treeview@git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e":
|
"jquery-treeview@git+https://github.com/alchemy-fr/jquery-treeview.git", "jquery-treeview@git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e":
|
||||||
version "1.4.2"
|
|
||||||
resolved "git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e"
|
|
||||||
|
|
||||||
"jquery-treeview@https://github.com/alchemy-fr/jquery-treeview.git":
|
|
||||||
version "1.4.2"
|
version "1.4.2"
|
||||||
uid "1e9e5a49d2875b878801e904cd08c2d25e85af1e"
|
uid "1e9e5a49d2875b878801e904cd08c2d25e85af1e"
|
||||||
resolved "https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e"
|
resolved "git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e"
|
||||||
|
|
||||||
jquery-ui-datepicker-with-i18n@^1.10.4:
|
jquery-ui-datepicker-with-i18n@^1.10.4:
|
||||||
version "1.10.4"
|
version "1.10.4"
|
||||||
@@ -7581,10 +7577,10 @@ phraseanet-common@^0.4.5-d:
|
|||||||
js-cookie "^2.1.0"
|
js-cookie "^2.1.0"
|
||||||
pym.js "^1.3.1"
|
pym.js "^1.3.1"
|
||||||
|
|
||||||
phraseanet-production-client@0.34.150-d:
|
phraseanet-production-client@0.34.160-d:
|
||||||
version "0.34.150-d"
|
version "0.34.160-d"
|
||||||
resolved "https://registry.yarnpkg.com/phraseanet-production-client/-/phraseanet-production-client-0.34.150-d.tgz#625ea96c045719b405fe9b707b632b1290aca285"
|
resolved "https://registry.yarnpkg.com/phraseanet-production-client/-/phraseanet-production-client-0.34.160-d.tgz#3deb3387b54e56aec73b073cae8cc013cc316999"
|
||||||
integrity sha512-JrtPq6dCTCBxX6kGViXZj4Sc26PMFIaifT3PVD1WHLUCNd/U3nnHzpzKUgVC0ibqOj4aVwA8JW/oMilGEe3cmg==
|
integrity sha512-00jnCOCDrLowL8TE+h8mH+Lg4P0+EQPSDOXN2Lq6KF577GGu0OWQRh2YmUeXkacHTUT4N0u39IsBkkBYqorVnQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@mapbox/mapbox-gl-language" "^0.9.2"
|
"@mapbox/mapbox-gl-language" "^0.9.2"
|
||||||
"@turf/turf" "^5.1.6"
|
"@turf/turf" "^5.1.6"
|
||||||
|
Reference in New Issue
Block a user