Skip to content

Commit

Permalink
email modal with ajax update on user model + bugfix uuid in user model
Browse files Browse the repository at this point in the history
  • Loading branch information
isery committed Sep 28, 2014
1 parent 971def4 commit b1a4e4b
Show file tree
Hide file tree
Showing 15 changed files with 1,067 additions and 24 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,5 @@ npm-debug.log
nbproject
.idea
.node_history
config/meetup.js
config/oauthio.js
2 changes: 1 addition & 1 deletion api/controllers/OAuthController.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module.exports = {
sails.log.error(error);
return res.send(400, "An error occured");
}
User.findOrCreate({ id : user.id }, user, function (error, user) {
User.findOrCreate({ externId : user.externId }, user, function (error, user) {
if (error) {
sails.log.error(error);
return res.send(400, "An error occured");
Expand Down
11 changes: 11 additions & 0 deletions api/controllers/UserController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/**
* UsersController
*
* @description :: Server-side logic for managing Users
* @help :: See http://links.sailsjs.org/docs/controllers
*/

module.exports = {

};

22 changes: 8 additions & 14 deletions api/models/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,27 @@ module.exports = {
attributes: {

uuid: {
type: 'string',
primaryKey: true,
unique: true,
required: true,
uuidv4: true
type: 'STRING',
primaryKey: true,
uuidv4: true,
defaultsTo: uuid.v4
},
name: {
type: 'string',
required: true
},
email: {
type: 'email'
},
image: {
type: 'string'
},
link: {
type: 'string'
},
id: {
externId: {
type: 'integer'
}
},


beforeValidate: function (values, next) {
if (_.isEmpty(values.uuid)) {
values.uuid = uuid.v4();
}
next();
}
};

4 changes: 2 additions & 2 deletions api/services/OAuthioService.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module.exports = {
name: info.name,
image: info.raw.photo.thumb_link,
link: info.raw.link,
id: info.raw.id
externId: info.raw.id
};
},

Expand All @@ -20,7 +20,7 @@ module.exports = {
name: info.alias,
image: info.avatar,
link: info.raw.html_url,
id: 0 //check out the info for the correct id
externId: 0 //check out the info for the correct id
};
},
stateToken: function (session) {
Expand Down
29 changes: 29 additions & 0 deletions assets/js/init.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,35 @@
duration = 500;
button = $("<a href=\"#\" class=\"back-to-top\"><i class=\"fa fa-angle-up\"></i></a>");
button.appendTo("body");
$('.md-trigger').modalEffects({
afterClose: function(button, modal) {
$('.md-trigger').removeClass('highlighted');
$(button).addClass('highlighted');
$('#afterclose')
.removeClass('invisible')
.html('Just closed modal: "'+ $(button).html() + '"');
setTimeout(function(){
$(button).removeClass('highlighted');
$('#afterclose').addClass('invisible');
}, 3000);
}
});

$('.md-close').click(function(e) {
var email = $('#modal-email').val()
var uuid = $('#modal-uuid').val()
$.ajax({
url: '/User/'+uuid,
type: 'PUT',
data: {email: email},
success: function(response) {
console.log(response)
//TODO: Error handling
//when no email, validation error
}
});
})

jQuery(window).scroll(function () {
if (jQuery(this).scrollTop() > offset) {
jQuery(".back-to-top").fadeIn(duration);
Expand Down
224 changes: 224 additions & 0 deletions assets/js/jquery.modalEffects.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
//Button Trigger
(function( $ ){
var $this = new Object();
var methods = {
init : function( options ) {
$this = $.extend({}, this, methods);
$this.searching = false;
$this.o = new Object();

var defaultOptions = {
overlaySelector: '.md-overlay',
closeSelector: '.md-close',
classAddAfterOpen: 'md-show',
modalAttr: 'data-modal',
perspectiveClass: 'md-perspective',
perspectiveSetClass: 'md-setperspective',
afterOpen: function(button, modal) {
//do your stuff
},
afterClose: function(button, modal) {
//do your suff
}
};

$this.o = $.extend({}, defaultOptions, options);
$this.n = new Object();


var overlay = $($this.o.overlaySelector);
$(this).click(function() {
var modal = $('#' + $(this).attr($this.o.modalAttr)),
close = $($this.o.closeSelector, modal);
var el = $(this);
$(modal).addClass($this.o.classAddAfterOpen);
/* overlay.removeEventListener( 'click', removeModalHandler );
overlay.addEventListener( 'click', removeModalHandler ); */
$(overlay).on('click', function () {
removeModalHandler();
$this.afterClose(el, modal);
$(overlay).off('click');
});
if( $(el).hasClass($this.o.perspectiveSetClass) ) {
setTimeout( function() {
$(document.documentElement).addClass($this.o.perspectiveClass);
}, 25 );
}

$this.afterOpen(el, modal);
setTimeout( function() {
modal.css({'perspective':'none'});

//3D Blur Bug Fix
if(modal.height() % 2 != 0){modal.css({'height':modal.height() + 1});}

}, 500 );

function removeModal( hasPerspective ) {
$(modal).removeClass($this.o.classAddAfterOpen);
modal.css({'perspective':'1300px'});
if( hasPerspective ) {
$(document.documentElement).removeClass($this.o.perspectiveClass);
}
}

function removeModalHandler() {
removeModal($(el).hasClass($this.o.perspectiveSetClass));
}

$(close).on( 'click', function( ev ) {
ev.stopPropagation();
removeModalHandler();
$this.afterClose(el, modal);
});

});

},
afterOpen: function (button, modal) {
$this.o.afterOpen(button, modal);
},
afterClose: function (button, modal) {
$this.o.afterClose(button, modal);
}
};

$.fn.modalEffects = function( method ) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.modalEffects' );
}

};
function is_touch_device(){
return !!("ontouchstart" in window) ? 1 : 0;
}
})( jQuery );

//Nifty Modal
;(function($) {

$.fn.niftyModal = function(method) {

var defaults = {
overlaySelector: '.md-overlay',
closeSelector: '.md-close',
classAddAfterOpen: 'md-show',
modalAttr: 'data-modal',
perspectiveClass: 'md-perspective',
perspectiveSetClass: 'md-setperspective',
afterOpen: function(modal) {
//do your stuff
},
afterClose: function(modal) {
//do your suff
}
}

var config = {}

var methods = {

init : function(options) {
return this.each(function() {
config = $.extend({}, defaults, options);
var modal = $(this);

//Show modal
helpers.showModal(modal);

});
},

toggle: function(options) {
return this.each(function() {
config = $.extend({}, defaults, options);
var modal = $(this);
if(modal.hasClass(config.classAddAfterOpen)){
helpers.removeModal(modal);
}else{
helpers.showModal(modal);
}
});
},

show: function(options) {
config = $.extend({}, defaults, options);
return this.each(function() {
helpers.showModal($(this));
});
},

hide: function(options) {
config = $.extend({}, defaults, options);
return this.each(function() {
helpers.removeModal($(this));
});
}
}

var helpers = {

removeModal: function(mod) {
mod.removeClass(config.classAddAfterOpen);
mod.css({'perspective':'1300px'});
mod.trigger('hide');
},

showModal: function(mod){
var overlay = $(config.overlaySelector);
var close = $(config.closeSelector, mod);
mod.addClass(config.classAddAfterOpen);

//Overlay Click Event
overlay.on('click', function (e) {
var after = config.afterClose(mod, e);
if( after === undefined || after != false){
helpers.removeModal(mod);
overlay.off('click');
}
});

//Fire after open event
config.afterOpen(mod);
setTimeout( function() {
mod.css({'perspective':'none'});

//3D Blur Bug Fix
if(mod.height() % 2 != 0){mod.css({'height':modal.height() + 1});}

}, 500 );

//Close Event
close.on( 'click', function( ev ) {
var after = config.afterClose(mod, ev);
if( after === undefined || after != false){
helpers.removeModal(mod);
overlay.off('click');
}
ev.stopPropagation();
});

mod.trigger('show');
}

}

if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error( 'Method "' + method + '" does not exist in niftyModal plugin!');
}

}

})(jQuery);

$(document).ready(function(){
$(".md-trigger").modalEffects();
});
8 changes: 6 additions & 2 deletions assets/js/oauth.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,15 @@ authenticate = function (provider) {
$("#profile-link").attr("href", data.link);
$("#user-image").attr("src", data.image);
$('.signup-button').hide();
if(!data.email) {
$("#modal-uuid").val(data.uuid);
$('.md-trigger').trigger("click");
}
return $('.profile_menu').removeClass("hidden");
}).fail(function (error) {
return console.log("error1");
return console.log("Login Error");
});
}).fail(function (error) {
return console.log("error2");
return console.log("OAuthio Error");
});
};
Loading

0 comments on commit b1a4e4b

Please sign in to comment.