Commit 2ebc63dd authored by Fatih Acet's avatar Fatih Acet

Merge branch '18844-missing-subnavs-on-some-pages' into 'master'

Added subnav to all views bar issuable views

## What does this MR do?

Adds subnav to all views apart from issue and MR views. The full list is available in screenshots below.

It also adds some JS to the builds page to simply handle the repositioning of the fixed position sidebar with the addition of the subnav.

## Are there points in the code the reviewer needs to double check?

## Why was this MR needed?

~UX and apparently ~regression .

## What are the relevant issue numbers?

Closes #18844.

## Screenshots (if relevant)

### Label

#### Edit

![Screen_Shot_2016-08-24_at_23.45.25](/uploads/3e5ded9e60f0eccc37672ab0a1423bfb/Screen_Shot_2016-08-24_at_23.45.25.png)

#### New

![Screen_Shot_2016-08-24_at_23.45.13](/uploads/767c6e97c91a5ded904f5b495950f5a8/Screen_Shot_2016-08-24_at_23.45.13.png)

### Milestone

#### Edit

![Screen_Shot_2016-08-24_at_23.45.37](/uploads/27562162415a6ae403e7117df009b208/Screen_Shot_2016-08-24_at_23.45.37.png)

#### New

![Screen_Shot_2016-08-24_at_23.45.43](/uploads/43c655b0a2af9a8da335a2efc31cb2df/Screen_Shot_2016-08-24_at_23.45.43.png)

#### Show

![Screen_Shot_2016-08-24_at_23.45.53](/uploads/68c3e0788c81f5897c7db11bb2b02a4c/Screen_Shot_2016-08-24_at_23.45.53.png)

### Commit

#### Show

![Screen_Shot_2016-08-26_at_14.15.20](/uploads/9f96e0587e4866fa95e28c224a185844/Screen_Shot_2016-08-26_at_14.15.20.png)

#### Builds

![Screen_Shot_2016-08-26_at_15.28.46](/uploads/9f0d8ababc8362874a3e2b5d877c7668/Screen_Shot_2016-08-26_at_15.28.46.png)

### Blob

#### Blame

![Screen_Shot_2016-08-26_at_14.18.03](/uploads/2999f2cd304e3b9be6530a52407eca59/Screen_Shot_2016-08-26_at_14.18.03.png)

#### Edit

![Screen_Shot_2016-08-26_at_14.20.32](/uploads/bb7b00bbe835228a8ec8b371e9364cb8/Screen_Shot_2016-08-26_at_14.20.32.png)

### Pipelines

#### Show

![Screen_Shot_2016-08-26_at_15.44.30](/uploads/ee84c51597ab04a07a6c953704280e7b/Screen_Shot_2016-08-26_at_15.44.30.png)

#### Show build

![Screen_Shot_2016-08-26_at_15.45.55](/uploads/dd78ef3dc083186095cdc84f41c80b21/Screen_Shot_2016-08-26_at_15.45.55.png)

#### Edit Envrionment

![Screen_Shot_2016-08-26_at_15.48.33](/uploads/4e9340e11eedeaeddebb708f02db3598/Screen_Shot_2016-08-26_at_15.48.33.png)

## Does this MR meet the acceptance criteria?

- [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [ ] Added for this feature/bug
  - [ ] All builds are passing
- [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [ ] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
Closes #18844

See merge request !5998
parents 9a7ceafe 680efd4f
...@@ -15,18 +15,17 @@ ...@@ -15,18 +15,17 @@
this.hideSidebar = bind(this.hideSidebar, this); this.hideSidebar = bind(this.hideSidebar, this);
this.toggleSidebar = bind(this.toggleSidebar, this); this.toggleSidebar = bind(this.toggleSidebar, this);
this.updateDropdown = bind(this.updateDropdown, this); this.updateDropdown = bind(this.updateDropdown, this);
this.$document = $(document);
clearInterval(Build.interval); clearInterval(Build.interval);
// Init breakpoint checker // Init breakpoint checker
this.bp = Breakpoints.get(); this.bp = Breakpoints.get();
$('.js-build-sidebar').niceScroll(); this.initSidebar();
this.populateJobs(this.build_stage); this.populateJobs(this.build_stage);
this.updateStageDropdownText(this.build_stage); this.updateStageDropdownText(this.build_stage);
this.hideSidebar();
$(document).off('click', '.js-sidebar-build-toggle').on('click', '.js-sidebar-build-toggle', this.toggleSidebar);
$(window).off('resize.build').on('resize.build', this.hideSidebar); $(window).off('resize.build').on('resize.build', this.hideSidebar);
$(document).off('click', '.stage-item').on('click', '.stage-item', this.updateDropdown); this.$document.off('click', '.stage-item').on('click', '.stage-item', this.updateDropdown);
$('#js-build-scroll > a').off('click').on('click', this.stepTrace); $('#js-build-scroll > a').off('click').on('click', this.stepTrace);
this.updateArtifactRemoveDate(); this.updateArtifactRemoveDate();
if ($('#build-trace').length) { if ($('#build-trace').length) {
...@@ -62,6 +61,21 @@ ...@@ -62,6 +61,21 @@
} }
} }
Build.prototype.initSidebar = function() {
this.$sidebar = $('.js-build-sidebar');
this.sidebarTranslationLimits = {
min: $('.navbar-gitlab').outerHeight() + $('.layout-nav').outerHeight()
}
this.sidebarTranslationLimits.max = this.sidebarTranslationLimits.min + $('.scrolling-tabs-container').outerHeight();
this.$sidebar.css({
top: this.sidebarTranslationLimits.max
});
this.$sidebar.niceScroll();
this.hideSidebar();
this.$document.off('click', '.js-sidebar-build-toggle').on('click', '.js-sidebar-build-toggle', this.toggleSidebar);
this.$document.off('scroll.translateSidebar').on('scroll.translateSidebar', this.translateSidebar.bind(this));
};
Build.prototype.getInitialBuildTrace = function() { Build.prototype.getInitialBuildTrace = function() {
var removeRefreshStatuses = ['success', 'failed', 'canceled', 'skipped'] var removeRefreshStatuses = ['success', 'failed', 'canceled', 'skipped']
...@@ -129,15 +143,23 @@ ...@@ -129,15 +143,23 @@
Build.prototype.toggleSidebar = function() { Build.prototype.toggleSidebar = function() {
if (this.shouldHideSidebar()) { if (this.shouldHideSidebar()) {
return $('.js-build-sidebar').toggleClass('right-sidebar-expanded right-sidebar-collapsed'); return this.$sidebar.toggleClass('right-sidebar-expanded right-sidebar-collapsed');
} }
}; };
Build.prototype.translateSidebar = function(e) {
var newPosition = this.sidebarTranslationLimits.max - document.body.scrollTop;
if (newPosition < this.sidebarTranslationLimits.min) newPosition = this.sidebarTranslationLimits.min;
this.$sidebar.css({
top: newPosition
});
};
Build.prototype.hideSidebar = function() { Build.prototype.hideSidebar = function() {
if (this.shouldHideSidebar()) { if (this.shouldHideSidebar()) {
return $('.js-build-sidebar').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed'); return this.$sidebar.removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed');
} else { } else {
return $('.js-build-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); return this.$sidebar.removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded');
} }
}; };
......
...@@ -233,3 +233,9 @@ ...@@ -233,3 +233,9 @@
right: 0; right: 0;
margin-top: -17px; margin-top: -17px;
} }
@media (min-width: $screen-md-min) {
.sub-nav.build {
width: calc(100% + #{$gutter_width});
}
}
- @no_container = true
- page_title "Blame", @blob.path, @ref - page_title "Blame", @blob.path, @ref
= render "projects/commits/head"
%h3.page-title Blame view %div{ class: container_class }
%h3.page-title Blame view
#blob-content-holder.tree-holder #blob-content-holder.tree-holder
.file-holder .file-holder
.file-title .file-title
= blob_icon @blob.mode, @blob.name = blob_icon @blob.mode, @blob.name
%strong %strong
= @path = @path
%small= number_to_human_size @blob.size %small= number_to_human_size @blob.size
.file-actions .file-actions
= render "projects/blob/actions" = render "projects/blob/actions"
.table-responsive.file-content.blame.code.js-syntax-highlight .table-responsive.file-content.blame.code.js-syntax-highlight
%table %table
- current_line = 1 - current_line = 1
- @blame_groups.each do |blame_group| - @blame_groups.each do |blame_group|
%tr %tr
%td.blame-commit %td.blame-commit
.commit .commit
- commit = blame_group[:commit] - commit = blame_group[:commit]
= author_avatar(commit, size: 36) = author_avatar(commit, size: 36)
.commit-row-title .commit-row-title
%strong %strong
= link_to_gfm truncate(commit.title, length: 35), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "cdark" = link_to_gfm truncate(commit.title, length: 35), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "cdark"
.pull-right .pull-right
= link_to commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit), class: "monospace" = link_to commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit), class: "monospace"
&nbsp; &nbsp;
.light .light
= commit_author_link(commit, avatar: false) = commit_author_link(commit, avatar: false)
authored authored
#{time_ago_with_tooltip(commit.committed_date, skip_js: true)} #{time_ago_with_tooltip(commit.committed_date, skip_js: true)}
%td.line-numbers %td.line-numbers
- line_count = blame_group[:lines].count - line_count = blame_group[:lines].count
- (current_line...(current_line + line_count)).each do |i| - (current_line...(current_line + line_count)).each do |i|
%a.diff-line-num{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i} %a.diff-line-num{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i}
= icon("link") = icon("link")
= i = i
\ \
- current_line += line_count - current_line += line_count
%td.lines %td.lines
%pre.code.highlight %pre.code.highlight
%code %code
- blame_group[:lines].each do |line| - blame_group[:lines].each do |line|
#{line} #{line}
- @no_container = true
- page_title "Edit", @blob.path, @ref - page_title "Edit", @blob.path, @ref
- content_for :page_specific_javascripts do - content_for :page_specific_javascripts do
= page_specific_javascript_tag('lib/ace.js') = page_specific_javascript_tag('lib/ace.js')
= page_specific_javascript_tag('blob_edit/blob_edit_bundle.js') = page_specific_javascript_tag('blob_edit/blob_edit_bundle.js')
= render "projects/commits/head"
- if @conflict %div{ class: container_class }
.alert.alert-danger - if @conflict
Someone edited the file the same time you did. Please check out .alert.alert-danger
= link_to "the file", namespace_project_blob_path(@project.namespace, @project, tree_join(@target_branch, @file_path)), target: "_blank" Someone edited the file the same time you did. Please check out
and make sure your changes will not unintentionally remove theirs. = link_to "the file", namespace_project_blob_path(@project.namespace, @project, tree_join(@target_branch, @file_path)), target: "_blank"
and make sure your changes will not unintentionally remove theirs.
.file-editor .file-editor
%ul.nav-links.no-bottom.js-edit-mode %ul.nav-links.no-bottom.js-edit-mode
%li.active %li.active
= link_to '#editor' do = link_to '#editor' do
Edit File Edit File
%li %li
= link_to '#preview', 'data-preview-url' => namespace_project_preview_blob_path(@project.namespace, @project, @id) do = link_to '#preview', 'data-preview-url' => namespace_project_preview_blob_path(@project.namespace, @project, @id) do
= editing_preview_title(@blob.name) = editing_preview_title(@blob.name)
= form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-quick-submit js-requires-input js-edit-blob-form', data: blob_editor_paths) do = form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-quick-submit js-requires-input js-edit-blob-form', data: blob_editor_paths) do
= render 'projects/blob/editor', ref: @ref, path: @path, blob_data: @blob.data = render 'projects/blob/editor', ref: @ref, path: @path, blob_data: @blob.data
= render 'shared/new_commit_form', placeholder: "Update #{@blob.name}" = render 'shared/new_commit_form', placeholder: "Update #{@blob.name}"
= hidden_field_tag 'last_commit_sha', @last_commit_sha = hidden_field_tag 'last_commit_sha', @last_commit_sha
= hidden_field_tag 'content', '', id: "file-content" = hidden_field_tag 'content', '', id: "file-content"
= hidden_field_tag 'from_merge_request_id', params[:from_merge_request_id] = hidden_field_tag 'from_merge_request_id', params[:from_merge_request_id]
= render 'projects/commit_button', ref: @ref, cancel_path: namespace_project_blob_path(@project.namespace, @project, @id) = render 'projects/commit_button', ref: @ref, cancel_path: namespace_project_blob_path(@project.namespace, @project, @id)
- @no_container = true
- page_title "#{@build.name} (##{@build.id})", "Builds" - page_title "#{@build.name} (##{@build.id})", "Builds"
- trace_with_state = @build.trace_with_state - trace_with_state = @build.trace_with_state
- header_title project_title(@project, "Builds", project_builds_path(@project)) - header_title project_title(@project, "Builds", project_builds_path(@project))
= render "projects/pipelines/head", build_subnav: true
.build-page %div{ class: container_class }
= render "header" .build-page
= render "header"
- if @build.stuck? - if @build.stuck?
- unless @build.any_runners_online? - unless @build.any_runners_online?
.bs-callout.bs-callout-warning .bs-callout.bs-callout-warning
%p %p
- if no_runners_for_project?(@build.project) - if no_runners_for_project?(@build.project)
This build is stuck, because the project doesn't have any runners online assigned to it. This build is stuck, because the project doesn't have any runners online assigned to it.
- elsif @build.tags.any? - elsif @build.tags.any?
This build is stuck, because you don't have any active runners online with any of these tags assigned to them: This build is stuck, because you don't have any active runners online with any of these tags assigned to them:
- @build.tags.each do |tag| - @build.tags.each do |tag|
%span.label.label-primary %span.label.label-primary
= tag = tag
- else - else
This build is stuck, because you don't have any active runners that can run this build. This build is stuck, because you don't have any active runners that can run this build.
%br %br
Go to Go to
= link_to namespace_project_runners_path(@build.project.namespace, @build.project) do = link_to namespace_project_runners_path(@build.project.namespace, @build.project) do
Runners page Runners page
.prepend-top-default .prepend-top-default
- if @build.active? - if @build.active?
.autoscroll-container .autoscroll-container
%button.btn.btn-success.btn-sm#autoscroll-button{:type => "button", :data => {:state => 'disabled'}} enable autoscroll %button.btn.btn-success.btn-sm#autoscroll-button{:type => "button", :data => {:state => 'disabled'}} enable autoscroll
- if @build.erased? - if @build.erased?
.erased.alert.alert-warning .erased.alert.alert-warning
- erased_by = "by #{link_to @build.erased_by.name, user_path(@build.erased_by)}" if @build.erased_by - erased_by = "by #{link_to @build.erased_by.name, user_path(@build.erased_by)}" if @build.erased_by
Build has been erased #{erased_by.html_safe} #{time_ago_with_tooltip(@build.erased_at)} Build has been erased #{erased_by.html_safe} #{time_ago_with_tooltip(@build.erased_at)}
- else - else
#js-build-scroll.scroll-controls #js-build-scroll.scroll-controls
= link_to '#build-trace', class: 'btn' do = link_to '#build-trace', class: 'btn' do
%i.fa.fa-angle-up %i.fa.fa-angle-up
= link_to '#down-build-trace', class: 'btn' do = link_to '#down-build-trace', class: 'btn' do
%i.fa.fa-angle-down %i.fa.fa-angle-down
%pre.build-trace#build-trace %pre.build-trace#build-trace
%code.bash.js-build-output %code.bash.js-build-output
= icon("refresh spin", class: "js-build-refresh") = icon("refresh spin", class: "js-build-refresh")
#down-build-trace #down-build-trace
= render "sidebar" = render "sidebar"
:javascript :javascript
new Build({ new Build({
page_url: "#{namespace_project_build_url(@project.namespace, @project, @build)}", page_url: "#{namespace_project_build_url(@project.namespace, @project, @build)}",
build_url: "#{namespace_project_build_url(@project.namespace, @project, @build, :json)}", build_url: "#{namespace_project_build_url(@project.namespace, @project, @build, :json)}",
build_status: "#{@build.status}", build_status: "#{@build.status}",
build_stage: "#{@build.stage}", build_stage: "#{@build.stage}",
state1: "#{trace_with_state[:state]}" state1: "#{trace_with_state[:state]}"
}) })
- @no_container = true
- page_title "Builds", "#{@commit.title} (#{@commit.short_id})", "Commits" - page_title "Builds", "#{@commit.title} (#{@commit.short_id})", "Commits"
= render "projects/commits/head"
.prepend-top-default %div{ class: container_class }
= render "commit_box" .prepend-top-default
= render "commit_box"
= render "ci_menu" = render "ci_menu"
= render "builds" = render "builds"
- @no_container = true
- page_title "#{@commit.title} (#{@commit.short_id})", "Commits" - page_title "#{@commit.title} (#{@commit.short_id})", "Commits"
- page_description @commit.description - page_description @commit.description
= render "projects/commits/head"
.prepend-top-default %div{ class: container_class }
= render "commit_box" .prepend-top-default
- if @commit.status = render "commit_box"
= render "ci_menu" - if @commit.status
- else = render "ci_menu"
%div.block-connector - else
= render "projects/diffs/diffs", diffs: @diffs %div.block-connector
= render "projects/notes/notes_with_form" = render "projects/diffs/diffs", diffs: @diffs
- if can_collaborate_with_project? = render "projects/notes/notes_with_form"
- %w(revert cherry-pick).each do |type| - if can_collaborate_with_project?
= render "projects/commit/change", type: type, commit: @commit, title: @commit.title - %w(revert cherry-pick).each do |type|
= render "projects/commit/change", type: type, commit: @commit, title: @commit.title
- @no_container = true
- page_title "Edit", @environment.name, "Environments" - page_title "Edit", @environment.name, "Environments"
= render "projects/pipelines/head"
%h3.page-title %div{ class: container_class }
Edit environment %h3.page-title
%hr Edit environment
= render 'form' %hr
= render 'form'
- @no_container = true
- page_title 'New Environment' - page_title 'New Environment'
= render "projects/pipelines/head"
%h3.page-title %div{ class: container_class }
New environment %h3.page-title
%hr New environment
= render 'form' %hr
= render 'form'
- @no_container = true
- page_title "Edit", @label.name, "Labels" - page_title "Edit", @label.name, "Labels"
= render "projects/issues/head"
%h3.page-title %div{ class: container_class }
Edit Label %h3.page-title
%hr Edit Label
= render 'form' %hr
= render 'form'
- @no_container = true
- page_title "New Label" - page_title "New Label"
= render "projects/issues/head"
%h3.page-title %div{ class: container_class }
New Label %h3.page-title
%hr New Label
= render 'form' %hr
= render 'form'
- @no_container = true
- page_title "Edit", @milestone.title, "Milestones" - page_title "Edit", @milestone.title, "Milestones"
= render "projects/issues/head"
%h3.page-title %div{ class: container_class }
Edit Milestone ##{@milestone.iid}
%hr %h3.page-title
Edit Milestone ##{@milestone.iid}
= render "form" %hr
= render "form"
- @no_container = true
- page_title "New Milestone" - page_title "New Milestone"
= render "projects/issues/head"
%h3.page-title %div{ class: container_class }
New Milestone %h3.page-title
New Milestone
%hr %hr
= render "form" = render "form"
- @no_container = true
- page_title @milestone.title, "Milestones" - page_title @milestone.title, "Milestones"
- page_description @milestone.description - page_description @milestone.description
= render "projects/issues/head"
.detail-page-header %div{ class: container_class }
.status-box{ class: status_box_class(@milestone) } .detail-page-header
- if @milestone.closed? .status-box{ class: status_box_class(@milestone) }
Closed - if @milestone.closed?
- elsif @milestone.expired? Closed
Past due - elsif @milestone.expired?
- else Past due
Open
%span.identifier
Milestone ##{@milestone.iid}
- if @milestone.expires_at
%span.creator
&middot;
= @milestone.expires_at
.pull-right
- if can?(current_user, :admin_milestone, @project)
- if @milestone.active?
= link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
- else - else
= link_to 'Reopen Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped" Open
%span.identifier
Milestone ##{@milestone.iid}
- if @milestone.expires_at
%span.creator
&middot;
= @milestone.expires_at
.pull-right
- if can?(current_user, :admin_milestone, @project)
- if @milestone.active?
= link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
- else
= link_to 'Reopen Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped"
= link_to edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-grouped btn-nr" do = link_to edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-grouped btn-nr" do
Edit Edit
= link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-danger" do = link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-danger" do
Delete Delete
.detail-page-description.milestone-detail .detail-page-description.milestone-detail
%h2.title %h2.title
= markdown_field(@milestone, :title) = markdown_field(@milestone, :title)
%div %div
- if @milestone.description.present? - if @milestone.description.present?
.description .description
.wiki .wiki
= preserve do = preserve do
= markdown_field(@milestone, :description) = markdown_field(@milestone, :description)
- if @milestone.total_items_count(current_user).zero? - if @milestone.total_items_count(current_user).zero?
.alert.alert-success.prepend-top-default .alert.alert-success.prepend-top-default
%span Assign some issues to this milestone. %span Assign some issues to this milestone.
- elsif @milestone.complete?(current_user) && @milestone.active? - elsif @milestone.complete?(current_user) && @milestone.active?
.alert.alert-success.prepend-top-default .alert.alert-success.prepend-top-default
%span All issues for this milestone are closed. You may close this milestone now. %span All issues for this milestone are closed. You may close this milestone now.
= render 'shared/milestones/summary', milestone: @milestone, project: @project = render 'shared/milestones/summary', milestone: @milestone, project: @project
= render 'shared/milestones/tabs', milestone: @milestone = render 'shared/milestones/tabs', milestone: @milestone
= content_for :sub_nav do = content_for :sub_nav do
.scrolling-tabs-container.sub-nav-scroll .scrolling-tabs-container.sub-nav-scroll
= render 'shared/nav_scroll' = render 'shared/nav_scroll'
.nav-links.sub-nav.scrolling-tabs .nav-links.sub-nav.scrolling-tabs{ class: ('build' if local_assigns.fetch(:build_subnav, false)) }
%ul{ class: (container_class) } %ul{ class: (container_class) }
- if project_nav_tab? :pipelines - if project_nav_tab? :pipelines
= nav_link(controller: :pipelines) do = nav_link(controller: :pipelines) do
......
- @no_container = true
- page_title "Pipeline" - page_title "Pipeline"
= render "projects/pipelines/head"
.prepend-top-default %div{ class: container_class }
- if @commit .prepend-top-default
= render "projects/pipelines/info" - if @commit
%div.block-connector = render "projects/pipelines/info"
%div.block-connector
= render "projects/commit/pipeline", pipeline: @pipeline = render "projects/commit/pipeline", pipeline: @pipeline
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment