diff --git a/.gitignore b/.gitignore
index b201326defc22bfcca1646c865320000b1a391ed..2888a3c8e71e8026cde542d92a51120d6441a30b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-vas/
-client/
-conf/closure
-conf/node_modules/
-conf/properties.json
-src/closure/conf/depswriter/*.pyc
+/vas/
+/client/
+/conf/closure
+/conf/node_modules/
+/conf/properties.json
+/src/closure/conf/depswriter/*.pyc
diff --git a/changelog/2018.04.00/Changelog_2018.04.00.md b/changelog/2018.04.00/Changelog_2018.04.00.md
index 24b5879e66cb293cd887e63ebdb1aa1e1e63e443..7e7274a5198aad49ce326c348e80904d069cb3db 100644
--- a/changelog/2018.04.00/Changelog_2018.04.00.md
+++ b/changelog/2018.04.00/Changelog_2018.04.00.md
@@ -40,26 +40,31 @@ Depuis la version 2018.04.00 il est possible de terminer ses saisies par un doub
 
 # Anomalies corrigées
 
-Impossible de supprimer le JavaScript d'un formulaire.
-
-Un champ de type image objet métier en mode affichage seulement affiche un bouton si aucune image est disponible sur le serveur.
-
-Intersections cadastrales remontées pour les parcelles limitrophes entre deux communes lors de la génération des rapports.
-
-Problèmes lors qu'un utilisateur vmap_admin et non vitis_admin va dans le mode configuration.
-
-La réinitialisation d'un formulaire de filtre dans le module ANC annule les rechargements en cascade du formulaire.
-
-Module cadastre : en recherche attributaire la sélection reste en mémoire quand on filtre la liste des parcelles.
-
-Problème d'affichage des fonctions GetFeatureInfo sur mobile.
-
-Erreurs lors de l'utilisation de flux WMS avec mot de passe dans l'interface d'administration.
-
-JavaScript non chargé lors de l'affichage d'un sous-formulaire objet métier.
-
-Problème de cache dans les listes de type grille objet métier.
-
-Dysfonctionnements avec les champs de type date quand on saisit la date du jour.
-
-La génération automatique des formulaires objets métiers ne se fait pas si on utilise une base de données autre que celle de vMap.
+## 2018.04.00
+
+* Impossible de supprimer le JavaScript d'un formulaire.
+* Un champ de type image objet métier en mode affichage seulement affiche un bouton si aucune image est disponible sur le serveur.
+* Intersections cadastrales remontées pour les parcelles limitrophes entre deux communes lors de la génération des rapports.
+* Problèmes lors qu'un utilisateur vmap_admin et non vitis_admin va dans le mode configuration.
+* La réinitialisation d'un formulaire de filtre dans le module ANC annule les rechargements en cascade du formulaire.
+* Module cadastre : en recherche attributaire la sélection reste en mémoire quand on filtre la liste des parcelles.
+* Problème d'affichage des fonctions GetFeatureInfo sur mobile.
+* Erreurs lors de l'utilisation de flux WMS avec mot de passe dans l'interface d'administration.
+* JavaScript non chargé lors de l'affichage d'un sous-formulaire objet métier.
+* Problème de cache dans les listes de type grille objet métier.
+* Dysfonctionnements avec les champs de type date quand on saisit la date du jour.
+* La génération automatique des formulaires objets métiers ne se fait pas si on utilise une base de données autre que celle de vMap.
+
+## 2018.04.01
+
+* Documentation swagger publictoken non valide
+* Mélange des modes affichés pour l'utilisateur public si deux applications sont sur la même base
+* Incohérence des properties utilisateur vas_home et database
+* Accès à vitis/webservices aux non vitis admin
+* Erreur 500 sur vitis/privileges sans droits d'admin
+* Erreur 500 suppression utilisateur
+* Le paramètre timezone_id de la ressource rest/vitis/users est obligatoire en POST
+
+## 2018.04.02
+
+* Affichage des modèles d'impression par ordre alphabétique
diff --git a/src/module_vmap/module/javascript/app/modules/Cadastre/cadastre.js b/src/module_vmap/module/javascript/app/modules/Cadastre/cadastre.js
index 91a57bf08b978aba916e302d0bbed6393037e661..19adda6cfabf1f34a20541ed40c272173d2da31e 100644
--- a/src/module_vmap/module/javascript/app/modules/Cadastre/cadastre.js
+++ b/src/module_vmap/module/javascript/app/modules/Cadastre/cadastre.js
@@ -274,7 +274,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController = function
             sString = oVmap.checkLink(sString);
         }else{
             sString = oVmap.parseLink(sString, 'link');
-        }        
+        }
         return $sce.trustAsHtml(sString);
     };
 };
@@ -1279,6 +1279,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
         templateId: oVmap['properties']['cadastre']["fiche_urb"]['printtemplate_id'],
         mapId: oVmap['properties']['cadastre']["fiche_urb"]['map_id'],
         features: [feature],
+        recalcSize: true,
         featuresZoom: oVmap['properties']['cadastre']["fiche_urb"]['features_zoom']
     });
 };
@@ -2628,7 +2629,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 
             var data = response['data']['data'];
 
-            // Ajoute le type de voie 
+            // Ajoute le type de voie
             for (var i = 0; i < data.length; i++) {
                 if (goog.isDefAndNotNull(data[i]['L_NATURE_VOIE'])) {
                     data[i]['NOM_VOIE'] = data[i]['L_NATURE_VOIE'] + ' ' + data[i]['DVOILIB'];
diff --git a/src/module_vmap/module/javascript/app/vmap/tools/print.js b/src/module_vmap/module/javascript/app/vmap/tools/print.js
index fd9550a4e7eef6b5fa9a5626cd32bdf50e029173..13e0f6d43a5fb86dd1e0793ff1525a97301051cd 100644
--- a/src/module_vmap/module/javascript/app/vmap/tools/print.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/print.js
@@ -243,6 +243,7 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.loadPrintPropert
         },
         'params': {
             'distinct': true,
+            'order_by': 'name',
             'attributs': 'format|name|orientation|printstyles|printstyle_id|printtemplate_id|variables'
         },
         'scope': this.$scope_,
@@ -444,9 +445,11 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.setTemplate = fu
         this.$compile_(template)(this.$scope_);
         this_.template_ = template;
 
-        setTimeout(function () {
-            callback.call(this_, [template]);
-        });
+        if (goog.isDefAndNotNull(callback)) {
+            setTimeout(function () {
+                callback.call(this_, [template]);
+            });
+        }
     }
 };
 
@@ -491,6 +494,10 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.getPrintedMapSiz
         mapHeight = tmpHeight / resizeCoeff;
     }
 
+    setTimeout(function () {
+        $(template).remove();
+    });
+
     return {
         printedMapSize: [mapWidth, mapHeight],
         realSize: [imageDiv.width(), imageDiv.height()],
@@ -626,6 +633,7 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.prepareAndLaunch
  * @param {number|undefined} opt_options.resolutionCoeff
  * @param {array<ol.Feature>|undefined} opt_options.features feature to zoom on
  * @param {number|undefined} opt_options.featuresZoom
+ * @param {boolean|undefined} opt_options.recalcSize true pour recalculer la taille au moment de l'impression (utilisé pour module cadastre)
  * @returns {number} 1 if all semms good
  * @export
  */
@@ -717,6 +725,15 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function
             var sFormat = response['data']['data'][0]['rt_format_id'];
             var sOrientation = response['data']['data'][0]['rt_orientation_id'];
 
+            // Cas d'utilisation de la fonction print sans passer par le forumlaire
+            if (opt_options.recalcSize === true) {
+                this_.setTemplate({
+                    'definition': response['data']['data'][0]['definition']
+                });
+                this_.printedMapSize_ = this_.getPrintedMapSize(this_.template_, '#map1', '#map_image');
+                this_.printedOverviewMapSize_ = this_.getPrintedMapSize(this_.template_, '#map1', '#map_overview');
+            }
+
             var mapImageSize = this_.printedMapSize_.realSize;
             var overviewSize = this_.printedOverviewMapSize_.realSize;
 
@@ -788,6 +805,8 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function
 
                         $.notify('Impression réussie', 'success');
                         printWindow.location.href = response['data']['printtemplateservices']['image'];
+                        delete this_.printedMapSize_;
+                        delete this_.printedOverviewMapSize_;
                     },
                     'error': function (response) {
                         console.error(response);
diff --git a/src/vitis/client/templates/mainTpl.html b/src/vitis/client/templates/mainTpl.html
index 64706b13a1fc4b77f63c4dc38e0036ede4361aba..3ec425a02127ea5e6698efef4da986ee1d530e87 100755
--- a/src/vitis/client/templates/mainTpl.html
+++ b/src/vitis/client/templates/mainTpl.html
@@ -27,7 +27,7 @@
     </header>
     <section id="works_line" class="row works_line">
         <!-- menu des modes -->
-        <div id="mode_column_layout" ng-class="{'col-xs-1':!$root.is_mobile, 'hidden':$root.is_mobile, 'hidden':(modes.length === 1 && modes[0].mode_id === 'vmap')}">
+        <div id="mode_column_layout" ng-class="{'col-xs-1':!$root.is_mobile, 'hidden':($root.is_mobile) || (modes.length === 1 && modes[0].mode_id === 'vmap')}">
             <button type="button" class="row btn button_mode button_mode_top" ng-show="showModeScrollBoutton()" ng-click="scrollMode(-50)"><i class="icon icon-keyboard_arrow_up"></i></button>
             <nav id="mode_column" class="row mode_column no_bs_padding">
                 <ul class="list-unstyled">
diff --git a/src/vitis/vas/rest/conf/selected_properties.inc b/src/vitis/vas/rest/conf/selected_properties.inc
index a96cc600effcdf4b4754073173563e602a179a53..a93f5fc5e3a2210eae1c6375890ab8ba1fef9e0b 100644
--- a/src/vitis/vas/rest/conf/selected_properties.inc
+++ b/src/vitis/vas/rest/conf/selected_properties.inc
@@ -109,6 +109,8 @@ $aUserFields = Array(
     'services_alias',
     'doc_alias',
     'ws_data_alias',
+    'allow_public_connection',
+    'public_token',
     'domain',
     'domain.*',
     'page_encoding',
diff --git a/src/vitis/vas/rest/ws/vitis/Modes.class.inc b/src/vitis/vas/rest/ws/vitis/Modes.class.inc
index c838ebe1c37627b79b3783a89d8f601904e94653..4aaac5746263a46829e127c76899a297e0e522eb 100644
--- a/src/vitis/vas/rest/ws/vitis/Modes.class.inc
+++ b/src/vitis/vas/rest/ws/vitis/Modes.class.inc
@@ -9,7 +9,7 @@
  * 	\brief This file contains the Modes php class
  *
  * This class defines Rest Api to Vitis modes
- * 
+ *
  */
 require_once 'Vitis.class.inc';
 require_once __DIR__ . '/../../class/vitis_lib/Connection.class.inc';
@@ -132,8 +132,8 @@ class Modes extends Vitis {
     function GET() {
         if ($this->oConnection->oError == null) {
             if (!empty($this->aProperties["public_token"]) && $this->aProperties["allow_public_connection"] === true){
-                if($this->aProperties["public_token"] === $this->aValues['token']){
-                    $this->aValues["filter"] = '{"relation": "AND","operators":[{"column": "mode_id","compare_operator": "<>","value": "user"}]}';
+                if($this->aProperties["public_token"] === $this->aValues['token']) {
+                    $this->aValues["filter"] = $this->getPublicUserFilter();
                 }
             }
             if (isset($this->aValues['action']) && !empty($this->aValues['action'])) {
@@ -170,6 +170,34 @@ class Modes extends Vitis {
         return $sMessage;
     }
 
+    /**
+     * Get the public user JSON filter
+     *
+     * @return {type}  string
+     */
+    function getPublicUserFilter(){
+
+        $aFilter = array(
+            'relation' => 'AND',
+            'operators' => array()
+        );
+
+        // Filtre passé dans l'URL
+        if (!empty($this->aValues["filter"])) {
+            $aRequestFilter = json_decode($this->aValues["filter"]);
+            array_push($aFilter['operators'], $aRequestFilter);
+        }
+
+        // Filtre public_user
+        array_push($aFilter['operators'], array(
+            'column' => 'mode_id',
+            'compare_operator' => '<>',
+            'value' => 'user'
+        ));
+
+        return json_encode($aFilter);
+    }
+
     /**
      * @SWG\Put(path="/modes/sorting",
      *   tags={"Modes"},
@@ -235,4 +263,4 @@ class Modes extends Vitis {
 
 }
 
-?>
\ No newline at end of file
+?>