diff options
| author | Étienne Loks <etienne.loks@proxience.com> | 2015-02-14 21:42:27 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@proxience.com> | 2015-02-14 21:42:27 +0100 |
| commit | 660ce29ac2cf781c8e9607a837b9832e1692e156 (patch) | |
| tree | dfc74f2056cfc9a1ce12eb17adf8bc3771510495 /chimere/widgets.py | |
| parent | 3daa945c334f719e7edb086021bfcc93880eb7f7 (diff) | |
| parent | 57bbba43a75a72eeacd44f1ce5fcd6f203dc321c (diff) | |
| download | Chimère-660ce29ac2cf781c8e9607a837b9832e1692e156.tar.bz2 Chimère-660ce29ac2cf781c8e9607a837b9832e1692e156.zip | |
Merge branch 'master' into nef
Conflicts:
chimere/admin.py
chimere/forms.py
chimere/models.py
chimere/settings.sample.py
chimere/static/chimere/js/jquery.chimere-ol.js
chimere/templates/chimere/base.html
chimere/templates/chimere/blocks/head_chimere.html
chimere/templates/chimere/blocks/map.html
chimere/templates/chimere/main_map.html
chimere/templatetags/chimere_tags.py
chimere/tests.py
chimere/urls.py
chimere/views.py
chimere/widgets.py
Diffstat (limited to 'chimere/widgets.py')
| -rw-r--r-- | chimere/widgets.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/chimere/widgets.py b/chimere/widgets.py index d5e502e..e357268 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -243,11 +243,11 @@ class PointChooserWidget(forms.TextInput): js = list(settings.JQUERY_JS_URLS) + \ settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] - def render(self, name, value, attrs=None, map_name=''): + def render(self, name, value, attrs=None, area_name='', initialized=True): ''' Render a map and latitude, longitude information field ''' - val = '0' + val = '' value_x, value_y = 0, 0 if value: val = str(value) @@ -275,6 +275,7 @@ class PointChooserWidget(forms.TextInput): 'value_x': value_x, 'name': name, 'val': val, + 'initialized': initialized, 'isvalue': bool(value), 'default_map': "true" if default_map else "false", }) % \ @@ -288,12 +289,26 @@ class PointChooserWidget(forms.TextInput): ) ) +class HiddenPointChooserWidget(PointChooserWidget): + """ + OpenLayers doesn't initialize well on an hidden field so specific JS + must be loaded. + """ + def render(self, *args, **kwargs): + kwargs['initialized'] = False + return super(HiddenPointChooserWidget, self).render(*args, **kwargs) + class PointField(models.PointField): ''' Set the widget for the form field ''' + def __init__(self, *args, **kwargs): + self.widget = kwargs.pop('widget') if 'widget' in kwargs \ + else PointChooserWidget + return super(PointField, self).__init__(*args, **kwargs) + def formfield(self, **keys): - defaults = {'widget': PointChooserWidget} + defaults = {'widget': self.widget} keys.update(defaults) return super(PointField, self).formfield(**keys) @@ -504,19 +519,19 @@ class AreaWidget(forms.TextInput): help_msg = _(u"Hold CTRL, click and drag to select area on the map") tpl += u"<p class='help-osm'>%s</p>\n" % help_msg tpl += u"<script type='text/javascript'>\n" - tpl += u"function init_map_form (){\ninit();\n" + tpl += u"function init_map_form (){\ninit('map_edit_area');\n" if value: tpl += u"var extent = new OpenLayers.Bounds(%f, %f, %f, %f);\n"\ u"extent.transform(epsg_display_projection, epsg_projection);\n"\ u"updateForm(extent);\n"\ - u"map.zoomToExtent(extent, true);\n"\ - u"map.zoomOut();" % (upper_left_lon, upper_left_lat, + u"area_map.zoomToExtent(extent, true);\n"\ + u"area_map.zoomOut();" % (upper_left_lon, upper_left_lat, lower_right_lon, lower_right_lat) tpl += u"}\n" if initialized: tpl += u"$(document).ready(function($) {init_map_form()});\n" tpl += u"</script>\n" - tpl += u"<div id='map_edit'>\n" + tpl += u"<div id='map_edit_area'>\n" return mark_safe(tpl) def value_from_datadict(self, data, files, name): |
