├── .DS_Store ├── .gitignore ├── Makefile ├── Procfile ├── README.md ├── Vagrantfile ├── app.coffee ├── blog_core.coffee ├── bootstrap.sh ├── builtAssets ├── css │ ├── app2-3f700dd31a1b70aef1bc5f6e85d91dd7.css │ ├── font-awesome.min-53fe1b7ccc4ed89cfc942c504840a64c.css │ ├── prettify-ecd4a5d6c0cbee10b168f6aa000c64ea.css │ ├── raphaelicons-917ad189ad3599d586550c3924902d09.css │ ├── style-096de9a93b2ffff7a3de4a2703d6e5af.css │ ├── style-3f700dd31a1b70aef1bc5f6e85d91dd7.css │ ├── style-64d593ad73e7a090274a914751b442ce.css │ ├── style-836d9cede902c68b7fe7fd952adc12f9.css │ ├── style-d41d8cd98f00b204e9800998ecf8427e.css │ └── style-dc7b23800c3644df1034187dfd86d4a3.css └── js │ ├── app-32b417979e268bb8049b1bfdd1340a5e.js │ ├── html5shiv-62bd53b6b9b7afed0c23ad61f1119a76.js │ ├── jquery-1.7.2.min-104c80bc44f197cc515602d64962ea5b.js │ ├── modernizr-466acb130f1e6e4e6c5120aadea14153.js │ ├── prettify-163ce4e6533b9c60b7184e04c8c4f0ee.js │ └── underscore-min-998a21a2a6fe3d28055bd09175cab412.js ├── config.coffee ├── config.coffee.sample ├── handlers ├── about.coffee ├── admin │ ├── index.coffee │ ├── media.coffee │ ├── messages.coffee │ ├── posts.coffee │ └── projects.coffee ├── home.coffee ├── posts.coffee ├── projects.coffee ├── routes.coffee ├── rss.coffee ├── search.coffee └── session.coffee ├── locales ├── en.js └── pt-br.js ├── package.json ├── public ├── .DS_Store ├── demo │ ├── .DS_Store │ └── ios │ │ └── ios6_file_api.html └── img │ ├── .DS_Store │ ├── 12_col.gif │ ├── 16_col.gif │ ├── 24_col.gif │ ├── about │ ├── .DS_Store │ ├── about.png │ ├── gui copy.png │ └── gui.png │ ├── back.png │ ├── bg.jpg │ ├── bg2.jpg │ ├── bg3.jpg │ ├── bgptr.jpg │ ├── bgptr2.png │ ├── bgptr3.png │ ├── icons │ ├── facebook.png │ ├── github.png │ ├── linkedin.png │ ├── skype.png │ └── twitter.png │ ├── posts │ ├── client_side_mvc.png │ ├── hibrid_mode_mvc.png │ └── server_side_mvc.png │ ├── projects │ ├── .DS_Store │ ├── gooparties │ │ └── gooparties.png │ ├── magazine_luiza │ │ └── magazine_luiza_home.png │ └── quale │ │ ├── .DS_Store │ │ └── quale_home.png │ ├── stores │ ├── .DS_Store │ ├── app_store_normal.png │ ├── google_play_normal.png │ └── marketplace_normal.png │ └── tag.png ├── routes.coffee ├── run.js ├── test └── test.coffee └── themes └── default ├── assets ├── css │ ├── font-awesome.min.less │ └── style.less ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff └── js │ ├── app.coffee │ └── jquery-1.7.2.min.js └── views ├── 404.jade ├── 500.jade ├── admin ├── index.jade ├── media │ ├── index.jade │ └── new.jade ├── messages │ ├── index.jade │ └── show.jade ├── posts.jade ├── posts │ ├── index.jade │ └── show.jade └── projects │ ├── edit.jade │ ├── index.jade │ ├── new.jade │ ├── project_form.jade │ └── show.jade ├── admin_layout.jade ├── analytics.jade ├── apps ├── index.jade └── show.jade ├── blog ├── index.jade ├── search.jade └── show.jade ├── common_head.jade ├── contact └── index.jade ├── layout.jade ├── menu.jade ├── menu_admin.jade ├── post_tags.jade ├── posts ├── edit.jade ├── index.jade ├── new.jade └── post_form.jade ├── projects ├── index.jade └── show.jade ├── search_field.jade ├── sessions └── new.jade └── sidebar.jade /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | config.coffee 3 | .DS_Store -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | ./node_modules/.bin/mocha \ 3 | --compilers coffee:coffee-script \ 4 | -R spec 5 | 6 | run: 7 | supervisor -e "node|js|coffee" run.js 8 | .PHONY: test run -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: coffee app.coffee -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Simple (but great) Blog with Nodejs, Express, Mongoose, Markdown and Coffeescript 2 | 3 | ## Features 4 | - Use Markdown syntax to write your posts 5 | - Simple Administration Interface 6 | - Authentication 7 | - Search mechanism 8 | - Projects/Portifolio area 9 | - Contact form 10 | - Ready to deploy in Heroku 11 | 12 | 13 | ## Demo 14 | To see a demo in action visit [http://guidefreitas.com](http://guidefreitas.com) 15 | 16 | ## Configuration 17 | To configure your blog copy config.coffee.sample file to config.coffee and edit: 18 | 19 | ```bash 20 | exports.dbUrl = process.env['DBURL'] # OR 'mongodb://user:pass@host:port/database' 21 | exports.blog_title = 'Sample Title' 22 | exports.blog_description = 'Sample Blog Description' 23 | exports.feed_url = 'http://blogurl.com/rss.xml' 24 | exports.site_url = 'http://blogurl.com' 25 | exports.site_image_url = 'http://blogurl.com/icon.png' 26 | exports.site_author = 'Blogs Author Name' 27 | 28 | exports.author_email = 'blog@authorname.com' 29 | exports.author_facebook_url = 'https://www.facebook.com/author' 30 | exports.author_twitter_url = 'http://twitter.com/author' 31 | exports.author_linkedin_url = 'http://www.linkedin.com/pub/author_url' 32 | exports.author_github_url = 'https://github.com/author' 33 | exports.author_skype_url = 'callto://skype_author_username' 34 | exports.author_bio_description = 'Blog owner biography/description' 35 | 36 | exports.crypto_key = 'keyboard cat' #change it in production 37 | ``` 38 | 39 | ## TEST 40 | 41 | ### To test run 42 | 43 | make test 44 | 45 | ## TODO 46 | - Media management in administration interface 47 | - Get test coverage better -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.configure("2") do |config| 5 | config.vm.box = "precise32" 6 | config.vm.box_url = "http://files.vagrantup.com/precise32.box" 7 | config.vm.network :forwarded_port, guest: 3000, host: 3000 8 | config.vm.provision :shell, :path => "bootstrap.sh" 9 | end 10 | -------------------------------------------------------------------------------- /app.coffee: -------------------------------------------------------------------------------- 1 | core = require('./blog_core') 2 | express = require('express') 3 | ghm = require('marked') 4 | moment = require('moment') 5 | gzippo = require('gzippo') 6 | _ = require('underscore')._ 7 | i18n = require('i18n') 8 | async = require('async') 9 | app = express() 10 | 11 | MemStore = express.session.MemoryStore 12 | # NODEJS MIDDLEWARES 13 | app.use(express.bodyParser()); 14 | app.use(express.methodOverride()); 15 | app.use(express.cookieParser()); 16 | app.use(express.session({ secret: core.config.crypto_key })); 17 | 18 | assets_dir = "./themes/" + core.config.theme + "/assets/" 19 | app.use require('connect-assets')(src:assets_dir) 20 | app.use(express.static('./public')) 21 | app.use(express.responseTime()) 22 | #app.use(gzippo.staticGzip(__dirname + '/public')) 23 | app.set('view engine', 'jade') 24 | views_dir = "./themes/" + core.config.theme + "/views" 25 | app.set('views', views_dir) 26 | app.use(gzippo.compress()) 27 | app.use(express.session({ 28 | secret: core.config.crypto_key, 29 | store: MemStore({ 30 | reapInterval: 60000 * 10 31 | }) 32 | })) 33 | 34 | #i18n 35 | i18n.configure({ 36 | #setup some locales - other locales default to en silently 37 | locales:['pt-br', 'en'], 38 | 39 | #where to register __() and __n() to, might be "global" if you know what you are doing 40 | register: global 41 | }) 42 | 43 | #SET SYSTEM LANGUAGE 44 | i18n.setLocale(core.config.locale) 45 | moment.lang(core.config.locale); 46 | 47 | app.configure('production', () -> 48 | oneYear = 86400 49 | app.use(express.static(__dirname + '/public', { maxAge: oneYear })) 50 | app.use(express.errorHandler()) 51 | ); 52 | 53 | currentUser = (req, res, callback) -> 54 | if !req.session || !req.session.userid 55 | return null 56 | else 57 | core.User.findOne({_id : core.ObjectId(req.session.userid)}, (err, user) -> 58 | callback(err, user) 59 | ) 60 | 61 | app.use((req, res, next) -> 62 | res.locals.req = req 63 | res.locals.session = () -> 64 | if req.session 65 | return req.session 66 | 67 | res.locals.token = () -> 68 | if req.session && req.session._csrf 69 | return req.session._csrf 70 | 71 | res.locals.currentUser = currentUser 72 | res.locals.notice = false 73 | res.locals.md = ghm 74 | res.locals.moment = moment 75 | res.locals.TrimStr = core.TrimStr 76 | res.locals.pageTitle = core.config.blog_title 77 | res.locals.config = core.config 78 | res.locals.__i = i18n.__ 79 | res.locals.__n = i18n.__n 80 | next() 81 | ); 82 | 83 | app.use(app.router) 84 | routes = require('./routes')(app) 85 | 86 | port = process.env.PORT || 3000; 87 | app.listen(port) 88 | console.log('Server running at http://0.0.0.0:3000/') -------------------------------------------------------------------------------- /blog_core.coffee: -------------------------------------------------------------------------------- 1 | mongoose = require('mongoose') 2 | crypto = require('crypto') 3 | config = require('./config') 4 | _ = require('underscore')._ 5 | async = require("async") 6 | 7 | #UTILS 8 | 9 | TrimStr = (str) -> 10 | return str.replace(/^\s+|\s+$/g,"") 11 | 12 | exports.TrimStr = TrimStr 13 | 14 | 15 | exports.doDashes = (str) -> 16 | return str.replace(/[^a-z0-9]+/gi, '-').replace(/^-*|-*$/g, '').toLowerCase(); 17 | 18 | db = mongoose.createConnection(config.dbUrl) 19 | exports.config = config 20 | exports.db = db 21 | exports.ObjectId = (id) -> 22 | new mongoose.Types.ObjectId(id) 23 | 24 | userSchema = mongoose.Schema({ 25 | username: { 26 | type: String, 27 | index: {unique: true} 28 | }, 29 | password: String, 30 | email: { 31 | type: String, 32 | index: {unique: true} 33 | }, 34 | admin: Boolean 35 | }) 36 | 37 | postSchema = mongoose.Schema({ 38 | urlid: { 39 | type: String, 40 | index: {unique: true} 41 | }, 42 | title: String, 43 | body: String, 44 | tags: String, 45 | date: Date 46 | }) 47 | 48 | messageSchema = mongoose.Schema({ 49 | name: String, 50 | email: String, 51 | body: String, 52 | date: Date 53 | }) 54 | 55 | projectSchema = mongoose.Schema({ 56 | name: String, 57 | description: String, 58 | project_image_url: String, 59 | website_link: String, 60 | download_link: String, 61 | ios_app_store_link: String, 62 | mac_app_store_link: String, 63 | marketplace_link: String, 64 | google_play_link: String 65 | }) 66 | 67 | User = db.model('User', userSchema) 68 | Post = db.model('Post', postSchema) 69 | Message = db.model('Message', messageSchema) 70 | Project = db.model('Project', projectSchema) 71 | 72 | exports.Post = Post 73 | exports.User = User 74 | exports.Message = Message 75 | exports.Project = Project 76 | 77 | exports.PostsTags = () -> 78 | Post.find().select('tags').exec((err, tags) -> 79 | if tags 80 | filtered_tags = [] 81 | _.each(tags, (tag) -> 82 | if tag.tags != undefined 83 | _.each(tag.tags.split(','), (tag2) -> 84 | tag2 = TrimStr(tag2) 85 | if !_.contains(filtered_tags, tag2.toUpperCase()) 86 | filtered_tags.push(tag2.toUpperCase()) 87 | ) 88 | ) 89 | return filtered_tags 90 | ) 91 | 92 | 93 | User.find({username: 'admin'}, (err, users) -> 94 | if(!err && users.length == 0) 95 | pass_crypted = crypto.createHmac("md5", config.crypto_key).update('admin123').digest("hex") 96 | gui = new User({ 97 | username: 'admin', 98 | password: pass_crypted, 99 | email: 'admin@admin.com', 100 | admin: true 101 | }) 102 | gui.save((err) -> 103 | if(err) 104 | console.log('Error when try to save admin user') 105 | ) 106 | ) 107 | 108 | 109 | -------------------------------------------------------------------------------- /bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get update 4 | apt-get install -y build-essential nodejs mongodb coffeescript git-all 5 | 6 | #Heroku 7 | wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh -------------------------------------------------------------------------------- /builtAssets/css/font-awesome.min-53fe1b7ccc4ed89cfc942c504840a64c.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.1');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.1') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.1') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.1') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} 2 | .fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%} 3 | .fa-2x{font-size:2em} 4 | .fa-3x{font-size:3em} 5 | .fa-4x{font-size:4em} 6 | .fa-5x{font-size:5em} 7 | .fa-fw{width:1.2857142857142858em;text-align:center} 8 | .fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative} 9 | .fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em} 10 | .fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em} 11 | .pull-right{float:right} 12 | .pull-left{float:left} 13 | .fa.pull-left{margin-right:.3em} 14 | .fa.pull-right{margin-left:.3em} 15 | .fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear} 16 | @-moz-keyframes spin{0%{-moz-transform:rotate(0deg)} 100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)} 100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)} 100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)} 100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)} 100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)} 17 | .fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)} 18 | .fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)} 19 | .fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)} 20 | .fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)} 21 | .fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle} 22 | .fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center} 23 | .fa-stack-1x{line-height:inherit} 24 | .fa-stack-2x{font-size:2em} 25 | .fa-inverse{color:#fff} 26 | .fa-glass:before{content:"\f000"} 27 | .fa-music:before{content:"\f001"} 28 | .fa-search:before{content:"\f002"} 29 | .fa-envelope-o:before{content:"\f003"} 30 | .fa-heart:before{content:"\f004"} 31 | .fa-star:before{content:"\f005"} 32 | .fa-star-o:before{content:"\f006"} 33 | .fa-user:before{content:"\f007"} 34 | .fa-film:before{content:"\f008"} 35 | .fa-th-large:before{content:"\f009"} 36 | .fa-th:before{content:"\f00a"} 37 | .fa-th-list:before{content:"\f00b"} 38 | .fa-check:before{content:"\f00c"} 39 | .fa-times:before{content:"\f00d"} 40 | .fa-search-plus:before{content:"\f00e"} 41 | .fa-search-minus:before{content:"\f010"} 42 | .fa-power-off:before{content:"\f011"} 43 | .fa-signal:before{content:"\f012"} 44 | .fa-gear:before,.fa-cog:before{content:"\f013"} 45 | .fa-trash-o:before{content:"\f014"} 46 | .fa-home:before{content:"\f015"} 47 | .fa-file-o:before{content:"\f016"} 48 | .fa-clock-o:before{content:"\f017"} 49 | .fa-road:before{content:"\f018"} 50 | .fa-download:before{content:"\f019"} 51 | .fa-arrow-circle-o-down:before{content:"\f01a"} 52 | .fa-arrow-circle-o-up:before{content:"\f01b"} 53 | .fa-inbox:before{content:"\f01c"} 54 | .fa-play-circle-o:before{content:"\f01d"} 55 | .fa-rotate-right:before,.fa-repeat:before{content:"\f01e"} 56 | .fa-refresh:before{content:"\f021"} 57 | .fa-list-alt:before{content:"\f022"} 58 | .fa-lock:before{content:"\f023"} 59 | .fa-flag:before{content:"\f024"} 60 | .fa-headphones:before{content:"\f025"} 61 | .fa-volume-off:before{content:"\f026"} 62 | .fa-volume-down:before{content:"\f027"} 63 | .fa-volume-up:before{content:"\f028"} 64 | .fa-qrcode:before{content:"\f029"} 65 | .fa-barcode:before{content:"\f02a"} 66 | .fa-tag:before{content:"\f02b"} 67 | .fa-tags:before{content:"\f02c"} 68 | .fa-book:before{content:"\f02d"} 69 | .fa-bookmark:before{content:"\f02e"} 70 | .fa-print:before{content:"\f02f"} 71 | .fa-camera:before{content:"\f030"} 72 | .fa-font:before{content:"\f031"} 73 | .fa-bold:before{content:"\f032"} 74 | .fa-italic:before{content:"\f033"} 75 | .fa-text-height:before{content:"\f034"} 76 | .fa-text-width:before{content:"\f035"} 77 | .fa-align-left:before{content:"\f036"} 78 | .fa-align-center:before{content:"\f037"} 79 | .fa-align-right:before{content:"\f038"} 80 | .fa-align-justify:before{content:"\f039"} 81 | .fa-list:before{content:"\f03a"} 82 | .fa-dedent:before,.fa-outdent:before{content:"\f03b"} 83 | .fa-indent:before{content:"\f03c"} 84 | .fa-video-camera:before{content:"\f03d"} 85 | .fa-picture-o:before{content:"\f03e"} 86 | .fa-pencil:before{content:"\f040"} 87 | .fa-map-marker:before{content:"\f041"} 88 | .fa-adjust:before{content:"\f042"} 89 | .fa-tint:before{content:"\f043"} 90 | .fa-edit:before,.fa-pencil-square-o:before{content:"\f044"} 91 | .fa-share-square-o:before{content:"\f045"} 92 | .fa-check-square-o:before{content:"\f046"} 93 | .fa-move:before{content:"\f047"} 94 | .fa-step-backward:before{content:"\f048"} 95 | .fa-fast-backward:before{content:"\f049"} 96 | .fa-backward:before{content:"\f04a"} 97 | .fa-play:before{content:"\f04b"} 98 | .fa-pause:before{content:"\f04c"} 99 | .fa-stop:before{content:"\f04d"} 100 | .fa-forward:before{content:"\f04e"} 101 | .fa-fast-forward:before{content:"\f050"} 102 | .fa-step-forward:before{content:"\f051"} 103 | .fa-eject:before{content:"\f052"} 104 | .fa-chevron-left:before{content:"\f053"} 105 | .fa-chevron-right:before{content:"\f054"} 106 | .fa-plus-circle:before{content:"\f055"} 107 | .fa-minus-circle:before{content:"\f056"} 108 | .fa-times-circle:before{content:"\f057"} 109 | .fa-check-circle:before{content:"\f058"} 110 | .fa-question-circle:before{content:"\f059"} 111 | .fa-info-circle:before{content:"\f05a"} 112 | .fa-crosshairs:before{content:"\f05b"} 113 | .fa-times-circle-o:before{content:"\f05c"} 114 | .fa-check-circle-o:before{content:"\f05d"} 115 | .fa-ban:before{content:"\f05e"} 116 | .fa-arrow-left:before{content:"\f060"} 117 | .fa-arrow-right:before{content:"\f061"} 118 | .fa-arrow-up:before{content:"\f062"} 119 | .fa-arrow-down:before{content:"\f063"} 120 | .fa-mail-forward:before,.fa-share:before{content:"\f064"} 121 | .fa-resize-full:before{content:"\f065"} 122 | .fa-resize-small:before{content:"\f066"} 123 | .fa-plus:before{content:"\f067"} 124 | .fa-minus:before{content:"\f068"} 125 | .fa-asterisk:before{content:"\f069"} 126 | .fa-exclamation-circle:before{content:"\f06a"} 127 | .fa-gift:before{content:"\f06b"} 128 | .fa-leaf:before{content:"\f06c"} 129 | .fa-fire:before{content:"\f06d"} 130 | .fa-eye:before{content:"\f06e"} 131 | .fa-eye-slash:before{content:"\f070"} 132 | .fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"} 133 | .fa-plane:before{content:"\f072"} 134 | .fa-calendar:before{content:"\f073"} 135 | .fa-random:before{content:"\f074"} 136 | .fa-comment:before{content:"\f075"} 137 | .fa-magnet:before{content:"\f076"} 138 | .fa-chevron-up:before{content:"\f077"} 139 | .fa-chevron-down:before{content:"\f078"} 140 | .fa-retweet:before{content:"\f079"} 141 | .fa-shopping-cart:before{content:"\f07a"} 142 | .fa-folder:before{content:"\f07b"} 143 | .fa-folder-open:before{content:"\f07c"} 144 | .fa-resize-vertical:before{content:"\f07d"} 145 | .fa-resize-horizontal:before{content:"\f07e"} 146 | .fa-bar-chart-o:before{content:"\f080"} 147 | .fa-twitter-square:before{content:"\f081"} 148 | .fa-facebook-square:before{content:"\f082"} 149 | .fa-camera-retro:before{content:"\f083"} 150 | .fa-key:before{content:"\f084"} 151 | .fa-gears:before,.fa-cogs:before{content:"\f085"} 152 | .fa-comments:before{content:"\f086"} 153 | .fa-thumbs-o-up:before{content:"\f087"} 154 | .fa-thumbs-o-down:before{content:"\f088"} 155 | .fa-star-half:before{content:"\f089"} 156 | .fa-heart-o:before{content:"\f08a"} 157 | .fa-sign-out:before{content:"\f08b"} 158 | .fa-linkedin-square:before{content:"\f08c"} 159 | .fa-thumb-tack:before{content:"\f08d"} 160 | .fa-external-link:before{content:"\f08e"} 161 | .fa-sign-in:before{content:"\f090"} 162 | .fa-trophy:before{content:"\f091"} 163 | .fa-github-square:before{content:"\f092"} 164 | .fa-upload:before{content:"\f093"} 165 | .fa-lemon-o:before{content:"\f094"} 166 | .fa-phone:before{content:"\f095"} 167 | .fa-square-o:before{content:"\f096"} 168 | .fa-bookmark-o:before{content:"\f097"} 169 | .fa-phone-square:before{content:"\f098"} 170 | .fa-twitter:before{content:"\f099"} 171 | .fa-facebook:before{content:"\f09a"} 172 | .fa-github:before{content:"\f09b"} 173 | .fa-unlock:before{content:"\f09c"} 174 | .fa-credit-card:before{content:"\f09d"} 175 | .fa-rss:before{content:"\f09e"} 176 | .fa-hdd-o:before{content:"\f0a0"} 177 | .fa-bullhorn:before{content:"\f0a1"} 178 | .fa-bell:before{content:"\f0f3"} 179 | .fa-certificate:before{content:"\f0a3"} 180 | .fa-hand-o-right:before{content:"\f0a4"} 181 | .fa-hand-o-left:before{content:"\f0a5"} 182 | .fa-hand-o-up:before{content:"\f0a6"} 183 | .fa-hand-o-down:before{content:"\f0a7"} 184 | .fa-arrow-circle-left:before{content:"\f0a8"} 185 | .fa-arrow-circle-right:before{content:"\f0a9"} 186 | .fa-arrow-circle-up:before{content:"\f0aa"} 187 | .fa-arrow-circle-down:before{content:"\f0ab"} 188 | .fa-globe:before{content:"\f0ac"} 189 | .fa-wrench:before{content:"\f0ad"} 190 | .fa-tasks:before{content:"\f0ae"} 191 | .fa-filter:before{content:"\f0b0"} 192 | .fa-briefcase:before{content:"\f0b1"} 193 | .fa-fullscreen:before{content:"\f0b2"} 194 | .fa-group:before{content:"\f0c0"} 195 | .fa-chain:before,.fa-link:before{content:"\f0c1"} 196 | .fa-cloud:before{content:"\f0c2"} 197 | .fa-flask:before{content:"\f0c3"} 198 | .fa-cut:before,.fa-scissors:before{content:"\f0c4"} 199 | .fa-copy:before,.fa-files-o:before{content:"\f0c5"} 200 | .fa-paperclip:before{content:"\f0c6"} 201 | .fa-save:before,.fa-floppy-o:before{content:"\f0c7"} 202 | .fa-square:before{content:"\f0c8"} 203 | .fa-reorder:before{content:"\f0c9"} 204 | .fa-list-ul:before{content:"\f0ca"} 205 | .fa-list-ol:before{content:"\f0cb"} 206 | .fa-strikethrough:before{content:"\f0cc"} 207 | .fa-underline:before{content:"\f0cd"} 208 | .fa-table:before{content:"\f0ce"} 209 | .fa-magic:before{content:"\f0d0"} 210 | .fa-truck:before{content:"\f0d1"} 211 | .fa-pinterest:before{content:"\f0d2"} 212 | .fa-pinterest-square:before{content:"\f0d3"} 213 | .fa-google-plus-square:before{content:"\f0d4"} 214 | .fa-google-plus:before{content:"\f0d5"} 215 | .fa-money:before{content:"\f0d6"} 216 | .fa-caret-down:before{content:"\f0d7"} 217 | .fa-caret-up:before{content:"\f0d8"} 218 | .fa-caret-left:before{content:"\f0d9"} 219 | .fa-caret-right:before{content:"\f0da"} 220 | .fa-columns:before{content:"\f0db"} 221 | .fa-unsorted:before,.fa-sort:before{content:"\f0dc"} 222 | .fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"} 223 | .fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"} 224 | .fa-envelope:before{content:"\f0e0"} 225 | .fa-linkedin:before{content:"\f0e1"} 226 | .fa-rotate-left:before,.fa-undo:before{content:"\f0e2"} 227 | .fa-legal:before,.fa-gavel:before{content:"\f0e3"} 228 | .fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"} 229 | .fa-comment-o:before{content:"\f0e5"} 230 | .fa-comments-o:before{content:"\f0e6"} 231 | .fa-flash:before,.fa-bolt:before{content:"\f0e7"} 232 | .fa-sitemap:before{content:"\f0e8"} 233 | .fa-umbrella:before{content:"\f0e9"} 234 | .fa-paste:before,.fa-clipboard:before{content:"\f0ea"} 235 | .fa-lightbulb-o:before{content:"\f0eb"} 236 | .fa-exchange:before{content:"\f0ec"} 237 | .fa-cloud-download:before{content:"\f0ed"} 238 | .fa-cloud-upload:before{content:"\f0ee"} 239 | .fa-user-md:before{content:"\f0f0"} 240 | .fa-stethoscope:before{content:"\f0f1"} 241 | .fa-suitcase:before{content:"\f0f2"} 242 | .fa-bell-o:before{content:"\f0a2"} 243 | .fa-coffee:before{content:"\f0f4"} 244 | .fa-cutlery:before{content:"\f0f5"} 245 | .fa-file-text-o:before{content:"\f0f6"} 246 | .fa-building:before{content:"\f0f7"} 247 | .fa-hospital:before{content:"\f0f8"} 248 | .fa-ambulance:before{content:"\f0f9"} 249 | .fa-medkit:before{content:"\f0fa"} 250 | .fa-fighter-jet:before{content:"\f0fb"} 251 | .fa-beer:before{content:"\f0fc"} 252 | .fa-h-square:before{content:"\f0fd"} 253 | .fa-plus-square:before{content:"\f0fe"} 254 | .fa-angle-double-left:before{content:"\f100"} 255 | .fa-angle-double-right:before{content:"\f101"} 256 | .fa-angle-double-up:before{content:"\f102"} 257 | .fa-angle-double-down:before{content:"\f103"} 258 | .fa-angle-left:before{content:"\f104"} 259 | .fa-angle-right:before{content:"\f105"} 260 | .fa-angle-up:before{content:"\f106"} 261 | .fa-angle-down:before{content:"\f107"} 262 | .fa-desktop:before{content:"\f108"} 263 | .fa-laptop:before{content:"\f109"} 264 | .fa-tablet:before{content:"\f10a"} 265 | .fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"} 266 | .fa-circle-o:before{content:"\f10c"} 267 | .fa-quote-left:before{content:"\f10d"} 268 | .fa-quote-right:before{content:"\f10e"} 269 | .fa-spinner:before{content:"\f110"} 270 | .fa-circle:before{content:"\f111"} 271 | .fa-mail-reply:before,.fa-reply:before{content:"\f112"} 272 | .fa-github-alt:before{content:"\f113"} 273 | .fa-folder-o:before{content:"\f114"} 274 | .fa-folder-open-o:before{content:"\f115"} 275 | .fa-expand-o:before{content:"\f116"} 276 | .fa-collapse-o:before{content:"\f117"} 277 | .fa-smile-o:before{content:"\f118"} 278 | .fa-frown-o:before{content:"\f119"} 279 | .fa-meh-o:before{content:"\f11a"} 280 | .fa-gamepad:before{content:"\f11b"} 281 | .fa-keyboard-o:before{content:"\f11c"} 282 | .fa-flag-o:before{content:"\f11d"} 283 | .fa-flag-checkered:before{content:"\f11e"} 284 | .fa-terminal:before{content:"\f120"} 285 | .fa-code:before{content:"\f121"} 286 | .fa-reply-all:before{content:"\f122"} 287 | .fa-mail-reply-all:before{content:"\f122"} 288 | .fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"} 289 | .fa-location-arrow:before{content:"\f124"} 290 | .fa-crop:before{content:"\f125"} 291 | .fa-code-fork:before{content:"\f126"} 292 | .fa-unlink:before,.fa-chain-broken:before{content:"\f127"} 293 | .fa-question:before{content:"\f128"} 294 | .fa-info:before{content:"\f129"} 295 | .fa-exclamation:before{content:"\f12a"} 296 | .fa-superscript:before{content:"\f12b"} 297 | .fa-subscript:before{content:"\f12c"} 298 | .fa-eraser:before{content:"\f12d"} 299 | .fa-puzzle-piece:before{content:"\f12e"} 300 | .fa-microphone:before{content:"\f130"} 301 | .fa-microphone-slash:before{content:"\f131"} 302 | .fa-shield:before{content:"\f132"} 303 | .fa-calendar-o:before{content:"\f133"} 304 | .fa-fire-extinguisher:before{content:"\f134"} 305 | .fa-rocket:before{content:"\f135"} 306 | .fa-maxcdn:before{content:"\f136"} 307 | .fa-chevron-circle-left:before{content:"\f137"} 308 | .fa-chevron-circle-right:before{content:"\f138"} 309 | .fa-chevron-circle-up:before{content:"\f139"} 310 | .fa-chevron-circle-down:before{content:"\f13a"} 311 | .fa-html5:before{content:"\f13b"} 312 | .fa-css3:before{content:"\f13c"} 313 | .fa-anchor:before{content:"\f13d"} 314 | .fa-unlock-o:before{content:"\f13e"} 315 | .fa-bullseye:before{content:"\f140"} 316 | .fa-ellipsis-horizontal:before{content:"\f141"} 317 | .fa-ellipsis-vertical:before{content:"\f142"} 318 | .fa-rss-square:before{content:"\f143"} 319 | .fa-play-circle:before{content:"\f144"} 320 | .fa-ticket:before{content:"\f145"} 321 | .fa-minus-square:before{content:"\f146"} 322 | .fa-minus-square-o:before{content:"\f147"} 323 | .fa-level-up:before{content:"\f148"} 324 | .fa-level-down:before{content:"\f149"} 325 | .fa-check-square:before{content:"\f14a"} 326 | .fa-pencil-square:before{content:"\f14b"} 327 | .fa-external-link-square:before{content:"\f14c"} 328 | .fa-share-square:before{content:"\f14d"} 329 | .fa-compass:before{content:"\f14e"} 330 | .fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"} 331 | .fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"} 332 | .fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"} 333 | .fa-euro:before,.fa-eur:before{content:"\f153"} 334 | .fa-gbp:before{content:"\f154"} 335 | .fa-dollar:before,.fa-usd:before{content:"\f155"} 336 | .fa-rupee:before,.fa-inr:before{content:"\f156"} 337 | .fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"} 338 | .fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"} 339 | .fa-won:before,.fa-krw:before{content:"\f159"} 340 | .fa-bitcoin:before,.fa-btc:before{content:"\f15a"} 341 | .fa-file:before{content:"\f15b"} 342 | .fa-file-text:before{content:"\f15c"} 343 | .fa-sort-alpha-asc:before{content:"\f15d"} 344 | .fa-sort-alpha-desc:before{content:"\f15e"} 345 | .fa-sort-amount-asc:before{content:"\f160"} 346 | .fa-sort-amount-desc:before{content:"\f161"} 347 | .fa-sort-numeric-asc:before{content:"\f162"} 348 | .fa-sort-numeric-desc:before{content:"\f163"} 349 | .fa-thumbs-up:before{content:"\f164"} 350 | .fa-thumbs-down:before{content:"\f165"} 351 | .fa-youtube-square:before{content:"\f166"} 352 | .fa-youtube:before{content:"\f167"} 353 | .fa-xing:before{content:"\f168"} 354 | .fa-xing-square:before{content:"\f169"} 355 | .fa-youtube-play:before{content:"\f16a"} 356 | .fa-dropbox:before{content:"\f16b"} 357 | .fa-stack-overflow:before{content:"\f16c"} 358 | .fa-instagram:before{content:"\f16d"} 359 | .fa-flickr:before{content:"\f16e"} 360 | .fa-adn:before{content:"\f170"} 361 | .fa-bitbucket:before{content:"\f171"} 362 | .fa-bitbucket-square:before{content:"\f172"} 363 | .fa-tumblr:before{content:"\f173"} 364 | .fa-tumblr-square:before{content:"\f174"} 365 | .fa-long-arrow-down:before{content:"\f175"} 366 | .fa-long-arrow-up:before{content:"\f176"} 367 | .fa-long-arrow-left:before{content:"\f177"} 368 | .fa-long-arrow-right:before{content:"\f178"} 369 | .fa-apple:before{content:"\f179"} 370 | .fa-windows:before{content:"\f17a"} 371 | .fa-android:before{content:"\f17b"} 372 | .fa-linux:before{content:"\f17c"} 373 | .fa-dribbble:before{content:"\f17d"} 374 | .fa-skype:before{content:"\f17e"} 375 | .fa-foursquare:before{content:"\f180"} 376 | .fa-trello:before{content:"\f181"} 377 | .fa-female:before{content:"\f182"} 378 | .fa-male:before{content:"\f183"} 379 | .fa-gittip:before{content:"\f184"} 380 | .fa-sun-o:before{content:"\f185"} 381 | .fa-moon-o:before{content:"\f186"} 382 | .fa-archive:before{content:"\f187"} 383 | .fa-bug:before{content:"\f188"} 384 | .fa-vk:before{content:"\f189"} 385 | .fa-weibo:before{content:"\f18a"} 386 | .fa-renren:before{content:"\f18b"} 387 | .fa-pagelines:before{content:"\f18c"} 388 | .fa-stack-exchange:before{content:"\f18d"} 389 | .fa-arrow-circle-o-right:before{content:"\f18e"} 390 | .fa-arrow-circle-o-left:before{content:"\f190"} 391 | .fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"} 392 | .fa-dot-circle-o:before{content:"\f192"} 393 | .fa-wheelchair:before{content:"\f193"} 394 | .fa-vimeo-square:before{content:"\f194"} 395 | .fa-turkish-lira:before,.fa-try:before{content:"\f195"} 396 | -------------------------------------------------------------------------------- /builtAssets/css/prettify-ecd4a5d6c0cbee10b168f6aa000c64ea.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /builtAssets/css/raphaelicons-917ad189ad3599d586550c3924902d09.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: 2 | 'RaphaelIcons'; 3 | src:url('http://www.guidefreitas.com/fonts/raphaelicons-webfont.eot'); 4 | src: url('http://www.guidefreitas.com/fonts/raphaelicons-webfont.eot?#iefix') format("embedded-opentype"), url('http://www.guidefreitas.com/fonts/raphaelicons-webfont.woff') format('woff'), url('http://www.guidefreitas.com/fonts/raphaelicons-webfont.ttf') format('truetype'), url('http://www.guidefreitas.com/fonts/raphaelicons-webfont.svg') format('svg'); 5 | font-weight: normal; 6 | font-style: normal; 7 | } 8 | 9 | .icon { 10 | font-weight: normal; 11 | font-style: normal; 12 | line-height: normal; 13 | font-family: 'RaphaelIcons'; 14 | font-size: 1.1em; 15 | position: relative; 16 | top: 0.1em; 17 | } 18 | -------------------------------------------------------------------------------- /builtAssets/css/style-096de9a93b2ffff7a3de4a2703d6e5af.css: -------------------------------------------------------------------------------- 1 | @import "font-awesome.min.css"; 2 | audio, 3 | canvas, 4 | video { 5 | display: inline-block; 6 | *display: inline; 7 | *zoom: 1; 8 | } 9 | h1, 10 | h2, 11 | h3, 12 | h4, 13 | h5, 14 | h6 { 15 | font-weight: normal; 16 | color: black; 17 | } 18 | ul, 19 | ol { 20 | list-style: none outside none; 21 | } 22 | h2 { 23 | /*font-family: "MuseoSans-100";*/ 24 | font-size: 2.4em; 25 | } 26 | html { 27 | overflow-y: scroll; 28 | /* 1 */ 29 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 30 | /* 2 */ 31 | -webkit-text-size-adjust: 100%; 32 | /* 3 */ 33 | -ms-text-size-adjust: 100%; 34 | } 35 | html, 36 | body { 37 | /*font-family: 'Open Sans', sans-serif;*/ 38 | font-family: 'Lato', sans-serif; 39 | height: 100%; 40 | width: 100%; 41 | font-size: 10px; 42 | line-height: normal; 43 | margin: 0; 44 | overflow: auto; 45 | } 46 | body, 47 | input, 48 | button, 49 | textarea, 50 | select { 51 | font-family: sans-serif; 52 | } 53 | body, 54 | input, 55 | submit, 56 | textarea { 57 | /*font-family: "MuseoSans-300", arial, sans-serif;*/ 58 | /*font-family: 'Open Sans', sans-serif;*/ 59 | font-family: 'Lato', sans-serif; 60 | -webkit-overflow-scrolling: touch; 61 | } 62 | img { 63 | border: 0; 64 | /* 1 */ 65 | -ms-interpolation-mode: bicubic; 66 | /* 2 */ 67 | } 68 | a { 69 | text-decoration: none; 70 | } 71 | fieldset { 72 | border: 0px; 73 | } 74 | ::selection { 75 | background: #55a2f7; 76 | /* Safari */ 77 | } 78 | ::-moz-selection { 79 | background: #55a2f7; 80 | /* Firefox */ 81 | } 82 | a:hover, 83 | a:active { 84 | outline: 0; 85 | } 86 | .site-page { 87 | margin: 0px; 88 | padding: 0px; 89 | background-color: #213D5F; 90 | } 91 | .blur { 92 | min-width: 100%; 93 | min-height: 100%; 94 | position: fixed; 95 | top: 0; 96 | left: 0; 97 | z-index: -2; 98 | opacity: 0.7; 99 | } 100 | .wrapper { 101 | margin: 0 auto; 102 | padding-left: 20px; 103 | padding-right: 20px; 104 | padding-bottom: 10px; 105 | max-width: 1100px; 106 | min-width: 180px; 107 | } 108 | .site-header { 109 | margin: 54px 0 0; 110 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 111 | /*font-family: "MuseoSans-100", arial, sans-serif;*/ 112 | font-weight: 300; 113 | } 114 | .site-header ul.menu { 115 | vertical-align: left; 116 | float: right; 117 | width: 410px; 118 | } 119 | .site-header ul.menu li { 120 | font-size: 2em; 121 | display: inline; 122 | list-style-type: none; 123 | padding-right: 20px; 124 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 125 | } 126 | .site-header ul.menu li.selected { 127 | text-shadow: 0px 0px 4px rgba(255, 255, 255, 0.7); 128 | } 129 | .site-header a { 130 | color: #fff; 131 | -webkit-transform: translateZ(0); 132 | -webkit-transition: all 0.2s ease-out; 133 | -moz-transition: all 0.2s ease-out; 134 | -ms-transition: all 0.2s ease-out; 135 | -o-transition: all 0.2s ease-out; 136 | transition: all 0.2s ease-out; 137 | } 138 | .site-header a:hover { 139 | opacity: 0.5; 140 | } 141 | .site-header a:focus { 142 | outline: none; 143 | } 144 | #search-form { 145 | width: 180px; 146 | margin: auto; 147 | display: none; 148 | } 149 | #about #search-form { 150 | margin-bottom: 20px; 151 | } 152 | #search-form #search-field { 153 | color: rgba(255, 255, 255, 0.9); 154 | background: transparent; 155 | border: solid 1px rgba(71, 71, 71, 0.25); 156 | border-radius: 20px; 157 | font-size: 14px; 158 | padding: 4px 15px; 159 | outline: none; 160 | /*-webkit-box-shadow: inset 0px 0px 20px rgba(0, 0, 0, .3), 0px 1px 0px rgba(255, 255, 255, 0.1); 161 | -moz-box-shadow: inset 0px 0px 20px rgba(0, 0, 0, .3), 0px 1px 0px rgba(255, 255, 255, 0.1); 162 | box-shadow: inset 0px 0px 20px rgba(0, 0, 0, .3), 0px 1px 0px rgba(255, 255, 255, 0.1);*/ 163 | } 164 | .menu #search-button { 165 | font-size: 18px; 166 | } 167 | .article_content ul { 168 | list-style-type: disc; 169 | padding-left: 30px; 170 | } 171 | .article_content ul li { 172 | margin-right: 20px; 173 | margin-bottom: 10px; 174 | position: relative; 175 | } 176 | .article_content a { 177 | color: #4175c6; 178 | } 179 | .site-page .site-header .site-logo { 180 | float: left; 181 | display: block; 182 | font-size: 3.0em; 183 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 184 | } 185 | .site-page .blog header { 186 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 187 | } 188 | site-page .blog header h1 { 189 | margin-bottom: 0px; 190 | } 191 | .site-page .blog header ul { 192 | padding: 0px; 193 | } 194 | .site-page .blog header ul li { 195 | margin: 0; 196 | padding: 0; 197 | } 198 | .site-page .blog header h1 { 199 | font-size: 2.4em; 200 | margin-bottom: 0px; 201 | } 202 | .site-page .blog .post h2 { 203 | font-size: 1.3em; 204 | margin-bottom: 0px; 205 | font-weight: 300; 206 | } 207 | .site-page .blog header a:hover { 208 | opacity: 0.5; 209 | } 210 | .site-page .blog header a { 211 | -webkit-transition: all 0.2s ease-out 0s; 212 | -moz-transition: all 0.2s ease-out 0s; 213 | -webkit-transform: translateZ(0); 214 | } 215 | .site-page .blog header time { 216 | font-size: 1.3em; 217 | } 218 | .post a { 219 | color: black; 220 | } 221 | .post a:hover { 222 | opacity: 0.5; 223 | } 224 | .old_posts_nav_link { 225 | margin-bottom: 10px; 226 | } 227 | .old_posts_nav_link .label { 228 | font-size: 1.8em; 229 | padding-left: 8px; 230 | } 231 | .old_posts_nav_link a { 232 | color: #fff; 233 | } 234 | .old_posts_nav_link a:hover { 235 | opacity: 0.7; 236 | } 237 | .post { 238 | background: white; 239 | color: black; 240 | padding: 50px 67px; 241 | margin-bottom: 25px; 242 | -webkit-border-radius: 3px; 243 | -moz-border-radius: 3px; 244 | border-radius: 3px; 245 | position: relative; 246 | min-height: 153px; 247 | word-wrap: break-word; 248 | font-size: 18px; 249 | font-weight: 300; 250 | /*line-height: 1.4em;*/ 251 | margin-bottom: 1.6em; 252 | /*-webkit-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 253 | -moz-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 254 | box-shadow: 0px 10px 30px rgba(0,0,0, 0.8);*/ 255 | } 256 | .post h2 a { 257 | color: #616161; 258 | font-weight: 300; 259 | font-size: 24px; 260 | } 261 | .post a { 262 | color: #4175c6; 263 | } 264 | .post a:hover { 265 | text-decoration: underline; 266 | } 267 | .post h2 a:hover { 268 | text-decoration: none; 269 | } 270 | .post img { 271 | max-width: 450px; 272 | margin: 10px auto; 273 | display: inline-block; 274 | position: relative; 275 | } 276 | .post ol { 277 | list-style-type: decimal; 278 | } 279 | .page { 280 | background: white; 281 | color: black; 282 | padding: 50px 67px; 283 | margin-bottom: 25px; 284 | -webkit-border-radius: 3px; 285 | -moz-border-radius: 3px; 286 | border-radius: 3px; 287 | position: relative; 288 | min-height: 153px; 289 | word-wrap: break-word; 290 | font-size: 1.6em; 291 | line-height: 1.4em; 292 | margin-bottom: 1.6em; 293 | /*-webkit-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 294 | -moz-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 295 | box-shadow: 0px 10px 30px rgba(0,0,0, 0.8);*/ 296 | } 297 | .page h2 a { 298 | color: #616161; 299 | } 300 | .page a { 301 | color: #4175c6; 302 | font-weight: bold; 303 | font-size: 0.9em; 304 | } 305 | .page a:hover { 306 | text-decoration: underline; 307 | } 308 | .page h2 a:hover { 309 | text-decoration: none; 310 | } 311 | .page img { 312 | max-width: 450px; 313 | margin: 10px auto; 314 | display: inline-block; 315 | position: relative; 316 | } 317 | .page ol { 318 | list-style-type: decimal; 319 | } 320 | #canvasSource { 321 | display: none; 322 | } 323 | .login-form { 324 | width: 250px; 325 | margin: auto; 326 | } 327 | .login-form p { 328 | margin: 0px; 329 | } 330 | .login-form fieldset { 331 | border: 0px; 332 | } 333 | .login-form .text-input { 334 | width: 200px; 335 | height: 20px; 336 | font-size: 1em; 337 | color: #272822; 338 | border: 1px solid #CCC; 339 | /*-webkit-box-shadow: inset 0 1px 0 #EEE,white 0 1px 0; 340 | -moz-box-shadow: inset 0 1px 0 #eee,#fff 0 1px 0; 341 | box-shadow: inset 0 1px 0 #EEE,white 0 1px 0;*/ 342 | display: inline-block; 343 | margin: 0; 344 | outline: none; 345 | background-color: white; 346 | -webkit-border-radius: 3px; 347 | -moz-border-radius: 3px; 348 | border-radius: 3px; 349 | padding: 4px; 350 | } 351 | .button-normal { 352 | /*font-family: 'Open Sans', sans-serif;*/ 353 | border: 1px solid #CCC; 354 | position: relative; 355 | display: inline-block; 356 | overflow: visible; 357 | padding: 5px 10px; 358 | font-size: 13px; 359 | font-weight: bold; 360 | line-height: 18px; 361 | height: 30px; 362 | width: 90px; 363 | color: white; 364 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 365 | background-color: #019AD2; 366 | background-repeat: repeat-x; 367 | background-image: -khtml-gradient(linear, left top, left bottom, from(#33bcef), to(#019ad2)); 368 | background-image: -moz-linear-gradient(#33bcef, #019ad2); 369 | background-image: -ms-linear-gradient(#33bcef, #019ad2); 370 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #33bcef), color-stop(100%, #019ad2)); 371 | background-image: -webkit-linear-gradient(#33bcef, #019ad2); 372 | background-image: -o-linear-gradient(#33bcef, #019ad2); 373 | background-image: linear-gradient(#33bcef, #019ad2); 374 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33bcef', endColorstr='#019ad2', GradientType=0); 375 | border-color: #057ED0; 376 | /*-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); 377 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); 378 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);*/ 379 | -webkit-border-radius: 5px; 380 | -moz-border-radius: 5px; 381 | border-radius: 5px; 382 | } 383 | .button-edit { 384 | /*font-family: 'Open Sans', sans-serif;*/ 385 | border: 1px solid #CCC; 386 | position: relative; 387 | display: inline-block; 388 | overflow: visible; 389 | padding: 5px 10px; 390 | font-size: 13px; 391 | font-weight: bold; 392 | line-height: 18px; 393 | color: white; 394 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 395 | background-color: #019AD2; 396 | background-repeat: repeat-x; 397 | background-image: -khtml-gradient(linear, left top, left bottom, from(#ececec), to(#bbbbbb)); 398 | background-image: -moz-linear-gradient(#ececec, #bbbbbb); 399 | background-image: -ms-linear-gradient(#ececec, #bbbbbb); 400 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #bbbbbb)); 401 | background-image: -webkit-linear-gradient(#ececec, #bbbbbb); 402 | background-image: -o-linear-gradient(#ececec, #bbbbbb); 403 | background-image: linear-gradient(#ececec, #bbbbbb); 404 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ECECEC', endColorstr='#BBB', GradientType=0); 405 | border-color: #CACACA; 406 | /*-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); 407 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); 408 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);*/ 409 | -webkit-border-radius: 5px; 410 | -moz-border-radius: 5px; 411 | border-radius: 5px; 412 | } 413 | .button-delete { 414 | /*font-family: 'Open Sans', sans-serif;*/ 415 | border: 1px solid #CCC; 416 | position: relative; 417 | display: inline-block; 418 | overflow: visible; 419 | padding: 5px 10px; 420 | font-size: 13px; 421 | font-weight: bold; 422 | line-height: 18px; 423 | height: 30px; 424 | width: 90px; 425 | color: white; 426 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 427 | background-color: #EB1818; 428 | background-repeat: repeat-x; 429 | background-image: -khtml-gradient(linear, left top, left bottom, from(#eb1818), to(#af4a4a)); 430 | background-image: -moz-linear-gradient(#eb1818, #af4a4a); 431 | background-image: -ms-linear-gradient(#eb1818, #af4a4a); 432 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eb1818), color-stop(100%, #af4a4a)); 433 | background-image: -webkit-linear-gradient(#eb1818, #af4a4a); 434 | background-image: -o-linear-gradient(#eb1818, #af4a4a); 435 | background-image: linear-gradient(#eb1818, #af4a4a); 436 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#EB1818', endColorstr='#AF4A4A', GradientType=0); 437 | border-color: #B44343; 438 | /*-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); 439 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); 440 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);*/ 441 | -webkit-border-radius: 5px; 442 | -moz-border-radius: 5px; 443 | border-radius: 5px; 444 | } 445 | .button-normal:active { 446 | background-image: none; 447 | border-color: #096EB3; 448 | } 449 | .button-normal:hover, 450 | .button-normal:focus { 451 | color: white; 452 | background-color: #0271BF; 453 | background-repeat: repeat-x; 454 | background-image: -khtml-gradient(linear, left top, left bottom, from(#2daddc), to(#0271bf)); 455 | background-image: -moz-linear-gradient(#2daddc, #0271bf); 456 | background-image: -ms-linear-gradient(#2daddc, #0271bf); 457 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2daddc), color-stop(100%, #0271bf)); 458 | background-image: -webkit-linear-gradient(#2daddc, #0271bf); 459 | background-image: -o-linear-gradient(#2daddc, #0271bf); 460 | background-image: linear-gradient(#2daddc, #0271bf); 461 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2daddc', endColorstr='#0271bf', GradientType=0); 462 | border-color: #096EB3; 463 | } 464 | .horizontal_menu { 465 | display: inline; 466 | } 467 | .horizontal_menu .menu_item { 468 | padding: 0px 5px 0px 0px; 469 | float: left; 470 | display: inline; 471 | } 472 | .post p.meta a.author { 473 | position: absolute; 474 | left: -97px; 475 | top: -45px; 476 | } 477 | .post p.meta a.author::before { 478 | content: " "; 479 | position: absolute; 480 | top: 2px; 481 | left: 3px; 482 | width: 66px; 483 | height: 66px; 484 | z-index: 30; 485 | -moz-border-radius: 50%; 486 | -webkit-border-radius: 50%; 487 | border-radius: 50%; 488 | border: 1px solid rgba(0, 0, 0, 0.3); 489 | /*-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); 490 | -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.2); 491 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);*/ 492 | } 493 | .post p.meta a.author::after { 494 | content: " "; 495 | width: 72px; 496 | height: 72px; 497 | top: 0; 498 | left: 1px; 499 | background: white; 500 | background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee)); 501 | background-image: -moz-linear-gradient(top, #ffffff, #eeeeee); 502 | background-image: -o-linear-gradient(top, #ffffff, #eeeeee); 503 | /*-webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.3),0 0 2px rgba(0, 0, 0, 0.5); 504 | -moz-box-shadow: 0 2px 3px rgba(0,0,0,0.3),0 0 2px rgba(0,0,0,0.5); 505 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.3),0 0 2px rgba(0, 0, 0, 0.5);*/ 506 | -moz-border-radius: 50%; 507 | -webkit-border-radius: 50%; 508 | border-radius: 50%; 509 | position: absolute; 510 | z-index: 10; 511 | } 512 | .post p.meta a.author:hover { 513 | opacity: 1; 514 | } 515 | @-webkit-keyframes grayphoto { 516 | from { 517 | -webkit-filter: grayscale(0%); 518 | } 519 | to { 520 | -webkit-filter: grayscale(100%); 521 | } 522 | } 523 | .post p.meta a.author img { 524 | position: relative; 525 | z-index: 20; 526 | top: 2px; 527 | left: 3px; 528 | border: 0; 529 | margin: 0; 530 | -moz-border-radius: 50%; 531 | -webkit-border-radius: 50%; 532 | border-radius: 50%; 533 | /*-webkit-box-shadow: none; 534 | -moz-box-shadow: none; 535 | box-shadow: none;*/ 536 | } 537 | .post p.meta a.author:hover img { 538 | -webkit-animation-name: grayphoto; 539 | -webkit-animation-duration: 0.5s; 540 | -webkit-animation-timing-function: linear; 541 | -webkit-animation-fill-mode: forwards; 542 | } 543 | .post .meta { 544 | font-size: 0.8em; 545 | color: #AAA; 546 | -webkit-font-smoothing: antialiased; 547 | padding-bottom: 5px; 548 | border-bottom: 1px solid #EBEBEB; 549 | position: relative; 550 | margin-bottom: 22px; 551 | } 552 | .post div.tags-tab { 553 | display: block; 554 | padding-bottom: 40px; 555 | } 556 | .blog .main_posts { 557 | float: left; 558 | width: 80%; 559 | } 560 | .side_bar { 561 | margin-left: 81%; 562 | background: white; 563 | color: black; 564 | -webkit-border-radius: 3px; 565 | -moz-border-radius: 3px; 566 | border-radius: 3px; 567 | word-wrap: break-word; 568 | /*-webkit-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 569 | -moz-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 570 | box-shadow: 0px 10px 30px rgba(0,0,0, 0.8);*/ 571 | padding: 2px 10px 10px 10px; 572 | } 573 | .side_bar h2 { 574 | font-size: 1.8em; 575 | } 576 | .side_bar ul { 577 | font-size: 1.6em; 578 | -webkit-margin-before: 0px; 579 | -webkit-margin-after: 0px; 580 | -webkit-margin-start: 5px; 581 | -webkit-margin-end: 0px; 582 | -webkit-padding-start: 0px; 583 | } 584 | .side_bar a { 585 | text-decoration: none; 586 | color: black; 587 | } 588 | .side_bar a:hover { 589 | text-decoration: none; 590 | color: #999; 591 | } 592 | #tags { 593 | display: block; 594 | height: 50px; 595 | padding-left: 0px; 596 | } 597 | #tags li { 598 | float: left; 599 | padding-right: 10px; 600 | } 601 | #tags li a { 602 | color: #343131; 603 | display: block; 604 | background: url(../img/tag.png) no-repeat 5px center; 605 | font-size: 0.8em; 606 | /*font-family: "MuseoSans-500";*/ 607 | padding: 0 15px 0 25px; 608 | height: 25px; 609 | line-height: 25px; 610 | /*-webkit-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.1); 611 | box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.1);*/ 612 | -webkit-border-radius: 2px; 613 | -moz-border-radius: 2px; 614 | -ms-border-radius: 2px; 615 | -o-border-radius: 2px; 616 | border-radius: 2px; 617 | } 618 | #tags li:hover { 619 | opacity: 1; 620 | } 621 | #tags li a:hover { 622 | text-decoration: none; 623 | color: #858585; 624 | } 625 | .new-form .field { 626 | font-size: 1.2em; 627 | border: 0; 628 | width: 100%; 629 | } 630 | #new-post-form #title-field { 631 | font-size: 1.8em; 632 | border: 0; 633 | width: 100%; 634 | } 635 | #new-post-form #text { 636 | font-size: 1.2em; 637 | border: 0; 638 | width: 100%; 639 | } 640 | #new-post-form #tags-field { 641 | font-size: 1.2em; 642 | border: 0; 643 | width: 100%; 644 | } 645 | #admin-posts .posts-list ul { 646 | padding: 0px; 647 | } 648 | #admin-posts .posts-list h2 { 649 | font-size: 1.2em; 650 | padding-bottom: 0px; 651 | margin-bottom: 0px; 652 | } 653 | #admin-posts .posts-list .meta { 654 | font-size: 0.8em; 655 | color: #AAA; 656 | } 657 | .admin-page .projects-list h2 { 658 | font-size: 1.2em; 659 | } 660 | .admin-page .projects-list ul { 661 | padding: 0px; 662 | } 663 | #about-profile-area { 664 | padding: 0px 20px 0px 0px; 665 | min-height: 310px; 666 | background: white; 667 | color: black; 668 | -webkit-border-radius: 3px 3px 0px 0px; 669 | -moz-border-radius: 3px 3px 0px 0px; 670 | border-radius: 3px 3px 0px 0px; 671 | position: relative; 672 | word-wrap: break-word; 673 | font-size: 1.6em; 674 | line-height: 1.4em; 675 | margin-bottom: 0px; 676 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 677 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 678 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 679 | } 680 | #about-profile-area #image { 681 | float: left; 682 | margin-right: 20px; 683 | padding-bottom: 110px; 684 | } 685 | #about-profile-area .areas-interesse li { 686 | padding-left: 150px; 687 | } 688 | #about-profile-area .profile-image { 689 | border-radius: 3px 0px 0px 0px; 690 | } 691 | #about-profile-area .profile-description { 692 | padding-top: 10px; 693 | } 694 | #about-profile-area .profile-description ul.social { 695 | display: block; 696 | } 697 | #about-profile-area .profile-description ul.social li { 698 | float: left; 699 | } 700 | .social-icon { 701 | opacity: 0.8; 702 | } 703 | .social-icon:hover { 704 | opacity: 0.5; 705 | } 706 | article#about #contact-form-area { 707 | padding: 50px 20px 20px; 708 | background: #F5F5F5; 709 | margin-top: -22px; 710 | margin-left: 24%; 711 | margin-right: 190px; 712 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 713 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 714 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 715 | color: #585858; 716 | font-size: 14px; 717 | width: 370px; 718 | } 719 | article#about #contact-form-area fieldset { 720 | padding-top: 0px; 721 | padding-bottom: 4px; 722 | } 723 | article#about #contact-form-area label { 724 | display: block; 725 | } 726 | article#about #contact-form-area .button-normal { 727 | width: 350px; 728 | height: 45px; 729 | } 730 | article#about #contact-form-area textarea { 731 | border: solid 1px #AAA; 732 | font-size: 16px; 733 | border-radius: 3px; 734 | width: 345PX; 735 | } 736 | article#about #contact-form-area .text-input { 737 | border: solid 1px #AAA; 738 | outline: none; 739 | padding: 8px 5px; 740 | width: 340px; 741 | font-size: 16px; 742 | border-radius: 3px; 743 | } 744 | article#about #contact-footer { 745 | background: white; 746 | color: black; 747 | padding: 10px 67px; 748 | margin-bottom: 25px; 749 | -webkit-border-radius: 0px 0px 3px 3px; 750 | -moz-border-radius: 0px 0px 3px 3px; 751 | border-radius: 0px 0px 3px 3px; 752 | position: relative; 753 | word-wrap: break-word; 754 | font-size: 1.6em; 755 | line-height: 1.4em; 756 | margin-bottom: 1.6em; 757 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 758 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 759 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 760 | } 761 | #admin-messages h1 { 762 | font-size: 1.4em; 763 | } 764 | #admin-messages .messages-list ul { 765 | padding: 0px; 766 | } 767 | #admin-messages .messages-list ul li { 768 | margin-bottom: 10px; 769 | } 770 | #admin-messages .messages-list h2 { 771 | font-size: 1em; 772 | margin: 0px; 773 | } 774 | #admin-messages .messages-list .meta { 775 | font-size: 0.8em; 776 | color: #AAA; 777 | } 778 | #admin-messages .messages-list p { 779 | margin: 2px; 780 | } 781 | #admin-messages #contact-message { 782 | display: none; 783 | } 784 | article#projects #search-form { 785 | margin-bottom: 20px; 786 | } 787 | article#projects #project.content { 788 | background: white; 789 | color: black; 790 | padding: 0px; 791 | margin-bottom: 25px; 792 | -webkit-border-radius: 3px; 793 | -moz-border-radius: 3px; 794 | border-radius: 3px; 795 | position: relative; 796 | min-height: 350px; 797 | word-wrap: break-word; 798 | font-size: 1.6em; 799 | line-height: 1.4em; 800 | margin-bottom: 1.6em; 801 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 802 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 803 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 804 | } 805 | article#projects .project-image { 806 | float: left; 807 | margin-right: 20px; 808 | } 809 | article#projects .project-image img { 810 | border-radius: 3px 0px 0px 3px; 811 | } 812 | article#projects .project-description { 813 | padding: 10px; 814 | font-size: 16px; 815 | } 816 | article#projects .project-description h2 { 817 | font-size: 22px; 818 | } 819 | article#projects .project-description h2 a { 820 | color: #005ACC; 821 | } 822 | article#projects .project-description h3 { 823 | font-size: 22px; 824 | } 825 | article#projects .project-description #stores { 826 | margin-left: 280px; 827 | } 828 | article#projects .project-description #stores li { 829 | float: left; 830 | padding-top: 20px; 831 | margin-right: 20px; 832 | } 833 | .clear { 834 | clear: both; 835 | } 836 | .admin-page { 837 | padding-top: 45px; 838 | } 839 | @media screen and (max-width: 700px) { 840 | .post { 841 | padding: 5px 20px; 842 | } 843 | .site-header ul.menu { 844 | width: 280px; 845 | } 846 | .site-header ul.menu li { 847 | padding-right: 13px; 848 | } 849 | .post img { 850 | max-width: 240px; 851 | } 852 | .post pre { 853 | max-width: 290px; 854 | } 855 | article#about #contact-form-area { 856 | background: none repeat scroll 0 0 #F5F5F5; 857 | color: #585858; 858 | font-size: 14px; 859 | margin-left: 0px; 860 | margin-right: 0px; 861 | margin-top: -16px; 862 | padding: 36px 26px 10px; 863 | width: 230px; 864 | } 865 | #about-profile-area { 866 | background: none repeat scroll 0 0 white; 867 | border-radius: 3px 3px 0 0; 868 | color: black; 869 | font-size: 1.6em; 870 | height: 440px; 871 | line-height: 1.4em; 872 | margin-bottom: 0; 873 | min-height: 420px; 874 | padding: 2px 0 3px 24px; 875 | position: relative; 876 | word-wrap: break-word; 877 | } 878 | #about-profile-area #image { 879 | float: left; 880 | margin-right: 20px; 881 | padding-bottom: 10px; 882 | } 883 | article#about #contact-form-area .text-input { 884 | border: 1px solid #AAAAAA; 885 | border-radius: 3px 3px 3px 3px; 886 | font-size: 16px; 887 | outline: medium none; 888 | padding: 8px 5px; 889 | width: 90%; 890 | } 891 | article#about #contact-form-area .text-input { 892 | border: 1px solid #AAAAAA; 893 | border-radius: 3px 3px 3px 3px; 894 | font-size: 16px; 895 | outline: medium none; 896 | padding: 8px 5px; 897 | width: 90%; 898 | } 899 | article#about #contact-form-area textarea { 900 | border: 1px solid #AAAAAA; 901 | border-radius: 3px 3px 3px 3px; 902 | font-size: 16px; 903 | width: 90%; 904 | } 905 | article#about #contact-form-area .button-normal { 906 | height: 45px; 907 | width: 90%; 908 | } 909 | .project-image { 910 | display: block; 911 | float: left; 912 | width: 100%; 913 | } 914 | .project-image img { 915 | width: 100%; 916 | } 917 | article#projects .project-description #stores { 918 | margin-left: 100px; 919 | } 920 | article#projects .project-description #stores li { 921 | float: none; 922 | padding-top: 20px; 923 | margin-right: 0px; 924 | } 925 | .blog .main_posts { 926 | width: 100%; 927 | } 928 | .side_bar { 929 | display: none; 930 | } 931 | } 932 | -------------------------------------------------------------------------------- /builtAssets/css/style-64d593ad73e7a090274a914751b442ce.css: -------------------------------------------------------------------------------- 1 | @import "css/font-awesome.min.css"; 2 | audio, 3 | canvas, 4 | video { 5 | display: inline-block; 6 | *display: inline; 7 | *zoom: 1; 8 | } 9 | h1, 10 | h2, 11 | h3, 12 | h4, 13 | h5, 14 | h6 { 15 | font-weight: normal; 16 | color: black; 17 | } 18 | ul, 19 | ol { 20 | list-style: none outside none; 21 | } 22 | h2 { 23 | /*font-family: "MuseoSans-100";*/ 24 | font-size: 2.4em; 25 | } 26 | html { 27 | overflow-y: scroll; 28 | /* 1 */ 29 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 30 | /* 2 */ 31 | -webkit-text-size-adjust: 100%; 32 | /* 3 */ 33 | -ms-text-size-adjust: 100%; 34 | } 35 | html, 36 | body { 37 | /*font-family: 'Open Sans', sans-serif;*/ 38 | font-family: 'Lato', sans-serif; 39 | height: 100%; 40 | width: 100%; 41 | font-size: 10px; 42 | line-height: normal; 43 | margin: 0; 44 | overflow: auto; 45 | } 46 | body, 47 | input, 48 | button, 49 | textarea, 50 | select { 51 | font-family: sans-serif; 52 | } 53 | body, 54 | input, 55 | submit, 56 | textarea { 57 | /*font-family: "MuseoSans-300", arial, sans-serif;*/ 58 | /*font-family: 'Open Sans', sans-serif;*/ 59 | font-family: 'Lato', sans-serif; 60 | -webkit-overflow-scrolling: touch; 61 | } 62 | img { 63 | border: 0; 64 | /* 1 */ 65 | -ms-interpolation-mode: bicubic; 66 | /* 2 */ 67 | } 68 | a { 69 | text-decoration: none; 70 | } 71 | fieldset { 72 | border: 0px; 73 | } 74 | ::selection { 75 | background: #55a2f7; 76 | /* Safari */ 77 | } 78 | ::-moz-selection { 79 | background: #55a2f7; 80 | /* Firefox */ 81 | } 82 | a:hover, 83 | a:active { 84 | outline: 0; 85 | } 86 | .site-page { 87 | margin: 0px; 88 | padding: 0px; 89 | background-color: #213D5F; 90 | } 91 | .blur { 92 | min-width: 100%; 93 | min-height: 100%; 94 | position: fixed; 95 | top: 0; 96 | left: 0; 97 | z-index: -2; 98 | opacity: 0.7; 99 | } 100 | .wrapper { 101 | margin: 0 auto; 102 | padding-left: 20px; 103 | padding-right: 20px; 104 | padding-bottom: 10px; 105 | max-width: 1100px; 106 | min-width: 180px; 107 | } 108 | .site-header { 109 | margin: 54px 0 0; 110 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 111 | /*font-family: "MuseoSans-100", arial, sans-serif;*/ 112 | font-weight: 300; 113 | } 114 | .site-header ul.menu { 115 | vertical-align: left; 116 | float: right; 117 | width: 410px; 118 | } 119 | .site-header ul.menu li { 120 | font-size: 2em; 121 | display: inline; 122 | list-style-type: none; 123 | padding-right: 20px; 124 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 125 | } 126 | .site-header ul.menu li.selected { 127 | text-shadow: 0px 0px 4px rgba(255, 255, 255, 0.7); 128 | } 129 | .site-header a { 130 | color: #fff; 131 | -webkit-transform: translateZ(0); 132 | -webkit-transition: all 0.2s ease-out; 133 | -moz-transition: all 0.2s ease-out; 134 | -ms-transition: all 0.2s ease-out; 135 | -o-transition: all 0.2s ease-out; 136 | transition: all 0.2s ease-out; 137 | } 138 | .site-header a:hover { 139 | opacity: 0.5; 140 | } 141 | .site-header a:focus { 142 | outline: none; 143 | } 144 | #search-form { 145 | width: 180px; 146 | margin: auto; 147 | display: none; 148 | } 149 | #about #search-form { 150 | margin-bottom: 20px; 151 | } 152 | #search-form #search-field { 153 | color: rgba(255, 255, 255, 0.9); 154 | background: transparent; 155 | border: solid 1px rgba(71, 71, 71, 0.25); 156 | border-radius: 20px; 157 | font-size: 14px; 158 | padding: 4px 15px; 159 | outline: none; 160 | /*-webkit-box-shadow: inset 0px 0px 20px rgba(0, 0, 0, .3), 0px 1px 0px rgba(255, 255, 255, 0.1); 161 | -moz-box-shadow: inset 0px 0px 20px rgba(0, 0, 0, .3), 0px 1px 0px rgba(255, 255, 255, 0.1); 162 | box-shadow: inset 0px 0px 20px rgba(0, 0, 0, .3), 0px 1px 0px rgba(255, 255, 255, 0.1);*/ 163 | } 164 | .menu #search-button { 165 | font-size: 18px; 166 | } 167 | .article_content ul { 168 | list-style-type: disc; 169 | padding-left: 30px; 170 | } 171 | .article_content ul li { 172 | margin-right: 20px; 173 | margin-bottom: 10px; 174 | position: relative; 175 | } 176 | .article_content a { 177 | color: #4175c6; 178 | } 179 | .site-page .site-header .site-logo { 180 | float: left; 181 | display: block; 182 | font-size: 3.0em; 183 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 184 | } 185 | .site-page .blog header { 186 | text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); 187 | } 188 | site-page .blog header h1 { 189 | margin-bottom: 0px; 190 | } 191 | .site-page .blog header ul { 192 | padding: 0px; 193 | } 194 | .site-page .blog header ul li { 195 | margin: 0; 196 | padding: 0; 197 | } 198 | .site-page .blog header h1 { 199 | font-size: 2.4em; 200 | margin-bottom: 0px; 201 | } 202 | .site-page .blog .post h2 { 203 | font-size: 1.3em; 204 | margin-bottom: 0px; 205 | font-weight: 300; 206 | } 207 | .site-page .blog header a:hover { 208 | opacity: 0.5; 209 | } 210 | .site-page .blog header a { 211 | -webkit-transition: all 0.2s ease-out 0s; 212 | -moz-transition: all 0.2s ease-out 0s; 213 | -webkit-transform: translateZ(0); 214 | } 215 | .site-page .blog header time { 216 | font-size: 1.3em; 217 | } 218 | .post a { 219 | color: black; 220 | } 221 | .post a:hover { 222 | opacity: 0.5; 223 | } 224 | .old_posts_nav_link { 225 | margin-bottom: 10px; 226 | } 227 | .old_posts_nav_link .label { 228 | font-size: 1.8em; 229 | padding-left: 8px; 230 | } 231 | .old_posts_nav_link a { 232 | color: #fff; 233 | } 234 | .old_posts_nav_link a:hover { 235 | opacity: 0.7; 236 | } 237 | .post { 238 | background: white; 239 | color: black; 240 | padding: 50px 67px; 241 | margin-bottom: 25px; 242 | -webkit-border-radius: 3px; 243 | -moz-border-radius: 3px; 244 | border-radius: 3px; 245 | position: relative; 246 | min-height: 153px; 247 | word-wrap: break-word; 248 | font-size: 18px; 249 | font-weight: 300; 250 | /*line-height: 1.4em;*/ 251 | margin-bottom: 1.6em; 252 | /*-webkit-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 253 | -moz-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 254 | box-shadow: 0px 10px 30px rgba(0,0,0, 0.8);*/ 255 | } 256 | .post h2 a { 257 | color: #616161; 258 | font-weight: 300; 259 | font-size: 24px; 260 | } 261 | .post a { 262 | color: #4175c6; 263 | } 264 | .post a:hover { 265 | text-decoration: underline; 266 | } 267 | .post h2 a:hover { 268 | text-decoration: none; 269 | } 270 | .post img { 271 | max-width: 450px; 272 | margin: 10px auto; 273 | display: inline-block; 274 | position: relative; 275 | } 276 | .post ol { 277 | list-style-type: decimal; 278 | } 279 | .page { 280 | background: white; 281 | color: black; 282 | padding: 50px 67px; 283 | margin-bottom: 25px; 284 | -webkit-border-radius: 3px; 285 | -moz-border-radius: 3px; 286 | border-radius: 3px; 287 | position: relative; 288 | min-height: 153px; 289 | word-wrap: break-word; 290 | font-size: 1.6em; 291 | line-height: 1.4em; 292 | margin-bottom: 1.6em; 293 | /*-webkit-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 294 | -moz-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 295 | box-shadow: 0px 10px 30px rgba(0,0,0, 0.8);*/ 296 | } 297 | .page h2 a { 298 | color: #616161; 299 | } 300 | .page a { 301 | color: #4175c6; 302 | font-weight: bold; 303 | font-size: 0.9em; 304 | } 305 | .page a:hover { 306 | text-decoration: underline; 307 | } 308 | .page h2 a:hover { 309 | text-decoration: none; 310 | } 311 | .page img { 312 | max-width: 450px; 313 | margin: 10px auto; 314 | display: inline-block; 315 | position: relative; 316 | } 317 | .page ol { 318 | list-style-type: decimal; 319 | } 320 | #canvasSource { 321 | display: none; 322 | } 323 | .login-form { 324 | width: 250px; 325 | margin: auto; 326 | } 327 | .login-form p { 328 | margin: 0px; 329 | } 330 | .login-form fieldset { 331 | border: 0px; 332 | } 333 | .login-form .text-input { 334 | width: 200px; 335 | height: 20px; 336 | font-size: 1em; 337 | color: #272822; 338 | border: 1px solid #CCC; 339 | /*-webkit-box-shadow: inset 0 1px 0 #EEE,white 0 1px 0; 340 | -moz-box-shadow: inset 0 1px 0 #eee,#fff 0 1px 0; 341 | box-shadow: inset 0 1px 0 #EEE,white 0 1px 0;*/ 342 | display: inline-block; 343 | margin: 0; 344 | outline: none; 345 | background-color: white; 346 | -webkit-border-radius: 3px; 347 | -moz-border-radius: 3px; 348 | border-radius: 3px; 349 | padding: 4px; 350 | } 351 | .button-normal { 352 | /*font-family: 'Open Sans', sans-serif;*/ 353 | border: 1px solid #CCC; 354 | position: relative; 355 | display: inline-block; 356 | overflow: visible; 357 | padding: 5px 10px; 358 | font-size: 13px; 359 | font-weight: bold; 360 | line-height: 18px; 361 | height: 30px; 362 | width: 90px; 363 | color: white; 364 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 365 | background-color: #019AD2; 366 | background-repeat: repeat-x; 367 | background-image: -khtml-gradient(linear, left top, left bottom, from(#33bcef), to(#019ad2)); 368 | background-image: -moz-linear-gradient(#33bcef, #019ad2); 369 | background-image: -ms-linear-gradient(#33bcef, #019ad2); 370 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #33bcef), color-stop(100%, #019ad2)); 371 | background-image: -webkit-linear-gradient(#33bcef, #019ad2); 372 | background-image: -o-linear-gradient(#33bcef, #019ad2); 373 | background-image: linear-gradient(#33bcef, #019ad2); 374 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33bcef', endColorstr='#019ad2', GradientType=0); 375 | border-color: #057ED0; 376 | /*-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); 377 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); 378 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);*/ 379 | -webkit-border-radius: 5px; 380 | -moz-border-radius: 5px; 381 | border-radius: 5px; 382 | } 383 | .button-edit { 384 | /*font-family: 'Open Sans', sans-serif;*/ 385 | border: 1px solid #CCC; 386 | position: relative; 387 | display: inline-block; 388 | overflow: visible; 389 | padding: 5px 10px; 390 | font-size: 13px; 391 | font-weight: bold; 392 | line-height: 18px; 393 | color: white; 394 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 395 | background-color: #019AD2; 396 | background-repeat: repeat-x; 397 | background-image: -khtml-gradient(linear, left top, left bottom, from(#ececec), to(#bbbbbb)); 398 | background-image: -moz-linear-gradient(#ececec, #bbbbbb); 399 | background-image: -ms-linear-gradient(#ececec, #bbbbbb); 400 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #bbbbbb)); 401 | background-image: -webkit-linear-gradient(#ececec, #bbbbbb); 402 | background-image: -o-linear-gradient(#ececec, #bbbbbb); 403 | background-image: linear-gradient(#ececec, #bbbbbb); 404 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ECECEC', endColorstr='#BBB', GradientType=0); 405 | border-color: #CACACA; 406 | /*-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); 407 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); 408 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);*/ 409 | -webkit-border-radius: 5px; 410 | -moz-border-radius: 5px; 411 | border-radius: 5px; 412 | } 413 | .button-delete { 414 | /*font-family: 'Open Sans', sans-serif;*/ 415 | border: 1px solid #CCC; 416 | position: relative; 417 | display: inline-block; 418 | overflow: visible; 419 | padding: 5px 10px; 420 | font-size: 13px; 421 | font-weight: bold; 422 | line-height: 18px; 423 | height: 30px; 424 | width: 90px; 425 | color: white; 426 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 427 | background-color: #EB1818; 428 | background-repeat: repeat-x; 429 | background-image: -khtml-gradient(linear, left top, left bottom, from(#eb1818), to(#af4a4a)); 430 | background-image: -moz-linear-gradient(#eb1818, #af4a4a); 431 | background-image: -ms-linear-gradient(#eb1818, #af4a4a); 432 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eb1818), color-stop(100%, #af4a4a)); 433 | background-image: -webkit-linear-gradient(#eb1818, #af4a4a); 434 | background-image: -o-linear-gradient(#eb1818, #af4a4a); 435 | background-image: linear-gradient(#eb1818, #af4a4a); 436 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#EB1818', endColorstr='#AF4A4A', GradientType=0); 437 | border-color: #B44343; 438 | /*-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); 439 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); 440 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);*/ 441 | -webkit-border-radius: 5px; 442 | -moz-border-radius: 5px; 443 | border-radius: 5px; 444 | } 445 | .button-normal:active { 446 | background-image: none; 447 | border-color: #096EB3; 448 | } 449 | .button-normal:hover, 450 | .button-normal:focus { 451 | color: white; 452 | background-color: #0271BF; 453 | background-repeat: repeat-x; 454 | background-image: -khtml-gradient(linear, left top, left bottom, from(#2daddc), to(#0271bf)); 455 | background-image: -moz-linear-gradient(#2daddc, #0271bf); 456 | background-image: -ms-linear-gradient(#2daddc, #0271bf); 457 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2daddc), color-stop(100%, #0271bf)); 458 | background-image: -webkit-linear-gradient(#2daddc, #0271bf); 459 | background-image: -o-linear-gradient(#2daddc, #0271bf); 460 | background-image: linear-gradient(#2daddc, #0271bf); 461 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2daddc', endColorstr='#0271bf', GradientType=0); 462 | border-color: #096EB3; 463 | } 464 | .horizontal_menu { 465 | display: inline; 466 | } 467 | .horizontal_menu .menu_item { 468 | padding: 0px 5px 0px 0px; 469 | float: left; 470 | display: inline; 471 | } 472 | .post p.meta a.author { 473 | position: absolute; 474 | left: -97px; 475 | top: -45px; 476 | } 477 | .post p.meta a.author::before { 478 | content: " "; 479 | position: absolute; 480 | top: 2px; 481 | left: 3px; 482 | width: 66px; 483 | height: 66px; 484 | z-index: 30; 485 | -moz-border-radius: 50%; 486 | -webkit-border-radius: 50%; 487 | border-radius: 50%; 488 | border: 1px solid rgba(0, 0, 0, 0.3); 489 | /*-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); 490 | -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.2); 491 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);*/ 492 | } 493 | .post p.meta a.author::after { 494 | content: " "; 495 | width: 72px; 496 | height: 72px; 497 | top: 0; 498 | left: 1px; 499 | background: white; 500 | background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee)); 501 | background-image: -moz-linear-gradient(top, #ffffff, #eeeeee); 502 | background-image: -o-linear-gradient(top, #ffffff, #eeeeee); 503 | /*-webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.3),0 0 2px rgba(0, 0, 0, 0.5); 504 | -moz-box-shadow: 0 2px 3px rgba(0,0,0,0.3),0 0 2px rgba(0,0,0,0.5); 505 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.3),0 0 2px rgba(0, 0, 0, 0.5);*/ 506 | -moz-border-radius: 50%; 507 | -webkit-border-radius: 50%; 508 | border-radius: 50%; 509 | position: absolute; 510 | z-index: 10; 511 | } 512 | .post p.meta a.author:hover { 513 | opacity: 1; 514 | } 515 | @-webkit-keyframes grayphoto { 516 | from { 517 | -webkit-filter: grayscale(0%); 518 | } 519 | to { 520 | -webkit-filter: grayscale(100%); 521 | } 522 | } 523 | .post p.meta a.author img { 524 | position: relative; 525 | z-index: 20; 526 | top: 2px; 527 | left: 3px; 528 | border: 0; 529 | margin: 0; 530 | -moz-border-radius: 50%; 531 | -webkit-border-radius: 50%; 532 | border-radius: 50%; 533 | /*-webkit-box-shadow: none; 534 | -moz-box-shadow: none; 535 | box-shadow: none;*/ 536 | } 537 | .post p.meta a.author:hover img { 538 | -webkit-animation-name: grayphoto; 539 | -webkit-animation-duration: 0.5s; 540 | -webkit-animation-timing-function: linear; 541 | -webkit-animation-fill-mode: forwards; 542 | } 543 | .post .meta { 544 | font-size: 0.8em; 545 | color: #AAA; 546 | -webkit-font-smoothing: antialiased; 547 | padding-bottom: 5px; 548 | border-bottom: 1px solid #EBEBEB; 549 | position: relative; 550 | margin-bottom: 22px; 551 | } 552 | .post div.tags-tab { 553 | display: block; 554 | padding-bottom: 40px; 555 | } 556 | .blog .main_posts { 557 | float: left; 558 | width: 80%; 559 | } 560 | .side_bar { 561 | margin-left: 81%; 562 | background: white; 563 | color: black; 564 | -webkit-border-radius: 3px; 565 | -moz-border-radius: 3px; 566 | border-radius: 3px; 567 | word-wrap: break-word; 568 | /*-webkit-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 569 | -moz-box-shadow: 0px 10px 30px rgba(0,0,0, 0.8); 570 | box-shadow: 0px 10px 30px rgba(0,0,0, 0.8);*/ 571 | padding: 2px 10px 10px 10px; 572 | } 573 | .side_bar h2 { 574 | font-size: 1.8em; 575 | } 576 | .side_bar ul { 577 | font-size: 1.6em; 578 | -webkit-margin-before: 0px; 579 | -webkit-margin-after: 0px; 580 | -webkit-margin-start: 5px; 581 | -webkit-margin-end: 0px; 582 | -webkit-padding-start: 0px; 583 | } 584 | .side_bar a { 585 | text-decoration: none; 586 | color: black; 587 | } 588 | .side_bar a:hover { 589 | text-decoration: none; 590 | color: #999; 591 | } 592 | #tags { 593 | display: block; 594 | height: 50px; 595 | padding-left: 0px; 596 | } 597 | #tags li { 598 | float: left; 599 | padding-right: 10px; 600 | } 601 | #tags li a { 602 | color: #343131; 603 | display: block; 604 | background: url(../img/tag.png) no-repeat 5px center; 605 | font-size: 0.8em; 606 | /*font-family: "MuseoSans-500";*/ 607 | padding: 0 15px 0 25px; 608 | height: 25px; 609 | line-height: 25px; 610 | /*-webkit-box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.1); 611 | box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.1);*/ 612 | -webkit-border-radius: 2px; 613 | -moz-border-radius: 2px; 614 | -ms-border-radius: 2px; 615 | -o-border-radius: 2px; 616 | border-radius: 2px; 617 | } 618 | #tags li:hover { 619 | opacity: 1; 620 | } 621 | #tags li a:hover { 622 | text-decoration: none; 623 | color: #858585; 624 | } 625 | .new-form .field { 626 | font-size: 1.2em; 627 | border: 0; 628 | width: 100%; 629 | } 630 | #new-post-form #title-field { 631 | font-size: 1.8em; 632 | border: 0; 633 | width: 100%; 634 | } 635 | #new-post-form #text { 636 | font-size: 1.2em; 637 | border: 0; 638 | width: 100%; 639 | } 640 | #new-post-form #tags-field { 641 | font-size: 1.2em; 642 | border: 0; 643 | width: 100%; 644 | } 645 | #admin-posts .posts-list ul { 646 | padding: 0px; 647 | } 648 | #admin-posts .posts-list h2 { 649 | font-size: 1.2em; 650 | padding-bottom: 0px; 651 | margin-bottom: 0px; 652 | } 653 | #admin-posts .posts-list .meta { 654 | font-size: 0.8em; 655 | color: #AAA; 656 | } 657 | .admin-page .projects-list h2 { 658 | font-size: 1.2em; 659 | } 660 | .admin-page .projects-list ul { 661 | padding: 0px; 662 | } 663 | #about-profile-area { 664 | padding: 0px 20px 0px 0px; 665 | min-height: 310px; 666 | background: white; 667 | color: black; 668 | -webkit-border-radius: 3px 3px 0px 0px; 669 | -moz-border-radius: 3px 3px 0px 0px; 670 | border-radius: 3px 3px 0px 0px; 671 | position: relative; 672 | word-wrap: break-word; 673 | font-size: 1.6em; 674 | line-height: 1.4em; 675 | margin-bottom: 0px; 676 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 677 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 678 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 679 | } 680 | #about-profile-area #image { 681 | float: left; 682 | margin-right: 20px; 683 | padding-bottom: 110px; 684 | } 685 | #about-profile-area .areas-interesse li { 686 | padding-left: 150px; 687 | } 688 | #about-profile-area .profile-image { 689 | border-radius: 3px 0px 0px 0px; 690 | } 691 | #about-profile-area .profile-description { 692 | padding-top: 10px; 693 | } 694 | #about-profile-area .profile-description ul.social { 695 | display: block; 696 | } 697 | #about-profile-area .profile-description ul.social li { 698 | float: left; 699 | } 700 | .social-icon { 701 | opacity: 0.8; 702 | } 703 | .social-icon:hover { 704 | opacity: 0.5; 705 | } 706 | article#about #contact-form-area { 707 | padding: 50px 20px 20px; 708 | background: #F5F5F5; 709 | margin-top: -22px; 710 | margin-left: 24%; 711 | margin-right: 190px; 712 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 713 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 714 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 715 | color: #585858; 716 | font-size: 14px; 717 | width: 370px; 718 | } 719 | article#about #contact-form-area fieldset { 720 | padding-top: 0px; 721 | padding-bottom: 4px; 722 | } 723 | article#about #contact-form-area label { 724 | display: block; 725 | } 726 | article#about #contact-form-area .button-normal { 727 | width: 350px; 728 | height: 45px; 729 | } 730 | article#about #contact-form-area textarea { 731 | border: solid 1px #AAA; 732 | font-size: 16px; 733 | border-radius: 3px; 734 | width: 345PX; 735 | } 736 | article#about #contact-form-area .text-input { 737 | border: solid 1px #AAA; 738 | outline: none; 739 | padding: 8px 5px; 740 | width: 340px; 741 | font-size: 16px; 742 | border-radius: 3px; 743 | } 744 | article#about #contact-footer { 745 | background: white; 746 | color: black; 747 | padding: 10px 67px; 748 | margin-bottom: 25px; 749 | -webkit-border-radius: 0px 0px 3px 3px; 750 | -moz-border-radius: 0px 0px 3px 3px; 751 | border-radius: 0px 0px 3px 3px; 752 | position: relative; 753 | word-wrap: break-word; 754 | font-size: 1.6em; 755 | line-height: 1.4em; 756 | margin-bottom: 1.6em; 757 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 758 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 759 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 760 | } 761 | #admin-messages h1 { 762 | font-size: 1.4em; 763 | } 764 | #admin-messages .messages-list ul { 765 | padding: 0px; 766 | } 767 | #admin-messages .messages-list ul li { 768 | margin-bottom: 10px; 769 | } 770 | #admin-messages .messages-list h2 { 771 | font-size: 1em; 772 | margin: 0px; 773 | } 774 | #admin-messages .messages-list .meta { 775 | font-size: 0.8em; 776 | color: #AAA; 777 | } 778 | #admin-messages .messages-list p { 779 | margin: 2px; 780 | } 781 | #admin-messages #contact-message { 782 | display: none; 783 | } 784 | article#projects #search-form { 785 | margin-bottom: 20px; 786 | } 787 | article#projects #project.content { 788 | background: white; 789 | color: black; 790 | padding: 0px; 791 | margin-bottom: 25px; 792 | -webkit-border-radius: 3px; 793 | -moz-border-radius: 3px; 794 | border-radius: 3px; 795 | position: relative; 796 | min-height: 350px; 797 | word-wrap: break-word; 798 | font-size: 1.6em; 799 | line-height: 1.4em; 800 | margin-bottom: 1.6em; 801 | /*-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8); 802 | -moz-box-shadow: 0px 2px 10px rgba(0,0,0, 0.8); 803 | box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);*/ 804 | } 805 | article#projects .project-image { 806 | float: left; 807 | margin-right: 20px; 808 | } 809 | article#projects .project-image img { 810 | border-radius: 3px 0px 0px 3px; 811 | } 812 | article#projects .project-description { 813 | padding: 10px; 814 | font-size: 16px; 815 | } 816 | article#projects .project-description h2 { 817 | font-size: 22px; 818 | } 819 | article#projects .project-description h2 a { 820 | color: #005ACC; 821 | } 822 | article#projects .project-description h3 { 823 | font-size: 22px; 824 | } 825 | article#projects .project-description #stores { 826 | margin-left: 280px; 827 | } 828 | article#projects .project-description #stores li { 829 | float: left; 830 | padding-top: 20px; 831 | margin-right: 20px; 832 | } 833 | .clear { 834 | clear: both; 835 | } 836 | .admin-page { 837 | padding-top: 45px; 838 | } 839 | @media screen and (max-width: 700px) { 840 | .post { 841 | padding: 5px 20px; 842 | } 843 | .site-header ul.menu { 844 | width: 280px; 845 | } 846 | .site-header ul.menu li { 847 | padding-right: 13px; 848 | } 849 | .post img { 850 | max-width: 240px; 851 | } 852 | .post pre { 853 | max-width: 290px; 854 | } 855 | article#about #contact-form-area { 856 | background: none repeat scroll 0 0 #F5F5F5; 857 | color: #585858; 858 | font-size: 14px; 859 | margin-left: 0px; 860 | margin-right: 0px; 861 | margin-top: -16px; 862 | padding: 36px 26px 10px; 863 | width: 230px; 864 | } 865 | #about-profile-area { 866 | background: none repeat scroll 0 0 white; 867 | border-radius: 3px 3px 0 0; 868 | color: black; 869 | font-size: 1.6em; 870 | height: 440px; 871 | line-height: 1.4em; 872 | margin-bottom: 0; 873 | min-height: 420px; 874 | padding: 2px 0 3px 24px; 875 | position: relative; 876 | word-wrap: break-word; 877 | } 878 | #about-profile-area #image { 879 | float: left; 880 | margin-right: 20px; 881 | padding-bottom: 10px; 882 | } 883 | article#about #contact-form-area .text-input { 884 | border: 1px solid #AAAAAA; 885 | border-radius: 3px 3px 3px 3px; 886 | font-size: 16px; 887 | outline: medium none; 888 | padding: 8px 5px; 889 | width: 90%; 890 | } 891 | article#about #contact-form-area .text-input { 892 | border: 1px solid #AAAAAA; 893 | border-radius: 3px 3px 3px 3px; 894 | font-size: 16px; 895 | outline: medium none; 896 | padding: 8px 5px; 897 | width: 90%; 898 | } 899 | article#about #contact-form-area textarea { 900 | border: 1px solid #AAAAAA; 901 | border-radius: 3px 3px 3px 3px; 902 | font-size: 16px; 903 | width: 90%; 904 | } 905 | article#about #contact-form-area .button-normal { 906 | height: 45px; 907 | width: 90%; 908 | } 909 | .project-image { 910 | display: block; 911 | float: left; 912 | width: 100%; 913 | } 914 | .project-image img { 915 | width: 100%; 916 | } 917 | article#projects .project-description #stores { 918 | margin-left: 100px; 919 | } 920 | article#projects .project-description #stores li { 921 | float: none; 922 | padding-top: 20px; 923 | margin-right: 0px; 924 | } 925 | .blog .main_posts { 926 | width: 100%; 927 | } 928 | .side_bar { 929 | display: none; 930 | } 931 | } 932 | -------------------------------------------------------------------------------- /builtAssets/css/style-836d9cede902c68b7fe7fd952adc12f9.css: -------------------------------------------------------------------------------- 1 | @import "font-awesome.min.css";audio,canvas,video{display:inline-block;*display:inline;*zoom:1}h1,h2,h3,h4,h5,h6{font-weight:normal;color:black}ul,ol{list-style:none outside none}h2{font-size:2.4em}html{overflow-y:scroll;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,body{font-family:'Lato',sans-serif;height:100%;width:100%;font-size:10px;line-height:normal;margin:0;overflow:auto}body,input,button,textarea,select{font-family:sans-serif}body,input,submit,textarea{font-family:'Lato',sans-serif;-webkit-overflow-scrolling:touch}img{border:0;-ms-interpolation-mode:bicubic}a{text-decoration:none}fieldset{border:0px}::selection{background:#55a2f7}::-moz-selection{background:#55a2f7}a:hover,a:active{outline:0}.site-page{margin:0px;padding:0px;background-color:#213D5F}.blur{min-width:100%;min-height:100%;position:fixed;top:0;left:0;z-index:-2;opacity:0.7}.wrapper{margin:0 auto;padding-left:20px;padding-right:20px;padding-bottom:10px;max-width:1100px;min-width:180px}.site-header{margin:54px 0 0;text-shadow:0 1px 0 rgba(0,0,0,0.5);font-weight:300}.site-header ul.menu{vertical-align:left;float:right;width:410px}.site-header ul.menu li{font-size:2em;display:inline;list-style-type:none;padding-right:20px;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.site-header ul.menu li.selected{text-shadow:0 0 4px rgba(255,255,255,0.7)}.site-header a{color:#fff;-webkit-transform:translateZ(0);-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.site-header a:hover{opacity:0.5}.site-header a:focus{outline:none}#search-form{width:180px;margin:auto;display:none}#about #search-form{margin-bottom:20px}#search-form #search-field{color:rgba(255,255,255,0.9);background:transparent;border:solid 1px rgba(71,71,71,0.25);border-radius:20px;font-size:14px;padding:4px 15px;outline:none}.menu #search-button{font-size:18px}.article_content ul{list-style-type:disc;padding-left:30px}.article_content ul li{margin-right:20px;margin-bottom:10px;position:relative}.article_content a{color:#4175c6}.site-page .site-header .site-logo{float:left;display:block;font-size:3.0em;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.site-page .blog header{text-shadow:0 1px 0 rgba(0,0,0,0.5)}site-page .blog header h1{margin-bottom:0px}.site-page .blog header ul{padding:0}.site-page .blog header ul li{margin:0;padding:0}.site-page .blog header h1{font-size:2.4em;margin-bottom:0px}.site-page .blog .post h2{font-size:1.3em;margin-bottom:0px;font-weight:300}.site-page .blog header a:hover{opacity:0.5}.site-page .blog header a{-webkit-transition:all .2s ease-out 0s;-moz-transition:all .2s ease-out 0s;-webkit-transform:translateZ(0)}.site-page .blog header time{font-size:1.3em}.post a{color:black}.post a:hover{opacity:0.5}.old_posts_nav_link{margin-bottom:10px}.old_posts_nav_link .label{font-size:1.8em;padding-left:8px}.old_posts_nav_link a{color:#fff}.old_posts_nav_link a:hover{opacity:0.7}.post{background:white;color:black;padding:50px 67px;margin-bottom:25px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;position:relative;min-height:153px;word-wrap:break-word;font-size:18px;font-weight:300;margin-bottom:1.6em}.post h2 a{color:#616161;font-weight:300;font-size:24px}.post a{color:#4175c6}.post a:hover{text-decoration:underline}.post h2 a:hover{text-decoration:none}.post img{max-width:450px;margin:10px auto;display:inline-block;position:relative}.post ol{list-style-type:decimal}.page{background:white;color:black;padding:50px 67px;margin-bottom:25px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;position:relative;min-height:153px;word-wrap:break-word;font-size:1.6em;line-height:1.4em;margin-bottom:1.6em}.page h2 a{color:#616161}.page a{color:#4175c6;font-weight:bold;font-size:0.9em}.page a:hover{text-decoration:underline}.page h2 a:hover{text-decoration:none}.page img{max-width:450px;margin:10px auto;display:inline-block;position:relative}.page ol{list-style-type:decimal}#canvasSource{display:none}.login-form{width:250px;margin:auto}.login-form p{margin:0px}.login-form fieldset{border:0px}.login-form .text-input{width:200px;height:20px;font-size:1em;color:#272822;border:1px solid #CCC;display:inline-block;margin:0;outline:none;background-color:white;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding:4px}.button-normal{border:1px solid #CCC;position:relative;display:inline-block;overflow:visible;padding:5px 10px;font-size:13px;font-weight:bold;line-height:18px;height:30px;width:90px;color:white;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#019AD2;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#33bcef), to(#019ad2));background-image:-moz-linear-gradient(#33bcef, #019ad2);background-image:-ms-linear-gradient(#33bcef, #019ad2);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #33bcef), color-stop(100%, #019ad2));background-image:-webkit-linear-gradient(#33bcef, #019ad2);background-image:-o-linear-gradient(#33bcef, #019ad2);background-image:linear-gradient(#33bcef, #019ad2);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#33bcef', endColorstr='#019ad2', GradientType=0);border-color:#057ED0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.button-edit{border:1px solid #CCC;position:relative;display:inline-block;overflow:visible;padding:5px 10px;font-size:13px;font-weight:bold;line-height:18px;color:white;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#019AD2;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ececec), to(#bbb));background-image:-moz-linear-gradient(#ececec, #bbb);background-image:-ms-linear-gradient(#ececec, #bbb);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ececec), color-stop(100%, #bbb));background-image:-webkit-linear-gradient(#ececec, #bbb);background-image:-o-linear-gradient(#ececec, #bbb);background-image:linear-gradient(#ececec, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ECECEC', endColorstr='#BBB', GradientType=0);border-color:#CACACA;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.button-delete{border:1px solid #CCC;position:relative;display:inline-block;overflow:visible;padding:5px 10px;font-size:13px;font-weight:bold;line-height:18px;height:30px;width:90px;color:white;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#EB1818;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#eb1818), to(#af4a4a));background-image:-moz-linear-gradient(#eb1818, #af4a4a);background-image:-ms-linear-gradient(#eb1818, #af4a4a);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #eb1818), color-stop(100%, #af4a4a));background-image:-webkit-linear-gradient(#eb1818, #af4a4a);background-image:-o-linear-gradient(#eb1818, #af4a4a);background-image:linear-gradient(#eb1818, #af4a4a);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EB1818', endColorstr='#AF4A4A', GradientType=0);border-color:#B44343;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.button-normal:active{background-image:none;border-color:#096EB3}.button-normal:hover,.button-normal:focus{color:white;background-color:#0271BF;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#2daddc), to(#0271bf));background-image:-moz-linear-gradient(#2daddc, #0271bf);background-image:-ms-linear-gradient(#2daddc, #0271bf);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #2daddc), color-stop(100%, #0271bf));background-image:-webkit-linear-gradient(#2daddc, #0271bf);background-image:-o-linear-gradient(#2daddc, #0271bf);background-image:linear-gradient(#2daddc, #0271bf);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2daddc', endColorstr='#0271bf', GradientType=0);border-color:#096EB3}.horizontal_menu{display:inline}.horizontal_menu .menu_item{padding:0px 5px 0px 0px;float:left;display:inline}.post p.meta a.author{position:absolute;left:-97px;top:-45px}.post p.meta a.author::before{content:" ";position:absolute;top:2px;left:3px;width:66px;height:66px;z-index:30;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;border:1px solid rgba(0,0,0,0.3)}.post p.meta a.author::after{content:" ";width:72px;height:72px;top:0;left:1px;background:white;background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));background-image:-moz-linear-gradient(top, #fff, #eee);background-image:-o-linear-gradient(top, #fff, #eee);-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;position:absolute;z-index:10}.post p.meta a.author:hover{opacity:1}@-webkit-keyframes grayphoto{from{-webkit-filter:grayscale(0)}to{-webkit-filter:grayscale(100%)}}.post p.meta a.author img{position:relative;z-index:20;top:2px;left:3px;border:0;margin:0;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.post p.meta a.author:hover img{-webkit-animation-name:grayphoto;-webkit-animation-duration:0.5s;-webkit-animation-timing-function:linear;-webkit-animation-fill-mode:forwards}.post .meta{font-size:0.8em;color:#AAA;-webkit-font-smoothing:antialiased;padding-bottom:5px;border-bottom:1px solid #EBEBEB;position:relative;margin-bottom:22px}.post div.tags-tab{display:block;padding-bottom:40px}.blog .main_posts{float:left;width:80%}.side_bar{margin-left:81%;background:white;color:black;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;word-wrap:break-word;padding:2px 10px 10px 10px}.side_bar h2{font-size:1.8em}.side_bar ul{font-size:1.6em;-webkit-margin-before:0px;-webkit-margin-after:0px;-webkit-margin-start:5px;-webkit-margin-end:0px;-webkit-padding-start:0px}.side_bar a{text-decoration:none;color:black}.side_bar a:hover{text-decoration:none;color:#999}#tags{display:block;height:50px;padding-left:0px}#tags li{float:left;padding-right:10px}#tags li a{color:#343131;display:block;background:url(../img/tag.png) no-repeat 5px center;font-size:0.8em;padding:0 15px 0 25px;height:25px;line-height:25px;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}#tags li:hover{opacity:1}#tags li a:hover{text-decoration:none;color:#858585}.new-form .field{font-size:1.2em;border:0;width:100%}#new-post-form #title-field{font-size:1.8em;border:0;width:100%}#new-post-form #text{font-size:1.2em;border:0;width:100%}#new-post-form #tags-field{font-size:1.2em;border:0;width:100%}#admin-posts .posts-list ul{padding:0px}#admin-posts .posts-list h2{font-size:1.2em;padding-bottom:0px;margin-bottom:0px}#admin-posts .posts-list .meta{font-size:0.8em;color:#AAA}.admin-page .projects-list h2{font-size:1.2em}.admin-page .projects-list ul{padding:0px}#about-profile-area{padding:0px 20px 0px 0px;min-height:310px;background:white;color:black;-webkit-border-radius:3px 3px 0px 0px;-moz-border-radius:3px 3px 0px 0px;border-radius:3px 3px 0px 0px;position:relative;word-wrap:break-word;font-size:1.6em;line-height:1.4em;margin-bottom:0px}#about-profile-area #image{float:left;margin-right:20px;padding-bottom:110px}#about-profile-area .areas-interesse li{padding-left:150px}#about-profile-area .profile-image{border-radius:3px 0px 0px 0px}#about-profile-area .profile-description{padding-top:10px}#about-profile-area .profile-description ul.social{display:block}#about-profile-area .profile-description ul.social li{float:left}.social-icon{opacity:0.8}.social-icon:hover{opacity:0.5}article#about #contact-form-area{padding:50px 20px 20px;background:#F5F5F5;margin-top:-22px;margin-left:24%;margin-right:190px;color:#585858;font-size:14px;width:370px}article#about #contact-form-area fieldset{padding-top:0px;padding-bottom:4px}article#about #contact-form-area label{display:block}article#about #contact-form-area .button-normal{width:350px;height:45px}article#about #contact-form-area textarea{border:solid 1px #AAA;font-size:16px;border-radius:3px;width:345PX}article#about #contact-form-area .text-input{border:solid 1px #AAA;outline:none;padding:8px 5px;width:340px;font-size:16px;border-radius:3px}article#about #contact-footer{background:white;color:black;padding:10px 67px;margin-bottom:25px;-webkit-border-radius:0px 0px 3px 3px;-moz-border-radius:0px 0px 3px 3px;border-radius:0px 0px 3px 3px;position:relative;word-wrap:break-word;font-size:1.6em;line-height:1.4em;margin-bottom:1.6em}#admin-messages h1{font-size:1.4em}#admin-messages .messages-list ul{padding:0px}#admin-messages .messages-list ul li{margin-bottom:10px}#admin-messages .messages-list h2{font-size:1em;margin:0px}#admin-messages .messages-list .meta{font-size:0.8em;color:#AAA}#admin-messages .messages-list p{margin:2px}#admin-messages #contact-message{display:none}article#projects #search-form{margin-bottom:20px}article#projects #project.content{background:white;color:black;padding:0px;margin-bottom:25px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;position:relative;min-height:350px;word-wrap:break-word;font-size:1.6em;line-height:1.4em;margin-bottom:1.6em}article#projects .project-image{float:left;margin-right:20px}article#projects .project-image img{border-radius:3px 0px 0px 3px}article#projects .project-description{padding:10px;font-size:16px}article#projects .project-description h2{font-size:22px}article#projects .project-description h2 a{color:#005ACC}article#projects .project-description h3{font-size:22px}article#projects .project-description #stores{margin-left:280px}article#projects .project-description #stores li{float:left;padding-top:20px;margin-right:20px}.clear{clear:both}.admin-page{padding-top:45px}@media screen and (max-width:700px){.post{padding:5px 20px}.site-header ul.menu{width:280px}.site-header ul.menu li{padding-right:13px}.post img{max-width:240px}.post pre{max-width:290px}article#about #contact-form-area{background:none repeat scroll 0 0 #F5F5F5;color:#585858;font-size:14px;margin-left:0px;margin-right:0px;margin-top:-16px;padding:36px 26px 10px;width:230px}#about-profile-area{background:none repeat scroll 0 0 white;border-radius:3px 3px 0 0;color:black;font-size:1.6em;height:440px;line-height:1.4em;margin-bottom:0;min-height:420px;padding:2px 0 3px 24px;position:relative;word-wrap:break-word}#about-profile-area #image{float:left;margin-right:20px;padding-bottom:10px}article#about #contact-form-area .text-input{border:1px solid #AAAAAA;border-radius:3px 3px 3px 3px;font-size:16px;outline:medium none;padding:8px 5px;width:90%}article#about #contact-form-area .text-input{border:1px solid #AAAAAA;border-radius:3px 3px 3px 3px;font-size:16px;outline:medium none;padding:8px 5px;width:90%}article#about #contact-form-area textarea{border:1px solid #AAAAAA;border-radius:3px 3px 3px 3px;font-size:16px;width:90%}article#about #contact-form-area .button-normal{height:45px;width:90%}.project-image{display:block;float:left;width:100%}.project-image img{width:100%}article#projects .project-description #stores{margin-left:100px}article#projects .project-description #stores li{float:none;padding-top:20px;margin-right:0px}.blog .main_posts{width:100%}.side_bar{display:none}} -------------------------------------------------------------------------------- /builtAssets/css/style-d41d8cd98f00b204e9800998ecf8427e.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/builtAssets/css/style-d41d8cd98f00b204e9800998ecf8427e.css -------------------------------------------------------------------------------- /builtAssets/js/app-32b417979e268bb8049b1bfdd1340a5e.js: -------------------------------------------------------------------------------- 1 | (function(){var a;a=function(){function a(a,b){this.image=b,this.element=a,this.element.width=this.image.width,this.element.height=this.image.height,this.context=this.element.getContext("2d"),this.context.drawImage(this.image,0,0)}return a.prototype.blur=function(a){var b,c,d,e,f,g,h;this.context.globalAlpha=.5;for(b=e=0,h=a;0<=h?e<=h:e>=h;b=0<=h?++e:--e)for(d=f=-1;f<=2;d=++f)for(c=g=-1;g<=2;c=++g)this.context.drawImage(this.element,c,d);return this.context.globalAlpha=1},a}(),$(document).ready(function(){var b,c,d;return b="bgcanvas",d="/img/bg2.jpg",c=new Image,c.onload=function(){var c;return c=new a(document.getElementById(b),this),c.blur(4)},c.src=d,$("#search-button").click(function(){return $("#search-form").slideDown("fast",function(){return $("#search-field").focus()})}),$("#search-field").blur(function(){if($(this).val()==="")return $("#search-form").slideUp("fast",function(){})}),$(".contact-form").submit(function(){return $.ajax({type:"POST",url:"/about/message",data:$(".contact-form").serialize(),dataType:"json",beforeSend:function(){},error:function(a,b,c){return $(".contact-form").fadeOut(function(){return $("#contact-form-area").html("

Ocorreu um problema ao enviar a mensagem, por favor tente novamente mais tarde ou envie um email diretamente para guilherme.defreitas@gmail.com.

Obrigado!

"),$("#contact-message").fadeIn()})},success:function(a){return $(".contact-form").fadeOut(function(){return $("#contact-form-area").html("

Mensagem enviada com sucesso. Obrigado!

"),$("#contact-message").fadeIn()})}}),event.preventDefault()})})}).call(this) -------------------------------------------------------------------------------- /builtAssets/js/html5shiv-62bd53b6b9b7afed0c23ad61f1119a76.js: -------------------------------------------------------------------------------- 1 | (function(a,b){function c(){var a=p.elements;return"string"==typeof a?a.split(" "):a}function d(a){var b=n[a[l]];return b||(b={},m++,a[l]=m,n[m]=b),b}function e(a,c,e){return c||(c=b),o?c.createElement(a):(e||(e=d(c)),c=e.cache[a]?e.cache[a].cloneNode():j.test(a)?(e.cache[a]=e.createElem(a)).cloneNode():e.createElem(a),c.canHaveChildren&&!i.test(a)?e.frag.appendChild(c):c)}function f(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return p.shivMethods?e(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+c().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(p,b.frag)}function g(a){a||(a=b);var c=d(a);if(p.shivCSS&&!k&&!c.hasCSS){var e,g=a;e=g.createElement("p"),g=g.getElementsByTagName("head")[0]||g.documentElement,e.innerHTML="x",e=g.insertBefore(e.lastChild,g.firstChild),c.hasCSS=!!e}return o||f(a,c),a}var h=a.html5||{},i=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,j=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,k,l="_html5shiv",m=0,n={},o;(function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a;var c;if(!(c=1==a.childNodes.length)){b.createElement("a");var d=b.createDocumentFragment();c="undefined"==typeof d.cloneNode||"undefined"==typeof d.createDocumentFragment||"undefined"==typeof d.createElement}o=c}catch(e){o=k=!0}})();var p={elements:h.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==h.shivCSS,supportsUnknownElements:o,shivMethods:!1!==h.shivMethods,type:"default",shivDocument:g,createElement:e,createDocumentFragment:function(a,e){a||(a=b);if(o)return a.createDocumentFragment();for(var e=e||d(a),f=e.frag.cloneNode(),g=0,h=c(),i=h.length;g',a,""].join(""),j.id=p,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background="",l.style.overflow="hidden",i=o.style.overflow,o.style.overflow="hidden",o.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),o.style.overflow=i),!!g},H=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return G("@media "+b+" { #"+p+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position=="absolute"}),d},I=function(){function a(a,e){e=e||b.createElement(d[a]||"div"),a="on"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,""),g=f(e[a],"function"),f(e[a],"undefined")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return a}(),J={}.hasOwnProperty,K;!f(J,"undefined")&&!f(J.call,"undefined")?K=function(a,b){return J.call(a,b)}:K=function(a,b){return b in a&&f(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if(typeof b!="function")throw new TypeError;var c=E.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(E.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(E.call(arguments)))};return d}),A.flexbox=function(){return j("flexWrap")},A.flexboxlegacy=function(){return j("boxDirection")},A.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},A.canvastext=function(){return!!m.canvas&&!!f(b.createElement("canvas").getContext("2d").fillText,"function")},A.webgl=function(){return!!a.WebGLRenderingContext},A.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:G(["@media (",v.join("touch-enabled),("),p,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},A.geolocation=function(){return"geolocation"in navigator},A.postmessage=function(){return!!a.postMessage},A.websqldatabase=function(){return!!a.openDatabase},A.indexedDB=function(){return!!j("indexedDB",a)},A.hashchange=function(){return I("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},A.history=function(){return!!a.history&&!!history.pushState},A.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},A.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},A.rgba=function(){return d("background-color:rgba(150,255,150,.5)"),g(r.backgroundColor,"rgba")},A.hsla=function(){return d("background-color:hsla(120,40%,100%,.5)"),g(r.backgroundColor,"rgba")||g(r.backgroundColor,"hsla")},A.multiplebgs=function(){return d("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(r.background)},A.backgroundsize=function(){return j("backgroundSize")},A.borderimage=function(){return j("borderImage")},A.borderradius=function(){return j("borderRadius")},A.boxshadow=function(){return j("boxShadow")},A.textshadow=function(){return b.createElement("div").style.textShadow===""},A.opacity=function(){return e("opacity:.55"),/^0.55$/.test(r.opacity)},A.cssanimations=function(){return j("animationName")},A.csscolumns=function(){return j("columnCount")},A.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return d((a+"-webkit- ".split(" ").join(b+a)+v.join(c+a)).slice(0,-a.length)),g(r.backgroundImage,"gradient")},A.cssreflections=function(){return j("boxReflect")},A.csstransforms=function(){return!!j("transform")},A.csstransforms3d=function(){var a=!!j("perspective");return a&&"webkitPerspective"in o.style&&G("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},A.csstransitions=function(){return j("transition")},A.fontface=function(){var a;return G('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},A.generatedcontent=function(){var a;return G(["#",p,"{font:0/0 a}#",p,':after{content:"',t,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},A.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},A.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},A.localstorage=function(){try{return localStorage.setItem(p,p),localStorage.removeItem(p),!0}catch(a){return!1}},A.sessionstorage=function(){try{return sessionStorage.setItem(p,p),sessionStorage.removeItem(p),!0}catch(a){return!1}},A.webworkers=function(){return!!a.Worker},A.applicationcache=function(){return!!a.applicationCache},A.svg=function(){return!!b.createElementNS&&!!b.createElementNS(z.svg,"svg").createSVGRect},A.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==z.svg},A.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(u.call(b.createElementNS(z.svg,"animate")))},A.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(u.call(b.createElementNS(z.svg,"clipPath")))};for(var L in A)K(A,L)&&(F=L.toLowerCase(),m[F]=A[L](),D.push((m[F]?"":"no-")+F));return m.input||k(),m.addTest=function(a,b){if(typeof a=="object")for(var d in a)K(a,d)&&m.addTest(d,a[d]);else{a=a.toLowerCase();if(m[a]!==c)return m;b=typeof b=="function"?b():b,typeof n!="undefined"&&n&&(o.className+=" "+(b?"":"no-")+a),m[a]=b}return m},d(""),q=s=null,m._version=l,m._prefixes=v,m._domPrefixes=y,m._cssomPrefixes=x,m.mq=H,m.hasEvent=I,m.testProp=function(a){return h([a])},m.testAllProps=j,m.testStyles=G,o.className=o.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(n?" js "+D.join(" "):""),m}(this,this.document),function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=w.elements;return typeof a=="string"?a.split(" "):a}function e(a){var b=u[a[s]];return b||(b={},t++,a[s]=t,u[t]=b),b}function f(a,c,d){c||(c=b);if(v)return c.createElement(a);d||(d=e(c));var f;return d.cache[a]?f=d.cache[a].cloneNode():q.test(a)?f=(d.cache[a]=d.createElem(a)).cloneNode():f=d.createElem(a),f.canHaveChildren&&!p.test(a)?d.frag.appendChild(f):f}function g(a,c){a||(a=b);if(v)return a.createDocumentFragment();c=c||e(a);var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;for(;g+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+y+"\\:$2";while(e--)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function m(a){var b=a.length;while(b--)a[b].removeNode()}function n(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,f,g=e(a),h=a.namespaces,i=a.parentWindow;return!z||a.printShived?a:(typeof h[y]=="undefined"&&h.add(y),i.attachEvent("onbeforeprint",function(){b();var e,g,h,i=a.styleSheets,k=[],m=i.length,n=Array(m);while(m--)n[m]=i[m];while(h=n.pop())if(!h.disabled&&x.test(h.media)){try{e=h.imports,g=e.length}catch(o){g=0}for(m=0;m",r="hidden"in a,v=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){r=!0,v=!0}})();var w={elements:o.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:o.shivCSS!==!1,supportsUnknownElements:v,shivMethods:o.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=w,i(b);var x=/^$|\b(?:all|print)\b/,y="html5shiv",z=!v&&function(){var c=b.documentElement;return typeof b.namespaces!="undefined"&&typeof b.parentWindow!="undefined"&&typeof c.applyElement!="undefined"&&typeof c.removeNode!="undefined"&&typeof a.attachEvent!="undefined"}();w.type+=" print",w.shivPrint=n,n(b)}(this,document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f122||(j<65||i>90||e.push([Math.max(65,i)|32,Math.min(j,90)|32]),j<97||i>122||e.push([Math.max(97,i)&-33,Math.min(j,122)&-33]))}}e.sort(function(a,b){return a[0]-b[0]||b[1]-a[1]}),d=[],i=[NaN,NaN];for(g=0;gh[0]&&(h[1]+1>h[0]&&e.push("-"),e.push(c(h[1])));return e.push("]"),e.join("")}function e(a){for(var b=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=b.length,e=[],h=0,i=0;h=2&&a==="["?b[h]=d(j):a!=="\\"&&(b[h]=j.replace(/[A-Za-z]/g,function(a){return a=a.charCodeAt(0),"["+String.fromCharCode(a&-33,a|32)+"]"}));return b.join("")}for(var f=0,g=!1,h=!1,i=0,j=a.length;i=5&&"lang-"===q.substring(0,5))&&(!r||typeof r[1]!="string")&&(s=!1,q="src"),s||(m[p]=q)}t=k,k+=p.length;if(s){s=r[1];var u=p.indexOf(s),v=u+s.length;r[2]&&(v=p.length-r[2].length,u=v-s.length),q=q.substring(5),c(b+t,p.substring(0,u),e,j),c(b+t+u,s,h(q,s),j),c(b+t+v,p.substring(v),e,j)}else j.push(b+t,q)}a.e=j}var f={},g;(function(){for(var c=b.concat(d),e=[],h={},i=0,j=c.length;i=0;)f[l.charAt(m)]=k;k=k[1],l=""+k,h.hasOwnProperty(l)||(e.push(k),h[l]=q)}e.push(/[\S\s]/),g=a(e)})();var i=d.length;return e}function e(a){var b=[],c=[];a.tripleQuotedStrings?b.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?b.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):b.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]),a.verbatimStrings&&c.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var e=a.hashComments;return e&&(a.cStyleComments?(e>1?b.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):b.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),c.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):b.push(["com",/^#[^\n\r]*/,q,"#"])),a.cStyleComments&&(c.push(["com",/^\/\/[^\n\r]*/,q]),c.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q])),a.regexLiterals&&c.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]),(e=a.types)&&c.push(["typ",e]),a=(""+a.keywords).replace(/^ | $/g,""),a.length&&c.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]),b.push(["pln",/^\s+/,q," \r\n\t "]),c.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]),d(b,c)}function f(a,b){function c(a){switch(a.nodeType){case 1:if(e.test(a.className))break;if("BR"===a.nodeName)d(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)c(a);break;case 3:case 4:if(i){var b=a.nodeValue,h=b.match(f);if(h){var j=b.substring(0,h.index);a.nodeValue=j,(b=b.substring(h.index+h[0].length))&&a.parentNode.insertBefore(g.createTextNode(b),a.nextSibling),d(a),j||a.parentNode.removeChild(a)}}}}function d(a){function b(a,c){var d=c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),f=a.nextSibling;e.appendChild(d);for(var g=f;g;g=f)f=g.nextSibling,e.appendChild(g)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),c;(c=a.parentNode)&&c.nodeType===1;)a=c;j.push(a)}var e=/(?:^|\s)nocode(?:\s|$)/,f=/\r\n?|\n/,g=a.ownerDocument,h;a.currentStyle?h=a.currentStyle.whiteSpace:window.getComputedStyle&&(h=g.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var i=h&&"pre"===h.substring(0,3);for(h=g.createElement("LI");a.firstChild;)h.appendChild(a.firstChild);for(var j=[h],k=0;k=0;){var d=b[c];u.hasOwnProperty(d)?window.console&&console.warn("cannot override language handler %s",d):u[d]=a}}function h(a,b){if(!a||!u.hasOwnProperty(a))a=/^\s*=s&&(e+=2),d>=t&&(a+=2)}}catch(z){"console"in window&&console.log(z&&z.stack?z.stack:z)}}var j=["break,continue,do,else,for,if,return,while"],k=[[j,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],l=[k,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],m=[k,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],n=[m,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],k=[k,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],o=[j,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],p=[j,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],j=[j,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],r=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,s=/\S/,t=e({keywords:[l,n,k,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+o,p,j],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),u={};g(t,["default-code"]),g(d([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]),g(d([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]),g(d([],[["atv",/^[\S\s]+/]]),["uq.val"]),g(e({keywords:l,hashComments:!0,cStyleComments:!0,types:r}),["c","cc","cpp","cxx","cyc","m"]),g(e({keywords:"null,true,false"}),["json"]),g(e({keywords:n,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:r}),["cs"]),g(e({keywords:m,cStyleComments:!0}),["java"]),g(e({keywords:j,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]),g(e({keywords:o,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]),g(e({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]),g(e({keywords:p,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]),g(e({keywords:k,cStyleComments:!0,regexLiterals:!0}),["js"]),g(e({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]),g(d([],[["str",/^[\S\s]+/]]),["regex"]),window.prettyPrintOne=function(a,b,c){var d=document.createElement("PRE");return d.innerHTML=a,c&&f(d,c),i({g:b,i:c,h:d}),d.innerHTML},window.prettyPrint=function(a){function b(){for(var c=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;k=0){var g=g.match(m),h,n;if(n=!g){n=e;for(var o=void 0,p=n.firstChild;p;p=p.nextSibling)var q=p.nodeType,o=q===1?o?n:p:q===3?s.test(p.nodeValue)?n:o:o;n=(h=o===n?void 0:o)&&"CODE"===h.tagName}n&&(g=h.className.match(m)),g&&(g=g[1]),n=!1;for(o=e.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){n=!0;break}n||((n=(n=e.className.match(/\blinenums\b(?::(\d+))?/))?n[1]&&n[1].length?+n[1]:!0:!1)&&f(e,n),l={g:g,h:e,i:n},i(l))}}k2;a==null&&(a=[]);if(o&&a.reduce===o)return d&&(b=y.bind(b,d)),e?a.reduce(b,c):a.reduce(b);z(a,function(a,f,g){e?c=b.call(d,c,a,f,g):(c=a,e=!0)});if(!e)throw new TypeError("Reduce of empty array with no initial value");return c},y.reduceRight=y.foldr=function(a,b,c,d){var e=arguments.length>2;a==null&&(a=[]);if(p&&a.reduceRight===p)return d&&(b=y.bind(b,d)),arguments.length>2?a.reduceRight(b,c):a.reduceRight(b);var f=a.length;if(f!==+f){var g=y.keys(a);f=g.length}z(a,function(h,i,j){i=g?g[--f]:--f,e?c=b.call(d,c,a[i],i,j):(c=a[i],e=!0)});if(!e)throw new TypeError("Reduce of empty array with no initial value");return c},y.find=y.detect=function(a,b,c){var d;return A(a,function(a,e,f){if(b.call(c,a,e,f))return d=a,!0}),d},y.filter=y.select=function(a,b,c){var d=[];return a==null?d:q&&a.filter===q?a.filter(b,c):(z(a,function(a,e,f){b.call(c,a,e,f)&&(d[d.length]=a)}),d)},y.reject=function(a,b,c){var d=[];return a==null?d:(z(a,function(a,e,f){b.call(c,a,e,f)||(d[d.length]=a)}),d)},y.every=y.all=function(a,b,d){b||(b=y.identity);var e=!0;return a==null?e:r&&a.every===r?a.every(b,d):(z(a,function(a,f,g){if(!(e=e&&b.call(d,a,f,g)))return c}),!!e)};var A=y.some=y.any=function(a,b,d){b||(b=y.identity);var e=!1;return a==null?e:s&&a.some===s?a.some(b,d):(z(a,function(a,f,g){if(e||(e=b.call(d,a,f,g)))return c}),!!e)};y.contains=y.include=function(a,b){var c=!1;return a==null?c:t&&a.indexOf===t?a.indexOf(b)!=-1:(c=A(a,function(a){return a===b}),c)},y.invoke=function(a,b){var c=h.call(arguments,2);return y.map(a,function(a){return(y.isFunction(b)?b:a[b]).apply(a,c)})},y.pluck=function(a,b){return y.map(a,function(a){return a[b]})},y.where=function(a,b){return y.isEmpty(b)?[]:y.filter(a,function(a){for(var c in b)if(b[c]!==a[c])return!1;return!0})},y.max=function(a,b,c){if(!b&&y.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.max.apply(Math,a);if(!b&&y.isEmpty(a))return-Infinity;var d={computed:-Infinity};return z(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g>=d.computed&&(d={value:a,computed:g})}),d.value},y.min=function(a,b,c){if(!b&&y.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.min.apply(Math,a);if(!b&&y.isEmpty(a))return Infinity;var d={computed:Infinity};return z(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;gd||c===void 0)return 1;if(c>>1;c.call(d,a[h])=0})})},y.difference=function(a){var b=i.apply(d,h.call(arguments,1));return y.filter(a,function(a){return!y.contains(b,a)})},y.zip=function(){var a=h.call(arguments),b=y.max(y.pluck(a,"length")),c=new Array(b);for(var d=0;d=0;c--)b=[a[c].apply(this,b)];return b[0]}},y.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}},y.keys=w||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[];for(var c in a)y.has(a,c)&&(b[b.length]=c);return b},y.values=function(a){var b=[];for(var c in a)y.has(a,c)&&b.push(a[c]);return b},y.pairs=function(a){var b=[];for(var c in a)y.has(a,c)&&b.push([c,a[c]]);return b},y.invert=function(a){var b={};for(var c in a)y.has(a,c)&&(b[a[c]]=c);return b},y.functions=y.methods=function(a){var b=[];for(var c in a)y.isFunction(a[c])&&b.push(c);return b.sort()},y.extend=function(a){return z(h.call(arguments,1),function(b){for(var c in b)a[c]=b[c]}),a},y.pick=function(a){var b={},c=i.apply(d,h.call(arguments,1));return z(c,function(c){c in a&&(b[c]=a[c])}),b},y.omit=function(a){var b={},c=i.apply(d,h.call(arguments,1));for(var e in a)y.contains(c,e)||(b[e]=a[e]);return b},y.defaults=function(a){return z(h.call(arguments,1),function(b){for(var c in b)a[c]==null&&(a[c]=b[c])}),a},y.clone=function(a){return y.isObject(a)?y.isArray(a)?a.slice():y.extend({},a):a},y.tap=function(a,b){return b(a),a};var F=function(a,b,c,d){if(a===b)return a!==0||1/a==1/b;if(a==null||b==null)return a===b;a instanceof y&&(a=a._wrapped),b instanceof y&&(b=b._wrapped);var e=k.call(a);if(e!=k.call(b))return!1;switch(e){case"[object String]":return a==String(b);case"[object Number]":return a!=+a?b!=+b:a==0?1/a==1/b:a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object RegExp]":return a.source==b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if(typeof a!="object"||typeof b!="object")return!1;var f=c.length;while(f--)if(c[f]==a)return d[f]==b;c.push(a),d.push(b);var g=0,h=!0;if(e=="[object Array]"){g=a.length,h=g==b.length;if(h)while(g--)if(!(h=F(a[g],b[g],c,d)))break}else{var i=a.constructor,j=b.constructor;if(i!==j&&!(y.isFunction(i)&&i instanceof i&&y.isFunction(j)&&j instanceof j))return!1;for(var l in a)if(y.has(a,l)){g++;if(!(h=y.has(b,l)&&F(a[l],b[l],c,d)))break}if(h){for(l in b)if(y.has(b,l)&&!(g--))break;h=!g}}return c.pop(),d.pop(),h};y.isEqual=function(a,b){return F(a,b,[],[])},y.isEmpty=function(a){if(a==null)return!0;if(y.isArray(a)||y.isString(a))return a.length===0;for(var b in a)if(y.has(a,b))return!1;return!0},y.isElement=function(a){return!!a&&a.nodeType===1},y.isArray=v||function(a){return k.call(a)=="[object Array]"},y.isObject=function(a){return a===Object(a)},z(["Arguments","Function","String","Number","Date","RegExp"],function(a){y["is"+a]=function(b){return k.call(b)=="[object "+a+"]"}}),y.isArguments(arguments)||(y.isArguments=function(a){return!!a&&!!y.has(a,"callee")}),typeof /./!="function"&&(y.isFunction=function(a){return typeof a=="function"}),y.isFinite=function(a){return y.isNumber(a)&&isFinite(a)},y.isNaN=function(a){return y.isNumber(a)&&a!=+a},y.isBoolean=function(a){return a===!0||a===!1||k.call(a)=="[object Boolean]"},y.isNull=function(a){return a===null},y.isUndefined=function(a){return a===void 0},y.has=function(a,b){return l.call(a,b)},y.noConflict=function(){return a._=b,this},y.identity=function(a){return a},y.times=function(a,b,c){for(var d=0;d":">",'"':""","'":"'","/":"/"}};G.unescape=y.invert(G.escape);var H={escape:new RegExp("["+y.keys(G.escape).join("")+"]","g"),unescape:new RegExp("("+y.keys(G.unescape).join("|")+")","g")};y.each(["escape","unescape"],function(a){y[a]=function(b){return b==null?"":(""+b).replace(H[a],function(b){return G[a][b]})}}),y.result=function(a,b){if(a==null)return null;var c=a[b];return y.isFunction(c)?c.call(a):c},y.mixin=function(a){z(y.functions(a),function(b){var c=y[b]=a[b];y.prototype[b]=function(){var a=[this._wrapped];return g.apply(a,arguments),M.call(this,c.apply(y,a))}})};var I=0;y.uniqueId=function(a){var b=I++;return a?a+b:b},y.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var J=/(.)^/,K={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"},L=/\\|'|\r|\n|\t|\u2028|\u2029/g;y.template=function(a,b,c){c=y.defaults({},c,y.templateSettings);var d=new RegExp([(c.escape||J).source,(c.interpolate||J).source,(c.evaluate||J).source].join("|")+"|$","g"),e=0,f="__p+='";a.replace(d,function(b,c,d,g,h){f+=a.slice(e,h).replace(L,function(a){return"\\"+K[a]}),f+=c?"'+\n((__t=("+c+"))==null?'':_.escape(__t))+\n'":d?"'+\n((__t=("+d+"))==null?'':__t)+\n'":g?"';\n"+g+"\n__p+='":"",e=h+b.length}),f+="';\n",c.variable||(f="with(obj||{}){\n"+f+"}\n"),f="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+f+"return __p;\n";try{var g=new Function(c.variable||"obj","_",f)}catch(h){throw h.source=f,h}if(b)return g(b,y);var i=function(a){return g.call(this,a,y)};return i.source="function("+(c.variable||"obj")+"){\n"+f+"}",i},y.chain=function(a){return y(a).chain()};var M=function(a){return this._chain?y(a).chain():a};y.mixin(y),z(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=d[a];y.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),(a=="shift"||a=="splice")&&c.length===0&&delete c[0],M.call(this,c)}}),z(["concat","join","slice"],function(a){var b=d[a];y.prototype[a]=function(){return M.call(this,b.apply(this._wrapped,arguments))}}),y.extend(y.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this) -------------------------------------------------------------------------------- /config.coffee: -------------------------------------------------------------------------------- 1 | # To set the environment variable on heroku use: 2 | # heroku config:add DBURL=mongodb://user:pass@host:port/database 3 | 4 | exports.dbUrl = process.env['MONGOHQ_URL'] # OR 'mongodb://user:pass@host:port/database' 5 | exports.blog_title = 'Guilherme Defreitas' 6 | exports.blog_description = 'Guilherme Defreitas Blog' 7 | exports.feed_url = 'http://guidefreitas.com/rss.xml' 8 | exports.site_url = 'http://guidefreitas.com' 9 | exports.site_image_url = 'http://guidefreitas.com/icon.png' 10 | exports.site_author = 'Guilherme Defreitas Juraszek' 11 | 12 | exports.author_email = 'guilherme.defreitas@gmail.com' 13 | exports.author_facebook_url = 'https://www.facebook.com/guidefreitas' 14 | exports.author_twitter_url = 'http://twitter.com/guidef' 15 | exports.author_linkedin_url = 'http://www.linkedin.com/pub/guilherme-defreitas-juraszek/24/331/2a3' 16 | exports.author_github_url = 'https://github.com/guidefreitas' 17 | exports.author_skype_url = 'callto://guilherme.defreitas' 18 | exports.author_bio_description = 'Bacharel em Sistemas de Informação, com especialização em Engenharia de Software e Mestrando em Computação Aplicada na Universidade do Estado de Santa Catarina (UDESC).' 19 | 20 | exports.crypto_key = 'e981739hdkdfasdfknasdfiu9823oa0sdf9023o4f' 21 | exports.locale = 'pt-br' 22 | exports.theme = 'default' -------------------------------------------------------------------------------- /config.coffee.sample: -------------------------------------------------------------------------------- 1 | # To set the environment variable on heroku use: 2 | # heroku config:add DBURL=mongodb://user:pass@host:port/database 3 | 4 | exports.dbUrl = process.env['DBURL'] # OR 'mongodb://user:pass@host:port/database' 5 | exports.blog_title = 'Sample Title' 6 | exports.blog_description = 'Sample Blog Description' 7 | exports.feed_url = 'http://blogurl.com/rss.xml' 8 | exports.site_url = 'http://blogurl.com' 9 | exports.site_image_url = 'http://blogurl.com/icon.png' 10 | exports.site_author = 'Blogs Author Name' 11 | 12 | exports.author_email = 'blog@authorname.com' 13 | exports.author_facebook_url = 'https://www.facebook.com/author' 14 | exports.author_twitter_url = 'http://twitter.com/author' 15 | exports.author_linkedin_url = 'http://www.linkedin.com/pub/author_url' 16 | exports.author_github_url = 'https://github.com/author' 17 | exports.author_skype_url = 'callto://skype_author_username' 18 | exports.author_bio_description = 'Blog owner biography/description' 19 | 20 | exports.crypto_key = 'e981739hdkdfasdfknasdfiu9823oa0sdf9023o4f' #change it in production 21 | exports.theme = 'default' -------------------------------------------------------------------------------- /handlers/about.coffee: -------------------------------------------------------------------------------- 1 | core = require('../blog_core') 2 | 3 | exports.index = (req,res) -> 4 | res.render('contact/index', { pageTitle: 'Contact' }) 5 | 6 | exports.new_message = (req,res) -> 7 | name = req.body.name 8 | email = req.body.email 9 | body = req.body.message 10 | message = new core.Message({ 11 | name: name, 12 | email: email, 13 | body: body, 14 | date: new Date() 15 | }) 16 | 17 | message.save((err) -> 18 | if(err) 19 | res.send(500, { error: '' }) 20 | else 21 | res.json(['OK']) 22 | ) -------------------------------------------------------------------------------- /handlers/admin/index.coffee: -------------------------------------------------------------------------------- 1 | exports.index = (req,res) -> 2 | res.render('admin/index', { pageTitle: 'Admin', layout: 'admin_layout'}) -------------------------------------------------------------------------------- /handlers/admin/media.coffee: -------------------------------------------------------------------------------- 1 | core = require('../../blog_core') 2 | 3 | exports.index = (req,res) -> 4 | res.render('admin/media/index', { pageTitle: 'Media' }) -------------------------------------------------------------------------------- /handlers/admin/messages.coffee: -------------------------------------------------------------------------------- 1 | core = require('../../blog_core') 2 | 3 | exports.index = (req, res) -> 4 | core.Message.find().exec((err, messages) -> 5 | if(err) 6 | res.render('500', { pageTitle: 'Oops' }) 7 | else 8 | res.render('admin/messages/index', layout: 'admin_layout', messages:messages) 9 | ) -------------------------------------------------------------------------------- /handlers/admin/posts.coffee: -------------------------------------------------------------------------------- 1 | core = require('../../blog_core') 2 | 3 | exports.index = (req,res) -> 4 | core.Post.find().sort('-date').exec((err,posts) -> 5 | if(!err) 6 | res.render('admin/posts/index', { pageTitle: 'Posts', layout: 'admin_layout', posts: posts }) 7 | else 8 | res.render('500', { pageTitle: 'Oops' }) 9 | ) 10 | 11 | exports.new_post = (req,res) -> 12 | post = new core.Post() 13 | res.render('posts/new', { pageTitle: 'New Post', layout: 'admin_layout', post:post }) 14 | 15 | exports.create_post = (req,res) -> 16 | title = req.body.post.title 17 | body = req.body.post.body 18 | tags = req.body.post.tags 19 | urlid = core.doDashes(title) 20 | 21 | core.Post.findOne({urlid : urlid}).exec((err, post) -> 22 | if(post) 23 | urlid = urlid + '-' + moment().format('DD-MM-YYYY-HH:mm') 24 | post = new core.Post({ 25 | title: title, 26 | body: body, 27 | urlid: urlid, 28 | tags : tags, 29 | date: new Date() 30 | }) 31 | 32 | post.save((err) -> 33 | if(err) 34 | res.render('posts/new', { pageTitle: 'New Post', layout: 'admin_layout', notice: 'Error while saving the post' }) 35 | else 36 | res.redirect('/admin/posts') 37 | ) 38 | ) 39 | 40 | exports.show_post = (req,res) -> 41 | core.Post.findOne({_id : core.ObjectId(req.params.id)}).exec((err,post) -> 42 | if(err) 43 | res.render('500', { pageTitle: 'Oops' }) 44 | if(!post) 45 | res.render('404', { pageTitle: 'Not Found :(' }) 46 | 47 | res.render('admin/posts/show', { pageTitle: 'New Post', layout: 'admin_layout', post:post }) 48 | ) 49 | 50 | exports.edit_post = (req,res) -> 51 | core.Post.findOne({_id : core.ObjectId(req.params.id)}).exec((err,post) -> 52 | if(err) 53 | res.render('500', { pageTitle: 'Oops' }) 54 | if(!post) 55 | res.render('404', { pageTitle: 'Not Found :(' }) 56 | 57 | res.render('posts/edit', { pageTitle: 'New Post', layout: 'admin_layout', post:post }) 58 | ) 59 | 60 | exports.update_post = (req, res) -> 61 | title = req.body.post.title 62 | body = req.body.post.body 63 | tags = req.body.post.tags 64 | urlid = core.doDashes(title) 65 | core.Post.findOne({_id:core.ObjectId(req.params.id)}).exec((err,post) -> 66 | if(err) 67 | res.render('500', { pageTitle: 'Oops' }) 68 | if(!post) 69 | res.render('404', { pageTitle: 'Not Found :(' }) 70 | 71 | post.title = title 72 | post.body = body 73 | post.tags = tags 74 | post.urlid = urlid 75 | post.save((err) -> 76 | if(err) 77 | res.render('posts/edit', { pageTitle: 'New Post', layout: 'admin_layout', post:post }) 78 | else 79 | res.redirect('/admin/posts') 80 | ) 81 | ) 82 | 83 | exports.remove_post = (req, res) -> 84 | core.Post.findOne({_id : core.ObjectId(req.params.id)}).exec((err,post) -> 85 | if(err) 86 | res.render('500', { pageTitle: 'Oops' }) 87 | if(!post) 88 | res.render('404', { pageTitle: 'Not Found :(' }) 89 | 90 | post.remove((err) -> 91 | if(!err) 92 | res.redirect('/admin/posts') 93 | ) 94 | ) -------------------------------------------------------------------------------- /handlers/admin/projects.coffee: -------------------------------------------------------------------------------- 1 | core = require('../../blog_core') 2 | 3 | exports.index = (req, res) -> 4 | core.Project.find().sort('name').exec((err,projects) -> 5 | if(!err) 6 | res.render('admin/projects/index', { pageTitle: 'Projects', layout: 'admin_layout', projects: projects}) 7 | else 8 | res.render('500', { pageTitle: 'Oops'}) 9 | ) 10 | 11 | exports.new_project = (req,res) -> 12 | project = new core.Project() 13 | res.render('admin/projects/new', { pageTitle: 'New Project', layout: 'admin_layout', project: project }) 14 | 15 | exports.create_project = (req, res) -> 16 | project = new core.Project({ 17 | name: req.body.project.name, 18 | description: req.body.project.description, 19 | project_image_url: req.body.project.project_image_url, 20 | download_link: req.body.project.download_link, 21 | website_link: req.body.project.website_link, 22 | ios_app_store_link: req.body.project.ios_app_store_link, 23 | mac_app_store_link: req.body.project.mac_app_store_link, 24 | marketplace_link: req.body.project.marketplace_link, 25 | google_play_link: req.body.project.google_play_link 26 | }) 27 | 28 | project.save((err) -> 29 | if(err) 30 | res.render('projects/new', { pageTitle: 'New Project', layout: 'admin_layout', notice: 'Error while saving the project' }) 31 | else 32 | res.redirect('/admin/projects') 33 | ) 34 | 35 | exports.show_project = (req,res) -> 36 | core.Project.findOne({_id : core.ObjectId(req.params.id)}).exec((err,project) -> 37 | if(err) 38 | res.render('500', { pageTitle: 'Oops' }) 39 | if(!project) 40 | res.render('404', { pageTitle: 'Not Found :(' }) 41 | res.render('admin/projects/show', { pageTitle: 'Project', project: project }) 42 | ) 43 | 44 | exports.edit_project = (req,res) -> 45 | core.Project.findOne({_id : core.ObjectId(req.params.id)}).exec((err,project) -> 46 | if(err) 47 | res.render('500', { pageTitle: 'Oops' }) 48 | if(!project) 49 | res.render('404', { pageTitle: 'Not Found :(' }) 50 | 51 | res.render('admin/projects/edit', { pageTitle: 'Edit Project', project: project }) 52 | ) 53 | 54 | exports.update_project = (req, res) -> 55 | core.Project.findOne({_id:core.ObjectId(req.params.id)}).exec((err,project) -> 56 | if(err) 57 | res.render('500', { pageTitle: 'Oops' }) 58 | if(!project) 59 | res.render('404', { pageTitle: 'Not Found :(' }) 60 | 61 | project.name = req.body.project.name 62 | project.description = req.body.project.description 63 | project.project_image_url = req.body.project.project_image_url 64 | project.download_link = req.body.project.download_link 65 | project.website_link = req.body.project.website_link 66 | project.ios_app_store_link = req.body.project.ios_app_store_link 67 | project.mac_app_store_link = req.body.project.mac_app_store_link 68 | project.marketplace_link = req.body.project.marketplace_link 69 | project.google_play_link = req.body.project.google_play_link 70 | 71 | project.save((err) -> 72 | if(err) 73 | res.render('admin/projects/edit', { pageTitle: 'Edit Project', project: project}) 74 | else 75 | res.redirect('admin/projects') 76 | ) 77 | ) 78 | 79 | exports.remove_project = (req, res) -> 80 | core.Project.findOne({_id : core.ObjectId(req.params.id)}).exec((err,project) -> 81 | if(err) 82 | res.render('500', { pageTitle: 'Oops' }) 83 | if(!project) 84 | res.render('404', { pageTitle: 'Not Found :(' }) 85 | 86 | project.remove((err) -> 87 | if(!err) 88 | res.redirect('/admin/projects') 89 | ) 90 | ) -------------------------------------------------------------------------------- /handlers/home.coffee: -------------------------------------------------------------------------------- 1 | async = require('async') 2 | core = require('../blog_core') 3 | _ = require('underscore')._ 4 | 5 | exports.index = (req, res) -> 6 | categories = [] 7 | posts = [] 8 | async.series({ 9 | categories: (callback) -> 10 | core.Post.find().select('tags').exec((err, tags) -> 11 | if tags 12 | filtered_tags = [] 13 | _.each(tags, (tag) -> 14 | if tag.tags != undefined 15 | _.each(tag.tags.split(','), (tag2) -> 16 | tag2 = core.TrimStr(tag2) 17 | if !_.contains(filtered_tags, tag2) 18 | filtered_tags.push(tag2) 19 | ) 20 | ) 21 | callback(null,filtered_tags.sort()) 22 | ) 23 | , 24 | posts: (callback) -> 25 | core.Post.find().sort('-date').limit(10).exec((err,posts) -> 26 | callback(null,posts) 27 | ) 28 | 29 | }, 30 | (err, results) -> 31 | if !err 32 | res.render('blog/index', { pageTitle: 'Guilherme Defreitas', posts: results.posts, layout: 'layout', categories: results.categories}) 33 | else 34 | res.render('blog/index', { pageTitle: 'OOOOps', posts: []}) 35 | ) 36 | -------------------------------------------------------------------------------- /handlers/posts.coffee: -------------------------------------------------------------------------------- 1 | core = require('../blog_core') 2 | 3 | exports.show_post = (req, res) -> 4 | urlid = req.params.id 5 | post = core.Post.findOne({urlid: urlid}).exec((err, post) -> 6 | if(!err) 7 | if(post) 8 | res.render('blog/show', { pageTitle: core.config.blog_title + " - " + post.title, post: post }) 9 | else 10 | res.render('404', { pageTitle: 'Not Found :(' }) 11 | else 12 | res.render('500', { pageTitle: 'Oops' }) 13 | ) -------------------------------------------------------------------------------- /handlers/projects.coffee: -------------------------------------------------------------------------------- 1 | core = require('../blog_core') 2 | 3 | exports.index = (req, res) -> 4 | core.Project.find().sort('name').exec((err,projects) -> 5 | if(!err) 6 | res.render('projects/index', { pageTitle: 'Projects', projects: projects}) 7 | else 8 | res.render('500', { pageTitle: 'Oops'}) 9 | ) -------------------------------------------------------------------------------- /handlers/routes.coffee: -------------------------------------------------------------------------------- 1 | home = require('./home') 2 | search = require('./routes/search') 3 | rss = require('./routes/rss') 4 | posts = require('./routes/posts') 5 | about = require('./routes/about') 6 | projects = require('./routes/projects') 7 | session = require('./routes/session') 8 | admin = require('./routes/admin') 9 | admin_media = require('./routes/admin/media') 10 | admin_projects = require('./routes/admin/projects') 11 | admin_posts = require('./routes/admin/posts') 12 | admin_messages = require('./routes/admin/messages') 13 | 14 | module.exports = (app) -> 15 | app.get('/', home.index) 16 | app.get('/search', search.index) 17 | app.get('/rss.xml', rss.index) 18 | app.get('/about', about.index) 19 | app.post('/about/message', about.new_message) 20 | app.get('/projects', projects.index) 21 | app.get('/login', session.login) 22 | app.get('/logout', session.logout) 23 | app.post('/login', session.create_session) 24 | app.get('/admin', isAdmin, admin.index) 25 | app.get('/admin/media', isAdmin, admin_media.index) 26 | app.get('/admin/projects', isAdmin, admin_projects.index) 27 | app.get('/admin/projects/new', isAdmin, admin_projects.new_project) 28 | app.post('/admin/projects', isAdmin, admin_projects.create_project) 29 | app.get('/admin/projects/:id', isAdmin, admin_projects.show_project) 30 | app.get('/admin/projects/edit/:id', isAdmin, admin_projects.edit_project) 31 | app.put('/admin/projects/:id', isAdmin, admin_projects.update_project) 32 | app.del('/admin/projects/:id', isAdmin, admin_projects.remove_project) 33 | app.get('/admin/posts', isAdmin, admin_posts.index) 34 | app.get('/admin/posts/new', isAdmin, admin_posts.new_post) 35 | app.post('/admin/posts', isAdmin, admin_posts.create_post) 36 | app.get('/admin/posts/:id', isAdmin, admin_posts.show_post) 37 | app.get('/admin/posts/edit/:id', isAdmin, admin_posts.edit_post) 38 | app.put('/admin/posts/:id', isAdmin, admin_posts.update_post) 39 | app.del('/admin/posts/:id', isAdmin, admin_posts.remove_post) 40 | app.get('/admin/messages', isAdmin, admin_messages.index) 41 | app.get('/:id', posts.show_post) 42 | 43 | app.get('*', (req, res) -> 44 | res.redirect('/') -------------------------------------------------------------------------------- /handlers/rss.coffee: -------------------------------------------------------------------------------- 1 | RSS = require('rss') 2 | core = require('../blog_core') 3 | 4 | exports.index = (req, res) -> 5 | feed = new RSS({ 6 | title: core.config.blog_title, 7 | description: core.config.blog_description, 8 | feed_url: core.config.feed_url, 9 | site_url: core.config.site_url, 10 | image_url: core.config.site_image_url, 11 | author: core.config.site_author 12 | }) 13 | core.Post.find().exec((err,posts) -> 14 | if(err) 15 | res.render('500', { pageTitle: 'Oops' }) 16 | else 17 | posts.map (post) -> 18 | feed.item({ 19 | title: post.title, 20 | url: core.config.site_url + '/' + post.urlid 21 | }) 22 | res.contentType("rss") 23 | res.send(feed.xml()); 24 | ) 25 | -------------------------------------------------------------------------------- /handlers/search.coffee: -------------------------------------------------------------------------------- 1 | core = require('../blog_core') 2 | 3 | exports.index = (req, res) -> 4 | 5 | tag = req.query["tag"] 6 | if(tag) 7 | query = new RegExp(tag, 'i') 8 | core.Post.where('tags', query).sort('-date').exec((err,posts) -> 9 | if(err) 10 | res.render('500', { pageTitle: 'Oops' }) 11 | else 12 | res.render('blog/search', { pageTitle: 'Busca', posts: posts }) 13 | ) 14 | else 15 | query = new RegExp(req.query["q"], 'i') 16 | 17 | core.Post.find({ $or : [ { title : query } , { body : query } ] }).sort('-date').exec((err, posts) -> 18 | if(err) 19 | res.render('500', { pageTitle: 'Oops' }) 20 | else 21 | res.render('blog/search', { pageTitle: 'Busca', posts: posts }) 22 | ) -------------------------------------------------------------------------------- /handlers/session.coffee: -------------------------------------------------------------------------------- 1 | core = require('../blog_core') 2 | crypto = require('crypto') 3 | 4 | exports.login = (req,res) -> 5 | req.session.userid = null 6 | res.render('sessions/new', { pageTitle: 'Login', notice: '' }) 7 | 8 | exports.logout = (req,res) -> 9 | req.session.userid = null 10 | res.redirect('/'); 11 | 12 | exports.create_session = (req,res) -> 13 | core.User.findOne({username : req.body.user.username}, (err, user) -> 14 | if !err and user 15 | pass_crypted = crypto.createHmac("md5", core.config.crypto_key).update(req.body.user.password).digest("hex") 16 | if user.password == pass_crypted 17 | req.session.userid = user._id 18 | res.redirect('/admin') 19 | else 20 | res.render('sessions/new', { pageTitle: 'Admin', notice: 'Invalir user or password' }) 21 | else 22 | res.render('sessions/new', { pageTitle: 'Admin', notice: 'User not found' }) 23 | ) -------------------------------------------------------------------------------- /locales/en.js: -------------------------------------------------------------------------------- 1 | { 2 | "Old Posts": "Old Posts" 3 | } -------------------------------------------------------------------------------- /locales/pt-br.js: -------------------------------------------------------------------------------- 1 | { 2 | "Old Posts": "Posts Antigos", 3 | "Blog": "Blog", 4 | "Projects": "Projetos", 5 | "About": "Sobre", 6 | "User": "Usuário", 7 | "Password": "Senha" 8 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "guilherme-blog", 3 | "preferGlobal": "true", 4 | "version": "0.2.0", 5 | "author": "Guilherme Defreitas Juraszek ", 6 | "description": "Simple blog system", 7 | 8 | "main": "./app", 9 | 10 | "dependencies" : { 11 | "jade" : ">=0.26.3", 12 | "express" : ">=2.5.x", 13 | "connect-assets" : ">=2.2.1", 14 | "less" : ">=1.4.0", 15 | "coffee-script" : ">=1.3.3", 16 | "formidable" : "*", 17 | "zlib" : "*", 18 | "mongodb" : ">=1.0.2", 19 | "mongojs" : ">= 0.4.3", 20 | "mongoose" : "*", 21 | "marked" : "*", 22 | "moment" : "*", 23 | "rss" : "*", 24 | "gzippo" : "*", 25 | "crypto" : "*", 26 | "underscore" : "*", 27 | "i18n" : "*", 28 | "async" : "*", 29 | "mocha" : "*" 30 | }, 31 | 32 | "bundleDependencies": [ 33 | ], 34 | 35 | "license": "MIT", 36 | "engines": { 37 | "node": ">=0.10.20", 38 | "npm" : ">=1.3.4" 39 | } 40 | } -------------------------------------------------------------------------------- /public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/.DS_Store -------------------------------------------------------------------------------- /public/demo/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/demo/.DS_Store -------------------------------------------------------------------------------- /public/demo/ios/ios6_file_api.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/.DS_Store -------------------------------------------------------------------------------- /public/img/12_col.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/12_col.gif -------------------------------------------------------------------------------- /public/img/16_col.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/16_col.gif -------------------------------------------------------------------------------- /public/img/24_col.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/24_col.gif -------------------------------------------------------------------------------- /public/img/about/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/about/.DS_Store -------------------------------------------------------------------------------- /public/img/about/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/about/about.png -------------------------------------------------------------------------------- /public/img/about/gui copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/about/gui copy.png -------------------------------------------------------------------------------- /public/img/about/gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/about/gui.png -------------------------------------------------------------------------------- /public/img/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/back.png -------------------------------------------------------------------------------- /public/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/bg.jpg -------------------------------------------------------------------------------- /public/img/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/bg2.jpg -------------------------------------------------------------------------------- /public/img/bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/bg3.jpg -------------------------------------------------------------------------------- /public/img/bgptr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/bgptr.jpg -------------------------------------------------------------------------------- /public/img/bgptr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/bgptr2.png -------------------------------------------------------------------------------- /public/img/bgptr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/bgptr3.png -------------------------------------------------------------------------------- /public/img/icons/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/icons/facebook.png -------------------------------------------------------------------------------- /public/img/icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/icons/github.png -------------------------------------------------------------------------------- /public/img/icons/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/icons/linkedin.png -------------------------------------------------------------------------------- /public/img/icons/skype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/icons/skype.png -------------------------------------------------------------------------------- /public/img/icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/icons/twitter.png -------------------------------------------------------------------------------- /public/img/posts/client_side_mvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/posts/client_side_mvc.png -------------------------------------------------------------------------------- /public/img/posts/hibrid_mode_mvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/posts/hibrid_mode_mvc.png -------------------------------------------------------------------------------- /public/img/posts/server_side_mvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/posts/server_side_mvc.png -------------------------------------------------------------------------------- /public/img/projects/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/projects/.DS_Store -------------------------------------------------------------------------------- /public/img/projects/gooparties/gooparties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/projects/gooparties/gooparties.png -------------------------------------------------------------------------------- /public/img/projects/magazine_luiza/magazine_luiza_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/projects/magazine_luiza/magazine_luiza_home.png -------------------------------------------------------------------------------- /public/img/projects/quale/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/projects/quale/.DS_Store -------------------------------------------------------------------------------- /public/img/projects/quale/quale_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/projects/quale/quale_home.png -------------------------------------------------------------------------------- /public/img/stores/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/stores/.DS_Store -------------------------------------------------------------------------------- /public/img/stores/app_store_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/stores/app_store_normal.png -------------------------------------------------------------------------------- /public/img/stores/google_play_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/stores/google_play_normal.png -------------------------------------------------------------------------------- /public/img/stores/marketplace_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/stores/marketplace_normal.png -------------------------------------------------------------------------------- /public/img/tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/public/img/tag.png -------------------------------------------------------------------------------- /routes.coffee: -------------------------------------------------------------------------------- 1 | core = require('./blog_core') 2 | 3 | isAuthenticated = (req, res, next) -> 4 | if !req.session.userid 5 | res.redirect('/login') 6 | return false 7 | return true 8 | 9 | isAdmin = (req, res, next) -> 10 | if isAuthenticated(req,res,next) 11 | core.User.findOne({_id : core.ObjectId(req.session.userid)}, (err, user) -> 12 | if !err and user 13 | if user.admin 14 | next() 15 | else 16 | next(new Error('Unauthorized')) 17 | ) 18 | 19 | 20 | home = require('./handlers/home') 21 | search = require('./handlers/search') 22 | rss = require('./handlers/rss') 23 | posts = require('./handlers/posts') 24 | about = require('./handlers/about') 25 | projects = require('./handlers/projects') 26 | session = require('./handlers/session') 27 | admin = require('./handlers/admin') 28 | admin_media = require('./handlers/admin/media') 29 | admin_projects = require('./handlers/admin/projects') 30 | admin_posts = require('./handlers/admin/posts') 31 | admin_messages = require('./handlers/admin/messages') 32 | 33 | module.exports = (app) -> 34 | app.get('/', home.index) 35 | app.get('/search', search.index) 36 | app.get('/rss.xml', rss.index) 37 | app.get('/about', about.index) 38 | app.post('/about/message', about.new_message) 39 | app.get('/projects', projects.index) 40 | app.get('/login', session.login) 41 | app.get('/logout', session.logout) 42 | app.post('/login', session.create_session) 43 | app.get('/admin', isAdmin, admin.index) 44 | app.get('/admin/media', isAdmin, admin_media.index) 45 | app.get('/admin/projects', isAdmin, admin_projects.index) 46 | app.get('/admin/projects/new', isAdmin, admin_projects.new_project) 47 | app.post('/admin/projects', isAdmin, admin_projects.create_project) 48 | app.get('/admin/projects/:id', isAdmin, admin_projects.show_project) 49 | app.get('/admin/projects/edit/:id', isAdmin, admin_projects.edit_project) 50 | app.put('/admin/projects/:id', isAdmin, admin_projects.update_project) 51 | app.del('/admin/projects/:id', isAdmin, admin_projects.remove_project) 52 | app.get('/admin/posts', isAdmin, admin_posts.index) 53 | app.get('/admin/posts/new', isAdmin, admin_posts.new_post) 54 | app.post('/admin/posts', isAdmin, admin_posts.create_post) 55 | app.get('/admin/posts/:id', isAdmin, admin_posts.show_post) 56 | app.get('/admin/posts/edit/:id', isAdmin, admin_posts.edit_post) 57 | app.put('/admin/posts/:id', isAdmin, admin_posts.update_post) 58 | app.del('/admin/posts/:id', isAdmin, admin_posts.remove_post) 59 | app.get('/admin/messages', isAdmin, admin_messages.index) 60 | app.get('/:id', posts.show_post) 61 | 62 | app.get('*', (req, res) -> 63 | res.redirect('/') 64 | ) -------------------------------------------------------------------------------- /run.js: -------------------------------------------------------------------------------- 1 | require('coffee-script'); 2 | require('./app'); -------------------------------------------------------------------------------- /test/test.coffee: -------------------------------------------------------------------------------- 1 | core = require('../blog_core') 2 | assert = require("assert") 3 | core.config.dbUrl = 'mongodb://localhost:27017/blog_test' 4 | describe('User', () -> 5 | user = new core.User({ 6 | username: 'userteste', 7 | password: 'userteste', 8 | email: 'teste@teste.com', 9 | admin: false 10 | }) 11 | 12 | describe('#save()', () -> 13 | it('should not have errors', () -> 14 | user.save((err) -> 15 | err.should.equal null 16 | ) 17 | ) 18 | ) 19 | 20 | describe('#findOne()', () -> 21 | it('should have same username and email', () -> 22 | core.User.findOne({username : 'userteste'}, (err, user2) -> 23 | user2.email.should.equal user1.email 24 | user2.username.should.equal 'teste' 25 | ) 26 | ) 27 | ) 28 | 29 | describe('#find()', () -> 30 | it('should have size > 0', () -> 31 | core.User.find().exec((err,users) -> 32 | users.should.have.length(1) 33 | ) 34 | ) 35 | ) 36 | ) -------------------------------------------------------------------------------- /themes/default/assets/css/font-awesome.min.less: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.1');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.1') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.1') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.1') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} 2 | .fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%} 3 | .fa-2x{font-size:2em} 4 | .fa-3x{font-size:3em} 5 | .fa-4x{font-size:4em} 6 | .fa-5x{font-size:5em} 7 | .fa-fw{width:1.2857142857142858em;text-align:center} 8 | .fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative} 9 | .fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em} 10 | .fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em} 11 | .pull-right{float:right} 12 | .pull-left{float:left} 13 | .fa.pull-left{margin-right:.3em} 14 | .fa.pull-right{margin-left:.3em} 15 | .fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear} 16 | @-moz-keyframes spin{0%{-moz-transform:rotate(0deg)} 100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)} 100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)} 100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)} 100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)} 100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)} 17 | .fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)} 18 | .fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)} 19 | .fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)} 20 | .fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)} 21 | .fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle} 22 | .fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center} 23 | .fa-stack-1x{line-height:inherit} 24 | .fa-stack-2x{font-size:2em} 25 | .fa-inverse{color:#fff} 26 | .fa-glass:before{content:"\f000"} 27 | .fa-music:before{content:"\f001"} 28 | .fa-search:before{content:"\f002"} 29 | .fa-envelope-o:before{content:"\f003"} 30 | .fa-heart:before{content:"\f004"} 31 | .fa-star:before{content:"\f005"} 32 | .fa-star-o:before{content:"\f006"} 33 | .fa-user:before{content:"\f007"} 34 | .fa-film:before{content:"\f008"} 35 | .fa-th-large:before{content:"\f009"} 36 | .fa-th:before{content:"\f00a"} 37 | .fa-th-list:before{content:"\f00b"} 38 | .fa-check:before{content:"\f00c"} 39 | .fa-times:before{content:"\f00d"} 40 | .fa-search-plus:before{content:"\f00e"} 41 | .fa-search-minus:before{content:"\f010"} 42 | .fa-power-off:before{content:"\f011"} 43 | .fa-signal:before{content:"\f012"} 44 | .fa-gear:before,.fa-cog:before{content:"\f013"} 45 | .fa-trash-o:before{content:"\f014"} 46 | .fa-home:before{content:"\f015"} 47 | .fa-file-o:before{content:"\f016"} 48 | .fa-clock-o:before{content:"\f017"} 49 | .fa-road:before{content:"\f018"} 50 | .fa-download:before{content:"\f019"} 51 | .fa-arrow-circle-o-down:before{content:"\f01a"} 52 | .fa-arrow-circle-o-up:before{content:"\f01b"} 53 | .fa-inbox:before{content:"\f01c"} 54 | .fa-play-circle-o:before{content:"\f01d"} 55 | .fa-rotate-right:before,.fa-repeat:before{content:"\f01e"} 56 | .fa-refresh:before{content:"\f021"} 57 | .fa-list-alt:before{content:"\f022"} 58 | .fa-lock:before{content:"\f023"} 59 | .fa-flag:before{content:"\f024"} 60 | .fa-headphones:before{content:"\f025"} 61 | .fa-volume-off:before{content:"\f026"} 62 | .fa-volume-down:before{content:"\f027"} 63 | .fa-volume-up:before{content:"\f028"} 64 | .fa-qrcode:before{content:"\f029"} 65 | .fa-barcode:before{content:"\f02a"} 66 | .fa-tag:before{content:"\f02b"} 67 | .fa-tags:before{content:"\f02c"} 68 | .fa-book:before{content:"\f02d"} 69 | .fa-bookmark:before{content:"\f02e"} 70 | .fa-print:before{content:"\f02f"} 71 | .fa-camera:before{content:"\f030"} 72 | .fa-font:before{content:"\f031"} 73 | .fa-bold:before{content:"\f032"} 74 | .fa-italic:before{content:"\f033"} 75 | .fa-text-height:before{content:"\f034"} 76 | .fa-text-width:before{content:"\f035"} 77 | .fa-align-left:before{content:"\f036"} 78 | .fa-align-center:before{content:"\f037"} 79 | .fa-align-right:before{content:"\f038"} 80 | .fa-align-justify:before{content:"\f039"} 81 | .fa-list:before{content:"\f03a"} 82 | .fa-dedent:before,.fa-outdent:before{content:"\f03b"} 83 | .fa-indent:before{content:"\f03c"} 84 | .fa-video-camera:before{content:"\f03d"} 85 | .fa-picture-o:before{content:"\f03e"} 86 | .fa-pencil:before{content:"\f040"} 87 | .fa-map-marker:before{content:"\f041"} 88 | .fa-adjust:before{content:"\f042"} 89 | .fa-tint:before{content:"\f043"} 90 | .fa-edit:before,.fa-pencil-square-o:before{content:"\f044"} 91 | .fa-share-square-o:before{content:"\f045"} 92 | .fa-check-square-o:before{content:"\f046"} 93 | .fa-move:before{content:"\f047"} 94 | .fa-step-backward:before{content:"\f048"} 95 | .fa-fast-backward:before{content:"\f049"} 96 | .fa-backward:before{content:"\f04a"} 97 | .fa-play:before{content:"\f04b"} 98 | .fa-pause:before{content:"\f04c"} 99 | .fa-stop:before{content:"\f04d"} 100 | .fa-forward:before{content:"\f04e"} 101 | .fa-fast-forward:before{content:"\f050"} 102 | .fa-step-forward:before{content:"\f051"} 103 | .fa-eject:before{content:"\f052"} 104 | .fa-chevron-left:before{content:"\f053"} 105 | .fa-chevron-right:before{content:"\f054"} 106 | .fa-plus-circle:before{content:"\f055"} 107 | .fa-minus-circle:before{content:"\f056"} 108 | .fa-times-circle:before{content:"\f057"} 109 | .fa-check-circle:before{content:"\f058"} 110 | .fa-question-circle:before{content:"\f059"} 111 | .fa-info-circle:before{content:"\f05a"} 112 | .fa-crosshairs:before{content:"\f05b"} 113 | .fa-times-circle-o:before{content:"\f05c"} 114 | .fa-check-circle-o:before{content:"\f05d"} 115 | .fa-ban:before{content:"\f05e"} 116 | .fa-arrow-left:before{content:"\f060"} 117 | .fa-arrow-right:before{content:"\f061"} 118 | .fa-arrow-up:before{content:"\f062"} 119 | .fa-arrow-down:before{content:"\f063"} 120 | .fa-mail-forward:before,.fa-share:before{content:"\f064"} 121 | .fa-resize-full:before{content:"\f065"} 122 | .fa-resize-small:before{content:"\f066"} 123 | .fa-plus:before{content:"\f067"} 124 | .fa-minus:before{content:"\f068"} 125 | .fa-asterisk:before{content:"\f069"} 126 | .fa-exclamation-circle:before{content:"\f06a"} 127 | .fa-gift:before{content:"\f06b"} 128 | .fa-leaf:before{content:"\f06c"} 129 | .fa-fire:before{content:"\f06d"} 130 | .fa-eye:before{content:"\f06e"} 131 | .fa-eye-slash:before{content:"\f070"} 132 | .fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"} 133 | .fa-plane:before{content:"\f072"} 134 | .fa-calendar:before{content:"\f073"} 135 | .fa-random:before{content:"\f074"} 136 | .fa-comment:before{content:"\f075"} 137 | .fa-magnet:before{content:"\f076"} 138 | .fa-chevron-up:before{content:"\f077"} 139 | .fa-chevron-down:before{content:"\f078"} 140 | .fa-retweet:before{content:"\f079"} 141 | .fa-shopping-cart:before{content:"\f07a"} 142 | .fa-folder:before{content:"\f07b"} 143 | .fa-folder-open:before{content:"\f07c"} 144 | .fa-resize-vertical:before{content:"\f07d"} 145 | .fa-resize-horizontal:before{content:"\f07e"} 146 | .fa-bar-chart-o:before{content:"\f080"} 147 | .fa-twitter-square:before{content:"\f081"} 148 | .fa-facebook-square:before{content:"\f082"} 149 | .fa-camera-retro:before{content:"\f083"} 150 | .fa-key:before{content:"\f084"} 151 | .fa-gears:before,.fa-cogs:before{content:"\f085"} 152 | .fa-comments:before{content:"\f086"} 153 | .fa-thumbs-o-up:before{content:"\f087"} 154 | .fa-thumbs-o-down:before{content:"\f088"} 155 | .fa-star-half:before{content:"\f089"} 156 | .fa-heart-o:before{content:"\f08a"} 157 | .fa-sign-out:before{content:"\f08b"} 158 | .fa-linkedin-square:before{content:"\f08c"} 159 | .fa-thumb-tack:before{content:"\f08d"} 160 | .fa-external-link:before{content:"\f08e"} 161 | .fa-sign-in:before{content:"\f090"} 162 | .fa-trophy:before{content:"\f091"} 163 | .fa-github-square:before{content:"\f092"} 164 | .fa-upload:before{content:"\f093"} 165 | .fa-lemon-o:before{content:"\f094"} 166 | .fa-phone:before{content:"\f095"} 167 | .fa-square-o:before{content:"\f096"} 168 | .fa-bookmark-o:before{content:"\f097"} 169 | .fa-phone-square:before{content:"\f098"} 170 | .fa-twitter:before{content:"\f099"} 171 | .fa-facebook:before{content:"\f09a"} 172 | .fa-github:before{content:"\f09b"} 173 | .fa-unlock:before{content:"\f09c"} 174 | .fa-credit-card:before{content:"\f09d"} 175 | .fa-rss:before{content:"\f09e"} 176 | .fa-hdd-o:before{content:"\f0a0"} 177 | .fa-bullhorn:before{content:"\f0a1"} 178 | .fa-bell:before{content:"\f0f3"} 179 | .fa-certificate:before{content:"\f0a3"} 180 | .fa-hand-o-right:before{content:"\f0a4"} 181 | .fa-hand-o-left:before{content:"\f0a5"} 182 | .fa-hand-o-up:before{content:"\f0a6"} 183 | .fa-hand-o-down:before{content:"\f0a7"} 184 | .fa-arrow-circle-left:before{content:"\f0a8"} 185 | .fa-arrow-circle-right:before{content:"\f0a9"} 186 | .fa-arrow-circle-up:before{content:"\f0aa"} 187 | .fa-arrow-circle-down:before{content:"\f0ab"} 188 | .fa-globe:before{content:"\f0ac"} 189 | .fa-wrench:before{content:"\f0ad"} 190 | .fa-tasks:before{content:"\f0ae"} 191 | .fa-filter:before{content:"\f0b0"} 192 | .fa-briefcase:before{content:"\f0b1"} 193 | .fa-fullscreen:before{content:"\f0b2"} 194 | .fa-group:before{content:"\f0c0"} 195 | .fa-chain:before,.fa-link:before{content:"\f0c1"} 196 | .fa-cloud:before{content:"\f0c2"} 197 | .fa-flask:before{content:"\f0c3"} 198 | .fa-cut:before,.fa-scissors:before{content:"\f0c4"} 199 | .fa-copy:before,.fa-files-o:before{content:"\f0c5"} 200 | .fa-paperclip:before{content:"\f0c6"} 201 | .fa-save:before,.fa-floppy-o:before{content:"\f0c7"} 202 | .fa-square:before{content:"\f0c8"} 203 | .fa-reorder:before{content:"\f0c9"} 204 | .fa-list-ul:before{content:"\f0ca"} 205 | .fa-list-ol:before{content:"\f0cb"} 206 | .fa-strikethrough:before{content:"\f0cc"} 207 | .fa-underline:before{content:"\f0cd"} 208 | .fa-table:before{content:"\f0ce"} 209 | .fa-magic:before{content:"\f0d0"} 210 | .fa-truck:before{content:"\f0d1"} 211 | .fa-pinterest:before{content:"\f0d2"} 212 | .fa-pinterest-square:before{content:"\f0d3"} 213 | .fa-google-plus-square:before{content:"\f0d4"} 214 | .fa-google-plus:before{content:"\f0d5"} 215 | .fa-money:before{content:"\f0d6"} 216 | .fa-caret-down:before{content:"\f0d7"} 217 | .fa-caret-up:before{content:"\f0d8"} 218 | .fa-caret-left:before{content:"\f0d9"} 219 | .fa-caret-right:before{content:"\f0da"} 220 | .fa-columns:before{content:"\f0db"} 221 | .fa-unsorted:before,.fa-sort:before{content:"\f0dc"} 222 | .fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"} 223 | .fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"} 224 | .fa-envelope:before{content:"\f0e0"} 225 | .fa-linkedin:before{content:"\f0e1"} 226 | .fa-rotate-left:before,.fa-undo:before{content:"\f0e2"} 227 | .fa-legal:before,.fa-gavel:before{content:"\f0e3"} 228 | .fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"} 229 | .fa-comment-o:before{content:"\f0e5"} 230 | .fa-comments-o:before{content:"\f0e6"} 231 | .fa-flash:before,.fa-bolt:before{content:"\f0e7"} 232 | .fa-sitemap:before{content:"\f0e8"} 233 | .fa-umbrella:before{content:"\f0e9"} 234 | .fa-paste:before,.fa-clipboard:before{content:"\f0ea"} 235 | .fa-lightbulb-o:before{content:"\f0eb"} 236 | .fa-exchange:before{content:"\f0ec"} 237 | .fa-cloud-download:before{content:"\f0ed"} 238 | .fa-cloud-upload:before{content:"\f0ee"} 239 | .fa-user-md:before{content:"\f0f0"} 240 | .fa-stethoscope:before{content:"\f0f1"} 241 | .fa-suitcase:before{content:"\f0f2"} 242 | .fa-bell-o:before{content:"\f0a2"} 243 | .fa-coffee:before{content:"\f0f4"} 244 | .fa-cutlery:before{content:"\f0f5"} 245 | .fa-file-text-o:before{content:"\f0f6"} 246 | .fa-building:before{content:"\f0f7"} 247 | .fa-hospital:before{content:"\f0f8"} 248 | .fa-ambulance:before{content:"\f0f9"} 249 | .fa-medkit:before{content:"\f0fa"} 250 | .fa-fighter-jet:before{content:"\f0fb"} 251 | .fa-beer:before{content:"\f0fc"} 252 | .fa-h-square:before{content:"\f0fd"} 253 | .fa-plus-square:before{content:"\f0fe"} 254 | .fa-angle-double-left:before{content:"\f100"} 255 | .fa-angle-double-right:before{content:"\f101"} 256 | .fa-angle-double-up:before{content:"\f102"} 257 | .fa-angle-double-down:before{content:"\f103"} 258 | .fa-angle-left:before{content:"\f104"} 259 | .fa-angle-right:before{content:"\f105"} 260 | .fa-angle-up:before{content:"\f106"} 261 | .fa-angle-down:before{content:"\f107"} 262 | .fa-desktop:before{content:"\f108"} 263 | .fa-laptop:before{content:"\f109"} 264 | .fa-tablet:before{content:"\f10a"} 265 | .fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"} 266 | .fa-circle-o:before{content:"\f10c"} 267 | .fa-quote-left:before{content:"\f10d"} 268 | .fa-quote-right:before{content:"\f10e"} 269 | .fa-spinner:before{content:"\f110"} 270 | .fa-circle:before{content:"\f111"} 271 | .fa-mail-reply:before,.fa-reply:before{content:"\f112"} 272 | .fa-github-alt:before{content:"\f113"} 273 | .fa-folder-o:before{content:"\f114"} 274 | .fa-folder-open-o:before{content:"\f115"} 275 | .fa-expand-o:before{content:"\f116"} 276 | .fa-collapse-o:before{content:"\f117"} 277 | .fa-smile-o:before{content:"\f118"} 278 | .fa-frown-o:before{content:"\f119"} 279 | .fa-meh-o:before{content:"\f11a"} 280 | .fa-gamepad:before{content:"\f11b"} 281 | .fa-keyboard-o:before{content:"\f11c"} 282 | .fa-flag-o:before{content:"\f11d"} 283 | .fa-flag-checkered:before{content:"\f11e"} 284 | .fa-terminal:before{content:"\f120"} 285 | .fa-code:before{content:"\f121"} 286 | .fa-reply-all:before{content:"\f122"} 287 | .fa-mail-reply-all:before{content:"\f122"} 288 | .fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"} 289 | .fa-location-arrow:before{content:"\f124"} 290 | .fa-crop:before{content:"\f125"} 291 | .fa-code-fork:before{content:"\f126"} 292 | .fa-unlink:before,.fa-chain-broken:before{content:"\f127"} 293 | .fa-question:before{content:"\f128"} 294 | .fa-info:before{content:"\f129"} 295 | .fa-exclamation:before{content:"\f12a"} 296 | .fa-superscript:before{content:"\f12b"} 297 | .fa-subscript:before{content:"\f12c"} 298 | .fa-eraser:before{content:"\f12d"} 299 | .fa-puzzle-piece:before{content:"\f12e"} 300 | .fa-microphone:before{content:"\f130"} 301 | .fa-microphone-slash:before{content:"\f131"} 302 | .fa-shield:before{content:"\f132"} 303 | .fa-calendar-o:before{content:"\f133"} 304 | .fa-fire-extinguisher:before{content:"\f134"} 305 | .fa-rocket:before{content:"\f135"} 306 | .fa-maxcdn:before{content:"\f136"} 307 | .fa-chevron-circle-left:before{content:"\f137"} 308 | .fa-chevron-circle-right:before{content:"\f138"} 309 | .fa-chevron-circle-up:before{content:"\f139"} 310 | .fa-chevron-circle-down:before{content:"\f13a"} 311 | .fa-html5:before{content:"\f13b"} 312 | .fa-css3:before{content:"\f13c"} 313 | .fa-anchor:before{content:"\f13d"} 314 | .fa-unlock-o:before{content:"\f13e"} 315 | .fa-bullseye:before{content:"\f140"} 316 | .fa-ellipsis-horizontal:before{content:"\f141"} 317 | .fa-ellipsis-vertical:before{content:"\f142"} 318 | .fa-rss-square:before{content:"\f143"} 319 | .fa-play-circle:before{content:"\f144"} 320 | .fa-ticket:before{content:"\f145"} 321 | .fa-minus-square:before{content:"\f146"} 322 | .fa-minus-square-o:before{content:"\f147"} 323 | .fa-level-up:before{content:"\f148"} 324 | .fa-level-down:before{content:"\f149"} 325 | .fa-check-square:before{content:"\f14a"} 326 | .fa-pencil-square:before{content:"\f14b"} 327 | .fa-external-link-square:before{content:"\f14c"} 328 | .fa-share-square:before{content:"\f14d"} 329 | .fa-compass:before{content:"\f14e"} 330 | .fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"} 331 | .fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"} 332 | .fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"} 333 | .fa-euro:before,.fa-eur:before{content:"\f153"} 334 | .fa-gbp:before{content:"\f154"} 335 | .fa-dollar:before,.fa-usd:before{content:"\f155"} 336 | .fa-rupee:before,.fa-inr:before{content:"\f156"} 337 | .fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"} 338 | .fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"} 339 | .fa-won:before,.fa-krw:before{content:"\f159"} 340 | .fa-bitcoin:before,.fa-btc:before{content:"\f15a"} 341 | .fa-file:before{content:"\f15b"} 342 | .fa-file-text:before{content:"\f15c"} 343 | .fa-sort-alpha-asc:before{content:"\f15d"} 344 | .fa-sort-alpha-desc:before{content:"\f15e"} 345 | .fa-sort-amount-asc:before{content:"\f160"} 346 | .fa-sort-amount-desc:before{content:"\f161"} 347 | .fa-sort-numeric-asc:before{content:"\f162"} 348 | .fa-sort-numeric-desc:before{content:"\f163"} 349 | .fa-thumbs-up:before{content:"\f164"} 350 | .fa-thumbs-down:before{content:"\f165"} 351 | .fa-youtube-square:before{content:"\f166"} 352 | .fa-youtube:before{content:"\f167"} 353 | .fa-xing:before{content:"\f168"} 354 | .fa-xing-square:before{content:"\f169"} 355 | .fa-youtube-play:before{content:"\f16a"} 356 | .fa-dropbox:before{content:"\f16b"} 357 | .fa-stack-overflow:before{content:"\f16c"} 358 | .fa-instagram:before{content:"\f16d"} 359 | .fa-flickr:before{content:"\f16e"} 360 | .fa-adn:before{content:"\f170"} 361 | .fa-bitbucket:before{content:"\f171"} 362 | .fa-bitbucket-square:before{content:"\f172"} 363 | .fa-tumblr:before{content:"\f173"} 364 | .fa-tumblr-square:before{content:"\f174"} 365 | .fa-long-arrow-down:before{content:"\f175"} 366 | .fa-long-arrow-up:before{content:"\f176"} 367 | .fa-long-arrow-left:before{content:"\f177"} 368 | .fa-long-arrow-right:before{content:"\f178"} 369 | .fa-apple:before{content:"\f179"} 370 | .fa-windows:before{content:"\f17a"} 371 | .fa-android:before{content:"\f17b"} 372 | .fa-linux:before{content:"\f17c"} 373 | .fa-dribbble:before{content:"\f17d"} 374 | .fa-skype:before{content:"\f17e"} 375 | .fa-foursquare:before{content:"\f180"} 376 | .fa-trello:before{content:"\f181"} 377 | .fa-female:before{content:"\f182"} 378 | .fa-male:before{content:"\f183"} 379 | .fa-gittip:before{content:"\f184"} 380 | .fa-sun-o:before{content:"\f185"} 381 | .fa-moon-o:before{content:"\f186"} 382 | .fa-archive:before{content:"\f187"} 383 | .fa-bug:before{content:"\f188"} 384 | .fa-vk:before{content:"\f189"} 385 | .fa-weibo:before{content:"\f18a"} 386 | .fa-renren:before{content:"\f18b"} 387 | .fa-pagelines:before{content:"\f18c"} 388 | .fa-stack-exchange:before{content:"\f18d"} 389 | .fa-arrow-circle-o-right:before{content:"\f18e"} 390 | .fa-arrow-circle-o-left:before{content:"\f190"} 391 | .fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"} 392 | .fa-dot-circle-o:before{content:"\f192"} 393 | .fa-wheelchair:before{content:"\f193"} 394 | .fa-vimeo-square:before{content:"\f194"} 395 | .fa-turkish-lira:before,.fa-try:before{content:"\f195"} 396 | -------------------------------------------------------------------------------- /themes/default/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/themes/default/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /themes/default/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/themes/default/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /themes/default/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/themes/default/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /themes/default/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guidefreitas/nodejs_blog/5981b3b94ca58e2ffe3616d53346a545d0314451/themes/default/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /themes/default/assets/js/app.coffee: -------------------------------------------------------------------------------- 1 | class CanvasImage 2 | constructor: (element, image) -> 3 | this.image = image 4 | this.element = element 5 | this.element.width = this.image.width 6 | this.element.height = this.image.height 7 | this.context = this.element.getContext("2d") 8 | this.context.drawImage(this.image, 0, 0) 9 | 10 | blur: (passes) -> 11 | 12 | this.context.globalAlpha = 0.5 13 | for i in [0..(passes)] 14 | for y in [-1..2] 15 | for x in [-1..2] 16 | this.context.drawImage(this.element, x, y) 17 | this.context.globalAlpha = 1.0 18 | 19 | $(document).ready(() -> 20 | 21 | id = 'bgcanvas' 22 | url = '/img/bg2.jpg' 23 | image = new Image() 24 | 25 | 26 | image.onload = -> 27 | canvasImage = new CanvasImage(document.getElementById(id), this) 28 | canvasImage.blur(4) 29 | 30 | image.src = url 31 | 32 | $('#search-button').click(() -> 33 | $('#search-form').slideDown('fast', () -> 34 | $('#search-field').focus(); 35 | ) 36 | ) 37 | 38 | $('#search-field').blur(() -> 39 | if($(this).val() == "") 40 | $('#search-form').slideUp('fast', () -> 41 | 42 | ) 43 | ) 44 | $('.contact-form').submit(() -> 45 | 46 | $.ajax({ 47 | type: "POST", 48 | url: "/about/message", 49 | data: $('.contact-form').serialize(), 50 | dataType: "json", 51 | beforeSend: () -> 52 | #alert('before') 53 | , 54 | error: (jqXHR, textStatus, errorThrown) -> 55 | $('.contact-form').fadeOut(() -> 56 | $('#contact-form-area').html("

Ocorreu um problema ao enviar a mensagem, por favor tente novamente mais tarde ou envie um email diretamente para guilherme.defreitas@gmail.com.

Obrigado!

") 57 | $('#contact-message').fadeIn() 58 | ) 59 | 60 | , 61 | success: (data) -> 62 | $('.contact-form').fadeOut(() -> 63 | $('#contact-form-area').html("

Mensagem enviada com sucesso. Obrigado!

") 64 | $('#contact-message').fadeIn() 65 | ) 66 | }) 67 | event.preventDefault() 68 | ) 69 | 70 | ) -------------------------------------------------------------------------------- /themes/default/views/404.jade: -------------------------------------------------------------------------------- 1 | article 2 | header 3 | div.content 4 | p Página não encontrada :( -------------------------------------------------------------------------------- /themes/default/views/500.jade: -------------------------------------------------------------------------------- 1 | article 2 | header 3 | div.content 4 | p Oops, ocorreu um erro :( -------------------------------------------------------------------------------- /themes/default/views/admin/index.jade: -------------------------------------------------------------------------------- 1 | extends ../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.page 7 | p Admin Page -------------------------------------------------------------------------------- /themes/default/views/admin/media/index.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.post 7 | p Media -------------------------------------------------------------------------------- /themes/default/views/admin/media/new.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.post 7 | p New Media -------------------------------------------------------------------------------- /themes/default/views/admin/messages/index.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div#admin-messages.post 7 | - if (notice) 8 | p =notice 9 | 10 | h1 Messages 11 | 12 | div.messages-list 13 | ul 14 | - each message in messages 15 | li 16 | h2 17 | a(href='mailto:' + message.email)!= message.name + ' - ' + message.email 18 | div.meta 19 | != moment(message.date).format('LL') 20 | p 21 | != message.body -------------------------------------------------------------------------------- /themes/default/views/admin/messages/show.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.blog 5 | div.post 6 | section 7 | h2= message.name 8 | p.meta 9 | != moment(message.date).format('LL') 10 | 11 | p!= message.body 12 | 13 | a.button-edit(href='/admin/messages/edit/' + message._id) Edit 14 | form(name='post', method='post', action='/admin/messages/' + message._id) 15 | input(type='hidden', name='_method', value='DELETE') 16 | input(type="submit", class='button-delete', name='delete', value='Delete') 17 | 18 | 19 | -------------------------------------------------------------------------------- /themes/default/views/admin/posts.jade: -------------------------------------------------------------------------------- 1 | extends ../admin_layout 2 | 3 | block content 4 | article 5 | header 6 | div.post 7 | p Admin Page -------------------------------------------------------------------------------- /themes/default/views/admin/posts/index.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div#admin-posts.post 7 | - if (notice) 8 | p =notice 9 | 10 | a(href='/admin/posts/new') New post 11 | 12 | div.posts-list 13 | ul 14 | - each post in posts 15 | li 16 | h2 17 | a(href='/admin/posts/' + post._id)!= post.title 18 | div.meta 19 | != moment(post.date).format('LL') -------------------------------------------------------------------------------- /themes/default/views/admin/posts/show.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.blog 5 | div.post 6 | h2= post.title 7 | p.meta 8 | != moment(post.date).format('LL') 9 | a.author(href='/sobre') 10 | img(src='/img/about/gui.png', width='68', height='68') 11 | p!= md.parse(post.body) 12 | 13 | div.horizontal_menu 14 | div.menu_item 15 | a.button-edit(href='/admin/posts/edit/' + post._id) Edit 16 | div.menu_item 17 | form(name='post', method='post', action='/admin/posts/' + post._id) 18 | input(type='hidden', name='_method', value='DELETE') 19 | input(type="submit", class='button-delete', name='delete', value='Delete') 20 | 21 | 22 | -------------------------------------------------------------------------------- /themes/default/views/admin/projects/edit.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.page 7 | - if (notice) 8 | p =notice 9 | form.new-form(name='project', method='post', action='/admin/projects/' + project._id) 10 | input(type='hidden', name='_method', value='PUT') 11 | input(type='hidden', value=token) 12 | h1 Edit Project 13 | include project_form -------------------------------------------------------------------------------- /themes/default/views/admin/projects/index.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.page 7 | - if (notice) 8 | p =notice 9 | 10 | a(href='/admin/projects/new') New project 11 | 12 | div.projects-list 13 | ul 14 | - each project in projects 15 | li 16 | h2 17 | a(href='/admin/projects/' + project._id)!= project.name -------------------------------------------------------------------------------- /themes/default/views/admin/projects/new.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.page 7 | - if (notice) 8 | p =notice 9 | form.new-form(name='project', method='post', action='/admin/projects') 10 | h1 New Project 11 | include project_form -------------------------------------------------------------------------------- /themes/default/views/admin/projects/project_form.jade: -------------------------------------------------------------------------------- 1 | input(type='hidden', value=token) 2 | fieldset.input-field 3 | input.field(name='project[name]', placeholder='Project Name', type='text', size='40', value=project.name) 4 | fieldset.input-field 5 | textarea.field(name='project[description]', placeholder='Description', type='text', cols='40', rows='20')!= project.description 6 | fieldset.input-field 7 | input.field(name='project[project_image_url]', placeholder='Project Image Link', type='text',value=project.project_image_url) 8 | fieldset.input-field 9 | input.field(name='project[download_link]', placeholder='Download Link', type='text',value=project.download_link) 10 | fieldset.input-field 11 | input.field(name='project[ios_app_store_link]', placeholder='iOS App Store Link', type='text',value=project.ios_app_store_link) 12 | fieldset.input-field 13 | input.field(name='project[mac_app_store_link]', placeholder='Mac App Store Link', type='text',value=project.mac_app_store_link) 14 | fieldset.input-field 15 | input.field(name='project[marketplace_link]', placeholder='Microsoft Marketplace Link', type='text',value=project.marketplace_link) 16 | fieldset.input-field 17 | input.field(name='project[google_play_link]', placeholder='Google Play Link', type='text',value=project.google_play_link) 18 | fieldset.input-field 19 | input.field(name='project[website_link]', placeholder='Website Link', type='text',value=project.website_link) 20 | 21 | fieldset 22 | input(type="submit", class='button-normal', name='save', value='Save') -------------------------------------------------------------------------------- /themes/default/views/admin/projects/show.jade: -------------------------------------------------------------------------------- 1 | extends ../../admin_layout 2 | 3 | block content 4 | article.admin-page 5 | header 6 | div.page 7 | h2= project.name 8 | p.meta 9 | p!= md.parse(project.description) 10 | 11 | div.horizontal_menu 12 | div.menu_item 13 | a.button-edit(href='/admin/projects/edit/' + project._id) Edit 14 | div.menu_item 15 | form(name='project', method='post', action='/admin/projects/' + project._id) 16 | input(type='hidden', name='_method', value='DELETE') 17 | input(type="submit", class='button-delete', name='delete', value='Delete') 18 | -------------------------------------------------------------------------------- /themes/default/views/admin_layout.jade: -------------------------------------------------------------------------------- 1 | !!! 5 2 | html(lang="en") 3 | head 4 | include common_head 5 | body.site-page 6 | img#canvasSource(src='img/bg2.jpg', alt='Canvas Source') 7 | 8 | canvas.blur#bgcanvas 9 | div.wrapper 10 | include menu_admin 11 | block content -------------------------------------------------------------------------------- /themes/default/views/analytics.jade: -------------------------------------------------------------------------------- 1 | | -------------------------------------------------------------------------------- /themes/default/views/apps/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | article 5 | header 6 | div.content 7 | p Aplicativos -------------------------------------------------------------------------------- /themes/default/views/apps/show.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | article 5 | header 6 | div.content 7 | p Show -------------------------------------------------------------------------------- /themes/default/views/blog/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div#blog-main-page.blog 5 | header 6 | include ../search_field 7 | 8 | div.main_posts 9 | - if (posts.length == 0) 10 | article.post 11 | p Nenhum post encontrado 12 | - else 13 | - each post in posts 14 | article.post 15 | h2 16 | a(href='/'+post.urlid)!= post.title 17 | p.meta 18 | != moment(post.date).format('LL') 19 | 20 | include ../post_tags 21 | 22 | div.article_content 23 | != md.parse(post.body) 24 | 25 | - if (posts.length == 10) 26 | div.nav_botton 27 | div.old_posts_nav_link 28 | a(href='/page/' + ( (!req.params.id) ? 2 : (parseInt(req.params.id) + 1) )) 29 | img.icon(src='/img/back.png') 30 | span.label!= __('Old Posts') 31 | 32 | include ../sidebar 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /themes/default/views/blog/search.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | article#blog-search-page.blog 5 | header 6 | include ../search_field 7 | 8 | 9 | - if (posts.length == 0) 10 | div.content 11 | section.post 12 | p Nenhum post encontrado 13 | - else 14 | - each post in posts 15 | div.content 16 | section.post 17 | h2 18 | a(href='/'+post.urlid)!= post.title 19 | p.meta 20 | != moment(post.date).format('LL') 21 | 22 | include ../post_tags 23 | 24 | p!= md.parse(post.body) 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /themes/default/views/blog/show.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.blog 5 | header 6 | include ../search_field 7 | 8 | article.post 9 | h2= post.title 10 | p.meta 11 | != moment(post.date).format('LL') 12 | a.author(href='/sobre') 13 | img(src='/img/about/gui.png', width='68', height='68') 14 | include ../post_tags 15 | div.article_content 16 | != md.parse(post.body) 17 | 18 | -------------------------------------------------------------------------------- /themes/default/views/common_head.jade: -------------------------------------------------------------------------------- 1 | title= pageTitle 2 | meta(charset='UTF-8') 3 | meta(name="apple-mobile-web-app-capable", content="yes") 4 | meta(name="viewport", content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;") 5 | meta(http-equiv="X-UA-Compatible", content="chrome=1") 6 | 7 | | 9 | != css('css/style') 10 | | 11 | != js('js/jquery-1.7.2.min') 12 | != js('js/app') 13 | block head 14 | -------------------------------------------------------------------------------- /themes/default/views/contact/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | article#about 5 | header 6 | include ../search_field 7 | 8 | div#about-profile-area 9 | div.profile 10 | div#image 11 | img.profile-image(src='/img/about/about.png') 12 | div.profile-description 13 | p!= config.author_bio_description 14 | 15 | 16 | ul.social 17 | li 18 | a(href=config.author_facebook_url) 19 | img.social-icon(src='/img/icons/facebook.png') 20 | li 21 | a(href=config.author_twitter_url) 22 | img.social-icon(src='/img/icons/twitter.png') 23 | li 24 | a(href=config.author_linkedin_url) 25 | img.social-icon(src='/img/icons/linkedin.png') 26 | li 27 | a(href=config.author_github_url) 28 | img.social-icon(src='/img/icons/github.png') 29 | li 30 | a(href=config.author_skype_url) 31 | img.social-icon(src='/img/icons/skype.png') 32 | 33 | div.contact 34 | form 35 | 36 | div#contact-form-area 37 | form.contact-form(name='contact', method='post', action='/about/message') 38 | fieldset 39 | label Name 40 | span 41 | input(name='name', class='text-input') 42 | fieldset 43 | label Email 44 | span 45 | input(name='email', class='text-input') 46 | 47 | 48 | 49 | fieldset 50 | label Message 51 | span 52 | textarea#text(name='message', placeholder='', type='text', cols='40', rows='6') 53 | 54 | fieldset 55 | input(type="submit", class='button-normal', name='send', value='Send') 56 | -------------------------------------------------------------------------------- /themes/default/views/layout.jade: -------------------------------------------------------------------------------- 1 | !!! 5 2 | html(lang="en") 3 | head 4 | include common_head 5 | body.site-page 6 | div.wrapper 7 | include menu 8 | block content 9 | include analytics 10 | 11 | -------------------------------------------------------------------------------- /themes/default/views/menu.jade: -------------------------------------------------------------------------------- 1 | div 2 | header 3 | nav.site-header 4 | a.site-logo(href='/') Guilherme Defreitas 5 | ul.menu 6 | 7 | - if(req.url == "/" || req.url == "/search" ) 8 | li.selected 9 | a(href='/', rel="prefetch")!= __('Blog') 10 | - else 11 | li 12 | a(href='/', rel="prefetch")!= __('Blog') 13 | 14 | - if(req.url == "/projects") 15 | li.selected 16 | a(href='/projects', rel="prefetch")!= __('Projetos') 17 | - else 18 | li 19 | a(href='/projects', rel="prefetch")!= __('Projetos') 20 | 21 | - if(req.url == "/about") 22 | li.selected 23 | a(href='/about', rel="prefetch")!= __('Sobre') 24 | - else 25 | li 26 | a(href='/about', rel="prefetch")!= __('Sobre') 27 | li 28 | a#search-button(href="#") 29 | | 30 | li 31 | a(href="http://feeds.feedburner.com/guidefreitas/RTlL") 32 | | 33 | div.clear 34 | -------------------------------------------------------------------------------- /themes/default/views/menu_admin.jade: -------------------------------------------------------------------------------- 1 | div 2 | header.site-header 3 | nav 4 | a.site-logo(href='/') Guilherme Defreitas 5 | ul.menu 6 | li 7 | a(href='/admin/posts') Posts 8 | li 9 | a(href='/admin/media') Media 10 | li 11 | a(href='/admin/messages') Messages 12 | li 13 | a(href='/admin/projects') Projects 14 | li 15 | a(href='/logout') 16 | | v 17 | 18 | -------------------------------------------------------------------------------- /themes/default/views/post_tags.jade: -------------------------------------------------------------------------------- 1 | - if(post.tags) 2 | ul#tags.tags 3 | - each tag in post.tags.split(',') 4 | li 5 | a(href='/search?tag=' + TrimStr(tag), rel='prerender')!= TrimStr(tag) 6 | -------------------------------------------------------------------------------- /themes/default/views/posts/edit.jade: -------------------------------------------------------------------------------- 1 | extends ../admin_layout 2 | 3 | block content 4 | article 5 | header 6 | div.post 7 | - if (notice) 8 | p =notice 9 | form#new-post-form(name='post', method='post', action='/admin/posts/' + post._id) 10 | input(type='hidden', name='_method', value='PUT') 11 | input(type='hidden', value=token) 12 | fieldset.input-field 13 | input#title-field(name='post[title]', placeholder='Title', type='text', size='40', value=post.title) 14 | fieldset.input-field 15 | textarea#text(name='post[body]', placeholder='Text', type='text', cols='40', rows='20')!= post.body 16 | fieldset.input-field 17 | input#tags-field(name='post[tags]', placeholder='Tags', type='text',value=post.tags) 18 | 19 | fieldset 20 | input(type="submit", class='button-normal', name='save', value='Save') -------------------------------------------------------------------------------- /themes/default/views/posts/index.jade: -------------------------------------------------------------------------------- 1 | article 2 | header 3 | div.content 4 | p Posts Index -------------------------------------------------------------------------------- /themes/default/views/posts/new.jade: -------------------------------------------------------------------------------- 1 | extends ../admin_layout 2 | 3 | block content 4 | article 5 | header 6 | div.post 7 | - if (notice) 8 | p =notice 9 | form#new-post-form(name='post', method='post', action='/admin/posts') 10 | include post_form -------------------------------------------------------------------------------- /themes/default/views/posts/post_form.jade: -------------------------------------------------------------------------------- 1 | input(type='hidden', value=token) 2 | fieldset.input-field 3 | input#title-field(name='post[title]', placeholder='Title', type='text', size='40', value=post.title) 4 | fieldset.input-field 5 | textarea#text(name='post[body]', placeholder='Text', type='text', cols='40', rows='20')!= post.body 6 | fieldset.input-field 7 | input#tags-field(name='post[tags]', placeholder='Tags', type='text',value=post.tags) 8 | 9 | fieldset 10 | input(type="submit", class='button-normal', name='save', value='Save') -------------------------------------------------------------------------------- /themes/default/views/projects/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | article#projects 5 | header 6 | include ../search_field 7 | 8 | - each project in projects 9 | div#project.content 10 | section 11 | div.project-image 12 | img(src=project.project_image_url) 13 | div.project-description 14 | h2 15 | a(href='#')!= project.name 16 | p.description!= md.parse(project.description) 17 | - if(project.website_link) 18 | a(href=project.website_link)!= 'Confira! ' + project.website_link 19 | 20 | - if(project.download_link) 21 | a(href=project.download_link)!= 'Download!' 22 | 23 |
    24 | - if(project.ios_app_store_link) 25 | li 26 | a(href=project.ios_app_store_link) 27 | 28 | 29 | - if(project.mac_app_store_link) 30 | li 31 | a(href=project.mac_app_store_link) 32 | 33 | 34 | - if(project.marketplace_link) 35 | li 36 | a(href=project.marketplace_link) 37 | 38 | 39 | - if(project.google_play_link) 40 | li 41 | a(href=project.google_play_link) 42 | 43 | 44 |
-------------------------------------------------------------------------------- /themes/default/views/projects/show.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | article 5 | header 6 | div.content 7 | p Show -------------------------------------------------------------------------------- /themes/default/views/search_field.jade: -------------------------------------------------------------------------------- 1 | form#search-form(name='post', method='get', action='/search') 2 | input#search-field(name='q', placeholder='Search', type='text', size='20') -------------------------------------------------------------------------------- /themes/default/views/sessions/new.jade: -------------------------------------------------------------------------------- 1 | extends ../admin_layout 2 | 3 | block content 4 | article 5 | header 6 | div.post 7 | form.login-form(name='login', method='post', action='/login') 8 | fieldset 9 | p 10 | label!= __('User') 11 | span 12 | input(name='user[username]', class='text-input') 13 | fieldset 14 | p 15 | label!= __('Password') 16 | span 17 | input(type='password', class='text-input', name='user[password]') 18 | 19 | fieldset 20 | input(type="submit", class='button-normal', name='login', value='Login') 21 | 22 | p 23 | =notice -------------------------------------------------------------------------------- /themes/default/views/sidebar.jade: -------------------------------------------------------------------------------- 1 | div.side_bar 2 | h2 Categorias 3 | ul 4 | - each category in categories 5 | li 6 | a(href="/search?q=" + category)!= category --------------------------------------------------------------------------------