diff --git a/VERSIONS b/VERSIONS
index 4be27e1e9728fdb901a7d9757b6cf0fb810f647a..ee6f2e3895ad019f08c29522465c1236facedfad 100644
--- a/VERSIONS
+++ b/VERSIONS
@@ -1,3 +1,27 @@
+09/05/2017 - v7.9.17
+
+ - ticket #59718 : Intégration de l'enregistrement d'applications et d'authentification via OAuth
+
+ - ticket #59638 : Newsletter: Correction d'un bug envoyant les newsletters en ignorant les modifications depuis leur dernière prévisualisation.
+
+
+02/05/2017 - v7.9.16
+
+ - ticket #55142 : ajout de mécanismes d'analyse du déroulement du moissonnage des ressources numériques
+
+ - ticket #59808 : PNB Dilicom: lorsqu'un n'est pas connecté en tant qu'abonné, le widget de prévisualisation s'affiche quand même
+
+ - ticket #59760 : Retour à l'alignement centré du formulaire de connexion
+
+ - ticket #57888 : Correction de la relecture de vieux profils de données
+
+ - ticket #59686 : Force l'extension .epub pour le téléchargement d'EPUBs de la bibliothèques numérique
+
+ - ticket #57923 : Correction de la recherche des ressources numériques depuis Nanook
+
+ - ticket #59813 : correction de la prise en compte du CSS personnalisé du profil sur la page d'accueil avec "utilisation du CSS parent" décoché.
+
+
 24/04/2017 - v7.9.14 - 7.9.15
 
  - ticket #56034 : Renommage du module "formation" en "activité".
@@ -16,7 +40,6 @@
 
 
 
-
 18/04/2017 - v7.9.13
 
  - ticket #59392 : Résultat de recherche : Correction de la disparition des facettes lors de l'usage simultané des domaines et des filtres par profils
diff --git a/application/modules/admin/controllers/HarvestController.php b/application/modules/admin/controllers/HarvestController.php
index 217841aa3b4df02193745f57bcb7d7a3b7614810..3d25ef73c97b0d4203cf9f34d612d83db115a2af 100644
--- a/application/modules/admin/controllers/HarvestController.php
+++ b/application/modules/admin/controllers/HarvestController.php
@@ -231,10 +231,8 @@ class Admin_HarvestController extends ZendAfi_Controller_Action {
       return;
     }
 
-    $logger = new Zend_Log();
-    $logger->addWriter(new Zend_Log_Writer_Stream('php://output'));
+    $logger = new Class_Cata_LogVolatile();
 
-    ob_start();
     $logger->info('Début du moissonnage');
 
     $service->setLogger($logger);
@@ -243,7 +241,7 @@ class Admin_HarvestController extends ZendAfi_Controller_Action {
 
     $logger->info('Fin du moissonnage');
 
-    $this->view->log = ob_get_clean();
+    $this->view->log = implode('<br>', $logger->getLines());;
   }
 
 
diff --git a/application/modules/admin/views/scripts/catalogue/tester.phtml b/application/modules/admin/views/scripts/catalogue/tester.phtml
index eb4830e5ee19f2fa14c0368a11e05930ca723ed8..3ae8ee9066a6b8a0f3dfb1087ef859de84707a18 100644
--- a/application/modules/admin/views/scripts/catalogue/tester.phtml
+++ b/application/modules/admin/views/scripts/catalogue/tester.phtml
@@ -49,6 +49,6 @@ if($this->notices)
                        ->setUrl($this->url(['action' => 'edit',
                                             'id_catalogue' => $this->catalogue->getId()]))
                        ->setImage($this->tagImg(Class_Admin_Skin::current()
-                                                     ->renderIconUrlOn('buttons',
+                                                     ->getIconUrl('buttons',
                                                                        'configuration'))));
     ?>
diff --git a/application/modules/admin/views/scripts/cms/delete.phtml b/application/modules/admin/views/scripts/cms/delete.phtml
index 26c27c3c32e30635e06b6af342d74bcc3433fd90..43b2ec9291a807ec4bfa0bbe1688ed9571c535c1 100644
--- a/application/modules/admin/views/scripts/cms/delete.phtml
+++ b/application/modules/admin/views/scripts/cms/delete.phtml
@@ -24,7 +24,7 @@ echo $this->Button((new Class_Entity())
                    ->setUrl($this->url(['action' => 'force-delete']))
                    ->setText($this->_('Supprimer'))
                    ->setImage($this->tagImg(Class_Admin_Skin::current()
-                                            ->renderIconUrlOn('buttons', 'remove'))));
+                                            ->getIconUrl('buttons', 'remove'))));
 
 echo $this->Button_Back((new Class_Entity())
                    ->setUrl($this->url(['module' => 'admin',
diff --git a/application/modules/admin/views/scripts/custom-fields-report/edit.phtml b/application/modules/admin/views/scripts/custom-fields-report/edit.phtml
index ae45eb7654227c6adfb6e660e9befde25aed94a5..92ba235c820ba175f5912c71518d3a1d9281dc36 100644
--- a/application/modules/admin/views/scripts/custom-fields-report/edit.phtml
+++ b/application/modules/admin/views/scripts/custom-fields-report/edit.phtml
@@ -3,7 +3,7 @@ echo $this->renderForm($this->form,
                        ['prepend' => [$this->button(
   (new Class_Entity())->setText($this->_('Générer'))
                       ->setAttribs(['id' => 'generate'])
-                      ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('actions',
+                      ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('actions',
                                                                                             'test'),
                                                ['style' => 'filter: invert();'])))]]);
 
diff --git a/application/modules/admin/views/scripts/custom-fields/index.phtml b/application/modules/admin/views/scripts/custom-fields/index.phtml
index 0375c7adf30d4169ea26291af7b95f41f5d60b61..16df233e50a44fb5f9afd6cad153b664a540c1e2 100644
--- a/application/modules/admin/views/scripts/custom-fields/index.phtml
+++ b/application/modules/admin/views/scripts/custom-fields/index.phtml
@@ -2,7 +2,7 @@
 echo $this->button((new Class_Entity())
                    ->setText($this->_('Types de champs personnalisés'))
                    ->setUrl($this->url(['controller' => 'custom-fields-meta']))
-                   ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('buttons', 'configuration'))));
+                   ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('buttons', 'configuration'))));
 
 echo $this->customFieldsCategories($this->model);
 ?>
diff --git a/application/modules/admin/views/scripts/frbr-link/index.phtml b/application/modules/admin/views/scripts/frbr-link/index.phtml
index fb17a6471a6e8aba48dbf227ef6835c510d4e68a..946e1288a0b3ac9adfae8264427107f40b79bbf8 100644
--- a/application/modules/admin/views/scripts/frbr-link/index.phtml
+++ b/application/modules/admin/views/scripts/frbr-link/index.phtml
@@ -2,7 +2,7 @@
 echo $this->button((new Class_Entity())
                    ->setText($this->_('Gérer les types de relation'))
                    ->setUrl($this->url(['controller' => 'frbr-linktype']))
-                   ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('buttons',
+                   ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('buttons',
                                                                                          'configuration'))));
 
 echo $this->Button_New((new Class_Entity())
diff --git a/application/modules/admin/views/scripts/lieu/index.phtml b/application/modules/admin/views/scripts/lieu/index.phtml
index e65b8ddafd073f8a15970acbd0663c1aab8e15b4..8403cfa75cbba711cc670b7adbe2e7dd86826a8c 100644
--- a/application/modules/admin/views/scripts/lieu/index.phtml
+++ b/application/modules/admin/views/scripts/lieu/index.phtml
@@ -5,7 +5,7 @@ echo $this->Button_New((new Class_Entity())
 echo $this->button((new Class_Entity())
                        ->setText($this->_('Mettre à jour les coordonnées des lieux'))
                        ->setUrl($this->url(['action' => 'update-coordinates']))
-                       ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('buttons',
+                       ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('buttons',
                                                                                              'generate'))));
 
 
diff --git a/application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml b/application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml
index f03b739561472300d3ef491a0bf6fc5c34eb8134..c1f138dbf63313d5e078902022172c874b89a68e 100644
--- a/application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml
+++ b/application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml
@@ -11,7 +11,7 @@ echo $this->button((new Class_Entity())
                    ->setAttribs(['data-popup' => 'true',
                                  'onclick' => ''])
                    ->setImage($this->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('actions',
+                                     ->getIconUrl('actions',
                                                        'add_user'),
                                             ['style' => 'filter: invert();'])));
 
diff --git a/application/modules/admin/views/scripts/print/index.phtml b/application/modules/admin/views/scripts/print/index.phtml
index 92f464068280d0c380dbad0e13b460a054b38e63..2e5e11bcbb543ba88beb5b6272801683b8857632 100644
--- a/application/modules/admin/views/scripts/print/index.phtml
+++ b/application/modules/admin/views/scripts/print/index.phtml
@@ -3,7 +3,7 @@ echo $this->Button_New((new Class_Entity())->setText($this->_('Créer')));
 
 echo $this->button((new Class_Entity())
                          ->setImage($this->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons',
+                                     ->getIconUrl('buttons',
                                                        'generate')))
                          ->setText($this->_('Générer'))
                          ->setUrl($this->url(['controller' => 'print',
diff --git a/application/modules/admin/views/scripts/systeme/cacheimages.phtml b/application/modules/admin/views/scripts/systeme/cacheimages.phtml
index 25134595fabb964226e229b8a07d4a49782aeab2..e29579cd306351343dc984e75d3e5a58b15e14ef 100644
--- a/application/modules/admin/views/scripts/systeme/cacheimages.phtml
+++ b/application/modules/admin/views/scripts/systeme/cacheimages.phtml
@@ -15,17 +15,17 @@ echo'<h2>Actions</h2>';
 echo $this->button(
   (new Class_Entity())->setText($this->_('Vider la totalité du cache'))
                       ->setUrl($this->url(['mode' => 'reset_all']))
-                      ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('actions', 'delete'),
+                      ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('actions', 'delete'),
                                              ['style' => 'filter: invert();'])));
 echo $this->button(
   (new Class_Entity())->setText($this->_('Réinitialiser les vignettes non reconnues'))
                       ->setUrl($this->url(['mode' => 'reset_no']))
-                      ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('buttons', 'generate'))));
+                      ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('buttons', 'generate'))));
 
 echo $this->button(
   (new Class_Entity())->setText($this->_('Constitution du cache'))
                       ->setAttribs(['onclick' => 'makeCacheImages(); return false;'])
-                      ->setImage($this->tagImg(Class_Admin_Skin::current()->renderIconUrlOn('actions', 'down'),
+                      ->setImage($this->tagImg(Class_Admin_Skin::current()->getIconUrl('actions', 'down'),
                                                ['style' => 'filter: invert();'])));
 
 // Constitution du cache des images
diff --git a/application/modules/api/controllers/UserController.php b/application/modules/api/controllers/UserController.php
new file mode 100644
index 0000000000000000000000000000000000000000..2a512d43f495387bf0249695baac0262a64a93c8
--- /dev/null
+++ b/application/modules/api/controllers/UserController.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Api_UserController extends ZendAfi_Controller_Action {
+  public function loansAction() {
+    if (!$this->_request->isSecure())
+      return $this->_error($this->_('Protocole HTTP obligatoire'));
+
+    if (!$authorization = $this->_request->getHeader('authorization'))
+      return $this->_error($this->_('Autorisation non spécifiée'));
+
+    $parts = explode(' ', $authorization);
+    if ($parts[0] !== 'Bearer')
+      return $this->_error($this->_('Jeton d\'autorisation non fourni'));
+
+    if (!$token = Class_User_ApiToken::findFirstBy(['token' => $parts[1]]))
+      return $this->_error($this->_('Jeton d\'autorisation invalide'));
+
+    if (!$user = $token->getUser())
+      return $this->_error($this->_('Utilisateur non trouvé'));
+
+    $this->view->loans = (new Class_User_Cards($user))->getLoans();
+  }
+
+
+  protected function _error($message) {
+    $this->view->message = $message;
+    return $this->renderScript('invalid_request.pjson');
+  }
+}
+?>
\ No newline at end of file
diff --git a/application/modules/api/views/scripts/invalid_request.pjson b/application/modules/api/views/scripts/invalid_request.pjson
new file mode 100644
index 0000000000000000000000000000000000000000..153d898f6f513c3f6da36abd64232443fbbe0c02
--- /dev/null
+++ b/application/modules/api/views/scripts/invalid_request.pjson
@@ -0,0 +1,4 @@
+{
+	"error":"invalid_request",
+	"message":"<?php echo $this->message ?>"
+}
\ No newline at end of file
diff --git a/application/modules/api/views/scripts/user/loans.pjson b/application/modules/api/views/scripts/user/loans.pjson
new file mode 100644
index 0000000000000000000000000000000000000000..94d1684f134585f6fea7cbd946598ebe163f13d1
--- /dev/null
+++ b/application/modules/api/views/scripts/user/loans.pjson
@@ -0,0 +1,3 @@
+{
+	"loans": <?php echo $this->loans($this->loans) ?>
+}
diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php
index f2cdd2421936a45e905b13bec78f669e131ec2e0..27c66144e3ab8736de027860f28bd0c59f476fd1 100644
--- a/application/modules/opac/controllers/AuthController.php
+++ b/application/modules/opac/controllers/AuthController.php
@@ -99,7 +99,6 @@ class AuthController extends ZendAfi_Controller_Action {
     $this->view->redirect = $redirect;
     $service = $this->_getParam('service','');
     $this->view->service = $service;
-
     $this->view->titreAdd($this->view->_('Connexion'));
 
     $this->view->title = Class_Users::getIdentity()
@@ -138,6 +137,30 @@ class AuthController extends ZendAfi_Controller_Action {
   }
 
 
+  public function oauthAction() {
+    $validator = new ZendAfi_Validate_Url();
+    if (('code' !== $this->_getParam('response_type'))
+        || !$this->_getParam('client_id')
+        || !$this->_getParam('redirect_uri')) {
+
+      throw new Zend_Controller_Action_Exception($this->view->_('Désolé, requête incomplète'), 400);
+    }
+
+    $this->view->titre = $this->_('Authentifiez-vous pour autoriser "%s" à accéder à votre compte',
+                                  $this->_getParam('client_id'));
+    $preferences = Class_Profil::getCurrentProfil()->getCfgModulesPreferences('auth', 'login');
+    $options = ['data' => array_merge(
+                                      $preferences,
+                                      ['redirect_url' => $this->_getParam('redirect_uri'),
+                                       'id_notice' => 0])];
+    $this->view->form = ZendAfi_Form_Login::newWithOptions($options);
+
+    $redirect_uri = $this->_getParam('redirect_uri');
+    $strategy = new Auth_Strategy_OAuth($this);
+    $strategy->processLogin();
+  }
+
+
   public function popupLoginAction() {
     $this->view->preferences = $this->_loginPrefFromWidgetOrModule();
     $this->view->redirect = $this->_getParam('redirect');
@@ -523,8 +546,9 @@ class AuthController extends ZendAfi_Controller_Action {
 
 
 abstract class Auth_Strategy_Abstract {
-  protected $redirect_url = '';
-  protected $disable_redirect = false;
+  protected
+    $redirect_url = '',
+    $disable_redirect = false;
 
   static public function strategyForController($controller) {
     if ($controller->isCasRequest() && static::isLogged())
@@ -570,6 +594,7 @@ abstract class Auth_Strategy_Abstract {
       $this->controller->redirect($this->redirect_url);
   }
 
+
   public function setDefaultUrl($url) {
     $this->default_url=$url;
   }
@@ -681,9 +706,9 @@ class Auth_Strategy_Cas_NotLogged extends Auth_Strategy_Cas_Abstract{
 }
 
 
-class Auth_Strategy_Lectura extends Auth_Strategy_Abstract {
 
 
+class Auth_Strategy_Lectura extends Auth_Strategy_Abstract {
   public function handlePost() {
     $this->controller->getHelper('ViewRenderer')->setNoRender();
     $response= $this->controller->getResponse();
@@ -705,3 +730,21 @@ class Auth_Strategy_Lectura extends Auth_Strategy_Abstract {
 
   }
 }
+
+
+
+class Auth_Strategy_OAuth extends Auth_Strategy_NotLogged {
+  public function handlePost() {
+    parent::handlePost();
+    if (!$user = Class_Users::getIdentity())
+      return $this;
+
+    $request = $this->controller->getRequest();
+
+    $token = Class_User_ApiToken::findOrCreateForUserAndApplication($user,
+                                                                    $request->getParam('client_id'));
+    $this->redirect_url = sprintf('%s#token=%s',
+                                  $request->getParam('redirect_uri'),
+                                  $token->getToken());
+  }
+}
\ No newline at end of file
diff --git a/application/modules/opac/controllers/MultimediaController.php b/application/modules/opac/controllers/MultimediaController.php
index 607f458f9b526b16b94dad41fff8a592c893c2e1..4237ad450ff8e8abbb254b22120d690235a0d7b2 100644
--- a/application/modules/opac/controllers/MultimediaController.php
+++ b/application/modules/opac/controllers/MultimediaController.php
@@ -38,7 +38,7 @@ class MultimediaController extends ZendAfi_Controller_Action {
     $response = new StdClass();
     $response->auth = 0;
 
-    $request = Class_Multimedia_AuthenticateRequest::getInstance()->authenticate($this->_request);
+    $request = (new Class_Multimedia_AuthenticateRequest())->authenticate($this->_request);
 
     if (!$request->isValid()) {
       $response->error = $request->getError();
@@ -61,7 +61,7 @@ class MultimediaController extends ZendAfi_Controller_Action {
     $response = new StdClass();
     $response->auth = 0;
 
-    $request = Class_Multimedia_AuthenticateRequest::getInstance()->holdDevice($this->_request);
+    $request = (new Class_Multimedia_HoldRequest())->holdDevice($this->_request);
 
     if ($user = $request->getUser())
       $response = $this->_initInfosUser($user, $response);
@@ -87,7 +87,7 @@ class MultimediaController extends ZendAfi_Controller_Action {
     $response = new StdClass();
     $response->auth = 0;
 
-    $request = Class_Multimedia_AuthenticateRequest::getInstance()->closeHoldingDevice($this->_request);
+    $request = (new Class_Multimedia_HoldRequest())->closeHoldingDevice($this->_request);
 
     if (!$request->isValid()) {
       $response->error = $request->getError();
@@ -105,9 +105,8 @@ class MultimediaController extends ZendAfi_Controller_Action {
     $this->getHelper('ViewRenderer')->setNoRender();
 
     $response = new StdClass();
-    $response->auth = 0;
 
-    $request = Class_Multimedia_AuthenticateRequest::getInstance()->isHoldableDay($this->_request);
+    $request = (new Class_Multimedia_HoldRequest())->isHoldableDay($this->_request);
 
     if (!$request->isValid()) {
       $response->error = $request->getError();
@@ -115,8 +114,8 @@ class MultimediaController extends ZendAfi_Controller_Action {
       return;
     }
 
-    $response->auth = 1;
     $response->holding = $request->canHoldingForToDay();
     $this->_response->setBody(json_encode($response));
   }
+
 }
\ No newline at end of file
diff --git a/application/modules/opac/views/scripts/auth/oauth.phtml b/application/modules/opac/views/scripts/auth/oauth.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..a4574386fb4cb3f83c41e8c7db0f71faa510ac47
--- /dev/null
+++ b/application/modules/opac/views/scripts/auth/oauth.phtml
@@ -0,0 +1,4 @@
+<?php
+echo $this->tag('h1', $this->titre);
+echo $this->renderForm($this->form);
+?>
diff --git a/application/modules/opac/views/scripts/head.phtml b/application/modules/opac/views/scripts/head.phtml
index 759cebcf4bd71cb9d3aae171ee52af358fa6aa5a..af83377af4715b1ed92979c5a5b9ea17fd5a3fd6 100644
--- a/application/modules/opac/views/scripts/head.phtml
+++ b/application/modules/opac/views/scripts/head.phtml
@@ -61,7 +61,7 @@ if (Class_Users::isCurrentUserAdmin()) {
 }
 
 
-if ($this->header_css && $current_profil->getUseParentCss() && !$current_profil->hasPageCss())
+if ($this->header_css && ($current_profil->getUseParentCss() || !$current_profil->hasParentProfil())  && !$current_profil->hasPageCss())
   $head_scripts->addStyleSheet($this->header_css, ['id' => 'profil_css',
                                                    'media' => 'all']);
 
diff --git a/application/modules/push/controllers/MultimediaController.php b/application/modules/push/controllers/MultimediaController.php
index 64875ad7ffa1115282d65909dcd1f317ac696b27..33542e8b3f454ebf454a6f951beff56e48746818 100644
--- a/application/modules/push/controllers/MultimediaController.php
+++ b/application/modules/push/controllers/MultimediaController.php
@@ -93,7 +93,6 @@ class Push_MultimediaController extends Zend_Controller_Action {
       ->getResponse($this->_request));
   }
 
-
   public function createBorrowerAction() {
 
     if($infoUser = $this->checkInfoForAbonneAfim('Create borrower multimedia start'))
@@ -114,7 +113,6 @@ class Push_MultimediaController extends Zend_Controller_Action {
       $this->_response->setBody(Class_Multimedia_Users::getInstance()->deleteUser($infoUser));
   }
 
-
   private function checkInfoForAbonneAfim($info){
     $this->_helper->getHelper('viewRenderer')->setNoRender();
 
@@ -122,7 +120,6 @@ class Push_MultimediaController extends Zend_Controller_Action {
     $log = $multimedia->getLog();
     $log->info($info);
 
-
     if (null == ($json = $this->_getParam('json'))) {
       $log->err('Missing json parameter');
       return;
diff --git a/application/modules/telephone/controllers/AuthController.php b/application/modules/telephone/controllers/AuthController.php
index 763316755d0a6cca3875498c46f2e48d5bfb6ffe..5cf1f1ef1749f091d0c728839a200030ffdfd555 100644
--- a/application/modules/telephone/controllers/AuthController.php
+++ b/application/modules/telephone/controllers/AuthController.php
@@ -55,6 +55,12 @@ class Telephone_AuthController extends AuthController {
   }
 
 
+  public function oauthAction() {
+    parent::oauthAction();
+    $this->view->form = $this->_getFormLogin();
+  }
+
+
   public function loginReservationAction() {
     if (Class_Users::getLoader()->hasIdentity()) {
       $this->_redirect('/recherche/reservation');
diff --git a/application/modules/telephone/views/scripts/auth/oauth.phtml b/application/modules/telephone/views/scripts/auth/oauth.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..7c3b23818cc4ad917f6bfaf461d4c20b6aec6031
--- /dev/null
+++ b/application/modules/telephone/views/scripts/auth/oauth.phtml
@@ -0,0 +1,4 @@
+<?php
+echo $this->tag('h1', $this->titre);
+echo $this->form;
+?>
diff --git a/cosmogramme/VERSIONS_HOTLINE/59707 b/cosmogramme/VERSIONS_HOTLINE/59707
new file mode 100644
index 0000000000000000000000000000000000000000..7ac5dca7ae991552eaf951f576bd52cfab584560
--- /dev/null
+++ b/cosmogramme/VERSIONS_HOTLINE/59707
@@ -0,0 +1 @@
+ - ticket #59707 : la taille des popups ne peut dépasser celle de l'écran. Redimensionnement automatique au redimmensionnement du navigateur
\ No newline at end of file
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/controllers/LogsController.php b/cosmogramme/cosmozend/application/modules/cosmo/controllers/LogsController.php
new file mode 100644
index 0000000000000000000000000000000000000000..c76e029af4c2a789b8287d5d1669043ee4dddfc6
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/controllers/LogsController.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Cosmo_LogsController  extends ZendAfi_Controller_Action {
+  use Trait_StormFileSystem;
+
+  public function indexAction() {
+    $this->view->titre = $this->_('Journal des intégrations');
+  }
+
+
+  public function integrationAction() {
+    $this->view->titre = $this->_('Journal des intégrations du %s', $this->_getParam('day'));
+    $this->view->contents = $this->getFileSystem()->fileGetContents($this->_logPath('integration'));
+  }
+
+
+  public function debugAction() {
+    $this->view->titre = $this->_('Journal technique du %s', $this->_getParam('day'));
+    $this->view->contents = $this->getFileSystem()->fileGetContents($this->_logPath('debug'));
+  }
+
+
+  protected function _logPath($type) {
+    return Class_CosmoVar::getValueOf('log_path') . '/' . $type . '_' . $this->_getParam('day') . '.log';
+  }
+}
+?>
\ No newline at end of file
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/debug.phtml b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/debug.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..a73db3cef17c8364bbfa1284683d16f98a312834
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/debug.phtml
@@ -0,0 +1,6 @@
+<h1><?php echo $this->titre ?></h1>
+<div>
+ <?php
+ echo nl2br($this->contents);
+ ?>
+</div>
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/index.phtml b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/index.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..d9c78687dee312dbffa3de880e71701a7d750194
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/index.phtml
@@ -0,0 +1,2 @@
+<h1><?php echo $this->titre ?></h1>
+<?php echo $this->cosmoLogs(); ?>
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/integration.phtml b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/integration.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..8395921351c90a638ed8eb99caeb0370e1110dd6
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/logs/integration.phtml
@@ -0,0 +1,6 @@
+<h1><?php echo $this->titre ?></h1>
+<div>
+ <?php
+ echo $this->contents;
+ ?>
+</div>
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/run-log/by-date.phtml b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/run-log/by-date.phtml
index af66b63f09ac69a0afbb99270566632eed872084..61d08f1976432432f671d25046471bbe69934af4 100644
--- a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/run-log/by-date.phtml
+++ b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/run-log/by-date.phtml
@@ -14,7 +14,7 @@
 	</tr>
 	<?php foreach($this->runs as $run) { ?>
 	<tr>
-		<td align="center"><?php 
+		<td align="center"><?php
 		echo $this->tagAnchor(
 			$this->url(['module' => 'cosmo',
 									'controller' => 'run-log',
@@ -26,17 +26,17 @@
 		<td align="center" style="white-space:nowrap">
 			<?php echo $this->getHumanDate($run->getTraite(), 'EEEE d MMMM yyyy');?></td>
 		<td>(<?php echo $run->getBib()->getId();?>)&nbsp;<?php echo $run->getBib()->getNomCourt();?></td>
-		<td><?php 
+		<td><?php
 				echo Class_CosmoVar::getLabelInList(
-					'type_fichier', 
+					'type_fichier',
 					$run->getProfilDonnees()->getTypeFichier())?></td>
-		<td><?php 
-				echo Class_CosmoVar::getLabelInList('import_type_operation', 
+		<td><?php
+				echo Class_CosmoVar::getLabelInList('import_type_operation',
 																						$run->getTypeOperation());?></td>
 		<td><?php echo $run->getFichier();?></td>
 		<td align="right" style="white-space:nowrap">
 			<?php echo number_format((int)$run->getFileSize()/1024, 0, '', ' ');?>&nbsp;ko
-			<?php if (0 < $run->getFileSize()) 
+			<?php if (0 < $run->getFileSize())
 			echo $this->tagAnchor(
 				$this->url(['module' => 'cosmo',
 										'controller' => 'run-log',
@@ -53,8 +53,8 @@
 	<?php } ?>
 </table>
 <br>
-<input type="button" class="bouton" value="Retour" 
-			 onclick="document.location.replace('<?php echo $this->cosmoPath->getCosmoBaseUrl(); ?>php/integre_log.php')" style="margin-left:20px">
+<input type="button" class="bouton" value="Retour"
+			 onclick="document.location.replace('<?php echo $this->url(['module' => 'cosmo', 'controller' => 'logs'], null, true); ?>')" style="margin-left:20px">
 <br>
 <br>
 </div>
diff --git a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/DataProfileControllerTest.php b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/DataProfileControllerTest.php
index 6a24006b6cbc992c92ca22e6cb6920ff323cbd4e..453d7cd7375840feaf45007b198d98f56f94cc5d 100644
--- a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/DataProfileControllerTest.php
+++ b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/DataProfileControllerTest.php
@@ -167,9 +167,9 @@ class Cosmo_DataProfileControllerEditPatronsTest extends Cosmo_DataProfileContro
                       Class_IntProfilDonnees::FIELD_ITEM_EMPLACEMENT => '',
                       Class_IntProfilDonnees::FIELD_ITEM_ANNEXE => 'a'
                      ],
-                     ['champs' => 'PRENOM;NOM;PRENOM'],
-                     ['champs' => 'PRENOM;NOM;PRENOM'],
-                     ['champs' => 'PRENOM;NOM;PRENOM']
+                     ['champs' => 'PRENOM;NOM; MAIL;PRENOM'],
+                     ['champs' => 'PRENOM;NOM; MAIL;PRENOM'],
+                     ['champs' => 'PRENOM;NOM; MAIL;PRENOM']
                     ]
                    ]);
     $this->dispatch('cosmo/data-profile/edit/id/57', true);
@@ -182,6 +182,12 @@ class Cosmo_DataProfileControllerEditPatronsTest extends Cosmo_DataProfileContro
   }
 
 
+  /** @test */
+  public function subscriberSelectedFieldsShouldContainsMail() {
+    $this->assertXPath('//div[@id="input_patron_fields"]/div[1]/ul/li[@data-value="MAIL"]');
+  }
+
+
   /** @test */
   public function subscriberAvailableFieldsShouldContainsPrenom() {
     $this->assertXPathCount('//div[@id="input_patron_fields"]/div[2]/ul/li[@data-value="PRENOM"]', 1, $this->_response->getBody());
diff --git a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/LogsControllerTest.php b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/LogsControllerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..725882ca7cfbf771ceab77082378318601f464c7
--- /dev/null
+++ b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/LogsControllerTest.php
@@ -0,0 +1,166 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+require 'application/modules/cosmo/controllers/LogsController.php';
+
+abstract class LogsControllerTestCase extends CosmoControllerTestCase {
+  public function setUp() {
+    parent::setUp();
+    Class_CosmoVar::setValueOf('log_path','/log');
+
+    $filesystem = (new Storm_FileSystem_Volatile())
+      ->mkdir('/log')
+      ->filePutContents('/log/debug_2017-05-12.log',
+                        str_repeat('bugs bugs', 200))
+      ->filePutContents('/log/integration_2017-05-12.log',
+                        "[IntegrationTest] first line\n [IntegrationTest] second line")
+
+      ->filePutContents('/log/integration_2017-05-13.log',
+                        str_repeat('logs logs', 200000))
+      ->filePutContents('/log/debug_2017-05-13.log',
+                        "[LogTest]")
+
+      ->filePutContents('/log/a_file.log', "that should not be there");
+
+    ZendAfi_View_Helper_CosmoLogs::setFileSystem($filesystem);
+    Cosmo_LogsController::setFileSystem($filesystem);
+
+    $this->fixture('Class_Cosmogramme_Integration',
+                   ['id' => 1,
+                    'pointeur_reprise' => 1,
+                    'traite' => '2017-05-12',
+                    'nb_erreurs' => 0,
+                    'nb_warnings' => 7,
+                   ]);
+
+    $this->fixture('Class_Cosmogramme_Integration',
+                   ['id' => 2,
+                    'pointeur_reprise' => 234,
+                    'traite' => '2017-05-12',
+                    'nb_erreurs' => 2,
+                    'nb_warnings' => 1,
+                   ]);
+  }
+
+
+  public function tearDown() {
+    ZendAfi_View_Helper_CosmoLogs::setFileSystem(null);
+    Cosmo_LogsController::setFileSystem(null);
+    parent::tearDown();
+  }
+}
+
+
+
+class LogsControllerIndexTest extends LogsControllerTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/cosmo/logs', true);
+  }
+
+
+  /** @test */
+  public function firstTRShouldContainsSaturdayThirteenMay2017() {
+    $this->assertXPathContentContains('//table[@id="logs"]//tr[1]//td',
+                                      'samedi 13 mai 2017');
+  }
+
+
+  /** @test */
+  public function firstTRShouldContainsMagnifierIcon() {
+    $this->assertXPath('//table[@id="logs"]//tr[1]//td//img[contains(@src, "loupe")]');
+  }
+
+
+  /** @test */
+  public function firstTRReportLinkToOpenIntegrationLogShouldContaints2Mo() {
+    $this->assertXPathContentContains('//tr[1]//td//a[contains(@href, "/cosmo/logs/integration/day/2017-05-13")]',
+                                      '2 Mo');
+  }
+
+
+  /** @test */
+  public function firstTRRecordProcessedShouldContainsZero() {
+    $this->assertXPath('//tr[1]/td[4][text()="0"]');
+  }
+
+
+  /** @test */
+  public function secondTRShouldContainsFridayTwelveMay2017() {
+    $this->assertXPathContentContains('//table[@id="logs"]//tr[2]//td',
+                                      'vendredi 12 mai 2017');
+  }
+
+
+  /** @test */
+  public function secondTRReportShouldContaints59o() {
+    $this->assertXPathContentContains('//tr[2]//td', '59 o');
+  }
+
+
+  /** @test */
+  public function secondTRShouldContainsLinkToRunLogByDate() {
+    $this->assertXPath('//table[@id="logs"]//tr[2]//td//a[contains(@href, "cosmo/run-log/by-date/date/2017-05-12")]');
+  }
+
+
+  /** @test */
+  public function secondTRReportLinkToOpenDebugLogShouldContaints2Ko() {
+    $this->assertXPathContentContains('//tr[2]//td//a[contains(@href, "/cosmo/logs/debug/day/2017-05-12")]',
+                                      '2 Ko');
+  }
+
+
+  /** @test */
+  public function secondTRRecordProcessedShouldContains235() {
+    $this->assertXPath('//tr[2]/td[4][text()="235"]');
+  }
+
+
+  /** @test */
+  public function secondTRErrorsShouldContains2() {
+    $this->assertXPath('//tr[2]/td[5][text()="2"]');
+  }
+
+
+  /** @test */
+  public function secondTRWarningsShouldContains8() {
+    $this->assertXPath('//tr[2]/td[6][text()="8"]');
+  }
+}
+
+
+
+class LogsControllerDisplayIntegrationTest extends LogsControllerTestCase {
+  /** @test */
+  public function withValidIntegrationLogShouldDisplayFileContent() {
+    $this->dispatch('/cosmo/logs/integration/day/2017-05-12', true);
+    $this->assertXPathContentContains('//div', '[IntegrationTest] first line');
+  }
+
+
+  /** @test */
+  public function withValidDebugLogShouldDisplayFileContent() {
+    $this->dispatch('/cosmo/logs/debug/day/2017-05-13', true);
+    $this->assertXPathContentContains('//div', '[LogTest]');
+  }
+}
+?>
\ No newline at end of file
diff --git a/cosmogramme/php/_menu.php b/cosmogramme/php/_menu.php
index cb7c9447f0371344f7261cfa04067103565ebe42..5cb66594acad9d2c0a151c5d156d7d4934e80200 100644
--- a/cosmogramme/php/_menu.php
+++ b/cosmogramme/php/_menu.php
@@ -68,7 +68,7 @@ else
 	<div class="menu_section">Intégration</div>
 	<?php
 	ligneMenu("Contrôle des intégrations","integre_controle_integrations.php");
-	ligneMenu("Journal des intégrations","integre_log.php");
+	ligneMenu("Journal des intégrations","../cosmozend/cosmo/logs");
 	ligneMenu("Traitements en cours","integre_traitements_attente.php");
 	ligneMenu("Fichiers en attente","integre_fichiers_attente.php");
 	ligneMenu("Lancer les traitements","integre_traite_main.php",true);
@@ -124,7 +124,6 @@ else
 	<?php
 	ligneMenu("Suppression d'exemplaires","integre_supprimer_exemplaires.php");
 	ligneMenu("Test envoi mails","test_envoi_mails.php");
-	ligneMenu("Logs des erreurs SQL","integre_log_sql.php");
 	ligneMenu("Réindexation des identifiants","util_indexation.php");
 	ligneMenu("Réindexation phonétique","util_fulltext.php?action=PARAM");
 	?>
diff --git a/cosmogramme/php/classes/classe_cosmopaths.php b/cosmogramme/php/classes/classe_cosmopaths.php
index c5b932b1f24118f282b0288f0ec9864c32dfa51a..4eaac8a7c8289bc32c04459d47a2198bf31eb722 100644
--- a/cosmogramme/php/classes/classe_cosmopaths.php
+++ b/cosmogramme/php/classes/classe_cosmopaths.php
@@ -35,6 +35,10 @@ class CosmoPaths {
     while ((count($parts)>0) && (end($parts) !== static::$_dir_name))
       array_pop($parts);
     array_pop($parts);
+
+    if (empty($parts))
+      return './';
+
     return ($this->isWindowsPath() ? '' : '/')  . implode('/', $parts) . '/';
   }
 
diff --git a/cosmogramme/php/classes/classe_log.php b/cosmogramme/php/classes/classe_log.php
index 5df861055672df39e9b4cff3707e04946ed2786c..ccf44072dac8f0dfad884a1620f200355654bf88 100644
--- a/cosmogramme/php/classes/classe_log.php
+++ b/cosmogramme/php/classes/classe_log.php
@@ -19,231 +19,130 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
-class log
-{
-	private $path;							// Chemin pour les logs
-	private $fic;								// Handle du fichier
-	private $typeLog;						// Type de fichier log (préfixe du nom de fichier)
-	private $maxLog;						// Nombre maxi de fichiers pour 1 type de log
-	private $afficher;					// Afficher à l'écran ou pas
-	private $entete;						// Entetes pour les logs de type tableau
-
-
-	public function __construct($typeLog,$afficher=true)
-	{
-		$this->typeLog = $typeLog;
-		$this->afficher=$afficher;
-		$this->path=getVariable("log_path");
-		if(!$this->path) afficherErreur("La variable : log_path n'est pas définie.");
-		if( strRight($this->path,1) != "/" ) $this->path .="/";
-		$this->maxLog=getVariable("log_max");
-		if(!$this->maxLog) $this->maxLog=100;
-
-		// Entetes
-		if($typeLog=="erreur") $this->entete=array("n°","Bibliothèque","Type d'opération","Erreur");
-		elseif($typeLog=="warning") $this->entete=array("n°","Bibliothèque","Type d'opération","Alerte","Valeur");
-	}
-
-
-	public function open($append=0)
-	{
-		// Controle de l'historique
-		if($append==0)
-		{
-			@$dir = opendir( $this->path) or AfficherErreur("Impossible d'ouvrir le dossier des logs : " .$this->path);
-			while (($file = readdir($dir)) !== false)
-			{
-				if(strLeft($file, strLen($this->typeLog))== $this->typeLog) $liste[]=$file;
-			}
-			closedir( $dir);
-			if( count($liste) > $this->maxLog )
-			{
-				$nb_destroy=count($liste)-$this->maxLog;
-				sort($liste);
-				for($i=0; $i < $nb_destroy; $i++)
-				{
-					unlink($this->path .$liste[$i]);
-					if($this->typeLog != "sql") @unlink($this->path.str_replace($this->typeLog,"notice",$liste[$i]));
-				}
-			}
-		}
-		// Ouverture du nouveau log
-		$nom = $this->path . $this->typeLog . "_" . dateDuJour(0) .".log";
-		//if($append == true )$mode="a"; else $mode="w";
-		$mode='a'; // test en mode append systematique
-		umask(0002);
-		$this->fic=fopen($nom, $mode);
-	}
-
-
-	public function ecrire($texte)
-	{
-		global $mode_cron;
-		fwrite($this->fic, $texte ."\n");
-		if($this->afficher == false) return false;
-		if($mode_cron)
-		{
-			$texte=strip_tags($texte);
-			if(trim($texte)) print($texte ."\n");
-		}
-		else print($texte);
-		flush();
-	}
-
-
-	public function getTailleLogs()
-	{
-		@$dir = opendir( $this->path) or AfficherErreur("Impossible d'ouvrir le dossier des logs : " .$this->path);
-		$taille=0;
-		$nb_fic=0;
-		while (($file = readdir($dir)) !== false)
-		{
-			$fic=$this->path.$file;
-			if(!is_file($fic)) continue;
-			$nb_fic++;
-			$taille+=filesize($fic);
-		}
-		$ret["nb_fic"]=$nb_fic;
-		$ret["taille"]=(int)($taille / 1024);
-		$ret["taille"]=number_format($ret["taille"], 0, ',', ' ')." ko";
-		return $ret;
-	}
-
-
-	public function rendListe()
-	{
-		// Parse directory
-		@$dir = opendir( $this->path) or AfficherErreur("Impossible d'ouvrir le dossier des logs : " .$this->path);
-		while (($file = readdir($dir)) !== false)
-		{
-			if(strLeft($file, strLen($this->typeLog))== $this->typeLog) $liste[]=$file;
-		}
-		closedir( $dir);
-		// Liste triee
-		if($liste) sort ($liste);
-		$ret = array();
-		for($i=count($liste); $i > 0; $i--)
-		{
-			$fic=$liste[($i-1)];
-			$index=count($ret);
-			$ret[$index]["taille"]=number_format((filesize($this->path.$fic) /1024),0, ',', ' ')." ko";
-			$ret[$index]["fic"]=$fic;
-			$date=str_replace($this->typeLog . "_", "", $fic);
-			$date=str_replace(".log","",$date);
-			$ret[$index]["date_sql"]=$date;
-			$ret[$index]["date"]=rendDate($date,3);
-		}
-		return $ret;
-	}
-
-
-	public function afficher($log)
-	{
-		if($log == "") $log = $this->typeLog . "_" . dateDuJour(0) .".log";
-		if( !fileSize($this->path.$log))
-		{
-			print("Ce fichier log est vide.");
-			return false;
-		}
-		$fic=fopen($this->path.$log,"r");
-		while (!feof($fic))
-		{
-      $buffer = fgets($fic, 4096);
-      print( $buffer);
+
+class log {
+  use Trait_Translator;
+
+  private $path;              // Chemin pour les logs
+  private $fic;               // Handle du fichier
+  private $typeLog;           // Type de fichier log (préfixe du nom de fichier)
+  private $maxLog;            // Nombre maxi de fichiers pour 1 type de log
+  private $afficher;          // Afficher à l'écran ou pas
+  private $entete;            // Entetes pour les logs de type tableau
+
+// ----------------------------------------------------------------
+// Contructeur
+// ----------------------------------------------------------------
+  function __construct($typeLog,$afficher=true)
+  {
+    $this->typeLog = $typeLog;
+    $this->afficher=$afficher;
+    $this->path = getVariable("log_path");
+    if(!$this->path) afficherErreur("La variable : log_path n'est pas définie.");
+    if( strRight($this->path,1) != "/" ) $this->path .="/";
+    $this->maxLog=getVariable("log_max");
+    if(!$this->maxLog) $this->maxLog=100;
+
+    // Entetes
+    if($typeLog=="erreur") $this->entete=array("n°","Bibliothèque","Type d'opération","Erreur");
+    elseif($typeLog=="warning") $this->entete=array("n°","Bibliothèque","Type d'opération","Alerte","Valeur");
+  }
+
+// ----------------------------------------------------------------
+// Ouverture fichier
+// ----------------------------------------------------------------
+  public function open($append=0) {
+    // Controle de l'historique
+    if($append==0) {
+      $this->_removeOldLogs();
     }
-    fclose($fic);
-	}
-
-
-	public function afficherTableau($log,$arg_bib="",$arg_type_erreur="")
-	{
-		if($log == "") $log = $this->typeLog . "_" . dateDuJour(0) .".log";
-		if( !fileSize($this->path.$log))
-		{
-			print("Ce fichier log est vide.");
-			return false;
-		}
-		// Entete du tableau
-		print('<table class="blank" cellspacing="0"><tr>');
-		foreach($this->entete as $col) print('<th class="blank">'.$col.'</th>');
-		print('</tr>');
-
-		// Parser les lignes
-		$fic=fopen($this->path.$log,"r");
-		while (!feof($fic))
-		{
-      $buffer = fgets($fic, 4096);
-      $data=explode(chr(9),$buffer);
-      // selection en mode detail
-      if($arg_bib and trim($data[1]) != $arg_bib) continue;
-  		if($arg_type_erreur and trim($data[3]) != $arg_type_erreur) continue;
-      // Afficher ligne
-      $nb++;
-      if($nb > 2000) break;
-      if($data[0])
-      {
-      	print('<tr>');
-      	$prem=true;
-      	foreach($data as $col)
-        {
-        	if($prem==true)
-        	{
-        		$nom_fic="notice".substr($log,strlen($this->typeLog));
-        		$col=rendUrlImg("loupe.png", "analyse_afficher_notice.php","mode=LOG&adresse=".$col."&fichier=".$nom_fic);
-        		$prem=false;
-        	}
-        	if(!trim($col)) $col="&nbsp;";
-        	print('<td class="blank">'.$col.'</td>');
-        }
-        print('</tr>');
+
+    // Ouverture du nouveau log
+    $nom = $this->path . $this->typeLog . "_" . dateDuJour(0) .".log";
+    $mode='a'; // test en mode append systematique
+    umask(0002);
+    if (!$this->fic = fopen($nom, $mode))
+      throw new RuntimeException($this->_('Impossible de créer le fichier de log: %s', $nom));
+  }
+
+
+  protected function _removeOldLogs() {
+    @$dir = opendir( $this->path) or AfficherErreur("Impossible d'ouvrir le dossier des logs : " .$this->path);
+
+    while (($file = readdir($dir)) !== false)  {
+      if(strLeft($file, strLen($this->typeLog))== $this->typeLog) $liste[]=$file;
+    }
+
+    closedir( $dir);
+
+    if( count($liste) > $this->maxLog ) {
+      $nb_destroy=count($liste)-$this->maxLog;
+      sort($liste);
+      for($i=0; $i < $nb_destroy; $i++) {
+        unlink($this->path .$liste[$i]);
+        if($this->typeLog != "sql") @unlink($this->path.str_replace($this->typeLog,"notice",$liste[$i]));
       }
     }
-    fclose($fic);
-    print('</table>');
-    if($nb > 2000) print('<h3>Arrêt de l\'affichage à 2000 lignes</h3>');
-	}
-
-
-	public function getTableauSynthese($log)
-	{
-		if($log == "") $log = $this->typeLog . "_" . dateDuJour(0) .".log";
-		if(!fileSize($this->path.$log))	return false;
-
-		// Parser les lignes
-		$fic=fopen($this->path.$log,"r");
-		while (!feof($fic))
-		{
-      $buffer = fgets($fic, 4096);
-      $data=explode(chr(9),$buffer);
-      if($data[0])
+  }
+
+// ----------------------------------------------------------------
+// Ecrire
+// ----------------------------------------------------------------
+  public function log($texte) {
+    global $mode_cron;
+    fwrite($this->fic, $texte ."\n");
+    if($this->afficher == false) return false;
+
+    if($mode_cron) {
+      $texte=strip_tags($texte);
+      if(trim($texte)) print($texte ."\n");
+    }
+    else
+      print($texte);
+
+    flush();
+  }
+
+
+// ----------------------------------------------------------------
+// Taille des logs
+// ----------------------------------------------------------------
+  public function getTailleLogs()
+  {
+    // Parse directory
+    @$dir = opendir( $this->path) or AfficherErreur("Impossible d'ouvrir le dossier des logs : " .$this->path);
+    $taille=0;
+    $nb_fic=0;
+    while (($file = readdir($dir)) !== false)
       {
-  			$bib=$data[1];
-  			$erreur=trim($data[3]);
-  			$table[$bib][$this->typeLog][$erreur]++;
+        $fic=$this->path.$file;
+        if(!is_file($fic)) continue;
+        $nb_fic++;
+        $taille+=filesize($fic);
       }
-    }
-    fclose($fic);
-    return $table;
-	}
+    $ret["nb_fic"]=$nb_fic;
+    $ret["taille"]=(int)($taille / 1024);
+    $ret["taille"]=number_format($ret["taille"], 0, ',', ' ')." ko";
+    return $ret;
+  }
 
 
-	public function close()
-	{
-		fclose($this->fic);
-	}
+  public function close() {
+    fclose($this->fic);
+  }
 
 
-	public function addError($message) {
-		$this->ecrire('<br><span class="rouge">'.$message.'</span><br>');
-	}
+  public function error($message) {
+    $this->log('<br><span class="rouge">'.$message.'</span><br>');
+  }
 
 
-  public function addSuccess($message) {
-    $this->ecrire('<span class="vert">' . $message . '</span><br>');
+  public function success($message) {
+    $this->log('<span class="vert">' . $message . '</span><br>');
   }
 
 
-  public function addInfo($message) {
-    $this->ecrire('<br><span class="violet">' . $message . '</span><br>');
+  public function info($message) {
+    $this->log('<br><span class="violet">' . $message . '</span><br>');
   }
 }
\ No newline at end of file
diff --git a/cosmogramme/php/classes/classe_sql.php b/cosmogramme/php/classes/classe_sql.php
index ee60a304123a4ddddbef55499e0d9374f608e8bb..91d3800a5f152839b6d857fa795ecc0acf4abc19 100644
--- a/cosmogramme/php/classes/classe_sql.php
+++ b/cosmogramme/php/classes/classe_sql.php
@@ -166,7 +166,7 @@ class sql {
 			$this->log = new log('sql', false);
 
 		$this->log->open(true);
-		$this->log->ecrire($msg);
+		$this->log->log($msg);
 		$this->log->close();
 	}
 }
diff --git a/cosmogramme/php/codif_dewey.php b/cosmogramme/php/codif_dewey.php
index 280a68a0a76327ca11c760d2e1a0da8386317566..647743cb3d0285c8c83d88ceb86f24d33d21a6a8 100644
--- a/cosmogramme/php/codif_dewey.php
+++ b/cosmogramme/php/codif_dewey.php
@@ -174,7 +174,7 @@ if($_REQUEST["action"]=="ECRIRE_LISTE")
 				if($_REQUEST["remplacer"] == "on") 
 				{
 					$mode="Remplacement"; 
-					$majs+=$dewey->ecrire($indice,$libelle);
+					$majs+=$dewey->log($indice,$libelle);
 				}
 				else {$mode="Pas de traitement car existe déjà"; $pas_traites++;}
 			} 
@@ -316,7 +316,7 @@ if($_REQUEST["action"]=="ECRIRE")
 		{
 			$elem=explode("#",$liste[$i]);
 			print($elem[0]." - " .$elem[1]."<br>");
-			$nb+=$dewey->ecrire($elem[0],$elem[1]);
+			$nb+=$dewey->log($elem[0],$elem[1]);
 		}
 		print("<br><h3>".$nb. " indice(s) ont été mis à jour avec succès.</h3>");
 	}
diff --git a/cosmogramme/php/codif_pcdm4.php b/cosmogramme/php/codif_pcdm4.php
index 163b7eeaad64ca0274ec414b83aac21cdf8f7f02..86fb173e8115881a2a93b541a005aac49daea128 100644
--- a/cosmogramme/php/codif_pcdm4.php
+++ b/cosmogramme/php/codif_pcdm4.php
@@ -164,7 +164,7 @@ if($_REQUEST["action"]=="ECRIRE_LISTE")
 				if($_REQUEST["remplacer"] == "on") 
 				{
 					$mode="Remplacement"; 
-					$majs+=$pcdm4->ecrire($indice,$libelle);
+					$majs+=$pcdm4->log($indice,$libelle);
 				}
 				else {$mode="Pas de traitement car existe déjà"; $pas_traites++;}
 			} 
@@ -306,7 +306,7 @@ if($_REQUEST["action"]=="ECRIRE")
 		{
 			$elem=explode("#",$liste[$i]);
 			print($elem[0]." - " .$elem[1]."<br>");
-			$nb+=$pcdm4->ecrire($elem[0],$elem[1]);
+			$nb+=$pcdm4->log($elem[0],$elem[1]);
 		}
 		print("<br><h3>".$nb. " indice(s) ont été mis à jour avec succès.</h3>");
 	}
diff --git a/cosmogramme/php/config_integrations.php b/cosmogramme/php/config_integrations.php
index ba9ec0f99c545db5bad5647784bf734d25cad029..270a4991705e19954c932308eee251802c574876 100644
--- a/cosmogramme/php/config_integrations.php
+++ b/cosmogramme/php/config_integrations.php
@@ -66,7 +66,7 @@ if($_REQUEST["action"]=="VALIDER")
 		// ecriture
 		require_once("classe_bib.php");
 		$ficheBib = new bibliotheque();
-		$ficheBib->ecrire($id_bib,$nom_court,$mail,$qualite,$ecart_ajouts,$sigb,$comm_sigb,$comm_params,$pas_exporter);
+		$ficheBib->log($id_bib,$nom_court,$mail,$qualite,$ecart_ajouts,$sigb,$comm_sigb,$comm_params,$pas_exporter);
 		$id_prog=0;
 	}
 
@@ -74,7 +74,7 @@ if($_REQUEST["action"]=="VALIDER")
 	else
 	{
 		$id_prog=$_REQUEST["id"];
-		$maj->ecrire($id_prog,$id_bib,$libelle,$profil,$type_operation,$fichier,$rang,$type_doc,(int)$taille_min_import_total);
+		$maj->log($id_prog,$id_bib,$libelle,$profil,$type_operation,$fichier,$rang,$type_doc,(int)$taille_min_import_total);
 		if($id_prog == 0 )
 		{
 			$ret=$maj->getDerniereCreation();
diff --git a/cosmogramme/php/integration/domaines.php b/cosmogramme/php/integration/domaines.php
index ec2cbd6179f52576816301656611f8713be17684..90f52996aed298e61cd9d604aba43c28eb069e49 100644
--- a/cosmogramme/php/integration/domaines.php
+++ b/cosmogramme/php/integration/domaines.php
@@ -22,7 +22,7 @@
 setVariable('traitement_phase', 'Indexation des domaines');
 
 if ($phase==16) {
-  $log->ecrire('<h4>Indexation des domaines</h4>');
+  $log->log('<h4>Indexation des domaines</h4>');
   unset($phase_data);
   $reprise = false;
   $phase_data['nombre'] = 0;
@@ -42,7 +42,7 @@ if ($phase==17) {
 
     foreach ($catalogues as $catalogue) {
       $page = $phase_data['pointeur'];
-      $log->ecrire('Indexation du domaine : '.$catalogue->getLibelle().'<br/>');
+      $log->log('Indexation du domaine : '.$catalogue->getLibelle().'<br/>');
       $catalogue->index($page);
 
       $position_domaine++;
@@ -50,15 +50,15 @@ if ($phase==17) {
       $phase_data['pointeur'] = 0;
     }
 
-    $log->ecrire('<h4>Indexation des paniers dans les domaines</h4>');
+    $log->log('<h4>Indexation des paniers dans les domaines</h4>');
     Class_PanierNotice::indexAll();
 
-    $log->ecrire('<h4>Indexation des articles dans les domaines</h4>');
+    $log->log('<h4>Indexation des articles dans les domaines</h4>');
     Class_Article::indexAll();
 
-    $log->ecrire('<h4>Indexation des sitothèques dans les domaines</h4>');
+    $log->log('<h4>Indexation des sitothèques dans les domaines</h4>');
     Class_Sitotheque::indexAll();
   } else {
-    $log->ecrire('<h4>Les indexations des domaines, des paniers, articles et sitothèques dans les domaines ne sont traitées qu\'en mode cron</h4>');
+    $log->log('<h4>Les indexations des domaines, des paniers, articles et sitothèques dans les domaines ne sont traitées qu\'en mode cron</h4>');
   }
 }
\ No newline at end of file
diff --git a/cosmogramme/php/integration/integration_phase.php b/cosmogramme/php/integration/integration_phase.php
index db3877a85afa0eb20ff6f2eda89e83cbb5970fcc..d6087357ae5b259a1b53fd5e6e5edeaaf97dc434 100644
--- a/cosmogramme/php/integration/integration_phase.php
+++ b/cosmogramme/php/integration/integration_phase.php
@@ -20,7 +20,23 @@
  */
 
 function startIntegrationPhase($name) {
-	global $chrono, $chrono_fichier, $chrono100notices, $phase, $phase_data, $mode_cron, $reprise, $log, $compteur;
+	global
+    $chrono,
+    $chrono_fichier,
+    $chrono100notices,
+    $phase,
+    $phase_data,
+    $mode_cron,
+    $reprise,
+    $log,
+    $log_debug,
+    $compteur;
+
+  $logs = (new Class_Cata_Log())
+    ->addDefaultTarget($log)
+    ->addTarget('debug', $log_debug);
+
+  Class_WebService_BibNumerique_RessourceNumerique::setLogger($logs);
 
 	$integration_class_name = 'Class_Cosmogramme_Integration_Phase'.ucfirst($name);
 
@@ -37,7 +53,7 @@ function startIntegrationPhase($name) {
 
 
 	$requested_phase = new $integration_class_name($current_phase,
-																								 $log,
+																								 $logs,
 																								 $current_chrono);
 
 	$new_phase = $requested_phase->run();
diff --git a/cosmogramme/php/integration/periodiques.php b/cosmogramme/php/integration/periodiques.php
index bd00846d2175d791d033c54f70238687af4568f8..5f978ce67f58e8f1a673f415a2698f00f54510bb 100644
--- a/cosmogramme/php/integration/periodiques.php
+++ b/cosmogramme/php/integration/periodiques.php
@@ -32,7 +32,7 @@ $titre="Indexation des articles de périodiques";
 setVariable("traitement_phase",$titre);
 if($phase=="PERIODIQUES_0")
 {
-	$log->ecrire("<h4>$titre</h4>");
+	$log->log("<h4>$titre</h4>");
 	$chrono100notices->start();
 	unset($phase_data);
 	$phase_data["nombre"]=0;
@@ -145,14 +145,14 @@ if($phase == "PERIODIQUES_1")
 	}
 
 	// recap
-	if($phase_data["nombre"]==0) $log->ecrire(BR.'<span class="vert">Aucun article à traiter</span><br>');
+	if($phase_data["nombre"]==0) $log->log(BR.'<span class="vert">Aucun article à traiter</span><br>');
 	else
 	{
-		$log->ecrire(BR.'<span class="vert">'.$phase_data["nombre"].' articles(s) traité(s)</span>'.BR);
+		$log->log(BR.'<span class="vert">'.$phase_data["nombre"].' articles(s) traité(s)</span>'.BR);
 		$chrono->timeStart=$phase_data["timeStart"];
-		$log->ecrire('<span class="vert">Temps de traitement : '.$chrono->end()." (".$chrono->moyenne($phase_data["nombre"],"articles").")</span>".BR);
+		$log->log('<span class="vert">Temps de traitement : '.$chrono->end()." (".$chrono->moyenne($phase_data["nombre"],"articles").")</span>".BR);
 	}
-	if($phase_data["not_found"]) $log->ecrire('<span class="violet">Notices orphelines : '.$phase_data["not_found"].'</span>'.BR);
+	if($phase_data["not_found"]) $log->log('<span class="violet">Notices orphelines : '.$phase_data["not_found"].'</span>'.BR);
 }
 
 // ----------------------------------------------------------------
@@ -165,7 +165,7 @@ function traceTraitementPeriodique()
 	// Affichage toutes les 100
 	if($phase_data["nombre"] % 100 == 0)
 	{
-		$log->ecrire("article ".$phase_data["nombre"]." (" .$chrono100notices->tempsPasse()." secondes)<br>");
+		$log->log("article ".$phase_data["nombre"]." (" .$chrono100notices->tempsPasse()." secondes)<br>");
 		$chrono100notices->start();
 	}
 
diff --git a/cosmogramme/php/integration/prets.php b/cosmogramme/php/integration/prets.php
index 16c759120c5890a3240e576ed8af2fe746fee31d..fe14be27a6d69fbdf6506c3859afacb584a1d9a0 100644
--- a/cosmogramme/php/integration/prets.php
+++ b/cosmogramme/php/integration/prets.php
@@ -28,7 +28,7 @@ $bib=new bibliotheque();
 setVariable("traitement_phase","Intégration des fichiers de prêts");
 if($phase==10)
 {
-	$log->ecrire("<h4>Intégration des fichiers de prêts</h4>");
+	$log->log("<h4>Intégration des fichiers de prêts</h4>");
 	unset($phase_data);
 	$reprise=false;
 	$phase_data["nombre"]=0;
@@ -53,13 +53,13 @@ if($phase == 11)
 		$trace.='<span class="bib">Fichier : '.$fichier."</span><br>";
 		$trace.='<span class="bib">Profil : '.$sql->fetchOne("select libelle from profil_donnees where id_profil=$profil").'</span><br>';
 		$trace.='<span class="bib">Format : ' . Class_IntProfilDonnees::getFormatLabelOf($format) . '</span><br>';
-		if(!$pointeur_reprise) $log->ecrire($trace); else print($trace.BR);
+		if(!$pointeur_reprise) $log->log($trace); else print($trace.BR);
 
 		// Suppression des enregs pour 1 bib si export total
 		if($type_operation == 2 and !$phase_data["nombre"])
 		{
 			$nb_destroy=$sql->execute("delete from prets where ID_SITE=$id_bib");
-			$log->ecrire('<span class="vert">'.$nb_destroy.' fiches supprimées</span>'.BR.BR);
+			$log->log('<span class="vert">'.$nb_destroy.' fiches supprimées</span>'.BR.BR);
 		}
 
 		// Traitement d'un fichier
@@ -77,7 +77,7 @@ if($phase == 11)
 		if( false == $parseur->open( $integration_path . $fichier,$format,$phase_data["pointeur"]) )
 		{
 			incrementeVariable("traitement_erreurs");
-			$log->ecrire('<span class="rouge">Impossible d\'ouvrir le fichier : '. $fichier .'</span><br>');
+			$log->log('<span class="rouge">Impossible d\'ouvrir le fichier : '. $fichier .'</span><br>');
 			continue;
 		}
 
@@ -89,9 +89,9 @@ if($phase == 11)
 			if($ret["statut"]=="erreur")
 			{
 				incrementeVariable("traitement_erreurs");
-				$log->ecrire('<span class="rouge">'.$ret["erreur"].'</span><br>');
+				$log->log('<span class="rouge">'.$ret["erreur"].'</span><br>');
 				if($phase_data["nombre"] > 0) $msg= $phase_data["nombre"] . " fiches ont pu être traitées."; else $msg="aucune fiche n'a pu être traitée.";
-				$log->ecrire('<span class="vert">'.$msg.'</span>');
+				$log->log('<span class="vert">'.$msg.'</span>');
 				break;
 			}
 			if($ret["statut"]=="eof")
@@ -99,10 +99,10 @@ if($phase == 11)
 				if($phase_data["nombre"] == 0 ) $msg="Le fichier ne contenait aucune fiche";
 				else
 				{
-					$log->ecrire(BR.'<span class="vert">'.$phase_data["nombre"].' fiches ont été traitées.</span>');
+					$log->log(BR.'<span class="vert">'.$phase_data["nombre"].' fiches ont été traitées.</span>');
 					$msg="temps de traitement ".$chrono_fichier->end($phase_data["timeStart"])." (".$chrono_fichier->moyenne($phase_data["nombre"],"fiches").")";
 				}
-				$log->ecrire(BR.'<span class="vert">'.$msg.'</span><br>');
+				$log->log(BR.'<span class="vert">'.$msg.'</span><br>');
 				break;
 			}
 			if($ret["statut"]=="ok")
@@ -125,7 +125,7 @@ if($phase == 11)
 	$phase_data["pointeur"]=0;
 	if($phase_data["nb_fic"]> 0) $msg=$phase_data["nb_fic"]. " fichier(s) traité(s).";
 	else $msg="aucun fichier traité";
-	$log->ecrire(BR.'<span class="violet">'.$msg.'</span><br>');
+	$log->log(BR.'<span class="violet">'.$msg.'</span><br>');
 }
 
 // ----------------------------------------------------------------
@@ -142,7 +142,7 @@ function traceTraitementTransaction()
   // Affichage toutes les 100 fiches
   if ($phase_data["nombre"] % 1000 == 0)
   {
-  	$log->ecrire("fiche ".$phase_data["nombre"]." (" .$chrono100notices->tempsPasse()." secondes)<br>");
+  	$log->log("fiche ".$phase_data["nombre"]." (" .$chrono100notices->tempsPasse()." secondes)<br>");
     $chrono100notices->start();
   }
 
diff --git a/cosmogramme/php/integre_analyse_fichier_unimarc.php b/cosmogramme/php/integre_analyse_fichier_unimarc.php
index 2b8c1c98a030fff558d85ac79debe22966c60f44..446c2a0ed4d65993b84dde6c354f7d23bc51095d 100644
--- a/cosmogramme/php/integre_analyse_fichier_unimarc.php
+++ b/cosmogramme/php/integre_analyse_fichier_unimarc.php
@@ -126,11 +126,11 @@ else
 {
 	$buffer->open(false);
 	$timeStart = time();
-	$buffer->ecrire('<h4>Début de l\'analyse</h4>');
-	$buffer->ecrire('Fichier : '.$fichier.BR);
-	$buffer->ecrire('Profil unimarc : '.$sql->fetchOne("select libelle from profil_donnees where id_profil=$profil_unimarc").BR);
-	$buffer->ecrire('Affichage : '.getLibCodifVariable("test_level",$test_level).BR);
-	$buffer->ecrire('Heure :  '.date("G:i:s").BR.BR);
+	$buffer->log('<h4>Début de l\'analyse</h4>');
+	$buffer->log('Fichier : '.$fichier.BR);
+	$buffer->log('Profil unimarc : '.$sql->fetchOne("select libelle from profil_donnees where id_profil=$profil_unimarc").BR);
+	$buffer->log('Affichage : '.getLibCodifVariable("test_level",$test_level).BR);
+	$buffer->log('Heure :  '.date("G:i:s").BR.BR);
 }
 
 if( false == $parseur->open($fichier,0,$pointeur_reprise) )
@@ -177,7 +177,7 @@ while(true)
   			if($nb_notices == $piege_numero or $ret_test["statut"]==1)
   			{
   				$url_notice='<a class="notice" href="'.URL_BASE."php/analyse_afficher_notice.php?fichier=".$fichier."&adresse=".$adresse .'&profil_unimarc='.$profil_unimarc.'">';
-  				$buffer->ecrire('<b>'.$url_notice.'Notice n° '.$nb_notices.' : '.$ret_test["titre"].'</a></b>'.BR);
+  				$buffer->log('<b>'.$url_notice.'Notice n° '.$nb_notices.' : '.$ret_test["titre"].'</a></b>'.BR);
   				if($pave_unimarc > 0)
   				{
   					if($pave_unimarc == 1) $mf="w"; else $mf="a";
@@ -186,7 +186,7 @@ while(true)
   					$handle=fopen(getVariable("ftp_path").$ficmemo,$mf);
   					fwrite($handle,$ret["data"]);
   					fclose($handle);
-  					$buffer->ecrire("La notice a été écrite dans le fichier : ".$ficmemo.BR);
+  					$buffer->log("La notice a été écrite dans le fichier : ".$ficmemo.BR);
   				}
   				// Si le piege est sur le n° on quitte
   				if($piege_numero) break;
@@ -201,20 +201,20 @@ while(true)
   			if($ret_test["statut"]==2) $nb_rejets++;
   			if($ret_test["statut"]==3) $nb_suppr++;
   			$url_notice='<a class="notice" href="'.URL_BASE."php/analyse_afficher_notice.php?fichier=".$fichier."&adresse=".$adresse .'&profil_unimarc='.$profil_unimarc.'">';
-  			$buffer->ecrire('<b>'.$url_notice.'Notice n° '.$nb_notices.' : '.$ret_test["titre"].'</a></b>'.BR);
-  			$buffer->ecrire('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:15px;margin-bottom:10px;">');
+  			$buffer->log('<b>'.$url_notice.'Notice n° '.$nb_notices.' : '.$ret_test["titre"].'</a></b>'.BR);
+  			$buffer->log('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:15px;margin-bottom:10px;">');
   			foreach($ret_test["lig"] as $item)
   			{
   				$item[1]=str_replace(" ","&nbsp;",$item[1]);
   				if(! $item[2]) $item[2]="&nbsp;";
   				if(! $item[3]) $item[3]="&nbsp;";
-  				$buffer->ecrire('<tr><td class="blank"><span class="vert">'.$item[1].'</span></td>');
-  				if($item[0] > 0 and $item[0] < 3) $buffer->ecrire('<td class="blank"><span class="rouge">'.$item[2].'</span></td>');
-  				else $buffer->ecrire('<td class="blank">'.$item[2].'</td>');
-  				$buffer->ecrire('<td class="blank">'.$item[3].'</td>');
-  				$buffer->ecrire('</tr>');
+  				$buffer->log('<tr><td class="blank"><span class="vert">'.$item[1].'</span></td>');
+  				if($item[0] > 0 and $item[0] < 3) $buffer->log('<td class="blank"><span class="rouge">'.$item[2].'</span></td>');
+  				else $buffer->log('<td class="blank">'.$item[2].'</td>');
+  				$buffer->log('<td class="blank">'.$item[3].'</td>');
+  				$buffer->log('</tr>');
   			}
-  			$buffer->ecrire('</table>');
+  			$buffer->log('</table>');
   		}
    }
    else break;
@@ -229,45 +229,45 @@ if($mode_piege == true)
 }
 
 $chrono->timeStart=$timeStart;
-$buffer->ecrire("<h4>Fin de l'analyse</h4>",true);
-$buffer->ecrire("Heure :  ".date("G:i:s").BR);
-$buffer->ecrire("temps de traitement ".$chrono->end().BR.BR);
+$buffer->log("<h4>Fin de l'analyse</h4>",true);
+$buffer->log("Heure :  ".date("G:i:s").BR);
+$buffer->log("temps de traitement ".$chrono->end().BR.BR);
 
 if($ret["statut"]=="erreur")
 {
-	$buffer->ecrire('<span class="rouge">Le fichier ne respecte pas la norme unimarc</span><br>');
+	$buffer->log('<span class="rouge">Le fichier ne respecte pas la norme unimarc</span><br>');
 	if($nb_notices > 0)
 	{
-		$buffer->ecrire($nb_notices . " notices ont pu être analysées.".BR);
+		$buffer->log($nb_notices . " notices ont pu être analysées.".BR);
 	}
 	else
 	{
-		$buffer->ecrire("aucune notice n'a pu être analysée.".BR);
+		$buffer->log("aucune notice n'a pu être analysée.".BR);
 	}
 }
 else
 {
-	if($nb_notices == 0 ) $buffer->ecrire('<span class="rouge">Le fichier ne contenait aucune notice</span><br>');
+	if($nb_notices == 0 ) $buffer->log('<span class="rouge">Le fichier ne contenait aucune notice</span><br>');
 	else
 	{
-		$buffer->ecrire('<b><span class="vert">Le fichier respecte la norme unimarc</span></b>'.BR);
-		$buffer->ecrire($nb_notices.' notices on été analysées.'.BR);
+		$buffer->log('<b><span class="vert">Le fichier respecte la norme unimarc</span></b>'.BR);
+		$buffer->log($nb_notices.' notices on été analysées.'.BR);
 	}
 }
 if($nb_notices > 0 )
 {
 	if(!$nb_suppr > 0) $nb_suppr="aucune";
-	$buffer->ecrire("Notices à supprimer : " . $nb_suppr.BR);
-	$buffer->ecrire("Notices à mettre à jour : " . ($nb_notices - ($nb_rejets + $nb_suppr)).BR);
-	$buffer->ecrire("Exemplaires à insérer : " . $nb_ex.BR);
-	$buffer->ecrire('Anomalies non bloquantes : '. $nb_warnings.BR);
-	if($nb_rejets>0) $buffer->ecrire('<span class="rouge">Notices non exploitables : '. $nb_rejets.'</span>'.BR);
-	else $buffer->ecrire('Notices non exploitables : aucune'.BR);
-	$buffer->ecrire("Moyenne : ".$chrono->moyenne($nb_notices,"notices").BR);
+	$buffer->log("Notices à supprimer : " . $nb_suppr.BR);
+	$buffer->log("Notices à mettre à jour : " . ($nb_notices - ($nb_rejets + $nb_suppr)).BR);
+	$buffer->log("Exemplaires à insérer : " . $nb_ex.BR);
+	$buffer->log('Anomalies non bloquantes : '. $nb_warnings.BR);
+	if($nb_rejets>0) $buffer->log('<span class="rouge">Notices non exploitables : '. $nb_rejets.'</span>'.BR);
+	else $buffer->log('Notices non exploitables : aucune'.BR);
+	$buffer->log("Moyenne : ".$chrono->moyenne($nb_notices,"notices").BR);
 
 	// Types de docs
-	$buffer->ecrire(BR."<b>Types de documents :</b>".BR);
-	$buffer->ecrire('<table class="blank" cellpadding="5px" style="margin-left:15px;margin-top:5px;">');
+	$buffer->log(BR."<b>Types de documents :</b>".BR);
+	$buffer->log('<table class="blank" cellpadding="5px" style="margin-left:15px;margin-top:5px;">');
 	$td=$sql->fetchOne("select liste from variables where clef='types_docs'");
 	$td=explode(chr(13).chr(10),$td);
 	$td[]="100:articles de périodiques";
@@ -275,12 +275,12 @@ if($nb_notices > 0 )
 	{
 		$elem=explode(":",$td[$i]);
 		if(!$type_doc[$elem[0]]) $type_doc[$elem[0]]=0;
-		$buffer->ecrire('<tr>');
-		$buffer->ecrire('<td class="blank">'.$elem[1].'</td>');
-		$buffer->ecrire('<td class="blank" align="right">'.$type_doc[$elem[0]].'</td>');
-		$buffer->ecrire('</tr>');
+		$buffer->log('<tr>');
+		$buffer->log('<td class="blank">'.$elem[1].'</td>');
+		$buffer->log('<td class="blank" align="right">'.$type_doc[$elem[0]].'</td>');
+		$buffer->log('</tr>');
 	}
-	$buffer->ecrire('</table>'.BR);
+	$buffer->log('</table>'.BR);
 }
 // Réafficher le debut si + d'1 page en buffer
 $page=$buffer->close();
diff --git a/cosmogramme/php/integre_log.php b/cosmogramme/php/integre_log.php
deleted file mode 100644
index ba5f387baac3f4785d00de2ef80ea218c8e0a28f..0000000000000000000000000000000000000000
--- a/cosmogramme/php/integre_log.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
- */
-
-include '_init_frame.php';
-
-require_once 'classe_log.php';
-$log = new log("integration");
-
-if($_REQUEST["log"]) {
-	print('<h1>Log du '.$_REQUEST["date"].'</h1>');
-	print('<div style="margin-left:20px">');
-	$log->afficher($_REQUEST["log"]);
-	print('</div></body></html>');
-	exit;
-} ?>
-
-<h1>Journal des intégrations</h1>
-<div class="liste">
-	<table width="600px">
-	<tr>
-	<th colspan="2">Date</th>
-	<th colspan="2">Rapport</th>
-	<th width="15%">Notices traitées</th>
-	<th width="15%">Erreurs</th>
-	<th width="15%">Anomalies</th>
-	</tr>
-<?php foreach ($log->rendListe() as $lig) { ?>
-	<tr>
-	<td><?php echo rendUrlImg('loupe.png',
-													 '../cosmozend/cosmo/run-log/by-date/date/' . $lig['date_sql'],
-													 '', 'Synthèse par bibliothèques');?></td>
-	<td><?php echo $lig["date"];?></td>
-	<?php
-	// Integration
-	$url=rendUrlImg("loupe.png", "integre_log.php","log=".$lig["fic"]."&date=".$lig["date"]."&type=INTEGRATION","Afficher le détail");
-	print('<td>'. $url .'</td>');
-	print('<td>'. $lig["taille"] .'</td>');
-
-	// Notices traitees
-	$nb=(double)$sql->fetchOne("select sum(pointeur_reprise) from integrations where traite != 'non' and traite='".$lig["date_sql"]."'");
-	print('<td align="right">'. number_format($nb, 0, ',', ' ') .'</td>');
-
-	// Erreurs
-	$nb=(double)$sql->fetchOne("select sum(nb_erreurs) from integrations where traite != 'non' and traite='".$lig["date_sql"]."'");
-	print('<td align="right">'. number_format($nb, 0, ',', ' ') .'</td>');
-
-	// Warnings
-	$nb=(double)$sql->fetchOne("select sum(nb_warnings) from integrations where traite != 'non' and traite='".$lig["date_sql"]."'");
-	print('<td align="right">'. number_format($nb, 0, ',', ' ') .'</td>');
-	print('</tr>');
-}
-print('</table></div>');
-print('</body></html>');
-
-?>
\ No newline at end of file
diff --git a/cosmogramme/php/integre_log_sql.php b/cosmogramme/php/integre_log_sql.php
deleted file mode 100644
index 64f424cbe9e40013d49a4c8076c58c1d6136559d..0000000000000000000000000000000000000000
--- a/cosmogramme/php/integre_log_sql.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?PHP
-/**
- * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
- */
-////////////////////////////////////////////////////////////////////////////////////////////
-// AFFICHAGE DES LOGS D'INTEGRATION
-////////////////////////////////////////////////////////////////////////////////////////////
-include("_init_frame.php");
-
-require_once("classe_log.php");
-$log=new log("integration");
-$log_erreur=new log("erreur");
-$log_warning=new log("warning");
-$log_sql=new log("sql");
-
-////////////////////////
-// AFFICHAGE d'1 LOG
-////////////////////////
-
-if($_REQUEST["log"])
-{
-	print('<h1>Log des erreurs SQL du '.$_REQUEST["date"].'</h1>');
-	print('<div style="margin-left:20px">');
-	$log->afficher($_REQUEST["log"]);
-	print('</div></body></html>');
-	exit;
-}
-
-// ----------------------------------------------------------------
-// Logs des erreurs sql
-// ----------------------------------------------------------------
-print('<h1>Logs des erreurs SQL</h1>');
-
-print('<div class="liste"><table width="600px">');
-print(' <tr>
- <th width="5%" align="center">&nbsp;</th>
- <th width="95%" align="left">Logs des erreurs SQL</th>
-</tr>');
-
-$liste=$log_sql->rendListe();
-foreach($liste as $lig)
-{
-	$url=rendUrlImg("loupe.png", "integre_log_sql.php","log=".$lig["fic"]."&date=".$lig["date"]."&type=ERREUR");
-	print('<tr>');
-	print('<td>'. $url .'</td>');
-	print('<td>'.$lig["date"].'</td>');
-	print('</tr>');
-}
-print('</table></div>');
-
-print('</body></html>');
-
-?>
\ No newline at end of file
diff --git a/cosmogramme/php/integre_traite_main.php b/cosmogramme/php/integre_traite_main.php
index 5694e617e76cab8f7c8f1cb18af0670364a73a77..025f46c848b55f5c592dce9ff9208b67cf1b3805 100644
--- a/cosmogramme/php/integre_traite_main.php
+++ b/cosmogramme/php/integre_traite_main.php
@@ -49,8 +49,8 @@ require_once 'integration/integration_phase.php';
 
 // Instanciations
 $log = new log('integration');
-$log_erreur = new log('erreur', false);
-$log_warning = new log('warning', false);
+$log_debug = new log('debug', false);
+
 $chrono = new chronometre();
 $chrono_fichier = new chronometre();
 $chrono100notices = new chronometre();
@@ -82,8 +82,7 @@ $should_skip_records = false;
 // ----------------------------------------------------------------
 if ($_REQUEST['reprise'] == 'oui') {
 	$log->open(true);
-	$log_erreur->open(true);
-	$log_warning->open(true);
+	$log_debug->open(true);
 	restaureContext();
 	$reprise = true;
 
@@ -93,12 +92,11 @@ if ($_REQUEST['reprise'] == 'oui') {
 	setVariable('traitement_warnings', 0);
 	setVariable('traitement_phase', 'Déplacement des fichiers');
 	$log->open(false);
-	$log_erreur->open(false);
-	$log_warning->open(false);
-	$log->ecrire('<h4>Début du traitement</h4>');
-	$log->ecrire('Date : ' . date('d-m-Y') . BR);
-	$log->ecrire('Heure : ' . date('G:i:s') . BR);
-	$log->ecrire('Mode : '
+	$log_debug->open(false);
+	$log->log('<h4>Début du traitement</h4>');
+	$log->log('Date : ' . date('d-m-Y') . BR);
+	$log->log('Heure : ' . date('G:i:s') . BR);
+	$log->log('Mode : '
 							 . (($mode_cron == true) ? 'automatique (cron)' : 'manuel')
 							 . BR);
 
@@ -107,23 +105,23 @@ if ($_REQUEST['reprise'] == 'oui') {
 						'tot' => 'imports totaux uniquement',
 						'inc' => 'imports incrementiels uniquement',
             'init' => 'mise en file d\'attente uniquement'];
-		$log->ecrire('Type d\'import : ' . $txt[$cron_a_traiter] . BR);
+		$log->log('Type d\'import : ' . $txt[$cron_a_traiter] . BR);
 	}
 
 	try {
 		startIntegrationPhase('PrepareIntegrations');
     if ('init' == $cron_a_traiter) {
-      $log->ecrire(BR . BR . '<h4>mise en file d\'attente uniquement : fin du traitement</h4>');
-      $log->ecrire('Déblocage de la base<br>');
+      $log->log(BR . BR . '<h4>mise en file d\'attente uniquement : fin du traitement</h4>');
+      $log->log('Déblocage de la base<br>');
       setVariable('clef_traitements', '0');
       setVariable('traitement_phase', 'Traitement terminé');
       $chrono->timeStart = $timeStart;
-      $log->ecrire('Heure : ' . date('G:i:s') . BR);
-      $log->ecrire('Temps de traitement : ' . $chrono->end() . BR);
+      $log->log('Heure : ' . date('G:i:s') . BR);
+      $log->log('Temps de traitement : ' . $chrono->end() . BR);
       exit;
     }
 	} catch (Class_Cosmogramme_Integration_PhasePrepareIntegrationsException $e) {
-		$log->ecrire(BR . BR
+		$log->log(BR . BR
 								 . '<span class="rouge">' . $e->getMessage() . ' : Abandon du traitement !</span><br>');
 		exit;
 	}
@@ -141,7 +139,7 @@ if ($_REQUEST['reprise'] == 'oui') {
 				and type_fichier = 0");
 
     $logger = function($message, $log) {
-      $log->ecrire(BR . BR
+      $log->log(BR . BR
 									 . '<span class="rouge">' . $message . ' : traitement des notices désactivé !</span>'
                    . BR);
     };
@@ -163,11 +161,11 @@ if ($_REQUEST['reprise'] == 'oui') {
 	// Test blocage de la base
 	// ----------------------------------------------------------------
 	if (getVariable('clef_traitements') == '1') {
-		$log->ecrire('<span class="rouge">La base est bloquée (clef_traitements) : Abandon du traitement !</span><br>');
+		$log->log('<span class="rouge">La base est bloquée (clef_traitements) : Abandon du traitement !</span><br>');
 		$log->close();
 		exit;
 	}
-	$log->ecrire('Blocage de la base<br>');
+	$log->log('Blocage de la base<br>');
 	setVariable('clef_traitements', '1');
 }
 
@@ -176,7 +174,7 @@ if (!$should_skip_records) {
   // ----------------------------------------------------------------
   // Integration des notices (PHASE 0)
   // ----------------------------------------------------------------
-  $log->ecrire('<h4>Traitement des notices</h4>');
+  $log->log('<h4>Traitement des notices</h4>');
   setVariable('traitement_phase', 'Intégration des notices');
   startIntegrationPhase('notice');
 }
@@ -209,7 +207,7 @@ if (!$should_skip_records) {
   // ----------------------------------------------------------------
   // Suppression des notices sans exemplaires (PHASE 2)
   // ----------------------------------------------------------------
-  $log->ecrire('Suppression des notices sans exemplaire<br>');
+  $log->log('Suppression des notices sans exemplaire<br>');
   setVariable("traitement_phase", "Suppression des notices sans exemplaire");
   startIntegrationPhase('DeleteRecordWithoutItem');
 
@@ -236,7 +234,7 @@ if (!$should_skip_records) {
   $ecart = ecartDates($date, $date_homogene);
   if ($phase == 2)
     {
-      $log->ecrire("<h4>Intégration des notices succintes</h4>");
+      $log->log("<h4>Intégration des notices succintes</h4>");
       $phase = 3;
       unset($phase_data);
       $phase_data["nombre"] = 0;
@@ -244,14 +242,14 @@ if (!$should_skip_records) {
       $chrono100notices->start();
       $phase_data["nb_homogene"] = 0;
       $phase_data["id"] = 0;
-      if ($ecart < $frequence) $log->ecrire('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
+      if ($ecart < $frequence) $log->log('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
       elseif (!$mode_cron) sauveContexte();
     }
   if ($phase == 3 and $ecart >= $frequence)
     {
       if (!$mode_cron) print("<h4>Intégration des notices succintes</h4>");
       $chrono->start();
-      if (!$phase_data["nombre"]) $log->ecrire('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR . BR);
+      if (!$phase_data["nombre"]) $log->log('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR . BR);
       $result = $sql->prepareListe("select * from notices_succintes where id > '" . $phase_data["id"] . "' and z3950_retry <= $Z3950_retry_level order by id");
       while ($data = $sql->fetchNext($result))
         {
@@ -262,17 +260,17 @@ if (!$should_skip_records) {
           traceSuccinte($ret);
         }
       // Recap
-      $log->ecrire(BR . '<span class="vert">' . ($phase_data["nombre"]) . ' notices traitées</span>' . BR);
+      $log->log(BR . '<span class="vert">' . ($phase_data["nombre"]) . ' notices traitées</span>' . BR);
       $chrono->timeStart = $phase_data["timeStart"];
-      $log->ecrire('<span class="vert">Temps de traitement : ' . $chrono->end() . " (" . $chrono->moyenne($phase_data["nombre"], "notices") . ")</span>" . BR);
+      $log->log('<span class="vert">Temps de traitement : ' . $chrono->end() . " (" . $chrono->moyenne($phase_data["nombre"], "notices") . ")</span>" . BR);
 
       for ($i = 0; $i < 5; $i++) if (!$phase_data[$i]) $phase_data[$i] = "0";
-      $log->ecrire('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:25px;margin-bottom:10px;margin-top:10px">');
-      $log->ecrire('<tr><td class="blank">Notices trouvées dans la base</td><td class="blank" align="right">' . $phase_data[1] . '</td></tr>');
-      $log->ecrire('<tr><td class="blank">Notices trouvées sur serveurs z39.50</td><td class="blank" align="right">' . $phase_data[2] . '</td></tr>');
-      $log->ecrire('<tr><td class="blank">Notices non trouvées</td><td class="blank" align="right">' . $phase_data[3] . '</td></tr>');
-      $log->ecrire('<tr><td class="blank">Echecs de connexions</td><td class="blank" align="right">' . $phase_data[4] . '</td></tr>');
-      $log->ecrire('</table>');
+      $log->log('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:25px;margin-bottom:10px;margin-top:10px">');
+      $log->log('<tr><td class="blank">Notices trouvées dans la base</td><td class="blank" align="right">' . $phase_data[1] . '</td></tr>');
+      $log->log('<tr><td class="blank">Notices trouvées sur serveurs z39.50</td><td class="blank" align="right">' . $phase_data[2] . '</td></tr>');
+      $log->log('<tr><td class="blank">Notices non trouvées</td><td class="blank" align="right">' . $phase_data[3] . '</td></tr>');
+      $log->log('<tr><td class="blank">Echecs de connexions</td><td class="blank" align="right">' . $phase_data[4] . '</td></tr>');
+      $log->log('</table>');
       setVariable("succintes_date", $date);
     }
 
@@ -290,7 +288,7 @@ if (!$should_skip_records) {
   $ecart = ecartDates($date, $date_homogene);
   if ($phase == 3)
     {
-      $log->ecrire("<h4>Homogénéisation Z39.50 des notices par l'ISBN</h4>");
+      $log->log("<h4>Homogénéisation Z39.50 des notices par l'ISBN</h4>");
       unset($phase_data);
       $phase_data["nombre"] = 0;
       $phase_data["timeStart"] = time();
@@ -298,10 +296,10 @@ if (!$should_skip_records) {
       $phase = 4;
       if ($homogene_actif == 0)
         {
-          $log->ecrire('<span class="rouge">Le processus d\'homogénéisation des notices est désactivé</span>' . BR);
+          $log->log('<span class="rouge">Le processus d\'homogénéisation des notices est désactivé</span>' . BR);
         } else
         {
-          if ($ecart < $frequence) $log->ecrire('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
+          if ($ecart < $frequence) $log->log('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
           else if (!$mode_cron) sauveContexte();
         }
     }
@@ -312,9 +310,9 @@ if (!$should_skip_records) {
       $ret["timeout"] = 10;
       if (!$phase_data["nombre"])
         {
-          $log->ecrire('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR);
-          $log->ecrire('<span class="vert">Nombre maxi de tentatives de reconnexions : ' . $Z3950_max_reconnect . '</span>' . BR);
-          $log->ecrire('<span class="vert">Mode de recherche sur les serveurs z39.50 : ' . getLibCodifVariable("Z3950_cache_only", $homogene_cache_only) . '</span>' . BR);
+          $log->log('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR);
+          $log->log('<span class="vert">Nombre maxi de tentatives de reconnexions : ' . $Z3950_max_reconnect . '</span>' . BR);
+          $log->log('<span class="vert">Mode de recherche sur les serveurs z39.50 : ' . getLibCodifVariable("Z3950_cache_only", $homogene_cache_only) . '</span>' . BR);
         }
       $result = $sql->prepareListe("select id_notice,isbn from notices where isbn > '" . $phase_data["isbn"] . "' and qualite < $qualite_homogene and z3950_retry <= $Z3950_retry_level order by isbn");
       try {
@@ -335,7 +333,7 @@ if (!$should_skip_records) {
                 $phase_data["nb_reconnexions"]++;
                 if ($phase_data["nb_reconnexions"] >= $Z3950_max_reconnect)
                   {
-                    $log->ecrire(BR . '<span class="rouge">Abandon du traitement : maximum de tentatives de reconnexions atteint</span>' . BR);
+                    $log->log(BR . '<span class="rouge">Abandon du traitement : maximum de tentatives de reconnexions atteint</span>' . BR);
                     $fin = true;
                     break;
                   }
@@ -346,7 +344,7 @@ if (!$should_skip_records) {
             $phase_data["nombre"]++;
           }
       } catch (PDOException $e) {
-        $log->ecrire('PDOException'.$e);
+        $log->log('PDOException'.$e);
         $cosmo_path = new CosmoPaths();
         $site = '/' . $cosmo_path->getSite() . '/';
         $cfgfile = $cosmo_path->getConfigPath();
@@ -363,7 +361,7 @@ if (!$should_skip_records) {
   $fin = false;
   if ($phase == 4)
     {
-      $log->ecrire("<h4>Homogénéisation Z39.50 des notices par l'EAN</h4>");
+      $log->log("<h4>Homogénéisation Z39.50 des notices par l'EAN</h4>");
       unset($phase_data);
       $phase_data["nombre"] = 0;
       $phase_data["timeStart"] = time();
@@ -372,10 +370,10 @@ if (!$should_skip_records) {
       $phase = 5;
       if ($homogene_actif == 0)
         {
-          $log->ecrire('<span class="rouge">Le processus d\'homogénéisation des notices est désactivé</span>' . BR);
+          $log->log('<span class="rouge">Le processus d\'homogénéisation des notices est désactivé</span>' . BR);
         } else
         {
-          if ($ecart < $frequence) $log->ecrire('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
+          if ($ecart < $frequence) $log->log('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
           else if (!$mode_cron) sauveContexte();
         }
     }
@@ -386,9 +384,9 @@ if (!$should_skip_records) {
       $ret["timeout"] = 10;
       if (!$phase_data["nombre"])
         {
-          $log->ecrire('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR);
-          $log->ecrire('<span class="vert">Nombre maxi de tentatives de reconnexions : ' . ($Z3950_max_reconnect) . '</span>' . BR);
-          $log->ecrire('<span class="vert">Mode de recherche sur les serveurs z39.50 : ' . getLibCodifVariable("Z3950_cache_only", $homogene_cache_only) . '</span>' . BR);
+          $log->log('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR);
+          $log->log('<span class="vert">Nombre maxi de tentatives de reconnexions : ' . ($Z3950_max_reconnect) . '</span>' . BR);
+          $log->log('<span class="vert">Mode de recherche sur les serveurs z39.50 : ' . getLibCodifVariable("Z3950_cache_only", $homogene_cache_only) . '</span>' . BR);
         }
       $result = $sql->prepareListe("select id_notice,ean from notices where ean > '" . $phase_data["ean"] . "' and qualite < $qualite_homogene and z3950_retry <= $Z3950_retry_level order by ean");
       while ($data = $sql->fetchNext($result))
@@ -408,7 +406,7 @@ if (!$should_skip_records) {
               $phase_data["nb_reconnexions"]++;
               if ($phase_data["nb_reconnexions"] >= $Z3950_max_reconnect)
                 {
-                  $log->ecrire(BR . '<span class="rouge">Abandon du traitement : maximum de tentatives de reconnexions atteint</span>' . BR);
+                  $log->log(BR . '<span class="rouge">Abandon du traitement : maximum de tentatives de reconnexions atteint</span>' . BR);
                   $fin = true;
                   break;
                 }
@@ -428,7 +426,7 @@ if (!$should_skip_records) {
   $fin = false;
   if ($phase == 5)
     {
-      $log->ecrire("<h4>Homogénéisation Z39.50 des notices par le numéro commercial</h4>");
+      $log->log("<h4>Homogénéisation Z39.50 des notices par le numéro commercial</h4>");
       unset($phase_data);
       $phase_data["nombre"] = 0;
       $phase_data["timeStart"] = time();
@@ -437,10 +435,10 @@ if (!$should_skip_records) {
       $phase = 6;
       if ($homogene_actif == 0)
         {
-          $log->ecrire('<span class="rouge">Le processus d\'homogénéisation des notices est désactivé</span>' . BR);
+          $log->log('<span class="rouge">Le processus d\'homogénéisation des notices est désactivé</span>' . BR);
         } else
         {
-          if ($ecart < $frequence) $log->ecrire('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
+          if ($ecart < $frequence) $log->log('<span class="vert">Sera fait dans ' . ($frequence - $ecart) . ' jour(s)</span>');
           else if (!$mode_cron) sauveContexte();
         }
     }
@@ -451,9 +449,9 @@ if (!$should_skip_records) {
       $ret["timeout"] = 10;
       if (!$phase_data["nombre"])
         {
-          $log->ecrire('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR);
-          $log->ecrire('<span class="vert">Nombre maxi de tentatives de reconnexions : ' . ($Z3950_max_reconnect) . '</span>' . BR);
-          $log->ecrire('<span class="vert">Mode de recherche sur les serveurs z39.50 : ' . getLibCodifVariable("Z3950_cache_only", $homogene_cache_only) . '</span>' . BR);
+          $log->log('<span class="vert">Niveau de tentatives d\'homogénéisation : ' . $Z3950_retry_level . '</span>' . BR);
+          $log->log('<span class="vert">Nombre maxi de tentatives de reconnexions : ' . ($Z3950_max_reconnect) . '</span>' . BR);
+          $log->log('<span class="vert">Mode de recherche sur les serveurs z39.50 : ' . getLibCodifVariable("Z3950_cache_only", $homogene_cache_only) . '</span>' . BR);
         }
       $result = $sql->prepareListe("select id_notice,id_commerciale from notices where id_commerciale > '" . $phase_data["id_commerciale"] . "' and qualite < $qualite_homogene and z3950_retry <= $Z3950_retry_level order by id_commerciale");
       while ($data = $sql->fetchNext($result))
@@ -473,7 +471,7 @@ if (!$should_skip_records) {
               $phase_data["nb_reconnexions"]++;
               if ($phase_data["nb_reconnexions"] >= $Z3950_max_reconnect)
                 {
-                  $log->ecrire(BR . '<span class="rouge">Abandon du traitement : maximum de tentatives de reconnexions atteint</span>' . BR);
+                  $log->log(BR . '<span class="rouge">Abandon du traitement : maximum de tentatives de reconnexions atteint</span>' . BR);
                   $fin = true;
                   break;
                 }
@@ -545,7 +543,7 @@ if ($phase==16 or $phase==17) {
 setVariable("traitement_phase", "Envoi des mails aux bibliothèques qui ont du retard");
 if ($phase == 20)
 {
-	$log->ecrire("<h4>Envoi des mails aux bibliothèques qui ont du retard</h4>");
+	$log->log("<h4>Envoi des mails aux bibliothèques qui ont du retard</h4>");
 	unset($phase_data);
 	$phase_data["nombre"] = 0;
 	$phase_data["nb_erreurs"] = 0;
@@ -568,7 +566,7 @@ if ($phase == 21)
 		{
 			if (!$mode_cron and $chrono->tempsPasse() > $timeout) sauveContexte();
 			if ($enreg["nom_court"] <= $phase_data["pointeur"]) continue;
-			$log->ecrire('<span class="violet">' . $enreg["nom_court"] . " : " . $enreg["retard"] . ' de retard</span><br>');
+			$log->log('<span class="violet">' . $enreg["nom_court"] . " : " . $enreg["retard"] . ' de retard</span><br>');
 			$data["NOM_BIB"] = $enreg["nom"];
 			$data["DATE_ENVOI"] = $enreg["dernier_ajout"];
 			$data["RETARD"] = $enreg["retard"];
@@ -577,7 +575,7 @@ if ($phase == 21)
 			if ($erreur)
 			{
 				$phase_data["nb_erreurs"]++;
-				$log->ecrire('<span class="rouge" style="margin-left:20px">' . $erreur . '</span><br>');
+				$log->log('<span class="rouge" style="margin-left:20px">' . $erreur . '</span><br>');
 			} else
 			{
 				$phase_data["nombre"]++;
@@ -588,12 +586,12 @@ if ($phase == 21)
 			$phase_data["pointeur"] = $enreg["nom_court"];
 		}
 		$chrono100notices->timeStart = $phase_data["timeStart"];
-		$log->ecrire(BR);
-		if ($phase_data["nb_erreurs"] > 0) $log->ecrire('<span class="rouge">Echecs d\'envois : ' . $phase_data["nb_erreurs"] . '</span><br>');
-		$log->ecrire('<span class="vert">' . $phase_data["nombre"] . ' mail(s) envoyé(s)</span>' . BR);
-		$log->ecrire('<span class="vert">Temps de traitement : ' . $chrono100notices->end() . '</span>' . BR);
+		$log->log(BR);
+		if ($phase_data["nb_erreurs"] > 0) $log->log('<span class="rouge">Echecs d\'envois : ' . $phase_data["nb_erreurs"] . '</span><br>');
+		$log->log('<span class="vert">' . $phase_data["nombre"] . ' mail(s) envoyé(s)</span>' . BR);
+		$log->log('<span class="vert">Temps de traitement : ' . $chrono100notices->end() . '</span>' . BR);
 	}
-	else $log->ecrire('<span class="vert">Aucune alerte de retard à signaler</span>' . BR);
+	else $log->log('<span class="vert">Aucune alerte de retard à signaler</span>' . BR);
 }
 
 // ----------------------------------------------------------------
@@ -606,28 +604,27 @@ startIntegrationPhase('EndProcess');
 
 $chrono->timeStart = $timeStart;
 
-$log->ecrire("Déblocage de la base<br>");
-$log->ecrire("Heure :  " . date("G:i:s") . BR);
-$log->ecrire('Temps de traitement : ' . $chrono->end() . BR);
+$log->log("Déblocage de la base<br>");
+$log->log("Heure :  " . date("G:i:s") . BR);
+$log->log('Temps de traitement : ' . $chrono->end() . BR);
 
 //ecrire le temps de traitement
 $temps_traitement=(int)time()-$timeStart;
 sqlExecute("update integrations set temps_traitement = $temps_traitement where traite='$date'");
 
 // Résumé
-if ($compteur[0] > 0) $log->ecrire('<span class="rouge">Notices rejetées : ' . $compteur[0] . '</span>' . BR);
+if ($compteur[0] > 0) $log->log('<span class="rouge">Notices rejetées : ' . $compteur[0] . '</span>' . BR);
 $lib = $notice->libStatut;
-$log->ecrire(BR . '<table class="blank" cellpadding="5px" style="margin-left:15px;margin-top:5px;">');
+$log->log(BR . '<table class="blank" cellpadding="5px" style="margin-left:15px;margin-top:5px;">');
 for ($i = 1; $i < count($lib); $i++)
 {
 	if (!$compteur[$i]) $compteur[$i] = "aucune";
-	$log->ecrire('<tr class="blank"><td class="blank">' . $lib[$i] . '</td><td class="blank" align="right">' . $compteur[$i] . '</td></tr>');
+	$log->log('<tr class="blank"><td class="blank">' . $lib[$i] . '</td><td class="blank" align="right">' . $compteur[$i] . '</td></tr>');
 }
-$log->ecrire('</table>');
+$log->log('</table>');
 
 $log->close();
-$log_erreur->close();
-$log_warning->close();
+$log_debug->close();
 print(BR . BR . '</body></html>');
 
 
@@ -636,7 +633,7 @@ print(BR . BR . '</body></html>');
 // ----------------------------------------------------------------
 function traceTraitementNotice()
 {
-	global $log, $log_erreur, $log_warning;
+	global $log, $log_debug;
 	global $notice, $compteur, $phase_data, $nb_notices, $chrono100notices, $debug_level;
 	global $nom_bib, $libelle_type_operation, $ret;
 
@@ -654,15 +651,15 @@ function traceTraitementNotice()
 		//incrementeVariable("traitement_erreurs");
 		$phase_data["nb_erreurs"]++;
 		$phase_data["erreurs"][$statut["erreur"]][] = $ret["adresse"];
-		if ($debug_level == 1 or $debug_level == 2) $log->ecrire('<span class="rouge">Notice n° ' . $nb_notices . ' - ' . $statut["erreur"] . '</span>' . BR);
+		if ($debug_level == 1 or $debug_level == 2) $log->log('<span class="rouge">Notice n° ' . $nb_notices . ' - ' . $statut["erreur"] . '</span>' . BR);
 	}
 	if (count($statut["warnings"]) > 0)
 	{
 		//incrementeVariable("traitement_warnings");
-		if ($debug_level == 2) $log->ecrire('<span class="num_notice">notice n° ' . $nb_notices . '</span>' . BR);
+		if ($debug_level == 2) $log->log('<span class="num_notice">notice n° ' . $nb_notices . '</span>' . BR);
 		foreach ($statut["warnings"] as $warning)
 		{
-			if ($debug_level == 2) $log->ecrire('<font color="purple">Anomalie : ' . $warning[0] . " &raquo; " . $warning[1] . '</font>' . BR);
+			if ($debug_level == 2) $log->log('<font color="purple">Anomalie : ' . $warning[0] . " &raquo; " . $warning[1] . '</font>' . BR);
 			if ($warning[0] == "Genre non reconnu" or $warning[0] == "Section non reconnue") continue;
 			$phase_data["nb_warnings"]++;
 			$phase_data["warnings"][$warning[0]][] = $ret["adresse"] . chr(9) . $warning[1];
@@ -672,38 +669,38 @@ function traceTraitementNotice()
 	// Affichage toutes les 100 notices
 	if ($nb_notices % 100 == 0)
 	{
-		$log->ecrire("notice $nb_notices (" . $chrono100notices->tempsPasse() . " secondes)<br>");
+		$log->log("notice $nb_notices (" . $chrono100notices->tempsPasse() . " secondes)<br>");
 		$chrono100notices->start();
 	}
 	// Debug level a 1 on affiche le mode d'identificationde la notice
 	if ($debug_level > 1)
 	{
 		if ($nb_notices == 1) print(BR);
-		$log->ecrire('<span class="num_notice">Notice n° ' . $nb_notices . '</span>' . BR);
-		$log->ecrire('<span>Mode d\'identification ---> ' . $statut["identification"] . '</span>' . BR);
+		$log->log('<span class="num_notice">Notice n° ' . $nb_notices . '</span>' . BR);
+		$log->log('<span>Mode d\'identification ---> ' . $statut["identification"] . '</span>' . BR);
 	}
 	// Tout afficher si debug_level maxi
 	if ($debug_level > 2)
 	{
 		$detail = $notice->getNotice();
-		$log->ecrire('<div style=width:700px;margin-left:15px;margin-bottom:10px;">');
-		$log->ecrire('<table class="blank" cellspacing="0" cellpadding="5px">');
+		$log->log('<div style=width:700px;margin-left:15px;margin-bottom:10px;">');
+		$log->log('<table class="blank" cellspacing="0" cellpadding="5px">');
 		// Statut de retour
-		$log->ecrire('<tr><td class="blank">Traitement</td>');
+		$log->log('<tr><td class="blank">Traitement</td>');
 		if ($statut["erreur"]) $erreur = '<span class="rouge"> - ' . $statut["erreur"] . '</span>'; else $erreur="";
-		$log->ecrire('<td class="blank">' . $notice->libStatut[$code_statut] . $erreur . '</td></tr>');
+		$log->log('<td class="blank">' . $notice->libStatut[$code_statut] . $erreur . '</td></tr>');
 		// warnings
-		$log->ecrire('<tr><td class="blank" style="vertical-align:top">Anomalies</td>');
+		$log->log('<tr><td class="blank" style="vertical-align:top">Anomalies</td>');
 		if (count($statut["warnings"]) > 0)
 		{
-			$log->ecrire('<td class="blank"><font color="purple">');
+			$log->log('<td class="blank"><font color="purple">');
 			foreach ($statut["warnings"] as $warning)
 			{
-				$log->ecrire($warning[0] . " &raquo; " . $warning[1] . BR);
+				$log->log($warning[0] . " &raquo; " . $warning[1] . BR);
 			}
-			$log->ecrire('</font></td></tr>');
+			$log->log('</font></td></tr>');
 		}
-		else $log->ecrire('<td class="blank">aucune</td></tr>');
+		else $log->log('<td class="blank">aucune</td></tr>');
 		// Détail de l'enreg
 		foreach ($detail as $clef => $data)
 		{
@@ -711,10 +708,10 @@ function traceTraitementNotice()
 			{
 				for ($i = 0; $i < count($data); $i++)
 				{
-					$log->ecrire('<tr><td class="blank" style="vertical-align:top">Exemplaire ' . ($i + 1) . '</td>');
-					$log->ecrire('<td class="blank">');
-					foreach ($data[$i] as $key => $valeur) $log->ecrire($key . " = " . $valeur . BR);
-					$log->ecrire('</td></tr>');
+					$log->log('<tr><td class="blank" style="vertical-align:top">Exemplaire ' . ($i + 1) . '</td>');
+					$log->log('<td class="blank">');
+					foreach ($data[$i] as $key => $valeur) $log->log($key . " = " . $valeur . BR);
+					$log->log('</td></tr>');
 				}
 				continue;
 			} elseif ($clef == "warnings") continue;
@@ -724,11 +721,11 @@ function traceTraitementNotice()
 				foreach ($data as $key => $valeur) $aff.=$key . " = " . $valeur . BR;
 				$data = $aff;
 			}
-			$log->ecrire('<tr><td class="blank" style="vertical-align:top">' . $clef . '</td>');
+			$log->log('<tr><td class="blank" style="vertical-align:top">' . $clef . '</td>');
 			if ($data == "") $data = "&nbsp;";
-			$log->ecrire('<td class="blank">' . $data . '</td></tr>');
+			$log->log('<td class="blank">' . $data . '</td></tr>');
 		}
-		$log->ecrire("</table></div>");
+		$log->log("</table></div>");
 	}
 }
 
@@ -742,25 +739,25 @@ function traceHomogene($id_notice, $isbn, $ean, $id_commerciale)
 	$phase_data[$ret["statut_z3950"]]++;
 	if ($debug_level == 0)
 	{
-		if ($ret["statut"] == "erreur") $log->ecrire('<span class="vert">Connexion au serveur : ' . $ret["serveur"] . ' ---> </span><span class="rouge">' . $ret["erreur"] . '</span>' . BR);
-		elseif (!$phase_data["nombre"]) $log->ecrire('<span class="vert">Connexion au serveur : ' . $ret["serveur"] . ' ---> ok</span>' . BR);
+		if ($ret["statut"] == "erreur") $log->log('<span class="vert">Connexion au serveur : ' . $ret["serveur"] . ' ---> </span><span class="rouge">' . $ret["erreur"] . '</span>' . BR);
+		elseif (!$phase_data["nombre"]) $log->log('<span class="vert">Connexion au serveur : ' . $ret["serveur"] . ' ---> ok</span>' . BR);
 		if ($phase_data["nombre"] and $phase_data["nombre"] % 100 == 0)
 		{
-			$log->ecrire("notice " . $phase_data["nombre"] . " (" . $chrono100notices->tempsPasse() . " secondes)" . BR);
+			$log->log("notice " . $phase_data["nombre"] . " (" . $chrono100notices->tempsPasse() . " secondes)" . BR);
 			$chrono100notices->start();
 		}
 		return;
 	}
-	$log->ecrire('<a class="notice" href="' . URL_BASE . "php/analyse_afficher_notice_full.php?id_notice=" . $id_notice . '">Notice n° ' . $id_notice . '</a>' . BR);
-	$log->ecrire('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:15px;margin-bottom:10px">');
-	if ($isbn) $log->ecrire('<tr><td class="blank">Isbn</td><td class="blank">' . $isbn . '</td></tr>');
-	if ($ean) $log->ecrire('<tr><td class="blank">Ean</td><td class="blank">' . $ean . '</td></tr>');
-	if ($id_commerciale) $log->ecrire('<tr><td class="blank">No commercial</td><td class="blank">' . $id_commerciale . '</td></tr>');
-	$log->ecrire('<tr><td class="blank">Serveur</td><td class="blank">' . $ret["serveur"] . '</td></tr>');
+	$log->log('<a class="notice" href="' . URL_BASE . "php/analyse_afficher_notice_full.php?id_notice=" . $id_notice . '">Notice n° ' . $id_notice . '</a>' . BR);
+	$log->log('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:15px;margin-bottom:10px">');
+	if ($isbn) $log->log('<tr><td class="blank">Isbn</td><td class="blank">' . $isbn . '</td></tr>');
+	if ($ean) $log->log('<tr><td class="blank">Ean</td><td class="blank">' . $ean . '</td></tr>');
+	if ($id_commerciale) $log->log('<tr><td class="blank">No commercial</td><td class="blank">' . $id_commerciale . '</td></tr>');
+	$log->log('<tr><td class="blank">Serveur</td><td class="blank">' . $ret["serveur"] . '</td></tr>');
 	if ($ret["statut_z3950"] > 1) $class = "vert";
-	$log->ecrire('<tr><td class="blank">Statut</td><td class="blank"><span class="' . $class . '">' . communication::getLibelleStatutZ3950($ret["statut_z3950"]) . '</span></td></tr>');
-	if ($ret["erreur"]) $log->ecrire('<tr><td class="blank">Erreur</td><td class="blank"><span class="rouge">' . $ret["erreur"] . '</span></td></tr>');
-	$log->ecrire('</table>');
+	$log->log('<tr><td class="blank">Statut</td><td class="blank"><span class="' . $class . '">' . communication::getLibelleStatutZ3950($ret["statut_z3950"]) . '</span></td></tr>');
+	if ($ret["erreur"]) $log->log('<tr><td class="blank">Erreur</td><td class="blank"><span class="rouge">' . $ret["erreur"] . '</span></td></tr>');
+	$log->log('</table>');
 }
 
 function afficherRecapHomogene($phase_data, $chrono)
@@ -769,14 +766,14 @@ function afficherRecapHomogene($phase_data, $chrono)
 	$compteur[6]+=$phase_data[2] + $phase_data[3]; // Incrementer compteur global d'homogeneisation
 	for ($i = 0; $i < 4; $i++) if (!$phase_data[$i]) $phase_data[$i] = "0";
 
-	$log->ecrire(BR . '<span class="vert">' . ($phase_data["nombre"]) . ' notices traitées</span>' . BR);
+	$log->log(BR . '<span class="vert">' . ($phase_data["nombre"]) . ' notices traitées</span>' . BR);
 	$chrono->timeStart = $phase_data["timeStart"];
-	$log->ecrire('<span class="vert">Temps de traitement : ' . $chrono->end() . " (" . $chrono->moyenne($phase_data["nombre"], "notices") . ")</span>" . BR);
-	$log->ecrire('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:25px;margin-bottom:10px;margin-top:10px">');
-	$log->ecrire('<tr><td class="blank">Notices homogenéisées</td><td class="blank" align="right">' . ($phase_data[2] + $phase_data[3]) . '</td></tr>');
-	$log->ecrire('<tr><td class="blank">Notices non trouvées</td><td class="blank" align="right">' . $phase_data[1] . '</td></tr>');
-	$log->ecrire('<tr><td class="blank">Echecs de connexions</td><td class="blank" align="right">' . $phase_data[0] . '</td></tr>');
-	$log->ecrire('</table>');
+	$log->log('<span class="vert">Temps de traitement : ' . $chrono->end() . " (" . $chrono->moyenne($phase_data["nombre"], "notices") . ")</span>" . BR);
+	$log->log('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:25px;margin-bottom:10px;margin-top:10px">');
+	$log->log('<tr><td class="blank">Notices homogenéisées</td><td class="blank" align="right">' . ($phase_data[2] + $phase_data[3]) . '</td></tr>');
+	$log->log('<tr><td class="blank">Notices non trouvées</td><td class="blank" align="right">' . $phase_data[1] . '</td></tr>');
+	$log->log('<tr><td class="blank">Echecs de connexions</td><td class="blank" align="right">' . $phase_data[0] . '</td></tr>');
+	$log->log('</table>');
 }
 
 // ----------------------------------------------------------------
@@ -806,26 +803,26 @@ function traceSuccinte($ret)
 	{
 		if ($phase_data["nombre"] and $phase_data["nombre"] % 100 == 0)
 		{
-			$log->ecrire("notice " . $phase_data["nombre"] . " (" . $chrono100notices->tempsPasse() . " secondes)" . BR);
+			$log->log("notice " . $phase_data["nombre"] . " (" . $chrono100notices->tempsPasse() . " secondes)" . BR);
 			$chrono100notices->start();
 		}
 		return;
 	}
-	$log->ecrire('<a class="notice" href="' . URL_BASE . "php/analyse_afficher_notice_full.php?id_notice=" . $ret["id_notice"] . '">Notice n° ' . $ret["id_notice"] . '</a>' . BR);
-	$log->ecrire('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:15px;margin-bottom:10px">');
-	$log->ecrire('<tr><td class="blank">Bibliothèque</td><td class="blank">' . $bib->getNomCourt($ret["id_bib"]) . '</td></tr>');
-	if ($ret["isbn"]) $log->ecrire('<tr><td class="blank">Isbn</td><td class="blank">' . $ret["isbn"] . '</td></tr>');
-	if ($ret["ean"]) $log->ecrire('<tr><td class="blank">Ean</td><td class="blank">' . $ret["ean"] . '</td></tr>');
-	if ($ret["id_commerciale"]) $log->ecrire('<tr><td class="blank">No commercial</td><td class="blank">' . $ret["id_commerciale"] . '</td></tr>');
-	if ($ret["statut"] == 4) $log->ecrire('<tr><td class="blank">Statut</td><td class="blank"><span class="vert">Trouvée dans la base</span></td></tr>');
+	$log->log('<a class="notice" href="' . URL_BASE . "php/analyse_afficher_notice_full.php?id_notice=" . $ret["id_notice"] . '">Notice n° ' . $ret["id_notice"] . '</a>' . BR);
+	$log->log('<table class="blank" cellspacing="0" cellpadding="5px" style="margin-left:15px;margin-bottom:10px">');
+	$log->log('<tr><td class="blank">Bibliothèque</td><td class="blank">' . $bib->getNomCourt($ret["id_bib"]) . '</td></tr>');
+	if ($ret["isbn"]) $log->log('<tr><td class="blank">Isbn</td><td class="blank">' . $ret["isbn"] . '</td></tr>');
+	if ($ret["ean"]) $log->log('<tr><td class="blank">Ean</td><td class="blank">' . $ret["ean"] . '</td></tr>');
+	if ($ret["id_commerciale"]) $log->log('<tr><td class="blank">No commercial</td><td class="blank">' . $ret["id_commerciale"] . '</td></tr>');
+	if ($ret["statut"] == 4) $log->log('<tr><td class="blank">Statut</td><td class="blank"><span class="vert">Trouvée dans la base</span></td></tr>');
 	else
 	{
-		$log->ecrire('<tr><td class="blank">Serveur</td><td class="blank">' . $ret["serveur"] . '</td></tr>');
+		$log->log('<tr><td class="blank">Serveur</td><td class="blank">' . $ret["serveur"] . '</td></tr>');
 		if ($ret["statut_z3950"] > 1) $class = "vert";
-		$log->ecrire('<tr><td class="blank">Statut</td><td class="blank"><span class="' . $class . '">' . communication::getLibelleStatutZ3950($ret["statut_z3950"]) . '</span></td></tr>');
+		$log->log('<tr><td class="blank">Statut</td><td class="blank"><span class="' . $class . '">' . communication::getLibelleStatutZ3950($ret["statut_z3950"]) . '</span></td></tr>');
 	}
-	if ($ret["erreur"]) $log->ecrire('<tr><td class="blank">Erreur</td><td class="blank"><span class="rouge">' . $ret["erreur"] . '</span></td></tr>');
-	$log->ecrire('</table>');
+	if ($ret["erreur"]) $log->log('<tr><td class="blank">Erreur</td><td class="blank"><span class="rouge">' . $ret["erreur"] . '</span></td></tr>');
+	$log->log('</table>');
 }
 
 // ----------------------------------------------------------------
diff --git a/cosmogramme/sql/patch/patch_316.php b/cosmogramme/sql/patch/patch_316.php
index e1578072ceab6f73d7934e8d1db6ec51a1721f40..2ac6816a3b9b30181d89f9fca04416754f059422 100644
--- a/cosmogramme/sql/patch/patch_316.php
+++ b/cosmogramme/sql/patch/patch_316.php
@@ -3,4 +3,4 @@ try {
   Zend_Db_Table_Abstract::getDefaultAdapter()
     ->query('ALTER TABLE codif_section MODIFY id_section int(11) NOT NULL AUTO_INCREMENT');
 } catch(Exception $e) {}
-?>
+?>
\ No newline at end of file
diff --git a/cosmogramme/sql/patch/patch_326.php b/cosmogramme/sql/patch/patch_326.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b5fabaeef2d450e3f06a4a320ac212b7bca832d
--- /dev/null
+++ b/cosmogramme/sql/patch/patch_326.php
@@ -0,0 +1,12 @@
+<?php
+Zend_Db_Table_Abstract::getDefaultAdapter()
+  ->query('CREATE TABLE if not exists `user_api_tokens` ( '
+          . 'id int(11) unsigned not null auto_increment,'
+          . 'user_id int(11) unsigned not null,'
+          . 'client_id varchar(255) not null,'
+          . 'token varchar(255) not null,'
+          . 'primary key (id),'
+          . 'key (`user_id`),'
+          . 'key (`token`)'
+          . ') engine=MyISAM default charset=utf8');
+?>
\ No newline at end of file
diff --git a/cosmogramme/sql/patch/patch_327.php b/cosmogramme/sql/patch/patch_327.php
new file mode 100644
index 0000000000000000000000000000000000000000..64e2bd9cff1cc6c568a1d9d193a33e717047490a
--- /dev/null
+++ b/cosmogramme/sql/patch/patch_327.php
@@ -0,0 +1,6 @@
+<?php
+try {
+   Zend_Db_Table_Abstract::getDefaultAdapter()
+     ->query('delete from newsletter_dispatch where COLLECTED=0 and ended_on is NULL and error is NULL and DATE(created_on)!=CURDATE()');
+} catch(Exception $e) {}
+?>
\ No newline at end of file
diff --git a/cosmogramme/tests/php/classes/CosmoPathsTest.php b/cosmogramme/tests/php/classes/CosmoPathsTest.php
index 962902acceacbb827b055aa7523329912370bf49..41b4ace6588809743564cef11a66d00ad301c671 100644
--- a/cosmogramme/tests/php/classes/CosmoPathsTest.php
+++ b/cosmogramme/tests/php/classes/CosmoPathsTest.php
@@ -244,4 +244,33 @@ class CosmoPathsFromGitlabCiRunnerTest extends PHPUnit_Framework_TestCase {
 
 }
 
+
+
+class CosmoPathsFromCommandLineAtRootTest extends PHPUnit_Framework_TestCase {
+	protected $_cosmo_paths;
+
+	public function setUp() {
+		parent::setUp();
+		unset($_SERVER);
+    $_SERVER = ['SCRIPT_NAME' => 'cosmogramme/php/integre_traite_main.php',
+                'SCRIPT_FILENAME' => 'cosmogramme/php/integre_traite_main.php'];
+		$this->_cosmo_paths = new CosmoPaths();
+		$this->_cosmo_paths->setFileSystem(Storm_Test_ObjectWrapper::mock()
+																			 ->whenCalled('getcwd')
+																			 ->answers('/srv/http/bokeh.fr'));
+	}
+
+	/** @test */
+	public function configPathShouldBeCosmogrammeConfigDotPhp() {
+    $this->assertEquals('./cosmogramme/config.php', $this->_cosmo_paths->getConfigPath());
+	}
+
+
+  /** @test */
+	public function configIniPathShouldBeConfigIni() {
+    $this->assertEquals('./config.ini', $this->_cosmo_paths->getBokehConfigPath());
+	}
+
+}
+
 ?>
\ No newline at end of file
diff --git a/library/Class/Admin/Skin.php b/library/Class/Admin/Skin.php
index 0599f9e7647c7daf16199baa2ad9764b7eaa457b..b4bb2640302a62ee0e748931eece6917ecafbfb5 100644
--- a/library/Class/Admin/Skin.php
+++ b/library/Class/Admin/Skin.php
@@ -85,7 +85,7 @@ class Class_Admin_Skin {
 
 
   public function renderMenuIconOn($name, $view, $attribs = []) {
-    if (!$src = $this->renderIconUrlOn('icons', $name))
+    if (!$src = $this->getIconUrl('icons', $name))
       return '';
 
     return $view->tagImg($src,$attribs);
@@ -93,7 +93,7 @@ class Class_Admin_Skin {
 
 
   public function renderActionIconOn($name, $view, $attribs = []) {
-    if (!$src = $this->renderIconUrlOn('actions', $name))
+    if (!$src = $this->getIconUrl('actions', $name))
       return '';
 
     return $view->tagImg($src, $attribs);
@@ -103,7 +103,7 @@ class Class_Admin_Skin {
   public function renderButtonIconOn($name, $view, $attribs = []) {
     $attribs = array_merge(['alt' => ''], $attribs);
 
-    if (!$src = $this->renderIconUrlOn('buttons', $name))
+    if (!$src = $this->getIconUrl('buttons', $name))
       return '';
 
     $attribs['src'] = $src;
@@ -112,7 +112,7 @@ class Class_Admin_Skin {
   }
 
 
-  public function renderIconUrlOn($type, $name) {
+  public function getIconUrl($type, $name) {
     $config = $this->_getSkinConfig();
 
     if (!isset($config[$type][$name]))
diff --git a/library/Class/Album.php b/library/Class/Album.php
index da1bcef2ece2088e62d1e51164c32141bfa8079f..0c66bb9263a8f6b5b6fa32d4812fca59286d6f57 100644
--- a/library/Class/Album.php
+++ b/library/Class/Album.php
@@ -1123,11 +1123,14 @@ class Class_Album extends Storm_Model_Abstract {
     $this->check((0==(int)$this->getAnnee())
                  || (($this->getAnnee() >= self::ANNEE_MIN)
                      and ($this->getAnnee() <= $next_year)),
-                 sprintf("L'année doit être comprise entre %s et %s",
+                 sprintf($this->_("L'année doit être comprise entre %s et %s"),
                          self::ANNEE_MIN,
                          $next_year));
 
-    $this->check($this->hasTypeDocId(), 'L\'album doit avoir un type de document');
+    $this->check($this->hasTitre(),
+                 $this->_('Le titre est obligatoire'));
+    $this->check($this->hasTypeDocId(),
+                 $this->_('L\'album doit avoir un type de document'));
   }
 
 
diff --git a/library/Class/Batch/RessourceNumerique.php b/library/Class/Batch/RessourceNumerique.php
index 79f8d55e20c23a5cb51f859e54bfcc9e7509ebfb..8cfec77945d192814eaace227cfef8d149c5d542 100644
--- a/library/Class/Batch/RessourceNumerique.php
+++ b/library/Class/Batch/RessourceNumerique.php
@@ -30,7 +30,9 @@ abstract class Class_Batch_RessourceNumerique extends Class_Batch_Abstract {
 
   public function run() {
     if ($this->isEnabled())
-      $this->_getService()->harvest();
+      $this->_getService()
+           ->setLogger($this->getLogger())
+           ->harvest();
 
     return $this;
   }
diff --git a/library/Class/Cata/Log.php b/library/Class/Cata/Log.php
new file mode 100644
index 0000000000000000000000000000000000000000..84a19f16d6bbc44429b34ddd24b75411b7676e1e
--- /dev/null
+++ b/library/Class/Cata/Log.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Class_Cata_Log {
+  const
+    DEFAULT_TARGET = 'default',
+    ALL_TARGETS = '*';
+
+  protected $_targets = [];
+
+  public function addDefaultTarget($logger) {
+    return $this->addTarget(static::DEFAULT_TARGET, $logger);
+  }
+
+
+  public function addTarget($name, $logger) {
+    $this->_targets[$name] = $logger;
+    return $this;
+  }
+
+
+  public function log($message, $targets = ['default']) {
+    return $this->_targetsDo($targets, 'log', [$message]);
+  }
+
+
+  public function info($message, $targets = ['default']) {
+    return $this->_targetsDo($targets, 'info', [$message]);
+  }
+
+
+  public function success($message, $targets = ['default']) {
+    return $this->_targetsDo($targets, 'success', [$message]);
+  }
+
+
+  public function error($message, $targets = ['default']) {
+    return $this->_targetsDo($targets, 'error', [$message]);
+  }
+
+
+  protected function _targetsDo($targets, $method, $params) {
+    array_map(
+              function($logger) use ($method, $params)
+              {
+                call_user_func_array([$logger, $method], $params);
+              },
+              $this->_parseTargets($targets));
+
+    return $this;
+  }
+
+
+  protected function _parseTargets($targets) {
+    if (static::ALL_TARGETS == $targets)
+      return $this->_targets;
+
+    if (!is_array($targets))
+      $targets = [$targets];
+
+    return array_intersect_key($this->_targets,
+                               array_combine($targets, $targets));
+  }
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Cata/LogVolatile.php b/library/Class/Cata/LogVolatile.php
new file mode 100644
index 0000000000000000000000000000000000000000..f20b76e13823bbdf8645751dd74c889a0f246f9f
--- /dev/null
+++ b/library/Class/Cata/LogVolatile.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Class_Cata_LogVolatile {
+  protected $_lines = [];
+
+  public function getLines() {
+    return $this->_lines;
+  }
+
+
+  public function log($message) {
+    $this->_lines []= $message;
+  }
+
+
+  public function info($message) {
+    $this->_lines []= $message;
+  }
+
+
+  public function success($message) {
+    $this->_lines []= $message;
+  }
+
+
+  public function error($message) {
+    $this->_lines []= $message;
+  }
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Cosmogramme/Integration/PhaseAbstract.php b/library/Class/Cosmogramme/Integration/PhaseAbstract.php
index 2b5dc96cf18c4368a2f48c8c96ec4f0ec5c5c76e..63f6de14d9c41583ffc30515ff796c7b4a4f0034 100644
--- a/library/Class/Cosmogramme/Integration/PhaseAbstract.php
+++ b/library/Class/Cosmogramme/Integration/PhaseAbstract.php
@@ -72,7 +72,7 @@ abstract class Class_Cosmogramme_Integration_PhaseAbstract {
       ->beSameCronAs($this->_phase)
       ->beSameCountAs($this->_phase);
 
-    $this->_log->ecrire('<h4>' . $this->_label . '</h4>');
+    $this->_log->log('<h4>' . $this->_label . '</h4>');
     $this->_init($new_phase);
     return $new_phase;
   }
@@ -91,7 +91,7 @@ abstract class Class_Cosmogramme_Integration_PhaseAbstract {
     try {
       $this->_execute();
     } catch (Exception $e) {
-      $this->_log->ecrire('<p class="rouge">' . sprintf('Erreur lors de l\'execution de la phase %s : <br/>%s<br/>%s',
+      $this->_log->log('<p class="rouge">' . sprintf('Erreur lors de l\'execution de la phase %s : <br/>%s<br/>%s',
                                                         $this->_label,
                                                         $e->getMessage(),
                                                         $e->getTraceAsString()) . '</p>');
diff --git a/library/Class/Cosmogramme/Integration/PhaseBatchs.php b/library/Class/Cosmogramme/Integration/PhaseBatchs.php
index 7b44847ed14745e5c09286f6fe082dfc457af2f4..4386ec6685d8d75be0ad75446de11625ed083e1f 100644
--- a/library/Class/Cosmogramme/Integration/PhaseBatchs.php
+++ b/library/Class/Cosmogramme/Integration/PhaseBatchs.php
@@ -34,7 +34,7 @@ class Class_Cosmogramme_Integration_PhaseBatchs
 
   protected function _execute() {
     if (!$this->_phase->isCron()) {
-      $this->_log->ecrire($this->_('Les batchs ne sont traités qu\'en mode cron.'));
+      $this->_log->log($this->_('Les batchs ne sont traités qu\'en mode cron.'));
       return;
     }
 
@@ -60,30 +60,25 @@ class Class_Cosmogramme_Integration_PhaseBatchs
 
 
   protected function _runOne($batch) {
-    $this->_log->addSuccess($batch->getLibelle());
+    $this->_log->success($batch->getLibelle());
     $this->_setData('pointeur_reprise', $batch->getId());
 
     try {
-      $batch->runWithLogger($this);
-      $this->_log->addSuccess($this->_('OK, temps de traitement : %s',
-                                       $this->_chrono->endFile()));
+      $batch->runWithLogger($this->_log);
+      $this->_log->success($this->_('OK, temps de traitement : %s',
+                                    $this->_chrono->endFile()));
 
     } catch (Exception $e) {
-      $this->_log->addError($this->_('Erreur lors de l\'execution du batch %s',
+      $this->_log->error($this->_('Erreur lors de l\'execution du batch %s',
                                      $batch->getLibelle()));
-      $this->_log->addError($e->getMessage());
-      $this->_log->addError($e->getTraceAsString());
+      $this->_log->error($e->getMessage());
+      $this->_log->error($e->getTraceAsString());
     }
 
     $this->_chrono->startOnFile();
   }
 
 
-  public function log($message) {
-    $this->_log->ecrire(nl2br($message) . '<br>');
-  }
-
-
   protected function _init($phase) {
     $phase
       ->resetDatas()
diff --git a/library/Class/Cosmogramme/Integration/PhaseDeleteRecordWithoutItem.php b/library/Class/Cosmogramme/Integration/PhaseDeleteRecordWithoutItem.php
index 3b3995cf0b619beabe809507c5bbbbe9a30ff9a8..b2bc4e26cedd2ca16847f936d15e8bfbc76ec5e4 100644
--- a/library/Class/Cosmogramme/Integration/PhaseDeleteRecordWithoutItem.php
+++ b/library/Class/Cosmogramme/Integration/PhaseDeleteRecordWithoutItem.php
@@ -39,17 +39,17 @@ class Class_Cosmogramme_Integration_PhaseDeleteRecordWithoutItem extends Class_C
       foreach ($records_ids as $record_id)
         $this->_runOne($record_id['id_notice']);
 
-      $this->_log->ecrire($this->_getData('deleted') . ' notices sans exemplaire supprimées<br/>');
+      $this->_log->log($this->_getData('deleted') . ' notices sans exemplaire supprimées<br/>');
       $this->_cleanMemory();
       $page++;
     }
 
     if (0 == $this->_getData('deleted')) {
-      $this->_log->ecrire('Aucune notice sans exemplaire');
+      $this->_log->log('Aucune notice sans exemplaire');
       return;
     }
 
-    $this->_log->ecrire('Temps de traitement: '.$this->_chrono->endMain().' ('.$this->_chrono->mainAverage($this->_getData('deleted'), 'notices').')' );
+    $this->_log->log('Temps de traitement: '.$this->_chrono->endMain().' ('.$this->_chrono->mainAverage($this->_getData('deleted'), 'notices').')' );
   }
 
 
diff --git a/library/Class/Cosmogramme/Integration/PhaseItemFacets.php b/library/Class/Cosmogramme/Integration/PhaseItemFacets.php
index 829bef1673fc8da0b04a03111bb78b29f8620408..d96701fc68222b74366e9952d44bdd8fd94d786d 100644
--- a/library/Class/Cosmogramme/Integration/PhaseItemFacets.php
+++ b/library/Class/Cosmogramme/Integration/PhaseItemFacets.php
@@ -43,7 +43,7 @@ class Class_Cosmogramme_Integration_PhaseItemFacets
         return $this->_phase;
 
       if (0 == ($this->_getData('nombre') % 100))
-        $this->_log->ecrire('<span class="vert"> ' . $this->_getData('nombre') . ' records updated </span>');
+        $this->_log->log('<span class="vert"> ' . $this->_getData('nombre') . ' records updated </span>');
 
       /* @see #23391 : whenever we fetched ths same record page, end loop */
       if ($this->_previous_records && (0 == count(array_filter(array_diff($this->_previous_records, $records)))))
@@ -59,7 +59,7 @@ class Class_Cosmogramme_Integration_PhaseItemFacets
 
     Class_CosmoVar::setValueOf('date_maj_facettes', $this->_last_update_date);
 
-    $this->_log->ecrire('<span class="vert">'.
+    $this->_log->log('<span class="vert">'.
                         'Toutes les exemplaires ont été mis à jour :' .
                         ' pointeur notice : ' . $this->_getData('pointeur_notice') .
                         ' pointeur : ' . $this->_getData('pointeur') .
@@ -70,7 +70,7 @@ class Class_Cosmogramme_Integration_PhaseItemFacets
       . ' (' . $this->_chrono->meanOnFile($this->_getData('nombre'),
                                           'notices') . ')</span>';
 
-    $this->_log->ecrire($msg);
+    $this->_log->log($msg);
   }
 
 
diff --git a/library/Class/Cosmogramme/Integration/PhaseNotice.php b/library/Class/Cosmogramme/Integration/PhaseNotice.php
index be6873e19bbf14a6120807e60a759a47833e1321..98e0668c8e1820405d4ef2851dc5b24988b8a729 100644
--- a/library/Class/Cosmogramme/Integration/PhaseNotice.php
+++ b/library/Class/Cosmogramme/Integration/PhaseNotice.php
@@ -57,16 +57,16 @@ class Class_Cosmogramme_Integration_PhaseNotice
     $data_source = $integration->getDataSource();
     if (!$data_source->isHttp()
         && !$this->getFileSystem()->filesize($data_source->getUri())) {
-      $this->_log->addError($this->_('Le fichier d\'import total est vide : aucun exemplaire supprimé.'));
+      $this->_log->error($this->_('Le fichier d\'import total est vide : aucun exemplaire supprimé.'));
       return;
     }
 
     $id_int_bib = $integration->getIdBib();
-    $this->_log->addInfo($this->_('Préparation des données'));
+    $this->_log->info($this->_('Préparation des données'));
 
     $nb = $this->_markItemsToBeDeleted($id_int_bib);
-    $this->_log->addSuccess($this->_('%d exemplaire(s) marqué(s) pour suppression',
-                                     $nb));
+    $this->_log->success($this->_('%d exemplaire(s) marqué(s) pour suppression',
+                                  $nb));
 
     $nb1 = Class_NoticeSuccincte::countBy(['id_bib' => $id_int_bib]);
     Class_NoticeSuccincte::deleteBy(['id_bib' => $id_int_bib]);
@@ -74,7 +74,7 @@ class Class_Cosmogramme_Integration_PhaseNotice
     Class_CodifThesaurus::deleteBy(['code' => null,
                                     'rules' => null]);
 
-    $this->_log->addSuccess($this->_('%d notices succinctes supprimées', $nb1));
+    $this->_log->success($this->_('%d notices succinctes supprimées', $nb1));
   }
 
 
@@ -109,7 +109,7 @@ class Class_Cosmogramme_Integration_PhaseNotice
 
     $nb = Class_Exemplaire::countBy($args);
     Class_Exemplaire::deleteBy($args);
-    $this->_log->addSuccess($this->_('%d exemplaire(s) supprimé(s)', $nb));
+    $this->_log->success($this->_('%d exemplaire(s) supprimé(s)', $nb));
   }
 
 
diff --git a/library/Class/Cosmogramme/Integration/PhaseOnDataSource.php b/library/Class/Cosmogramme/Integration/PhaseOnDataSource.php
index b8deeaa917654c2502ef137d6691995521802107..79f139c8faadfc920c7ec2ea83c6fa73f32ba7bb 100644
--- a/library/Class/Cosmogramme/Integration/PhaseOnDataSource.php
+++ b/library/Class/Cosmogramme/Integration/PhaseOnDataSource.php
@@ -40,7 +40,7 @@ abstract class Class_Cosmogramme_Integration_PhaseOnDataSource extends Class_Cos
       'aucun fichier traité';
 
     if (!$this->_phase->isCron() && !$this->isTimeOut())
-      $this->_log->ecrire('<br><span class="violet">' . $msg . '</span><br>');
+      $this->_log->log('<br><span class="violet">' . $msg . '</span><br>');
   }
 
 
@@ -58,7 +58,7 @@ abstract class Class_Cosmogramme_Integration_PhaseOnDataSource extends Class_Cos
     $data_source = $integration->getDataSource();
     if (!$data_source->isValid()) {
       Class_CosmoVar::increment('traitement_erreurs');
-      $this->_log->ecrire('<span class="rouge">Impossible d\'ouvrir la source : '
+      $this->_log->log('<span class="rouge">Impossible d\'ouvrir la source : '
                           . $data_source->getUri()
                           . '</span><br>');
       return;
@@ -132,14 +132,14 @@ abstract class Class_Cosmogramme_Integration_PhaseOnDataSource extends Class_Cos
 
     $line->withErrorDo(
                        function($error) {
-                            $this->_log->ecrire('<span class="rouge">' . $error . '</span><br>');
+                            $this->_log->log('<span class="rouge">' . $error . '</span><br>');
                        });
 
     $processed = $this->_getData('nombre');
     $msg = ($processed > 0) ?
       $processed . ' fiches ont pu être traitées.' :
       'aucune fiche n\'a pu être traitée.';
-    $this->_log->ecrire('<span class="vert">' . $msg . '</span>');
+    $this->_log->log('<span class="vert">' . $msg . '</span>');
 
     return true;
   }
@@ -151,15 +151,15 @@ abstract class Class_Cosmogramme_Integration_PhaseOnDataSource extends Class_Cos
 
     $processed = $this->_getData('nombre');
     if ($processed == 0) {
-      $this->_log->ecrire('<br><span class="vert">Le fichier ne contenait aucune fiche</span><br>');
+      $this->_log->log('<br><span class="vert">Le fichier ne contenait aucune fiche</span><br>');
       return true;
     }
 
-    $this->_log->ecrire('<br><span class="vert">' . $processed . ' fiches ont été traitées.</span>');
+    $this->_log->log('<br><span class="vert">' . $processed . ' fiches ont été traitées.</span>');
     $msg = "temps de traitement " . $this->_chrono->endFile()
       . ' (' . $this->_chrono->meanOnFile($processed, 'fiches') . ')';
 
-    $this->_log->ecrire('<br><span class="vert">' . $msg . '</span><br>');
+    $this->_log->log('<br><span class="vert">' . $msg . '</span><br>');
     return true;
   }
 
@@ -177,7 +177,7 @@ abstract class Class_Cosmogramme_Integration_PhaseOnDataSource extends Class_Cos
 
     $processed = $this->_getData('nombre');
     if (0 == $processed % 1000) {
-      $this->_log->ecrire('fiche ' . $processed
+      $this->_log->log('fiche ' . $processed
                           . ' (' . $this->_chrono->elapsedOnRecords()
                           . ' secondes)<br>');
       $this->_chrono->startOnRecords();
@@ -226,7 +226,7 @@ abstract class Class_Cosmogramme_Integration_PhaseOnDataSource extends Class_Cos
     $trace .= $this->_headerOfHook($integration);
 
     (!$integration->getPointeurReprise()) ?
-      $this->_log->ecrire($trace) :
+      $this->_log->log($trace) :
       $this->_getPrinter()->nextPutAll($trace . '<br>');
   }
 
diff --git a/library/Class/Cosmogramme/Integration/PhasePanier.php b/library/Class/Cosmogramme/Integration/PhasePanier.php
index 600af5daea6ab3665a34d51386e2f4950cee8317..48a62a069898b681fe6d907dfa5666d82cef83e1 100644
--- a/library/Class/Cosmogramme/Integration/PhasePanier.php
+++ b/library/Class/Cosmogramme/Integration/PhasePanier.php
@@ -41,7 +41,7 @@ class Class_Cosmogramme_Integration_PhasePanier extends Class_Cosmogramme_Integr
         && false === array_search('MAIL', $fields))
       $errors[] = 'Configuration: colonne IDABON ou MAIL requise';
 
-    array_map([$this->_log, 'addError'], $errors);
+    array_map([$this->_log, 'error'], $errors);
 
     return empty($errors);
   }
@@ -91,14 +91,14 @@ class Class_Cosmogramme_Integration_PhasePanier extends Class_Cosmogramme_Integr
 
   protected function importBasketRecord($datas, $integration) {
     if(!$map = $this->mapRecordColumns($integration, $datas))
-      return $this->_log->addError($this->_('Pas de donnée trouvée avec le profil de données sélectionné'));
+      return $this->_log->error($this->_('Pas de donnée trouvée avec le profil de données sélectionné'));
 
     if(!$map['libelle'])
-      return $this->_log->addError($this->_('Ligne non traitée car le libellé n\'a pas pu être lu'));
+      return $this->_log->error($this->_('Ligne non traitée car le libellé n\'a pas pu être lu'));
 
     if (!$exemplaire = Class_Exemplaire::findFirstBy(['id_origine' => $map['id_notice_sigb'],
                                                       'id_int_bib' => $integration->getIdBib()])) {
-      $this->_log->addError($this->_('L\'exemplaire id_origine : %s / id_int_bib : %s n\'a pas été trouvé.',
+      $this->_log->error($this->_('L\'exemplaire id_origine : %s / id_int_bib : %s n\'a pas été trouvé.',
                                      $map['id_notice_sigb'],
                                      $integration->getIdBib()));
       $exemplaire = new Class_Entity();
@@ -107,7 +107,7 @@ class Class_Cosmogramme_Integration_PhasePanier extends Class_Cosmogramme_Integr
     $owners = $this->findPossibleOwnersOfBasketRecord($map);
     if ($owners->isEmpty()) {
       $user = Class_Users::find(1);
-      $this->_log->addError($this->_('Le panier "%s" est orphelin. Il sera rattaché à l\'utilisateur "%s"',
+      $this->_log->error($this->_('Le panier "%s" est orphelin. Il sera rattaché à l\'utilisateur "%s"',
                                      $map['libelle'],
                                      $user->getLogin()));
       $owners->addAll([$user]);
diff --git a/library/Class/Cosmogramme/Integration/PhasePatrons.php b/library/Class/Cosmogramme/Integration/PhasePatrons.php
index 4b2999fe0983ce52d12bf05d5051e2c790741e8e..e5d4161023388850d35573b2b4bff2d86845caa5 100644
--- a/library/Class/Cosmogramme/Integration/PhasePatrons.php
+++ b/library/Class/Cosmogramme/Integration/PhasePatrons.php
@@ -125,7 +125,7 @@ class Class_Cosmogramme_Integration_PhasePatrons extends Class_Cosmogramme_Integ
                                      ['IDABON']
                            ));
 
-    array_map([$this->_log, 'addError'], $errors);
+    array_map([$this->_log, 'error'], $errors);
 
     return empty($errors);
   }
@@ -137,7 +137,7 @@ class Class_Cosmogramme_Integration_PhasePatrons extends Class_Cosmogramme_Integ
                                         'id_int_bib' => $integration->getIdBib()]))
       return;
 
-    $this->_log->ecrire('<span class="violet">'
+    $this->_log->log('<span class="violet">'
                         . $this->_('%d abonné(s) marqué(s) pour suppression',
                                    $count)
                         . '</span>');
diff --git a/library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php b/library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php
index e4aff4d41899dea3455a327b76feaa3efa4b7c86..881664e446e425d8810d68d21b72a98e3aa47c73 100644
--- a/library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php
+++ b/library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php
@@ -49,13 +49,13 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
       ->_publishStatusReport()
       ->_updateStandard();
 
-    $this->_log->ecrire('<h4>' . $this->_('Déplacement des intégrations en file d\'attente') . '</h4>');
-    $this->_log->ecrire('<br><table class="blank" cellspacing="0" cellpadding="5px">');
+    $this->_log->log('<h4>' . $this->_('Déplacement des intégrations en file d\'attente') . '</h4>');
+    $this->_log->log('<br><table class="blank" cellspacing="0" cellpadding="5px">');
 
     foreach (Class_IntMajAuto::findAllBy(['order' => 'rang']) as $majauto)
       $this->_runOne($majauto);
 
-    $this->_log->ecrire('</table>');
+    $this->_log->log('</table>');
 
     Class_CosmoVar::setValueOf('integration_date',
                                $this->getTimeSource()->dateDayAndHours());
@@ -73,11 +73,11 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
     if (!$standard_dir = $generator->getUpdatableStandard())
       return $this;
 
-    $this->_log->ecrire('<h4>' . $this->_('Mise à jour de l\'étalon') . '</h4>');
+    $this->_log->log('<h4>' . $this->_('Mise à jour de l\'étalon') . '</h4>');
     $generator->update($standard_dir)
-      ? $this->_log->addSuccess($this->_('OK'))
-      : $this->_log->addError($this->_('Erreur : %s',
-                                       $generator->getLastError()));
+      ? $this->_log->success($this->_('OK'))
+      : $this->_log->error($this->_('Erreur : %s',
+                                    $generator->getLastError()));
     return $this;
   }
 
@@ -88,18 +88,19 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
       return;
 
     $this->_log
-      ->ecrire('<tr><td class="blank"><span class="bib">' . $bib->getNomCourt($id_bib) .'</span></td>'
-               .'<td class="blank">'.$majauto->getNomFichier().'</td><td class="blank">');
+      ->log('<tr><td class="blank"><span class="bib">' . $bib->getNomCourt($id_bib) .'</span></td>'
+            .'<td class="blank">'.$majauto->getNomFichier().'</td><td class="blank">');
 
     $ftpfile = $this->_getFtpFile($majauto->getNomFichier());
     $id_upload = Class_CosmoVar::get('ID_upload') + 1;
     $newfile = 'integre' . $id_upload . '.pan';
 
-    if (false !== strpos($majauto->getNomFichier(), 'http://'))
+    if (false !== strpos($majauto->getNomFichier(), 'http://')) {
       return $this->_prepareUrl($majauto);
+    }
 
     if (!$ftpfile || !$this->getFileSystem()->is_file($ftpfile)) {
-      $this->_log->ecrire($this->_('pas de transfert pour : %s', $ftpfile) . '</td>');
+      $this->_log->log($this->_('pas de transfert pour : %s', $ftpfile) . '</td>');
       return $this;
     }
 
@@ -109,7 +110,7 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
     $filesystem = $this->getFilesystem();
     if (true !== $filesystem->rename($ftpfile, $this->_integration_path.$newfile)) {
       $this->_log
-        ->ecrire(sprintf('<span class="rouge">%s</span></td>',
+        ->log(sprintf('<span class="rouge">%s</span></td>',
                          $this->_('erreur au transfert du fichier')));
 
       $this->_incrementData('traitement_erreurs');
@@ -117,8 +118,9 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
     }
 
     $this->_log
-      ->ecrire(sprintf('<span class="vert">%s</span></td>',
-                       $this->_('transfert vers %s', $newfile)));
+      ->log(sprintf('<span class="vert">%s</span></td>',
+                    $this->_('transfert vers %s', $newfile)));
+
 
     $this->_newIntegration($newfile, $majauto);
     Class_CosmoVar::setValueOf('ID_upload', $id_upload);
@@ -131,8 +133,8 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
                                                     'fichier' => $uri]))
       return $this;
 
-    $this->_log->ecrire(sprintf('<span class="vert">%s</span></td>',
-                                $this->_('Création de l\'intégration pour %s', $uri)));
+    $this->_log->log(sprintf('<span class="vert">%s</span></td>',
+                             $this->_('Création de l\'intégration pour %s', $uri)));
     $this->_newIntegration($uri, $majauto);
 
     return $this;
@@ -161,8 +163,8 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
 
     if (!$dir = $this->getFileSystem()->opendir($ftp_path)) {
       $this->_log
-        ->ecrire(sprintf('<span class="rouge">%s</span>',
-                         $this->_('répertoire inaccessible: %s', $ftp_path)));
+        ->log(sprintf('<span class="rouge">%s</span>',
+                      $this->_('répertoire inaccessible: %s', $ftp_path)));
 
       $this->_incrementData('traitement_erreurs');
       return null;
@@ -196,9 +198,9 @@ class Class_Cosmogramme_Integration_PhasePrepareIntegrations extends Class_Cosmo
 
       if ($file_size < $minsize) {
         $this->_log
-          ->ecrire(sprintf('<span class="rouge">%s</span></td>',
-                           $this->_('Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo',
-                                    $file_size, $minsize)));
+          ->log(sprintf('<span class="rouge">%s</span></td>',
+                        $this->_('Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo',
+                                 $file_size, $minsize)));
         return false;
       }
     }
diff --git a/library/Class/Cosmogramme/Integration/PhasePseudoRecord.php b/library/Class/Cosmogramme/Integration/PhasePseudoRecord.php
index 3ead13c40dc59b242cb8867285249f7a2300f00b..3f47f68b5248bc4c843911d7f736b120105638a7 100644
--- a/library/Class/Cosmogramme/Integration/PhasePseudoRecord.php
+++ b/library/Class/Cosmogramme/Integration/PhasePseudoRecord.php
@@ -62,7 +62,7 @@ abstract class Class_Cosmogramme_Integration_PhasePseudoRecord
 
 
   protected function _runPage($models) {
-    $this->_log->ecrire($this->_getData('nombre') . '<br>');
+    $this->_log->log($this->_getData('nombre') . '<br>');
     foreach($models as $model) {
       if ($this->isTimeOut())
         return;
@@ -99,7 +99,7 @@ abstract class Class_Cosmogramme_Integration_PhasePseudoRecord
 
   protected function _summarize() {
     if (!$processed = $this->_getData('nombre')) {
-      $this->_log->ecrire($this->_tagGreen($this->_('Aucune notice à traiter')) . '<br>');
+      $this->_log->log($this->_tagGreen($this->_('Aucune notice à traiter')) . '<br>');
       return;
     }
 
@@ -108,7 +108,7 @@ abstract class Class_Cosmogramme_Integration_PhasePseudoRecord
                                . $this->_chrono->endFile()
                                . ' (' . $this->_chrono->meanOnFile($processed, 'notices') . ')')];
 
-    $this->_log->ecrire(implode('<br>', $trace));
+    $this->_log->log(implode('<br>', $trace));
   }
 
 
diff --git a/library/Class/Cosmogramme/Integration/PhaseReviews.php b/library/Class/Cosmogramme/Integration/PhaseReviews.php
index 6a465b155e7bd19f03de2c3f64cfda24c559431d..2667043c92646140321146a3909c40266715409d 100644
--- a/library/Class/Cosmogramme/Integration/PhaseReviews.php
+++ b/library/Class/Cosmogramme/Integration/PhaseReviews.php
@@ -56,7 +56,7 @@ class Class_Cosmogramme_Integration_PhaseReviews extends Class_Cosmogramme_Integ
         return $this->_phase;
 
       if ($this->_log && (0 == ($this->_getData('nombre') % 100)))
-        $this->_log->ecrire('<span class="vert"> ' . $this->_getData('nombre') . ' avis mis à jour </span>');
+        $this->_log->log('<span class="vert"> ' . $this->_getData('nombre') . ' avis mis à jour </span>');
 
       $this->runUpdateForRecords($records);
 
@@ -66,7 +66,7 @@ class Class_Cosmogramme_Integration_PhaseReviews extends Class_Cosmogramme_Integ
     }
 
     if ($this->_log) {
-      $this->_log->ecrire('<span class="vert">'.
+      $this->_log->log('<span class="vert">'.
                           'Tous les avis ont été mis à jour :' .
                           '<br>' . $this->_getData('nombre') . ' avis traités.</span>');
 
@@ -75,7 +75,7 @@ class Class_Cosmogramme_Integration_PhaseReviews extends Class_Cosmogramme_Integ
         . ' (' . $this->_chrono->meanOnFile($this->_getData('nombre'),
                                           'notices') . ')</span>';
 
-      $this->_log->ecrire($msg);
+      $this->_log->log($msg);
     }
   }
 
diff --git a/library/Class/MoteurRecherche.php b/library/Class/MoteurRecherche.php
index 0e8364350a127c18bb309d55a88c7c8d5878f532..139f079984cf89b6bda438ded3f04fb07250d912 100644
--- a/library/Class/MoteurRecherche.php
+++ b/library/Class/MoteurRecherche.php
@@ -87,7 +87,6 @@ class Class_MoteurRecherche {
 
     $types = array_keys(Class_TypeDoc::getDigitalDocTypes());
     $this->setCondition('(type_doc in (\'' . implode('\',\'', $types). '\'))');
-    $this->setOrConditions('(CAST(type_doc AS UNSIGNED) >= ' . Class_TypeDoc::DIGITAL_RESOURCE_THRESHOLD . ')');
   }
 
 
diff --git a/library/Class/Multimedia.php b/library/Class/Multimedia.php
index 6cef4f44075f727bd54c6f9a1db975d27681e90b..d92ce4c7a883d4f3c79c4893f908b4f5759f22e8 100644
--- a/library/Class/Multimedia.php
+++ b/library/Class/Multimedia.php
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
 class Class_Multimedia {
@@ -43,7 +43,7 @@ class Class_Multimedia {
     return $this;
   }
 
-    
+
   /** @return boolean */
   public function isValidHash($hash, $content) {
     $validators = [new Class_Multimedia_HashValidator_Md5(),
@@ -76,8 +76,8 @@ class Class_Multimedia_HashValidator_Null {
 class Class_Multimedia_HashValidator_Ssl extends Class_Multimedia_HashValidator_Null{
   public function isValid($hash, $content) {
     $isValidated = (new Class_Multimedia_Utils_OpensslUtil())
-      ->opensslVerify($content, 
-                      base64_decode($hash), 
+      ->opensslVerify($content,
+                      base64_decode($hash),
                       $this->getKey());
 
     return -1 !== $isValidated && 0 !== $isValidated;
diff --git a/library/Class/Multimedia/AbstractRequest.php b/library/Class/Multimedia/AbstractRequest.php
new file mode 100644
index 0000000000000000000000000000000000000000..4f6d264a5985cb910558020ea7a94a2e8c1168bc
--- /dev/null
+++ b/library/Class/Multimedia/AbstractRequest.php
@@ -0,0 +1,139 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+class Class_Multimedia_AbstractRequest {
+
+
+  /** @var boolean */
+  protected $_valid = false;
+
+  /** @var string */
+  protected $_error = '';
+
+  /** @var Class_Users */
+  protected $_user;
+
+  /** @var Class_Multimedia_Device */
+  protected $_device;
+
+  /** @var Class_Multimedia_Location */
+  protected $_location;
+
+  protected function _controleAuthRequest($request) {
+
+    if (!($login = $request->getParam('login'))
+        || !($password = $request->getParam('password')))
+      return $this->_error('MissingParameter');
+
+    $auth = ZendAfi_Auth::getInstance();
+    if (!$auth->authenticateLoginPassword($login,
+                                          $password,
+                                          [$auth->newAuthSIGB(), $auth->newAuthDb()])) {
+      return (Class_Users::findFirstBy(['login' => $login]))
+        ? $this->_error('PasswordIsWrong')
+        :  $this->_error('UserNotFound');
+    }
+
+    $user = Class_Users::getIdentity();
+
+    $group = Class_UserGroup::findGroupUserMultimedia();
+
+    if (!$user->isAbonneInviteInGroupMultimedia() && !$user->isAbonnementValid())
+      return $this->_error('SubscriptionExpired');
+
+    $this->_user = $user;
+  }
+
+  protected function _controleAuthAndHoldRequest($request) {
+    if($this->_controleAuthRequest($request))
+      return $this;
+
+    if($this->_controleHoldRequest($request))
+      return $this;
+
+  }
+
+  protected function _controleLocationRequest($request) {
+    if (!($site = $request->getParam('site')))
+      return $this->_error('MissingParameter');
+
+    $this->_location = Class_Multimedia_Location::findByIdOrigine($site);
+  }
+
+  protected function _controleHoldRequest($request) {
+    if (!($poste = $request->getParam('poste')))
+      return $this->_error('MissingParameter');
+
+    if($this->_controleLocationRequest($request))
+      return $this;
+
+    if ($this->_location)
+      $this->_device = Class_Multimedia_Device::findByIdOrigineAndLocation($poste, $this->_location);
+
+    if (!$this->_device)
+      return $this->_error('DeviceNotFound');
+  }
+
+
+  /** @return boolean */
+  public function isValid() {
+    return $this->_valid;
+  }
+
+
+  /** @return Class_Multimedia_AbstractRequest */
+  public function beValid() {
+    $this->_valid = true;
+    return $this;
+  }
+
+
+  /** @return string */
+  public function getError() {
+    return $this->_error;
+  }
+
+
+  /**
+   * @param string $code
+   * @return Class_Multimedia_Location
+   */
+  public function getLocation() {
+    return $this->_location;
+  }
+
+
+  /** @return Class_Users */
+  public function getUser() {
+    return $this->_user;
+  }
+
+
+  /**
+   * @param string $code
+   * @return Class_Multimedia_AbstractRequest
+   */
+  protected  function _error($code) {
+    $this->_error = $code;
+    return $this;
+  }
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Multimedia/AuthenticateRequest.php b/library/Class/Multimedia/AuthenticateRequest.php
index 85482f85ac362f09c003f436303255ff557c1558..656fd8683dfe481dcb2f8d8afb6ab04ab9d424d2 100644
--- a/library/Class/Multimedia/AuthenticateRequest.php
+++ b/library/Class/Multimedia/AuthenticateRequest.php
@@ -19,80 +19,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
-class Class_Multimedia_AuthenticateRequest {
-
-
-  /** @var boolean */
-  protected $_valid = false;
-
-  /** @var string */
-  protected $_error = '';
-
-  /** @var Class_Users */
-  protected $_user;
-
-  /** @var Class_Multimedia_Device */
-  protected $_device;
-
-  /** @var boolean */
-  protected $_holdableDay = false;
-
-  /** @var boolean */
-  protected $_successHolding = false;
-
-
-  /**
-   * @param Zend_Controller_Request_Abstract
-   * @return Class_Multimedia_AuthenticateRequest
-   */
-
-  public static function getInstance() {
-    return new self();
-  }
-
-
-  private function _controleAuthRequest($request) {
-
-    if (!($login = $request->getParam('login'))
-        || !($password = $request->getParam('password')))
-      return $this->_error('MissingParameter');
-
-    $auth = ZendAfi_Auth::getInstance();
-    if (!$auth->authenticateLoginPassword($login,
-                                          $password,
-                                          [$auth->newAuthSIGB(), $auth->newAuthDb()])) {
-      if (Class_Users::findFirstBy(['login' => $login]))
-        return $this->_error('PasswordIsWrong');
-      return  $this->_error('UserNotFound');
-    }
-
-    $user = Class_Users::getIdentity();
-
-    $group = Class_UserGroup::findGroupUserMultimedia();
-
-    if (!$user->isAbonneInviteInGroupMultimedia() && !$user->isAbonnementValid())
-      return $this->_error('SubscriptionExpired');
-
-    $this->_user = $user;
-  }
-
-
-  private function _controleHoldRequest($request) {
-
-    if($this->_controleAuthRequest($request))
-      return $this;
-
-    if (!($site = $request->getParam('site'))
-        || !($poste = $request->getParam('poste')))
-      return $this->_error('MissingParameter');
-
-    if ($location = Class_Multimedia_Location::findByIdOrigine($site))
-      $this->_device = Class_Multimedia_Device::findByIdOrigineAndLocation($poste, $location);
-
-    if (!$this->_device)
-      return $this->_error('DeviceNotFound');
-  }
-
+class Class_Multimedia_AuthenticateRequest extends Class_Multimedia_AbstractRequest{
 
   /**
    * @param Zend_Controller_Request_Abstract
@@ -104,121 +31,5 @@ class Class_Multimedia_AuthenticateRequest {
 
     return $this->beValid();
   }
-
-
-  /**
-   * @param Zend_Controller_Request_Abstract
-   * @return Class_Multimedia_AuthenticateRequest
-   */
-  public function closeHoldingDevice($request) {
-
-    if($this->_controleHoldRequest($request))
-      return $this;
-
-    if(!$hold = $this->getCurrentHold())
-      return $this->_error('DeviceNotHeldByUser');
-
-    $start = $hold->getStart();
-    $duration = floor(($location->getTimeSource()->time() - $start) / 60);
-    $hold->delete();
-    $this->_device->createHoldWithStartTimeAndDuration($user, $start, $duration);
-
-    return $this->beValid();
-  }
-
-
-  /**
-   * @param Zend_Controller_Request_Abstract
-   * @return Class_Multimedia_AuthenticateRequest
-   */
-  public function isHoldableDay($request) {
-
-    if($this->_controleHoldRequest($request))
-      return $this;
-
-    $this->_holdableDay = $this->_device->isHoldableDayToDay();
-
-    return $this->beValid();
-  }
-
-
-  /**
-   * @param Zend_Controller_Request_Abstract
-   * @return Class_Multimedia_AuthenticateRequest
-   */
-  public function holdDevice($request) {
-    if($this->_controleHoldRequest($request))
-      return $this;
-
-    $temps = $request->getParam('temps');
-    if(!$this->getCurrentHold($temps))
-      return $this->_error('DeviceNotHeldByUser');
-
-    $this->_successHolding = true;
-
-    return $this->beValid();
-  }
-
-
-
-  public function canHoldingForToDay(){
-    return $this->_holdableDay;
-  }
-
-  public function isSuccessHolding(){
-    return $this->_successHolding;
-  }
-
-  /**
-   * @return Class_Multimedia_DeviceHold
-   */
-  public function getCurrentHold($temps=null) {
-    if (!isset($this->_current_hold) && isset($this->_device) && isset($this->_user))
-      $this->_current_hold = $this->_device->getCurrentHoldForUser($this->_user, $temps);
-    return $this->_current_hold;
-  }
-
-
-  /**
-   * @return string
-   */
-  public function getCurrentHoldEnd() {
-    return $this->getCurrentHold()->getEnd();
-  }
-
-
-  /** @return boolean */
-  public function isValid() {
-    return $this->_valid;
-  }
-
-
-  /** @return Class_Multimedia_AuthenticateRequest */
-  public function beValid() {
-    $this->_valid = true;
-    return $this;
-  }
-
-
-  /** @return string */
-  public function getError() {
-    return $this->_error;
-  }
-
-
-  /** @return Class_Users */
-  public function getUser() {
-    return $this->_user;
-  }
-
-
-  /**
-   * @param string $code
-   * @return Class_Multimedia_AuthenticateRequest
-   */
-  protected  function _error($code) {
-    $this->_error = $code;
-    return $this;
-  }
 }
 ?>
\ No newline at end of file
diff --git a/library/Class/Multimedia/DeviceHold.php b/library/Class/Multimedia/DeviceHold.php
index 8ecfc434b49f5cfe26035322d7ca2482039a8398..ca6122013d1cd1fc1f6797ab43e7471ee65d2072 100644
--- a/library/Class/Multimedia/DeviceHold.php
+++ b/library/Class/Multimedia/DeviceHold.php
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
   /**
@@ -82,7 +82,7 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
                              ->where('start >= ' . $start)
                              ->where('end <= ' . $end)
                              ->order('start asc'));
-    
+
     foreach($holds as $hold)
       $duration += ($hold->getEnd() - $hold->getStart()) / 60;
 
@@ -90,12 +90,12 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
   }
 
 
-    
+
   /**
    * @param $device Class_Multimedia_Device
    * @param $time int
    * @return Class_Multimedia_DeviceHold
-   */ 
+   */
   public function getHoldOnDeviceAtTime($device, $time) {
     $holds = $this->findAll($this->getTable()->select()
                              ->where('id_device = ' . $device->getId())
@@ -108,7 +108,7 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
     $this->cacheInstance($holds[0]);
     return $holds[0];
   }
-    
+
 
   /**
    * @param $device Class_Multimedia_Device
@@ -125,7 +125,6 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
     ));
   }
 
-
   /**
    * @param $start int
    * @param $end int
diff --git a/library/Class/Multimedia/HoldRequest.php b/library/Class/Multimedia/HoldRequest.php
new file mode 100644
index 0000000000000000000000000000000000000000..001753e6306156bf1c0991057ee9381b0bb474b0
--- /dev/null
+++ b/library/Class/Multimedia/HoldRequest.php
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+class Class_Multimedia_HoldRequest extends Class_Multimedia_AbstractRequest{
+  use Trait_TimeSource;
+
+  /** @var Class_Multimedia_Device */
+  protected $_deviceHold;
+
+
+  /** @var Class_Multimedia_Device */
+  protected $_deviceHolds;
+
+
+  /** @var boolean */
+  protected $_holdableDay = false;
+
+
+    /** @var boolean */
+  protected $_successHolding = false;
+
+  /**
+   * @param Zend_Controller_Request_Abstract
+   * @return Class_Multimedia_HoldRequest
+   */
+  public function closeHoldingDevice($request) {
+
+    if($this->_controleAuthAndHoldRequest($request))
+      return $this;
+
+    if(!$hold = $this->getCurrentHold())
+      return $this->_error('DeviceNotHeldByUser');
+
+    $start = $hold->getStart();
+
+    $duration = floor(($this->getLocation()->getTimeSource()->time() - $start) / 60);
+    $hold->delete();
+    $this->_device->createHoldWithStartTimeAndDuration($this->getUser(), $start, $duration);
+
+    return $this->beValid();
+  }
+
+
+  /**
+   * @param Zend_Controller_Request_Abstract
+   * @return Class_Multimedia_HoldRequest
+   */
+  public function isHoldableDay($request) {
+
+    if($this->_controleHoldRequest($request))
+      return $this;
+
+    $this->_holdableDay = $this->_device->isHoldableDayToDay();
+
+    return $this->beValid();
+  }
+
+
+  /**
+   * @param Zend_Controller_Request_Abstract
+   * @return Class_Multimedia_HoldRequest
+   */
+  public function holdDevice($request) {
+    if($this->_controleAuthAndHoldRequest($request))
+      return $this;
+
+    $temps = $request->getParam('temps');
+    if(!$this->getCurrentHold($temps))
+      return $this->_error('DeviceNotHeldByUser');
+
+    $this->_successHolding = true;
+
+    return $this->beValid();
+  }
+
+  /**
+   * @return Class_Multimedia_DeviceHold
+   */
+  public function getCurrentHold($temps=null) {
+    if (!isset($this->_current_hold) && isset($this->_device) && isset($this->_user))
+      $this->_current_hold = $this->_device->getCurrentHoldForUser($this->_user, $temps);
+    return $this->_current_hold;
+  }
+
+
+  /**
+   * @return string
+   */
+  public function getCurrentHoldEnd() {
+    return $this->getCurrentHold()->getEnd();
+  }
+
+  public function getDeviceHold(){
+    return $this->_deviceHold;
+  }
+
+  public function getDeviceHolds(){
+    return $this->_deviceHolds;
+  }
+
+
+  public function canHoldingForToDay(){
+    return $this->_holdableDay;
+  }
+
+  public function isSuccessHolding(){
+    return $this->_successHolding;
+  }
+
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Multimedia/Users.php b/library/Class/Multimedia/Users.php
index c7451c1148ddc0c64b25fbb2fe34a211a623000e..6caac6da0f816e55129ddf51d5bf724681a01103 100644
--- a/library/Class/Multimedia/Users.php
+++ b/library/Class/Multimedia/Users.php
@@ -30,7 +30,9 @@ class Class_Multimedia_Users {
 
 
   public function createUser($infoUsers){
+
     foreach($infoUsers as $infoUser) {
+
       if(!$this->isValidInfo($infoUser))
         return 'INVALID_INFO_USER';
 
@@ -53,9 +55,9 @@ class Class_Multimedia_Users {
            ->setDateFin($infoUser->datefin)
            ->setIdSite($infoUser->site->id);
 
-      if(!$user->save())
+      if(!$user->save()){
         return $user->getErrors()[0];
-
+      }
       $usergroupShip = new Class_UserGroupMembership();
       $usergroupShip->setUser($user)
                     ->setUserGroup($group)
@@ -75,21 +77,26 @@ class Class_Multimedia_Users {
       $user = Class_Users::findFirstBy(['login'=>$infoUser->login]);
 
       if(!isset($user))
-        return $this->createUser(array($infoUser));
+        return 'USER_NOT_FOUND';
 
       if($user->isAbonneInviteInGroupMultimedia()){
            $user->setNom($infoUser->nom)
-           ->setPrenom($infoUser->prenom)
-           ->setNaissance($infoUser->naissance)
-           ->setPseudo('')
-           ->setMail('')
-           ->setRoleLevel(0)
-           ->setRole('')
-           ->setIdabon($infoUser->login)
-           ->setOrdreabon(1)
-           ->setDateDebut('')
-           ->setDateFin($infoUser->datefin)
-           ->setIdSite($infoUser->site->id);
+                ->setPrenom($infoUser->prenom)
+                ->setNaissance($infoUser->naissance)
+                ->setPseudo('')
+                ->setMail('')
+                ->setRoleLevel(0)
+                ->setRole('')
+                ->setIdabon($infoUser->login)
+                ->setOrdreabon(1)
+                ->setDateDebut('')
+                ->setDateFin($infoUser->datefin);
+
+
+           if(! empty($infoUser->site))
+             $user->setIdSite($infoUser->site->id);
+
+
            if($infoUser->pwd !== md5($user->getPassword()))
              $user->setPassword($infoUser->pwd);
            $user->save();
diff --git a/library/Class/Newsletter.php b/library/Class/Newsletter.php
index 8c39a427811dcb643c0f6fb2645df7288e3f1e37..af37a460da940d66adf0fb6806d278eeaa33c130 100644
--- a/library/Class/Newsletter.php
+++ b/library/Class/Newsletter.php
@@ -103,11 +103,18 @@ class Class_Newsletter extends Storm_Model_Abstract {
       ->run();
   }
 
+  public function getDispatchIfNotEnded() {
+    return (($dispatch = $this->getLastDispatch()) &&
+          $dispatch->isRunnable())
+      ? $dispatch : false;
+
+  }
+
 
   protected function _getOrCreateDispatchToRun() {
-    return ($dispatch = $this->getLastDispatch()) && $dispatch->isRunnable()
-      ? $dispatch->resetError()
-      : Class_Newsletter_Dispatch::newFrom($this);
+    if ($dispatch = $this->getDispatchIfNotEnded())
+          return $dispatch->resetError();
+    return Class_Newsletter_Dispatch::newFrom($this);
   }
 
 
diff --git a/library/Class/ProfilePrefs.php b/library/Class/ProfilePrefs.php
index 2cd8a93b979ba5764db174d4ce0b9f2b7618105a..17bbdb0b32024d9ab401d9b830435632202ee624 100644
--- a/library/Class/ProfilePrefs.php
+++ b/library/Class/ProfilePrefs.php
@@ -68,7 +68,8 @@ class Class_ProfilePrefs extends Class_Entity {
 
 
   public function getPatronFields() {
-    return $this->getUnknownFields();
+    $fields = $this->getUnknownFields();
+    return implode(';', array_map('trim', explode(';', $fields)));
   }
 
 
diff --git a/library/Class/Systeme/Report/Publication.php b/library/Class/Systeme/Report/Publication.php
index 942f95f6ba4b1b1ffb55de5d24f0e8324442cf1a..0e29370c138318ca2b2f5d9e33f9d395e219d33f 100644
--- a/library/Class/Systeme/Report/Publication.php
+++ b/library/Class/Systeme/Report/Publication.php
@@ -30,7 +30,7 @@ class Class_Systeme_Report_Publication extends Class_WebService_Abstract {
     if (!(new ZendAfi_Validate_Url())->isValid($url))
       return $this;
 
-    $log->addInfo($this->_('Publication du rapport système'));
+    $log->info($this->_('Publication du rapport système'));
 
     $json = (new ZendAfi_View_Helper_Status_Json())->status_Json();
 
@@ -38,7 +38,7 @@ class Class_Systeme_Report_Publication extends Class_WebService_Abstract {
       $this->getHttpClient()->postData($url,
                                        ['report' => $json]);
     } catch (Exception $e) {
-      $log->addError($this->_('Echec de la publication du rapport sur %s (%s)',
+      $log->error($this->_('Echec de la publication du rapport sur %s (%s)',
                               $url,
                               $e->getMessage()));
     }
diff --git a/library/Class/User/ApiToken.php b/library/Class/User/ApiToken.php
new file mode 100644
index 0000000000000000000000000000000000000000..37dcba1366a9da20db85aa5cc35635126a32364f
--- /dev/null
+++ b/library/Class/User/ApiToken.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+class User_ApiTokenLoader extends Storm_Model_Loader {
+  public function findOrCreateForUserAndApplication($user, $client_id) {
+    if ($token = Class_User_ApiToken::findFirstBy(['role' => 'user',
+                                                   'model' => $user,
+                                                   'client_id' => $client_id]))
+      return $token;
+
+    $token = new Class_User_ApiToken();
+    $token
+      ->setUser($user)
+      ->setClientId($client_id)
+      ->setToken(md5(uniqid()))
+      ->save();
+
+    return $token;
+  }
+}
+
+
+class Class_User_ApiToken extends Storm_Model_Abstract {
+  protected
+    $_table_name = 'user_api_tokens',
+    $_loader_class = 'User_ApiTokenLoader',
+    $_belongs_to = ['user' => ['model' => 'Class_Users',
+                               'role' => 'api_token']];
+
+
+}
+?>
\ No newline at end of file
diff --git a/library/Class/User/Settings.php b/library/Class/User/Settings.php
index 8368d29a7e1935d4cc30411ffd08e9aa54ff88f0..747a2ed287a722650d434a42d1d73ec4a42c359c 100644
--- a/library/Class/User/Settings.php
+++ b/library/Class/User/Settings.php
@@ -31,11 +31,7 @@ class Class_User_Settings {
 
 
   public static function newWith($user) {
-    $instance = new self();
-    $instance
-      ->setUser($user)
-      ->setUserSettings(unserialize($user->getSettings()));
-    return $instance;
+    return new self($user);
   }
 
 
@@ -60,8 +56,14 @@ class Class_User_Settings {
   }
 
 
+  public function __construct($user) {
+    $this->setUser($user);
+  }
+
+
   public function setUser($user) {
     $this->_user = $user;
+    $this->_user_settings = unserialize($user->getSettings());
     return $this;
   }
 
@@ -72,25 +74,37 @@ class Class_User_Settings {
   }
 
 
-  public function setBookmarkedDomains($domain_ids) {
-    $this->_user_settings[self::BOOKMARKED_DOMAINS] = implode('-', $domain_ids);
+  public function get($name) {
+    return isset($this->_user_settings[$name])
+      ? $this->_user_settings[$name]
+      : null;
+  }
+
+
+  public function set($name, $value) {
+    $this->_user_settings[$name] = $value;
     $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    return $this;
+  }
+
+
+  public function setBookmarkedDomains($domain_ids) {
+    $this->set(self::BOOKMARKED_DOMAINS, implode('-', $domain_ids));
     return $this->_user;
   }
 
 
   public function setBookmarkedLibraries($libraries_ids) {
-    $this->_user_settings[self::BOOKMARKED_LIBRARIES] = implode('-', $libraries_ids);
-    $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    $this->set(self::BOOKMARKED_LIBRARIES, implode('-', $libraries_ids));
     return $this->_user;
   }
 
 
   public function getBookmarkedDomains() {
-    if(!isset($this->_user_settings[self::BOOKMARKED_DOMAINS]))
+    if (!$value = $this->get(self::BOOKMARKED_DOMAINS))
       return [];
 
-    if(!$storm_ids = $this->_getStormIds($this->_user_settings[self::BOOKMARKED_DOMAINS]))
+    if (!$storm_ids = $this->_getStormIds($value))
       return [];
 
     return Class_Catalogue::findAllBy(['id_catalogue' => $storm_ids,
@@ -102,10 +116,10 @@ class Class_User_Settings {
     if (!static::isBookmarkLibraryReady())
       return $this->_clearBookmarkedLibraries();
 
-    if(!isset($this->_user_settings[self::BOOKMARKED_LIBRARIES]))
+    if (!$value = $this->get(self::BOOKMARKED_LIBRARIES))
       return $this->_initDefaultLibrary();
 
-    if(!$storm_ids = $this->_getStormIds($this->_user_settings[self::BOOKMARKED_LIBRARIES]))
+    if (!$storm_ids = $this->_getStormIds($value))
       return [];
 
     return Class_Profil::getCurrentProfil()->isItemAnnexDisplay()
@@ -133,9 +147,9 @@ class Class_User_Settings {
 
 
   public function getRedmineLibrary() {
-    if(!isset($this->_user_settings[self::REDMINE_LIBRARY]) && !$this->_user_settings[self::REDMINE_LIBRARY])
-      return $this->getUserLib();
-    return Class_Bib::find($this->_user_settings[self::REDMINE_LIBRARY]);
+    return ($lib_id = $this->get(self::REDMINE_LIBRARY))
+      ? Class_Bib::find($lib_id)
+      : $this->getUserLib();
   }
 
 
@@ -145,19 +159,17 @@ class Class_User_Settings {
 
 
   public function setRedmineLibrary($library_id) {
-    $this->_user_settings[self::REDMINE_LIBRARY] = $library_id;
-    $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    $this->set(self::REDMINE_LIBRARY, $library_id);
     return $this->_user;
   }
 
 
   public function getAdminSkin() {
-    if(!isset($this->_user_settings[self::ADMIN_SKIN]))
-      return new Class_Admin_Skin();
+    $admin_skin = $this->get(self::ADMIN_SKIN);
 
-    if (!is_a($this->_user_settings[self::ADMIN_SKIN], 'Class_Admin_Skin'))
-      return new Class_Admin_Skin();
-    return new Class_Admin_Skin($this->_user_settings[self::ADMIN_SKIN]->getName(), $this->_user_settings[self::ADMIN_SKIN]->getColor());
+    return is_a($admin_skin, 'Class_Admin_Skin')
+      ? new Class_Admin_Skin($admin_skin->getName(), $admin_skin->getColor())
+      : new Class_Admin_Skin();
   }
 
 
@@ -165,8 +177,8 @@ class Class_User_Settings {
     if(!$datas || !isset($datas[self::ADMIN_SKIN]))
       return $this->_user;
 
-    $this->_user_settings[self::ADMIN_SKIN] = new Class_Admin_Skin($datas[self::ADMIN_SKIN], $datas[self::ADMIN_SKIN_COLOR]);
-    $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    $this->set(self::ADMIN_SKIN, new Class_Admin_Skin($datas[self::ADMIN_SKIN],
+                                                      $datas[self::ADMIN_SKIN_COLOR]));
     return $this->_user;
   }
 
@@ -175,11 +187,8 @@ class Class_User_Settings {
     if (!static::isBookmarkLibraryReady())
       return $this->_user;
 
-    if(!isset($this->_user_settings[self::BOOKMARKED_LIBRARIES]))
-      $this->_user_settings[self::BOOKMARKED_LIBRARIES] = '';
-
-    $this->_user_settings[self::BOOKMARKED_LIBRARIES] .= '-' . $id;
-    $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    $this->set(self::BOOKMARKED_LIBRARIES,
+               (string)$this->get(self::BOOKMARKED_LIBRARIES) . '-' .$id);
     return $this->_user;
   }
 
@@ -188,12 +197,12 @@ class Class_User_Settings {
     if (!static::isBookmarkLibraryReady())
       return $this->_user;
 
-    if(!isset($this->_user_settings[self::BOOKMARKED_LIBRARIES]))
+    if (!$ids = $this->get(self::BOOKMARKED_LIBRARIES))
       return $this->_user;
 
-    $current_settings = $this->_getStormIds($this->_user_settings[self::BOOKMARKED_LIBRARIES]);
-    $this->_user_settings[self::BOOKMARKED_LIBRARIES] = implode('-', array_diff($current_settings, [$id]));
-    $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    $current_settings = $this->_getStormIds($ids);
+    $this->set(self::BOOKMARKED_LIBRARIES,
+               implode('-', array_diff($current_settings, [$id])));
     return $this->_user;
   }
 
@@ -216,8 +225,7 @@ class Class_User_Settings {
 
 
   protected function _saveUserWithLib($id) {
-    $this->_user_settings[self::BOOKMARKED_LIBRARIES] = $id;
-    $this->_user->setSettings(static::serializeSettings($this->_user_settings));
+    $this->set(self::BOOKMARKED_LIBRARIES, $id);
     $this->_user->save();
   }
 }
diff --git a/library/Class/Users.php b/library/Class/Users.php
index 7f3fbda0d8162715b483d126949d33807f333313..409db473e1279c5de5a39b329defca59a7bcb11b 100644
--- a/library/Class/Users.php
+++ b/library/Class/Users.php
@@ -1711,7 +1711,9 @@ class Class_Users extends Storm_Model_Abstract {
 
 
   public function getBibGLN() {
-    return $this->getBib()->getGln();
+    return $this->hasBib()
+      ? $this->getBib()->getGln()
+      : '';
   }
 
 
diff --git a/library/Class/WebService/Abstract.php b/library/Class/WebService/Abstract.php
index 3ee8d4a09056e36e4661b5342bb1f015dab6a80b..ddb1052ef6b698e784389b1ae62d1c875a8112b6 100644
--- a/library/Class/WebService/Abstract.php
+++ b/library/Class/WebService/Abstract.php
@@ -20,7 +20,7 @@
  */
 
 class Class_WebService_Abstract {
-  use Trait_Timesource;
+  use Trait_TimeSource, Trait_Logger;
 
   protected static $_http_client;
 
diff --git a/library/Class/WebService/BibNumerique/Abstract.php b/library/Class/WebService/BibNumerique/Abstract.php
index 04c97f564d878bbe83c47af2b5a057ea37e96279..9e3315f68c3d3dedf2a847d9b816cfa6b827aea6 100644
--- a/library/Class/WebService/BibNumerique/Abstract.php
+++ b/library/Class/WebService/BibNumerique/Abstract.php
@@ -54,18 +54,6 @@ abstract class Class_WebService_BibNumerique_Abstract extends Class_WebService_A
     return $this->_web_client;
   }
 
-  public function setLogger($logger) {
-    $this->_logger = $logger;
-    return $this;
-  }
-
-
-  public function getLogger() {
-    if (null == $this->_logger)
-      return new Zend_Log(new Zend_Log_Writer_Null());
-    return $this->_logger;
-  }
-
 
   public function harvestPage($page_number = 1) {
     if (1 == $page_number)
diff --git a/library/Class/WebService/BibNumerique/AbstractOAI.php b/library/Class/WebService/BibNumerique/AbstractOAI.php
index 5e2e21f59a1b86fe03d2eab0dea0b7629137a295..bea20e00742163ecf106fa18f3a40c51e35da627 100644
--- a/library/Class/WebService/BibNumerique/AbstractOAI.php
+++ b/library/Class/WebService/BibNumerique/AbstractOAI.php
@@ -21,12 +21,19 @@
 
 
 abstract class Class_WebService_BibNumerique_AbstractOAI extends Class_WebService_BibNumerique_Abstract {
+  use Trait_Translator;
 
-  protected $_harvested_ids = [], $_oaiws;
+  protected
+    $_harvested_ids = [],
+    $_oaiws;
 
   public function harvest() {
-    while($this->getOaiWS()->hasRecordsToHarvest())
-      $this->addHarvestedIds($this->_importRessources($this->loadPage()));
+    $page = 0;
+
+    while($this->getOaiWS()->hasRecordsToHarvest()) {
+      $page = $page + 1;
+      $this->addHarvestedIds($this->_importRessources($this->loadPage($page)));
+    }
 
     return $this->_logRun();
   }
@@ -40,6 +47,11 @@ abstract class Class_WebService_BibNumerique_AbstractOAI extends Class_WebServic
 
 
   protected function loadPage($page_number = 1) {
+    $this->getLogger()->log($this->_('Traitement de la page %d (nombre d\'enregistrements: %d)',
+                                     $page_number,
+                                     $this->getOaiWS()->getTotalNumberOfRecords()),
+                            'debug');
+
     return $this->getOaiWS()
                 ->getRecordsResourcesNumerique($this->_addFromTo([]));
   }
diff --git a/library/Class/WebService/BibNumerique/ArteVOD.php b/library/Class/WebService/BibNumerique/ArteVOD.php
index 6407d646165a0ec0a60949ed3efb49d4b78bdcd7..91355452974d2cb29f4d7a707b6b3b3310090ec7 100644
--- a/library/Class/WebService/BibNumerique/ArteVOD.php
+++ b/library/Class/WebService/BibNumerique/ArteVOD.php
@@ -33,7 +33,7 @@ class Class_WebService_BibNumerique_ArteVOD extends Class_WebService_BibNumeriqu
     $url = self::BASE_URL . self::FILMS . ((1 != $page_number) ? '?page_nb=' . $page_number: '');
     $content = $this->open_authenticated_url($url);
     if ('' == $content) {
-      $this->getLogger()->err('Erreur de communication');
+      $this->getLogger()->error('Erreur de communication');
       return;
     }
 
@@ -48,7 +48,7 @@ class Class_WebService_BibNumerique_ArteVOD extends Class_WebService_BibNumeriqu
   public function loadRessource($film) {
     $content = $this->open_authenticated_url(self::BASE_URL . self::FILMS . '/' . $film->getId());
     if ('' == $content) {
-      $this->getLogger()->err(sprintf('Erreur de communication lors de la récupération du film %s',
+      $this->getLogger()->error(sprintf('Erreur de communication lors de la récupération du film %s',
                                       $film->getId()));
       return;
     }
diff --git a/library/Class/WebService/BibNumerique/RessourceNumerique.php b/library/Class/WebService/BibNumerique/RessourceNumerique.php
index fdffff34f6a53d53e4652651a099efa0d537baf0..24ea8306df1911d1fa20cc3e019e7bad747c69e9 100644
--- a/library/Class/WebService/BibNumerique/RessourceNumerique.php
+++ b/library/Class/WebService/BibNumerique/RessourceNumerique.php
@@ -21,6 +21,7 @@
 
 
 class Class_WebService_BibNumerique_RessourceNumerique {
+  protected static $_logger;
 
   protected
     $_id,
@@ -43,6 +44,25 @@ class Class_WebService_BibNumerique_RessourceNumerique {
     $_authors = [];
 
 
+  static public function getLogger() {
+    if (!static::$_logger)
+      static::$_logger = new Class_Cata_Log();
+    return static::$_logger;
+  }
+
+
+  static public function setLogger($logger) {
+    static::$_logger = $logger;
+  }
+
+
+  protected function _debug($message) {
+    $ressource_name = str_replace('Class_WebService_BibNumerique_', '', get_class($this));
+    $this->getLogger()->log('[' . $ressource_name . '] ' . $message,
+                            'debug');
+  }
+
+
   public function setId($id) {
     $this->_id = $id;
     return $this;
@@ -246,9 +266,14 @@ class Class_WebService_BibNumerique_RessourceNumerique {
 
 
   public function import() {
-    if ($album = $this->findAlbumInDB())
+    $resource_log = '"' . $this->getTitle() . '" (' . $this->getId() . ')';
+
+    if ($album = $this->findAlbumInDB()) {
+      $this->_debug('update [' . $album->getId() . '] with ' . $resource_log) ;
       return $this->updateAlbum($album);
+    }
 
+    $this->_debug('create ' . $resource_log) ;
     return $this->createAlbum(Class_Album::newInstance());
   }
 
@@ -256,6 +281,10 @@ class Class_WebService_BibNumerique_RessourceNumerique {
   protected function updateAlbum($album) {
     $album->setRessources($this->getRessources());
     $album->save();
+
+    if ($album->hasErrors())
+      $this->_debug('errors: ' . implode(',', $album->getErrors()));
+
     Class_Album::clearCache();
     Class_AlbumRessource::clearCache();
     return $album;
@@ -286,8 +315,13 @@ class Class_WebService_BibNumerique_RessourceNumerique {
     $this->fillAlbumTypeDoc($album);
     $this->updateRessourceNumeriqueNotes($album);
 
-    if ($album->save())
+    if ($album->save()) {
+      $this->_debug('new album id: ' . $album->getId());
       Class_WebService_BibNumerique_Vignette::getInstance()->updateAlbum($album);
+    }
+
+    if ($album->hasErrors())
+      $this->_debug('errors: ' . implode(',', $album->getErrors()));
 
     Class_Album::clearCache();
     Class_AlbumRessource::clearCache();
diff --git a/library/Class/WebService/BibNumerique/ToutApprendre.php b/library/Class/WebService/BibNumerique/ToutApprendre.php
index 0522e8ce43b6a11775e20d43e3c1d537454ea953..79b5aeb832615c28d8fd23d5e2d57039f3fb05be 100644
--- a/library/Class/WebService/BibNumerique/ToutApprendre.php
+++ b/library/Class/WebService/BibNumerique/ToutApprendre.php
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
 class Class_WebService_BibNumerique_ToutApprendre extends Class_WebService_BibNumerique_Abstract {
@@ -37,16 +37,16 @@ class Class_WebService_BibNumerique_ToutApprendre extends Class_WebService_BibNu
 
 
   public function harvest() {
-      
+
     $http_client = self::getHttpClient();
     $content = $http_client->open_url($this->url( Class_AdminVar::get('TOUTAPPRENDRE_BIB_ID')));
     if (!$content) {
-      $this->getLogger()->err('Erreur de communication');
+      $this->getLogger()->error('Erreur de communication');
       return;
     }
-      
+
     $this->getLogger()->info('Réponse reçue');
-    $this->parseXML($content);  
+    $this->parseXML($content);
     $this->_deleteNonHarvested();
     $this->getLogger()->info(sprintf('%d formations dans la base', count($this->_albums)));
   }
diff --git a/library/Class/WebService/BibNumerique/Vodeclic.php b/library/Class/WebService/BibNumerique/Vodeclic.php
index 04d848e66c4b26a1e7f5d38baa02acd1b4f7b70a..c12fc82e6e8350654534da50742178e306a0242a 100644
--- a/library/Class/WebService/BibNumerique/Vodeclic.php
+++ b/library/Class/WebService/BibNumerique/Vodeclic.php
@@ -46,7 +46,7 @@ class Class_WebService_BibNumerique_Vodeclic extends Class_WebService_BibNumeriq
                                                  Class_AdminVar::get('VODECLIC_KEY'),
                                                  Class_AdminVar::get('VODECLIC_BIB_ID')));
     if (!$content) {
-      $this->getLogger()->err('Erreur de communication');
+      $this->getLogger()->error('Erreur de communication');
       return;
     }
 
diff --git a/library/Class/WebService/ResumptionToken.php b/library/Class/WebService/ResumptionToken.php
index e669ffc9d52a9ead4c77b4f2b01e3f95e945a28a..aff89e3d23b398c032a0973eb0d1637c33659992 100644
--- a/library/Class/WebService/ResumptionToken.php
+++ b/library/Class/WebService/ResumptionToken.php
@@ -25,7 +25,9 @@
  */
 
 class Class_WebService_ResumptionToken {
-  protected $_token;
+  protected
+    $_token,
+    $_list_size;
 
   public function __construct($token=null) {
     $this->_token = $token;
diff --git a/library/Trait/Logger.php b/library/Trait/Logger.php
index c41ba4b23a07fb9e60d75e712e93aa3569106f15..48128194e0377812364cec081a267d84576ba8d4 100644
--- a/library/Trait/Logger.php
+++ b/library/Trait/Logger.php
@@ -30,12 +30,8 @@ trait Trait_Logger {
 
 
   public function getLogger() {
-    return $this->_logger ? $this->_logger : new Trait_LoggerNullLogger();
+    return $this->_logger
+      ? $this->_logger
+      : new Class_Cata_Log();
   }
-}
-
-
-
-class Trait_LoggerNullLogger {
-  public function log() {}
 }
\ No newline at end of file
diff --git a/library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php b/library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php
index 1c81fb68e2c78fa32295a1d282a019a54f1d9a71..8d5fae1198a3457e6c5df1e89addb63140b4499d 100644
--- a/library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php
+++ b/library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php
@@ -293,7 +293,7 @@ abstract class ZendAfi_Controller_Action_Helper_AbstractListViewMode extends Zen
                               [$view->button((new Class_Entity())
                                              ->setText($this->_form_settings->getSearchText())
                                              ->setImage($view->tagImg(Class_Admin_Skin::current()
-                                                                      ->renderIconUrlOn('actions',
+                                                                      ->getIconUrl('actions',
                                                                                         'loupe'),
                                                                       ['style' => 'filter: invert();']))
                                              ->setAttribs(['onclick' => "var form=$(this).parents('form'); if (!form.size()) form=$(this).parents('.boutons, .admin-buttons').prevAll('form');if (!form.size()) form=$(this).parents('.boutons, .admin-buttons').nextAll('form');form.submit(); return false;",
diff --git a/library/ZendAfi/Controller/Action/Helper/ViewRenderer.php b/library/ZendAfi/Controller/Action/Helper/ViewRenderer.php
index bf555b2dc012a5f8f8e6be85e64f24a15decfa75..d7bf0b1d2c1093b0a5d4888fc47ba8c7a8e03872 100644
--- a/library/ZendAfi/Controller/Action/Helper/ViewRenderer.php
+++ b/library/ZendAfi/Controller/Action/Helper/ViewRenderer.php
@@ -32,7 +32,7 @@ class ZendAfi_Controller_Action_Helper_ViewRenderer extends Zend_Controller_Acti
 //-------------------------------------------------------------------------------
   public function __construct() {
     $options['viewSuffix'] = 'phtml';
-    $view=new ZendAfi_Controller_Action_Helper_View();
+    $view = new ZendAfi_Controller_Action_Helper_View();
     parent::__construct($view, $options);
   }
 
diff --git a/library/ZendAfi/Controller/Plugin/DefineURLs.php b/library/ZendAfi/Controller/Plugin/DefineURLs.php
index f2ec5aa8b27a14182b5527138a8d71e28bfd27d7..9633a15d7570e394a62e30014372ef041eb254f3 100644
--- a/library/ZendAfi/Controller/Plugin/DefineURLs.php
+++ b/library/ZendAfi/Controller/Plugin/DefineURLs.php
@@ -24,7 +24,8 @@ class ZendAfi_Controller_Plugin_DefineURLs extends Zend_Controller_Plugin_Abstra
   const
     PHONE = 'telephone',
     ADMIN = 'admin',
-    OPAC = 'opac';
+    OPAC = 'opac',
+    API = 'api';
 
 
   public function preDispatch(Zend_Controller_Request_Abstract $request) {
@@ -48,6 +49,16 @@ class ZendAfi_Controller_Plugin_DefineURLs extends Zend_Controller_Plugin_Abstra
 
   protected function updateRequest() {
     $request = $this->getRequest();
+
+    if ($request->getModuleName() == static::API) {
+      Zend_Controller_Action_HelperBroker::removeHelper('ViewRenderer');
+      $view = new Zend_View();
+      $view->addHelperPath('ZendAfi/View/Helper/Api', 'ZendAfi_View_Helper_Api');
+      Zend_Controller_Action_HelperBroker::addHelper(new Zend_Controller_Action_Helper_ViewRenderer($view, ['viewSuffix' => 'pjson']));
+      $this->getResponse()->setHeader('Content-Type', 'application/json');
+      return $this;
+    }
+
     $detector = new ZendAfi_Controller_Plugin_DefineURLs_ProfileDetector();
     Class_Profil::setCurrentProfil($detector->detectFrom($request));
     $profil = Class_Profil::getCurrentProfil();
diff --git a/library/ZendAfi/Controller/Plugin/Manager/Album.php b/library/ZendAfi/Controller/Plugin/Manager/Album.php
index 8f2e3c23c2249c64a791daf424aeab3a82472dd2..f6db589643136c4d921485f94e59744c6d1bfff5 100644
--- a/library/ZendAfi/Controller/Plugin/Manager/Album.php
+++ b/library/ZendAfi/Controller/Plugin/Manager/Album.php
@@ -660,6 +660,15 @@ class ZendAfi_Controller_Plugin_Manager_Album extends ZendAfi_Controller_Plugin_
 
 
   protected function _albumCategoryActions($model) {
+    if ($model->getId() == 0)
+      return [
+              ['url' => ['module' => 'admin',
+                         'controller' => 'album',
+                         'action' => 'add_categorie'],
+               'icon' => 'add_category',
+               'label' => $this->_('Ajouter une catégorie')],
+      ];
+
     return [
             ['url' => ['module' => 'admin',
                        'controller' => 'album',
diff --git a/library/ZendAfi/Controller/Plugin/Manager/Newsletter.php b/library/ZendAfi/Controller/Plugin/Manager/Newsletter.php
index e755bb98021f3bd4e283f1d3f2338d80ac9a0d62..c308700ca48423ff3467fe4b2597edce7dd3324a 100644
--- a/library/ZendAfi/Controller/Plugin/Manager/Newsletter.php
+++ b/library/ZendAfi/Controller/Plugin/Manager/Newsletter.php
@@ -22,6 +22,8 @@
 
 class ZendAfi_Controller_Plugin_Manager_Newsletter extends ZendAfi_Controller_Plugin_Manager_Manager {
   public function getActions($model) {
+    $existing_dispatch = $model->getDispatchIfNotEnded();
+
     return [
             ['url' => '/admin/newsletter/edit/id/%s',
              'icon' => 'edit',
@@ -39,12 +41,14 @@ class ZendAfi_Controller_Plugin_Manager_Newsletter extends ZendAfi_Controller_Pl
             ['url' => '/admin/newsletter/send/id/%s',
              'icon' => 'mail',
              'anchorOptions' => ['rel' => 'send'],
-             'caption' => function($model)
+             'caption' => function($model) use ($existing_dispatch)
               {
                 Class_ScriptLoader::getInstance()->addJQueryReady("
 function sendNewsletterClick(event) {
   var target = $(event.target).closest('a');
-  var answer = confirm(\"".$this->_("Envoyer la lettre d'information ?")."\");
+  var answer = confirm(\"". ($existing_dispatch ?
+                             $this->_("Reprendre l'envoi de la lettre d'information: %s ? ",$existing_dispatch->getTitle())
+                             : $this->_("Envoyer la lettre d'information ?"))."\");
   if (answer == false) {
     event.preventDefault();
     return;
@@ -53,7 +57,10 @@ function sendNewsletterClick(event) {
 
   $(\"a[rel='send']\").click(sendNewsletterClick);
 ");},
-             'label' => 'Envoyer la lettre d\'information'],
+             'label' => ($existing_dispatch ?
+                         $this->_('Reprendre l\'envoi en cours')
+                         : $this->_('Envoyez la lettre d\'information'))
+            ],
             ['url' => '/admin/newsletter/duplicate/id/%s',
              'icon' => 'copy',
              'label' => $this->_('Dupliquer la lettre d\'information')],
@@ -72,7 +79,7 @@ function sendNewsletterClick(event) {
 
     $this->_addModelToView($newsletter);
 
-    $template = Class_Newsletter_Dispatch::newFrom($newsletter)->getTemplate();
+    $template = Class_Newsletter_Dispatch::newVolatileFrom($newsletter)->getTemplate();
     $mock_user = new Class_Entity();
     $mock_user->setId(0)->setMail('');
 
diff --git a/library/ZendAfi/View/Helper/Admin/Button/Back.php b/library/ZendAfi/View/Helper/Admin/Button/Back.php
index 7657df4f1ee5abd1b22304f30cb17def2f1a1536..e5af79cd6286c57f398bc2ac83b9082a44cbfdb9 100644
--- a/library/ZendAfi/View/Helper/Admin/Button/Back.php
+++ b/library/ZendAfi/View/Helper/Admin/Button/Back.php
@@ -30,7 +30,7 @@ class ZendAfi_View_Helper_Admin_Button_Back extends ZendAfi_View_Helper_Button_B
   protected function _getDefaultButton($attribs) {
     return parent::_getDefaultButton($attribs)
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons',
+                                     ->getIconUrl('buttons',
                                                        'back')));
   }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Admin/Button/Cancel.php b/library/ZendAfi/View/Helper/Admin/Button/Cancel.php
index 728c6329cea0c1c11bd0f7bca4c56137852cc82e..75e20fd554da2c51ca19785bb6561110712cf046 100644
--- a/library/ZendAfi/View/Helper/Admin/Button/Cancel.php
+++ b/library/ZendAfi/View/Helper/Admin/Button/Cancel.php
@@ -33,8 +33,8 @@ class ZendAfi_View_Helper_Admin_Button_Cancel extends ZendAfi_View_Helper_Button
   protected function _getDefaultButton($attribs) {
     return parent::_getDefaultButton($attribs)
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons',
-                                                       'remove')))
+                                     ->getIconUrl('buttons',
+                                                  'remove')))
       ->setOnFormChange('$(\'button.undo\').removeAttr(\'disabled\');');
   }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Admin/Button/Continue.php b/library/ZendAfi/View/Helper/Admin/Button/Continue.php
index df5b8f92eaa047ff271429f5a35f286d556015ca..8ed2d5ddac33b17fb774043f951dec508ef8d572 100644
--- a/library/ZendAfi/View/Helper/Admin/Button/Continue.php
+++ b/library/ZendAfi/View/Helper/Admin/Button/Continue.php
@@ -33,7 +33,7 @@ class ZendAfi_View_Helper_Admin_Button_Continue extends ZendAfi_View_Helper_Butt
   protected function _getDefaultButton($attribs) {
    return parent::_getDefaultButton($attribs)
      ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons',
+                                     ->getIconUrl('buttons',
                                                        'validate')))
      ->setOnFormChange('$(\'button.continue\').removeAttr(\'disabled\');');
   }
diff --git a/library/ZendAfi/View/Helper/Admin/Button/New.php b/library/ZendAfi/View/Helper/Admin/Button/New.php
index 5e522c19096ce7d705e9873bd53ec82f0997e995..425cbe258dae0e275bc3ed4ad533e921e1a18969 100644
--- a/library/ZendAfi/View/Helper/Admin/Button/New.php
+++ b/library/ZendAfi/View/Helper/Admin/Button/New.php
@@ -31,7 +31,7 @@ class ZendAfi_View_Helper_Admin_Button_New extends ZendAfi_View_Helper_Button_Ne
   protected function _getDefaultButton($attribs) {
     return parent::_getDefaultButton($attribs)
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons',
+                                     ->getIconUrl('buttons',
                                                        'add')));
   }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Admin/Button/Submit.php b/library/ZendAfi/View/Helper/Admin/Button/Submit.php
index 5306454cef2c88cb47fab9e8c5f682f1e4da3b3a..875a052ffc2d77e5864192c95976c6108f1bd581 100644
--- a/library/ZendAfi/View/Helper/Admin/Button/Submit.php
+++ b/library/ZendAfi/View/Helper/Admin/Button/Submit.php
@@ -33,8 +33,8 @@ class ZendAfi_View_Helper_Admin_Button_Submit extends ZendAfi_View_Helper_Button
   protected function _getDefaultButton($attribs) {
    return parent::_getDefaultButton($attribs)
      ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons',
-                                                       'validate')))
+                                     ->getIconUrl('buttons',
+                                                  'validate')))
      ->setOnFormChange('$(\'button.validate\').removeAttr(\'disabled\');');
   }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Admin/Menus.php b/library/ZendAfi/View/Helper/Admin/Menus.php
index 6b2a7545b059c53db0e40020eec2c1fe8a5818d9..5c05d6c2a54661563ff12d5eddabfcc9a59a7d08 100644
--- a/library/ZendAfi/View/Helper/Admin/Menus.php
+++ b/library/ZendAfi/View/Helper/Admin/Menus.php
@@ -51,7 +51,7 @@ class ZendAfi_View_Helper_Admin_Menus extends Zendafi_View_Helper_Basehelper {
   protected function _tagDuplicateNav() {
     return $this->view->tagAnchor($this->view->url(['action' => 'duplicate-horizontal-menu']),
                                   $this->view->tagImg(Class_Admin_Skin::current()
-                                                      ->renderIconUrlOn('actions',
+                                                      ->getIconUrl('actions',
                                                                         'copy_module')),
                                   ['onclick' => sprintf('if(!confirm(\'%s\'))return false;',
                                                         $this->_('Êtes vous sûr de vouloir dupliquer la configuration du menu horizontal à tous les autres profils ? Cela supprimera la configuration existante pour les autres profils')),
@@ -65,7 +65,7 @@ class ZendAfi_View_Helper_Admin_Menus extends Zendafi_View_Helper_Basehelper {
                                                     'id' => $id,
                                                     'id_profil' => $this->_profil->getId()]),
                                   $this->view->tagImg(Class_Admin_Skin::current()
-                                                      ->renderIconUrlOn('actions',
+                                                      ->getIconUrl('actions',
                                                                         'delete')),
                                   ['onclick' => sprintf('if(!confirm(\'%s\'))return false;',
                                                         $this->_('Êtes vous sûr de vouloir supprimer le menu ?')),
diff --git a/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php b/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php
index 51bdb201c31149c00542631281d4a7bbca1fe3f3..698d455853fa82c3ff1ebfbe9e0b51eae181d1cf 100644
--- a/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php
+++ b/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php
@@ -82,7 +82,7 @@ $('#" . $form->getId() . "').find('fieldset').each(function(i, elem) {
     $back = (new Class_Entity())
       ->setText($this->_('Précédente'))
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons', 'left')))
+                                     ->getIconUrl('buttons', 'left')))
       ->setAttribs(['disabled' => 'disabled',
                     'title' => $this->_('Pas de version précédente')]);
 
@@ -99,7 +99,7 @@ $('#" . $form->getId() . "').find('fieldset').each(function(i, elem) {
     $forward = (new Class_Entity())
       ->setText($this->_('Suivante'))
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons', 'right')))
+                                     ->getIconUrl('buttons', 'right')))
       ->setAttribs(['disabled' => 'disabled',
                     'title' => $this->_('Pas de version suivante')]);
 
@@ -118,7 +118,7 @@ $('#" . $form->getId() . "').find('fieldset').each(function(i, elem) {
                ->setUrl($this->view->url(['key' => null, 'action' => 'versions']))
                ->setText($this->_('Liste complète'))
                ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                              ->renderIconUrlOn('actions',
+                                              ->getIconUrl('actions',
                                                                 'liste'),
                                               ['style' => 'filter: invert();'])));
   }
@@ -131,7 +131,7 @@ $('#" . $form->getId() . "').find('fieldset').each(function(i, elem) {
     $apply = (new Class_Entity())
       ->setText($this->_('Rétablir'))
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('actions', 'rollback'),
+                                     ->getIconUrl('actions', 'rollback'),
                                      ['style' => 'filter: invert();']))
       ->setAttribs(['disabled' => 'disabled',
                     'title' => $this->_('Aucune différence avec les donnnées actuelles')]);
@@ -154,7 +154,7 @@ $('#" . $form->getId() . "').find('fieldset').each(function(i, elem) {
       ->setUrl($url)
       ->setAttribs(['onclick' => "if (confirm('" . htmlspecialchars($this->_('Êtes-vous sur de vouloir supprimer cette version de l\\\'historique ?')) . "')) { window.location.href='" . $url ."'}; return false;"])
       ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                     ->renderIconUrlOn('buttons', 'remove')));
+                                     ->getIconUrl('buttons', 'remove')));
 
     return $this->view->Button($delete);
   }
diff --git a/library/ZendAfi/View/Helper/Admin/SearchUsers.php b/library/ZendAfi/View/Helper/Admin/SearchUsers.php
index 6d9cf80948103300986bdee0e4de37b59334c63d..3bcc022348a3d7ae0adbed1c6635c068860d0705 100644
--- a/library/ZendAfi/View/Helper/Admin/SearchUsers.php
+++ b/library/ZendAfi/View/Helper/Admin/SearchUsers.php
@@ -40,7 +40,7 @@ class ZendAfi_View_Helper_Admin_SearchUsers extends ZendAfi_View_Helper_BaseHelp
                               [$this->view->button((new Class_Entity())
                                                    ->setText($this->_('Rechercher'))
                                                    ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                                                                  ->renderIconUrlOn('actions',
+                                                                                  ->getIconUrl('actions',
                                                                                                     'loupe'),
                                                                                   ['style' => 'filter: invert();']))
                                                    ->setAttribs(['onclick' => "var form=$(this).parents('form'); if (!form.size()) form=$(this).parents('.boutons, .admin-buttons').prevAll('form');if (!form.size()) form=$(this).parents('.boutons, .admin-buttons').nextAll('form');form.submit(); return false;",
diff --git a/library/ZendAfi/View/Helper/Admin/UpdateSkins.php b/library/ZendAfi/View/Helper/Admin/UpdateSkins.php
index 978585251c4501a57619f9893e137f05fd79f651..74f60e610d5dc3cc329cadff9c3b93cb1c4e4d92 100644
--- a/library/ZendAfi/View/Helper/Admin/UpdateSkins.php
+++ b/library/ZendAfi/View/Helper/Admin/UpdateSkins.php
@@ -34,7 +34,7 @@ class ZendAfi_View_Helper_Admin_UpdateSkins extends ZendAfi_View_Helper_BaseHelp
                             ->setText($this->_('Demander la mise à jour'))
                             ->setUrl($this->view->url(['git' => 'pull']))
                             ->setImage($this->view->tagImg(Class_Admin_Skin::current()
-                                                           ->renderIconUrlOn('buttons',
+                                                           ->getIconUrl('buttons',
                                                                              'generate'))));
 
     $lis = '';
diff --git a/library/ZendAfi/View/Helper/Api/Loans.php b/library/ZendAfi/View/Helper/Api/Loans.php
new file mode 100644
index 0000000000000000000000000000000000000000..c4542a247d7c893166d2905a249ba9d1b61b44d3
--- /dev/null
+++ b/library/ZendAfi/View/Helper/Api/Loans.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class ZendAfi_View_Helper_Api_Loans extends Zend_View_Helper_Abstract {
+  public function loans($loans) {
+    return json_encode(
+                       $loans->collect([$this, 'loanToArray'])
+                       ->getArrayCopy()
+    );
+  }
+
+
+  public function loanToArray($loan) {
+    return [
+            'title' => $loan->getTitre(),
+            'author' => $loan->getAuteur(),
+            'date_due' => implode('-', array_reverse(explode('/', $loan->getDateRetour()))),
+            'loaned_by' => $loan->getUserFullName(),
+            'library' => $loan->getBibliotheque()
+    ];
+  }
+}
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Bouton.php b/library/ZendAfi/View/Helper/Bouton.php
index 8d53127b23d2bf6e1b1187124f3f61c35fda8b64..15a040143b804a0d4364b43d6194ac34b9c61b38 100644
--- a/library/ZendAfi/View/Helper/Bouton.php
+++ b/library/ZendAfi/View/Helper/Bouton.php
@@ -54,7 +54,7 @@ class ZendAfi_View_Helper_Bouton extends ZendAfi_View_Helper_BaseHelper {
       $attrib = explode('=', $args[$i], 2);
       switch($attrib[0]) {
         case "id":$id=$attrib[1]; break;
-        case "picto" : $picto = Class_Admin_Skin::current()->renderIconUrlOn('buttons', $attrib[1]); break;
+        case "picto" : $picto = Class_Admin_Skin::current()->getIconUrl('buttons', $attrib[1]); break;
         case "texte"  : $texte=$attrib[1]; break;
         case "url" : $url=$attrib[1];
           $onclick="window.location.replace('".$url."')"; break;
@@ -67,7 +67,7 @@ class ZendAfi_View_Helper_Bouton extends ZendAfi_View_Helper_BaseHelper {
           if( $attrib[1]=="V")
           {
             if(!$id) $id="975";
-            $picto = Class_Admin_Skin::current()->renderIconUrlOn('buttons', 'validate');
+            $picto = Class_Admin_Skin::current()->getIconUrl('buttons', 'validate');
             if (!$texte)
               $texte = $this->translate()->_('Valider');
             if(!$largeur)
diff --git a/library/ZendAfi/View/Helper/CosmoLogs.php b/library/ZendAfi/View/Helper/CosmoLogs.php
new file mode 100644
index 0000000000000000000000000000000000000000..9fdcd6e6d708f37a7696ed52ed406c4c366c91fe
--- /dev/null
+++ b/library/ZendAfi/View/Helper/CosmoLogs.php
@@ -0,0 +1,180 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class ZendAfi_View_Helper_CosmoLogs extends ZendAfi_View_Helper_BaseHelper {
+  use Trait_StormFileSystem;
+
+  const DAY_LOG_REGEX ='/integration_([0-9]{4}-[0-9]{2}-[0-9]{2})\.log/';
+
+  public function cosmoLogs() {
+    $table = (new Class_TableDescription('logs'))
+          ->addColumn($this->_('Date'),
+                      ['callback' => [$this, 'renderDay'],
+                       'options' => ['data-sorter' => "false"]])
+
+          ->addColumn($this->_('Rapport'),
+                      ['callback' => [$this, 'renderReport']])
+
+          ->addColumn($this->_('Debug'),
+                      ['callback' => [$this, 'renderDebugLog']])
+
+          ->addColumn($this->_('Notices traitées'),
+                      ['callback' => [$this, 'renderProcessedRecords']])
+
+          ->addColumn($this->_('Erreurs'),
+                      ['callback' => [$this, 'renderErrors']])
+
+          ->addColumn($this->_('Anomalies'),
+                      ['callback' => [$this, 'renderWarnings']]);
+
+    return  $this->view->renderTable($table, $this->_getDays());
+  }
+
+
+  public function renderDay($day) {
+    return
+      $this->view
+      ->tagAnchor(['module' => 'cosmo',
+                   'controller' => 'run-log',
+                   'action' => 'by-date',
+                   'date' => $day->getDay()],
+
+                  Class_Admin_Skin::current()->renderActionIconOn('loupe', $this->view)
+                  . $day->getHumanDate(),
+
+                  ['title' => $this->_('Lister les intégrations du %s',
+                                       $day->getHumanDate())]);
+  }
+
+
+  public function renderProcessedRecords($day) {
+    return $day->getProcessedRecords();
+  }
+
+
+  public function renderErrors($day) {
+    return $day->getErrors();
+  }
+
+
+  public function renderWarnings($day) {
+    return $day->getWarnings();
+  }
+
+
+  public function renderReport($day) {
+    return
+      $this->view
+      ->tagAnchor(['module' => 'cosmo',
+                   'controller' => 'logs',
+                   'action' => 'integration',
+                   'day' => $day->getDay()],
+
+                  Class_Admin_Skin::current()->renderActionIconOn('loupe', $this->view)
+                  . $this->_formatFileSize($day->getIntegrationSize()),
+
+                  ['title' => $this->_('Afficher le rapport d\'intégration du %s',
+                                       $day->getHumanDate())]);
+  }
+
+
+  public function renderDebugLog($day) {
+    return
+      $this->view
+      ->tagAnchor(['module' => 'cosmo',
+                   'controller' => 'logs',
+                   'action' => 'debug',
+                   'day' => $day->getDay()],
+
+                  Class_Admin_Skin::current()->renderActionIconOn('loupe', $this->view)
+                  . $this->_formatFileSize($day->getDebugSize()),
+
+                  ['title' => $this->_('Afficher le journal technique du %s',
+                                       $day->getHumanDate())]);
+  }
+
+
+  protected function _formatFileSize($size) {
+    $units = explode(',', $this->_('o,Ko,Mo,Go'));
+    $power = $size > 0 ? floor(log($size, 1024)) : 0;
+    return round($size / pow(1024, $power)) . ' ' . $units[$power];
+  }
+
+
+  protected function _getDays() {
+    $days = $this->_filesInLogDir()
+         ->select(function ($filename) {
+                    return preg_match(static::DAY_LOG_REGEX,
+                                      $filename); })
+         ->collect(function ($filename) {
+                    return $this->_newDay($filename);
+          });
+
+    $days->uasort(function($a, $b) {
+                    return strcmp($b->getDay(),
+                                  $a->getDay()); });
+    return $days;
+  }
+
+
+  protected function _newDay($filename) {
+    $day = preg_replace(static::DAY_LOG_REGEX,
+                        '$1',
+                        $filename);
+
+    $integrations = new Storm_Model_Collection(
+            Class_Cosmogramme_Integration::findAllBy(['traite' => $day]));
+
+    $sum_all = function($field) use ($integrations) {
+      return array_sum($integrations->collect($field)->getArrayCopy());
+    };
+
+    return (new Class_Entity())
+      ->setDay($day)
+      ->setHumanDate(strftime('%A %e %B %Y',  strtotime($day)))
+      ->setIntegrationSize($this->_getFileSize($filename))
+      ->setDebugSize($this->_getFileSize(str_replace('integration', 'debug', $filename)))
+      ->setProcessedRecords($sum_all('pointeur_reprise'))
+      ->setErrors($sum_all('nb_erreurs'))
+      ->setWarnings($sum_all('nb_warnings'));
+  }
+
+
+  protected function _filesInLogDir() {
+    return
+      new Storm_Collection($this->getFileSystem()
+                           ->fileNamesAt($this->_getLogPath()));
+  }
+
+
+  protected function _getLogPath() {
+    return Class_CosmoVar::getValueOf('log_path');
+  }
+
+
+  protected function _getFileSize($filename) {
+    return $this->getFileSystem()
+                ->fileGetSize($this->_getLogPath() . '/' . $filename);
+  }
+}
+
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/MonocleReaderServerSide.php b/library/ZendAfi/View/Helper/MonocleReaderServerSide.php
index 8a710caa8a796f11f2f3fdffdeeb67fbfda6f73a..f3d56643cfb197dcdf77100d1460da833960e962 100644
--- a/library/ZendAfi/View/Helper/MonocleReaderServerSide.php
+++ b/library/ZendAfi/View/Helper/MonocleReaderServerSide.php
@@ -90,35 +90,42 @@ class ZendAfi_View_Helper_MonocleReaderServerSide extends Zend_View_Helper_HtmlE
 
 
   public function showUrls($album) {
-    $html = '<ul data-role="listview">';
-
-    $ressources = $album->getRessources();
-    foreach($ressources as $ressource) {
-      $libelle = $ressource->getTitre() ? $ressource->getTitre() : $ressource->getFichier();
-      $html .= '<li data-role="list-divider">'.
-        $this->view->tagAnchor($this->view->absoluteUrl($ressource->getOriginalUrl()),
-                               $this->view->tagImg($this->view->absoluteurl($ressource->getThumbnailUrl()),
-                                                   ['alt' => $this->view->_('Télécharger')])
-                               . $libelle,
-                               ['data-ajax' => 'false',
-                                'download' => $libelle]);
-
-      if ($ressource->getFileExtension()=='epub') {
-        $html .= $this->view->tagAnchor(['module' => 'opac',
-                                         'controller' => 'bib-numerique',
-                                         'action' => 'full-screen',
-                                         'id' => $ressource->getId()],
-                                        $this->view->tagImg(URL_ADMIN_IMG . 'picto/show.gif',
-                                                            ['alt' => $this->view->_('Plein écran')]),
-                                        ['data-ajax' => 'false']
-          );
-      }
+    return $this->view
+      ->tag('ul',
+            implode('', array_map([$this, '_renderListItem'],
+                                  $album->getRessources())),
+            ['data-role' => 'listview']);
+  }
 
-      $html .= '</li>';
-    }
 
-    $html .= '</ul>';
-    return $html;
+  protected function _renderListItem($ressource) {
+    $libelle = $ressource->getTitre()
+      ? $ressource->getTitre()
+      : $ressource->getFichier();
+
+    $download_filename = $ressource->getTitre()
+      ? ($ressource->getTitre() . '.' . $ressource->getFileExtension())
+      : $ressource->getFichier();
+
+    $html = $this->view->tagAnchor($this->view->absoluteUrl($ressource->getOriginalUrl()),
+                                   $this->view->tagImg($this->view->absoluteurl($ressource->getThumbnailUrl()),
+                                                       ['alt' => $this->view->_('Télécharger')])
+                                   . $libelle,
+                                   ['data-ajax' => 'false',
+                                    'download' => $download_filename]);
+
+    if ($ressource->getFileExtension()=='epub')
+      $html .= $this->view->tagAnchor(['module' => 'opac',
+                                       'controller' => 'bib-numerique',
+                                       'action' => 'full-screen',
+                                       'id' => $ressource->getId()],
+                                      $this->view->tagImg(URL_ADMIN_IMG . 'picto/show.gif',
+                                                          ['alt' => $this->view->_('Plein écran')]),
+                                      ['data-ajax' => 'false']);
+
+    return $this->view->tag('li',
+                            $html,
+                            ['data-role' => 'list-divider']);
   }
 }
 
diff --git a/library/ZendAfi/View/Helper/Permalink.php b/library/ZendAfi/View/Helper/Permalink.php
index e1a300254b195b36d327f7a877297da2ea60f6fc..6f73582fd5d847eefe189b8667ce9f270f58bcb5 100644
--- a/library/ZendAfi/View/Helper/Permalink.php
+++ b/library/ZendAfi/View/Helper/Permalink.php
@@ -24,7 +24,7 @@ class ZendAfi_View_Helper_Permalink extends ZendAfi_View_Helper_BaseHelper {
     $icon = 'reseaux/permalink.png';
     $icon_url = $profil->skinHasImage($icon)
       ? $profil->getUrlImage($icon)
-      : Class_Admin_Skin::current()->renderIconUrlOn('actions', 'permalink');
+      : Class_Admin_Skin::current()->getIconUrl('actions', 'permalink');
 
     $lien_permanent = $this->view->_('Lien permanent');
 
diff --git a/library/ZendAfi/View/Helper/RenderModelActions.php b/library/ZendAfi/View/Helper/RenderModelActions.php
index f830401aa5c9d7135bb745cfbd6a01527af1b901..531b78c7189eef5d8a834a163a70ac0fe57f9483 100644
--- a/library/ZendAfi/View/Helper/RenderModelActions.php
+++ b/library/ZendAfi/View/Helper/RenderModelActions.php
@@ -151,13 +151,12 @@ class ZendAfi_View_Helper_RenderModelAction {
     if(!$url = $this->_conf[self::URL])
       return '';
 
-    $url = is_array($url)
-      ? $this->_injectIdIn($id, $url)
+    return is_array($url)
+      ? Class_Url::assemble($this->_injectIdIn($id, $url), null, false)
       : $this->_injectId($id, $url);
-
-    return Class_Url::absolute($url);
   }
 
+
   protected function _injectIdIn($model_id, $attribs) {
     $return = [];
     foreach($attribs as $attrib => $value)
diff --git a/library/ZendAfi/View/Helper/RenderTable.php b/library/ZendAfi/View/Helper/RenderTable.php
index 92f431dacf65e6a3bc33afbb6f6cbfb623364b88..a9777c7f63443fc70953cba0c5fb6331da8b2155 100644
--- a/library/ZendAfi/View/Helper/RenderTable.php
+++ b/library/ZendAfi/View/Helper/RenderTable.php
@@ -27,7 +27,7 @@ class ZendAfi_View_Helper_RenderTable extends ZendAfi_View_Helper_BaseHelper {
    * @param options Array
    */
   public function renderTable($description, $grouped_models, $options = []) {
-    $grouped_models = is_array($grouped_models)
+    $grouped_models = (is_array($grouped_models) || is_a($grouped_models, 'ArrayObject'))
       ? new Class_TableDescription_Models($grouped_models)
       : $grouped_models;
 
diff --git a/library/ZendAfi/View/Helper/TagDilicomWidget.php b/library/ZendAfi/View/Helper/TagDilicomWidget.php
index c027963fc2928b11954aeb65e1536c3ea98b1163..19983f644300af699e669c844f6709d078b20c90 100644
--- a/library/ZendAfi/View/Helper/TagDilicomWidget.php
+++ b/library/ZendAfi/View/Helper/TagDilicomWidget.php
@@ -21,28 +21,34 @@
 
 
 class ZendAfi_View_Helper_TagDilicomWidget extends ZendAfi_View_Helper_BaseHelper {
-  protected $_album,
+  protected
+    $_album,
     $_user;
 
   public function tagDilicomWidget($album) {
     $this->_album = $album;
+    return $this->_renderPNBActions() . $this->renderBookPreview($album);
+  }
 
-    $links = $this->_tag('p',
-                         $this->_('Vous n\'avez pas le droit d\'accéder à la consultation en ligne.'));
 
+  protected function _renderPNBActions() {
     $this->_user = Class_Users::getIdentity();
     if (!$this->_user || ($this->_user->hasRightAccessDilicom() &&
                           $this->_user->getBibGLN()))
-      $links = $this->getConsultBookAnchor()
-        . $this->getLoanBookAnchor();
+      return $this->getConsultBookAnchor() . $this->getLoanBookAnchor();
+
+    if (!$this->_user->hasRightAccessDilicom())
+      return $this->_tag('p',
+                         $this->_('Vous n\'avez pas le droit d\'accéder à la consultation en ligne.'));
+
 
-    if ($this->_user
-        && $this->_user->hasRightAccessDilicom()
-        && !$this->_user->getBibGLN())
-      $links = $this->_tag('p',
-                           $this->_('%s n\'a pas accès à la consultation en ligne.', $this->_user->getBib()->getLibelle()));
+    if (!$this->_user->getBib())
+      return $this->_tag('p',
+                         $this->_('Vous devez être inscrit dans une bibliothèque pour accéder à la consultation en ligne'));
 
-    return $links . $this->renderBookPreview($album);
+    return $this->_tag('p',
+                       $this->_('%s n\'a pas accès à la consultation en ligne.',
+                                $this->_user->getBib()->getLibelle()));
   }
 
 
diff --git a/library/startup.php b/library/startup.php
index d760ebc06aa0b7b45e8212a7845b57772af31bda..f1ec92849cb24b5f2462e68d25973b1c8dcfcb45 100644
--- a/library/startup.php
+++ b/library/startup.php
@@ -82,7 +82,7 @@ class Bokeh_Engine {
 
   function setupConstants() {
     defineConstant('BOKEH_MAJOR_VERSION','7.9');
-    defineConstant('BOKEH_RELEASE_NUMBER', BOKEH_MAJOR_VERSION . '.15');
+    defineConstant('BOKEH_RELEASE_NUMBER', BOKEH_MAJOR_VERSION . '.17');
 
     defineConstant('BOKEH_REMOTE_FILES', 'http://git.afi-sa.fr/afi/opacce/');
 
diff --git a/library/storm b/library/storm
index 5e35608172d8a34d34d64037926b3edd1fb8cace..90b15dfb0bcd36552ae16116b0e45c75b1ffcd89 160000
--- a/library/storm
+++ b/library/storm
@@ -1 +1 @@
-Subproject commit 5e35608172d8a34d34d64037926b3edd1fb8cace
+Subproject commit 90b15dfb0bcd36552ae16116b0e45c75b1ffcd89
diff --git a/library/translation/en.mo b/library/translation/en.mo
index 967892c26bada2630615a4382142d71955db52ec..a0d8093132e8353ffd2fc8797b7819dda131a814 100644
Binary files a/library/translation/en.mo and b/library/translation/en.mo differ
diff --git a/library/translation/en.po b/library/translation/en.po
index b243aeabd87f1a30530b14deb94acdb21c2dddbb..a0b038c7f20339c20f15759d6673ed67834211cc 100644
--- a/library/translation/en.po
+++ b/library/translation/en.po
@@ -16,8 +16,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bokeh master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-24 11:52+0200\n"
-"PO-Revision-Date: 2017-04-24 10:23+0000\n"
+"POT-Creation-Date: 2017-05-09 16:16+0200\n"
+"PO-Revision-Date: 2017-05-09 14:43+0000\n"
 "Last-Translator: Weblate Admin <admin@example.com>\n"
 "Language-Team: English <http://weblate.afi-sa.net/projects/bokeh/bokeh-"
 "master/en/>\n"
@@ -151,6 +151,7 @@ msgstr " to newsletters: "
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid " avec l'adresse suivante: "
 msgstr " with this email: "
 
@@ -645,6 +646,7 @@ msgstr "%s put at %s"
 
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:41
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:43
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:50
 #, php-format
 msgid "%s n'a pas accès à la consultation en ligne."
 msgstr "%s cannot access online consultation."
@@ -1287,6 +1289,7 @@ msgstr "Validated"
 #: ../../library/Class/MoteurRecherche.php:605
 #: ../../library/ZendAfi/View/Helper/Admin/MenuHorizontalAdmin.php:41
 #: ../../library/ZendAfi/View/Helper/Admin/Nav.php:41
+#: ../../library/Class/MoteurRecherche.php:604
 msgid "Accueil"
 msgstr "Home"
 
@@ -1998,6 +2001,11 @@ msgstr "Display record"
 msgid "Afficher le calendrier"
 msgstr "Display calendar"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:111
+#, php-format
+msgid "Afficher le journal technique du %s"
+msgstr "Display tech log of %s"
+
 #: ../../library/ZendAfi/Form/Configuration/SearchWidget.php:84
 #: ../../library/ZendAfi/Form/Configuration/Widget/Search.php:73
 msgid "Afficher le lien recherche avancée"
@@ -2022,6 +2030,11 @@ msgstr "Display horizontal menu"
 msgid "Afficher le profil courant dans la barre de navigation"
 msgstr "Display current profile in navigation menu"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:95
+#, php-format
+msgid "Afficher le rapport d'intégration du %s"
+msgstr "Display integration log of %s"
+
 #: ../../application/modules/opac/views/scripts/portail.phtml:10
 #: ../../application/modules/opac/views/scripts/portail.phtml:7
 msgid "Afficher le site en mode mobile"
@@ -2414,6 +2427,7 @@ msgid "Ajouter un agenda"
 msgstr "Add a calendar"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:676
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:685
 msgid "Ajouter un album"
 msgstr "Add an album"
 
@@ -2600,6 +2614,7 @@ msgstr "Add a card"
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/ArticleCategory.php:33
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:541
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:544
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:669
 msgid "Ajouter une catégorie"
 msgstr "Add a category"
 
@@ -2668,6 +2683,7 @@ msgstr "Add a session"
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Sitotheque.php:169
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:525
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:528
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:678
 msgid "Ajouter une sous-catégorie"
 msgstr "Add a subcategory"
 
@@ -2929,6 +2945,10 @@ msgstr "End year"
 msgid "Année: %s"
 msgstr "Year: %s"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:46
+msgid "Anomalies"
+msgstr "Issues"
+
 #: ../../library/Class/Avis.php:88 ../../library/Class/Avis.php:87
 msgid "Anonyme"
 msgstr "Anonymous"
@@ -2946,6 +2966,7 @@ msgstr "August"
 #: ../../application/modules/admin/controllers/NewsletterController.php:185
 #: ../../application/modules/admin/controllers/NewsletterController.php:206
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:79
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:86
 #, php-format
 msgid "Aperçu de la lettre : %s"
 msgstr "Letter preview:: %s"
@@ -3406,6 +3427,7 @@ msgstr "No match in my favorites"
 #: ../../library/Class/MoteurRecherche.php:473
 #: ../../library/Class/MoteurRecherche.php:479
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:67
+#: ../../library/Class/MoteurRecherche.php:478
 msgid "Aucun résultat trouvé"
 msgstr "No results"
 
@@ -3789,9 +3811,19 @@ msgstr "Authors"
 #: ../../application/modules/opac/controllers/AuthController.php:141
 #: ../../application/modules/opac/controllers/AuthController.php:154
 #: ../../application/modules/opac/controllers/AuthController.php:146
+#: ../../application/modules/opac/controllers/AuthController.php:169
 msgid "Authentification"
 msgstr "Authentication"
 
+#: ../../application/modules/opac/controllers/AuthController.php:149
+#, php-format
+msgid "Authentifiez-vous pour autoriser \"%s\" à accéder à votre compte"
+msgstr "Authenticate to allow \"%s\" to access your account"
+
+#: ../../application/modules/api/controllers/UserController.php:29
+msgid "Autorisation non spécifiée"
+msgstr "Unspecified authorization"
+
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:154
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:159
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:163
@@ -5028,6 +5060,7 @@ msgstr "This identifier already exists."
 #: ../../application/modules/opac/controllers/AuthController.php:382
 #: ../../application/modules/opac/controllers/AuthController.php:396
 #: ../../application/modules/opac/controllers/AuthController.php:401
+#: ../../application/modules/opac/controllers/AuthController.php:424
 msgid "Cette fonctionnalité n'est pas activée."
 msgstr "This feature is not enabled."
 
@@ -5959,6 +5992,7 @@ msgstr "\"%s\" training subscription confirmation"
 #: ../../application/modules/opac/controllers/AuthController.php:348
 #: ../../application/modules/opac/controllers/AuthController.php:362
 #: ../../application/modules/opac/controllers/AuthController.php:367
+#: ../../application/modules/opac/controllers/AuthController.php:390
 msgid "Confirmation d'inscription à la newsletter: "
 msgstr "Newsletter subscription validation: "
 
@@ -6038,6 +6072,7 @@ msgstr "Conectors"
 #: ../../application/modules/telephone/controllers/AuthController.php:43
 #: ../../application/modules/opac/controllers/AuthController.php:95
 #: ../../application/modules/opac/controllers/AuthController.php:103
+#: ../../application/modules/opac/controllers/AuthController.php:102
 msgid "Connexion"
 msgstr "Connection"
 
@@ -6114,6 +6149,7 @@ msgstr "Read the book online"
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:55
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:60
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:69
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:75
 msgid "Consulter le livre en ligne (depuis la médiathèque)"
 msgstr "Display online (on premises)"
 
@@ -6492,6 +6528,7 @@ msgid "Création d'un nouveau panier"
 msgstr "Creating new selection"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:135
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:137
 #, php-format
 msgid "Création de l'intégration pour %s"
 msgstr "Creation of integration for %s"
@@ -6645,6 +6682,7 @@ msgstr "In a tab"
 #: ../../application/modules/opac/views/scripts/abonne/activities.phtml:17
 #: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:13
 #: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:23
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:30
 msgid "Date"
 msgstr "Date"
 
@@ -6808,6 +6846,10 @@ msgstr "A to B"
 msgid "De B à A"
 msgstr "B to A"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:37
+msgid "Debug"
+msgstr "Debug"
+
 #: ../../application/modules/admin/controllers/RedmineController.php:157
 #, php-format
 msgid "Demande #%s enregistrée"
@@ -6820,12 +6862,14 @@ msgstr "Ticket #%s registered"
 #: ../../application/modules/opac/controllers/AuthController.php:286
 #: ../../application/modules/opac/controllers/AuthController.php:300
 #: ../../application/modules/opac/controllers/AuthController.php:305
+#: ../../application/modules/opac/controllers/AuthController.php:328
 msgid "Demande d'inscription à la lettre d'information: "
 msgstr "Subscription to the newsletter: "
 
 #: ../../application/modules/opac/controllers/AuthController.php:380
 #: ../../application/modules/opac/controllers/AuthController.php:394
 #: ../../application/modules/opac/controllers/AuthController.php:399
+#: ../../application/modules/opac/controllers/AuthController.php:422
 msgid "Demande de préinscription"
 msgstr "Preregistration request"
 
@@ -7093,6 +7137,7 @@ msgstr "addressee"
 #: ../../application/modules/admin/controllers/NewsletterController.php:84
 #: ../../application/modules/admin/controllers/NewsletterController.php:100
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:184
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:191
 #, php-format
 msgid "Destinataires de la lettre : %s"
 msgstr "Letter recipients: %s"
@@ -7351,6 +7396,7 @@ msgstr "Search domain"
 #: ../../library/Class/MoteurRecherche.php:429
 #: ../../library/Class/MoteurRecherche.php:436
 #: ../../library/Class/MoteurRecherche.php:442
+#: ../../library/Class/MoteurRecherche.php:441
 msgid "Domaine non paramétré"
 msgstr "Unset domain"
 
@@ -7365,7 +7411,7 @@ msgstr "Parent domain"
 #: ../../library/Class/Album.php:1581 ../../library/Class/Album.php:1584
 #: ../../library/Class/Album.php:1599
 ../../library/Class/Album.php:1599
 #: ../../library/Class/Album.php:1594 ../../library/Class/Album.php:1601
-#: ../../library/Class/Album.php:1595
+#: ../../library/Class/Album.php:1595 ../../library/Class/Album.php:1598
 msgid "Domaine public"
 msgstr "Public domain"
 
@@ -7514,6 +7560,7 @@ msgstr "Impossible copy: "
 #: ../../application/modules/admin/controllers/NewsletterController.php:64
 #: ../../application/modules/admin/controllers/NewsletterController.php:80
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:164
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:171
 msgid "Duplication impossible: Erreur lors de l'enregisrement de la copie."
 msgstr "Cannot duplicate: Error while saving copy."
 
@@ -7521,6 +7568,7 @@ msgstr "Cannot duplicate: Error while saving copy."
 #: ../../application/modules/admin/controllers/NewsletterController.php:59
 #: ../../application/modules/admin/controllers/NewsletterController.php:75
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:159
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:166
 msgid "Duplication impossible: la source n'a pas été trouvée."
 msgstr "Cannot duplicate: source not found."
 
@@ -7555,6 +7603,7 @@ msgid "Dupliquer l'article: %s"
 msgstr "Copy article: %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:59
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:66
 msgid "Dupliquer la lettre d'information"
 msgstr "Duplicate newsletter"
 
@@ -7748,6 +7797,7 @@ msgstr "\"%s\" training unsubscription"
 #: ../../application/modules/opac/controllers/AuthController.php:325
 #: ../../application/modules/opac/controllers/AuthController.php:339
 #: ../../application/modules/opac/controllers/AuthController.php:344
+#: ../../application/modules/opac/controllers/AuthController.php:367
 msgid "Désinscription de la lettre d'information: "
 msgstr "Newsletter unsubscribe: "
 
@@ -7777,6 +7827,10 @@ msgstr "Unsubscribe this group"
 msgid "Désolé, cette page n'existe pas"
 msgstr "Sorry, this page does not exist"
 
+#: ../../application/modules/opac/controllers/AuthController.php:146
+msgid "Désolé, requête incomplète"
+msgstr "Sorry, request is not complete"
+
 #: ../../library/ZendAfi/View/Helper/RenderSessions.php:68
 #: ../../library/ZendAfi/View/Helper/Redmine/IssueJournal.php:50
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:204
@@ -7990,6 +8044,7 @@ msgid "Effectif maximum atteint"
 msgstr "Maximum affected"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:38
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:40
 msgid "Effectuer un test d'envoi"
 msgstr "Send a test"
 
@@ -8098,6 +8153,7 @@ msgstr "Sorry, your maximun of %s loans reached."
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:79
 #: ../../application/modules/opac/controllers/BibNumeriqueController.php:289
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:88
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:94
 msgid "Emprunter le livre au format EPUB"
 msgstr "Loan the ePub"
 
@@ -8367,6 +8423,7 @@ msgstr "Send"
 #: ../../application/modules/admin/views/scripts/newsletter/index.phtml:22
 #: ../../application/modules/admin/controllers/NewsletterController.php:52
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:47
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:51
 msgid "Envoyer la lettre d'information ?"
 msgstr "Send the newsletter ?"
 
@@ -8403,6 +8460,10 @@ msgstr "Send a document purchase request"
 msgid "Envoyer à cette adresse"
 msgstr "Send to this address"
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+msgid "Envoyez la lettre d'information"
+msgstr "Send the newsletter"
+
 #: ../../library/ZendAfi/View/Helper/ReponseFormulaireFilled.php:28
 msgid "Envoyé le"
 msgstr "Sent the"
@@ -8529,6 +8590,7 @@ msgstr "Error while executing batch %s"
 #: ../../application/modules/opac/controllers/AuthController.php:358
 #: ../../application/modules/opac/controllers/AuthController.php:372
 #: ../../application/modules/opac/controllers/AuthController.php:377
+#: ../../application/modules/opac/controllers/AuthController.php:400
 msgid "Erreur lors de l\\inscription à la newsletter."
 msgstr "Error during newsletter subscription."
 
@@ -8564,6 +8626,10 @@ msgstr "Error(s) : %s, variable %s unsaved"
 msgid "Erreur: "
 msgstr "Error: "
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:43
+msgid "Erreurs"
+msgstr "Errors"
+
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:58
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:49
 msgid "Et "
@@ -8646,6 +8712,7 @@ msgid "Etes-vous sûr de vouloir supprimer cette annexe ?"
 msgstr "Are you sure to delete this branch ?"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:697
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:706
 msgid "Etes-vous sûr de vouloir supprimer cette catégorie ?"
 msgstr "Are you sure to delete this category ?"
 
@@ -9509,6 +9576,7 @@ msgstr "User group"
 
 #: ../../library/Class/Newsletter.php:482
 #: ../../library/Class/Newsletter.php:493
+#: ../../library/Class/Newsletter.php:500
 #, php-format
 msgid "Groupe manuel pour la lettre \"%s\""
 msgstr "Manual group for letter \"%s\""
@@ -9542,6 +9610,8 @@ msgstr "Groups"
 #: ../../application/modules/admin/controllers/NewsletterController.php:236
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:90
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:109
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:97
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:116
 msgid "Groupes destinataires"
 msgstr "Recipients groups"
 
@@ -10564,6 +10634,7 @@ msgstr "Subscription not allowed"
 #: ../../application/modules/opac/controllers/AuthController.php:269
 #: ../../application/modules/opac/controllers/AuthController.php:283
 #: ../../application/modules/opac/controllers/AuthController.php:288
+#: ../../application/modules/opac/controllers/AuthController.php:311
 msgid "Inscription à la lettre d'information: "
 msgstr "Subscription to the newsletter: "
 
@@ -10574,6 +10645,7 @@ msgstr "Subscription to the newsletter: "
 #: ../../application/modules/opac/controllers/AuthController.php:351
 #: ../../application/modules/opac/controllers/AuthController.php:365
 #: ../../application/modules/opac/controllers/AuthController.php:370
+#: ../../application/modules/opac/controllers/AuthController.php:393
 msgid "Inscription à la newsletter invalide."
 msgstr "Invalid subscription to the newsletter."
 
@@ -10741,6 +10813,14 @@ msgstr "Javascript code for statistics"
 msgid "Je ne veux plus recevoir cette lettre d'information"
 msgstr "I want to unsuscribe to this newsletter"
 
+#: ../../application/modules/api/controllers/UserController.php:36
+msgid "Jeton d'autorisation invalide"
+msgstr "Invalid authorization token"
+
+#: ../../application/modules/api/controllers/UserController.php:33
+msgid "Jeton d'autorisation non fourni"
+msgstr "Missing authorization token"
+
 #: ../../library/Class/Ouverture.php:54
 ../../library/Class/Ouverture.php:54
 msgid "Jeudi"
 msgstr "Thursday"
@@ -10860,6 +10940,10 @@ msgstr "The e-mail address is invalid or already used."
 msgid "L'album \"%s\" a été créé"
 msgstr "The album  \"%s\" was created"
 
+#: ../../library/Class/Album.php:1133
+msgid "L'album doit avoir un type de document"
+msgstr "Album must have a document type"
+
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Annexe.php:32
 #, php-format
 msgid "L'annexe \"%s\" a été ajoutée"
@@ -10875,6 +10959,11 @@ msgstr "Branch \"%s\" has been successfully edited"
 msgid "L'annexe \"%s\" a été suppriméee"
 msgstr "Branch \"%s\"  has been successfuly deleted"
 
+#: ../../library/Class/Album.php:1126
+#, php-format
+msgid "L'année doit être comprise entre %s et %s"
+msgstr "Year should be between %s and %s"
+
 #: ../../application/modules/admin/controllers/CmsController.php:36
 #: ../../application/modules/admin/controllers/CmsController.php:34
 #: ../../application/modules/admin/controllers/CmsController.php:33
@@ -11014,8 +11103,8 @@ msgid ""
 "L'usager <a href=\"%s\">%s (courriel: %s)</a> vient de s'inscrire à "
 "l'activité <a href=\"%s\">%s</a>"
 msgstr ""
-"User <a href=\"%s\">%s (mail: %s)</a> has subscribed to activity <a href=\"%"
-"s\">%s</a>"
+"User <a href=\"%s\">%s (mail: %s)</a> has subscribed to activity <a href=\"%s"
+"\">%s</a>"
 
 #: ../../library/Class/Formation/RegistrationMail.php:44
 #, php-format
@@ -11701,6 +11790,7 @@ msgid "Le fichier dépasse la taille limite (upload_max_filesize de php.ini)"
 msgstr "The file size exceeds the limit"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:200
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:202
 #, php-format
 msgid "Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo"
 msgstr "File size is to small : %s mo -> should be more than %s mo"
@@ -11927,6 +12017,10 @@ msgstr "The website is offline"
 msgid "Le territoire contient %s notices"
 msgstr "The territory contains %s records"
 
+#: ../../library/Class/Album.php:1131
+msgid "Le titre est obligatoire"
+msgstr "Title is mandatory"
+
 #: ../../application/modules/telephone/views/scripts/recherche/avis.phtml:14
 msgid "Lecteurs du portail"
 msgstr "Viewers"
@@ -12932,6 +13026,11 @@ msgstr "Websites to extend search (%s chain will be replaced by the query)"
 msgid "Liste des tags à ajouter au rapport d'état du système"
 msgstr "Tags to add to system status report"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:64
+#, php-format
+msgid "Lister les intégrations du %s"
+msgstr "List integrations of %s"
+
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:195
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:198
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:226
@@ -13890,6 +13989,7 @@ msgid "Modifier la biographie"
 msgstr "Edit biography"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:683
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:692
 msgid "Modifier la catégorie"
 msgstr "Edit category"
 
@@ -13920,6 +14020,7 @@ msgid "Modifier la formation: %s"
 msgstr "Edit the training : %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:28
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:30
 msgid "Modifier la newsletter"
 msgstr "Edit newsletter"
 
@@ -14094,6 +14195,7 @@ msgid "Modifier les informations du panier %s"
 msgstr "Edit selection %s information"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:35
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:37
 msgid "Modifier les inscrits"
 msgstr "Edit recipients"
 
@@ -14508,6 +14610,7 @@ msgstr "Library ID (provided by Dilicom)."
 #: ../../application/modules/telephone/controllers/AuthController.php:81
 #: ../../application/modules/telephone/controllers/AuthController.php:75
 #: ../../application/modules/telephone/controllers/AuthController.php:89
+#: ../../application/modules/telephone/controllers/AuthController.php:95
 msgid "Mot de passe ou date de naissance"
 msgstr "Password or date of birth"
 
@@ -15452,6 +15555,10 @@ msgstr "Related records"
 msgid "Notices similaires"
 msgstr "Similar records"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:40
+msgid "Notices traitées"
+msgstr "Handled records"
+
 #: ../../application/modules/opac/views/scripts/help/cookies.phtml:9
 msgid ""
 "Nous utilisons uniquement des cookies visant à faciliter votre navigation. "
@@ -15750,6 +15857,7 @@ msgstr "No membership card"
 #: ../../library/ZendAfi/Form/Register.php:196
 #: ../../library/ZendAfi/Form/Register.php:184
 #: ../../library/ZendAfi/Form/Configuration/AuthRegister.php:77
+#: ../../application/modules/telephone/controllers/AuthController.php:94
 msgid "N° de carte"
 msgstr "Card #"
 
@@ -16934,6 +17042,7 @@ msgstr "Playlist"
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:108
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:111
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:123
 msgid "Plein écran"
 msgstr "Full Screen"
 
@@ -17486,6 +17595,10 @@ msgstr "Website catalog properties"
 msgid "Propulsé par"
 msgstr "Powered by"
 
+#: ../../application/modules/api/controllers/UserController.php:26
+msgid "Protocole HTTP obligatoire"
+msgstr "HTTPS is mandatory"
+
 #: ../../library/ZendAfi/Form/Album.php:154
 #: ../../library/ZendAfi/Form/Album.php:169
 #: ../../library/ZendAfi/Form/Album.php:166
@@ -17527,12 +17640,14 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:500
 #: ../../application/modules/opac/controllers/AuthController.php:505
+#: ../../application/modules/opac/controllers/AuthController.php:528
 msgid "Préinscription"
 msgstr "Preregistration"
 
 #: ../../application/modules/opac/controllers/AuthController.php:460
 #: ../../application/modules/opac/controllers/AuthController.php:474
 #: ../../application/modules/opac/controllers/AuthController.php:479
+#: ../../application/modules/opac/controllers/AuthController.php:502
 #, php-format
 msgid "Préinscription à %s"
 msgstr "Preregistration to %s"
@@ -17873,6 +17988,10 @@ msgstr "Link this selection to a domain"
 msgid "Ranger le panier dans des domaines."
 msgstr "Store the selection in domains."
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:34
+msgid "Rapport"
+msgstr "Report"
+
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:29
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:27
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Report.php:26
@@ -18298,6 +18417,15 @@ msgstr "Make visible"
 msgid "Replier"
 msgstr "Replicate"
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:50
+#, php-format
+msgid "Reprendre l'envoi de la lettre d'information: %s ? "
+msgstr "Resume dispatch of newsletter: %s ? "
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:61
+msgid "Reprendre l'envoi en cours"
+msgstr "Resume current dispatch"
+
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:29
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:48
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:210
@@ -19161,6 +19289,7 @@ msgstr "Save in progress"
 #: ../../application/modules/telephone/controllers/AuthController.php:104
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:35
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:41
+#: ../../application/modules/telephone/controllers/AuthController.php:110
 msgid "Se connecter"
 msgstr "Sign in"
 
@@ -20296,6 +20425,7 @@ msgid "Supprimer la bibliothèque: %s"
 msgstr "Delete library: %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:690
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:699
 msgid "Supprimer la catégorie"
 msgstr "Delete category"
 
@@ -20304,6 +20434,7 @@ msgid "Supprimer la formation"
 msgstr "Delete the training"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:69
 msgid "Supprimer la lettre d'information"
 msgstr "Delete newsletter"
 
@@ -21368,6 +21499,11 @@ msgstr "Translations:"
 msgid "Traduire un article: %s"
 msgstr "Translate article: %s"
 
+#: ../../library/Class/WebService/BibNumerique/AbstractOAI.php:50
+#, php-format
+msgid "Traitement de la page %d (nombre d'enregistrements: %d)"
+msgstr "Handling page %d (records count: %d)"
+
 #: ../../library/ZendAfi/View/Helper/Admin/CosmoStatus.php:60
 #: ../../library/Class/Systeme/Report/Cosmogramme.php:50
 msgid "Traitement en cours depuis le"
@@ -21754,6 +21890,7 @@ msgstr "Download the repository"
 #: ../../library/ZendAfi/View/Helper/Notice/Unimarc.php:79
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:101
 #: ../../application/modules/opac/views/scripts/bib-numerique/download-book.phtml:3
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
 #, php-format
 msgid "Télécharger"
 msgstr "Upload"
@@ -21956,6 +22093,7 @@ msgstr "A mail has been sent."
 #: ../../application/modules/opac/controllers/AuthController.php:472
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:491
+#: ../../application/modules/opac/controllers/AuthController.php:514
 #, php-format
 msgid ""
 "Un email de confirmation de préinscription vous a été envoyé à l'adresse %s ."
@@ -22007,6 +22145,7 @@ msgstr "A template with the same name already exists : %s"
 #: ../../application/modules/opac/controllers/AuthController.php:279
 #: ../../application/modules/opac/controllers/AuthController.php:293
 #: ../../application/modules/opac/controllers/AuthController.php:298
+#: ../../application/modules/opac/controllers/AuthController.php:321
 msgid ""
 "Un utilisateur a déjà renseigné cet email. Merci de vous identifier avec le "
 "compte qui utilise cet email."
@@ -22023,6 +22162,7 @@ msgstr "A category is required"
 #: ../../application/modules/opac/controllers/AuthController.php:307
 #: ../../application/modules/opac/controllers/AuthController.php:321
 #: ../../application/modules/opac/controllers/AuthController.php:326
+#: ../../application/modules/opac/controllers/AuthController.php:349
 msgid ""
 "Une demande de confirmation d'inscription vous a été envoyée à l'adresse "
 "mail renseignée."
@@ -22071,6 +22211,7 @@ msgstr "An error has occurred"
 #: ../../application/modules/opac/controllers/AuthController.php:303
 #: ../../application/modules/opac/controllers/AuthController.php:317
 #: ../../application/modules/opac/controllers/AuthController.php:322
+#: ../../application/modules/opac/controllers/AuthController.php:345
 msgid ""
 "Une erreur est survenue à l'envoi du mail de confirmation. Veuillez "
 "réessayer. Si le problème persiste, veuillez contacter votre médiathèque."
@@ -22216,6 +22357,10 @@ msgstr "PNB user FTP"
 msgid "Utilisateur introuvable"
 msgstr "Unknown user"
 
+#: ../../application/modules/api/controllers/UserController.php:39
+msgid "Utilisateur non trouvé"
+msgstr "User not found"
+
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:57
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:61
 msgid "Utilisateur sans mail"
@@ -22718,6 +22863,7 @@ msgid "Visualiser"
 msgstr "Preview"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:31
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:33
 msgid "Visualiser la newsletter"
 msgstr "Preview newsletter"
 
@@ -23118,6 +23264,7 @@ msgstr "Your account will be updated in 15 minutes."
 #: ../../application/modules/opac/controllers/AuthController.php:240
 #: ../../application/modules/opac/controllers/AuthController.php:221
 #: ../../application/modules/opac/controllers/AuthController.php:235
+#: ../../application/modules/opac/controllers/AuthController.php:263
 msgid "Votre demande d'inscription"
 msgstr "Your application"
 
@@ -23414,6 +23561,7 @@ msgstr "You have %d outstanding bookings"
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid "Vous avez bien été abonné à la newsletter: "
 msgstr "You have been subscribed to newsletter: "
 
@@ -23805,6 +23953,12 @@ msgstr ""
 "You must be logged into an account with a valid subscription to view the "
 "film in its entirety"
 
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:47
+msgid ""
+"Vous devez être inscrit dans une bibliothèque pour accéder à la consultation "
+"en ligne"
+msgstr "You must be registered in a library to browse this document"
+
 #: ../../application/modules/opac/views/scripts/abonne/cards.phtml:9
 msgid "Vous n'avez ajouté aucune carte"
 msgstr "You haven't added any card"
@@ -23914,6 +24068,7 @@ msgstr "You don't have the %s permission"
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:37
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:30
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:31
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:42
 msgid "Vous n'avez pas le droit d'accéder à la consultation en ligne."
 msgstr "You don't have access to online reading."
 
@@ -24506,6 +24661,7 @@ msgstr "contains"
 #: ../../library/Class/Newsletter.php:314
 #: ../../library/Class/Newsletter.php:369
 #: ../../library/Class/Newsletter.php:374
+#: ../../library/Class/Newsletter.php:381
 msgid "copie"
 msgstr "copy"
 
@@ -24755,6 +24911,7 @@ msgid "envoi en cours"
 msgstr "sending in progress"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:113
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:114
 msgid "erreur au transfert du fichier"
 msgstr "Error during file transfer"
 
@@ -25351,6 +25508,10 @@ msgstr "Rank in familly"
 msgid "nécessite un thème compatible"
 msgstr "Requires a compliant CSS"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:117
+msgid "o,Ko,Mo,Go"
+msgstr "o,Ko,Mo,Go"
+
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:44
 #: ../../library/Class/Calendar.php:44 ../../library/Class/Calendar.php:45
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:49
@@ -25498,6 +25659,7 @@ msgid "partager sur"
 msgstr "share on"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:102
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:103
 #, php-format
 msgid "pas de transfert pour : %s"
 msgstr "no transfer for  : %s"
@@ -25574,6 +25736,7 @@ msgid "prénom"
 msgstr "first name"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:165
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:167
 #, php-format
 msgid "répertoire inaccessible: %s"
 msgstr "inaccessible repository : %s"
@@ -25745,6 +25908,7 @@ msgid "traduction %s"
 msgstr "translation %s"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:121
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:122
 #, php-format
 msgid "transfert vers %s"
 msgstr "transfer to %s"
@@ -25907,6 +26071,7 @@ msgstr "Preregistration failed, webservice answered \"%s\"."
 #: ../../library/Class/WebService/SIGB/Koha/RestfulService.php:96
 #: ../../application/modules/opac/controllers/AuthController.php:449
 #: ../../application/modules/opac/controllers/AuthController.php:454
+#: ../../application/modules/opac/controllers/AuthController.php:477
 msgid "Échec de la préinscription, les informations saisies sont invalides."
 msgstr "Preregistration failed, given informations are invalid."
 
diff --git a/library/translation/es.mo b/library/translation/es.mo
index 9d56013e0242687174e5aa8e93ec5f45dfe3a9f0..a6e2dbc1fe68cc42200fd2bdf1a0975ed69826a0 100644
Binary files a/library/translation/es.mo and b/library/translation/es.mo differ
diff --git a/library/translation/es.po b/library/translation/es.po
index 83ece81a2dd7341a3da3044ca88b374db8da8109..074eaf94b5c697c29e9bf9211d19a4974dde6a4c 100644
--- a/library/translation/es.po
+++ b/library/translation/es.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bokeh 7.6.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-24 11:52+0200\n"
+"POT-Creation-Date: 2017-05-09 16:16+0200\n"
 "PO-Revision-Date: 2016-03-11 15:28+0000\n"
 "Last-Translator: salad0drik <cheurteux@afi-sa.fr>\n"
 "Language-Team: Spanish (http://www.transifex.com/afibre/bokeh-7-4-0/language/"
@@ -142,6 +142,7 @@ msgstr " a los boletines:"
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid " avec l'adresse suivante: "
 msgstr " con la siguiente dirección:"
 
@@ -636,6 +637,7 @@ msgstr " de %s hasta %s"
 
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:41
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:43
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:50
 #, php-format
 msgid "%s n'a pas accès à la consultation en ligne."
 msgstr ""
@@ -1295,6 +1297,7 @@ msgstr "Aceptada"
 #: ../../library/Class/MoteurRecherche.php:605
 #: ../../library/ZendAfi/View/Helper/Admin/MenuHorizontalAdmin.php:41
 #: ../../library/ZendAfi/View/Helper/Admin/Nav.php:41
+#: ../../library/Class/MoteurRecherche.php:604
 msgid "Accueil"
 msgstr "Bienvenido"
 
@@ -2028,6 +2031,11 @@ msgstr "Ver registro"
 msgid "Afficher le calendrier"
 msgstr "Ver mapa"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:111
+#, fuzzy, php-format
+msgid "Afficher le journal technique du %s"
+msgstr "Véase el sitio Web en modo móvil"
+
 #: ../../library/ZendAfi/Form/Configuration/SearchWidget.php:84
 #: ../../library/ZendAfi/Form/Configuration/Widget/Search.php:73
 #, fuzzy
@@ -2053,6 +2061,11 @@ msgstr "Mostrar menú horizontal"
 msgid "Afficher le profil courant dans la barre de navigation"
 msgstr "Visualizar el perfil coriente en la barra de navegación"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:95
+#, fuzzy, php-format
+msgid "Afficher le rapport d'intégration du %s"
+msgstr "Administración Mostrar herramientas \\"
+
 #: ../../application/modules/opac/views/scripts/portail.phtml:10
 #: ../../application/modules/opac/views/scripts/portail.phtml:7
 msgid "Afficher le site en mode mobile"
@@ -2455,6 +2468,7 @@ msgid "Ajouter un agenda"
 msgstr "Añadir medios"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:676
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:685
 #, fuzzy
 msgid "Ajouter un album"
 msgstr "Añadir Catálogo"
@@ -2647,6 +2661,7 @@ msgstr "Añadir un artículo"
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/ArticleCategory.php:33
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:541
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:544
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:669
 msgid "Ajouter une catégorie"
 msgstr "Añadir categoría"
 
@@ -2716,6 +2731,7 @@ msgstr "Añadir una sesión de surf"
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Sitotheque.php:169
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:525
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:528
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:678
 #, fuzzy
 msgid "Ajouter une sous-catégorie"
 msgstr "Añadir categoría"
@@ -2987,6 +3003,10 @@ msgstr "Fin de año"
 msgid "Année: %s"
 msgstr "Año: %s"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:46
+msgid "Anomalies"
+msgstr ""
+
 #: ../../library/Class/Avis.php:88 ../../library/Class/Avis.php:87
 msgid "Anonyme"
 msgstr "Anónimo"
@@ -3004,6 +3024,7 @@ msgstr "Agosto"
 #: ../../application/modules/admin/controllers/NewsletterController.php:185
 #: ../../application/modules/admin/controllers/NewsletterController.php:206
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:79
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:86
 #, fuzzy, php-format
 msgid "Aperçu de la lettre : %s"
 msgstr "Descripción general de la carta:"
@@ -3472,6 +3493,7 @@ msgstr "Ningún resultado en mis favoritos"
 #: ../../library/Class/MoteurRecherche.php:473
 #: ../../library/Class/MoteurRecherche.php:479
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:67
+#: ../../library/Class/MoteurRecherche.php:478
 msgid "Aucun résultat trouvé"
 msgstr "No hay resultados"
 
@@ -3861,9 +3883,19 @@ msgstr "Autores"
 #: ../../application/modules/opac/controllers/AuthController.php:141
 #: ../../application/modules/opac/controllers/AuthController.php:154
 #: ../../application/modules/opac/controllers/AuthController.php:146
+#: ../../application/modules/opac/controllers/AuthController.php:169
 msgid "Authentification"
 msgstr "Autenticación"
 
+#: ../../application/modules/opac/controllers/AuthController.php:149
+#, php-format
+msgid "Authentifiez-vous pour autoriser \"%s\" à accéder à votre compte"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:29
+msgid "Autorisation non spécifiée"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:154
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:159
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:163
@@ -5142,6 +5174,7 @@ msgstr "Este identificador ya existe."
 #: ../../application/modules/opac/controllers/AuthController.php:382
 #: ../../application/modules/opac/controllers/AuthController.php:396
 #: ../../application/modules/opac/controllers/AuthController.php:401
+#: ../../application/modules/opac/controllers/AuthController.php:424
 #, fuzzy
 msgid "Cette fonctionnalité n'est pas activée."
 msgstr "Este servicio no puede pruebarse"
@@ -6083,6 +6116,7 @@ msgstr "La confirmación de la inscripción al boletín de noticias:"
 #: ../../application/modules/opac/controllers/AuthController.php:348
 #: ../../application/modules/opac/controllers/AuthController.php:362
 #: ../../application/modules/opac/controllers/AuthController.php:367
+#: ../../application/modules/opac/controllers/AuthController.php:390
 msgid "Confirmation d'inscription à la newsletter: "
 msgstr "La confirmación de la inscripción al boletín de noticias:"
 
@@ -6162,6 +6196,7 @@ msgstr "Conectores"
 #: ../../application/modules/telephone/controllers/AuthController.php:43
 #: ../../application/modules/opac/controllers/AuthController.php:95
 #: ../../application/modules/opac/controllers/AuthController.php:103
+#: ../../application/modules/opac/controllers/AuthController.php:102
 msgid "Connexion"
 msgstr "Iniciar sesión"
 
@@ -6241,6 +6276,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:55
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:60
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:69
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:75
 msgid "Consulter le livre en ligne (depuis la médiathèque)"
 msgstr ""
 
@@ -6623,6 +6659,7 @@ msgid "Création d'un nouveau panier"
 msgstr "Creación de una nueva cesta"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:135
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:137
 #, php-format
 msgid "Création de l'intégration pour %s"
 msgstr ""
@@ -6781,6 +6818,7 @@ msgstr "En una ficha"
 #: ../../application/modules/opac/views/scripts/abonne/activities.phtml:17
 #: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:13
 #: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:23
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:30
 msgid "Date"
 msgstr "Fecha"
 
@@ -6945,6 +6983,10 @@ msgstr "De A a B"
 msgid "De B à A"
 msgstr "de B a A"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:37
+msgid "Debug"
+msgstr ""
+
 #: ../../application/modules/admin/controllers/RedmineController.php:157
 #, fuzzy, php-format
 msgid "Demande #%s enregistrée"
@@ -6957,12 +6999,14 @@ msgstr "%d sugerencias registradas."
 #: ../../application/modules/opac/controllers/AuthController.php:286
 #: ../../application/modules/opac/controllers/AuthController.php:300
 #: ../../application/modules/opac/controllers/AuthController.php:305
+#: ../../application/modules/opac/controllers/AuthController.php:328
 msgid "Demande d'inscription à la lettre d'information: "
 msgstr "Solicitud de inclusión en el boletín de noticias:"
 
 #: ../../application/modules/opac/controllers/AuthController.php:380
 #: ../../application/modules/opac/controllers/AuthController.php:394
 #: ../../application/modules/opac/controllers/AuthController.php:399
+#: ../../application/modules/opac/controllers/AuthController.php:422
 #, fuzzy
 msgid "Demande de préinscription"
 msgstr "Las solicitudes de inscripción"
@@ -7239,6 +7283,7 @@ msgstr "Destinatario"
 #: ../../application/modules/admin/controllers/NewsletterController.php:84
 #: ../../application/modules/admin/controllers/NewsletterController.php:100
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:184
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:191
 #, fuzzy, php-format
 msgid "Destinataires de la lettre : %s"
 msgstr "Los seguidores de la carta: %s"
@@ -7502,6 +7547,7 @@ msgstr "Cuadro de búsqueda"
 #: ../../library/Class/MoteurRecherche.php:429
 #: ../../library/Class/MoteurRecherche.php:436
 #: ../../library/Class/MoteurRecherche.php:442
+#: ../../library/Class/MoteurRecherche.php:441
 msgid "Domaine non paramétré"
 msgstr ""
 
@@ -7516,7 +7562,7 @@ msgstr "Dominio primario"
 #: ../../library/Class/Album.php:1581 ../../library/Class/Album.php:1584
 #: ../../library/Class/Album.php:1599
 ../../library/Class/Album.php:1599
 #: ../../library/Class/Album.php:1594 ../../library/Class/Album.php:1601
-#: ../../library/Class/Album.php:1595
+#: ../../library/Class/Album.php:1595 ../../library/Class/Album.php:1598
 msgid "Domaine public"
 msgstr ""
 
@@ -7667,6 +7713,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:64
 #: ../../application/modules/admin/controllers/NewsletterController.php:80
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:164
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:171
 msgid "Duplication impossible: Erreur lors de l'enregisrement de la copie."
 msgstr ""
 
@@ -7674,6 +7721,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:59
 #: ../../application/modules/admin/controllers/NewsletterController.php:75
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:159
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:166
 msgid "Duplication impossible: la source n'a pas été trouvée."
 msgstr ""
 
@@ -7708,6 +7756,7 @@ msgid "Dupliquer l'article: %s"
 msgstr "Duplicar elemento: %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:59
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:66
 #, fuzzy
 msgid "Dupliquer la lettre d'information"
 msgstr "Newsletter Email?"
@@ -7897,6 +7946,7 @@ msgstr "Dejar de recibir el boletín de noticias:"
 #: ../../application/modules/opac/controllers/AuthController.php:325
 #: ../../application/modules/opac/controllers/AuthController.php:339
 #: ../../application/modules/opac/controllers/AuthController.php:344
+#: ../../application/modules/opac/controllers/AuthController.php:367
 msgid "Désinscription de la lettre d'information: "
 msgstr "Dejar de recibir el boletín de noticias:"
 
@@ -7927,6 +7977,10 @@ msgstr ""
 msgid "Désolé, cette page n'existe pas"
 msgstr "Lo sentimos, esa página no existe"
 
+#: ../../application/modules/opac/controllers/AuthController.php:146
+msgid "Désolé, requête incomplète"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/RenderSessions.php:68
 #: ../../library/ZendAfi/View/Helper/Redmine/IssueJournal.php:50
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:204
@@ -8143,6 +8197,7 @@ msgid "Effectif maximum atteint"
 msgstr "Máximo afectados"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:38
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:40
 msgid "Effectuer un test d'envoi"
 msgstr ""
 
@@ -8251,6 +8306,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:79
 #: ../../application/modules/opac/controllers/BibNumeriqueController.php:289
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:88
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:94
 msgid "Emprunter le livre au format EPUB"
 msgstr ""
 
@@ -8528,6 +8584,7 @@ msgstr "Enviar"
 #: ../../application/modules/admin/views/scripts/newsletter/index.phtml:22
 #: ../../application/modules/admin/controllers/NewsletterController.php:52
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:47
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:51
 msgid "Envoyer la lettre d'information ?"
 msgstr "Newsletter Email?"
 
@@ -8565,6 +8622,11 @@ msgstr ""
 msgid "Envoyer à cette adresse"
 msgstr ""
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#, fuzzy
+msgid "Envoyez la lettre d'information"
+msgstr "Newsletter Email?"
+
 #: ../../library/ZendAfi/View/Helper/ReponseFormulaireFilled.php:28
 msgid "Envoyé le"
 msgstr "Publicado"
@@ -8693,6 +8755,7 @@ msgstr "Error al crear miniatura %s"
 #: ../../application/modules/opac/controllers/AuthController.php:358
 #: ../../application/modules/opac/controllers/AuthController.php:372
 #: ../../application/modules/opac/controllers/AuthController.php:377
+#: ../../application/modules/opac/controllers/AuthController.php:400
 msgid "Erreur lors de l\\inscription à la newsletter."
 msgstr "Error al \\ boletín de suscripción."
 
@@ -8728,6 +8791,11 @@ msgstr ""
 msgid "Erreur: "
 msgstr "Error:"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:43
+#, fuzzy
+msgid "Erreurs"
+msgstr "Error"
+
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:58
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:49
 msgid "Et "
@@ -8814,6 +8882,7 @@ msgid "Etes-vous sûr de vouloir supprimer cette annexe ?"
 msgstr "¿Seguro que quieres borrar este carro?"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:697
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:706
 #, fuzzy
 msgid "Etes-vous sûr de vouloir supprimer cette catégorie ?"
 msgstr "¿Seguro que quieres eliminar esta categoría?"
@@ -9704,6 +9773,7 @@ msgstr "Grupo de usuarios"
 
 #: ../../library/Class/Newsletter.php:482
 #: ../../library/Class/Newsletter.php:493
+#: ../../library/Class/Newsletter.php:500
 #, php-format
 msgid "Groupe manuel pour la lettre \"%s\""
 msgstr ""
@@ -9737,6 +9807,8 @@ msgstr "Grupos"
 #: ../../application/modules/admin/controllers/NewsletterController.php:236
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:90
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:109
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:97
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:116
 #, fuzzy
 msgid "Groupes destinataires"
 msgstr "Destinatario"
@@ -10776,6 +10848,7 @@ msgstr "Registro"
 #: ../../application/modules/opac/controllers/AuthController.php:269
 #: ../../application/modules/opac/controllers/AuthController.php:283
 #: ../../application/modules/opac/controllers/AuthController.php:288
+#: ../../application/modules/opac/controllers/AuthController.php:311
 msgid "Inscription à la lettre d'information: "
 msgstr "Suscríbete al boletín:"
 
@@ -10786,6 +10859,7 @@ msgstr "Suscríbete al boletín:"
 #: ../../application/modules/opac/controllers/AuthController.php:351
 #: ../../application/modules/opac/controllers/AuthController.php:365
 #: ../../application/modules/opac/controllers/AuthController.php:370
+#: ../../application/modules/opac/controllers/AuthController.php:393
 msgid "Inscription à la newsletter invalide."
 msgstr "Suscríbete a nuestro boletín deshabilitado."
 
@@ -10958,6 +11032,15 @@ msgstr ""
 msgid "Je ne veux plus recevoir cette lettre d'information"
 msgstr ""
 
+#: ../../application/modules/api/controllers/UserController.php:36
+#, fuzzy
+msgid "Jeton d'autorisation invalide"
+msgstr "El código anti-spam no es válido."
+
+#: ../../application/modules/api/controllers/UserController.php:33
+msgid "Jeton d'autorisation non fourni"
+msgstr ""
+
 #: ../../library/Class/Ouverture.php:54
 ../../library/Class/Ouverture.php:54
 msgid "Jeudi"
 msgstr ""
@@ -11083,6 +11166,10 @@ msgstr "La dirección de correo electrónico no es válida o ya en uso."
 msgid "L'album \"%s\" a été créé"
 msgstr "El álbum \"%s\" se ha creado"
 
+#: ../../library/Class/Album.php:1133
+msgid "L'album doit avoir un type de document"
+msgstr ""
+
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Annexe.php:32
 #, fuzzy, php-format
 msgid "L'annexe \"%s\" a été ajoutée"
@@ -11098,6 +11185,11 @@ msgstr "La sesión \"%s\" se ha guardado"
 msgid "L'annexe \"%s\" a été suppriméee"
 msgstr "El sitio \"%s\" se ha eliminado"
 
+#: ../../library/Class/Album.php:1126
+#, fuzzy, php-format
+msgid "L'année doit être comprise entre %s et %s"
+msgstr "El comentario debe tener una longitud entre %s y %s caracteres"
+
 #: ../../application/modules/admin/controllers/CmsController.php:36
 #: ../../application/modules/admin/controllers/CmsController.php:34
 #: ../../application/modules/admin/controllers/CmsController.php:33
@@ -11922,6 +12014,7 @@ msgid "Le fichier dépasse la taille limite (upload_max_filesize de php.ini)"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:200
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:202
 #, php-format
 msgid "Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo"
 msgstr ""
@@ -12150,6 +12243,11 @@ msgstr ""
 msgid "Le territoire contient %s notices"
 msgstr "El territorio contiene referencias %s"
 
+#: ../../library/Class/Album.php:1131
+#, fuzzy
+msgid "Le titre est obligatoire"
+msgstr "el idioma es obligatorio."
+
 #: ../../application/modules/telephone/views/scripts/recherche/avis.phtml:14
 msgid "Lecteurs du portail"
 msgstr "Lectores Portal"
@@ -13207,6 +13305,11 @@ msgstr ""
 msgid "Liste des tags à ajouter au rapport d'état du système"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:64
+#, fuzzy, php-format
+msgid "Lister les intégrations du %s"
+msgstr "Editar cesta de la compra información"
+
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:195
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:198
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:226
@@ -14207,6 +14310,7 @@ msgid "Modifier la biographie"
 msgstr "Edite la biografía"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:683
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:692
 #, fuzzy
 msgid "Modifier la catégorie"
 msgstr "Edite la biografía"
@@ -14238,6 +14342,7 @@ msgid "Modifier la formation: %s"
 msgstr "Modificar la formación: %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:28
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:30
 #, fuzzy
 msgid "Modifier la newsletter"
 msgstr "Editar miniaturas"
@@ -14416,6 +14521,7 @@ msgid "Modifier les informations du panier %s"
 msgstr "Editar cesta de la compra información"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:35
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:37
 #, fuzzy
 msgid "Modifier les inscrits"
 msgstr "Editar contenido"
@@ -14832,6 +14938,7 @@ msgstr ""
 #: ../../application/modules/telephone/controllers/AuthController.php:81
 #: ../../application/modules/telephone/controllers/AuthController.php:75
 #: ../../application/modules/telephone/controllers/AuthController.php:89
+#: ../../application/modules/telephone/controllers/AuthController.php:95
 msgid "Mot de passe ou date de naissance"
 msgstr "Contraseña o fecha de nacimiento"
 
@@ -15804,6 +15911,11 @@ msgstr "Registros vinculados"
 msgid "Notices similaires"
 msgstr "Registros similares"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:40
+#, fuzzy
+msgid "Notices traitées"
+msgstr "Registros vinculados"
+
 #: ../../application/modules/opac/views/scripts/help/cookies.phtml:9
 msgid ""
 "Nous utilisons uniquement des cookies visant à faciliter votre navigation. "
@@ -16109,6 +16221,7 @@ msgstr "No de carné"
 #: ../../library/ZendAfi/Form/Register.php:196
 #: ../../library/ZendAfi/Form/Register.php:184
 #: ../../library/ZendAfi/Form/Configuration/AuthRegister.php:77
+#: ../../application/modules/telephone/controllers/AuthController.php:94
 msgid "N° de carte"
 msgstr "No de carné"
 
@@ -17318,6 +17431,7 @@ msgstr "Playlist"
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:108
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:111
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:123
 msgid "Plein écran"
 msgstr "Pantalla completa"
 
@@ -17881,6 +17995,10 @@ msgstr ""
 msgid "Propulsé par"
 msgstr "Publicado por"
 
+#: ../../application/modules/api/controllers/UserController.php:26
+msgid "Protocole HTTP obligatoire"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Album.php:154
 #: ../../library/ZendAfi/Form/Album.php:169
 #: ../../library/ZendAfi/Form/Album.php:166
@@ -17925,6 +18043,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:500
 #: ../../application/modules/opac/controllers/AuthController.php:505
+#: ../../application/modules/opac/controllers/AuthController.php:528
 #, fuzzy
 msgid "Préinscription"
 msgstr "Registro"
@@ -17932,6 +18051,7 @@ msgstr "Registro"
 #: ../../application/modules/opac/controllers/AuthController.php:460
 #: ../../application/modules/opac/controllers/AuthController.php:474
 #: ../../application/modules/opac/controllers/AuthController.php:479
+#: ../../application/modules/opac/controllers/AuthController.php:502
 #, fuzzy, php-format
 msgid "Préinscription à %s"
 msgstr "Registro"
@@ -18278,6 +18398,11 @@ msgstr "Guarde el carro en áreas"
 msgid "Ranger le panier dans des domaines."
 msgstr "Guarde el carro en áreas"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:34
+#, fuzzy
+msgid "Rapport"
+msgstr "Relaciones"
+
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:29
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:27
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Report.php:26
@@ -18708,6 +18833,16 @@ msgstr ""
 msgid "Replier"
 msgstr "Doble hacia arriba"
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:50
+#, fuzzy, php-format
+msgid "Reprendre l'envoi de la lettre d'information: %s ? "
+msgstr "Newsletter Email?"
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:61
+#, fuzzy
+msgid "Reprendre l'envoi en cours"
+msgstr "en curso"
+
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:29
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:48
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:210
@@ -19582,6 +19717,7 @@ msgstr "Ahorro"
 #: ../../application/modules/telephone/controllers/AuthController.php:104
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:35
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:41
+#: ../../application/modules/telephone/controllers/AuthController.php:110
 msgid "Se connecter"
 msgstr "Registrarse"
 
@@ -20732,6 +20868,7 @@ msgid "Supprimer la bibliothèque: %s"
 msgstr "Retire Biblioteca: %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:690
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:699
 #, fuzzy
 msgid "Supprimer la catégorie"
 msgstr "Eliminar Categoría"
@@ -20741,6 +20878,7 @@ msgid "Supprimer la formation"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:69
 #, fuzzy
 msgid "Supprimer la lettre d'information"
 msgstr "Newsletter Email?"
@@ -21828,6 +21966,11 @@ msgstr "Traducciones:"
 msgid "Traduire un article: %s"
 msgstr "Duplicar elemento: %s"
 
+#: ../../library/Class/WebService/BibNumerique/AbstractOAI.php:50
+#, php-format
+msgid "Traitement de la page %d (nombre d'enregistrements: %d)"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/Admin/CosmoStatus.php:60
 #: ../../library/Class/Systeme/Report/Cosmogramme.php:50
 #, fuzzy
@@ -22226,6 +22369,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/Notice/Unimarc.php:79
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:101
 #: ../../application/modules/opac/views/scripts/bib-numerique/download-book.phtml:3
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
 #, php-format
 msgid "Télécharger"
 msgstr "Descargar"
@@ -22426,6 +22570,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:472
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:491
+#: ../../application/modules/opac/controllers/AuthController.php:514
 #, fuzzy, php-format
 msgid ""
 "Un email de confirmation de préinscription vous a été envoyé à l'adresse %s ."
@@ -22481,6 +22626,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:279
 #: ../../application/modules/opac/controllers/AuthController.php:293
 #: ../../application/modules/opac/controllers/AuthController.php:298
+#: ../../application/modules/opac/controllers/AuthController.php:321
 msgid ""
 "Un utilisateur a déjà renseigné cet email. Merci de vous identifier avec le "
 "compte qui utilise cet email."
@@ -22500,6 +22646,7 @@ msgstr "Se requiere una etiqueta"
 #: ../../application/modules/opac/controllers/AuthController.php:307
 #: ../../application/modules/opac/controllers/AuthController.php:321
 #: ../../application/modules/opac/controllers/AuthController.php:326
+#: ../../application/modules/opac/controllers/AuthController.php:349
 msgid ""
 "Une demande de confirmation d'inscription vous a été envoyée à l'adresse "
 "mail renseignée."
@@ -22551,6 +22698,7 @@ msgstr "Ignorar el error y continuar"
 #: ../../application/modules/opac/controllers/AuthController.php:303
 #: ../../application/modules/opac/controllers/AuthController.php:317
 #: ../../application/modules/opac/controllers/AuthController.php:322
+#: ../../application/modules/opac/controllers/AuthController.php:345
 msgid ""
 "Une erreur est survenue à l'envoi du mail de confirmation. Veuillez "
 "réessayer. Si le problème persiste, veuillez contacter votre médiathèque."
@@ -22702,6 +22850,11 @@ msgstr ""
 msgid "Utilisateur introuvable"
 msgstr "Usuario no encontrado"
 
+#: ../../application/modules/api/controllers/UserController.php:39
+#, fuzzy
+msgid "Utilisateur non trouvé"
+msgstr "%d usuario"
+
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:57
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:61
 #, fuzzy
@@ -23219,6 +23372,7 @@ msgid "Visualiser"
 msgstr "Visualice"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:31
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:33
 #, fuzzy
 msgid "Visualiser la newsletter"
 msgstr "Confirmar la selección"
@@ -23634,6 +23788,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:240
 #: ../../application/modules/opac/controllers/AuthController.php:221
 #: ../../application/modules/opac/controllers/AuthController.php:235
+#: ../../application/modules/opac/controllers/AuthController.php:263
 msgid "Votre demande d'inscription"
 msgstr "Su solicitud"
 
@@ -23931,6 +24086,7 @@ msgstr "Tienes %de las reservas actuales"
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid "Vous avez bien été abonné à la newsletter: "
 msgstr "Ha sido suscrito a la newsletter:"
 
@@ -24331,6 +24487,15 @@ msgstr ""
 "Debe iniciar sesión en una cuenta con una suscripción válida para poder ver "
 "la película en su totalidad"
 
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:47
+#, fuzzy
+msgid ""
+"Vous devez être inscrit dans une bibliothèque pour accéder à la consultation "
+"en ligne"
+msgstr ""
+"Debe iniciar sesión en una cuenta con una suscripción válida para acceder al "
+"curso en línea"
+
 #: ../../application/modules/opac/views/scripts/abonne/cards.phtml:9
 #, fuzzy
 msgid "Vous n'avez ajouté aucune carte"
@@ -24442,6 +24607,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:37
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:30
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:31
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:42
 msgid "Vous n'avez pas le droit d'accéder à la consultation en ligne."
 msgstr ""
 
@@ -25052,6 +25218,7 @@ msgstr "contiene"
 #: ../../library/Class/Newsletter.php:314
 #: ../../library/Class/Newsletter.php:369
 #: ../../library/Class/Newsletter.php:374
+#: ../../library/Class/Newsletter.php:381
 msgid "copie"
 msgstr ""
 
@@ -25320,6 +25487,7 @@ msgid "envoi en cours"
 msgstr "en curso"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:113
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:114
 #, fuzzy
 msgid "erreur au transfert du fichier"
 msgstr "Error transferir el archivo a userfiles"
@@ -25935,6 +26103,10 @@ msgstr ""
 msgid "nécessite un thème compatible"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:117
+msgid "o,Ko,Mo,Go"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:44
 #: ../../library/Class/Calendar.php:44 ../../library/Class/Calendar.php:45
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:49
@@ -26084,6 +26256,7 @@ msgid "partager sur"
 msgstr "Compartiendo"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:102
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:103
 #, php-format
 msgid "pas de transfert pour : %s"
 msgstr ""
@@ -26164,6 +26337,7 @@ msgid "prénom"
 msgstr "Nombre de pila"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:165
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:167
 #, php-format
 msgid "répertoire inaccessible: %s"
 msgstr ""
@@ -26342,6 +26516,7 @@ msgid "traduction %s"
 msgstr "traducción %s"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:121
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:122
 #, fuzzy, php-format
 msgid "transfert vers %s"
 msgstr "En cestas %s"
@@ -26510,6 +26685,7 @@ msgstr ""
 #: ../../library/Class/WebService/SIGB/Koha/RestfulService.php:96
 #: ../../application/modules/opac/controllers/AuthController.php:449
 #: ../../application/modules/opac/controllers/AuthController.php:454
+#: ../../application/modules/opac/controllers/AuthController.php:477
 msgid "Échec de la préinscription, les informations saisies sont invalides."
 msgstr ""
 
diff --git a/library/translation/fr.mo b/library/translation/fr.mo
index 08b187c0f4f2b61c90bd0f32afe3443eaa653523..e1418fb6d8c24d4d839a34032cede8842af2143b 100644
Binary files a/library/translation/fr.mo and b/library/translation/fr.mo differ
diff --git a/library/translation/fr.po b/library/translation/fr.po
index d5866677b53d0a114e08157c2c4d5f5d5d9d70d9..b0fc88fd485a221f53aae709b9e86aa1b0457d2b 100644
--- a/library/translation/fr.po
+++ b/library/translation/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-24 11:52+0200\n"
+"POT-Creation-Date: 2017-05-09 16:16+0200\n"
 "PO-Revision-Date: 2011-03-16 10:45+0100\n"
 "Last-Translator: Laurent Laffont <llaffont@afi-sa.fr>\n"
 "Language-Team: French\n"
@@ -138,6 +138,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid " avec l'adresse suivante: "
 msgstr ""
 
@@ -632,6 +633,7 @@ msgstr ""
 
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:41
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:43
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:50
 #, php-format
 msgid "%s n'a pas accès à la consultation en ligne."
 msgstr ""
@@ -1266,6 +1268,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:605
 #: ../../library/ZendAfi/View/Helper/Admin/MenuHorizontalAdmin.php:41
 #: ../../library/ZendAfi/View/Helper/Admin/Nav.php:41
+#: ../../library/Class/MoteurRecherche.php:604
 msgid "Accueil"
 msgstr ""
 
@@ -1974,6 +1977,11 @@ msgstr ""
 msgid "Afficher le calendrier"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:111
+#, php-format
+msgid "Afficher le journal technique du %s"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/SearchWidget.php:84
 #: ../../library/ZendAfi/Form/Configuration/Widget/Search.php:73
 msgid "Afficher le lien recherche avancée"
@@ -1998,6 +2006,11 @@ msgstr ""
 msgid "Afficher le profil courant dans la barre de navigation"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:95
+#, php-format
+msgid "Afficher le rapport d'intégration du %s"
+msgstr ""
+
 #: ../../application/modules/opac/views/scripts/portail.phtml:10
 #: ../../application/modules/opac/views/scripts/portail.phtml:7
 msgid "Afficher le site en mode mobile"
@@ -2390,6 +2403,7 @@ msgid "Ajouter un agenda"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:676
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:685
 msgid "Ajouter un album"
 msgstr ""
 
@@ -2576,6 +2590,7 @@ msgstr ""
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/ArticleCategory.php:33
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:541
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:544
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:669
 msgid "Ajouter une catégorie"
 msgstr ""
 
@@ -2644,6 +2659,7 @@ msgstr ""
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Sitotheque.php:169
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:525
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:528
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:678
 msgid "Ajouter une sous-catégorie"
 msgstr ""
 
@@ -2907,6 +2923,10 @@ msgstr ""
 msgid "Année: %s"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:46
+msgid "Anomalies"
+msgstr ""
+
 #: ../../library/Class/Avis.php:88 ../../library/Class/Avis.php:87
 msgid "Anonyme"
 msgstr ""
@@ -2924,6 +2944,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:185
 #: ../../application/modules/admin/controllers/NewsletterController.php:206
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:79
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:86
 #, php-format
 msgid "Aperçu de la lettre : %s"
 msgstr ""
@@ -3380,6 +3401,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:473
 #: ../../library/Class/MoteurRecherche.php:479
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:67
+#: ../../library/Class/MoteurRecherche.php:478
 msgid "Aucun résultat trouvé"
 msgstr ""
 
@@ -3763,9 +3785,19 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:141
 #: ../../application/modules/opac/controllers/AuthController.php:154
 #: ../../application/modules/opac/controllers/AuthController.php:146
+#: ../../application/modules/opac/controllers/AuthController.php:169
 msgid "Authentification"
 msgstr ""
 
+#: ../../application/modules/opac/controllers/AuthController.php:149
+#, php-format
+msgid "Authentifiez-vous pour autoriser \"%s\" à accéder à votre compte"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:29
+msgid "Autorisation non spécifiée"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:154
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:159
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:163
@@ -4990,6 +5022,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:382
 #: ../../application/modules/opac/controllers/AuthController.php:396
 #: ../../application/modules/opac/controllers/AuthController.php:401
+#: ../../application/modules/opac/controllers/AuthController.php:424
 msgid "Cette fonctionnalité n'est pas activée."
 msgstr ""
 
@@ -5905,6 +5938,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:348
 #: ../../application/modules/opac/controllers/AuthController.php:362
 #: ../../application/modules/opac/controllers/AuthController.php:367
+#: ../../application/modules/opac/controllers/AuthController.php:390
 msgid "Confirmation d'inscription à la newsletter: "
 msgstr ""
 
@@ -5985,6 +6019,7 @@ msgstr ""
 #: ../../application/modules/telephone/controllers/AuthController.php:43
 #: ../../application/modules/opac/controllers/AuthController.php:95
 #: ../../application/modules/opac/controllers/AuthController.php:103
+#: ../../application/modules/opac/controllers/AuthController.php:102
 msgid "Connexion"
 msgstr ""
 
@@ -6061,6 +6096,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:55
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:60
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:69
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:75
 msgid "Consulter le livre en ligne (depuis la médiathèque)"
 msgstr ""
 
@@ -6432,6 +6468,7 @@ msgid "Création d'un nouveau panier"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:135
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:137
 #, php-format
 msgid "Création de l'intégration pour %s"
 msgstr ""
@@ -6585,6 +6622,7 @@ msgstr ""
 #: ../../application/modules/opac/views/scripts/abonne/activities.phtml:17
 #: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:13
 #: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:23
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:30
 msgid "Date"
 msgstr ""
 
@@ -6748,6 +6786,10 @@ msgstr ""
 msgid "De B à A"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:37
+msgid "Debug"
+msgstr ""
+
 #: ../../application/modules/admin/controllers/RedmineController.php:157
 #, php-format
 msgid "Demande #%s enregistrée"
@@ -6760,12 +6802,14 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:286
 #: ../../application/modules/opac/controllers/AuthController.php:300
 #: ../../application/modules/opac/controllers/AuthController.php:305
+#: ../../application/modules/opac/controllers/AuthController.php:328
 msgid "Demande d'inscription à la lettre d'information: "
 msgstr ""
 
 #: ../../application/modules/opac/controllers/AuthController.php:380
 #: ../../application/modules/opac/controllers/AuthController.php:394
 #: ../../application/modules/opac/controllers/AuthController.php:399
+#: ../../application/modules/opac/controllers/AuthController.php:422
 msgid "Demande de préinscription"
 msgstr ""
 
@@ -7033,6 +7077,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:84
 #: ../../application/modules/admin/controllers/NewsletterController.php:100
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:184
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:191
 #, php-format
 msgid "Destinataires de la lettre : %s"
 msgstr ""
@@ -7293,6 +7338,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:429
 #: ../../library/Class/MoteurRecherche.php:436
 #: ../../library/Class/MoteurRecherche.php:442
+#: ../../library/Class/MoteurRecherche.php:441
 msgid "Domaine non paramétré"
 msgstr ""
 
@@ -7307,7 +7353,7 @@ msgstr ""
 #: ../../library/Class/Album.php:1581 ../../library/Class/Album.php:1584
 #: ../../library/Class/Album.php:1599
 ../../library/Class/Album.php:1599
 #: ../../library/Class/Album.php:1594 ../../library/Class/Album.php:1601
-#: ../../library/Class/Album.php:1595
+#: ../../library/Class/Album.php:1595 ../../library/Class/Album.php:1598
 msgid "Domaine public"
 msgstr ""
 
@@ -7456,6 +7502,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:64
 #: ../../application/modules/admin/controllers/NewsletterController.php:80
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:164
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:171
 msgid "Duplication impossible: Erreur lors de l'enregisrement de la copie."
 msgstr ""
 
@@ -7463,6 +7510,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:59
 #: ../../application/modules/admin/controllers/NewsletterController.php:75
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:159
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:166
 msgid "Duplication impossible: la source n'a pas été trouvée."
 msgstr ""
 
@@ -7497,6 +7545,7 @@ msgid "Dupliquer l'article: %s"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:59
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:66
 msgid "Dupliquer la lettre d'information"
 msgstr ""
 
@@ -7684,6 +7733,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:325
 #: ../../application/modules/opac/controllers/AuthController.php:339
 #: ../../application/modules/opac/controllers/AuthController.php:344
+#: ../../application/modules/opac/controllers/AuthController.php:367
 msgid "Désinscription de la lettre d'information: "
 msgstr ""
 
@@ -7713,6 +7763,10 @@ msgstr ""
 msgid "Désolé, cette page n'existe pas"
 msgstr ""
 
+#: ../../application/modules/opac/controllers/AuthController.php:146
+msgid "Désolé, requête incomplète"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/RenderSessions.php:68
 #: ../../library/ZendAfi/View/Helper/Redmine/IssueJournal.php:50
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:204
@@ -7926,6 +7980,7 @@ msgid "Effectif maximum atteint"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:38
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:40
 msgid "Effectuer un test d'envoi"
 msgstr ""
 
@@ -8034,6 +8089,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:79
 #: ../../application/modules/opac/controllers/BibNumeriqueController.php:289
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:88
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:94
 msgid "Emprunter le livre au format EPUB"
 msgstr ""
 
@@ -8304,6 +8360,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/newsletter/index.phtml:22
 #: ../../application/modules/admin/controllers/NewsletterController.php:52
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:47
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:51
 msgid "Envoyer la lettre d'information ?"
 msgstr ""
 
@@ -8340,6 +8397,10 @@ msgstr ""
 msgid "Envoyer à cette adresse"
 msgstr ""
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+msgid "Envoyez la lettre d'information"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/ReponseFormulaireFilled.php:28
 msgid "Envoyé le"
 msgstr ""
@@ -8464,6 +8525,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:358
 #: ../../application/modules/opac/controllers/AuthController.php:372
 #: ../../application/modules/opac/controllers/AuthController.php:377
+#: ../../application/modules/opac/controllers/AuthController.php:400
 msgid "Erreur lors de l\\inscription à la newsletter."
 msgstr ""
 
@@ -8499,6 +8561,10 @@ msgstr ""
 msgid "Erreur: "
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:43
+msgid "Erreurs"
+msgstr ""
+
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:58
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:49
 msgid "Et "
@@ -8581,6 +8647,7 @@ msgid "Etes-vous sûr de vouloir supprimer cette annexe ?"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:697
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:706
 msgid "Etes-vous sûr de vouloir supprimer cette catégorie ?"
 msgstr ""
 
@@ -9444,6 +9511,7 @@ msgstr ""
 
 #: ../../library/Class/Newsletter.php:482
 #: ../../library/Class/Newsletter.php:493
+#: ../../library/Class/Newsletter.php:500
 #, php-format
 msgid "Groupe manuel pour la lettre \"%s\""
 msgstr ""
@@ -9477,6 +9545,8 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:236
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:90
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:109
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:97
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:116
 msgid "Groupes destinataires"
 msgstr ""
 
@@ -10495,6 +10565,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:269
 #: ../../application/modules/opac/controllers/AuthController.php:283
 #: ../../application/modules/opac/controllers/AuthController.php:288
+#: ../../application/modules/opac/controllers/AuthController.php:311
 msgid "Inscription à la lettre d'information: "
 msgstr ""
 
@@ -10505,6 +10576,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:351
 #: ../../application/modules/opac/controllers/AuthController.php:365
 #: ../../application/modules/opac/controllers/AuthController.php:370
+#: ../../application/modules/opac/controllers/AuthController.php:393
 msgid "Inscription à la newsletter invalide."
 msgstr ""
 
@@ -10672,6 +10744,14 @@ msgstr ""
 msgid "Je ne veux plus recevoir cette lettre d'information"
 msgstr ""
 
+#: ../../application/modules/api/controllers/UserController.php:36
+msgid "Jeton d'autorisation invalide"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:33
+msgid "Jeton d'autorisation non fourni"
+msgstr ""
+
 #: ../../library/Class/Ouverture.php:54
 ../../library/Class/Ouverture.php:54
 msgid "Jeudi"
 msgstr ""
@@ -10791,6 +10871,10 @@ msgstr ""
 msgid "L'album \"%s\" a été créé"
 msgstr ""
 
+#: ../../library/Class/Album.php:1133
+msgid "L'album doit avoir un type de document"
+msgstr ""
+
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Annexe.php:32
 #, php-format
 msgid "L'annexe \"%s\" a été ajoutée"
@@ -10806,6 +10890,11 @@ msgstr ""
 msgid "L'annexe \"%s\" a été suppriméee"
 msgstr ""
 
+#: ../../library/Class/Album.php:1126
+#, php-format
+msgid "L'année doit être comprise entre %s et %s"
+msgstr ""
+
 #: ../../application/modules/admin/controllers/CmsController.php:36
 #: ../../application/modules/admin/controllers/CmsController.php:34
 #: ../../application/modules/admin/controllers/CmsController.php:33
@@ -11622,6 +11711,7 @@ msgid "Le fichier dépasse la taille limite (upload_max_filesize de php.ini)"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:200
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:202
 #, php-format
 msgid "Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo"
 msgstr ""
@@ -11846,6 +11936,10 @@ msgstr ""
 msgid "Le territoire contient %s notices"
 msgstr ""
 
+#: ../../library/Class/Album.php:1131
+msgid "Le titre est obligatoire"
+msgstr ""
+
 #: ../../application/modules/telephone/views/scripts/recherche/avis.phtml:14
 msgid "Lecteurs du portail"
 msgstr ""
@@ -12851,6 +12945,11 @@ msgstr ""
 msgid "Liste des tags à ajouter au rapport d'état du système"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:64
+#, php-format
+msgid "Lister les intégrations du %s"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:195
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:198
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:226
@@ -13809,6 +13908,7 @@ msgid "Modifier la biographie"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:683
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:692
 msgid "Modifier la catégorie"
 msgstr ""
 
@@ -13839,6 +13939,7 @@ msgid "Modifier la formation: %s"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:28
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:30
 msgid "Modifier la newsletter"
 msgstr ""
 
@@ -14013,6 +14114,7 @@ msgid "Modifier les informations du panier %s"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:35
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:37
 msgid "Modifier les inscrits"
 msgstr ""
 
@@ -14421,6 +14523,7 @@ msgstr ""
 #: ../../application/modules/telephone/controllers/AuthController.php:81
 #: ../../application/modules/telephone/controllers/AuthController.php:75
 #: ../../application/modules/telephone/controllers/AuthController.php:89
+#: ../../application/modules/telephone/controllers/AuthController.php:95
 msgid "Mot de passe ou date de naissance"
 msgstr ""
 
@@ -15364,6 +15467,10 @@ msgstr ""
 msgid "Notices similaires"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:40
+msgid "Notices traitées"
+msgstr ""
+
 #: ../../application/modules/opac/views/scripts/help/cookies.phtml:9
 msgid ""
 "Nous utilisons uniquement des cookies visant à faciliter votre navigation. "
@@ -15660,6 +15767,7 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Register.php:196
 #: ../../library/ZendAfi/Form/Register.php:184
 #: ../../library/ZendAfi/Form/Configuration/AuthRegister.php:77
+#: ../../application/modules/telephone/controllers/AuthController.php:94
 msgid "N° de carte"
 msgstr ""
 
@@ -16837,6 +16945,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:108
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:111
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:123
 msgid "Plein écran"
 msgstr ""
 
@@ -17383,6 +17492,10 @@ msgstr ""
 msgid "Propulsé par"
 msgstr ""
 
+#: ../../application/modules/api/controllers/UserController.php:26
+msgid "Protocole HTTP obligatoire"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Album.php:154
 #: ../../library/ZendAfi/Form/Album.php:169
 #: ../../library/ZendAfi/Form/Album.php:166
@@ -17423,12 +17536,14 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:500
 #: ../../application/modules/opac/controllers/AuthController.php:505
+#: ../../application/modules/opac/controllers/AuthController.php:528
 msgid "Préinscription"
 msgstr ""
 
 #: ../../application/modules/opac/controllers/AuthController.php:460
 #: ../../application/modules/opac/controllers/AuthController.php:474
 #: ../../application/modules/opac/controllers/AuthController.php:479
+#: ../../application/modules/opac/controllers/AuthController.php:502
 #, php-format
 msgid "Préinscription à %s"
 msgstr ""
@@ -17768,6 +17883,10 @@ msgstr ""
 msgid "Ranger le panier dans des domaines."
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:34
+msgid "Rapport"
+msgstr ""
+
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:29
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:27
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Report.php:26
@@ -18191,6 +18310,15 @@ msgstr ""
 msgid "Replier"
 msgstr ""
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:50
+#, php-format
+msgid "Reprendre l'envoi de la lettre d'information: %s ? "
+msgstr ""
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:61
+msgid "Reprendre l'envoi en cours"
+msgstr ""
+
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:29
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:48
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:210
@@ -19054,6 +19182,7 @@ msgstr ""
 #: ../../application/modules/telephone/controllers/AuthController.php:104
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:35
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:41
+#: ../../application/modules/telephone/controllers/AuthController.php:110
 msgid "Se connecter"
 msgstr ""
 
@@ -20183,6 +20312,7 @@ msgid "Supprimer la bibliothèque: %s"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:690
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:699
 msgid "Supprimer la catégorie"
 msgstr ""
 
@@ -20191,6 +20321,7 @@ msgid "Supprimer la formation"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:69
 msgid "Supprimer la lettre d'information"
 msgstr ""
 
@@ -21250,6 +21381,11 @@ msgstr ""
 msgid "Traduire un article: %s"
 msgstr ""
 
+#: ../../library/Class/WebService/BibNumerique/AbstractOAI.php:50
+#, php-format
+msgid "Traitement de la page %d (nombre d'enregistrements: %d)"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/Admin/CosmoStatus.php:60
 #: ../../library/Class/Systeme/Report/Cosmogramme.php:50
 msgid "Traitement en cours depuis le"
@@ -21636,6 +21772,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/Notice/Unimarc.php:79
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:101
 #: ../../application/modules/opac/views/scripts/bib-numerique/download-book.phtml:3
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
 #, php-format
 msgid "Télécharger"
 msgstr ""
@@ -21834,6 +21971,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:472
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:491
+#: ../../application/modules/opac/controllers/AuthController.php:514
 #, php-format
 msgid ""
 "Un email de confirmation de préinscription vous a été envoyé à l'adresse %s ."
@@ -21885,6 +22023,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:279
 #: ../../application/modules/opac/controllers/AuthController.php:293
 #: ../../application/modules/opac/controllers/AuthController.php:298
+#: ../../application/modules/opac/controllers/AuthController.php:321
 msgid ""
 "Un utilisateur a déjà renseigné cet email. Merci de vous identifier avec le "
 "compte qui utilise cet email."
@@ -21901,6 +22040,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:307
 #: ../../application/modules/opac/controllers/AuthController.php:321
 #: ../../application/modules/opac/controllers/AuthController.php:326
+#: ../../application/modules/opac/controllers/AuthController.php:349
 msgid ""
 "Une demande de confirmation d'inscription vous a été envoyée à l'adresse "
 "mail renseignée."
@@ -21945,6 +22085,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:303
 #: ../../application/modules/opac/controllers/AuthController.php:317
 #: ../../application/modules/opac/controllers/AuthController.php:322
+#: ../../application/modules/opac/controllers/AuthController.php:345
 msgid ""
 "Une erreur est survenue à l'envoi du mail de confirmation. Veuillez "
 "réessayer. Si le problème persiste, veuillez contacter votre médiathèque."
@@ -22090,6 +22231,11 @@ msgstr ""
 msgid "Utilisateur introuvable"
 msgstr ""
 
+#: ../../application/modules/api/controllers/UserController.php:39
+#, fuzzy
+msgid "Utilisateur non trouvé"
+msgstr "Limite du nombre de réservations atteinte"
+
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:57
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:61
 msgid "Utilisateur sans mail"
@@ -22594,6 +22740,7 @@ msgid "Visualiser"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:31
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:33
 msgid "Visualiser la newsletter"
 msgstr ""
 
@@ -22988,6 +23135,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:240
 #: ../../application/modules/opac/controllers/AuthController.php:221
 #: ../../application/modules/opac/controllers/AuthController.php:235
+#: ../../application/modules/opac/controllers/AuthController.php:263
 msgid "Votre demande d'inscription"
 msgstr ""
 
@@ -23282,6 +23430,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid "Vous avez bien été abonné à la newsletter: "
 msgstr ""
 
@@ -23662,6 +23811,12 @@ msgid ""
 "visionner le film dans son intégralité"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:47
+msgid ""
+"Vous devez être inscrit dans une bibliothèque pour accéder à la consultation "
+"en ligne"
+msgstr ""
+
 #: ../../application/modules/opac/views/scripts/abonne/cards.phtml:9
 msgid "Vous n'avez ajouté aucune carte"
 msgstr ""
@@ -23771,6 +23926,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:37
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:30
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:31
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:42
 msgid "Vous n'avez pas le droit d'accéder à la consultation en ligne."
 msgstr ""
 
@@ -24358,6 +24514,7 @@ msgstr ""
 #: ../../library/Class/Newsletter.php:314
 #: ../../library/Class/Newsletter.php:369
 #: ../../library/Class/Newsletter.php:374
+#: ../../library/Class/Newsletter.php:381
 msgid "copie"
 msgstr ""
 
@@ -24605,6 +24762,7 @@ msgid "envoi en cours"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:113
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:114
 msgid "erreur au transfert du fichier"
 msgstr ""
 
@@ -25202,6 +25360,10 @@ msgstr ""
 msgid "nécessite un thème compatible"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:117
+msgid "o,Ko,Mo,Go"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:44
 #: ../../library/Class/Calendar.php:44 ../../library/Class/Calendar.php:45
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:49
@@ -25349,6 +25511,7 @@ msgid "partager sur"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:102
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:103
 #, php-format
 msgid "pas de transfert pour : %s"
 msgstr ""
@@ -25425,6 +25588,7 @@ msgid "prénom"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:165
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:167
 #, php-format
 msgid "répertoire inaccessible: %s"
 msgstr ""
@@ -25596,6 +25760,7 @@ msgid "traduction %s"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:121
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:122
 #, php-format
 msgid "transfert vers %s"
 msgstr ""
@@ -25758,6 +25923,7 @@ msgstr ""
 #: ../../library/Class/WebService/SIGB/Koha/RestfulService.php:96
 #: ../../application/modules/opac/controllers/AuthController.php:449
 #: ../../application/modules/opac/controllers/AuthController.php:454
+#: ../../application/modules/opac/controllers/AuthController.php:477
 msgid "Échec de la préinscription, les informations saisies sont invalides."
 msgstr ""
 
diff --git a/library/translation/fr.pot b/library/translation/fr.pot
index 568288b1d7415227d7c7c999a247238acf934c3f..f60209340f2e61d406d91f5c17e52cae01b54de8 100644
--- a/library/translation/fr.pot
+++ b/library/translation/fr.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-24 11:52+0200\n"
+"POT-Creation-Date: 2017-05-09 16:16+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -53,6 +53,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:605
 #: ../../library/ZendAfi/View/Helper/Admin/MenuHorizontalAdmin.php:41
 #: ../../library/ZendAfi/View/Helper/Admin/Nav.php:41
+#: ../../library/Class/MoteurRecherche.php:604
 msgid "Accueil"
 msgstr ""
 
@@ -81,6 +82,7 @@ msgstr ""
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/ArticleCategory.php:33
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:541
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:544
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:669
 msgid "Ajouter une catégorie"
 msgstr ""
 
@@ -2331,6 +2333,7 @@ msgstr ""
 #: ../../application/modules/telephone/controllers/AuthController.php:104
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:35
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:41
+#: ../../application/modules/telephone/controllers/AuthController.php:110
 msgid "Se connecter"
 msgstr ""
 
@@ -3157,6 +3160,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:240
 #: ../../application/modules/opac/controllers/AuthController.php:221
 #: ../../application/modules/opac/controllers/AuthController.php:235
+#: ../../application/modules/opac/controllers/AuthController.php:263
 msgid "Votre demande d'inscription"
 msgstr ""
 
@@ -7599,6 +7603,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:473
 #: ../../library/Class/MoteurRecherche.php:479
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:67
+#: ../../library/Class/MoteurRecherche.php:478
 msgid "Aucun résultat trouvé"
 msgstr ""
 
@@ -9957,12 +9962,14 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Register.php:196
 #: ../../library/ZendAfi/Form/Register.php:184
 #: ../../library/ZendAfi/Form/Configuration/AuthRegister.php:77
+#: ../../application/modules/telephone/controllers/AuthController.php:94
 msgid "N° de carte"
 msgstr ""
 
 #: ../../application/modules/telephone/controllers/AuthController.php:81
 #: ../../application/modules/telephone/controllers/AuthController.php:75
 #: ../../application/modules/telephone/controllers/AuthController.php:89
+#: ../../application/modules/telephone/controllers/AuthController.php:95
 msgid "Mot de passe ou date de naissance"
 msgstr ""
 
@@ -11035,6 +11042,7 @@ msgstr ""
 #: ../../application/modules/opac/views/scripts/abonne/activities.phtml:17
 #: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:13
 #: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:23
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:30
 msgid "Date"
 msgstr ""
 
@@ -12269,6 +12277,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:141
 #: ../../application/modules/opac/controllers/AuthController.php:154
 #: ../../application/modules/opac/controllers/AuthController.php:146
+#: ../../application/modules/opac/controllers/AuthController.php:169
 msgid "Authentification"
 msgstr ""
 
@@ -13127,6 +13136,7 @@ msgstr ""
 #: ../../application/modules/telephone/controllers/AuthController.php:43
 #: ../../application/modules/opac/controllers/AuthController.php:95
 #: ../../application/modules/opac/controllers/AuthController.php:103
+#: ../../application/modules/opac/controllers/AuthController.php:102
 msgid "Connexion"
 msgstr ""
 
@@ -13851,6 +13861,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/Notice/Unimarc.php:79
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:101
 #: ../../application/modules/opac/views/scripts/bib-numerique/download-book.phtml:3
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
 #, php-format
 msgid "Télécharger"
 msgstr ""
@@ -13859,6 +13870,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:108
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:111
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:123
 msgid "Plein écran"
 msgstr ""
 
@@ -14460,6 +14472,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/newsletter/index.phtml:22
 #: ../../application/modules/admin/controllers/NewsletterController.php:52
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:47
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:51
 msgid "Envoyer la lettre d'information ?"
 msgstr ""
 
@@ -15334,6 +15347,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:269
 #: ../../application/modules/opac/controllers/AuthController.php:283
 #: ../../application/modules/opac/controllers/AuthController.php:288
+#: ../../application/modules/opac/controllers/AuthController.php:311
 msgid "Inscription à la lettre d'information: "
 msgstr ""
 
@@ -15344,6 +15358,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:279
 #: ../../application/modules/opac/controllers/AuthController.php:293
 #: ../../application/modules/opac/controllers/AuthController.php:298
+#: ../../application/modules/opac/controllers/AuthController.php:321
 msgid ""
 "Un utilisateur a déjà renseigné cet email. Merci de vous identifier avec le "
 "compte qui utilise cet email."
@@ -15356,6 +15371,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:286
 #: ../../application/modules/opac/controllers/AuthController.php:300
 #: ../../application/modules/opac/controllers/AuthController.php:305
+#: ../../application/modules/opac/controllers/AuthController.php:328
 msgid "Demande d'inscription à la lettre d'information: "
 msgstr ""
 
@@ -15366,6 +15382,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:303
 #: ../../application/modules/opac/controllers/AuthController.php:317
 #: ../../application/modules/opac/controllers/AuthController.php:322
+#: ../../application/modules/opac/controllers/AuthController.php:345
 msgid ""
 "Une erreur est survenue à l'envoi du mail de confirmation. Veuillez "
 "réessayer. Si le problème persiste, veuillez contacter votre médiathèque."
@@ -15378,6 +15395,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:307
 #: ../../application/modules/opac/controllers/AuthController.php:321
 #: ../../application/modules/opac/controllers/AuthController.php:326
+#: ../../application/modules/opac/controllers/AuthController.php:349
 msgid ""
 "Une demande de confirmation d'inscription vous a été envoyée à l'adresse "
 "mail renseignée."
@@ -15390,6 +15408,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:325
 #: ../../application/modules/opac/controllers/AuthController.php:339
 #: ../../application/modules/opac/controllers/AuthController.php:344
+#: ../../application/modules/opac/controllers/AuthController.php:367
 msgid "Désinscription de la lettre d'information: "
 msgstr ""
 
@@ -15400,6 +15419,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:348
 #: ../../application/modules/opac/controllers/AuthController.php:362
 #: ../../application/modules/opac/controllers/AuthController.php:367
+#: ../../application/modules/opac/controllers/AuthController.php:390
 msgid "Confirmation d'inscription à la newsletter: "
 msgstr ""
 
@@ -15410,6 +15430,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:351
 #: ../../application/modules/opac/controllers/AuthController.php:365
 #: ../../application/modules/opac/controllers/AuthController.php:370
+#: ../../application/modules/opac/controllers/AuthController.php:393
 msgid "Inscription à la newsletter invalide."
 msgstr ""
 
@@ -15420,6 +15441,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid "Vous avez bien été abonné à la newsletter: "
 msgstr ""
 
@@ -15430,6 +15452,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid " avec l'adresse suivante: "
 msgstr ""
 
@@ -15440,6 +15463,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:358
 #: ../../application/modules/opac/controllers/AuthController.php:372
 #: ../../application/modules/opac/controllers/AuthController.php:377
+#: ../../application/modules/opac/controllers/AuthController.php:400
 msgid "Erreur lors de l\\inscription à la newsletter."
 msgstr ""
 
@@ -16481,6 +16505,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:79
 #: ../../application/modules/opac/controllers/BibNumeriqueController.php:289
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:88
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:94
 msgid "Emprunter le livre au format EPUB"
 msgstr ""
 
@@ -16572,6 +16597,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:429
 #: ../../library/Class/MoteurRecherche.php:436
 #: ../../library/Class/MoteurRecherche.php:442
+#: ../../library/Class/MoteurRecherche.php:441
 msgid "Domaine non paramétré"
 msgstr ""
 
@@ -16711,6 +16737,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:59
 #: ../../application/modules/admin/controllers/NewsletterController.php:75
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:159
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:166
 msgid "Duplication impossible: la source n'a pas été trouvée."
 msgstr ""
 
@@ -16718,6 +16745,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:64
 #: ../../application/modules/admin/controllers/NewsletterController.php:80
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:164
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:171
 msgid "Duplication impossible: Erreur lors de l'enregisrement de la copie."
 msgstr ""
 
@@ -18328,6 +18356,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:37
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:30
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:31
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:42
 msgid "Vous n'avez pas le droit d'accéder à la consultation en ligne."
 msgstr ""
 
@@ -18335,6 +18364,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:55
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:60
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:69
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:75
 msgid "Consulter le livre en ligne (depuis la médiathèque)"
 msgstr ""
 
@@ -18612,6 +18642,7 @@ msgstr ""
 #: ../../library/Class/Newsletter.php:314
 #: ../../library/Class/Newsletter.php:369
 #: ../../library/Class/Newsletter.php:374
+#: ../../library/Class/Newsletter.php:381
 msgid "copie"
 msgstr ""
 
@@ -19850,7 +19881,7 @@ msgstr ""
 #: ../../library/Class/Album.php:1581 ../../library/Class/Album.php:1584
 #: ../../library/Class/Album.php:1599
 ../../library/Class/Album.php:1599
 #: ../../library/Class/Album.php:1594 ../../library/Class/Album.php:1601
-#: ../../library/Class/Album.php:1595
+#: ../../library/Class/Album.php:1595 ../../library/Class/Album.php:1598
 msgid "Domaine public"
 msgstr ""
 
@@ -22676,6 +22707,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:84
 #: ../../application/modules/admin/controllers/NewsletterController.php:100
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:184
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:191
 #, php-format
 msgid "Destinataires de la lettre : %s"
 msgstr ""
@@ -22710,6 +22742,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:185
 #: ../../application/modules/admin/controllers/NewsletterController.php:206
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:79
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:86
 #, php-format
 msgid "Aperçu de la lettre : %s"
 msgstr ""
@@ -22720,6 +22753,8 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:236
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:90
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:109
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:97
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:116
 msgid "Groupes destinataires"
 msgstr ""
 
@@ -22733,12 +22768,14 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:380
 #: ../../application/modules/opac/controllers/AuthController.php:394
 #: ../../application/modules/opac/controllers/AuthController.php:399
+#: ../../application/modules/opac/controllers/AuthController.php:422
 msgid "Demande de préinscription"
 msgstr ""
 
 #: ../../application/modules/opac/controllers/AuthController.php:382
 #: ../../application/modules/opac/controllers/AuthController.php:396
 #: ../../application/modules/opac/controllers/AuthController.php:401
+#: ../../application/modules/opac/controllers/AuthController.php:424
 msgid "Cette fonctionnalité n'est pas activée."
 msgstr ""
 
@@ -22746,12 +22783,14 @@ msgstr ""
 #: ../../library/Class/WebService/SIGB/Koha/RestfulService.php:96
 #: ../../application/modules/opac/controllers/AuthController.php:449
 #: ../../application/modules/opac/controllers/AuthController.php:454
+#: ../../application/modules/opac/controllers/AuthController.php:477
 msgid "Échec de la préinscription, les informations saisies sont invalides."
 msgstr ""
 
 #: ../../application/modules/opac/controllers/AuthController.php:460
 #: ../../application/modules/opac/controllers/AuthController.php:474
 #: ../../application/modules/opac/controllers/AuthController.php:479
+#: ../../application/modules/opac/controllers/AuthController.php:502
 #, php-format
 msgid "Préinscription à %s"
 msgstr ""
@@ -22759,6 +22798,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:472
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:491
+#: ../../application/modules/opac/controllers/AuthController.php:514
 #, php-format
 msgid ""
 "Un email de confirmation de préinscription vous a été envoyé à l'adresse %s ."
@@ -22767,6 +22807,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:500
 #: ../../application/modules/opac/controllers/AuthController.php:505
+#: ../../application/modules/opac/controllers/AuthController.php:528
 msgid "Préinscription"
 msgstr ""
 
@@ -22797,6 +22838,7 @@ msgstr ""
 
 #: ../../library/Class/Newsletter.php:482
 #: ../../library/Class/Newsletter.php:493
+#: ../../library/Class/Newsletter.php:500
 #, php-format
 msgid "Groupe manuel pour la lettre \"%s\""
 msgstr ""
@@ -23099,6 +23141,7 @@ msgstr ""
 
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:41
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:43
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:50
 #, php-format
 msgid "%s n'a pas accès à la consultation en ligne."
 msgstr ""
@@ -24109,22 +24152,27 @@ msgstr ""
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Sitotheque.php:169
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:525
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:528
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:678
 msgid "Ajouter une sous-catégorie"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:676
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:685
 msgid "Ajouter un album"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:683
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:692
 msgid "Modifier la catégorie"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:690
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:699
 msgid "Supprimer la catégorie"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:697
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:706
 msgid "Etes-vous sûr de vouloir supprimer cette catégorie ?"
 msgstr ""
 
@@ -24156,26 +24204,32 @@ msgid "Rendre cet article visible"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:28
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:30
 msgid "Modifier la newsletter"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:31
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:33
 msgid "Visualiser la newsletter"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:35
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:37
 msgid "Modifier les inscrits"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:38
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:40
 msgid "Effectuer un test d'envoi"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:59
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:66
 msgid "Dupliquer la lettre d'information"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:69
 msgid "Supprimer la lettre d'information"
 msgstr ""
 
@@ -24348,30 +24402,36 @@ msgid "Erreur : %s"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:102
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:103
 #, php-format
 msgid "pas de transfert pour : %s"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:113
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:114
 msgid "erreur au transfert du fichier"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:121
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:122
 #, php-format
 msgid "transfert vers %s"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:135
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:137
 #, php-format
 msgid "Création de l'intégration pour %s"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:165
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:167
 #, php-format
 msgid "répertoire inaccessible: %s"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:200
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:202
 #, php-format
 msgid "Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo"
 msgstr ""
@@ -25864,3 +25924,108 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagSessionActivityInscription.php:42
 msgid "Activité suivie"
 msgstr ""
+
+#: ../../application/modules/opac/controllers/AuthController.php:146
+msgid "Désolé, requête incomplète"
+msgstr ""
+
+#: ../../application/modules/opac/controllers/AuthController.php:149
+#, php-format
+msgid "Authentifiez-vous pour autoriser \"%s\" à accéder à votre compte"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:26
+msgid "Protocole HTTP obligatoire"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:29
+msgid "Autorisation non spécifiée"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:33
+msgid "Jeton d'autorisation non fourni"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:36
+msgid "Jeton d'autorisation invalide"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:39
+msgid "Utilisateur non trouvé"
+msgstr ""
+
+#: ../../library/Class/WebService/BibNumerique/AbstractOAI.php:50
+#, php-format
+msgid "Traitement de la page %d (nombre d'enregistrements: %d)"
+msgstr ""
+
+#: ../../library/Class/Album.php:1126
+#, php-format
+msgid "L'année doit être comprise entre %s et %s"
+msgstr ""
+
+#: ../../library/Class/Album.php:1131
+msgid "Le titre est obligatoire"
+msgstr ""
+
+#: ../../library/Class/Album.php:1133
+msgid "L'album doit avoir un type de document"
+msgstr ""
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:50
+#, php-format
+msgid "Reprendre l'envoi de la lettre d'information: %s ? "
+msgstr ""
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:61
+msgid "Reprendre l'envoi en cours"
+msgstr ""
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+msgid "Envoyez la lettre d'information"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:47
+msgid ""
+"Vous devez être inscrit dans une bibliothèque pour accéder à la consultation "
+"en ligne"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:34
+msgid "Rapport"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:37
+msgid "Debug"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:40
+msgid "Notices traitées"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:43
+msgid "Erreurs"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:46
+msgid "Anomalies"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:64
+#, php-format
+msgid "Lister les intégrations du %s"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:95
+#, php-format
+msgid "Afficher le rapport d'intégration du %s"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:111
+#, php-format
+msgid "Afficher le journal technique du %s"
+msgstr ""
+
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:117
+msgid "o,Ko,Mo,Go"
+msgstr ""
diff --git a/library/translation/ro.mo b/library/translation/ro.mo
index 9383138805c637674ea94484abfac67de04a6001..5ca76cbf9b192745aa2dadfff77ce0c6c7686c23 100644
Binary files a/library/translation/ro.mo and b/library/translation/ro.mo differ
diff --git a/library/translation/ro.po b/library/translation/ro.po
index 2343f5499fa60ceee5aff2e1c321ddc39f8b8bea..048d61f47bf4c3e543f41ac3777661756dcf8bf3 100644
--- a/library/translation/ro.po
+++ b/library/translation/ro.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-10 16:08+0200\n"
+"POT-Creation-Date: 2017-05-09 16:16+0200\n"
 "PO-Revision-Date: 2011-07-14 18:15+0200\n"
 "Last-Translator: Lupu Mariana <lupumariana@yahoo.com>\n"
 "Language-Team: Romanian\n"
@@ -57,6 +57,7 @@ msgstr "Nu a fost găsit nici un document"
 #: ../../application/modules/admin/controllers/SitoController.php:61
 #: ../../application/modules/admin/controllers/UsergroupController.php:36
 #: ../../application/modules/admin/controllers/CmsController.php:108
+#: ../../application/modules/admin/controllers/CmsController.php:111
 msgid " Ajouter une catégorie"
 msgstr "Adaugă o categorie"
 
@@ -84,6 +85,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/CmsController.php:126
 #: ../../application/modules/admin/controllers/CmsController.php:120
 #: ../../application/modules/admin/controllers/CmsController.php:121
+#: ../../application/modules/admin/controllers/CmsController.php:124
 msgid " Permissions par défaut"
 msgstr ""
 
@@ -141,6 +143,7 @@ msgstr "la buletinele informative:"
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid " avec l'adresse suivante: "
 msgstr ""
 
@@ -638,6 +641,8 @@ msgid "%s mis à %s"
 msgstr "între %s şi %s"
 
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:41
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:43
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:50
 #, fuzzy, php-format
 msgid "%s n'a pas accès à la consultation en ligne."
 msgstr "Trebuie să vă conectaţi pentru a rezerva un document."
@@ -1141,12 +1146,14 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:308
 ../../library/Class/AdminVar.php:308
 #: ../../library/Class/AdminVar.php:212 ../../library/Class/AdminVar.php:213
 #: ../../library/Class/AdminVar.php:223 ../../library/Class/AdminVar.php:214
+#: ../../library/Class/AdminVar.php:393
 msgid "API"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:307
 ../../library/Class/AdminVar.php:307
 #: ../../library/Class/AdminVar.php:211 ../../library/Class/AdminVar.php:212
 #: ../../library/Class/AdminVar.php:222 ../../library/Class/AdminVar.php:213
+#: ../../library/Class/AdminVar.php:392
 msgid "API utilisée pour les cartes statiques"
 msgstr ""
 
@@ -1290,6 +1297,7 @@ msgstr ""
 #: ../../library/Class/MoteurRecherche.php:605
 #: ../../library/ZendAfi/View/Helper/Admin/MenuHorizontalAdmin.php:41
 #: ../../library/ZendAfi/View/Helper/Admin/Nav.php:41
+#: ../../library/Class/MoteurRecherche.php:604
 msgid "Accueil"
 msgstr "Pagină iniţială"
 
@@ -1422,6 +1430,7 @@ msgid "Actions"
 msgstr "Acţiune"
 
 #: ../../library/Class/AdminVar.php:157 ../../library/Class/AdminVar.php:221
+#: ../../library/Class/AdminVar.php:242
 #, fuzzy
 msgid ""
 "Activation de la disponibilite dans le resultat de recherche au survol de la "
@@ -1436,6 +1445,7 @@ msgid "Activation de la disponibilite dans le resultat de recherche."
 msgstr "Facilitează indexarea site-ului dvs. în motoarele de căutare"
 
 #: ../../library/Class/AdminVar.php:158 ../../library/Class/AdminVar.php:222
+#: ../../library/Class/AdminVar.php:243
 #, fuzzy
 msgid ""
 "Activation de la disponibilite dans le resultat de recherche. Calculé grâce "
@@ -1445,6 +1455,7 @@ msgstr "Facilitează indexarea site-ului dvs. în motoarele de căutare"
 #: ../../library/Class/AdminVar.php:163 ../../library/Class/AdminVar.php:161
 #: ../../library/Class/AdminVar.php:164
 ../../library/Class/AdminVar.php:164
 #: ../../library/Class/AdminVar.php:165 ../../library/Class/AdminVar.php:159
+#: ../../library/Class/AdminVar.php:333
 msgid "Activation de la navigation collaborative"
 msgstr ""
 
@@ -1452,26 +1463,28 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:273 ../../library/Class/AdminVar.php:276
 #: ../../library/Class/AdminVar.php:303 ../../library/Class/AdminVar.php:304
 #: ../../library/Class/AdminVar.php:314 ../../library/Class/AdminVar.php:315
+#: ../../library/Class/AdminVar.php:202
 #, fuzzy
 msgid "Activation de la ressource numérique PlanetNemo"
 msgstr "Resurse OAI"
 
 #: ../../library/Class/AdminVar.php:137 ../../library/Class/AdminVar.php:135
 #: ../../library/Class/AdminVar.php:138
 ../../library/Class/AdminVar.php:138
-#: ../../library/Class/AdminVar.php:139
+#: ../../library/Class/AdminVar.php:139 ../../library/Class/AdminVar.php:313
 msgid "Activation des boîtes dans les menus"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:168 ../../library/Class/AdminVar.php:166
 #: ../../library/Class/AdminVar.php:169
 ../../library/Class/AdminVar.php:169
 #: ../../library/Class/AdminVar.php:170 ../../library/Class/AdminVar.php:164
+#: ../../library/Class/AdminVar.php:338
 msgid "Activation des fonctions avancées du téléphone"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:186 ../../library/Class/AdminVar.php:184
 #: ../../library/Class/AdminVar.php:187
 ../../library/Class/AdminVar.php:187
 #: ../../library/Class/AdminVar.php:188 ../../library/Class/AdminVar.php:189
-#: ../../library/Class/AdminVar.php:198
+#: ../../library/Class/AdminVar.php:198 ../../library/Class/AdminVar.php:255
 #, fuzzy
 msgid "Activation des formulaires"
 msgstr "Moderare alerte"
@@ -1480,13 +1493,14 @@ msgstr "Moderare alerte"
 #: ../../library/Class/AdminVar.php:244
 ../../library/Class/AdminVar.php:244
 #: ../../library/Class/AdminVar.php:271 ../../library/Class/AdminVar.php:272
 #: ../../library/Class/AdminVar.php:282 ../../library/Class/AdminVar.php:283
+#: ../../library/Class/AdminVar.php:170
 msgid "Activation du PNB Dilicom"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:171 ../../library/Class/AdminVar.php:169
 #: ../../library/Class/AdminVar.php:172
 ../../library/Class/AdminVar.php:172
 #: ../../library/Class/AdminVar.php:173 ../../library/Class/AdminVar.php:182
-#: ../../library/Class/AdminVar.php:176
+#: ../../library/Class/AdminVar.php:176 ../../library/Class/AdminVar.php:381
 msgid ""
 "Activation du serveur OAI: permet le moissonnage des domaines par d'autres "
 "logiciels via OAI"
@@ -1520,6 +1534,7 @@ msgstr "Activează instrumentele de acces"
 #: ../../library/Class/AdminVar.php:206
 ../../library/Class/AdminVar.php:206
 #: ../../library/Class/AdminVar.php:234 ../../library/Class/AdminVar.php:235
 #: ../../library/Class/AdminVar.php:245 ../../library/Class/AdminVar.php:246
+#: ../../library/Class/AdminVar.php:133
 #, fuzzy
 msgid "Activer ou désactiver la bibliothèque numérique"
 msgstr "Bibliotecă digitală"
@@ -1529,6 +1544,11 @@ msgstr "Bibliotecă digitală"
 msgid "Activer ou désactiver la ressource numérique Assimil"
 msgstr "Bibliotecă digitală"
 
+#: ../../library/Class/AdminVar.php:305
+#, fuzzy
+msgid "Activer ou désactiver le module d'activité"
+msgstr "Adaugă o localizare"
+
 #: ../../library/Class/AdminVar.php:129 ../../library/Class/AdminVar.php:127
 #: ../../library/Class/AdminVar.php:130
 ../../library/Class/AdminVar.php:130
 #: ../../library/Class/AdminVar.php:131
@@ -1537,9 +1557,38 @@ msgid "Activer ou désactiver le module formation"
 msgstr "Adaugă o localizare"
 
 #: ../../library/ZendAfi/View/Helper/Notice/Unimarc.php:107
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:16
+#: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:12
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:22
+#: ../../application/modules/admin/views/scripts/activity/index.phtml:21
+#: ../../library/Class/CustomFieldsCategory.php:61
+#: ../../library/Class/CustomField/ModelConfiguration/Activity.php:26
+#: ../../library/ZendAfi/Form/Admin/Activity.php:40
 msgid "Activité"
 msgstr ""
 
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Activity.php:29
+#, fuzzy, php-format
+msgid "Activité \"%s\" sauvegardée"
+msgstr "Nu a fost găsit nici un articol"
+
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Activity.php:31
+#, fuzzy, php-format
+msgid "Activité \"%s\" supprimée"
+msgstr "Rezervări în curs"
+
+#: ../../library/ZendAfi/View/Helper/TagSessionActivityInscription.php:42
+#, fuzzy
+msgid "Activité suivie"
+msgstr "Acţiune"
+
+#: ../../application/modules/opac/views/scripts/activities/index.phtml:2
+#: ../../application/modules/admin/controllers/ActivityController.php:70
+#: ../../library/ZendAfi/View/Helper/Admin/ContentNav.php:68
+#, fuzzy
+msgid "Activités"
+msgstr "Acţiune"
+
 #: ../../application/modules/admin/views/scripts/index/adminvar.phtml:54
 #: ../../library/ZendAfi/View/Helper/Admin/AdminVar.php:37
 #: ../../library/ZendAfi/View/Helper/Admin/AdminVar.php:36
@@ -1689,12 +1738,14 @@ msgstr "Adresa destinatarului lipseÅŸte."
 #: ../../library/Class/AdminVar.php:261
 ../../library/Class/AdminVar.php:261
 #: ../../library/Class/AdminVar.php:288 ../../library/Class/AdminVar.php:289
 #: ../../library/Class/AdminVar.php:299 ../../library/Class/AdminVar.php:300
+#: ../../library/Class/AdminVar.php:187
 msgid "Adresse du serveur OAI 1D touch"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:267
 ../../library/Class/AdminVar.php:267
 #: ../../library/Class/AdminVar.php:294 ../../library/Class/AdminVar.php:295
 #: ../../library/Class/AdminVar.php:305 ../../library/Class/AdminVar.php:306
+#: ../../library/Class/AdminVar.php:193
 msgid "Adresse du serveur OAI Cité de la Musique"
 msgstr ""
 
@@ -1702,6 +1753,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:222
 ../../library/Class/AdminVar.php:222
 #: ../../library/Class/AdminVar.php:249 ../../library/Class/AdminVar.php:250
 #: ../../library/Class/AdminVar.php:260 ../../library/Class/AdminVar.php:261
+#: ../../library/Class/AdminVar.php:148
 msgid "Adresse du serveur OAI Cyberlibris"
 msgstr ""
 
@@ -1709,6 +1761,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:268 ../../library/Class/AdminVar.php:271
 #: ../../library/Class/AdminVar.php:298 ../../library/Class/AdminVar.php:299
 #: ../../library/Class/AdminVar.php:309 ../../library/Class/AdminVar.php:310
+#: ../../library/Class/AdminVar.php:197
 msgid "Adresse du serveur Orphea"
 msgstr ""
 
@@ -1716,6 +1769,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:275 ../../library/Class/AdminVar.php:278
 #: ../../library/Class/AdminVar.php:305 ../../library/Class/AdminVar.php:306
 #: ../../library/Class/AdminVar.php:316 ../../library/Class/AdminVar.php:317
+#: ../../library/Class/AdminVar.php:204
 msgid "Adresse du serveur de la ressource numérique Orthodidacte"
 msgstr ""
 
@@ -1826,6 +1880,8 @@ msgstr "Afişează mai multe instrucţiuni"
 #: ../../application/modules/admin/views/scripts/modules/_options_cms.phtml:47
 #: ../../library/ZendAfi/View/Helper/Plugin/MultiSelection/Widget.php:69
 #: ../../library/ZendAfi/Form/Configuration/Widget/Calendar.php:66
+#: ../../application/modules/admin/views/scripts/activity/_activity_actions.phtml:11
+#: ../../application/modules/admin/views/scripts/activity/_session_actions.phtml:21
 #, fuzzy
 msgid "Afficher"
 msgstr "Afişează Agenda"
@@ -1995,6 +2051,11 @@ msgstr "Afişează instrucţiunea"
 msgid "Afficher le calendrier"
 msgstr "Afişează harta"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:111
+#, fuzzy, php-format
+msgid "Afficher le journal technique du %s"
+msgstr "Afişează meniul orizontal"
+
 #: ../../library/ZendAfi/Form/Configuration/SearchWidget.php:84
 #: ../../library/ZendAfi/Form/Configuration/Widget/Search.php:73
 #, fuzzy
@@ -2021,6 +2082,11 @@ msgstr "Afişează meniul orizontal"
 msgid "Afficher le profil courant dans la barre de navigation"
 msgstr "Afişează bara de navigaţie"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:95
+#, fuzzy, php-format
+msgid "Afficher le rapport d'intégration du %s"
+msgstr "Activează instrumentele de acces"
+
 #: ../../application/modules/opac/views/scripts/portail.phtml:10
 #: ../../application/modules/opac/views/scripts/portail.phtml:7
 #, fuzzy
@@ -2302,6 +2368,7 @@ msgstr "Adaugă instrucţiunea în coş"
 #: ../../application/modules/admin/controllers/CatalogueController.php:88
 #: ../../application/modules/admin/controllers/CatalogueController.php:82
 #: ../../application/modules/admin/controllers/CatalogueController.php:79
+#: ../../application/modules/admin/controllers/CatalogueController.php:87
 #, fuzzy
 msgid "Ajout de domaine"
 msgstr "Adaugă un domain"
@@ -2381,6 +2448,7 @@ msgstr "Adaugă în coş"
 #: ../../library/Class/AdminVar.php:161 ../../library/Class/AdminVar.php:159
 #: ../../library/Class/AdminVar.php:162
 ../../library/Class/AdminVar.php:162
 #: ../../library/Class/AdminVar.php:163 ../../library/Class/AdminVar.php:157
+#: ../../library/Class/AdminVar.php:331
 msgid "Ajouter automatiquement une boîte panier dans la division flottante"
 msgstr ""
 
@@ -2444,6 +2512,7 @@ msgid "Ajouter un agenda"
 msgstr "Adaugă un meniu"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:676
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:685
 #, fuzzy
 msgid "Ajouter un album"
 msgstr "Adaugă un catalog"
@@ -2454,6 +2523,7 @@ msgstr "Adaugă un catalog"
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:504
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Article.php:35
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:515
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:518
 #, fuzzy
 msgid "Ajouter un article"
 msgstr "Adaugă o localizare"
@@ -2589,6 +2659,12 @@ msgstr "Adaugă o localizare"
 msgid "Ajouter un utilisateur"
 msgstr "Adaugă un utilizator"
 
+#: ../../application/modules/admin/views/scripts/activity/index.phtml:4
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Activity.php:33
+#, fuzzy
+msgid "Ajouter une activité"
+msgstr "Adaugă o categorie"
+
 #: ../../application/modules/admin/views/scripts/bib/index.phtml:3
 #: ../../application/modules/admin/controllers/BibController.php:44
 #: ../../application/modules/admin/controllers/BibController.php:49
@@ -2640,6 +2716,8 @@ msgstr "Adaugă o localizare"
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:530
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/ArticleCategory.php:33
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:541
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:544
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:669
 msgid "Ajouter une catégorie"
 msgstr "Adaugă o categorie"
 
@@ -2704,6 +2782,8 @@ msgstr "Adaugă o localizare"
 #: ../../application/modules/admin/views/scripts/formation/_formation_actions.phtml:17
 #: ../../application/modules/admin/controllers/SessionFormationController.php:35
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionFormation.php:34
+#: ../../application/modules/admin/views/scripts/activity/_activity_actions.phtml:17
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionActivity.php:34
 #, fuzzy
 msgid "Ajouter une session"
 msgstr "Adaugă o localizare"
@@ -2713,6 +2793,8 @@ msgstr "Adaugă o localizare"
 #: ../../library/ZendAfi/Controller/Plugin/Manager/UserGroup.php:222
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Sitotheque.php:169
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:525
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:528
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:678
 #, fuzzy
 msgid "Ajouter une sous-catégorie"
 msgstr "Adaugă o categorie"
@@ -2868,6 +2950,11 @@ msgstr "Anexă"
 msgid "Annexe :"
 msgstr "Anexă:"
 
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:100
+#, fuzzy
+msgid "Annexes"
+msgstr "Anexă"
+
 #: ../../library/Class/WebService/SIGB/AbstractRESTService.php:237
 #, fuzzy
 msgid "Annulation impossible"
@@ -2899,6 +2986,7 @@ msgstr "Criterii de indexare"
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:150
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:165
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:239
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:238
 #, fuzzy
 msgid "Annulée"
 msgstr "Anulare"
@@ -2942,9 +3030,15 @@ msgstr "An de debut"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:73
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:85
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:86
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:50
 msgid "Année de parution - depuis"
 msgstr "An de publicaţie - din"
 
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:55
+#, fuzzy
+msgid "Année de parution - jusqu'à"
+msgstr "An de publicaţie - din"
+
 #: ../../application/modules/opac/views/scripts/recherche/avancee.phtml:93
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:73
 #: ../../library/Class/CriteresRecherche.php:83
@@ -2977,6 +3071,10 @@ msgstr "An de sfârşit      "
 msgid "Année: %s"
 msgstr "an: %s"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:46
+msgid "Anomalies"
+msgstr ""
+
 #: ../../library/Class/Avis.php:88 ../../library/Class/Avis.php:87
 msgid "Anonyme"
 msgstr ""
@@ -2994,6 +3092,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:185
 #: ../../application/modules/admin/controllers/NewsletterController.php:206
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:79
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:86
 #, fuzzy, php-format
 msgid "Aperçu de la lettre : %s"
 msgstr "Vizualizarea scrisorii:"
@@ -3129,6 +3228,7 @@ msgstr "Categorie"
 #: ../../application/modules/admin/controllers/CmsController.php:90
 #: ../../library/ZendAfi/View/Helper/Admin/ContentNav.php:58
 #: ../../application/modules/admin/controllers/CmsController.php:91
+#: ../../application/modules/admin/controllers/CmsController.php:93
 msgid "Articles"
 msgstr "Articole"
 
@@ -3226,6 +3326,7 @@ msgstr "Tip de document"
 #: ../../library/Class/ModeleFusion.php:77
 #: ../../library/ZendAfi/View/Helper/Redmine/Header.php:126
 #: ../../library/ZendAfi/Form/Admin/News.php:243
+#: ../../library/Class/ModeleFusion.php:75
 #, fuzzy
 msgid "Aucun"
 msgstr "nici o"
@@ -3471,6 +3572,7 @@ msgstr "Nici un rezultat găsit"
 #: ../../library/Class/MoteurRecherche.php:473
 #: ../../library/Class/MoteurRecherche.php:479
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:67
+#: ../../library/Class/MoteurRecherche.php:478
 msgid "Aucun résultat trouvé"
 msgstr "Nici un rezultat găsit"
 
@@ -3802,6 +3904,7 @@ msgstr "Autor :"
 #: ../../application/modules/opac/controllers/RechercheController.php:516
 #: ../../application/modules/opac/controllers/RechercheController.php:453
 #: ../../application/modules/opac/controllers/RechercheController.php:471
+#: ../../application/modules/opac/controllers/RechercheController.php:462
 #, php-format
 msgid "Auteur : %s"
 msgstr "Autor : %s"
@@ -3858,6 +3961,7 @@ msgstr "Autor : %s"
 #: ../../library/ZendAfi/Form/Album/Ressource.php:95
 #: ../../library/ZendAfi/Form/Album.php:210
 #: ../../library/ZendAfi/Form/Search/Advanced.php:46
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:115
 msgid "Auteurs"
 msgstr "Autori"
 
@@ -3867,10 +3971,20 @@ msgstr "Autori"
 #: ../../application/modules/opac/controllers/AuthController.php:141
 #: ../../application/modules/opac/controllers/AuthController.php:154
 #: ../../application/modules/opac/controllers/AuthController.php:146
+#: ../../application/modules/opac/controllers/AuthController.php:169
 #, fuzzy
 msgid "Authentification"
 msgstr "Identificare"
 
+#: ../../application/modules/opac/controllers/AuthController.php:149
+#, php-format
+msgid "Authentifiez-vous pour autoriser \"%s\" à accéder à votre compte"
+msgstr ""
+
+#: ../../application/modules/api/controllers/UserController.php:29
+msgid "Autorisation non spécifiée"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:154
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:159
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:163
@@ -3899,6 +4013,11 @@ msgstr "Gestionare utilizatori"
 msgid "Autoriser les commentaires d'internautes (Mode blog) ?"
 msgstr "Autorizaţi comentariile utilizatorilor (Mod blog) ?"
 
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:197
+#, fuzzy
+msgid "Autorités"
+msgstr "Actualităţi :"
+
 #: ../../library/ZendAfi/Form/Album/Ressource.php:76
 #, fuzzy
 msgid "Autre fichier"
@@ -3913,6 +4032,11 @@ msgstr "FiÅŸa dvs.       "
 msgid "Autre, Précisez"
 msgstr ""
 
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:211
+#, fuzzy
+msgid "Autres"
+msgstr "Titluri"
+
 #: ../../library/Class/User/SearchCriteria/WithMail.php:30
 #, fuzzy
 msgid "Avec mail"
@@ -4285,6 +4409,7 @@ msgstr "Nu a fost găsit nici un articol"
 
 #: ../../application/modules/opac/views/scripts/recherche/reservation.phtml:17
 #: ../../library/ZendAfi/View/Helper/Redmine/Header.php:78
+#: ../../library/ZendAfi/Form/Hold.php:35
 msgid "Bibliothèque : "
 msgstr "Bibliotecă :"
 
@@ -4365,6 +4490,7 @@ msgstr "Bibliotecă(i)"
 #: ../../library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php:121
 #: ../../library/Class/Systeme/Report.php:53
 #: ../../library/ZendAfi/View/Helper/Admin/ContentNav.php:124
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:90
 msgid "Bibliothèques"
 msgstr "Biblioteci"
 
@@ -4468,6 +4594,7 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:89
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:85
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:60
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:60
 msgid "Bloc"
 msgstr ""
 
@@ -4497,6 +4624,11 @@ msgstr ""
 msgid "Boite RSS"
 msgstr ""
 
+#: ../../library/Class/Systeme/ModulesAccueil/Activities.php:40
+#, fuzzy
+msgid "Boite activités"
+msgstr "Filtrează"
+
 #: ../../library/Class/Systeme/ModulesAccueil/News.php:40
 #, fuzzy
 msgid "Boite articles"
@@ -4687,6 +4819,13 @@ msgstr ""
 msgid "Bonjour,"
 msgstr "Bună ziua,"
 
+#: ../../library/Class/Activity/UnregistrationMail.php:31
+#, php-format
+msgid ""
+"Bonjour,<br><br>nous vous confirmons que vous n'êtes plus inscrit à "
+"l'activité <a href=\"%s\">\"%s\"</a>"
+msgstr ""
+
 #: ../../library/Class/Formation/UnregistrationMail.php:31
 #, php-format
 msgid ""
@@ -4694,6 +4833,13 @@ msgid ""
 "formation <a href=\"%s\">\"%s\"</a>"
 msgstr ""
 
+#: ../../library/Class/Activity/RegistrationMail.php:31
+#, php-format
+msgid ""
+"Bonjour,<br><br>nous vous confirmons votre inscription à l'activité <a href="
+"\"%s\">\"%s\"</a>"
+msgstr ""
+
 #: ../../library/Class/Formation/RegistrationMail.php:31
 #, php-format
 msgid ""
@@ -4775,6 +4921,8 @@ msgstr "Ascunde imagini"
 
 #: ../../application/modules/admin/views/scripts/formation/_session_actions.phtml:21
 #: ../../application/modules/admin/views/scripts/formation/_formation_actions.phtml:11
+#: ../../application/modules/admin/views/scripts/activity/_activity_actions.phtml:11
+#: ../../application/modules/admin/views/scripts/activity/_session_actions.phtml:21
 msgid "Cacher"
 msgstr ""
 
@@ -4982,6 +5130,7 @@ msgstr "Categorie"
 
 #: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:102
 #: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:123
+#: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:122
 #, fuzzy
 msgid "Catégories d'albums"
 msgstr "Categorie înrudită"
@@ -4991,6 +5140,7 @@ msgstr "Categorie înrudită"
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:236
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:304
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:305
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:326
 #, fuzzy
 msgid "Catégories d'articles"
 msgstr "Categorie înrudită"
@@ -5103,6 +5253,7 @@ msgstr "Centru(e) de interes"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:178
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:179
 #: ../../library/ZendAfi/Form/Search/Advanced.php:69
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:135
 msgid "Centres d'intérêt"
 msgstr "Centre de interes"
 
@@ -5128,6 +5279,7 @@ msgstr "Acest nume de utilizator există deja."
 #: ../../application/modules/opac/controllers/AuthController.php:382
 #: ../../application/modules/opac/controllers/AuthController.php:396
 #: ../../application/modules/opac/controllers/AuthController.php:401
+#: ../../application/modules/opac/controllers/AuthController.php:424
 msgid "Cette fonctionnalité n'est pas activée."
 msgstr ""
 
@@ -5404,6 +5556,7 @@ msgstr "Încărcare în curs"
 #: ../../library/Class/AdminVar.php:162 ../../library/Class/AdminVar.php:160
 #: ../../library/Class/AdminVar.php:163
 ../../library/Class/AdminVar.php:163
 #: ../../library/Class/AdminVar.php:164 ../../library/Class/AdminVar.php:158
+#: ../../library/Class/AdminVar.php:332
 #, php-format
 msgid "Chemin vers les skins personnalisées, relatif à %s"
 msgstr ""
@@ -5453,6 +5606,11 @@ msgid ""
 "ont des sous-domaines."
 msgstr ""
 
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:28
+#, fuzzy
+msgid "Choisissez les activités à afficher"
+msgstr "Modificare titlu coÅŸ"
+
 #: ../../library/ZendAfi/Form/Configuration/BibNumerique.php:110
 #: ../../library/ZendAfi/Form/Configuration/Widget/Albums.php:61
 #, fuzzy
@@ -5521,6 +5679,7 @@ msgstr "Cheie"
 
 #: ../../library/Class/AdminVar.php:114 ../../library/Class/AdminVar.php:112
 #: ../../library/Class/AdminVar.php:116
 ../../library/Class/AdminVar.php:116
+#: ../../library/Class/AdminVar.php:290
 msgid ""
 "Clef d'activation pour le plan d'accès google map. <a target=\"_blank\" href="
 "\"http://code.google.com/apis/maps/signup.html\">Obtenir la clé google map</"
@@ -5586,6 +5745,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:121 ../../library/Class/AdminVar.php:119
 #: ../../library/Class/AdminVar.php:122
 ../../library/Class/AdminVar.php:122
+#: ../../library/Class/AdminVar.php:296
 msgid ""
 "Clé API Bluga Webthumb <a target=\"_blank\" href=\"http://webthumb.bluga.net/"
 "home\">http://webthumb.bluga.net/home</a>"
@@ -5595,6 +5755,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:226
 ../../library/Class/AdminVar.php:226
 #: ../../library/Class/AdminVar.php:253 ../../library/Class/AdminVar.php:254
 #: ../../library/Class/AdminVar.php:264 ../../library/Class/AdminVar.php:265
+#: ../../library/Class/AdminVar.php:152
 msgid "Clé ARTE VOD"
 msgstr ""
 
@@ -5602,6 +5763,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:227
 ../../library/Class/AdminVar.php:227
 #: ../../library/Class/AdminVar.php:254 ../../library/Class/AdminVar.php:255
 #: ../../library/Class/AdminVar.php:265 ../../library/Class/AdminVar.php:266
+#: ../../library/Class/AdminVar.php:153
 msgid "Clé ARTE VOD Single Sign-On"
 msgstr ""
 
@@ -5613,7 +5775,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:289 ../../library/Class/AdminVar.php:292
 #: ../../library/Class/AdminVar.php:319 ../../library/Class/AdminVar.php:320
 #: ../../library/Class/AdminVar.php:330 ../../library/Class/AdminVar.php:323
-#: ../../library/Class/AdminVar.php:324
+#: ../../library/Class/AdminVar.php:324 ../../library/Class/AdminVar.php:211
 msgid ""
 "Clé d'encodage Kidilangues pour le portail. Cette clé doit être fournie par "
 "Kidilangues."
@@ -5623,7 +5785,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:290 ../../library/Class/AdminVar.php:293
 #: ../../library/Class/AdminVar.php:320 ../../library/Class/AdminVar.php:321
 #: ../../library/Class/AdminVar.php:331 ../../library/Class/AdminVar.php:324
-#: ../../library/Class/AdminVar.php:325
+#: ../../library/Class/AdminVar.php:325 ../../library/Class/AdminVar.php:212
 msgid ""
 "Clé d'identification Kidilangues pour le portail. Cette clé doit être "
 "fournie par Kidilangues."
@@ -5633,6 +5795,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:259
 ../../library/Class/AdminVar.php:259
 #: ../../library/Class/AdminVar.php:286 ../../library/Class/AdminVar.php:287
 #: ../../library/Class/AdminVar.php:297 ../../library/Class/AdminVar.php:298
+#: ../../library/Class/AdminVar.php:185
 msgid ""
 "Clé d'identification MyCOW.EU pour le portail. Cette clé doit être fournie "
 "par MyCOW.EU. Elle active la ressource numérique dans le portail."
@@ -5642,7 +5805,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:294 ../../library/Class/AdminVar.php:297
 #: ../../library/Class/AdminVar.php:324 ../../library/Class/AdminVar.php:325
 #: ../../library/Class/AdminVar.php:335 ../../library/Class/AdminVar.php:328
-#: ../../library/Class/AdminVar.php:329
+#: ../../library/Class/AdminVar.php:329 ../../library/Class/AdminVar.php:216
 msgid ""
 "Clé d'identification Premier-Chapitre de la bibliothèque. Cette clé doit "
 "être fournie par Premier-Chapitre."
@@ -5652,6 +5815,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:240
 ../../library/Class/AdminVar.php:240
 #: ../../library/Class/AdminVar.php:267 ../../library/Class/AdminVar.php:268
 #: ../../library/Class/AdminVar.php:278 ../../library/Class/AdminVar.php:279
+#: ../../library/Class/AdminVar.php:166
 msgid "Clé de sécurité Vodeclic"
 msgstr ""
 
@@ -5661,13 +5825,13 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:132 ../../library/Class/AdminVar.php:130
 #: ../../library/Class/AdminVar.php:133
 ../../library/Class/AdminVar.php:133
-#: ../../library/Class/AdminVar.php:134
+#: ../../library/Class/AdminVar.php:134 ../../library/Class/AdminVar.php:308
 msgid "Clé publique pour le cryptage des données AFI-Multimédia"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:134 ../../library/Class/AdminVar.php:132
 #: ../../library/Class/AdminVar.php:135
 ../../library/Class/AdminVar.php:135
-#: ../../library/Class/AdminVar.php:136
+#: ../../library/Class/AdminVar.php:136 ../../library/Class/AdminVar.php:310
 msgid "Clé publique pour le cryptage des données Aesis Webkiosk"
 msgstr ""
 
@@ -5675,6 +5839,11 @@ msgstr ""
 msgid "Code Anti-spam :"
 msgstr "Cod Anti-spam"
 
+#: ../../library/ZendAfi/Form/Hold.php:54
+#, fuzzy
+msgid "Code Anti-spam : "
+msgstr "Cod Anti-spam"
+
 #: ../../library/ZendAfi/Form/Admin/Annexe.php:35
 msgid "Code dans le SIGB"
 msgstr ""
@@ -5885,6 +6054,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:161
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:176
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:250
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:249
 msgid "Complet: maximum de personnes inscrites"
 msgstr ""
 
@@ -5959,6 +6129,7 @@ msgid "Configuration PNB Dilicom"
 msgstr "Configurare"
 
 #: ../../application/modules/admin/controllers/ModulesController.php:306
+#: ../../application/modules/admin/controllers/ModulesController.php:301
 #, fuzzy, php-format
 msgid "Configuration de l'affichage du type %s"
 msgstr "Configurare"
@@ -6010,6 +6181,11 @@ msgstr "Configurare"
 msgid "Configuration du résultat de recherche"
 msgstr "Rezultatul căutarii"
 
+#: ../../application/modules/admin/controllers/ModulesController.php:464
+#, fuzzy
+msgid "Configuration sauvegardée"
+msgstr "Nu a fost găsită nici o informaţie"
+
 #: ../../library/Class/Cosmogramme/Integration/PhasePatrons.php:115
 #: ../../library/Class/Cosmogramme/Integration/PhasePatrons.php:118
 #: ../../library/Class/Cosmogramme/Integration/PhasePatrons.php:122
@@ -6040,6 +6216,11 @@ msgstr "Constituire a planului de acces"
 msgid "Confirmation"
 msgstr "Configurare"
 
+#: ../../library/Class/Activity/RegistrationMail.php:25
+#, fuzzy, php-format
+msgid "Confirmation d'inscription à l'activité \"%s\""
+msgstr "Condiţii de înscriere"
+
 #: ../../library/Class/Formation/RegistrationMail.php:25
 #, fuzzy, php-format
 msgid "Confirmation d'inscription à la formation \"%s\""
@@ -6052,10 +6233,16 @@ msgstr "Condiţii de înscriere"
 #: ../../application/modules/opac/controllers/AuthController.php:348
 #: ../../application/modules/opac/controllers/AuthController.php:362
 #: ../../application/modules/opac/controllers/AuthController.php:367
+#: ../../application/modules/opac/controllers/AuthController.php:390
 #, fuzzy
 msgid "Confirmation d'inscription à la newsletter: "
 msgstr "Condiţii de înscriere"
 
+#: ../../library/Class/Activity/UnregistrationMail.php:25
+#, fuzzy, php-format
+msgid "Confirmation de désinscription à l'activité \"%s\""
+msgstr "Condiţii de înscriere"
+
 #: ../../library/Class/Formation/UnregistrationMail.php:25
 #, fuzzy, php-format
 msgid "Confirmation de désinscription à la formation \"%s\""
@@ -6130,6 +6317,7 @@ msgstr "Conectare "
 #: ../../application/modules/telephone/controllers/AuthController.php:43
 #: ../../application/modules/opac/controllers/AuthController.php:95
 #: ../../application/modules/opac/controllers/AuthController.php:103
+#: ../../application/modules/opac/controllers/AuthController.php:102
 #, fuzzy
 msgid "Connexion"
 msgstr "Căsuţă de conectare"
@@ -6186,6 +6374,7 @@ msgstr "Consultare"
 #: ../../application/modules/opac/controllers/RechercheController.php:565
 #: ../../library/ZendAfi/View/Helper/Notice/ExemplairesTable.php:390
 #: ../../library/ZendAfi/View/Helper/Notice/ExemplairesTable.php:407
+#: ../../application/modules/opac/controllers/RechercheController.php:524
 #, fuzzy
 msgid "Consultation sur place"
 msgstr "Consultare"
@@ -6210,6 +6399,8 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:52
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:55
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:60
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:69
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:75
 msgid "Consulter le livre en ligne (depuis la médiathèque)"
 msgstr ""
 
@@ -6261,7 +6452,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:196 ../../library/Class/AdminVar.php:194
 #: ../../library/Class/AdminVar.php:197
 ../../library/Class/AdminVar.php:197
 #: ../../library/Class/AdminVar.php:198 ../../library/Class/AdminVar.php:199
-#: ../../library/Class/AdminVar.php:208
+#: ../../library/Class/AdminVar.php:208 ../../library/Class/AdminVar.php:265
 msgid ""
 "Contenu de l'email de notification d'article en attente de validation. "
 "Termes substitués: TITRE_ARTICLE, URL_ARTICLE, AUTHOR_ARTICLE, "
@@ -6271,7 +6462,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:197 ../../library/Class/AdminVar.php:195
 #: ../../library/Class/AdminVar.php:198
 ../../library/Class/AdminVar.php:198
 #: ../../library/Class/AdminVar.php:199 ../../library/Class/AdminVar.php:200
-#: ../../library/Class/AdminVar.php:209
+#: ../../library/Class/AdminVar.php:209 ../../library/Class/AdminVar.php:266
 msgid ""
 "Contenu de l'email de notification de refus d'un article à valider. Termes "
 "substitués: TITRE_ARTICLE, URL_ARTICLE, AUTHOR_ARTICLE, SAVED_BY_ARTICLE"
@@ -6280,7 +6471,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:198 ../../library/Class/AdminVar.php:196
 #: ../../library/Class/AdminVar.php:199
 ../../library/Class/AdminVar.php:199
 #: ../../library/Class/AdminVar.php:200 ../../library/Class/AdminVar.php:201
-#: ../../library/Class/AdminVar.php:210
+#: ../../library/Class/AdminVar.php:210 ../../library/Class/AdminVar.php:267
 msgid ""
 "Contenu de l'email de notification de validation d'un article. Termes "
 "substitués: TITRE_ARTICLE, URL_ARTICLE, AUTHOR_ARTICLE, SAVED_BY_ARTICLE"
@@ -6313,6 +6504,7 @@ msgstr "conţine"
 #: ../../library/Class/AdminVar.php:247
 ../../library/Class/AdminVar.php:247
 #: ../../library/Class/AdminVar.php:274 ../../library/Class/AdminVar.php:275
 #: ../../library/Class/AdminVar.php:285 ../../library/Class/AdminVar.php:286
+#: ../../library/Class/AdminVar.php:173
 msgid "Contracteur du PNB Dilicom"
 msgstr ""
 
@@ -6399,9 +6591,15 @@ msgstr "Cota"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:83
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:95
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:96
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:60
 msgid "Cote - depuis"
 msgstr "Cota - începând cu"
 
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:65
+#, fuzzy
+msgid "Cote - jusqu'à"
+msgstr "până la"
+
 #: ../../application/modules/opac/controllers/RechercheController.php:457
 #: ../../application/modules/opac/controllers/RechercheController.php:490
 #: ../../application/modules/opac/controllers/RechercheController.php:515
@@ -6418,6 +6616,7 @@ msgstr "Cota - începând cu"
 #: ../../application/modules/opac/controllers/RechercheController.php:518
 #: ../../application/modules/opac/controllers/RechercheController.php:455
 #: ../../application/modules/opac/controllers/RechercheController.php:473
+#: ../../application/modules/opac/controllers/RechercheController.php:464
 #, php-format
 msgid "Cote : %s"
 msgstr "Cota : %s"
@@ -6536,6 +6735,7 @@ msgid "Critiques rédigées par %s"
 msgstr "Critici redactate de %s"
 
 #: ../../application/modules/admin/views/scripts/stat/rechercheinfructueuse.phtml:10
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:186
 #, fuzzy
 msgid "Critères"
 msgstr "Critică"
@@ -6573,6 +6773,7 @@ msgstr "Criterii generale"
 
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:316
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:317
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:338
 #, fuzzy
 msgid "Créateur"
 msgstr "Înălţime"
@@ -6591,6 +6792,7 @@ msgid "Création d'un nouveau panier"
 msgstr "coÅŸ nou"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:135
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:137
 #, php-format
 msgid "Création de l'intégration pour %s"
 msgstr ""
@@ -6748,6 +6950,10 @@ msgstr ""
 #: ../../application/modules/opac/views/scripts/abonne/formations.phtml:17
 #: ../../application/modules/opac/views/scripts/abonne/formations-registered.phtml:23
 #: ../../application/modules/admin/views/scripts/cms/versions.phtml:22
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:17
+#: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:13
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:23
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:30
 msgid "Date"
 msgstr ""
 
@@ -6822,6 +7028,7 @@ msgstr "Solicitarea dvs. de înscriere  "
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:153
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:168
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:242
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:241
 #, fuzzy
 msgid "Date de limite d'inscription dépassée: "
 msgstr "Solicitarea dvs. de înscriere  "
@@ -6830,12 +7037,14 @@ msgstr "Solicitarea dvs. de înscriere  "
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:156
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:171
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:245
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:244
 #, fuzzy
 msgid "Date de limite d'inscription: "
 msgstr "Solicitarea dvs. de înscriere  "
 
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:315
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:316
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:337
 #, fuzzy
 msgid "Date de mise à jour"
 msgstr "Încărcare in curs"
@@ -6889,16 +7098,18 @@ msgstr "Căsuţă de căutare"
 #: ../../library/Class/AdminVar.php:160 ../../library/Class/AdminVar.php:158
 #: ../../library/Class/AdminVar.php:161
 ../../library/Class/AdminVar.php:161
 #: ../../library/Class/AdminVar.php:162 ../../library/Class/AdminVar.php:177
-#: ../../library/Class/AdminVar.php:171
+#: ../../library/Class/AdminVar.php:171 ../../library/Class/AdminVar.php:373
 msgid "Date du dernier import total des abonnés (modifié par cosmogramme)"
 msgstr ""
 
-#: ../../library/Class/AdminVar.php:129
+#: ../../library/Class/AdminVar.php:129 ../../library/Class/AdminVar.php:303
 msgid "Date du dernier vidage manuel du cache"
 msgstr ""
 
 #: ../../application/modules/opac/views/scripts/abonne/formations.phtml:38
 #: ../../application/modules/opac/views/scripts/abonne/formations-registered.phtml:45
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:38
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:45
 #, fuzzy, php-format
 msgid "Date limite d'inscription : %s"
 msgstr "Solicitarea dvs. de înscriere  "
@@ -6922,6 +7133,10 @@ msgstr ""
 msgid "De B à A"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:37
+msgid "Debug"
+msgstr ""
+
 #: ../../application/modules/admin/controllers/RedmineController.php:157
 #, fuzzy, php-format
 msgid "Demande #%s enregistrée"
@@ -6934,6 +7149,7 @@ msgstr "Rezervarea dvs. a fost înregistrată."
 #: ../../application/modules/opac/controllers/AuthController.php:286
 #: ../../application/modules/opac/controllers/AuthController.php:300
 #: ../../application/modules/opac/controllers/AuthController.php:305
+#: ../../application/modules/opac/controllers/AuthController.php:328
 #, fuzzy
 msgid "Demande d'inscription à la lettre d'information: "
 msgstr "la buletinul informativ"
@@ -6941,11 +7157,13 @@ msgstr "la buletinul informativ"
 #: ../../application/modules/opac/controllers/AuthController.php:380
 #: ../../application/modules/opac/controllers/AuthController.php:394
 #: ../../application/modules/opac/controllers/AuthController.php:399
+#: ../../application/modules/opac/controllers/AuthController.php:422
 #, fuzzy
 msgid "Demande de préinscription"
 msgstr "Cereri de înscriere"
 
 #: ../../application/modules/opac/views/scripts/recherche/reservation.phtml:5
+#: ../../application/modules/opac/views/scripts/recherche/reservation.phtml:4
 msgid "Demande de réservation d'un document du réseau:"
 msgstr "Cerere de rezervare a unui document din reţea:"
 
@@ -6979,6 +7197,7 @@ msgstr "Cerere de rezervare a unui document din reţea:"
 #: ../../application/modules/opac/controllers/RechercheController.php:474
 #: ../../application/modules/opac/controllers/RechercheController.php:482
 #: ../../application/modules/opac/controllers/RechercheController.php:492
+#: ../../application/modules/opac/controllers/RechercheController.php:454
 msgid "Demande de réservation de document"
 msgstr "Cerere de rezervare a unui document"
 
@@ -7167,6 +7386,8 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/profil/menusmaj.phtml:14
 #: ../../application/modules/admin/views/scripts/bib/localisationsmaj.phtml:104
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:39
+#: ../../library/ZendAfi/Form/Admin/Activity.php:34
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:40
 msgid "Description"
 msgstr "Descriere"
 
@@ -7218,6 +7439,7 @@ msgstr "Comentariu"
 #: ../../application/modules/admin/controllers/NewsletterController.php:84
 #: ../../application/modules/admin/controllers/NewsletterController.php:100
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:184
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:191
 #, fuzzy, php-format
 msgid "Destinataires de la lettre : %s"
 msgstr "Vizualizarea scrisorii:"
@@ -7225,6 +7447,9 @@ msgstr "Vizualizarea scrisorii:"
 #: ../../application/modules/opac/views/scripts/abonne/formations-done.phtml:22
 #: ../../application/modules/opac/views/scripts/abonne/formations.phtml:28
 #: ../../application/modules/opac/views/scripts/abonne/formations-registered.phtml:34
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:28
+#: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:22
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:34
 #, fuzzy, php-format
 msgid "Details de la session %s"
 msgstr "Validare selecţie"
@@ -7452,6 +7677,7 @@ msgstr "Cataloguri dinamice"
 #: ../../application/modules/admin/controllers/CatalogueController.php:82
 #: ../../application/modules/admin/controllers/CatalogueController.php:76
 #: ../../application/modules/admin/controllers/CatalogueController.php:73
+#: ../../application/modules/admin/controllers/CatalogueController.php:72
 #, fuzzy, php-format
 msgid "Domaine %s ajouté"
 msgstr "Ultimele site-uri adăugate"
@@ -7469,6 +7695,8 @@ msgstr "Ultimele site-uri adăugate"
 #: ../../application/modules/admin/controllers/CatalogueController.php:106
 #: ../../application/modules/admin/controllers/CatalogueController.php:126
 #: ../../application/modules/admin/controllers/CatalogueController.php:103
+#: ../../application/modules/admin/controllers/CatalogueController.php:110
+#: ../../application/modules/admin/controllers/CatalogueController.php:138
 #, php-format
 msgid "Domaine %s sauvegardé"
 msgstr ""
@@ -7485,6 +7713,7 @@ msgstr "Căsuţă de căutare"
 #: ../../library/Class/MoteurRecherche.php:429
 #: ../../library/Class/MoteurRecherche.php:436
 #: ../../library/Class/MoteurRecherche.php:442
+#: ../../library/Class/MoteurRecherche.php:441
 #, fuzzy
 msgid "Domaine non paramétré"
 msgstr "Cataloguri dinamice"
@@ -7493,6 +7722,7 @@ msgstr "Cataloguri dinamice"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:33
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:30
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:29
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:155
 #, fuzzy
 msgid "Domaine parent"
 msgstr "Cataloguri dinamice"
@@ -7500,7 +7730,7 @@ msgstr "Cataloguri dinamice"
 #: ../../library/Class/Album.php:1581 ../../library/Class/Album.php:1584
 #: ../../library/Class/Album.php:1599
 ../../library/Class/Album.php:1599
 #: ../../library/Class/Album.php:1594 ../../library/Class/Album.php:1601
-#: ../../library/Class/Album.php:1595
+#: ../../library/Class/Album.php:1595 ../../library/Class/Album.php:1598
 #, fuzzy
 msgid "Domaine public"
 msgstr "Cataloguri dinamice"
@@ -7509,6 +7739,7 @@ msgstr "Cataloguri dinamice"
 #: ../../library/Class/AdminVar.php:277 ../../library/Class/AdminVar.php:280
 #: ../../library/Class/AdminVar.php:307 ../../library/Class/AdminVar.php:308
 #: ../../library/Class/AdminVar.php:318 ../../library/Class/AdminVar.php:319
+#: ../../library/Class/AdminVar.php:206
 msgid "Domaine utilisée par le serveur lectura pour authentification"
 msgstr ""
 
@@ -7543,6 +7774,8 @@ msgstr ""
 #: ../../library/Class/Catalogue.php:1192
 #: ../../library/ZendAfi/View/Helper/Admin/ContentNav.php:59
 #: ../../library/ZendAfi/Form/Admin/News.php:280
+#: ../../library/Class/Catalogue.php:1165
+#: ../../library/Class/Catalogue.php:1203
 msgid "Domaines"
 msgstr "Cataloguri dinamice"
 
@@ -7633,6 +7866,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/CatalogueController.php:138
 #: ../../application/modules/admin/controllers/CatalogueController.php:132
 #: ../../application/modules/admin/controllers/CatalogueController.php:129
+#: ../../application/modules/admin/controllers/CatalogueController.php:144
 #, php-format
 msgid "Duplication du domaine: %s"
 msgstr ""
@@ -7649,6 +7883,7 @@ msgstr "Rezervări de instrucţiuni"
 #: ../../application/modules/admin/controllers/NewsletterController.php:64
 #: ../../application/modules/admin/controllers/NewsletterController.php:80
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:164
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:171
 msgid "Duplication impossible: Erreur lors de l'enregisrement de la copie."
 msgstr ""
 
@@ -7656,6 +7891,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:59
 #: ../../application/modules/admin/controllers/NewsletterController.php:75
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:159
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:166
 #, fuzzy
 msgid "Duplication impossible: la source n'a pas été trouvée."
 msgstr "Nu a fost găsită nici o instrucţiune"
@@ -7664,6 +7900,7 @@ msgstr "Nu a fost găsită nici o instrucţiune"
 #: ../../library/ZendAfi/View/Helper/BoutonIco.php:77
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:468
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:479
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:482
 #, fuzzy
 msgid "Dupliquer"
 msgstr "Ultimele articole"
@@ -7692,6 +7929,7 @@ msgid "Dupliquer l'article: %s"
 msgstr "Ultimele articole"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:59
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:66
 #, fuzzy
 msgid "Dupliquer la lettre d'information"
 msgstr "la buletinul informativ"
@@ -7730,6 +7968,7 @@ msgstr "Împrumuturi în curs"
 #: ../../library/Class/AdminVar.php:254
 ../../library/Class/AdminVar.php:254
 #: ../../library/Class/AdminVar.php:281 ../../library/Class/AdminVar.php:282
 #: ../../library/Class/AdminVar.php:292 ../../library/Class/AdminVar.php:293
+#: ../../library/Class/AdminVar.php:180
 msgid "Durée maximale (en jours) d'un prêt PNB Dilicom"
 msgstr ""
 
@@ -7820,7 +8059,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:292 ../../library/Class/AdminVar.php:294
 #: ../../library/Class/AdminVar.php:298 ../../library/Class/AdminVar.php:301
 #: ../../library/Class/AdminVar.php:205 ../../library/Class/AdminVar.php:206
-#: ../../library/Class/AdminVar.php:215
+#: ../../library/Class/AdminVar.php:215 ../../library/Class/AdminVar.php:225
 #, fuzzy
 msgid "Désactivation des suggestions d'achats"
 msgstr "Moderare alerte"
@@ -7833,6 +8072,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:117 ../../library/Class/AdminVar.php:115
 #: ../../library/Class/AdminVar.php:119
 ../../library/Class/AdminVar.php:119
+#: ../../library/Class/AdminVar.php:293
 msgid "Désactiver pour passer le site en maintenance"
 msgstr ""
 
@@ -7849,12 +8089,14 @@ msgid ""
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:106
 ../../library/Class/AdminVar.php:106
+#: ../../library/Class/AdminVar.php:358
 msgid ""
 "Désactivé: les lecteurs peuvent donner leur avis. <br /> Activé: seuls les "
 "bibliothécaires peuvent donner leur avis"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:109 ../../library/Class/AdminVar.php:107
+#: ../../library/Class/AdminVar.php:359
 msgid ""
 "Désactivé: ne requiert pas d'identification pour saisir des  commentaires. "
 "<br /> Activé: requiert l'identification pour saisir des commentaires."
@@ -7867,6 +8109,11 @@ msgstr ""
 msgid "Désinscription"
 msgstr "ÃŽnscriere"
 
+#: ../../library/Class/Activity/UnregistrationMail.php:38
+#, fuzzy, php-format
+msgid "Désinscription de l'activité \"%s\""
+msgstr "la buletinul informativ"
+
 #: ../../library/Class/Formation/UnregistrationMail.php:38
 #, fuzzy, php-format
 msgid "Désinscription de la formation \"%s\""
@@ -7879,6 +8126,7 @@ msgstr "la buletinul informativ"
 #: ../../application/modules/opac/controllers/AuthController.php:325
 #: ../../application/modules/opac/controllers/AuthController.php:339
 #: ../../application/modules/opac/controllers/AuthController.php:344
+#: ../../application/modules/opac/controllers/AuthController.php:367
 #, fuzzy
 msgid "Désinscription de la lettre d'information: "
 msgstr "la buletinul informativ"
@@ -7910,6 +8158,10 @@ msgstr ""
 msgid "Désolé, cette page n'existe pas"
 msgstr ""
 
+#: ../../application/modules/opac/controllers/AuthController.php:146
+msgid "Désolé, requête incomplète"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/RenderSessions.php:68
 #: ../../library/ZendAfi/View/Helper/Redmine/IssueJournal.php:50
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:204
@@ -8076,6 +8328,7 @@ msgstr "Editor :"
 #: ../../application/modules/opac/controllers/RechercheController.php:517
 #: ../../application/modules/opac/controllers/RechercheController.php:454
 #: ../../application/modules/opac/controllers/RechercheController.php:472
+#: ../../application/modules/opac/controllers/RechercheController.php:463
 #, php-format
 msgid "Editeur : %s"
 msgstr "Editor : %s"
@@ -8128,6 +8381,7 @@ msgid "Effectif maximum atteint"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:38
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:40
 msgid "Effectuer un test d'envoi"
 msgstr ""
 
@@ -8193,6 +8447,7 @@ msgstr "Amplasare"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:133
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:134
 #: ../../application/modules/admin/views/scripts/bib/localisationsmaj.phtml:154
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:105
 msgid "Emplacements"
 msgstr "Amplasări"
 
@@ -8236,6 +8491,8 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:74
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:79
 #: ../../application/modules/opac/controllers/BibNumeriqueController.php:289
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:88
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:94
 msgid "Emprunter le livre au format EPUB"
 msgstr ""
 
@@ -8517,6 +8774,7 @@ msgstr "Trimiteţi"
 #: ../../application/modules/admin/views/scripts/newsletter/index.phtml:22
 #: ../../application/modules/admin/controllers/NewsletterController.php:52
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:47
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:51
 #, fuzzy
 msgid "Envoyer la lettre d'information ?"
 msgstr "la buletinul informativ"
@@ -8556,6 +8814,11 @@ msgstr ""
 msgid "Envoyer à cette adresse"
 msgstr "Relansaţi această căutare"
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#, fuzzy
+msgid "Envoyez la lettre d'information"
+msgstr "la buletinul informativ"
+
 #: ../../library/ZendAfi/View/Helper/ReponseFormulaireFilled.php:28
 #, fuzzy
 msgid "Envoyé le"
@@ -8588,6 +8851,7 @@ msgstr "Eroare"
 #: ../../application/modules/admin/controllers/IndexController.php:131
 #: ../../application/modules/admin/controllers/IndexController.php:139
 #: ../../application/modules/admin/controllers/IndexController.php:142
+#: ../../application/modules/admin/controllers/IndexController.php:146
 msgid "Erreur : La demande de mise à jour n'a pas pu être envoyée au serveur"
 msgstr ""
 
@@ -8686,6 +8950,7 @@ msgstr "Editor : %s"
 #: ../../application/modules/opac/controllers/AuthController.php:358
 #: ../../application/modules/opac/controllers/AuthController.php:372
 #: ../../application/modules/opac/controllers/AuthController.php:377
+#: ../../application/modules/opac/controllers/AuthController.php:400
 msgid "Erreur lors de l\\inscription à la newsletter."
 msgstr ""
 
@@ -8710,6 +8975,7 @@ msgstr "Eroare"
 #: ../../application/modules/admin/controllers/IndexController.php:84
 #: ../../application/modules/admin/controllers/IndexController.php:90
 #: ../../application/modules/admin/controllers/IndexController.php:93
+#: ../../application/modules/admin/controllers/IndexController.php:102
 #, php-format
 msgid "Erreur(s) : %s, variable %s NON sauvegardée"
 msgstr ""
@@ -8721,6 +8987,11 @@ msgstr ""
 msgid "Erreur: "
 msgstr "Eroare"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:43
+#, fuzzy
+msgid "Erreurs"
+msgstr "Eroare"
+
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:58
 #: ../../library/ZendAfi/Feed/SearchResultHeader.php:49
 msgid "Et "
@@ -8759,7 +9030,7 @@ msgstr "Export de coÅŸ"
 msgid "Etat du système"
 msgstr "Export de coÅŸ"
 
-#: ../../library/Class/AdminVar.php:220
+#: ../../library/Class/AdminVar.php:220 ../../library/Class/AdminVar.php:241
 msgid ""
 "Etendre automatiquement le résultat de recherche en rajoutant des \"OU\" "
 "entre les mots saisis"
@@ -8808,6 +9079,7 @@ msgid "Etes-vous sûr de vouloir supprimer cette annexe ?"
 msgstr "Sunteţi sigur(ă) că vreţi să suprimaţi acest coş?"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:697
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:706
 #, fuzzy
 msgid "Etes-vous sûr de vouloir supprimer cette catégorie ?"
 msgstr "Sunteţi sigur(ă) că vreţi să ştergeţi această categorie?"
@@ -8898,6 +9170,7 @@ msgstr "Export de coÅŸ"
 #: ../../library/ZendAfi/View/Helper/CoreFiveFileInput.php:26
 #: ../../library/ZendAfi/View/Helper/CoreFiveFileInput.php:32
 #: ../../library/ZendAfi/View/Helper/CoreFiveFileInput.php:51
+#: ../../library/ZendAfi/View/Helper/CoreFiveFileInput.php:45
 msgid "Explorer le serveur"
 msgstr "Explorare server"
 
@@ -9263,6 +9536,7 @@ msgstr "Următoarele întâlniri"
 #: ../../library/ZendAfi/View/Helper/Admin/ListViewMode.php:57
 #: ../../library/ZendAfi/View/Helper/Admin/ListViewMode.php:52
 #: ../../library/ZendAfi/View/Helper/Admin/ListViewMode.php:51
+#: ../../library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php:37
 msgid "Filtrer"
 msgstr "Filtrează"
 
@@ -9433,6 +9707,12 @@ msgstr "Fonduri"
 msgid "Fonds"
 msgstr "Fonduri"
 
+#: ../../library/Class/AdminVar.php:288
+msgid ""
+"Forcer l'accès au site par le protocole HTTPS. Nécessite l'installation et "
+"la configuration appropriée du serveur Web"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/DomainWidget.php:67
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:91
 #: ../../library/ZendAfi/Form/Configuration/DomainWidget.php:64
@@ -9639,6 +9919,7 @@ msgstr "Gen"
 #: ../../library/ZendAfi/Form/Album.php:201
 #: ../../application/modules/opac/views/scripts/recherche/avancee.phtml:147
 #: ../../application/modules/admin/views/scripts/bib/localisationsmaj.phtml:159
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:80
 msgid "Genres"
 msgstr "Genuri"
 
@@ -9685,6 +9966,7 @@ msgstr "Administrator de conţinut"
 #: ../../library/Class/AdminVar.php:245
 ../../library/Class/AdminVar.php:245
 #: ../../library/Class/AdminVar.php:272 ../../library/Class/AdminVar.php:273
 #: ../../library/Class/AdminVar.php:283 ../../library/Class/AdminVar.php:284
+#: ../../library/Class/AdminVar.php:171
 msgid "Gln de la collectivité, il est fourni par Dilicom."
 msgstr ""
 
@@ -9726,6 +10008,7 @@ msgstr "Utilizatori"
 
 #: ../../library/Class/Newsletter.php:482
 #: ../../library/Class/Newsletter.php:493
+#: ../../library/Class/Newsletter.php:500
 #, php-format
 msgid "Groupe manuel pour la lettre \"%s\""
 msgstr ""
@@ -9760,6 +10043,8 @@ msgstr ""
 #: ../../application/modules/admin/controllers/NewsletterController.php:236
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:90
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:109
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:97
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:116
 #, fuzzy
 msgid "Groupes destinataires"
 msgstr "Comentariu"
@@ -9848,6 +10133,7 @@ msgstr "Criterii generale"
 #: ../../library/Class/AdminVar.php:207
 ../../library/Class/AdminVar.php:207
 #: ../../library/Class/AdminVar.php:235 ../../library/Class/AdminVar.php:236
 #: ../../library/Class/AdminVar.php:246 ../../library/Class/AdminVar.php:247
+#: ../../library/Class/AdminVar.php:134
 msgid ""
 "Gérer la sitothèque dans la bibliothèque numérique, nécessite l'activation "
 "de la bibliothèque numérique"
@@ -9999,12 +10285,14 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:237
 ../../library/Class/AdminVar.php:237
 #: ../../library/Class/AdminVar.php:264 ../../library/Class/AdminVar.php:265
 #: ../../library/Class/AdminVar.php:275 ../../library/Class/AdminVar.php:276
+#: ../../library/Class/AdminVar.php:163
 msgid "ID client Jamendo"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:238
 ../../library/Class/AdminVar.php:238
 #: ../../library/Class/AdminVar.php:265 ../../library/Class/AdminVar.php:266
 #: ../../library/Class/AdminVar.php:276 ../../library/Class/AdminVar.php:277
+#: ../../library/Class/AdminVar.php:164
 msgid "ID client SoundCloud"
 msgstr ""
 
@@ -10048,6 +10336,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:306
 ../../library/Class/AdminVar.php:306
 #: ../../library/Class/AdminVar.php:210 ../../library/Class/AdminVar.php:211
 #: ../../library/Class/AdminVar.php:221 ../../library/Class/AdminVar.php:212
+#: ../../library/Class/AdminVar.php:387
 msgid "Id du connecteur Le Social"
 msgstr ""
 
@@ -10102,6 +10391,7 @@ msgstr "Nume de utilizator"
 #: ../../library/Class/AdminVar.php:223
 ../../library/Class/AdminVar.php:223
 #: ../../library/Class/AdminVar.php:250 ../../library/Class/AdminVar.php:251
 #: ../../library/Class/AdminVar.php:261 ../../library/Class/AdminVar.php:262
+#: ../../library/Class/AdminVar.php:149
 msgid "Identifiant SSO Cyberlibris"
 msgstr ""
 
@@ -10109,6 +10399,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:242
 ../../library/Class/AdminVar.php:242
 #: ../../library/Class/AdminVar.php:269 ../../library/Class/AdminVar.php:270
 #: ../../library/Class/AdminVar.php:280 ../../library/Class/AdminVar.php:281
+#: ../../library/Class/AdminVar.php:168
 #, fuzzy
 msgid "Identifiant code bibliothèque Vodeclic"
 msgstr "Gestionare biblioteci"
@@ -10123,6 +10414,7 @@ msgstr "Numele de utilizator începe cu     "
 #: ../../library/Class/AdminVar.php:268
 ../../library/Class/AdminVar.php:268
 #: ../../library/Class/AdminVar.php:295 ../../library/Class/AdminVar.php:296
 #: ../../library/Class/AdminVar.php:306 ../../library/Class/AdminVar.php:307
+#: ../../library/Class/AdminVar.php:194
 msgid "Identifiant d'accès au serveur OAI Cité de la Musique"
 msgstr ""
 
@@ -10130,6 +10422,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:266
 ../../library/Class/AdminVar.php:266
 #: ../../library/Class/AdminVar.php:293 ../../library/Class/AdminVar.php:294
 #: ../../library/Class/AdminVar.php:304 ../../library/Class/AdminVar.php:305
+#: ../../library/Class/AdminVar.php:192
 msgid "Identifiant du portail chez 1D touch"
 msgstr ""
 
@@ -10137,6 +10430,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:301 ../../library/Class/AdminVar.php:304
 #: ../../library/Class/AdminVar.php:208 ../../library/Class/AdminVar.php:209
 #: ../../library/Class/AdminVar.php:219 ../../library/Class/AdminVar.php:210
+#: ../../library/Class/AdminVar.php:233
 #, fuzzy
 msgid "Identifiant du project Redmine"
 msgstr "Numele de utilizator sau parola incorecte    "
@@ -10179,6 +10473,7 @@ msgstr "Numele de utilizator sau parola incorecte    "
 #: ../../library/Class/AdminVar.php:241
 ../../library/Class/AdminVar.php:241
 #: ../../library/Class/AdminVar.php:268 ../../library/Class/AdminVar.php:269
 #: ../../library/Class/AdminVar.php:279 ../../library/Class/AdminVar.php:280
+#: ../../library/Class/AdminVar.php:167
 msgid "Identifiant partenaire Vodeclic"
 msgstr ""
 
@@ -10188,6 +10483,7 @@ msgid "Identifiant unique"
 msgstr "Nume de utilizator"
 
 #: ../../library/Class/AdminVar.php:172 ../../library/Class/AdminVar.php:166
+#: ../../library/Class/AdminVar.php:340
 msgid ""
 "Identifiant unique (attention: la modification de cette variable impactera "
 "les outils de suivi de cette installation)"
@@ -10643,6 +10939,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:147
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:159
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:160
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:125
 msgid "Indices Dewey"
 msgstr "Indicii Dewey"
 
@@ -10732,6 +11029,9 @@ msgstr "Căsuţă de căutare"
 #: ../../library/ZendAfi/View/Helper/Abonne/Loans.php:65
 #: ../../library/ZendAfi/View/Helper/Abonne/Loans.php:60
 #: ../../library/ZendAfi/View/Helper/Abonne/Loans.php:61
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:19
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:25
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:226
 #, fuzzy
 msgid "Informations"
 msgstr "Informaţie"
@@ -10792,6 +11092,7 @@ msgstr "Vizualizare instrucţiuni"
 #: ../../library/ZendAfi/View/Helper/RenderSessions.php:62
 #: ../../library/ZendAfi/Form/Admin/Library.php:100
 #: ../../library/ZendAfi/Form/Admin/Library.php:112
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:220
 msgid "Inscription"
 msgstr "ÃŽnscriere"
 
@@ -10801,6 +11102,7 @@ msgid "Inscription automatique"
 msgstr "ÃŽnscriere"
 
 #: ../../library/ZendAfi/View/Helper/TagSessionFormationInscription.php:54
+#: ../../library/ZendAfi/View/Helper/TagSessionActivityInscription.php:54
 #, fuzzy
 msgid "Inscription non permise"
 msgstr "ÃŽnscriere"
@@ -10812,6 +11114,7 @@ msgstr "ÃŽnscriere"
 #: ../../application/modules/opac/controllers/AuthController.php:269
 #: ../../application/modules/opac/controllers/AuthController.php:283
 #: ../../application/modules/opac/controllers/AuthController.php:288
+#: ../../application/modules/opac/controllers/AuthController.php:311
 #, fuzzy
 msgid "Inscription à la lettre d'information: "
 msgstr "la buletinul informativ"
@@ -10823,6 +11126,7 @@ msgstr "la buletinul informativ"
 #: ../../application/modules/opac/controllers/AuthController.php:351
 #: ../../application/modules/opac/controllers/AuthController.php:365
 #: ../../application/modules/opac/controllers/AuthController.php:370
+#: ../../application/modules/opac/controllers/AuthController.php:393
 msgid "Inscription à la newsletter invalide."
 msgstr ""
 
@@ -10840,6 +11144,7 @@ msgstr "la buletinul informativ"
 
 #: ../../application/modules/admin/controllers/FormationController.php:333
 #: ../../library/ZendAfi/View/Helper/Admin/FormationSubscribers.php:62
+#: ../../library/ZendAfi/View/Helper/Admin/ActivitySubscribers.php:62
 #, fuzzy
 msgid "Inscrire les stagiaires sélectionnés"
 msgstr "Vedeţi fluxurile RSS selectate"
@@ -10860,7 +11165,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:138 ../../library/Class/AdminVar.php:136
 #: ../../library/Class/AdminVar.php:139
 ../../library/Class/AdminVar.php:139
-#: ../../library/Class/AdminVar.php:140
+#: ../../library/Class/AdminVar.php:140 ../../library/Class/AdminVar.php:314
 msgid "Interdire la modification de la fiche abonne"
 msgstr ""
 
@@ -10988,17 +11293,27 @@ msgstr "Obiecte java-script"
 
 #: ../../library/Class/AdminVar.php:119 ../../library/Class/AdminVar.php:117
 #: ../../library/Class/AdminVar.php:111
 ../../library/Class/AdminVar.php:111
+#: ../../library/Class/AdminVar.php:366
 msgid "Javascript code for statistics"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:179 ../../library/Class/AdminVar.php:177
 #: ../../library/Class/AdminVar.php:180
 ../../library/Class/AdminVar.php:180
 #: ../../library/Class/AdminVar.php:181 ../../library/Class/AdminVar.php:190
-#: ../../library/Class/AdminVar.php:184
+#: ../../library/Class/AdminVar.php:184 ../../library/Class/AdminVar.php:281
 #, fuzzy
 msgid "Je ne veux plus recevoir cette lettre d'information"
 msgstr "Crearea unui buletin informativ"
 
+#: ../../application/modules/api/controllers/UserController.php:36
+#, fuzzy
+msgid "Jeton d'autorisation invalide"
+msgstr "Codul anti-spam este invalid."
+
+#: ../../application/modules/api/controllers/UserController.php:33
+msgid "Jeton d'autorisation non fourni"
+msgstr ""
+
 #: ../../library/Class/Ouverture.php:54
 ../../library/Class/Ouverture.php:54
 msgid "Jeudi"
 msgstr ""
@@ -11096,6 +11411,11 @@ msgstr ""
 msgid "L'action %s est déjà définie`"
 msgstr ""
 
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Activity.php:30
+#, fuzzy, php-format
+msgid "L'activité \"%s\" a été sauvegardée"
+msgstr "Nu a fost găsit nici un articol"
+
 #: ../../application/modules/opac/controllers/RssController.php:128
 #: ../../application/modules/opac/controllers/RssController.php:144
 #: ../../application/modules/opac/views/scripts/rss/view-raw-rss.phtml:3
@@ -11119,6 +11439,10 @@ msgstr "Adresa e-mail este invalidă sau este deja utilizată."
 msgid "L'album \"%s\" a été créé"
 msgstr ""
 
+#: ../../library/Class/Album.php:1133
+msgid "L'album doit avoir un type de document"
+msgstr ""
+
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Annexe.php:32
 #, fuzzy, php-format
 msgid "L'annexe \"%s\" a été ajoutée"
@@ -11134,6 +11458,12 @@ msgstr "Nu a fost găsită nici o informaţie"
 msgid "L'annexe \"%s\" a été suppriméee"
 msgstr "Nu a fost găsit nici un articol"
 
+#: ../../library/Class/Album.php:1126
+#, fuzzy, php-format
+msgid "L'année doit être comprise entre %s et %s"
+msgstr ""
+"Părerea dvs. trebuie să aibă o lungime cuprinsă între %d şi %d caractere"
+
 #: ../../application/modules/admin/controllers/CmsController.php:36
 #: ../../application/modules/admin/controllers/CmsController.php:34
 #: ../../application/modules/admin/controllers/CmsController.php:33
@@ -11172,6 +11502,7 @@ msgstr ""
 #: ../../library/Class/AvisNotice.php:379
 #: ../../library/Class/AvisNotice.php:386
 #: ../../library/Class/AvisNotice.php:394
+#: ../../library/Class/AvisNotice.php:396
 #, php-format
 msgid "L'avis doit avoir une longueur comprise entre %s et %s caractères"
 msgstr ""
@@ -11199,6 +11530,8 @@ msgstr ""
 #: ../../application/modules/opac/controllers/RechercheController.php:567
 #: ../../application/modules/opac/controllers/RechercheController.php:681
 #: ../../application/modules/opac/controllers/RechercheController.php:691
+#: ../../application/modules/opac/controllers/RechercheController.php:526
+#: ../../application/modules/opac/controllers/RechercheController.php:640
 msgid "L'exemplaire n'existe pas"
 msgstr ""
 
@@ -11249,6 +11582,13 @@ msgstr ""
 msgid "L'inscription à cette session est fermée"
 msgstr ""
 
+#: ../../library/Class/Activity/UnregistrationMail.php:44
+#, fuzzy, php-format
+msgid ""
+"L'usager <a href=\"%s\">%s (courriel: %s)</a> s'est désinscrit de l'activité "
+"<a href=\"%s\">%s</a>"
+msgstr "la buletinul informativ"
+
 #: ../../library/Class/Formation/UnregistrationMail.php:44
 #, fuzzy, php-format
 msgid ""
@@ -11256,6 +11596,13 @@ msgid ""
 "formation <a href=\"%s\">%s</a>"
 msgstr "la buletinul informativ"
 
+#: ../../library/Class/Activity/RegistrationMail.php:44
+#, fuzzy, php-format
+msgid ""
+"L'usager <a href=\"%s\">%s (courriel: %s)</a> vient de s'inscrire à "
+"l'activité <a href=\"%s\">%s</a>"
+msgstr "la buletinul informativ"
+
 #: ../../library/Class/Formation/RegistrationMail.php:44
 #, php-format
 msgid ""
@@ -11412,6 +11759,7 @@ msgid "La commande %s a échoué : %s"
 msgstr "Prelungire nereuşită"
 
 #: ../../application/modules/admin/controllers/ModulesController.php:439
+#: ../../application/modules/admin/controllers/ModulesController.php:434
 #, fuzzy
 msgid "La configuration a été enregistrée"
 msgstr "Rezervarea dvs. a fost înregistrată."
@@ -11435,6 +11783,7 @@ msgstr "Nu a fost găsită nici o informaţie"
 #: ../../application/modules/admin/controllers/IndexController.php:130
 #: ../../application/modules/admin/controllers/IndexController.php:138
 #: ../../application/modules/admin/controllers/IndexController.php:141
+#: ../../application/modules/admin/controllers/IndexController.php:145
 msgid "La demande de mise à jour a été envoyée au serveur"
 msgstr ""
 
@@ -11554,6 +11903,7 @@ msgstr "Nu a fost găsit nici un articol"
 #: ../../application/modules/admin/controllers/SessionFormationController.php:33
 #: ../../application/modules/admin/controllers/SessionFormationController.php:31
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionFormation.php:31
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionActivity.php:31
 #, php-format
 msgid "La session \"%s\" a été sauvegardée"
 msgstr ""
@@ -11569,6 +11919,7 @@ msgstr ""
 #: ../../library/Class/CriteresRecherche.php:419
 #: ../../library/Class/CriteresRecherche.php:422
 #: ../../library/Class/CriteresRecherche.php:448
+#: ../../library/Class/CriteresRecherche.php:450
 #, fuzzy
 msgid "La sélection ne contient aucune notice"
 msgstr "Acest meniu nu conţine date"
@@ -11646,6 +11997,7 @@ msgstr "Validare selecţie"
 #: ../../library/ZendAfi/View/Helper/Admin/ProfileSelect.php:98
 #: ../../application/modules/opac/views/scripts/recherche/avancee.phtml:160
 #: ../../library/ZendAfi/View/Helper/Admin/SearchUsers.php:49
+#: ../../library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php:38
 msgid "Lancer la recherche"
 msgstr "Lansare căutare"
 
@@ -11725,6 +12077,7 @@ msgstr "Limba(i)"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:68
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:80
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:81
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:85
 msgid "Langues"
 msgstr "Limbi"
 
@@ -11768,6 +12121,7 @@ msgstr "%s"
 #: ../../application/modules/admin/controllers/IndexController.php:108
 #: ../../application/modules/admin/controllers/IndexController.php:116
 #: ../../application/modules/admin/controllers/IndexController.php:119
+#: ../../application/modules/admin/controllers/IndexController.php:123
 msgid "Le cache de Bokeh a été vidé"
 msgstr ""
 
@@ -11932,6 +12286,7 @@ msgstr "Nu a fost găsit nici un articol"
 #: ../../application/modules/admin/controllers/CatalogueController.php:63
 #: ../../application/modules/admin/controllers/CatalogueController.php:57
 #: ../../application/modules/admin/controllers/CatalogueController.php:54
+#: ../../application/modules/admin/controllers/CatalogueController.php:53
 msgid ""
 "Le domaine ne ne peut pas être mis en favori utilisateur sans critères "
 "d'indexation"
@@ -11946,6 +12301,7 @@ msgid "Le fichier dépasse la taille limite (upload_max_filesize de php.ini)"
 msgstr ""
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:200
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:202
 #, php-format
 msgid "Le fichier est trop petit : %s mo -> taille minimum attendue : %s mo"
 msgstr ""
@@ -12000,6 +12356,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:202
 ../../library/Class/AdminVar.php:202
 #: ../../library/Class/AdminVar.php:230 ../../library/Class/AdminVar.php:231
 #: ../../library/Class/AdminVar.php:241 ../../library/Class/AdminVar.php:242
+#: ../../library/Class/AdminVar.php:129
 msgid ""
 "Le gestionnaire de contenu affiche les albums sous forme de liste paginée au "
 "lieu de d'une arborescence. Cet affichage est adapté lorsque le nombre "
@@ -12009,6 +12366,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:184 ../../library/Class/AdminVar.php:182
 #: ../../library/Class/AdminVar.php:185
 ../../library/Class/AdminVar.php:185
 #: ../../library/Class/AdminVar.php:186 ../../library/Class/AdminVar.php:195
+#: ../../library/Class/AdminVar.php:252
 msgid ""
 "Le gestionnaire de contenu affiche les articles sous forme de liste paginée "
 "au lieu de d'une arborescence. Cet affichage est adapté lorsque le nombre "
@@ -12175,6 +12533,11 @@ msgstr "Câmpuri disponibile"
 msgid "Le territoire contient %s notices"
 msgstr "Teritoriul conţine %s instrucţiuni"
 
+#: ../../library/Class/Album.php:1131
+#, fuzzy
+msgid "Le titre est obligatoire"
+msgstr "specificaţia este obligatorie."
+
 #: ../../application/modules/telephone/views/scripts/recherche/avis.phtml:14
 #, fuzzy
 msgid "Lecteurs du portail"
@@ -12231,6 +12594,13 @@ msgid ""
 "contenues."
 msgstr ""
 
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:111
+msgid ""
+"Les critères ci-dessous se cumulent entre eux (opérateur logique \"ou\")."
+"<br>La dewey et la pcdm4 incluent automatiquement tous leurs sous-indices."
+"<br>Les mots matières incluent toutes les sous-vedettes du mot choisi."
+msgstr ""
+
 #: ../../library/ZendAfi/Form/ChangeKiosqueSelection.php:123
 #, fuzzy
 msgid "Les derniers paniers du domaine "
@@ -12326,6 +12696,7 @@ msgid "Les sites les plus récents"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:216 ../../library/Class/AdminVar.php:207
+#: ../../library/Class/AdminVar.php:226
 #, fuzzy
 msgid ""
 "Les utilisateurs peuvent sélectionner des bibliothèques favorites pour leurs "
@@ -12395,6 +12766,7 @@ msgstr "Vizualizare instrucţiuni"
 #: ../../application/modules/admin/views/scripts/batch/index.phtml:21
 #: ../../application/modules/admin/views/scripts/profil/_formProfil.phtml:30
 #: ../../application/modules/admin/views/scripts/batch/index.phtml:18
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:29
 msgid "Libelle"
 msgstr "Specificaţie"
 
@@ -12476,6 +12848,7 @@ msgstr "specificaţia conţine"
 #: ../../library/Class/AdminVar.php:211
 ../../library/Class/AdminVar.php:211
 #: ../../library/Class/AdminVar.php:239 ../../library/Class/AdminVar.php:240
 #: ../../library/Class/AdminVar.php:250 ../../library/Class/AdminVar.php:251
+#: ../../library/Class/AdminVar.php:138
 msgid "Libellé de regroupement des abonnés"
 msgstr ""
 
@@ -12553,14 +12926,14 @@ msgstr "specificaţia începe cu"
 
 #: ../../library/Class/AdminVar.php:143 ../../library/Class/AdminVar.php:141
 #: ../../library/Class/AdminVar.php:144
 ../../library/Class/AdminVar.php:144
-#: ../../library/Class/AdminVar.php:145
+#: ../../library/Class/AdminVar.php:145 ../../library/Class/AdminVar.php:319
 #, fuzzy
 msgid "Libellé pour la Dewey"
 msgstr "Specificaţie"
 
 #: ../../library/Class/AdminVar.php:142 ../../library/Class/AdminVar.php:140
 #: ../../library/Class/AdminVar.php:143
 ../../library/Class/AdminVar.php:143
-#: ../../library/Class/AdminVar.php:144
+#: ../../library/Class/AdminVar.php:144 ../../library/Class/AdminVar.php:318
 #, fuzzy
 msgid "Libellé pour la PCDM4"
 msgstr "Specificaţie"
@@ -12667,7 +13040,7 @@ msgstr "Link permanent"
 #: ../../library/Class/AdminVar.php:177 ../../library/Class/AdminVar.php:175
 #: ../../library/Class/AdminVar.php:178
 ../../library/Class/AdminVar.php:178
 #: ../../library/Class/AdminVar.php:179 ../../library/Class/AdminVar.php:188
-#: ../../library/Class/AdminVar.php:182
+#: ../../library/Class/AdminVar.php:182 ../../library/Class/AdminVar.php:279
 #, fuzzy
 msgid "Lien pour se désinscrire de cette lettre d'information : {{URL}}"
 msgstr "la buletinul informativ"
@@ -12825,6 +13198,11 @@ msgstr ""
 msgid "Lien vers ma fiche d'abonné"
 msgstr "Fişă bibliotecă:     "
 
+#: ../../library/Class/Systeme/ModulesMenu/AbonneActivities.php:32
+#, fuzzy
+msgid "Lien vers mes activités"
+msgstr "Link internet"
+
 #: ../../library/Class/Systeme/ModulesMenu/AbonneCards.php:32
 #, fuzzy
 msgid "Lien vers mes cartes"
@@ -12994,6 +13372,9 @@ msgstr "Aviz asupra instrucţiunilor"
 #: ../../library/ZendAfi/View/Helper/Abonne/ReservationsTable.php:142
 #: ../../library/ZendAfi/View/Helper/Abonne/ReservationsTable.php:136
 #: ../../library/Class/Systeme/ModulesAccueil/Calendrier.php:60
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:18
+#: ../../application/modules/opac/views/scripts/abonne/activities-done.phtml:14
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:24
 msgid "Lieu"
 msgstr ""
 
@@ -13040,6 +13421,9 @@ msgstr ""
 #: ../../application/modules/opac/controllers/RechercheController.php:688
 #: ../../application/modules/opac/controllers/RechercheController.php:691
 #: ../../application/modules/opac/controllers/RechercheController.php:727
+#: ../../application/modules/opac/controllers/RechercheController.php:640
+#: ../../application/modules/opac/controllers/RechercheController.php:647
+#: ../../application/modules/opac/controllers/RechercheController.php:676
 msgid "Lieu de mise à disposition demandé"
 msgstr ""
 
@@ -13138,12 +13522,14 @@ msgstr "Aviz asupra instrucţiunilor"
 #: ../../library/Class/AdminVar.php:249
 ../../library/Class/AdminVar.php:249
 #: ../../library/Class/AdminVar.php:276 ../../library/Class/AdminVar.php:277
 #: ../../library/Class/AdminVar.php:287 ../../library/Class/AdminVar.php:288
+#: ../../library/Class/AdminVar.php:175
 msgid ""
 "Liste des adresses IP publiques autorisées pour la consultation des documents"
 msgstr ""
 
 #: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:112
 #: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:133
+#: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:132
 #, fuzzy
 msgid "Liste des albums"
 msgstr "Adaugă o categorie"
@@ -13153,6 +13539,7 @@ msgstr "Adaugă o categorie"
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:246
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:314
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:315
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:336
 #, fuzzy
 msgid "Liste des articles"
 msgstr "Adaugă o categorie"
@@ -13169,7 +13556,7 @@ msgstr "Adaugă o categorie"
 
 #: ../../library/Class/AdminVar.php:141 ../../library/Class/AdminVar.php:139
 #: ../../library/Class/AdminVar.php:142
 ../../library/Class/AdminVar.php:142
-#: ../../library/Class/AdminVar.php:143
+#: ../../library/Class/AdminVar.php:143 ../../library/Class/AdminVar.php:317
 msgid ""
 "Liste des champs que l'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;"
 "adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;"
@@ -13178,7 +13565,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:154 ../../library/Class/AdminVar.php:152
 #: ../../library/Class/AdminVar.php:155
 ../../library/Class/AdminVar.php:155
-#: ../../library/Class/AdminVar.php:156
+#: ../../library/Class/AdminVar.php:156 ../../library/Class/AdminVar.php:330
 msgid ""
 "Liste des codes des facettes qui ne sont pas limitées à l'affichage dans le "
 "résultat de recherche<br/>Exemple : T => Type de doc, Y => Annexe, B => "
@@ -13187,6 +13574,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:124 ../../library/Class/AdminVar.php:122
 #: ../../library/Class/AdminVar.php:125
 ../../library/Class/AdminVar.php:125
+#: ../../library/Class/AdminVar.php:299
 msgid ""
 "Liste des codes langue utilisées en plus du français séparées par des ;. "
 "Exemple: en;ro;es"
@@ -13222,7 +13610,7 @@ msgstr "Situaţi ca exemplar"
 #: ../../library/Class/AdminVar.php:156 ../../library/Class/AdminVar.php:154
 #: ../../library/Class/AdminVar.php:157
 ../../library/Class/AdminVar.php:157
 #: ../../library/Class/AdminVar.php:158 ../../library/Class/AdminVar.php:159
-#: ../../library/Class/AdminVar.php:223
+#: ../../library/Class/AdminVar.php:223 ../../library/Class/AdminVar.php:244
 #, php-format
 msgid ""
 "Liste des sites de recherche élargie (la chaine '%s' dans l'url sera "
@@ -13230,9 +13618,15 @@ msgid ""
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:174 ../../library/Class/AdminVar.php:168
+#: ../../library/Class/AdminVar.php:342
 msgid "Liste des tags à ajouter au rapport d'état du système"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:64
+#, fuzzy, php-format
+msgid "Lister les intégrations du %s"
+msgstr "Modificare titlu coÅŸ"
+
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:195
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:198
 #: ../../library/ZendAfi/View/Helper/ListeNotices.php:226
@@ -13286,6 +13680,7 @@ msgstr "Arhive video"
 #: ../../library/ZendAfi/View/Helper/Notice/Exemplaires.php:130
 #: ../../application/modules/admin/views/scripts/sito/edit.phtml:2
 #: ../../application/modules/admin/views/scripts/bib/localisationsmaj.phtml:88
+#: ../../library/ZendAfi/Controller/Action/Helper/BibListViewMode.php:69
 msgid "Localisation"
 msgstr "Localizare"
 
@@ -13306,6 +13701,7 @@ msgstr "Localizare"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:103
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:115
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:116
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:204
 #, fuzzy
 msgid "Localisations"
 msgstr "Localizare"
@@ -13349,6 +13745,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:225
 ../../library/Class/AdminVar.php:225
 #: ../../library/Class/AdminVar.php:252 ../../library/Class/AdminVar.php:253
 #: ../../library/Class/AdminVar.php:263 ../../library/Class/AdminVar.php:264
+#: ../../library/Class/AdminVar.php:151
 msgid "Login ARTE VOD"
 msgstr ""
 
@@ -13356,7 +13753,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:291 ../../library/Class/AdminVar.php:294
 #: ../../library/Class/AdminVar.php:321 ../../library/Class/AdminVar.php:322
 #: ../../library/Class/AdminVar.php:332 ../../library/Class/AdminVar.php:325
-#: ../../library/Class/AdminVar.php:326
+#: ../../library/Class/AdminVar.php:326 ../../library/Class/AdminVar.php:213
 msgid "Login du portail fourni par Kidilangues."
 msgstr ""
 
@@ -13364,7 +13761,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:295 ../../library/Class/AdminVar.php:298
 #: ../../library/Class/AdminVar.php:325 ../../library/Class/AdminVar.php:326
 #: ../../library/Class/AdminVar.php:336 ../../library/Class/AdminVar.php:329
-#: ../../library/Class/AdminVar.php:330
+#: ../../library/Class/AdminVar.php:330 ../../library/Class/AdminVar.php:217
 msgid "Login du portail fourni par Premier-Chapitre."
 msgstr ""
 
@@ -13501,6 +13898,7 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Album.php:192
 #: ../../library/ZendAfi/Form/Album/Ressource.php:87
 #: ../../library/ZendAfi/Form/Album.php:189
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:120
 msgid "Matières / sujets"
 msgstr "Domenii/subiecte"
 
@@ -13589,6 +13987,12 @@ msgstr ""
 msgid "Mercredi"
 msgstr "Alegeţi media"
 
+#: ../../application/modules/opac/controllers/AbonneController.php:1190
+#: ../../library/ZendAfi/View/Helper/Abonne/Activities.php:48
+#, fuzzy
+msgid "Mes activités suivies"
+msgstr "Modificare titlu coÅŸ"
+
 #: ../../library/ZendAfi/Form/User/Settings.php:57
 #: ../../library/ZendAfi/Form/User/Settings.php:59
 #, fuzzy
@@ -13618,6 +14022,7 @@ msgstr "Modificare titlu coÅŸ"
 #: ../../application/modules/opac/controllers/AbonneController.php:1195
 #: ../../library/ZendAfi/View/Helper/Abonne/Formations.php:52
 #: ../../application/modules/opac/controllers/AbonneController.php:1184
+#: ../../library/ZendAfi/View/Helper/Abonne/Activities.php:52
 #, fuzzy
 msgid "Mes inscriptions en cours"
 msgstr "Rezervări în curs"
@@ -13741,6 +14146,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:257
 ../../library/Class/AdminVar.php:257
 #: ../../library/Class/AdminVar.php:284 ../../library/Class/AdminVar.php:285
 #: ../../library/Class/AdminVar.php:295 ../../library/Class/AdminVar.php:296
+#: ../../library/Class/AdminVar.php:183
 msgid "Message d'avertissement affiché sur la popup d'emprunt"
 msgstr ""
 
@@ -13788,6 +14194,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/RechercheController.php:520
 #: ../../application/modules/opac/controllers/RechercheController.php:457
 #: ../../application/modules/opac/controllers/RechercheController.php:475
+#: ../../application/modules/opac/controllers/RechercheController.php:466
 msgid "Message du demandeur :"
 msgstr "Mesaj al solicitantului :"
 
@@ -13918,6 +14325,7 @@ msgstr "Actualizare a localizării"
 #: ../../application/modules/admin/controllers/IndexController.php:127
 #: ../../application/modules/admin/controllers/IndexController.php:130
 #: ../../library/ZendAfi/View/Helper/Admin/ContentNav.php:105
+#: ../../application/modules/admin/controllers/IndexController.php:134
 #, fuzzy
 msgid "Mise à jour de la charte graphique"
 msgstr "Actualizare a localizării"
@@ -13946,6 +14354,7 @@ msgstr "Actualizare a localizării"
 #: ../../application/modules/admin/controllers/CmsController.php:159
 #: ../../application/modules/admin/controllers/CmsController.php:150
 #: ../../application/modules/admin/controllers/CmsController.php:151
+#: ../../application/modules/admin/controllers/CmsController.php:154
 #, fuzzy
 msgid "Mise à jour des articles"
 msgstr "Aviz asupra articolelor"
@@ -14016,6 +14425,11 @@ msgstr ""
 msgid "Mode d'affichage"
 msgstr "Afişează Agenda"
 
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:63
+#, fuzzy
+msgid "Mode d'affichage des activities"
+msgstr "Proprietăţile modulului"
+
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:92
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:88
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:63
@@ -14026,6 +14440,7 @@ msgstr "Proprietăţile modulului"
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:87
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:83
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:58
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:58
 #, fuzzy
 msgid "Mode d'affichage des sessions"
 msgstr "Afişează mai multe instrucţiuni"
@@ -14119,6 +14534,7 @@ msgstr "Modificarea fiÅŸei dvs."
 #: ../../application/modules/admin/controllers/CatalogueController.php:117
 #: ../../application/modules/admin/controllers/CatalogueController.php:111
 #: ../../application/modules/admin/controllers/CatalogueController.php:108
+#: ../../application/modules/admin/controllers/CatalogueController.php:115
 #, fuzzy, php-format
 msgid "Modification du domaine: %s"
 msgstr "Modificarea fiÅŸei dvs."
@@ -14152,6 +14568,8 @@ msgstr "Modificarea fiÅŸei dvs."
 #: ../../library/ZendAfi/Controller/Plugin/Manager/ModeleFusion.php:28
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:474
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:501
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:477
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:504
 msgid "Modifier"
 msgstr "Modificare"
 
@@ -14167,6 +14585,16 @@ msgstr "Modificare"
 msgid "Modifier : %s"
 msgstr "Modificare bibliotecă: %s"
 
+#: ../../application/modules/admin/views/scripts/activity/_activity_actions.phtml:6
+#, fuzzy
+msgid "Modifier l'activité"
+msgstr "Adaugă o categorie"
+
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Activity.php:34
+#, fuzzy, php-format
+msgid "Modifier l'activité: %s"
+msgstr "Modificare bibliotecă: %s"
+
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:634
 #, fuzzy
 msgid "Modifier l'album"
@@ -14230,6 +14658,7 @@ msgid "Modifier la biographie"
 msgstr "Modifică fişa mea"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:683
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:692
 #, fuzzy
 msgid "Modifier la catégorie"
 msgstr "Adaugă o categorie"
@@ -14262,11 +14691,13 @@ msgid "Modifier la formation: %s"
 msgstr "Modificare titlu coÅŸ"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:28
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:30
 #, fuzzy
 msgid "Modifier la newsletter"
 msgstr "Modifică fişa mea"
 
 #: ../../application/modules/admin/views/scripts/formation/_session_actions.phtml:16
+#: ../../application/modules/admin/views/scripts/activity/_session_actions.phtml:16
 #, fuzzy
 msgid "Modifier la session"
 msgstr "Modificare bibliotecă: %s"
@@ -14274,6 +14705,7 @@ msgstr "Modificare bibliotecă: %s"
 #: ../../application/modules/admin/controllers/SessionFormationController.php:38
 #: ../../application/modules/admin/controllers/SessionFormationController.php:36
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionFormation.php:35
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionActivity.php:35
 #, fuzzy, php-format
 msgid "Modifier la session: %s"
 msgstr "Modificare bibliotecă: %s"
@@ -14287,6 +14719,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/IndexController.php:91
 #: ../../application/modules/admin/controllers/IndexController.php:97
 #: ../../application/modules/admin/controllers/IndexController.php:100
+#: ../../application/modules/admin/controllers/IndexController.php:85
 #, fuzzy, php-format
 msgid "Modifier la variable: %s"
 msgstr "Modificare bibliotecă: %s"
@@ -14443,6 +14876,7 @@ msgid "Modifier les informations du panier %s"
 msgstr "Modificare titlu coÅŸ"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:35
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:37
 #, fuzzy
 msgid "Modifier les inscrits"
 msgstr "Modificare bibliotecă: %s"
@@ -14602,16 +15036,19 @@ msgid "Modèle \"%s\" supprimé"
 msgstr "Rezervări în curs"
 
 #: ../../library/Class/ModeleFusion.php:97
+#: ../../library/Class/ModeleFusion.php:95
 #, fuzzy
 msgid "Modèle par défaut : liste d'articles"
 msgstr "Căsuţă setări iniţiale pentru diviziune"
 
 #: ../../library/Class/ModeleFusion.php:95
+#: ../../library/Class/ModeleFusion.php:93
 #, fuzzy
 msgid "Modèle par défaut : résultat de recherche"
 msgstr "Rezultatul căutarii"
 
 #: ../../library/Class/ModeleFusion.php:96
+#: ../../library/Class/ModeleFusion.php:94
 msgid "Modèle par défaut : une notice"
 msgstr ""
 
@@ -14652,12 +15089,14 @@ msgid ""
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:105
 ../../library/Class/AdminVar.php:105
+#: ../../library/Class/AdminVar.php:357
 msgid ""
 "Modération des avis des bibliothécaires.<br />  Désactivé: affichage sans "
 "attente de validation<br /> Activé: affichage seulement après validation"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:106 ../../library/Class/AdminVar.php:104
+#: ../../library/Class/AdminVar.php:356
 msgid ""
 "Modération des avis des lecteurs.<br /> Désactivé : affichage sans attente "
 "de validation<br /> Activé : affichage seulement après validation."
@@ -14851,6 +15290,7 @@ msgstr "Parolă"
 #: ../../library/Class/AdminVar.php:253
 ../../library/Class/AdminVar.php:253
 #: ../../library/Class/AdminVar.php:280 ../../library/Class/AdminVar.php:281
 #: ../../library/Class/AdminVar.php:291 ../../library/Class/AdminVar.php:292
+#: ../../library/Class/AdminVar.php:179
 msgid "Mot de passe FTP de diffusion des offres PNB Dilicom"
 msgstr ""
 
@@ -14858,6 +15298,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:270 ../../library/Class/AdminVar.php:273
 #: ../../library/Class/AdminVar.php:300 ../../library/Class/AdminVar.php:301
 #: ../../library/Class/AdminVar.php:311 ../../library/Class/AdminVar.php:312
+#: ../../library/Class/AdminVar.php:199
 #, fuzzy
 msgid "Mot de passe de l'utilisateur Orphea"
 msgstr "Gestionare utilizatori"
@@ -14866,12 +15307,14 @@ msgstr "Gestionare utilizatori"
 #: ../../library/Class/AdminVar.php:246
 ../../library/Class/AdminVar.php:246
 #: ../../library/Class/AdminVar.php:273 ../../library/Class/AdminVar.php:274
 #: ../../library/Class/AdminVar.php:284 ../../library/Class/AdminVar.php:285
+#: ../../library/Class/AdminVar.php:172
 msgid "Mot de passe de la collectivité, il est fourni par Dilicom."
 msgstr ""
 
 #: ../../application/modules/telephone/controllers/AuthController.php:81
 #: ../../application/modules/telephone/controllers/AuthController.php:75
 #: ../../application/modules/telephone/controllers/AuthController.php:89
+#: ../../application/modules/telephone/controllers/AuthController.php:95
 #, fuzzy
 msgid "Mot de passe ou date de naissance"
 msgstr "AÅ£i uitat parola"
@@ -15071,6 +15514,7 @@ msgstr "Afişează mai multe instrucţiuni"
 #: ../../library/Class/AdminVar.php:204
 ../../library/Class/AdminVar.php:204
 #: ../../library/Class/AdminVar.php:232 ../../library/Class/AdminVar.php:233
 #: ../../library/Class/AdminVar.php:243 ../../library/Class/AdminVar.php:244
+#: ../../library/Class/AdminVar.php:131
 msgid "Ne pas créer de zone 464 pour les médias dont le titre n'est pas saisi"
 msgstr ""
 
@@ -15279,7 +15723,7 @@ msgstr "Numele începe cu"
 #: ../../library/Class/AdminVar.php:159 ../../library/Class/AdminVar.php:157
 #: ../../library/Class/AdminVar.php:160
 ../../library/Class/AdminVar.php:160
 #: ../../library/Class/AdminVar.php:161 ../../library/Class/AdminVar.php:162
-#: ../../library/Class/AdminVar.php:226
+#: ../../library/Class/AdminVar.php:226 ../../library/Class/AdminVar.php:247
 msgid "Nom de domaine principal de l'OPAC, ex: monopac.macommune.fr"
 msgstr ""
 
@@ -15292,6 +15736,7 @@ msgstr "Vedeţi instrucţiunea"
 #: ../../library/Class/AdminVar.php:269 ../../library/Class/AdminVar.php:272
 #: ../../library/Class/AdminVar.php:299 ../../library/Class/AdminVar.php:300
 #: ../../library/Class/AdminVar.php:310 ../../library/Class/AdminVar.php:311
+#: ../../library/Class/AdminVar.php:198
 #, fuzzy
 msgid "Nom de l'utilisateur Orphea"
 msgstr "Utilizatori"
@@ -15305,6 +15750,7 @@ msgstr "Plan al bibliotecii: %s"
 
 #: ../../library/Class/AdminVar.php:118 ../../library/Class/AdminVar.php:116
 #: ../../library/Class/AdminVar.php:120
 ../../library/Class/AdminVar.php:120
+#: ../../library/Class/AdminVar.php:294
 msgid "Nom de la bibliothèque chez bibliosurf (en minuscules)"
 msgstr ""
 
@@ -15341,7 +15787,7 @@ msgstr "Numele responsabilului"
 #: ../../library/Class/AdminVar.php:157 ../../library/Class/AdminVar.php:155
 #: ../../library/Class/AdminVar.php:158
 ../../library/Class/AdminVar.php:158
 #: ../../library/Class/AdminVar.php:159 ../../library/Class/AdminVar.php:160
-#: ../../library/Class/AdminVar.php:224
+#: ../../library/Class/AdminVar.php:224 ../../library/Class/AdminVar.php:245
 #, fuzzy
 msgid "Nom du site"
 msgstr "Export de coÅŸ"
@@ -15362,6 +15808,7 @@ msgstr "Export de coÅŸ"
 #: ../../application/modules/opac/controllers/RechercheController.php:512
 #: ../../application/modules/opac/controllers/RechercheController.php:449
 #: ../../application/modules/opac/controllers/RechercheController.php:467
+#: ../../application/modules/opac/controllers/RechercheController.php:458
 #, php-format
 msgid "Nom et prénom : %s"
 msgstr "Nume ÅŸi prenume : %s"
@@ -15409,6 +15856,7 @@ msgstr "Număr de diviziuni"
 
 #: ../../library/Class/AdminVar.php:113 ../../library/Class/AdminVar.php:111
 #: ../../library/Class/AdminVar.php:115
 ../../library/Class/AdminVar.php:115
+#: ../../library/Class/AdminVar.php:289
 #, fuzzy
 msgid "Nombre d'avis maximum à afficher par utilisateur."
 msgstr "Întoarcere la listă"
@@ -15419,6 +15867,7 @@ msgid "Nombre d'avis à afficher"
 msgstr "Faţete : %s"
 
 #: ../../library/ZendAfi/View/Helper/RenderSession.php:216
+#: ../../library/ZendAfi/View/Helper/RenderSession.php:215
 #, fuzzy
 msgid "Nombre d'inscrits"
 msgstr "Utilizatori"
@@ -15469,14 +15918,17 @@ msgid "Nombre de Participants"
 msgstr "Număr de diviziuni"
 
 #: ../../library/Class/AdminVar.php:103 ../../library/Class/AdminVar.php:101
+#: ../../library/Class/AdminVar.php:348
 msgid "Nombre de caractères maximum autorisé à saisir dans les avis."
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:105 ../../library/Class/AdminVar.php:103
+#: ../../library/Class/AdminVar.php:350
 msgid "Nombre de caractères maximum à afficher dans le bloc critiques."
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:104 ../../library/Class/AdminVar.php:102
+#: ../../library/Class/AdminVar.php:349
 msgid "Nombre de caractères minimum autorisé à saisir dans les avis."
 msgstr ""
 
@@ -15519,6 +15971,7 @@ msgid "Nombre de formulaires : %s"
 msgstr "Moderare alerte"
 
 #: ../../library/Class/AdminVar.php:110 ../../library/Class/AdminVar.php:108
+#: ../../library/Class/AdminVar.php:360
 msgid "Nombre de jours de validité des nouvelles inscriptions sur le site"
 msgstr ""
 
@@ -15559,6 +16012,7 @@ msgstr "Număr de diviziuni"
 #: ../../library/Class/AdminVar.php:256
 ../../library/Class/AdminVar.php:256
 #: ../../library/Class/AdminVar.php:283 ../../library/Class/AdminVar.php:284
 #: ../../library/Class/AdminVar.php:294 ../../library/Class/AdminVar.php:295
+#: ../../library/Class/AdminVar.php:182
 msgid ""
 "Nombre de prêts simultanés maximum pour un abonné PNB Dilicom (par défaut 3)"
 msgstr ""
@@ -15567,6 +16021,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:255
 ../../library/Class/AdminVar.php:255
 #: ../../library/Class/AdminVar.php:282 ../../library/Class/AdminVar.php:283
 #: ../../library/Class/AdminVar.php:293 ../../library/Class/AdminVar.php:294
+#: ../../library/Class/AdminVar.php:181
 msgid "Nombre de prêts simultanés maximum pour un livre PNB Dilicom"
 msgstr ""
 
@@ -15636,7 +16091,7 @@ msgid "Nombre de versions : %s"
 msgstr "Număr de diviziuni"
 
 #: ../../library/Class/AdminVar.php:186 ../../library/Class/AdminVar.php:187
-#: ../../library/Class/AdminVar.php:196
+#: ../../library/Class/AdminVar.php:196 ../../library/Class/AdminVar.php:253
 msgid "Nombre maximum d'articles  en sélection multiple"
 msgstr ""
 
@@ -15656,6 +16111,7 @@ msgstr "Chioşc de instrucţiuni"
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:48
 #: ../../library/ZendAfi/Form/Configuration/Widget/PremierChapitre.php:41
 #: ../../library/ZendAfi/Form/Configuration/Widget/Reviews.php:42
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:48
 #, fuzzy
 msgid "Nombre à afficher"
 msgstr "Faţete : %s"
@@ -15789,6 +16245,7 @@ msgstr "Instrucţiune detaliată"
 #: ../../application/modules/opac/controllers/RechercheController.php:514
 #: ../../application/modules/opac/controllers/RechercheController.php:451
 #: ../../application/modules/opac/controllers/RechercheController.php:469
+#: ../../application/modules/opac/controllers/RechercheController.php:460
 msgid "Notice réservée : "
 msgstr "Instrucţiune rezervată :"
 
@@ -15854,6 +16311,11 @@ msgstr "Instrucţiuni similare"
 msgid "Notices similaires"
 msgstr "Instrucţiuni similare"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:40
+#, fuzzy
+msgid "Notices traitées"
+msgstr "Instrucţiuni similare"
+
 #: ../../application/modules/opac/views/scripts/help/cookies.phtml:9
 msgid ""
 "Nous utilisons uniquement des cookies visant à faciliter votre navigation. "
@@ -16010,6 +16472,7 @@ msgstr "Noutăţi de mai puţin de"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:92
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:104
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:105
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:70
 msgid "Nouveautés uniquement"
 msgstr "Doar noutăţi"
 
@@ -16027,6 +16490,11 @@ msgstr "Nouă căutare"
 msgid "Nouvelle demande"
 msgstr "** nouă localizare **"
 
+#: ../../library/Class/Activity/RegistrationMail.php:38
+#, fuzzy, php-format
+msgid "Nouvelle inscription à l'activité \"%s\""
+msgstr "la buletinul informativ"
+
 #: ../../library/Class/Formation/RegistrationMail.php:38
 #, fuzzy, php-format
 msgid "Nouvelle inscription à la formation \"%s\""
@@ -16132,6 +16600,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:120 ../../library/Class/AdminVar.php:118
 #: ../../library/Class/AdminVar.php:121
 ../../library/Class/AdminVar.php:121
+#: ../../library/Class/AdminVar.php:295
 msgid ""
 "Numéro de client Read Speaker <a target=\"_blank\" href=\"http://webreader."
 "readspeaker.com\">http://webreader.readspeaker.com</a>"
@@ -16166,11 +16635,13 @@ msgstr "Sunteţi abonat"
 #: ../../library/ZendAfi/Form/Register.php:196
 #: ../../library/ZendAfi/Form/Register.php:184
 #: ../../library/ZendAfi/Form/Configuration/AuthRegister.php:77
+#: ../../application/modules/telephone/controllers/AuthController.php:94
 msgid "N° de carte"
 msgstr ""
 
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:49
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:48
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:46
 msgid "Nécessite une intégration du catalogue pour être actif"
 msgstr ""
 
@@ -16357,6 +16828,7 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Configuration/Widget/Reviews.php:47
 #: ../../library/ZendAfi/Form/Configuration/Widget/Articles.php:48
 #: ../../library/ZendAfi/Form/Configuration/Menu/News.php:28
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:52
 #, fuzzy
 msgid "Ordre d'affichage"
 msgstr "Afişează Agenda"
@@ -16521,6 +16993,7 @@ msgid "Où le trouver dans mes bibliothèques favorites"
 msgstr "Gestionare biblioteci"
 
 #: ../../library/Class/AdminVar.php:112
 ../../library/Class/AdminVar.php:112
+#: ../../library/Class/AdminVar.php:367
 msgid "PIWIK authentication token for widgets"
 msgstr ""
 
@@ -16561,6 +17034,7 @@ msgstr "Dimensiune totală a site-ului"
 
 #: ../../library/Class/ModeleFusion.php:77
 #: ../../library/Class/ModeleFusion.php:78
+#: ../../library/Class/ModeleFusion.php:76
 #, fuzzy
 msgid "Page d'articles"
 msgstr "Categorie înrudită"
@@ -16572,6 +17046,7 @@ msgstr "Identificare"
 
 #: ../../library/Class/ModeleFusion.php:79
 #: ../../library/Class/ModeleFusion.php:80
+#: ../../library/Class/ModeleFusion.php:78
 #, fuzzy
 msgid "Page de notice"
 msgstr "Chioşc de instrucţiuni"
@@ -16662,6 +17137,7 @@ msgstr "CoÅŸ :"
 #: ../../application/modules/admin/controllers/CatalogueController.php:199
 #: ../../application/modules/admin/controllers/CatalogueController.php:193
 #: ../../application/modules/admin/controllers/CatalogueController.php:190
+#: ../../application/modules/admin/controllers/CatalogueController.php:209
 #, fuzzy, php-format
 msgid "Panier \"%s\" ajouté"
 msgstr "Ultimele site-uri adăugate"
@@ -16685,6 +17161,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/CatalogueController.php:209
 #: ../../application/modules/admin/controllers/CatalogueController.php:203
 #: ../../application/modules/admin/controllers/CatalogueController.php:200
+#: ../../application/modules/admin/controllers/CatalogueController.php:219
 #, php-format
 msgid "Panier \"%s\" retiré"
 msgstr ""
@@ -16773,6 +17250,7 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:80
 #: ../../application/modules/admin/views/scripts/modules/_options_cms.phtml:37
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:55
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:55
 msgid "Par date de création (plus récent en premier)"
 msgstr ""
 
@@ -16797,6 +17275,7 @@ msgstr "Palmaresul vizualizărilor"
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:83
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:79
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:54
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:54
 #, fuzzy
 msgid "Par nombre de participants"
 msgstr "Număr de diviziuni"
@@ -16827,6 +17306,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/modules/_options_cms.phtml:36
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:53
 #: ../../library/ZendAfi/Form/Configuration/Widget/ListOfSites.php:39
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:53
 #, fuzzy
 msgid "Par ordre de sélection"
 msgstr "Criterii de selecţie"
@@ -16868,6 +17348,7 @@ msgstr "Proprietăţile modulului"
 #: ../../library/Class/AdminVar.php:271 ../../library/Class/AdminVar.php:274
 #: ../../library/Class/AdminVar.php:301 ../../library/Class/AdminVar.php:302
 #: ../../library/Class/AdminVar.php:312 ../../library/Class/AdminVar.php:313
+#: ../../library/Class/AdminVar.php:200
 msgid ""
 "Paramètre permettant de choisir la langue des des ressources. La liste des "
 "codes disponibles se trouve à cette adresse http://help.orphea.com/43/"
@@ -16890,6 +17371,8 @@ msgstr "Parametrii site-ului"
 #: ../../library/Class/AdminVar.php:247 ../../library/Class/AdminVar.php:248
 #: ../../library/Class/AdminVar.php:256 ../../library/Class/AdminVar.php:257
 #: ../../library/Class/AdminVar.php:258 ../../library/Class/AdminVar.php:259
+#: ../../library/Class/AdminVar.php:144 ../../library/Class/AdminVar.php:145
+#: ../../library/Class/AdminVar.php:146
 msgid ""
 "Paramétrage <a href=\"http://forge.afi-sa.fr/projects/opac3/wiki/"
 "Ressources_externes_enrichissements#Numilog\">Numilog</a>"
@@ -16901,6 +17384,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:256 ../../library/Class/AdminVar.php:257
 #: ../../library/Class/AdminVar.php:258 ../../library/Class/AdminVar.php:267
 #: ../../library/Class/AdminVar.php:268 ../../library/Class/AdminVar.php:269
+#: ../../library/Class/AdminVar.php:155 ../../library/Class/AdminVar.php:156
 msgid ""
 "Paramétrage <a href=\"http://forge.afi-sa.fr/projects/opac3/wiki/"
 "Ressources_externes_enrichissements#Tout-Apprendre\">ToutApprendre</a>"
@@ -16921,6 +17405,10 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:252 ../../library/Class/AdminVar.php:253
 #: ../../library/Class/AdminVar.php:254 ../../library/Class/AdminVar.php:255
 #: ../../library/Class/AdminVar.php:250 ../../library/Class/AdminVar.php:256
+#: ../../library/Class/AdminVar.php:136 ../../library/Class/AdminVar.php:137
+#: ../../library/Class/AdminVar.php:139 ../../library/Class/AdminVar.php:140
+#: ../../library/Class/AdminVar.php:141 ../../library/Class/AdminVar.php:142
+#: ../../library/Class/AdminVar.php:143
 msgid "Paramétrage CVS"
 msgstr ""
 
@@ -16954,6 +17442,7 @@ msgid "Partager par email"
 msgstr "împărtăşiţi pe "
 
 #: ../../application/modules/admin/views/scripts/formation/index.phtml:26
+#: ../../application/modules/admin/views/scripts/activity/index.phtml:23
 #, fuzzy
 msgid "Participants"
 msgstr "Număr de diviziuni"
@@ -17024,7 +17513,7 @@ msgstr "Rezultatele următoare"
 #: ../../library/Class/AdminVar.php:292 ../../library/Class/AdminVar.php:295
 #: ../../library/Class/AdminVar.php:322 ../../library/Class/AdminVar.php:323
 #: ../../library/Class/AdminVar.php:333 ../../library/Class/AdminVar.php:326
-#: ../../library/Class/AdminVar.php:327
+#: ../../library/Class/AdminVar.php:327 ../../library/Class/AdminVar.php:214
 msgid "Password du portail fourni par Kidilangues."
 msgstr ""
 
@@ -17032,7 +17521,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:296 ../../library/Class/AdminVar.php:299
 #: ../../library/Class/AdminVar.php:326 ../../library/Class/AdminVar.php:327
 #: ../../library/Class/AdminVar.php:337 ../../library/Class/AdminVar.php:330
-#: ../../library/Class/AdminVar.php:331
+#: ../../library/Class/AdminVar.php:331 ../../library/Class/AdminVar.php:218
 msgid "Password du portail fourni par Premier-Chapitre"
 msgstr ""
 
@@ -17061,6 +17550,7 @@ msgstr "Å¢ara"
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:165
 #: ../../library/ZendAfi/Form/Album.php:200
 #: ../../library/ZendAfi/Form/Album.php:197
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:130
 msgid "Pcdm4"
 msgstr "Pcdm4"
 
@@ -17100,6 +17590,7 @@ msgstr "Adaugă o categorie"
 #: ../../library/ZendAfi/View/Helper/ModelActionsTable/Bib.php:46
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:538
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:549
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:552
 msgid "Permissions par défaut"
 msgstr ""
 
@@ -17140,6 +17631,7 @@ msgstr ""
 
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:45
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:44
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:46
 #, fuzzy
 msgid "Peut être un favori utilisateur"
 msgstr "Adaugă un utilizator"
@@ -17384,6 +17876,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:108
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:111
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:123
 msgid "Plein écran"
 msgstr ""
 
@@ -17431,6 +17924,7 @@ msgstr "Punct"
 #: ../../library/ZendAfi/View/Helper/TagListeCoches.php:267
 #: ../../library/Class/AdminVar.php:369 ../../library/Class/AdminVar.php:370
 #: ../../library/ZendAfi/View/Helper/TagListeCoches.php:279
+#: ../../library/Class/AdminVar.php:434
 msgid "Portail"
 msgstr "Portal"
 
@@ -17446,6 +17940,7 @@ msgstr "Portal"
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:199
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:196
 #: ../../library/ZendAfi/Form/Configuration/SearchResult.php:185
+#: ../../library/Class/AdminVar.php:239
 #, fuzzy
 msgid "Position"
 msgstr "Paginaţie"
@@ -17460,7 +17955,7 @@ msgstr "Rezultatul căutarii"
 #: ../../library/Class/AdminVar.php:180 ../../library/Class/AdminVar.php:178
 #: ../../library/Class/AdminVar.php:181
 ../../library/Class/AdminVar.php:181
 #: ../../library/Class/AdminVar.php:182 ../../library/Class/AdminVar.php:191
-#: ../../library/Class/AdminVar.php:217
+#: ../../library/Class/AdminVar.php:217 ../../library/Class/AdminVar.php:238
 #, fuzzy
 msgid "Position de la pagination en résultat de recherche"
 msgstr "Rezultatul căutarii"
@@ -17563,6 +18058,7 @@ msgid "Pour quelle durée ?"
 msgstr ""
 
 #: ../../application/modules/opac/views/scripts/recherche/reservation.phtml:8
+#: ../../application/modules/opac/views/scripts/recherche/reservation.phtml:6
 msgid ""
 "Pour réserver un ou des document(s), veuillez remplir le formulaire ci-"
 "dessous."
@@ -17703,7 +18199,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:173 ../../library/Class/AdminVar.php:171
 #: ../../library/Class/AdminVar.php:174
 ../../library/Class/AdminVar.php:174
 #: ../../library/Class/AdminVar.php:175 ../../library/Class/AdminVar.php:184
-#: ../../library/Class/AdminVar.php:178
+#: ../../library/Class/AdminVar.php:178 ../../library/Class/AdminVar.php:275
 msgid ""
 "Profil de la page de désinscription<br/>Par défaut : page d'accueil du "
 "portail"
@@ -17956,6 +18452,10 @@ msgstr "Proprietăţile modulului"
 msgid "Propulsé par"
 msgstr ""
 
+#: ../../application/modules/api/controllers/UserController.php:26
+msgid "Protocole HTTP obligatoire"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Album.php:154
 #: ../../library/ZendAfi/Form/Album.php:169
 #: ../../library/ZendAfi/Form/Album.php:166
@@ -18000,6 +18500,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:500
 #: ../../application/modules/opac/controllers/AuthController.php:505
+#: ../../application/modules/opac/controllers/AuthController.php:528
 #, fuzzy
 msgid "Préinscription"
 msgstr "ÃŽnscriere"
@@ -18007,6 +18508,7 @@ msgstr "ÃŽnscriere"
 #: ../../application/modules/opac/controllers/AuthController.php:460
 #: ../../application/modules/opac/controllers/AuthController.php:474
 #: ../../application/modules/opac/controllers/AuthController.php:479
+#: ../../application/modules/opac/controllers/AuthController.php:502
 #, fuzzy, php-format
 msgid "Préinscription à %s"
 msgstr "ÃŽnscriere"
@@ -18065,7 +18567,7 @@ msgstr "Rezervări în curs"
 #: ../../library/Class/AdminVar.php:291 ../../library/Class/AdminVar.php:293
 #: ../../library/Class/AdminVar.php:297 ../../library/Class/AdminVar.php:300
 #: ../../library/Class/AdminVar.php:204 ../../library/Class/AdminVar.php:205
-#: ../../library/Class/AdminVar.php:214
+#: ../../library/Class/AdminVar.php:214 ../../library/Class/AdminVar.php:224
 msgid ""
 "Prévenir l'utilisateur xx jour(s) avant l'expiration de son abonnement (par "
 "défaut 30 jours)."
@@ -18322,6 +18824,8 @@ msgstr "RSS"
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:158
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:226
 #: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:227
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:252
+#: ../../library/ZendAfi/Controller/Action/Helper/AlbumListViewMode.php:81
 msgid "Racine"
 msgstr ""
 
@@ -18356,6 +18860,11 @@ msgstr "CoÅŸurile dvs. de documente"
 msgid "Ranger le panier dans des domaines."
 msgstr "CoÅŸurile dvs. de documente"
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:34
+#, fuzzy
+msgid "Rapport"
+msgstr "Suport"
+
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:29
 #: ../../application/modules/admin/controllers/CustomFieldsReportController.php:27
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/Report.php:26
@@ -18513,6 +19022,7 @@ msgstr "Căutare"
 #: ../../library/ZendAfi/Form/Search/Advanced.php:95
 #: ../../library/ZendAfi/View/Helper/Admin/SearchUsers.php:41
 #: ../../library/Class/User/SearchCriteria.php:204
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:35
 msgid "Rechercher"
 msgstr "Căutare"
 
@@ -18528,6 +19038,7 @@ msgstr "Căutare după cuvintele conţinute"
 
 #: ../../application/modules/admin/controllers/FormationController.php:332
 #: ../../library/ZendAfi/View/Helper/Admin/FormationSubscribers.php:57
+#: ../../library/ZendAfi/View/Helper/Admin/ActivitySubscribers.php:57
 #, fuzzy
 msgid "Rechercher des stagiaires"
 msgstr "Căutare după cuvintele conţinute"
@@ -18699,6 +19210,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:166 ../../library/Class/AdminVar.php:164
 #: ../../library/Class/AdminVar.php:167
 ../../library/Class/AdminVar.php:167
 #: ../../library/Class/AdminVar.php:168 ../../library/Class/AdminVar.php:162
+#: ../../library/Class/AdminVar.php:336
 #, php-format
 msgid ""
 "Remplacement de textes à la volée. <br/>Ex:<br/>Panier;Sélection<br/>Vous "
@@ -18805,6 +19317,16 @@ msgstr "Invizibil"
 msgid "Replier"
 msgstr "Retragere"
 
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:50
+#, fuzzy, php-format
+msgid "Reprendre l'envoi de la lettre d'information: %s ? "
+msgstr "la buletinul informativ"
+
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:61
+#, fuzzy
+msgid "Reprendre l'envoi en cours"
+msgstr "Împrumuturi în curs"
+
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:29
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:48
 #: ../../library/Class/WebService/SIGB/Carthame/Service.php:210
@@ -18885,6 +19407,7 @@ msgstr ""
 
 #: ../../library/Class/ModeleFusion.php:78
 #: ../../library/Class/ModeleFusion.php:79
+#: ../../library/Class/ModeleFusion.php:77
 #, fuzzy
 msgid "Resultats de recherche"
 msgstr "Rezultatul căutarii"
@@ -18988,6 +19511,7 @@ msgstr "Modificare bibliotecă: %s"
 #: ../../library/ZendAfi/View/Helper/Notice/ExemplairesTable.php:297
 #: ../../library/ZendAfi/View/Helper/Notice/ExemplairesTable.php:306
 #: ../../library/ZendAfi/View/Helper/Button/Back.php:49
+#: ../../application/modules/opac/views/scripts/activities/detail-session.phtml:10
 msgid "Retour"
 msgstr "ÃŽntoarcere"
 
@@ -19277,6 +19801,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/RechercheController.php:648
 #: ../../application/modules/opac/controllers/RechercheController.php:585
 #: ../../application/modules/opac/controllers/RechercheController.php:604
+#: ../../application/modules/opac/controllers/RechercheController.php:563
 #, fuzzy
 msgid "Réservation"
 msgstr "Rezervări în curs"
@@ -19630,6 +20155,8 @@ msgstr "ÃŽnregistrare"
 #: ../../library/ZendAfi/View/Helper/TagSessionFormationInscription.php:53
 #: ../../library/ZendAfi/View/Helper/Accueil/Newsletters.php:40
 #: ../../library/ZendAfi/View/Helper/Accueil/Newsletters.php:59
+#: ../../library/ZendAfi/View/Helper/TagSessionActivityInscription.php:48
+#: ../../library/ZendAfi/View/Helper/TagSessionActivityInscription.php:53
 msgid "S'inscrire"
 msgstr ""
 
@@ -19639,10 +20166,17 @@ msgid "S'inscrire sur le portail"
 msgstr "ÃŽnscriere la portal"
 
 #: ../../application/modules/opac/views/scripts/abonne/formations.phtml:32
+#: ../../application/modules/opac/views/scripts/abonne/activities.phtml:32
 #, fuzzy, php-format
 msgid "S'inscrire à la session %s"
 msgstr "Modificare bibliotecă: %s"
 
+#: ../../application/modules/opac/controllers/AbonneController.php:1178
+#: ../../library/ZendAfi/View/Helper/Abonne/Activities.php:34
+#, fuzzy
+msgid "S'inscrire à une activité"
+msgstr "ÃŽnscriere la portal"
+
 #: ../../application/modules/opac/views/scripts/abonne/fiche.phtml:51
 #: ../../library/ZendAfi/View/Helper/Abonne/Formations.php:32
 #: ../../application/modules/opac/controllers/AbonneController.php:1189
@@ -19692,6 +20226,7 @@ msgstr "Încărcare in curs"
 #: ../../application/modules/telephone/controllers/AuthController.php:104
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:35
 #: ../../library/Class/Systeme/ModulesAccueil/Login.php:41
+#: ../../application/modules/telephone/controllers/AuthController.php:110
 msgid "Se connecter"
 msgstr "Conectare "
 
@@ -19717,11 +20252,13 @@ msgstr "Deconectare"
 #: ../../library/ZendAfi/View/Helper/TagSessionFormationInscription.php:41
 #: ../../library/ZendAfi/View/Helper/Accueil/Newsletters.php:44
 #: ../../library/ZendAfi/View/Helper/TagSessionFormationInscription.php:42
+#: ../../library/ZendAfi/View/Helper/TagSessionActivityInscription.php:39
 #, fuzzy
 msgid "Se désinscrire"
 msgstr "Deconectare"
 
 #: ../../application/modules/opac/views/scripts/abonne/formations-registered.phtml:39
+#: ../../application/modules/opac/views/scripts/abonne/activities-registered.phtml:39
 #, fuzzy, php-format
 msgid "Se désinscrire de la session %s"
 msgstr "la buletinul informativ"
@@ -19817,6 +20354,7 @@ msgstr "Secţii"
 #: ../../application/modules/admin/views/scripts/profil/_formProfil.phtml:464
 #: ../../application/modules/admin/views/scripts/profil/_formProfil.phtml:459
 #: ../../application/modules/admin/views/scripts/bib/localisationsmaj.phtml:150
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:95
 msgid "Sections"
 msgstr "Secţii"
 
@@ -19839,6 +20377,7 @@ msgstr "septembrie"
 #: ../../library/Class/AdminVar.php:251
 ../../library/Class/AdminVar.php:251
 #: ../../library/Class/AdminVar.php:278 ../../library/Class/AdminVar.php:279
 #: ../../library/Class/AdminVar.php:289 ../../library/Class/AdminVar.php:290
+#: ../../library/Class/AdminVar.php:177
 msgid "Serveur FTP de diffusion des offres PNB Dilicom"
 msgstr ""
 
@@ -19851,6 +20390,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/catalogue/index.phtml:27
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:56
 #: ../../application/modules/admin/views/scripts/catalogue/index.phtml:30
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:146
 msgid "Serveur OAI"
 msgstr ""
 
@@ -19910,6 +20450,7 @@ msgstr "Serviciu indisponibil"
 #: ../../application/modules/admin/views/scripts/formation/index.phtml:25
 #: ../../library/ZendAfi/Controller/Plugin/CustomFields.php:34
 #: ../../library/Class/CustomField/Model.php:53
+#: ../../application/modules/admin/views/scripts/activity/index.phtml:22
 #, fuzzy
 msgid "Session"
 msgstr "Versiune"
@@ -19917,6 +20458,7 @@ msgstr "Versiune"
 #: ../../application/modules/admin/controllers/SessionFormationController.php:32
 #: ../../application/modules/admin/controllers/SessionFormationController.php:30
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionFormation.php:30
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionActivity.php:30
 #, php-format
 msgid "Session \"%s\" sauvegardée"
 msgstr ""
@@ -19924,6 +20466,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/SessionFormationController.php:34
 #: ../../application/modules/admin/controllers/SessionFormationController.php:32
 #: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionFormation.php:32
+#: ../../library/ZendAfi/Controller/Plugin/ResourceDefinition/SessionActivity.php:32
 #, fuzzy, php-format
 msgid "Session \"%s\" supprimée"
 msgstr "Rezervări în curs"
@@ -19938,10 +20481,12 @@ msgstr "Lucrarea nu a fost găsită"
 #: ../../library/Class/AdminVar.php:269
 ../../library/Class/AdminVar.php:269
 #: ../../library/Class/AdminVar.php:296 ../../library/Class/AdminVar.php:297
 #: ../../library/Class/AdminVar.php:307 ../../library/Class/AdminVar.php:308
+#: ../../library/Class/AdminVar.php:195
 msgid "Sets du serveur OAI Cité de la Musique à moissonner"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:178 ../../library/Class/AdminVar.php:172
+#: ../../library/Class/AdminVar.php:374
 msgid ""
 "Seuil d'alerte en heures pour détecter que les traitements d'intégration "
 "prennent trop de temps. Par défaut: 2"
@@ -20370,6 +20915,7 @@ msgstr "Statut"
 #: ../../library/ZendAfi/Form/Admin/News.php:189
 #: ../../library/ZendAfi/Form/Admin/News.php:184
 #: ../../library/ZendAfi/Form/Admin/News.php:183
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:341
 msgid "Statut"
 msgstr "Statut"
 
@@ -20704,6 +21250,7 @@ msgstr "Ştergere neautorizată : această categorie nu conţine încă articole
 
 #: ../../library/Class/AdminVar.php:123 ../../library/Class/AdminVar.php:121
 #: ../../library/Class/AdminVar.php:124
 ../../library/Class/AdminVar.php:124
+#: ../../library/Class/AdminVar.php:298
 msgid ""
 "Supprime l'affichage du lien d'enregistrement dans les différents "
 "formulaires de connexion et interdit l'enregistrement d'utilisateurs"
@@ -20746,6 +21293,8 @@ msgstr ""
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:484
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:506
 #: ../../library/ZendAfi/View/Helper/Admin/RenderVersionForm.php:153
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:487
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Article.php:509
 msgid "Supprimer"
 msgstr "Åžtergere"
 
@@ -20795,6 +21344,11 @@ msgstr "Gestionare media"
 msgid "Supprimer et re-générer la vignette de la notice \"%s\""
 msgstr "etichetă a instrucţiunii"
 
+#: ../../application/modules/admin/views/scripts/activity/_activity_actions.phtml:23
+#, fuzzy
+msgid "Supprimer l'activité"
+msgstr "Ștergere categorie"
+
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:656
 #, fuzzy
 msgid "Supprimer l'album"
@@ -20846,6 +21400,7 @@ msgid "Supprimer la bibliothèque: %s"
 msgstr "Modificare bibliotecă: %s"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:690
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Album.php:699
 #, fuzzy
 msgid "Supprimer la catégorie"
 msgstr "Ștergere categorie"
@@ -20856,6 +21411,7 @@ msgid "Supprimer la formation"
 msgstr "Modificare titlu coÅŸ"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:62
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:69
 #, fuzzy
 msgid "Supprimer la lettre d'information"
 msgstr "Modificare titlu coÅŸ"
@@ -20869,6 +21425,7 @@ msgid "Supprimer la réservation du document %s"
 msgstr "Cerere de rezervare a unui document"
 
 #: ../../application/modules/admin/views/scripts/formation/_session_actions.phtml:47
+#: ../../application/modules/admin/views/scripts/activity/_session_actions.phtml:47
 #, fuzzy
 msgid "Supprimer la session"
 msgstr "Ștergeţi această rezervare"
@@ -21052,6 +21609,7 @@ msgstr "Selecţie de site-uri"
 #: ../../application/modules/admin/controllers/ModulesController.php:439
 #: ../../application/modules/admin/controllers/ModulesController.php:440
 #: ../../application/modules/admin/controllers/ModulesController.php:461
+#: ../../application/modules/admin/controllers/ModulesController.php:455
 #, fuzzy
 msgid "Sélectionnez un panier ou un domaine"
 msgstr "Acest meniu nu conţine date"
@@ -21069,6 +21627,7 @@ msgstr ""
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:88
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:84
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:59
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:59
 msgid "Tableau"
 msgstr ""
 
@@ -21160,6 +21719,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:171
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:183
 #: ../../application/modules/admin/views/scripts/catalogue/form.phtml:184
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:140
 msgid "Tags utilisateur"
 msgstr "Taguri de utilizator"
 
@@ -21274,6 +21834,7 @@ msgstr "Test servicii web"
 #: ../../application/modules/admin/controllers/CatalogueController.php:71
 #: ../../application/modules/admin/controllers/CatalogueController.php:65
 #: ../../application/modules/admin/controllers/CatalogueController.php:62
+#: ../../application/modules/admin/controllers/CatalogueController.php:61
 #, fuzzy, php-format
 msgid "Test du domaine: %s"
 msgstr "CoÅŸurile dvs. de documente"
@@ -21340,6 +21901,7 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:122 ../../library/Class/AdminVar.php:120
 #: ../../library/Class/AdminVar.php:123
 ../../library/Class/AdminVar.php:123
+#: ../../library/Class/AdminVar.php:297
 msgid "Texte d'aide affiché dans la fiche abonné"
 msgstr ""
 
@@ -21369,7 +21931,7 @@ msgstr "Eroare de configurare"
 #: ../../library/Class/AdminVar.php:178 ../../library/Class/AdminVar.php:176
 #: ../../library/Class/AdminVar.php:179
 ../../library/Class/AdminVar.php:179
 #: ../../library/Class/AdminVar.php:180 ../../library/Class/AdminVar.php:189
-#: ../../library/Class/AdminVar.php:183
+#: ../../library/Class/AdminVar.php:183 ../../library/Class/AdminVar.php:280
 msgid ""
 "Texte de désinscription version HTML<br/>Le lien de désinscription est "
 "appliqué sur tout ce texte<br/>Par défaut : Je ne veux plus recevoir cette "
@@ -21379,7 +21941,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:176 ../../library/Class/AdminVar.php:174
 #: ../../library/Class/AdminVar.php:177
 ../../library/Class/AdminVar.php:177
 #: ../../library/Class/AdminVar.php:178 ../../library/Class/AdminVar.php:187
-#: ../../library/Class/AdminVar.php:181
+#: ../../library/Class/AdminVar.php:181 ../../library/Class/AdminVar.php:278
 msgid ""
 "Texte de désinscription version texte<br/>Le lien est inséré à la place de "
 "{{URL}}<br/>Par défaut : Lien pour se désinscrire de cette lettre "
@@ -21392,11 +21954,13 @@ msgstr ""
 
 #: ../../library/Class/AdminVar.php:116 ../../library/Class/AdminVar.php:114
 #: ../../library/Class/AdminVar.php:118
 ../../library/Class/AdminVar.php:118
+#: ../../library/Class/AdminVar.php:292
 msgid "Texte visible après l'envoi d'e-mail de demande de réservation."
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:115 ../../library/Class/AdminVar.php:113
 #: ../../library/Class/AdminVar.php:117
 ../../library/Class/AdminVar.php:117
+#: ../../library/Class/AdminVar.php:291
 msgid "Texte visible par l'internaute après son inscription."
 msgstr ""
 
@@ -21616,6 +22180,7 @@ msgstr "Titlu"
 #: ../../application/modules/opac/controllers/RechercheController.php:515
 #: ../../application/modules/opac/controllers/RechercheController.php:452
 #: ../../application/modules/opac/controllers/RechercheController.php:470
+#: ../../application/modules/opac/controllers/RechercheController.php:461
 #, php-format
 msgid "Titre : %s"
 msgstr "Titlu : %s"
@@ -21722,6 +22287,11 @@ msgstr ""
 msgid "Titre(s)"
 msgstr "Titlu(ri)"
 
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:34
+#, fuzzy
+msgid "Titre, auteur, date"
+msgstr "Biografii"
+
 #: ../../application/modules/opac/views/scripts/recherche/readnotice.phtml:1
 #, php-format
 msgid "Titre: %s"
@@ -21827,6 +22397,11 @@ msgstr "ÃŽn toate teritoriile."
 msgid "Tous les vendredis"
 msgstr ""
 
+#: ../../library/ZendAfi/Controller/Action/Helper/ArticleListViewMode.php:375
+#, fuzzy
+msgid "Tous statuts"
+msgstr "Alegeţi media"
+
 #: ../../library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php:85
 #: ../../library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php:122
 #: ../../library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php:131
@@ -21946,6 +22521,11 @@ msgstr "Traduceri"
 msgid "Traduire un article: %s"
 msgstr "Ștergere categorie"
 
+#: ../../library/Class/WebService/BibNumerique/AbstractOAI.php:50
+#, php-format
+msgid "Traitement de la page %d (nombre d'enregistrements: %d)"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/Admin/CosmoStatus.php:60
 #: ../../library/Class/Systeme/Report/Cosmogramme.php:50
 #, fuzzy
@@ -22052,6 +22632,7 @@ msgstr "Tip de interfaţă"
 #: ../../library/Class/AdminVar.php:258 ../../library/Class/AdminVar.php:262
 #: ../../library/Class/AdminVar.php:289 ../../library/Class/AdminVar.php:290
 #: ../../library/Class/AdminVar.php:300 ../../library/Class/AdminVar.php:301
+#: ../../library/Class/AdminVar.php:188
 #, fuzzy
 msgid "Type de SSO OneDTouch"
 msgstr "Tip de doc."
@@ -22278,6 +22859,7 @@ msgstr ""
 #: ../../application/modules/admin/views/scripts/profil/_formProfil.phtml:464
 #: ../../application/modules/admin/views/scripts/bib/localisationsmaj.phtml:140
 #: ../../library/ZendAfi/View/Helper/Admin/ContentNav.php:171
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:75
 msgid "Types de documents"
 msgstr "Tipuri de documente"
 
@@ -22353,6 +22935,7 @@ msgstr "Telefon"
 #: ../../library/ZendAfi/View/Helper/Notice/Unimarc.php:79
 #: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:101
 #: ../../application/modules/opac/views/scripts/bib-numerique/download-book.phtml:3
+#: ../../library/ZendAfi/View/Helper/MonocleReaderServerSide.php:112
 #, fuzzy, php-format
 msgid "Télécharger"
 msgstr "Telefon"
@@ -22461,7 +23044,7 @@ msgstr "Biografii"
 
 #: ../../library/Class/AdminVar.php:135 ../../library/Class/AdminVar.php:133
 #: ../../library/Class/AdminVar.php:136
 ../../library/Class/AdminVar.php:136
-#: ../../library/Class/AdminVar.php:137
+#: ../../library/Class/AdminVar.php:137 ../../library/Class/AdminVar.php:311
 msgid "URL d'accès à l'interface de réservation des postes Aesis Webkiosk"
 msgstr ""
 
@@ -22490,12 +23073,13 @@ msgid "URL de la vignette"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:173 ../../library/Class/AdminVar.php:167
+#: ../../library/Class/AdminVar.php:341
 msgid "URL destinataire du rapport d'état du système (0 pour désactiver)"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:131 ../../library/Class/AdminVar.php:129
 #: ../../library/Class/AdminVar.php:132
 ../../library/Class/AdminVar.php:132
-#: ../../library/Class/AdminVar.php:133
+#: ../../library/Class/AdminVar.php:133 ../../library/Class/AdminVar.php:307
 msgid "URL du javascript Babelthèque à insérer dans l'OPAC"
 msgstr ""
 
@@ -22559,6 +23143,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:472
 #: ../../application/modules/opac/controllers/AuthController.php:486
 #: ../../application/modules/opac/controllers/AuthController.php:491
+#: ../../application/modules/opac/controllers/AuthController.php:514
 #, php-format
 msgid ""
 "Un email de confirmation de préinscription vous a été envoyé à l'adresse %s ."
@@ -22612,6 +23197,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:279
 #: ../../application/modules/opac/controllers/AuthController.php:293
 #: ../../application/modules/opac/controllers/AuthController.php:298
+#: ../../application/modules/opac/controllers/AuthController.php:321
 msgid ""
 "Un utilisateur a déjà renseigné cet email. Merci de vous identifier avec le "
 "compte qui utilise cet email."
@@ -22629,6 +23215,7 @@ msgstr "specificaţia este obligatorie."
 #: ../../application/modules/opac/controllers/AuthController.php:307
 #: ../../application/modules/opac/controllers/AuthController.php:321
 #: ../../application/modules/opac/controllers/AuthController.php:326
+#: ../../application/modules/opac/controllers/AuthController.php:349
 msgid ""
 "Une demande de confirmation d'inscription vous a été envoyée à l'adresse "
 "mail renseignée."
@@ -22678,6 +23265,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:303
 #: ../../application/modules/opac/controllers/AuthController.php:317
 #: ../../application/modules/opac/controllers/AuthController.php:322
+#: ../../application/modules/opac/controllers/AuthController.php:345
 msgid ""
 "Une erreur est survenue à l'envoi du mail de confirmation. Veuillez "
 "réessayer. Si le problème persiste, veuillez contacter votre médiathèque."
@@ -22751,14 +23339,14 @@ msgstr "Url de activare : %s"
 
 #: ../../library/Class/AdminVar.php:140 ../../library/Class/AdminVar.php:138
 #: ../../library/Class/AdminVar.php:141
 ../../library/Class/AdminVar.php:141
-#: ../../library/Class/AdminVar.php:142
+#: ../../library/Class/AdminVar.php:142 ../../library/Class/AdminVar.php:316
 msgid "Url d'import d'un agenda TYPO3"
 msgstr ""
 
 #: ../../library/Class/AdminVar.php:158 ../../library/Class/AdminVar.php:156
 #: ../../library/Class/AdminVar.php:159
 ../../library/Class/AdminVar.php:159
 #: ../../library/Class/AdminVar.php:160 ../../library/Class/AdminVar.php:161
-#: ../../library/Class/AdminVar.php:225
+#: ../../library/Class/AdminVar.php:225 ../../library/Class/AdminVar.php:246
 #, fuzzy
 msgid "Url de recherche"
 msgstr "Tip de căutare"
@@ -22767,6 +23355,7 @@ msgstr "Tip de căutare"
 #: ../../library/Class/AdminVar.php:305
 ../../library/Class/AdminVar.php:305
 #: ../../library/Class/AdminVar.php:209 ../../library/Class/AdminVar.php:210
 #: ../../library/Class/AdminVar.php:220 ../../library/Class/AdminVar.php:211
+#: ../../library/Class/AdminVar.php:386
 msgid "Url du connecteur Le Social"
 msgstr ""
 
@@ -22774,6 +23363,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:303
 ../../library/Class/AdminVar.php:303
 #: ../../library/Class/AdminVar.php:207 ../../library/Class/AdminVar.php:208
 #: ../../library/Class/AdminVar.php:218 ../../library/Class/AdminVar.php:209
+#: ../../library/Class/AdminVar.php:232
 #, fuzzy
 msgid "Url du proxy Redmine"
 msgstr "Numele de utilizator sau parola incorecte    "
@@ -22782,6 +23372,7 @@ msgstr "Numele de utilizator sau parola incorecte    "
 #: ../../library/Class/AdminVar.php:248
 ../../library/Class/AdminVar.php:248
 #: ../../library/Class/AdminVar.php:275 ../../library/Class/AdminVar.php:276
 #: ../../library/Class/AdminVar.php:286 ../../library/Class/AdminVar.php:287
+#: ../../library/Class/AdminVar.php:174
 msgid "Url du serveur PNB Dilicom"
 msgstr ""
 
@@ -22789,6 +23380,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:299 ../../library/Class/AdminVar.php:302
 #: ../../library/Class/AdminVar.php:206 ../../library/Class/AdminVar.php:207
 #: ../../library/Class/AdminVar.php:217 ../../library/Class/AdminVar.php:208
+#: ../../library/Class/AdminVar.php:231
 msgid "Url du serveur redmine"
 msgstr ""
 
@@ -22817,6 +23409,7 @@ msgstr "Nu a fost găsit nici un articol"
 #: ../../library/Class/AdminVar.php:252
 ../../library/Class/AdminVar.php:252
 #: ../../library/Class/AdminVar.php:279 ../../library/Class/AdminVar.php:280
 #: ../../library/Class/AdminVar.php:290 ../../library/Class/AdminVar.php:291
+#: ../../library/Class/AdminVar.php:178
 msgid "Utilisateur FTP de diffusion des offres PNB Dilicom"
 msgstr ""
 
@@ -22825,6 +23418,11 @@ msgstr ""
 msgid "Utilisateur introuvable"
 msgstr "Utilizator"
 
+#: ../../application/modules/api/controllers/UserController.php:39
+#, fuzzy
+msgid "Utilisateur non trouvé"
+msgstr "Taguri de utilizator"
+
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:57
 #: ../../application/modules/admin/views/scripts/newsletter/edit-subscribers.phtml:61
 #, fuzzy
@@ -23007,6 +23605,7 @@ msgstr "Variabilă"
 #: ../../application/modules/admin/controllers/IndexController.php:77
 #: ../../application/modules/admin/controllers/IndexController.php:83
 #: ../../application/modules/admin/controllers/IndexController.php:86
+#: ../../application/modules/admin/controllers/IndexController.php:93
 #, fuzzy, php-format
 msgid "Variable %s sauvegardée"
 msgstr "Nu a fost găsit nici un articol"
@@ -23047,7 +23646,8 @@ msgstr "Alegeţi media"
 #: ../../library/Class/Systeme/Report.php:69
 #: ../../library/Class/AdminVar.php:301 ../../library/Class/AdminVar.php:328
 #: ../../library/Class/AdminVar.php:321 ../../library/Class/AdminVar.php:302
-#: ../../library/Class/AdminVar.php:322
+#: ../../library/Class/AdminVar.php:322 ../../library/Class/AdminVar.php:189
+#: ../../library/Class/AdminVar.php:209
 msgid "Version"
 msgstr "Versiune"
 
@@ -23060,7 +23660,7 @@ msgstr "Versiune"
 #: ../../library/Class/AdminVar.php:286 ../../library/Class/AdminVar.php:289
 #: ../../library/Class/AdminVar.php:316 ../../library/Class/AdminVar.php:317
 #: ../../library/Class/AdminVar.php:327 ../../library/Class/AdminVar.php:320
-#: ../../library/Class/AdminVar.php:321
+#: ../../library/Class/AdminVar.php:321 ../../library/Class/AdminVar.php:208
 msgid "Version de Kidilangues."
 msgstr ""
 
@@ -23255,6 +23855,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/Notice/Vignette.php:46
 #: ../../library/ZendAfi/View/Helper/Notice/Vignette.php:81
 #: ../../library/ZendAfi/View/Helper/Biographie.php:143
+#: ../../library/ZendAfi/Form/Configuration/Domain.php:35
 msgid "Vignette"
 msgstr "Etichetă"
 
@@ -23350,6 +23951,7 @@ msgid "Visualiser"
 msgstr "Vizualizare"
 
 #: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:31
+#: ../../library/ZendAfi/Controller/Plugin/Manager/Newsletter.php:33
 #, fuzzy
 msgid "Visualiser la newsletter"
 msgstr "Validare selecţie"
@@ -23543,6 +24145,7 @@ msgid "Volume n° %s"
 msgstr "Volum n° %s"
 
 #: ../../application/modules/opac/views/scripts/recherche/reservation.phtml:24
+#: ../../library/ZendAfi/Form/Hold.php:39
 msgid "Vos Nom et Prénom : "
 msgstr "Numele ÅŸi Prenumele dvs :"
 
@@ -23685,6 +24288,11 @@ msgstr "Adresa dvs. de e-mail :"
 msgid "Votre adresse E-mail :"
 msgstr "Adresa dvs. de e-mail :"
 
+#: ../../library/ZendAfi/Form/Hold.php:49
+#, fuzzy
+msgid "Votre adresse E-mail : "
+msgstr "Adresa dvs. de e-mail :"
+
 #: ../../library/ZendAfi/Form/NewsletterRegister.php:29
 #, fuzzy
 msgid "Votre adresse e-mail"
@@ -23737,6 +24345,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:258
 ../../library/Class/AdminVar.php:258
 #: ../../library/Class/AdminVar.php:285 ../../library/Class/AdminVar.php:286
 #: ../../library/Class/AdminVar.php:296 ../../library/Class/AdminVar.php:297
+#: ../../library/Class/AdminVar.php:184
 msgid ""
 "Votre compte sera mis à jour dans un délai de 15 minutes après le retour "
 "anticipé du document."
@@ -23754,6 +24363,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/AuthController.php:240
 #: ../../application/modules/opac/controllers/AuthController.php:221
 #: ../../application/modules/opac/controllers/AuthController.php:235
+#: ../../application/modules/opac/controllers/AuthController.php:263
 msgid "Votre demande d'inscription"
 msgstr "Solicitarea dvs. de înscriere  "
 
@@ -23822,6 +24432,11 @@ msgstr "Mesajul dvs. :"
 msgid "Votre message :"
 msgstr "Mesajul dvs. :"
 
+#: ../../library/ZendAfi/Form/Hold.php:44
+#, fuzzy
+msgid "Votre message : "
+msgstr "Mesajul dvs. :"
+
 #: ../../library/Class/Users.php:315 ../../library/Class/Users.php:329
 #: ../../library/Class/Users.php:404 ../../library/Class/Users.php:480
 #: ../../library/Class/Users.php:509
@@ -23891,6 +24506,7 @@ msgstr "Rezervarea dvs. a fost înregistrată."
 #: ../../application/modules/opac/controllers/RechercheController.php:626
 #: ../../application/modules/opac/controllers/RechercheController.php:563
 #: ../../application/modules/opac/controllers/RechercheController.php:582
+#: ../../application/modules/opac/controllers/RechercheController.php:541
 msgid "Votre réservation est enregistrée."
 msgstr "Rezervarea dvs. a fost înregistrată."
 
@@ -23906,6 +24522,7 @@ msgstr "Rezervarea dvs. a fost înregistrată."
 #: ../../application/modules/opac/controllers/RechercheController.php:612
 #: ../../application/modules/opac/controllers/RechercheController.php:630
 #: ../../application/modules/opac/controllers/RechercheController.php:640
+#: ../../application/modules/opac/controllers/RechercheController.php:589
 #, php-format
 msgid ""
 "Votre réservation est enregistrée.<br>Nous vous informerons quand le document"
@@ -23924,6 +24541,7 @@ msgstr ""
 #: ../../application/modules/opac/controllers/RechercheController.php:610
 #: ../../application/modules/opac/controllers/RechercheController.php:628
 #: ../../application/modules/opac/controllers/RechercheController.php:638
+#: ../../application/modules/opac/controllers/RechercheController.php:587
 #, php-format
 msgid ""
 "Votre réservation est enregistrée.<br>Nous vous informerons quand le document"
@@ -24043,6 +24661,7 @@ msgstr "Aveţi %d  rezervări în curs"
 #: ../../application/modules/opac/controllers/AuthController.php:357
 #: ../../application/modules/opac/controllers/AuthController.php:371
 #: ../../application/modules/opac/controllers/AuthController.php:376
+#: ../../application/modules/opac/controllers/AuthController.php:399
 msgid "Vous avez bien été abonné à la newsletter: "
 msgstr ""
 
@@ -24295,6 +24914,7 @@ msgstr "Trebuie să introduceţi o parolă "
 #: ../../library/Class/AvisNotice.php:365
 #: ../../library/Class/AvisNotice.php:372
 #: ../../library/Class/AvisNotice.php:380
+#: ../../library/Class/AvisNotice.php:382
 msgid "Vous devez saisir un titre"
 msgstr "Trebuie să introduceţi un titlu         "
 
@@ -24442,6 +25062,13 @@ msgid ""
 "visionner le film dans son intégralité"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:47
+#, fuzzy
+msgid ""
+"Vous devez être inscrit dans une bibliothèque pour accéder à la consultation "
+"en ligne"
+msgstr "Trebuie să vă conectaţi pentru a rezerva un document."
+
 #: ../../application/modules/opac/views/scripts/abonne/cards.phtml:9
 #, fuzzy
 msgid "Vous n'avez ajouté aucune carte"
@@ -24555,6 +25182,8 @@ msgstr "Nu aţi introdus un nume de utilizator."
 
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:37
 #: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:30
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:31
+#: ../../library/ZendAfi/View/Helper/TagDilicomWidget.php:42
 #, fuzzy
 msgid "Vous n'avez pas le droit d'accéder à la consultation en ligne."
 msgstr "Trebuie să vă conectaţi pentru a rezerva un document."
@@ -24569,6 +25198,11 @@ msgstr "Nu aţi introdus o solicitare."
 msgid "Vous n'avez pas le droit de modifier le panier %s"
 msgstr "Nu aţi introdus o solicitare."
 
+#: ../../library/Class/Users.php:1044
+#, fuzzy
+msgid "Vous n'avez pas les droits suffisants pour diriger une activité"
+msgstr "Nu aţi introdus o solicitare."
+
 #: ../../library/Class/Users.php:519 ../../library/Class/Users.php:586
 #: ../../library/Class/Users.php:667 ../../library/Class/Users.php:789
 #: ../../library/Class/Users.php:841 ../../library/Class/Users.php:848
@@ -24580,6 +25214,11 @@ msgstr "Nu aţi introdus o solicitare."
 msgid "Vous n'avez pas les droits suffisants pour diriger une formation"
 msgstr ""
 
+#: ../../library/Class/Users.php:1041
+#, fuzzy
+msgid "Vous n'avez pas les droits suffisants pour suivre une activité"
+msgstr "Nu aţi introdus o solicitare."
+
 #: ../../library/Class/Users.php:516 ../../library/Class/Users.php:583
 #: ../../library/Class/Users.php:664 ../../library/Class/Users.php:786
 #: ../../library/Class/Users.php:838 ../../library/Class/Users.php:845
@@ -24591,6 +25230,10 @@ msgstr ""
 msgid "Vous n'avez pas les droits suffisants pour suivre une formation"
 msgstr ""
 
+#: ../../application/modules/opac/views/scripts/activities/index.phtml:6
+msgid "Vous n'avez pas les droits suffisants pour vous inscrire à une activité"
+msgstr ""
+
 #: ../../application/modules/opac/views/scripts/abonne/formations.phtml:6
 #: ../../application/modules/opac/views/scripts/formations/index.phtml:6
 msgid ""
@@ -24703,6 +25346,11 @@ msgstr "Nu sunteţi abonat la nici un buletin informativ    "
 msgid "Vous n'êtes pas autorisé à effectuer une réservation"
 msgstr "Nu sunteţi abonat la nici un buletin informativ    "
 
+#: ../../application/modules/opac/controllers/AbonneController.php:99
+#, fuzzy, php-format
+msgid "Vous n'êtes plus inscrit à la session du %s de l'activité %s"
+msgstr "la buletinul informativ"
+
 #: ../../application/modules/opac/controllers/AbonneController.php:97
 #: ../../application/modules/opac/controllers/AbonneController.php:98
 #: ../../application/modules/opac/controllers/AbonneController.php:99
@@ -24765,6 +25413,11 @@ msgstr "la buletinul informativ"
 msgid "Vous êtes inscrit à la liste de diffusion: %s"
 msgstr ""
 
+#: ../../application/modules/opac/controllers/AbonneController.php:84
+#, fuzzy, php-format
+msgid "Vous êtes inscrit à la session du %s de l'activité %s"
+msgstr "la buletinul informativ"
+
 #: ../../application/modules/opac/controllers/AbonneController.php:82
 #: ../../application/modules/opac/controllers/AbonneController.php:83
 #: ../../application/modules/opac/controllers/AbonneController.php:84
@@ -24790,6 +25443,7 @@ msgstr ""
 #: ../../library/Class/AdminVar.php:164 ../../library/Class/AdminVar.php:162
 #: ../../library/Class/AdminVar.php:165
 ../../library/Class/AdminVar.php:165
 #: ../../library/Class/AdminVar.php:166 ../../library/Class/AdminVar.php:160
+#: ../../library/Class/AdminVar.php:334
 msgid "WS KOHA : Reservation d'exemplaires pour les multi sites"
 msgstr ""
 
@@ -25149,6 +25803,7 @@ msgstr "conţine"
 #: ../../library/Class/Newsletter.php:314
 #: ../../library/Class/Newsletter.php:369
 #: ../../library/Class/Newsletter.php:374
+#: ../../library/Class/Newsletter.php:381
 msgid "copie"
 msgstr ""
 
@@ -25422,6 +26077,7 @@ msgid "envoi en cours"
 msgstr "Împrumuturi în curs"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:113
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:114
 #, fuzzy
 msgid "erreur au transfert du fichier"
 msgstr "Eroare la transferul fişierului către fişierele utilizatorilor"
@@ -25500,6 +26156,7 @@ msgstr "Gen"
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:95
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:91
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:66
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:66
 #, fuzzy
 msgid "groupé par année"
 msgstr "Afişează harta"
@@ -25950,11 +26607,13 @@ msgstr "Nici un conţinut"
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:94
 #: ../../library/ZendAfi/Form/Configuration/FormationsWidget.php:90
 #: ../../library/ZendAfi/Form/Configuration/Widget/Formations.php:65
+#: ../../library/ZendAfi/Form/Configuration/Widget/Activities.php:65
 #, fuzzy
 msgid "non groupé"
 msgstr "Lucrarea nu a fost găsită"
 
 #: ../../library/Class/Formation/AbstractMail.php:65
+#: ../../library/Class/Activity/AbstractMail.php:65
 msgid "non renseigné"
 msgstr ""
 
@@ -26039,6 +26698,10 @@ msgstr ""
 msgid "nécessite un thème compatible"
 msgstr ""
 
+#: ../../library/ZendAfi/View/Helper/CosmoLogs.php:117
+msgid "o,Ko,Mo,Go"
+msgstr ""
+
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:44
 #: ../../library/Class/Calendar.php:44 ../../library/Class/Calendar.php:45
 #: ../../library/ZendAfi/View/Helper/DatePicker.php:49
@@ -26199,6 +26862,7 @@ msgid "partager sur"
 msgstr "împărtăşiţi pe "
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:102
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:103
 #, php-format
 msgid "pas de transfert pour : %s"
 msgstr ""
@@ -26270,6 +26934,7 @@ msgstr "Profil"
 #: ../../library/ZendAfi/View/Helper/Admin/ImageViewersOptions.php:125
 #: ../../library/ZendAfi/View/Helper/Admin/PropertiesReader.php:39
 #: ../../library/ZendAfi/View/Helper/Admin/PropertiesReader.php:53
+#: ../../library/ZendAfi/View/Helper/Admin/PropertiesReader.php:54
 msgid "propriétés de l'objet"
 msgstr "proprietăţi ale obiectului"
 
@@ -26279,6 +26944,7 @@ msgid "prénom"
 msgstr "Prenume"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:165
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:167
 #, php-format
 msgid "répertoire inaccessible: %s"
 msgstr ""
@@ -26426,6 +27092,7 @@ msgstr ""
 #: ../../library/ZendAfi/View/Helper/Admin/ListViewMode.php:52
 #: ../../library/ZendAfi/View/Helper/Admin/ListViewMode.php:49
 #: ../../library/ZendAfi/View/Helper/Admin/ListViewMode.php:48
+#: ../../library/ZendAfi/Controller/Action/Helper/AbstractListViewMode.php:36
 #, fuzzy
 msgid "titre du document"
 msgstr "Tip de document"
@@ -26464,6 +27131,7 @@ msgid "traduction %s"
 msgstr "traducere %s"
 
 #: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:121
+#: ../../library/Class/Cosmogramme/Integration/PhasePrepareIntegrations.php:122
 #, fuzzy, php-format
 msgid "transfert vers %s"
 msgstr "CoÅŸurile dvs."
@@ -26556,12 +27224,20 @@ msgstr "Nici un conţinut"
 msgid "» Modifier «"
 msgstr "Modificare"
 
+#: ../../library/ZendAfi/Form/Configuration/Widget/Login.php:82
+msgid "À la connexion : basculer automatiquement sur le profil"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/LoginWidget.php:94
 #: ../../library/ZendAfi/Form/Configuration/BaseLogin.php:82
 #: ../../library/ZendAfi/Form/Configuration/Widget/Login.php:82
 msgid "À la connextion : basculer automatiquement sur le profil"
 msgstr ""
 
+#: ../../library/ZendAfi/Form/Configuration/Widget/Login.php:87
+msgid "À la déconnexion : basculer automatiquement sur le profil"
+msgstr ""
+
 #: ../../library/ZendAfi/Form/Configuration/BaseLogin.php:86
 #: ../../library/ZendAfi/Form/Configuration/Widget/Login.php:87
 msgid "À la déconnextion : basculer automatiquement sur le profil"
@@ -26626,6 +27302,7 @@ msgstr ""
 #: ../../library/Class/WebService/SIGB/Koha/RestfulService.php:96
 #: ../../application/modules/opac/controllers/AuthController.php:449
 #: ../../application/modules/opac/controllers/AuthController.php:454
+#: ../../application/modules/opac/controllers/AuthController.php:477
 msgid "Échec de la préinscription, les informations saisies sont invalides."
 msgstr ""
 
@@ -26677,6 +27354,7 @@ msgstr ""
 #: ../../application/modules/admin/controllers/ModulesController.php:472
 #: ../../library/ZendAfi/View/Helper/FonctionsAdmin.php:73
 #: ../../application/modules/admin/controllers/ModulesController.php:493
+#: ../../application/modules/admin/controllers/ModulesController.php:492
 msgid "Étendre le paramétrage"
 msgstr ""
 
diff --git a/public/admin/css/global.css b/public/admin/css/global.css
index 0e2ba08298ba3c3dee78d9c570f3286ce1208de2..07ebce1ee20d2a970918ee9ada184110504f7070 100644
--- a/public/admin/css/global.css
+++ b/public/admin/css/global.css
@@ -1520,6 +1520,7 @@ div.ColorPickerDivSample {
     background-color: rgba(0, 0 , 0 , 0.15);
 }
 
+
 .modules a.default-button {
     display: inline-block;
     margin: 0.5em 1em;
@@ -1577,5 +1578,8 @@ tr.modified label,
 .list_search_wrapper > div,
 .list_search_wrapper > form {
     display: inline-block;
+
+
+table#logs img {
     vertical-align: middle;
 }
\ No newline at end of file
diff --git a/public/admin/js/onload_utils.js b/public/admin/js/onload_utils.js
index ab4611e15f4d691ba464da45f60de3f32801ee6c..22580fd778e9083d37e68c9e4570a7b513d98231 100644
--- a/public/admin/js/onload_utils.js
+++ b/public/admin/js/onload_utils.js
@@ -48,7 +48,7 @@ if (typeof jQuery != "undefined")
 
 //Les liens qui référencent des sites externes doivent être ouverts dans un nouvel onglet
 var setupAnchorsTarget = function() {
-  var internalLink = new RegExp('/' + window.location.host + '/');
+  var internalLink = new RegExp('/' + window.location.host + '(:[0-9]+)?/');
   $('a[href^="http"]').each(function() {
     if (!internalLink.test($(this).attr('href')) 
 	&& (undefined == this.onclick) 
diff --git a/public/admin/skins/bokeh74/global.css b/public/admin/skins/bokeh74/global.css
index 462e1fb5bf99c2c0f65f8603d6bd1fc2c1489691..edc3817f05af177b0c2ac337c1ea3c062fbe2c5b 100755
--- a/public/admin/skins/bokeh74/global.css
+++ b/public/admin/skins/bokeh74/global.css
@@ -865,6 +865,7 @@ tr.modified label,
     color: var(--error-text);
 }
 
+
 .toggle_video {
     background-image: url('icons/actions/ouvrir_24.png');
     background-repeat: no-repeat;
@@ -930,5 +931,8 @@ form.profils {
 .list_search_wrapper > div,
 .list_search_wrapper > form {
     display: inline-block;
+
+
+table#logs img {
     vertical-align: middle;
 }
\ No newline at end of file
diff --git a/public/opac/css/global.css b/public/opac/css/global.css
index 83ba0c2c279aa1040e94901e07555cbbb381d8bb..c4fe095a4b64fa6229ca63cbd0232d9c18fc62e1 100644
--- a/public/opac/css/global.css
+++ b/public/opac/css/global.css
@@ -92,6 +92,12 @@ form.login fieldset {
 }
 
 
+form.login td.gauche,
+form.login td.droite {
+    text-align: center;
+}
+
+
 .boite.login label {display: block; text-align: right}
 
 .boite.news div.reseaux-sociaux {
diff --git a/public/opac/js/subModal.js b/public/opac/js/subModal.js
index b595bcf2f79569adaa0dc85c26b37e165e827a78..dcf6eb9ec7801c8f251a59abb2a5444716de2184 100644
--- a/public/opac/js/subModal.js
+++ b/public/opac/js/subModal.js
@@ -3,7 +3,6 @@
   var popupDialog = null;
   var loading = 'image-loading-status';
   var current_anchor;
-  var opac_dialog = null;
 
   window.initializePopups = function() {
     $('[data-popup="true"]')
@@ -73,14 +72,15 @@
   }
 
 
-  var onOpen = function(event, ui) {
+  var onOpen = function(dialog) {
     initializePopups();
     addLoadingClass();
-    opac_dialog = $(event.target).closest('.ui-widget');
-    opac_dialog.css('position', 'fixed');
-    opac_dialog.css('top', '15%');
-    opac_dialog.css('left', '20%');
-    opac_dialog.css('width', '60%');
+
+    fixWindowPositionAndWidth(dialog);
+    
+    $(window).on('resize', function() {
+      fixWindowPositionAndWidth(dialog);
+    });
   }
 
 
@@ -104,6 +104,24 @@
   }
 
 
+  var fixWindowPositionAndWidth = function(dialog) {
+    var max_height = Math.round($(window).height() * 0.8);
+    dialog
+      .css('position', 'fixed')
+      .css('top', '15%')
+      .css('left', '20%')
+      .css('width', '60%')
+      .css('max-height', max_height + 'px')
+    
+      .find('.ui-dialog-content')
+      .css('max-height', (max_height - 50) + 'px')
+      .css('width', 'auto')
+      .css('overflow-y', 'auto');
+    
+    dialog.position({of: $(window)});
+  }
+
+
   window.opacShowModal = function(url, width, height, returnFunc, showCloseBox, titleDialog) {
     var modal_size = initModalSize(width, height);
     popupDialog = $('<iframe src="'+url+'" style="min-width:95%"></div>')
@@ -156,6 +174,8 @@
     var show_modal = (data['show_modal'] && data['show_modal']=='true')
 	? true
 	: false;
+
+    var dialog = null;
     
     var modal = container.dialog({
       title: data['title'],
@@ -164,14 +184,16 @@
 	onClose(event, ui)
       },
       open: function(event, ui) {
-	setTimeout(onOpen(event, ui), 100);
+	dialog = $(event.target).closest('.ui-widget');
+	
+	setTimeout(onOpen(dialog), 100);
       },
       resizeStart: function(event, ui) {
-	opac_dialog.css('position', 'absolute');
+	dialog.css('position', 'absolute');
       },
       resizeStop: function(event, ui) {
-	opac_dialog.css('position', 'fixed');
-	opac_dialog.position({of: $(window)});
+	dialog.css('position', 'fixed');
+	dialog.position({of: $(window)});
       }
     });
 
@@ -179,8 +201,8 @@
   }
 
 
-  window.addLoadingClass = function () {
 
+  window.addLoadingClass = function () {
     var initCurrentAnchor = function() {
       if (current_anchor != undefined)
 	return current_anchor;
diff --git a/scripts/branchcode_indexation.php b/scripts/branchcode_indexation.php
index 7335935aafd271a0a7ce305daddc19537ef22f78..03a0f4f5f88fcae73aa5f72164a4dc7e1e28c11a 100644
--- a/scripts/branchcode_indexation.php
+++ b/scripts/branchcode_indexation.php
@@ -54,10 +54,10 @@ $phase = Class_Cosmogramme_Integration_Phase::fromLegacyState(6,
 $append_log = function($content) { echo "\n" . $content . "\n"; };
 
 $log = (new Class_Entity())
-  ->whenCalledDo('addError', $append_log)
-  ->whenCalledDo('addSuccess', $append_log)
-  ->whenCalledDo('addInfo', $append_log)
-  ->whenCalledDo('ecrire', $append_log);
+  ->whenCalledDo('error', $append_log)
+  ->whenCalledDo('success', $append_log)
+  ->whenCalledDo('info', $append_log)
+  ->whenCalledDo('log', $append_log);
 
 (new Class_Cosmogramme_Integration_PhaseItemFacets($phase,
                                                    $log,
diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php
index 3a98f54253c12f266ce628173b06229d03608be0..9c1fbff6fd7a5455fd38702be5c04af00b949414 100644
--- a/tests/application/modules/AbstractControllerTestCase.php
+++ b/tests/application/modules/AbstractControllerTestCase.php
@@ -219,7 +219,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
   }
 
 
-  public function dispatch($url = null, $throw_exceptions = false) {
+  public function dispatch($url = null, $throw_exceptions = false, $headers =  []) {
     // redirector should not exit
     $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
     $redirector->setExit(false);
@@ -228,7 +228,9 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
     $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json');
     $json->suppressExit = true;
 
-    $request    = $this->getRequest();
+    $request = $this->getRequest();
+    $request->setHeaders($headers);
+
     if (null !== $url) {
       $request->setRequestUri($url);
     }
diff --git a/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php b/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php
index 7c24052205645092d32ea0ecd84eb417ae3a78cf..b532c66596e33db1b8b6e61c9c48662f88255626 100644
--- a/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php
+++ b/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php
@@ -113,6 +113,13 @@ class Admin_AlbumControllerListViewModeIndexTest extends Admin_AlbumControllerLi
   }
 
 
+  /** @test */
+  public function anchorShouldLinkToaddCategoryAtRoot() {
+    $this->assertXPath('//div[@class="actions"][preceding-sibling::a[text()="Racine"]]//a[@href="/admin/album/add_categorie"]');
+  }
+
+
+
   /** @test */
   public function addCategoryToEmptyCatShouldBePresent() {
     $this->assertXPath('//div[@class="actions"]//a[contains(@href,"admin/album/add_categorie_to/id/1")]', $this->_response->getBody());
diff --git a/tests/application/modules/admin/controllers/AlbumControllerPharoVideosTest.php b/tests/application/modules/admin/controllers/AlbumControllerPharoVideosTest.php
index 71af3eb883d8dfab2e8631232e65bfa44ef3f4bd..3231403b7855ec0e4c6ee826fa29b1fd66738477 100644
--- a/tests/application/modules/admin/controllers/AlbumControllerPharoVideosTest.php
+++ b/tests/application/modules/admin/controllers/AlbumControllerPharoVideosTest.php
@@ -27,12 +27,14 @@ abstract class Admin_AlbumControllerPharoVideosTestCase extends Admin_AbstractCo
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_Album', ['id' =>'777',
-                                   'status' => Class_Album::STATUS_VALIDATED,
-                                   'categorie' => $this->fixture('Class_AlbumCategorie',
-                                                                 ['id' => 1,
-                                                                  'libelle' => 'Languages de prog.'])
-                     ]);
+    $this->fixture('Class_Album',
+                   ['id' =>'777',
+                    'titre' => 'Pharo',
+                    'status' => Class_Album::STATUS_VALIDATED,
+                    'categorie' => $this->fixture('Class_AlbumCategorie',
+                                                  ['id' => 1,
+                                                   'libelle' => 'Languages de prog.'])
+                   ]);
   }
 }
 
@@ -68,9 +70,11 @@ class Admin_AlbumControllerPharoVideosAddTest extends Admin_AlbumControllerPharo
   public function durationShouldBe2min30() {
     $this->assertXPath( '//input[@type="text"][@name="duration"]');
   }
-
 }
 
+
+
+
 class Admin_AlbumControllerPharoVideosPostAddTest extends Admin_AlbumControllerPharoVideosTestCase {
   protected $new_ressource;
 
@@ -115,6 +119,8 @@ class Admin_AlbumControllerPharoVideosPostAddTest extends Admin_AlbumControllerP
 }
 
 
+
+
 class Admin_AlbumControllerPharoVideosEditTest extends Admin_AlbumControllerPharoVideosTestCase {
   public function setUp() {
     parent::setUp();
diff --git a/tests/application/modules/admin/controllers/AlbumControllerTest.php b/tests/application/modules/admin/controllers/AlbumControllerTest.php
index f3f03058f45b6b157296cd9a516b0dc758338fd9..94a7a40c0a4733794f5295cab82477834e76b6f7 100644
--- a/tests/application/modules/admin/controllers/AlbumControllerTest.php
+++ b/tests/application/modules/admin/controllers/AlbumControllerTest.php
@@ -78,10 +78,10 @@ abstract class Admin_AlbumControllerTestCase extends Admin_AbstractControllerTes
                                            'from_target' => 'A pour diaporama']);
 
     $this->fixture('Class_Album', ['id' => 43,
+                                   'titre' => 'Mes BD',
                                    'pcdm4' => 'Musique;Dessin',
                                    'notes' => 'a:3:{s:5:"305$a";s:12:"XIIe siècle";s:5:"200$b";s:9:"Parchemin";s:5:"316$a";s:12:"Reliure bois";}'])
 
-         ->setTitre('Mes BD')
          ->setTags('bd;dessin')
          ->setDescription('Les préférées')
          ->setAnnee(1978)
@@ -99,8 +99,8 @@ abstract class Admin_AlbumControllerTestCase extends Admin_AbstractControllerTes
          ->setCategorie($favoris)
          ->save();
 
-    $this->fixture('Class_Album', ['id' => 44])
-      ->setTitre('Bible Souvigny')
+    $this->fixture('Class_Album', ['id' => 44,
+                                   'titre' => 'Bible Souvigny'])
       ->setStatus(Class_Album::STATUS_VALIDATED)
       ->beLivreNumerique()
       ->setThumbnailAttributes(['thumbnail_width' => 350,
diff --git a/tests/application/modules/admin/controllers/NewsletterControllerTest.php b/tests/application/modules/admin/controllers/NewsletterControllerTest.php
index b1de755863755bc3e2b5157518ef404c7c1d5c94..ce9caf9feca1e070d5929cfa308be382215f4b71 100644
--- a/tests/application/modules/admin/controllers/NewsletterControllerTest.php
+++ b/tests/application/modules/admin/controllers/NewsletterControllerTest.php
@@ -503,11 +503,6 @@ class Admin_NewsletterControllerSendInProgressActionTest extends Admin_Newslette
     Class_Batch_SendNewsletters::setCommand($this->_command);
     Class_Newsletter_Dispatch::setTimeSource(new TimeSourceForTest('2016-07-21 11:21:38'));
 
-    $dispatch = Class_Newsletter_Dispatch::newFrom(Class_Newsletter::find(2));
-    $dispatch->assertSave();
-
-    $this->dispatch('/admin/newsletter/send/id/2', true);
-    $this->_dispatch = Class_Newsletter::find(2)->getDispatchs()[0];
   }
 
 
@@ -519,6 +514,13 @@ class Admin_NewsletterControllerSendInProgressActionTest extends Admin_Newslette
 
   /** @test */
   public function shouldHaveOnlyOneDispatch() {
+    $dispatch = Class_Newsletter_Dispatch::newFrom(Class_Newsletter::find(2));
+    $dispatch->setCollected(1);
+    $dispatch->assertSave();
+
+    $this->dispatch('/admin/newsletter/send/id/2', true);
+    $this->_dispatch = Class_Newsletter::find(2)->getDispatchs()[0];
+
     $this->assertEquals(1, Class_Newsletter::find(2)->numberOfDispatchs());
   }
 }
@@ -868,6 +870,7 @@ class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterContro
     $this->assertXPath('//div//img[@src="zork.jpg"]', $this->_response->getBody());
   }
 
+
   /** @test */
   public function noticeShouldBePresent() {
     $this->assertQueryContentContains('p', 'Martine à la plage', $this->_response->getBody());
@@ -877,6 +880,12 @@ class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterContro
   public function noticeMartineALaPlageUrlShouldBeRechercheViewNotice42() {
     $this->assertXPath('//a[@href="http://localhost' . BASE_URL . '/recherche/viewnotice/id/42"]');
   }
+
+  /** @test */
+  public function templateShouldNotCreateNewsletterDispatch() {
+    $this->assertEmpty(Class_Newsletter_Dispatch::findAll());
+  }
+
 }
 
 
@@ -1463,6 +1472,12 @@ class Admin_NewsletterControllerScriptTest extends Admin_NewsletterControllerTes
   }
 
 
+  /** @test */
+  public function sendMailButtonShouldBeHere() {
+    $this->assertXPathContentContains('//script', 'Envoyer la lettre d\'information');
+  }
+
+
   /** @test */
   public function progressBarNewsletterShouldBeDisplay() {
     $this->assertXPath('//div[@id="progress_bar_newsletter_1"]');
@@ -1508,6 +1523,8 @@ class Admin_NewsletterControllerSendProgressWithWrongNewsletterIdTest extends Ad
 
 
 
+
+
 class Admin_NewsletterControllerSendProgressWithErrorAndNothingSentTest
   extends Admin_NewsletterControllerSendProgressTestCase {
 
@@ -1531,6 +1548,8 @@ class Admin_NewsletterControllerSendProgressWithErrorAndNothingSentTest
   public function statusShouldContainsNothingSent() {
     $this->assertContains('aucun mail envoyé', $this->_json->status);
   }
+
+
 }
 
 
@@ -1565,6 +1584,16 @@ class Admin_NewsletterControllerSendProgressWithErrorAnd1Of2SentTest
   public function statusShouldContains1Of2Sent() {
     $this->assertContains('envoyé à 1 sur 2', $this->_json->status);
   }
+
+    /** @test */
+  public function sendButtonShouldContainsReloadText() {
+    Class_Newsletter::find(1)->setTitre('Other title')->save();
+    $this->dispatch('admin/newsletter/index', true);
+    $this->assertXPathContentContains('//script', 'Reprendre l\'envoi de la lettre d\'information: Nouveautés classique ?', $this->_response->getBody());
+    $this->assertXPath('//img[contains(@title,"Reprendre l\'envoi en cours")]', $this->_response->getBody());
+  }
+
+
 }
 
 
diff --git a/tests/application/modules/admin/controllers/OpdsControllerTest.php b/tests/application/modules/admin/controllers/OpdsControllerTest.php
index 06435b358110899e2c751758888170924e9e7819..1beb9a10de8ed051b57b2883e9ebaf99f53cccd5 100644
--- a/tests/application/modules/admin/controllers/OpdsControllerTest.php
+++ b/tests/application/modules/admin/controllers/OpdsControllerTest.php
@@ -18,9 +18,10 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
-require_once 'AdminAbstractControllerTestCase.php';
 
 abstract class Admin_OpdsControllerTestCase extends Admin_AbstractControllerTestCase {
+  protected $_storm_default_to_volatile  = true;
+
   public function setUp() {
     parent::setUp();
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_OpdsCatalog')
@@ -359,12 +360,6 @@ class Admin_OpdsControllerUnknownIdsActionErrorsTest extends Admin_OpdsControlle
 
 
 class Admin_OpdsControllerActionsWithUnknowCatalogTest extends Admin_OpdsControllerTestCase {
-  public function setUp() {
-    parent::setUp();
-    Class_OpdsCatalog::beVolatile();
-  }
-
-
   /** @test */
   public function browseShouldRedirectToIndex() {
     $this->dispatch('/admin/opds/browse/id/666');
@@ -507,6 +502,8 @@ class Admin_OpdsControllerBrowseActionTest extends Admin_OpdsControllerBrowseEbo
 }
 
 
+
+
 class Admin_OpdsControllerBrowseEbooksGratuitsLastUpdatedTest extends Admin_OpdsControllerBrowseEbooksGratuitsTestCase  {
   public function setUp() {
     parent::setUp();
@@ -557,15 +554,18 @@ class Admin_OpdsControllerBrowseEbooksGratuitsImportTest extends Admin_OpdsContr
   public function setUp() {
     parent::setUp();
 
+    $this->fixture('Class_CosmoVar', ['id' => 'types_docs', 'liste' => '']);
+
     Class_OpdsCatalog::getLoader()->find(1)
       ->getWebClient()
       ->whenCalled('open_url')
       ->with('http://www.opacsgratuits.com/opds/feed.php?mode=maj')
       ->answers(OPDSFeedFixtures::ebooksGratuitsLastUpdatedXml());
 
-    $this->fixture('Class_Album', ['id'=>776]);
-    Class_AlbumRessource::beVolatile();
-    Class_AlbumCategorie::beVolatile();
+    $this->fixture('Class_Album',
+                   ['id'=>776,
+                    'titre' => 'Free book !']);
+
     $codif_type_doc=$this->fixture('Class_CodifTypeDoc', ['id' => Class_TypeDoc::EPUB,
                                                           'famille_id' => Class_CodifTypeDoc::INCONNU,
                                                           'bibliotheques' => '1;5',
@@ -641,8 +641,6 @@ class Admin_OpdsControllerBrowseSearchPostActionTest extends Admin_OpdsControlle
   public function setUp() {
     parent::setUp();
 
-
-
     $this->postDispatch('/admin/opds/browse/id/1', array('search' => 'dracula'));
   }
 
diff --git a/tests/application/modules/admin/controllers/UploadControllerTest.php b/tests/application/modules/admin/controllers/UploadControllerTest.php
index 027a1d36dde58929b46714d456706849f1fe711d..ed42f18d319adc45d26ab91c0fffb12fff21055d 100644
--- a/tests/application/modules/admin/controllers/UploadControllerTest.php
+++ b/tests/application/modules/admin/controllers/UploadControllerTest.php
@@ -18,7 +18,6 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
-require_once 'AbstractControllerTestCase.php';
 
 class UploadControllerMultipleActionTest extends AbstractControllerTestCase {
   public function setUp() {
@@ -96,7 +95,7 @@ class UploadControllerMultipleProcessPostAction extends AbstractControllerTestCa
 
   /** @test */
   public function withModelShouldCallFileProcessingMethod() {
-    $album = Storm_Test_ObjectWrapper::on(Class_Album::getLoader()->newInstance())
+    $album = Storm_Test_ObjectWrapper::on(Class_Album::getLoader()->newInstance(['titre' => 'Pomdapi']))
       ->whenCalled('addFile')->answers(array('success' => 'true'))
       ->whenCalled('index')->answers(null)
       ->getWrapper();
diff --git a/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php b/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php
index a157ca7817a6ef01ea9efe4d542db1cfe3c50c28..c708628df4265e51485c3cdbce736c9396bb8438 100644
--- a/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php
+++ b/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php
@@ -51,7 +51,7 @@ abstract class BibNumeriqueContollerDilicomTestCase extends AbstractControllerTe
 
     $this->book = $this->fixture('Class_Album',
                                  ['id' => 3,
-                                  'libelle' => 'Totem et Thora',
+                                  'titre' => 'Totem et Thora',
                                   'id_origine' => 'Dilicom-88817216',
                                   'external_uri' => 'http://www.edenlivres.fr/p/23416',
                                   'type_doc_id' => Class_TypeDoc::DILICOM,
diff --git a/tests/application/modules/opac/controllers/IndexControllerTest.php b/tests/application/modules/opac/controllers/IndexControllerTest.php
index d1f1d9805d4508270172e02d28460e65013b76be..9c47de6bf92d1d2225f9c28d231bb3c0ffde1dab 100644
--- a/tests/application/modules/opac/controllers/IndexControllerTest.php
+++ b/tests/application/modules/opac/controllers/IndexControllerTest.php
@@ -135,7 +135,6 @@ class IndexControllerAsAdminWithCssEditorAndNoHeaderCss extends IndexControllerA
 class IndexControllerAsAdminWithCSSEditorTest extends IndexControllerAsAdminTestCase {
   public function setUp() {
     parent::setUp();
-
     $this->dispatch('/?id_profil=1');
   }
 
@@ -150,7 +149,27 @@ class IndexControllerAsAdminWithCSSEditorTest extends IndexControllerAsAdminTest
   public function headerCssShouldBeMyCssWithCacheWorkaround() {
     $this->assertXPath('//link[contains(@href, "mycss.css")][contains(@href, "?cache=")]');
   }
+}
+
 
+
+class IndexControllerAsAdminWithCSSEditorAndUseParentCssFalseTest extends IndexControllerAsAdminTestCase {
+  public function setUp() {
+    parent::setUp();
+
+    //@see http://forge.afi-sa.fr/issues/59813
+    Class_Profil::find(1)
+      ->setUseParentCss(false)
+      ->assertSave();
+
+    $this->dispatch('/?id_profil=1');
+  }
+
+
+  /** @test */
+  public function headerCssShouldBeMyCss() {
+    $this->assertXPath('//link[contains(@href, "mycss.css")][contains(@href, "?cache=")]');
+  }
 }
 
 
diff --git a/tests/application/modules/opac/controllers/MultimediaControllerTest.php b/tests/application/modules/opac/controllers/MultimediaControllerTest.php
index 941ede0cc472226dcd270b78c5750d184427b883..7bb1f5039962303c66f0fbd2d8e38d9f9a9eb7a7 100644
--- a/tests/application/modules/opac/controllers/MultimediaControllerTest.php
+++ b/tests/application/modules/opac/controllers/MultimediaControllerTest.php
@@ -41,12 +41,11 @@ trait TMultimediaControllerAbonneFixtureHoldSuccessOnSept12 {
                                               ])
                    ]);
 
-
-
     $this->onLoaderOfModel('Class_Multimedia_DeviceHold')
          ->whenCalled('getHoldOnDeviceAtTime')
          ->answers(Class_Multimedia_DeviceHold::newInstanceWithId(333)
                    ->setIdUser($this->_user->getId())
+                   ->setStart(strtotime('2012-09-12 15:40:00'))
                    ->setEnd(strtotime('2012-09-12 16:40:00')));
 
     parent::_launch();
@@ -64,14 +63,25 @@ trait TMultimediaControllerAbonneFixtureWithUserLaurentInDevsAgiles {
 }
 
 
+abstract class MultimediaControllerAbstractTestCase extends AbstractControllerTestCase {
+  protected
+    $_storm_default_to_volatile=true,
+    $_json;
+
+  /**
+   * @param $url string
+   * @return stdClass
+   */
+  protected function getJson($url) {
+    $this->dispatch($url, true);
+    return json_decode($this->_response->getBody());
+  }
 
+}
 
 
-abstract class MultimediaControllerAuthenticateTestCase extends AbstractControllerTestCase {
-  protected
-    $_storm_default_to_volatile=true,
-    $_json,
-    $_auth;
+abstract class MultimediaControllerAuthenticateTestCase extends MultimediaControllerAbstractTestCase {
+  protected $_auth;
 
   public function setUp() {
     parent::setUp();
@@ -92,17 +102,6 @@ abstract class MultimediaControllerAuthenticateTestCase extends AbstractControll
     parent::tearDown();
   }
 
-
-  /**
-   * @param $url string
-   * @return stdClass
-   */
-  protected function getJson($url) {
-    $this->dispatch($url, true);
-    return json_decode($this->_response->getBody());
-  }
-
-
   /**
    * @param $user Class_Users
    */
@@ -254,7 +253,6 @@ class MultimediaControllerAuthenticateInviteAfiMultimediaTest extends Multimedia
 }
 
 
-
 abstract class MultimediaControllerAuthenticateValidTestCase extends MultimediaControllerAuthenticateTestCase {
   protected $_user;
   protected $_group;
@@ -278,14 +276,10 @@ abstract class MultimediaControllerAuthenticateValidTestCase extends MultimediaC
 
 
 abstract class MultimediaControllerChangeDateCurrentTestCase extends MultimediaControllerAuthenticateValidTestCase {
-  protected $_user;
-  protected $_group;
 
   protected function _launch() {
     Class_Multimedia_Location::setTimeSource(new TimeSourceForTest('2012-09-18 09:00:00'));
-    $this->_json = $this->getJson(sprintf('/multimedia/is-holdable-day/login/%s/password/%s/poste/1/site/1',
-                                          $this->_user->getLogin(),
-                                          $this->_user->getPassword()));
+    $this->_json = $this->getJson('/multimedia/is-holdable-day/poste/1/site/1');
   }
 
 
@@ -303,11 +297,6 @@ class MultimediaControllerNotHoldableDay extends MultimediaControllerChangeDateC
     TMultimediaControllerAbonneFixtureHoldSuccessOnSept12,
     TMultimediaControllerAbonneFixtureWithUserLaurentInDevsAgiles;
 
-    /** @test */
-    public function shouldHaveAuth() {
-      $this->assertEquals(1, $this->_json->auth);
-    }
-
     /** @test */
     public function shouldNotHaveHolding() {
       $this->assertEquals(0, $this->_json->holding);
@@ -318,9 +307,7 @@ class MultimediaControllerNotHoldableDay extends MultimediaControllerChangeDateC
 
 abstract class MultimediaControllerCheckedHoldableDayTestCase extends MultimediaControllerAuthenticateValidTestCase {
   protected function _launch() {
-    $this->_json = $this->getJson(sprintf('/multimedia/is-holdable-day/login/%s/password/%s/poste/1/site/1',
-                                          $this->_user->getLogin(),
-                                          $this->_user->getPassword()));
+    $this->_json = $this->getJson('/multimedia/is-holdable-day/poste/1/site/1');
   }
 
 }
@@ -331,13 +318,6 @@ class MultimediaControllerHoldableDay extends MultimediaControllerCheckedHoldabl
     TMultimediaControllerAbonneFixtureHoldSuccessOnSept12,
     TMultimediaControllerAbonneFixtureWithUserLaurentInDevsAgiles;
 
-
-    /** @test */
-    public function shouldHaveAuth() {
-      $this->assertEquals(1, $this->_json->auth);
-    }
-
-
     /** @test */
     public function shouldHaveHoldDay() {
       $this->assertEquals(1, $this->_json->holding);
@@ -353,8 +333,6 @@ abstract class MultimediaControllerHoldedTestCase extends  MultimediaControllerA
   }
 }
 
-
-
 class MultimediaControllerAuthenticateLaurentTest extends MultimediaControllerHoldedTestCase {
   use
     TMultimediaControllerAbonneFixtureHoldSuccessOnSept12,
diff --git a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
index 88ffe4fa16b0e738834c7a0b578cf7b69861ad37..4137cb2d0307e9aca0f912fdc542e78b969ce29e 100644
--- a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
+++ b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
@@ -297,6 +297,7 @@ class NoticeAjaxControllerResNumeriquesTest extends AbstractControllerTestCase {
   /** @test */
   public function bookletShouldBeLoadedWithAlbumTypeLivreNumerique() {
     $album = $this->fixture('Class_Album', ['id' => 8,
+                                            'titre' => 'old book',
                                             'type_doc_id' => Class_TypeDoc::LIVRE_NUM]);
 
     $this->dispatch('noticeajax/resnumeriques?id_notice=123');
@@ -320,6 +321,7 @@ class NoticeAjaxControllerResNumeriquesTest extends AbstractControllerTestCase {
   /** @test */
   public function diaporamaShouldBeLoadedWithAlbumTypeDiaporama() {
     $album = $this->fixture('Class_Album', ['id' => 8,
+                                            'titre' => 'diapo vacances',
                                             'type_doc_id' => Class_TypeDoc::DIAPORAMA]);
 
     $this->dispatch('noticeajax/resnumeriques?id_notice=123', true);
@@ -2202,9 +2204,11 @@ class NoticeAjaxControllerRessourceEpubPictoTypeTest extends AbstractControllerT
   public function withPictoInSkinShouldUseIt() {
     $album = $this->fixture('Class_Album',
                             ['id' => 12,
+                             'titre' => 'Cowboy Bebop',
                              'type_doc_id' => Class_TypeDoc::EPUB,
                              'ressources' => [$this->fixture('Class_AlbumRessource',
                                                              ['id' => 22,
+                                                              'titre' => 'Cowboy Bebop epub',
                                                               'fichier' => 'my.epub'])]]);
 
     $this->fixture('Class_Notice',
diff --git a/tests/application/modules/opac/controllers/RechercheControllerTest.php b/tests/application/modules/opac/controllers/RechercheControllerTest.php
index 2b3d2fe30fcd1588dfa61d39fc6e8b23a0036131..e2b45d15f0d08cbd375d4a9338d7d4854e86eca4 100644
--- a/tests/application/modules/opac/controllers/RechercheControllerTest.php
+++ b/tests/application/modules/opac/controllers/RechercheControllerTest.php
@@ -1222,6 +1222,32 @@ class RechercheAvanceeControllerSimpleActionWithDefaultConfigTest extends Recher
   }
 
 
+  /** @test */
+  public function userSettingBookmarkedDomainShouldBeOne() {
+    $this->assertEquals(1,
+                        (new Class_User_Settings(Class_Users::find(1)))
+                        ->get(Class_User_Settings::BOOKMARKED_DOMAINS));
+  }
+
+
+  /** @test */
+  public function userSettingZorkShouldBeEmpty() {
+    $this->assertEmpty((new Class_User_Settings(Class_Users::find(1)))->get('zork'));
+  }
+
+
+  /** @test */
+  public function userSettingSetZorkToGlubShouldSetIt() {
+    (new Class_User_Settings(Class_Users::find(1)))->set('zork', 'glub');
+    Class_Users::find(1)->save();
+    Class_Users::clearCache();
+
+    $this->assertEquals('glub',
+                        (new Class_User_Settings(Class_Users::find(1)))
+                        ->get('zork'));
+  }
+
+
   /** @test */
   public function tagsCloudLevel5ShouldBePresent() {
     $this->assertXPath('//a[contains(@class,"nuage_niveau5")]',
diff --git a/tests/application/modules/push/controllers/MultimediaControllerTest.php b/tests/application/modules/push/controllers/MultimediaControllerTest.php
index 803c321ffd4c1d542520952620187ab388fbab21..a58a32d8b51fec5267feb4574bc62d1c3026de32 100644
--- a/tests/application/modules/push/controllers/MultimediaControllerTest.php
+++ b/tests/application/modules/push/controllers/MultimediaControllerTest.php
@@ -654,7 +654,9 @@ class ModifyBorrowerMultimediaNoPresentControllerReturnedMessageTest extends Bor
   public function setUp() {
     parent::setUp();
 
-
+    $multimedia = Class_Multimedia::getInstance();
+    $multimedia->setLog(new Zend_Log(new Zend_Log_Writer_Mock()));
+//    Class_Multimedia::setInstance($multimedia);
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('findFirstBy')
       ->with(['login'=> 'invite'])
@@ -689,7 +691,7 @@ class ModifyBorrowerMultimediaNoPresentControllerReturnedMessageTest extends Bor
 
   /** @test */
   public function shouldReturnedMessageIsAddNewUserOk() {
-    $this->assertEquals('ADD_NEW_USER_OK', $this->_resp);
+    $this->assertEquals('USER_NOT_FOUND', $this->_resp);
   }
 
 }
diff --git a/tests/application/modules/telephone/controllers/AbonneControllerTest.php b/tests/application/modules/telephone/controllers/AbonneControllerTest.php
index 8b45fa33d4c80f4554e7572dd0471715ff6f9289..ff7f8588449a88bf290e28457da1f2133e66b496 100644
--- a/tests/application/modules/telephone/controllers/AbonneControllerTest.php
+++ b/tests/application/modules/telephone/controllers/AbonneControllerTest.php
@@ -171,7 +171,10 @@ class AbonneControllerTelephoneFicheWithPNBTest extends AbonneControllerTelephon
     parent::setUp();
 
     $this->fixture('Class_Album',
-                   ['id' => 64, 'id_origine' => 'Dilicom-8907', 'notice_id' => '2367']);
+                   ['id' => 64,
+                    'titre' => 'Dilicomotion',
+                    'id_origine' => 'Dilicom-8907',
+                    'notice_id' => '2367']);
 
     $this->fixture('Class_Loan_Pnb',
                    ['id' => 42,
diff --git a/tests/db/UpgradeDBTest.php b/tests/db/UpgradeDBTest.php
index 6cdd45f45865bb5b61272f4010563647acbd3e08..88ad6340d71575f2b8479404c298a1d143e333ea 100644
--- a/tests/db/UpgradeDBTest.php
+++ b/tests/db/UpgradeDBTest.php
@@ -1207,7 +1207,6 @@ class UpgradeDB_315_Test extends UpgradeDBTestCase {
 
 
 class UpgradeDB_316_Test extends UpgradeDBTestCase {
-
   public function prepare() {
     try {
       $this->query("ALTER TABLE codif_section MODIFY id_section tinyint(4)");
@@ -1249,7 +1248,7 @@ class UpgradeDB_317_Test extends UpgradeDBTestCase {
   /**
    * @test
    * @dataProvider datas
-   **/
+   */
   public function fieldsShouldBecomeMediumtext($key) {
     $this->assertFieldType('bib_admin_profil', $key, 'mediumtext');
   }
@@ -1452,3 +1451,55 @@ class UpgradeDB_325_Test extends UpgradeDBTestCase {
     $this->assertColumn('session_activity_inscriptions', 'session_activity_id');
   }
 }
+
+
+
+class UpgradeDB_326_Test extends UpgradeDBTestCase {
+  public function prepare() {
+    try {
+
+      $this->query('drop table user_api_tokens');
+    } catch (Exception $e) {}
+  }
+
+  public function datas() {
+    return
+      [
+       ['id',  'int(11) unsigned'],
+       ['client_id', 'varchar(255)'],
+       ['token', 'varchar(255)'],
+       ['user_id', 'int(11) unsigned'],
+      ];
+  }
+
+  /**
+   * @test
+   * @dataProvider datas
+   */
+  public function fieldShouldBe($field, $type) {
+    $this->assertFieldType('user_api_tokens', $field, $type);
+  }
+}
+
+
+
+class UpgradeDB_327_Test extends UpgradeDBTestCase {
+  public function prepare() {
+    $this->query("insert into newsletter_dispatch (newsletter_id, title, created_on, ended_on, error, collected) values ('1','Title for test', NOW(),NULL,NULL,0),
+('1','Title 2 for test', '2017-05-08 14:00:00',NULL,NULL,0)");
+  }
+
+
+  /** @test */
+  public function newslettersDispatchWithSameDateShouldNotBeDeleted() {
+    $data = $this->query('select * from newsletter_dispatch where title="Title for test" ;')->fetch();
+    $this->assertNotNull($data);
+  }
+
+
+  /** @test */
+  public function newslettersDispatchShouldBeDeleted() {
+    $data = $this->query('select * from newsletter_dispatch where title="Title 2 for test" ;')->fetch();
+    $this->assertNull($data);
+  }
+}
\ No newline at end of file
diff --git a/tests/fixtures/DilicomFixtures.php b/tests/fixtures/DilicomFixtures.php
index 3e97a0b15f47baaba6efcfbd9a196fdf8ce2b484..db1304b30ae08a387291f2601a84c727454de64e 100644
--- a/tests/fixtures/DilicomFixtures.php
+++ b/tests/fixtures/DilicomFixtures.php
@@ -173,7 +173,7 @@ class DilicomFixtures {
   public function albumTotemThora() {
     return $this->fixture('Class_Album',
                           ['id' => 3,
-                           'libelle' => 'Totem et Thora',
+                           'titre' => 'Totem et Thora',
                            'id_origine' => 'Dilicom-88817216',
                            'external_uri' => 'http://www.edenlivres.fr/p/23416',
                            'type_doc_id' => Class_TypeDoc::DILICOM,
diff --git a/tests/fixtures/onedtouch_oai.xml b/tests/fixtures/onedtouch_oai.xml
index 3dd5b5b1d65770e171e13ee62f08160dbb92c0a2..a8cf7077a9267fcfbbdb0c7d767ddbd729e7af48 100644
--- a/tests/fixtures/onedtouch_oai.xml
+++ b/tests/fixtures/onedtouch_oai.xml
@@ -5,6 +5,13 @@
   <request metadataPrefix="oai1dtouch_dc" verb="ListRecords">http://dev.1dtouch.com/oai
   </request>
   <ListRecords>
+    <record>
+      <header status="deleted">
+	<identifier>oai:oai1dtouch.com/album2</identifier>
+	<datestamp>2017-02-22T12:46:19Z</datestamp>
+	<setSpec>music</setSpec>
+      </header>
+    </record>
     <record>
       <header>
 	<identifier>oai:oai1dtouch.com:124
diff --git a/tests/library/Class/Album/UsageConstraintTest.php b/tests/library/Class/Album/UsageConstraintTest.php
index 75a16b6f17703c13a9b563f010fbd3fbb23d5efd..8bb6b0967abc84699ee343b58d5f2b0fb30c05e4 100644
--- a/tests/library/Class/Album/UsageConstraintTest.php
+++ b/tests/library/Class/Album/UsageConstraintTest.php
@@ -25,7 +25,8 @@ class Class_Album_UsageConstraintTest extends Storm_Test_ModelTestCase {
     Storm_Model_Loader::defaultToVolatile();
 
     $this->fixture('Class_Album',
-                   ['id' => 23]);
+                   ['id' => 23,
+                   'titre' => 'cybersecurity explained']);
 
 
     $this->fixture('Class_Album_Item',
diff --git a/tests/library/Class/AlbumRessourceTest.php b/tests/library/Class/AlbumRessourceTest.php
index 3d7da1ec745d6d88232c0fd65fe507e7b9308be5..b7eccd32b8ca8ba5ac1fd7a7aed0b4e76ca06740 100644
--- a/tests/library/Class/AlbumRessourceTest.php
+++ b/tests/library/Class/AlbumRessourceTest.php
@@ -144,7 +144,9 @@ class AlbumRessourceLoaderTest extends ModelTestCase {
                                             'id_album' => 999,
                                             'ordre' => 6]);
 
-    $album = $this->fixture('Class_Album', ['id' => 999]);
+    $album = $this->fixture('Class_Album',
+                            ['id' => 999,
+                             'titre' => 'Harlock']);
     $this->assertEquals(7,Class_AlbumRessource::getNextOrderFor($album));
   }
 
diff --git a/tests/library/Class/Batch/DilicomTest.php b/tests/library/Class/Batch/DilicomTest.php
index d597396837cdbe64fddf84973199816aa2a1398a..a4bf4ee1b76976eea8c92f9807d69348539b14e2 100644
--- a/tests/library/Class/Batch/DilicomTest.php
+++ b/tests/library/Class/Batch/DilicomTest.php
@@ -24,7 +24,8 @@ require_once 'tests/fixtures/DilicomFixtures.php';
 abstract class Class_Batch_DilicomTestCase extends ModelTestCase {
   protected
     $_storm_default_to_volatile = true,
-    $_log = '';
+    $_log = '',
+    $_debug_log = '';
 
   public function setUp() {
     parent::setUp();
@@ -35,7 +36,11 @@ abstract class Class_Batch_DilicomTestCase extends ModelTestCase {
     return $this->logger = $this->mock()
                                 ->whenCalled('log')
                                 ->willDo(
-                                         function($message) {
+                                         function($message, $target = '') {
+                                           if ($target == 'debug') {
+                                             $this->_debug_log .= $message . "\n";
+                                             return;
+                                           }
                                            $this->_log .= $message;
                                          });
   }
@@ -138,6 +143,8 @@ abstract class Class_Batch_DilicomJobOnixTestCase extends Class_Batch_DilicomTes
 
     Class_Batch_DilicomJobOnix::setFileSystem($file_system);
 
+    Class_WebService_BibNumerique_RessourceNumerique::setLogger($this->getLogger());
+
     (new Class_Batch_DilicomJobOnix(new Class_Batch_Dilicom))
       ->setFtpClient($this->getFtpClient())
       ->setLogger($this->getLogger())
@@ -145,6 +152,12 @@ abstract class Class_Batch_DilicomJobOnixTestCase extends Class_Batch_DilicomTes
   }
 
 
+  public function tearDown() {
+    Class_WebService_BibNumerique_RessourceNumerique::setLogger(null);
+    parent::tearDown();
+  }
+
+
   protected function _prepareFixtures() { }
 
 
@@ -297,6 +310,16 @@ class Class_Batch_DilicomJobOnixWithFullTest extends Class_Batch_DilicomJobOnixT
     $this->assertEquals('diffusion_pnb_3056309900005_20150728T050431Z.xml',
                         (new Class_Batch_Dilicom)->getModel()->getData());
   }
+
+
+  /** @test */
+  public function debugLogShouldContainsImportLaReineDesNeiges() {
+    $this->assertContains('[Dilicom_Book] create "La Reine des Neiges" (Dilicom-9782290123409)',
+                          $this->_debug_log);
+
+    $this->assertContains('new album id: 1',
+                          $this->_debug_log);
+  }
 }
 
 
diff --git a/tests/library/Class/BatchTest.php b/tests/library/Class/BatchTest.php
index a9a5c284c1dc341bc4cfbfd5bfd065b20333c109..9b52b3119796d4b2ac3611f485b8ea0b937c9e5e 100644
--- a/tests/library/Class/BatchTest.php
+++ b/tests/library/Class/BatchTest.php
@@ -124,7 +124,7 @@ class BatchLoaderWithoutRessourcesNumeriquesTest extends Storm_Test_ModelTestCas
 class BatchIndexRessourcesNumeriquesTest extends Storm_Test_ModelTestCase {
   public function setUp() {
     $album = $this->fixture('Class_Album', ['id' => 1,
-                                            'libelle' => 'Mon Album',
+                                            'titre' => 'Mon Album',
                                             'status' => Class_Album::STATUS_VALIDATED]);
     Class_Notice::beVolatile();
 
@@ -136,11 +136,13 @@ class BatchIndexRessourcesNumeriquesTest extends Storm_Test_ModelTestCase {
     (new Class_Batch_IndexRessourcesNumeriques())->run();
   }
 
+
   /** @test */
   public function afterRunNoticeShouldExists() {
     $this->assertCount(1, Class_Notice::findAll());
   }
 
+
   /** @test */
   public function afterRunCacheShouldBeCleaned() {
     $this->assertEmpty($this->cache->load('data'));
diff --git a/tests/library/Class/Cata/LogTest.php b/tests/library/Class/Cata/LogTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ce7150ed0d12267bed654ff07a6d90c1c52821c7
--- /dev/null
+++ b/tests/library/Class/Cata/LogTest.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Class_Cata_LogTest extends ModelTestCase {
+  protected $_logs;
+
+  protected function newLog($target) {
+    $append_log = function($message) use ($target) {
+      $this->_logs[$target][] = $message;
+    };
+
+    $mock = $this->mock();
+    foreach(['log', 'info', 'success', 'error'] as $method)
+      $mock->whenCalled($method)->willDo($append_log);
+    return $mock;
+  }
+
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->_logs = ['default' => [],
+                    'error' => [],
+                    'warning' => []];
+
+    (new Class_Cata_Log())
+      ->addDefaultTarget($this->newLog('default'))
+      ->addTarget('error', $this->newLog('error'))
+      ->addTarget('warning', $this->newLog('warning'))
+      ->log('Cooking chocolate fondant')
+      ->log('Trying 2.0 version', ['warning', 'error'])
+      ->log('1.0 was buggy', 'error')
+      ->log('Starting', '*')
+      ->info('Gather ingredients', '*')
+      ->success('250g Sugar')
+      ->success('250g Butter')
+      ->error('Not enough Butter', 'default')
+      ->error('Go buy butter', '*')
+      ->log('Then eat', 'nowhere');
+  }
+
+
+  public function expectedLogs() {
+    return
+      [
+       ['default', ['Cooking chocolate fondant',
+                    'Starting',
+                    'Gather ingredients',
+                    '250g Sugar',
+                    '250g Butter',
+                    'Not enough Butter',
+                    'Go buy butter']],
+
+       ['error', ['Trying 2.0 version',
+                  '1.0 was buggy',
+                  'Starting',
+                  'Gather ingredients',
+                  'Go buy butter']],
+
+       ['warning', ['Trying 2.0 version',
+                    'Starting',
+                    'Gather ingredients',
+                    'Go buy butter']]
+      ];
+  }
+
+
+  /**
+   * @dataProvider expectedLogs
+   * @test */
+  public function targetShouldContainLines($target, $lines) {
+    $this->assertEquals($this->_logs[$target], $lines);
+  }
+
+
+  /** @test */
+  public function catalogWithoutDefaultTargeShouldBeSilent() {
+    (new Class_Cata_Log())->log('no exception please');
+  }
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseReservationTest.php b/tests/library/Class/Cosmogramme/Integration/PhaseReservationTest.php
index 1a5d66e22217a969999c0499008e2cc55d52ebc9..4ba44a4acbf9d6cbfb06003cd3777b310f71aede 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhaseReservationTest.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhaseReservationTest.php
@@ -66,7 +66,7 @@ class PhaseReservationBadPreviousPhaseCronFirstRunTest extends PhaseReservationT
 
   /** @test */
   public function logShouldNotHaveBeenCalled() {
-    $this->assertFalse($this->_log->methodHasBeenCalled('ecrire'));
+    $this->assertFalse($this->_log->methodHasBeenCalled('log'));
   }
 
 
diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php b/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php
index 4e5624b086364035c5ad785e0ffdbe31f1cd7134..2c632e4ed25df1c39cd1bce70095cf5e66dff0b7 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php
@@ -38,10 +38,10 @@ abstract class Class_Cosmogramme_Integration_PhaseTestCase extends ModelTestCase
 
     $append_log = function($content) { $this->_log_content .= ' ' . $content; };
     $this->_log = $this->mock()
-                       ->whenCalled('addError')->willDo($append_log)
-                       ->whenCalled('addSuccess')->willDo($append_log)
-                       ->whenCalled('addInfo')->willDo($append_log)
-                       ->whenCalled('ecrire')->willDo($append_log);
+                       ->whenCalled('error')->willDo($append_log)
+                       ->whenCalled('success')->willDo($append_log)
+                       ->whenCalled('info')->willDo($append_log)
+                       ->whenCalled('log')->willDo($append_log);
 
     $this->_chrono = new Class_Cosmogramme_Integration_Chronometre();
     $this->_printer = $this->mock()
diff --git a/tests/library/Class/MoteurRechercheTest.php b/tests/library/Class/MoteurRechercheTest.php
index 79205aab0e04ae885131f4f303b53a96361d5bac..9a029aa29e420294de5bb85fdb0b7e4b9f45edac 100644
--- a/tests/library/Class/MoteurRechercheTest.php
+++ b/tests/library/Class/MoteurRechercheTest.php
@@ -308,7 +308,13 @@ class MoteurRechercheSimpleTest extends MoteurRechercheTestCase {
             [['expressionRecherche' => '',
               'digital_lib' => '1'],
              'nb_mots'=> 0,
-             'req_liste' => 'select id_notice, facettes from notices Where ((type_doc in (\'100\',\'101\',\'102\',\'103\',\'104\',\'105\',\'106\',\'107\',\'108\',\'109\',\'110\',\'111\',\'112\',\'114\',\'113\',\'115\',\'116\',\'117\',\'119\',\'Assimil\',\'Lekiosk\'))) or (CAST(type_doc AS UNSIGNED) >= 100)'],
+             'req_liste' => 'select id_notice, facettes from notices Where (type_doc in (\'100\',\'101\',\'102\',\'103\',\'104\',\'105\',\'106\',\'107\',\'108\',\'109\',\'110\',\'111\',\'112\',\'114\',\'113\',\'115\',\'116\',\'117\',\'119\',\'Assimil\',\'Lekiosk\'))'],
+
+
+            [['expressionRecherche' => 'logo',
+              'digital_lib' => '1'],
+             'nb_mots'=> 1,
+             'req_liste' => "select id_notice, facettes from notices Where " . $match_axes . " AGAINST('+(LOGO LOGOS LOGO)' IN BOOLEAN MODE) and (type_doc in ('100','101','102','103','104','105','106','107','108','109','110','111','112','114','113','115','116','117','119','Assimil','Lekiosk')) order by (MATCH(alpha_titre) AGAINST(' LOGO') * 1.5) + (MATCH(alpha_auteur) AGAINST(' LOGO')) desc"],
 
             [['expressionRecherche' => '',
               'id_panier' => 4],
diff --git a/tests/library/Class/NoticeTest.php b/tests/library/Class/NoticeTest.php
index f1e2d74d9d64f8c4a400bbc2fa30edb486f0b9db..d6232f81d735f56676aeceb96ddf38249cf1fe9c 100644
--- a/tests/library/Class/NoticeTest.php
+++ b/tests/library/Class/NoticeTest.php
@@ -223,6 +223,7 @@ class NoticeVignetteTest extends ModelTestCase {
 
     $album = $this->fixture('Class_Album',
                             ['id' => 2,
+                             'titre' => 'Winnie the poo',
                              'type_doc_id' => Class_TypeDoc::DIAPORAMA,
                              'fichier' => 'a_thumb.jpg']);
 
@@ -256,6 +257,7 @@ class NoticeVignetteTest extends ModelTestCase {
 
     $album = $this->fixture('Class_Album',
                             ['id' => 2,
+                             'titre' => 'Winnie the poo',
                              'type_doc_id' => Class_TypeDoc::DIAPORAMA]);
 
     $album
diff --git a/tests/library/Class/WebService/Dilicom/HubTest.php b/tests/library/Class/WebService/Dilicom/HubTest.php
index 52167cbdc59eb46d385e645cd13173841b7386c5..d2b8ddc6e21140b218191ae46d4d9a9b692fe57e 100644
--- a/tests/library/Class/WebService/Dilicom/HubTest.php
+++ b/tests/library/Class/WebService/Dilicom/HubTest.php
@@ -168,6 +168,7 @@ class Class_Webservice_Dilicom_UpdateLoansReturnDateTest extends Class_Webservic
                                           ['id' => $i,
                                            'album' => $this->fixture('Class_Album',
                                                                      ['id' => $i,
+                                                                      'titre' => 'Dr House',
                                                                       'id_origine' => 'Dilicom-' . $i])
                                           ]);
                        },
diff --git a/tests/library/Class/WebService/OneDTouchTest.php b/tests/library/Class/WebService/OneDTouchTest.php
index 1846ddbdae974724c91d55ef599a9be7d88bf97a..8dd6dbc7c9d8e8054f7595f1e62b9728927171c7 100644
--- a/tests/library/Class/WebService/OneDTouchTest.php
+++ b/tests/library/Class/WebService/OneDTouchTest.php
@@ -20,7 +20,7 @@
  */
 include_once('tests/fixtures/RessourcesNumeriquesFixtures.php');
 
-class OneDTouchTest extends ModelTestCase {
+class OneDTouchFullTest extends ModelTestCase {
   protected $_storm_default_to_volatile = true;
 
   public function setUp() {
@@ -144,11 +144,35 @@ class OneDTouchTest extends ModelTestCase {
 
 
 class OneDTouchIncTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
+  protected
+    $_storm_default_to_volatile = true,
+    $_logger,
+    $_debug_log = '';
+
+
+  protected function _setupLogger() {
+    $append_log = function($message, $target = '')
+      {
+        if (!in_array($target, ['*', 'debug']))
+          return;
+        $this->_debug_log .= $message . "\n";
+      };
+
+
+    $this->_logger = $this->mock()
+                   ->whenCalled('log')
+                   ->willDo($append_log)
+                          ->whenCalled('info')
+                          ->willDo($append_log);
+    Class_WebService_BibNumerique_RessourceNumerique::setLogger($this->_logger);
+  }
+
 
   public function setUp() {
     parent::setUp();
 
+    $this->_setupLogger();
+
     RessourcesNumeriquesFixtures::activate1Dtouch();
     $catalogue_xml = file_get_contents(realpath(dirname(__FILE__)). '/../../../fixtures/onedtouch_oai.xml');
 
@@ -193,11 +217,18 @@ class OneDTouchIncTest extends ModelTestCase {
     $this->_service = new Class_WebService_BibNumerique_OneDTouch();
     $this->_service->setTimeSource(new TimeSourceForTest('2015-03-18 10:00:00'));
     Class_WebService_BibNumerique_OneDTouch::setDefaultHttpClient($this->_http_client);
+    $this->_service->setLogger($this->_logger);
     $this->_service->harvest();
     Class_Album::clearCache();
   }
 
 
+  public function tearDown() {
+    Class_WebService_BibNumerique_RessourceNumerique::setLogger(null);
+    parent::tearDown();
+  }
+
+
   /** @test */
   public function shouldHave4Albums() {
     $this->assertEquals(4, count(Class_Album::findAll()));
@@ -212,13 +243,33 @@ class OneDTouchIncTest extends ModelTestCase {
 
 
   /** @test */
-  public function albumShouldHaveBeenUpdated() {
-    $this->assertEquals(1, Class_Album::findFirstBy(['titre' => 'WOLFEP026'])->getId());
+  public function album1DTouchRessourcesShouldHaveBeenUpdated() {
+    $this->assertCount(4,
+                       Class_Album::findFirstBy(['titre' => '1Dtouch res'])->getRessources());
+  }
+
+
+  /** @test */
+  public function debugLogShouldContainsUpdateAlbumOne() {
+    $this->assertContains('update [1] with "WOLFEP026" (128)', $this->_debug_log);
+  }
+
+
+  /** @test */
+  public function debugLogShouldContainsTitleMandatory() {
+    $this->assertContains('errors: Le titre est obligatoire', $this->_debug_log);
+  }
+
+
+  /** @test */
+  public function debugLogShouldContainsTraitementdelapage() {
+    $this->assertContains('Traitement de la page', $this->_debug_log);
   }
 }
 
 
 
+
 class oneDTouchWithErrorResponseTest extends ModelTestCase {
  protected $_storm_default_to_volatile = true;
 
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/PretsTest.php b/tests/library/ZendAfi/View/Helper/Accueil/PretsTest.php
index 10fc40437aa38aa6beb87034e2cf6c0b7e446b32..4706358997ccde085bffdc4b546812c582d32bcc 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/PretsTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/PretsTest.php
@@ -55,7 +55,9 @@ class PretsTestWithConnectedUser extends ViewHelperTestCase {
       ->setFicheSigb(['fiche' => $emprunteur]);
 
     $this->fixture('Class_Album',
-                   ['id' => 64, 'id_origine' => 'Dilicom-8907']);
+                   ['id' => 64,
+                    'titre' => 'Totem et Tabou',
+                    'id_origine' => 'Dilicom-8907']);
 
     $this->fixture('Class_Loan_Pnb',
                    ['id' => 12,
diff --git a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php
index 0f914fed16fa88f28f999ff30e1a071f96b53d48..7769c4262d20dc9e896f4025e9a7088b30a4da26 100644
--- a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php
+++ b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php
@@ -79,7 +79,14 @@ class ZendAfi_View_Helper_RenderAlbumEPUBTest extends ZendAfi_View_Helper_Render
 
   }
 
-
+  /** @test */
+  public function withTitleToVisitVersaillesDownloadLinkShouldBeVisitVersaillesDotEPub() {
+    Class_AlbumRessource::find(123)->setTitre('Visit Versailles')->assertSave();
+    $html = $this->_helper->renderAlbum($this->_album_epub);
+    $this->assertXPathContentContains($html,
+                                      '//a[@download="Visit Versailles.epub"]',
+                                      'Visit Versailles');
+  }
 }
 
 
@@ -157,7 +164,7 @@ class ZendAfi_View_Helper_RenderAlbumNumeriquePremiumTest extends ZendAfi_View_H
     parent::setUp();
     $this->book = $this->fixture('Class_Album',
                                  ['id' => 3,
-                                  'libelle' => 'Emile Zola',
+                                  'titre' => 'Emile Zola',
                                   'external_uri' => 'http://www.numeriquepremium.com/content/books/9782760622173'])
                        ->beNumeriquePremium();
   }
@@ -208,7 +215,7 @@ class ZendAfi_View_Helper_RenderAlbumCyberlibrisTest extends ZendAfi_View_Helper
 
     $this->book = $this->fixture('Class_Album',
                                  ['id' => 3,
-                                  'libelle' => 'Totem et Thora',
+                                  'titre' => 'Totem et Thora',
                                   'id_origine' => '88817216',
                                   'external_uri' => 'http://www.bibliovox.com/bookdetails.aspx?docID=88817216'])
                        ->beCyberlibris();
@@ -405,6 +412,15 @@ class ZendAfi_View_Helper_RenderAlbumDilicomPNBTest extends ZendAfi_View_Helper_
   }
 
 
+  /** @test */
+  public function userWithoutBibShouldReturnErrorMessage() {
+    $this->logged_user->setBib(null)->save();
+    $this->_html = $this->_helper->renderAlbum($this->book);
+    $this->assertXPathContentContains($this->_html,
+                                      '//p', utf8_encode('Vous devez être inscrit dans une bibliothèque pour accéder à la consultation en ligne'));
+
+  }
+
   /** @test */
   public function withHttpsPreviewSrcShouldBeHttps() {
     $_SERVER['HTTPS'] = 'on';
diff --git a/tests/library/ZendAfi/View/Helper/Status/TestCase.php b/tests/library/ZendAfi/View/Helper/Status/TestCase.php
index 83c98afa16481e682387706f9ca51e6d03636d49..8d0de7b456bc583cdc67aab09a4d83ba3a4dba04 100644
--- a/tests/library/ZendAfi/View/Helper/Status/TestCase.php
+++ b/tests/library/ZendAfi/View/Helper/Status/TestCase.php
@@ -110,6 +110,7 @@ abstract class ZendAfi_View_Helper_Status_TestCase extends ViewHelperTestCase {
     RessourcesNumeriquesFixtures::deactivateOrphea();
     $this->fixture('Class_Album',
                    ['id' => 1,
+                    'titre' => 'Be happy',
                     'type_doc_id' => Class_TypeDoc::SOUNDCLOUD]);
     return $this;
 
diff --git a/tests/scenarios/Manager/ManagerTest.php b/tests/scenarios/Manager/ManagerTest.php
index 7641ac2588f6c5d28aa6956977c3d7f814ccf44e..47836055925e473c8f2268c369ac6710baa0b1af 100644
--- a/tests/scenarios/Manager/ManagerTest.php
+++ b/tests/scenarios/Manager/ManagerTest.php
@@ -165,7 +165,7 @@ class ManagerAlbumTest extends Admin_AbstractControllerTestCase {
 
     $this->fixture('Class_Album',
                    ['id' => 32,
-                    'libelle' => 'Tokyo ghoul']);
+                    'titre' => 'Tokyo ghoul']);
 
     $this->dispatch('/admin/album/index', true);
   }
@@ -394,7 +394,7 @@ class ManagerHeaderActionsTest extends Admin_AbstractControllerTestCase {
 
     $this->fixture('Class_Album',
                    ['id' => 32,
-                    'libelle' => 'Tokyo ghoul']);
+                    'titre' => 'Tokyo ghoul']);
 
 
     $this->dispatch('/admin/album/edit_album/id/32', true);
diff --git a/tests/scenarios/MobileApplication/UserAccountTest.php b/tests/scenarios/MobileApplication/UserAccountTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ded7d15e8bf6f1ccf1360c395300fb842b0ed0b5
--- /dev/null
+++ b/tests/scenarios/MobileApplication/UserAccountTest.php
@@ -0,0 +1,342 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+abstract class Scenario_MobileApplication_UserAccountTestCase extends AbstractControllerTestCase {
+  protected
+    $_storm_default_to_volatile = true;
+
+  public function setUp() {
+    parent::setUp();
+
+    $_SERVER['HTTPS'] = 'on';
+
+    $puppy = $this->fixture('Class_Users',
+                            ['id' => 345,
+                             'login' => 'puppy',
+                             'password' => 'opied',
+                             'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
+                             'idabon' => '234',
+                             'id_site' => 1]);
+
+    $this->fixture('Class_User_ApiToken',
+                   ['id' => 1,
+                    'token' => 'nonos',
+                    'client_id' => 'My mobile app',
+                    'user' => $puppy]);
+
+    $potter = new Class_WebService_SIGB_Emprunt('12', new Class_WebService_SIGB_Exemplaire(123));
+    $potter
+      ->setDateRetour('01/01/1974')
+      ->setAuteur('J.K.R')
+      ->setBibliotheque('Annecy')
+      ->getExemplaire()->setTitre('Potter');
+
+    $alice = new Class_WebService_SIGB_Emprunt('13', new Class_WebService_SIGB_Exemplaire(456));
+    $alice
+      ->setDateRetour(date('d/m/Y', strtotime('tomorrow')))
+      ->getExemplaire()->setTitre('Alice');
+
+    $emprunteur = (new Class_WebService_SIGB_Emprunteur(345, 'puppy'))
+      ->empruntsAddAll([$potter, $alice]);
+
+    $puppy->setFicheSIGB(['fiche' => $emprunteur]);
+    $puppy->assertSave();
+
+
+    ZendAfi_Auth::getInstance()->clearIdentity();
+  }
+
+
+  public function tearDown() {
+    unset($_SERVER['HTTPS']);
+    parent::tearDown();
+  }
+}
+
+
+
+
+class Scenario_MobileApplication_UserAccountWithTokenTest extends Scenario_MobileApplication_UserAccountTestCase {
+  protected
+    $_json;
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->dispatch('/api/user/loans',
+                    true,
+                    ["Authorization" => "Bearer nonos" ,
+                     "Content-Type" => "application/json"]);
+
+    $this->_json = json_decode($this->_response->getBody(), true);
+  }
+
+
+  /** @test */
+  public function responseShouldContainsPotterLoan() {
+    $this->assertEquals(['title' => 'Potter',
+                         'author' => 'J.K.R',
+                         'date_due' => '1974-01-01',
+                         'loaned_by' => 'puppy',
+                         'library' => 'Annecy'
+                         ],
+                        $this->_json['loans'][0]);
+  }
+
+
+  /** @test */
+  public function responseHeaderContentTypeShouldBeApplicationJson() {
+    $this->assertArraySubset(['name' => 'Content-Type',
+                              'value' => 'application/json'],
+                             $this->_response->getHeaders()[0]);
+  }
+}
+
+
+
+
+class Scenario_MobileApplication_UserAccountWithoutTokenTest extends Scenario_MobileApplication_UserAccountTestCase {
+  /** @test */
+  public function withoutAuthorizationShouldAnswerInvalidRequest() {
+    $this->dispatch('/api/user/loans',
+                    true,
+                    ["Content-Type" => "application/json"]);
+
+    $this->assertEquals(['error' => 'invalid_request',
+                         'message' => 'Autorisation non spécifiée'],
+                        json_decode($this->_response->getBody(), true));
+  }
+
+
+  /** @test */
+  public function withWrongAuthorizationTypeShouldAnswerInvalidRequest() {
+    $this->dispatch('/api/user/loans',
+                    true,
+                    ["Authorization" => 'Catch nonos',
+                     "Content-Type" => "application/json"]);
+
+    $this->assertEquals(['error' => 'invalid_request',
+                         'message' => 'Jeton d\'autorisation non fourni'],
+                        json_decode($this->_response->getBody(), true));
+  }
+
+
+  /** @test */
+  public function withWrongAuthorizationTokenShouldAnswerInvalidRequest() {
+    $this->dispatch('/api/user/loans',
+                    true,
+                    ["Authorization" => 'Bearer veget@ble',
+                     "Content-Type" => "application/json"]);
+
+    $this->assertEquals(['error' => 'invalid_request',
+                         'message' => 'Jeton d\'autorisation invalide'],
+                        json_decode($this->_response->getBody(), true));
+  }
+
+
+  /** @test */
+  public function withLegacyAuthorizationTokenShouldAnswerInvalidRequest() {
+    $this->fixture('Class_User_ApiToken',
+                   ['id' => 2,
+                    'token' => 'veget@ble',
+                    'user_id' => 987]);
+
+    $this->dispatch('/api/user/loans',
+                    true,
+                    ["Authorization" => 'Bearer veget@ble',
+                     "Content-Type" => "application/json"]);
+
+    $this->assertEquals(['error' => 'invalid_request',
+                         'message' => 'Utilisateur non trouvé'],
+                        json_decode($this->_response->getBody(), true));
+  }
+
+
+  /** @test */
+  public function withoutHttpsShouldAnswerInvalidRequest() {
+    unset($_SERVER['HTTPS']);
+
+    $this->dispatch('/api/user/loans',
+                    true,
+                    ["Authorization" => "Bearer nonos" ,
+                     "Content-Type" => "application/json"]);
+
+    $this->assertEquals(['error' => 'invalid_request',
+                         'message' => 'Protocole HTTP obligatoire'],
+                        json_decode($this->_response->getBody(), true));
+  }
+}
+
+
+
+class Scenario_MobileApplication_UserAccountOAuthForLoginErrorsTest extends Scenario_MobileApplication_UserAccountTestCase {
+  public function wrongUrls() {
+    return [
+            ['/auth/oauth/response_type/code/client_id/My%20mobile%20app/redirect_uri/'],
+            ['/auth/oauth/response_type/code/client_id/My%20mobile%20app/'],
+            ['/auth/oauth/response_type/code/redirect_uri/http%3A%2F%2Fsomewhere.com'],
+            ['/auth/oauth/response_type/something/client_id/My%20mobile%20app/redirect_uri/http%3A%2F%2Fsomewhere.com'],
+    ];
+  }
+
+  /**
+   * @dataProvider wrongUrls
+   * @test
+   */
+  public function withIncompleUrlShouldError400BadRequest($url) {
+    try {
+      $this->dispatch($url, true);
+    }  catch(Zend_Controller_Action_Exception $e) {
+      $this->assertEquals(400, $e->getCode());
+      return;
+    }
+    $this->fail('should raise error 400 bad request');
+  }
+}
+
+
+
+
+class Scenario_MobileApplication_UserAccountOAuthForLoginTest extends Scenario_MobileApplication_UserAccountTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/auth/oauth/response_type/code/client_id/My%20mobile%20app/redirect_uri/'
+                    . urlencode('bokeh://authorize'),
+                    true);
+  }
+
+
+  /** @test */
+  public function pageShouldDisplayLoginForm() {
+    $this->assertXPath('//form//input[@name="username"]');
+  }
+
+
+  /** @test */
+  public function pageShouldContainsMyMobileAppWantsToConnect() {
+    $this->assertXPathContentContains('//h1',
+                                      'Authentifiez-vous pour autoriser "My mobile app" à accéder à votre compte');
+  }
+}
+
+
+
+
+class Scenario_MobileApplication_UserAccountOAuthForLoginOnPhoneTest extends Scenario_MobileApplication_UserAccountTestCase {
+  public function setUp() {
+    parent::setUp();
+    $_SERVER['HTTP_USER_AGENT'] = 'iPhone';
+    Class_Profil::getCurrentProfil()
+      ->beTelephone()
+      ->assertSave();
+
+    $this->dispatch('/auth/oauth/response_type/code/client_id/My%20mobile%20app/redirect_uri/'
+                    . urlencode('bokeh://authorize'),
+                    true);
+  }
+
+
+  public function tearDown() {
+    unset($_SERVER['HTTP_USER_AGENT']);
+    parent::tearDown();
+  }
+
+
+  /** @test */
+  public function pageShouldDisplayLoginForm() {
+    $this->assertXPath('//form//input[@name="username"]');
+  }
+
+
+  /** @test */
+  public function pageShouldContainsMyMobileAppWantsToConnect() {
+    $this->assertXPathContentContains('//h1',
+                                      'Authentifiez-vous pour autoriser "My mobile app" à accéder à votre compte');
+  }
+}
+
+
+
+
+class Scenario_MobileApplication_UserAccountOAuthPostLoginSuccessTest extends Scenario_MobileApplication_UserAccountTestCase {
+  protected $_auth;
+
+  public function setUp() {
+    parent::setUp();
+    $this->_auth = Storm_Test_ObjectWrapper::mock()
+      ->whenCalled('authenticateLoginPassword')
+      ->answers(false)
+      ->whenCalled('hasIdentity')
+      ->answers(false)
+      ->whenCalled('getIdentity')
+      ->answers(null);
+
+    ZendAfi_Auth::setInstance($this->_auth);
+
+    $this->_auth
+      ->whenCalled('authenticateLoginPassword')
+      ->with('puppy', 'opied')
+      ->willDo(
+               function() {
+                 $user = new stdClass();
+                 $user->ID_USER = 345;
+                 $this->_auth->whenCalled('getIdentity')->answers($user);
+                 return true;
+               });
+  }
+
+
+  public function tearDown() {
+    ZendAfi_Auth::setInstance(null);
+    parent::tearDown();
+  }
+
+
+  /** @test */
+  public function responseShouldRedirectToBokehAuthorizeWithExistingToken() {
+    $this->postDispatch('/opac/auth/oauth/response_type/code/client_id/My%20mobile%20app/redirect_uri/' . urlencode('bokeh://authorize'),
+                        ['username' => 'puppy', 'password' => 'opied'], true);
+
+    $this->assertRedirectTo('bokeh://authorize#token=nonos');
+  }
+
+
+  /** @test */
+  public function tokenShouldBeCreatedIfNotExists() {
+    Class_User_ApiToken::deleteBy([]);
+
+    $this->postDispatch('/opac/auth/oauth/response_type/code/client_id/My%20mobile%20bokeh/redirect_uri/' . urlencode('bokeh://authorize'),
+                        ['username' => 'puppy', 'password' => 'opied'], true);
+
+    $token = Class_User_ApiToken::find(1);
+    $this->assertRedirectTo('bokeh://authorize#token=' . $token->getToken());
+    return $token;
+  }
+
+
+  /**
+   * @depends tokenShouldBeCreatedIfNotExists
+   * @test
+   */
+  public function tokenClientIdShouldBeMyMobileBokeh($token) {
+    $this->assertEquals('My mobile bokeh', $token->getClientId());
+  }
+}
+?>
\ No newline at end of file