summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitd8c670233cb6b14fc405d04f009e0959710910a6 (patch)
treefad21052b7557a6cd857d10c37f6735966303b70
parentd70015e9ab3f79f7060312fe1eea51b034d9c06e (diff)
downloadChimè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--.gitignore4
-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)bin42 -> 42 bytes
-rwxr-xr-xchimere/static/chimere/img/cloud-popup-relative.png (renamed from chimere/static/img/cloud-popup-relative.png)bin3177 -> 3177 bytes
-rw-r--r--chimere/static/chimere/img/drag-rectangle-off.png (renamed from chimere/static/img/drag-rectangle-off.png)bin1202 -> 1202 bytes
-rw-r--r--chimere/static/chimere/img/drag-rectangle-on.png (renamed from chimere/static/img/drag-rectangle-on.png)bin1218 -> 1218 bytes
-rw-r--r--chimere/static/chimere/img/drawing.png (renamed from chimere/static/img/drawing.png)bin7445 -> 7445 bytes
-rw-r--r--chimere/static/chimere/img/east-mini.png (renamed from chimere/static/img/east-mini.png)bin451 -> 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)bin451 -> 451 bytes
-rw-r--r--chimere/static/chimere/img/layer-switcher-minimize.png (renamed from chimere/static/img/layer-switcher-minimize.png)bin249 -> 249 bytes
-rw-r--r--chimere/static/chimere/img/marker-blue.png (renamed from chimere/static/img/marker-blue.png)bin992 -> 992 bytes
-rw-r--r--chimere/static/chimere/img/marker-gold.png (renamed from chimere/static/img/marker-gold.png)bin831 -> 831 bytes
-rw-r--r--chimere/static/chimere/img/marker-green.png (renamed from chimere/static/img/marker-green.png)bin967 -> 967 bytes
-rw-r--r--chimere/static/chimere/img/marker.png (renamed from chimere/static/img/marker.png)bin606 -> 606 bytes
-rw-r--r--chimere/static/chimere/img/measuring-stick-off.png (renamed from chimere/static/img/measuring-stick-off.png)bin3343 -> 3343 bytes
-rw-r--r--chimere/static/chimere/img/measuring-stick-on.png (renamed from chimere/static/img/measuring-stick-on.png)bin3816 -> 3816 bytes
-rw-r--r--chimere/static/chimere/img/north-mini.png (renamed from chimere/static/img/north-mini.png)bin484 -> 484 bytes
-rw-r--r--chimere/static/chimere/img/panning-hand-off.png (renamed from chimere/static/img/panning-hand-off.png)bin3875 -> 3875 bytes
-rw-r--r--chimere/static/chimere/img/panning-hand-on.png (renamed from chimere/static/img/panning-hand-on.png)bin3977 -> 3977 bytes
-rw-r--r--chimere/static/chimere/img/slider.png (renamed from chimere/static/img/slider.png)bin285 -> 285 bytes
-rw-r--r--chimere/static/chimere/img/south-mini.png (renamed from chimere/static/img/south-mini.png)bin481 -> 481 bytes
-rw-r--r--chimere/static/chimere/img/upload.png (renamed from chimere/static/img/upload.png)bin8871 -> 8871 bytes
-rw-r--r--chimere/static/chimere/img/west-mini.png (renamed from chimere/static/img/west-mini.png)bin453 -> 453 bytes
-rw-r--r--chimere/static/chimere/img/zoom-minus-mini.png (renamed from chimere/static/img/zoom-minus-mini.png)bin359 -> 359 bytes
-rw-r--r--chimere/static/chimere/img/zoom-plus-mini.png (renamed from chimere/static/img/zoom-plus-mini.png)bin489 -> 489 bytes
-rw-r--r--chimere/static/chimere/img/zoom-world-mini.png (renamed from chimere/static/img/zoom-world-mini.png)bin1072 -> 1072 bytes
-rw-r--r--chimere/static/chimere/img/zoombar.png (renamed from chimere/static/img/zoombar.png)bin463 -> 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.css64
-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.js60
-rw-r--r--chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.js381
-rw-r--r--chimere/static/chimere/js/jquery/bsmSelect/js/jquery.bsmselect.sortable.js49
-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.js238
m---------chimere/static/jquery/bsmSelect0
-rw-r--r--chimere/templates/base.html58
-rw-r--r--chimere/templates/categories.html22
-rw-r--r--chimere/templates/chimere/base.html20
-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.html20
-rw-r--r--chimere/templates/chimere/blocks/areas.html11
-rw-r--r--chimere/templates/chimere/blocks/categories.html29
-rw-r--r--chimere/templates/chimere/blocks/footer.html3
-rw-r--r--chimere/templates/chimere/blocks/head.html44
-rw-r--r--chimere/templates/chimere/blocks/map_params.html17
-rw-r--r--chimere/templates/chimere/blocks/welcome.html31
-rw-r--r--chimere/templates/chimere/blocks/welcome_message.html1
-rw-r--r--chimere/templates/chimere/category_detail.html (renamed from chimere/templates/category_detail.html)0
-rw-r--r--chimere/templates/chimere/contactus.html19
-rw-r--r--chimere/templates/chimere/detail.html23
-rw-r--r--chimere/templates/chimere/edit.html72
-rw-r--r--chimere/templates/chimere/edit_route.html68
-rw-r--r--chimere/templates/chimere/main_map.html27
-rw-r--r--chimere/templates/chimere/main_map_simple.html22
-rw-r--r--chimere/templates/chimere/submited.html10
-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.html20
-rw-r--r--chimere/templates/detail.html22
-rw-r--r--chimere/templates/edit.html68
-rw-r--r--chimere/templates/edit_route.html68
-rw-r--r--chimere/templates/main_map.html44
-rw-r--r--chimere/templates/main_map_simple.html20
-rw-r--r--chimere/templates/submited.html11
-rw-r--r--chimere/templatetags/chimere_tags.py84
-rw-r--r--chimere/urls.py5
-rw-r--r--chimere/views.py2
-rw-r--r--example_project/static/icons/email.png (renamed from chimere/static/icons/email.png)bin735 -> 735 bytes
-rw-r--r--example_project/static/icons/facebook.png (renamed from chimere/static/icons/facebook.png)bin731 -> 731 bytes
-rw-r--r--example_project/static/icons/identica.png (renamed from chimere/static/icons/identica.png)bin1373 -> 1373 bytes
-rw-r--r--example_project/static/icons/minus.png (renamed from chimere/static/icons/minus.png)bin259 -> 259 bytes
-rw-r--r--example_project/static/icons/plus.png (renamed from chimere/static/icons/plus.png)bin275 -> 275 bytes
-rw-r--r--example_project/static/icons/twitter.png (renamed from chimere/static/icons/twitter.png)bin924 -> 924 bytes
-rw-r--r--example_project/static/icons/zoom.png (renamed from chimere/static/icons/zoom.png)bin655 -> 655 bytes
83 files changed, 1323 insertions, 316 deletions
diff --git a/.gitignore b/.gitignore
index 226ccbe..cd51ca8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
index 4bcc753..4bcc753 100644
--- a/chimere/static/img/blank.gif
+++ b/chimere/static/chimere/img/blank.gif
Binary files differ
diff --git a/chimere/static/img/cloud-popup-relative.png b/chimere/static/chimere/img/cloud-popup-relative.png
index 1215a36..1215a36 100755
--- a/chimere/static/img/cloud-popup-relative.png
+++ b/chimere/static/chimere/img/cloud-popup-relative.png
Binary files differ
diff --git a/chimere/static/img/drag-rectangle-off.png b/chimere/static/chimere/img/drag-rectangle-off.png
index fc6daf4..fc6daf4 100644
--- a/chimere/static/img/drag-rectangle-off.png
+++ b/chimere/static/chimere/img/drag-rectangle-off.png
Binary files differ
diff --git a/chimere/static/img/drag-rectangle-on.png b/chimere/static/chimere/img/drag-rectangle-on.png
index 7f783ce..7f783ce 100644
--- a/chimere/static/img/drag-rectangle-on.png
+++ b/chimere/static/chimere/img/drag-rectangle-on.png
Binary files differ
diff --git a/chimere/static/img/drawing.png b/chimere/static/chimere/img/drawing.png
index a2d3a30..a2d3a30 100644
--- a/chimere/static/img/drawing.png
+++ b/chimere/static/chimere/img/drawing.png
Binary files differ
diff --git a/chimere/static/img/east-mini.png b/chimere/static/chimere/img/east-mini.png
index 0707567..0707567 100644
--- a/chimere/static/img/east-mini.png
+++ b/chimere/static/chimere/img/east-mini.png
Binary files differ
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
index 8d7bb16..8d7bb16 100644
--- a/chimere/static/img/layer-switcher-maximize.png
+++ b/chimere/static/chimere/img/layer-switcher-maximize.png
Binary files differ
diff --git a/chimere/static/img/layer-switcher-minimize.png b/chimere/static/chimere/img/layer-switcher-minimize.png
index e80bf21..e80bf21 100644
--- a/chimere/static/img/layer-switcher-minimize.png
+++ b/chimere/static/chimere/img/layer-switcher-minimize.png
Binary files differ
diff --git a/chimere/static/img/marker-blue.png b/chimere/static/chimere/img/marker-blue.png
index 83a90b4..83a90b4 100644
--- a/chimere/static/img/marker-blue.png
+++ b/chimere/static/chimere/img/marker-blue.png
Binary files differ
diff --git a/chimere/static/img/marker-gold.png b/chimere/static/chimere/img/marker-gold.png
index 2ff9ec5..2ff9ec5 100644
--- a/chimere/static/img/marker-gold.png
+++ b/chimere/static/chimere/img/marker-gold.png
Binary files differ
diff --git a/chimere/static/img/marker-green.png b/chimere/static/chimere/img/marker-green.png
index 17168f1..17168f1 100644
--- a/chimere/static/img/marker-green.png
+++ b/chimere/static/chimere/img/marker-green.png
Binary files differ
diff --git a/chimere/static/img/marker.png b/chimere/static/chimere/img/marker.png
index ccd1913..ccd1913 100644
--- a/chimere/static/img/marker.png
+++ b/chimere/static/chimere/img/marker.png
Binary files differ
diff --git a/chimere/static/img/measuring-stick-off.png b/chimere/static/chimere/img/measuring-stick-off.png
index 70c2dff..70c2dff 100644
--- a/chimere/static/img/measuring-stick-off.png
+++ b/chimere/static/chimere/img/measuring-stick-off.png
Binary files differ
diff --git a/chimere/static/img/measuring-stick-on.png b/chimere/static/chimere/img/measuring-stick-on.png
index cdb8f34..cdb8f34 100644
--- a/chimere/static/img/measuring-stick-on.png
+++ b/chimere/static/chimere/img/measuring-stick-on.png
Binary files differ
diff --git a/chimere/static/img/north-mini.png b/chimere/static/chimere/img/north-mini.png
index a8a0b40..a8a0b40 100644
--- a/chimere/static/img/north-mini.png
+++ b/chimere/static/chimere/img/north-mini.png
Binary files differ
diff --git a/chimere/static/img/panning-hand-off.png b/chimere/static/chimere/img/panning-hand-off.png
index 4c912ac..4c912ac 100644
--- a/chimere/static/img/panning-hand-off.png
+++ b/chimere/static/chimere/img/panning-hand-off.png
Binary files differ
diff --git a/chimere/static/img/panning-hand-on.png b/chimere/static/chimere/img/panning-hand-on.png
index 6094c64..6094c64 100644
--- a/chimere/static/img/panning-hand-on.png
+++ b/chimere/static/chimere/img/panning-hand-on.png
Binary files differ
diff --git a/chimere/static/img/slider.png b/chimere/static/chimere/img/slider.png
index 23afd57..23afd57 100644
--- a/chimere/static/img/slider.png
+++ b/chimere/static/chimere/img/slider.png
Binary files differ
diff --git a/chimere/static/img/south-mini.png b/chimere/static/chimere/img/south-mini.png
index 6c4ac8a..6c4ac8a 100644
--- a/chimere/static/img/south-mini.png
+++ b/chimere/static/chimere/img/south-mini.png
Binary files differ
diff --git a/chimere/static/img/upload.png b/chimere/static/chimere/img/upload.png
index 367c2d9..367c2d9 100644
--- a/chimere/static/img/upload.png
+++ b/chimere/static/chimere/img/upload.png
Binary files differ
diff --git a/chimere/static/img/west-mini.png b/chimere/static/chimere/img/west-mini.png
index db5f420..db5f420 100644
--- a/chimere/static/img/west-mini.png
+++ b/chimere/static/chimere/img/west-mini.png
Binary files differ
diff --git a/chimere/static/img/zoom-minus-mini.png b/chimere/static/chimere/img/zoom-minus-mini.png
index f9b63ab..f9b63ab 100644
--- a/chimere/static/img/zoom-minus-mini.png
+++ b/chimere/static/chimere/img/zoom-minus-mini.png
Binary files differ
diff --git a/chimere/static/img/zoom-plus-mini.png b/chimere/static/chimere/img/zoom-plus-mini.png
index eecf2eb..eecf2eb 100644
--- a/chimere/static/img/zoom-plus-mini.png
+++ b/chimere/static/chimere/img/zoom-plus-mini.png
Binary files differ
diff --git a/chimere/static/img/zoom-world-mini.png b/chimere/static/chimere/img/zoom-world-mini.png
index 2159dde..2159dde 100644
--- a/chimere/static/img/zoom-world-mini.png
+++ b/chimere/static/chimere/img/zoom-world-mini.png
Binary files differ
diff --git a/chimere/static/img/zoombar.png b/chimere/static/chimere/img/zoombar.png
index 959f01a..959f01a 100644
--- a/chimere/static/img/zoombar.png
+++ b/chimere/static/chimere/img/zoombar.png
Binary files differ
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}} &ndash; {{ news.date }}</h3>
+ <p>{{news.content|safe}}</p>
+ {% else %}
+ <h3>{{news.name}} &ndash; {{ 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
index 1a0a014..1a0a014 100644
--- a/chimere/static/icons/email.png
+++ b/example_project/static/icons/email.png
Binary files differ
diff --git a/chimere/static/icons/facebook.png b/example_project/static/icons/facebook.png
index 8036b19..8036b19 100644
--- a/chimere/static/icons/facebook.png
+++ b/example_project/static/icons/facebook.png
Binary files differ
diff --git a/chimere/static/icons/identica.png b/example_project/static/icons/identica.png
index a9625d1..a9625d1 100644
--- a/chimere/static/icons/identica.png
+++ b/example_project/static/icons/identica.png
Binary files differ
diff --git a/chimere/static/icons/minus.png b/example_project/static/icons/minus.png
index a95822f..a95822f 100644
--- a/chimere/static/icons/minus.png
+++ b/example_project/static/icons/minus.png
Binary files differ
diff --git a/chimere/static/icons/plus.png b/example_project/static/icons/plus.png
index 404a24a..404a24a 100644
--- a/chimere/static/icons/plus.png
+++ b/example_project/static/icons/plus.png
Binary files differ
diff --git a/chimere/static/icons/twitter.png b/example_project/static/icons/twitter.png
index 295767a..295767a 100644
--- a/chimere/static/icons/twitter.png
+++ b/example_project/static/icons/twitter.png
Binary files differ
diff --git a/chimere/static/icons/zoom.png b/example_project/static/icons/zoom.png
index 3a53680..3a53680 100644
--- a/chimere/static/icons/zoom.png
+++ b/example_project/static/icons/zoom.png
Binary files differ