materio-base-legacy/js/materio_user.js
2013-12-07 11:15:03 +01:00

147 lines
4.4 KiB
JavaScript
Executable File

// @codekit-prepend "gui.js"
// @koala-prepend "gui_ck_fw/gui.js"
(function($) {
MaterioUser = function(){
var _isAdhesion = $('body').is('.page-node-11187') || $('body').is('.page-node-11186');
function init() {
//trace('MaterioUser init compile test 3');
if(_isAdhesion)
initAdhesion();
};
function initAdhesion(){
// trace('initAdhesion');
$('.get-link a').bind('click', function(event) {
// trace('get-link click');
// do not show the registration form if already logged-in
if($('body').is('.logged-in'))
return true;
// else show the ajaxified registration form
event.preventDefault();
var $this = $(this),
href = $this.attr("href"),
destination = href.match('/\?destination=([^,]+)');
destination = "/" + destination[1].replace('%23', '#');
destination = destination.replace('//', '/');
// trace('destination', destination);
if($this.parents('.gratos').size()){
loadRegisterBlock(destination);
}else{
loadLoginAndRegisterBlock(destination);
}
return false;
});
};
function loadRegisterBlock (destination) {
// trace("loadRegisterBlock :: dest = "+destination);
$.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_user/registerblock', function(json){formLoaded(json, destination);});
}
function loadLoginAndRegisterBlock(destination){
// trace('loadRegistrationBlock :: dest = '+destination);
$.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_user/loginandregisterblock', function(json){formLoaded(json, destination);});
};
function formLoaded(json, destination){
//trace('formLoaded | json', json);
var $modal = $('<div>').addClass('modal-content').append(json.block);
var id,label, description;
$('input.form-text', $modal).each(function(i) {
id = $(this).attr('id');
label = $('label[for='+id+']').hide().text();
description = $(this).parent().find('.description').hide().text();
$(this).attr('placeholder', label).attr('title', description);
});
// $('.homepage-textfield', $modal).hide();
$('body').append($('<div>').addClass('modal-wrapper').append($modal));
$('.modal-wrapper').bind('click', function(event) {
$(this).remove();
});
$('.modal-content').bind('click', function(event) {
event.stopPropagation();
});
// doesn't work
// Drupal.attachBehaviors('bodi>.modal-wrapper');
$.event.trigger('ajax-register-block-loaded');
$("#user-register-form #edit-submit, #user-register-form #edit-submit--2", $modal).click(function(event){
event.preventDefault();
$.ajax({
type: 'POST',
dataType:'json',
url: Drupal.settings.basePath+Drupal.settings.pathPrefix+"materio_user/register/submit",
data: $('#user-register-form', $modal).serialize(),
success: function(data) { onUserLoginRegisterSubmit($('#user-register-form'), data, destination);},
error: function() {trace('error');}
});
return false;
});
$("#user-login #edit-submit", $modal).click(function(event){
event.preventDefault();
$.ajax({
type: 'POST',
dataType:'json',
url: Drupal.settings.basePath+Drupal.settings.pathPrefix+"materio_user/login/submit",
data: $('#user-login', $modal).serialize(),
success: function(data){ onUserLoginRegisterSubmit($('#user-login'), data, destination); },
error: function() { trace('error'); }
});
return false;
});
// google analytics
// $.event.trigger({
// type : "record-stat",
// categorie : 'Search',
// action : keys,
// label : 'filters : '+ stringTypes.join(' ,'),
// value : json.count
// });
};
function onUserLoginRegisterSubmit($form, data, destination){
cleanModalErrors();
if(data.errors != null){
for(field in data.errors){
$('input[name='+field+']', $form).addClass('error');
$form.prepend($('<div>').addClass('message-error').html(data.errors[field]));
}
}else{
// trace('destination = '+destination);
window.location.pathname = destination;
}
};
function cleanModalErrors() {
$('.message-error', '.modal-content').remove();
$('input', '.modal-content').removeClass('error');
}
init();
};
$(document).ready(function() {
var materiouser = new MaterioUser();
});
})(jQuery);