diff --git a/.env b/.env index 60ac9edbea..f1e13fd3fa 100644 --- a/.env +++ b/.env @@ -2,7 +2,7 @@ PHRASEANET_PROJECT_NAME=Phraseanet # Registry from where you pull Docker images PHRASEANET_DOCKER_REGISTRY=local # Tag of the Docker images -PHRASEANET_DOCKER_TAG=latest +PHRASEANET_DOCKER_TAG=4.1.1 # APPLICATION PORT PHRASEANET_APP_PORT=8082 # RabbitMQ configuration @@ -13,6 +13,8 @@ RABBITMQ_MANAGEMENT_PORT=10811 MYSQL_ROOT_PASSWORD=root SERVER_NAME=phraseanet-docker +# --------------- GATEWAY TIMEOUT ----------------------- +GATEWAY_SEND_TIMEOUT=120 # --------------- PHP CONFIGURATION -------------------- @@ -21,6 +23,9 @@ MAX_BODY_SIZE=2G # Max input var MAX_INPUT_VARS=12000 +MAX_EXECUTION_TIME=120 +MAX_INPUT_TIME=60 + # Enable opcache ? (0/1) OPCACHE_ENABLED=1 # session cache limiter (off/on) @@ -34,6 +39,8 @@ PHP_LOG_LEVEL=warning # These variables are used in the configuration.yml . # set here the first user / email couple +#set to id of Phraseanet root account, if you want activate a sync for Phraseanet root account password provide by PHRASEANET_ADMIN_ACCOUNT_PASSWORD env value. +PHRASEANET_ADMIN_ACCOUNT_ID= PHRASEANET_ADMIN_ACCOUNT_EMAIL=admin@alchemy.fr PHRASEANET_ADMIN_ACCOUNT_PASSWORD=iJRqXU0MwbyJewQLBbra6IWHsWly # Database parameters @@ -64,6 +71,16 @@ PHRASEANET_SMTP_SECURE_MODE=tls PHRASEANET_SMTP_USER= PHRASEANET_SMTP_PASSWORD= +# Locale setting + +LC_MESSAGES=C.UTF-8 +LC_COLLATE=C.UTF-8 +LC_IDENTIFICATION=C.UTF-8 +LANG=C.UTF-8 +LC_MEASUREMENT=C.UTF-8 +LC_CTYPE=C.UTF-8 +LC_TIME=C.UTF-8 +LC_NAME=C.UTF-8 # --- DEV purpose --- @@ -86,6 +103,7 @@ PHRASEANET_DB_DIR=./volumes/db PHRASEANET_ELASTICSEARCH_DIR=./volumes/elasticsearch PHRASEANET_THUMBNAILS_DIR=./www/thumbnails PHRASEANET_CUSTOM_DIR=./www/custom +PHRASEANET_PLUGINS_DIR=./www/plugins PHRASEANET_TMP_DIR=./tmp PHRASEANET_CACHE_DIR=./cache PHRASEANET_DOWNLOAD_DIR=./datas/download diff --git a/CHANGELOG.md b/CHANGELOG.md index a00034c35d..59f5ed2e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,155 @@ # CHANGELOG +## 4.1.1 + +### Change summary + +- Phraseanet now using Docker. Retrieve all official images on DockerHub +- Worker manager, a new way for all operations on assets. In the near future, this will replace the current task manager. +- Geolocation based on Mapbox (requires an account on Mapbox https://www.mapbox.com). +- Video chaptering and subtitling support. +- GUI redesign for Push, Feedback, List manager, Lightbox on mobile. + + + this version is finale version of 4.1.0 published in preview at start of year, a lot of improvement, bugfixes on several elements see summary here + +### New Feature summary + + * [PHRAS-2023] - Refacto Lightbox mobile in 4.1 + * [PHRAS-2219] - Refacto design Push screen + * [PHRAS-2220] - Refacto design Feedback screen + * [PHRAS-2221] - Refacto design List manager general screen + * [PHRAS-2222] - Refacto design ListManager Advance Mode screen + * [PHRAS-2223] - Refacto dev list manager Advance Mode screen + * [PHRAS-2541] - Dev-Design-Prod/Publish Screen + * [PHRAS-2548] - Phraseanet Docker and Docker Compose + * [PHRAS-1226] - Geolocalisation In Phraseanet + * [PHRAS-1626] - bin/console databox:mount mount an existing databox + * [PHRAS-1628] - bin/console collection:publish + * [PHRAS-1630] - bin/console database:unmout + * [PHRAS-1631] - bin/console collection:unpublish + * [PHRAS-1648] - bin/console user:password + * [PHRAS-1659] - bin/console user:create + * [PHRAS-1771] - bin/console collection:unpublish + * [PHRAS-1773] - bin/console collection:publish + * [PHRAS-2518] - Phraseanet worker Read/Write metadata + * [PHRAS-2520] - Phraseanet worker send webhook + * [PHRAS-2738] - Phraseanet worker populate database + * [PHRAS-2435] - Phraseanet Worker Build subdefinition + * [PHRAS-2436] - Phraseanet Worker build zip export and send mail + * [PHRAS-2636] - Phraseanet Worker fetch assets from external uploader (pull mode) + * [PHRAS-2904] - Fullfill field define in geoloc - position field with information return by Geonames + * [PHRAS-161] - PROD Add a maps for geolocalisation of media in detailed view + * [PHRAS-1935] - View prod/ Video chapter editor + * [PHRAS-2997] - Matomo analytic service in Phraseanet + * [PHRAS-1890] - Add GS1 databases model to Phraseanet + + +### Improvement and fix summary + + * [PHRAS-1561] - Prod | Print - Use the label of field when print, use the GUI user language + * [PHRAS-2067] - Prod : Introduce thumbnail & preview generic images for Fonts records + * [PHRAS-2473] - Populate Optimisation, sometime populate databox (database) is very long + * [PHRAS-2524] - Put worker log in ELK + * [PHRAS-2739] - incorporate Phraseanet-plugin-SubdefWebhook into Phraseanet + * [PHRAS-2157] - Prod / Share : Iframe sizes are set to 0 for audio documents + * [PHRAS-2538] - Some MP4 file is not correctly detected by Phraseanet. + * [PHRAS-2825] - Prod : Add a reset button to initialize searches filters + * [PHRAS-1872] - prod/export by email / subject are NOK + * [PHRAS-2342] - Report : collections not selected + * [PHRAS-2343] - report : all fields of all databases + * [PHRAS-2350] - Report : url is too long + * [PHRAS-2476] - Bad header in generated video preview file + * [PHRAS-2196] - API - Stories records pagination on search answer and Stories fetch info + * [PHRAS-2880] - extend admin GUI for define facets ordering. + * [PHRAS-2967] - Lightbox - dev of send email report - warn windows + * [PHRAS-1752] - update facebook sdk dependency + * [PHRAS-2678] - add `webhook monitor` + * [PHRAS-2915] - Lightbox (desktop version) Change sort order for basket and Feedback in landing page ( most recent in first) + * [PHRAS-2082] - Bump design of windows create user , create template user, create new subdef + * [PHRAS-2676] - Weaked download behaviour for large amount of data + * [PHRAS-2671] - Change behavior of preview display in audio file case + * [PHRAS-2879] - Define facets order in GUI and query result + +## 4.0.12 + +Release notes - Phraseanet - Version 4.0.12 + +### Improvement + * [PHRAS-2955] - Cache doctrine entity metadata for performance + * [PHRAS-2964] - Application-box - set host colon of table sbas set to char 255 + * [PHRAS-3012] - [PHRAS-2977] - Docker compose optimisation, refacto volumes, build image + optimisation, add Phraseanet plugin in build image, bump ffmpeg version in worker, + fix error un redis configuration. + more option for define volumes during installation process. + * [PHRAS-3027] - Backport To 4.0 - Populate - Slow query - due to LIMIT in sql query. + * [PHRAS-3027] - Translation improvement in EN and DE. + +### Bugfix + * [PHRAS-2979] - The content of a story is not displayed even for users with appropriate on the collection + + +## 4.1.0 + +Pre release of 4.1 + + +## 4.0.11 + +Release notes - Phraseanet - Version 4.0.11 + +### New Feature and Improvement + * [PHRAS-2878] - Print feedback report in PDF + * [PHRAS-2757] - Exclude some collections from quarantine checkers sha256, UUID, filename (AKA exclude Trash from quarantine) + * [PHRAS-2766] - Add status change capabilities to quarantine lazaret in substitute and add action + * [PHRAS-2674] - Prod grey skin Improvement + * [PHRAS-2775] - Prod - plugin - Publish item in diapo local menu - plugin skeleton improvement. + * [PHRAS-925] - Search Engine improvement for word with dot and hyphen characters + * [PHRAS-2496] - Pre-build vagrant image for Phraseanet and implement it in Phraseanet vagrant file. + * [PHRAS-2637] - Sub definition Task init : select all databases when databases property is not set + * [PHRAS-2670] - Fix notifications slow sql and basket select + * [PHRAS-2672] - Bump videojs version to 7.5 + * [PHRAS-2691] - Prod - delete from trash , send deletion by bulk of 3 records + * [PHRAS-2700] - Prod - number of results - Formating the results number + * [PHRAS-2742] - Enhance plugin-skeleton in 4.0 + * [PHRAS-2750] - PHPExiftool to handle DJI XMP Tags, Bump exiftool version and switch to original exiftool/exiftool github repository + * [PHRAS-835] - ES - date format timestamp unix, store and search datetime + * [PHRAS-2791] - Embed-bundle - Videojs player serve poster-image property with sub definition permalink + * [PHRAS-2842] - Databases Models - now default audio encodeur is mp3lame + * [PHRAS-2857] - Exclude some collections from quarantine checkers sha256, UUID, filename (AKA exclude Trash) + * [PHRAS-2899] - Quarantine: allow to substitute without selecting target record, (when match only one record). + * [PHRAS-2765] - Translation in Plugin menu locale is now available + * [PHRAS-2929] - bump sinonjs dependency to 1.7.1 + * [PHRAS-2728] - Landing page take browser language in account + * [PHRAS-2693] - Collection Sort Sorter is now presented by column + * [PHRAS-2817] - Deploy and Dev with docker is OK + + +### Bugfix + * [PHRAS-1069] - Dates seems not extracted from iptc + * [PHRAS-1428] - Phraseanet Binaries in configuration not used in some alchemy-fr libraries (AKA text extraction of pdf is NOK) + * [PHRAS-2567] - Registration Form - Term of use link is broken + * [PHRAS-2644] - Searching for stories after applying a document filtering choice gives no results + * [PHRAS-2652] - Fields "Phraseanet::no-source" are pushed to exiftool + * [PHRAS-2682] - Prod - facets display is NOK when switch from basket or thesaurus Tab. + * [PHRAS-2695] - Prod - Grey and White Skins - Browse Baskets: Unable to read the titles + * [PHRAS-2702] - Lightbox - scroller thumbnail Nok + * [PHRAS-2714] - Adding record from the API leaves a copy of the file into the system temporary directory + * [PHRAS-2715] - Embed bundle, border issue on firefox. + * [PHRAS-2716] - Records SetStatus HTTP API malfunction + * [PHRAS-2723] - None information (name, last name etc...) is keep from the Push or a FeedBack user creation form + * [PHRAS-2748] - Some characters into cterms (candidats) leeds to 500 error + * [PHRAS-2754] - Permalink is not (re) activated when record is move from _TRASH_ collection + * [PHRAS-2860] - Generated Subdefs for video Portait are not correctly Oriented + * [PHRAS-2877] - User manipulator does not allow to set a null email + * [PHRAS-2912] - When updating a user informations the wrong field are populated (job and activity inverted) + * [PHRAS-2811] - Cleanning of bad chars in candidats terms + + +## 4.0.10 + + Not publish + ## 4.0.9 ### Adds @@ -13,11 +163,11 @@ ### Fixes -* PHRAS-2491 - Front - Click on facets title (expand/collapse) launched a bad query, due to jquery error. -* PHRAS-2510 - Front - Facets values appear Truncated after 15th character. -* PHRAS-2153 - Front - No user search possible with the field "Company" and field "Country". -* PHRAS-2154 - Front - Bug on Chrome only - selected 1 document instead of all for the feedback. -* PHRAS-2538 - Back - Some MP4 files were not correctly detected by Phraseanet. + - PHRAS-2491 - Front - Click on facets title (expand/collapse) launched a bad query, due to jquery error. + - PHRAS-2510 - Front - Facets values appear Truncated after 15th character. + - PHRAS-2153 - Front - No user search possible with the field "Company" and field "Country". + - PHRAS-2154 - Front - Bug on Chrome only - selected 1 document instead of all for the feedback. + - PHRAS-2538 - Back - Some MP4 files were not correctly detected by Phraseanet. ## 4.0.8 diff --git a/Dockerfile b/Dockerfile index f01f4d8197..738031c4ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,7 +37,7 @@ RUN echo "deb http://deb.debian.org/debian stretch main non-free" > /etc/apt/sou swftools \ unoconv \ unzip \ - xpdf \ + poppler-utils \ libreoffice-base-core \ libreoffice-impress \ libreoffice-calc \ @@ -67,6 +67,7 @@ RUN echo "deb http://deb.debian.org/debian stretch main non-free" > /etc/apt/sou libgsm1-dev \ libfreetype6-dev \ # End FFmpeg + nano \ && update-locale "LANG=fr_FR.UTF-8 UTF-8" \ && dpkg-reconfigure --frontend noninteractive locales \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ diff --git a/README.md b/README.md index 377d5ceee6..6f3beeb792 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,13 @@ And follow the install steps described at https://docs.phraseanet.com/4.0/en/Adm ## Prerequisites -- docker-compose +- docker-compose >=v1.25.4 - docker >=v18.01-ce +Note about elasticsearch container +Check this link +https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-prod-prerequisites + ## Get started You should review the default env variables defined in `.env` file. @@ -84,8 +88,9 @@ docker-compose -f docker-compose.yml run --rm worker ``` Where `` can be: -- `bin/console task-manager:scheduler:run` (default) -- `bin/console worker:execute -m 2` + +- `bin/console worker:execute -m 2` (default) +- `bin/console task-manager:scheduler:run` - ... The default parameters allow you to reach the app with : `http://localhost:8082` @@ -100,6 +105,12 @@ https://hub.docker.com/r/alchemyfr/phraseanet-worker https://hub.docker.com/r/alchemyfr/phraseanet-nginx +https://hub.docker.com/repository/docker/alchemyfr/phraseanet-db + +https://hub.docker.com/repository/docker/alchemyfr/phraseanet-elasticsearch + + + To use them and not build the images locally, we advise to override the properties in file: env.local ```bash @@ -108,6 +119,21 @@ PHRASEANET_DOCKER_REGISTRY=alchemyfr # Tag of the Docker images PHRASEANET_DOCKER_TAG= ``` +or + +Pull images before launch docker-compose + +#### Tag organisation on docker hub + + +```latest``` : latest stable version + +```4.0``` : latest stable version in 4.0 + +```4.1``` : latest stable version in 4.1 + +```4.1.1``` : Phraseanet version 4.1.1 + ## Development mode @@ -172,17 +198,20 @@ XDEBUG_REMOTE_HOST=host.docker.internal Plugins can be installed during build if you set the `PHRASEANET_PLUGINS` env var as follows: ```bash -PHRASEANET_PLUGINS="git@github.com:alchemy-fr/Phraseanet-plugin-webgallery.git" +PHRASEANET_PLUGINS="https://github.com/alchemy-fr/Phraseanet-plugin-expose.git" # You can optionally precise the branch to install # If not precised, the main branch will be pulled PHRASEANET_PLUGINS="git@github.com:alchemy-fr/Phraseanet-plugin-webgallery.git(custom-branch)" -# Plugins are separated by spaces -PHRASEANET_PLUGINS="git@github.com:foo/bar.git(branch-1) git@github.com:baz/42.git" +# Plugins are separated by semicolons +PHRASEANET_PLUGINS="git@github.com:foo/bar.git(branch-1);git@github.com:baz/42.git" ``` +> Prefer the HTTPS URL for public repositories, you will not be required to provide your SSH key. + If you install private plugins, make sure you export your SSH private key content in order to allow docker build to access the GIT repository: +Also ensure you're using the SSH URL form (i.e: `git@github.com:alchemy-fr/repo.git`). ```bash export PHRASEANET_SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa) # or if your private key is protected by a passphrase: diff --git a/config/configuration.sample.yml b/config/configuration.sample.yml index 968d309c88..307b4ca827 100644 --- a/config/configuration.sample.yml +++ b/config/configuration.sample.yml @@ -328,6 +328,14 @@ workers: password: guest vhost: / +externalservice: + ginger: + AutoSubtitling: + service_base_url: https://base.uri + token: 39c6011d + transcript_format: text/vtt + subdef_source: preview + user_account: deleting_policies: email_confirmation: true diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 838e32e64c..1471f077d1 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -13,10 +13,6 @@ services: - ../:/var/alchemy - .:/var/alchemy/Phraseanet - ./docker/nginx/root/entrypoint.sh:/entrypoint.sh - - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw - - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw builder: build: @@ -50,25 +46,12 @@ services: volumes: - ../:/var/alchemy - .:/var/alchemy/Phraseanet - - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw - - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw - - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw - - ${PHRASEANET_CACHE_DIR}:/var/alchemy/Phraseanet/cache:rw - - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw worker: volumes: - ../:/var/alchemy - .:/var/alchemy/Phraseanet - - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw - - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw - - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw - - ${PHRASEANET_CACHE_DIR}:/var/alchemy/Phraseanet/cache:rw - - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw + rabbitmq: ports: diff --git a/docker-compose.yml b/docker-compose.yml index d8d716cb4e..6556872889 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,10 +14,12 @@ services: - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw + - ${PHRASEANET_PLUGINS_DIR}:/var/alchemy/Phraseanet/www/plugins:rw depends_on: - phraseanet environment: - MAX_BODY_SIZE + - GATEWAY_SEND_TIMEOUT ports: - ${PHRASEANET_APP_PORT}:80 @@ -39,9 +41,12 @@ services: - PHRASEANET_PROJECT_NAME - MAX_BODY_SIZE - MAX_INPUT_VARS + - MAX_EXECUTION_TIME + - MAX_INPUT_TIME - OPCACHE_ENABLED - SESSION_CACHE_LIMITER - PHP_LOG_LEVEL + - PHRASEANET_ADMIN_ACCOUNT_ID - PHRASEANET_ADMIN_ACCOUNT_EMAIL - PHRASEANET_ADMIN_ACCOUNT_PASSWORD - PHRASEANET_DB_HOST @@ -63,14 +68,28 @@ services: - PHRASEANET_SMTP_SECURE_MODE - PHRASEANET_SMTP_USER - PHRASEANET_SMTP_PASSWORD + - PHRASEANET_DOWNLOAD_DIR + - PHRASEANET_LAZARET_DIR + - PHRASEANET_CAPTION_DIR + - PHRASEANET_WORKER_TMP + - LC_MESSAGES=C.UTF-8 + - LC_COLLATE=C.UTF-8 + - LC_IDENTIFICATION=C.UTF-8 + - LANG=C.UTF-8 + - LC_MEASUREMENT=C.UTF-8 + - LC_CTYPE=C.UTF-8 + - LC_TIME=C.UTF-8 + - LC_NAME=C.UTF-8 + volumes: - - config_vol:/var/alchemy/Phraseanet/config:rw - - data_vol:/var/alchemy/Phraseanet/datas:rw - - tmp_vol:/var/alchemy/Phraseanet/tmp:rw - - logs_vol:/var/alchemy/Phraseanet/logs:rw - - thumbnails_vol:/var/alchemy/Phraseanet/www/thumbnails:rw - - custom_vol:/var/alchemy/Phraseanet/www/custom:rw - - cache_vol:/var/alchemy/Phraseanet/cache:rw + - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw + - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw + - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw + - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw + - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw + - ${PHRASEANET_PLUGINS_DIR}:/var/alchemy/Phraseanet/www/plugins:rw + - ${PHRASEANET_CACHE_DIR}:/var/alchemy/Phraseanet/cache:rw + - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw worker: build: @@ -93,14 +112,23 @@ services: - OPCACHE_ENABLED - SESSION_CACHE_LIMITER - PHP_LOG_LEVEL + - LC_MESSAGES=C.UTF-8 + - LC_COLLATE=C.UTF-8 + - LC_IDENTIFICATION=C.UTF-8 + - LANG=C.UTF-8 + - LC_MEASUREMENT=C.UTF-8 + - LC_CTYPE=C.UTF-8 + - LC_TIME=C.UTF-8 + - LC_NAME=C.UTF-8 + volumes: - - config_vol:/var/alchemy/Phraseanet/config:rw - - data_vol:/var/alchemy/Phraseanet/datas:rw - - tmp_vol:/var/alchemy/Phraseanet/tmp:rw - - logs_vol:/var/alchemy/Phraseanet/logs:rw - - thumbnails_vol:/var/alchemy/Phraseanet/www/thumbnails:rw - - custom_vol:/var/alchemy/Phraseanet/www/custom:rw - - cache_vol:/var/alchemy/Phraseanet/cache:rw + - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw + - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw + - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw + - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw + - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw + - ${PHRASEANET_CACHE_DIR}:/var/alchemy/Phraseanet/cache:rw + - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw db: image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-db:$PHRASEANET_DOCKER_TAG @@ -151,10 +179,12 @@ volumes: driver: local custom_vol: driver: local + plugins_dir: + driver: local cache_vol: driver: local # to be replacer by stdout/stderr logs_vol: driver: local dev_vol: - driver: local \ No newline at end of file + driver: local diff --git a/docker/nginx/root/entrypoint.sh b/docker/nginx/root/entrypoint.sh index e46ea44296..4c9bbba5c8 100755 --- a/docker/nginx/root/entrypoint.sh +++ b/docker/nginx/root/entrypoint.sh @@ -2,6 +2,6 @@ set -xe -cat /nginx.conf.sample | sed "s/\$MAX_BODY_SIZE/$MAX_BODY_SIZE/g" > /etc/nginx/conf.d/default.conf +cat /nginx.conf.sample | sed "s/\$MAX_BODY_SIZE/$MAX_BODY_SIZE/g" | sed "s/\$GATEWAY_SEND_TIMEOUT/$GATEWAY_SEND_TIMEOUT/g" > /etc/nginx/conf.d/default.conf exec "$@" diff --git a/docker/nginx/root/nginx.conf.sample b/docker/nginx/root/nginx.conf.sample index ad015e7c5a..f1df63f892 100644 --- a/docker/nginx/root/nginx.conf.sample +++ b/docker/nginx/root/nginx.conf.sample @@ -1,3 +1,4 @@ +send_timeout $GATEWAY_SEND_TIMEOUT; upstream backend { server phraseanet:9000; } diff --git a/docker/phraseanet/entrypoint.sh b/docker/phraseanet/entrypoint.sh index 9d22cef4ff..24fcf17661 100755 --- a/docker/phraseanet/entrypoint.sh +++ b/docker/phraseanet/entrypoint.sh @@ -12,26 +12,33 @@ chown -R app:app \ datas \ tmp \ logs \ - www/thumbnails \ - www/custom + www FILE=config/configuration.yml if [ -f "$FILE" ]; then echo "$FILE exists, skip setup." - bin/setup system:config set registry.general.title $PHRASEANET_PROJECT_NAME - if [[ $PHRASEANET_SMTP_ENABLED=true ]]; then + if [[ $PHRASEANET_PROJECT_NAME ]]; then + bin/setup system:config set registry.general.title $PHRASEANET_PROJECT_NAME + fi + if [[ $PHRASEANET_SMTP_ENABLED && $PHRASEANET_SMTP_ENABLED=true ]]; then bin/setup system:config set registry.email.smtp-enabled $PHRASEANET_SMTP_ENABLED bin/setup system:config set registry.email.smtp-auth-enabled $PHRASEANET_SMTP_AUTH_ENABLED bin/setup system:config set registry.email.smtp-auth-secure-mode $PHRASEANET_SMTP_SECURE_MODE - bin/setup system:config set registry.email.smtp-auth-host $PHRASEANET_SMTP_HOST - bin/setup system:config set registry.email.smtp-auth-port $PHRASEANET_SMTP_PORT + bin/setup system:config set registry.email.smtp-host $PHRASEANET_SMTP_HOST + bin/setup system:config set registry.email.smtp-port $PHRASEANET_SMTP_PORT bin/setup system:config set registry.email.smtp-user $PHRASEANET_SMTP_USER bin/setup system:config set registry.email.smtp-password $PHRASEANET_SMTP_PASSWORD bin/setup system:config set registry.email.emitter-email $PHRASEANET_EMITTER_EMAIL bin/setup system:config set registry.email.prefix $PHRASEANET_MAIL_OBJECT_PREFIX + if [[ -n $PHRASEANET_TRUSTED_PROXY ]]; then + bin/setup system:config add trusted-proxies $PHRASEANET_TRUSTED_PROXY + fi fi - bin/console user:password --user_id=1 --password $PHRASEANET_ADMIN_ACCOUNT_PASSWORD -y + if [[ -n ${PHRASEANET_ADMIN_ACCOUNT_ID} && $PHRASEANET_ADMIN_ACCOUNT_ID =~ ^[0-9]+$ ]]; then + bin/console user:password --user_id=$PHRASEANET_ADMIN_ACCOUNT_ID --password $PHRASEANET_ADMIN_ACCOUNT_PASSWORD -y + fi + else echo "$FILE doesn't exist, entering setup..." runuser app -c docker/phraseanet/auto-install.sh @@ -43,5 +50,18 @@ if [ ${XDEBUG_ENABLED} == "1" ]; then fi ./docker/phraseanet/plugins/console init +#rm -Rf cache/ + +chown -R app:app \ + cache \ + config \ + datas \ + tmp \ + logs \ + www + +if [ -d "plugins/" ];then +chown -R app:app plugins; +fi bash -e docker-php-entrypoint $@ diff --git a/docker/phraseanet/php.ini.sample b/docker/phraseanet/php.ini.sample index 7f5fc97430..86634486a7 100644 --- a/docker/phraseanet/php.ini.sample +++ b/docker/phraseanet/php.ini.sample @@ -380,7 +380,7 @@ expose_php = On ; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI -max_execution_time = 9999 +max_execution_time = $MAX_EXECUTION_TIME ; Maximum amount of time each script may spend parsing request data. It's a good ; idea to limit this time on productions servers in order to eliminate unexpectedly @@ -390,7 +390,7 @@ max_execution_time = 9999 ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; http://php.net/max-input-time -max_input_time = 60 +max_input_time = $MAX_INPUT_TIME ; Maximum input variable nesting level ; http://php.net/max-input-nesting-level diff --git a/docker/phraseanet/plugins/InstallCommand.php b/docker/phraseanet/plugins/InstallCommand.php index 7b8a28c4cd..3a0c4bc7e1 100644 --- a/docker/phraseanet/plugins/InstallCommand.php +++ b/docker/phraseanet/plugins/InstallCommand.php @@ -29,7 +29,7 @@ class InstallCommand extends Command mkdir($pluginsDir); } - foreach (explode(' ', $plugins) as $key => $plugin) { + foreach (explode(';', $plugins) as $key => $plugin) { $plugin = trim($plugin); $repo = $plugin; $branch = 'master'; diff --git a/lib/Alchemy/Phrasea/Application.php b/lib/Alchemy/Phrasea/Application.php index 4d0d2ab2d5..a37c78339c 100644 --- a/lib/Alchemy/Phrasea/Application.php +++ b/lib/Alchemy/Phrasea/Application.php @@ -91,7 +91,6 @@ use Alchemy\Phrasea\WorkerManager\Provider\AlchemyWorkerServiceProvider; use Alchemy\Phrasea\WorkerManager\Provider\QueueWorkerServiceProvider; use Alchemy\QueueProvider\QueueServiceProvider; use Alchemy\WorkerProvider\WorkerServiceProvider; -use Doctrine\DBAL\Event\ConnectionEventArgs; use MediaVorus\Media\MediaInterface; use MediaVorus\MediaVorus; use Monolog\Handler\ErrorLogHandler; @@ -618,7 +617,7 @@ class Application extends SilexApplication ); $this['tmp.lazaret.path'] = $factory->createDefinition( - ['main', 'storage', 'quarantine'], + ['main', 'storage', 'lazaret'], function (Application $app) { return $app['tmp.path'].'/lazaret'; } diff --git a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php index cd445c9e8f..d93474e72a 100644 --- a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php +++ b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php @@ -2093,7 +2093,7 @@ class V1Controller extends Controller try { $collection = \collection::getByBaseId($this->app, $request->get('base_id')); - $record->move_to_collection($collection, $this->getApplicationBox()); + $record->move_to_collection($collection); return Result::create($request, ["record" => $this->listRecord($request, $record)])->createResponse(); } catch (\Exception $e) { diff --git a/lib/Alchemy/Phrasea/Controller/Api/V3/V3RecordController.php b/lib/Alchemy/Phrasea/Controller/Api/V3/V3RecordController.php new file mode 100644 index 0000000000..d6b8ecd163 --- /dev/null +++ b/lib/Alchemy/Phrasea/Controller/Api/V3/V3RecordController.php @@ -0,0 +1,393 @@ +findDataboxById($databox_id)->get_meta_structure(); + $record = $this->findDataboxById($databox_id)->get_record($record_id); + + //$record->set_metadatas() + + //setRecordStatusAction + + try { + $b = $this->decodeJsonBody($request); + } + catch (Exception $e) { + return $this->app['controller.api.v1']->getBadRequestAction($request, 'Bad JSON'); + } + + $debug = [ + 'metadatas_ops' => null, + 'sb_ops' => null, + ]; + try { + // do metadatas ops + if (is_array($b->metadatas)) { + $debug['metadatas_ops'] = $this->do_metadatas($struct, $record, $b->metadatas); + } + // do sb ops + if (is_array($b->status)) { + $debug['sb_ops'] = $this->do_status($record, $b->status); + } + if(!is_null($b->base_id)) { + $debug['coll_ops'] = $this->do_collection($record, $b->base_id); + } + } + catch (Exception $e) { + return $this->app['controller.api.v1']->getBadRequestAction( + $request, + $e->getMessage() + ); + } + + // @todo Move event dispatch inside record_adapter class (keeps things encapsulated) + $this->dispatch(PhraseaEvents::RECORD_EDIT, new RecordEdit($record)); + + $ret = $this->getResultHelpers()->listRecord($request, $record, $this->getAclForUser()); + + return Result::create($request, $ret)->createResponse(); + } + + /** + * @param record_adapter $record + * @param $base_id + */ + private function do_collection(record_adapter $record, $base_id) + { + $record->move_to_collection($this->getApplicationBox()->get_collection($base_id)); + } + + + ////////////////////////////////// + /// TODO : keep multi-values uniques ! + /// it should be done in record_adapter + ////////////////////////////////// + + /** + * @param databox_field[] $struct + * @param record_adapter $record + * @param $metadatas + * @return array + * @throws Exception + */ + private function do_metadatas($struct, record_adapter $record, $metadatas) + { + $structByKey = []; + $allStructFields = []; + foreach ($struct as $f) { + $allStructFields[$f->get_id()] = $f; + $structByKey[$f->get_id()] = &$allStructFields[$f->get_id()]; + $structByKey[$f->get_name()] = &$allStructFields[$f->get_id()]; + } + + $metadatas_ops = []; + foreach ($metadatas as $_m) { + // sanity + if($_m->meta_struct_id && $_m->field_name) { + throw new Exception("define meta_struct_id OR field_name, not both."); + } + // select fields that match meta_struct_id or field_name (can be arrays) + $fields_list = null; // to filter caption_fields from record, default all + $struct_fields = []; // struct fields that match meta_struct_id or field_name + $field_keys = $_m->meta_struct_id ? $_m->meta_struct_id : $_m->field_name; // can be null if none defined (=match all) + if($field_keys !== null) { + if (!is_array($field_keys)) { + $field_keys = [$field_keys]; + } + $fields_list = []; + foreach ($field_keys as $k) { + if(array_key_exists($k, $structByKey)) { + $fields_list[] = $structByKey[$k]->get_name(); + $struct_fields[$structByKey[$k]->get_id()] = $structByKey[$k]; + } + else { + throw new Exception(sprintf("unknown field (%s).", $k)); + } + } + } + else { + // no meta_struct_id, no field_name --> match all struct fields ! + $struct_fields = $allStructFields; + } + $caption_fields = $record->get_caption()->get_fields($fields_list, true); + + $meta_id = is_null($_m->meta_id) ? null : (int)($_m->meta_id); + + if(!($match_method = (string)($_m->match_method))) { + $match_method = 'ignore_case'; + } + if(!in_array($match_method, ['strict', 'ignore_case', 'regexp'])) { + throw new Exception(sprintf("bad match_method (%s).", $match_method)); + } + + $values = []; + if(is_array($_m->value)) { + foreach ($_m->value as $v) { + if(($v = trim((string)$v)) !== '') { + $values[] = $v; + } + } + } + else { + if(($v = trim((string)($_m->value))) !== '') { + $values[] = $v; + } + } + + if(!($action = (string)($_m->action))) { + $action = 'set'; + } + + switch ($_m->action) { + case 'set': + $ops = $this->metadata_set($struct_fields, $caption_fields, $meta_id, $values); + break; + case 'add': + $ops = $this->metadata_add($struct_fields, $values); + break; + case 'delete': + $ops = $this->metadata_replace($caption_fields, $meta_id, $match_method, $values, null); + break; + case 'replace': + if (!is_string($_m->replace_with) && !is_null($_m->replace_with)) { + throw new Exception("bad \"replace_with\" for action \"replace\"."); + } + $ops = $this->metadata_replace($caption_fields, $meta_id, $match_method, $values, $_m->replace_with); + break; + default: + throw new Exception(sprintf("bad action (%s).", $action)); + } + + $metadatas_ops = array_merge($metadatas_ops, $ops); + } + + $record->set_metadatas($metadatas_ops, true); + + return $metadatas_ops; + } + + /** + * @param $record + * @param $statuses + * @return array + * @throws Exception + */ + private function do_status(record_adapter $record, $statuses) + { + $datas = strrev($record->getStatus()); + + foreach ($statuses as $status) { + $n = (int)($status->bit); + $value = (int)($status->state); + if ($n > 31 || $n < 4) { + throw new Exception(sprintf("Invalid status bit number (%s).", $n)); + } + if ($value < 0 || $value > 1) { + throw new Exception(sprintf("Invalid status bit state (%s) for bit (%s).", $value, $n)); + } + + $datas = substr($datas, 0, ($n)) . $value . substr($datas, ($n + 1)); + } + + $record->setStatus(strrev($datas)); + + return ["status" => $this->getResultHelpers()->listRecordStatus($record)]; + } + + private function match($pattern, $method, $value) + { + switch ($method) { + case 'strict': + return $value === $pattern; + case 'ignore_case': + return strtolower($value) === strtolower($pattern); + case 'regexp': + return preg_match($pattern, $value) == 1; + } + return false; + } + + /** + * @param databox_field[] $struct_fields struct-fields (from struct) matching meta_struct_id or field_name + * @param caption_field[] $caption_fields caption-fields (from record) matching meta_struct_id or field_name (or all if not set) + * @param int|null $meta_id + * @param string[] $values + * + * @return array ops to execute + * @throws Exception + */ + private function metadata_set($struct_fields, $caption_fields, $meta_id, $values) + { + $ops = []; + + // if one field was multi-valued and no meta_id was set, we must delete all values + foreach ($caption_fields as $cf) { + foreach ($cf->get_values() as $field_value) { + if (is_null($meta_id) || $field_value->getId() === (int)$meta_id) { + $ops[] = [ + 'meta_struct_id' => $cf->get_meta_struct_id(), + 'meta_id' => $field_value->getId(), + 'value' => '' + ]; + } + } + } + // now set values to matching struct_fields + foreach ($struct_fields as $sf) { + if($sf->is_multi()) { + // add the non-null value(s) + foreach ($values as $value) { + if ($value) { + $ops[] = [ + 'meta_struct_id' => $sf->get_id(), + 'meta_id' => $meta_id, // can be null + 'value' => $value + ]; + } + } + } + else { + // mono-valued + if(count($values) > 1) { + throw new Exception(sprintf("setting mono-valued (%s) requires only one value.", $sf->get_name())); + } + if( ($value = $values[0]) ) { + $ops[] = [ + 'meta_struct_id' => $sf->get_id(), + 'meta_id' => $meta_id, // probably null, + 'value' => $value + ]; + } + } + } + + return $ops; + } + + /** + * @param databox_field[] $struct_fields struct-fields (from struct) matching meta_struct_id or field_name + * @param string[] $values + * + * @return array ops to execute + * @throws Exception + */ + private function metadata_add($struct_fields, $values) + { + $ops = []; + + // now set values to matching struct_fields + foreach ($struct_fields as $sf) { + if(!$sf->is_multi()) { + throw new Exception(sprintf("can't \"add\" to mono-valued (%s).", $sf->get_name())); + } + foreach ($values as $value) { + $ops[] = [ + 'meta_struct_id' => $sf->get_id(), + 'meta_id' => null, + 'value' => $value + ]; + } + } + + return $ops; + } + + /** + * @param caption_field[] $caption_fields caption-fields (from record) matching meta_struct_id or field_name (or all if not set) + * @param int|null $meta_id + * @param string $match_method "strict" | "ignore_case" | "regexp" + * @param string[] $values + * @param string|null $replace_with + * + * @return array ops to execute + */ + private function metadata_replace($caption_fields, $meta_id, $match_method, $values, $replace_with) + { + $ops = []; + + $replace_with = trim((string)$replace_with); + + foreach ($caption_fields as $cf) { + // match all ? + if(is_null($meta_id) && count($values) == 0) { + foreach ($cf->get_values() as $field_value) { + $ops[] = [ + 'meta_struct_id' => $cf->get_meta_struct_id(), + 'meta_id' => $field_value->getId(), + 'value' => $replace_with + ]; + } + } + // match by meta-id ? + if (!is_null($meta_id)) { + foreach ($cf->get_values() as $field_value) { + if ($field_value->getId() === $meta_id) { + $ops[] = [ + 'meta_struct_id' => $cf->get_meta_struct_id(), + 'meta_id' => $field_value->getId(), + 'value' => $replace_with + ]; + } + } + } + // match by value(s) ? + foreach ($values as $value) { + foreach ($cf->get_values() as $field_value) { + $rw = $replace_with; + if($match_method=='regexp' && $rw != '') { + $rw = preg_replace($value, $rw, $field_value->getValue()); + } + if ($this->match($value, $match_method, $field_value->getValue())) { + $ops[] = [ + 'meta_struct_id' => $cf->get_meta_struct_id(), + 'meta_id' => $field_value->getId(), + 'value' => $rw + ]; + } + } + } + } + + return $ops; + } + + /** + * @return V3ResultHelpers + */ + private function getResultHelpers() + { + return $this->app['controller.api.v3.resulthelpers']; + } +} diff --git a/lib/Alchemy/Phrasea/Controller/Api/V3/V3ResultHelpers.php b/lib/Alchemy/Phrasea/Controller/Api/V3/V3ResultHelpers.php new file mode 100644 index 0000000000..0438749d98 --- /dev/null +++ b/lib/Alchemy/Phrasea/Controller/Api/V3/V3ResultHelpers.php @@ -0,0 +1,277 @@ +urlgenerator = $urlgenerator; + $this->conf = $conf; + $this->authenticator = $authenticator; + } + + /** + * Retrieve detailed information about one status + * + * @param record_adapter $record + * @return array + */ + public function listRecordStatus(record_adapter $record) + { + $ret = []; + foreach ($record->getStatusStructure() as $bit => $status) { + $ret[] = [ + 'bit' => $bit, + 'state' => databox_status::bitIsSet($record->getStatusBitField(), $bit), + ]; + } + + return $ret; + } + + public function listEmbeddableMedia(Request $request, record_adapter $record, media_subdef $media, ACL $acl) + { + if (!$media->is_physically_present()) { + return null; + } + + if ($this->getAuthenticator()->isAuthenticated()) { + if ($media->get_name() !== 'document' + && false === $acl->has_access_to_subdef($record, $media->get_name()) + ) { + return null; + } + if ($media->get_name() === 'document' + && !$acl->has_right_on_base($record->getBaseId(), ACL::CANDWNLDHD) + && !$acl->has_hd_grant($record) + ) { + return null; + } + } + + if ($media->get_permalink() instanceof media_Permalink_Adapter) { + $permalink = $this->listPermalink($media->get_permalink()); + } else { + $permalink = null; + } + + $urlTTL = (int) $request->get( + 'subdef_url_ttl', + $this->getConf()->get(['registry', 'general', 'default-subdef-url-ttl']) + ); + if ($urlTTL < 0) { + $urlTTL = -1; + } + $issuer = $this->getAuthenticator()->getUser(); + + return [ + 'name' => $media->get_name(), + 'permalink' => $permalink, + 'height' => $media->get_height(), + 'width' => $media->get_width(), + 'filesize' => $media->get_size(), + 'devices' => $media->getDevices(), + 'player_type' => $media->get_type(), + 'mime_type' => $media->get_mime(), + 'substituted' => $media->is_substituted(), + 'created_on' => $media->get_creation_date()->format(DATE_ATOM), + 'updated_on' => $media->get_modification_date()->format(DATE_ATOM), + 'url' => $this->urlgenerator->generate($issuer, $media, $urlTTL), + 'url_ttl' => $urlTTL, + ]; + } + + /** + * @param media_Permalink_Adapter $permalink + * @return array + * + * @todo fix duplicated code + * @noinspection DuplicatedCode + */ + public function listPermalink(media_Permalink_Adapter $permalink) + { + $downloadUrl = $permalink->get_url(); + $downloadUrl->getQuery()->set('download', '1'); + + return [ + 'created_on' => $permalink->get_created_on()->format(DATE_ATOM), + 'id' => $permalink->get_id(), + 'is_activated' => $permalink->get_is_activated(), + 'label' => $permalink->get_label(), + 'updated_on' => $permalink->get_last_modified()->format(DATE_ATOM), + 'page_url' => $permalink->get_page(), + 'download_url' => (string)$downloadUrl, + 'url' => (string)$permalink->get_url(), + ]; + } + + /** + * Retrieve detailed information about one record + * + * @param Request $request + * @param record_adapter $record + * @param ACL $aclforuser + * @return array + */ + public function listRecord(Request $request, record_adapter $record, ACL $aclforuser) + { + $technicalInformation = []; + foreach ($record->get_technical_infos()->getValues() as $name => $value) { + $technicalInformation[] = ['name' => $name, 'value' => $value]; + } + + $data = [ + 'databox_id' => $record->getDataboxId(), + 'record_id' => $record->getRecordId(), + 'mime_type' => $record->getMimeType(), + 'title' => $record->get_title(), + 'original_name' => $record->get_original_name(), + 'updated_on' => $record->getUpdated()->format(DATE_ATOM), + 'created_on' => $record->getCreated()->format(DATE_ATOM), + 'collection_id' => $record->getCollectionId(), + 'base_id' => $record->getBaseId(), + 'sha256' => $record->getSha256(), + 'thumbnail' => $this->listEmbeddableMedia($request, $record, $record->get_thumbnail(), $aclforuser), + 'technical_informations' => $technicalInformation, + 'phrasea_type' => $record->getType(), + 'uuid' => $record->getUuid(), + ]; + + if ($request->attributes->get('_extended', false)) { + $data = array_merge($data, [ + 'subdefs' => $this->listRecordEmbeddableMedias($request, $record, $aclforuser), + 'metadata' => $this->listRecordMetadata($record, $aclforuser), + 'status' => $this->listRecordStatus($record), + 'caption' => $this->listRecordCaption($record, $aclforuser), + ]); + } + + return $data; + } + + /** + * @param Request $request + * @param record_adapter $record + * @return array + */ + private function listRecordEmbeddableMedias(Request $request, record_adapter $record, ACL $acl) + { + $subdefs = []; + + foreach ($record->get_embedable_medias([], []) as $name => $media) { + if (null !== $subdef = $this->listEmbeddableMedia($request, $record, $media, $acl)) { + $subdefs[] = $subdef; + } + } + + return $subdefs; + } + + /** + * List all fields of given record + * + * @param record_adapter $record + * @param ACL $acl + * @return array + */ + private function listRecordMetadata(record_adapter $record, ACL $acl) + { + $includeBusiness = $acl->can_see_business_fields($record->getDatabox()); + + return $this->listRecordCaptionFields($record->get_caption()->get_fields(null, $includeBusiness)); + } + + /** + * @param caption_field[] $fields + * @return array + */ + private function listRecordCaptionFields($fields) + { + $ret = []; + + foreach ($fields as $field) { + $databox_field = $field->get_databox_field(); + + $fieldData = [ + 'meta_structure_id' => $field->get_meta_struct_id(), + 'name' => $field->get_name(), + 'labels' => [ + 'fr' => $databox_field->get_label('fr'), + 'en' => $databox_field->get_label('en'), + 'de' => $databox_field->get_label('de'), + 'nl' => $databox_field->get_label('nl'), + ], + ]; + + foreach ($field->get_values() as $value) { + $data = [ + 'meta_id' => $value->getId(), + 'value' => $value->getValue(), + ]; + + $ret[] = $fieldData + $data; + } + } + + return $ret; + } + + /** + * @param record_adapter $record + * @param ACL $acl + * @return array + */ + private function listRecordCaption(record_adapter $record, ACL $acl) + { + $includeBusiness = $acl->can_see_business_fields($record->getDatabox()); + + $caption = []; + + foreach ($record->get_caption()->get_fields(null, $includeBusiness) as $field) { + $caption[] = [ + 'meta_structure_id' => $field->get_meta_struct_id(), + 'name' => $field->get_name(), + 'value' => $field->get_serialized_values(';'), + ]; + } + + return $caption; + } + + + //////////////////////// + private function getAuthenticator() + { + return $this->authenticator; + } + + protected function getConf() + { + return $this->conf; + } + +} diff --git a/lib/Alchemy/Phrasea/Controller/Api/V3Controller.php b/lib/Alchemy/Phrasea/Controller/Api/V3/V3SearchController.php similarity index 56% rename from lib/Alchemy/Phrasea/Controller/Api/V3Controller.php rename to lib/Alchemy/Phrasea/Controller/Api/V3/V3SearchController.php index 4dcab291fe..c040bde5a5 100644 --- a/lib/Alchemy/Phrasea/Controller/Api/V3Controller.php +++ b/lib/Alchemy/Phrasea/Controller/Api/V3/V3SearchController.php @@ -1,8 +1,11 @@ findDataboxById($databox_id)->get_record($record_id); - - return Result::create($request, ['story' => $this->listStory($request, $story)])->createResponse(); - } catch (NotFoundHttpException $e) { - return Result::createError($request, 404, $this->app->trans('Story Not Found'))->createResponse(); - } catch (\Exception $e) { - return $this->app['controller.api.v1']->getBadRequestAction($request, $this->app->trans('An error occurred')); - } - } + use JsonBodyAware; + use DispatcherAware; /** * Search for results @@ -101,7 +89,7 @@ class V3Controller extends Controller $includeResolver = new IncludeResolver($transformerResolver); - $fractal = new \League\Fractal\Manager(); + $fractal = new FractalManager(); $fractal->setSerializer(new TraceableArraySerializer($this->app['dispatcher'])); $fractal->parseIncludes($this->resolveSearchIncludes($request)); @@ -125,314 +113,7 @@ class V3Controller extends Controller return Result::create($request, $ret)->createResponse(); } - /** - * Retrieve detailed information about one story - * - * @param Request $request - * @param \record_adapter $story - * @return array - * @throws \Exception - */ - private function listStory(Request $request, \record_adapter $story) - { - if (!$story->isStory()) { - return Result::createError($request, 404, 'Story not found')->createResponse(); - } - - $per_page = (int)$request->get('per_page')?:10; - $page = (int)$request->get('page')?:1; - $offset = ($per_page * ($page - 1)) + 1; - - $caption = $story->get_caption(); - - $format = function (\caption_record $caption, $dcField) { - - $field = $caption->get_dc_field($dcField); - - if (!$field) { - return null; - } - - return $field->get_serialized_values(); - }; - - return [ - '@entity@' => V1Controller::OBJECT_TYPE_STORY, - 'databox_id' => $story->getDataboxId(), - 'story_id' => $story->getRecordId(), - 'updated_on' => $story->getUpdated()->format(DATE_ATOM), - 'created_on' => $story->getCreated()->format(DATE_ATOM), - 'collection_id' => $story->getCollectionId(), - 'base_id' => $story->getBaseId(), - 'thumbnail' => $this->listEmbeddableMedia($request, $story, $story->get_thumbnail()), - 'uuid' => $story->getUuid(), - 'metadatas' => [ - '@entity@' => V1Controller::OBJECT_TYPE_STORY_METADATA_BAG, - 'dc:contributor' => $format($caption, \databox_Field_DCESAbstract::Contributor), - 'dc:coverage' => $format($caption, \databox_Field_DCESAbstract::Coverage), - 'dc:creator' => $format($caption, \databox_Field_DCESAbstract::Creator), - 'dc:date' => $format($caption, \databox_Field_DCESAbstract::Date), - 'dc:description' => $format($caption, \databox_Field_DCESAbstract::Description), - 'dc:format' => $format($caption, \databox_Field_DCESAbstract::Format), - 'dc:identifier' => $format($caption, \databox_Field_DCESAbstract::Identifier), - 'dc:language' => $format($caption, \databox_Field_DCESAbstract::Language), - 'dc:publisher' => $format($caption, \databox_Field_DCESAbstract::Publisher), - 'dc:relation' => $format($caption, \databox_Field_DCESAbstract::Relation), - 'dc:rights' => $format($caption, \databox_Field_DCESAbstract::Rights), - 'dc:source' => $format($caption, \databox_Field_DCESAbstract::Source), - 'dc:subject' => $format($caption, \databox_Field_DCESAbstract::Subject), - 'dc:title' => $format($caption, \databox_Field_DCESAbstract::Title), - 'dc:type' => $format($caption, \databox_Field_DCESAbstract::Type), - ], - 'records' => $this->listRecords($request, array_values($story->getChildren($offset, $per_page)->get_elements())), - ]; - } - - private function listEmbeddableMedia(Request $request, \record_adapter $record, \media_subdef $media) - { - if (!$media->is_physically_present()) { - return null; - } - - if ($this->getAuthenticator()->isAuthenticated()) { - $acl = $this->getAclForUser(); - if ($media->get_name() !== 'document' - && false === $acl->has_access_to_subdef($record, $media->get_name()) - ) { - return null; - } - if ($media->get_name() === 'document' - && !$acl->has_right_on_base($record->getBaseId(), \ACL::CANDWNLDHD) - && !$acl->has_hd_grant($record) - ) { - return null; - } - } - - if ($media->get_permalink() instanceof \media_Permalink_Adapter) { - $permalink = $this->listPermalink($media->get_permalink()); - } else { - $permalink = null; - } - - $urlTTL = (int) $request->get( - 'subdef_url_ttl', - $this->getConf()->get(['registry', 'general', 'default-subdef-url-ttl']) - ); - if ($urlTTL < 0) { - $urlTTL = -1; - } - $issuer = $this->getAuthenticatedUser(); - - return [ - 'name' => $media->get_name(), - 'permalink' => $permalink, - 'height' => $media->get_height(), - 'width' => $media->get_width(), - 'filesize' => $media->get_size(), - 'devices' => $media->getDevices(), - 'player_type' => $media->get_type(), - 'mime_type' => $media->get_mime(), - 'substituted' => $media->is_substituted(), - 'created_on' => $media->get_creation_date()->format(DATE_ATOM), - 'updated_on' => $media->get_modification_date()->format(DATE_ATOM), - 'url' => $this->app['media_accessor.subdef_url_generator']->generate($issuer, $media, $urlTTL), - 'url_ttl' => $urlTTL, - ]; - } - - private function listPermalink(\media_Permalink_Adapter $permalink) - { - $downloadUrl = $permalink->get_url(); - $downloadUrl->getQuery()->set('download', '1'); - - return [ - 'created_on' => $permalink->get_created_on()->format(DATE_ATOM), - 'id' => $permalink->get_id(), - 'is_activated' => $permalink->get_is_activated(), - /** @Ignore */ - 'label' => $permalink->get_label(), - 'updated_on' => $permalink->get_last_modified()->format(DATE_ATOM), - 'page_url' => $permalink->get_page(), - 'download_url' => (string)$downloadUrl, - 'url' => (string)$permalink->get_url(), - ]; - } - - /** - * @param Request $request - * @param RecordReferenceInterface[]|RecordReferenceCollection $records - * @return array - */ - private function listRecords(Request $request, $records) - { - if (!$records instanceof RecordReferenceCollection) { - $records = new RecordReferenceCollection($records); - } - - $technicalData = $this->app['service.technical_data']->fetchRecordsTechnicalData($records); - - $data = []; - - foreach ($records->toRecords($this->getApplicationBox()) as $index => $record) { - $record->setTechnicalDataSet($technicalData[$index]); - - $data[$index] = $this->listRecord($request, $record); - } - - return $data; - } - - /** - * Retrieve detailed information about one record - * - * @param Request $request - * @param \record_adapter $record - * @return array - */ - private function listRecord(Request $request, \record_adapter $record) - { - $technicalInformation = []; - foreach ($record->get_technical_infos()->getValues() as $name => $value) { - $technicalInformation[] = ['name' => $name, 'value' => $value]; - } - - $data = [ - 'databox_id' => $record->getDataboxId(), - 'record_id' => $record->getRecordId(), - 'mime_type' => $record->getMimeType(), - 'title' => $record->get_title(), - 'original_name' => $record->get_original_name(), - 'updated_on' => $record->getUpdated()->format(DATE_ATOM), - 'created_on' => $record->getCreated()->format(DATE_ATOM), - 'collection_id' => $record->getCollectionId(), - 'base_id' => $record->getBaseId(), - 'sha256' => $record->getSha256(), - 'thumbnail' => $this->listEmbeddableMedia($request, $record, $record->get_thumbnail()), - 'technical_informations' => $technicalInformation, - 'phrasea_type' => $record->getType(), - 'uuid' => $record->getUuid(), - ]; - - if ($request->attributes->get('_extended', false)) { - $data = array_merge($data, [ - 'subdefs' => $this->listRecordEmbeddableMedias($request, $record), - 'metadata' => $this->listRecordMetadata($record), - 'status' => $this->listRecordStatus($record), - 'caption' => $this->listRecordCaption($record), - ]); - } - - return $data; - } - - /** - * @param Request $request - * @param \record_adapter $record - * @return array - */ - private function listRecordEmbeddableMedias(Request $request, \record_adapter $record) - { - $subdefs = []; - - foreach ($record->get_embedable_medias([], []) as $name => $media) { - if (null !== $subdef = $this->listEmbeddableMedia($request, $record, $media)) { - $subdefs[] = $subdef; - } - } - - return $subdefs; - } - - /** - * List all fields of given record - * - * @param \record_adapter $record - * @return array - */ - private function listRecordMetadata(\record_adapter $record) - { - $includeBusiness = $this->getAclForUser()->can_see_business_fields($record->getDatabox()); - - return $this->listRecordCaptionFields($record->get_caption()->get_fields(null, $includeBusiness)); - } - - /** - * @param \caption_field[] $fields - * @return array - */ - private function listRecordCaptionFields($fields) - { - $ret = []; - - foreach ($fields as $field) { - $databox_field = $field->get_databox_field(); - - $fieldData = [ - 'meta_structure_id' => $field->get_meta_struct_id(), - 'name' => $field->get_name(), - 'labels' => [ - 'fr' => $databox_field->get_label('fr'), - 'en' => $databox_field->get_label('en'), - 'de' => $databox_field->get_label('de'), - 'nl' => $databox_field->get_label('nl'), - ], - ]; - - foreach ($field->get_values() as $value) { - $data = [ - 'meta_id' => $value->getId(), - 'value' => $value->getValue(), - ]; - - $ret[] = $fieldData + $data; - } - } - - return $ret; - } - - /** - * Retrieve detailed information about one status - * - * @param \record_adapter $record - * @return array - */ - private function listRecordStatus(\record_adapter $record) - { - $ret = []; - foreach ($record->getStatusStructure() as $bit => $status) { - $ret[] = [ - 'bit' => $bit, - 'state' => \databox_status::bitIsSet($record->getStatusBitField(), $bit), - ]; - } - - return $ret; - } - - /** - * @param \record_adapter $record - * @return array - */ - private function listRecordCaption(\record_adapter $record) - { - $includeBusiness = $this->getAclForUser()->can_see_business_fields($record->getDatabox()); - - $caption = []; - - foreach ($record->get_caption()->get_fields(null, $includeBusiness) as $field) { - $caption[] = [ - 'meta_structure_id' => $field->get_meta_struct_id(), - 'name' => $field->get_name(), - 'value' => $field->get_serialized_values(';'), - ]; - } - - return $caption; - } - - /** + /** * Returns requested includes * * @param Request $request @@ -660,7 +341,7 @@ class V3Controller extends Controller } /** - * @param RecordCollection|\record_adapter[] $references + * @param RecordCollection|record_adapter[] $references * @return RecordView[] */ private function buildRecordViews($references) @@ -693,7 +374,7 @@ class V3Controller extends Controller foreach ($subdefGroups as $index => $subdefGroup) { if (!isset($subdefGroup['thumbnail'])) { - $fakeSubdef = new \media_subdef($this->app, $references[$index], 'thumbnail', true, []); + $fakeSubdef = new media_subdef($this->app, $references[$index], 'thumbnail', true, []); $fakeSubdefs[spl_object_hash($fakeSubdef)] = $fakeSubdef; $subdefGroups[$index]['thumbnail'] = $fakeSubdef; @@ -701,9 +382,9 @@ class V3Controller extends Controller } $allSubdefs = $this->mergeGroupsIntoOneList($subdefGroups); - $allPermalinks = \media_Permalink_Adapter::getMany( + $allPermalinks = media_Permalink_Adapter::getMany( $this->app, - array_filter($allSubdefs, function (\media_subdef $subdef) use ($fakeSubdefs) { + array_filter($allSubdefs, function (media_subdef $subdef) use ($fakeSubdefs) { return !isset($fakeSubdefs[spl_object_hash($subdef)]); }) ); @@ -712,7 +393,7 @@ class V3Controller extends Controller $subdefViews = []; - /** @var \media_subdef $subdef */ + /** @var media_subdef $subdef */ foreach ($allSubdefs as $index => $subdef) { $subdefView = new SubdefView($subdef); @@ -728,7 +409,7 @@ class V3Controller extends Controller $reorderedGroups = []; - /** @var \media_subdef[] $subdefGroup */ + /** @var media_subdef[] $subdefGroup */ foreach ($subdefGroups as $index => $subdefGroup) { $reordered = []; @@ -789,7 +470,7 @@ class V3Controller extends Controller /** * @param RecordView[] $recordViews - * @param \caption_record[] $captions + * @param caption_record[] $captions * @param bool[] $canSeeBusiness */ private function buildCaptionViews($recordViews, $captions, $canSeeBusiness) diff --git a/lib/Alchemy/Phrasea/Controller/Api/V3/V3StoriesController.php b/lib/Alchemy/Phrasea/Controller/Api/V3/V3StoriesController.php new file mode 100644 index 0000000000..2033c03fed --- /dev/null +++ b/lib/Alchemy/Phrasea/Controller/Api/V3/V3StoriesController.php @@ -0,0 +1,146 @@ +findDataboxById($databox_id)->get_record($record_id); + + return Result::create($request, ['story' => $this->listStory($request, $story)])->createResponse(); + } + catch (NotFoundHttpException $e) { + return Result::createError($request, 404, 'Story Not Found')->createResponse(); + } + catch (Exception $e) { + return $this->app['controller.api.v1']->getBadRequestAction($request, 'An error occurred'); + } + } + + /** + * Retrieve detailed information about one story + * + * @param Request $request + * @param record_adapter $story + * @return array + * @throws Exception + */ + private function listStory(Request $request, record_adapter $story) + { + if (!$story->isStory()) { + return Result::createError($request, 404, 'Story not found')->createResponse(); + } + + $per_page = (int)$request->get('per_page')?:10; + $page = (int)$request->get('page')?:1; + $offset = ($per_page * ($page - 1)) + 1; + + $caption = $story->get_caption(); + + $format = function (caption_record $caption, $dcField) { + + $field = $caption->get_dc_field($dcField); + + if (!$field) { + return null; + } + + return $field->get_serialized_values(); + }; + + return [ + '@entity@' => V1Controller::OBJECT_TYPE_STORY, + 'databox_id' => $story->getDataboxId(), + 'story_id' => $story->getRecordId(), + 'updated_on' => $story->getUpdated()->format(DATE_ATOM), + 'created_on' => $story->getCreated()->format(DATE_ATOM), + 'collection_id' => $story->getCollectionId(), + 'base_id' => $story->getBaseId(), + 'thumbnail' => $this->getResultHelpers()->listEmbeddableMedia($request, $story, $story->get_thumbnail(), $this->getAclForUser()), + 'uuid' => $story->getUuid(), + 'metadatas' => [ + '@entity@' => V1Controller::OBJECT_TYPE_STORY_METADATA_BAG, + 'dc:contributor' => $format($caption, databox_Field_DCESAbstract::Contributor), + 'dc:coverage' => $format($caption, databox_Field_DCESAbstract::Coverage), + 'dc:creator' => $format($caption, databox_Field_DCESAbstract::Creator), + 'dc:date' => $format($caption, databox_Field_DCESAbstract::Date), + 'dc:description' => $format($caption, databox_Field_DCESAbstract::Description), + 'dc:format' => $format($caption, databox_Field_DCESAbstract::Format), + 'dc:identifier' => $format($caption, databox_Field_DCESAbstract::Identifier), + 'dc:language' => $format($caption, databox_Field_DCESAbstract::Language), + 'dc:publisher' => $format($caption, databox_Field_DCESAbstract::Publisher), + 'dc:relation' => $format($caption, databox_Field_DCESAbstract::Relation), + 'dc:rights' => $format($caption, databox_Field_DCESAbstract::Rights), + 'dc:source' => $format($caption, databox_Field_DCESAbstract::Source), + 'dc:subject' => $format($caption, databox_Field_DCESAbstract::Subject), + 'dc:title' => $format($caption, databox_Field_DCESAbstract::Title), + 'dc:type' => $format($caption, databox_Field_DCESAbstract::Type), + ], + 'records' => $this->listRecords($request, array_values($story->getChildren($offset, $per_page)->get_elements())), + ]; + } + + /** + * @param Request $request + * @param RecordReferenceInterface[]|RecordReferenceCollection $records + * @return array + */ + private function listRecords(Request $request, $records) + { + if (!$records instanceof RecordReferenceCollection) { + $records = new RecordReferenceCollection($records); + } + + $technicalData = $this->app['service.technical_data']->fetchRecordsTechnicalData($records); + + $data = []; + + foreach ($records->toRecords($this->getApplicationBox()) as $index => $record) { + $record->setTechnicalDataSet($technicalData[$index]); + + $data[$index] = $this->getResultHelpers()->listRecord($request, $record, $this->getAclForUser()); + } + + return $data; + } + + + /** + * @return V3ResultHelpers + */ + private function getResultHelpers() + { + return $this->app['controller.api.v3.resulthelpers']; + } + +} diff --git a/lib/Alchemy/Phrasea/Controller/Prod/LanguageController.php b/lib/Alchemy/Phrasea/Controller/Prod/LanguageController.php index 254e3e9835..b331d91795 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/LanguageController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/LanguageController.php @@ -155,6 +155,8 @@ class LanguageController 'description notice' => $translator->trans('prod:mapboxgl: description notice'), 'title-map-dialog' => $translator->trans('prod:mapboxgl: title map dialog'), 'create new user' => $translator->trans('prod:push: create new user'), + 'prod:videoeditor:subtitletab:message:: error' => $translator->trans('prod:videoeditor:subtitletab:message:: error'), + 'prod:videoeditor:subtitletab:message:: success' => $translator->trans('prod:videoeditor:subtitletab:message:: success'), ]); } } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/MoveCollectionController.php b/lib/Alchemy/Phrasea/Controller/Prod/MoveCollectionController.php index 50e2219e0d..274ab2ac17 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/MoveCollectionController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/MoveCollectionController.php @@ -115,13 +115,13 @@ class MoveCollectionController extends Controller foreach ($records as $record) { $oldCollectionId = $record->getCollection()->get_coll_id(); - $record->move_to_collection($collection, $this->getApplicationBox()); + $record->move_to_collection($collection); if ($request->request->get("chg_coll_son") == "1") { /** @var \record_adapter $child */ foreach ($record->getChildren() as $child) { if ($this->getAclForUser()->has_right_on_base($child->getBaseId(), \ACL::CANDELETERECORD)) { - $child->move_to_collection($collection, $this->getApplicationBox()); + $child->move_to_collection($collection); } } } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php b/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php index da612c13aa..1c1e6ee250 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php @@ -242,7 +242,7 @@ class RecordController extends Controller $this->getEventDispatcher()->dispatch(RecordEvents::DELETE, new DeleteEvent($record)); } else { // move to trash collection - $record->move_to_collection($trashCollectionsBySbasId[$sbasId], $this->getApplicationBox()); + $record->move_to_collection($trashCollectionsBySbasId[$sbasId]); // disable permalinks foreach($record->get_subdefs() as $subdef) { if( ($pl = $subdef->get_permalink()) ) { diff --git a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php index fa3fbac84a..af30331807 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php @@ -15,8 +15,10 @@ use Alchemy\Phrasea\Application\Helper\FilesystemAware; use Alchemy\Phrasea\Application\Helper\SubDefinitionSubstituerAware; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Controller\RecordsRequest; +use Alchemy\Phrasea\Core\Event\Record\RecordAutoSubtitleEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvents; use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; +use Alchemy\Phrasea\Core\PhraseaEvents; use Alchemy\Phrasea\Exception\RuntimeException; use Alchemy\Phrasea\Metadata\PhraseanetMetadataReader; use Alchemy\Phrasea\Metadata\PhraseanetMetadataSetter; @@ -24,7 +26,6 @@ use Alchemy\Phrasea\Record\RecordWasRotated; use DataURI\Parser; use MediaAlchemyst\Alchemyst; use MediaVorus\MediaVorus; -use PHPExiftool\Reader; use Symfony\Component\HttpFoundation\Request; class ToolsController extends Controller @@ -45,7 +46,6 @@ class ToolsController extends Controller if (count($records) == 1) { /** @var \record_adapter $record */ $record = $records->first(); - $databox = $record->getDatabox(); /**Array list of subdefs**/ $listsubdef = array_keys($record-> get_subdefs()); @@ -88,14 +88,13 @@ class ToolsController extends Controller $metadatas = true; } } - $conf = $this->getConf(); return $this->render('prod/actions/Tools/index.html.twig', [ 'records' => $records, 'record' => $record, 'recordSubdefs' => $recordAccessibleSubdefs, 'metadatas' => $metadatas, - 'listsubdef' => $listsubdef + 'listsubdef' => $listsubdef ]); } @@ -118,6 +117,7 @@ class ToolsController extends Controller } foreach ($records as $record) { + /** @var \media_subdef $subdef */ foreach ($record->get_subdefs() as $subdef) { if ($subdef->get_type() !== \media_subdef::TYPE_IMAGE) { continue; @@ -146,6 +146,7 @@ class ToolsController extends Controller foreach ($selection as $record) { $substituted = false; + /** @var \media_subdef $subdef */ foreach ($record->get_subdefs() as $subdef) { if ($subdef->is_substituted()) { $substituted = true; @@ -362,14 +363,6 @@ class ToolsController extends Controller return $this->app->json($return); } - /** - * @return Reader - */ - private function getExifToolReader() - { - return $this->app['exiftool.reader']; - } - /** * @return Alchemyst */ @@ -449,13 +442,45 @@ class ToolsController extends Controller try { $record->set_metadatas($metadatas); } - catch (Exception $e) { + catch (\Exception $e) { return $this->app->json(['success' => false, 'errorMessage' => $e->getMessage()]); } return $this->app->json(['success' => true, 'errorMessage' => '']); } + public function autoSubtitleAction(Request $request) + { + $record = new \record_adapter($this->app, + (int)$request->request->get("databox_id"), + (int)$request->request->get("record_id") + ); + + $permalinkUrl = ''; + $conf = $this->getConf(); + + // if subdef_source not set, by default use the preview permalink + $subdefSource = $conf->get(['externalservice', 'ginger', 'AutoSubtitling', 'subdef_source']) ?: 'preview'; + + if ($this->isPhysicallyPresent($record, $subdefSource) && ($previewLink = $record->get_subdef($subdefSource)->get_permalink()) != null) { + $permalinkUrl = $previewLink->get_url()->__toString(); + } + + $this->dispatch( + PhraseaEvents::RECORD_AUTO_SUBTITLE, + new RecordAutoSubtitleEvent( + $record, + $permalinkUrl, + $request->request->get("subtitle_language_source"), + $request->request->get("meta_struct_id_source"), + $request->request->get("subtitle_language_destination"), + $request->request->get("meta_struct_id_destination") + ) + ); + + return $this->app->json(["status" => "dispatch"]); + } + public function videoEditorAction(Request $request) { $records = RecordsRequest::fromRequest($this->app, $request, false); @@ -463,6 +488,7 @@ class ToolsController extends Controller $metadatas = false; $record = null; $JSFields = []; + $videoTextTrackFields = []; if (count($records) == 1) { /** @var \record_adapter $record */ @@ -480,6 +506,19 @@ class ToolsController extends Controller 'name' => $meta->get_name(), '_value' => $record->getCaption([$meta->get_name()]), ]; + + if (preg_match('/^VideoTextTrack(.*)$/iu', $meta->get_name(), $matches) && !empty($matches[1]) && strlen($matches[1]) == 2 ) { + $field['label'] = $matches[1]; + $field['meta_struct_id'] = $meta->get_id(); + $field['value'] = ''; + if ($record->get_caption()->has_field($meta->get_name())) { + $fieldValues = $record->get_caption()->get_field($meta->get_name())->get_values(); + $fieldValue = array_pop($fieldValues); + $field['value'] = $fieldValue->getValue(); + } + $videoTextTrackFields[$meta->get_id()] = $field; + unset($field); + } } if (!$record->isStory()) { @@ -489,11 +528,23 @@ class ToolsController extends Controller $conf = $this->getConf(); return $this->render('prod/actions/Tools/videoEditor.html.twig', [ - 'records' => $records, - 'record' => $record, - 'videoEditorConfig' => $conf->get(['video-editor']), - 'metadatas' => $metadatas, - 'JSonFields' => json_encode($JSFields), + 'records' => $records, + 'record' => $record, + 'videoEditorConfig' => $conf->get(['video-editor']), + 'metadatas' => $metadatas, + 'JSonFields' => json_encode($JSFields), + 'videoTextTrackFields' => $videoTextTrackFields ]); } + + private function isPhysicallyPresent(\record_adapter $record, $subdefName) + { + try { + return $record->get_subdef($subdefName)->is_physically_present(); + } catch (\Exception $e) { + unset($e); + } + + return false; + } } diff --git a/lib/Alchemy/Phrasea/Controller/Thesaurus/ThesaurusController.php b/lib/Alchemy/Phrasea/Controller/Thesaurus/ThesaurusController.php index 1bd06d83b2..7b011b9388 100644 --- a/lib/Alchemy/Phrasea/Controller/Thesaurus/ThesaurusController.php +++ b/lib/Alchemy/Phrasea/Controller/Thesaurus/ThesaurusController.php @@ -13,6 +13,9 @@ use Alchemy\Phrasea\Application\Helper\DispatcherAware; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Core\Event\Thesaurus as ThesaurusEvent; use Alchemy\Phrasea\Core\Event\Thesaurus\ThesaurusEvents; +use Alchemy\Phrasea\SearchEngine\Elastic\ElasticsearchOptions; +use Alchemy\Phrasea\WorkerManager\Event\PopulateIndexEvent; +use Alchemy\Phrasea\WorkerManager\Event\WorkerEvents; use Doctrine\DBAL\Driver\Connection; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -1222,6 +1225,26 @@ class ThesaurusController extends Controller ]); } + /** + * Order to populate databox + * + * @param Request $request + * @return \Symfony\Component\HttpFoundation\JsonResponse + */ + public function populate(Request $request) + { + $options = $this->getElasticsearchOptions(); + + $data['host'] = $options->getHost(); + $data['port'] = $options->getPort(); + $data['indexName'] = $options->getIndexName(); + $data['databoxIds'] = [$request->get('databox_id')]; + + $this->getDispatcher()->dispatch(WorkerEvents::POPULATE_INDEX, new PopulateIndexEvent($data)); + + return $this->app->json(["status" => "success"]); + } + /** * @param Request $request * @return Response @@ -3031,4 +3054,12 @@ class ThesaurusController extends Controller { return $this->app['locales.available']; } + + /** + * @return ElasticsearchOptions + */ + private function getElasticsearchOptions() + { + return $this->app['elasticsearch.options']; + } } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Api/V3.php b/lib/Alchemy/Phrasea/ControllerProvider/Api/V3.php index 5925c74921..22244bb1a4 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Api/V3.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Api/V3.php @@ -3,21 +3,41 @@ namespace Alchemy\Phrasea\ControllerProvider\Api; use Alchemy\Phrasea\Application as PhraseaApplication; -use Alchemy\Phrasea\Controller\Api\V3Controller; +use Alchemy\Phrasea\Controller\Api\V3\V3RecordController; +use Alchemy\Phrasea\Controller\Api\V3\V3ResultHelpers; +use Alchemy\Phrasea\Controller\Api\V3\V3SearchController; +use Alchemy\Phrasea\Controller\Api\V3\V3StoriesController; use Alchemy\Phrasea\Core\Event\Listener\OAuthListener; use Silex\Application; use Silex\ControllerCollection; use Silex\ControllerProviderInterface; use Silex\ServiceProviderInterface; + class V3 extends Api implements ControllerProviderInterface, ServiceProviderInterface { const VERSION = '3.0.0'; public function register(Application $app) { - $app['controller.api.v3'] = $app->share(function (PhraseaApplication $app) { - return (new V3Controller($app)); + $app['controller.api.v3.resulthelpers'] = $app->share(function (PhraseaApplication $app) { + return (new V3ResultHelpers( + $app['conf'], + $app['media_accessor.subdef_url_generator'], + $app['authentication'] + )); + }); + $app['controller.api.v3.metadatas'] = $app->share(function (PhraseaApplication $app) { + return (new V3RecordController($app)) + ->setJsonBodyHelper($app['json.body_helper']) + ->setDispatcher($app['dispatcher']) + ; + }); + $app['controller.api.v3.search'] = $app->share(function (PhraseaApplication $app) { + return (new V3SearchController($app)); + }); + $app['controller.api.v3.stories'] = $app->share(function (PhraseaApplication $app) { + return (new V3StoriesController($app)); }); } @@ -36,12 +56,32 @@ class V3 extends Api implements ControllerProviderInterface, ServiceProviderInte $controllers->before(new OAuthListener()); - $controllers->get('/stories/{databox_id}/{record_id}/', 'controller.api.v3:getStoryAction') + /** + * @uses V3StoriesController::getStoryAction() + */ + $controllers->get('/stories/{databox_id}/{record_id}/', 'controller.api.v3.stories:getStoryAction') ->before('controller.api.v1:ensureCanAccessToRecord') ->assert('databox_id', '\d+') ->assert('record_id', '\d+'); - $controllers->match('/search/', 'controller.api.v3:searchAction'); + /** + * @uses V3SearchController::searchAction() + */ + $controllers->match('/search/', 'controller.api.v3.search:searchAction'); + + /** + * @uses V3RecordController::indexAction_patch() + */ + $controllers->patch('/records/{databox_id}/{record_id}/', 'controller.api.v3.metadatas:indexAction_patch') + ->before('controller.api.v1:ensureCanAccessToRecord') + ->before('controller.api.v1:ensureCanModifyRecord') + ->assert('databox_id', '\d+') + ->assert('record_id', '\d+'); + + /** + * @uses \Alchemy\Phrasea\Controller\Api\V1Controller::getBadRequestAction() + */ + $controllers->match('/records/{any_id}/{anyother_id}/setmetadatas/', 'controller.api.v1:getBadRequestAction'); return $controllers; } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php index 8d6932aecf..07f8810ad4 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php @@ -72,6 +72,9 @@ class Tools implements ControllerProviderInterface, ServiceProviderInterface $controllers->post('/metadata/save/', 'controller.prod.tools:saveMetasAction') ->bind('prod_tools_metadata_save'); + $controllers->post('/auto-subtitle/', 'controller.prod.tools:autoSubtitleAction') + ->bind('prod_tools_auto_subtitle'); + $controllers->get('/videoEditor', 'controller.prod.tools:videoEditorAction'); return $controllers; diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Thesaurus/Thesaurus.php b/lib/Alchemy/Phrasea/ControllerProvider/Thesaurus/Thesaurus.php index 039cb4b96f..d5119eede9 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Thesaurus/Thesaurus.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Thesaurus/Thesaurus.php @@ -60,6 +60,7 @@ class Thesaurus implements ControllerProviderInterface, ServiceProviderInterface $controllers->match('newterm.php', 'controller.thesaurus:newTerm'); $controllers->match('properties.php', 'controller.thesaurus:properties'); $controllers->match('thesaurus.php', 'controller.thesaurus:thesaurus')->bind('thesaurus_thesaurus'); + $controllers->match('populate', 'controller.thesaurus:populate')->bind('thesaurus_populate'); $controllers->match('xmlhttp/accept.x.php', 'controller.thesaurus:acceptXml'); $controllers->match('xmlhttp/acceptcandidates.x.php', 'controller.thesaurus:acceptCandidatesXml'); diff --git a/lib/Alchemy/Phrasea/Core/Event/Record/RecordAutoSubtitleEvent.php b/lib/Alchemy/Phrasea/Core/Event/Record/RecordAutoSubtitleEvent.php new file mode 100644 index 0000000000..307a54e474 --- /dev/null +++ b/lib/Alchemy/Phrasea/Core/Event/Record/RecordAutoSubtitleEvent.php @@ -0,0 +1,57 @@ +languageSource = $languageSource; + $this->metaStructureIdSource = $metaStructureIdSource; + $this->languageDestination = $languageDestination; + $this->metaStructureIdDestination = $metaStructureIdDestination; + $this->permalinkUrl = $permalinkUrl; + } + + public function getLanguageSource() + { + return $this->languageSource; + } + + public function getMetaStructureIdSource() + { + return $this->metaStructureIdSource; + } + + public function getLanguageDestination() + { + return $this->languageDestination; + } + + public function getMetaStructureIdDestination() + { + return $this->metaStructureIdDestination; + } + + public function getPermalinkUrl() + { + return $this->permalinkUrl; + } +} diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/WebhookSubdefEventSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/WebhookSubdefEventSubscriber.php index ca5d88b2ab..dd676f92f3 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/WebhookSubdefEventSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/WebhookSubdefEventSubscriber.php @@ -5,7 +5,6 @@ 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; @@ -30,7 +29,8 @@ class WebhookSubdefEventSubscriber implements EventSubscriberInterface $this->app['manipulator.webhook-event']->create( WebhookEvent::RECORD_SUBDEF_CREATED, WebhookEvent::RECORD_SUBDEF_TYPE, - $eventData + $eventData, + [$event->getRecord()->getBaseId()] ); } @@ -45,22 +45,8 @@ class WebhookSubdefEventSubscriber implements EventSubscriberInterface $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 + $eventData, + [$event->getRecord()->getBaseId()] ); } @@ -68,7 +54,6 @@ class WebhookSubdefEventSubscriber implements EventSubscriberInterface { return [ RecordEvents::SUB_DEFINITION_CREATED => 'onSubdefCreated', - RecordEvents::SUB_DEFINITIONS_CREATED => 'onSubdefsCreated', RecordEvents::SUB_DEFINITION_CREATION_FAILED => 'onSubdefCreationFailed' ]; } diff --git a/lib/Alchemy/Phrasea/Core/PhraseaEvents.php b/lib/Alchemy/Phrasea/Core/PhraseaEvents.php index 90adac69dd..1e1daf714b 100644 --- a/lib/Alchemy/Phrasea/Core/PhraseaEvents.php +++ b/lib/Alchemy/Phrasea/Core/PhraseaEvents.php @@ -54,6 +54,8 @@ final class PhraseaEvents const RECORD_EDIT = 'record.edit'; const RECORD_UPLOAD = 'record.upload'; + const RECORD_AUTO_SUBTITLE = 'record.auto-subtitle'; + const THESAURUS_IMPORTED = 'thesaurus.imported'; const THESAURUS_FIELD_LINKED = 'thesaurus.field-linked'; const THESAURUS_CANDIDATE_ACCEPTED_AS_CONCEPT = 'thesaurus.candidate-accepted-as-concept'; diff --git a/lib/Alchemy/Phrasea/Core/Provider/RepositoriesServiceProvider.php b/lib/Alchemy/Phrasea/Core/Provider/RepositoriesServiceProvider.php index 72f64fa52c..b81835842e 100644 --- a/lib/Alchemy/Phrasea/Core/Provider/RepositoriesServiceProvider.php +++ b/lib/Alchemy/Phrasea/Core/Provider/RepositoriesServiceProvider.php @@ -150,6 +150,9 @@ class RepositoriesServiceProvider implements ServiceProviderInterface $app['repo.worker-running-job'] = $app->share(function (PhraseaApplication $app) { return $app['orm.em']->getRepository('Phraseanet:WorkerRunningJob'); }); + $app['repo.worker-job'] = $app->share(function (PhraseaApplication $app) { + return $app['orm.em']->getRepository('Phraseanet:WorkerJob'); + }); $app['repo.worker-running-populate'] = $app->share(function (PhraseaApplication $app) { return $app['orm.em']->getRepository('Phraseanet:WorkerRunningPopulate'); }); diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index a0ab93df50..79fe15eb4b 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -16,8 +16,7 @@ class Version /** * @var string */ - - private $number = '4.1.0-alpha.29a'; + private $number = '4.1.1'; /** * @var string diff --git a/lib/Alchemy/Phrasea/Model/Entities/WorkerJob.php b/lib/Alchemy/Phrasea/Model/Entities/WorkerJob.php new file mode 100644 index 0000000000..dbeb5d319a --- /dev/null +++ b/lib/Alchemy/Phrasea/Model/Entities/WorkerJob.php @@ -0,0 +1,150 @@ +id; + } + + public function setType($type) + { + $this->type = $type; + + return $this; + } + + public function getType() + { + return $this->type; + } + + /** + * @param array $data + * + * @return WorkerJob + */ + public function setData(array $data) + { + $this->data = $data; + + return $this; + } + + public function getData() + { + return $this->data; + } + + public function setStatus($status) + { + $this->status = $status; + + return $this; + } + + public function getStatus() + { + return $this->status; + } + + /** + * @return \DateTime + */ + public function getCreated() + { + return $this->created; + } + + /** + * @param \DateTime $finished + * @return $this + */ + public function setFinished(\DateTime $finished) + { + $this->finished = $finished; + + return $this; + } + + /** + * @return mixed + */ + public function getFinished() + { + return $this->finished; + } + + /** + * @param \DateTime $started + * @return $this + */ + public function setStarted(\DateTime $started) + { + $this->started = $started; + + return $this; + } + + /** + * @return mixed + */ + public function getStarted() + { + return $this->started; + } +} diff --git a/lib/Alchemy/Phrasea/Model/Entities/WorkerRunningJob.php b/lib/Alchemy/Phrasea/Model/Entities/WorkerRunningJob.php index b94ae1514c..4d3b9093ed 100644 --- a/lib/Alchemy/Phrasea/Model/Entities/WorkerRunningJob.php +++ b/lib/Alchemy/Phrasea/Model/Entities/WorkerRunningJob.php @@ -20,6 +20,8 @@ class WorkerRunningJob const FINISHED = 'finished'; const RUNNING = 'running'; + const MAX_RESULT = 500; + /** * @ORM\Column(type="integer") * @ORM\Id diff --git a/lib/Alchemy/Phrasea/Model/Repositories/WorkerJobRepository.php b/lib/Alchemy/Phrasea/Model/Repositories/WorkerJobRepository.php new file mode 100644 index 0000000000..dd20a9c95d --- /dev/null +++ b/lib/Alchemy/Phrasea/Model/Repositories/WorkerJobRepository.php @@ -0,0 +1,22 @@ +_em->getConnection()->ping() === false) { + $this->_em->getConnection()->close(); + $this->_em->getConnection()->connect(); + } + } +} diff --git a/lib/Alchemy/Phrasea/Search/PermalinkTransformer.php b/lib/Alchemy/Phrasea/Search/PermalinkTransformer.php index 6bb22be37d..c192b769be 100644 --- a/lib/Alchemy/Phrasea/Search/PermalinkTransformer.php +++ b/lib/Alchemy/Phrasea/Search/PermalinkTransformer.php @@ -25,7 +25,6 @@ class PermalinkTransformer extends TransformerAbstract 'created_on' => $permalink->get_created_on()->format(DATE_ATOM), 'id' => $permalink->get_id(), 'is_activated' => $permalink->get_is_activated(), - /** @Ignore */ 'label' => $permalink->get_label(), 'updated_on' => $permalink->get_last_modified()->format(DATE_ATOM), 'page_url' => $permalink->get_page(), diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/RecordHelper.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/RecordHelper.php index 6d19916e62..5cf26987ca 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/RecordHelper.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/RecordHelper.php @@ -11,13 +11,10 @@ namespace Alchemy\Phrasea\SearchEngine\Elastic; -use Alchemy\Phrasea\SearchEngine\Elastic\Exception\MergeException; -use Alchemy\Phrasea\SearchEngine\Elastic\Mapping; -use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Field; -use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Flag; use appbox; use DateTime; -use igorw; +use Exception; + class RecordHelper { @@ -100,31 +97,31 @@ class RecordHelper $a = explode(';', preg_replace('/\D+/', ';', trim($value))); switch (count($a)) { case 1: // yyyy - $date = new \DateTime($a[0] . '-01-01'); // will throw if date is not valid + $date = new DateTime($a[0] . '-01-01'); // will throw if date is not valid $v_fix = $date->format('Y'); break; case 2: // yyyy;mm - $date = new \DateTime( $a[0] . '-' . $a[1] . '-01'); + $date = new DateTime( $a[0] . '-' . $a[1] . '-01'); $v_fix = $date->format('Y-m'); break; case 3: // yyyy;mm;dd - $date = new \DateTime($a[0] . '-' . $a[1] . '-' . $a[2]); + $date = new DateTime($a[0] . '-' . $a[1] . '-' . $a[2]); $v_fix = $date->format('Y-m-d'); break; case 4: - $date = new \DateTime($a[0] . '-' . $a[1] . '-' . $a[2] . ' ' . $a[3] . ':00:00'); + $date = new DateTime($a[0] . '-' . $a[1] . '-' . $a[2] . ' ' . $a[3] . ':00:00'); $v_fix = $date->format('Y-m-d H:i:s'); break; case 5: - $date = new \DateTime($a[0] . '-' . $a[1] . '-' . $a[2] . ' ' . $a[3] . ':' . $a[4] . ':00'); + $date = new DateTime($a[0] . '-' . $a[1] . '-' . $a[2] . ' ' . $a[3] . ':' . $a[4] . ':00'); $v_fix = $date->format('Y-m-d H:i:s'); break; case 6: - $date = new \DateTime($a[0] . '-' . $a[1] . '-' . $a[2] . ' ' . $a[3] . ':' . $a[4] . ':' . $a[5]); + $date = new DateTime($a[0] . '-' . $a[1] . '-' . $a[2] . ' ' . $a[3] . ':' . $a[4] . ':' . $a[5]); $v_fix = $date->format('Y-m-d H:i:s'); break; } - } catch (\Exception $e) { + } catch (Exception $e) { // no-op, v_fix = null } @@ -151,8 +148,16 @@ class RecordHelper return (bool) $value; case FieldMapping::TYPE_STRING: - $value = substr($value, 0, 32766); // for lucene limit, before a better solution - return str_replace("\0", '', $value); + $value = str_replace("\0", '', $value); // no null char for lucene ! + if( strlen($value) > 32766) { // for lucene limit, before a better solution + for($l=32766; $l > 0; $l--) { + if(ord(substr($value, $l-1, 1)) < 128) { + break; + } + } + $value = substr($value, 0, $l); + } + return $value; default: return $value; diff --git a/lib/Alchemy/Phrasea/TaskManager/Job/RecordMoverJob.php b/lib/Alchemy/Phrasea/TaskManager/Job/RecordMoverJob.php index 9e2878cdd0..d007dc5f29 100644 --- a/lib/Alchemy/Phrasea/TaskManager/Job/RecordMoverJob.php +++ b/lib/Alchemy/Phrasea/TaskManager/Job/RecordMoverJob.php @@ -74,7 +74,6 @@ class RecordMoverJob extends AbstractJob private function processData(Application $app, $row, $logsql) { - /** @var databox $databox */ $databox = $app->findDataboxById($row['sbas_id']); $rec = $databox->get_record($row['record_id']); @@ -83,7 +82,7 @@ class RecordMoverJob extends AbstractJob // change collection ? if (array_key_exists('coll', $row)) { $coll = \collection::getByCollectionId($app, $databox, $row['coll']); - $rec->move_to_collection($coll, $app['phraseanet.appbox']); + $rec->move_to_collection($coll); if ($logsql) { $this->log('debug', sprintf("on sbas %s move rid %s to coll %s \n", $row['sbas_id'], $row['record_id'], $coll->get_coll_id())); } diff --git a/lib/Alchemy/Phrasea/WorkerManager/Command/WorkerExecuteCommand.php b/lib/Alchemy/Phrasea/WorkerManager/Command/WorkerExecuteCommand.php index 70e7b41f05..8fde255710 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Command/WorkerExecuteCommand.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Command/WorkerExecuteCommand.php @@ -23,9 +23,9 @@ class WorkerExecuteCommand extends Command $this->setDescription('Listen queues define on configuration, launch corresponding service for execution') ->addOption('preserve-payload', 'p', InputOption::VALUE_NONE, 'Preserve temporary payload file') ->addOption('queue-name', '', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'The name of queues to be consuming') - ->addOption('max-processes', 'm', InputOption::VALUE_REQUIRED, 'The max number of process allow to run (default 4) ') - ->addOption('MWG', '', InputOption::VALUE_NONE, 'Enable MWG metadata compatibility (use only for write metadata service)') - ->addOption('clear-metadatas', '', InputOption::VALUE_NONE, 'Delete metadatas from documents if not compliant with Database structure (use only for write metadata service)') + ->addOption('max-processes', 'm', InputOption::VALUE_REQUIRED, 'The max number of process allow to run (default 1) ') +// ->addOption('MWG', '', InputOption::VALUE_NONE, 'Enable MWG metadata compatibility (use only for write metadata service)') +// ->addOption('clear-metadatas', '', InputOption::VALUE_NONE, 'Remove metadatas from documents if not compliant with Database structure (use only for write metadata service)') ->setHelp(''); return $this; @@ -33,9 +33,6 @@ class WorkerExecuteCommand extends Command protected function doExecute(InputInterface $input, OutputInterface $output) { - $MWG = false; - $clearMetadatas = false; - $argQueueName = $input->getOption('queue-name'); $maxProcesses = intval($input->getOption('max-processes')); @@ -64,14 +61,6 @@ class WorkerExecuteCommand extends Command $workerInvoker->setMaxProcessPoolValue($maxProcesses); } - if ($input->getOption('MWG')) { - $MWG = true; - } - - if ($input->getOption('clear-metadatas')) { - $clearMetadatas = true; - } - if ($input->getOption('preserve-payload')) { $workerInvoker->preservePayloads(); } diff --git a/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php b/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php index debc443095..37b7546af5 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php @@ -79,11 +79,11 @@ class AdminConfigurationController extends Controller $reload = ($request->query->get('reload')) == 1 ? true : false ; if ($request->query->get('running') == 1 && $request->query->get('finished') == 1) { - $workerRunningJob = $repoWorker->findAll(); + $workerRunningJob = $repoWorker->findBy([], ['id' => 'DESC'], WorkerRunningJob::MAX_RESULT); } elseif ($request->query->get('running') == 1) { - $workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::RUNNING]); + $workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::RUNNING], ['id' => 'DESC'], WorkerRunningJob::MAX_RESULT); } elseif ($request->query->get('finished') == 1) { - $workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::FINISHED]); + $workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::FINISHED], ['id' => 'DESC'], WorkerRunningJob::MAX_RESULT); } return $this->render('admin/worker-manager/worker_info.html.twig', [ @@ -92,6 +92,22 @@ class AdminConfigurationController extends Controller ]); } + public function queueMonitorAction(PhraseaApplication $app, Request $request) + { + $reload = ($request->query->get('reload')) == 1 ? true : false ; + + /** @var AMQPConnection $serverConnection */ + $serverConnection = $app['alchemy_worker.amqp.connection']; + $serverConnection->getChannel(); + $serverConnection->declareExchange(); + $queuesStatus = $serverConnection->getQueuesStatus(); + + return $this->render('admin/worker-manager/worker_queue_monitor.html.twig', [ + 'queuesStatus' => $queuesStatus, + 'reload' => $reload + ]); + } + public function truncateTableAction(PhraseaApplication $app, Request $request) { /** @var WorkerRunningJobRepository $repoWorker */ diff --git a/lib/Alchemy/Phrasea/WorkerManager/Provider/AlchemyWorkerServiceProvider.php b/lib/Alchemy/Phrasea/WorkerManager/Provider/AlchemyWorkerServiceProvider.php index ecabd28649..b1690777e4 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Provider/AlchemyWorkerServiceProvider.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Provider/AlchemyWorkerServiceProvider.php @@ -11,11 +11,13 @@ use Alchemy\Phrasea\WorkerManager\Worker\CreateRecordWorker; use Alchemy\Phrasea\WorkerManager\Worker\DeleteRecordWorker; use Alchemy\Phrasea\WorkerManager\Worker\ExportMailWorker; use Alchemy\Phrasea\WorkerManager\Worker\Factory\CallableWorkerFactory; +use Alchemy\Phrasea\WorkerManager\Worker\MainQueueWorker; use Alchemy\Phrasea\WorkerManager\Worker\PopulateIndexWorker; use Alchemy\Phrasea\WorkerManager\Worker\ProcessPool; use Alchemy\Phrasea\WorkerManager\Worker\PullAssetsWorker; use Alchemy\Phrasea\WorkerManager\Worker\Resolver\TypeBasedWorkerResolver; use Alchemy\Phrasea\WorkerManager\Worker\SubdefCreationWorker; +use Alchemy\Phrasea\WorkerManager\Worker\SubtitleWorker; use Alchemy\Phrasea\WorkerManager\Worker\WebhookWorker; use Alchemy\Phrasea\WorkerManager\Worker\WorkerInvoker; use Alchemy\Phrasea\WorkerManager\Worker\WriteMetadatasWorker; @@ -128,6 +130,16 @@ class AlchemyWorkerServiceProvider implements PluginProviderInterface return (new DeleteRecordWorker()) ->setApplicationBox($app['phraseanet.appbox']); })); + + $app['alchemy_worker.type_based_worker_resolver']->addFactory(MessagePublisher::SUBTITLE_TYPE, new CallableWorkerFactory(function () use ($app) { + return (new SubtitleWorker($app['repo.worker-job'], $app['conf'], new LazyLocator($app, 'phraseanet.appbox'), $app['alchemy_worker.logger'])) + ->setFileSystemLocator(new LazyLocator($app, 'filesystem')) + ->setTemporaryFileSystemLocator(new LazyLocator($app, 'temporary-filesystem')); + })); + + $app['alchemy_worker.type_based_worker_resolver']->addFactory(MessagePublisher::MAIN_QUEUE_TYPE, new CallableWorkerFactory(function () use ($app) { + return new MainQueueWorker($app['alchemy_worker.message.publisher'], $app['repo.worker-job']); + })); } /** diff --git a/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php b/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php index 7fdc988b93..89faea350b 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php @@ -84,6 +84,10 @@ class ControllerServiceProvider implements ControllerProviderInterface, ServiceP ->method('GET|POST') ->bind('worker_admin_pullAssets'); + $controllers->match('/queue-monitor', 'controller.worker.admin.configuration:queueMonitorAction') + ->method('GET') + ->bind('worker_admin_queue_monitor'); + return $controllers; } diff --git a/lib/Alchemy/Phrasea/WorkerManager/Provider/QueueWorkerServiceProvider.php b/lib/Alchemy/Phrasea/WorkerManager/Provider/QueueWorkerServiceProvider.php index 7de8ef2604..6bdf421fbf 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Provider/QueueWorkerServiceProvider.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Provider/QueueWorkerServiceProvider.php @@ -23,6 +23,7 @@ use Alchemy\Phrasea\WorkerManager\Subscriber\AssetsIngestSubscriber; use Alchemy\Phrasea\WorkerManager\Subscriber\ExportSubscriber; use Alchemy\Phrasea\WorkerManager\Subscriber\RecordSubscriber; use Alchemy\Phrasea\WorkerManager\Subscriber\SearchengineSubscriber; +use Alchemy\Phrasea\WorkerManager\Subscriber\SubtitleSubscriber; use Alchemy\Phrasea\WorkerManager\Subscriber\WebhookSubscriber; use Silex\Application; use Symfony\Component\EventDispatcher\EventDispatcherInterface; @@ -68,6 +69,7 @@ class QueueWorkerServiceProvider implements PluginProviderInterface $dispatcher->addSubscriber(new AssetsIngestSubscriber($app['alchemy_worker.message.publisher'])); $dispatcher->addSubscriber(new SearchengineSubscriber($app['alchemy_worker.message.publisher'])); $dispatcher->addSubscriber(new WebhookSubscriber($app['alchemy_worker.message.publisher'])); + $dispatcher->addSubscriber(new SubtitleSubscriber(new LazyLocator($app, 'repo.worker-job'), $app['alchemy_worker.message.publisher'])); return $dispatcher; }) diff --git a/lib/Alchemy/Phrasea/WorkerManager/Queue/AMQPConnection.php b/lib/Alchemy/Phrasea/WorkerManager/Queue/AMQPConnection.php index 24de790286..4508741ca7 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Queue/AMQPConnection.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Queue/AMQPConnection.php @@ -29,7 +29,9 @@ class AMQPConnection MessagePublisher::CREATE_RECORD_TYPE => MessagePublisher::CREATE_RECORD_QUEUE, MessagePublisher::PULL_QUEUE => MessagePublisher::PULL_QUEUE, MessagePublisher::POPULATE_INDEX_TYPE => MessagePublisher::POPULATE_INDEX_QUEUE, - MessagePublisher::DELETE_RECORD_TYPE => MessagePublisher::DELETE_RECORD_QUEUE + MessagePublisher::DELETE_RECORD_TYPE => MessagePublisher::DELETE_RECORD_QUEUE, + MessagePublisher::MAIN_QUEUE_TYPE => MessagePublisher::MAIN_QUEUE, + MessagePublisher::SUBTITLE_TYPE => MessagePublisher::SUBTITLE_QUEUE ]; // the corresponding worker queues and retry queues, loop queue @@ -44,7 +46,6 @@ class AMQPConnection MessagePublisher::PULL_QUEUE => MessagePublisher::LOOP_PULL_QUEUE ]; - // default message TTL in retry queue in millisecond public static $defaultFailedQueues = [ MessagePublisher::WRITE_METADATAS_TYPE => MessagePublisher::FAILED_METADATAS_QUEUE, MessagePublisher::SUBDEF_CREATION_TYPE => MessagePublisher::FAILED_SUBDEF_QUEUE, @@ -213,6 +214,37 @@ class AMQPConnection } } + /** + * Get queueName, messageCount, consumerCount of queues + * @return array + */ + public function getQueuesStatus() + { + $queuesList = array_merge( + array_values(self::$defaultQueues), + array_values(self::$defaultDelayedQueues), + array_values(self::$defaultRetryQueues), + array_values(self::$defaultFailedQueues) + ); + + $this->getChannel(); + $queuesStatus = []; + + foreach ($queuesList as $queue) { + $this->setQueue($queue); + list($queueName, $messageCount, $consumerCount) = $this->channel->queue_declare($queue, true); + + $status['queueName'] = $queueName; + $status['messageCount'] = $messageCount; + $status['consumerCount'] = $consumerCount; + + $queuesStatus[] = $status; + unset($status); + } + + return $queuesStatus; + } + public function connectionClose() { $this->channel->close(); diff --git a/lib/Alchemy/Phrasea/WorkerManager/Queue/MessagePublisher.php b/lib/Alchemy/Phrasea/WorkerManager/Queue/MessagePublisher.php index c191017bf8..1a236e2a08 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Queue/MessagePublisher.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Queue/MessagePublisher.php @@ -18,6 +18,12 @@ class MessagePublisher const WEBHOOK_TYPE = 'webhook'; const POPULATE_INDEX_TYPE = 'populateIndex'; const PULL_ASSETS_TYPE = 'pullAssets'; + const SUBTITLE_TYPE = 'subtitle'; + const MAIN_QUEUE_TYPE = 'mainQueue'; + + + const MAIN_QUEUE = 'main-queue'; + const SUBTITLE_QUEUE = 'subtitle-queue'; // worker queue to be consumed, when no ack , it is requeued to the retry queue const EXPORT_QUEUE = 'export-queue'; diff --git a/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php b/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php index c0df49717d..cf0a3b940c 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php @@ -54,18 +54,20 @@ class RecordSubscriber implements EventSubscriberInterface if (!$record->isStory()) { $subdefs = $record->getDatabox()->get_subdef_structure()->getSubdefGroup($record->getType()); - foreach ($subdefs as $subdef) { - $payload = [ - 'message_type' => MessagePublisher::SUBDEF_CREATION_TYPE, - 'payload' => [ - 'recordId' => $event->getRecord()->getRecordId(), - 'databoxId' => $event->getRecord()->getDataboxId(), - 'subdefName' => $subdef->get_name(), - 'status' => $event->isNewRecord() ? MessagePublisher::NEW_RECORD_MESSAGE : '' - ] - ]; + if ($subdefs !== null) { + foreach ($subdefs as $subdef) { + $payload = [ + 'message_type' => MessagePublisher::SUBDEF_CREATION_TYPE, + 'payload' => [ + 'recordId' => $event->getRecord()->getRecordId(), + 'databoxId' => $event->getRecord()->getDataboxId(), + 'subdefName' => $subdef->get_name(), + 'status' => $event->isNewRecord() ? MessagePublisher::NEW_RECORD_MESSAGE : '' + ] + ]; - $this->messagePublisher->publishMessage($payload, MessagePublisher::SUBDEF_QUEUE); + $this->messagePublisher->publishMessage($payload, MessagePublisher::SUBDEF_QUEUE); + } } } } diff --git a/lib/Alchemy/Phrasea/WorkerManager/Subscriber/SubtitleSubscriber.php b/lib/Alchemy/Phrasea/WorkerManager/Subscriber/SubtitleSubscriber.php new file mode 100644 index 0000000000..e67958165c --- /dev/null +++ b/lib/Alchemy/Phrasea/WorkerManager/Subscriber/SubtitleSubscriber.php @@ -0,0 +1,90 @@ +repoWorkerJobLocator = $repoWorkerJobLocator; + $this->messagePublisher = $messagePublisher; + } + + public function onRecordAutoSubtitle(RecordAutoSubtitleEvent $event) + { + $this->repoWorkerJob = $this->getRepoWorkerJob(); + + $em = $this->repoWorkerJob->getEntityManager(); + + $data = [ + "databoxId" => $event->getRecord()->getDataboxId(), + "recordId" => $event->getRecord()->getRecordId(), + "permalinkUrl" => $event->getPermalinkUrl(), + "languageSource" => $event->getLanguageSource(), + "metaStructureIdSource" => $event->getMetaStructureIdSource(), + "languageDestination" => $event->getLanguageDestination(), + "metaStructureIdDestination" => $event->getMetaStructureIdDestination() + ]; + + $this->repoWorkerJob->reconnect(); + $em->beginTransaction(); + + try { + $workerJob = new WorkerJob(); + $workerJob + ->setType(MessagePublisher::SUBTITLE_TYPE) + ->setData($data) + ->setStatus(WorkerJob::WAITING) + ; + + $em->persist($workerJob); + $em->flush(); + + $em->commit(); + + $data['workerId'] = $workerJob->getId(); + $data['type'] = MessagePublisher::SUBTITLE_TYPE; + + $payload = [ + 'message_type' => MessagePublisher::MAIN_QUEUE_TYPE, + 'payload' => $data + ]; + + $this->messagePublisher->publishMessage($payload, MessagePublisher::MAIN_QUEUE); + } catch (\Exception $e) { + $em->rollback(); + } + } + + public static function getSubscribedEvents() + { + return [ + PhraseaEvents::RECORD_AUTO_SUBTITLE => 'onRecordAutoSubtitle', + ]; + } + + /** + * @return WorkerJobRepository + */ + private function getRepoWorkerJob() + { + $callable = $this->repoWorkerJobLocator; + + return $callable(); + } +} diff --git a/lib/Alchemy/Phrasea/WorkerManager/Worker/MainQueueWorker.php b/lib/Alchemy/Phrasea/WorkerManager/Worker/MainQueueWorker.php new file mode 100644 index 0000000000..82471f2b88 --- /dev/null +++ b/lib/Alchemy/Phrasea/WorkerManager/Worker/MainQueueWorker.php @@ -0,0 +1,49 @@ +messagePublisher = $messagePublisher; + $this->repoWorkerJob = $repoWorkerJob; + } + + public function process(array $payload) + { + + // if needed do treatement here depending on the type + $queue = null; + $messageType = ''; + + switch ($payload['type']) { + case MessagePublisher::SUBTITLE_TYPE: + $queue = MessagePublisher::SUBTITLE_QUEUE; + $messageType = $payload['type']; + unset($payload['type']); + + break; + + } + + $data = [ + 'message_type' => $messageType, + 'payload' => $payload + ]; + + if ($queue != null) { + $this->messagePublisher->publishMessage($data, $queue); + } + } +} diff --git a/lib/Alchemy/Phrasea/WorkerManager/Worker/ProcessPool.php b/lib/Alchemy/Phrasea/WorkerManager/Worker/ProcessPool.php index 81917d3e56..d6586b089f 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Worker/ProcessPool.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Worker/ProcessPool.php @@ -10,7 +10,7 @@ use Symfony\Component\Process\ProcessBuilder; class ProcessPool implements LoggerAwareInterface { - const MAX_PROCESSES = 4; + const MAX_PROCESSES = 1; /** * @var int @@ -41,7 +41,7 @@ class ProcessPool implements LoggerAwareInterface * Sets a logger instance on the object * * @param LoggerInterface $logger - * @return null + * @return void */ public function setLogger(LoggerInterface $logger) { diff --git a/lib/Alchemy/Phrasea/WorkerManager/Worker/SubtitleWorker.php b/lib/Alchemy/Phrasea/WorkerManager/Worker/SubtitleWorker.php new file mode 100644 index 0000000000..638af48b3a --- /dev/null +++ b/lib/Alchemy/Phrasea/WorkerManager/Worker/SubtitleWorker.php @@ -0,0 +1,310 @@ +repoWorkerJob = $repoWorkerJob; + $this->conf = $conf; + $this->appboxLocator = $appboxLocator; + $this->logger = $logger; + } + + public function process(array $payload) + { + $gingaBaseurl = $this->conf->get(['externalservice', 'ginger', 'AutoSubtitling', 'service_base_url']); + $gingaToken = $this->conf->get(['externalservice', 'ginger', 'AutoSubtitling', 'token']); + $gingaTranscriptFormat = $this->conf->get(['externalservice', 'ginger', 'AutoSubtitling', 'transcript_format']); + + if (!$gingaBaseurl || !$gingaToken || !$gingaTranscriptFormat) { + $this->logger->error("External service Ginga not set correctly in configuration.yml"); + + return 0; + } + + /** @var WorkerJob $workerJob */ + $workerJob = $this->repoWorkerJob->find($payload['workerId']); + if ($workerJob == null) { + $this->logger->error("WorkerId not found"); + + return 0; + } + + $workerJob->setStatus(WorkerJob::RUNNING) + ->setStarted(new \DateTime('now')); + + $em = $this->repoWorkerJob->getEntityManager(); + $this->repoWorkerJob->reconnect(); + $em->persist($workerJob); + $em->flush(); + + switch ($gingaTranscriptFormat) { + case 'text/srt,': + $extension = 'srt'; + break; + case 'text/plain': + $extension = 'txt'; + break; + case 'application/json': + $extension = 'json'; + break; + case 'text/vtt': + default: + $extension = 'vtt'; + break; + } + + $languageSource = $this->getLanguageFormat($payload['languageSource']); + $languageDestination = $this->getLanguageFormat($payload['languageDestination']); + + $record = $this->getApplicationBox()->get_databox($payload['databoxId'])->get_record($payload['recordId']); + $languageSourceFieldName = $record->getDatabox()->get_meta_structure()->get_element($payload['metaStructureIdSource'])->get_name(); + + $subtitleSourceTemporaryFile = $this->getTemporaryFilesystem()->createTemporaryFile("subtitle", null, $extension); + $gingerClient = new Client(); + + // if the languageSourceFieldName do not yet exist, first generate subtitle for it + if ($payload['permalinkUrl'] != '' && !$record->get_caption()->has_field($languageSourceFieldName)) { + try { + $response = $gingerClient->post($gingaBaseurl.'/media/', [ + 'headers' => [ + 'Authorization' => 'token '.$gingaToken + ], + 'json' => [ + 'url' => $payload['permalinkUrl'], + 'language' => $languageSource + ] + ]); + } catch(\Exception $e) { + $this->logger->error($e->getMessage()); + $this->jobFinished($workerJob); + + return 0; + } + + if ($response->getStatusCode() !== 201) { + $this->logger->error("response status /media/ : ". $response->getStatusCode()); + $this->jobFinished($workerJob); + + return 0; + } + + $responseMediaBody = $response->getBody()->getContents(); + $responseMediaBody = json_decode($responseMediaBody,true); + + $checkStatus = true; + do { + // first wait 5 second before check subtitling status + sleep(5); + $this->logger->info("bigin to check status"); + try { + $response = $gingerClient->get($gingaBaseurl.'/task/'.$responseMediaBody['task_id'].'/', [ + 'headers' => [ + 'Authorization' => 'token '.$gingaToken + ] + ]); + } catch (\Exception $e) { + $checkStatus = false; + + break; + } + + if ($response->getStatusCode() !== 200) { + $checkStatus = false; + + break; + } + + $responseTaskBody = $response->getBody()->getContents(); + $responseTaskBody = json_decode($responseTaskBody,true); + + } while($responseTaskBody['status'] != 'SUCCESS'); + + if (!$checkStatus) { + $this->logger->error("can't check status"); + $this->jobFinished($workerJob); + + return 0; + } + + try { + $response = $gingerClient->get($gingaBaseurl.'/media/'.$responseMediaBody['media']['uuid'].'/', [ + 'headers' => [ + 'Authorization' => 'token '.$gingaToken, + 'ACCEPT' => $gingaTranscriptFormat + ], + 'query' => [ + 'language' => $languageSource + ] + ]); + } catch (\Exception $e) { + $this->logger->error($e->getMessage()); + $this->jobFinished($workerJob); + + return 0; + } + + if ($response->getStatusCode() !== 200) { + $this->logger->error("response status /media/uuid : ". $response->getStatusCode()); + $this->jobFinished($workerJob); + + return 0; + } + + $transcriptContent = $response->getBody()->getContents(); + + $transcriptContent = preg_replace('/WEBVTT/', 'WEBVTT - with cue identifier', $transcriptContent, 1); + + // save subtitle on temporary file to use to translate if needed + file_put_contents($subtitleSourceTemporaryFile, $transcriptContent); + + $metadatas[0] = [ + 'meta_struct_id' => (int)$payload['metaStructureIdSource'], + 'meta_id' => '', + 'value' => $transcriptContent + ]; + + try { + $record->set_metadatas($metadatas); + } catch (\Exception $e) { + $this->logger->error($e->getMessage()); + $this->jobFinished($workerJob); + + return 0; + } + + $this->logger->info("Generate subtitle on language source SUCCESS"); + } elseif ($record->get_caption()->has_field($languageSourceFieldName)) { + // get the source subtitle and save it to a temporary file + $fieldValues = $record->get_caption()->get_field($languageSourceFieldName)->get_values(); + $fieldValue = array_pop($fieldValues); + + file_put_contents($subtitleSourceTemporaryFile, $fieldValue->getValue()); + } + + if ($payload['metaStructureIdSource'] !== $payload['metaStructureIdDestination']) { + try { + $response = $gingerClient->post($gingaBaseurl.'/translate/', [ + 'headers' => [ + 'Authorization' => 'token '.$gingaToken, + 'ACCEPT' => $gingaTranscriptFormat + ], + 'multipart' => [ + [ + 'name' => 'transcript', + 'contents' => fopen($subtitleSourceTemporaryFile, 'r') + ], + [ + 'name' => 'transcript_format', + 'contents' => $gingaTranscriptFormat, + + ], + [ + 'name' => 'language_in', + 'contents' => $languageSource, + + ], + [ + 'name' => 'language_out', + 'contents' => $languageDestination, + + ] + ] + ]); + } catch(\Exception $e) { + $this->logger->error($e->getMessage()); + $this->jobFinished($workerJob); + + return 0; + } + + if ($response->getStatusCode() !== 200) { + $this->logger->error("response status /translate/ : ". $response->getStatusCode()); + $this->jobFinished($workerJob); + + return 0; + } + + $transcriptContent = $response->getBody()->getContents(); + $transcriptContent = preg_replace('/WEBVTT/', 'WEBVTT - with cue identifier', $transcriptContent, 1); + + $metadatas[0] = [ + 'meta_struct_id' => (int)$payload['metaStructureIdDestination'], + 'meta_id' => '', + 'value' => $transcriptContent + ]; + + try { + $record->set_metadatas($metadatas); + } catch (\Exception $e) { + $this->logger->error($e->getMessage()); + $this->jobFinished($workerJob); + + return 0; + } + + $this->logger->info("Translate subtitle on language destination SUCCESS"); + } + + $this->jobFinished($workerJob); + + return 0; + } + + /** + * @return \appbox + */ + private function getApplicationBox() + { + $callable = $this->appboxLocator; + + return $callable(); + } + + private function jobFinished(WorkerJob $workerJob) + { + $workerJob->setStatus(WorkerJob::FINISHED) + ->setFinished(new \DateTime('now')); + + $em = $this->repoWorkerJob->getEntityManager(); + $this->repoWorkerJob->reconnect(); + + $em->persist($workerJob); + $em->flush(); + } + + private function getLanguageFormat($language) + { + switch ($language) { + case 'En': + return 'en-GB'; + case 'De': + return 'de-DE'; + case 'Fr': + default: + return 'fr-FR'; + } + } +} diff --git a/lib/classes/record/adapter.php b/lib/classes/record/adapter.php index 9d94822566..a1d79111a3 100644 --- a/lib/classes/record/adapter.php +++ b/lib/classes/record/adapter.php @@ -522,10 +522,11 @@ class record_adapter implements RecordInterface, cache_cacheableInterface /** * * @param collection $collection - * @param appbox $appbox + * @param appbox $appbox WTF this parm is useless * @return record_adapter + * */ - public function move_to_collection(collection $collection, appbox $appbox) + public function move_to_collection(collection $collection, appbox $appbox = null) { if ($this->getCollection()->get_base_id() === $collection->get_base_id()) { return $this; @@ -1054,10 +1055,13 @@ class record_adapter implements RecordInterface, cache_cacheableInterface } } - if (trim($params['meta_id']) !== '') { - $tmp_val = trim($params['value']); + $tmp_val = trim($params['value']); - $caption_field_value = $caption_field->get_value($params['meta_id']); + if (trim($params['meta_id']) !== '') { + + if(is_null($caption_field_value = $caption_field->get_value($params['meta_id']))) { + return $this; + } if ($tmp_val === '') { $caption_field_value->delete(); @@ -1068,8 +1072,11 @@ class record_adapter implements RecordInterface, cache_cacheableInterface $caption_field_value->setVocab($vocab, $vocab_id); } } - } else { - $caption_field_value = caption_Field_Value::create($this->app, $databox_field, $this, $params['value'], $vocab, $vocab_id); + } + else { + if($tmp_val !== '') { + caption_Field_Value::create($this->app, $databox_field, $this, $params['value'], $vocab, $vocab_id); + } } return $this; diff --git a/lib/conf.d/configuration.yml b/lib/conf.d/configuration.yml index 4013f8a44e..fd59be26f8 100644 --- a/lib/conf.d/configuration.yml +++ b/lib/conf.d/configuration.yml @@ -319,5 +319,15 @@ workers: user: '' password: '' vhost: / + +externalservice: + ginger: + AutoSubtitling: + service_base_url: https://base.uri + token: 39c6011d + transcript_format: text/vtt + subdef_source: preview + + Console_logger_enabled_environments: [test] diff --git a/lib/conf.d/data_templates/DublinCore.xml b/lib/conf.d/data_templates/DublinCore.xml index ffd40733f8..83e7e139fc 100644 --- a/lib/conf.d/data_templates/DublinCore.xml +++ b/lib/conf.d/data_templates/DublinCore.xml @@ -119,7 +119,7 @@ libvpx - {{datapathnoweb}}{{basename}}/subview + {{datapathnoweb}}{{basename}}/subdefs no audio 128 @@ -131,7 +131,7 @@ - {{datapathnoweb}}{{basename}}/subview + {{datapathnoweb}}{{basename}}/subdefs no audio 180 diff --git a/lib/conf.d/data_templates/gs1.xml b/lib/conf.d/data_templates/gs1.xml new file mode 100644 index 0000000000..3ace5361c3 --- /dev/null +++ b/lib/conf.d/data_templates/gs1.xml @@ -0,0 +1,234 @@ + + + {{datapathnoweb}}{{basename}}/documents + + + + {{datapathnoweb}}{{basename}}/subdefs + 1024 + resample + 72 + no + 75 + yes + screen + image + + + + + {{datapathnoweb}}{{basename}}/subdefs + 240 + resample + 72 + yes + 75 + no + screen + image + + + + + 480 + 72 + yes + 75 + {{datapathnoweb}}{{basename}}/subdefs + image + no + handheld + + + + + 150 + 72 + yes + 75 + {{datapathnoweb}}{{basename}}/subdefs + image + no + handheld + + + + + + + {{datapathnoweb}}{{basename}}/subdefs + 240 + screen + image + no + + + + + {{datapathnoweb}}{{basename}}/subdefs + 240 + gif + 150 + screen + no + + + + + {{datapathnoweb}}{{basename}}/subdefs + 748 + video + yes + libfdk_aac + libx264 + screen + 1000 + 128 + 48000 + 25 + 25 + + + + + {{datapathnoweb}}{{basename}}/subdefs + 748 + video + screen + 1000 + 128 + 48000 + libvorbis + 25 + 25 + libvpx + + + + + + + {{datapathnoweb}}{{basename}}/subdefs + image + 240 + screen + no + + + + + {{datapathnoweb}}{{basename}}/subdefs + audio + yes + 128 + 48000 + screen + + + + + {{datapathnoweb}}{{basename}}/subdefs + audio + handheld + + + + + + + {{datapathnoweb}}{{basename}}/subdefs + image + resample + 72 + 240 + no + screen + + + + + {{datapathnoweb}}{{basename}}/subdefs + flexpaper + no + screen + + + + + + + {{datapathnoweb}}{{basename}}/subdefs + image + 240 + no + resample + 72 + screen + + + + + {{datapathnoweb}}{{basename}}/subdefs + image + 800 + no + resample + 72 + screen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package.json b/package.json index 062865c82a..dae70c0368 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "normalize-css": "^2.1.0", "npm": "^6.0.0", "npm-modernizr": "^2.8.3", - "phraseanet-production-client": "0.34.214-d", + "phraseanet-production-client": "0.34.256-d", "requirejs": "^2.3.5", "tinymce": "^4.0.28", "underscore": "^1.8.3", diff --git a/resources/locales/messages.de.xlf b/resources/locales/messages.de.xlf index 486c73f95e..fd041523ed 100644 --- a/resources/locales/messages.de.xlf +++ b/resources/locales/messages.de.xlf @@ -1,14 +1,14 @@ - + - +
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.
- - + + Form/Login/PhraseaAuthenticationForm.php Form/Configuration/EmailFormType.php @@ -112,8 +112,8 @@ %basket_length% documents %basket_length% Dokument(e) mobile/lightbox/validate.html.twig - web/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig + web/lightbox/index.html.twig %countable% documents can not be modified. @@ -138,12 +138,12 @@ %docs_not_orderable% documents ne peuvent pas etre commandes %docs_not_orderable% Dokumente können nicht bestellt werden - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %docs_orderable% documents commandes %docs_orderable% bestellte Dokumente - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %entry_length% documents @@ -378,17 +378,17 @@ (validation) a envoyer zu senden - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) envoyee gesendet - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) session terminee Sitzung beendet - web/lightbox/index.html.twig + web/lightbox/index.html.twig *Phraseanet Navigator* is a smartphone application that allow user to connect on this instance @@ -618,7 +618,7 @@ Accuse de reception indisponible, vous n'avez pas declare d'adresse email Es ist nicht möglich, eine Empfangsbestätigung zu erhalten. Grund: eine fehlende E-Mail Adresse - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Action Forbidden : You are not the publisher @@ -777,27 +777,27 @@ Affichage au demarrage Beim Start anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive das beschriftliche Blatt anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre den Titel anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher le type Typ anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status die Status anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone @@ -822,7 +822,7 @@ Aide Hilfe - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -942,13 +942,13 @@ aufsteigender alphabetischer Reihenfolge web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc absteigender alphabetischer Reihenfolge web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1038,7 +1038,6 @@ Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php - Controller/Api/V3Controller.php Controller/Api/V1Controller.php Controller/Api/V1Controller.php web/admin/statusbit.html.twig @@ -1544,10 +1543,10 @@ By checking this box, you accept %beginning_link% Terms of Use %end_link% Wenn Sie dieses Kästchen anwählen, akzeptieren Sie die %beginning_link% Nutzeungsbedingungen %end_link% - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig By default it is available for admins @@ -1706,7 +1705,7 @@ Certains champs sont obligatoires, veuillez les remplir Bitte füllen Sie die erforderlichen Felder aus - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Ces informations sont directement fournies par la norme de metadonnees de ce champ : %norm_name% @@ -1742,7 +1741,7 @@ Chercher Suchen - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig Choisir @@ -1771,7 +1770,7 @@ Civility Anrede - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Clear @@ -1814,7 +1813,7 @@ Codec Audio Audio Codec web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Codec Video @@ -1842,7 +1841,7 @@ Collection order Kollektionen Ordnung - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -2024,7 +2023,7 @@ Couleur de selection Farbauswahl - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2354,7 +2353,7 @@ Defined by admin Von Administrator festgelegt - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2609,9 +2608,9 @@ Documents indisponibles Dokument(e) nicht verfügbar web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Don't worry, You can modify your configuration later @@ -2987,7 +2986,7 @@ Entrez plusieurs adresses email en les separant par des points-virgules Trennen Sie die E-Mail Adressen mit Strichpunkten wenn sie an mehrere Empfänger gleichzeitig Dokumente senden wollen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Entry removed from list @@ -3226,7 +3225,7 @@ Fichier ASCII tabule tabellierte ASCII Datei - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig Fichiers envoyes @@ -3714,7 +3713,7 @@ Images par secondes Bilder pro Sekunde web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Imagette indisponible @@ -3735,8 +3734,8 @@ Include Business-fields in caption Geschäftsfelder in Beschriftung enthalten web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Incorrect please try again @@ -3917,9 +3916,9 @@ La sous resolution n'est pas disponible pour les documents suivants Unterauflösung für die folgende Dokumente ist nicht verfügbar - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig La taille maximale d'une video est de %duration% minutes. @@ -4220,7 +4219,7 @@ Ma derniere question meine letzte Suchabfrage - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4606,8 +4605,8 @@ No preview available Keine Voransicht verfügbar - actions/Tools/videoEditor.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig No receivers specified @@ -4918,7 +4917,7 @@ web/account/account.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Par %author% @@ -5179,7 +5178,7 @@ Presentation de vignettes de panier Vorstellung der Voransichten des Sammelkorbes - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5233,7 +5232,7 @@ Publications Veröffentlichungen web/common/menubar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/admin/tree.html.twig admin/publications/wrapper.html.twig @@ -5537,7 +5536,7 @@ Recevoir un accuse de reception a %my_email% Empfangsbestätigung zu %my_email% bekommen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Rechercher dans un champ date @@ -6217,7 +6216,7 @@ Size Grösse web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Download/prepare.html.twig @@ -6362,7 +6361,6 @@ Story Not Found Bericht wurde nicht gefunden - Controller/Api/V3Controller.php Controller/Api/V1Controller.php @@ -6430,7 +6428,7 @@ Success Erfolg api/auth/native_app_access_token.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Successful install @@ -6463,7 +6461,7 @@ Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig admin/collection/suggested_value.html.twig admin/collection/collection.html.twig web/admin/databases.html.twig @@ -6591,7 +6589,7 @@ Terms of Use Nutzungsbedingungen Form/Login/PhraseaRegisterForm.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Terms of service @@ -6997,12 +6995,12 @@ Un document commande Ein bestelltes Dokument - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Un document ne peut etre commande Ein Dokument kann nicht bestellt werden - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Unable to add file to Phraseanet @@ -7104,7 +7102,7 @@ Une question personnelle eine persönliche Frage - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7322,7 +7320,7 @@ VALIDATION Bestätigung - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig @@ -7357,7 +7355,7 @@ mobile/lightbox/index.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Validations received @@ -7429,13 +7427,13 @@ Voici vos paniers Ihre Sammelkörbe mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Voici vos validations en cours Hier sind Ihre aktuellen Bewertungen mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Votre adresse email @@ -7500,7 +7498,7 @@ Vous devez selectionner un type de sous definitions Sie müssen einen Typ von Unterauflösungen auswählen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Vous devez specifier une adresse email et un mot de passe valides @@ -7594,7 +7592,7 @@ Warning ! Warnung ! - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Warning, this database is not empty @@ -7673,7 +7671,7 @@ Would you like to receive an e-mail when your download is ready ? Möchten Sie eine Email erhalten wenn Ihr Download abgeschlossen ist ? - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Would you like to reset rights before applying the template? @@ -7770,7 +7768,7 @@ You can alternatively receive an email when the download is ready. Sie können zur Bestätigung eine Email erhalten wenn Ihr Download abgeschlossen ist. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can choose only one record @@ -7785,7 +7783,7 @@ You can not directly download more than %max_download% Mo ; time to package all documents is too long You can not download more than %max_download% Mo ; time to package all documents is too long - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can not edit this story @@ -7881,7 +7879,7 @@ You must agree to the Terms of Use to continue. Sie müssen die Nutzungsbedingungen akzeptieren, um fortzufahren - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You must give a destination collection @@ -8017,7 +8015,7 @@ action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection @@ -8038,7 +8036,7 @@ action : exporter Exportieren web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig prod/preview/tools.html.twig @@ -8048,7 +8046,7 @@ prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : outils @@ -8074,7 +8072,7 @@ web/prod/toolbar.html.twig prod/WorkZone/Basket.html.twig prod/WorkZone/Story.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push @@ -8511,7 +8509,7 @@ Adresse Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8526,7 +8524,7 @@ PLZ Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8550,7 +8548,7 @@ E-Mail Event/Subscriber/RegistrationSubscriber.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8562,7 +8560,7 @@ Fax Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8599,7 +8597,7 @@ Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8621,7 +8619,7 @@ Beruf Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8632,7 +8630,7 @@ Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8649,7 +8647,7 @@ Unternehmen Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8665,7 +8663,7 @@ admin::compte-utilisateur telephone Telefon Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8681,7 +8679,7 @@ Ort Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8777,7 +8775,7 @@ admin::compte-utilisateur:sexe: madame Frau Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8785,7 +8783,7 @@ admin::compte-utilisateur:sexe: mademoiselle Fräulein Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8793,7 +8791,7 @@ admin::compte-utilisateur:sexe: monsieur Herr Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -9068,14 +9066,14 @@ Gastbenutzer filtern web/admin/users.html.twig - + admin::users:edit: Manage inline selection - Eine Option auswählen + Eine Option auswählen web/admin/editusers.html.twig - + admin::users:edit: check all right - Alle Rechte auf die Kollektion geben + Alle Rechte auf die Kollektion geben web/admin/editusers.html.twig @@ -9124,7 +9122,7 @@ admin::workermanager: Rabbit config error Konfigurationsfehler des Nachrichten Managers - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig admin::workermanager:tab:configuration: title @@ -9181,6 +9179,31 @@ Uploader admin/worker-manager/index.html.twig + + admin::workermanager:tab:queueMonitor: Consumer count + Worker Anzahl + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Message count + Nachrichten Anzahl + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Refresh list + Aktualisieren + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: description + Nachrichtenwarteschlange Zustand + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: title + Warteschlange + admin/worker-manager/index.html.twig + admin::workermanager:tab:searchengine: Databox to populate Databox auswählen @@ -9346,9 +9369,9 @@ Begonnen admin/worker-manager/worker_info.html.twig - - admin::workermanager:tab:workerinfo: databox_id - Databox ID + + admin::workermanager:tab:workerinfo: databox_name + Databox admin/worker-manager/worker_info.html.twig @@ -9394,12 +9417,12 @@ admin:worker Retrieve configuration error Worker Abruf Konfigurationsfehler - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig alert Vorsicht - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -9452,12 +9475,12 @@ bad character at line %line% Falsches Zeichen in Zeile %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php bad encoding at line %line% Falsche Codierung in Zeile %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php base:: re-indexer @@ -9503,22 +9526,23 @@ abbrechen Controller/Prod/LanguageController.php Controller/Prod/LanguageController.php - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/link-field-step2.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step2.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/reset-email.html.twig Bridge/Dailymotion/video_modify.html.twig Bridge/Dailymotion/video_modify.html.twig @@ -9541,8 +9565,8 @@ boutton::chercher suchen - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/prod/index.html.twig web/admin/users.html.twig @@ -9555,7 +9579,7 @@ boutton::commander bestellen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::creer @@ -9583,13 +9607,13 @@ boutton::envoyer senden - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::essayer probieren - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::exporter @@ -9600,10 +9624,10 @@ boutton::fermer schliessen Controller/Prod/LanguageController.php - web/thesaurus/export-topics.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/properties.html.twig + web/thesaurus/export-topics.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/properties.html.twig web/thesaurus/link-field-step3.html.twig web/common/dialog_export.html.twig web/lightbox/sc_note.html.twig @@ -9751,7 +9775,7 @@ boutton::telecharger Download - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/lightbox/feed_options_box.html.twig web/lightbox/sc_options_box.html.twig @@ -9759,7 +9783,7 @@ boutton::telecharger tous les documents Alle Dokumente herunterladen web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -9774,16 +9798,17 @@ Bestätigen Controller/Prod/LanguageController.php mobile/lightbox/note_form.html.twig - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig web/account/access.html.twig web/account/account.html.twig web/account/reset-email.html.twig @@ -9808,7 +9833,7 @@ prod/Baskets/Reorder.html.twig prod/Baskets/Update.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/report/all_content.html.twig web/admin/setup.html.twig web/admin/dashboard.html.twig @@ -9920,7 +9945,7 @@ choisir wählen - web/prod/index.html.twig + web/prod/index.html.twig admin/collection/create.html.twig admin/databox/databox.html.twig @@ -9938,12 +9963,12 @@ commande::deadline Termin - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig commande::utilisation prevue Verwendungszweck - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig prod/orders/order_item.html.twig @@ -10126,7 +10151,7 @@ export:: FTP FTP web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: commande @@ -10137,7 +10162,7 @@ export:: envoi par mail E-Mail web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: erreur : aucun document selectionne @@ -10153,7 +10178,7 @@ export::export-email: email-invalid Das Format der Email Adresse scheint falsch zu sein - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::ftp: reglages manuels @@ -10163,7 +10188,7 @@ export::mail: contenu du mail Textinhalt - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::mail: destinataire @@ -10173,8 +10198,8 @@ export::mail: fichiers joint E-Mail Anhänge - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::titre: nom original du document @@ -10186,6 +10211,11 @@ Titel web/common/dialog_export.html.twig + + export:email:: acknowledgement info + export:email:: acknowledgement info + web/common/dialog_export.html.twig + failed to send mail Email Senden ist fehlgeschlagen @@ -10359,12 +10389,12 @@ index::advance_search: disable-facet Facetten mit nur einem Ergebnis ausblenden (experimentell) - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet Einstellungen für Facetten - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order @@ -10384,7 +10414,7 @@ index::advance_search: hidden-facet-values-order Versteckte Facetten - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits @@ -10434,12 +10464,12 @@ lightbox::See_less_feedback Weniger Feedback sehen - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::See_more_feedback Mehr Feedback sehen - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::list @@ -10450,60 +10480,61 @@ lightbox::recaptitulatif Übersicht mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig + web/lightbox/feed.html.twig lightbox::see_less_basket Weniger Sammelkörbe sehen - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::see_more_basket Weitere Sammelkörbe sehen - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox:feedback:sendreport:warnwindows:cancel Sendung abbrechen und Feedback fortsetzen mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:message Zusammenfassung der Feedback Auswahlmöglichkeiten mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_approved genehmigt mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_rejected abgelehnt mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_unexpressed unausgesprochen mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:title Feedback Übersicht mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:validate Bericht Sendung bestätigen mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig login:: Changer mon adresse email @@ -10660,7 +10691,7 @@ no image selected Kein Bild wurde ausgewählt - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -10672,7 +10703,7 @@ notice Beschreibung - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -10957,7 +10988,7 @@ over-indent at line %line% Schlechte Einrückung Zeile %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre @@ -11150,7 +11181,7 @@ phraseanet:: language Sprache - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig phraseanet:: password @@ -11173,7 +11204,7 @@ phraseanet:: prereglages Voreinstellungen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig phraseanet:: presse-papier @@ -11210,7 +11241,7 @@ web/thesaurus/load-thesaurus.html.twig web/thesaurus/load-thesaurus.html.twig web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig web/prod/tab_headers.html.twig prod/actions/edit_default.html.twig @@ -11218,12 +11249,12 @@ phraseanet:: tri Sortierung - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par date nach Datum sortieren - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig web/prod/index.html.twig web/prod/index.html.twig web/prod/index.html.twig @@ -11300,7 +11331,7 @@ phraseanet::chargement Bitte warten... Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig prod/actions/edit_default.html.twig admin/collection/suggested_value.html.twig @@ -11320,7 +11351,7 @@ phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier Sie sind nun abgemeldet. Bitte loggen Sie sich wieder ein Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/admin/index.html.twig @@ -11383,7 +11414,7 @@ phraseanet::technique:: et und - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php phraseanet::temps:: a l'instant @@ -11469,17 +11500,17 @@ preview:: Description Beschreibung - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Historie - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Beliebtheit - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11681,7 +11712,7 @@ processing verarbeitend - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -11698,7 +11729,7 @@ prod::action:property title Eigenschaften - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:datefield_restriction_explanation @@ -11781,9 +11812,9 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben Änderungen bestätigen oder abbrechen prod/actions/edit_default.html.twig - + prod::editing::annulation: abandonner les modification ? - Abbrechen und auf Änderungen verzichten? + Abbrechen der Bearbeitung wird alle Bearbeitungen verlieren - Abbrechen : Zur Bearbeitung zurückgehen - OK : schliessen und Bearbeitungen verlieren Controller/Prod/LanguageController.php @@ -11851,6 +11882,12 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben Suchen prod/actions/edit_default.html.twig + + prod::export: send mail notification + E-Mail-Anfrage gesendet + web/lightbox/validate.html.twig + web/prod/index.html.twig + prod::facet:base_label Datenbanken @@ -11874,22 +11911,22 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben prod::notification: notification title Benachrichtigungen - web/prod/index.html.twig + web/prod/index.html.twig prod::push: List name can not be empty Name der Liste wird erfordert - web/prod/index.html.twig + web/prod/index.html.twig prod::push: New list title Neue Liste - web/prod/index.html.twig + web/prod/index.html.twig prod::push: add Hinzufügen - web/prod/index.html.twig + web/prod/index.html.twig prod::push:push_set_title @@ -12045,7 +12082,7 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben prod::videoTools:chapterTitle Kapiteltitel - web/prod/index.html.twig + web/prod/index.html.twig prod::workzone:Actions @@ -12118,6 +12155,96 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben Auswahl entfernen prod/actions/Push.html.twig + + prod:videoeditor:subtitleRequestTab:: submit + Anfrage einreichen + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:: title + Automatische Untertitel + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Kind + Typ + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Language destination + Zielsprache + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Provider + Provider + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Source Audio language + Audioquelle Sprache + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleTab:: title + Automatische Untertitelung Anfrage + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Caption placeholder + Geben Sie einen Untertitel ein + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: End time + Ende + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: No caption message + Keine Untertitel für diese Sprache + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Show for + Dauer + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Start time + Start + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: add caption + Untertitel hinzufügen + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: copy to clipboard + In die Zwischenablage kopieren + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: save + Speichern + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: work on + Untertitel Sprache auswählen + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:message:: error + Fehler beim speichern des Untertitels + Controller/Prod/LanguageController.php + + + prod:videoeditor:subtitletab:message:: success + Erfolg + Controller/Prod/LanguageController.php + prod:workzone:basket:creation-date Erstellungsdatum @@ -12175,27 +12302,27 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : subtitle alert - 1024]]> + 1024]]> actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : subtitle warning - Höchtens 1024 Zeichen + Höchtens 1024 Zeichen actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : title alert - 128]]> + 128]]> actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : title warning - Höchstens 128 Zeichen + Höchstens 128 Zeichen actions/publish/publish.html.twig actions/publish/publish_edit.html.twig @@ -12364,7 +12491,7 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben reponses::document sans titre ohne Titel - classes/record/adapter.php + classes/record/adapter.php report:: (connexions) @@ -12891,7 +13018,7 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben screenshot video Video Screenshot - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig select at least one user @@ -13264,35 +13391,35 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben Thesaurus wurde aktualisiert web/thesaurus/load-thesaurus.html.twig - - thesaurus:: %hits% reponses retournees - %hits% Ergebnisse geliefert - web/thesaurus/properties.html.twig + + thesaurus: Populate title + thesaurus: Populate title + web/thesaurus/thesaurus.html.twig thesaurus:: A cet emplacement du thesaurus , un candidat du champ %cfield% ne peut etre accepte Hier im Thesaurus, ein möglicher Begriff des Feldes %cfield% kann nicht angenommen werden - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter la branche comme Verzweigung akzeptieren als : - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter le terme comme Begriff akzeptieren als : - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Ce champ a ete modifie ; ancienne branche : %old_branch% }} Dieses Feld wurde verändert. Alter Zweig : %old_branch% - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: Confirmer la suppression du terme %s Das Löschen des Begriffes "%s" bestätigen - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: Editer le thesaurus @@ -13303,6 +13430,7 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: Importer Importieren web/thesaurus/import-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus @@ -13314,37 +13442,42 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: Lier la branche de thesaurus au champ Die Verzweigung mit dem Feld %s verbinden web/thesaurus/link-field-step1.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus au champ %branch% Den Thesaurus-Sprung mit dem Feld %branch% verbinden - web/thesaurus/link-field-step1.html.twig + web/thesaurus/link-field-step1.html.twig thesaurus:: Nouveau synonyme Neuer Synonym web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme Neuer Begriff - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme specifique Neuer bestimmte Begriff web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Proprietes Eigenschaften - web/thesaurus/properties.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Vous n'avez acces a aucune base @@ -13355,59 +13488,65 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: accepter... Annehmen web/thesaurus/accept.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: afficher les termes refuses Abgelehnte Begriffe anzeigen - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: ce champ doit etre lie au thesaurus. La reindexation de la base est necessaire Dieses Feld muss zum Thesaurus verknüpft werden. Wieder Indexierung der Datenbank erforderlich - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: ce champ n'est plus lie au thesaurus, les termes indexes et candidats seront supprimes Dieses Feld wird nicht mehr zum Thesaurus verknüpft. Die mögliche und indexierte Begriffe werden gelöscht - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: comme synonyme de %fullpath_tgt_raw% als Synonym von %fullpath_tgt_raw% - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: comme terme specifique als bestimmter Begriff - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: commence par beginnt mit - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus:: confirm populate + thesaurus:: confirm populate + web/thesaurus/thesaurus.html.twig thesaurus:: contexte Kontext - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: contient beinhaltet - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: corbeille Stock - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: deplacer le terme dans la corbeille ? Begriffe zum Stock verschieben - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: enregistrement de la liste modifiee des mots candidats. @@ -13417,110 +13556,102 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: erreur lors de l'enregsitrement du fichier Fehler beim Dateidatensatz - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: est candidat en provenance des champs mais ne peut etre accepte a cet emplacement du thesaurus ist ein möglicher Begriff aus Felder Ursprung, aber kann an dieser Stelle im Thesaurus nicht akzeptiert werden - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance des champs acceptables : ist schon ein möglicher Begriff und stammt aus zulässigen Feldern : - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance du champ acceptable : ist schon ein möglicher Begriff und stammt aus dem zulässigen Feld : - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est egal a gleicht - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: example Beispiel - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure la langue Die Sprache beinhalten - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure les hits Anzahl der Ergebnisse beinhalten - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : numeroter les lignes Zeilen nummern - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export au format texte Text web/thesaurus/export-text-dialog.html.twig - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig web/thesaurus/export-text.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: export en topics Themen web/thesaurus/export-topics.html.twig web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: exporter Exportieren - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter a l'ecran pour la langue %piv% Export auf den Bildschirm für die Sprache %piv% - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter avec les synonymes sur la meme ligne Synonyme(n) auf die selbe Zeile - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter avec une ligne par synonyme Eine Zeile nach Synonym - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter vers topics pour toutes les langues für alle Sprachen exportieren - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: fichier genere : %filename% erzeugte Datei: %filename% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: fichier genere le %date% erzeugte Datei am %date% - Controller/Thesaurus/ThesaurusController.php - - - thesaurus:: hits - Ergebnisse - web/thesaurus/properties.html.twig - - - thesaurus:: ids - Benutzernamen - web/thesaurus/properties.html.twig + Controller/Thesaurus/ThesaurusController.php thesaurus:: langue par default Standardmässige Sprache - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: langue pivot @@ -13530,103 +13661,108 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: le lien au thesaurus doit etre modifie, la reindexation de la base est necessaire Das Link mit dem Thesaurus soll verändert werden, die Wieder Indexierung ist erforderlich - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: le terme Begriff - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: le terme %term% avec contexte %context% Der Begriff %term% mit Kontext %context% - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: le terme %term% sans contexte Der Begriff %term% ohne Kontext - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: n'est pas present dans les candidats ist fehlend bei den möglichen Begriffen - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: nouvelle branche Neue Verzweigung - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: onglet stock Mögliche Begriffe - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: onglet thesaurus Thesaurus - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: options d'export : Export - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: pas de reindexation Keine Wieder Indexierung - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig + + + thesaurus:: populate button + thesaurus:: populate button + web/thesaurus/thesaurus.html.twig thesaurus:: presentation Anzeigeoptionen - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branche ouvertes Aktuelle Ansicht wiedergeben (geöffnete Verzweigungen) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branches refermables Aktuelle Ansicht wiedergeben (verschliessene Verzweigungen) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: question complete (avec operateurs) Vollständige Anfrage (mit Operators) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche Suche - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche fulltext Volltext Suche - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche thesaurus *:"query" Thesaurus *:"query" - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: refresh Aktualiseren - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig web/thesaurus/accept.html.twig thesaurus:: reindexation necessaire Wieder Indexierung erforderlich - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: reindexer la base apres l'import Nach dem Import wieder indexieren - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: reindexer tous les enregistrements @@ -13641,12 +13777,12 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: removed_src removed_src - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: selectionner la provenance a accepter Ursprung zu akzeptieren markieren - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: suppression de la branche de mot candidats pour le champ %field% @@ -13667,102 +13803,135 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben thesaurus:: supprimer les liens des champs tbranch Die Verbindung(en) zwischen den Felder(n) und Verzweigung(en) löschen - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: synonyme Synonym - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: synonymes Synonyme - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: terme Begriff - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: tout deployer - refermable Alle aufklappen (verschliessbar) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout deployer - statique Alle aufklappen (statisch) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout fermer Alle zuklappen (mit Browsen) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + + + thesaurus::menu: Mettre dans le stock + thesaurus::menu: Mettre dans le stock + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau synonyme Neuer Synonym - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau terme Neuer Begriff - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: accepter Annehmen - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: chercher Suchen - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: export topics Exportieren als Themen - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: exporter Exportieren - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: importer Importieren - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: lier au champ Mit dem Feld verbinden - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: proprietes Eigenschaften - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: refuser Ablehnen - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: supprimer Löschen - web/thesaurus/properties.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: Warning populate is in process to indexing databox + thesaurus::populate: Warning populate is in process to indexing databox + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: success message + thesaurus::populate: success message + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: export + thesaurus:dialog:: export + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: properties + thesaurus:dialog:: properties + web/thesaurus/thesaurus.html.twig + + + thesaurus:properties:: Mettre dans le stock + thesaurus:properties:: Mettre dans le stock + web/thesaurus/properties.html.twig + + + thesaurus:termePorperties:termeId + thesaurus:termePorperties:termeId + web/thesaurus/properties.html.twig thumbnail validation Miniaturansicht Bestätigung - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -13821,7 +13990,7 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben validate Bestätigen - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig diff --git a/resources/locales/messages.en.xlf b/resources/locales/messages.en.xlf index f4516a97e5..f09a7f3da3 100644 --- a/resources/locales/messages.en.xlf +++ b/resources/locales/messages.en.xlf @@ -1,6 +1,6 @@ - +
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. @@ -112,8 +112,8 @@ %basket_length% documents %basket_length% document(s) mobile/lightbox/validate.html.twig - web/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig + web/lightbox/index.html.twig %countable% documents can not be modified. @@ -138,12 +138,12 @@ %docs_not_orderable% documents ne peuvent pas etre commandes %docs_not_orderable% document(s) can't be ordered - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %docs_orderable% documents commandes %docs_orderable% ordered document(s) - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %entry_length% documents @@ -378,17 +378,17 @@ (validation) a envoyer Feedback request to send - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) envoyee Feedback request sent. - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) session terminee Feedback session ended. - web/lightbox/index.html.twig + web/lightbox/index.html.twig *Phraseanet Navigator* is a smartphone application that allow user to connect on this instance @@ -618,7 +618,7 @@ Accuse de reception indisponible, vous n'avez pas declare d'adresse email Unable to send an acknowledgement: Missing e-mail address. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Action Forbidden : You are not the publisher @@ -778,27 +778,27 @@ Affichage au demarrage Display On startup - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive Show Caption - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre Show Title - web/prod/index.html.twig + web/prod/index.html.twig Afficher le type Display type - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status Show Status - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone @@ -823,7 +823,7 @@ Aide Help - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -943,13 +943,13 @@ Alphabetic asc web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc Alphabetic desc web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1039,7 +1039,6 @@ Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php - Controller/Api/V3Controller.php Controller/Api/V1Controller.php Controller/Api/V1Controller.php web/admin/statusbit.html.twig @@ -1545,10 +1544,10 @@ By checking this box, you accept %beginning_link% Terms of Use %end_link% By checking this box, you have read and agree to the %beginning_link% Terms of Use %end_link% - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig By default it is available for admins @@ -1707,7 +1706,7 @@ Certains champs sont obligatoires, veuillez les remplir Some fields must be completed - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Ces informations sont directement fournies par la norme de metadonnees de ce champ : %norm_name% @@ -1744,7 +1743,7 @@ Chercher Search - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig Choisir @@ -1773,7 +1772,7 @@ Civility Title - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Clear @@ -1816,7 +1815,7 @@ Codec Audio Audio codec web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Codec Video @@ -1844,7 +1843,7 @@ Collection order Collection order - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -2026,7 +2025,7 @@ Couleur de selection Selection color - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2357,7 +2356,7 @@ Defined by admin Defined by admin - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2612,9 +2611,9 @@ Documents indisponibles Document(s) unavailable web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Don't worry, You can modify your configuration later @@ -2990,7 +2989,7 @@ Entrez plusieurs adresses email en les separant par des points-virgules Use a semicolon between e-mail addresses. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Entry removed from list @@ -3229,7 +3228,7 @@ Fichier ASCII tabule Tabulated ASCII file - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig Fichiers envoyes @@ -3717,7 +3716,7 @@ Images par secondes Image per second web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Imagette indisponible @@ -3738,8 +3737,8 @@ Include Business-fields in caption Include Business fields in captions web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Incorrect please try again @@ -3920,9 +3919,9 @@ La sous resolution n'est pas disponible pour les documents suivants Subviews unavailable for the following document(s) - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig La taille maximale d'une video est de %duration% minutes. @@ -4223,7 +4222,7 @@ Ma derniere question My last query - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4609,8 +4608,8 @@ No preview available No preview available - actions/Tools/videoEditor.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig No receivers specified @@ -4921,7 +4920,7 @@ web/account/account.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Par %author% @@ -5182,7 +5181,7 @@ Presentation de vignettes de panier Basket display setup - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5236,7 +5235,7 @@ Publications Publications web/common/menubar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/admin/tree.html.twig admin/publications/wrapper.html.twig @@ -5540,7 +5539,7 @@ Recevoir un accuse de reception a %my_email% Receive an acknowledgement at %my_email% - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Rechercher dans un champ date @@ -6220,7 +6219,7 @@ Size Size web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Download/prepare.html.twig @@ -6365,7 +6364,6 @@ Story Not Found Story not found - Controller/Api/V3Controller.php Controller/Api/V1Controller.php @@ -6433,7 +6431,7 @@ Success Success api/auth/native_app_access_token.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Successful install @@ -6466,7 +6464,7 @@ Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig admin/collection/suggested_value.html.twig admin/collection/collection.html.twig web/admin/databases.html.twig @@ -6594,7 +6592,7 @@ Terms of Use Terms of use Form/Login/PhraseaRegisterForm.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Terms of service @@ -7000,12 +6998,12 @@ Un document commande One document ordered. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Un document ne peut etre commande One document can not be ordered. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Unable to add file to Phraseanet @@ -7107,7 +7105,7 @@ Une question personnelle The query - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7325,7 +7323,7 @@ VALIDATION Feedback - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig @@ -7360,7 +7358,7 @@ mobile/lightbox/index.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Validations received @@ -7432,13 +7430,13 @@ Voici vos paniers Your Basket(s) mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Voici vos validations en cours Your feedbacks in progress mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Votre adresse email @@ -7503,7 +7501,7 @@ Vous devez selectionner un type de sous definitions Select type of subviews - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Vous devez specifier une adresse email et un mot de passe valides @@ -7597,7 +7595,7 @@ Warning ! Warning! - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Warning, this database is not empty @@ -7676,7 +7674,7 @@ Would you like to receive an e-mail when your download is ready ? Would you like to receive an e-mail when download is ready ? - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Would you like to reset rights before applying the template? @@ -7773,7 +7771,7 @@ You can alternatively receive an email when the download is ready. Alternatively, you can receive an e-mail when the download is ready. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can choose only one record @@ -7788,7 +7786,7 @@ You can not directly download more than %max_download% Mo ; time to package all documents is too long You can't directly download more than %max_download% Mo ; time to package all documents would be too long. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can not edit this story @@ -7884,7 +7882,7 @@ You must agree to the Terms of Use to continue. You must accept the Terms of Use to continue. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You must give a destination collection @@ -8020,7 +8018,7 @@ action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection @@ -8041,7 +8039,7 @@ action : exporter Export web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig prod/preview/tools.html.twig @@ -8051,7 +8049,7 @@ prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : outils @@ -8077,7 +8075,7 @@ web/prod/toolbar.html.twig prod/WorkZone/Basket.html.twig prod/WorkZone/Story.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push @@ -8514,7 +8512,7 @@ Address Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8529,7 +8527,7 @@ Zip code Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8553,7 +8551,7 @@ E-mail Event/Subscriber/RegistrationSubscriber.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8565,7 +8563,7 @@ Fax Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8602,7 +8600,7 @@ Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8624,7 +8622,7 @@ Job Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8635,7 +8633,7 @@ Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8652,7 +8650,7 @@ Company Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8668,7 +8666,7 @@ admin::compte-utilisateur telephone Phone Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8684,7 +8682,7 @@ City Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8780,7 +8778,7 @@ admin::compte-utilisateur:sexe: madame Mrs. Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8788,7 +8786,7 @@ admin::compte-utilisateur:sexe: mademoiselle Miss Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8796,7 +8794,7 @@ admin::compte-utilisateur:sexe: monsieur Mr. Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -9076,9 +9074,9 @@ Select an option web/admin/editusers.html.twig - + admin::users:edit: check all right - Give all rights on the collection + Give all rights on the collection web/admin/editusers.html.twig @@ -9127,7 +9125,7 @@ admin::workermanager: Rabbit config error Message Queue configuration error - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig admin::workermanager:tab:configuration: title @@ -9174,9 +9172,9 @@ Launch pull assets admin/worker-manager/worker_pull_assets.html.twig - + admin::workermanager:tab:pullassets: description - Uploader "Pull mode" settings + Uploader "Pull mode" settings admin/worker-manager/worker_pull_assets.html.twig @@ -9184,6 +9182,31 @@ Uploader admin/worker-manager/index.html.twig + + admin::workermanager:tab:queueMonitor: Consumer count + Number of worker(s) + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Message count + Message count + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Refresh list + Refresh + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: description + Message queues status + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: title + Queues + admin/worker-manager/index.html.twig + admin::workermanager:tab:searchengine: Databox to populate Databox to populate @@ -9349,9 +9372,9 @@ Started admin/worker-manager/worker_info.html.twig - - admin::workermanager:tab:workerinfo: databox_id - Database Id + + admin::workermanager:tab:workerinfo: databox_name + Databox admin/worker-manager/worker_info.html.twig @@ -9397,12 +9420,12 @@ admin:worker Retrieve configuration error Worker Retrieve configuration error - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig alert Warning - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -9455,12 +9478,12 @@ bad character at line %line% bad character at line %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php bad encoding at line %line% bad encoding at line %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php base:: re-indexer @@ -9506,22 +9529,23 @@ Cancel Controller/Prod/LanguageController.php Controller/Prod/LanguageController.php - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/link-field-step2.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step2.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/reset-email.html.twig Bridge/Dailymotion/video_modify.html.twig Bridge/Dailymotion/video_modify.html.twig @@ -9544,8 +9568,8 @@ boutton::chercher Search - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/prod/index.html.twig web/admin/users.html.twig @@ -9558,7 +9582,7 @@ boutton::commander Order - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::creer @@ -9586,13 +9610,13 @@ boutton::envoyer Send - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::essayer Try - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::exporter @@ -9603,10 +9627,10 @@ boutton::fermer Close Controller/Prod/LanguageController.php - web/thesaurus/export-topics.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/properties.html.twig + web/thesaurus/export-topics.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/properties.html.twig web/thesaurus/link-field-step3.html.twig web/common/dialog_export.html.twig web/lightbox/sc_note.html.twig @@ -9754,7 +9778,7 @@ boutton::telecharger Download - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/lightbox/feed_options_box.html.twig web/lightbox/sc_options_box.html.twig @@ -9762,7 +9786,7 @@ boutton::telecharger tous les documents Download all web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -9777,16 +9801,17 @@ Validate Controller/Prod/LanguageController.php mobile/lightbox/note_form.html.twig - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig web/account/access.html.twig web/account/account.html.twig web/account/reset-email.html.twig @@ -9811,7 +9836,7 @@ prod/Baskets/Reorder.html.twig prod/Baskets/Update.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/report/all_content.html.twig web/admin/setup.html.twig web/admin/dashboard.html.twig @@ -9923,7 +9948,7 @@ choisir Select - web/prod/index.html.twig + web/prod/index.html.twig admin/collection/create.html.twig admin/databox/databox.html.twig @@ -9941,12 +9966,12 @@ commande::deadline Deadline - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig commande::utilisation prevue Intended use - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig prod/orders/order_item.html.twig @@ -10129,7 +10154,7 @@ export:: FTP FTP web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: commande @@ -10140,7 +10165,7 @@ export:: envoi par mail E-Mail web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: erreur : aucun document selectionne @@ -10156,7 +10181,7 @@ export::export-email: email-invalid The email address format seems incorrect - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::ftp: reglages manuels @@ -10166,7 +10191,7 @@ export::mail: contenu du mail Content - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::mail: destinataire @@ -10176,8 +10201,8 @@ export::mail: fichiers joint Attachment(s) - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::titre: nom original du document @@ -10189,6 +10214,11 @@ Title web/common/dialog_export.html.twig + + export:email:: acknowledgement info + Acknowledgment works only if the recipient's server has activated this function. + web/common/dialog_export.html.twig + failed to send mail failed to send mail @@ -10362,12 +10392,12 @@ index::advance_search: disable-facet Hide facets with 1 result (experimental) - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet Facets Preferences - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order @@ -10387,7 +10417,7 @@ index::advance_search: hidden-facet-values-order Hidden Facets - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits @@ -10437,12 +10467,12 @@ lightbox::See_less_feedback See less feedback - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::See_more_feedback See more feedback - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::list @@ -10453,60 +10483,61 @@ lightbox::recaptitulatif Summary mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig + web/lightbox/feed.html.twig lightbox::see_less_basket See less baskets - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::see_more_basket See more baskets - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox:feedback:sendreport:warnwindows:cancel Cancel report sending and continue mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:message Your feedback contains mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_approved Approved mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_rejected Rejected mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_unexpressed Unexpressed mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:title Feedback summary mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:validate Send my report mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig login:: Changer mon adresse email @@ -10663,7 +10694,7 @@ no image selected No Document selected - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -10675,7 +10706,7 @@ notice Caption - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -10960,7 +10991,7 @@ over-indent at line %line% over-indent on line %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre @@ -11153,7 +11184,7 @@ phraseanet:: language Language - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig phraseanet:: password @@ -11176,7 +11207,7 @@ phraseanet:: prereglages Presets - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig phraseanet:: presse-papier @@ -11213,7 +11244,7 @@ web/thesaurus/load-thesaurus.html.twig web/thesaurus/load-thesaurus.html.twig web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig web/prod/tab_headers.html.twig prod/actions/edit_default.html.twig @@ -11221,12 +11252,12 @@ phraseanet:: tri Sort - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par date Sort by date - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig web/prod/index.html.twig web/prod/index.html.twig web/prod/index.html.twig @@ -11303,7 +11334,7 @@ phraseanet::chargement Loading Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig prod/actions/edit_default.html.twig admin/collection/suggested_value.html.twig @@ -11323,7 +11354,7 @@ phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier Your session is closed, please re-authentificate Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/admin/index.html.twig @@ -11386,7 +11417,7 @@ phraseanet::technique:: et And - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php phraseanet::temps:: a l'instant @@ -11472,17 +11503,17 @@ preview:: Description Caption - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Timeline - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Statistics - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11684,7 +11715,7 @@ processing Processing... - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -11701,7 +11732,7 @@ prod::action:property title Properties - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:datefield_restriction_explanation @@ -11784,9 +11815,11 @@ Warning: The current values will be overwritten by these new values Valid changes or Cancel prod/actions/edit_default.html.twig - + prod::editing::annulation: abandonner les modification ? - Cancel : no modification will be applied ? + Cancelling editing will lose all edits. +- Cancel : to go back to editing +- OK : to close and lose edits Controller/Prod/LanguageController.php @@ -11854,6 +11887,12 @@ Warning: The current values will be overwritten by these new values Find prod/actions/edit_default.html.twig + + prod::export: send mail notification + Email sending request submitted + web/lightbox/validate.html.twig + web/prod/index.html.twig + prod::facet:base_label Base @@ -11877,22 +11916,22 @@ Warning: The current values will be overwritten by these new values prod::notification: notification title Notifications - web/prod/index.html.twig + web/prod/index.html.twig prod::push: List name can not be empty List name is mandatory - web/prod/index.html.twig + web/prod/index.html.twig prod::push: New list title New list - web/prod/index.html.twig + web/prod/index.html.twig prod::push: add Add - web/prod/index.html.twig + web/prod/index.html.twig prod::push:push_set_title @@ -12048,7 +12087,7 @@ Warning: The current values will be overwritten by these new values prod::videoTools:chapterTitle Chapter title - web/prod/index.html.twig + web/prod/index.html.twig prod::workzone:Actions @@ -12124,6 +12163,96 @@ It is possible to place several search areas Delete Selection prod/actions/Push.html.twig + + prod:videoeditor:subtitleRequestTab:: submit + Submit Subtitling Request + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:: title + Auto Subtitling + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Kind + Kind + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Language destination + Subtitles language destination + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Provider + Provider + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Source Audio language + Audio language Source + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleTab:: title + Subtitle editing + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Caption placeholder + Type a subtitle + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: End time + End + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: No caption message + No Subtitle set for this language + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Show for + Duration + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Start time + Start + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: add caption + Add a Subtitle + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: copy to clipboard + Copy to clipboard + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: save + Save + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: work on + Select subtitling language + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:message:: error + Error when saving subtitle + Controller/Prod/LanguageController.php + + + prod:videoeditor:subtitletab:message:: success + Success + Controller/Prod/LanguageController.php + prod:workzone:basket:creation-date Creation date @@ -12370,7 +12499,7 @@ It is possible to place several search areas reponses::document sans titre Untitled - classes/record/adapter.php + classes/record/adapter.php report:: (connexions) @@ -12897,7 +13026,7 @@ It is possible to place several search areas screenshot video Video screenshot - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig select at least one user @@ -13270,35 +13399,35 @@ It is possible to place several search areas Thesaurus has been updated web/thesaurus/load-thesaurus.html.twig - - thesaurus:: %hits% reponses retournees - %hits% hits - web/thesaurus/properties.html.twig + + thesaurus: Populate title + Indexing + web/thesaurus/thesaurus.html.twig thesaurus:: A cet emplacement du thesaurus , un candidat du champ %cfield% ne peut etre accepte At this location of thesaurus, a candidate term from field cfield%% can't be accepted. - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter la branche comme Accept branch as - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter le terme comme Accept term as : - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Ce champ a ete modifie ; ancienne branche : %old_branch% }} Field has been changed ; previous branch is: %old_branch% }} - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: Confirmer la suppression du terme %s Confirm term "%s" delete - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: Editer le thesaurus @@ -13309,6 +13438,7 @@ It is possible to place several search areas thesaurus:: Importer Import web/thesaurus/import-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus @@ -13320,37 +13450,42 @@ It is possible to place several search areas thesaurus:: Lier la branche de thesaurus au champ Link thesaurus branch to field web/thesaurus/link-field-step1.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus au champ %branch% Link thesaurus branch to field %branch% - web/thesaurus/link-field-step1.html.twig + web/thesaurus/link-field-step1.html.twig thesaurus:: Nouveau synonyme New Synonym web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme New term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme specifique New specific term web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Proprietes Properties - web/thesaurus/properties.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Vous n'avez acces a aucune base @@ -13361,59 +13496,65 @@ It is possible to place several search areas thesaurus:: accepter... Accept web/thesaurus/accept.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: afficher les termes refuses Display rejected terms - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: ce champ doit etre lie au thesaurus. La reindexation de la base est necessaire This field must be linked to thesaurus. Database re indexation needed - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: ce champ n'est plus lie au thesaurus, les termes indexes et candidats seront supprimes This field is no longer linked to thesaurus, indexed terms and candidates will be deleted - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: comme synonyme de %fullpath_tgt_raw% As synonym for %fullpath_tgt_raw%. - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: comme terme specifique Specific term - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: commence par starts with - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus:: confirm populate + Launch databases indexing + web/thesaurus/thesaurus.html.twig thesaurus:: contexte Context - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: contient contains - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: corbeille Stock - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: deplacer le terme dans la corbeille ? Move Terms to stock - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: enregistrement de la liste modifiee des mots candidats. @@ -13423,110 +13564,102 @@ It is possible to place several search areas thesaurus:: erreur lors de l'enregsitrement du fichier Error during file registration - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: est candidat en provenance des champs mais ne peut etre accepte a cet emplacement du thesaurus is a candidate from fields but can't be accepted for this branch - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance des champs acceptables : Is already a candidate from valid fields - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance du champ acceptable : is already a candidate from valid field - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est egal a is equal to - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: example example - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure la langue Include language - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure les hits Include hits - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : numeroter les lignes Print line numbers - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export au format texte Text web/thesaurus/export-text-dialog.html.twig - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig web/thesaurus/export-text.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: export en topics Topics web/thesaurus/export-topics.html.twig web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: exporter Export - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter a l'ecran pour la langue %piv% Export to screen for %piv% language - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter avec les synonymes sur la meme ligne Synonym(s) on same line - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter avec une ligne par synonyme One line per synonym - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter vers topics pour toutes les langues Export for all languages - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: fichier genere : %filename% Generated file: %filename% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: fichier genere le %date% Generated file on %date% - Controller/Thesaurus/ThesaurusController.php - - - thesaurus:: hits - hits - web/thesaurus/properties.html.twig - - - thesaurus:: ids - ids - web/thesaurus/properties.html.twig + Controller/Thesaurus/ThesaurusController.php thesaurus:: langue par default Default language - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: langue pivot @@ -13536,103 +13669,108 @@ It is possible to place several search areas thesaurus:: le lien au thesaurus doit etre modifie, la reindexation de la base est necessaire Link to thesaurus must be modified , database re indextion needed - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: le terme term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: le terme %term% avec contexte %context% Term %term% with context %context% - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: le terme %term% sans contexte Term %term% without context - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: n'est pas present dans les candidats is not a candidate - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: nouvelle branche New branch - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: onglet stock Candidates - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: onglet thesaurus Thesaurus - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: options d'export : Export - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: pas de reindexation No re-index - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig + + + thesaurus:: populate button + Indexing + web/thesaurus/thesaurus.html.twig thesaurus:: presentation Display options - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branche ouvertes Reproduce current view (without navigation) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branches refermables Reproduce current view (with navigation) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: question complete (avec operateurs) Full question (with operators) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche Search - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche fulltext Fulltext - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche thesaurus *:"query" Thesaurus query *:"query" - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: refresh Refresh - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig web/thesaurus/accept.html.twig thesaurus:: reindexation necessaire Re indexation needed - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: reindexer la base apres l'import Re-index after import - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: reindexer tous les enregistrements @@ -13647,12 +13785,12 @@ It is possible to place several search areas thesaurus:: removed_src removed_src - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: selectionner la provenance a accepter Select origin to accept - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: suppression de la branche de mot candidats pour le champ %field% @@ -13673,102 +13811,135 @@ It is possible to place several search areas thesaurus:: supprimer les liens des champs tbranch Delete existing link(s) between thesaurus branch(s) and field(s) - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: synonyme Synonym - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: synonymes Synonyms - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: terme Term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: tout deployer - refermable All deployed (with navigation) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout deployer - statique All deployed (static) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout fermer Close all (with navigation) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + + + thesaurus::menu: Mettre dans le stock + Move to the stock + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau synonyme New synonym - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau terme New term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: accepter Allow - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: chercher Search - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: export topics Export as topics - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: exporter Export - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: importer Import - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: lier au champ Link to fields - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: proprietes Properties - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: refuser Reject - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: supprimer Delete - web/thesaurus/properties.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: Warning populate is in process to indexing databox + Warning populate is in process to indexing databox. Wait the end of this indexing, before launch a new one. + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: success message + thesaurus::populate: success message + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: export + Export Candidats + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: properties + Properties + web/thesaurus/thesaurus.html.twig + + + thesaurus:properties:: Mettre dans le stock + -> Stock + web/thesaurus/properties.html.twig + + + thesaurus:termePorperties:termeId + Id + web/thesaurus/properties.html.twig thumbnail validation Confirm thumbnail - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -13827,7 +13998,7 @@ It is possible to place several search areas validate Validate - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig diff --git a/resources/locales/messages.fr.xlf b/resources/locales/messages.fr.xlf index ad51916821..af3c467592 100644 --- a/resources/locales/messages.fr.xlf +++ b/resources/locales/messages.fr.xlf @@ -1,6 +1,6 @@ - +
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. @@ -112,8 +112,8 @@ %basket_length% documents %basket_length% documents mobile/lightbox/validate.html.twig - web/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig + web/lightbox/index.html.twig %countable% documents can not be modified. @@ -138,12 +138,12 @@ %docs_not_orderable% documents ne peuvent pas etre commandes %docs_not_orderable% documents ne peuvent être commandés - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %docs_orderable% documents commandes %docs_orderable% documents commandés - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %entry_length% documents @@ -378,17 +378,17 @@ (validation) a envoyer Rapport de validation à envoyer - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) envoyee Rapport de validation envoyé - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) session terminee Session terminée - web/lightbox/index.html.twig + web/lightbox/index.html.twig *Phraseanet Navigator* is a smartphone application that allow user to connect on this instance @@ -618,7 +618,7 @@ Accuse de reception indisponible, vous n'avez pas declare d'adresse email Accusé de réception indisponible; vous n'avez pas déclaré d'adresse e-mail - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Action Forbidden : You are not the publisher @@ -777,27 +777,27 @@ Affichage au demarrage Afficher au démarrage - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive Afficher la notice - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre Afficher le titre - web/prod/index.html.twig + web/prod/index.html.twig Afficher le type Afficher le type - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status Afficher les Status - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone @@ -822,7 +822,7 @@ Aide Aide - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -942,13 +942,13 @@ Alphabétique asc web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc Alphabétique desc web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1038,7 +1038,6 @@ Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php - Controller/Api/V3Controller.php Controller/Api/V1Controller.php Controller/Api/V1Controller.php web/admin/statusbit.html.twig @@ -1544,10 +1543,10 @@ By checking this box, you accept %beginning_link% Terms of Use %end_link% En cochant cette case, vous acceptez les %beginning_link% conditions générales d'utilisation %end_link% - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig By default it is available for admins @@ -1706,7 +1705,7 @@ Certains champs sont obligatoires, veuillez les remplir Certains champs sont obligatoires, veuillez les compléter - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Ces informations sont directement fournies par la norme de metadonnees de ce champ : %norm_name% @@ -1742,7 +1741,7 @@ Chercher Chercher - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig Choisir @@ -1771,7 +1770,7 @@ Civility Civilité - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Clear @@ -1814,7 +1813,7 @@ Codec Audio Codec audio web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Codec Video @@ -1842,7 +1841,7 @@ Collection order Ordre des collections - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -2024,7 +2023,7 @@ Couleur de selection Couleur de sélection - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2354,7 +2353,7 @@ Defined by admin Défini par l'admin - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2609,9 +2608,9 @@ Documents indisponibles Documents indisponibles web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Don't worry, You can modify your configuration later @@ -2987,7 +2986,7 @@ Entrez plusieurs adresses email en les separant par des points-virgules Entrez plusieurs adresses e-mail en les séparant par des points-virgules - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Entry removed from list @@ -3226,7 +3225,7 @@ Fichier ASCII tabule Fichier ASCII tabulé - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig Fichiers envoyes @@ -3714,7 +3713,7 @@ Images par secondes Images par seconde web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Imagette indisponible @@ -3735,8 +3734,8 @@ Include Business-fields in caption Inclure les champs métier dans la notice web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Incorrect please try again @@ -3917,9 +3916,9 @@ La sous resolution n'est pas disponible pour les documents suivants La sous-résolution n'est pas disponible pour les documents suivants - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig La taille maximale d'une video est de %duration% minutes. @@ -4220,7 +4219,7 @@ Ma derniere question Ma dernière question - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4606,8 +4605,8 @@ No preview available Pas de prévisualisation disponible - actions/Tools/videoEditor.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig No receivers specified @@ -4918,7 +4917,7 @@ web/account/account.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Par %author% @@ -5179,7 +5178,7 @@ Presentation de vignettes de panier Présentation des vignettes de panier - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5233,7 +5232,7 @@ Publications Publications web/common/menubar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/admin/tree.html.twig admin/publications/wrapper.html.twig @@ -5539,7 +5538,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Recevoir un accuse de reception a %my_email% Demander un accusé de réception à transmettre à l'adresse %my_email% - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Rechercher dans un champ date @@ -6219,7 +6218,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Size Taille web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Download/prepare.html.twig @@ -6364,7 +6363,6 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Story Not Found Reportage inconnu - Controller/Api/V3Controller.php Controller/Api/V1Controller.php @@ -6432,7 +6430,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Success Succès api/auth/native_app_access_token.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Successful install @@ -6465,7 +6463,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig admin/collection/suggested_value.html.twig admin/collection/collection.html.twig web/admin/databases.html.twig @@ -6593,7 +6591,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Terms of Use Conditions générales d'utilisation Form/Login/PhraseaRegisterForm.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Terms of service @@ -6999,12 +6997,12 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Un document commande Un document commandé. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Un document ne peut etre commande Un document ne peut être commandé. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Unable to add file to Phraseanet @@ -7106,7 +7104,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Une question personnelle La question - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7324,7 +7322,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis VALIDATION Validation - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig @@ -7359,7 +7357,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis mobile/lightbox/index.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Validations received @@ -7431,13 +7429,13 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Voici vos paniers Paniers disponibles mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Voici vos validations en cours Demandes de validations en cours mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Votre adresse email @@ -7502,7 +7500,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Vous devez selectionner un type de sous definitions Vous devez sélectionner un type de sous-définitions - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Vous devez specifier une adresse email et un mot de passe valides @@ -7596,7 +7594,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Warning ! Attention ! - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Warning, this database is not empty @@ -7675,7 +7673,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Would you like to receive an e-mail when your download is ready ? Souhaitez-vous recevoir un e-mail quand votre téléchargement est prêt ? - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Would you like to reset rights before applying the template? @@ -7772,7 +7770,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis You can alternatively receive an email when the download is ready. Vous pouvez être informé par e-mail quand votre téléchargement est prêt. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can choose only one record @@ -7787,7 +7785,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis You can not directly download more than %max_download% Mo ; time to package all documents is too long Vous ne pouvez pas télécharger directement plus de %max_download% Mo de données. Le temps nécessaire pour zipper tous les documents serait trop long. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can not edit this story @@ -7883,7 +7881,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis You must agree to the Terms of Use to continue. Vous devez accepter les conditions générales d'utilisation pour poursuivre. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You must give a destination collection @@ -8019,7 +8017,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection @@ -8040,7 +8038,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis action : exporter Exporter web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig prod/preview/tools.html.twig @@ -8050,7 +8048,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : outils @@ -8076,7 +8074,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis web/prod/toolbar.html.twig prod/WorkZone/Basket.html.twig prod/WorkZone/Story.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push @@ -8513,7 +8511,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Adresse Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8528,7 +8526,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Code postal Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8552,7 +8550,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis E-mail Event/Subscriber/RegistrationSubscriber.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8564,7 +8562,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Fax Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8601,7 +8599,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8623,7 +8621,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Poste Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8634,7 +8632,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8651,7 +8649,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Société Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8667,7 +8665,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis admin::compte-utilisateur telephone Téléphone Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8683,7 +8681,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Ville Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8780,7 +8778,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le admin::compte-utilisateur:sexe: madame Mme Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8788,7 +8786,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le admin::compte-utilisateur:sexe: mademoiselle Mlle Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8796,7 +8794,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le admin::compte-utilisateur:sexe: monsieur M. Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -9071,9 +9069,9 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Filtrer les utilisateurs invités web/admin/users.html.twig - + admin::users:edit: Manage inline selection - Sélectionner une option + Sélectionner une option web/admin/editusers.html.twig @@ -9124,10 +9122,10 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le web/admin/tree.html.twig web/admin/connected-users.html.twig - + admin::workermanager: Rabbit config error - Erreur dans la configuration du gestionnaire de messages - admin/worker-manager/index.html.twig + Erreur dans la configuration du gestionnaire de messages + admin/worker-manager/index.html.twig admin::workermanager:tab:configuration: title @@ -9154,9 +9152,9 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Client secret WorkerManager/Form/WorkerPullAssetsType.php - + admin::workermanager:tab:pullassets: Endpoint get commit - Point de terminaison pour la récupération des fichiers (adresse de l'uploader) + Point de terminaison pour la récupération des fichiers (adresse de l'uploader ex: https://uploader.phrasea.io) WorkerManager/Form/WorkerPullAssetsType.php @@ -9184,9 +9182,34 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Uploader admin/worker-manager/index.html.twig - + + admin::workermanager:tab:queueMonitor: Consumer count + Nombre de worker + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Message count + Nombre de Message + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Refresh list + Actualiser + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: description + Etat des files de message + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: title + Files de message + admin/worker-manager/index.html.twig + + admin::workermanager:tab:searchengine: Databox to populate - Sélectionner les databox(s) à indexer + Sélectionner les databox(s) à indexer admin/worker-manager/worker_searchengine.html.twig @@ -9349,9 +9372,9 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Démarré admin/worker-manager/worker_info.html.twig - - admin::workermanager:tab:workerinfo: databox_id - Databox Id + + admin::workermanager:tab:workerinfo: databox_name + Databox admin/worker-manager/worker_info.html.twig @@ -9397,12 +9420,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le admin:worker Retrieve configuration error Erreur lors de la récupération de la configuration des workers - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig alert Alerte - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -9455,12 +9478,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le bad character at line %line% Mauvais caractère détecté à la ligne %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php bad encoding at line %line% Mauvais encodage à la ligne %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php base:: re-indexer @@ -9506,22 +9529,23 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Annuler Controller/Prod/LanguageController.php Controller/Prod/LanguageController.php - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/link-field-step2.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step2.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/reset-email.html.twig Bridge/Dailymotion/video_modify.html.twig Bridge/Dailymotion/video_modify.html.twig @@ -9544,8 +9568,8 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::chercher Chercher - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/prod/index.html.twig web/admin/users.html.twig @@ -9558,7 +9582,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::commander Commander - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::creer @@ -9586,13 +9610,13 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::envoyer Envoyer - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::essayer Essayer - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::exporter @@ -9603,10 +9627,10 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::fermer Fermer Controller/Prod/LanguageController.php - web/thesaurus/export-topics.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/properties.html.twig + web/thesaurus/export-topics.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/properties.html.twig web/thesaurus/link-field-step3.html.twig web/common/dialog_export.html.twig web/lightbox/sc_note.html.twig @@ -9754,7 +9778,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::telecharger Télécharger - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/lightbox/feed_options_box.html.twig web/lightbox/sc_options_box.html.twig @@ -9762,7 +9786,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::telecharger tous les documents Tout télécharger web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -9777,16 +9801,17 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Valider Controller/Prod/LanguageController.php mobile/lightbox/note_form.html.twig - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig web/account/access.html.twig web/account/account.html.twig web/account/reset-email.html.twig @@ -9811,7 +9836,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le prod/Baskets/Reorder.html.twig prod/Baskets/Update.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/report/all_content.html.twig web/admin/setup.html.twig web/admin/dashboard.html.twig @@ -9923,7 +9948,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le choisir Choisir - web/prod/index.html.twig + web/prod/index.html.twig admin/collection/create.html.twig admin/databox/databox.html.twig @@ -9941,12 +9966,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le commande::deadline Date limite - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig commande::utilisation prevue Utilisation prévue - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig prod/orders/order_item.html.twig @@ -10129,7 +10154,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le export:: FTP FTP web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: commande @@ -10140,7 +10165,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le export:: envoi par mail E-Mail web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: erreur : aucun document selectionne @@ -10156,7 +10181,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le export::export-email: email-invalid Email invalide - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::ftp: reglages manuels @@ -10166,7 +10191,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le export::mail: contenu du mail Texte - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::mail: destinataire @@ -10176,8 +10201,8 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le export::mail: fichiers joint Fichier(s) joint(s) - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::titre: nom original du document @@ -10189,6 +10214,11 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Titre web/common/dialog_export.html.twig + + export:email:: acknowledgement info + Les accusé reception fonctionne que si le serveur du destinataire a activé cette fonction. + web/common/dialog_export.html.twig + failed to send mail Echec de l'envoi d'e-mail @@ -10362,12 +10392,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le index::advance_search: disable-facet Ne pas afficher les facettes contenant un seul résultat (expérimental) - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet Préférences sur les facettes - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order @@ -10387,7 +10417,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le index::advance_search: hidden-facet-values-order Facettes masquées - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits @@ -10437,12 +10467,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le lightbox::See_less_feedback Voir moins de validations - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::See_more_feedback Voir plus de Validations - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::list @@ -10453,60 +10483,61 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le lightbox::recaptitulatif Récapitulatif mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig + web/lightbox/feed.html.twig lightbox::see_less_basket Voir moins de Paniers - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::see_more_basket Voir plus de paniers - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox:feedback:sendreport:warnwindows:cancel Annuler l'envoi et continuer la validation mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:message Récapitulatif des choix de la validation mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_approved Approuvés mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_rejected Refusés mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_unexpressed Non exprimés mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:title Résumé de la validation mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:validate Confirmer l'envoi du rapport mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig login:: Changer mon adresse email @@ -10663,7 +10694,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le no image selected Aucune image sélectionnée - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -10675,7 +10706,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le notice Notice - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -10960,7 +10991,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le over-indent at line %line% Mauvaise indentation ligne %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre @@ -11153,7 +11184,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet:: language Langue - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig phraseanet:: password @@ -11176,7 +11207,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet:: prereglages Préréglages - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig phraseanet:: presse-papier @@ -11213,7 +11244,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le web/thesaurus/load-thesaurus.html.twig web/thesaurus/load-thesaurus.html.twig web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig web/prod/tab_headers.html.twig prod/actions/edit_default.html.twig @@ -11221,12 +11252,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet:: tri Tri - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par date Tri par date - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig web/prod/index.html.twig web/prod/index.html.twig web/prod/index.html.twig @@ -11303,7 +11334,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet::chargement Chargement Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig prod/actions/edit_default.html.twig admin/collection/suggested_value.html.twig @@ -11323,7 +11354,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier Votre session a expiré. Veuillez vous ré-authentifier Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/admin/index.html.twig @@ -11386,7 +11417,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet::technique:: et Et - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php phraseanet::temps:: a l'instant @@ -11472,17 +11503,17 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le preview:: Description Notice - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Historique - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Popularité - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11684,7 +11715,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le processing En cours... - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -11701,7 +11732,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le prod::action:property title Propriétés - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:datefield_restriction_explanation @@ -11784,9 +11815,11 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles Valider ou annuler les modifications prod/actions/edit_default.html.twig - + prod::editing::annulation: abandonner les modification ? - Annulation : abandonner les modifications ? + L'annulation de l'édition effacera toutes les modifications. + - Annuler: pour revenir à l'édition + - OK: pour fermer et perdre les modifications Controller/Prod/LanguageController.php @@ -11854,6 +11887,12 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles Rechercher prod/actions/edit_default.html.twig + + prod::export: send mail notification + Demande d'envois d'email soumise + web/lightbox/validate.html.twig + web/prod/index.html.twig + prod::facet:base_label Bases @@ -11877,22 +11916,22 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles prod::notification: notification title Notifications - web/prod/index.html.twig + web/prod/index.html.twig prod::push: List name can not be empty Le nom de la liste doit être rempli - web/prod/index.html.twig + web/prod/index.html.twig prod::push: New list title Nouvelle liste - web/prod/index.html.twig + web/prod/index.html.twig prod::push: add Ajouter - web/prod/index.html.twig + web/prod/index.html.twig prod::push:push_set_title @@ -12048,7 +12087,7 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles prod::videoTools:chapterTitle Titre du chapitre - web/prod/index.html.twig + web/prod/index.html.twig prod::workzone:Actions @@ -12127,6 +12166,96 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles Supprimer la selection prod/actions/Push.html.twig + + prod:videoeditor:subtitleRequestTab:: submit + Soumettre la demande + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:: title + Sous-titrage Automatique + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Kind + Type + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Language destination + Langue de destination des sous-titres + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Provider + Fournisseur + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Source Audio language + Langue de la source audio + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleTab:: title + Edition de sous-titres + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Caption placeholder + Sous-titre + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: End time + Fin + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: No caption message + Pas de sous-titres définis pour cette langue + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Show for + Durée + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Start time + Début + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: add caption + Ajouter un sous-titre + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: copy to clipboard + Copier dans le presse papier + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: save + Sauvegarder + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: work on + Choisir une langue a éditer + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:message:: error + Erreur lors de la sauvegarde des sous-titres + Controller/Prod/LanguageController.php + + + prod:videoeditor:subtitletab:message:: success + Sous-titres sauvegardé + Controller/Prod/LanguageController.php + prod:workzone:basket:creation-date Date de création @@ -12184,21 +12313,21 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : subtitle alert - Nombre de caractères supérieur à 1024 + Nombre de caractères supérieur à 1024 actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : subtitle warning - 1024 Caractères Max + 1024 Caractères Max actions/publish/publish.html.twig actions/publish/publish_edit.html.twig - + publication : title alert - Nombre de caractères supérieur à 128 + Nombre de caractères supérieur à 128 actions/publish/publish.html.twig actions/publish/publish_edit.html.twig @@ -12373,7 +12502,7 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles reponses::document sans titre Sans titre - classes/record/adapter.php + classes/record/adapter.php report:: (connexions) @@ -12900,7 +13029,7 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles screenshot video Capture d'écran vidéo - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig select at least one user @@ -13273,35 +13402,35 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles Le thésaurus a été mis à jour web/thesaurus/load-thesaurus.html.twig - - thesaurus:: %hits% reponses retournees - %hits% enregistrements retournés - web/thesaurus/properties.html.twig + + thesaurus: Populate title + Indéxation + web/thesaurus/thesaurus.html.twig thesaurus:: A cet emplacement du thesaurus , un candidat du champ %cfield% ne peut etre accepte A cet emplacement du thesaurus, un terme candidat du champ %cfield% ne peut pas être accepté. - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter la branche comme Accepter la branche comme - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter le terme comme Accepter le terme comme : - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Ce champ a ete modifie ; ancienne branche : %old_branch% }} Ce champ a été modifié. Ancienne branche : %old_branch% - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: Confirmer la suppression du terme %s Confirmer la suppression du terme "%s" - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: Editer le thesaurus @@ -13312,6 +13441,7 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: Importer Importer web/thesaurus/import-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus @@ -13323,37 +13453,42 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: Lier la branche de thesaurus au champ Lier la branche de thesaurus au champ web/thesaurus/link-field-step1.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus au champ %branch% Lier la branche de thesaurus au champ %branch% - web/thesaurus/link-field-step1.html.twig + web/thesaurus/link-field-step1.html.twig thesaurus:: Nouveau synonyme Nouveau synonyme web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme Nouveau terme - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme specifique Nouveau terme spécifique web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Proprietes Propriétés - web/thesaurus/properties.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Vous n'avez acces a aucune base @@ -13364,59 +13499,65 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: accepter... Accepter web/thesaurus/accept.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: afficher les termes refuses Afficher les termes refusés - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: ce champ doit etre lie au thesaurus. La reindexation de la base est necessaire Ce champ doit être lié au Thésaurus. La ré-indexation de la base est nécessaire - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: ce champ n'est plus lie au thesaurus, les termes indexes et candidats seront supprimes Ce champ n'est plus lié au Thésaurus, les termes indexés et les candidats seront supprimés - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: comme synonyme de %fullpath_tgt_raw% en tant que synonyme de %fullpath_tgt_raw% - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: comme terme specifique Terme spécifique - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: commence par commence par - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus:: confirm populate + Lancer une indexation de l'intégralité de la base + web/thesaurus/thesaurus.html.twig thesaurus:: contexte Contexte - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: contient contient - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: corbeille Stock - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: deplacer le terme dans la corbeille ? Déplacer le terme dans le stock ? - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: enregistrement de la liste modifiee des mots candidats. @@ -13426,110 +13567,102 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: erreur lors de l'enregsitrement du fichier Erreur lors de l'enregistrement du fichier - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: est candidat en provenance des champs mais ne peut etre accepte a cet emplacement du thesaurus est candidat en provenance des champs mais ne peut être accepté à cet emplacement - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance des champs acceptables : est déjà candidat en provenance des champs acceptables : - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance du champ acceptable : est déjà candidat en provenance du champ acceptable - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est egal a est égal à - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: example exemple - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure la langue Inclure la langue - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure les hits Inclure le nombre de résultats - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : numeroter les lignes Numéroter les lignes - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export au format texte Texte web/thesaurus/export-text-dialog.html.twig - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig web/thesaurus/export-text.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: export en topics Thèmes web/thesaurus/export-topics.html.twig web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: exporter Exporter - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter a l'ecran pour la langue %piv% Exporter le thésaurus à l'ecran pour la langue %piv% - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter avec les synonymes sur la meme ligne Synonyme(s) sur la même ligne - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter avec une ligne par synonyme Une ligne par synonyme - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter vers topics pour toutes les langues Exporter pour toutes les langues - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: fichier genere : %filename% Fichier généré : %filename% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: fichier genere le %date% Fichier généré le %date% - Controller/Thesaurus/ThesaurusController.php - - - thesaurus:: hits - hits - web/thesaurus/properties.html.twig - - - thesaurus:: ids - Nom de l'utilisateur - web/thesaurus/properties.html.twig + Controller/Thesaurus/ThesaurusController.php thesaurus:: langue par default Langue par défaut - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: langue pivot @@ -13539,103 +13672,108 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: le lien au thesaurus doit etre modifie, la reindexation de la base est necessaire Le lien au thésaurus doit être modifié, la ré-indexation de la base est nécessaire - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: le terme Le terme - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: le terme %term% avec contexte %context% Le terme %term% avec le contexte %context% - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: le terme %term% sans contexte Le terme %term% sans contexte - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: n'est pas present dans les candidats n'est pas présent parmi les candidats - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: nouvelle branche Nouvelle branche - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: onglet stock Candidats - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: onglet thesaurus Thésaurus - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: options d'export : Export - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: pas de reindexation Pas de ré-indexation - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig + + + thesaurus:: populate button + Indexation + web/thesaurus/thesaurus.html.twig thesaurus:: presentation Options d'affichage - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branche ouvertes Reprendre l'affichage (statique) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branches refermables Reprendre l'affichage (navigable) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: question complete (avec operateurs) Question complète (avec opérateurs) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche Recherche - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche fulltext Texte-plein - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche thesaurus *:"query" Thésaurus *:"query" - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: refresh Rafraîchir - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig web/thesaurus/accept.html.twig thesaurus:: reindexation necessaire Ré-indexation nécessaire - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: reindexer la base apres l'import Ré-indexer après l'import - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: reindexer tous les enregistrements @@ -13650,12 +13788,12 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: removed_src removed_src - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: selectionner la provenance a accepter Sélectionner la provenance à accepter - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: suppression de la branche de mot candidats pour le champ %field% @@ -13676,102 +13814,135 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles thesaurus:: supprimer les liens des champs tbranch Supprimer le(s) lien(s) entre le(s) branche(s) et le(s) champ(s) - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: synonyme Synonyme - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: synonymes Synonymes - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: terme Terme - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: tout deployer - refermable Tout déployer (navigable) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout deployer - statique Tout déployer (statique) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout fermer Tout fermer (navigable) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + + + thesaurus::menu: Mettre dans le stock + Déplacer dans le stock + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau synonyme Nouveau synonyme - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau terme Nouveau terme - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: accepter Accepter - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: chercher Chercher - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: export topics Exporter comme thèmes - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: exporter Exporter - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: importer Importer - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: lier au champ Lier au champ - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: proprietes Propriétés - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: refuser Refuser - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: supprimer Supprimer - web/thesaurus/properties.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: Warning populate is in process to indexing databox + Attention une indexation de la base est deja en cours. Il est nécéssaire d'attendre la fin de cette indexation pour en relancer une nouvelle. + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: success message + thesaurus::populate: success message + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: export + Export des termes candidats + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: properties + Propriétés + web/thesaurus/thesaurus.html.twig + + + thesaurus:properties:: Mettre dans le stock + -> Stock + web/thesaurus/properties.html.twig + + + thesaurus:termePorperties:termeId + ID + web/thesaurus/properties.html.twig thumbnail validation Validation de la vignette - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -13830,7 +14001,7 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles validate Valider - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig diff --git a/resources/locales/messages.nl.xlf b/resources/locales/messages.nl.xlf index aa450457da..072c04a47a 100644 --- a/resources/locales/messages.nl.xlf +++ b/resources/locales/messages.nl.xlf @@ -1,6 +1,6 @@ - +
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. @@ -116,8 +116,8 @@ %basket_length% documents %basket_length% documenten mobile/lightbox/validate.html.twig - web/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig + web/lightbox/index.html.twig %countable% documents can not be modified. @@ -142,12 +142,12 @@ %docs_not_orderable% documents ne peuvent pas etre commandes %docs_not_orderable% documenten kunnen niet worden besteld - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %docs_orderable% documents commandes %docs_orderable% documenten besteld - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig %entry_length% documents @@ -382,17 +382,17 @@ (validation) a envoyer te versturen - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) envoyee verstuurd - web/lightbox/index.html.twig + web/lightbox/index.html.twig (validation) session terminee sessie beïndigd - web/lightbox/index.html.twig + web/lightbox/index.html.twig *Phraseanet Navigator* is a smartphone application that allow user to connect on this instance @@ -622,7 +622,7 @@ Accuse de reception indisponible, vous n'avez pas declare d'adresse email Ontvangstbevestiging niet beschikbaar is, u hebt geen emailadres opgegeven - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Action Forbidden : You are not the publisher @@ -782,27 +782,27 @@ Affichage au demarrage Tonen bij opstart - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive De beschrijvingsfiche tonen - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre De titel tonen - web/prod/index.html.twig + web/prod/index.html.twig Afficher le type Afficher le type - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status De statussen tonen - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone @@ -827,7 +827,7 @@ Aide Help - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -947,13 +947,13 @@ Alphabetic asc web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc Alphabetic desc web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1043,7 +1043,6 @@ Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php - Controller/Api/V3Controller.php Controller/Api/V1Controller.php Controller/Api/V1Controller.php web/admin/statusbit.html.twig @@ -1549,10 +1548,10 @@ By checking this box, you accept %beginning_link% Terms of Use %end_link% Door deze optie aan te klikken aanvaardt u %beginning_link% Gebruiksvoorwaarden %end_link% - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig By default it is available for admins @@ -1711,7 +1710,7 @@ Certains champs sont obligatoires, veuillez les remplir Sommige velden zijn verplicht, wilt u ze invullen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Ces informations sont directement fournies par la norme de metadonnees de ce champ : %norm_name% @@ -1748,7 +1747,7 @@ Chercher Zoeken - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig Choisir @@ -1777,7 +1776,7 @@ Civility Beleefdheid - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Clear @@ -1820,7 +1819,7 @@ Codec Audio Audio Codec web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Codec Video @@ -1848,7 +1847,7 @@ Collection order Collection order - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -2030,7 +2029,7 @@ Couleur de selection Kleur van de selectie - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2361,7 +2360,7 @@ Defined by admin Defined by admin - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2616,9 +2615,9 @@ Documents indisponibles Documenten niet beschikbaar web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Don't worry, You can modify your configuration later @@ -2997,7 +2996,7 @@ Entrez plusieurs adresses email en les separant par des points-virgules Geef meerdere email adressen op door ze te scheiden met een punt coma - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Entry removed from list @@ -3236,7 +3235,7 @@ Fichier ASCII tabule Fichier ASCII tabel - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig Fichiers envoyes @@ -3724,7 +3723,7 @@ Images par secondes Beelden per seconde web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig Imagette indisponible @@ -3745,8 +3744,8 @@ Include Business-fields in caption Business-fields opnemen in caption web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Incorrect please try again @@ -3927,9 +3926,9 @@ La sous resolution n'est pas disponible pour les documents suivants De onder resolutie is niet beschikbaar voor de volgende documenten - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig La taille maximale d'une video est de %duration% minutes. @@ -4230,7 +4229,7 @@ Ma derniere question Mijn laatste vraag - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4616,8 +4615,8 @@ No preview available Geen voorvertoning beschikbaar - actions/Tools/videoEditor.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig No receivers specified @@ -4928,7 +4927,7 @@ web/account/account.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Par %author% @@ -5189,7 +5188,7 @@ Presentation de vignettes de panier Presentatie van de thumbnails in het mandje - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5243,7 +5242,7 @@ Publications Publicaties web/common/menubar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/admin/tree.html.twig admin/publications/wrapper.html.twig @@ -5547,7 +5546,7 @@ Recevoir un accuse de reception a %my_email% Ontvangen van een bevestigingsmail van ontvangst van %my_email% - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Rechercher dans un champ date @@ -6227,7 +6226,7 @@ Size Grootte web/common/technical_datas.html.twig - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Download/prepare.html.twig @@ -6372,7 +6371,6 @@ Story Not Found Artikel niet gevonden - Controller/Api/V3Controller.php Controller/Api/V1Controller.php @@ -6440,7 +6438,7 @@ Success Gelukt api/auth/native_app_access_token.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Successful install @@ -6473,7 +6471,7 @@ Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php Controller/Admin/CollectionController.php - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig admin/collection/suggested_value.html.twig admin/collection/collection.html.twig web/admin/databases.html.twig @@ -6601,7 +6599,7 @@ Terms of Use Gebruiksvoorwaarden Form/Login/PhraseaRegisterForm.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Terms of service @@ -7007,12 +7005,12 @@ Un document commande Een document bestelling - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Un document ne peut etre commande Eén document kan niet worden besteld - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Unable to add file to Phraseanet @@ -7114,7 +7112,7 @@ Une question personnelle Een persoonlijke vraag - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7332,7 +7330,7 @@ VALIDATION VALIDATIE - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig @@ -7367,7 +7365,7 @@ mobile/lightbox/index.html.twig web/lightbox/validate.html.twig lightbox/IE6/validate.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Validations received @@ -7439,13 +7437,13 @@ Voici vos paniers Uw mandjes mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Voici vos validations en cours Een controle in proces mobile/lightbox/index.html.twig - web/lightbox/index.html.twig + web/lightbox/index.html.twig Votre adresse email @@ -7510,7 +7508,7 @@ Vous devez selectionner un type de sous definitions U moet een type thumbnail selecteren - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Vous devez specifier une adresse email et un mot de passe valides @@ -7604,7 +7602,7 @@ Warning ! Waarschuwing ! - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Warning, this database is not empty @@ -7683,7 +7681,7 @@ Would you like to receive an e-mail when your download is ready ? Wilt u een email ontvangen wanneer de download klaar is ? - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig Would you like to reset rights before applying the template? @@ -7780,7 +7778,7 @@ You can alternatively receive an email when the download is ready. Als alternatief kunt u een email ontvangen wanneer de download klaar is. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can choose only one record @@ -7795,7 +7793,7 @@ You can not directly download more than %max_download% Mo ; time to package all documents is too long U kan niet meer dan %max_download% Mb downloaded ; tijd om alle documenten compresseren is te lang - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You can not edit this story @@ -7891,7 +7889,7 @@ You must agree to the Terms of Use to continue. U moet de gebruiksvoorwaarden aanvaarden. - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig You must give a destination collection @@ -8027,7 +8025,7 @@ action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection @@ -8048,7 +8046,7 @@ action : exporter Exporteer web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig prod/preview/tools.html.twig @@ -8058,7 +8056,7 @@ prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : outils @@ -8084,7 +8082,7 @@ web/prod/toolbar.html.twig prod/WorkZone/Basket.html.twig prod/WorkZone/Story.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push @@ -8521,7 +8519,7 @@ Adres Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8536,7 +8534,7 @@ Postcode Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8560,7 +8558,7 @@ Email Event/Subscriber/RegistrationSubscriber.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8572,7 +8570,7 @@ Fax Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8609,7 +8607,7 @@ Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8631,7 +8629,7 @@ Postcode Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8642,7 +8640,7 @@ Event/Subscriber/RegistrationSubscriber.php Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig admin/user/registrations.html.twig web/admin/editusers.html.twig @@ -8659,7 +8657,7 @@ Bedrijf Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/users.html.twig web/admin/connected-users.html.twig @@ -8675,7 +8673,7 @@ admin::compte-utilisateur telephone Telefoon Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/connected-users.html.twig admin/user/registrations.html.twig @@ -8691,7 +8689,7 @@ Star Core/Provider/RegistrationServiceProvider.php Controller/Admin/UserController.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8787,7 +8785,7 @@ admin::compte-utilisateur:sexe: madame Mevrouw Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8795,7 +8793,7 @@ admin::compte-utilisateur:sexe: mademoiselle Jufrouw Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -8803,7 +8801,7 @@ admin::compte-utilisateur:sexe: monsieur De heer Core/Provider/RegistrationServiceProvider.php - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/account.html.twig web/admin/editusers.html.twig @@ -9134,7 +9132,7 @@ admin::workermanager: Rabbit config error admin::workermanager: Rabbit config error - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig admin::workermanager:tab:configuration: title @@ -9191,6 +9189,31 @@ admin::workermanager:tab:pullassets: title admin/worker-manager/index.html.twig + + admin::workermanager:tab:queueMonitor: Consumer count + admin::workermanager:tab:queueMonitor: Consumer count + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Message count + admin::workermanager:tab:queueMonitor: Message count + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: Refresh list + admin::workermanager:tab:queueMonitor: Refresh list + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: description + admin::workermanager:tab:queueMonitor: description + admin/worker-manager/worker_queue_monitor.html.twig + + + admin::workermanager:tab:queueMonitor: title + admin::workermanager:tab:queueMonitor: title + admin/worker-manager/index.html.twig + admin::workermanager:tab:searchengine: Databox to populate admin::workermanager:tab:searchengine: Databox to populate @@ -9356,9 +9379,9 @@ admin::workermanager:tab:workerinfo: created admin/worker-manager/worker_info.html.twig - - admin::workermanager:tab:workerinfo: databox_id - admin::workermanager:tab:workerinfo: databox_id + + admin::workermanager:tab:workerinfo: databox_name + admin::workermanager:tab:workerinfo: databox_name admin/worker-manager/worker_info.html.twig @@ -9404,12 +9427,12 @@ admin:worker Retrieve configuration error admin:worker Retrieve configuration error - admin/worker-manager/index.html.twig + admin/worker-manager/index.html.twig alert alert - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -9462,12 +9485,12 @@ bad character at line %line% bad character at line %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php bad encoding at line %line% bad encoding at line %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php base:: re-indexer @@ -9513,22 +9536,23 @@ Annuleer Controller/Prod/LanguageController.php Controller/Prod/LanguageController.php - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/link-field-step2.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step2.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/account/reset-email.html.twig Bridge/Dailymotion/video_modify.html.twig Bridge/Dailymotion/video_modify.html.twig @@ -9551,8 +9575,8 @@ boutton::chercher zoeken - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/prod/index.html.twig web/admin/users.html.twig @@ -9565,7 +9589,7 @@ boutton::commander Bestellen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::creer @@ -9593,13 +9617,13 @@ boutton::envoyer Verzenden - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::essayer Proberen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig boutton::exporter @@ -9610,10 +9634,10 @@ boutton::fermer Sluiten Controller/Prod/LanguageController.php - web/thesaurus/export-topics.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/properties.html.twig + web/thesaurus/export-topics.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/properties.html.twig web/thesaurus/link-field-step3.html.twig web/common/dialog_export.html.twig web/lightbox/sc_note.html.twig @@ -9761,7 +9785,7 @@ boutton::telecharger Downloaden - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig web/lightbox/feed_options_box.html.twig web/lightbox/sc_options_box.html.twig @@ -9769,7 +9793,7 @@ boutton::telecharger tous les documents Alle documenten downloaden web/lightbox/validate.html.twig - web/lightbox/feed.html.twig + web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -9784,16 +9808,17 @@ bevestigen Controller/Prod/LanguageController.php mobile/lightbox/note_form.html.twig - web/thesaurus/link-field-step1.html.twig - web/thesaurus/export-text-dialog.html.twig - web/thesaurus/accept.html.twig - web/thesaurus/import-dialog.html.twig - web/thesaurus/export-topics-dialog.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/link-field-step1.html.twig + web/thesaurus/export-text-dialog.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/import-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig web/account/access.html.twig web/account/account.html.twig web/account/reset-email.html.twig @@ -9818,7 +9843,7 @@ prod/Baskets/Reorder.html.twig prod/Baskets/Update.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/report/all_content.html.twig web/admin/setup.html.twig web/admin/dashboard.html.twig @@ -9930,7 +9955,7 @@ choisir kiezen - web/prod/index.html.twig + web/prod/index.html.twig admin/collection/create.html.twig admin/databox/databox.html.twig @@ -9948,12 +9973,12 @@ commande::deadline Deadline - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig commande::utilisation prevue Utilisation gepland - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig prod/orders/order_item.html.twig @@ -10136,7 +10161,7 @@ export:: FTP FTP web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: commande @@ -10147,7 +10172,7 @@ export:: envoi par mail Verstuur per mail web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export:: erreur : aucun document selectionne @@ -10163,7 +10188,7 @@ export::export-email: email-invalid export::export-email: email-invalid - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::ftp: reglages manuels @@ -10173,7 +10198,7 @@ export::mail: contenu du mail Inhoud van de mail - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::mail: destinataire @@ -10183,8 +10208,8 @@ export::mail: fichiers joint Toegevoegde bestanden - web/common/dialog_export.html.twig - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig + web/common/dialog_export.html.twig export::titre: nom original du document @@ -10196,6 +10221,11 @@ Titel van het document web/common/dialog_export.html.twig + + export:email:: acknowledgement info + export:email:: acknowledgement info + web/common/dialog_export.html.twig + failed to send mail email versturen niet gelukt @@ -10369,12 +10399,12 @@ index::advance_search: disable-facet index::advance_search: disable-facet - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet index::advance_search: facet - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order @@ -10394,7 +10424,7 @@ index::advance_search: hidden-facet-values-order index::advance_search: hidden-facet-values-order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits @@ -10444,12 +10474,12 @@ lightbox::See_less_feedback lightbox::See_less_feedback - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::See_more_feedback lightbox::See_more_feedback - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::list @@ -10460,60 +10490,61 @@ lightbox::recaptitulatif Beknopt mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig + web/lightbox/feed.html.twig lightbox::see_less_basket lightbox::see_less_basket - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox::see_more_basket lightbox::see_more_basket - web/lightbox/index.html.twig + web/lightbox/index.html.twig lightbox:feedback:sendreport:warnwindows:cancel lightbox:feedback:sendreport:warnwindows:cancel mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:message lightbox:feedback:sendreport:warnwindows:message mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_approved lightbox:feedback:sendreport:warnwindows:record_approved mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_rejected lightbox:feedback:sendreport:warnwindows:record_rejected mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:record_unexpressed lightbox:feedback:sendreport:warnwindows:record_unexpressed mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:title lightbox:feedback:sendreport:warnwindows:title mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox:feedback:sendreport:warnwindows:validate lightbox:feedback:sendreport:warnwindows:validate mobile/lightbox/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig login:: Changer mon adresse email @@ -10670,7 +10701,7 @@ no image selected geen beeld geselecteerd - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -10682,7 +10713,7 @@ notice mededeling - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig web/lightbox/feed.html.twig lightbox/IE6/validate.html.twig lightbox/IE6/feed.html.twig @@ -10967,7 +10998,7 @@ over-indent at line %line% over-indent at line %line% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre @@ -11160,7 +11191,7 @@ phraseanet:: language Taal - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig phraseanet:: password @@ -11183,7 +11214,7 @@ phraseanet:: prereglages Voorinstellingen - web/common/dialog_export.html.twig + web/common/dialog_export.html.twig phraseanet:: presse-papier @@ -11220,7 +11251,7 @@ web/thesaurus/load-thesaurus.html.twig web/thesaurus/load-thesaurus.html.twig web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/thesaurus/index.html.twig web/prod/tab_headers.html.twig prod/actions/edit_default.html.twig @@ -11228,12 +11259,12 @@ phraseanet:: tri Sorteren - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par date Op datum sorteren - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig web/prod/index.html.twig web/prod/index.html.twig web/prod/index.html.twig @@ -11310,7 +11341,7 @@ phraseanet::chargement Laden Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig prod/actions/edit_default.html.twig admin/collection/suggested_value.html.twig @@ -11330,7 +11361,7 @@ phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier Uw sessile werd afgesloten, gelieve opnieuw in te loggen Controller/Prod/LanguageController.php - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig web/admin/index.html.twig @@ -11393,7 +11424,7 @@ phraseanet::technique:: et en - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php phraseanet::temps:: a l'instant @@ -11479,17 +11510,17 @@ preview:: Description Beschrijving - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Historie - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Populariteit - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11691,7 +11722,7 @@ processing verwerken - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -11708,7 +11739,7 @@ prod::action:property title prod::action:property title - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:datefield_restriction_explanation @@ -11860,6 +11891,12 @@ String zoeken prod/actions/edit_default.html.twig + + prod::export: send mail notification + prod::export: send mail notification + web/lightbox/validate.html.twig + web/prod/index.html.twig + prod::facet:base_label prod::facet:base_label @@ -11883,22 +11920,22 @@ prod::notification: notification title prod::notification: notification title - web/prod/index.html.twig + web/prod/index.html.twig prod::push: List name can not be empty prod::push: List name can not be empty - web/prod/index.html.twig + web/prod/index.html.twig prod::push: New list title prod::push: New list title - web/prod/index.html.twig + web/prod/index.html.twig prod::push: add prod::push: add - web/prod/index.html.twig + web/prod/index.html.twig prod::push:push_set_title @@ -12054,7 +12091,7 @@ prod::videoTools:chapterTitle prod::videoTools:chapterTitle - web/prod/index.html.twig + web/prod/index.html.twig prod::workzone:Actions @@ -12127,6 +12164,96 @@ prod:push: delete selection prod/actions/Push.html.twig + + prod:videoeditor:subtitleRequestTab:: submit + prod:videoeditor:subtitleRequestTab:: submit + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:: title + prod:videoeditor:subtitleRequestTab:: title + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Kind + prod:videoeditor:subtitleRequestTab:label:: Kind + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Language destination + prod:videoeditor:subtitleRequestTab:label:: Language destination + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Provider + prod:videoeditor:subtitleRequestTab:label:: Provider + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleRequestTab:label:: Source Audio language + prod:videoeditor:subtitleRequestTab:label:: Source Audio language + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitleTab:: title + prod:videoeditor:subtitleTab:: title + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Caption placeholder + prod:videoeditor:subtitletab:: Caption placeholder + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: End time + prod:videoeditor:subtitletab:: End time + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: No caption message + prod:videoeditor:subtitletab:: No caption message + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Show for + prod:videoeditor:subtitletab:: Show for + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: Start time + prod:videoeditor:subtitletab:: Start time + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: add caption + prod:videoeditor:subtitletab:: add caption + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: copy to clipboard + prod:videoeditor:subtitletab:: copy to clipboard + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: save + prod:videoeditor:subtitletab:: save + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:: work on + prod:videoeditor:subtitletab:: work on + actions/Tools/videoEditor.html.twig + + + prod:videoeditor:subtitletab:message:: error + prod:videoeditor:subtitletab:message:: error + Controller/Prod/LanguageController.php + + + prod:videoeditor:subtitletab:message:: success + prod:videoeditor:subtitletab:message:: success + Controller/Prod/LanguageController.php + prod:workzone:basket:creation-date prod:workzone:basket:creation-date @@ -12373,7 +12500,7 @@ reponses::document sans titre Documenten zonder titel - classes/record/adapter.php + classes/record/adapter.php report:: (connexions) @@ -12900,7 +13027,7 @@ screenshot video schermafbeelding video - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig select at least one user @@ -13273,35 +13400,35 @@ thesaurus werd bijgewerkt web/thesaurus/load-thesaurus.html.twig - - thesaurus:: %hits% reponses retournees - thesaurus:: %hits% gekregen antwoorden - web/thesaurus/properties.html.twig + + thesaurus: Populate title + thesaurus: Populate title + web/thesaurus/thesaurus.html.twig thesaurus:: A cet emplacement du thesaurus , un candidat du champ %cfield% ne peut etre accepte thesaurus:: Een kandidaatveld %cfield% kan niet worden aanvaard op deze plaats van de thesaurus - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter la branche comme Aanvaardt de tak als - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Accepter le terme comme Aanvaard de term als - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: Ce champ a ete modifie ; ancienne branche : %old_branch% }} thesaurus:: Ce champ a ete modifie ; ancienne branche : %old_branch% }} - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: Confirmer la suppression du terme %s Bevestig verwijderinng van de term %s - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: Editer le thesaurus @@ -13312,6 +13439,7 @@ thesaurus:: Importer Importeren web/thesaurus/import-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus @@ -13323,37 +13451,42 @@ thesaurus:: Lier la branche de thesaurus au champ Link de tak van de thesaurus aan veld web/thesaurus/link-field-step1.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Lier la branche de thesaurus au champ %branch% thesaurus:: Link de thesaurus tak aan het veld %branch% - web/thesaurus/link-field-step1.html.twig + web/thesaurus/link-field-step1.html.twig thesaurus:: Nouveau synonyme Nieuw synoniem web/thesaurus/new-term.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme Nieuwe term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Nouveau terme specifique Nieuwe specifieke term web/thesaurus/new-term.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Proprietes Eigenschappen - web/thesaurus/properties.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: Vous n'avez acces a aucune base @@ -13364,59 +13497,65 @@ thesaurus:: accepter... Aanvaarden... web/thesaurus/accept.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: afficher les termes refuses toon de geweigerde termen - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: ce champ doit etre lie au thesaurus. La reindexation de la base est necessaire Dit veld dient aan de thesaurus gelinkt te worden. Herindexatie van de database is nodig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: ce champ n'est plus lie au thesaurus, les termes indexes et candidats seront supprimes Dit veld is niet meer aan de thesaurus gelinkt, de geïndexeerde termen en kandidaten zullen verwijderd worden - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: comme synonyme de %fullpath_tgt_raw% thesaurus:: als sienoniem van %fullpath_tgt_raw% - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: comme terme specifique als specifieke term - web/thesaurus/accept.html.twig - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: commence par beginnen met - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus:: confirm populate + thesaurus:: confirm populate + web/thesaurus/thesaurus.html.twig thesaurus:: contexte Inhoud - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: contient bevat - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: corbeille Prullemand - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: deplacer le terme dans la corbeille ? De term in de prullemand plaatsen ? - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: enregistrement de la liste modifiee des mots candidats. @@ -13426,110 +13565,102 @@ thesaurus:: erreur lors de l'enregsitrement du fichier Fout bij het bewaren van het bestand - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: est candidat en provenance des champs mais ne peut etre accepte a cet emplacement du thesaurus is kandidaat komende van het aanvaardbare velden maar kan niet op deze plaats in de thesaurus aanvaard worden - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance des champs acceptables : is reeds kandidaat komende van het aanvaardbare velden : - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est deja candidat en provenance du champ acceptable : is reeds kandidaat komende van het aanvaardbare veld : - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: est egal a thesaurus:: est egal a - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: example Voorbeeld - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure la langue De taal insluiten - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : inclure les hits De hits insluiten - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export : numeroter les lignes Nummer de lijnen - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: export au format texte Export in text format web/thesaurus/export-text-dialog.html.twig - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig web/thesaurus/export-text.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: export en topics Exporteer in topics web/thesaurus/export-topics.html.twig web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: exporter Exporteer - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter a l'ecran pour la langue %piv% thesaurus:: voor de taal %piv% naar het scherm exporteren - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: exporter avec les synonymes sur la meme ligne Exporteermet synoniemen op dezelfde lijn - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter avec une ligne par synonyme Exporteer met een lijn per synoniem - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: exporter vers topics pour toutes les langues Exporteer naar topics voor alle talen - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: fichier genere : %filename% thesaurus:: fichier genere : %filename% - Controller/Thesaurus/ThesaurusController.php + Controller/Thesaurus/ThesaurusController.php thesaurus:: fichier genere le %date% thesaurus:: fichier genere le %date% - Controller/Thesaurus/ThesaurusController.php - - - thesaurus:: hits - Hits - web/thesaurus/properties.html.twig - - - thesaurus:: ids - Ids - web/thesaurus/properties.html.twig + Controller/Thesaurus/ThesaurusController.php thesaurus:: langue par default Default taal - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: langue pivot @@ -13539,103 +13670,108 @@ thesaurus:: le lien au thesaurus doit etre modifie, la reindexation de la base est necessaire De link naar thesaurus moet gewijzigd worden, herindexatie van de database is nodig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: le terme De term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: le terme %term% avec contexte %context% thesaurus:: de term %term% met inhoud %context% - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: le terme %term% sans contexte thesaurus:: de term %term% zonder inhoud - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: n'est pas present dans les candidats is niet in de kandidaten aanwezeig - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: nouvelle branche Nieuwe tak - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: onglet stock stock tabblad - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: onglet thesaurus thesaurus tabblad - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: options d'export : Export opties : - web/thesaurus/export-text-dialog.html.twig + web/thesaurus/export-text-dialog.html.twig thesaurus:: pas de reindexation Geen herindexatie - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig + + + thesaurus:: populate button + thesaurus:: populate button + web/thesaurus/thesaurus.html.twig thesaurus:: presentation Presentatie - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branche ouvertes open takken - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: presentation : branches refermables Sluitbare takken - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: question complete (avec operateurs) Volledige vraag (met operatoren) - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche Zoeken - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche fulltext Fulltext zoeken - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: recherche thesaurus *:"query" thesaurus:: recherche thesaurus *:"query" - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: refresh vernieuw - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig web/thesaurus/accept.html.twig thesaurus:: reindexation necessaire Herindexatie is nodig - web/thesaurus/link-field-step2.html.twig + web/thesaurus/link-field-step2.html.twig thesaurus:: reindexer la base apres l'import Herindexeer de database na het importeren - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: reindexer tous les enregistrements @@ -13650,12 +13786,12 @@ thesaurus:: removed_src verwijderde_src - web/thesaurus/accept.html.twig + web/thesaurus/accept.html.twig thesaurus:: selectionner la provenance a accepter selecteer de te aanvaardbare bron - web/thesaurus/new-term.html.twig + web/thesaurus/new-term.html.twig thesaurus:: suppression de la branche de mot candidats pour le champ %field% @@ -13676,102 +13812,135 @@ thesaurus:: supprimer les liens des champs tbranch Verwijder de links van de tak velden - web/thesaurus/import-dialog.html.twig + web/thesaurus/import-dialog.html.twig thesaurus:: synonyme Synoniem - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: synonymes Synoniemen - web/thesaurus/properties.html.twig + web/thesaurus/properties.html.twig thesaurus:: terme Term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus:: tout deployer - refermable Alle implementeren - sluitbaar - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout deployer - statique Alle implementeren - statisch - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig thesaurus:: tout fermer Alle sluiten - web/thesaurus/export-topics-dialog.html.twig + web/thesaurus/export-topics-dialog.html.twig + + + thesaurus::menu: Mettre dans le stock + thesaurus::menu: Mettre dans le stock + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau synonyme Niew synoniem - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: Nouveau terme Nieuwe term - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: accepter aanvaarden - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: chercher zoeken - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: export topics exporteer topics - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: exporter exporteren - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: importer importeren - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: lier au champ linken aan veld - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: proprietes eigenschappen - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: refuser weigeren - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig thesaurus::menu: supprimer verwijderen - web/thesaurus/properties.html.twig - web/thesaurus/thesaurus.html.twig - web/thesaurus/thesaurus.html.twig + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: Warning populate is in process to indexing databox + thesaurus::populate: Warning populate is in process to indexing databox + web/thesaurus/thesaurus.html.twig + + + thesaurus::populate: success message + thesaurus::populate: success message + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: export + thesaurus:dialog:: export + web/thesaurus/thesaurus.html.twig + + + thesaurus:dialog:: properties + thesaurus:dialog:: properties + web/thesaurus/thesaurus.html.twig + + + thesaurus:properties:: Mettre dans le stock + thesaurus:properties:: Mettre dans le stock + web/thesaurus/properties.html.twig + + + thesaurus:termePorperties:termeId + thesaurus:termePorperties:termeId + web/thesaurus/properties.html.twig thumbnail validation thumbnail goedkeuring - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig @@ -13830,7 +13999,7 @@ validate OK - actions/Tools/videoEditor.html.twig + actions/Tools/videoEditor.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig actions/Tools/index.html.twig diff --git a/resources/locales/validators.de.xlf b/resources/locales/validators.de.xlf index 851556f2f9..b45769f4ae 100644 --- a/resources/locales/validators.de.xlf +++ b/resources/locales/validators.de.xlf @@ -1,6 +1,6 @@ - +
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. diff --git a/resources/locales/validators.en.xlf b/resources/locales/validators.en.xlf index 4fe4ed802c..d32c82b34e 100644 --- a/resources/locales/validators.en.xlf +++ b/resources/locales/validators.en.xlf @@ -1,6 +1,6 @@ - +
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. diff --git a/resources/locales/validators.fr.xlf b/resources/locales/validators.fr.xlf index 068cd23850..c098c5a095 100644 --- a/resources/locales/validators.fr.xlf +++ b/resources/locales/validators.fr.xlf @@ -1,6 +1,6 @@ - +
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. diff --git a/resources/locales/validators.nl.xlf b/resources/locales/validators.nl.xlf index b92c53b3c2..827cd96c29 100644 --- a/resources/locales/validators.nl.xlf +++ b/resources/locales/validators.nl.xlf @@ -1,6 +1,6 @@ - +
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. diff --git a/resources/proxies/__CG__AlchemyPhraseaModelEntitiesWorkerRunningJob.php b/resources/proxies/__CG__AlchemyPhraseaModelEntitiesWorkerRunningJob.php new file mode 100644 index 0000000000..b140004563 --- /dev/null +++ b/resources/proxies/__CG__AlchemyPhraseaModelEntitiesWorkerRunningJob.php @@ -0,0 +1,345 @@ +__initializer__ = $initializer; + $this->__cloner__ = $cloner; + } + + + + + + + + /** + * + * @return array + */ + public function __sleep() + { + if ($this->__isInitialized__) { + return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'databoxId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'recordId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'work', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'workOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'published', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'status']; + } + + return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'databoxId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'recordId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'work', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'workOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'published', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'status']; + } + + /** + * + */ + public function __wakeup() + { + if ( ! $this->__isInitialized__) { + $this->__initializer__ = function (WorkerRunningJob $proxy) { + $proxy->__setInitializer(null); + $proxy->__setCloner(null); + + $existingProperties = get_object_vars($proxy); + + foreach ($proxy->__getLazyProperties() as $property => $defaultValue) { + if ( ! array_key_exists($property, $existingProperties)) { + $proxy->$property = $defaultValue; + } + } + }; + + } + } + + /** + * + */ + public function __clone() + { + $this->__cloner__ && $this->__cloner__->__invoke($this, '__clone', []); + } + + /** + * Forces initialization of the proxy + */ + public function __load() + { + $this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []); + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific loading logic + */ + public function __isInitialized() + { + return $this->__isInitialized__; + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific loading logic + */ + public function __setInitialized($initialized) + { + $this->__isInitialized__ = $initialized; + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific loading logic + */ + public function __setInitializer(\Closure $initializer = null) + { + $this->__initializer__ = $initializer; + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific loading logic + */ + public function __getInitializer() + { + return $this->__initializer__; + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific loading logic + */ + public function __setCloner(\Closure $cloner = null) + { + $this->__cloner__ = $cloner; + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific cloning logic + */ + public function __getCloner() + { + return $this->__cloner__; + } + + /** + * {@inheritDoc} + * @internal generated method: use only when explicitly handling proxy specific loading logic + * @static + */ + public function __getLazyProperties() + { + return self::$lazyPropertiesDefaults; + } + + + /** + * {@inheritDoc} + */ + public function getId() + { + if ($this->__isInitialized__ === false) { + return (int) parent::getId(); + } + + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', []); + + return parent::getId(); + } + + /** + * {@inheritDoc} + */ + public function setDataboxId($databoxId) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDataboxId', [$databoxId]); + + return parent::setDataboxId($databoxId); + } + + /** + * {@inheritDoc} + */ + public function getDataboxId() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDataboxId', []); + + return parent::getDataboxId(); + } + + /** + * {@inheritDoc} + */ + public function setRecordId($recordId) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setRecordId', [$recordId]); + + return parent::setRecordId($recordId); + } + + /** + * {@inheritDoc} + */ + public function getRecordId() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getRecordId', []); + + return parent::getRecordId(); + } + + /** + * {@inheritDoc} + */ + public function setWork($work) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setWork', [$work]); + + return parent::setWork($work); + } + + /** + * {@inheritDoc} + */ + public function getWork() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getWork', []); + + return parent::getWork(); + } + + /** + * {@inheritDoc} + */ + public function setWorkOn($workOn) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setWorkOn', [$workOn]); + + return parent::setWorkOn($workOn); + } + + /** + * {@inheritDoc} + */ + public function getWorkOn() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getWorkOn', []); + + return parent::getWorkOn(); + } + + /** + * {@inheritDoc} + */ + public function getCreated() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCreated', []); + + return parent::getCreated(); + } + + /** + * {@inheritDoc} + */ + public function setPublished(\DateTime $published) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPublished', [$published]); + + return parent::setPublished($published); + } + + /** + * {@inheritDoc} + */ + public function getPublished() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPublished', []); + + return parent::getPublished(); + } + + /** + * {@inheritDoc} + */ + public function setStatus($status) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setStatus', [$status]); + + return parent::setStatus($status); + } + + /** + * {@inheritDoc} + */ + public function getStatus() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getStatus', []); + + return parent::getStatus(); + } + + /** + * {@inheritDoc} + */ + public function getWorkName() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getWorkName', []); + + return parent::getWorkName(); + } + +} diff --git a/resources/www/common/styles/main.scss b/resources/www/common/styles/main.scss index e232bde41c..ab639af0ce 100644 --- a/resources/www/common/styles/main.scss +++ b/resources/www/common/styles/main.scss @@ -164,3 +164,20 @@ $mainMenuLinkBackgroundHoverColor: transparent; } +.acceptDl-info { + background-color: #d9edf7; + border: 1px solid #bce8f1; + border-radius: 3px; + color: #3a87ad; + display: inline-block; + padding: 9px 24px 5px 9px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255,255,255,.5); + a, label { + color: #3a87ad!important; + } + a { + text-decoration: underline; + } +} + diff --git a/resources/www/lightbox/images/chevron-left-solid.svg b/resources/www/lightbox/images/chevron-left-solid.svg new file mode 100644 index 0000000000..41061c287f --- /dev/null +++ b/resources/www/lightbox/images/chevron-left-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/images/chevron-right-solid.svg b/resources/www/lightbox/images/chevron-right-solid.svg new file mode 100644 index 0000000000..6f3ecc4dc0 --- /dev/null +++ b/resources/www/lightbox/images/chevron-right-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/images/file-download-solid-blue.svg b/resources/www/lightbox/images/file-download-solid-blue.svg new file mode 100644 index 0000000000..bf3bfc4d65 --- /dev/null +++ b/resources/www/lightbox/images/file-download-solid-blue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/images/file-download-solid.svg b/resources/www/lightbox/images/file-download-solid.svg new file mode 100644 index 0000000000..c12919acc9 --- /dev/null +++ b/resources/www/lightbox/images/file-download-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/images/home-solid.svg b/resources/www/lightbox/images/home-solid.svg new file mode 100644 index 0000000000..6978af21f6 --- /dev/null +++ b/resources/www/lightbox/images/home-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/images/pause-solid.svg b/resources/www/lightbox/images/pause-solid.svg new file mode 100644 index 0000000000..7cf2497164 --- /dev/null +++ b/resources/www/lightbox/images/pause-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/images/play-solid.svg b/resources/www/lightbox/images/play-solid.svg new file mode 100644 index 0000000000..bcd81f7a6d --- /dev/null +++ b/resources/www/lightbox/images/play-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/www/lightbox/styles/main.scss b/resources/www/lightbox/styles/main.scss index 94613502fa..2ebb0a831f 100644 --- a/resources/www/lightbox/styles/main.scss +++ b/resources/www/lightbox/styles/main.scss @@ -99,7 +99,7 @@ img { overflow: scroll; } .display_id { - top: 5px; + top: 0; margin: 0 0 0 5px; } } @@ -134,8 +134,8 @@ img { background-color: #212121; } .display_id { - top: 4px; - left: 8px; + top: 5px; + left: 5px; } .agreement { position: absolute; @@ -173,7 +173,9 @@ img { .display_id { background-color: #FFFFFF; - padding: 3px 6px; + padding: 3.5px 6px; + min-width: 15px; + text-align: center; font-weight: bold; z-index: 99; color: #212121; @@ -214,6 +216,28 @@ img { overflow: hidden; background-color: #1F1E1B; color: #BFBFBF; + .PNB.choices { + position: relative; + } + .comment_button { + text-align: center; + background: #353430; + margin: 0; + width: 118px; + position: absolute; + left: 50%; + transform: translateX(-50%); + padding: 7px; + font-size: 14px; + line-height: 14px; + border: 0; + bottom: -30px; + .fa-comment.icon-white { + font-size: 15px; + line-height: 18px; + margin-right: 10px; + } + } } #basket_options { @@ -230,6 +254,11 @@ img { #basket_infos .user_infos { height: 120px; top: auto; + bottom: 43px; +} +.lightbox-icon { + width: 10px; + padding-bottom: 1px; } #basket_infos { @@ -284,7 +313,7 @@ img { } #right_column .right_column_wrapper { - //top: 30px; + top: 30px; bottom: 45px; } @@ -296,6 +325,7 @@ img { #record_infos { overflow-x: hidden; overflow-y: auto; + margin-bottom: 80px; } #record_compare { @@ -303,7 +333,10 @@ img { top: auto; left: auto; } - +.download-feed{ + color: #fff; + font-size: 22px; +} #record_compare .header, #record_compare .lightbox_container { left: 5px; } @@ -546,10 +579,14 @@ table th i { } .basket_downloader { - background-color: #1F1E1B; + background-color: #ffffff; margin: 0 10px; - padding: 2px; + padding: 4px 0; border: 0; + transition: 0.3s all; + &:hover { + background-color: #e6e6e6; + } } hr { @@ -562,6 +599,13 @@ hr { .report { margin: 0 10px; vertical-align: bottom; +}.back-home { + margin: 0 10px; + vertical-align: bottom; + width: 20px; + background: #1F1E1B; + padding: 5px; + border-radius: 3px; } /* @@ -669,3 +713,25 @@ a.btn-info { } /** End Lightbox summary modal**/ + +.humane{ + position: fixed; + z-index: 100000; + font-family: Ubuntu, Arial, sans-serif; + text-align: center; + font-size: 15px; + top: 100px; + right: 70px; + width: 400px; + background: #2d2d72; + color: rgb(255, 255, 255); + box-shadow: rgb(0, 0, 0) 0px 4px 4px -4px; + transform: translateY(-40px); + transition: all 0.3s ease-out 0s; + padding: 10px; + border-radius: 5px; +} + +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { + padding: 0!important; +} \ No newline at end of file diff --git a/resources/www/thesaurus/styles/main.scss b/resources/www/thesaurus/styles/main.scss index 68460e295c..f611bd69c0 100644 --- a/resources/www/thesaurus/styles/main.scss +++ b/resources/www/thesaurus/styles/main.scss @@ -1,3 +1,40 @@ +$blue-tsr: #2196f3; +$grey-tsr: #aaa; +$iconsPath: '../../../assets/thesaurus/images/'; +@mixin blue-btn { + color: #fff; + background: $blue-tsr; + padding: 5px; + font-weight: bold; + cursor: pointer; + transition: all 0.3s; + border-color: darken($blue-tsr, 20%); + min-width: 120px; + margin: 0 10px; + position: relative; + z-index: 2; + &:hover { + background: darken($blue-tsr, 20%); + } +} + +@mixin grey-btn { + color: #000; + background: $grey-tsr; + padding: 5px; + font-weight: bold; + cursor: pointer; + transition: all 0.3s; + border-color: darken($grey-tsr, 20%); + min-width: 120px; + margin: 0 10px; + position: relative; + z-index: 2; + &:hover { + background: darken($grey-tsr, 20%); + } +} + BODY, TD, INPUT { FONT-FAMILY: Verdana, Arial, helvetica, sans-serif; font-size: 12px; @@ -8,11 +45,11 @@ FORM { margin: 0px; } -BODY.dialog { +.dialog { background-color: ButtonFace; } -BODY.dialog .x3Dbox { +.x3Dbox { position: relative; top: 0px; left: 0px; @@ -24,7 +61,7 @@ BODY.dialog .x3Dbox { border-right: 1px solid #ffffff; } -BODY.dialog .x3Dbox .title { +.x3Dbox .title { position: absolute; top: -9px; left: 20px; @@ -58,7 +95,7 @@ H3, H4 { display: inline; } -DIV.thbox { +.thbox { BACKGROUND-COLOR: #ffffff; border-top: 1px solid #d0d0d0; border-left: 1px solid #d0d0d0; @@ -69,7 +106,7 @@ DIV.thbox { z-index: 1; } -DIV.thbox .onglet { +.thbox .onglet { position: absolute; top: -22px; left: 5px; @@ -87,20 +124,20 @@ DIV.thbox .onglet { z-index: 2; } -DIV.thbox HR { +.thbox HR { COLOR: #d0d0d0; height: 1px; margin: 0px; padding: 0px; } -DIV.glossaire { +.glossaire { position: relative; left: 4px; white-space: nowrap; } -DIV.glossaire U { +.glossaire U { position: relative; left: 1px; TEXT-DECORATION: none; @@ -116,30 +153,30 @@ DIV.glossaire U { cursor: pointer; } -DIV.glossaire U.nots { +.glossaire U.nots { border: 1px solid #F0F0F0; BACKGROUND-COLOR: #F0F0F0; cursor: default; } -DIV.glossaire DIV.S_ { +.glossaire .S_ { cursor: pointer; BACKGROUND-COLOR: #99a2d0; COLOR: #FFFFFF; } -DIV.glossaire DIV.s_ { +.glossaire .s_ { cursor: pointer; } -DIV.glossaire DIV.r0_ { +.glossaire .r0_ { } -DIV.glossaire DIV.r1_ { +.glossaire .r1_ { COLOR: #FF4000; } -DIV.glossaire DIV.OB { +.glossaire .OB { position: relative; top: 0px; padding-top: 0px; @@ -149,11 +186,11 @@ DIV.glossaire DIV.OB { border-bottom: 1px solid #cccccc; } -DIV.glossaire DIV.ob { +.glossaire .ob { display: none; } -DIV.glossaire DIV.hb { +.glossaire .hb { position: relative; top: 0px; padding-top: 0px; @@ -163,46 +200,46 @@ DIV.glossaire DIV.hb { border-bottom: 1px solid #cccccc; } -DIV.glossaire DIV.ctroot { +.glossaire .ctroot { position: relative; top: 0px; padding: 0px; border: none; } -DIV.glossaire P.sy { +.glossaire P.sy { } -DIV.glossaire P.ta { +.glossaire P.ta { } -DIV.glossaire P.tc { +.glossaire P.tc { } -DIV.glossaire P.tce { +.glossaire P.tce { } -DIV.tableContainer { +.tableContainer { margin: 2px; border: 1px solid #000000; background-color: #ffffff; } -DIV.tableContainerDragOver { +.tableContainerDragOver { margin: 0px; border: 3px solid #99a2d0; } -DIV.tableContainer DIV.tbody { +.tableContainer .tbody { position: relative; overflow: auto; } -DIV.tableContainer TABLE { +.tableContainer TABLE { table-layout: fixed; } -DIV.tableContainer THEAD TH { +.tableContainer THEAD TH { background: #e0ece8; border-left: 1px solid #ffffff; border-right: 1px solid #c0ccc8; @@ -216,15 +253,15 @@ DIV.tableContainer THEAD TH { margin: 0px; } -DIV.tableContainer TBODY TR.s_ { +.tableContainer TBODY TR.s_ { } -DIV.tableContainer TBODY TR.S_ { +.tableContainer TBODY TR.S_ { BACKGROUND-COLOR: #99a2d0; COLOR: #FFFFFF; } -DIV.tableContainer TBODY TD { +.tableContainer TBODY TD { border-left: 1px solid #ffffff; border-right: 1px solid #cccccc; font-weight: normal; @@ -235,77 +272,68 @@ DIV.tableContainer TBODY TD { margin: 0px; } -DIV.menu { +.menu { FONT-FAMILY: Arial, helvetica, sans-serif; font-size: 12px; - border-left: 1px solid #ffffff; - border-top: 1px solid #ffffff; - border-right: 2px solid #000000; - border-bottom: 2px solid #000000; padding: 0px; margin: 0px; visibility: hidden; position: absolute; - top: 0px; - left: 0px; - background-color: #d4d0c8; + top: 0; + left: 0; + background-color: #535353; } -DIV.menu IMG { - padding: 0px; - margin: 0px; +.menu IMG { + padding-right: 2px; + margin: 0; position: relative; - left: -10px; - top: 2px; } -DIV.menu A { +.menu p { + padding: 2px; + position: relative; +} + +.menu a { font-size: 12px; display: block; position: relative; text-decoration: none; - color: #000000; - padding-top: 1px; - padding-bottom: 1px; - padding-left: 13px; - padding-right: 3px; - overflow: hidden; - border: none 0px #FFFFFF; - white-space: nowrap; + color: #fff; + padding: 5px 6px; + background-color: #535353; + } -DIV.menu A:hover { +.menu A:hover { font-size: 12px; display: block; position: relative; text-decoration: none; color: #ffffff; - background-color: #000080; + background-color: #884c92; } -DIV.menu A.disabled { +.menu A.disabled { font-size: 12px; display: block; position: relative; text-decoration: none; - color: #A0A0A0; - padding-top: 1px; - padding-bottom: 1px; - padding-left: 13px; - padding-right: 3px; + color: lighten(#535353, 10%); overflow: hidden; } -DIV.menu A.disabled:hover { +.menu A.disabled:hover { font-size: 12px; display: block; position: relative; text-decoration: none; - color: #A0A0A0; - background-color: #d4d0c8; + color: lighten(#535353, 5%); + background-color: #535353; } -DIV.menu .line { +.menu .line { display: block; position: relative; height: 0px; @@ -316,3 +344,90 @@ DIV.menu .line { border-top: 1px solid #555555; border-bottom: 1px solid #ffffff; } + +#delete_sy { + background: orange; + border: 1px solid darken(orange,20%); + color: #fff; + font-weight: bold; + padding: 1px 10px; + margin-left: 12px; + &.disabled { + background: grey; + } +} + +#DLG_PROPERTIES > #syMenu { + display: none; +} + +.thesaurus_confirm_bottom_block { + margin-top: 20px; + text-align: center; + #ifrsample & { + display: none; + } +} + +.thesaurus-page { + .validate_btn { + @include blue-btn; + } + .cancel_btn { + @include grey-btn; + } + + .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: none; + } + .ui-dialog-buttonset { + text-align: center; + } + .ui-button { + &:nth-child(1) { + @include grey-btn + } + &:nth-child(2) { + @include blue-btn + } + } +} + +.text-center { + text-align: center; + padding-bottom: 10px; +} + +.populate_btn { + position: absolute; + background: #884c92; + z-index: 2; + right: 50px; + top: 50px; + font-size: 14px; + color: #fff; + padding: 7px 10px; + font-weight: bold; + border: 1px solid #d0d0d0; + cursor: pointer; + + &:hover { + background: darken(#884c92, 20%); + } +} + +.thesaurus-page { + .ui-widget-header { + border: 1px solid darken(#884c92, 20%); + background: #884c92; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +} + +#flagsMenu p { + color: #fff; + padding: 0 10px; +} \ No newline at end of file diff --git a/templates/web/admin/worker-manager/index.html.twig b/templates/web/admin/worker-manager/index.html.twig index 19c4270d35..50d27d9b6e 100644 --- a/templates/web/admin/worker-manager/index.html.twig +++ b/templates/web/admin/worker-manager/index.html.twig @@ -35,6 +35,11 @@ {{ 'admin::workermanager:tab:metadata: title' |trans }} + @@ -48,6 +53,7 @@
+
diff --git a/templates/web/admin/worker-manager/worker_info.html.twig b/templates/web/admin/worker-manager/worker_info.html.twig index d5b089e449..d516f6bacb 100644 --- a/templates/web/admin/worker-manager/worker_info.html.twig +++ b/templates/web/admin/worker-manager/worker_info.html.twig @@ -42,7 +42,7 @@ - + @@ -57,7 +57,7 @@ {% for workerRow in workerRunningJob | sort | reverse %} - + diff --git a/templates/web/admin/worker-manager/worker_queue_monitor.html.twig b/templates/web/admin/worker-manager/worker_queue_monitor.html.twig new file mode 100644 index 0000000000..b7b75d8b67 --- /dev/null +++ b/templates/web/admin/worker-manager/worker_queue_monitor.html.twig @@ -0,0 +1,42 @@ +{% if not reload %} +

{{ 'admin::workermanager:tab:queueMonitor: description' |trans }}

+ + + +
{{ 'admin::workermanager:tab:workerinfo: databox_id' | trans }}{{ 'admin::workermanager:tab:workerinfo: databox_name' | trans }} {{ 'admin::workermanager:tab:workerinfo: record_id' | trans }} {{ 'admin::workermanager:tab:workerinfo: work' | trans }} {{ 'admin::workermanager:tab:workerinfo: work_on' | trans }}
{{ workerRow.databoxId }}{{ workerRow.databoxId | sbas_labels(app) }} {{ workerRow.recordId }} {{ workerRow.getWorkName }} {{ workerRow.workOn }}
+ + + + + + + + + +{% endif %} + {% for queueStatus in queuesStatus %} + + + + + + {% endfor %} + +{% if not reload %} + +
{{ 'admin::workermanager:tab:queueMonitor: Message count' |trans }}{{ 'admin::workermanager:tab:queueMonitor: Consumer count' |trans }}
{{ queueStatus.queueName }}{{ queueStatus.messageCount }}{{ queueStatus.consumerCount }}
+ + +{% endif %} diff --git a/templates/web/common/dialog_export.html.twig b/templates/web/common/dialog_export.html.twig index a7b1abc21b..4200c98bdf 100644 --- a/templates/web/common/dialog_export.html.twig +++ b/templates/web/common/dialog_export.html.twig @@ -152,9 +152,8 @@ {% endif %} {{ _self.choose_title('download', choose_export_title, default_export_title) }} - {% if app['conf'].get(['registry', 'actions', 'tou-validation-required-for-export']) == true %} -
+