diff --git a/app/coffee/modules/user-settings/main.coffee b/app/coffee/modules/user-settings/main.coffee index 5dd38aa3..6137264f 100644 --- a/app/coffee/modules/user-settings/main.coffee +++ b/app/coffee/modules/user-settings/main.coffee @@ -68,22 +68,6 @@ class UserSettingsController extends mixOf(taiga.Controller, taiga.PageMixin) return promise.then(=> @.loadProject()) - saveUserProfile: -> - updatingEmail = @scope.user.isAttributeModified("email") - promise = @repo.save(@scope.user) - promise.then => - @auth.setUser(@scope.user) - if updatingEmail - @confirm.success("Check your inbox!
- We have sent a mail to your account
- with the instructions to set your new address") #TODO: i18n - else - @confirm.notify('success') - - promise.then null, (response) => - @confirm.notify('error', response._error_message) - @scope.user = @auth.getUser() - openDeleteLightbox: -> @rootscope.$broadcast("deletelightbox:new", @scope.user) @@ -94,21 +78,35 @@ module.controller("UserSettingsController", UserSettingsController) ## User Profile Directive ############################################################################# -UserProfileDirective = () -> +UserProfileDirective = ($confirm, $auth, $repo) -> link = ($scope, $el, $attrs) -> - form = $el.find("form").checksley() - $el.on "click", ".user-profile form .save-profile", (event) -> + form = $el.find("form").checksley() return if not form.validate() - $ctrl = $el.controller() - $ctrl.saveUserProfile() + + changeEmail = $scope.user.isAttributeModified("email") + + onSuccess = (data) => + $auth.setUser($scope.user) + if changeEmail + $confirm.success("Check your inbox!
+ We have sent a mail to your account
+ with the instructions to set your new address") #TODO: i18n + else + $confirm.notify('success') + + onError = (data) => + form.setErrors(data) + $confirm.notify('error', data._error_message) + + $repo.save($scope.user).then(onSuccess, onError) $scope.$on "$destroy", -> $el.off() return {link:link} -module.directive("tgUserProfile", UserProfileDirective) +module.directive("tgUserProfile", ["$tgConfirm", "$tgAuth", "$tgRepo", UserProfileDirective]) ############################################################################# diff --git a/app/partials/user-profile.jade b/app/partials/user-profile.jade index 513507b9..532f6ac0 100644 --- a/app/partials/user-profile.jade +++ b/app/partials/user-profile.jade @@ -22,28 +22,43 @@ block content img.avatar(ng-src="{{user.big_photo}}" alt="avatar") div.overlay span.icon.icon-spinner - input(type="file", id="avatar-field", tg-avatar-model="avatarAttachment" class="hidden") + input(type="file", id="avatar-field", class="hidden", + tg-avatar-model="avatarAttachment") + p The image will be cropped to 80x80 size. a.button.button-green.change Change a.use-gravatar Use gravatar image + div.data fieldset - label(for="email") Email - input(type="text", name="email", placeholder="email", id="email", ng-model="user.email", data-type="email") + label(for="email") Username + input(type="text", name="username", id="username", placeholder="username", + ng-model="user.username", data-required="true", data-maxlength="255", + data-regexp="^[\\w.-]+$") fieldset - label(for="full-name") Display name - input(type="text", name="full_name", placeholder="Set your display Name in Taiga (ex. John Doe)", id="full-name", - ng-model="user.full_name") + label(for="email") Email + input(type="text", name="email", id="email", placeholder="email", + ng-model="user.email", data-type="email", data-required="true", + data-maxlength="255") + + fieldset + label(for="full-name") Full name + input(type="text", name="full_name", id="full-name", + placeholder="Set your full name (ex. Íñigo Montoya)", + ng-model="user.full_name", data-required="true", + data-maxlength="256") fieldset label(for="bio") Bio - textarea(name="bio", placeholder="Bio", id="bio", ng-model="user.bio") + textarea(name="bio", id="bio", placeholder="Tell us something about you", + ng-model="user.bio") fieldset.submit input(type="submit", class="hidden") a.button.button-green.save-profile(href="") Save - a.delete-account(href="", title="Delete Taiga account", ng-click="ctrl.openDeleteLightbox()") Delete Taiga account + a.delete-account(href="", title="Delete Taiga account", + ng-click="ctrl.openDeleteLightbox()") Delete Taiga account div.lightbox.lightbox-delete-account.hidden(tg-lb-delete-user) include views/modules/lightbox-delete-account diff --git a/app/partials/views/modules/invitation-register-form.jade b/app/partials/views/modules/invitation-register-form.jade index 6e917cff..5eec1e53 100644 --- a/app/partials/views/modules/invitation-register-form.jade +++ b/app/partials/views/modules/invitation-register-form.jade @@ -2,7 +2,7 @@ form.register-form p.form-header Register a new Taiga account (free) fieldset input(type="text", name="username", ng-model="dataRegister.username", - data-required="true", data-maxlength="30", data-regexp="^[\\w.-]+$", + data-required="true", data-maxlength="255", data-regexp="^[\\w.-]+$", placeholder="Pick a username (case sensitive)") fieldset @@ -11,8 +11,9 @@ form.register-form placeholder="Pick your full name") fieldset - input(type="text", name="email", ng-model="dataRegister.email", data-required="true", - placeholder="Your email") + input(type="text", name="email", ng-model="dataRegister.email", + data-required="true", data-maxlength="255", + placeholder="Your email") fieldset input(type="password", name="password", ng-model="dataRegister.password", data-required="true", diff --git a/app/partials/views/modules/register-form.jade b/app/partials/views/modules/register-form.jade index 4c640a16..0e0e8505 100644 --- a/app/partials/views/modules/register-form.jade +++ b/app/partials/views/modules/register-form.jade @@ -2,7 +2,7 @@ div.register-form-container(tg-register) form.register-form fieldset input(type="text", name="username", ng-model="data.username", - data-required="true", data-maxlength="30", data-regexp="^[\\w.-]+$", + data-required="true", data-maxlength="255", data-regexp="^[\\w.-]+$", placeholder="Pick a username (case sensitive)") fieldset @@ -11,8 +11,9 @@ div.register-form-container(tg-register) placeholder="Pick your full name") fieldset - input(type="text", name="email", ng-model="data.email", data-required="true", - placeholder="Your email") + input(type="text", name="email", ng-model="data.email", + data-required="true", data-maxlength="255", + placeholder="Your email") fieldset input(type="password", name="password", ng-model="data.password", data-required="true",