summaryrefslogtreecommitdiff
path: root/chimere
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-05-08 12:20:09 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-05-08 12:20:09 +0200
commit3f1bcfe051af8e97b1cb6553df84dc20f395da32 (patch)
treed0c222fdcd80a23ff41485a6544266f33bc4afac /chimere
parent4028d3de920bfdcc9cc038521109314cdbe66ab6 (diff)
downloadChimère-3f1bcfe051af8e97b1cb6553df84dc20f395da32.tar.bz2
Chimère-3f1bcfe051af8e97b1cb6553df84dc20f395da32.zip
Better management of default areas - Fix the extent save
Diffstat (limited to 'chimere')
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js14
-rw-r--r--chimere/templates/chimere/blocks/actions.html2
-rw-r--r--chimere/views.py94
3 files changed, 71 insertions, 39 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 3c1e321..0853557 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -179,7 +179,9 @@ See the file COPYING for details.
/* if not zoom to the extent in cookies */
else if (!methods.zoomToCurrentExtent(settings.map)){
/* if no extent in cookies zoom to default */
- settings.map.setCenter(CENTER_LONLAT, DEFAULT_ZOOM);
+ if(CENTER_LONLAT && DEFAULT_ZOOM){
+ settings.map.setCenter(CENTER_LONLAT, DEFAULT_ZOOM);
+ }
}
if (!settings.edition){
methods.loadCategories();
@@ -592,6 +594,14 @@ See the file COPYING for details.
/*zoom to the route*/
var bounds = settings.layerVectors.getDataExtent();
if (bounds) settings.map.zoomToExtent(bounds);
+ },
+ saveExtent: function(){
+ var extent_key = 'MAP_EXTENT';
+ //if (area_name){ extent_key = extent_key + '_' + area_name; }
+ var extent = settings.map.getExtent().transform(EPSG_PROJECTION,
+ EPSG_DISPLAY_PROJECTION);
+ document.cookie = extent_key + "=" + extent.toArray().join('_')
+ + ';path="/"';
}
}; // End of public methods
var helpers = {
@@ -701,7 +711,7 @@ See the file COPYING for details.
for (var i=0; i < cookies.length; i++){
var items = cookies[i].split('=');
key = items[0].split(' ').join('');
- if (key == extent_key){
+ if (key == extent_key && !map_extent){
map_extent = items[1].split('_');
}
}
diff --git a/chimere/templates/chimere/blocks/actions.html b/chimere/templates/chimere/blocks/actions.html
index 517afb1..2806321 100644
--- a/chimere/templates/chimere/blocks/actions.html
+++ b/chimere/templates/chimere/blocks/actions.html
@@ -2,7 +2,7 @@
<ul id='action' class='action'>
{% for action, subactions in actions %}
<li class='ui-widget ui-button ui-state-default ui-corner-all {% ifequal action.id action_selected.0 %} ui-state-active{% endifequal %}'>
- <a href='{{extra_url}}{{ action.path }}' onclick='saveExtent();'>{{ action.label }}</a>
+ <a href='{{extra_url}}{{ action.path }}' onclick='jQuery("#map").chimere("saveExtent");'>{{ action.label }}</a>
</li>
{% endfor %}
</ul>
diff --git a/chimere/views.py b/chimere/views.py
index 62d269a..1aacecc 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -51,7 +51,7 @@ def get_base_response(area_name=""):
Get the base url
"""
base_response_dct = {'media_path':settings.MEDIA_URL,}
- base_url = reverse("chimere:index") # App urls must be included with namespace
+ base_url = reverse("chimere:index")
if not base_url.startswith('/'):
base_url = '/' + base_url
if area_name:
@@ -59,17 +59,24 @@ def get_base_response(area_name=""):
base_url += '/'
base_url += area_name + '/'
base_response_dct['extra_url'] = base_url
- base_response_dct['area_name'] = area_name
+ area = None
if area_name:
try:
area = Area.objects.get(urn=area_name)
- if area.external_css:
- base_response_dct['css_area'] = area.external_css
+ except ObjectDoesNotExist:
+ return None, redirect(reverse('chimere:index'))
+ else:
+ try:
+ area = Area.objects.get(default=True)
+ area_name = area.urn
except ObjectDoesNotExist:
pass
+ base_response_dct['area_name'] = area_name
+ if area and area.external_css:
+ base_response_dct['css_area'] = area.external_css
base_response_dct['JQUERY_JS_URLS'] = settings.JQUERY_JS_URLS
base_response_dct['JQUERY_CSS_URLS'] = settings.JQUERY_CSS_URLS
- return base_response_dct
+ return base_response_dct, None
def index(request, area_name=None, default_area=None, simple=False,
zoomout=None):
@@ -84,21 +91,16 @@ def index(request, area_name=None, default_area=None, simple=False,
request.session['last_visit'] != today:
request.session['last_visit'] = today
news_visible = True
- response_dct = get_base_response(area_name)
- # If the URL specify an area
- default_area = None
- if area_name:
- try:
- default_area = Area.objects.get(urn=area_name)
- except Area.DoesNotExist:
- return redirect(reverse('chimere:index'))
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
# don't mess with permalink
if zoomout and request.GET and 'lat' in request.GET \
and 'lon' in request.GET:
zoomout = None
response_dct.update({
'actions':actions, 'action_selected':('view',),
- 'error_message':'', 'default_area':default_area,
+ 'error_message':'',
'news_visible': news_visible,
'areas_visible': settings.CHIMERE_DISPLAY_AREAS,
'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER,
@@ -115,9 +117,13 @@ def get_edit_page(redirect_url, item_cls, item_form):
"""
Edition page
"""
- def func(request, area_name="", item_id=None, subcategories=[]):
- response_dct = get_base_response(area_name)
-
+ def func(request, area_name="", item_id=None, cat_type=['M']):
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect, None, None
+ if 'area_name' in response_dct:
+ area_name = response_dct['area_name']
+ subcategories = SubCategory.getAvailable(cat_type, area_name)
listed_subcats = []
if subcategories:
for cat, subcats in subcategories:
@@ -130,7 +136,7 @@ def get_edit_page(redirect_url, item_cls, item_form):
init_item = item_cls.objects.get(pk=item_id)
except:
return redirect(redirect_url, area_name if area_name else ''),\
- None
+ None, None
ref_item = init_item
modified_item = item_cls.objects.filter(ref_item=init_item,
submiter_session_key=request.session.session_key)
@@ -184,8 +190,8 @@ def get_edit_page(redirect_url, item_cls, item_form):
notifySubmission(item)
response_dct = get_base_response(area_name)
return redirect(redirect_url + '-item',
- area_name if area_name else '',
- item.ref_item.pk, 'submited'), None
+ area_name if area_name else '',
+ item.ref_item.pk, 'submited'), None, subcategories
else:
response_dct['error_message'] = _(u"There are missing field(s)"
u" and/or errors in the submited form.")
@@ -196,7 +202,7 @@ def get_edit_page(redirect_url, item_cls, item_form):
formset_picture = PictureFileFormSet(initial=init_picture,
prefix='picture')
return None, (item_id, init_item, response_dct, form, formset_multi,
- formset_picture)
+ formset_picture), subcategories
return func
get_edit_marker = get_edit_page('chimere:edit', Marker, MarkerForm)
@@ -205,9 +211,8 @@ def edit(request, area_name="", item_id=None, submited=False):
"""
Edition page
"""
- sub_categories = SubCategory.getAvailable(['M', 'B'], area_name)
- response, values = get_edit_marker(request, area_name, item_id,
- subcategories=sub_categories)
+ response, values, sub_categories = get_edit_marker(request, area_name,
+ item_id, ['M', 'B'])
if response:
return response
item_id, init_item, response_dct, form, formset_multi, formset_picture = \
@@ -239,7 +244,9 @@ def edit(request, area_name="", item_id=None, submited=False):
context_instance=RequestContext(request))
def uploadFile(request, category_id='', area_name=''):
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
Form = FileForm if not category_id else FullFileForm
category = None
if category_id:
@@ -306,9 +313,8 @@ def editRoute(request, area_name="", item_id=None, submited=False):
"""
Route edition page
"""
- sub_categories = SubCategory.getAvailable(['M', 'B'], area_name)
- response, values = get_edit_route(request, area_name, item_id,
- subcategories=sub_categories)
+ response, values, sub_categories = get_edit_route(request, area_name,
+ item_id, ['R', 'B'])
if response:
return response
item_id, init_item, response_dct, form, formset_multi, formset_picture = \
@@ -357,7 +363,9 @@ def submited(request, area_name="", action=""):
"""
Successful submission page
"""
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
response_dct.update({'actions':actions, 'action_selected':action,})
return render_to_response('chimere/submited.html', response_dct,
context_instance=RequestContext(request))
@@ -366,7 +374,9 @@ def charte(request, area_name=""):
"""
Affichage de la charte
"""
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
response_dct.update({'actions':actions, 'action_selected':('charte',)})
return render_to_response('chimere/charte.html', response_dct,
context_instance=RequestContext(request))
@@ -392,7 +402,9 @@ def contactus(request, area_name=""):
msg = _(u"Temporary error. Renew your message later.")
else:
form = ContactForm()
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
response_dct.update({'actions':actions, 'action_selected':('contact',),
'contact_form':form, 'message':msg})
return render_to_response('chimere/contactus.html', response_dct,
@@ -407,7 +419,9 @@ def getDetail(request, area_name, marker_id):
status__in=['A', 'S'])[0]
except (ValueError, IndexError):
return HttpResponse('no results')
- response_dct = get_base_response()
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
response_dct['marker'] = marker
if request.method == 'GET':
if 'simple' in request.GET and request.GET['simple']:
@@ -433,7 +447,9 @@ def getDescriptionDetail(request, area_name, category_id):
category = Category.objects.filter(id=int(category_id))[0]
except (ValueError, IndexError):
return HttpResponse('no results')
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
response_dct['category'] = category
return render_to_response('chimere/category_detail.html', response_dct,
context_instance=RequestContext(request))
@@ -501,7 +517,9 @@ def get_available_categories(request, area_name=None, area=None, status='A',
if settings.CHIMERE_DYNAMIC_CATEGORIES and \
not "current_extent" in request.GET:
return ""
- context_data = get_base_response(area_name)
+ context_data, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
if not settings.CHIMERE_DYNAMIC_CATEGORIES:
# Categories are not updated dynamicaly when the user move the map
# so we return ALL the categories
@@ -544,7 +562,9 @@ def getTinyfiedUrl(parameters, area_name=''):
urn = TinyUrl.getUrnByParameters(parameters)
except:
return {}
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
url = settings.SERVER_URL
if url[-1] == '/':
url = url[:-1]
@@ -567,5 +587,7 @@ def redirectFromTinyURN(request, area_name='', tiny_urn=''):
Redirect from a tiny Urn
"""
parameters = '?' + TinyUrl.getParametersByUrn(tiny_urn)
- response_dct = get_base_response(area_name)
+ response_dct, redirect = get_base_response(area_name)
+ if redirect:
+ return redirect
return HttpResponseRedirect(response_dct['extra_url'] + parameters)