diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-02-16 08:46:47 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-02-16 08:46:47 +0100 |
commit | d8c670233cb6b14fc405d04f009e0959710910a6 (patch) | |
tree | fad21052b7557a6cd857d10c37f6735966303b70 | |
parent | d70015e9ab3f79f7060312fe1eea51b034d9c06e (diff) | |
download | Chimère-d8c670233cb6b14fc405d04f009e0959710910a6.tar.bz2 Chimère-d8c670233cb6b14fc405d04f009e0959710910a6.zip |
Refactoring: change paths, move files, renaming, re-adapt templates + use context template (refs #316)
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | chimere/static/chimere/css/forms.css (renamed from chimere/static/forms.css) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/css/styles.css (renamed from chimere/static/styles.css) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/img/blank.gif (renamed from chimere/static/img/blank.gif) | bin | 42 -> 42 bytes | |||
-rwxr-xr-x | chimere/static/chimere/img/cloud-popup-relative.png (renamed from chimere/static/img/cloud-popup-relative.png) | bin | 3177 -> 3177 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/drag-rectangle-off.png (renamed from chimere/static/img/drag-rectangle-off.png) | bin | 1202 -> 1202 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/drag-rectangle-on.png (renamed from chimere/static/img/drag-rectangle-on.png) | bin | 1218 -> 1218 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/drawing.png (renamed from chimere/static/img/drawing.png) | bin | 7445 -> 7445 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/east-mini.png (renamed from chimere/static/img/east-mini.png) | bin | 451 -> 451 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/images_licences (renamed from chimere/static/img/images_licences) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/img/layer-switcher-maximize.png (renamed from chimere/static/img/layer-switcher-maximize.png) | bin | 451 -> 451 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/layer-switcher-minimize.png (renamed from chimere/static/img/layer-switcher-minimize.png) | bin | 249 -> 249 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/marker-blue.png (renamed from chimere/static/img/marker-blue.png) | bin | 992 -> 992 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/marker-gold.png (renamed from chimere/static/img/marker-gold.png) | bin | 831 -> 831 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/marker-green.png (renamed from chimere/static/img/marker-green.png) | bin | 967 -> 967 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/marker.png (renamed from chimere/static/img/marker.png) | bin | 606 -> 606 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/measuring-stick-off.png (renamed from chimere/static/img/measuring-stick-off.png) | bin | 3343 -> 3343 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/measuring-stick-on.png (renamed from chimere/static/img/measuring-stick-on.png) | bin | 3816 -> 3816 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/north-mini.png (renamed from chimere/static/img/north-mini.png) | bin | 484 -> 484 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/panning-hand-off.png (renamed from chimere/static/img/panning-hand-off.png) | bin | 3875 -> 3875 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/panning-hand-on.png (renamed from chimere/static/img/panning-hand-on.png) | bin | 3977 -> 3977 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/slider.png (renamed from chimere/static/img/slider.png) | bin | 285 -> 285 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/south-mini.png (renamed from chimere/static/img/south-mini.png) | bin | 481 -> 481 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/upload.png (renamed from chimere/static/img/upload.png) | bin | 8871 -> 8871 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/west-mini.png (renamed from chimere/static/img/west-mini.png) | bin | 453 -> 453 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/zoom-minus-mini.png (renamed from chimere/static/img/zoom-minus-mini.png) | bin | 359 -> 359 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/zoom-plus-mini.png (renamed from chimere/static/img/zoom-plus-mini.png) | bin | 489 -> 489 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/zoom-world-mini.png (renamed from chimere/static/img/zoom-world-mini.png) | bin | 1072 -> 1072 bytes | |||
-rw-r--r-- | chimere/static/chimere/img/zoombar.png (renamed from chimere/static/img/zoombar.png) | bin | 463 -> 463 bytes | |||
-rw-r--r-- | chimere/static/chimere/js/OpenLayers.js (renamed from chimere/static/OpenLayers.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/base.js (renamed from chimere/static/base.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/edit_area.js (renamed from chimere/static/edit_area.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/edit_map.js (renamed from chimere/static/edit_map.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/edit_route_map.js (renamed from chimere/static/edit_route_map.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.css | 64 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.custom.css (renamed from chimere/static/jquery/css/jquery.bsmselect.custom.css) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.compatibility.js | 60 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.js | 381 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.sortable.js | 49 | ||||
-rw-r--r-- | chimere/static/chimere/js/jquery/jquery-1.4.4.min.js (renamed from chimere/static/jquery/jquery-1.4.4.min.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/main_map.js (renamed from chimere/static/main_map.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/textareas.js (renamed from chimere/static/textareas.js) | 0 | ||||
-rw-r--r-- | chimere/static/chimere/js/utils.js | 238 | ||||
m--------- | chimere/static/jquery/bsmSelect | 0 | ||||
-rw-r--r-- | chimere/templates/base.html | 58 | ||||
-rw-r--r-- | chimere/templates/categories.html | 22 | ||||
-rw-r--r-- | chimere/templates/chimere/base.html | 20 | ||||
-rw-r--r-- | chimere/templates/chimere/base_user.html (renamed from chimere/templates/base_user.html) | 2 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/actions.html | 20 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/areas.html | 11 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/categories.html | 29 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/footer.html | 3 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/head.html | 44 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/map_params.html | 17 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/welcome.html | 31 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/welcome_message.html | 1 | ||||
-rw-r--r-- | chimere/templates/chimere/category_detail.html (renamed from chimere/templates/category_detail.html) | 0 | ||||
-rw-r--r-- | chimere/templates/chimere/contactus.html | 19 | ||||
-rw-r--r-- | chimere/templates/chimere/detail.html | 23 | ||||
-rw-r--r-- | chimere/templates/chimere/edit.html | 72 | ||||
-rw-r--r-- | chimere/templates/chimere/edit_route.html | 68 | ||||
-rw-r--r-- | chimere/templates/chimere/main_map.html | 27 | ||||
-rw-r--r-- | chimere/templates/chimere/main_map_simple.html | 22 | ||||
-rw-r--r-- | chimere/templates/chimere/submited.html | 10 | ||||
-rw-r--r-- | chimere/templates/chimere/upload_file.html (renamed from chimere/templates/upload_file.html) | 0 | ||||
-rw-r--r-- | chimere/templates/chimere/welcome.html (renamed from chimere/templates/welcome.html) | 0 | ||||
-rw-r--r-- | chimere/templates/contactus.html | 20 | ||||
-rw-r--r-- | chimere/templates/detail.html | 22 | ||||
-rw-r--r-- | chimere/templates/edit.html | 68 | ||||
-rw-r--r-- | chimere/templates/edit_route.html | 68 | ||||
-rw-r--r-- | chimere/templates/main_map.html | 44 | ||||
-rw-r--r-- | chimere/templates/main_map_simple.html | 20 | ||||
-rw-r--r-- | chimere/templates/submited.html | 11 | ||||
-rw-r--r-- | chimere/templatetags/chimere_tags.py | 84 | ||||
-rw-r--r-- | chimere/urls.py | 5 | ||||
-rw-r--r-- | chimere/views.py | 2 | ||||
-rw-r--r-- | example_project/static/icons/email.png (renamed from chimere/static/icons/email.png) | bin | 735 -> 735 bytes | |||
-rw-r--r-- | example_project/static/icons/facebook.png (renamed from chimere/static/icons/facebook.png) | bin | 731 -> 731 bytes | |||
-rw-r--r-- | example_project/static/icons/identica.png (renamed from chimere/static/icons/identica.png) | bin | 1373 -> 1373 bytes | |||
-rw-r--r-- | example_project/static/icons/minus.png (renamed from chimere/static/icons/minus.png) | bin | 259 -> 259 bytes | |||
-rw-r--r-- | example_project/static/icons/plus.png (renamed from chimere/static/icons/plus.png) | bin | 275 -> 275 bytes | |||
-rw-r--r-- | example_project/static/icons/twitter.png (renamed from chimere/static/icons/twitter.png) | bin | 924 -> 924 bytes | |||
-rw-r--r-- | example_project/static/icons/zoom.png (renamed from chimere/static/icons/zoom.png) | bin | 655 -> 655 bytes |
83 files changed, 1323 insertions, 316 deletions
@@ -4,6 +4,6 @@ *.mo *.ignore example_project/settings.py -chimere/static/icons/* -chimere/static/upload/* +example_project/static/icons/* +example_project/static/upload/* chimere_env/ diff --git a/chimere/static/forms.css b/chimere/static/chimere/css/forms.css index c1c3eca..c1c3eca 100644 --- a/chimere/static/forms.css +++ b/chimere/static/chimere/css/forms.css diff --git a/chimere/static/styles.css b/chimere/static/chimere/css/styles.css index b56b2ab..b56b2ab 100644 --- a/chimere/static/styles.css +++ b/chimere/static/chimere/css/styles.css diff --git a/chimere/static/img/blank.gif b/chimere/static/chimere/img/blank.gif Binary files differindex 4bcc753..4bcc753 100644 --- a/chimere/static/img/blank.gif +++ b/chimere/static/chimere/img/blank.gif diff --git a/chimere/static/img/cloud-popup-relative.png b/chimere/static/chimere/img/cloud-popup-relative.png Binary files differindex 1215a36..1215a36 100755 --- a/chimere/static/img/cloud-popup-relative.png +++ b/chimere/static/chimere/img/cloud-popup-relative.png diff --git a/chimere/static/img/drag-rectangle-off.png b/chimere/static/chimere/img/drag-rectangle-off.png Binary files differindex fc6daf4..fc6daf4 100644 --- a/chimere/static/img/drag-rectangle-off.png +++ b/chimere/static/chimere/img/drag-rectangle-off.png diff --git a/chimere/static/img/drag-rectangle-on.png b/chimere/static/chimere/img/drag-rectangle-on.png Binary files differindex 7f783ce..7f783ce 100644 --- a/chimere/static/img/drag-rectangle-on.png +++ b/chimere/static/chimere/img/drag-rectangle-on.png diff --git a/chimere/static/img/drawing.png b/chimere/static/chimere/img/drawing.png Binary files differindex a2d3a30..a2d3a30 100644 --- a/chimere/static/img/drawing.png +++ b/chimere/static/chimere/img/drawing.png diff --git a/chimere/static/img/east-mini.png b/chimere/static/chimere/img/east-mini.png Binary files differindex 0707567..0707567 100644 --- a/chimere/static/img/east-mini.png +++ b/chimere/static/chimere/img/east-mini.png diff --git a/chimere/static/img/images_licences b/chimere/static/chimere/img/images_licences index 6dc68fd..6dc68fd 100644 --- a/chimere/static/img/images_licences +++ b/chimere/static/chimere/img/images_licences diff --git a/chimere/static/img/layer-switcher-maximize.png b/chimere/static/chimere/img/layer-switcher-maximize.png Binary files differindex 8d7bb16..8d7bb16 100644 --- a/chimere/static/img/layer-switcher-maximize.png +++ b/chimere/static/chimere/img/layer-switcher-maximize.png diff --git a/chimere/static/img/layer-switcher-minimize.png b/chimere/static/chimere/img/layer-switcher-minimize.png Binary files differindex e80bf21..e80bf21 100644 --- a/chimere/static/img/layer-switcher-minimize.png +++ b/chimere/static/chimere/img/layer-switcher-minimize.png diff --git a/chimere/static/img/marker-blue.png b/chimere/static/chimere/img/marker-blue.png Binary files differindex 83a90b4..83a90b4 100644 --- a/chimere/static/img/marker-blue.png +++ b/chimere/static/chimere/img/marker-blue.png diff --git a/chimere/static/img/marker-gold.png b/chimere/static/chimere/img/marker-gold.png Binary files differindex 2ff9ec5..2ff9ec5 100644 --- a/chimere/static/img/marker-gold.png +++ b/chimere/static/chimere/img/marker-gold.png diff --git a/chimere/static/img/marker-green.png b/chimere/static/chimere/img/marker-green.png Binary files differindex 17168f1..17168f1 100644 --- a/chimere/static/img/marker-green.png +++ b/chimere/static/chimere/img/marker-green.png diff --git a/chimere/static/img/marker.png b/chimere/static/chimere/img/marker.png Binary files differindex ccd1913..ccd1913 100644 --- a/chimere/static/img/marker.png +++ b/chimere/static/chimere/img/marker.png diff --git a/chimere/static/img/measuring-stick-off.png b/chimere/static/chimere/img/measuring-stick-off.png Binary files differindex 70c2dff..70c2dff 100644 --- a/chimere/static/img/measuring-stick-off.png +++ b/chimere/static/chimere/img/measuring-stick-off.png diff --git a/chimere/static/img/measuring-stick-on.png b/chimere/static/chimere/img/measuring-stick-on.png Binary files differindex cdb8f34..cdb8f34 100644 --- a/chimere/static/img/measuring-stick-on.png +++ b/chimere/static/chimere/img/measuring-stick-on.png diff --git a/chimere/static/img/north-mini.png b/chimere/static/chimere/img/north-mini.png Binary files differindex a8a0b40..a8a0b40 100644 --- a/chimere/static/img/north-mini.png +++ b/chimere/static/chimere/img/north-mini.png diff --git a/chimere/static/img/panning-hand-off.png b/chimere/static/chimere/img/panning-hand-off.png Binary files differindex 4c912ac..4c912ac 100644 --- a/chimere/static/img/panning-hand-off.png +++ b/chimere/static/chimere/img/panning-hand-off.png diff --git a/chimere/static/img/panning-hand-on.png b/chimere/static/chimere/img/panning-hand-on.png Binary files differindex 6094c64..6094c64 100644 --- a/chimere/static/img/panning-hand-on.png +++ b/chimere/static/chimere/img/panning-hand-on.png diff --git a/chimere/static/img/slider.png b/chimere/static/chimere/img/slider.png Binary files differindex 23afd57..23afd57 100644 --- a/chimere/static/img/slider.png +++ b/chimere/static/chimere/img/slider.png diff --git a/chimere/static/img/south-mini.png b/chimere/static/chimere/img/south-mini.png Binary files differindex 6c4ac8a..6c4ac8a 100644 --- a/chimere/static/img/south-mini.png +++ b/chimere/static/chimere/img/south-mini.png diff --git a/chimere/static/img/upload.png b/chimere/static/chimere/img/upload.png Binary files differindex 367c2d9..367c2d9 100644 --- a/chimere/static/img/upload.png +++ b/chimere/static/chimere/img/upload.png diff --git a/chimere/static/img/west-mini.png b/chimere/static/chimere/img/west-mini.png Binary files differindex db5f420..db5f420 100644 --- a/chimere/static/img/west-mini.png +++ b/chimere/static/chimere/img/west-mini.png diff --git a/chimere/static/img/zoom-minus-mini.png b/chimere/static/chimere/img/zoom-minus-mini.png Binary files differindex f9b63ab..f9b63ab 100644 --- a/chimere/static/img/zoom-minus-mini.png +++ b/chimere/static/chimere/img/zoom-minus-mini.png diff --git a/chimere/static/img/zoom-plus-mini.png b/chimere/static/chimere/img/zoom-plus-mini.png Binary files differindex eecf2eb..eecf2eb 100644 --- a/chimere/static/img/zoom-plus-mini.png +++ b/chimere/static/chimere/img/zoom-plus-mini.png diff --git a/chimere/static/img/zoom-world-mini.png b/chimere/static/chimere/img/zoom-world-mini.png Binary files differindex 2159dde..2159dde 100644 --- a/chimere/static/img/zoom-world-mini.png +++ b/chimere/static/chimere/img/zoom-world-mini.png diff --git a/chimere/static/img/zoombar.png b/chimere/static/chimere/img/zoombar.png Binary files differindex 959f01a..959f01a 100644 --- a/chimere/static/img/zoombar.png +++ b/chimere/static/chimere/img/zoombar.png diff --git a/chimere/static/OpenLayers.js b/chimere/static/chimere/js/OpenLayers.js index 1cf1d88..1cf1d88 100644 --- a/chimere/static/OpenLayers.js +++ b/chimere/static/chimere/js/OpenLayers.js diff --git a/chimere/static/base.js b/chimere/static/chimere/js/base.js index 3f9d39d..3f9d39d 100644 --- a/chimere/static/base.js +++ b/chimere/static/chimere/js/base.js diff --git a/chimere/static/edit_area.js b/chimere/static/chimere/js/edit_area.js index 7695e6b..7695e6b 100644 --- a/chimere/static/edit_area.js +++ b/chimere/static/chimere/js/edit_area.js diff --git a/chimere/static/edit_map.js b/chimere/static/chimere/js/edit_map.js index 5000b75..5000b75 100644 --- a/chimere/static/edit_map.js +++ b/chimere/static/chimere/js/edit_map.js diff --git a/chimere/static/edit_route_map.js b/chimere/static/chimere/js/edit_route_map.js index 11af258..11af258 100644 --- a/chimere/static/edit_route_map.js +++ b/chimere/static/chimere/js/edit_route_map.js diff --git a/chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.css b/chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.css new file mode 100644 index 0000000..ad770d0 --- /dev/null +++ b/chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.css @@ -0,0 +1,64 @@ +.bsmContainer { + /* container that surrounds entire bsmSelect widget */ +} + +.bsmSelect { + /* the newly created regular 'select' */ + display: inline; +} + +.bsmOptionDisabled { + /* disabled options in new select */ + color: #999; +} + +.bsmHighlight { + /* the highlight span */ + float: right; + padding: 0; + margin: 0 0 0 1em; +} + +.bsmList { + /* html list that contains selected items */ + margin: 0.25em 0 1em 0; + position: relative; + display: block; + padding-left: 0; + list-style: none; +} + +.bsmListItem { + /* li item from the html list above */ + position: relative; + margin-left: 0; + padding-left: 0; + list-style: none; + background: #ddd; + border: 1px solid #bbb; + width: 100%; + margin: 0 0 -1px 0; + line-height: 1em; +} + +.bsmListItem:hover { + background-color: #e5e5e5; +} + +.bsmListItemLabel { + /* this is a span that surrounds the text in the item, except for the remove link */ + padding: 5px; + display: block; +} + +.bsmListSortable .bsmListItemLabel { + cursor: move; +} + +.bsmListItemRemove { + /* the remove link in each list item */ + position: absolute; + right: 0; + top: 0; + padding: 5px; +} diff --git a/chimere/static/jquery/css/jquery.bsmselect.custom.css b/chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.custom.css index 8c48aeb..8c48aeb 100644 --- a/chimere/static/jquery/css/jquery.bsmselect.custom.css +++ b/chimere/static/chimere/js/jquery/bsmSelect/css/jquery.bsmselect.custom.css diff --git a/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.compatibility.js b/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.compatibility.js new file mode 100644 index 0000000..a743a07 --- /dev/null +++ b/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.compatibility.js @@ -0,0 +1,60 @@ +/* + * Better Select Multiple Compatibility Plugin - jQuery Plugin + * + * Copyright (c) 2010 by Victor Berchet - http://www.github.com/vicb + * + * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. + * + * version: v1.0.0 - 2010-09-05 + */ +(function($) { + $.bsmSelect.plugins.compatibility = function() + { + if (!(this instanceof arguments.callee)) { + return new arguments.callee(); + } + } + + $.extend($.bsmSelect.plugins.compatibility.prototype, { + init: function(bsm) { + + var o = bsm.options; + + if (typeof o.animate != 'undefined') + { + if (o.animate === true) { + o.showEffect = $.bsmSelect.effects.verticalListAdd; + o.hideEffect = $.bsmSelect.effects.verticalListRemove; + } else if ($.isFunction(o.animate.add)) { + o.showEffect = o.animate.add; + } else if (typeof(o.animate.add) == 'string' && $.isFunction($.bsmSelect.effects[o.animate.add])) { + o.showEffect = $.bsmSelect.effects[o.animate.add]; + } else { + o.showEffect = $.bsmSelect.effects.show; + } + + if ($.isFunction(o.animate.drop)) { + o.hideEffect = o.animate.drop; + } else if (typeof(o.animate.drop) == 'string' && $.isFunction($.bsmSelect.effects[o.animate.drop])) { + o.hideEffect = $.bsmSelect.effects[o.animate.drop]; + } else { + o.hideEffect = $.bsmSelect.effects.remove; + } + } + + if (typeof o.highlight != 'undefined') + { + if (o.highlight === true) { + o.highlightEffect = $.bsmSelect.effects.highlight; + } else if ($.isFunction(o.highlight)) { + o.highlightEffect = o.highlight; + } else if (typeof(o.highlight) == 'string' && $.isFunction($.bsmSelect.effects[o.highlight])) { + o.highlightEffect = $.bsmSelect.effects[o.highlight]; + } + } + + } + + }); +})(jQuery); + diff --git a/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.js b/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.js new file mode 100644 index 0000000..25527c6 --- /dev/null +++ b/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.js @@ -0,0 +1,381 @@ +/* + * Better Select Multiple - jQuery Plugin + * + * based on Alternate Select Multiple (asmSelect) 1.0.4a beta (http://www.ryancramer.com/projects/asmselect/) + * + * Copyright (c) 2009 by Ryan Cramer - http://www.ryancramer.com + * Copyright (c) 2010 by Victor Berchet - http://www.github.com/vicb + * + * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. + * + * bsmSelect version: v1.4.3 - 2011-05-05 + */ + +(function($) { + + function BsmSelect(target, options) + { + this.$original = $(target); // the original select multiple + this.buildingSelect = false; // is the new select being constructed right now? + this.ieClick = false; // in IE, has a click event occurred? ignore if not + this.ignoreOriginalChangeEvent = false; // originalChangeEvent bypassed when this is true + this.options = options; + this.buildDom(); + } + + BsmSelect.prototype = { + /** + * Generate an UID + */ + generateUid: function(index) { + return (this.uid = this.options.containerClass + index); + }, + + /** + * Build the DOM for bsmSelect + */ + buildDom: function() { + var self = this, o = this.options; + + if (o.addItemTarget === 'original') { + $('option', this.$original).each(function(i, o) { + if ($(o).data('bsm-order') === null) { $(o).data('bsm-order', i); } + }); + } + + for (var index = 0; $('#' + this.generateUid(index)).size(); index++) {} + + this.$select = $('<select>', { + 'class': o.selectClass, + name: o.selectClass + this.uid, + id: o.selectClass + this.uid, + change: $.proxy(this.selectChangeEvent, this), + click: $.proxy(this.selectClickEvent, this) + }); + + this.$list = $.isFunction(o.listType) + ? o.listType(this.$original) + : $('<' + o.listType + '>', { id: o.listClass + this.uid }); + + this.$list.addClass(o.listClass); + + this.$container = $('<div>', { 'class': o.containerClass, id: this.uid }); + + this.buildSelect(); + + this.$original.change($.proxy(this.originalChangeEvent, this)).wrap(this.$container).before(this.$select); + + // if the list isn't already in the document, add it (it might be inserted by a custom callback) + if (!this.$list.parent().length) { this.$original.before(this.$list); } + + if (this.$original.attr('id')) { + $('label[for=' + this.$original.attr('id') + ']').attr('for', this.$select.attr('id')); + } + + // set up remove event (may be a link, or the list item itself) + this.$list.delegate('.' + o.removeClass, 'click', function() { + self.dropListItem($(this).closest('li')); + return false; + }); + + $.each(o.plugins, function() { this.init(self); }); + }, + + /** + * Triggered when an item has been selected + * Check to make sure it's not an IE screwup, and add it to the list + */ + selectChangeEvent: function() { + if ($.browser.msie && $.browser.version < 7 && !this.ieClick) { return; } + var bsmOpt = $('option:selected:eq(0)', this.$select); + if (bsmOpt.data('orig-option')) { + this.addListItem(bsmOpt); + this.triggerOriginalChange(bsmOpt.data('orig-option'), 'add'); + } + this.ieClick = false; + }, + + /** + * IE6 lets you scroll around in a select without it being pulled down + * making sure a click preceded the change() event reduces the chance + * if unintended items being added. there may be a better solution? + */ + selectClickEvent: function() { + this.ieClick = true; + }, + + /** + * Rebuild bsmSelect when the 'change' event is triggered on the original select + */ + originalChangeEvent: function() { + if (this.ignoreOriginalChangeEvent) { + // We don't want to rebuild everything when an item is added / droped + this.ignoreOriginalChangeEvent = false; + } else { + this.buildSelect(); + // opera has an issue where it needs a force redraw, otherwise + // the items won't appear until something else forces a redraw + if ($.browser.opera) { this.$list.hide().show(); } + } + }, + + /** + * Build the DOM for the new select + */ + buildSelect: function() { + var self = this; + + this.buildingSelect = true; + + // add a first option to be the home option / default selectLabel + this.$select.empty().prepend($('<option value=""></option>').text(this.$original.attr('title') || this.options.title)); + this.$list.empty(); + + this.$original.children().each(function() { + if ($(this).is('option')) { + self.addSelectOption(self.$select, $(this)); + } else if ($(this).is('optgroup')) { + self.addSelectOptionGroup(self.$select, $(this)); + } + }); + + if (!this.options.debugMode) { this.$original.hide(); } + this.selectFirstItem(); + this.buildingSelect = false; + }, + + /** + * Append an option to the new select + * + * @param {jQuery} $parent Where to append the option + * @param {jQuery} $origOpt Option from the original select + */ + addSelectOption: function ($parent, $origOpt) { + var $bsmOpt = $('<option>', { + text: $origOpt.text(), + val: $origOpt.val() }).appendTo($parent).data('orig-option', $origOpt), + isSelected = $origOpt.is(':selected'), + isDisabled = $origOpt.is(':disabled'); + $origOpt.data('bsm-option', $bsmOpt); + if (isSelected && !isDisabled) { + this.addListItem($bsmOpt); + this.disableSelectOption($bsmOpt); + } else if (!isSelected && isDisabled) { + this.disableSelectOption($bsmOpt); + } + }, + + /** + * Append an option group to the new select + * + * @param {jQuery} $parent Where to append the group + * @param {jQuery} $group Model group from the original select + */ + addSelectOptionGroup: function($parent, $group) + { + var self = this, + $G = $('<optgroup>', { label: $group.attr('label')} ).appendTo($parent); + if ($group.is(':disabled')) { $G.attr('disabled', 'disabled'); } + $('option', $group).each(function() { self.addSelectOption($G, $(this)); }); + }, + + /** + * Select the first item of the new select + */ + selectFirstItem: function() { + $('option:eq(0)', this.$select).attr('selected', 'selected'); + }, + + /** + * Make an option disabled, indicating that it's already been selected + * because safari is the only browser that makes disabled items look 'disabled' + * we apply a class that reproduces the disabled look in other browsers + * + * @param {jQuery} $bsmOpt Option from the new select + */ + disableSelectOption: function($bsmOpt) { + $bsmOpt.addClass(this.options.optionDisabledClass) + .removeAttr('selected') + .attr('disabled', 'disabled') + .toggle(!this.options.hideWhenAdded); + if ($.browser.msie && $.browser.version < 8) { this.$select.hide().show(); } // this forces IE to update display + }, + + /** + * Enable a select option + * + * @param {jQuery} $bsmOpt Option from the new select + */ + enableSelectOption: function($bsmOpt) { + $bsmOpt.removeClass(this.options.optionDisabledClass) + .removeAttr('disabled') + .toggle(!this.options.hideWhenAdded); + if ($.browser.msie && $.browser.version < 8) { this.$select.hide().show(); } // this forces IE to update display + }, + + /** + * Append an item corresponding to the option to the list + * + * @param {jQuery} $bsmOpt Option from the new select + */ + addListItem: function($bsmOpt) { + var $item, + $origOpt = $bsmOpt.data('orig-option'), + o = this.options; + + if (!$origOpt) { return; } // this is the first item, selectLabel + + if (!this.buildingSelect) { + if ($origOpt.is(':selected')) { return; } // already have it + $origOpt.attr('selected', 'selected'); + } + + $item = $('<li>', { 'class': o.listItemClass }) + .append($('<span>', { 'class': o.listItemLabelClass, html: o.extractLabel($bsmOpt, o)})) + .append($('<a>', { href: '#', 'class': o.removeClass, html: o.removeLabel })) + .data('bsm-option', $bsmOpt); + + this.disableSelectOption($bsmOpt.data('item', $item)); + + switch (o.addItemTarget) { + case 'bottom': + this.$list.append($item.hide()); + break; + case 'original': + var order = $origOpt.data('bsm-order'), inserted = false; + $('.' + o.listItemClass, this.$list).each(function() { + if (order < $(this).data('bsm-option').data('orig-option').data('bsm-order')) { + $item.hide().insertBefore(this); + inserted = true; + return false; + } + }); + if (!inserted) { this.$list.append($item.hide()); } + break; + default: + this.$list.prepend($item.hide()); + } + + if (this.buildingSelect) { + $.bsmSelect.effects.show($item); + } else { + o.showEffect($item); + o.highlightEffect(this.$select, $item, o.highlightAddedLabel, this.options); + this.selectFirstItem(); + } + }, + + /** + * Remove an item from the list of selection + * + * @param {jQuey} $item A list item + */ + dropListItem: function($item) { + var $bsmOpt = $item.data('bsm-option'), o = this.options; + $bsmOpt.removeData('item').data('orig-option').removeAttr('selected'); + (this.buildingSelect ? $.bsmSelect.effects.remove : o.hideEffect)($item); + this.enableSelectOption($bsmOpt); + o.highlightEffect(this.$select, $item, o.highlightRemovedLabel, o); + this.triggerOriginalChange($bsmOpt.data('orig-option'), 'drop'); + }, + + /** + * Trigger a change event on the original select multiple + * so that other scripts can pick them up + * + * @param {jQuery} $origOpt The option from the original select + * @param {String} type Event type + */ + triggerOriginalChange: function($origOpt, type) { + this.ignoreOriginalChangeEvent = true; + this.$original.trigger('change', [{ + option: $origOpt, + value: $origOpt.val(), + item: $origOpt.data('bsm-option').data('item'), + type: type + }]); + } + }; + + $.fn.bsmSelect = function(customOptions) { + var options = $.extend({}, $.bsmSelect.conf, customOptions); + return this.each(function() { + var bsm = $(this).data("bsmSelect"); + if (!bsm) { + bsm = new BsmSelect($(this), options); + $(this).data("bsmSelect", bsm); + } + }); + }; + + $.bsmSelect = {}; + $.extend($.bsmSelect, { + effects: { + show: function($el) { $el.show(); }, + + remove: function($el) { $el.remove(); }, + + highlight: function ($select, $item, label, conf) { + var $highlight, + id = $select.attr('id') + conf.highlightClass; + $('#' + id).remove(); + $highlight = $('<span>', { + 'class': conf.highlightClass, + id: id, + html: label + $item.children('.' + conf.listItemLabelClass).first().text() + }).hide(); + $select.after($highlight.fadeIn('fast').delay(50).fadeOut('slow', function() { $(this).remove(); })); + }, + + verticalListAdd: function ($el) { + $el.animate({ opacity: 'show', height: 'show' }, 100, function() { + $(this).animate({ height: '+=2px' }, 100, function() { + $(this).animate({ height: '-=2px' }, 100); + }); + }); + }, + + verticalListRemove: function($el) { + $el.animate({ opacity: 'hide', height: 'hide' }, 100, function() { + $(this).prev('li').animate({ height: '-=2px' }, 100, function() { + $(this).animate({ height: '+=2px' }, 100); + }); + $(this).remove(); + }); + } + }, + plugins: { + } + }); + + // Default configuration + $.bsmSelect.conf = { + listType: 'ol', // Ordered list 'ol', or unordered list 'ul' + + showEffect: $.bsmSelect.effects.show, + hideEffect: $.bsmSelect.effects.remove, + highlightEffect: $.noop, + + addItemTarget: 'bottom', // Where to place new selected items in list: top or bottom + hideWhenAdded: false, // Hide the option when added to the list? works only in FF + debugMode: false, // Debug mode keeps original select visible + + title: 'Select...', // Text used for the default select label + removeLabel: 'remove', // HTML used for the 'remove' link + highlightAddedLabel: 'Added: ', // Text that precedes highlight of added item + highlightRemovedLabel: 'Removed: ', // Text that precedes highlight of removed item + extractLabel: function($o) { return $o.html(); }, + + plugins: [], // An array of plugin objects to enable + + containerClass: 'bsmContainer', // Class for container that wraps this widget + selectClass: 'bsmSelect', // Class for the newly created <select> + optionDisabledClass: 'bsmOptionDisabled', // Class for items that are already selected / disabled + listClass: 'bsmList', // Class for the list ($list) + listItemClass: 'bsmListItem', // Class for the <li> list items + listItemLabelClass: 'bsmListItemLabel', // Class for the label text that appears in list items + removeClass: 'bsmListItemRemove', // Class given to the 'remove' link + highlightClass: 'bsmHighlight' // Class given to the highlight <span> + }; + +})(jQuery); diff --git a/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.sortable.js b/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.sortable.js new file mode 100644 index 0000000..3e4b9f8 --- /dev/null +++ b/chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.sortable.js @@ -0,0 +1,49 @@ +/* + * Better Select Multiple Sortable Plugin + * + * Copyright (c) 2010 by Victor Berchet - http://www.github.com/vicb + * + * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. + * + * version: v1.1.1 - 2010-11-17 + */ +(function($) { + $.bsmSelect.plugins.sortable = function(sortConfig, options) + { + if (!(this instanceof arguments.callee)) { + return new arguments.callee(sortConfig, options); + } + this.sortConfig = sortConfig; + this.options = $.extend({}, this.defaultOpt, options || {}); + } + + $.extend($.bsmSelect.plugins.sortable.prototype, { + defaultOpt: { + listSortableClass: 'bsmListSortable' + }, + + init: function(bsm) { + var o = $.extend({}, this.options, bsm.options), + config = $.extend({}, this.sortConfig, { items: '.' + o.listItemClass }), + self = this; + bsm.$list.addClass(o.listSortableClass).sortable(config); + bsm.$original.bind('change', function(e, info) { self.onChange.call(self, bsm, e, info); } ); + bsm.$list.bind('sortupdate', function(e, ui) { self.onSort.call(self, bsm, e, ui); } ); + }, + + onChange: function(bsm, e, info) { + if (info && info.type == 'add' && !bsm.buildingSelect) { + info.option.detach()[bsm.options.addItemTarget == 'top' ? 'prependTo' : 'appendTo'](bsm.$original); + bsm.$list.sortable('refresh'); + } + }, + + onSort: function(bsm, e, ui) { + $('.' + bsm.options.listItemClass, bsm.$list).each(function() { + $(this).data('bsm-option').data('orig-option').detach().appendTo(bsm.$original); + }); + bsm.triggerOriginalChange($(ui.item).data('bsm-option').data('orig-option'), 'sort'); + } + }); +})(jQuery); + diff --git a/chimere/static/jquery/jquery-1.4.4.min.js b/chimere/static/chimere/js/jquery/jquery-1.4.4.min.js index 8f3ca2e..8f3ca2e 100644 --- a/chimere/static/jquery/jquery-1.4.4.min.js +++ b/chimere/static/chimere/js/jquery/jquery-1.4.4.min.js diff --git a/chimere/static/main_map.js b/chimere/static/chimere/js/main_map.js index 42c9b28..42c9b28 100644 --- a/chimere/static/main_map.js +++ b/chimere/static/chimere/js/main_map.js diff --git a/chimere/static/textareas.js b/chimere/static/chimere/js/textareas.js index fec83b8..fec83b8 100644 --- a/chimere/static/textareas.js +++ b/chimere/static/chimere/js/textareas.js diff --git a/chimere/static/chimere/js/utils.js b/chimere/static/chimere/js/utils.js new file mode 100644 index 0000000..46afd49 --- /dev/null +++ b/chimere/static/chimere/js/utils.js @@ -0,0 +1,238 @@ +// Core javascript helper functions + +// basic browser identification & version +var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion); +var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); + +// Cross-browser event handlers. +function addEvent(obj, evType, fn) { + if (obj.addEventListener) { + obj.addEventListener(evType, fn, false); + return true; + } else if (obj.attachEvent) { + var r = obj.attachEvent("on" + evType, fn); + return r; + } else { + return false; + } +} + +function removeEvent(obj, evType, fn) { + if (obj.removeEventListener) { + obj.removeEventListener(evType, fn, false); + return true; + } else if (obj.detachEvent) { + obj.detachEvent("on" + evType, fn); + return true; + } else { + return false; + } +} + +// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]); +function quickElement() { + var obj = document.createElement(arguments[0]); + if (arguments[2] != '' && arguments[2] != null) { + var textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + var len = arguments.length; + for (var i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i+1]); + } + arguments[1].appendChild(obj); + return obj; +} + +// ---------------------------------------------------------------------------- +// Cross-browser xmlhttp object +// from http://jibbering.com/2002/4/httprequest.html +// ---------------------------------------------------------------------------- +var xmlhttp; +/*@cc_on @*/ +/*@if (@_jscript_version >= 5) + try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (E) { + xmlhttp = false; + } + } +@else + xmlhttp = false; +@end @*/ +if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { + xmlhttp = new XMLHttpRequest(); +} + +// ---------------------------------------------------------------------------- +// Find-position functions by PPK +// See http://www.quirksmode.org/js/findpos.html +// ---------------------------------------------------------------------------- +function findPosX(obj) { + var curleft = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement){ + curleft += obj.offsetLeft - obj.scrollLeft; + } + } else if (obj.x) { + curleft += obj.x; + } + return curleft; +} + +function findPosY(obj) { + var curtop = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement){ + curtop += obj.offsetTop - obj.scrollTop; + } + } else if (obj.y) { + curtop += obj.y; + } + return curtop; +} + +//----------------------------------------------------------------------------- +// Date object extensions +// ---------------------------------------------------------------------------- +Date.prototype.getCorrectYear = function() { + // Date.getYear() is unreliable -- + // see http://www.quirksmode.org/js/introdate.html#year + var y = this.getYear() % 100; + return (y < 38) ? y + 2000 : y + 1900; +} + +Date.prototype.getTwelveHours = function() { + hours = this.getHours(); + if (hours == 0) { + return 12; + } + else { + return hours <= 12 ? hours : hours-12 + } +} + +Date.prototype.getTwoDigitMonth = function() { + return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1); +} + +Date.prototype.getTwoDigitDate = function() { + return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); +} + +Date.prototype.getTwoDigitTwelveHour = function() { + return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); +} + +Date.prototype.getTwoDigitHour = function() { + return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); +} + +Date.prototype.getTwoDigitMinute = function() { + return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); +} + +Date.prototype.getTwoDigitSecond = function() { + return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); +} + +Date.prototype.getISODate = function() { + return this.getCorrectYear() + '-' + this.getTwoDigitMonth() + '-' + this.getTwoDigitDate(); +} + +Date.prototype.getHourMinute = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); +} + +Date.prototype.getHourMinuteSecond = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); +} + +Date.prototype.strftime = function(format) { + var fields = { + c: this.toString(), + d: this.getTwoDigitDate(), + H: this.getTwoDigitHour(), + I: this.getTwoDigitTwelveHour(), + m: this.getTwoDigitMonth(), + M: this.getTwoDigitMinute(), + p: (this.getHours() >= 12) ? 'PM' : 'AM', + S: this.getTwoDigitSecond(), + w: '0' + this.getDay(), + x: this.toLocaleDateString(), + X: this.toLocaleTimeString(), + y: ('' + this.getFullYear()).substr(2, 4), + Y: '' + this.getFullYear(), + '%' : '%' + }; + var result = '', i = 0; + while (i < format.length) { + if (format.charAt(i) === '%') { + result = result + fields[format.charAt(i + 1)]; + ++i; + } + else { + result = result + format.charAt(i); + } + ++i; + } + return result; +} + +// ---------------------------------------------------------------------------- +// String object extensions +// ---------------------------------------------------------------------------- +String.prototype.pad_left = function(pad_length, pad_string) { + var new_string = this; + for (var i = 0; new_string.length < pad_length; i++) { + new_string = pad_string + new_string; + } + return new_string; +} + +// ---------------------------------------------------------------------------- +// Get the computed style for and element +// ---------------------------------------------------------------------------- +function getStyle(oElm, strCssRule){ + var strValue = ""; + if(document.defaultView && document.defaultView.getComputedStyle){ + strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); + } + else if(oElm.currentStyle){ + strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ + return p1.toUpperCase(); + }); + strValue = oElm.currentStyle[strCssRule]; + } + return strValue; +} + +/* +* Check if an array as some index +*/ +function has_index(index, arr) { + var v = arr[index]; + if (typeof v === "undefined") + return false; + else + return v; } + +/* +* Utils to initialize a var from another one, with a default value +*/ +function get_or_set(v, d){ + return typeof v === "undefined" ? d : v;} + diff --git a/chimere/static/jquery/bsmSelect b/chimere/static/jquery/bsmSelect deleted file mode 160000 -Subproject ad1bb45de4213b2e2c44394691fe3624b19d49f diff --git a/chimere/templates/base.html b/chimere/templates/base.html index 67322f6..f19601a 100644 --- a/chimere/templates/base.html +++ b/chimere/templates/base.html @@ -4,41 +4,29 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>{% block title %}Chimère{% endblock %}</title> - <script type="text/javascript"><!-- - var media_path = '{{STATIC_URL}}'; - var extra_url = "{{extra_url}}"; - // --></script> - <script type="text/javascript" src="{{JQUERY_URL}}"></script> - {% block extra_head %}{{extra_head|safe}}{% endblock %} - <link rel="stylesheet" href="{{STATIC_URL}}styles.css" /> - {%if css_area%}<link rel="stylesheet" href="{{STATIC_URL}}{{css_area}}" />{%endif%} - {% block head %}{% endblock %} + {% block extra_head %} + {% endblock %} </head> - -{% block bodyhead %}<body>{% endblock %} - {% block top %}{% endblock %} - {% block actions %}<div id="topbar"> - <ul id='action'> -{% for action, subactions in actions %} - <li{% ifequal action.id action_selected.0 %} class='selected'{% endifequal %}> - <a href='{{extra_url}}{{ action.path }}' onclick='saveExtent();'>{{ action.label }}</a> - {% ifequal action.id action_selected.0 %}{% if subactions %}<ul>{% for subaction in subactions %} - <li{% ifequal subaction.id action_selected.1 %} class='selected'{% endifequal %}> - <a href='{{extra_url}}{{ subaction.path }}' onclick='saveExtent();'>{{ subaction.label }}</a> - </li> - {% endfor %}</ul>{% endif %}{% endifequal %} - </li> -{% endfor %} - </ul> - </div>{% endblock %} - {% block sidebar %}{% endblock %} - {% block message_map %}{% endblock %} - {% block message_edit %}{% endblock %} - {% block content %}{% endblock %} - {% block bottom %}{% endblock %} - <div id='footer'>{% block footer %} -{% trans "This site uses Chimère"%} - © 2008-2011 <a href='http://blog.peacefrogs.net/nim/chimere/'>Chimère project</a> - {% endblock %}</div> +<body {% block body_id %}{% endblock %} {% block body_class %}{% endblock %}> + {% block extrabody %} + {% endblock %} + {% block body %} + <div id="header"> + {% block header %} + {% endblock %} + </div> + <div id="sidebar"> + {% block sidebar %} + {% endblock %} + </div> + <div id="content"> + {% block content %} + {% endblock %} + </div> + <div id="footer"> + {% block footer %} + {% endblock %} + </div> + {% endblock %} </body> </html> - diff --git a/chimere/templates/categories.html b/chimere/templates/categories.html deleted file mode 100644 index db3d827..0000000 --- a/chimere/templates/categories.html +++ /dev/null @@ -1,22 +0,0 @@ -{% load i18n %} -<ul id='ul_categories'> -{% for category, lst_sub_categories in sub_categories %} - <li> - <img class='control_image' id='maincategory_img_{{category.id}}' alt='control' src='{{STATIC_URL}}icons/{% if category.selected %}minus.png{%else%}plus.png{%endif%}' onclick='toggleCategory(this);'/> -<input type="checkbox" id='checkall_{{category.id}}' onclick="checkAll(this);loadGeoObjects();"> -{% trans category.name %} -<img class='zoom_image' alt='{% trans "Zoom to" %} {{category.name}}' src='{{STATIC_URL}}icons/zoom.png' onclick='zoomToCategory({{category.id}})'/> - <ul class='subcategories' id='maincategory_{{category.id}}'{% if not category.selected %} style='display:None'{% endif %}> - {% for sub_category in lst_sub_categories %} - <li id='li_sub_{{sub_category.id}}'> - <input type='checkbox' onclick='loadGeoObjects()' name='category_{{sub_category.id}}' id='category_{{sub_category.id}}'{% if sub_category.selected %} checked='checked'{% endif %}/> - <label for='category_{{sub_category.id}}'> - <img alt='{{sub_category.name}}' src='{{STATIC_URL}}{{sub_category.icon.image}}'/> - {% trans sub_category.name %}</label> - <img class='zoom_image' alt='{% trans "Zoom to" %} {{sub_category.name}}' src='{{STATIC_URL}}icons/zoom.png' onclick='zoomToSubCategory({{sub_category.id}})'/> - </li>{% endfor %} - {%if category.description%}<li><a href='#' onclick='displayCategoryDetail({{category.id}});'>{%trans "Tell me more..."%}</a></li>{%endif%} - </ul> - </li>{% endfor %} - <li id='display_submited'><input type='checkbox' onclick='loadGeoObjects()' name='display_submited' id='display_submited_check'/> {% trans "Display markers and routes waiting for validation"%}</li> -</ul> diff --git a/chimere/templates/chimere/base.html b/chimere/templates/chimere/base.html new file mode 100644 index 0000000..cc1c767 --- /dev/null +++ b/chimere/templates/chimere/base.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} +{% load chimere_tags %} +{% block extra_head %} + {% head %} +{% endblock %} +{% block header %} + {% block actions %} + {% include "chimere/blocks/actions.html" %} + {% endblock %} +{% endblock %} +{% block content %} + {% block top %}{% endblock %} + {% block message_map %}{% endblock %} + {% block message_edit %}{% endblock %} + {% block bottom %}{% endblock %} +{% endblock %} +{% block footer %} + {% include "chimere/blocks/footer.html" %} +{% endblock %} + diff --git a/chimere/templates/base_user.html b/chimere/templates/chimere/base_user.html index da0ecf3..d60cc15 100644 --- a/chimere/templates/base_user.html +++ b/chimere/templates/chimere/base_user.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "chimere/base.html" %} {% load i18n %} {# to customize your base Chimère template add codes between the following blocks #} {# title of the map #}{% block title %}{% endblock %} diff --git a/chimere/templates/chimere/blocks/actions.html b/chimere/templates/chimere/blocks/actions.html new file mode 100644 index 0000000..a98b2d4 --- /dev/null +++ b/chimere/templates/chimere/blocks/actions.html @@ -0,0 +1,20 @@ +<div id="topbar"> + <ul id='action'> + {% for action, subactions in actions %} + <li{% ifequal action.id action_selected.0 %} class='selected'{% endifequal %}> + <a href='{{extra_url}}{{ action.path }}' onclick='saveExtent();'>{{ action.label }}</a> + {% ifequal action.id action_selected.0 %} + {% if subactions %} + <ul> + {% for subaction in subactions %} + <li{% ifequal subaction.id action_selected.1 %} class='selected'{% endifequal %}> + <a href='{{extra_url}}{{ subaction.path }}' onclick='saveExtent();'>{{ subaction.label }}</a> + </li> + {% endfor %} + </ul> + {% endif %} + {% endifequal %} + </li> + {% endfor %} + </ul> +</div> diff --git a/chimere/templates/chimere/blocks/areas.html b/chimere/templates/chimere/blocks/areas.html new file mode 100644 index 0000000..837bf45 --- /dev/null +++ b/chimere/templates/chimere/blocks/areas.html @@ -0,0 +1,11 @@ +{% load i18n unlocalize_point %} +{% if areas %} + <div id='areas'> + <h2>{% trans "Shortcuts"%}</h2> + <ul> + {% for area in areas %} + <li><img class="zoom_image" alt="{% trans 'Zoom to' %} {{area.name}}" src="{{ STATIC_URL }}chimere/img/zoom.png" onclick="$('#maps').chimere('zoom', {'area': [{{area.upper_left_corner.x|unlocalize_point}}, {{area.upper_left_corner.y|unlocalize_point}}, {{area.lower_right_corner.x|unlocalize_point }}, {{area.lower_right_corner.y|unlocalize_point}}]});" /> {{area.name}}</li> + {% endfor %} + </ul> + </div> +{% endif %} diff --git a/chimere/templates/chimere/blocks/categories.html b/chimere/templates/chimere/blocks/categories.html new file mode 100644 index 0000000..5ff8f36 --- /dev/null +++ b/chimere/templates/chimere/blocks/categories.html @@ -0,0 +1,29 @@ +{% load i18n %} +<ul id='ul_categories'> + {% for category, lst_sub_categories in sub_categories %} + <li> + <img class="control_image toggle_category" id="maincategory_img_{{category.id}}" alt="control" src="{{ STATIC_URL }}chimere/img/{% if category.selected %}minus.png{% else %}plus.png{% endif %}" /> + <input type="checkbox" id='checkall_{{category.id}}'> + {% trans category.name %} + <img id="zoom_to_category_{{category.id}}" class="zoom_image zoom_to_category" alt='{% trans "Zoom to" %} {{category.name}}' src='{{ STATIC_URL }}chimere/img/zoom.png' /> + <ul class='subcategories' id='maincategory_{{category.id}}'{% if not category.selected %} style='display:None'{% endif %}> + {% for sub_category in lst_sub_categories %} + <li id='li_sub_{{sub_category.id}}'> + <input type='checkbox' name='category_{{sub_category.id}}' id='category_{{sub_category.id}}'{% if sub_category.selected %} checked='checked'{% endif %}/> + <label for='category_{{sub_category.id}}'> + <img alt='{{ sub_category.name }}' src='{{ MEDIA_URL }}{{sub_category.icon.image}}'/> + {% trans sub_category.name %} + </label> + <img id="zoom_to_subcategory_{{sub_category.id}}" class="zoom_image zoom_to_subcategory" alt='{% trans "Zoom to" %} {{sub_category.name}}' src='{{ STATIC_URL }}chimere/img/zoom.png' /> + </li> + {% endfor %} + {% if category.description %} + <li><a href="#" onclick="$('#map').chimere('category_detail', {{category.id}});">{% trans "Tell me more..." %}</a></li> + {% endif %} + </ul> + </li> + {% endfor %} + <li id='display_submited'> + <input type='checkbox' onclick='loadGeoObjects()' name='display_submited' id='display_submited_check'/> {% trans "Display markers and routes waiting for validation"%} + </li> +</ul> diff --git a/chimere/templates/chimere/blocks/footer.html b/chimere/templates/chimere/blocks/footer.html new file mode 100644 index 0000000..1665640 --- /dev/null +++ b/chimere/templates/chimere/blocks/footer.html @@ -0,0 +1,3 @@ +{% load i18n %} +{% trans "This site uses Chimère"%} - © 2008-2010 <a href='http://blog.peacefrogs.net/nim/chimere/'>Chimère project</a> - {% trans "Map"%} © <a href='http://openstreetmap.org/'>OpenStreetMap</a> + diff --git a/chimere/templates/chimere/blocks/head.html b/chimere/templates/chimere/blocks/head.html new file mode 100644 index 0000000..c982717 --- /dev/null +++ b/chimere/templates/chimere/blocks/head.html @@ -0,0 +1,44 @@ +<script type="text/javascript" src="{{ STATIC_URL }}chimere/js/jquery/jquery-1.6.1.min.js"></script> +<script type="text/javascript"> + /* Global variables */ + /* lower cases are for retrocompatibility */ + var DYNAMIC_CATEGORIES = {{ DYNAMIC_CATEGORIES|lower }}; + var STATIC_URL = static_url = "{{ STATIC_URL }}"; + var MEDIA_URL = media_path = "{{ MEDIA_URL }}"; + var extra_url = "{{ EXTRA_URL }}"; + var ICON_WIDTH = {{ ICON_WIDTH }}; + var ICON_HEIGHT = {{ ICON_HEIGHT }}; + var ICON_OFFSET_X = {{ ICON_OFFSET_X }}; + var ICON_OFFSET_Y = {{ ICON_OFFSET_Y }}; +</script> +{% if css_area %} + <link rel="stylesheet" href="{{ STATIC_URL }}chimere/css/{{ css_area }}.css" /> +{% endif %} +{% for css_url in URL_OSM_CSS %} + <link rel="stylesheet" href="{{ css_url }}" /> +{% endfor %} +<link rel="stylesheet" href="{{ STATIC_URL }}chimere/css/styles.css" /> +{% for js_url in URL_OSM_JS %} + <script src="{{ js_url }}"></script> +{% endfor %} +<script src="{{ STATIC_URL }}chimere/js/utils.js"></script> +<script src="{{ STATIC_URL }}chimere/js/base.js"></script> +<script src="{{ STATIC_URL }}chimere/js/jquery.chimere.js"></script> +<script type="text/javascript"> + var DEFAULT_ZOOM = {{ DEFAULT_ZOOM }}; + var EPSG_DISPLAY_PROJECTION = epsg_display_projection = new OpenLayers.Projection('EPSG:{{ EPSG_DISPLAY_PROJECTION }}'); + OpenLayers.ImgPath = '{{ STATIC_URL }}chimere/img/'; + var EPSG_PROJECTION = epsg_projection = new OpenLayers.Projection('EPSG:{{ EPSG_PROJECTION }}'); + var CENTER_LONLAT = centerLonLat = new OpenLayers.LonLat{{ DEFAULT_CENTER }}.transform(epsg_display_projection, epsg_projection); + var map_layer = {{ MAP_LAYER|safe }}; + var restricted_extent; + {% if area_name %} + var area_name = '{{ area_name }}'; + {% endif %} + {% if RESTRICTED_EXTENT %} + restricted_extent = new OpenLayers.Bounds({{ RESTRICTED_EXTENT|join:"," }}); + {% endif %} +</script> + + + diff --git a/chimere/templates/chimere/blocks/map_params.html b/chimere/templates/chimere/blocks/map_params.html new file mode 100644 index 0000000..81f0f0b --- /dev/null +++ b/chimere/templates/chimere/blocks/map_params.html @@ -0,0 +1,17 @@ +{% load i18n %} +<script type="text/javascript"> + var chimere_init_options = {}; + chimere_init_options["map_layers"] = [new OpenLayers.Layer.OSM.Mapnik('Mapnik')]; + chimere_init_options['permalink_label'] = '{%trans "Permalink"%}'; + {% if dynamic_categories %}chimere_init_options['dynamic_categories'] = 1;{% endif %} + {% if default_area %} + chimere_init_options["default_area"] = new Array({{default_area.upper_left_corner.x}}, {{default_area.upper_left_corner.y}}, {{default_area.lower_right_corner.x}}, {{default_area.lower_right_corner.y}}); + {% endif %} + {% if p_zoom %}chimere_init_options["zoom"] = {{ p_zoom }};{% endif %} + {% if p_lat %}chimere_init_options["lat"] = {{ p_lat }};{% endif %} + {% if p_lon %}chimere_init_options["lon"] = {{ p_lon }};{% endif %} + {% if p_display_submited %}chimere_init_options["display_submited"] = {{ p_display_submited }};{% endif %} + chimere_init_options["checked_categories"] = {% if p_checked_categories %}[{{p_checked_categories}}]{% else %} {{ CHIMERE_DEFAULT_CATEGORIES }}{% endif %}; + var p_current_feature{% if p_current_feature %} = {{ p_current_feature }}{% endif %}; +</script> + diff --git a/chimere/templates/chimere/blocks/welcome.html b/chimere/templates/chimere/blocks/welcome.html new file mode 100644 index 0000000..f8547f1 --- /dev/null +++ b/chimere/templates/chimere/blocks/welcome.html @@ -0,0 +1,31 @@ +{% load i18n %} +{% load sanitize %} +<div id='welcome_button'><a href='javascript:show("welcome");'> + {% trans "Welcome message"%}</a></div> +<div id='welcome' {% if not display %}style='display:none'{%endif%}> + <h2>{% trans "News"%}</h2> + <div id='detail_content'> + {% include "chimere/blocks/welcome_message.html" %} + <div class='news'> + {% if news_lst %} + {% for news in news_lst %} + <div class='info'> + {% if news.title %} + <h3>{{news.title}} – {{ news.date }}</h3> + <p>{{news.content|safe}}</p> + {% else %} + <h3>{{news.name}} – {{ news.start_date }}{% if news.end_date %} - {{ news.end_date }}{% endif %}</h3> + {% for property in news.getProperties %} + <p id='{{news.propertymodel.getNamedId}}'>{{ property.value|sanitize:"p b i br hr strong em span:style a:href:target ul li ol h1 h2 h3 h4"|safe }}</p> + {% endfor %} + <p class='marker_link'><a href='{{ news.get_absolute_url }}'>{% trans "See it on the map"%}</a></p> + {% endif %} + </div> + {%endfor%} + {% endif %} + <div class='info'> + </div> + </div> + </div> + <div class='detail_footer'><a href='javascript:hide("welcome");'>{% trans "Close" %}</a></div> +</div> diff --git a/chimere/templates/chimere/blocks/welcome_message.html b/chimere/templates/chimere/blocks/welcome_message.html new file mode 100644 index 0000000..e4fd734 --- /dev/null +++ b/chimere/templates/chimere/blocks/welcome_message.html @@ -0,0 +1 @@ +{# We leave it blank, if you wanna a message, override this template in you project #} diff --git a/chimere/templates/category_detail.html b/chimere/templates/chimere/category_detail.html index 0211989..0211989 100644 --- a/chimere/templates/category_detail.html +++ b/chimere/templates/chimere/category_detail.html diff --git a/chimere/templates/chimere/contactus.html b/chimere/templates/chimere/contactus.html new file mode 100644 index 0000000..8cebe8f --- /dev/null +++ b/chimere/templates/chimere/contactus.html @@ -0,0 +1,19 @@ +{% extends "chimere/base.html" %} +{% load i18n %} +{% block message_map %}{% endblock %} +{% block message_edit%}{% endblock %} +{% block content %} + {{ block.super }} + {% if message %} + <div class='warning'><p>{{message}}</p></div> + {% else %} + <fieldset class='edit'> + <p>{% trans "If you have some requests or remarks about this site you can leave them here." %}</p> + <form action="." method="post"> + {{contact_form.as_p}} + <input type="submit" value="{% trans "Submit" %}" /> + </form> + </fieldset> + {% endif %} +{% endblock %} + diff --git a/chimere/templates/chimere/detail.html b/chimere/templates/chimere/detail.html new file mode 100644 index 0000000..d4c9927 --- /dev/null +++ b/chimere/templates/chimere/detail.html @@ -0,0 +1,23 @@ +{% load i18n %} +{% load sanitize %} +<h2>{{ marker.name }}</h2> +<div id='detail_content'> + {% if marker.picture %}<img src='{{STATIC_URL}}{{marker.picture}}' alt='{{marker.name}}'/>{%endif%} +<div> + {% if dated %} + <p id='detail_start_date'><label>{% trans "Date:" %}</label> <span>{{marker.start_date|date:"D d M Y"}} + {% if marker.end_date %} - {{marker.end_date|date:"D d M Y"}}</p>{% endif %}</span> + {% endif %} + {% for property in marker.getProperties %} + <p id='{{property.propertymodel.getNamedId}}'>{{ property.value|sanitize:"p b i br hr strong em span:style a:href:target ul li ol h1 h2 h3 h4"|safe}}</p> + {% endfor %} + </div>{% if share_networks %} + {% if simple %}{% trans "Share on"%}{% for share_network in share_networks %} + <a href='{{share_network.1}}'>{{share_network.0}}</a> + {% endfor %}{%else%} + <ul id='share'> + <li>{% trans "Share"%}</li>{% for share_network in share_networks %} + <li><a href='{{share_network.1}}'><img src="{{share_network.2}}" alt="{{share_network.0}}"/></a></li> + {% endfor %}</ul>{% endif %} +{% endif %} +</div> diff --git a/chimere/templates/chimere/edit.html b/chimere/templates/chimere/edit.html new file mode 100644 index 0000000..aa2ca08 --- /dev/null +++ b/chimere/templates/chimere/edit.html @@ -0,0 +1,72 @@ +{% extends "chimere/base.html" %} +{% load i18n %} +{% load adminmedia %} +{% block extra_head %} + {% if dated %} + <!--script type="text/javascript" src="{{extra_url}}media/js/core.js"></script--> + <script type="text/javascript" src="{{ STATIC_URL }}chimere/js/utils.js"></script> + <script type="text/javascript"> + window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}"; + </script> + {% endif %} + {{ form.media }} + {{ block.super }} +{% endblock %} + +{% block content %} + {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} + <fieldset class='edit'> + <legend>{% trans "Add a new site" %}</legend> + <p>* {% trans "indicates a mandatory field" %}</p> + <form enctype="multipart/form-data" method='post' action='{{extra_url}}edit/'> + {% csrf_token %} + <div class="fieldWrapper"> + <label for="id_name">{% trans "Site name"%} *</label> + {{ form.name.errors }} + {{ form.name }} + </div> + <div class="fieldWrapper"> + <label for="id_subcategory">{% trans "Categories" %} *</label> + {{ form.categories.errors }} + {{ form.categories }} + </div> + <div class="fieldWrapper"> + <label for="id_point">{% trans "Point"%} *</label> + {%if form.point.errors %}<ul class="errorlist"><li>{% trans "Select a location for this new site" %}</li></ul>{%endif%} + {{point_widget}} + </div> + <div class="fieldWrapper"> + <label for="id_picture">{% trans "Image" %}</label> + {{ form.picture.errors }} + {{ form.picture }} + </div> + {% if dated %} + <div class="fieldWrapper"> + <label for="id_start_date">{% trans "Start date" %}</label> + {{ form.start_date.errors }} + {{ form.start_date }} + <p class="help">{{ form.start_date.help_text }}</p> + </div> + <div class="fieldWrapper"> + <label for="id_end_date">{% trans "End date" %}</label> + {{ form.end_date.errors }} + {{ form.end_date }} + <p class="help">{{ form.end_date.help_text }}</p> + </div> + {% endif %} + {% for field in form %} + {% for property in properties %} + {% ifequal field.name property %} + <div class="fieldWrapper"> + <label for="id_{{field.name}}">{% trans field.label %}</label> + {{ field.errors }} + {{ field }} + </div> + {%endifequal%} + {%endfor%} + {%endfor%} + <p><input type='submit' onclick='saveExtent();' value="{% trans 'Propose'%}"/></p> + </form> + </fieldset> + </div> +{% endblock %} diff --git a/chimere/templates/chimere/edit_route.html b/chimere/templates/chimere/edit_route.html new file mode 100644 index 0000000..1fd7813 --- /dev/null +++ b/chimere/templates/chimere/edit_route.html @@ -0,0 +1,68 @@ +{% extends "chimere/base.html" %} +{% load i18n %} +{% load adminmedia %} +{% block extra_head %} + {% if dated %} + <!-- script type="text/javascript" src="{{extra_url}}media/js/core.js"></script--> + <script type="text/javascript"> + window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}"; + </script> + {% endif %} + {{ block.super }} + {{ form.media }} +{% endblock %} + +{% block content %} + {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} + <fieldset class='edit'> + <legend>{% trans "Add a new route" %}</legend> + <p>* {% trans "indicates a mandatory field" %}</p> + <form enctype="multipart/form-data" method='post' action='{{extra_url}}edit_route/'> + {% csrf_token %} + <div class="fieldWrapper"> + <label for="id_name">{% trans "Site name"%} *</label> + {{ form.name.errors }} + {{ form.name }} + </div> + <div class="fieldWrapper"> + <label for="id_subcategory">{% trans "Categories" %} *</label> + {{ form.categories.errors }} + {{ form.categories }} + </div> + <div class="fieldWrapper"> + <label for="id_route">{% trans "Route"%} *</label> + {%if form.point.errors %}<ul class="errorlist"><li>{% trans "Select a location for this new site" %}</li></ul>{%endif%} + {{route_widget}} + </div> + <!-- + <div class="fieldWrapper"> + <label for="id_picture">{% trans "Image" %}</label> + {{ form.picture.errors }} + {{ form.picture }} + </div>--> + {% if dated %} + <div class="fieldWrapper"> + <label for="id_start_date">{% trans "Start date" %}</label> + {{ form.start_date.errors }} + {{ form.start_date }} + <p class="help">{{ form.start_date.help_text }}</p> + </div> + <div class="fieldWrapper"> + <label for="id_end_date">{% trans "End date" %}</label> + {{ form.end_date.errors }} + {{ form.end_date }} + <p class="help">{{ form.end_date.help_text }}</p> + </div> + {% endif %} + {%for field in form%}{%for property in properties%}{%ifequal field.name property%} + <div class="fieldWrapper"> + <label for="id_{{field.name}}">{% trans field.label %}</label> + {{ field.errors }} + {{ field }} + </div> + {%endifequal%}{%endfor%}{%endfor%} + <p><input type='submit' onclick='saveExtent();' value="{% trans 'Propose'%}"/></p> + </form> + </fieldset> + </div> +{% endblock %} diff --git a/chimere/templates/chimere/main_map.html b/chimere/templates/chimere/main_map.html new file mode 100644 index 0000000..ad612a4 --- /dev/null +++ b/chimere/templates/chimere/main_map.html @@ -0,0 +1,27 @@ +{% extends "chimere/base.html" %} +{% load i18n unlocalize_point chimere_tags %} +{% block message_edit %}{% endblock %} +{% block sidebar %} + <div id='panel'> + <h2>{% trans "Topics"%}</h2> + <form method='post' name='frm_categories' id='frm_categories'> + <div id='categories'> + <!-- Categories are displayed in JS --> + </div> + </form> + </div> + + {% if areas_visible %} + {% display_areas %} + {% endif %} + <div id='detail'></div> + <div id='category_detail'></div> + {% display_news news_visible %} +{% endblock %} +{% block content %} + <div id='map'></div> + {% map_params %} + <script type='text/javascript'><!-- + $("#map").chimere(chimere_init_options); + // --></script> +{% endblock %} diff --git a/chimere/templates/chimere/main_map_simple.html b/chimere/templates/chimere/main_map_simple.html new file mode 100644 index 0000000..621992f --- /dev/null +++ b/chimere/templates/chimere/main_map_simple.html @@ -0,0 +1,22 @@ +{% extends "chimere/main_map.html" %} +{% load i18n %} +{% block body_class %}class='simple'{% endblock %} +{% block body_id %}id='simple'{% endblock %} +{% block menu %}{# no menu in simple mode #}{% endblock %} +{% block message_edit %}{% endblock %} +{% block sidebar %} + <div id='panel'> + <a href='#' onclick='showHide("categories")'> + <h2>{% trans "Topics"%}</h2> + </a> + <form method='post' name='frm_categories' id='frm_categories'> + <div id='categories' name='categories'></div> + </form> + </div> +{% endblock %} +{% block content %} + <script type='text/javascript'><!-- + var simple = true; + // --></script> + {{ block.super }} +{% endblock %} diff --git a/chimere/templates/chimere/submited.html b/chimere/templates/chimere/submited.html new file mode 100644 index 0000000..8d9179b --- /dev/null +++ b/chimere/templates/chimere/submited.html @@ -0,0 +1,10 @@ +{% extends "chimere/base.html" %} +{% load i18n %} +{% block message_map %}{% endblock %} +{% block content %} + {{ block.super }} + <fieldset class='edit'> + <p>{% trans "Your proposition has been submited. A moderator will treat your submission shortly. Thanks!" %}</p> + </fieldset> +{% endblock %} + diff --git a/chimere/templates/upload_file.html b/chimere/templates/chimere/upload_file.html index d08f723..d08f723 100644 --- a/chimere/templates/upload_file.html +++ b/chimere/templates/chimere/upload_file.html diff --git a/chimere/templates/welcome.html b/chimere/templates/chimere/welcome.html index a3cd86e..a3cd86e 100644 --- a/chimere/templates/welcome.html +++ b/chimere/templates/chimere/welcome.html diff --git a/chimere/templates/contactus.html b/chimere/templates/contactus.html deleted file mode 100644 index 7464c72..0000000 --- a/chimere/templates/contactus.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "base_user.html" %} -{% load i18n %} -{% block message_map %}{% endblock %} -{% block message_edit%}{% endblock %} -{% block content %}{{ block.super }} -<div id='content'> -{% if message %} -<div class='warning'><p>{{message}}</p></div> -{% else %} -<fieldset class='edit'> -<p>{% trans "If you have some requests or remarks about this site you can leave them here." %}</p> -<form action="" method="post"> -{{contact_form.as_p}} -<input type="submit" value="{% trans "Submit" %}" /> -</form> -</fieldset> -{% endif %} -</div> -{% endblock %} - diff --git a/chimere/templates/detail.html b/chimere/templates/detail.html deleted file mode 100644 index c35f664..0000000 --- a/chimere/templates/detail.html +++ /dev/null @@ -1,22 +0,0 @@ -{% load i18n %} -{% load sanitize %} -<h2>{{ marker.name }}</h2> -<div id='detail_content'> -{% if marker.picture %}<img src='{{STATIC_URL}}{{marker.picture}}' alt='{{marker.name}}'/>{%endif%} -<div> -{% if dated %} -<p id='detail_start_date'><label>{% trans "Date:" %}</label> <span>{{marker.start_date|date:"D d M Y"}} -{% if marker.end_date %} - {{marker.end_date|date:"D d M Y"}}</p>{% endif %}</span> -{% endif %} -{% for property in marker.getProperties %} -<p id='{{property.propertymodel.getNamedId}}'>{{ property.value|sanitize:"p b i br hr strong em span:style a:href:target ul li ol h1 h2 h3 h4"|safe}}</p> -{% endfor %} -</div>{% if share_networks %} -{% if simple %}{% trans "Share on"%}{% for share_network in share_networks %} -<a href='{{share_network.1}}'>{{share_network.0}}</a> -{% endfor %}{%else%} -<ul id='share'><li>{% trans "Share"%}</li>{% for share_network in share_networks %} -<li><a href='{{share_network.1}}'><img src="{{share_network.2}}" alt="{{share_network.0}}"/></a></li> -{% endfor %}</ul>{% endif %} -{% endif %} -</div> diff --git a/chimere/templates/edit.html b/chimere/templates/edit.html deleted file mode 100644 index d37efa7..0000000 --- a/chimere/templates/edit.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "base_user.html" %} -{% load i18n %} -{% load adminmedia %} -{% block extra_head %} -{% if dated %}<script type="text/javascript" src="{{extra_url}}admin/jsi18n"></script> -<script type="text/javascript" src="{{extra_url}}media/js/core.js"></script> -<script type="text/javascript"> -window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}"; -</script> -<link rel="stylesheet" type="text/css" href="{{extra_url}}media/css/base.css"/> -<link rel="stylesheet" type="text/css" href="{{extra_url}}media/css/widgets.css"/> -{% endif %}{{ block.super }} -{% endblock %} -{% block message_map %}{% endblock %} -{% block message_edit%}<div id='content'>{{block.super}}{% endblock %} - -{% block content %}{{ block.super }} -{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} -<fieldset class='edit'> -<legend>{% trans "Add a new site" %}</legend> -<p>* {% trans "indicates a mandatory field" %}</p> -<form enctype="multipart/form-data" method='post' action='{{extra_url}}edit/'> -<div class="fieldWrapper"> - <label for="id_name">{% trans "Site name"%} *</label> - {{ form.name.errors }} - {{ form.name }} -</div> -<div class="fieldWrapper"> - <label for="id_subcategory">{% trans "Categories" %} *</label> - {{ form.categories.errors }} - {{ form.categories }} -</div> -<div class="fieldWrapper"> - <label for="id_point">{% trans "Point"%} *</label> - {%if form.point.errors %}<ul class="errorlist"><li>{% trans "Select a location for this new site" %}</li></ul>{%endif%} - {{point_widget}} -</div> -<div class="fieldWrapper"> - <label for="id_picture">{% trans "Image" %}</label> - {{ form.picture.errors }} - {{ form.picture }} -</div> -{% if dated %} -<div class="fieldWrapper"> - <label for="id_start_date">{% trans "Start date" %}</label> - {{ form.start_date.errors }} - {{ form.start_date }} - <p class="help">{{ form.start_date.help_text }}</p> -</div> -<div class="fieldWrapper"> - <label for="id_end_date">{% trans "End date" %}</label> - {{ form.end_date.errors }} - {{ form.end_date }} - <p class="help">{{ form.end_date.help_text }}</p> -</div> -{% endif %} -{%for field in form%}{%for property in properties%}{%ifequal field.name property%} -<div class="fieldWrapper"> - <label for="id_{{field.name}}">{% trans field.label %}</label> - {{ field.errors }} - {{ field }} -</div> -{%endifequal%}{%endfor%}{%endfor%} -<p><input type='submit' onclick='saveExtent();' value="{% trans 'Propose'%}"/></p> -</form> -</fieldset> -</div> -{% endblock %} diff --git a/chimere/templates/edit_route.html b/chimere/templates/edit_route.html deleted file mode 100644 index f7aa7e8..0000000 --- a/chimere/templates/edit_route.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "base_user.html" %} -{% load i18n %} -{% load adminmedia %} -{% block extra_head %} -{% if dated %}<script type="text/javascript" src="{{extra_url}}admin/jsi18n"></script> -<script type="text/javascript" src="{{extra_url}}media/js/core.js"></script> -<script type="text/javascript"> -window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}"; -</script> -<link rel="stylesheet" type="text/css" href="{{extra_url}}media/css/base.css"/> -<link rel="stylesheet" type="text/css" href="{{extra_url}}media/css/widgets.css"/> -{% endif %}{{ block.super }} -{% endblock %} -{% block message_map %}{% endblock %} -{% block message_edit%}<div id='content'>{{block.super}}{% endblock %} -{% block content %}{{ block.super }} -{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} -<fieldset class='edit'> -<legend>{% trans "Add a new route" %}</legend> -<p>* {% trans "indicates a mandatory field" %}</p> -<form enctype="multipart/form-data" method='post' action='{{extra_url}}edit_route/'> -<div class="fieldWrapper"> - <label for="id_name">{% trans "Site name"%} *</label> - {{ form.name.errors }} - {{ form.name }} -</div> -<div class="fieldWrapper"> - <label for="id_subcategory">{% trans "Categories" %} *</label> - {{ form.categories.errors }} - {{ form.categories }} -</div> -<div class="fieldWrapper"> - <label for="id_route">{% trans "Route"%} *</label> - {%if form.point.errors %}<ul class="errorlist"><li>{% trans "Select a location for this new site" %}</li></ul>{%endif%} - {{route_widget}} -</div> -<!-- -<div class="fieldWrapper"> - <label for="id_picture">{% trans "Image" %}</label> - {{ form.picture.errors }} - {{ form.picture }} -</div>--> -{% if dated %} -<div class="fieldWrapper"> - <label for="id_start_date">{% trans "Start date" %}</label> - {{ form.start_date.errors }} - {{ form.start_date }} - <p class="help">{{ form.start_date.help_text }}</p> -</div> -<div class="fieldWrapper"> - <label for="id_end_date">{% trans "End date" %}</label> - {{ form.end_date.errors }} - {{ form.end_date }} - <p class="help">{{ form.end_date.help_text }}</p> -</div> -{% endif %} -{%for field in form%}{%for property in properties%}{%ifequal field.name property%} -<div class="fieldWrapper"> - <label for="id_{{field.name}}">{% trans field.label %}</label> - {{ field.errors }} - {{ field }} -</div> -{%endifequal%}{%endfor%}{%endfor%} -<p><input type='submit' onclick='saveExtent();' value="{% trans 'Propose'%}"/></p> -</form> -</fieldset> -</div> -{% endblock %} diff --git a/chimere/templates/main_map.html b/chimere/templates/main_map.html deleted file mode 100644 index b426c25..0000000 --- a/chimere/templates/main_map.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends "base_user.html" %} -{% load i18n %} -{% load unlocalize_point %} -{% block message_edit %}{% endblock %} -{% block sidebar %}{{ block.super }} -<div id='panel'> -<h2>{% trans "Topics"%}</h2> -<form method='post' name='frm_categories' id='frm_categories'> -<div id='categories'> -{{categories|safe}} -</div> - -</form> -</div> -{%if areas%}<div id='areas'> -<h2>{% trans "Shortcuts"%}</h2> -<ul>{% for area in areas%} -<li><img class='zoom_image' alt='{% trans "Zoom to" %} {{area.name}}' src='{{STATIC_URL}}icons/zoom.png' onclick='zoomToArea({{area.upper_left_corner.x|unlocalize_point}}, {{area.upper_left_corner.y|unlocalize_point}}, {{area.lower_right_corner.x|unlocalize_point}}, {{area.lower_right_corner.y|unlocalize_point}}); loadGeoObjects();'/> {{area.name}}</li>{%endfor%} -</ul> -</div>{%endif%} - -<div id='detail'> -</div> -<div id='category_detail'> -</div> - -<div id='welcome_button'><a href='javascript:show("welcome");'>{% trans "Welcome message"%}</a></div> -{{welcome}}{% endblock %} -{% block content %}{{ block.super }}<div id='map'></div> -<script type='text/javascript'><!-- -var map_layer = {{map_layer|safe}}; -var permalink_label = '{%trans "Permalink"%}'; -var dynamic_categories{%if dynamic_categories %} = 1{%endif%}; -var default_area{%if default_area %} = new Array({{default_area.upper_left_corner.x}}, {{default_area.upper_left_corner.y}}, {{default_area.lower_right_corner.x}}, {{default_area.lower_right_corner.y}}){%endif%}; -var p_zoom{%if p_zoom %} = {{p_zoom}}{%endif%}; -var p_lat{%if p_lat %} = {{p_lat}}{%endif%}; -var p_lon{%if p_lon %} = {{p_lon}}{%endif%}; -var p_display_submited{%if p_display_submited %} = {{p_display_submited}}{%endif%}; -var p_checked_categories{%if p_checked_categories %} = [{{p_checked_categories}}];{%endif%} -var p_current_feature{% if p_current_feature %} = {{p_current_feature}}{%endif%}; -init(); -// --> </script>{% endblock %} -{% block footer %}<div id='map-footer'>{{ block.super }} - {% trans "Map"%} © <a href='http://openstreetmap.org/'>OpenStreetMap</a></div> -{% endblock %} diff --git a/chimere/templates/main_map_simple.html b/chimere/templates/main_map_simple.html deleted file mode 100644 index d43436e..0000000 --- a/chimere/templates/main_map_simple.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "main_map.html" %} -{% load i18n %} -{% block bodyhead %}<body class='simple'>{% endblock %} -{% block actions %}{% endblock %} -{% block message_edit %}{% endblock %} -{% block sidebar %} -<div id='panel'><a href='#' onclick='showHide("categories")'> -<h2>{% trans "Topics"%}</h2></a> -<form method='post' name='frm_categories' id='frm_categories'> -<div id='categories' name='categories'> -{{categories|safe}} -</div> -</form> -</div> -{% endblock %} -{% block content %}<script type='text/javascript'><!-- -var simple = true; -// --> </script> -{{ block.super }} -{% endblock %} diff --git a/chimere/templates/submited.html b/chimere/templates/submited.html deleted file mode 100644 index 200717e..0000000 --- a/chimere/templates/submited.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "base_user.html" %} -{% load i18n %} -{% block message_map %}{% endblock %} -{% block message_edit%}<div id='content'>{{block.super}}{% endblock %} -{% block content %}{{ block.super }} -<fieldset class='edit'> -<p>{% trans "Your proposition has been submited. A moderator will treat your submission shortly. Thanks!" %}</p> -</fieldset> -</div> -{% endblock %} - diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py new file mode 100644 index 0000000..f848019 --- /dev/null +++ b/chimere/templatetags/chimere_tags.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- + +from logging import getLogger + +from django import template +from django.conf import settings +from django.core.urlresolvers import reverse + +from chimere.models import Marker, Area, News +from chimere.widgets import URL_OSM_CSS, URL_OSM_JS + +log = getLogger(__name__) + +register = template.Library() + +@register.inclusion_tag('chimere/blocks/areas.html', takes_context=True) +def display_areas(context): + """ + Display available areas. + """ + context_data = {"areas": Area.getAvailable(), + "STATIC_URL": context["STATIC_URL"]} + return context_data + +@register.inclusion_tag('chimere/blocks/welcome.html', takes_context=True) +def display_news(context, display=False): + """ + Welcome message and active news. + """ + context_data = {'display':display} + # Retrieve news + news = list(News.objects.filter(available=True)) + if settings.CHIMERE_DAYS_BEFORE_EVENT: + # Retrieve active markers + news += list(Marker.objects.available().active()) + news.sort(key=lambda x:x.date, reverse=True) + context_data['news_lst'] = news + return context_data + +@register.inclusion_tag('chimere/blocks/head.html', takes_context=True) +def head(context): + """ + Create context and display head elements (js, css, etc.). + """ + context_data = { + "STATIC_URL": settings.STATIC_URL, + "MEDIA_URL": settings.MEDIA_URL, + "DYNAMIC_CATEGORIES": settings.CHIMERE_DYNAMIC_CATEGORIES, + "EXTRA_URL": reverse("chimere:index"), + "EPSG_DISPLAY_PROJECTION": settings.CHIMERE_EPSG_DISPLAY_PROJECTION, + "EPSG_PROJECTION": settings.CHIMERE_EPSG_PROJECTION, + "DEFAULT_CENTER": settings.CHIMERE_DEFAULT_CENTER, + "DEFAULT_ZOOM": settings.CHIMERE_DEFAULT_ZOOM, + "RESTRICTED_EXTENT": settings.CHIMERE_RESTRICTED_EXTENT, + "ICON_WIDTH": settings.CHIMERE_ICON_WIDTH, + "ICON_HEIGHT": settings.CHIMERE_ICON_HEIGHT, + "ICON_OFFSET_X": settings.CHIMERE_ICON_OFFSET_X, + "ICON_OFFSET_Y": settings.CHIMERE_ICON_OFFSET_Y, + "MAP_LAYER": settings.CHIMERE_MAP_LAYER, + "URL_OSM_CSS": URL_OSM_CSS, + "URL_OSM_JS": URL_OSM_JS, + } + if settings.CHIMERE_CSS_AREAS and "area_name" in context: + context_data['css_area'] = context["area_name"] + ret urn context_data + +@register.inclusion_tag('chimere/blocks/map_params.html', takes_context=True) +def map_params(context): + request = context["request"] + # Default values + context_data = {'p_checked_categories': settings.CHIMERE_DEFAULT_CATEGORIES} + if request.GET: + for key in ('zoom', 'lon', 'lat', 'display_submited', + 'current_feature'): + if key in request.GET and request.GET[key]: + context_data['p_'+key] = request.GET[key] + else: + context_data['p_'+key] = None + if 'checked_categories' in request.GET \ + and request.GET['checked_categories']: + cats = request.GET['checked_categories'].split('_') + context_data['p_checked_categories'] = ",".join(cats) + return context_data + diff --git a/chimere/urls.py b/chimere/urls.py index 6aebf72..0959b18 100644 --- a/chimere/urls.py +++ b/chimere/urls.py @@ -46,8 +46,9 @@ urlpatterns += patterns('chimere.views', name="get_detail"), url(r'^(?P<area_name>\w+)?/?getDescriptionDetail/?(?P<category_id>\d+)/?$', 'getDescriptionDetail', name="get_description_detail"), - url(r'^(?:(?P<area_name>\w+)?/)?getGeoObjects/(?P<category_ids>\w+)(/(?P<status>\w+))?$', - 'getGeoObjects', name="getgeoobjects"), + url(r'^(?:(?P<area_name>\w+)?/)?getGeoObjects/'\ + r'(?P<category_ids>\w+)(/(?P<status>\w+))?$', 'getGeoObjects', + name="getgeoobjects"), url(r'^(?P<area_name>\w+)?/?getAvailableCategories/$', 'get_available_categories', name="get_categories"), url(r'^(?P<area_name>\w+)?/?ty/(?P<tiny_urn>\w+)$', diff --git a/chimere/views.py b/chimere/views.py index 17e510c..eed0199 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -48,7 +48,7 @@ def get_base_response(area_name=""): Get the base url """ base_response_dct = {'media_path':settings.STATIC_URL,} - base_url = settings.EXTRA_URL + base_url = reverse("chimere:index") # App urls must be included with namespace if not base_url.startswith('/'): base_url = '/' + base_url if area_name: diff --git a/chimere/static/icons/email.png b/example_project/static/icons/email.png Binary files differindex 1a0a014..1a0a014 100644 --- a/chimere/static/icons/email.png +++ b/example_project/static/icons/email.png diff --git a/chimere/static/icons/facebook.png b/example_project/static/icons/facebook.png Binary files differindex 8036b19..8036b19 100644 --- a/chimere/static/icons/facebook.png +++ b/example_project/static/icons/facebook.png diff --git a/chimere/static/icons/identica.png b/example_project/static/icons/identica.png Binary files differindex a9625d1..a9625d1 100644 --- a/chimere/static/icons/identica.png +++ b/example_project/static/icons/identica.png diff --git a/chimere/static/icons/minus.png b/example_project/static/icons/minus.png Binary files differindex a95822f..a95822f 100644 --- a/chimere/static/icons/minus.png +++ b/example_project/static/icons/minus.png diff --git a/chimere/static/icons/plus.png b/example_project/static/icons/plus.png Binary files differindex 404a24a..404a24a 100644 --- a/chimere/static/icons/plus.png +++ b/example_project/static/icons/plus.png diff --git a/chimere/static/icons/twitter.png b/example_project/static/icons/twitter.png Binary files differindex 295767a..295767a 100644 --- a/chimere/static/icons/twitter.png +++ b/example_project/static/icons/twitter.png diff --git a/chimere/static/icons/zoom.png b/example_project/static/icons/zoom.png Binary files differindex 3a53680..3a53680 100644 --- a/chimere/static/icons/zoom.png +++ b/example_project/static/icons/zoom.png |