made email from work

This commit is contained in:
Dobie Wollert
2014-10-26 02:29:04 -07:00
parent a2c5abf7ea
commit 92201a4a30
8 changed files with 118 additions and 54 deletions

View File

@ -12,6 +12,7 @@
"masonry": "~3.1.5", "masonry": "~3.1.5",
"angular-masonry": "~0.9.1", "angular-masonry": "~0.9.1",
"imagesloaded": "~3.1.8", "imagesloaded": "~3.1.8",
"jquery-colorbox": "~1.5.14" "jquery-colorbox": "~1.5.14",
"angular-foundation": "~0.4.0"
} }
} }

View File

@ -30,6 +30,8 @@ gulp.task('vendor', function() {
'vendor/angular-resource/angular-resource.js', 'vendor/angular-resource/angular-resource.js',
'vendor/angular-sanitize/angular-sanitize.js', 'vendor/angular-sanitize/angular-sanitize.js',
'vendor/angular-ui-router/release/angular-ui-router.js', 'vendor/angular-ui-router/release/angular-ui-router.js',
'vendor/angular-foundation/mm-foundation.min.js',
'vendor/angular-foundation/mm-foundation-tpls.min.js',
'vendor/lodash/dist/lodash.js', 'vendor/lodash/dist/lodash.js',
'vendor/masonry/dist/masonry.pkgd.js', 'vendor/masonry/dist/masonry.pkgd.js',
'vendor/angular-masonry/angular-masonry.js', 'vendor/angular-masonry/angular-masonry.js',
@ -47,7 +49,7 @@ gulp.task('js', function() {
.pipe(sourcemaps.init()) .pipe(sourcemaps.init())
.pipe(templates({ standalone: true })); .pipe(templates({ standalone: true }));
var js = gulp.src(['src/**/imdex.js', 'src/**/*.js']) var js = gulp.src(['src/**/index.js', 'src/**/*.js'])
.pipe(plumber()) .pipe(plumber())
.pipe(sourcemaps.init()) .pipe(sourcemaps.init())
.pipe(concat('src.js')) .pipe(concat('src.js'))

View File

@ -0,0 +1,32 @@
angular.module('biomed-frontend')
.controller('NavCtrl', function($scope, $modal) {
$scope.showEmail = function() {
var modalInstance = $modal.open({
templateUrl: 'app/email.html',
controller: 'EmailCtrl'
});
}
})
.controller('EmailCtrl', function($scope, $http, $modalInstance) {
$scope.model = {};
$scope.send = function() {
console.log($scope.model);
$http.post('/api/email', $scope.model)
.success(function() {
$modalInstance.close();
})
.error(function() {
$modalInstance.close();
});
};
$scope.close = function() {
$modalInstance.close();
}
});

View File

@ -0,0 +1,32 @@
<div id="emailModal" class="tiny">
<div class="row">
<div class="large-12 columnns">
<div class="small-12 columns">
<h2>Email us:</h2>
</div>
</div>
</div>
<form data-abide ng-submit="send()">
<div class="name-field">
<label>Your name <small>required</small>
<input type="text" required pattern="[a-zA-Z]+" ng-model="model.name">
</label>
<small class="error">Name is required and must be a string.</small>
</div>
<div class="email-field">
<label>Email <small>required</small>
<input type="email" required ng-model="model.email">
</label>
<small class="error">An email address is required.</small>
</div>
<div>
<label>Message
<textarea ng-model="model.message"></textarea>
</label>
</div>
<button type="submit">Submit</button>
</form>
<a class="close()">×</a>
</div>

View File

@ -3,8 +3,8 @@ angular.module('biomed-frontend', [
'ui.router', 'ui.router',
'ngResource', 'ngResource',
'angular-loading-bar', 'angular-loading-bar',
'wu.masonry' 'wu.masonry',
'mm.foundation'
]) ])
.factory('Posts', function($resource) { .factory('Posts', function($resource) {
return $resource('/api/v1/posts/:_id', return $resource('/api/v1/posts/:_id',
@ -56,4 +56,4 @@ angular.module('biomed-frontend', [
}); });
} }
}); });
}); })

View File

@ -1,6 +1,6 @@
<!--Top Bar --> <!--Top Bar -->
<div class="fixed"> <div class="fixed">
<nav class="top-bar" data-topbar> <nav class="top-bar" data-topbar ng-controller="NavCtrl">
<ul class="title-area"> <ul class="title-area">
<!-- Title Area --> <!-- Title Area -->
<li class="name"> <li class="name">
@ -21,7 +21,7 @@
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li> <li>
<a href="#" data-reveal-id="emailModal">Email us</a> <a ng-click="showEmail()">Email us</a>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li> <li>
@ -36,40 +36,7 @@
</nav> </nav>
</div> </div>
<!--Reveals--> <!--Reveals-->
<div id="emailModal" class="reveal-modal tiny" data-reveal>
<div class="row">
<div class="large-12 columnns">
<div class="small-12 columns">
<h2>Email us:</h2>
</div>
</div>
</div>
<form data-abide>
<div class="name-field">
<label>Your name <small>required</small>
<input type="text" required pattern="[a-zA-Z]+">
</label>
<small class="error">Name is required and must be a string.</small>
</div>
<div class="email-field">
<label>Email <small>required</small>
<input type="email" required>
</label>
<small class="error">An email address is required.</small>
</div>
<div>
<label>Message
<textarea></textarea>
</label>
</div>
<button type="submit">Submit</button>
</form>
<a class="close-reveal-modal">×</a>
</div>
<div id="contactModal" class="reveal-modal small" data-reveal> <div id="contactModal" class="reveal-modal small" data-reveal>
<div class="row"> <div class="row">
<div class="medium-12 columns"> <div class="medium-12 columns">

View File

@ -7,6 +7,7 @@
"body-parser": "~1.9.0", "body-parser": "~1.9.0",
"method-override": "~2.2.0", "method-override": "~2.2.0",
"mongoose": "~3.8.17", "mongoose": "~3.8.17",
"express-restify-mongoose": "~0.6.10" "express-restify-mongoose": "~0.6.10",
"emailjs": "~0.3.12"
} }
} }

View File

@ -3,20 +3,28 @@ var express = require('express');
var bodyParser = require('body-parser'); var bodyParser = require('body-parser');
var methodOverride = require('method-override'); var methodOverride = require('method-override');
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var email = require('emailjs');
var Schema = mongoose.Schema; var Schema = mongoose.Schema;
var restify = require('express-restify-mongoose'); var restify = require('express-restify-mongoose');
mongoose.connect('mongodb://localhost/biomed'); mongoose.connect('mongodb://localhost/biomed_prod');
var emailServer = email.server.connect({
user: 'api@atlanticbiomedical.com',
password: 'success4',
host: 'smtp.gmail.com',
ssl: true
});
var Post = new Schema({ var Post = new Schema({
title: { type: String }, title: { type: String },
preview: { type: String }, preview: { type: String },
details: { type: String }, details: { type: String },
image: { type: String }, image: { type: String },
gallery: [ gallery: [
{ type: String } { type: String }
], ],
status: { type: String } status: { type: String }
}); });
var PostModel = mongoose.model('Post', Post); var PostModel = mongoose.model('Post', Post);
@ -24,12 +32,33 @@ var app = express();
app.use(bodyParser.json()); app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.urlencoded({ extended: true }));
app.use(methodOverride()); app.use(methodOverride());
app.post('/api/email', function(req, res) {
if (req.body.name && req.body.email && req.body.message) {
emailServer.send({
from: 'Website <api@atlanticbiomedical.com>',
to: 'akirayasha@gmail.com',
"reply-to": req.body.email,
subject: 'Message from website',
text: 'Name: ' + req.body.name + "\n" + "E-Mail: " + req.body.email + "\n\n" + req.body.message
}, function(err, message) {
if (err) {
console.log("Failed to send message from website.", err);
}
});
res.json(null);
}
});
restify.serve(app, PostModel, { restify.serve(app, PostModel, {
prereq: function(req) { prereq: function(req) {
return req.method === 'GET'; return req.method === 'GET';
} }
}); });
http.createServer(app).listen(3000, function() { http.createServer(app).listen(3000, function() {
console.log('Express server listening on port 3000'); console.log('Express server listening on port 3000');
}); });