summaryrefslogtreecommitdiff
path: root/chimere
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-06-15 01:12:13 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-06-15 01:12:13 +0200
commiteb347add15c8c04a2e464c9153620bd41f2d0a2f (patch)
tree9d9ca7e822df3ba7e6864540d0406f0557345b33 /chimere
parent20d155e5ccf647ce7d77ea86fae8cf36e2df9692 (diff)
parent48e705e7ce868a55086794932dda92c060c228e8 (diff)
downloadChimère-eb347add15c8c04a2e464c9153620bd41f2d0a2f.tar.bz2
Chimère-eb347add15c8c04a2e464c9153620bd41f2d0a2f.zip
Merge branch 'v2.2' into v3.0
Conflicts: chimere/static/chimere/js/jquery.chimere.js
Diffstat (limited to 'chimere')
-rw-r--r--chimere/actions.py2
-rw-r--r--chimere/forms.py2
-rw-r--r--chimere/locale/fr/LC_MESSAGES/django.po3
-rw-r--r--chimere/static/chimere/js/edit_area.js2
-rw-r--r--chimere/static/chimere/js/edit_route_map.js2
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js227
-rw-r--r--chimere/utils.py4
-rw-r--r--chimere/widgets.py2
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