show.html.haml 6.63 KB
Newer Older
1 2
- @hide_top_links = true
- @hide_breadcrumbs = true
3 4 5
- page_title       @user.name
- page_description @user.bio
- header_title     @user.name, user_path(@user)
6
- @no_container = true
Douwe Maan's avatar
Douwe Maan committed
7

8
= content_for :meta_tags do
9
  = auto_discovery_link_tag(:atom, user_url(@user, format: :atom), title: "#{@user.name} activity")
10

11
.user-profile
12
  .cover-block.user-cover-block.top-area
13 14
    .cover-controls
      - if @user == current_user
15
        = link_to profile_path, class: 'btn btn-default has-tooltip', title: 'Edit profile', 'aria-label': 'Edit profile' do
16 17
          = icon('pencil')
      - elsif current_user
tauriedavis's avatar
tauriedavis committed
18 19
        - if @user.abuse_report
          %button.btn.btn-danger{ title: 'Already reported for abuse',
20
            data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } }
tauriedavis's avatar
tauriedavis committed
21 22
            = icon('exclamation-circle')
        - else
23
          = link_to new_abuse_report_path(user_id: @user.id, ref_url: request.referrer), class: 'btn',
24
            title: 'Report abuse', data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } do
tauriedavis's avatar
tauriedavis committed
25
            = icon('exclamation-circle')
26 27 28
      - if can?(current_user, :read_user_profile, @user)
        = link_to user_path(@user, rss_url_options), class: 'btn btn-default has-tooltip', title: 'Subscribe', 'aria-label': 'Subscribe' do
          = icon('rss')
29
      - if current_user && current_user.admin?
30
        = link_to [:admin, @user], class: 'btn btn-default', title: 'View user in admin area',
31 32
          data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
          = icon('users')
33

tauriedavis's avatar
tauriedavis committed
34 35
    .profile-header
      .avatar-holder
36 37
        = link_to avatar_icon_for_user(@user, 400), target: '_blank', rel: 'noopener noreferrer' do
          = image_tag avatar_icon_for_user(@user, 90), class: "avatar s90", alt: ''
38

39
      .user-info.prepend-left-default.append-right-default
tauriedavis's avatar
tauriedavis committed
40 41
        .cover-title
          = @user.name
Alfredo Sumaran's avatar
Alfredo Sumaran committed
42

43 44 45 46 47
        - if @user.status
          .cover-status
            = emoji_icon(@user.status.emoji)
            = markdown_field(@user.status, :message)

tauriedavis's avatar
tauriedavis committed
48
        .cover-desc.member-date
49 50 51 52 53 54
          %p
            %span.middle-dot-divider
              @#{@user.username}
            - if can?(current_user, :read_user_profile, @user)
              %span.middle-dot-divider
                Member since #{@user.created_at.to_date.to_s(:long)}
tauriedavis's avatar
tauriedavis committed
55

tauriedavis's avatar
tauriedavis committed
56 57 58
        .cover-desc
          - unless @user.public_email.blank?
            .profile-link-holder.middle-dot-divider
59
              = link_to @user.public_email, "mailto:#{@user.public_email}", class: 'text-link'
tauriedavis's avatar
tauriedavis committed
60 61 62 63 64 65
          - unless @user.skype.blank?
            .profile-link-holder.middle-dot-divider
              = link_to "skype:#{@user.skype}", title: "Skype" do
                = icon('skype')
          - unless @user.linkedin.blank?
            .profile-link-holder.middle-dot-divider
66
              = link_to linkedin_url(@user), title: "LinkedIn", target: '_blank', rel: 'noopener noreferrer nofollow' do
tauriedavis's avatar
tauriedavis committed
67 68 69
                = icon('linkedin-square')
          - unless @user.twitter.blank?
            .profile-link-holder.middle-dot-divider
70
              = link_to twitter_url(@user), title: "Twitter", target: '_blank', rel: 'noopener noreferrer nofollow' do
tauriedavis's avatar
tauriedavis committed
71 72 73
                = icon('twitter-square')
          - unless @user.website_url.blank?
            .profile-link-holder.middle-dot-divider
74
              = link_to @user.short_website_url, @user.full_website_url, class: 'text-link', target: '_blank', rel: 'noopener noreferrer nofollow'
tauriedavis's avatar
tauriedavis committed
75 76 77 78
          - unless @user.location.blank?
            .profile-link-holder.middle-dot-divider
              = icon('map-marker')
              = @user.location
79 80
          - unless @user.organization.blank?
            .profile-link-holder.middle-dot-divider
81
              = icon('briefcase')
82
              = @user.organization
83

84 85 86 87
    - if @user.bio.present?
      .cover-desc
        %p.profile-user-bio
          = @user.bio
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
    - unless profile_tabs.empty?
      .scrolling-tabs-container
        .fade-left= icon('angle-left')
        .fade-right= icon('angle-right')
        %ul.nav-links.user-profile-nav.scrolling-tabs.nav.nav-tabs
          - if profile_tab?(:activity)
            %li.js-activity-tab
              = link_to user_path, data: { target: 'div#activity', action: 'activity', toggle: 'tab' } do
                Activity
          - if profile_tab?(:groups)
            %li.js-groups-tab
              = link_to user_groups_path, data: { target: 'div#groups', action: 'groups', toggle: 'tab', endpoint: user_groups_path(format: :json) } do
                Groups
          - if profile_tab?(:contributed)
            %li.js-contributed-tab
              = link_to user_contributed_projects_path, data: { target: 'div#contributed', action: 'contributed', toggle: 'tab', endpoint: user_contributed_projects_path(format: :json) } do
                Contributed projects
          - if profile_tab?(:projects)
            %li.js-projects-tab
              = link_to user_projects_path, data: { target: 'div#projects', action: 'projects', toggle: 'tab', endpoint: user_projects_path(format: :json) } do
                Personal projects
          - if profile_tab?(:snippets)
            %li.js-snippets-tab
              = link_to user_snippets_path, data: { target: 'div#snippets', action: 'snippets', toggle: 'tab', endpoint: user_snippets_path(format: :json) } do
                Snippets
114

115
  %div{ class: container_class }
116
    .tab-content
117 118
      - if profile_tab?(:activity)
        #activity.tab-pane
Clement Ho's avatar
Clement Ho committed
119
          .row-content-block.calender-block.white.second-block.d-none.d-sm-block
120 121 122 123
            .user-calendar{ data: { calendar_path: user_calendar_path(@user, :json), calendar_activities_path: user_calendar_activities_path, utc_offset: Time.zone.utc_offset } }
              %h4.center.light
                %i.fa.fa-spinner.fa-spin
            .user-calendar-activities
124

125 126 127 128 129
          - if can?(current_user, :read_cross_project)
            %h4.prepend-top-20
              Most Recent Activity
            .content_list{ data: { href: user_path } }
            = spinner
130

131 132 133
      - if profile_tab?(:groups)
        #groups.tab-pane
          -# This tab is always loaded via AJAX
134

135 136 137
      - if profile_tab?(:contributed)
        #contributed.tab-pane
          -# This tab is always loaded via AJAX
138

139 140 141
      - if profile_tab?(:projects)
        #projects.tab-pane
          -# This tab is always loaded via AJAX
142

143 144 145
      - if profile_tab?(:snippets)
        #snippets.tab-pane
          -# This tab is always loaded via AJAX
146

147 148
    .loading-status
      = spinner
149 150 151 152 153 154 155 156 157 158

  - if profile_tabs.empty?
    .row
      .col-12
        .svg-content
          = image_tag 'illustrations/profile_private_mode.svg'
      .col-12.text-center
        .text-content
          %h4
            This user has a private profile