validation

This commit is contained in:
John McLear 2013-01-31 01:16:34 +00:00
parent c3bb3fb22b
commit 68dd65cc7a
7 changed files with 50 additions and 18 deletions

View file

@ -1,8 +1,9 @@
# TODO
* Option in UI to add email without prompt
* validation
* a point to unsubscribe
* stop the ui prompting if already subscribed
* send actual emails with content
*
* Clean up all code

View file

@ -10,3 +10,7 @@ exports.eejsBlock_toolbarRight = function (hook_name, args, cb) {
return cb();
};
exports.eejsBlock_embedPopup = function (hook_name, args, cb) {
args.content = args.content + eejs.require("ep_email_notifications/templates/embedFrame.html", {}, module);
return cb();
};

View file

@ -6,10 +6,11 @@
"padUpdate": "ep_email_notifications/update",
"handleMessage": "ep_email_notifications/update",
"eejsBlock_scripts": "ep_email_notifications/client",
"eejsBlock_editbarMenuRight": "ep_email_notifications/client:eejsBlock_toolbarRight"
"eejsBlock_editbarMenuRight": "ep_email_notifications/client:eejsBlock_toolbarRight",
"eejsBlock_embedPopup": "ep_email_notifications/client:eejsBlock_embedPopup"
},
"client_hooks": {
"postAceInit":"ep_email_notifications/static/js/ep_email",
"documentReady":"ep_email_notifications/static/js/ep_email",
"handleClientMessage_emailSubscriptionSuccess":"ep_email_notifications/static/js/ep_email"
}
}

View file

@ -10,7 +10,8 @@
"contributors": [],
"dependencies": {
"emailjs": ">= 0.2.7",
"buffertools": ">= 1.0.8"
"buffertools": ">= 1.0.8",
"validator": ">= 0.4.21"
},
"engines": {
"node": ">= 0.4.1"

View file

@ -1,3 +1,15 @@
exports.documentReady = function(){
// after 10 seconds if we dont already have an email for this author then prompt them
setTimeout(function(){init()},10000);
// subscribe by email can be active..
$('.ep_email_form').submit(function(){
sendEmailToServer();
return false;
});
}
exports.handleClientMessage_emailSubscriptionSuccess = function(hook, context){ // was subscribing to the email a big win or fail?
if(context.payload == false){
showAlreadyRegistered();
@ -6,18 +18,16 @@ exports.handleClientMessage_emailSubscriptionSuccess = function(hook, context){
}
}
exports.postAceInit = function(){
// after 10 seconds if we dont already have an email for this author then prompt them
setTimeout(function(){init()},10000);
}
function init(){
if(clientHasAlreadyRegistered){ // if the client has already registered for emails on this pad.
showAlreadyRegistered(); // client has already registered, let em know..
var popUpIsAlreadyVisible = $('#ep_email').is(":visible");
if(!popUpIsAlreadyVisible){ // if the popup isn't already visible
if(clientHasAlreadyRegistered()){ // if the client has already registered for emails on this pad.
// showAlreadyRegistered(); // client has already registered, let em know..
}else{
askClientToEnterEmail(); // ask the client to register
}
}
}
function showRegistrationSuccess(){ // show a successful registration message
$.gritter.add({
@ -55,16 +65,16 @@ function clientHasAlreadyRegistered(){ // Has the client already registered for
function askClientToEnterEmail(){
$.gritter.add({
// (string | mandatory) the heading of the notification
title: "Email notifications for this pad",
title: "Enter your email to recieve an email when someone modifies this pad",
// (string | mandatory) the text inside the notification
text: "<form id='ep_email_form'><label for='ep_email'><input id='ep_email' placeholder='your@email.com' value='foo@bar.com' type=email><input type=submit></form>",
text: "<form class='ep_email_form'><label for='ep_email'><input id='ep_email' placeholder='your@email.com' style='padding:5px;width:200px;' type=email><input type=submit style='padding:5px;'></form>",
// (bool | optional) if you want it to fade out on its own or just sit there
sticky: true,
// (int | optional) the time you want it to be alive for before fading out
time: '2000',
// the function to bind to the form
after_open: function(e){
$('#ep_email_form').submit(function(){
$('.ep_email_form').submit(function(){
$(e).hide();
sendEmailToServer();
return false;

View file

@ -0,0 +1,3 @@
<br>
<h2>Recieve email notifications on change</h2>
<form class='ep_email_form'><label for='ep_email'><input id='ep_email' placeholder='your@email.com' style="padding:5px;margin-top:10px;width:300px;" type=email><input style="padding:5px;" type=submit></form>

View file

@ -1,6 +1,7 @@
var db = require('../../src/node/db/DB').db,
API = require('../../src/node/db/API.js'),
async = require('../../src/node_modules/async'),
check = require('validator').check,
settings = require('../../src/node/utils/Settings');
var pluginSettings = settings.ep_email_notifications;
@ -44,7 +45,18 @@ exports.handleMessage = function(hook_name, context, callback){
}); // end async for each
}
if(alreadyExists == false){
var validatesAsEmail = check(context.message.data.userInfo.email).isEmail();
if(!validatesAsEmail){ // send validation failed if it's malformed.. y'know in general fuck em!
console.warn("Dropped email subscription due to malformed email address");
context.client.json.send({ type: "COLLABROOM",
data:{
type: "emailSubscriptionSuccess",
payload: false
}
});
}
if(alreadyExists == false && validatesAsEmail == true){
console.warn ("Wrote to the database and sent client a positive response ",context.message.data.userInfo.email);
@ -61,7 +73,7 @@ exports.handleMessage = function(hook_name, context, callback){
context.client.json.send({ type: "COLLABROOM",
data:{
type: "email_subscription_success",
type: "emailSubscriptionSuccess",
payload: true
}
});