0a8aeb46dc
1. It makes sense to reuse these constants since we had them duplicated in the previous enum implementation. This also simplifies our `check_access` implementation, because we can use `project.team.max_member_access` directly. 2. Use `accepts_nested_attributes_for` to create push/merge access levels. This was a bit fiddly to set up, but this simplifies our code by quite a large amount. We can even get rid of `ProtectedBranches::BaseService`. 3. Move API handling back into the API (previously in `ProtectedBranches::BaseService#translate_api_params`. 4. The protected branch services now return a `ProtectedBranch` rather than `true/false`. 5. Run `load_protected_branches` on-demand in the `create` action, to prevent it being called unneccessarily. 6. "Masters" is pre-selected as the default option for "Allowed to Push" and "Allowed to Merge". 7. These changes were based on a review from @rymai in !5081.
29 lines
2 KiB
Text
29 lines
2 KiB
Text
- url = namespace_project_protected_branch_path(@project.namespace, @project, protected_branch)
|
|
%tr
|
|
%td
|
|
= protected_branch.name
|
|
- if @project.root_ref?(protected_branch.name)
|
|
%span.label.label-info.prepend-left-5 default
|
|
%td
|
|
- if protected_branch.wildcard?
|
|
- matching_branches = protected_branch.matching(repository.branches)
|
|
= link_to pluralize(matching_branches.count, "matching branch"), namespace_project_protected_branch_path(@project.namespace, @project, protected_branch)
|
|
- else
|
|
- if commit = protected_branch.commit
|
|
= link_to(commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit.id), class: 'commit_short_id')
|
|
= time_ago_with_tooltip(commit.committed_date)
|
|
- else
|
|
(branch was removed from repository)
|
|
%td
|
|
= hidden_field_tag "allowed_to_merge_#{protected_branch.id}", protected_branch.merge_access_level.access_level
|
|
= dropdown_tag(protected_branch.merge_access_level.humanize,
|
|
options: { title: "Allowed to merge", toggle_class: 'allowed-to-merge', dropdown_class: 'dropdown-menu-selectable merge',
|
|
data: { field_name: "allowed_to_merge_#{protected_branch.id}", url: url, id: protected_branch.id, type: "merge_access_level" }})
|
|
%td
|
|
= hidden_field_tag "allowed_to_push_#{protected_branch.id}", protected_branch.push_access_level.access_level
|
|
= dropdown_tag(protected_branch.push_access_level.humanize,
|
|
options: { title: "Allowed to push", toggle_class: 'allowed-to-push', dropdown_class: 'dropdown-menu-selectable push',
|
|
data: { field_name: "allowed_to_push_#{protected_branch.id}", url: url, id: protected_branch.id, type: "push_access_level" }})
|
|
- if can_admin_project
|
|
%td
|
|
= link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_branch], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: "btn btn-warning btn-sm pull-right"
|