Commit 3832b2aa679d71dc857f4a6083f0038a2eeb7a9f
1 parent
3707cc11
Exists in
master
and in
4 other branches
Improve Profile#account page
Showing
2 changed files
with
128 additions
and
79 deletions
Show diff stats
app/helpers/profile_helper.rb
... | ... | @@ -4,4 +4,16 @@ module ProfileHelper |
4 | 4 | 'active' |
5 | 5 | end |
6 | 6 | end |
7 | + | |
8 | + def show_profile_username_tab? | |
9 | + current_user.can_change_username? | |
10 | + end | |
11 | + | |
12 | + def show_profile_social_tab? | |
13 | + Gitlab.config.omniauth.enabled && !current_user.ldap_user? | |
14 | + end | |
15 | + | |
16 | + def show_profile_remove_tab? | |
17 | + Gitlab.config.gitlab.signup_enabled && !current_user.ldap_user? | |
18 | + end | |
7 | 19 | end | ... | ... |
app/views/profiles/account.html.haml
... | ... | @@ -5,91 +5,128 @@ |
5 | 5 | - if current_user.ldap_user? |
6 | 6 | Some options are unavailable for LDAP accounts |
7 | 7 | %hr |
8 | -- unless current_user.ldap_user? | |
9 | - - if Gitlab.config.omniauth.enabled | |
10 | - %fieldset | |
11 | - %legend Social Accounts | |
12 | - .oauth_select_holder | |
13 | - %p.hint Tip: Click on icon to activate signin with one of the following services | |
14 | - - enabled_social_providers.each do |provider| | |
15 | - %span{class: oauth_active_class(provider) } | |
16 | - = link_to authbutton(provider, 32), omniauth_authorize_path(User, provider) | |
17 | 8 | |
18 | 9 | |
19 | - %fieldset.update-password | |
20 | - %legend Password | |
21 | - = form_for @user, url: update_password_profile_path, method: :put do |f| | |
22 | - .padded | |
23 | - %p.slead After a successful password update you will be redirected to login page where you should login with your new password | |
24 | - -if @user.errors.any? | |
25 | - .alert.alert-error | |
26 | - %ul | |
27 | - - @user.errors.full_messages.each do |msg| | |
28 | - %li= msg | |
10 | +.row | |
11 | + .span2 | |
12 | + %ul.nav.nav-pills.nav-stacked.nav-stacked-menu | |
13 | + %li.active | |
14 | + = link_to '#tab-token', 'data-toggle' => 'tab' do | |
15 | + Private Token | |
16 | + %li | |
17 | + = link_to '#tab-password', 'data-toggle' => 'tab' do | |
18 | + Password | |
29 | 19 | |
30 | - .control-group | |
31 | - = f.label :password | |
32 | - .controls= f.password_field :password, required: true | |
33 | - .control-group | |
34 | - = f.label :password_confirmation | |
35 | - .controls | |
36 | - = f.password_field :password_confirmation, required: true | |
37 | - .control-group | |
38 | - .controls | |
39 | - = f.submit 'Save password', class: "btn btn-save" | |
20 | + - if show_profile_social_tab? | |
21 | + %li | |
22 | + = link_to '#tab-social', 'data-toggle' => 'tab' do | |
23 | + Social Accounts | |
40 | 24 | |
25 | + - if show_profile_username_tab? | |
26 | + %li | |
27 | + = link_to '#tab-username', 'data-toggle' => 'tab' do | |
28 | + Change Username | |
41 | 29 | |
30 | + - if show_profile_remove_tab? | |
31 | + %li | |
32 | + = link_to '#tab-remove', 'data-toggle' => 'tab' do | |
33 | + Remove Account | |
34 | + .span10 | |
35 | + .tab-content | |
36 | + .tab-pane.active#tab-token | |
37 | + %fieldset.update-token | |
38 | + %legend | |
39 | + Private token | |
40 | + %span.cred.pull-right | |
41 | + keep it secret! | |
42 | + %div | |
43 | + = form_for @user, url: reset_private_token_profile_path, method: :put do |f| | |
44 | + .data | |
45 | + %p.slead | |
46 | + Your private token is used to access application resources without authentication. | |
47 | + %br | |
48 | + It can be used for atom feeds or the API. | |
49 | + %p.cgray | |
50 | + - if current_user.private_token | |
51 | + = text_field_tag "token", current_user.private_token, class: "input-xxlarge large_text input-xpadding" | |
52 | + = f.submit 'Reset', confirm: "Are you sure?", class: "btn btn-primary btn-build-token" | |
53 | + - else | |
54 | + %span You don`t have one yet. Click generate to fix it. | |
55 | + = f.submit 'Generate', class: "btn success btn-build-token" | |
42 | 56 | |
43 | -%fieldset.update-token | |
44 | - %legend | |
45 | - Private token | |
46 | - %span.cred.pull-right | |
47 | - keep it secret! | |
48 | - .padded | |
49 | - = form_for @user, url: reset_private_token_profile_path, method: :put do |f| | |
50 | - .data | |
51 | - %p.slead | |
52 | - Your private token is used to access application resources without authentication. | |
53 | - %br | |
54 | - It can be used for atom feeds or the API. | |
55 | - %p.cgray | |
56 | - - if current_user.private_token | |
57 | - = text_field_tag "token", current_user.private_token, class: "input-xxlarge large_text input-xpadding" | |
58 | - = f.submit 'Reset', confirm: "Are you sure?", class: "btn btn-primary btn-build-token" | |
59 | - - else | |
60 | - %span You don`t have one yet. Click generate to fix it. | |
61 | - = f.submit 'Generate', class: "btn success btn-build-token" | |
57 | + .tab-pane#tab-password | |
58 | + %fieldset.update-password | |
59 | + %legend Password | |
60 | + = form_for @user, url: update_password_profile_path, method: :put do |f| | |
61 | + %div | |
62 | + %p.slead After a successful password update you will be redirected to login page where you should login with your new password | |
63 | + -if @user.errors.any? | |
64 | + .alert.alert-error | |
65 | + %ul | |
66 | + - @user.errors.full_messages.each do |msg| | |
67 | + %li= msg | |
68 | + .control-group | |
69 | + = f.label :password | |
70 | + .controls= f.password_field :password, required: true | |
71 | + .control-group | |
72 | + = f.label :password_confirmation | |
73 | + .controls | |
74 | + = f.password_field :password_confirmation, required: true | |
75 | + .control-group | |
76 | + .controls | |
77 | + = f.submit 'Save password', class: "btn btn-save" | |
62 | 78 | |
79 | + - if show_profile_social_tab? | |
80 | + .tab-pane#tab-social | |
81 | + %fieldset | |
82 | + %legend Social Accounts | |
83 | + .oauth_select_holder | |
84 | + %p.hint Tip: Click on icon to activate signin with one of the following services | |
85 | + - enabled_social_providers.each do |provider| | |
86 | + %span{class: oauth_active_class(provider) } | |
87 | + = link_to authbutton(provider, 32), omniauth_authorize_path(User, provider) | |
63 | 88 | |
64 | -- if current_user.can_change_username? | |
65 | - %fieldset.update-username | |
66 | - %legend | |
67 | - Username | |
68 | - %small.cred.pull-right | |
69 | - Changing your username can have unintended side effects! | |
70 | - = form_for @user, url: update_username_profile_path, method: :put, remote: true do |f| | |
71 | - .padded | |
72 | - = f.label :username | |
73 | - .controls | |
74 | - = f.text_field :username, required: true | |
75 | - | |
76 | - %span.loading-gif.hide= image_tag "ajax_loader.gif" | |
77 | - %span.update-success.cgreen.hide | |
78 | - %i.icon-ok | |
79 | - Saved | |
80 | - %span.update-failed.cred.hide | |
81 | - %i.icon-remove | |
82 | - Failed | |
83 | - %ul.cred | |
84 | - %li This will change the web URL for personal projects. | |
85 | - %li This will change the git path to repositories for personal projects. | |
86 | - .controls | |
87 | - = f.submit 'Save username', class: "btn btn-save" | |
89 | + - if show_profile_username_tab? | |
90 | + .tab-pane#tab-username | |
91 | + %fieldset.update-username | |
92 | + %legend | |
93 | + Username | |
94 | + %small.cred.pull-right | |
95 | + Changing your username can have unintended side effects! | |
96 | + = form_for @user, url: update_username_profile_path, method: :put, remote: true do |f| | |
97 | + %div | |
98 | + .control-group | |
99 | + = f.label :username | |
100 | + .controls | |
101 | + = f.text_field :username, required: true | |
102 | + | |
103 | + %span.loading-gif.hide= image_tag "ajax_loader.gif" | |
104 | + %span.update-success.cgreen.hide | |
105 | + %i.icon-ok | |
106 | + Saved | |
107 | + %span.update-failed.cred.hide | |
108 | + %i.icon-remove | |
109 | + Failed | |
110 | + %ul.cred | |
111 | + %li This will change the web URL for personal projects. | |
112 | + %li This will change the git path to repositories for personal projects. | |
113 | + .controls | |
114 | + = f.submit 'Save username', class: "btn btn-save" | |
88 | 115 | |
89 | -- if gitlab_config.signup_enabled && !current_user.ldap_user? | |
90 | - %fieldset.remove-account | |
91 | - %legend | |
92 | - Remove account | |
93 | - %small.cred.pull-right | |
94 | - Before removing the account you must remove all projects! | |
95 | - = link_to 'Delete account', user_registration_path, confirm: "REMOVE #{current_user.name}? Are you sure?", method: :delete, class: "btn btn-remove delete-key btn-small pull-right" | |
116 | + - if show_profile_remove_tab? | |
117 | + .tab-pane#tab-remove | |
118 | + %fieldset.remove-account | |
119 | + %legend | |
120 | + Remove account | |
121 | + %div | |
122 | + %p Deleting an account has the following effects: | |
123 | + %ul | |
124 | + %li All user content like authored issues, snippets, comments will be removed | |
125 | + - rp = current_user.personal_projects.count | |
126 | + - unless rp.zero? | |
127 | + %li #{pluralize rp, 'personal project'} will be removed and cannot be restored | |
128 | + - if current_user.solo_owned_groups.present? | |
129 | + %li | |
130 | + Next groups will be abandoned. You should transfer or remove them: | |
131 | + %strong #{current_user.solo_owned_groups.map(&:name).join(', ')} | |
132 | + = link_to 'Delete account', user_registration_path, confirm: "REMOVE #{current_user.name}? Are you sure?", method: :delete, class: "btn btn-remove" | ... | ... |