validation
This commit is contained in:
		
							parent
							
								
									c3bb3fb22b
								
							
						
					
					
						commit
						68dd65cc7a
					
				
					 7 changed files with 50 additions and 18 deletions
				
			
		|  | @ -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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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(); | ||||
| }; | ||||
|  |  | |||
							
								
								
									
										5
									
								
								ep.json
									
										
									
									
									
								
							
							
						
						
									
										5
									
								
								ep.json
									
										
									
									
									
								
							|  | @ -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" | ||||
|       } | ||||
|     } | ||||
|  |  | |||
|  | @ -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" | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
							
								
								
									
										3
									
								
								templates/embedFrame.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								templates/embedFrame.html
									
										
									
									
									
										Normal 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> | ||||
							
								
								
									
										16
									
								
								update.js
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								update.js
									
										
									
									
									
								
							|  | @ -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 | ||||
|                  } | ||||
|               }); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 John McLear
						John McLear