From 1798dfdff8098f70a614493b749dfefe389563b0 Mon Sep 17 00:00:00 2001 From: aynsix Date: Fri, 10 Dec 2021 11:35:29 +0300 Subject: [PATCH 1/2] PHRAS-3595 can notify email on update --- Phraseanet-production-client/config/config.js | 2 +- .../dist/production.js | 38 +++++++++++++ .../dist/production.min.js | 38 +++++++++++++ .../src/components/publication/index.js | 38 +++++++++++++ .../Controller/Prod/FeedController.php | 44 ++++++++++++++- .../Phrasea/ControllerProvider/Prod/Feed.php | 3 + .../Event/Subscriber/FeedEntrySubscriber.php | 55 ++++++++++++------- lib/Alchemy/Phrasea/Core/PhraseaEvents.php | 1 + .../Phrasea/Twig/PhraseanetExtension.php | 2 +- .../prod/actions/publish/publish.html.twig | 17 +++--- .../actions/publish/publish_edit.html.twig | 14 +++++ 11 files changed, 223 insertions(+), 29 deletions(-) diff --git a/Phraseanet-production-client/config/config.js b/Phraseanet-production-client/config/config.js index d2e18c8049..a7b0d4b99c 100644 --- a/Phraseanet-production-client/config/config.js +++ b/Phraseanet-production-client/config/config.js @@ -13,5 +13,5 @@ module.exports = { setupDir: _root + 'tests/setup/node.js', karmaConf: _root + 'config/karma.conf.js', // change this version when you change JS file for lazy loading - assetFileVersion: 33 + assetFileVersion: 34 }; diff --git a/Phraseanet-production-client/dist/production.js b/Phraseanet-production-client/dist/production.js index 44cdf41b93..0c8d4d18c8 100644 --- a/Phraseanet-production-client/dist/production.js +++ b/Phraseanet-production-client/dist/production.js @@ -3298,6 +3298,7 @@ var publication = function publication(services) { var $feed_title_warning = (0, _jquery2.default)('.feed_title_warning', modal.getDomElement()); var $feed_subtitle_field = (0, _jquery2.default)('#feed_add_subtitle', modal.getDomElement()); var $feed_subtitle_warning = (0, _jquery2.default)('.feed_subtitle_warning', modal.getDomElement()); + var $feed_add_notify = (0, _jquery2.default)('#feed_add_notify', modal.getDomElement()); feedFieldValidator($feed_title_field, $feed_title_warning, 128); feedFieldValidator($feed_subtitle_field, $feed_subtitle_warning, 1024); @@ -3305,6 +3306,11 @@ var publication = function publication(services) { $feeds_item.removeClass('selected'); (0, _jquery2.default)(this).addClass('selected'); (0, _jquery2.default)('input[name="feed_id"]', $form).val((0, _jquery2.default)('input', this).val()); + if ((0, _jquery2.default)('#modal_feed #feed_add_notify').is(':checked')) { + getUserCount(); + } else { + (0, _jquery2.default)('#publication-notify-message').empty(); + } }).hover(function () { (0, _jquery2.default)(this).addClass('hover'); }, function () { @@ -3337,9 +3343,41 @@ var publication = function publication(services) { } }); + (0, _jquery2.default)('#modal_feed #feed_add_notify').on('click', function () { + var $this = (0, _jquery2.default)(this); + + if ($this.is(':checked')) { + getUserCount(); + } else { + (0, _jquery2.default)('#publication-notify-message').empty(); + } + }); + return; }; + var getUserCount = function getUserCount() { + _jquery2.default.ajax({ + type: 'POST', + url: '/prod/feeds/notify/count/', + dataType: 'json', + data: { + feed_id: (0, _jquery2.default)('#modal_feed input[name="feed_id"]').val() + }, + beforeSend: function beforeSend() { + (0, _jquery2.default)('#publication-notify-message').empty().html('loading'); + }, + success: function success(data) { + if (data.success) { + (0, _jquery2.default)('#publication-notify-message').empty().append(data.message); + } else { + (0, _jquery2.default)('#publication-notify-message').empty().append(data.message); + (0, _jquery2.default)('#modal_feed #feed_add_notify').prop('checked', false); + } + } + }); + }; + var onSubmitPublication = function onSubmitPublication() { var $dialog = _dialog2.default.get(1); var error = false; diff --git a/Phraseanet-production-client/dist/production.min.js b/Phraseanet-production-client/dist/production.min.js index 44cdf41b93..0c8d4d18c8 100644 --- a/Phraseanet-production-client/dist/production.min.js +++ b/Phraseanet-production-client/dist/production.min.js @@ -3298,6 +3298,7 @@ var publication = function publication(services) { var $feed_title_warning = (0, _jquery2.default)('.feed_title_warning', modal.getDomElement()); var $feed_subtitle_field = (0, _jquery2.default)('#feed_add_subtitle', modal.getDomElement()); var $feed_subtitle_warning = (0, _jquery2.default)('.feed_subtitle_warning', modal.getDomElement()); + var $feed_add_notify = (0, _jquery2.default)('#feed_add_notify', modal.getDomElement()); feedFieldValidator($feed_title_field, $feed_title_warning, 128); feedFieldValidator($feed_subtitle_field, $feed_subtitle_warning, 1024); @@ -3305,6 +3306,11 @@ var publication = function publication(services) { $feeds_item.removeClass('selected'); (0, _jquery2.default)(this).addClass('selected'); (0, _jquery2.default)('input[name="feed_id"]', $form).val((0, _jquery2.default)('input', this).val()); + if ((0, _jquery2.default)('#modal_feed #feed_add_notify').is(':checked')) { + getUserCount(); + } else { + (0, _jquery2.default)('#publication-notify-message').empty(); + } }).hover(function () { (0, _jquery2.default)(this).addClass('hover'); }, function () { @@ -3337,9 +3343,41 @@ var publication = function publication(services) { } }); + (0, _jquery2.default)('#modal_feed #feed_add_notify').on('click', function () { + var $this = (0, _jquery2.default)(this); + + if ($this.is(':checked')) { + getUserCount(); + } else { + (0, _jquery2.default)('#publication-notify-message').empty(); + } + }); + return; }; + var getUserCount = function getUserCount() { + _jquery2.default.ajax({ + type: 'POST', + url: '/prod/feeds/notify/count/', + dataType: 'json', + data: { + feed_id: (0, _jquery2.default)('#modal_feed input[name="feed_id"]').val() + }, + beforeSend: function beforeSend() { + (0, _jquery2.default)('#publication-notify-message').empty().html('loading'); + }, + success: function success(data) { + if (data.success) { + (0, _jquery2.default)('#publication-notify-message').empty().append(data.message); + } else { + (0, _jquery2.default)('#publication-notify-message').empty().append(data.message); + (0, _jquery2.default)('#modal_feed #feed_add_notify').prop('checked', false); + } + } + }); + }; + var onSubmitPublication = function onSubmitPublication() { var $dialog = _dialog2.default.get(1); var error = false; diff --git a/Phraseanet-production-client/src/components/publication/index.js b/Phraseanet-production-client/src/components/publication/index.js index cfa78ad65a..748032471b 100644 --- a/Phraseanet-production-client/src/components/publication/index.js +++ b/Phraseanet-production-client/src/components/publication/index.js @@ -261,6 +261,7 @@ const publication = (services) => { let $feed_title_warning = $('.feed_title_warning', modal.getDomElement()); let $feed_subtitle_field = $('#feed_add_subtitle', modal.getDomElement()); let $feed_subtitle_warning = $('.feed_subtitle_warning', modal.getDomElement()); + let $feed_add_notify = $('#feed_add_notify', modal.getDomElement()); feedFieldValidator($feed_title_field,$feed_title_warning, 128); feedFieldValidator($feed_subtitle_field,$feed_subtitle_warning, 1024); @@ -268,6 +269,11 @@ const publication = (services) => { $feeds_item.removeClass('selected'); $(this).addClass('selected'); $('input[name="feed_id"]', $form).val($('input', this).val()); + if ($('#modal_feed #feed_add_notify').is(':checked')) { + getUserCount(); + } else { + $('#publication-notify-message').empty(); + } }).hover(function () { $(this).addClass('hover'); }, function () { @@ -302,9 +308,41 @@ const publication = (services) => { } }); + $('#modal_feed #feed_add_notify').on('click', function() { + let $this = $(this); + + if ($this.is(':checked')) { + getUserCount(); + } else { + $('#publication-notify-message').empty(); + } + }); + return; }; + var getUserCount = function () { + $.ajax({ + type: 'POST', + url: '/prod/feeds/notify/count/', + dataType: 'json', + data: { + feed_id: $('#modal_feed input[name="feed_id"]').val(), + }, + beforeSend: function () { + $('#publication-notify-message').empty().html('loading'); + }, + success: function (data) { + if (data.success) { + $('#publication-notify-message').empty().append(data.message); + } else { + $('#publication-notify-message').empty().append(data.message); + $('#modal_feed #feed_add_notify').prop('checked', false); + } + } + }); + }; + const onSubmitPublication = () => { var $dialog = dialog.get(1); var error = false; diff --git a/lib/Alchemy/Phrasea/Controller/Prod/FeedController.php b/lib/Alchemy/Phrasea/Controller/Prod/FeedController.php index 96a32d883c..031be21ebf 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/FeedController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/FeedController.php @@ -79,6 +79,10 @@ class FeedController extends Controller ->setPublisher($publisher) ->setSubtitle($request->request->get('subtitle', '')); + if ($request->request->get('notify')) { + $entry->setNotifyEmailOn(new \DateTime()); + } + $feed->addEntry($entry); $publishing = RecordsRequest::fromRequest($this->app, $request, true, [], [\ACL::BAS_CHUPUB]); @@ -118,7 +122,37 @@ class FeedController extends Controller ); } - public function updateEntryAction(Request $request, $id) { + public function notifyCountAction(Request $request) + { + /** @var Feed|null $feed */ + $feed = $this->getFeedRepository()->find($request->request->get('feed_id')); + + /** @var \User_Query $Query */ + $Query = $this->app['phraseanet.user-query']; + + $Query->include_phantoms(true) + ->include_invite(false) + ->include_templates(false) + ->email_not_null(true); + + if ($feed !== null && $feed->getCollection($this->app)) { + $Query->on_base_ids([$feed->getCollection($this->app)->get_base_id()]); + } elseif ($feed == null) { + return $this->app->json([ + 'success' => false, + 'message' => $this->app->trans('publication:: no feed selected') + ]); + } + + return $this->app->json([ + 'success' => true, + 'message' => $this->app->trans('publication:: %count% users to notify', ['%count%' => $Query->execute()->get_total()]) + ]); + } + + public function updateEntryAction(Request $request, $id) + { + /** @var FeedEntry $entry */ $entry = $this->getFeedEntryRepository()->find($id); if (null === $entry) { @@ -138,6 +172,10 @@ class FeedController extends Controller ->setSubtitle($request->request->get('subtitle', '')) ; + if ($request->request->get('notify')) { + $entry->setNotifyEmailOn(new \DateTime()); + } + $current_feed_id = $entry->getFeed()->getId(); $new_feed_id = $request->request->get('feed_id', $current_feed_id); if ($current_feed_id !== (int)$new_feed_id) { @@ -170,6 +208,10 @@ class FeedController extends Controller $manager->persist($entry); $manager->flush(); + $this->dispatch(PhraseaEvents::FEED_ENTRY_UPDATE, new FeedEntryEvent( + $entry, $request->request->get('notify') + )); + return $this->app->json([ 'error' => false, 'message' => 'success', diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Feed.php b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Feed.php index c0cbf70347..0c0d3929f4 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Feed.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Feed.php @@ -75,6 +75,9 @@ class Feed implements ControllerProviderInterface, ServiceProviderInterface ->bind('prod_feeds_subscribe_feed') ->assert('id', '\d+'); + $controllers->post('/notify/count/', 'controller.prod.feed:notifyCountAction') + ->bind('prod_feeds_notify_count'); + return $controllers; } } diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/FeedEntrySubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/FeedEntrySubscriber.php index e67cee0cb0..5c1b8e529d 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/FeedEntrySubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/FeedEntrySubscriber.php @@ -13,6 +13,7 @@ namespace Alchemy\Phrasea\Core\Event\Subscriber; use Alchemy\Phrasea\Core\Event\FeedEntryEvent; use Alchemy\Phrasea\Core\PhraseaEvents; +use Alchemy\Phrasea\Model\Entities\FeedEntry; use Alchemy\Phrasea\Model\Entities\User; use Alchemy\Phrasea\Model\Entities\WebhookEvent; use Alchemy\Phrasea\Model\Manipulator\TokenManipulator; @@ -23,20 +24,51 @@ class FeedEntrySubscriber extends AbstractNotificationSubscriber { public function onCreate(FeedEntryEvent $event) { - $entry = $event->getFeedEntry(); - $params = [ - 'entry_id' => $entry->getId(), + 'entry_id' => $event->getFeedEntry()->getId(), 'notify_email' => $event->hasEmailNotification(), ]; $this->app['manipulator.webhook-event']->create( WebhookEvent::NEW_FEED_ENTRY, WebhookEvent::FEED_ENTRY_TYPE, - array_merge(array('feed_id' => $entry->getFeed()->getId()), $params), + array_merge(array('feed_id' => $event->getFeedEntry()->getFeed()->getId()), $params), [] ); + $this->sendEmailNotification($event); + } + + public function onUpdate(FeedEntryEvent $event) + { + $this->sendEmailNotification($event); + } + + public static function getSubscribedEvents() + { + return [ + PhraseaEvents::FEED_ENTRY_CREATE => 'onCreate', + PhraseaEvents::FEED_ENTRY_UPDATE => 'onUpdate' + ]; + } + + /** + * @return TokenManipulator + */ + private function getTokenManipulator() + { + return $this->app['manipulator.token']; + } + + private function sendEmailNotification(FeedEntryEvent $event) + { + $entry = $event->getFeedEntry(); + + $params = [ + 'entry_id' => $entry->getId(), + 'notify_email' => $event->hasEmailNotification(), + ]; + $datas = json_encode($params); $Query = $this->app['phraseanet.user-query']; @@ -98,19 +130,4 @@ class FeedEntrySubscriber extends AbstractNotificationSubscriber } while (count($results) > 0); } - - public static function getSubscribedEvents() - { - return [ - PhraseaEvents::FEED_ENTRY_CREATE => 'onCreate', - ]; - } - - /** - * @return TokenManipulator - */ - private function getTokenManipulator() - { - return $this->app['manipulator.token']; - } } diff --git a/lib/Alchemy/Phrasea/Core/PhraseaEvents.php b/lib/Alchemy/Phrasea/Core/PhraseaEvents.php index 1e1daf714b..fe7687cbb6 100644 --- a/lib/Alchemy/Phrasea/Core/PhraseaEvents.php +++ b/lib/Alchemy/Phrasea/Core/PhraseaEvents.php @@ -31,6 +31,7 @@ final class PhraseaEvents const ORDER_DENY = 'order.deny'; const FEED_ENTRY_CREATE = 'feed-entry.create'; + const FEED_ENTRY_UPDATE = 'feed-entry.update'; const REGISTRATION_CREATE = 'registration.create'; const REGISTRATION_AUTOREGISTER = 'registration.autoregister'; diff --git a/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php b/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php index c8ea73e364..a03823aaab 100644 --- a/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php +++ b/lib/Alchemy/Phrasea/Twig/PhraseanetExtension.php @@ -59,7 +59,7 @@ class PhraseanetExtension extends \Twig_Extension { return [ // change this version when you change JS file to force the navigation to reload js file - 'assetFileVersion' => 33 + 'assetFileVersion' => 34 ]; } diff --git a/templates/web/prod/actions/publish/publish.html.twig b/templates/web/prod/actions/publish/publish.html.twig index bb40dc8dc2..73b4149679 100644 --- a/templates/web/prod/actions/publish/publish.html.twig +++ b/templates/web/prod/actions/publish/publish.html.twig @@ -33,13 +33,7 @@ {% set title = publishing.basket().getName() %} {% set desc = publishing.basket().getDescription() %} {% endif %} - {% if app['conf'].get(['registry', 'actions', 'enable-feed-notification']) %} - - {% endif %} + @@ -54,6 +48,15 @@
+ {% if app['conf'].get(['registry', 'actions', 'enable-feed-notification']) %} + + {% endif %}
diff --git a/templates/web/prod/actions/publish/publish_edit.html.twig b/templates/web/prod/actions/publish/publish_edit.html.twig index 5ae2362315..017d33929c 100644 --- a/templates/web/prod/actions/publish/publish_edit.html.twig +++ b/templates/web/prod/actions/publish/publish_edit.html.twig @@ -40,6 +40,20 @@
+ {% if app['conf'].get(['registry', 'actions', 'enable-feed-notification']) %} + {% if entry.getNotifyEmailOn() is null %} + + {% else %} + {{ 'publication:: notification done on'| trans }} : {{ app['date-formatter'].getDateTranslated(entry.getNotifyEmailOn()) }} + {% endif %} + {% endif %}
From 92f7631a233f29029a93ef3d98ab2a8a43941cd0 Mon Sep 17 00:00:00 2001 From: aynsix Date: Fri, 10 Dec 2021 14:39:35 +0300 Subject: [PATCH 2/2] add translation --- resources/locales/messages.de.xlf | 80 +++++++++++++++++------------ resources/locales/messages.en.xlf | 80 +++++++++++++++++------------ resources/locales/messages.fr.xlf | 80 +++++++++++++++++------------ resources/locales/messages.nl.xlf | 80 +++++++++++++++++------------ resources/locales/validators.de.xlf | 2 +- resources/locales/validators.en.xlf | 2 +- resources/locales/validators.fr.xlf | 2 +- resources/locales/validators.nl.xlf | 2 +- 8 files changed, 196 insertions(+), 132 deletions(-) diff --git a/resources/locales/messages.de.xlf b/resources/locales/messages.de.xlf index 5d825436a5..12f8b279eb 100644 --- a/resources/locales/messages.de.xlf +++ b/resources/locales/messages.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. @@ -239,7 +239,7 @@ %quantity% records added %quantity% Datensätze hinzugefügt Controller/Prod/BasketController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php %quantity% records moved @@ -620,7 +620,7 @@ Action Forbidden : You are not the publisher Aktion verboten: Sie sind nicht der Veröffentlicher - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php Actions @@ -975,7 +975,7 @@ Controller/Prod/LazaretController.php Controller/Prod/BasketController.php Controller/Prod/ToolsController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Controller/Admin/DataboxesController.php Controller/Admin/DataboxController.php Controller/Admin/DataboxController.php @@ -1045,8 +1045,8 @@ Ein Fehler ist aufgetreten Order/Controller/ProdOrderController.php Controller/Prod/BasketController.php - Controller/Api/V1Controller.php - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php @@ -3321,8 +3321,8 @@ Fils disponibles Verfügbare Threads - actions/publish/publish.html.twig - actions/publish/publish_edit.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Filter @@ -4771,7 +4771,8 @@ Notify users about this publication Die Benutzer über diese Veröffentlichung informieren - actions/publish/publish.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Nous vous rappelons qu'il est de votre responsabilité de vous assurer que le contenu de la vidéo que vous allez mettre en ligne est conforme aux conditions d'utilisations @@ -5604,7 +5605,7 @@ Record Not Found Datensatz wurde nicht gefunden - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Record removed from basket @@ -5614,7 +5615,7 @@ Record removed from story Datensatz wurde vom Bericht entfernt - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Record_id @@ -6417,7 +6418,7 @@ Story Not Found Bericht wurde nicht gefunden - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Story created @@ -6437,7 +6438,7 @@ Story updated Bericht wurde aktualisiert - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Story_id @@ -6853,7 +6854,7 @@ This feed is public Dieses Feed ist öffentlich - actions/publish/publish.html.twig + actions/publish/publish.html.twig admin/publications/list.html.twig @@ -7849,7 +7850,7 @@ You can not edit this story Sie können diesen Bericht nicht bearbeiten - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php You can not upload files @@ -13269,56 +13270,71 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben publication : autheur Autor - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : email autheur Autor E-Mail - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : sous titre Untertitel - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle alert 1024]]> - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle warning Höchtens 1024 Zeichen - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title alert 128]]> - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title warning Höchstens 128 Zeichen - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : titre Titel - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig + + publication:: %count% users to notify + publication:: %count% users to notify + Controller/Prod/FeedController.php + + + publication:: no feed selected + publication:: no feed selected + Controller/Prod/FeedController.php + + + publication:: notification done on + publication:: notification done on + actions/publish/publish_edit.html.twig + publication::Voici votre fil RSS personnel. Il vous permettra d'etre tenu au courrant des publications. Hier finden Sie Ihr eigenes RSS Feed. Dank des RSS werden Sie über neue Veröffentlichungen automatisch informiert - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications:: s'abonner aux publications @@ -13329,20 +13345,20 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben publications::Ne le partagez pas, il est strictement confidentiel Dieses RSS nicht weiterleiten - es ist vertraulich - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::copy URL kopieren - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::votre rss personnel Ihr eigenes RSS - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php push::mail:: Rapport de validation de %user% pour %title% @@ -13473,7 +13489,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) diff --git a/resources/locales/messages.en.xlf b/resources/locales/messages.en.xlf index 2cb560d6c6..9cf1067eb0 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. @@ -239,7 +239,7 @@ %quantity% records added %quantity% records added Controller/Prod/BasketController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php %quantity% records moved @@ -620,7 +620,7 @@ Action Forbidden : You are not the publisher Forbidden: You are not the publisher - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php Actions @@ -976,7 +976,7 @@ Controller/Prod/LazaretController.php Controller/Prod/BasketController.php Controller/Prod/ToolsController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Controller/Admin/DataboxesController.php Controller/Admin/DataboxController.php Controller/Admin/DataboxController.php @@ -1046,8 +1046,8 @@ An error occurred Order/Controller/ProdOrderController.php Controller/Prod/BasketController.php - Controller/Api/V1Controller.php - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php @@ -3324,8 +3324,8 @@ Fils disponibles Available feed - actions/publish/publish.html.twig - actions/publish/publish_edit.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Filter @@ -4774,7 +4774,8 @@ Notify users about this publication Notify users about this publication. - actions/publish/publish.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Nous vous rappelons qu'il est de votre responsabilité de vous assurer que le contenu de la vidéo que vous allez mettre en ligne est conforme aux conditions d'utilisations @@ -5607,7 +5608,7 @@ Record Not Found Record not found - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Record removed from basket @@ -5617,7 +5618,7 @@ Record removed from story Record removed from story - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Record_id @@ -6420,7 +6421,7 @@ Story Not Found Story not found - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Story created @@ -6440,7 +6441,7 @@ Story updated Story updated - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Story_id @@ -6856,7 +6857,7 @@ This feed is public This feed is public - actions/publish/publish.html.twig + actions/publish/publish.html.twig admin/publications/list.html.twig @@ -7852,7 +7853,7 @@ You can not edit this story You cannot edit this story - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php You can not upload files @@ -13277,56 +13278,71 @@ It is possible to place several search areas publication : autheur Author - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : email autheur Author's e-mail - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : sous titre Sub Title - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle alert 1024]]> - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle warning 1024 Characters Max - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title alert 128]]> - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title warning 128 Characters Max - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : titre Title - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig + + publication:: %count% users to notify + publication:: %count% users to notify + Controller/Prod/FeedController.php + + + publication:: no feed selected + publication:: no feed selected + Controller/Prod/FeedController.php + + + publication:: notification done on + publication:: notification done on + actions/publish/publish_edit.html.twig + publication::Voici votre fil RSS personnel. Il vous permettra d'etre tenu au courrant des publications. This is your personnal rss flow, it will inform you about publications - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications:: s'abonner aux publications @@ -13337,20 +13353,20 @@ It is possible to place several search areas publications::Ne le partagez pas, il est strictement confidentiel Don't share it, it's yours only - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::copy Copy URL - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::votre rss personnel Your own rss - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php push::mail:: Rapport de validation de %user% pour %title% @@ -13481,7 +13497,7 @@ It is possible to place several search areas reponses::document sans titre Untitled - classes/record/adapter.php + classes/record/adapter.php report:: (connexions) diff --git a/resources/locales/messages.fr.xlf b/resources/locales/messages.fr.xlf index d835cf678f..a36659f85c 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. @@ -239,7 +239,7 @@ %quantity% records added %quantity% enregistrements ajoutés Controller/Prod/BasketController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php %quantity% records moved @@ -620,7 +620,7 @@ Action Forbidden : You are not the publisher Action non autorisée: Vous n'êtes pas la personne qui a publié - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php Actions @@ -975,7 +975,7 @@ Controller/Prod/LazaretController.php Controller/Prod/BasketController.php Controller/Prod/ToolsController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Controller/Admin/DataboxesController.php Controller/Admin/DataboxController.php Controller/Admin/DataboxController.php @@ -1045,8 +1045,8 @@ Une erreur est survenue Order/Controller/ProdOrderController.php Controller/Prod/BasketController.php - Controller/Api/V1Controller.php - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php @@ -3321,8 +3321,8 @@ Fils disponibles Fils disponibles - actions/publish/publish.html.twig - actions/publish/publish_edit.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Filter @@ -4771,7 +4771,8 @@ Notify users about this publication Notifier les utilisateurs à propos de cette publication. - actions/publish/publish.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Nous vous rappelons qu'il est de votre responsabilité de vous assurer que le contenu de la vidéo que vous allez mettre en ligne est conforme aux conditions d'utilisations @@ -5606,7 +5607,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Record Not Found Enregistrement non trouvé - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Record removed from basket @@ -5616,7 +5617,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Record removed from story Enregistrement supprimé du reportage - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Record_id @@ -6419,7 +6420,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Story Not Found Reportage inconnu - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Story created @@ -6439,7 +6440,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Story updated Reportage mis à jour - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Story_id @@ -6855,7 +6856,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis This feed is public Ce flux est public - actions/publish/publish.html.twig + actions/publish/publish.html.twig admin/publications/list.html.twig @@ -7851,7 +7852,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis You can not edit this story Vous ne disposez pas des droits suffisants pour éditer ce reportage - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php You can not upload files @@ -13280,56 +13281,71 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles publication : autheur Auteur - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : email autheur Adresse e-mail de l'auteur - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : sous titre Sous-titre - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle alert Nombre de caractères supérieur à 1024 - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle warning 1024 Caractères Max - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title alert Nombre de caractères supérieur à 128 - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title warning 128 Caractères Max - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : titre Titre de la publication - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig + + publication:: %count% users to notify + publication:: %count% users to notify + Controller/Prod/FeedController.php + + + publication:: no feed selected + publication:: no feed selected + Controller/Prod/FeedController.php + + + publication:: notification done on + publication:: notification done on + actions/publish/publish_edit.html.twig + publication::Voici votre fil RSS personnel. Il vous permettra d'etre tenu au courrant des publications. Voici votre fil RSS personnel. Il vous permettra d'être tenu informé des publications. - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications:: s'abonner aux publications @@ -13340,20 +13356,20 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles publications::Ne le partagez pas, il est strictement confidentiel Ne le partagez pas, il est strictement confidentiel - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::copy Copier l'url - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::votre rss personnel Votre rss personnel - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php push::mail:: Rapport de validation de %user% pour %title% @@ -13484,7 +13500,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) diff --git a/resources/locales/messages.nl.xlf b/resources/locales/messages.nl.xlf index c0f2a7d4e9..12c0b0ab4c 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. @@ -239,7 +239,7 @@ %quantity% records added %quantity% records added Controller/Prod/BasketController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php %quantity% records moved @@ -620,7 +620,7 @@ Action Forbidden : You are not the publisher Verboden actie : U bent niet de publisher - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php Actions @@ -977,7 +977,7 @@ Controller/Prod/LazaretController.php Controller/Prod/BasketController.php Controller/Prod/ToolsController.php - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Controller/Admin/DataboxesController.php Controller/Admin/DataboxController.php Controller/Admin/DataboxController.php @@ -1047,8 +1047,8 @@ Er is een fout opgetreden Order/Controller/ProdOrderController.php Controller/Prod/BasketController.php - Controller/Api/V1Controller.php - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Controller/Admin/SearchEngineController.php Controller/Admin/DataboxController.php Controller/Admin/CollectionController.php @@ -3333,8 +3333,8 @@ Fils disponibles Beschikbare paden - actions/publish/publish.html.twig - actions/publish/publish_edit.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Filter @@ -4783,7 +4783,8 @@ Notify users about this publication Meld gebruikers over deze publicatie - actions/publish/publish.html.twig + actions/publish/publish.html.twig + actions/publish/publish_edit.html.twig Nous vous rappelons qu'il est de votre responsabilité de vous assurer que le contenu de la vidéo que vous allez mettre en ligne est conforme aux conditions d'utilisations @@ -5616,7 +5617,7 @@ Record Not Found Document niet gevonden - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Record removed from basket @@ -5626,7 +5627,7 @@ Record removed from story Record uit de story verwijderd - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Record_id @@ -6429,7 +6430,7 @@ Story Not Found Artikel niet gevonden - Controller/Api/V1Controller.php + Controller/Api/V1Controller.php Story created @@ -6449,7 +6450,7 @@ Story updated Story updated - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php Story_id @@ -6865,7 +6866,7 @@ This feed is public Deze feed is publiek - actions/publish/publish.html.twig + actions/publish/publish.html.twig admin/publications/list.html.twig @@ -7861,7 +7862,7 @@ You can not edit this story U kan deze story niet bewerken - Controller/Prod/StoryController.php + Controller/Prod/StoryController.php You can not upload files @@ -13280,56 +13281,71 @@ publication : autheur Auteur - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : email autheur Email auteur - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : sous titre Onder titel - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle alert publication : subtitle alert - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : subtitle warning publication : subtitle warning - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title alert publication : title alert - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : title warning publication : title warning - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig publication : titre Titel - actions/publish/publish.html.twig + actions/publish/publish.html.twig actions/publish/publish_edit.html.twig + + publication:: %count% users to notify + publication:: %count% users to notify + Controller/Prod/FeedController.php + + + publication:: no feed selected + publication:: no feed selected + Controller/Prod/FeedController.php + + + publication:: notification done on + publication:: notification done on + actions/publish/publish_edit.html.twig + publication::Voici votre fil RSS personnel. Il vous permettra d'etre tenu au courrant des publications. Hier uw persoonlijke RSS feed. Deze laat u toe om op de hoogte te blijven van de publicaties. - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications:: s'abonner aux publications @@ -13340,20 +13356,20 @@ publications::Ne le partagez pas, il est strictement confidentiel Deel deze niet, hij is strikt confidentieel - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::copy publications::copy - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php publications::votre rss personnel Uw persoonlijke rss feed - Controller/Prod/FeedController.php - Controller/Prod/FeedController.php + Controller/Prod/FeedController.php + Controller/Prod/FeedController.php push::mail:: Rapport de validation de %user% pour %title% @@ -13484,7 +13500,7 @@ reponses::document sans titre Documenten zonder titel - classes/record/adapter.php + classes/record/adapter.php report:: (connexions) diff --git a/resources/locales/validators.de.xlf b/resources/locales/validators.de.xlf index 626ecbdb22..cde6d7c45d 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 d5e1888e85..414652d8e7 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 d27b76c978..6217776adf 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 6e13e61321..880a444f1d 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.