diff --git a/lib/errors.js b/lib/errors.js index 433c270..79840c6 100644 --- a/lib/errors.js +++ b/lib/errors.js @@ -1,3 +1,5 @@ +var _ = require('underscore'); + function middleware (env, config) { return function(err, req, res, next) { if (req.xhr) @@ -23,8 +25,10 @@ function middleware (env, config) { try { template = env.getTemplate(template); - res.status(err.status); - res.send(template.render({error: err})); + res.status(err.code); + res.send(template.render(_.defaults({ + error: err + }, res.locals))); } catch (e) { if (e.name === 'Template render error') console.log('Error rendering template:', template.path); @@ -73,6 +77,9 @@ function createExceptionType (name, code) { return '[' + this.name + ' Exception: ' + this.message + ']'; } + Exception.status = status; + Exception.code = code; + register[code] = Exception; return Exception; diff --git a/logger.js b/logger.js index c0cd3d2..0ba96a9 100644 --- a/logger.js +++ b/logger.js @@ -1,4 +1,11 @@ -var winston = require('winston'); -/* This space reserved for future config/transports */ -/* e.g. winston.add(winston.transports.File, { filename: 'somelog.log' }); */ -module.exports = winston; \ No newline at end of file +const winston = require('winston'); + +var logger = new (winston.Logger)({ + transports: [ + new (winston.transports.Console)({ + level: ('DEBUG' in process.env) ? 'debug' : 'info' + }), + ] +}); + +module.exports = logger; \ No newline at end of file diff --git a/mandrill.js b/mandrill.js new file mode 100644 index 0000000..3dc847d --- /dev/null +++ b/mandrill.js @@ -0,0 +1,95 @@ +const url = require('url'); +const _ = require('underscore'); +const logger = require('./logger'); + +const FAKE_EMAIL = ('DEBUG' in process.env) + && ('CSOL_DISABLE_EMAIL' in process.env); + +var request = require('request'); +if (FAKE_EMAIL) { + request = function(opts, cb) { + logger.log('debug', 'FAKE EMAIL: request.post with opts', opts); + cb('EMAIL DISABLED'); + }; +} + +const ENDPOINT = process.env['CSOL_MANDRILL_URL'] || + "https://mandrillapp.com/api/1.0/"; +const KEY = process.env['CSOL_MANDRILL_KEY']; + +const TEMPLATES = { + test: 'test' +} + +module.exports = { + + /* + send(template, context, recipient, callback) + + template - internal template name, mapped to mandrill names above + context - merge variables (optional) + { foo: 'hi' } replaces *|foo|* or *|FOO|* + in the template with "hi" + recipients - a list of email addresses or recipient objects + to email, where a recipient object has + an email and a name + callback - callback function(err, result) + + TODO: test the above + */ + send: function send(template, context, recipients, callback){ + if (!recipients || _.isFunction(recipients)) { + callback = recipients; + recipients = context; + context = {}; + } + callback = callback || function(){}; + + if (!_.isArray(recipients)) + recipients = [recipients]; + + recipients = _.map(recipients, function(recipient){ + if (_.isString(recipient)){ + return { + email: recipient + } + return recipient; + } + }); + + var merge_vars = _.map(context, function(value, key){ + return { + name: key, + content: value + } + }); + + var payload = { + key: KEY, + template_name: template, + template_content: [], + message: { + to: recipients, + global_merge_vars: merge_vars + } + }; + + var opts = { + url: url.resolve(ENDPOINT, 'messages/send-template.json'), + json: payload + }; + + request.post(opts, function(err, response, body) { + logger.log('info', 'MANDRILL request: "POST %s" %s', + opts.url, response ? response.statusCode : "Error", err); + + if (err) + return callback(err); + + if (response.statusCode !== 200) + return callback(body); + + return callback(null, body); + }); + } +}; diff --git a/static/media/css/core.css b/static/media/css/core.css index 9c88548..77b00ef 100644 --- a/static/media/css/core.css +++ b/static/media/css/core.css @@ -1,499 +1,220 @@ +/*general*/ html, body { - margin: 0; - padding: 0; - background-image: url('../images/billie_holiday.png'); + height: 100%; } -@media all and (-webkit-min-device-pixel-ratio: 1.5) { - html, - body { - background-image: url('../images/billie_holiday@2x.png'); - background-size: 100px 100px; - } +body { + margin: 0px; + padding: 0px; } -#notes { - position: fixed; - bottom: 1em; - right: 1em; - max-width: 300px; - padding: 1em; - background: rgba(255, 255, 255, 0.75); - color: #333; - border: solid 1px #999; - box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); +body .container > br { + display: none; } -#header { - background: url(../images/chalkboard_bg_green.jpg) center; - position: relative; +#main { + padding-top: 45px; + padding-bottom: 25px; +} +#main > h1:first-child, +#main > h2:first-child, +#main > h3:first-child, +#main > h4:first-child, +#main > p:first-child { + margin-top: 0px; + padding-top: 0px; +} +#main > div > h1:first-child, +#main > div > h2:first-child, +#main > div > h3:first-child, +#main > div > h4:first-child, +#main > div > p:first-child { + margin-top: 0px; + padding-top: 0px; +} +ul, +ol { + padding: 0 0 0 0; + margin: 0 0 0 0; +} +.row, +[class*="span"] { + margin-left: 0px; +} +/*navbar*/ +.navbar .nav { + float: none; +} +.navbar .nav > li > a { + border-left: none; + border-right: none; +} +.navbar .nav > li > a:hover, +.navbar .nav > li > a:focus { + background-color: inherit; + border-left: none; + border-right: none; +} +.navbar .nav > li:nth-child(even) { + border-left: 1px solid #c0c0c0; + border-right: 1px solid #c0c0c0; +} +.navbar .nav > .navbar .nav > li:last-child { + border-right: none; +} +.navbar .nav .active a, +.navbar .nav .active a:hover, +.navbar .nav .active a:focus { + background-color: white; + box-shadow: none; +} +.navbar .navbar-inner { + background-image: url('../img/chalkboard_bg.jpg'); -webkit-box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25); -moz-box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25); box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25); + padding-top: 1em; } -#header::after { - position: absolute; - top: 100%; - left: 0; +.navbar .nav-wrap { width: 100%; - height: 5px; - background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0)); -} -#header h1 { - margin: 0; - overflow: hidden; - font-size: 2em; - line-height: 2em; - display: block; -} -#header h1 a { - display: block; - max-width: 671px; - height: 220px; - background: url(../images/csol_logo_illustration.png) center no-repeat; - background-size: 100%; - text-indent: -999em; - position: relative; - margin: 23px auto 0 auto; -} -#navigation { - margin: 0 auto; - position: relative; - bottom: -16px; - margin-top: -12px; + padding: 0 0 0 0; + margin: 0 0 0 0; + width: 940px; + margin-bottom: -24px; -webkit-box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.25); box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.25); background: white; text-align: center; - line-height: .8em; } -#navigation .nav { - margin-bottom: 0; +.navbar .nav-wrap ul { + display: inline-block; + margin: 0 0 0 0; +} +.navbar .nav-wrap ul > li { + float: none; display: inline-block; } -#navigation .nav li > a { - margin: 0; - padding: 10px 30px 10px 30px; - font-size: 1.2em; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; - color: #404041; - border: none; - border-left: 1px solid #404041; -} -#navigation .nav li > a:hover { - background: #eee; -} -#navigation .nav li.active a { - background: #eee; -} -#navigation .nav li:first-child a { - border-left: none; -} -#navigation .nav ul li a { - border: none; -} -#navigation .nav form { - padding: 10px; - text-align: left; -} -#navigation .nav form .btn { - display: block; - width: 100%; -} -#navigation .nav form small { - margin-top: 10px; - border-top: solid 1px #CCC; - display: block; - clear: both; - text-align: center; -} -ul.row { - list-style: none; -} -figure.thumbnail { - margin: 0; -} -.thumbnail img { - margin-top: 5px; -} -.thumbnail > a { - display: block; - text-align: center; -} -form .divider { - display: block; - margin: 2em 0; - text-align: center; - position: relative; -} -form .divider::before { - content: ""; - position: absolute; - left: 0; - top: 50%; - width: 100%; - border-top: solid 1px #CCC; -} -form .divider em { - background: #FFF; - padding: 0 1em; - position: relative; -} -#content { - text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.4); - padding: 50px 0; - min-height: 200px; -} -#content h2 { - text-transform: uppercase; - font-family: "ff-meta-web-pro"; - font-weight: bold; - display: block; - margin: 0 auto; - text-align: center; - margin-bottom: 40px; - padding-bottom: 8px; - padding-top: 8px; - position: relative; -} -#content h2 a { - font-size: 1.3em; - color: black; -} -#content h2::before { - content: ""; - position: absolute; - left: 0; - top: 50%; - width: 35%; - border-top: solid 1px black; -} -#content h2::after { - content: ""; - position: absolute; - right: 0; - top: 50%; - width: 35%; - border-top: solid 1px black; -} -#content h1.line30::before, -#content h2.line30::before, -#content h3.line30::before { - width: 30%; -} -#content h1.line30::after, -#content h2.line30::after, -#content h3.line30::after { - width: 30%; -} -#content h1.line20::before, -#content h2.line20::before, -#content h3.line20::before { - width: 20%; -} -#content h1.line20::after, -#content h2.line20::after, -#content h3.line20::after { - width: 20%; -} -#content h1.line10::before, -#content h2.line10::before, -#content h3.line10::before { - width: 10%; -} -#content h1.line10::after, -#content h2.line10::after, -#content h3.line10::after { - width: 10%; -} -#content h3 { - margin-top: 20px; - margin-bottom: 20px; -} -#content h3.activity { - margin-bottom: 0; - margin-top: 0; -} -#content .container { - border-bottom: 1px solid #404041; - padding-bottom: 15px; -} -#content img { - margin-bottom: 20px; -} -#content .poster { - background: #cfd4d1; - background: rgba(0, 0, 0, 0.1); - background-image: url(../images/splash_banner_topbg.gif); - background-position: top; - background-repeat: repeat-x; - padding-top: 30px; - text-align: center; - display: block; -} -#content .filter label { - text-indent: -1000%; - width: 26px; - height: 26px; - margin-right: 3px; - padding-top: 0; - background: url(../images/filter_icons_sprite.png); - background-position: 0 1px; -} -#content .filter label.filter-category { - background-position: 68px 2px; -} -#content .filter label.filter-age { - background-position: -72px 2px; -} -#content .filter label.filter-date { - background-position: -136px 2px; -} -#content .filter label.filter-search { - background-position: -229px 2px; -} -#content .filter select { - margin-right: 15px; -} -#content .filter .navbar-inner { - padding-left: 10px; -} -.home #content h3 { - text-align: center; - margin-bottom: 10px; -} -.home p { - font-size: 16px; - text-align: center; - margin-bottom: 30px; - line-height: 1.5em; -} -.home #content h2::before { - width: 12%; -} -.home #content h2::after { - width: 12%; -} -.activity p.activity-description { - margin: 20px 0 25px 0; -} -.activity .span8 { - padding-bottom: 30px; -} -.navbar-form { - color: white; - text-shadow: 1px 1px 0px black; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: none; - background: url(../images/chalkboard_bg_grey.jpg) center; -} -.navbar-form .brand { - text-transform: uppercase; - padding-left: 12px; - padding-top: 9px; -} -#content .thumbnails figure { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; - background: white; - -webkit-box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.3); - box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.3); - padding: 0; - margin: 0; - border: none; -} -#content .thumbnails figure figcaption { - background: #555555 url(../images/chalkboard_bg_grey.jpg) center; - color: white !important; +.navbar .nav-wrap ul > li > a { text-shadow: none; + color: #333333; + text-transform: uppercase; } -#content .thumbnails figure img { - padding: 10px; - max-width: 100%; +.navbar .nav-wrap ul > li > a:focus, +.navbar .nav-wrap ul > li > a:hover { + color: #c0c0c0; +} +.navbar .nav-wrap ul > li:last-child { + border-right: none; +} +.navbar .brand { display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + width: 671px; + height: 220px; + background-image: url('../img/csol_logo.png'); + background-repeat: no-repeat; margin: 0 auto; + float: none; + text-indent: -9000px; } -.btn { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -.pagination ul { - background: white; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -.pagination ul li:first-child, -.pagination ul li:last-child, -.pagination ul li:first-child span, -.pagination ul li:last-child span { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -.pagination ul li a { - color: #404041; -} -.pagination ul li a:first-child, -.pagination ul li a:last-child { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -#footer { - border-top: solid 1px #CCC; - min-height: 100px; - background: url(../images/chalkboard_bg_green.jpg) center; - position: relative; +/*footer*/ +.footer { -webkit-box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25); -moz-box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25); box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25); - color: white; - font-size: 1.1em; - text-shadow: none; } -#footer .toprow { - border-bottom: 1px solid white; - padding-bottom: 20px; - margin-bottom: 25px; +.footer a { + color: #fff; } -#footer .toprow .pull-left { - font-size: 1.1em; - padding-top: 10px; -} -#footer a { - color: white; -} -#footer a:hover { - background-color: none; -} -#footer .nav { - font-size: 1.2em; - margin: 0; - padding: 0; -} -#footer .nav li { - margin-bottom: 0; - padding: 0; -} -#footer .nav li:last-child a { - padding-right: 0; -} -#footer .nav li a { - display: inline-block; -} -#footer .nav li a:hover { - background: none; -} -#footer .container { - padding: 40px 0; -} -#footer .logo-csol { - width: 100%; - height: 131px; - background: url(../images/csol_logo_footer.png) center no-repeat; - text-indent: -999em; +.footer a.logo { + text-indent: -9000px; + width: 82px; + height: 82px; display: block; - margin-bottom: 20px; - margin-right: 15px; -} -#footer .logos { - text-align: center; -} -#footer .copytxt { - font-size: .9em; - line-height: 1.8em; - text-align: right; -} -#footer .description { - margin-bottom: 20px; -} -#footer .logo { - text-indent: -999em; - display: inline-block; - padding: 10px; - margin: 5px; + background-position: center center; background-repeat: no-repeat; } -#footer .logo.macarthur { - width: 78px; - height: 78px; - background-image: url(../images/footer_logo_macarthur.png); +.footer a.logo.chi { + background-image: url('../img/chi.png'); } -#footer .logo.city { - width: 78px; - height: 78px; - background-image: url(../images/footer_logo_cityofchi.png); +.footer a.logo.mac { + background-image: url('../img/mac.png'); } -#footer .logo.mozilla { - width: 82px; - height: 78px; - background-image: url(../images/footer_logo_mozilla.png); - background-position: 10px 20px; +.footer a.logo.moz { + background-image: url('../img/moz.png'); } -input[type="password"].metered { - padding-bottom: 9px; +.footer a:hover { + color: #c0c0c0; + text-decoration: none; } -input[type="password"].metered + .password-meter { - border: solid 1px #CCC; - border-top: none; - height: 6px; - margin: -6px 0 10px; - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; - -moz-box-sizing: border-box; - box-sizing: border-box; - position: relative; - overflow: hidden; - -webkit-transition: border linear .2s; - -moz-transition: border linear .2s; - -o-transition: border linear .2s; - transition: border linear .2s; +.footer .lower { + border-top: 1px solid white; + padding-top: 20px; } -input[type="password"].metered + .password-meter .bar { - border-radius: 0 0 0 3px; - overflow: hidden; +.footer .lower p { + background-image: url('../img/csol_logo_sm.png'); + padding-left: 209px; + background-repeat: no-repeat; + background-position: top left; + width: 400px; + min-height: 131px; + margin-bottom: 20px; } -input[type="password"].metered:focus + .password-meter { - border-color: rgba(82, 168, 236, 0.8); +.footer .lower li { + border-left: none; + border-right: none; } -input[type="password"].metered:focus:invalid + .password-meter { - border-color: #ee5f5b; +.footer .upper { + padding: 1em 0; } -input[type="password"].metered:focus:invalid:focus + .password-meter { - border-color: #e9322d; +.footer ul li { + display: inline-block; } +.footer ul li > a, +.footer ul li > span { + margin: 10px; +} +.footer ul li:first-child a { + margin-left: 0px; +} +.footer ul li:nth-child(even) { + border-left: 1px solid #fff; + border-right: 1px solid #fff; +} +.footer ul li:last-child { + border-right: none; +} +/*sticky footer*/ +.wrapper { + width: 100%; +} +.wrapper .inner-wrapper { + width: 100%; +} +.wrapper.primary { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0px 0px -250px 0px; +} +.wrapper.primary .inner-wrapper { + padding: 0px 0px 250px 0px; +} +.wrapper.secondary { + color: #fff; + height: 250px; + background-image: url('../img/chalkboard_bg.jpg'); +} +/*CSOL-site specific*/ +.poster a, +.poster img { + display: block; + margin-left: auto; + margin-right: auto; +} +#menu-login-form { + padding: 10px; + text-align: left; +} +/*Evidence uploading / application*/ #application-review .well { margin-left: -20px; margin-right: -20px; @@ -639,56 +360,3 @@ input[type="password"].metered:focus:invalid:focus + .password-meter { .upload-list .details .progress .bar { opacity: 0.5; } -@media all and (max-width: 767px) { - #header h1 { - padding: 0 5%; - } - #header h1 a { - padding: 15% 0; - height: auto; - margin: 0; - } - #navigation .nav li a { - padding: 10px 10px; - font-size: .9em; - } - #content { - padding: 30px 20px; - } - #content h2:before, - #content h2:after, - #content h3:before, - #content h3:after { - border: none; - } - #footer { - padding: 0 20px; - } - #footer #content { - text-shadow: none; - } - #footer .pull-left { - float: none; - text-align: center; - margin-bottom: 20px; - } - #footer nav, - #footer .nav-pills { - float: none; - text-align: center; - } - #footer nav li, - #footer .nav-pills li { - display: inline-block; - font-size: .8em; - } - #footer .copytxt { - text-align: center; - } -} -@media all and (max-width: 480px) { - #navigation .nav li a { - padding: 10px 5px; - font-size: .8em; - } -} diff --git a/static/media/css/core.min.css b/static/media/css/core.min.css index 5cc9f89..0f8f75a 100644 --- a/static/media/css/core.min.css +++ b/static/media/css/core.min.css @@ -1,67 +1,37 @@ -html,body{margin:0;padding:0;background-image:url('../images/billie_holiday.png');}@media all and (-webkit-min-device-pixel-ratio:1.5){html,body{background-image:url('../images/billie_holiday@2x.png');background-size:100px 100px;}} -#notes{position:fixed;bottom:1em;right:1em;max-width:300px;padding:1em;background:rgba(255, 255, 255, 0.75);color:#333;border:solid 1px #999;box-shadow:2px 2px 5px rgba(0, 0, 0, 0.5);} -#header{background:url(../images/chalkboard_bg_green.jpg) center;position:relative;-webkit-box-shadow:inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25);-moz-box-shadow:inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25);box-shadow:inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25);}#header::after{position:absolute;top:100%;left:0;width:100%;height:5px;background:-webkit-linear-gradient(top, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0));} -#header h1{margin:0;overflow:hidden;font-size:2em;line-height:2em;display:block;}#header h1 a{display:block;max-width:671px;height:220px;background:url(../images/csol_logo_illustration.png) center no-repeat;background-size:100%;text-indent:-999em;position:relative;margin:23px auto 0 auto;} -#navigation{margin:0 auto;position:relative;bottom:-16px;margin-top:-12px;-webkit-box-shadow:0 0 8px 3px rgba(0, 0, 0, 0.25);-moz-box-shadow:0 0 8px 3px rgba(0, 0, 0, 0.25);box-shadow:0 0 8px 3px rgba(0, 0, 0, 0.25);background:white;text-align:center;line-height:.8em;}#navigation .nav{margin-bottom:0;display:inline-block;}#navigation .nav li>a{margin:0;padding:10px 30px 10px 30px;font-size:1.2em;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;color:#404041;border:none;border-left:1px solid #404041;}#navigation .nav li>a:hover{background:#eee;} -#navigation .nav li.active a{background:#eee;} -#navigation .nav li:first-child a{border-left:none;} -#navigation .nav ul li a{border:none;} -#navigation .nav form{padding:10px;text-align:left;}#navigation .nav form .btn{display:block;width:100%;} -#navigation .nav form small{margin-top:10px;border-top:solid 1px #CCC;display:block;clear:both;text-align:center;} -ul.row{list-style:none;} -figure.thumbnail{margin:0;} -.thumbnail img{margin-top:5px;} -.thumbnail>a{display:block;text-align:center;} -form .divider{display:block;margin:2em 0;text-align:center;position:relative;}form .divider::before{content:"";position:absolute;left:0;top:50%;width:100%;border-top:solid 1px #CCC;} -form .divider em{background:#FFF;padding:0 1em;position:relative;} -#content{text-shadow:1px 1px 0px rgba(255, 255, 255, 0.4);padding:50px 0;min-height:200px;}#content h2{text-transform:uppercase;font-family:"ff-meta-web-pro";font-weight:bold;display:block;margin:0 auto;text-align:center;margin-bottom:40px;padding-bottom:8px;padding-top:8px;position:relative;}#content h2 a{font-size:1.3em;color:black;} -#content h2::before{content:"";position:absolute;left:0;top:50%;width:35%;border-top:solid 1px black;} -#content h2::after{content:"";position:absolute;right:0;top:50%;width:35%;border-top:solid 1px black;} -#content h1.line30::before,#content h2.line30::before,#content h3.line30::before{width:30%;} -#content h1.line30::after,#content h2.line30::after,#content h3.line30::after{width:30%;} -#content h1.line20::before,#content h2.line20::before,#content h3.line20::before{width:20%;} -#content h1.line20::after,#content h2.line20::after,#content h3.line20::after{width:20%;} -#content h1.line10::before,#content h2.line10::before,#content h3.line10::before{width:10%;} -#content h1.line10::after,#content h2.line10::after,#content h3.line10::after{width:10%;} -#content h3{margin-top:20px;margin-bottom:20px;}#content h3.activity{margin-bottom:0;margin-top:0;} -#content .container{border-bottom:1px solid #404041;padding-bottom:15px;} -#content img{margin-bottom:20px;} -#content .poster{background:#cfd4d1;background:rgba(0, 0, 0, 0.1);background-image:url(../images/splash_banner_topbg.gif);background-position:top;background-repeat:repeat-x;padding-top:30px;text-align:center;display:block;} -#content .filter label{text-indent:-1000%;width:26px;height:26px;margin-right:3px;padding-top:0;background:url(../images/filter_icons_sprite.png);background-position:0 1px;}#content .filter label.filter-category{background-position:68px 2px;} -#content .filter label.filter-age{background-position:-72px 2px;} -#content .filter label.filter-date{background-position:-136px 2px;} -#content .filter label.filter-search{background-position:-229px 2px;} -#content .filter select{margin-right:15px;} -#content .filter .navbar-inner{padding-left:10px;} -.home #content h3{text-align:center;margin-bottom:10px;} -.home p{font-size:16px;text-align:center;margin-bottom:30px;line-height:1.5em;} -.home #content h2::before{width:12%;} -.home #content h2::after{width:12%;} -.activity p.activity-description{margin:20px 0 25px 0;} -.activity .span8{padding-bottom:30px;} -.navbar-form{color:white;text-shadow:1px 1px 0px black;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;border:none;background:url(../images/chalkboard_bg_grey.jpg) center;}.navbar-form .brand{text-transform:uppercase;padding-left:12px;padding-top:9px;} -#content .thumbnails figure{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;background:white;-webkit-box-shadow:0 0 5px 1px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 0 5px 1px rgba(0, 0, 0, 0.3);box-shadow:0 0 5px 1px rgba(0, 0, 0, 0.3);padding:0;margin:0;border:none;}#content .thumbnails figure figcaption{background:#555555 url(../images/chalkboard_bg_grey.jpg) center;color:white !important;text-shadow:none;} -#content .thumbnails figure img{padding:10px;max-width:100%;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 auto;} -.btn{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;} -.pagination ul{background:white;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;}.pagination ul li:first-child,.pagination ul li:last-child,.pagination ul li:first-child span,.pagination ul li:last-child span{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;} -.pagination ul li a{color:#404041;}.pagination ul li a:first-child,.pagination ul li a:last-child{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;} -#footer{border-top:solid 1px #CCC;min-height:100px;background:url(../images/chalkboard_bg_green.jpg) center;position:relative;-webkit-box-shadow:inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25);-moz-box-shadow:inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25);box-shadow:inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25);color:white;font-size:1.1em;text-shadow:none;}#footer .toprow{border-bottom:1px solid white;padding-bottom:20px;margin-bottom:25px;}#footer .toprow .pull-left{font-size:1.1em;padding-top:10px;} -#footer a{color:white;}#footer a:hover{background-color:none;} -#footer .nav{font-size:1.2em;margin:0;padding:0;}#footer .nav li{margin-bottom:0;padding:0;}#footer .nav li:last-child a{padding-right:0;} -#footer .nav li a{display:inline-block;}#footer .nav li a:hover{background:none;} -#footer .container{padding:40px 0;} -#footer .logo-csol{width:100%;height:131px;background:url(../images/csol_logo_footer.png) center no-repeat;text-indent:-999em;display:block;margin-bottom:20px;margin-right:15px;} -#footer .logos{text-align:center;} -#footer .copytxt{font-size:.9em;line-height:1.8em;text-align:right;} -#footer .description{margin-bottom:20px;} -#footer .logo{text-indent:-999em;display:inline-block;padding:10px;margin:5px;background-repeat:no-repeat;}#footer .logo.macarthur{width:78px;height:78px;background-image:url(../images/footer_logo_macarthur.png);} -#footer .logo.city{width:78px;height:78px;background-image:url(../images/footer_logo_cityofchi.png);} -#footer .logo.mozilla{width:82px;height:78px;background-image:url(../images/footer_logo_mozilla.png);background-position:10px 20px;} -input[type="password"].metered{padding-bottom:9px;}input[type="password"].metered+.password-meter{border:solid 1px #CCC;border-top:none;height:6px;margin:-6px 0 10px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;overflow:hidden;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s;} -input[type="password"].metered+.password-meter .bar{border-radius:0 0 0 3px;overflow:hidden;} -input[type="password"].metered:focus+.password-meter{border-color:rgba(82, 168, 236, 0.8);} -input[type="password"].metered:focus:invalid+.password-meter{border-color:#ee5f5b;} -input[type="password"].metered:focus:invalid:focus+.password-meter{border-color:#e9322d;} +html,body{height:100%;} +body{margin:0px;padding:0px;}body .container>br{display:none;} +#main{padding-top:45px;padding-bottom:25px;}#main>h1:first-child,#main>h2:first-child,#main>h3:first-child,#main>h4:first-child,#main>p:first-child{margin-top:0px;padding-top:0px;} +#main>div>h1:first-child,#main>div>h2:first-child,#main>div>h3:first-child,#main>div>h4:first-child,#main>div>p:first-child{margin-top:0px;padding-top:0px;} +ul,ol{padding:0 0 0 0;margin:0 0 0 0;} +.row,[class*="span"]{margin-left:0px;} +.navbar .nav{float:none;}.navbar .nav>li>a{border-left:none;border-right:none;} +.navbar .nav>li>a:hover,.navbar .nav>li>a:focus{background-color:inherit;border-left:none;border-right:none;} +.navbar .nav>li:nth-child(even){border-left:1px solid #c0c0c0;border-right:1px solid #c0c0c0;} +.navbar .nav>.navbar .nav>li:last-child{border-right:none;} +.navbar .nav .active a,.navbar .nav .active a:hover,.navbar .nav .active a:focus{background-color:white;box-shadow:none;} +.navbar .navbar-inner{background-image:url('../img/chalkboard_bg.jpg');-webkit-box-shadow:inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25);-moz-box-shadow:inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25);box-shadow:inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25);padding-top:1em;} +.navbar .nav-wrap{width:100%;padding:0 0 0 0;margin:0 0 0 0;width:940px;margin-bottom:-24px;-webkit-box-shadow:0 0 8px 3px rgba(0, 0, 0, 0.25);-moz-box-shadow:0 0 8px 3px rgba(0, 0, 0, 0.25);box-shadow:0 0 8px 3px rgba(0, 0, 0, 0.25);background:white;text-align:center;}.navbar .nav-wrap ul{display:inline-block;margin:0 0 0 0;}.navbar .nav-wrap ul>li{float:none;display:inline-block;}.navbar .nav-wrap ul>li>a{text-shadow:none;color:#333333;text-transform:uppercase;} +.navbar .nav-wrap ul>li>a:focus,.navbar .nav-wrap ul>li>a:hover{color:#c0c0c0;} +.navbar .nav-wrap ul>li:last-child{border-right:none;} +.navbar .brand{display:block;width:671px;height:220px;background-image:url('../img/csol_logo.png');background-repeat:no-repeat;margin:0 auto;float:none;text-indent:-9000px;} +.footer{-webkit-box-shadow:inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25);-moz-box-shadow:inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25);box-shadow:inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25);}.footer a{color:#fff;} +.footer a.logo{text-indent:-9000px;width:82px;height:82px;display:block;background-position:center center;background-repeat:no-repeat;} +.footer a.logo.chi{background-image:url('../img/chi.png');} +.footer a.logo.mac{background-image:url('../img/mac.png');} +.footer a.logo.moz{background-image:url('../img/moz.png');} +.footer a:hover{color:#c0c0c0;text-decoration:none;} +.footer .lower{border-top:1px solid white;padding-top:20px;}.footer .lower p{background-image:url('../img/csol_logo_sm.png');padding-left:209px;background-repeat:no-repeat;background-position:top left;width:400px;min-height:131px;margin-bottom:20px;} +.footer .lower li{border-left:none;border-right:none;} +.footer .upper{padding:1em 0;} +.footer ul li{display:inline-block;}.footer ul li>a,.footer ul li>span{margin:10px;} +.footer ul li:first-child a{margin-left:0px;} +.footer ul li:nth-child(even){border-left:1px solid #fff;border-right:1px solid #fff;} +.footer ul li:last-child{border-right:none;} +.wrapper{width:100%;}.wrapper .inner-wrapper{width:100%;} +.wrapper.primary{min-height:100%;height:auto !important;height:100%;margin:0px 0px -250px 0px;}.wrapper.primary .inner-wrapper{padding:0px 0px 250px 0px;} +.wrapper.secondary{color:#fff;height:250px;background-image:url('../img/chalkboard_bg.jpg');} +.poster a,.poster img{display:block;margin-left:auto;margin-right:auto;} +#menu-login-form{padding:10px;text-align:left;} #application-review .well{margin-left:-20px;margin-right:-20px;} #edit-application{margin-bottom:20px;}#edit-application .items{list-style:none;margin:0;border:solid 1px #CCC;border-radius:4px 4px 0 0;} #edit-application .item{padding:9.5px;position:relative;border-top:solid 1px #DDD;margin:0;background:#F5F5F5;}#edit-application .item:first-child{border-top:none;border-radius:4px 4px 0 0;} @@ -84,4 +54,3 @@ input[type="password"].metered:focus:invalid:focus+.password-meter{border-color: .upload-list .details{position:relative;}.upload-list .details .meta{position:relative;z-index:1;padding:3px 10px;} .upload-list .details .filename{font-weight:bold;} .upload-list .details .progress{position:absolute;top:0;left:0;right:0;height:100%;}.upload-list .details .progress .bar{opacity:0.5;} -@media all and (max-width:767px){#header h1{padding:0 5%;}#header h1 a{padding:15% 0;height:auto;margin:0;} #navigation .nav li a{padding:10px 10px;font-size:.9em;} #content{padding:30px 20px;}#content h2:before,#content h2:after,#content h3:before,#content h3:after{border:none;} #footer{padding:0 20px;}#footer #content{text-shadow:none;} #footer .pull-left{float:none;text-align:center;margin-bottom:20px;} #footer nav,#footer .nav-pills{float:none;text-align:center;}#footer nav li,#footer .nav-pills li{display:inline-block;font-size:.8em;} #footer .copytxt{text-align:center;}}@media all and (max-width:480px){#navigation .nav li a{padding:10px 5px;font-size:.8em;}} diff --git a/static/media/images/favicon.png b/static/media/images/favicon.png new file mode 100644 index 0000000..c6ba5e6 Binary files /dev/null and b/static/media/images/favicon.png differ diff --git a/static/media/images/icon_status_awarded.png b/static/media/images/icon_status_awarded.png new file mode 100644 index 0000000..b93a388 Binary files /dev/null and b/static/media/images/icon_status_awarded.png differ diff --git a/static/media/images/icon_status_favorite.png b/static/media/images/icon_status_favorite.png new file mode 100644 index 0000000..c4468ed Binary files /dev/null and b/static/media/images/icon_status_favorite.png differ diff --git a/static/media/images/icon_status_queue.png b/static/media/images/icon_status_queue.png new file mode 100644 index 0000000..54cfd6e Binary files /dev/null and b/static/media/images/icon_status_queue.png differ diff --git a/static/media/images/icon_status_reviewed.png b/static/media/images/icon_status_reviewed.png new file mode 100644 index 0000000..0d5d309 Binary files /dev/null and b/static/media/images/icon_status_reviewed.png differ diff --git a/static/media/images/activity.png b/static/media/img/activity.png similarity index 100% rename from static/media/images/activity.png rename to static/media/img/activity.png diff --git a/static/media/images/add-badge.png b/static/media/img/add-badge.png similarity index 100% rename from static/media/images/add-badge.png rename to static/media/img/add-badge.png diff --git a/static/media/images/badge-large.png b/static/media/img/badge-large.png similarity index 100% rename from static/media/images/badge-large.png rename to static/media/img/badge-large.png diff --git a/static/media/images/badge.png b/static/media/img/badge.png similarity index 100% rename from static/media/images/badge.png rename to static/media/img/badge.png diff --git a/static/media/images/billie_holiday.png b/static/media/img/billie_holiday.png similarity index 100% rename from static/media/images/billie_holiday.png rename to static/media/img/billie_holiday.png diff --git a/static/media/images/billie_holiday@2X.png b/static/media/img/billie_holiday@2X.png similarity index 100% rename from static/media/images/billie_holiday@2X.png rename to static/media/img/billie_holiday@2X.png diff --git a/static/media/images/chalkboard_bg_green.jpg b/static/media/img/chalkboard_bg.jpg similarity index 100% rename from static/media/images/chalkboard_bg_green.jpg rename to static/media/img/chalkboard_bg.jpg diff --git a/static/media/img/chalkboard_bg_green.jpg b/static/media/img/chalkboard_bg_green.jpg new file mode 100644 index 0000000..f321958 Binary files /dev/null and b/static/media/img/chalkboard_bg_green.jpg differ diff --git a/static/media/images/chalkboard_bg_grey.jpg b/static/media/img/chalkboard_bg_grey.jpg similarity index 100% rename from static/media/images/chalkboard_bg_grey.jpg rename to static/media/img/chalkboard_bg_grey.jpg diff --git a/static/media/images/challenge.png b/static/media/img/challenge.png similarity index 100% rename from static/media/images/challenge.png rename to static/media/img/challenge.png diff --git a/static/media/images/footer_logo_cityofchi.png b/static/media/img/chi.png similarity index 100% rename from static/media/images/footer_logo_cityofchi.png rename to static/media/img/chi.png diff --git a/static/media/images/csol_logo_illustration.png b/static/media/img/csol_logo.png similarity index 100% rename from static/media/images/csol_logo_illustration.png rename to static/media/img/csol_logo.png diff --git a/static/media/images/csol_logo_footer.png b/static/media/img/csol_logo_footer.png similarity index 100% rename from static/media/images/csol_logo_footer.png rename to static/media/img/csol_logo_footer.png diff --git a/static/media/img/csol_logo_illustration.png b/static/media/img/csol_logo_illustration.png new file mode 100644 index 0000000..b6f8393 Binary files /dev/null and b/static/media/img/csol_logo_illustration.png differ diff --git a/static/media/img/csol_logo_sm.png b/static/media/img/csol_logo_sm.png new file mode 100644 index 0000000..db97dc3 Binary files /dev/null and b/static/media/img/csol_logo_sm.png differ diff --git a/static/media/img/favicon.png b/static/media/img/favicon.png new file mode 100644 index 0000000..c6ba5e6 Binary files /dev/null and b/static/media/img/favicon.png differ diff --git a/static/media/images/filter_icons_sprite.png b/static/media/img/filter_icons_sprite.png similarity index 100% rename from static/media/images/filter_icons_sprite.png rename to static/media/img/filter_icons_sprite.png diff --git a/static/media/img/footer_logo_cityofchi.png b/static/media/img/footer_logo_cityofchi.png new file mode 100644 index 0000000..cf61745 Binary files /dev/null and b/static/media/img/footer_logo_cityofchi.png differ diff --git a/static/media/images/footer_logo_macarthur.png b/static/media/img/footer_logo_macarthur.png similarity index 100% rename from static/media/images/footer_logo_macarthur.png rename to static/media/img/footer_logo_macarthur.png diff --git a/static/media/images/footer_logo_mozilla.png b/static/media/img/footer_logo_mozilla.png similarity index 100% rename from static/media/images/footer_logo_mozilla.png rename to static/media/img/footer_logo_mozilla.png diff --git a/static/media/images/footer_logos.png b/static/media/img/footer_logos.png similarity index 100% rename from static/media/images/footer_logos.png rename to static/media/img/footer_logos.png diff --git a/static/media/images/header_bg.jpg b/static/media/img/header_bg.jpg similarity index 100% rename from static/media/images/header_bg.jpg rename to static/media/img/header_bg.jpg diff --git a/static/media/images/icon_age.png b/static/media/img/icon_age.png similarity index 100% rename from static/media/images/icon_age.png rename to static/media/img/icon_age.png diff --git a/static/media/images/icon_badges.png b/static/media/img/icon_badges.png similarity index 100% rename from static/media/images/icon_badges.png rename to static/media/img/icon_badges.png diff --git a/static/media/images/icon_challenges.png b/static/media/img/icon_challenges.png similarity index 100% rename from static/media/images/icon_challenges.png rename to static/media/img/icon_challenges.png diff --git a/static/media/images/icon_date.png b/static/media/img/icon_date.png similarity index 100% rename from static/media/images/icon_date.png rename to static/media/img/icon_date.png diff --git a/static/media/images/icon_learn.png b/static/media/img/icon_learn.png similarity index 100% rename from static/media/images/icon_learn.png rename to static/media/img/icon_learn.png diff --git a/static/media/images/icon_location.png b/static/media/img/icon_location.png similarity index 100% rename from static/media/images/icon_location.png rename to static/media/img/icon_location.png diff --git a/static/media/img/icon_status_awarded.png b/static/media/img/icon_status_awarded.png new file mode 100644 index 0000000..b93a388 Binary files /dev/null and b/static/media/img/icon_status_awarded.png differ diff --git a/static/media/img/icon_status_favorite.png b/static/media/img/icon_status_favorite.png new file mode 100644 index 0000000..c4468ed Binary files /dev/null and b/static/media/img/icon_status_favorite.png differ diff --git a/static/media/img/icon_status_queue.png b/static/media/img/icon_status_queue.png new file mode 100644 index 0000000..54cfd6e Binary files /dev/null and b/static/media/img/icon_status_queue.png differ diff --git a/static/media/img/icon_status_reviewed.png b/static/media/img/icon_status_reviewed.png new file mode 100644 index 0000000..0d5d309 Binary files /dev/null and b/static/media/img/icon_status_reviewed.png differ diff --git a/static/media/images/icon_topic.png b/static/media/img/icon_topic.png similarity index 100% rename from static/media/images/icon_topic.png rename to static/media/img/icon_topic.png diff --git a/static/media/images/icon_type.png b/static/media/img/icon_type.png similarity index 100% rename from static/media/images/icon_type.png rename to static/media/img/icon_type.png diff --git a/static/media/img/mac.png b/static/media/img/mac.png new file mode 100644 index 0000000..00769a9 Binary files /dev/null and b/static/media/img/mac.png differ diff --git a/static/media/img/moz.png b/static/media/img/moz.png new file mode 100644 index 0000000..e0b2cd2 Binary files /dev/null and b/static/media/img/moz.png differ diff --git a/static/media/images/org-large.png b/static/media/img/org-large.png similarity index 100% rename from static/media/images/org-large.png rename to static/media/img/org-large.png diff --git a/static/media/images/org.png b/static/media/img/org.png similarity index 100% rename from static/media/images/org.png rename to static/media/img/org.png diff --git a/static/media/images/poster.png b/static/media/img/poster.png similarity index 100% rename from static/media/images/poster.png rename to static/media/img/poster.png diff --git a/static/media/images/program-large.png b/static/media/img/program-large.png similarity index 100% rename from static/media/images/program-large.png rename to static/media/img/program-large.png diff --git a/static/media/images/program.png b/static/media/img/program.png similarity index 100% rename from static/media/images/program.png rename to static/media/img/program.png diff --git a/static/media/images/splash_banner_topbg.gif b/static/media/img/splash_banner_topbg.gif similarity index 100% rename from static/media/images/splash_banner_topbg.gif rename to static/media/img/splash_banner_topbg.gif diff --git a/static/media/js/custom_logic.js b/static/media/js/custom_logic.js new file mode 100644 index 0000000..a3ef9e9 --- /dev/null +++ b/static/media/js/custom_logic.js @@ -0,0 +1,3 @@ +$(document).ready(function(){ + $('.show-tooltip').tooltip(); +}); \ No newline at end of file diff --git a/static/media/less/core.less b/static/media/less/core.less index 48e61f6..417dca1 100644 --- a/static/media/less/core.less +++ b/static/media/less/core.less @@ -2,596 +2,275 @@ @import "mixins.less"; +/*general*/ html, body { - margin: 0; - padding: 0; - .at2x('../images/billie_holiday.png',100px,100px); + height: 100%; } -#notes { - position: fixed; - bottom: 1em; - right: 1em; - max-width: 300px; - padding: 1em; - background: rgba(255,255,255,0.75); - color: #333; - border: solid 1px #999; - box-shadow: 2px 2px 5px rgba(0,0,0,0.5); -} - -#header { - background: url(../images/chalkboard_bg_green.jpg) center; - position: relative; - -webkit-box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, .25); - -moz-box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, .25); - box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, .25); - - &::after { - position: absolute; - top: 100%; - left: 0; - width: 100%; - height: 5px; - background: -webkit-linear-gradient(top, rgba(0,0,0,0.25), rgba(0,0,0,0)); - } - - h1 { - margin: 0; - overflow: hidden; - font-size: 2em; - line-height: 2em; - display: block; - - - a { - display: block; - max-width: 671px; - height: 220px; - background: url(../images/csol_logo_illustration.png) center no-repeat; - background-size: 100%; - text-indent: -999em; - position: relative; - margin: 23px auto 0 auto; - - } - } - -} // end #header - -#navigation { - margin: 0 auto; - position: relative; - bottom: -16px; - margin-top: -12px; - .drop-shadow (0, 0, 8px, 3px, 0.25); - text-align: center; - background: white; - text-align: center; - line-height: .8em; - - .nav { - margin-bottom: 0; - display: inline-block; - - li { - - & > a { - margin: 0; - padding: 10px 30px 10px 30px; - font-size: 1.2em; - .border-radius(0); - color: #404041; - border: none; - border-left: 1px solid #404041; - - &:hover { - background: #eee; - } - - } - - &.active { - a { - background: #eee; - } - - } - - &:first-child{ - a { - border-left: none; - } - } - } - - ul li a { - border: none; - } - - form { - padding: 10px; - text-align: left; - - .btn { - display: block; - width: 100%; - } - - small { - margin-top: 10px; - border-top: solid 1px #CCC; - display: block; - clear: both; - text-align: center; - } - } - } - - -} // end #navigation - -ul.row { - list-style: none; -} - -figure.thumbnail { - margin: 0; -} - -.thumbnail img { - margin-top: 5px; -} - -.thumbnail > a { - display: block; - text-align: center; -} - -form .divider { - display: block; - margin: 2em 0; - text-align: center; - position: relative; - - &::before { - content: ""; - position: absolute; - left: 0; - top: 50%; - width: 100%; - border-top: solid 1px #CCC; - } - - em { - background: #FFF; - padding: 0 1em; - position: relative; - } -} - -#content { - - text-shadow: 1px 1px 0px rgba(255,255,255,0.4); - padding: 50px 0; - min-height: 200px; - - h2 { - text-transform: uppercase; - font-family: "ff-meta-web-pro"; - font-weight: bold; - display: block; - margin: 0 auto; - text-align: center; - margin-bottom: 40px; - padding-bottom: 8px; - padding-top: 8px; - position: relative; - - a { - font-size: 1.3em; - color: black; - } - - &::before { - content: ""; - position: absolute; - left: 0; - top: 50%; - width: 35%; - border-top: solid 1px black; - } - - &::after { - content: ""; - position: absolute; - right: 0; - top: 50%; - width: 35%; - border-top: solid 1px black; - } - } - - h1.line30, h2.line30, h3.line30 { - &::before { - width: 30%; - } - - &::after { - width: 30%; - } - } - - h1.line20, h2.line20, h3.line20 { - &::before { - width: 20%; - } - - &::after { - width: 20%; - } - } - - h1.line10, h2.line10, h3.line10 { - &::before { - width: 10%; - } - - &::after { - width: 10%; - } - } - - h3 { - margin-top: 20px; - margin-bottom: 20px; - - &.activity { - margin-bottom: 0; - margin-top: 0; - } - - } +body { + margin: 0px; + padding: 0px; .container { - border-bottom: 1px solid #404041; - padding-bottom: 15px; - } - - img { - margin-bottom: 20px; - } - - - .poster { - background: #cfd4d1; - background: rgba(0,0,0,0.1); - background-image: url(../images/splash_banner_topbg.gif); - background-position: top; - background-repeat: repeat-x; - padding-top: 30px; - text-align: center; - display: block; - - img { - + & > br { + display: none; } } - - .filter { - label { - text-indent: -1000%; - width: 26px; - height: 26px; - margin-right: 3px; - padding-top: 0; - background: url(../images/filter_icons_sprite.png); - background-position: 0 1px; - - &.filter-category { - background-position: 68px 2px; - } - - &.filter-age { - background-position: -72px 2px; - } - - &.filter-date { - background-position: -136px 2px; - } - - &.filter-search { - background-position: -229px 2px; - } - - - } - - select { - margin-right: 15px; - } - - .navbar-inner { - padding-left: 10px; - } - - } - -} // end #content - -.home { - - #content h3 { - text-align: center; - margin-bottom: 10px; - } - - p { - font-size: 16px; - text-align: center; - margin-bottom: 30px; - line-height: 1.5em; - } - - - #content h2 { - &::before { - width: 12%; - } - - &::after { - width: 12%; - } - } - -} - -.activity { - - p.activity-description { - margin: 20px 0 25px 0; - } - - .span8 { - padding-bottom: 30px; - } } -.navbar-form { - color: white; - text-shadow: 1px 1px 0px black; - .border-radius(0); - border:none; - background: url(../images/chalkboard_bg_grey.jpg) center; +#main { + padding-top: 45px; + padding-bottom: 25px; - .brand { - text-transform: uppercase; - padding-left: 12px; - padding-top: 9px + & > h1:first-child, + & > h2:first-child, + & > h3:first-child, + & > h4:first-child, + & > p:first-child { + margin-top: 0px; + padding-top: 0px; + } + + & > div > h1:first-child, & > div > h2:first-child, & > div > h3:first-child, & > div > h4:first-child, & > div > p:first-child { + margin-top: 0px; + padding-top: 0px; } } -#content .thumbnails { - - figure { - .border-radius(0); - background: white; - .drop-shadow (0, 0, 5px,1px, 0.3); - padding: 0; - margin: 0; - border:none; - - figcaption { - - background: #555 url(../images/chalkboard_bg_grey.jpg) center; - color: white !important; - text-shadow:none; - } - - img { - padding: 10px; - max-width: 100%; - display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 0 auto; - } - } - -} // end .thumbnails - -.btn { - .border-radius(0); +ul, +ol { + padding: 0 0 0 0; + margin: 0 0 0 0; } - -.pagination { - - ul { - background: white; - .border-radius(0); - - li { - - &:first-child, &:last-child, &:first-child span, &:last-child span { - .border-radius(0); - } - - a { - color: #404041; - - &:first-child, &:last-child { - .border-radius(0); - } - } - } - } - - +.row, +[class*="span"] { + margin-left: 0px; } -#footer { - border-top: solid 1px #CCC; - min-height: 100px; - background: url(../images/chalkboard_bg_green.jpg) center; - position: relative; - -webkit-box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, .25); - -moz-box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, .25); - box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, .25); - color: white; - font-size: 1.1em; - text-shadow: none; - - .toprow { - border-bottom: 1px solid white; - padding-bottom: 20px; - margin-bottom: 25px; - - .pull-left { - font-size: 1.1em; - padding-top: 10px; - } - - } - - a { - color: white; - - &:hover { - background-color: none; - } - } - - +/*navbar*/ +.navbar { .nav { + float: none; - font-size: 1.2em; - margin: 0; - padding: 0; - - li { - margin-bottom: 0; - padding: 0; - - &:last-child { - a { - padding-right: 0; - } + & > li { + & > a { + border-left: none; + border-right: none; } - a { + & > a:hover, + & > a:focus { + background-color: inherit; + border-left: none; + border-right: none; + } + } + + & > li:nth-child(even) { + border-left: 1px solid #c0c0c0; + border-right: 1px solid #c0c0c0; + } + + & > .navbar .nav > li:last-child { + border-right: none; + } + + .active { + a, + a:hover, + a:focus { + background-color: white; + box-shadow: none; + } + } + } + + .navbar-inner { + background-image: url('../img/chalkboard_bg.jpg'); + -webkit-box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25); + -moz-box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25); + box-shadow: inset 0px -10px 20px 0px rgba(0, 0, 0, 0.25); + padding-top: 1em; + } + + .nav-wrap { + width: 100%; + padding: 0 0 0 0; + margin: 0 0 0 0; + width: 940px; + margin-bottom: -24px; + -webkit-box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.25); + background: white; + text-align: center; + + ul { + display: inline-block; + margin: 0 0 0 0; + + & > li { + float: none; display: inline-block; - &:hover { - background: none; + & > a { + text-shadow: none; + color: #333333; + text-transform: uppercase; } + + & > a:focus, + & > a:hover { + color: #c0c0c0; + } + } + + & > li:last-child { + border-right: none; } } } - - - .container { - padding: 40px 0; - } - - .logo-csol { - width: 100%; - height: 131px; - background: url(../images/csol_logo_footer.png) center no-repeat; - text-indent: -999em; + .brand { display: block; - margin-bottom: 20px; - margin-right: 15px; - - } - - .logos { - text-align: center; - } - - .copytxt { - font-size: .9em; - line-height: 1.8em; - text-align: right; - } - - .description { - margin-bottom: 20px; - } - - .logo { - text-indent: -999em; - display: inline-block; - padding: 10px; - margin: 5px; + width: 671px; + height: 220px; + background-image: url('../img/csol_logo.png'); background-repeat: no-repeat; - - &.macarthur { - width: 78px; - height: 78px; - background-image: url(../images/footer_logo_macarthur.png); - } - - &.city { - width: 78px; - height: 78px; - background-image: url(../images/footer_logo_cityofchi.png); - } - - &.mozilla { - width: 82px; - height: 78px; - background-image: url(../images/footer_logo_mozilla.png); - background-position: 10px 20px; - } - - - } - -} // end #footer - -input[type="password"].metered { - padding-bottom: 9px; - - & + .password-meter { - border: solid 1px #CCC; - border-top: none; - height: 6px; - margin: -6px 0 10px; - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; - -moz-box-sizing: border-box; - box-sizing: border-box; - position: relative; - overflow: hidden; - -webkit-transition: border linear .2s; - -moz-transition: border linear .2s; - -o-transition: border linear .2s; - transition: border linear .2s; - } - - & + .password-meter .bar { - border-radius: 0 0 0 3px; - overflow: hidden; - } - - &:focus + .password-meter { - border-color: rgba(82, 168, 236, 0.8); - } - - &:focus:invalid + .password-meter { - border-color: #ee5f5b; - } - - &:focus:invalid:focus + .password-meter { - border-color: #e9322d; + margin: 0 auto; + float: none; + text-indent: -9000px; } } +/*footer*/ +.footer { + -webkit-box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25); + -moz-box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25); + box-shadow: inset 0px 10px 20px 0px rgba(0, 0, 0, 0.25); + + a { + color: #fff; + } + + a.logo { + text-indent: -9000px; + width: 82px; + height: 82px; + display: block; + background-position: center center; + background-repeat: no-repeat; + } + + a.logo.chi { + background-image: url('../img/chi.png'); + } + + a.logo.mac { + background-image: url('../img/mac.png'); + } + + a.logo.moz { + background-image: url('../img/moz.png'); + } + + a:hover { + color: #c0c0c0; + text-decoration: none; + } + + .lower { + border-top: 1px solid white; + padding-top: 20px; + + p { + background-image: url('../img/csol_logo_sm.png'); + padding-left: 209px; + background-repeat: no-repeat; + background-position: top left; + width: 400px; + min-height: 131px; + margin-bottom: 20px; + } + + li { + border-left: none; + border-right: none; + } + } + + .upper { + padding: 1em 0; + } + + ul { + li { + display: inline-block; + + & > a, + & > span { + margin: 10px; + } + } + + li:first-child { + a { + margin-left: 0px; + } + } + + li:nth-child(even) { + border-left: 1px solid #fff; + border-right: 1px solid #fff; + } + + li:last-child { + border-right: none; + } + } +} + +/*sticky footer*/ +.wrapper { + width: 100%; + + .inner-wrapper { + width:100% + } + + &.primary { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0px 0px -250px 0px; + + .inner-wrapper { + padding: 0px 0px 250px 0px; + } + } + + &.secondary { + color: #fff; + height: 250px; + background-image: url('../img/chalkboard_bg.jpg'); + } +} + +/*CSOL-site specific*/ +.poster a, +.poster img { + display: block; + margin-left: auto; + margin-right: auto; +} +#menu-login-form { + padding: 10px; + text-align: left; +} + +/*Evidence uploading / application*/ #application-review { .well { margin-left: -20px; @@ -771,84 +450,3 @@ input[type="password"].metered { } } } - -// custom responsive styles - -@media all and (max-width: 767px) { - - #header h1 { - padding: 0 5%; - - - - a { - padding: 15% 0; - height: auto; - margin: 0; - } - } - - #navigation { - .nav { - li { - a { - padding: 10px 10px; - font-size: .9em; - } - } - } - } - - #content { - padding: 30px 20px; - - h2:before, h2:after, h3:before, h3:after { - border:none; - } - } - - #footer { - padding: 0 20px; - - #content { - text-shadow: none; - } - - - .pull-left { - float: none; - text-align: center; - margin-bottom: 20px; - } - - nav, .nav-pills { - float: none; - text-align: center; - - li { - display: inline-block; - font-size: .8em; - } - } - - .copytxt { - text-align: center; - } - } -} - -@media all and (max-width: 480px) { - - #navigation { - .nav { - - - li { - a { - padding: 10px 5px; - font-size: .8em; - } - } - } - } -} \ No newline at end of file diff --git a/views/badges/claim.html b/views/badges/claim.html index 27f45c3..b9fa40d 100644 --- a/views/badges/claim.html +++ b/views/badges/claim.html @@ -19,7 +19,7 @@
- +
diff --git a/views/badges/list.html b/views/badges/list.html index c57bc71..dd0b01f 100644 --- a/views/badges/list.html +++ b/views/badges/list.html @@ -8,7 +8,7 @@ {% block item_actions %} {{ super() }} - + {% endblock %} {% block no_data %} diff --git a/views/badges/single.html b/views/badges/single.html index 9a86512..9518a83 100644 --- a/views/badges/single.html +++ b/views/badges/single.html @@ -11,6 +11,7 @@

Claim this badge + Apply Add to your favorites

@@ -26,7 +27,7 @@

Badge blah in voluptate velit...

Details - +

@@ -38,7 +39,7 @@

Badge blah in voluptate velit...

Details - +

@@ -50,7 +51,7 @@

Badge blah in voluptate velit...

Details - +

@@ -62,11 +63,43 @@

Badge blah in voluptate velit...

Details - +

+{% endblock %} + +{% block modal %} + + + + {% endblock %} \ No newline at end of file diff --git a/views/home.html b/views/home.html index c30b409..16e23f4 100644 --- a/views/home.html +++ b/views/home.html @@ -6,23 +6,23 @@
- + -

Learn

+

Learn

Participate, play and learn! Find fun and rewarding stuff to do at organizations around the city, or online! There are even city-wide games that you can participate in this summer.

- + -

Earn

+

Earn

Get recognized for the cool things you do over the summer - earn digital badges that capture your work and show them off at your school or to employers in the fall.

- + -

Level Up

+

Level Up

If you keep earning badges, you can unlock access to more cool stuff, including city-wide challenges and a summer party where you can showcase your work!

diff --git a/views/layout.html b/views/layout.html index 45e6577..009cee9 100644 --- a/views/layout.html +++ b/views/layout.html @@ -6,141 +6,151 @@ CSOL{% block title %}{% if pageTitle %} | {{ pageTitle }}{% endif %}{% endblock %} - + {% block head %}{% endblock %} - -
-
- {% block notices %} - {% for type, messages in _messages %} - {% if type != 'modal' %} - {% for message in messages %} -
- {{ message.value }} +
+
+ + +
+
+ {% block notices %} + {% for type, messages in _messages %} + {% if type != 'modal' %} + {% for message in messages %} +
+ {{ message.value }} +
+ {% endfor %} + {% endif %} + {% endfor %} + {% endblock %} + {% if _messages.modal %} + {% for message in _messages.modal %} + {% endfor %} {% endif %} - {% endfor %} - {% endblock %} - {% if _messages.modal %} - {% for message in _messages.modal %} - - {% endfor %} - {% endif %} - {% block pageTitleWrapper %}{% if pageTitle %}

{% block pageTitle %}{{ pageTitle }}{% endblock %}

{% endif %}{% endblock %} - {% block content %}{% endblock %} + {% block pageTitleWrapper %}{% if pageTitle %}

{% block pageTitle %}{{ pageTitle }}{% endblock %}

{% endif %}{% endblock %} + {% block content %}{% endblock %} +
+
+
- +
+ + {% block modal %}{% endblock %} + + {% if _messages.modal %} + {% endif %} + {% block finally %}{% endblock %} - next(); - })(jQuery); - - {% endif %} - {% block finally %}{% endblock %} diff --git a/views/learn/activity/single.html b/views/learn/activity/single.html index a90653f..3320ed0 100644 --- a/views/learn/activity/single.html +++ b/views/learn/activity/single.html @@ -22,7 +22,7 @@

Badge blah in voluptate velit...

Details - +

@@ -34,7 +34,7 @@

Badge blah in voluptate velit...

Details - +

@@ -46,7 +46,7 @@

Badge blah in voluptate velit...

Details - +

@@ -58,7 +58,7 @@

Badge blah in voluptate velit...

Details - +

diff --git a/views/learn/list.html b/views/learn/list.html index a0e5981..c7e6743 100644 --- a/views/learn/list.html +++ b/views/learn/list.html @@ -4,5 +4,5 @@ {% block item_actions %} {{ super() }} - + {% endblock %} \ No newline at end of file diff --git a/views/orgs/list.html b/views/orgs/list.html index 5a107c3..b2abc6c 100644 --- a/views/orgs/list.html +++ b/views/orgs/list.html @@ -4,5 +4,5 @@ {% block item_actions %} {{ super() }} - + {% endblock %} \ No newline at end of file diff --git a/views/orgs/single.html b/views/orgs/single.html index df51ec5..9a97177 100644 --- a/views/orgs/single.html +++ b/views/orgs/single.html @@ -10,7 +10,7 @@

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

- Add to your favorites + Add to your favorites

@@ -23,7 +23,7 @@

Program blah sed do eiusmod...

Details - +

@@ -35,7 +35,7 @@

Program blah sed do eiusmod...

Details - +

@@ -47,7 +47,7 @@

Program blah sed do eiusmod...

Details - +

diff --git a/views/programs/list.html b/views/programs/list.html index b5fc93f..107a1d1 100644 --- a/views/programs/list.html +++ b/views/programs/list.html @@ -10,7 +10,7 @@ {% block item_actions %} {{ super() }} - + {% endblock %} {% block no_data %} diff --git a/views/programs/single.html b/views/programs/single.html index 0c5eb39..2741847 100644 --- a/views/programs/single.html +++ b/views/programs/single.html @@ -25,7 +25,7 @@

Badge blah in voluptate velit...

Details - +

@@ -37,7 +37,7 @@

Badge blah in voluptate velit...

Details - +

diff --git a/views/user/backpack.html b/views/user/backpack.html index 33c3713..1344ce8 100644 --- a/views/user/backpack.html +++ b/views/user/backpack.html @@ -3,15 +3,129 @@ {% set navItem = 'backpack' %} {% block list %} - {{ super() }} -
  • -
    - -
    -

    Claim another badge!

    -

    +1

    -
    -
    +
  • +
    +
    + AwardedAwarded +
    + + + + New + +
    +

    Pulvinar? Phasellus eu sagittis adipiscing tristique massa.

    + +

    + +

    +

    + + Details +

    +
    +
    +
  • + +
  • +
    +
    + In QueueIn Queue +
    + + + + New + +
    +

    Pulvinar? Phasellus eu sagittis adipiscing tristique massa.

    + +

    + +

    +

    + + Details +

    +
    +
    +
  • + +
  • +
    +
    + ReviewedReviewed +
    +
    + + + + New + +
    +

    Pulvinar? Phasellus eu sagittis adipiscing tristique massa.

    + +

    + +

    +

    + + Details +

    +
    +
    +
  • + +
  • +
    +
    + FavoriteFavorite +
    + + + + New + +
    +

    Pulvinar? Phasellus eu sagittis adipiscing tristique massa.

    + +

    + +

    +

    + + Details +

    +
    +
    +
  • + +
  • +
    + +
    +

    Claim another badge!

    +

    +1

    +
    +
  • + +{% endblock %} + +{% block modal %} + + + + {% endblock %} \ No newline at end of file