summaryrefslogtreecommitdiff
path: root/app/views/projects/project_members/index.html.haml
blob: 0239e408e872881124a3dbd3aef6fb66d0f07464 (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
- add_page_specific_style 'page_bundles/members'
- page_title _("Members")

.row.gl-mt-3
  .col-lg-12
    - if can_invite_members_for_project?(@project) || can_invite_group_for_project?(@project)
      .row
        .col-md-12.col-lg-6.gl-display-flex
          .gl-flex-direction-column.gl-flex-wrap.align-items-baseline
            %h4
              = _("Project members")
            .gl-justify-content-bottom.gl-display-flex.align-items-center
              - if can?(current_user, :admin_project_member, @project)
                %p= share_project_description(@project)
              - else
                %p
                  = html_escape(_("Members can be added by project %{i_open}Maintainers%{i_close} or %{i_open}Owners%{i_close}")) % { i_open: '<i>'.html_safe, i_close: '</i>'.html_safe }
        .col-md-12.col-lg-6
          .gl-display-flex.gl-flex-wrap.gl-justify-content-end
            - if can_admin_project_member?(@project)
              = link_to _("Import a project"),
                import_project_project_members_path(@project),
                class: "btn btn-default btn-md gl-button gl-mt-3 gl-sm-w-auto gl-w-full",
                title: _("Import members from another project")
            - if @project.allowed_to_share_with_group?
              .js-invite-group-trigger{ data: { classes: 'gl-mt-3 gl-sm-w-auto gl-w-full gl-sm-ml-3', display_text: _('Invite a group') } }
            - if can_admin_project_member?(@project)
              .js-invite-members-trigger{ data: { variant: 'success',
                classes: 'gl-mt-3 gl-sm-w-auto gl-w-full gl-sm-ml-3',
                trigger_source: 'project-members-page',
                display_text: _('Invite members') } }
        = render 'projects/invite_members_modal', project: @project

    - else
      - if project_can_be_shared?
        %h4
          = _("Project members")
        - if can?(current_user, :admin_project_member, @project)
          %p= share_project_description(@project)
        - else
          %p
            = html_escape(_("Members can be added by project %{i_open}Maintainers%{i_close} or %{i_open}Owners%{i_close}")) % { i_open: '<i>'.html_safe, i_close: '</i>'.html_safe }

    - if Feature.disabled?(:invite_members_group_modal, @project.group) && can?(current_user, :admin_project_member, @project) && project_can_be_shared?
      - if !membership_locked? && @project.allowed_to_share_with_group?
        %ul.nav-links.nav.nav-tabs.gitlab-tabs{ role: 'tablist' }
          %li.nav-tab{ role: 'presentation' }
            %a.nav-link.active{ href: '#invite-member-pane', id: 'invite-member-tab', data: { toggle: 'tab' }, role: 'tab' }= _("Invite member")
          %li.nav-tab{ role: 'presentation', class: ('active' if membership_locked?) }
            %a.nav-link{ href: '#invite-group-pane', id: 'invite-group-tab', data: { toggle: 'tab', qa_selector: 'invite_group_tab' }, role: 'tab' }= _("Invite group")

        .tab-content.gitlab-tab-content
          .tab-pane.active{ id: 'invite-member-pane', role: 'tabpanel' }
            = render 'shared/members/invite_member',
              submit_url: project_project_members_path(@project),
              access_levels: ProjectMember.access_level_roles,
              default_access_level: @project_member.access_level,
              can_import_members?: can_admin_project_member?(@project),
              import_path: import_project_project_members_path(@project)
          .tab-pane{ id: 'invite-group-pane', role: 'tabpanel', class: ('active' if membership_locked?) }
            = render 'shared/members/invite_group',
              submit_url: project_group_links_path(@project),
              access_levels: ProjectGroupLink.access_options,
              default_access_level: ProjectGroupLink.default_access,
              group_link_field: 'link_group_id',
              group_access_field: 'link_group_access',
              groups_select_tag_data: { skip_groups: @skip_groups }
      - elsif !membership_locked?
        .invite-member
          = render 'shared/members/invite_member',
            submit_url: project_project_members_path(@project),
            access_levels: ProjectMember.access_level_roles,
            default_access_level: @project_member.access_level,
            can_import_members?: can_admin_project_member?(@project),
            import_path: import_project_project_members_path(@project)
      - elsif @project.allowed_to_share_with_group?
        .invite-group
          = render 'shared/members/invite_group',
            access_levels: ProjectGroupLink.access_options,
            default_access_level: ProjectGroupLink.default_access,
            submit_url: project_group_links_path(@project),
            group_link_field: 'link_group_id',
            group_access_field: 'link_group_access',
            groups_select_tag_data: { skip_groups: @skip_groups }
    .js-project-members-list-app{ data: { members_data: project_members_app_data_json(@project,
                                                                                      members: @project_members,
                                                                                      group_links: @group_links,
                                                                                      invited: @invited_members,
                                                                                      access_requests: @requesters) } }
      .loading
        .gl-spinner.gl-spinner-md