diff --git a/.gitignore b/.gitignore index e49727ac4c..6fe2eaa412 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ .DS_Store .nodemonignore .sass-cache/ +.bower-*/ +.idea/ node_modules/ public/lib test/coverage/ diff --git a/app/views/404.html b/app/views/404.html new file mode 100644 index 0000000000..65f8637efa --- /dev/null +++ b/app/views/404.html @@ -0,0 +1,17 @@ +{% extends 'layouts/default.html' %} + +{% block main %} +

Oops something went wrong

+
+ 404 +{% endblock %} + +{% block content %} +
+
+
+                {{error}}
+            
+
+
+{% endblock %} diff --git a/app/views/404.jade b/app/views/404.jade deleted file mode 100755 index 2f0d9e8663..0000000000 --- a/app/views/404.jade +++ /dev/null @@ -1,13 +0,0 @@ -extends layouts/default - -block main - h1 Oops something went wrong - br - span 404 - -block content - #error-message-box - #error-stack-trace - pre - code!= error - diff --git a/app/views/500.html b/app/views/500.html new file mode 100644 index 0000000000..8eba21c912 --- /dev/null +++ b/app/views/500.html @@ -0,0 +1,17 @@ +{% extends 'layouts/default.html' %} + +{% block main %} +

Oops something went wrong

+
+ 500 +{% endblock %} + +{% block content %} +
+
+
+                {{error}}
+            
+
+
+{% endblock %} diff --git a/app/views/500.jade b/app/views/500.jade deleted file mode 100755 index 491b00084e..0000000000 --- a/app/views/500.jade +++ /dev/null @@ -1,12 +0,0 @@ -extends layouts/default - -block main - h1 Oops something went wrong - br - span 500 - -block content - #error-message-box - #error-stack-trace - pre - code!= error diff --git a/app/views/includes/foot.html b/app/views/includes/foot.html new file mode 100644 index 0000000000..b9c0c04794 --- /dev/null +++ b/app/views/includes/foot.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{% if (process.env.NODE_ENV == 'development') %} + + +{% endif %} diff --git a/app/views/includes/foot.jade b/app/views/includes/foot.jade deleted file mode 100755 index ba1d6e57bf..0000000000 --- a/app/views/includes/foot.jade +++ /dev/null @@ -1,30 +0,0 @@ -//AngularJS -script(type='text/javascript', src='/lib/angular/angular.js') -script(type='text/javascript', src='/lib/angular-cookies/angular-cookies.js') -script(type='text/javascript', src='/lib/angular-resource/angular-resource.js') -script(type='text/javascript', src='/lib/angular-route/angular-route.js') - -//Angular UI -script(type='text/javascript', src='/lib/angular-bootstrap/ui-bootstrap.js') -script(type='text/javascript', src='/lib/angular-bootstrap/ui-bootstrap-tpls.js') -script(type='text/javascript', src='/lib/angular-ui-utils/ui-utils.min.js') - -//Application Init -script(type='text/javascript', src='/js/app.js') -script(type='text/javascript', src='/js/config.js') -script(type='text/javascript', src='/js/directives.js') -script(type='text/javascript', src='/js/filters.js') - -//Application Services -script(type='text/javascript', src='/js/services/global.js') -script(type='text/javascript', src='/js/services/articles.js') - -//Application Controllers -script(type='text/javascript', src='/js/controllers/articles.js') -script(type='text/javascript', src='/js/controllers/index.js') -script(type='text/javascript', src='/js/controllers/header.js') -script(type='text/javascript', src='/js/init.js') - -if (process.env.NODE_ENV == 'development') - //Livereload script rendered - script(type='text/javascript', src='http://' + req.host + ':35729/livereload.js') \ No newline at end of file diff --git a/app/views/includes/head.html b/app/views/includes/head.html new file mode 100644 index 0000000000..dd49197063 --- /dev/null +++ b/app/views/includes/head.html @@ -0,0 +1,31 @@ + + + + + + {{appName}} - {{title}} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/views/includes/head.jade b/app/views/includes/head.jade deleted file mode 100755 index 458c122d7b..0000000000 --- a/app/views/includes/head.jade +++ /dev/null @@ -1,29 +0,0 @@ -head - meta(charset='utf-8') - meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1') - meta(name='viewport', content='width=device-width,initial-scale=1') - - title= appName+' - '+title - meta(http-equiv='Content-type', content='text/html;charset=UTF-8') - meta(name="keywords", content="node.js, express, mongoose, mongodb, angularjs") - meta(name="description", content="MEAN - A Modern Stack: MongoDB, ExpressJS, AngularJS, NodeJS. (BONUS: Passport User Support).") - - link(href='/img/icons/favicon.ico', rel='shortcut icon', type='image/x-icon') - - meta(property='fb:app_id', content='APP_ID') - meta(property='og:title', content='#{appName} - #{title}') - meta(property='og:description', content='MEAN - A Modern Stack: MongoDB, ExpressJS, AngularJS, NodeJS. (BONUS: Passport User Support).') - meta(property='og:type', content='website') - meta(property='og:url', content='APP_URL') - meta(property='og:image', content='APP_LOGO') - meta(property='og:site_name', content='MEAN - A Modern Stack') - meta(property='fb:admins', content='APP_ADMIN') - - link(rel='stylesheet', href='/lib/bootstrap/dist/css/bootstrap.min.css') - //- link(rel='stylesheet', href='/lib/bootstrap/dist/css/bootstrap-responsive.css') - link(rel='stylesheet', href='/css/common.css') - - link(rel='stylesheet', href='/css/views/articles.css') - - //if lt IE 9 - script(src='http://html5shim.googlecode.com/svn/trunk/html5.js') diff --git a/app/views/index.html b/app/views/index.html new file mode 100644 index 0000000000..c559719aff --- /dev/null +++ b/app/views/index.html @@ -0,0 +1,7 @@ +{% extends 'layouts/default.html' %} +{% block content %} +
+ +{% endblock %} diff --git a/app/views/index.jade b/app/views/index.jade deleted file mode 100755 index c121898992..0000000000 --- a/app/views/index.jade +++ /dev/null @@ -1,6 +0,0 @@ -extends layouts/default - -block content - section(data-ng-view) - script(type="text/javascript"). - window.user = !{user}; diff --git a/app/views/layouts/default.html b/app/views/layouts/default.html new file mode 100644 index 0000000000..115a51eb40 --- /dev/null +++ b/app/views/layouts/default.html @@ -0,0 +1,13 @@ + + + {% include '../includes/head.html' %} + + +
+
+ {% block content %}{% endblock %} +
+
+ {% include '../includes/foot.html' %} + + diff --git a/app/views/layouts/default.jade b/app/views/layouts/default.jade deleted file mode 100755 index 6af83d378f..0000000000 --- a/app/views/layouts/default.jade +++ /dev/null @@ -1,9 +0,0 @@ -doctype html -html(lang='en', xmlns='http://www.w3.org/1999/xhtml', xmlns:fb='https://www.facebook.com/2008/fbml', itemscope='itemscope', itemtype='http://schema.org/Product') - include ../includes/head - body - .navbar.navbar-inverse.navbar-fixed-top(data-ng-include="'views/header.html'", data-role="navigation") - section.content - section.container - block content - include ../includes/foot diff --git a/app/views/users/auth.html b/app/views/users/auth.html new file mode 100644 index 0000000000..74891fddea --- /dev/null +++ b/app/views/users/auth.html @@ -0,0 +1,24 @@ +{% extends '../layouts/default.html' %} + +{% block content %} +
+
+ + + + + +
+
+ {% if message && message.length %} +
+ +
+ {{ message }} +
+
+ {% endif %} + {% block auth %}{% endblock %} +
+
+{% endblock %} diff --git a/app/views/users/auth.jade b/app/views/users/auth.jade deleted file mode 100755 index fadb270dd1..0000000000 --- a/app/views/users/auth.jade +++ /dev/null @@ -1,21 +0,0 @@ -extends ../layouts/default - -block content - .row - .col-md-offset-1.col-md-5 - a(href="/auth/facebook") - img(src="/img/icons/facebook.png") - a(href="/auth/github") - img(src="/img/icons/github.png") - a(href="/auth/twitter") - img(src="/img/icons/twitter.png") - a(href="/auth/google") - img(src="/img/icons/google.png") - a(href="/auth/linkedin") - img(src="/img/icons/linkedin.png") - .col-md-6 - if message && message.length - .fade.in.alert.alert-error - button.close(type="button", data-dismiss="alert") × - strong #{message} - block auth diff --git a/app/views/users/signin.html b/app/views/users/signin.html new file mode 100644 index 0000000000..72b9be84e2 --- /dev/null +++ b/app/views/users/signin.html @@ -0,0 +1,24 @@ +{% extends 'auth.html' %} + +{% block auth %} +
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+   + or  +
+
+
+{% endblock %} diff --git a/app/views/users/signin.jade b/app/views/users/signin.jade deleted file mode 100755 index 9cd9492f9a..0000000000 --- a/app/views/users/signin.jade +++ /dev/null @@ -1,20 +0,0 @@ -extends auth - -block auth - form.signin.form-horizontal(action="/users/session", method="post") - .form-group - label.col-md-4.control-label(for='email') Email - .col-md-8 - input#email.form-control(type='text', name="email", placeholder='Email') - - .form-group - label.col-md-4.control-label(for='password') Password - .col-md-8 - input#password.form-control(type='password', name="password", placeholder='Password') - - .form-group - .col-md-offset-4.col-md-8 - button.btn.btn-primary(type='submit') Sign in -   - | or  - a.show-signup(href="/signup") Sign up diff --git a/app/views/users/signup.html b/app/views/users/signup.html new file mode 100644 index 0000000000..a539f3f25f --- /dev/null +++ b/app/views/users/signup.html @@ -0,0 +1,36 @@ +{% extends 'auth.html' %} + +{% block auth %} +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+   + or  +
+
+
+{% endblock %} diff --git a/app/views/users/signup.jade b/app/views/users/signup.jade deleted file mode 100755 index 920f0a65cb..0000000000 --- a/app/views/users/signup.jade +++ /dev/null @@ -1,30 +0,0 @@ -extends auth - -block auth - form.signup.form-horizontal(action="/users", method="post") - .form-group - label.col-md-4.control-label(for='name') Full Name - .col-md-8 - input#name.form-control(type='text', name="name", placeholder='Full name', value=user.name) - - .form-group - label.col-md-4.control-label(for='email') Email - .col-md-8 - input#email.form-control(type='text', name="email", placeholder='Email', value=user.email) - - .form-group - label.col-md-4.control-label(for='username') Username - .col-md-8 - input#username.form-control(type='text', name="username", placeholder='Username', value=user.username) - - .form-group - label.col-md-4.control-label(for='password') Password - .col-md-8 - input#password.form-control(type='password', name="password", placeholder='Password') - - .form-group - .col-md-offset-4.col-md-8 - button.btn.btn-primary(type='submit') Sign up -   - | or  - a.show-login(href="/signin") login diff --git a/bower.json b/bower.json index 8d146ef432..e46e8849cc 100644 --- a/bower.json +++ b/bower.json @@ -2,7 +2,7 @@ "name": "mean", "version": "0.1.3", "dependencies": { - "angular": "1.2.10", + "angular": "latest", "angular-resource": "latest", "angular-cookies": "latest", "angular-mocks": "latest", diff --git a/config/env/all.js b/config/env/all.js index 6bf44396b7..807640df56 100644 --- a/config/env/all.js +++ b/config/env/all.js @@ -7,10 +7,11 @@ module.exports = { root: rootPath, port: process.env.PORT || 3000, db: process.env.MONGOHQ_URL, + templateEngine: 'swig', // The secret should be set to a non-guessable string that // is used to compute a session hash sessionSecret: 'MEAN', // The name of the MongoDB collection to store sessions in sessionCollection: 'sessions' -} +}; diff --git a/config/env/development.js b/config/env/development.js index 37b4d7132a..f5075ab7c5 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -1,33 +1,33 @@ 'use strict'; module.exports = { - db: "mongodb://localhost/mean-dev", + db: 'mongodb://localhost/mean-dev', app: { - name: "MEAN - A Modern Stack - Development" + name: 'MEAN - A Modern Stack - Development' }, facebook: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/facebook/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' }, twitter: { - clientID: "CONSUMER_KEY", - clientSecret: "CONSUMER_SECRET", - callbackURL: "http://localhost:3000/auth/twitter/callback" + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' }, github: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/github/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/github/callback' }, google: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/google/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' }, linkedin: { - clientID: "API_KEY", - clientSecret: "SECRET_KEY", - callbackURL: "http://localhost:3000/auth/linkedin/callback" + clientID: 'API_KEY', + clientSecret: 'SECRET_KEY', + callbackURL: 'http://localhost:3000/auth/linkedin/callback' } -} \ No newline at end of file +}; diff --git a/config/env/production.js b/config/env/production.js index 71c73a4f54..151b201649 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -1,33 +1,33 @@ 'use strict'; module.exports = { - db: "mongodb://localhost/mean", + db: 'mongodb://localhost/mean', app: { - name: "MEAN - A Modern Stack - Production" + name: 'MEAN - A Modern Stack - Production' }, facebook: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/facebook/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' }, twitter: { - clientID: "CONSUMER_KEY", - clientSecret: "CONSUMER_SECRET", - callbackURL: "http://localhost:3000/auth/twitter/callback" + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' }, github: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/github/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/github/callback' }, google: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/google/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' }, linkedin: { - clientID: "API_KEY", - clientSecret: "SECRET_KEY", - callbackURL: "http://localhost:3000/auth/linkedin/callback" + clientID: 'API_KEY', + clientSecret: 'SECRET_KEY', + callbackURL: 'http://localhost:3000/auth/linkedin/callback' } -} \ No newline at end of file +}; diff --git a/config/env/test.js b/config/env/test.js index 2a21399897..dc2a0c5033 100644 --- a/config/env/test.js +++ b/config/env/test.js @@ -1,29 +1,29 @@ 'use strict'; module.exports = { - db: "mongodb://localhost/mean-test", + db: 'mongodb://localhost/mean-test', port: 3001, app: { - name: "MEAN - A Modern Stack - Test" + name: 'MEAN - A Modern Stack - Test' }, facebook: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/facebook/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' }, twitter: { - clientID: "CONSUMER_KEY", - clientSecret: "CONSUMER_SECRET", - callbackURL: "http://localhost:3000/auth/twitter/callback" + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' }, github: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/github/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/github/callback' }, google: { - clientID: "APP_ID", - clientSecret: "APP_SECRET", - callbackURL: "http://localhost:3000/auth/google/callback" + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' } -} \ No newline at end of file +}; diff --git a/config/express.js b/config/express.js index 60f7a6db7b..a958d5f6b6 100755 --- a/config/express.js +++ b/config/express.js @@ -4,6 +4,7 @@ * Module dependencies. */ var express = require('express'), + consolidate = require('consolidate'), mongoStore = require('connect-mongo')(express), flash = require('connect-flash'), helpers = require('view-helpers'), @@ -31,12 +32,17 @@ module.exports = function(app, passport, db) { app.use(express.logger('dev')); } + // assign the template engine to .html files + app.engine('html', consolidate[config.templateEngine]); + + // set .html as the default extension + app.set('view engine', 'html'); + // Set views path, template engine and default layout app.set('views', config.root + '/app/views'); - app.set('view engine', 'jade'); // Enable jsonp - app.enable("jsonp callback"); + app.enable('jsonp callback'); app.configure(function() { // The cookieParser should be above session @@ -68,7 +74,7 @@ module.exports = function(app, passport, db) { // Routes should be at the last app.use(app.router); - + // Setting the fav icon and static folder app.use(express.favicon()); app.use(express.static(config.root + '/public')); @@ -90,7 +96,7 @@ module.exports = function(app, passport, db) { }); // Assume 404 since no middleware responded - app.use(function(req, res, next) { + app.use(function(req, res) { res.status(404).render('404', { url: req.originalUrl, error: 'Not found' @@ -98,4 +104,4 @@ module.exports = function(app, passport, db) { }); }); -}; \ No newline at end of file +}; diff --git a/gruntfile.js b/gruntfile.js index 1779ab8489..9f1c3f5871 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -80,7 +80,7 @@ module.exports = function(grunt) { } }); - //Load NPM tasks + //Load NPM tasks grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-mocha-test'); @@ -97,4 +97,4 @@ module.exports = function(grunt) { //Test task. grunt.registerTask('test', ['env:test', 'mochaTest', 'karma:unit']); -}; \ No newline at end of file +}; diff --git a/package.json b/package.json index e5cb3d8a73..800ae83fea 100755 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dependencies": { "express": "~3.4.7", "jade": "~1.0.2", + "consolidate": "~0.10.0", "mongoose": "~3.8.3", "connect-mongo": "~0.4.0", "connect-flash": "~0.1.1", @@ -56,7 +57,8 @@ "grunt-nodemon": "0.1.2", "grunt-contrib-watch": "~0.5.3", "karma-coverage": "~0.1.4", - "karma": "~0.10.9" + "karma": "~0.10.9", + "swig": "~1.3.2" }, "devDependencies": { "supertest": "0.8.2", diff --git a/public/views/articles/view.html b/public/views/articles/view.html index b34b586920..f69d0e73f3 100644 --- a/public/views/articles/view.html +++ b/public/views/articles/view.html @@ -1,11 +1,11 @@
- {{article.created | date:'medium'}}/ + {{article.created | date:'medium'}} / {{article.user.name}}

{{article.title}}

- +