diff options
-rw-r--r-- | chimere/actions.py | 2 | ||||
-rw-r--r-- | chimere/forms.py | 2 | ||||
-rw-r--r-- | chimere/locale/fr/LC_MESSAGES/django.po | 3 | ||||
-rw-r--r-- | chimere/static/chimere/js/edit_area.js | 2 | ||||
-rw-r--r-- | chimere/static/chimere/js/edit_route_map.js | 2 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 227 | ||||
-rw-r--r-- | chimere/utils.py | 4 | ||||
-rw-r--r-- | chimere/widgets.py | 2 |
8 files changed, 227 insertions, 17 deletions
diff --git a/chimere/actions.py b/chimere/actions.py index 1fac738..ecbd07a 100644 --- a/chimere/actions.py +++ b/chimere/actions.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008-2010 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as diff --git a/chimere/forms.py b/chimere/forms.py index d450893..599f88a 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008-2014 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as diff --git a/chimere/locale/fr/LC_MESSAGES/django.po b/chimere/locale/fr/LC_MESSAGES/django.po index fcec05e..72e7fa0 100644 --- a/chimere/locale/fr/LC_MESSAGES/django.po +++ b/chimere/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,6 @@ # Chimère -# Copyright (C) 2008-2015 +# Copyright (C) 2008-2016 Étienne Loks <etienne.loks@peacefrogs.net> # This file is distributed under the same license as the Chimère package. -# Étienne Loks <etienne.loks@peacefrogs.net>, 2008-2011. # msgid "" msgstr "" diff --git a/chimere/static/chimere/js/edit_area.js b/chimere/static/chimere/js/edit_area.js index 6a9c26a..ea30038 100644 --- a/chimere/static/chimere/js/edit_area.js +++ b/chimere/static/chimere/js/edit_area.js @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +/* Copyright (C) 2008-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/chimere/static/chimere/js/edit_route_map.js b/chimere/static/chimere/js/edit_route_map.js index 3428e90..b177f71 100644 --- a/chimere/static/chimere/js/edit_route_map.js +++ b/chimere/static/chimere/js/edit_route_map.js @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +/* Copyright (C) 2008-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index f59aca8..c799852 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -222,8 +222,8 @@ function transform(obj) { icon_start: null, icon_step: null, icon_end: null, - mobile:false, - input_id:'id_point' + mobile: false, + input_id: 'id_point' }; var settings = {}; /* @@ -919,6 +919,14 @@ function transform(obj) { settings.map.setCenter(settings.current_position); }, + // center from the lon lat + mapCenterOnLonLat: function(options){ + settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]); + settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION, + settings.map.getProjectionObject()); + settings.map.setCenter(settings.current_position); + }, + // set current position setCurrentPosition: function(lonlat){ settings.current_position = lonlat; @@ -1484,6 +1492,19 @@ function transform(obj) { return feature; */ }, + + //LIB iOS + connectWebViewJavascriptBridge: function(callback) { + if (window.WebViewJavascriptBridge) { + callback(WebViewJavascriptBridge); + } else { + document.addEventListener('WebViewJavascriptBridgeReady', function() { + callback(WebViewJavascriptBridge); + }, false); + } + }, + //fin lib ios + cleanRoute: function(){ settings.layerVectors.removeAllFeatures(); }, @@ -1628,8 +1649,10 @@ function transform(obj) { // set the start point for routing routingFrom: function(){ $('#chimere_map_menu').hide(); - settings.routing_panel_open(); - $('#map_menu_clear').show(); + if (!settings.mobile){ + settings.routing_panel_open(); + $('#map_menu_clear').show(); + } settings.routing_start = new OpenLayers.Marker( settings.current_position.clone(), settings.icon_start); @@ -1641,12 +1664,86 @@ function transform(obj) { 'start_label'); } if (settings.routing_end) methods.route(); + // Added for mobile - START // + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('openRouteFrom'); + }); + //android + window.JSInterface.openRouteFrom(); + // Added for mobile - END // + }, + // Added for mobile - START // + // set the start point for current Position + routingFromMyPosition: function(options){ + $('#chimere_map_menu').hide(); + settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]); + settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION, + settings.map.getProjectionObject()); + settings.routing_start = new OpenLayers.Marker( + settings.current_position.clone(), + settings.icon_start); + settings.layerRouteMarker.addMarker(settings.routing_start); + if (nominatim_url){ + helpers.updateNominatimName(settings.current_position.clone() + .transform(settings.map.getProjectionObject(), + EPSG_DISPLAY_PROJECTION), + 'start_label'); + } + if (settings.routing_end) methods.route(); + + // Added for mobile - START // + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('openRouteFrom'); + }); + //android + window.JSInterface.openRouteFrom(); + // Added for mobile - END // + }, + + updateMyCurrentPosition: function(options){ + + if (settings.current_position_marker) { + settings.layerMarkers.removeMarker(settings.current_position_marker) + } + + var tmp_position = new OpenLayers.LonLat(options["lon"], options["lat"]); + tmp_position = tmp_position.transform(EPSG_DISPLAY_PROJECTION, + + + settings.map.getProjectionObject()); + settings.current_position_marker = new OpenLayers.Marker( + tmp_position.clone(), + settings.icon_current_position); + settings.layerRouteMarker.addMarker(settings.current_position_marker); }, + + // Added for mobile - END // + // add a step point for routing routingAddStep: function(){ $('#chimere_map_menu').hide(); - settings.routing_panel_open(); - $('#map_menu_clear').show(); + if (!settings.mobile){ + settings.routing_panel_open(); + $('#map_menu_clear').show(); + } settings.routing_steps.push(new OpenLayers.Marker( settings.current_position.clone(), settings.icon_step.clone())); @@ -1705,8 +1802,10 @@ function transform(obj) { // set the finish point for routing routingTo: function(){ $('#chimere_map_menu').hide(); - settings.routing_panel_open(); - $('#map_menu_clear').show(); + if (!settings.mobile){ + settings.routing_panel_open(); + $('#map_menu_clear').show(); + } settings.routing_end = new OpenLayers.Marker( settings.current_position.clone(), settings.icon_end); @@ -1718,8 +1817,64 @@ function transform(obj) { 'end_label'); } if (settings.routing_start) methods.route(); + + // Added for mobile - START // + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('openRouteTo'); + }); + //Android + window.JSInterface.openRouteTo(); + // Added for mobile - END // + }, + // set the finish point for current Position + routingToPosition: function(options){ + $('#chimere_map_menu').hide(); + if (!settings.mobile){ + settings.routing_panel_open(); + $('#map_menu_clear').show(); + } + settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]); + settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION, + settings.map.getProjectionObject()); + settings.routing_end = new OpenLayers.Marker( + settings.current_position.clone(), + settings.icon_end); + settings.layerRouteMarker.addMarker(settings.routing_end); + if (nominatim_url){ + helpers.updateNominatimName(settings.current_position.clone() + .transform(settings.map.getProjectionObject(), + EPSG_DISPLAY_PROJECTION), + 'end_label'); + } + if (settings.routing_start) methods.route(); + // Added for mobile - START // + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('openRouteTo'); + }); + //Android + window.JSInterface.openRouteTo(); + // Added for mobile - END // }, + // clear the current itinerary routingClear: function(){ $('#nominatim_start_lon').val(''); @@ -1825,11 +1980,30 @@ function transform(obj) { data.properties.description); $('#chimere_itinerary').show(); if(!settings.edition_type_is_route){ - $('#chimere_itinerary_form').hide(); - settings.routing_panel_open(); + if (!settings.mobile){ + $('#chimere_itinerary_form').hide(); + settings.routing_panel_open(); + } } else { methods.updateRoutingInput(); } + // Added for mobile - START // + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('routeCalculated:'+data.properties.total); + bridge.send('routeCalculatedDetail:'+data.properties.description); + }); + //android + window.JSInterface.routeCalculated(data.properties.total, data.properties.description); + // Added for mobile - START // }, error: function (jqXHR, textStatus, errorThrown) { methods.redrawRoutingIcons(); @@ -2337,6 +2511,39 @@ function transform(obj) { $('#'+response_id).html(vals.display_name); $('#nominatim_'+response_id).html(vals.display_name); $('#chimere_'+response_id).html(vals.display_name); + // Added for mobile - START // + if (response_id === 'start_label') { + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('updateFrom:'+vals.display_name); + }); + //android + window.JSInterface.updateFrom(vals.display_name); + } else if (response_id === 'end_label') { + //iOS + methods.connectWebViewJavascriptBridge( + function(bridge) { + if(!bridge){ + bridge.init(function(message, responseCallback) { + if (responseCallback) { + responseCallback("Right back atcha"); + } + }); + } + bridge.send('updateTo:'+vals.display_name); + }); + //android + window.JSInterface.updateTo(vals.display_name); + } + // Added for mobile - END // } }); } diff --git a/chimere/utils.py b/chimere/utils.py index 20dc99e..11c9c4e 100644 --- a/chimere/utils.py +++ b/chimere/utils.py @@ -1263,6 +1263,10 @@ class HtmlXsltManager(ImportManager): dct['description'] = item.get('description', '') if 'date' in item: dct.update(self.parse_date(item['date'])) + if "start_date" in item and item["start_date"]: + dct['start_date'] = item["start_date"] + if "end_date" in item and item["end_date"]: + dct['end_date'] = item["end_date"] key = item['key'] it, updated, created = self.create_or_update_item(cls, dct, key, category=category) diff --git a/chimere/widgets.py b/chimere/widgets.py index c9c6cc2..78d7508 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as |