diff --git a/module/css/vmap.less b/module/css/vmap.less old mode 100755 new mode 100644 index 714bc72f15ff3a92cb4a602b102bb2c16c467255..0afd13f194d292e38f188753422b6b48c5ebab8c --- a/module/css/vmap.less +++ b/module/css/vmap.less @@ -1482,6 +1482,11 @@ app-layertree button:hover { background-color: transparent; color: @color-text-1; } +.basic-tools-element.inactive, .basic-tools-element.inactive:hover{ + background-color: #838383 !important; + color: #A5A5A5 !important; + cursor : not-allowed !important; +} .basic-tools-element.active{ background-color: @basic-tool-active !important; color: @head-bar !important; diff --git a/module/forms/vmap_admin_map/vmap_admin_map_vmap_admin_map.json b/module/forms/vmap_admin_map/vmap_admin_map_vmap_admin_map.json old mode 100755 new mode 100644 diff --git a/module/forms/vmap_admin_map/vmap_admin_map_vmap_layers.json b/module/forms/vmap_admin_map/vmap_admin_map_vmap_layers.json old mode 100755 new mode 100644 diff --git a/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.js b/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.js old mode 100755 new mode 100644 diff --git a/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.json b/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.json old mode 100755 new mode 100644 diff --git a/module/javascript/app/modules/Cadastre/cadastre.js b/module/javascript/app/modules/Cadastre/cadastre.js old mode 100755 new mode 100644 index 6ec72c9e6ebdac16b1f70ed5aa52b951067b3216..91a57bf08b978aba916e302d0bbed6393037e661 --- a/module/javascript/app/modules/Cadastre/cadastre.js +++ b/module/javascript/app/modules/Cadastre/cadastre.js @@ -269,7 +269,12 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController = function return oVmap.isLink(sString, 'link'); }; $scope['getRenderedParsedLink'] = function (sString) { - sString = oVmap.parseLink(sString, 'link'); + + if(sString.indexOf('<a') === 0 && sString.indexOf('[') !== 0 ){ + sString = oVmap.checkLink(sString); + }else{ + sString = oVmap.parseLink(sString, 'link'); + } return $sce.trustAsHtml(sString); }; }; diff --git a/module/javascript/app/vmap/map/map.js b/module/javascript/app/vmap/map/map.js old mode 100755 new mode 100644 index a57f5921057205886fdd9f2069a8b0856dcb529a..7c0ba9a4a13165ccacc01ee5c7584bd9b561101d --- a/module/javascript/app/vmap/map/map.js +++ b/module/javascript/app/vmap/map/map.js @@ -26,7 +26,7 @@ goog.require('goog.async.AnimationDelay'); * Class {@link nsVmap.Map}: initializes the map * * @constructor - * @export + * @export */ nsVmap.Map = function () { oVmap.log("nsVmap.Map"); @@ -1246,7 +1246,7 @@ nsVmap.Map.prototype.startMobileDraw = function (sGeomType, callback) { var this_ = this; - // Géométrie multiple ? + // Géométrie multiple ? this.mobileDrawMulti_ = false; if (sGeomType.substr(0, 5).toUpperCase() === 'MULTI') { this.mobileDrawMulti_ = true; @@ -1373,11 +1373,11 @@ nsVmap.Map.prototype.getDrawOutput_ = function (aPoints) { return new ol.geom.LineString(aPoints); break; case 'POLYGON': - + // Ajoute la même coord à la fin de la géométrie de manière à boucler le polygone var aTmpPoints = angular.copy(aPoints); aTmpPoints.push(aTmpPoints[0]); - + return new ol.geom.Polygon([aTmpPoints]); break; case 'CIRCLE': @@ -1420,7 +1420,7 @@ nsVmap.Map.prototype.displayDrawTmpFeature_ = function () { nsVmap.Map.prototype.finishMobileDraw = function () { oVmap.log('nsVmap.Map.prototype.finishMobileDraw'); - // Géométrie multiple ? + // Géométrie multiple ? var this_ = this; if (this.mobileDrawMulti_) { bootbox['dialog']({ @@ -1568,7 +1568,7 @@ nsVmap.Map.prototype.redoLastChange = function () { }; /** - * + * * @private */ nsVmap.Map.prototype.getMapMenuScope = function () { @@ -1893,7 +1893,6 @@ nsVmap.Map.prototype.mapController.prototype.emptyLoadErrorsEvents = function () oVmap.log('nsVmap.Map.prototype.emptyLoadErrorsEvents'); for (var i = 0; i < this.loadErrorEventsContainer_.length; i++) { -// this.loadErrorEventsContainer_[i].layer.getSource().unByKey(this.loadErrorEventsContainer_[i].event); ol.Observable.unByKey(this.loadErrorEventsContainer_[i].event); } }; @@ -2372,4 +2371,4 @@ nsVmap.Map.prototype.getLayerById = function (layerId) { // Si aucun layer ne correspondait return null; -}; \ No newline at end of file +}; diff --git a/module/javascript/app/vmap/mapmanager/layerstree.js b/module/javascript/app/vmap/mapmanager/layerstree.js old mode 100755 new mode 100644 index 137700c86a3f1db8561b5115c035021d32f67fdb..673cb4e0f66ff2e60cc0b2faab5137030da12bb0 --- a/module/javascript/app/vmap/mapmanager/layerstree.js +++ b/module/javascript/app/vmap/mapmanager/layerstree.js @@ -145,7 +145,11 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController = function ($scope, this['layerstree_collapsed'] = oVmap['properties']['vmap']['layerstree_collapsed']; } - this.loadTree(); + if (goog.isDefAndNotNull(oUrlParams['extent'])){ + var aExtent = decodeURI(oUrlParams['extent']).split("|"); + } + + this.loadTree(aExtent); // Événements sur les couches var keepLoadedTiles = true; @@ -351,9 +355,10 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.reloadTre /** * Load layers from the tree + * @param {array|undefined} aExtent exent to fit on * @returns {undefined} */ -nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree = function () { +nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree = function (aExtent) { oVmap.log('nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree'); if (this['map'].getLayers().getArray().length > 0) @@ -413,6 +418,12 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree this.addLayer(olLayers[i]); } + // Va à l'étendue fournie + if (goog.isDefAndNotNull(aExtent)) { + this['map'].getView().fit(aExtent, { + nearest : true + }); + } }; /** diff --git a/module/javascript/app/vmap/mapmanager/maplegend.js b/module/javascript/app/vmap/mapmanager/maplegend.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/mapmanager/mapmanager.js b/module/javascript/app/vmap/mapmanager/mapmanager.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/mapmanager/mapmodal/maplist.js b/module/javascript/app/vmap/mapmanager/mapmodal/maplist.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/mapmanager/mapmodal/maplistlitle.js b/module/javascript/app/vmap/mapmanager/mapmodal/maplistlitle.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/tools/basictools.js b/module/javascript/app/vmap/tools/basictools.js old mode 100755 new mode 100644 index abf0e9a40f14ad3ad23d146224bed5da175a5ea2..f53955c43cccd66024db099c860b32b003b11aca --- a/module/javascript/app/vmap/tools/basictools.js +++ b/module/javascript/app/vmap/tools/basictools.js @@ -16,6 +16,7 @@ goog.require('nsVmap.nsToolsManager.Measure'); goog.require('nsVmap.nsToolsManager.Select'); goog.require('nsVmap.nsToolsManager.Insert'); goog.require('nsVmap.nsToolsManager.Print'); +goog.require('nsVmap.nsToolsManager.Urlexporter'); /** @@ -34,6 +35,7 @@ nsVmap.nsToolsManager.BasicTools = function () { this.oInsert_ = new nsVmap.nsToolsManager.Insert(); this.oPrint_ = new nsVmap.nsToolsManager.Print(); this.oControls_ = new nsVmap.nsToolsManager.Controls(); + this.oUrlExporter_ = new nsVmap.nsToolsManager.Urlexporter(); }; /** diff --git a/module/javascript/app/vmap/tools/infocontainer.js b/module/javascript/app/vmap/tools/infocontainer.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/tools/insert.js b/module/javascript/app/vmap/tools/insert.js index f016afe6dc9a72adc7eb25ad01883ab008009e13..803d13add3e95a2916e129c4eb60e6db3b981b01 100644 --- a/module/javascript/app/vmap/tools/insert.js +++ b/module/javascript/app/vmap/tools/insert.js @@ -1434,9 +1434,9 @@ nsVmap.nsToolsManager.Insert.prototype.inserttoolController.prototype.getMobileB if (sGeomType === 'GEOMETRY' || sGeomType === 'GEOMETRYCOLLECTION') { bootbox.prompt({ - 'title': "Type de géométrie à insérer", - 'inputType': 'select', - 'inputOptions': [ + title: "Type de géométrie à insérer", + inputType: 'select', + inputOptions: [ { text: 'Point', value: 'POINT' @@ -1454,7 +1454,7 @@ nsVmap.nsToolsManager.Insert.prototype.inserttoolController.prototype.getMobileB value: 'CIRCLE' } ], - 'callback': function (result) { + callback: function (result) { deferred.resolve(result); } }); diff --git a/module/javascript/app/vmap/tools/location.js b/module/javascript/app/vmap/tools/location.js old mode 100755 new mode 100644 index c4f32bfcacdf8145bcb3f015d28f580d31f4eb34..4cd96440554191c47a0415289ddde0cb77eb6065 --- a/module/javascript/app/vmap/tools/location.js +++ b/module/javascript/app/vmap/tools/location.js @@ -127,6 +127,23 @@ nsVmap.nsToolsManager.Location.prototype.locationController = function ($scope, */ this['oBusinessObjects'] = []; + /** + * @type {array} + */ + this['aLocationHistory'] = [{ + center: this_.map_.getView().getCenter(), + zoom: this_.map_.getView().getZoom() + }]; + /** + * @type {integer} + */ + this['iHistoryOffset'] = 0; + /** + * @type {integer} + */ + this['iHistoryOffset_save'] = 0; + + /** * @tyle {number} */ @@ -169,8 +186,44 @@ nsVmap.nsToolsManager.Location.prototype.locationController = function ($scope, }); }); + // remplissage de l'historique des étendues + var fHistoryDelayHandler; + this_.map_.on("moveend", function(event){ + if(this_['iHistoryOffset'] === this_['iHistoryOffset_save']){ + //check wait + if (goog.isDefAndNotNull(fHistoryDelayHandler)){ + $timeout.cancel(fHistoryDelayHandler); + } + + fHistoryDelayHandler = $timeout(function () { + if(this_['iHistoryOffset'] === 0){ + this_["aLocationHistory"].push({ + center: this_.map_.getView().getCenter(), + zoom: this_.map_.getView().getZoom() + }); + } else { + // splice + var iHistoryPosition = this_['aLocationHistory'].length - (this_['iHistoryOffset']); + this_["aLocationHistory"].splice(iHistoryPosition, this_['iHistoryOffset'], { + center: this_.map_.getView().getCenter(), + zoom: this_.map_.getView().getZoom() + }); + + this_['iHistoryOffset'] = 0; + } + }, oVmap['properties']['vmap_history_timer']); + } else { + this_['iHistoryOffset_save'] = this_['iHistoryOffset']; + } + }); + // Vide les localisations quand on change de carte oVmap['scope'].$on('mapChanged', function () { + // purge de l'historique des étendues + this_['aLocationHistory'] = [{ + center: this_.map_.getView().getCenter(), + zoom: this_.map_.getView().getZoom() + }]; if (goog.isDef(this_.locationPopup)) { this_.locationPopup.remove(); } @@ -311,6 +364,48 @@ nsVmap.nsToolsManager.Location.prototype.locationController.prototype.goHome = f currentView.setResolution(originalPosition.resolution); }; + +/** + * Go on the previous extent + * @export + */ +nsVmap.nsToolsManager.Location.prototype.locationController.prototype.nextHistoryExtent = function () { + oVmap.log("nsVmap.nsToolsManager.Location.prototype.locationController.nextHistoryExtent"); + + if(this['iHistoryOffset'] > 0){ + this['iHistoryOffset'] -= 1; + this.selectHistoryExtent(); + } +}; + +/** + * Go on the next extent + * @export + */ +nsVmap.nsToolsManager.Location.prototype.locationController.prototype.previousHistoryExtent = function () { + oVmap.log("nsVmap.nsToolsManager.Location.prototype.locationController.previousHistoryExtent"); + + if(this['iHistoryOffset'] < this['aLocationHistory'].length - 1){ + this['iHistoryOffset'] += 1; + this.selectHistoryExtent(); + } +}; + +/** + * Go on the selected extent in history + * @export + */ +nsVmap.nsToolsManager.Location.prototype.locationController.prototype.selectHistoryExtent = function () { + oVmap.log("nsVmap.nsToolsManager.Location.prototype.locationController.selectHistoryExtent"); + + var currentView = oVmap.getMap().getOLMap().getView(); + + var iHistoryPosition = this['aLocationHistory'].length - ( 1 + this['iHistoryOffset']); + + currentView.setCenter(this['aLocationHistory'][iHistoryPosition].center); + currentView.setZoom(this['aLocationHistory'][iHistoryPosition].zoom); +}; + /** * Localise the map on the entry position * @param {string} CoordX html id to the X value diff --git a/module/javascript/app/vmap/tools/print.js b/module/javascript/app/vmap/tools/print.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/tools/select/advancedselect.js b/module/javascript/app/vmap/tools/select/advancedselect.js old mode 100755 new mode 100644 diff --git a/module/javascript/app/vmap/tools/urlexporter.js b/module/javascript/app/vmap/tools/urlexporter.js new file mode 100644 index 0000000000000000000000000000000000000000..85e757f8f70c2bac1538b099482fd06940cec290 --- /dev/null +++ b/module/javascript/app/vmap/tools/urlexporter.js @@ -0,0 +1,140 @@ +/* global oVmap, nsVmap, goog, ol, vitisApp */ + +/** + * @author: Anthony Borghi + * @Description: Fichier contenant la classe nsVmap.nsToolsManager.Urlexporter + * cette classe permet à l'utilisateur d'exporter une url pour un autre utilisateur + */ +goog.provide('nsVmap.nsToolsManager.Urlexporter'); + +goog.require('oVmap'); + +/** + * @classdesc + * Class {@link nsVmap.nsToolsManager.VmapUser} + * @constructor + * @export + */ +nsVmap.nsToolsManager.Urlexporter = function () { + oVmap.log('nsVmap.nsToolsManager.Urlexporter'); +}; + + + +/** + * Directive + * @return {angular.Directive} The directive specs. + * @constructor + */ +nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterDirective = function () { + oVmap.log("nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterDirective"); + return { + restrict: 'A', + scope: { + 'map': '=appMap', + 'lang': '=appLang' + }, + controller: 'AppUrlExporterController', + controllerAs: 'ctrl', + bindToController: true, + templateUrl: oVmap['properties']['vmap_folder'] + '/' + 'template/tools/' + (oVmap['properties']['is_mobile'] ? 'urlexporter_mobile.html' : 'urlexporter.html') + }; +}; + +/** + * Controler + * @constructor + * @param {object} $scope + * @returns {undefined} + * @ngInject + */ +nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterController = function ($scope, $q, $element) { + oVmap.log("nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterController"); + + var this_ = this; + + this.$scope_ = $scope; + + /** + * The current properties + */ + this['properties'] = oVmap['properties']; + + /** + * The current token + */ + this['token'] = oVmap['properties']['token']; + + /** + * @type {string} + */ + this["urlToExport"] = ""; + /** + * @type {boolean} + */ + this["usePublicToken"] = false; + + this["urlConstructor"](); + + // Affiche les modales en plein écran pour la version mobile + //if (oVmap['properties']['is_mobile']) { + // $element.find('.modal').on('shown.bs.modal', function () { + // $('.modal-backdrop.fade.in').hide(); + // $('.modal.fade.in').find('.modal-dialog').addClass('mobile-full-modal'); + // }); + //} + + console.log(this['properties']); + + // recalcule l'url quand on change de carte + oVmap['scope'].$on('mapChanged', function () { + this_["urlConstructor"](); + }); + + $scope.$watch("ctrl.usePublicToken", function(){ + this_["urlConstructor"](); + }) + + oVmap.getMap().getOLMap().on("moveend", function(event){ + this_["urlConstructor"](); + }); +}; + +/** + * Display the user form in display mode + * @returns {undefined} + * @export + */ +nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterController.prototype.urlConstructor = function () { + oVmap.log("nsVmap.nsToolsManager.Urlexporter.urlExporterController.urlConstructor"); + + var sUrl = this['properties']['web_server_name'] + "/" + this['properties']['application']; + + if (goog.isDefAndNotNull(this['properties']['environment'])){ + if (this['properties']['environment'] != ""){ + sUrl += "_" + this['properties']['environment']; + } + } + + sUrl += "?"; + + var oMapCatalog = oVmap.getMapManager().getMapCatalog(); + var iMapId = oMapCatalog["maps"][oMapCatalog["usedMap"]]["map_id"]; + + sUrl += "map_id=" + iMapId; + + // si public add token + if (this["usePublicToken"]){ + sUrl += "&token=" + this['properties']['public_token']; + } + + // get extent and add in url + var sExtent = oVmap.getMap().getOLMap().getView().calculateExtent(oVmap.getMap().getOLMap().getSize()).join("|"); + sUrl += "&extent=" + encodeURI(sExtent); + + this["urlToExport"] = sUrl; +}; + +// Définit la directive et le controller +oVmap.module.directive('appUrlExporter', nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterDirective); +oVmap.module.controller('AppUrlExporterController', nsVmap.nsToolsManager.Urlexporter.prototype.urlExporterController); \ No newline at end of file diff --git a/module/javascript/app/vmap/vmap.js b/module/javascript/app/vmap/vmap.js old mode 100755 new mode 100644 index 3c8347db3ba770d000f86dec38be9c18582361f5..48dbc1bacdb92c117848b877817f120614ccbc71 --- a/module/javascript/app/vmap/vmap.js +++ b/module/javascript/app/vmap/vmap.js @@ -1174,6 +1174,12 @@ oVmap.isLink = function (item, tagIdentifier) { if (item.indexOf('[' + tagIdentifier) !== -1 && item.indexOf('[/' + tagIdentifier + ']') !== -1) { return true; } + + if (item.indexOf('<a') !== -1 && item.indexOf('</a>') !== -1) { + return true; + } + + return false; }; @@ -1211,18 +1217,53 @@ oVmap.parseLink = function (sString, tagIdentifier) { } }; +/** + * Parse a link and extract only good tags ex: <a href="https://www.google.fr" target="_blank">Lien</a> + * @param {String} sString + * @returns {String} + * @export + */ +oVmap.checkLink = function(sString){ + if (!goog.isDefAndNotNull(sString)) { + return ''; + } + if (!goog.isString(sString)) { + return ''; + } + var sLink = sString.substr(sString.indexOf('<a'), sString.indexOf('</a>') - sString.indexOf('<a') + 10); + var sLinkFirstTag = oVmap.getFirstLinkTag_(sLink, '>'); + var sLinkContent = oVmap.getLinkContent_(sLink, sLinkFirstTag, '</a>'); + var oLinkArgs = oVmap.getLinkTagArguments_(sLinkFirstTag); + // extract only required tags (href and target) + var sHref = goog.isDefAndNotNull(oLinkArgs['href']) ? oLinkArgs['href'] : null; + var sTarget = goog.isDefAndNotNull(oLinkArgs['target']) ? oLinkArgs['target'] : '_blank'; + var sContent = sLinkContent.length > 0 ? sLinkContent : sHref; + + if (goog.isDefAndNotNull(sHref)) { + var sLink = '<a href="' + sHref + '" target="' + sTarget + '">' + sContent + '</a>'; + return sLink; + } else { + console.error('cannot parse href'); + // return empty string to avoid Javascript injection + return ""; + } +} + + /** * Get the first tag * @param {String} sLink * @returns {String} */ -oVmap.getFirstLinkTag_ = function (sLink) { +oVmap.getFirstLinkTag_ = function (sLink, sLinkTagToFind) { var quoteIndex1 = null; var quoteIndex2 = null; var bInArgument = false; var sLinkFirstTag = ''; + sLinkTagToFind = (goog.isDefAndNotNull(sLinkTagToFind)) ? sLinkTagToFind : ']'; + for (var i = 0; i < sLink.length; i++) { sLinkFirstTag += sLink[i]; if (sLink[i] === '"') { @@ -1252,7 +1293,7 @@ oVmap.getFirstLinkTag_ = function (sLink) { } } - if (!bInArgument && sLink[i] === ']') { + if (!bInArgument && sLink[i] === sLinkTagToFind) { break; } } diff --git a/module/javascript/vitis/script_module.js b/module/javascript/vitis/script_module.js old mode 100755 new mode 100644 diff --git a/module/lang/lang-en.json b/module/lang/lang-en.json old mode 100755 new mode 100644 diff --git a/module/lang/lang-fr.json b/module/lang/lang-fr.json old mode 100755 new mode 100644 diff --git a/module/template/layers/layertree.html b/module/template/layers/layertree.html old mode 100755 new mode 100644 diff --git a/module/template/layers/mapmodal/maplist.html b/module/template/layers/mapmodal/maplist.html old mode 100755 new mode 100644 diff --git a/module/template/layers/mapmodal/maplistlitle.html b/module/template/layers/mapmodal/maplistlitle.html old mode 100755 new mode 100644 diff --git a/module/template/modules/cadastre.html b/module/template/modules/cadastre.html old mode 100755 new mode 100644 diff --git a/module/template/tools/basicselect.html b/module/template/tools/basicselect.html old mode 100755 new mode 100644 diff --git a/module/template/tools/basictools.html b/module/template/tools/basictools.html old mode 100755 new mode 100644 index 5dc8dd2abc9080cf667aed84e571434ee4aa44db..e85c74762d60d92d19a6b560d5811b7a178fad98 --- a/module/template/tools/basictools.html +++ b/module/template/tools/basictools.html @@ -4,6 +4,21 @@ <ul class="nav nav-pills basic-tools-nav"> <!-- Outils de localisation --> <div app-location app-lang="ctrl.lang" app-map="ctrl.map"></div> + <!-- Outil d'export d'url --> + <div> + <li role="presentation" style="position: inherit" class="basic-tools-dropdown"> + <a class="basic-tools-element pointer" + title="Générateur d'URL" + onclick="oVmap.getToolsManager().getBasicTools().toggleTool(this)"> + <span class="icon-at" aria-hidden="true"></span> + </a> + <div app-url-exporter app-lang="ctrl.lang" app-map="ctrl.map" + id="basic-tools-dropdown-urlexporter" + class="dropdown-menu basic-tools-dropdown-element" + style="margin: -10px -1px; width: 30%;"> + </div> + </li> + </div> <!-- Login de l'utilisateur --> <div class="right"> <li role="presentation" style="position: inherit" class="basic-tools-dropdown"> diff --git a/module/template/tools/infocontainer.html b/module/template/tools/infocontainer.html old mode 100755 new mode 100644 diff --git a/module/template/tools/insert.html b/module/template/tools/insert.html old mode 100755 new mode 100644 diff --git a/module/template/tools/location.html b/module/template/tools/location.html old mode 100755 new mode 100644 index 61a41368e0276418c34a60f737c9dc78fad69e3f..a9f3e9bca3288fb5fc5a32a7d83eb4dec5ce8667 --- a/module/template/tools/location.html +++ b/module/template/tools/location.html @@ -168,6 +168,22 @@ </div> </li> +<!--Previous history--> +<li role="presentation"> + <a class="basic-tools-element pointer" title="Aller à l'étendue précédente" + ng-click="ctrl.previousHistoryExtent()" ng-class="{'inactive' : ctrl.iHistoryOffset >= ctrl.aLocationHistory.length - 1}"> + <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> + </a> +</li> + +<!--Next history--> +<li role="presentation"> + <a class="basic-tools-element pointer" title="Aller à l'étendue suivante" + ng-click="ctrl.nextHistoryExtent()" ng-class="{'inactive' : ctrl.iHistoryOffset === 0}"> + <span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> + </a> +</li> + <!-- Modal --> <div id="scale-modal" class="modal fade" role="dialog"> <div class="modal-dialog"> diff --git a/module/template/tools/print.html b/module/template/tools/print.html old mode 100755 new mode 100644 diff --git a/module/template/tools/select.html b/module/template/tools/select.html old mode 100755 new mode 100644 diff --git a/module/template/tools/urlexporter.html b/module/template/tools/urlexporter.html new file mode 100644 index 0000000000000000000000000000000000000000..8219c05115135bb301def37dcd88452878d5a06b --- /dev/null +++ b/module/template/tools/urlexporter.html @@ -0,0 +1,11 @@ +<!--UrlExporter--> +<div class="row margin-sides-0 margin-10"> + <div class="col-md-3" ng-show="ctrl.properties.allow_public_connection"> + <input type="checkbox" ng-model="ctrl.usePublicToken" id="publicAccountCheckbox"> + <label for="publicAccountCheckbox" class="control-label">Public</label> + </div> + <div class="" ng-class="{'col-md-9' : ctrl.properties.allow_public_connection, 'col-md-12': !ctrl.properties.allow_public_connection}"> + <label for="urlExporterField" class="control-label">URL</label> + <input type="text" class="form-control" ng-model="ctrl.urlToExport" id="urlExporterField"> + </div> +</div> \ No newline at end of file diff --git a/web_service/conf/properties_server.inc b/web_service/conf/properties_server.inc old mode 100755 new mode 100644 index 67e38fad198a4c2fd649838ddc0f41469a4e949d..5daa05566dab4546372c352ed9b8dba1d965ac3b --- a/web_service/conf/properties_server.inc +++ b/web_service/conf/properties_server.inc @@ -14,4 +14,5 @@ $properties['vmap_log_dir'] = "{$properties['vas_home']}/log/vmap"; $properties['vmap_map_log_file'] = $properties['vmap_log_dir'] . '/map/' . date($properties["log_period"]) . '/map.log'; $properties['vmap_geocoders'] = '{"osm":{"title":"OpenStreetMap","url":"https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&limit=[limit]&extratags=1&namedetails=1&polygon_geojson=1&countrycodes=fr&q=[search]","data_field":"data","title_field":"display_name","geojson_field":"geojson","summary_fields":[{"key":"address.country","label":"Pays"},{"key":"address.state","label":"Région"},{"key":"address.postcode","label":"Code postal"},{"key":"extratags.population","label":"Population"}]},"national_adresse":{"title":"Base nationale","url":"https://api-adresse.data.gouv.fr/search/?q=[search]&limit=[limit]","data_field":"data.features","title_field":"properties.label","geojson_field":"geometry","summary_fields":[{"key":"properties.context","label":"Département"},{"key":"properties.city","label":"Ville"},{"key":"properties.postcode","label":"Code postal"}]}}'; $properties['vmap_default_geocoders'] = 'osm'; +$properties['vmap_history_timer'] = 0; ?> diff --git a/web_service/conf/selected_properties.inc b/web_service/conf/selected_properties.inc old mode 100755 new mode 100644 index 1de10c2e7f175febd5ce29d638d9fd08c252e42b..51094a4a35be058e5f8ebbbbce0e2d02330c0f6c --- a/web_service/conf/selected_properties.inc +++ b/web_service/conf/selected_properties.inc @@ -18,7 +18,8 @@ $aAdminFields = Array( 'vmap_geocoders', 'vmap_default_geocoders', 'use_proxy_for_tiles', - 'vmap_export.*' + 'vmap_export.*', + 'vmap_history_timer' ); $aUserFields = Array( 'phantomjs_root_path', @@ -36,7 +37,8 @@ $aUserFields = Array( 'vmap_geocoders', 'vmap_default_geocoders', 'use_proxy_for_tiles', - 'vmap_export.*' + 'vmap_export.*', + 'vmap_history_timer' ); $properties['aAdminFields'] = array_merge($properties['aAdminFields'], $aAdminFields); diff --git a/web_service/ws/BusinessObject.class.inc b/web_service/ws/BusinessObject.class.inc old mode 100755 new mode 100644 diff --git a/web_service/ws/BusinessObjects.class.inc b/web_service/ws/BusinessObjects.class.inc old mode 100644 new mode 100755 index 4ab16f4a001f76972011d6380c98d23dbc380793..413f93e43ebbc728cbc4600f84d2cc8d85d05249 --- a/web_service/ws/BusinessObjects.class.inc +++ b/web_service/ws/BusinessObjects.class.inc @@ -786,15 +786,6 @@ class BusinessObjects extends Vmap { $bo_id_field = $oBusinessObject->aFields['id_field']; $geom_column = $oBusinessObject->aFields['geom_column']; - $oVitisBase = $this->oConnection->oBd; - - // Connexion à la base de donées - if (!empty($bo_database) && $bo_database != $this->oConnection->oBd->base) { - $sLogin = $this->oConnection->oBd->login; - $sPassword = $this->oConnection->oBd->mdp; - $this->oConnection->oBd = new Vm($sLogin, $sPassword, $bo_database, $this->oConnection->oBd->serveur, $this->oConnection->oBd->port, $this->oConnection->oBd->sgbd, $this->oConnection->oBd->sPageEncoding); - } - $oForm = new Form($this->aProperties, $this->oConnection); $aTableColumns = $oForm->getTableColumns($bo_schema, $bo_table); @@ -836,8 +827,6 @@ class BusinessObjects extends Vmap { fclose($formFile); } - $this->oConnection->oBd = $oVitisBase; - return $JSONcontent; } diff --git a/web_service/ws/Layers.class.inc b/web_service/ws/Layers.class.inc old mode 100755 new mode 100644 diff --git a/web_service/ws/Querys.class.inc b/web_service/ws/Querys.class.inc old mode 100755 new mode 100644 diff --git a/web_service/ws/UserModules.class.inc b/web_service/ws/UserModules.class.inc old mode 100755 new mode 100644 diff --git a/web_service/ws/UserPrintStyles.class.inc b/web_service/ws/UserPrintStyles.class.inc old mode 100755 new mode 100644 diff --git a/web_service/ws/UserPrintTemplates.class.inc b/web_service/ws/UserPrintTemplates.class.inc old mode 100755 new mode 100644 diff --git a/web_service/ws/VexExport.class.inc b/web_service/ws/VexExport.class.inc old mode 100755 new mode 100644