diff options
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 |
commit | 3f1bcfe051af8e97b1cb6553df84dc20f395da32 (patch) | |
tree | d0c222fdcd80a23ff41485a6544266f33bc4afac /chimere | |
parent | 4028d3de920bfdcc9cc038521109314cdbe66ab6 (diff) | |
download | Chimè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.js | 14 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/actions.html | 2 | ||||
-rw-r--r-- | chimere/views.py | 94 |
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) |