summaryrefslogtreecommitdiff
path: root/app/views/profiles/show.html.haml
blob: 9f79feb4ddd4ed94ab2c21dddab109244ee8d08d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
- breadcrumb_title "Edit Profile"
- @content_class = "limit-container-width" unless fluid_layout

= bootstrap_form_for @user, url: profile_path, method: :put, html: { multipart: true, class: 'edit-user prepend-top-default js-quick-submit' }, authenticity_token: true do |f|
  = form_errors(@user)

  .row
    .col-lg-4.profile-settings-sidebar
      %h4.prepend-top-0
        Public Avatar
      %p
        - if @user.avatar?
          You can change your avatar here
          - if gravatar_enabled?
            or remove the current avatar to revert to #{link_to Gitlab.config.gravatar.host, 'https://' + Gitlab.config.gravatar.host}
        - else
          You can upload an avatar here
          - if gravatar_enabled?
            or change it at #{link_to Gitlab.config.gravatar.host, 'https://' + Gitlab.config.gravatar.host}
    .col-lg-8
      .clearfix.avatar-image.append-bottom-default
        = link_to avatar_icon_for_user(@user, 400), target: '_blank', rel: 'noopener noreferrer' do
          = image_tag avatar_icon_for_user(@user, 160), alt: '', class: 'avatar s160'
      %h5.prepend-top-0= _("Upload new avatar")
      .prepend-top-5.append-bottom-10
        %button.btn.js-choose-user-avatar-button{ type: 'button' }= _("Choose file...")
        %span.avatar-file-name.prepend-left-default.js-avatar-filename= _("No file chosen")
        = f.file_field_without_bootstrap :avatar, class: 'js-user-avatar-input hidden', accept: 'image/*'
      .form-text.text-muted= _("The maximum file size allowed is 200KB.")
      - if @user.avatar?
        %hr
        = link_to _('Remove avatar'), profile_avatar_path, data: { confirm: _('Avatar will be removed. Are you sure?') }, method: :delete, class: 'btn btn-danger btn-inverted'

  %hr
  .row
    .col-lg-4.profile-settings-sidebar
      %h4.prepend-top-0= s_("User|Current status")
      %p= s_("Profiles|This emoji and message will appear on your profile and throughout the interface.")
    .col-lg-8
      = f.fields_for :status, @user.status do |status_form|
        - emoji_button = button_tag type: :button,
          class: 'js-toggle-emoji-menu emoji-menu-toggle-button btn has-tooltip',
          title: s_("Profiles|Add status emoji") do
          - if @user.status
            = emoji_icon @user.status.emoji
          %span#js-no-emoji-placeholder.no-emoji-placeholder{ class: ('hidden' if @user.status) }
            = sprite_icon('emoji_slightly_smiling_face', css_class: 'award-control-icon-neutral')
            = sprite_icon('emoji_smiley', css_class: 'award-control-icon-positive')
            = sprite_icon('emoji_smile', css_class: 'award-control-icon-super-positive')
        - reset_message_button = button_tag type: :button,
          id: 'js-clear-user-status-button',
          class: 'clear-user-status btn has-tooltip',
          title: s_("Profiles|Clear status") do
          = sprite_icon("close")

        = status_form.hidden_field :emoji, id: 'js-status-emoji-field'
        = status_form.text_field :message,
          id: 'js-status-message-field',
          class: 'form-control input-lg',
          label: s_("Profiles|Your status"),
          prepend: emoji_button,
          append: reset_message_button,
          placeholder: s_("Profiles|What's your status?")

  %hr
  .row
    .col-lg-4.profile-settings-sidebar
      %h4.prepend-top-0
        Main settings
      %p
        This information will appear on your profile.
        - if current_user.ldap_user?
          Some options are unavailable for LDAP accounts
    .col-lg-8
      .row
        - if @user.read_only_attribute?(:name)
          = f.text_field :name, required: true, readonly: true, wrapper: { class: 'col-md-9' },
          help: "Your name was automatically set based on your #{ attribute_provider_label(:name) } account, so people you know can recognize you."
        - else
          = f.text_field :name, label: 'Full name', required: true, wrapper: { class: 'col-md-9' }, help: "Enter your name, so people you know can recognize you."
        = f.text_field :id, readonly: true, label: 'User ID', wrapper: { class: 'col-md-3' }

      - if @user.read_only_attribute?(:email)
        = f.text_field :email, required: true, readonly: true, help: "Your email address was automatically set based on your #{ attribute_provider_label(:email) } account."
      - else
        = f.text_field :email, required: true, value: (@user.email unless @user.temp_oauth_email?),
          help: user_email_help_text(@user)
      = f.select :public_email, options_for_select(@user.all_emails, selected: @user.public_email),
        { help: 'This email will be displayed on your public profile.', include_blank: 'Do not show on profile' },
        control_class: 'select2'
      = f.select :preferred_language, Gitlab::I18n::AVAILABLE_LANGUAGES.map { |value, label| [label, value] },
        { help: 'This feature is experimental and translations are not complete yet.' },
        control_class: 'select2'
      = f.text_field :skype
      = f.text_field :linkedin
      = f.text_field :twitter
      = f.text_field :website_url, label: 'Website'
      - if @user.read_only_attribute?(:location)
        = f.text_field :location, readonly: true, help: "Your location was automatically set based on your #{ attribute_provider_label(:location) } account."
      - else
        = f.text_field :location
      = f.text_field :organization
      = f.text_area :bio, rows: 4, maxlength: 250, help: 'Tell us about yourself in fewer than 250 characters.'
      %hr
      %h5 Private profile
      - private_profile_label = capture do
        Don't display activity-related personal information on your profile
        = link_to icon('question-circle'), help_page_path('user/profile/index.md', anchor: 'private-profile')
      = f.check_box :private_profile, label: private_profile_label
      .prepend-top-default.append-bottom-default
        = f.submit 'Update profile settings', class: 'btn btn-success'
        = link_to 'Cancel', user_path(current_user), class: 'btn btn-cancel'

.modal.modal-profile-crop
  .modal-dialog
    .modal-content
      .modal-header
        %h4.modal-title
          Position and size your new avatar
        %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') }
          %span{ "aria-hidden": true } ×
      .modal-body
        .profile-crop-image-container
          %img.modal-profile-crop-image{ alt: 'Avatar cropper' }
        .crop-controls
          .btn-group
            %button.btn.btn-primary{ data: { method: 'zoom', option: '0.1' } }
              %span.fa.fa-search-plus
            %button.btn.btn-primary{ data: { method: 'zoom', option: '-0.1' } }
              %span.fa.fa-search-minus
      .modal-footer
        %button.btn.btn-primary.js-upload-user-avatar{ type: 'button' }
          Set new profile picture