diff options
| author | jessib <jessib@leap.se> | 2013-07-09 11:53:58 -0700 | 
|---|---|---|
| committer | jessib <jessib@leap.se> | 2013-07-09 11:53:58 -0700 | 
| commit | 09b7f01cac6df1ae11f4129b20b781b78a3706ac (patch) | |
| tree | 3921eaa5edd03d80e6b402c5c2f88dda6338ab3a /users/app/assets/javascripts/users.js | |
| parent | 9979b50848ce27730f880159512933e50d5ae0e4 (diff) | |
| parent | 3113f8b814417a896ad5340fda88927733f8ab22 (diff) | |
Merge branch 'master' into feature/authentication_generic_error
Conflicts:
	app/views/layouts/_messages.html.haml
	app/views/layouts/application.html.haml
	users/app/assets/javascripts/users.js.coffee
Diffstat (limited to 'users/app/assets/javascripts/users.js')
| -rw-r--r-- | users/app/assets/javascripts/users.js | 78 | 
1 files changed, 78 insertions, 0 deletions
diff --git a/users/app/assets/javascripts/users.js b/users/app/assets/javascripts/users.js new file mode 100644 index 0000000..4195df8 --- /dev/null +++ b/users/app/assets/javascripts/users.js @@ -0,0 +1,78 @@ +(function() { +  // +  // LOCAL FUNCTIONS +  // + +  var poll_users, prevent_default, form_failed, form_passed; + +  prevent_default = function(event) { +    return event.preventDefault(); +  }; + +  poll_users = function(query, process) { +    return $.get("/1/users.json", { +      query: query +    }).done(process); +  }; + +  // +  // PUBLIC FUNCTIONS +  // + +  srp.session = new srp.Session(); + +  srp.signedUp = function() { +    return srp.login(); +  }; + +  srp.loggedIn = function() { +    return window.location = '/'; +  }; + +  srp.updated = function() { +    return window.location = '/users/' + srp.session.id(); +  }; + +  // +  // if a json request returns an error, this function gets called and +  // decorates the appropriate fields with the error messages. +  // +  srp.error = function(message) { +    var element, error, field; +    if ($.isPlainObject(message) && message.errors) { +      for (field in message.errors) { +	if (field == 'base') { +	  alert_message(message.errors[field]); +	  next; +	} +        error = message.errors[field]; +        element = $('form input[name$="[' + field + ']"]'); +        if (!element) { +          next; +        } +        element.trigger('element:validate:fail.ClientSideValidations', error).data('valid', false); +      } +    } else if (message.error) { +      alert_message(message.error); +    } else { +      alert_message(JSON.stringify(message)); +    } +  }; + +  // +  // INIT +  // + +  $(document).ready(function() { +    $('#new_user').submit(prevent_default); +    $('#new_user').submit(srp.signup); +    $('#new_session').submit(prevent_default); +    $('#new_session').submit(srp.login); +    $('#update_login_and_password').submit(prevent_default); +    $('#update_login_and_password').submit(srp.update); +    return $('#user-typeahead').typeahead({ +      source: poll_users +    }); +  }); + +}).call(this);  | 
