From dcc0cd3d8d826961d246bd7220ac8b63dd9e2c49 Mon Sep 17 00:00:00 2001 From: Arnaud Fabre Date: Wed, 15 Jul 2015 18:11:36 +0200 Subject: [PATCH] Improves frontend management - Move static files from core app to root - Uses bower to manage front-end 3rd parties libs - Uses gulp to build front-end --- .bowerrc | 2 +- .gitignore | 38 +- core/static/.gitignore | 1 - core/static/css/base.css | 188 - core/static/css/reset.css | 1 - core/templates/core/home.haml | 26 +- gulpfile.js | 41 + memopol/settings.py | 5 +- static/coffeescript/home.coffee | 0 .../fonts}/propagan-webfont.eot | Bin .../fonts}/propagan-webfont.svg | 0 .../fonts}/propagan-webfont.ttf | Bin .../fonts}/propagan-webfont.woff | Bin ...ansus_webissimo-italic-webfont-webfont.eot | Bin ...ansus_webissimo-italic-webfont-webfont.svg | 0 ...ansus_webissimo-italic-webfont-webfont.ttf | Bin ...nsus_webissimo-italic-webfont-webfont.woff | Bin ...nsus_webissimo-regular-webfont-webfont.eot | Bin ...nsus_webissimo-regular-webfont-webfont.svg | 0 ...nsus_webissimo-regular-webfont-webfont.ttf | Bin ...sus_webissimo-regular-webfont-webfont.woff | Bin static/images/foundation/orbit/bullets.jpg | Bin 657 -> 0 bytes .../foundation/orbit/left-arrow-small.png | Bin 3163 -> 0 bytes static/images/foundation/orbit/left-arrow.png | Bin 522 -> 0 bytes static/images/foundation/orbit/loading.gif | Bin 2608 -> 0 bytes static/images/foundation/orbit/mask-black.png | Bin 526 -> 0 bytes .../images/foundation/orbit/pause-black.png | Bin 288 -> 0 bytes .../foundation/orbit/right-arrow-small.png | Bin 3169 -> 0 bytes .../images/foundation/orbit/right-arrow.png | Bin 3242 -> 0 bytes .../images/foundation/orbit/rotator-black.png | Bin 536 -> 0 bytes .../images/foundation/orbit/timer-black.png | Bin 526 -> 0 bytes static/images/logo.png | Bin 0 -> 2378 bytes static/javascripts/app.js | 40 - static/javascripts/backbone-min.js | 38 - static/javascripts/foundation.min.js | 52 - .../jquery.foundation.accordion.js | 15 - .../javascripts/jquery.foundation.alerts.js | 19 - .../javascripts/jquery.foundation.buttons.js | 49 - static/javascripts/jquery.foundation.forms.js | 483 - .../jquery.foundation.mediaQueryToggle.js | 25 - .../jquery.foundation.navigation.js | 30 - static/javascripts/jquery.foundation.orbit.js | 634 -- .../javascripts/jquery.foundation.reveal.js | 773 -- static/javascripts/jquery.foundation.tabs.js | 36 - .../javascripts/jquery.foundation.tooltips.js | 183 - static/javascripts/jquery.js | 9404 ----------------- static/javascripts/jquery.placeholder.js | 157 - static/javascripts/modernizr.foundation.js | 4 - static/javascripts/underscore-min.js | 1 - static/less/base.less | 19 + static/less/font.less | 21 + static/less/footer.less | 10 + static/less/header.less | 34 + static/less/navigation.less | 13 + static/stylesheets/app.css | 29 - static/stylesheets/base.css | 8651 +++++++++++++++ static/stylesheets/font.css | 21 + static/stylesheets/footer.css | 10 + static/stylesheets/foundation.css | 1127 -- static/stylesheets/foundation.min.css | 1 - static/stylesheets/header.css | 31 + static/stylesheets/navigation.css | 11 + 62 files changed, 8893 insertions(+), 13330 deletions(-) delete mode 100644 core/static/.gitignore delete mode 100644 core/static/css/base.css delete mode 100644 core/static/css/reset.css create mode 100644 gulpfile.js delete mode 100644 static/coffeescript/home.coffee rename {core/static/font => static/fonts}/propagan-webfont.eot (100%) rename {core/static/font => static/fonts}/propagan-webfont.svg (100%) rename {core/static/font => static/fonts}/propagan-webfont.ttf (100%) rename {core/static/font => static/fonts}/propagan-webfont.woff (100%) rename {core/static/font => static/fonts}/sansus_webissimo-italic-webfont-webfont.eot (100%) rename {core/static/font => static/fonts}/sansus_webissimo-italic-webfont-webfont.svg (100%) rename {core/static/font => static/fonts}/sansus_webissimo-italic-webfont-webfont.ttf (100%) rename {core/static/font => static/fonts}/sansus_webissimo-italic-webfont-webfont.woff (100%) rename {core/static/font => static/fonts}/sansus_webissimo-regular-webfont-webfont.eot (100%) rename {core/static/font => static/fonts}/sansus_webissimo-regular-webfont-webfont.svg (100%) rename {core/static/font => static/fonts}/sansus_webissimo-regular-webfont-webfont.ttf (100%) rename {core/static/font => static/fonts}/sansus_webissimo-regular-webfont-webfont.woff (100%) delete mode 100644 static/images/foundation/orbit/bullets.jpg delete mode 100644 static/images/foundation/orbit/left-arrow-small.png delete mode 100644 static/images/foundation/orbit/left-arrow.png delete mode 100644 static/images/foundation/orbit/loading.gif delete mode 100644 static/images/foundation/orbit/mask-black.png delete mode 100644 static/images/foundation/orbit/pause-black.png delete mode 100644 static/images/foundation/orbit/right-arrow-small.png delete mode 100644 static/images/foundation/orbit/right-arrow.png delete mode 100644 static/images/foundation/orbit/rotator-black.png delete mode 100644 static/images/foundation/orbit/timer-black.png create mode 100644 static/images/logo.png delete mode 100644 static/javascripts/app.js delete mode 100644 static/javascripts/backbone-min.js delete mode 100644 static/javascripts/foundation.min.js delete mode 100644 static/javascripts/jquery.foundation.accordion.js delete mode 100644 static/javascripts/jquery.foundation.alerts.js delete mode 100644 static/javascripts/jquery.foundation.buttons.js delete mode 100644 static/javascripts/jquery.foundation.forms.js delete mode 100644 static/javascripts/jquery.foundation.mediaQueryToggle.js delete mode 100644 static/javascripts/jquery.foundation.navigation.js delete mode 100644 static/javascripts/jquery.foundation.orbit.js delete mode 100644 static/javascripts/jquery.foundation.reveal.js delete mode 100644 static/javascripts/jquery.foundation.tabs.js delete mode 100644 static/javascripts/jquery.foundation.tooltips.js delete mode 100644 static/javascripts/jquery.js delete mode 100644 static/javascripts/jquery.placeholder.js delete mode 100644 static/javascripts/modernizr.foundation.js delete mode 100644 static/javascripts/underscore-min.js create mode 100644 static/less/base.less create mode 100644 static/less/font.less create mode 100644 static/less/footer.less create mode 100644 static/less/header.less create mode 100644 static/less/navigation.less delete mode 100644 static/stylesheets/app.css create mode 100644 static/stylesheets/base.css create mode 100644 static/stylesheets/font.css create mode 100644 static/stylesheets/footer.css delete mode 100644 static/stylesheets/foundation.css delete mode 100644 static/stylesheets/foundation.min.css create mode 100644 static/stylesheets/header.css create mode 100644 static/stylesheets/navigation.css diff --git a/.bowerrc b/.bowerrc index f7a6eae..16ec5d0 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,3 +1,3 @@ { - "directory": "core/static/libs" + "directory": "static/libs" } diff --git a/.gitignore b/.gitignore index fd36607..33c8265 100644 --- a/.gitignore +++ b/.gitignore @@ -1,46 +1,22 @@ *.sqlite3 celerybeat-* core/static/libs/* -memopol/config.json -# SASS Cache -.sass-cache +# libs +static/libs +node_modules -CACHE/* +# compiled css +static/stylesheets/*.min.css -# Emacs backup -# From https://github.com/github/gitignore/blob/master/Python.gitignore +# settings +memopol/config.json # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] -# C extensions -*.so - -# Distribution / packaging -.Python -env/ -venv/ -ve/ -build/ -var/ - # Installer logs pip-log.txt pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.cache -nosetests.xml -coverage.xml - -# Translations -*.mo -*.pot -# Django stuff: -*.log diff --git a/core/static/.gitignore b/core/static/.gitignore deleted file mode 100644 index a93e887..0000000 --- a/core/static/.gitignore +++ /dev/null @@ -1 +0,0 @@ -libs diff --git a/core/static/css/base.css b/core/static/css/base.css deleted file mode 100644 index 96967e8..0000000 --- a/core/static/css/base.css +++ /dev/null @@ -1,188 +0,0 @@ -@font-face{ - font-family: 'propagandaregular'; - src: url('../font/propagan-webfont.eot'); - src: url('../font/propagan-webfont.eot?#iefix') format('embedded-opentype'), url('../font/propagan-webfont.woff') format('woff'), url('../font/propagan-webfont.ttf') format('truetype'), url('../font/propagan-webfont.svg#propagandaregular') format('svg'); - font-weight: normal; - font-style: normal; -} -@font-face{ - font-family: 'sansus_webissimoitalic'; - src: url('../font/sansus_webissimo-italic-webfont-webfont.eot'); - src: url('../font/sansus_webissimo-italic-webfont-webfont.eot?#iefix') format('embedded-opentype'), url('../font/sansus_webissimo-italic-webfont-webfont.woff') format('woff'), url('../font/sansus_webissimo-italic-webfont-webfont.ttf') format('truetype'), url('../font/sansus_webissimo-italic-webfont-webfont.svg#sansus_webissimoitalic') format('svg'); - font-weight: normal; - font-style: normal; -} -@font-face{ - font-family: 'sansus_webissimoregular'; - src: url('../font/sansus_webissimo-regular-webfont-webfont.eot'); - src: url('../font/sansus_webissimo-regular-webfont-webfont.eot?#iefix') format('embedded-opentype'), url('../font/sansus_webissimo-regular-webfont-webfont.woff') format('woff'), url('../font/sansus_webissimo-regular-webfont-webfont.ttf') format('truetype'), url('../font/sansus_webissimo-regular-webfont-webfont.svg#sansus_webissimoregular') format('svg'); - font-weight: normal; - font-style: normal; -} - -td { - vertical-align: middle; -} - -body { - background-color: #E5E5E5; - font-family: "Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif; - font-size: 14px; - line-height: 1; -} - -#header { - padding: 0px 20px; - height: 78px; - line-height: 45px; -} - -.row { - width: 940px; - max-width: 100%; - min-width: 768px; - margin: 0px auto; -} - -#header, #footer { - background: none repeat scroll 0px 0px #5B8EDC; - color: #FFF; - vertical-align: middle; -} - -#header img { - float: left; - width: 74px; -} - -#header h1 { - margin: 0px; -} - -h1 { -font-size: 44px; -} - -#header h1 a { - line-height: 10px; - font-family: propagandaregular; - font-size: 26px; -} - -#header a { - color: #FFF; - text-decoration: none; -} - -#header p { - font-style: italic; - padding-left: 20px; - margin-bottom: 17px; -} - -p { - font-family: "Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif; - font-weight: normal; - font-size: 14px; - line-height: 1.6; - margin-bottom: 17px; -} - -.nav-bar { - margin-top: 0px; - background-color: #FFF; - border-bottom: 1px solid #EEE; - height: 30px; - line-height: 30px; - height: 40px; - padding: 0px; -} - -.nav-bar > li { - float: left; - display: block; - position: relative; - padding: 0px; - margin: 0px; - line-height: 38px; -} - -.nav-bar > li > a { - padding: 0px 20px; - font-size: 14px; - text-decoration: none; - color: #000; -} - -li { - text-decoration: none; - list-style: inside; -} - -.panel. { - background: none repeat scroll 0% 0% #5B8EDC; - color: #FFF; - border-color: #2284A1; - box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5) inset; -} -.panel { - background: none repeat scroll 0% 0% #F2F2F2; - border: 1px solid #E6E6E6; - margin: 0px 20px 22px; - padding: 20px; -} - -h1, h2, h3, h4, h5, h6 { - font-family: "Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif; - font-weight: bold; - color: #222; - text-rendering: optimizelegibility; - line-height: 1.1; - margin-bottom: 14px; - margin-top: 14px; -} - -h2, h3, h4 { - font-family: sansus_webissimoregular; -} - -h2 { font-size: 2em; } -h3 { font-size: 1.5em; } -h3 small { font-size: 0.6em; } - -.column, .columns { - float: left; - min-height: 1px; - padding: 0px 0px; - position: relative; -} - -.large-12.main { - background: white; - padding: 10px; - width: 920px; -} - -.large-8 { - width: 66.6667%; -} .large-4 { - width: 33.3333%; -} - -#footer { - padding: 20px 0px; - text-align: center; - line-height: 20px; - font-size: 14px; -} - -#footer ul { - margin-bottom: 11px; -} -#footer li { - display: inline; -} -#footer a { - color: #FFF; - text-decoration: underline; -} diff --git a/core/static/css/reset.css b/core/static/css/reset.css deleted file mode 100644 index 509f6e4..0000000 --- a/core/static/css/reset.css +++ /dev/null @@ -1 +0,0 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0} diff --git a/core/templates/core/home.haml b/core/templates/core/home.haml index 87a8607..c864751 100644 --- a/core/templates/core/home.haml +++ b/core/templates/core/home.haml @@ -1,13 +1,25 @@ - extends "base.html" - block content .row - .large-8.columns + .col-md-8 %p - Actually Memopol is reachable only in reduced functionality mode. - By the way, you could access to the actual list of MEPs. + Memopol is reachable only in reduced functionality mode. + By the way, you could access to + the list of MEPs. %p You can help on building the new Memopol by coding, translating, de signing, funding, etc.... - %p - Memopol Blog is available as well as the new bugtracking system - .large-4.columns - - include "core/blocks/what_is_memopol.html" + .col-md-4 + .panel.panel-default + .panel-body + %p + Memopol Blog is available as well as the new + + bugtracking system + %h3 + What is memopol? + %p + Political Memory is a tool designed by La Quadrature du Net to help + European citizens to reach members of European Parliament (MEPs) and + track their voting records on issues related to fundamental + freedoms online. More... + diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..5f3e8f2 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,41 @@ +var gulp = require('gulp'); +var less = require('gulp-less'); +var watch = require('gulp-watch'); +var minifycss = require('gulp-minify-css'); +var rename = require('gulp-rename'); +var gzip = require('gulp-gzip'); +var livereload = require('gulp-livereload'); + +var gzip_options = { + threshold: '1kb', + gzipOptions: { + level: 9 + } +}; + +var less_src = 'static/less/*.less'; + +/* Compile Our Sass */ +gulp.task('less', function() { + return gulp.src(less_src) + .pipe(less()) + .pipe(gulp.dest('static/stylesheets')) + .pipe(rename({suffix: '.min'})) + .pipe(minifycss()) + .pipe(gulp.dest('static/stylesheets')) + // .pipe(gzip(gzip_options)) + // .pipe(gulp.dest('static/stylesheets')) + .pipe(livereload()); +}); + +/* Watch Files For Changes */ +gulp.task('watch', function() { + livereload.listen(); + gulp.watch(less_src, ['less']); + + /* Trigger a live reload on any Django template changes */ + gulp.watch('**/templates/*').on('change', livereload.changed); + +}); + +gulp.task('default', ['less', 'watch']); diff --git a/memopol/settings.py b/memopol/settings.py index a5e1749..1131604 100644 --- a/memopol/settings.py +++ b/memopol/settings.py @@ -163,10 +163,13 @@ COMPRESS_ROOT = 'static/' STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - # other finders.. + # Compressor finder 'compressor.finders.CompressorFinder', ) +# Use compressor even in debug +COMPRESS_ENABLED = True + COMPRESS_PRECOMPILERS = ( # ('text/coffeescript', 'coffee --compile --stdio'), ('text/less', 'lessc {infile} {outfile}'), diff --git a/static/coffeescript/home.coffee b/static/coffeescript/home.coffee deleted file mode 100644 index e69de29..0000000 diff --git a/core/static/font/propagan-webfont.eot b/static/fonts/propagan-webfont.eot similarity index 100% rename from core/static/font/propagan-webfont.eot rename to static/fonts/propagan-webfont.eot diff --git a/core/static/font/propagan-webfont.svg b/static/fonts/propagan-webfont.svg similarity index 100% rename from core/static/font/propagan-webfont.svg rename to static/fonts/propagan-webfont.svg diff --git a/core/static/font/propagan-webfont.ttf b/static/fonts/propagan-webfont.ttf similarity index 100% rename from core/static/font/propagan-webfont.ttf rename to static/fonts/propagan-webfont.ttf diff --git a/core/static/font/propagan-webfont.woff b/static/fonts/propagan-webfont.woff similarity index 100% rename from core/static/font/propagan-webfont.woff rename to static/fonts/propagan-webfont.woff diff --git a/core/static/font/sansus_webissimo-italic-webfont-webfont.eot b/static/fonts/sansus_webissimo-italic-webfont-webfont.eot similarity index 100% rename from core/static/font/sansus_webissimo-italic-webfont-webfont.eot rename to static/fonts/sansus_webissimo-italic-webfont-webfont.eot diff --git a/core/static/font/sansus_webissimo-italic-webfont-webfont.svg b/static/fonts/sansus_webissimo-italic-webfont-webfont.svg similarity index 100% rename from core/static/font/sansus_webissimo-italic-webfont-webfont.svg rename to static/fonts/sansus_webissimo-italic-webfont-webfont.svg diff --git a/core/static/font/sansus_webissimo-italic-webfont-webfont.ttf b/static/fonts/sansus_webissimo-italic-webfont-webfont.ttf similarity index 100% rename from core/static/font/sansus_webissimo-italic-webfont-webfont.ttf rename to static/fonts/sansus_webissimo-italic-webfont-webfont.ttf diff --git a/core/static/font/sansus_webissimo-italic-webfont-webfont.woff b/static/fonts/sansus_webissimo-italic-webfont-webfont.woff similarity index 100% rename from core/static/font/sansus_webissimo-italic-webfont-webfont.woff rename to static/fonts/sansus_webissimo-italic-webfont-webfont.woff diff --git a/core/static/font/sansus_webissimo-regular-webfont-webfont.eot b/static/fonts/sansus_webissimo-regular-webfont-webfont.eot similarity index 100% rename from core/static/font/sansus_webissimo-regular-webfont-webfont.eot rename to static/fonts/sansus_webissimo-regular-webfont-webfont.eot diff --git a/core/static/font/sansus_webissimo-regular-webfont-webfont.svg b/static/fonts/sansus_webissimo-regular-webfont-webfont.svg similarity index 100% rename from core/static/font/sansus_webissimo-regular-webfont-webfont.svg rename to static/fonts/sansus_webissimo-regular-webfont-webfont.svg diff --git a/core/static/font/sansus_webissimo-regular-webfont-webfont.ttf b/static/fonts/sansus_webissimo-regular-webfont-webfont.ttf similarity index 100% rename from core/static/font/sansus_webissimo-regular-webfont-webfont.ttf rename to static/fonts/sansus_webissimo-regular-webfont-webfont.ttf diff --git a/core/static/font/sansus_webissimo-regular-webfont-webfont.woff b/static/fonts/sansus_webissimo-regular-webfont-webfont.woff similarity index 100% rename from core/static/font/sansus_webissimo-regular-webfont-webfont.woff rename to static/fonts/sansus_webissimo-regular-webfont-webfont.woff diff --git a/static/images/foundation/orbit/bullets.jpg b/static/images/foundation/orbit/bullets.jpg deleted file mode 100644 index f3c734f0b3d2aecb59957d8abdfbf5bb7a8a0abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657 zcmex=C5UDGKfoZ!!N9{H%FHOpz$D1XEXer(2tz8! zVL(SB04E0vng~!%fPsODgN2QW8K#zromrTLl}(&Ol2KHQlR-#CRZT)r$x+#rOAw|6 zZsh-43_L)MOoGgU4E7Ai-u`EZxH{$P?jWubKPNGXpv$r0Ofvx1#%#3@^2e&FO7Z2n6nAoQGhDl`a;fAEBQ;WGPZ4Yf{)bh((wvvf!%D10= z+({<8mRBX1-0G}oIclJ^Lm{xmt6WyldTHaz{|o|Fvw}N(KAaZ6+M^+$`e5b z)b=}HCw*CYI6o#8t%9c6Q~>zr;O1eWh4YrsjTwU5x9W{1bV8dgrvF zpF#WQ<)3HpdiQgYp0q%8+QaYeQv}Mlnti_T=}}PK&hocQ4u81Wzx-#({^JFwf2ICs zh}qvTEB4x%?JCJr?`AzH=hEGJ-ecRl>DtqlZCQE#>W_0RQ+A!!h`wR+FJ<+9y$AOH GZvp_rbGwrO diff --git a/static/images/foundation/orbit/left-arrow-small.png b/static/images/foundation/orbit/left-arrow-small.png deleted file mode 100644 index b3ff033150dff204a48a69835b0ffbd08806e426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3163 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 BlyPu}X zr$a+S!=J=6GFm)nVD4jJmnk^F=-$B02jnUrU<7hkMe2yX&D&o6>i56gtxV^QL)$g=d3cmIBQwu6RG9>&)C(Qp0TR8JY!aGd&a2Vv5a56YZj{<2-cn&YV9dq5Bv@O&0bz<}TRg#Gg5^Sj!0B^`iq%;4$j K=d#Wzp$PyAmD(Es diff --git a/static/images/foundation/orbit/loading.gif b/static/images/foundation/orbit/loading.gif deleted file mode 100644 index 969f50597a35944c2b347a1a3c1786915b7f85f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2608 zcmdVcYfw{H0tfI*ZgP`cW8OC;H#`CcWRTZVr4ii@g+BXC~aqF_uFn~+VkOj zIA6}0-<Uy#$g#LwFPH-F?NB>NFPX~8)J;h5sYDsHJ-b9 z));53u>nk@{PUZTeQrhvktXKgJMXGSZMWVBhv%$1kkD_l7zsd+>O$rGgwH}zXSOD+ zAN{myeC_X�xnl(rspR>h;YP7ve1?`vn|B#q%T0{*kGusPQ1VElyHoH}5X5vB<-4 zV*k0aF$Kbq1hWQT>WSs-H;GTDsDu?Zm;Y`ws1(tN-x~qnR7keG4}Z!#>%Nv!@ukrc zlJ#fmh;+4KkfYo8;F5jrZ+gIsmI&|2S1+AWRQgU&& zDZ8bGE=^IhI3~=){R6}eAm~qhgh71>1H}I{hzZfYESzyIO3=qA;hp1vYab87k4;_f zo#m2l%(%|Y@)}fE?1F~~AMCda(Wlgp z@Q(+er^uB~mFgeQ$1Lt-FS4vpK6$I5+H_?7?&riow^9ZM_giWVi7hdfo_uiLOYRwg zE9J1|-cfgnfA^EbA;{Nl<0`Mr(2@~VJ-rUUXl&UdzE#2SC7Wzm4TUEI+??1mud3LA&3n8` zN@2ch`WbE;BO*?KWpcl|LU#kavC`8+54G}25#J0yfOK-&;vZfY;IFJ9GsvE1L1gox zgCrWYqT`2mM*PJa6?=5OhdYhx+N5Mq_=)MI$;VbLC9R9KRnHT+G1cO2OGZGs2qU0t z9{;AS+An73R7lGc}37fCwI0)tO(QLc2u;GQL3W4qU`f8x40YL%}Ls?_wNeyt^(5 zSH6{THU6lt;uLTgz3(y{7E#XIu>a7PoHjq26hJ@Ry0s*7>yyFka^2f#*emnag8cF} zA#43e=eKo-;U<MDh?J$blat+ZjnxPkve1Z@-Id zH4&pXH31FFx#ZT4xOznXgZHmPc-4L80tr7mF{6&h84qo(AWnZcs!Gtm7AFjYD(VASzJ5a+^sYr<(Y<17 z-8}^Om6n}P@cBzZ$BrE`O{(p2qWFM!V07yFNA&2>)s(ny@R6hb*Ex3Ep*2@i_?%aR z$79cWx1WjLA*=S&+!xO@h*q4)|Kap|aR?7yX}08VcN_gx0V0dTn?Bh=t_|FEY1={X z&DtVo`!{xHfYN8?%hQzLmj$U=g;Zemo+y}>2Ix?Mt8%H`3|X}87_k9yhlCn7>#%`{ zkqZHjy}KcVUda9!V;2&@Jh~<7xB+~}z_^CV-XrBTj>CB*D33WV zW#&P1<1>cYxp~8uI}1~W_`I>X$?Oq>b?(Ntgn{v)ywju7q;;yGjhBJeng^Y?*KOO5R%vm`A9ZIv91KsJ^Y@9bximKooxR5xV4(uf@x55fTM@eL^?|8ej>d(KaA8C e+Qgee&ab)=ys&@6bg#4GHaRP9)6)NFdHf4M2#AmX diff --git a/static/images/foundation/orbit/mask-black.png b/static/images/foundation/orbit/mask-black.png deleted file mode 100644 index 02f3fbab28597dfc981bb8a5ba787c6e09630cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP) zlkLppW%4q~Z1VUn@y)kil9!jfC6rPkaER6*-2-6a2AiL=NTnY-uv&w%rfN|B9CRT_ z9Yhh|;LHIc!4j#CXzY>bh(c|JC2H5PJsB-=#)%&~;wg3=*PK{%5id=XBF7Np&UHlm zO0^LQdIyo4CFhNypooZ}1VoFzf^ho(;m%etmP9QDvzFk_Mlc1Yd}bDX1; zJlW*oj$zI)BFcTo3#vsNoRnABf&y1VoaN^sibG~o9P-YJ)AOVxfZ)Qm+T`d9&7yoc z7ff6Wj$I3mYy>0MYuLW1N*lp1z+Gx8IAM5EoRW1A7rkE0Qt;hHfn7FAm5pG}nJoE6 zPD$Sw*dTlseJmFO*<9*Z0z+}ZeAKIWQs&4BCX>{zvVBP2z zagZWk2Fbon_-}GmSokyuHA_@#o=hGL0~j2ka?zu~3xvVMr@@)V+^5eR%n_@1@55l+ z`14SWw`119h+ktRvPc)9-o+JeLwzjFLwwC_7;Zv(4{mt!r@mj*6XGy_0WId(;lKp# QI{*Lx07*qoM6N<$f;iXnYXATM diff --git a/static/images/foundation/orbit/pause-black.png b/static/images/foundation/orbit/pause-black.png deleted file mode 100644 index 5fb087545b00210e8f8198829d2ebd120eebcab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 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 diff --git a/static/images/foundation/orbit/rotator-black.png b/static/images/foundation/orbit/rotator-black.png deleted file mode 100644 index 8df4d31af3b7fbc573ac4d75b233de4a2ded79b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)f4_gm_6NZp+vde& z6y)3b8Qb=zaB2wABs3l0TtYHaO+o-TbqQ6QSvLyT+*$tBTpwt?ifq2dC- zv!r1iS*YO|fUVS&w~{$jU7uxd!;&!Bxyo*v;_x1FQf{Ts@~dT5h8o&*6KTUF)bPtP z%tH-Vmf{RSP#<=g^eLHb z0Y}6QTM;+zxogvQ1z0-ZHhL0>0XSrokDObNx&WLq_FWPaFl7KvVgkZ$SH!c54S2)I zVi6ONy1c3bpDbxCKu) a8t@y-y4ghe)oPjm0000 zlkLppW%4q~Z1VUn@y)kil9!jfC6rPkaER6*-2-6a2AiL=NTnY-uv&w%rfN|B9CRT_ z9Yhh|;LHIc!4j#CXzY>bh(c|JC2H5PJsB-=#)%&~;wg3=*PK{%5id=XBF7Np&UHlm zO0^LQdIyo4CFhNypooZ}1VoFzf^ho(;m%etmP9QDvzFk_Mlc1Yd}bDX1; zJlW*oj$zI)BFcTo3#vsNoRnABf&y1VoaN^sibG~o9P-YJ)AOVxfZ)Qm+T`d9&7yoc z7ff6Wj$I3mYy>0MYuLW1N*lp1z+Gx8IAM5EoRW1A7rkE0Qt;hHfn7FAm5pG}nJoE6 zPD$Sw*dTlseJmFO*<9*Z0z+}ZeAKIWQs&4BCX>{zvVBP2z zagZWk2Fbon_-}GmSokyuHA_@#o=hGL0~j2ka?zu~3xvVMr@@)V+^5eR%n_@1@55l+ z`14SWw`119h+ktRvPc)9-o+JeLwzjFLwwC_7;Zv(4{mt!r@mj*6XGy_0WId(;lKp# QI{*Lx07*qoM6N<$f;iXnYXATM diff --git a/static/images/logo.png b/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b08d2b5a8905711381c153391d118a8e90f521 GIT binary patch literal 2378 zcmV-Q3AOf#P)UN&rREF2l-t@Z8?`xLa=p@5QY z000P`Nkl2l*B3{K1q2K)V=cH8bY0VH9-S9S*d*qupR{8{KiNXp|eXwaZR zg9Z&6G-%MEL4%Ga&iTR^TfYAPZ!kN%%IO)?BvbvGvj9x< zqLJUz%M9Lcxl_U=FnX@RY|7iDoo5V}nWJ$$dk>$z>2y;}vt+nA76xQapJ&+bkQku~ zxLLd#6HBnC0+rrEzB40Nw zFhenz5_0{djn6quN1=O68O861zC-@ba6=e$j)}A_XlMj{Iyq+KWtWZk#CIf94kS)L z*;z8Y{iXoC)Z2IjC|uJ;HW9{DmVPhumxtWc{4$KkPKUmd?*IGn%;Idip$*k#$5BNd z<#Jo*Lea@h6nY9gO`~3%a#`u* zrhw_)^pu^ZQQ6~SN|O^aFJySr7t4}dHzd-td}wloBBH!)da3174Zbqh5`maY*FSn$ zrIc%$P0ufs=DX7W`2~?I-*@Io=xZD&fhErinU&gpz2DGH)5s+(gaLMm1a;YBf zzMu10I&P9H^Zc7U%j*|Df#Lty-hLhWCE+JC+}9af7aDPgI+L=)V$M%fhn>p?+_LWU zV~y$0uKXxm9d=!N^{;d#ZsN$@5>}Zy9@UhIl#{&$S!-=%*HOhpyX*HvlfPP`(>**1`;Q%5K$_3&5VZ;Djq&H;P6RXb3%Y~q-EC~D z719A&?ckDyFwZkKD|ndh&kQi&K;3zlA{uUR|8;-_NpE{%9gqP^C9%7*mbGTMrIE2Y zOl}ldd+ioYxPNdLL~X2%#`NZHOpaz);v*7@Uekjsi4Wu3@n1M>EGu7(Rckxy;%^Fhdql4w5}d6l%d$8q}a zb|Vku+Tu73HD|~oEgR6Q`o|fvcpP%thjx3S0QPt~1Gy%Tcg=1N2}Emlp)Dwa99~O| zYFpe_>_RhgL^ce`7T>A+>&4GYvAP;#kcOn;%2@FqqwTp|T&M4Sf zL-ne^gnU_GJlB@7n;{Ekzyi^2xS+ETP>Z@Q2l%sQY2KauN5bP7eq=h{XR8aXR^s5GLvGU!z@s*1+ucY{09(1_?^cOb88P~9kn zG0PESBX-;rL3PJW$%}=R@?x>NGsM{V9aUb6Ud|x;P?zG>SmiTfY+gFmlR>k{TN`9O z(@?$lu6|*y;bM>%SC|n@ zx);&O4@se7q7NQp`MR?#a7CWv&|1T^M;8>|_&`<=zx+WWf732ud815PAQjrtku`09 z&xhcgi-+KzWmR4ZJsu^?*`31j){|IA9qu%VvU6mN$ODxXwe{RSXJk+l5pdZm5By1w ztS>es+sb#A6vgspF^=Rc@zZwMT$;!e_)_wKl6rjMALzp17B?N;k!Go0Wt&b<+~zw^=lp0wZIA0h50v%JI?zH<-i4iuZ8_?M zktpvu2)VJ!JJ2RYObit^6a)2G_KxgAj}j$24~O4GJGHaHy-am5_hbohhm z43Dy$(nbCAYdPmuBPZde>9bi_-Z<1ekJB&hp9gLJq1yR@!Sq-6&x4fn*O_9Ib}masFDdYib1gpU3ps=hm7M>??-Ai_OJ5tu6li:nth-child(2n+1)').css({clear: 'left'}); - // $('.block-grid.three-up>li:nth-child(3n+1)').css({clear: 'left'}); - // $('.block-grid.four-up>li:nth-child(4n+1)').css({clear: 'left'}); - // $('.block-grid.five-up>li:nth-child(5n+1)').css({clear: 'left'}); - }); - -})(jQuery); diff --git a/static/javascripts/backbone-min.js b/static/javascripts/backbone-min.js deleted file mode 100644 index c1c0d4f..0000000 --- a/static/javascripts/backbone-min.js +++ /dev/null @@ -1,38 +0,0 @@ -// Backbone.js 0.9.2 - -// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Backbone may be freely distributed under the MIT license. -// For all details and documentation: -// http://backbonejs.org -(function(){var l=this,y=l.Backbone,z=Array.prototype.slice,A=Array.prototype.splice,g;g="undefined"!==typeof exports?exports:l.Backbone={};g.VERSION="0.9.2";var f=l._;!f&&"undefined"!==typeof require&&(f=require("underscore"));var i=l.jQuery||l.Zepto||l.ender;g.setDomLibrary=function(a){i=a};g.noConflict=function(){l.Backbone=y;return this};g.emulateHTTP=!1;g.emulateJSON=!1;var p=/\s+/,k=g.Events={on:function(a,b,c){var d,e,f,g,j;if(!b)return this;a=a.split(p);for(d=this._callbacks||(this._callbacks= -{});e=a.shift();)f=(j=d[e])?j.tail:{},f.next=g={},f.context=c,f.callback=b,d[e]={tail:g,next:j?j.next:f};return this},off:function(a,b,c){var d,e,h,g,j,q;if(e=this._callbacks){if(!a&&!b&&!c)return delete this._callbacks,this;for(a=a?a.split(p):f.keys(e);d=a.shift();)if(h=e[d],delete e[d],h&&(b||c))for(g=h.tail;(h=h.next)!==g;)if(j=h.callback,q=h.context,b&&j!==b||c&&q!==c)this.on(d,j,q);return this}},trigger:function(a){var b,c,d,e,f,g;if(!(d=this._callbacks))return this;f=d.all;a=a.split(p);for(g= -z.call(arguments,1);b=a.shift();){if(c=d[b])for(e=c.tail;(c=c.next)!==e;)c.callback.apply(c.context||this,g);if(c=f){e=c.tail;for(b=[b].concat(g);(c=c.next)!==e;)c.callback.apply(c.context||this,b)}}return this}};k.bind=k.on;k.unbind=k.off;var o=g.Model=function(a,b){var c;a||(a={});b&&b.parse&&(a=this.parse(a));if(c=n(this,"defaults"))a=f.extend({},c,a);b&&b.collection&&(this.collection=b.collection);this.attributes={};this._escapedAttributes={};this.cid=f.uniqueId("c");this.changed={};this._silent= -{};this._pending={};this.set(a,{silent:!0});this.changed={};this._silent={};this._pending={};this._previousAttributes=f.clone(this.attributes);this.initialize.apply(this,arguments)};f.extend(o.prototype,k,{changed:null,_silent:null,_pending:null,idAttribute:"id",initialize:function(){},toJSON:function(){return f.clone(this.attributes)},get:function(a){return this.attributes[a]},escape:function(a){var b;if(b=this._escapedAttributes[a])return b;b=this.get(a);return this._escapedAttributes[a]=f.escape(null== -b?"":""+b)},has:function(a){return null!=this.get(a)},set:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c||(c={});if(!d)return this;d instanceof o&&(d=d.attributes);if(c.unset)for(e in d)d[e]=void 0;if(!this._validate(d,c))return!1;this.idAttribute in d&&(this.id=d[this.idAttribute]);var b=c.changes={},h=this.attributes,g=this._escapedAttributes,j=this._previousAttributes||{};for(e in d){a=d[e];if(!f.isEqual(h[e],a)||c.unset&&f.has(h,e))delete g[e],(c.silent?this._silent: -b)[e]=!0;c.unset?delete h[e]:h[e]=a;!f.isEqual(j[e],a)||f.has(h,e)!=f.has(j,e)?(this.changed[e]=a,c.silent||(this._pending[e]=!0)):(delete this.changed[e],delete this._pending[e])}c.silent||this.change(c);return this},unset:function(a,b){(b||(b={})).unset=!0;return this.set(a,null,b)},clear:function(a){(a||(a={})).unset=!0;return this.set(f.clone(this.attributes),a)},fetch:function(a){var a=a?f.clone(a):{},b=this,c=a.success;a.success=function(d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)}; -a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},save:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c=c?f.clone(c):{};if(c.wait){if(!this._validate(d,c))return!1;e=f.clone(this.attributes)}a=f.extend({},c,{silent:!0});if(d&&!this.set(d,c.wait?a:c))return!1;var h=this,i=c.success;c.success=function(a,b,e){b=h.parse(a,e);if(c.wait){delete c.wait;b=f.extend(d||{},b)}if(!h.set(b,c))return false;i?i(h,a):h.trigger("sync",h,a,c)};c.error=g.wrapError(c.error, -h,c);b=this.isNew()?"create":"update";b=(this.sync||g.sync).call(this,b,this,c);c.wait&&this.set(e,a);return b},destroy:function(a){var a=a?f.clone(a):{},b=this,c=a.success,d=function(){b.trigger("destroy",b,b.collection,a)};if(this.isNew())return d(),!1;a.success=function(e){a.wait&&d();c?c(b,e):b.trigger("sync",b,e,a)};a.error=g.wrapError(a.error,b,a);var e=(this.sync||g.sync).call(this,"delete",this,a);a.wait||d();return e},url:function(){var a=n(this,"urlRoot")||n(this.collection,"url")||t(); -return this.isNew()?a:a+("/"==a.charAt(a.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(a){return a},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},change:function(a){a||(a={});var b=this._changing;this._changing=!0;for(var c in this._silent)this._pending[c]=!0;var d=f.extend({},a.changes,this._silent);this._silent={};for(c in d)this.trigger("change:"+c,this,this.get(c),a);if(b)return this;for(;!f.isEmpty(this._pending);){this._pending= -{};this.trigger("change",this,a);for(c in this.changed)!this._pending[c]&&!this._silent[c]&&delete this.changed[c];this._previousAttributes=f.clone(this.attributes)}this._changing=!1;return this},hasChanged:function(a){return!arguments.length?!f.isEmpty(this.changed):f.has(this.changed,a)},changedAttributes:function(a){if(!a)return this.hasChanged()?f.clone(this.changed):!1;var b,c=!1,d=this._previousAttributes,e;for(e in a)if(!f.isEqual(d[e],b=a[e]))(c||(c={}))[e]=b;return c},previous:function(a){return!arguments.length|| -!this._previousAttributes?null:this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},isValid:function(){return!this.validate(this.attributes)},_validate:function(a,b){if(b.silent||!this.validate)return!0;var a=f.extend({},this.attributes,a),c=this.validate(a,b);if(!c)return!0;b&&b.error?b.error(this,c,b):this.trigger("error",this,c,b);return!1}});var r=g.Collection=function(a,b){b||(b={});b.model&&(this.model=b.model);b.comparator&&(this.comparator=b.comparator); -this._reset();this.initialize.apply(this,arguments);a&&this.reset(a,{silent:!0,parse:b.parse})};f.extend(r.prototype,k,{model:o,initialize:function(){},toJSON:function(a){return this.map(function(b){return b.toJSON(a)})},add:function(a,b){var c,d,e,g,i,j={},k={},l=[];b||(b={});a=f.isArray(a)?a.slice():[a];c=0;for(d=a.length;c=b))this.iframe=i('