diff options
| -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) | 
