From 21e063ac8eb59b77dfa797313a231882db6f1992 Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Mon, 3 Jun 2013 18:28:10 -0400 Subject: [PATCH 01/11] mobile header fix --- static/media/less/core.less | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/static/media/less/core.less b/static/media/less/core.less index 8791b54..ab60894 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -271,7 +271,6 @@ nav.pagination { /*mobile*/ @media only screen -and (min-width : 320px) and (max-width : 599px) { .container p, .container h1, .container h2, .footer .upper p { width:inherit; @@ -297,6 +296,14 @@ and (max-width : 599px) { margin-left:auto; margin-right:auto; } + .navbar .brand { + background-image:url('../img/csol_logo_sm.png'); + height:150px; + background-position:top center; + } + .navbar-inner > .container { + width:100%; + } .form-horizontal { .control-label { text-align:left; @@ -713,10 +720,7 @@ input[type="password"].metered { @media only screen and (min-width : 321px) and (max-width : 940px ) { - .navbar .brand { - background-image: url('../img/csol_logo_480.png'); - height:166px; - } + } /* ------------------------------ */ @@ -724,10 +728,7 @@ and (max-width : 940px ) { /* ------------------------------ */ @media only screen and (max-width : 320px) { - .navbar .brand { - background-image: url('../img/csol_logo_320.png'); - height:116px; - } + } /* ------------------------------ */ From 8ffc028bfa8adef7ab2af468e41585377ced42f4 Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Mon, 3 Jun 2013 18:28:18 -0400 Subject: [PATCH 02/11] mobile header fix --- static/media/css/core.css | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/static/media/css/core.css b/static/media/css/core.css index 816b514..38201d6 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -241,7 +241,7 @@ nav.pagination ul li a { overflow: hidden; } /*mobile*/ -@media only screen and (min-width: 320px) and (max-width: 599px) { +@media only screen and (max-width: 599px) { .container p, .container h1, .container h2, @@ -272,6 +272,14 @@ nav.pagination ul li a { margin-left: auto; margin-right: auto; } + .navbar .brand { + background-image: url('../img/csol_logo_sm.png'); + height: 150px; + background-position: top center; + } + .navbar-inner > .container { + width: 100%; + } .form-horizontal .control-label { text-align: left; float: none; @@ -604,19 +612,13 @@ input[type="password"].metered:focus:invalid:focus + .password-meter { /* Mobile : width > iphone ------ */ /* ------------------------------ */ @media only screen and (min-width: 321px) and (max-width: 940px) { - .navbar .brand { - background-image: url('../img/csol_logo_480.png'); - height: 166px; - } + } /* ------------------------------ */ /* Mobile : width <= iphone ----- */ /* ------------------------------ */ @media only screen and (max-width: 320px) { - .navbar .brand { - background-image: url('../img/csol_logo_320.png'); - height: 116px; - } + } /* ------------------------------ */ /* CSOL-site SPECIFIC ----------- */ From be803b5cdd8b01e64e2e1e09cefa142660b0a802 Mon Sep 17 00:00:00 2001 From: Andrew Hayward Date: Tue, 4 Jun 2013 01:52:59 +0100 Subject: [PATCH 03/11] Minor badge template updates --- views/badges/single.html | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/views/badges/single.html b/views/badges/single.html index 53a132e..d27d2f8 100644 --- a/views/badges/single.html +++ b/views/badges/single.html @@ -2,7 +2,7 @@ {% set pageTitle = badge.name %} {% block content %} -
+
@@ -10,15 +10,17 @@

What is this badge about?

{{ badge.description }}

-

How can you earn it?

+ {% if not user or user.type == 'learner' %} +

How can you earn it?

-

- {% if badge.activityType == 'offline' %} - Claim this badge - {% else %} - Apply - {% endif %} -

+

+ {% if badge.activityType == 'offline' %} + Claim this badge + {% else %} + Apply + {% endif %} +

+ {% endif %}
From e7d5bc57aee4190a7069c401cb027328d4592ded Mon Sep 17 00:00:00 2001 From: Atul Varma Date: Mon, 3 Jun 2013 22:18:28 -0400 Subject: [PATCH 04/11] Health check subsystems can provide richer data about their status. Specifically, if they set a 'notes' property on their metadata object, it will be displayed in the console version of their results, for easier debugging. --- aestimia.js | 3 ++- controllers/health-check.js | 29 +++++++++++++++++++++-------- db.js | 4 +++- mandrill.js | 8 ++++++-- openbadger.js | 3 ++- s3.js | 13 +++++++++---- 6 files changed, 43 insertions(+), 17 deletions(-) diff --git a/aestimia.js b/aestimia.js index f0c1623..4f7dd8d 100644 --- a/aestimia.js +++ b/aestimia.js @@ -169,10 +169,11 @@ aestimia.defaultOptions = { }; module.exports = aestimia; -module.exports.healthCheck = function(cb) { +module.exports.healthCheck = function(meta, cb) { // A random email should guarantee we bust through any caches. var email = 'healthCheck_test_' + Math.floor(Math.random() * 100000) + '@mozilla.org'; + meta.notes = ENDPOINT; aestimia.get('/submissions?learner=' + encodeURIComponent(email), cb); }; diff --git a/controllers/health-check.js b/controllers/health-check.js index f82d03f..12423a7 100644 --- a/controllers/health-check.js +++ b/controllers/health-check.js @@ -6,31 +6,42 @@ var colors = require('colors'); const CHECKMARK = "\u2713"; function checker(fn) { + var meta = {}; + var result = function(obj) { + Object.keys(obj).forEach(function(prop) { + meta[prop] = obj[prop]; + }); + return meta; + }; + return function check(cb) { var timeout = setTimeout(function() { timeout = null; - cb(null, {status: "FAILED", reason: "TIMEOUT"}); + cb(null, result({status: "FAILED", reason: "TIMEOUT"})); }, module.exports.TIMEOUT); try { - fn(function(err) { + fn(meta, function(err) { if (timeout === null) return; clearTimeout(timeout); timeout = null; if (err) - return cb(null, {status: "FAILED", reason: err.toString()}); - cb(null, {status: "OK"}); + return cb(null, result({ + status: "FAILED", + reason: err.toString() + })); + cb(null, result({status: "OK"})); }); } catch (e) { clearTimeout(timeout); timeout = null; - cb(null, {status: "FAILED", reason: e.toString()}); + cb(null, result({status: "FAILED", reason: e.toString()})); } }; } function sessionStorageChecker(sessionStore) { - return checker(function checkSessionStorage(cb) { + return checker(function checkSessionStorage(meta, cb) { var randomNumber = Math.floor(Math.random() * 10000000); var sid = "healthCheck_sessionStorage_" + randomNumber; var session = { @@ -79,10 +90,12 @@ function resultsToConsoleString(results) { var info = results[name]; if (info && typeof(info) == "object" && info.status) { + var fullName = name; + if (info.notes) fullName += " (" + info.notes + ")"; if (info.status == "OK") { - lines.push(CHECKMARK.green + " " + name.grey); + lines.push(CHECKMARK.green + " " + fullName.grey); } else { - lines.push("x".red + " " + name.grey + " " + + lines.push("x".red + " " + fullName.grey + " " + (info.reason ? info.reason : "")); } } diff --git a/db.js b/db.js index b9376e7..42b3d86 100644 --- a/db.js +++ b/db.js @@ -97,7 +97,7 @@ db.model = function(name) { } db.type = Sequelize; -db.healthCheck = function(cb) { +db.healthCheck = function(meta, cb) { var conn = require('mysql').createConnection({ host: DB_HOST, port: DB_PORT, @@ -105,6 +105,8 @@ db.healthCheck = function(cb) { user: USERNAME, password: PASSWORD, }); + meta.notes = 'mysql://' + USERNAME + "@" + (DB_HOST || "localhost") + + ':' + (DB_PORT || '3306') + '/' + DB_NAME; conn.connect(); conn.query('SHOW TABLES', cb); conn.end(); diff --git a/mandrill.js b/mandrill.js index 340172c..78aba0e 100644 --- a/mandrill.js +++ b/mandrill.js @@ -115,14 +115,18 @@ module.exports = { } }; -module.exports.healthCheck = function(cb) { - if (FAKE_EMAIL) return cb(null); +module.exports.healthCheck = function(meta, cb) { + if (FAKE_EMAIL) { + meta.notes = "fake email"; + return cb(null); + } var opts = { url: url.resolve(ENDPOINT, 'users/ping.json'), json: { key: KEY } }; + meta.notes = ENDPOINT; request.post(opts, function(err, response, body) { if (err) return cb(err); diff --git a/openbadger.js b/openbadger.js index ee6b026..3272fcc 100644 --- a/openbadger.js +++ b/openbadger.js @@ -383,12 +383,13 @@ module.exports.getFilters = function getFilters () { }; } module.exports.updateOrgs = updateOrgs; -module.exports.healthCheck = function(cb) { +module.exports.healthCheck = function(meta, cb) { // Use a privileged API call to ensure we're testing the JWT secret. // A random email should guarantee we bust through any caches. var email = 'healthCheck_test_' + Math.floor(Math.random() * 100000) + '@mozilla.org'; + meta.notes = ENDPOINT; openbadger.getUserBadges({ session: {user: {email: email}} }, cb); diff --git a/s3.js b/s3.js index ab4d1b4..da2ed29 100644 --- a/s3.js +++ b/s3.js @@ -5,9 +5,9 @@ const S3_REQUIRED_ENV_VARS = [ "CSOL_AWS_SECRET", "CSOL_AWS_BUCKET" ]; - -if (process.env['NODE_ENV'] == 'development' && - process.env["CSOL_AWS_FAKE_S3_DIR"]) { +const USE_FAKE_S3 = process.env['NODE_ENV'] == 'development' && + process.env["CSOL_AWS_FAKE_S3_DIR"]; +if (USE_FAKE_S3) { var FakeS3 = require('./s3-fake'); s3 = new FakeS3(process.env["CSOL_AWS_FAKE_S3_DIR"]); } else { @@ -25,11 +25,16 @@ if (process.env['NODE_ENV'] == 'development' && }); } -s3.healthCheck = function(cb) { +s3.healthCheck = function(meta, cb) { var async = require('async'); var rnd = Math.floor(Math.random() * 100000).toString(); var url = '/healthChecker_test_' + rnd; + if (USE_FAKE_S3) + meta.notes = 'fake s3'; + else + meta.notes = process.env["CSOL_AWS_BUCKET"] + '.s3.amazonaws.com'; + async.series([ s3.putBuffer.bind(s3, new Buffer(rnd), url, { 'Content-Type': 'text/plain' From 0eb0f7e07d1e9e71ba8adec3801a0486d6acf427 Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Tue, 4 Jun 2013 00:16:43 -0400 Subject: [PATCH 05/11] mobile bug fixes plus sliding menu --- static/media/css/core.css | 39 +++++++++++++++++++++++++++------ static/media/js/custom_logic.js | 19 ++++++++++++++++ static/media/less/core.less | 24 ++++++++++++++------ 3 files changed, 68 insertions(+), 14 deletions(-) diff --git a/static/media/css/core.css b/static/media/css/core.css index 38201d6..43fbc72 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -251,15 +251,16 @@ nav.pagination ul li a { #main { padding-top: 15px; } + #main .navbar-form select { + margin: 0 auto; + display: block; + } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: block; } - .filter label { - display: none; - } .navbar .nav-wrap, .container, .navbar-static-top .container, @@ -301,16 +302,40 @@ nav.pagination ul li a { .navbar .nav-wrap { width: 90%; margin: 0 auto; + border-radius: 5px; } - .navbar .nav-wrap ul.nav li { + .navbar .nav-wrap ul.nav li, + .navbar .nav-wrap #dynWrap li, + .navbar .nav-wrap ul.nav li.active, + .navbar .nav-wrap #dynWrap li.active { display: block; } - .navbar .nav-wrap ul.nav li a { - padding: 5px 0; + .navbar .nav-wrap ul.nav li a, + .navbar .nav-wrap #dynWrap li a, + .navbar .nav-wrap ul.nav li.active a, + .navbar .nav-wrap #dynWrap li.active a, + .navbar .nav-wrap ul.nav li a:visited, + .navbar .nav-wrap #dynWrap li a:visited, + .navbar .nav-wrap ul.nav li.active a:visited, + .navbar .nav-wrap #dynWrap li.active a:visited, + .navbar .nav-wrap ul.nav li a:hover, + .navbar .nav-wrap #dynWrap li a:hover, + .navbar .nav-wrap ul.nav li.active a:hover, + .navbar .nav-wrap #dynWrap li.active a:hover { + padding: 7px 0; + text-transform: capitalize; + line-height: 14px; + color: #000; + text-decoration: none; + display: block; + font-weight: 400; } .navbar .nav-wrap ul.nav li:nth-child(even), + .navbar .nav-wrap #dynWrap li:nth-child(even), .navbar .nav-wrap ul.nav > .active > a, - .navbar .nav-wrap ul.nav > .active > a:hover { + .navbar .nav-wrap #dynWrap > .active > a, + .navbar .nav-wrap ul.nav > .active > a:hover, + .navbar .nav-wrap #dynWrap > .active > a:hover { border-left: none; border-right: none; } diff --git a/static/media/js/custom_logic.js b/static/media/js/custom_logic.js index 9e75c08..bb4281c 100644 --- a/static/media/js/custom_logic.js +++ b/static/media/js/custom_logic.js @@ -43,5 +43,24 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob $('li.badges a').append(' Badges &'); $('li.about a').append(' the program') $('li.challenges a').append(' your future.'); + } else { + //if(mob) { + var dynWrap = $(''); + var dynList = $('
  • '); + var dynLink = $('Menu').click(function(){ + $('#dynWrap').slideToggle(); + return false; + }); + + $('ul.nav').prepend(dynList.append(dynLink), dynWrap); + //dynLink.appendTo(dynWrap.prependTo()); + + $('ul.nav li').each(function(){ + if ($(this).attr("id") != "dyn") { + $(this).appendTo("#dynWrap"); + } + }); + + //} } }); \ No newline at end of file diff --git a/static/media/less/core.less b/static/media/less/core.less index ab60894..d1bc17c 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -277,13 +277,16 @@ and (max-width : 599px) { } #main { padding-top:15px; + .navbar-form { + select { + margin:0 auto; + display:block; + } + } } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display:block; } - .filter label { - display:none; - } .navbar .nav-wrap, .container, .navbar-static-top .container, @@ -330,11 +333,18 @@ and (max-width : 599px) { .nav-wrap { width:90%; margin:0 auto; - ul.nav { - li { + border-radius:5px; + ul.nav, #dynWrap { + li, li.active { display:block; - a { - padding: 5px 0; + a, a:visited, a:hover { + padding: 7px 0; + text-transform:capitalize; + line-height:14px; + color:#000; + text-decoration:none; + display:block; + font-weight:400; } } li:nth-child(even), From 40b47a0bd3c5a1736bcaa1b237ae1b94c62e12b2 Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Tue, 4 Jun 2013 00:21:43 -0400 Subject: [PATCH 06/11] menu font adjustment --- static/media/css/core.css | 3 ++- static/media/less/core.less | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/static/media/css/core.css b/static/media/css/core.css index 43fbc72..acaddc0 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -322,9 +322,10 @@ nav.pagination ul li a { .navbar .nav-wrap #dynWrap li a:hover, .navbar .nav-wrap ul.nav li.active a:hover, .navbar .nav-wrap #dynWrap li.active a:hover { + font-size: 14px; padding: 7px 0; text-transform: capitalize; - line-height: 14px; + line-height: 16px; color: #000; text-decoration: none; display: block; diff --git a/static/media/less/core.less b/static/media/less/core.less index d1bc17c..fd27c2b 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -338,9 +338,10 @@ and (max-width : 599px) { li, li.active { display:block; a, a:visited, a:hover { + font-size:14px; padding: 7px 0; text-transform:capitalize; - line-height:14px; + line-height:16px; color:#000; text-decoration:none; display:block; From 939ecf6a1798f49178fc41420c567754d6713413 Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Tue, 4 Jun 2013 00:39:08 -0400 Subject: [PATCH 07/11] show mobile menu only after rearranging --- static/media/js/custom_logic.js | 6 ++++-- static/media/less/core.less | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/static/media/js/custom_logic.js b/static/media/js/custom_logic.js index bb4281c..8461100 100644 --- a/static/media/js/custom_logic.js +++ b/static/media/js/custom_logic.js @@ -44,7 +44,7 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob $('li.about a').append(' the program') $('li.challenges a').append(' your future.'); } else { - //if(mob) { + if(mob) { var dynWrap = $(''); var dynList = $('
  • '); var dynLink = $('Menu').click(function(){ @@ -61,6 +61,8 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob } }); - //} + $('ul.nav').show(); + + } } }); \ No newline at end of file diff --git a/static/media/less/core.less b/static/media/less/core.less index fd27c2b..190e13f 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -334,6 +334,9 @@ and (max-width : 599px) { width:90%; margin:0 auto; border-radius:5px; + ul.nav { + display:none; + } ul.nav, #dynWrap { li, li.active { display:block; From bc6596db27df4634012f509b3cb6127b56e5f72c Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Tue, 4 Jun 2013 00:45:26 -0400 Subject: [PATCH 08/11] Remove extraneous CSS and remove active menu item border --- static/media/css/core.css | 17 +++++------------ static/media/js/custom_logic.js | 3 --- static/media/less/core.less | 26 ++++++-------------------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/static/media/css/core.css b/static/media/css/core.css index acaddc0..59b40b7 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -125,6 +125,11 @@ ol { .navbar .nav-wrap ul.nav > li > a:hover { color: #c0c0c0; } +.navbar .nav-wrap ul.nav > li.active a, +.navbar .nav-wrap ul.nav > li.active a:hover { + border-left: none; + border-right: none; +} .navbar .nav-wrap ul.nav > li:last-child { border-right: none; } @@ -633,18 +638,6 @@ input[type="password"].metered:focus:invalid + .password-meter { } input[type="password"].metered:focus:invalid:focus + .password-meter { border-color: #e9322d; -} -/* ------------------------------ */ -/* Mobile : width > iphone ------ */ -/* ------------------------------ */ -@media only screen and (min-width: 321px) and (max-width: 940px) { - -} -/* ------------------------------ */ -/* Mobile : width <= iphone ----- */ -/* ------------------------------ */ -@media only screen and (max-width: 320px) { - } /* ------------------------------ */ /* CSOL-site SPECIFIC ----------- */ diff --git a/static/media/js/custom_logic.js b/static/media/js/custom_logic.js index 8461100..4f054dd 100644 --- a/static/media/js/custom_logic.js +++ b/static/media/js/custom_logic.js @@ -60,9 +60,6 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob $(this).appendTo("#dynWrap"); } }); - - $('ul.nav').show(); - } } }); \ No newline at end of file diff --git a/static/media/less/core.less b/static/media/less/core.less index 190e13f..1923148 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -129,6 +129,12 @@ ol { & > a:focus, & > a:hover { color:#c0c0c0; } + &.active { + a, a:hover { + border-left:none; + border-right:none; + } + } } & > li:last-child { border-right:none; @@ -334,9 +340,6 @@ and (max-width : 599px) { width:90%; margin:0 auto; border-radius:5px; - ul.nav { - display:none; - } ul.nav, #dynWrap { li, li.active { display:block; @@ -728,23 +731,6 @@ input[type="password"].metered { } } -/* ------------------------------ */ -/* Mobile : width > iphone ------ */ -/* ------------------------------ */ -@media only screen -and (min-width : 321px) -and (max-width : 940px ) { - -} - -/* ------------------------------ */ -/* Mobile : width <= iphone ----- */ -/* ------------------------------ */ -@media only screen -and (max-width : 320px) { - -} - /* ------------------------------ */ /* CSOL-site SPECIFIC ----------- */ /* ------------------------------ */ From cc839795dd1d969425c4380a5b75edc58b634be3 Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Tue, 4 Jun 2013 00:50:28 -0400 Subject: [PATCH 09/11] Open Sans all around --- static/media/css/core.css | 10 +++++++++- static/media/less/core.less | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/static/media/css/core.css b/static/media/css/core.css index 59b40b7..ddbc57a 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -3,10 +3,18 @@ html, body { height: 100%; - font-family: 'Open Sans', sans-serif; font-weight: 300; line-height: 18px; } +html, +body, +h1, +h2, +h3, +h4, +p { + font-family: 'Open Sans', sans-serif; +} body { margin: 0px; padding: 0px; diff --git a/static/media/less/core.less b/static/media/less/core.less index 1923148..267e40e 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -6,10 +6,12 @@ /*general*/ html, body { height:100%; - font-family:'Open Sans', sans-serif; font-weight:300; line-height:18px; } +html, body, h1, h2, h3, h4, p { + font-family:'Open Sans', sans-serif; +} body { margin:0px; padding:0px; From 033c2f503561fb3c7c77fc34b02dbd11f97ed98c Mon Sep 17 00:00:00 2001 From: Michael Ballard Date: Tue, 4 Jun 2013 02:10:57 -0400 Subject: [PATCH 10/11] recompressed footer logos, added icons to filters --- static/media/css/core.css | 98 ++++++++++++++++++++++++++++++- static/media/img/chi.png | Bin 15697 -> 20084 bytes static/media/img/icon-sprite.png | Bin 0 -> 10558 bytes static/media/img/mac.png | Bin 2840 -> 4832 bytes static/media/img/moz.png | Bin 743 -> 2314 bytes static/media/js/custom_logic.js | 17 +++++- static/media/less/core.less | 65 +++++++++++++++++++- 7 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 static/media/img/icon-sprite.png diff --git a/static/media/css/core.css b/static/media/css/core.css index ddbc57a..e5af784 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -650,6 +650,49 @@ input[type="password"].metered:focus:invalid:focus + .password-meter { /* ------------------------------ */ /* CSOL-site SPECIFIC ----------- */ /* ------------------------------ */ +body .navbar.filter label, +body .navbar.filter select, +body .navbar.filter input { + display: block; + float: left; +} +body .navbar.filter select { + margin-right: 25px; +} +body .navbar.filter label { + background: url('../img/icon-sprite.png') no-repeat top left; + width: 30px; + height: 30px; + text-indent: -9000px; + margin-bottom: 0px; + margin-top: 5px; +} +body .navbar.filter label.filter-age { + background-position: 0 -160px; +} +body .navbar.filter label.filter-category { + background-position: 0 -640px; +} +body .navbar.filter label.filter-org { + background-position: 0 -480px; +} +body .navbar.filter label.filter-activity { + background-position: 0 -720px; +} +/* ------------------------------ */ +/* Mobile : general ------------ */ +/* ------------------------------ */ +@media only screen and (max-width: 599px) { + body .navbar.filter .selectWrapper, + body .navbar.filter input { + clear: left; + margin: auto; + text-align: center; + width: 180px; + display: block; + float: none; + } +} /* ------------------------------ */ /* Mobile : width <= iphone ---- */ /* ------------------------------ */ @@ -935,7 +978,7 @@ body.home .navbar .nav-wrap ul.nav > li:nth-child(even) { /* ------------------------------ */ /* Landing page : mobile -------- */ /* ------------------------------ */ -@media only screen and (min-width: 320px) and (max-width: 599px) { +@media only screen and (max-width: 599px) { body.home { background-image: url('../img/chalkboard_bg.jpg'); } @@ -982,3 +1025,56 @@ body.home .navbar .nav-wrap ul.nav > li:nth-child(even) { margin: 0 auto; } } +/* ------------------------------ */ +/* Filter sprite positions ------ */ +/* ------------------------------ */ +.sprite-activitylines { + background-position: 0 0; + width: 30px; + height: 30px; +} +.sprite-activitytype { + background-position: 0 -80px; + width: 30px; + height: 30px; +} +.sprite-age { + background-position: 0 -160px; + width: 30px; + height: 30px; +} +.sprite-badgetype { + background-position: 0 -240px; + width: 30px; + height: 30px; +} +.sprite-date { + background-position: 0 -320px; + width: 30px; + height: 30px; +} +.sprite-location { + background-position: 0 -400px; + width: 30px; + height: 30px; +} +.sprite-organization { + background-position: 0 -480px; + width: 30px; + height: 30px; +} +.sprite-search { + background-position: 0 -560px; + width: 30px; + height: 30px; +} +.sprite-topic { + background-position: 0 -640px; + width: 30px; + height: 30px; +} +.sprite-type { + background-position: 0 -720px; + width: 30px; + height: 30px; +} diff --git a/static/media/img/chi.png b/static/media/img/chi.png index cf61745b626dac08dc8faa758121cb05be2bccb7..529b6f0aac3c69c40b8f18ecc658763968ec23ce 100644 GIT binary patch literal 20084 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 literal 15697 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 b%(=NGT0Gpr^OZFV07F$tQ?X3mGUERL1w@_$ literal 0 HcmV?d00001 diff --git a/static/media/img/mac.png b/static/media/img/mac.png index 00769a9388fb2afe3930fe6478bf36ce42651323..1d3978067ac0616befa6bf706bb8a97dc46d5b81 100644 GIT binary patch literal 4832 zcma)Ac{G&m-?wGoLQEuMvWFQv6N#}+_G}}|5QD*(!Hj*EtSMuu7?CxqA!Lc{OR`f5 zB}MivJl62?{GOio{p0OD?|sgFuJ89cpU>y}xvuMb&V8;s-o!|kg^`z$f`WntuBUb5 zWc>T3r#gxBjJSGFhVyuB1l|nmg7ITZuIncWsrAk3T4MLkE z@CZW#s1p_=?Rbij4#40}*c241>H#=MCl3@Jcnjr<_EH0_)i;5FXlFH$m4YF}5C=oK zq4k1%P-a0!=1xH#PAbkI^{YVD0O*MT28DM724FnBe4znqpucsYC-Lbt7zF$qg7;7Z z{l^r-&;$s>`k;Uc(hw;ph#~~2C?hQ+C$FTWBngy-$UwjlS+I<(l#CKoP8JG*0RMSF zC)IqMU7$C#bpEMzlBt2*@OT^)4EFc;m-d&F#`?H|WmHsDPBmm@rA`o1zJXqN#{elW z-%Gz0v{1fIK4=^sjr9VaDmvc667XuE6Q}=K0tWZ5te5XU+jO#F-~dM)SVkIhx}@Jg zL&N_YioyJg_Ql^o{kPx$RoK@&5QhTaK>1<`K29eG=W^+^6b=gWK{?{FKIT}g=kHxK zal_)VzHV3?5N4(TG<0-Ad!6Qg;|&d=a4%oHqn8s3uB8S#QIJNXouS&YFgXo~mNHCU zR#QesTUJ?HSrMk9r2|t?lGD(XQTol*!a5N!C@=hPuJeC$RsP65Z3PVOq_P&u2knP) z*73n&fPXI;ivF_~#Xsu(!*%|%7o|UP!6#&5S{mj74TASz>e@wS?I6avKtsC1Ms3*nl1u&Qm9xphy3Dyeb*HY+CuD7-4#pNHH(oA`4 z>@Rmp#$%uN{A$UNO-wdCTL z8^n}$S4y;Vqq1W9aP#$4rbvjiFinSSzYW10<>lVkrR+`kaHT+!r|6OUhMC#jDjz!o zhF4>~0V9%+Ed5q4?68!pnCfyeM+QHK@^+Q_JZ}ms2r?{@>mlpX7@5|Jb+4C+eX+H2 z8yTVbv}E1t=%U8~Tb%UcbQ(5OCeNyahXHvEymeQ>x^su};l zlXgFbZVu0)d*uLD{%w)bcmQELz+Sj8t8{ghnu8h%f!iY&_WEhdM%sT(%=%=daMPd< z?CR7ay&-NtV_nC#_)15jyjwg*%SzTgZHT_Lm^k8KC0iO<()-QCJRKG+R(1IOvIWfP zXLbKIizh342R#)lcd*YT5egHB+vprIIDOaEXT&UoM1MS(f2A?Fy2o*pQ(0m_F{hTj zS&)vaGvV^PFG!n=gZ-D2u&&^Nzhay2dz=Z=Y(LseDdps$ZhEm6SlM{+W8W)3SqpTF zU{0REuj7yV{l_10k3I7>OMibKWss4m*2&`g`OBrD7wT6I?KhiSKK6vRe9G!NnA~+L z&ie)!Hg&cMpVwWhQs3A>UxKMBt51C8SDi~tE6$=nb1!6SIX6;xSkRwFWu%u}wjMDy z8vbE-BldxoLHF2zZF7XEkj~lNMxCZe(5f`SMVSS6V2_NW%xp;n_3yXwg@xoz2voZ~ z+$4316^s2sO26e63LNOZ>YRK3@zEaLgKb5&DDMoz;||rO)?2!d4cTNG%M{hbZ(d6{ zlzISW>BJV2O7 zBx>G@R?%>X6Ly^N=oT|>Xggw#$$!crLTnbccuKVEwXj)!7g?V5nswlQ!n9Y7-4lio zRoc;3|Ll1?TL-WoAPY)e&RBfCB5%@KdfHfk%)!~Z8qFgZX%WL|v#*)Rv?86w+EVEt z60r@sBlyN^B>Bxs{Zg=>z{38~q+de&>a*+A+U5i+ji7Uwjcux@&@%dZi8MH8#~I>l zqP!@>Q{45E)O6eC@1^~sp@IX5mGy<7OY37KX5X6$$HFC<2W6nkURCrXPmg81wFzI?vGhjKwAtRnzfku5LLeD&xwTcTC3pM~?yTnKY# z%uxy=)T;c+6*t*In?+f{aZ{rUXAAC-9U4c(|h~(<+CB331=)4tZ3YE7*NP>bNfW0eV9-eZ}rVl-rYN*NCP12U$F+OT
    A2522B(~)}?`JE`6S10EQp}lU=cw~L3?D#r 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 delta 697 zcmV;q0!ICc66Xbw7YY>!1^@s6)p5B`ks&940*OgPK~#9!)vr1KBMjoGs6A$-tF6cr{mm!2_anh z1oH6=eSBTJ`mV-1_iPe?rF?4fXCZ1+;AW^TBjBZY?7ah7h+{jTwhd{^NQ55QfBblV zxB)CFU0w9M)D4==W@VpF+yanE$NMPuc=5i0LUyP{jp%(-Lw(5D(Xih<$P3Ub&)$`pX-5#7iLYo@;W*%xdCn)5(OP za^#i>?X?7{fyi4Ev0I^NOBo@o#%!1<$S=6F8}H((I%^`|2Q^YM2mPy5&eV~SjgHi4 zMdMXZqd!fyw9t{RW^8Eiai_U7n5-VM*esYU;Yk&~@SmW@CTBu%;^fjK95IJl06rxh fzGJ%Q-vSH(0z=0G^2d3R00000NkvXXu0mjf8{|i~ diff --git a/static/media/js/custom_logic.js b/static/media/js/custom_logic.js index 4f054dd..9eb4e62 100644 --- a/static/media/js/custom_logic.js +++ b/static/media/js/custom_logic.js @@ -5,8 +5,21 @@ var mob = 0; if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob = 1 $('.show-tooltip').tooltip(); + + /*move filter labels into the selectors*/ + if($('.navbar.filter').length != 0) { + $('.navbar.filter form label').each(function(){ + var selectID = ($(this).attr('for')); + var selectEle = $('#' + selectID); + $('#' + selectID + ' option:first').text($(this).text()); + var selectWrap = $('
    ').append(this,selectEle); + $('.navbar.filter form').prepend(selectWrap); + + }); + } + + /*landing page overrides*/ if($('body.home').length != 0) { - var vidLink = $('
    watch video').click(function(){ if($('#i_vid').length == 0) { var bkgFade = $(''); @@ -30,6 +43,7 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob $('

    This summer Mayor Rahm Emanuel is challenging all Chicago youth to participate in the Summer of Learning. School stops for the summer, but learning never should.

    ').prependTo('.footer .upper'); $('
    join the conversation on Facebook.share stories
    ').appendTo('.footer .upper'); + /*landing page mobile overrides*/ if(mob) { vidLink = 'watch video'; } @@ -44,6 +58,7 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) mob $('li.about a').append(' the program') $('li.challenges a').append(' your future.'); } else { + /*non-landing page overrides*/ if(mob) { var dynWrap = $(''); var dynList = $('
  • '); diff --git a/static/media/less/core.less b/static/media/less/core.less index 267e40e..558c5e7 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -736,6 +736,56 @@ input[type="password"].metered { /* ------------------------------ */ /* CSOL-site SPECIFIC ----------- */ /* ------------------------------ */ +body { + .navbar.filter { + label, select, input { + display:block; + float:left; + } + select { + margin-right:25px; + } + label { + background: url('../img/icon-sprite.png') no-repeat top left; + width:30px; + height:30px; + text-indent:-9000px; + margin-bottom:0px; + margin-top:5px; + &.filter-age { + background-position: 0 -160px; + } + &.filter-category { + background-position: 0 -640px; + } + &.filter-org { + background-position: 0 -480px; + } + &.filter-activity { + background-position: 0 -720px; + } + } + } +} + +/* ------------------------------ */ +/* Mobile : general ------------ */ +/* ------------------------------ */ +@media only screen +and (max-width : 599px) { +body { + .navbar.filter { + .selectWrapper, input { + clear:left; + margin:auto; + text-align:center; + width:180px; + display:block; + float:none; + } + } +} +} /* ------------------------------ */ /* Mobile : width <= iphone ---- */ @@ -1056,7 +1106,6 @@ body.home { /* Landing page : mobile -------- */ /* ------------------------------ */ @media only screen -and (min-width : 320px) and (max-width : 599px) { body.home { background-image:url('../img/chalkboard_bg.jpg'); @@ -1108,3 +1157,17 @@ and (max-width : 599px) { } } } + +/* ------------------------------ */ +/* Filter sprite positions ------ */ +/* ------------------------------ */ +.sprite-activitylines{ background-position: 0 0; width: 30px; height: 30px; } +.sprite-activitytype{ background-position: 0 -80px; width: 30px; height: 30px; } +.sprite-age{ background-position: 0 -160px; width: 30px; height: 30px; } +.sprite-badgetype{ background-position: 0 -240px; width: 30px; height: 30px; } +.sprite-date{ background-position: 0 -320px; width: 30px; height: 30px; } +.sprite-location{ background-position: 0 -400px; width: 30px; height: 30px; } +.sprite-organization{ background-position: 0 -480px; width: 30px; height: 30px; } +.sprite-search{ background-position: 0 -560px; width: 30px; height: 30px; } +.sprite-topic{ background-position: 0 -640px; width: 30px; height: 30px; } +.sprite-type{ background-position: 0 -720px; width: 30px; height: 30px; } From 3beab786f2a0804c07b15e2b5107e88d1b4927a4 Mon Sep 17 00:00:00 2001 From: Brian J Brennan Date: Tue, 4 Jun 2013 15:17:44 -0400 Subject: [PATCH 11/11] Specify right version of nunjucks. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b4e0ace..61737ec 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "knox": "~0.8.2", "mime": "~1.2.9", "mysql": "~2.0.0-alpha7", - "nunjucks": "~0.1.8a", + "nunjucks": "~0.1.9", "request": "~2.21.0", "sequelize": "~1.6.0", "tap": "~0.4.1",