Merge branch 'snippets-ui' into 'master'
Updated snippets UI ![Screen_Shot_2016-05-18_at_14.11.54](/uploads/2544351e50f19a36c4ba9a7a92d5544b/Screen_Shot_2016-05-18_at_14.11.54.png) Closes #14328 See merge request !4194
This commit is contained in:
commit
d6e5299fb6
10 changed files with 122 additions and 59 deletions
|
@ -162,6 +162,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
.dropdown-menu-full-width {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dropdown-menu-paging {
|
||||
.dropdown-page-two,
|
||||
.dropdown-menu-back {
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
.file-holder {
|
||||
border: 1px solid $border-color;
|
||||
|
||||
&.file-holder-no-border {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
&.readme-holder {
|
||||
margin: $gl-padding-top 0;
|
||||
}
|
||||
|
@ -23,8 +27,17 @@
|
|||
word-wrap: break-word;
|
||||
border-radius: 3px 3px 0 0;
|
||||
|
||||
&.file-title-clear {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
background-color: transparent;
|
||||
|
||||
.file-actions {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.file-actions {
|
||||
float: right;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 15px;
|
||||
|
|
|
@ -16,19 +16,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.snippet-box {
|
||||
@include border-radius(2px);
|
||||
|
||||
display: block;
|
||||
float: left;
|
||||
padding: 0 $gl-padding;
|
||||
font-weight: normal;
|
||||
margin-right: 10px;
|
||||
font-size: $gl-font-size;
|
||||
border: 1px solid;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.markdown-snippet-copy {
|
||||
position: fixed;
|
||||
top: -10px;
|
||||
|
@ -36,3 +23,34 @@
|
|||
max-height: 0;
|
||||
max-width: 0;
|
||||
}
|
||||
|
||||
.file-holder.snippet-file-content {
|
||||
padding-bottom: $gl-padding;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
.file-title {
|
||||
padding-top: $gl-padding;
|
||||
padding-bottom: $gl-padding;
|
||||
}
|
||||
|
||||
.file-actions {
|
||||
top: 12px;
|
||||
}
|
||||
|
||||
.file-content {
|
||||
border-left: 1px solid $border-color;
|
||||
border-right: 1px solid $border-color;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.snippet-title {
|
||||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.snippet-actions {
|
||||
@media (min-width: $screen-sm-min) {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,27 @@
|
|||
= link_to new_namespace_project_snippet_path(@project.namespace, @project), class: 'btn btn-grouped new-snippet-link', title: "New Snippet" do
|
||||
.hidden-xs
|
||||
= link_to new_namespace_project_snippet_path(@project.namespace, @project), class: 'btn btn-grouped btn-create new-snippet-link', title: "New Snippet" do
|
||||
= icon('plus')
|
||||
New Snippet
|
||||
- if can?(current_user, :admin_project_snippet, @snippet)
|
||||
= link_to namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-remove", title: 'Delete Snippet' do
|
||||
= icon('trash-o')
|
||||
Delete
|
||||
- if can?(current_user, :update_project_snippet, @snippet)
|
||||
= link_to edit_namespace_project_snippet_path(@project.namespace, @project, @snippet), class: "btn btn-grouped snippable-edit" do
|
||||
= icon('pencil-square-o')
|
||||
Edit
|
||||
- if can?(current_user, :update_project_snippet, @snippet)
|
||||
= link_to namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-warning", title: 'Delete Snippet' do
|
||||
Delete
|
||||
.visible-xs-block.dropdown
|
||||
%button.btn.btn-default.btn-block.append-bottom-0.prepend-top-5{ data: { toggle: "dropdown" } }
|
||||
Options
|
||||
%span.caret
|
||||
.dropdown-menu.dropdown-menu-full-width
|
||||
%ul
|
||||
%li
|
||||
= link_to new_namespace_project_snippet_path(@project.namespace, @project), title: "New Snippet" do
|
||||
New Snippet
|
||||
- if can?(current_user, :update_project_snippet, @snippet)
|
||||
%li
|
||||
= link_to edit_namespace_project_snippet_path(@project.namespace, @project, @snippet) do
|
||||
Edit
|
||||
- if can?(current_user, :update_project_snippet, @snippet)
|
||||
%li
|
||||
= link_to namespace_project_snippet_path(@project.namespace, @project, @snippet), method: :delete, data: { confirm: "Are you sure?" }, title: 'Delete Snippet' do
|
||||
Delete
|
||||
|
|
|
@ -4,15 +4,13 @@
|
|||
.snippet-holder
|
||||
= render 'shared/snippets/header'
|
||||
|
||||
%article.file-holder
|
||||
.file-title
|
||||
%article.file-holder.file-holder-no-border.snippet-file-content
|
||||
.file-title.file-title-clear
|
||||
= blob_icon 0, @snippet.file_name
|
||||
%strong
|
||||
= @snippet.file_name
|
||||
.file-actions.hidden-xs
|
||||
= clipboard_button(clipboard_target: ".blob-content[data-blob-id='#{@snippet.id}']")
|
||||
= link_to 'Raw', raw_namespace_project_snippet_path(@project.namespace, @project, @snippet), class: "btn btn-sm", target: "_blank"
|
||||
|
||||
= render 'shared/snippets/blob'
|
||||
|
||||
%div#notes= render "projects/notes/notes_with_form"
|
||||
|
|
|
@ -1,25 +1,24 @@
|
|||
.detail-page-header
|
||||
.snippet-box.has-tooltip{class: visibility_level_color(@snippet.visibility_level), title: snippet_visibility_level_description(@snippet.visibility_level, @snippet), data: { container: 'body' }}
|
||||
= visibility_level_icon(@snippet.visibility_level, fw: false)
|
||||
.detail-page-header.clearfix
|
||||
.snippet-box.has-tooltip.inline.append-right-5{ title: snippet_visibility_level_description(@snippet.visibility_level, @snippet), data: { container: "body" } }
|
||||
%span.sr-only
|
||||
= visibility_level_label(@snippet.visibility_level)
|
||||
%span.identifier
|
||||
= visibility_level_icon(@snippet.visibility_level, fw: false)
|
||||
%strong.item-title
|
||||
Snippet ##{@snippet.id}
|
||||
%span.creator
|
||||
· created by #{link_to_member(@project, @snippet.author, size: 24)}
|
||||
·
|
||||
created by #{link_to_member(@project, @snippet.author, size: 24, author_class: "author item-title")}
|
||||
= time_ago_with_tooltip(@snippet.created_at, placement: 'bottom', html_class: 'snippet_updated_ago')
|
||||
- if @snippet.updated_at != @snippet.created_at
|
||||
%span
|
||||
·
|
||||
= icon('edit', title: 'edited')
|
||||
= time_ago_with_tooltip(@snippet.updated_at, placement: 'bottom', html_class: 'snippet_edited_ago')
|
||||
|
||||
.pull-right
|
||||
.snippet-actions
|
||||
- if @snippet.project_id?
|
||||
= render "projects/snippets/actions"
|
||||
- else
|
||||
= render "snippets/actions"
|
||||
|
||||
.detail-page-description.row-content-block.second-block
|
||||
%h2.title
|
||||
.content-block.second-block
|
||||
%h2.snippet-title.prepend-top-0.append-bottom-0
|
||||
= markdown escape_once(@snippet.title), pipeline: :single_line
|
||||
|
|
|
@ -1,11 +1,27 @@
|
|||
= link_to new_snippet_path, class: 'btn btn-grouped new-snippet-link', title: "New Snippet" do
|
||||
.hidden-xs
|
||||
= link_to new_snippet_path, class: "btn btn-grouped btn-create new-snippet-link", title: "New Snippet" do
|
||||
= icon('plus')
|
||||
New Snippet
|
||||
- if can?(current_user, :update_personal_snippet, @snippet)
|
||||
= link_to edit_snippet_path(@snippet), class: "btn btn-grouped snippable-edit" do
|
||||
= icon('pencil-square-o')
|
||||
Edit
|
||||
- if can?(current_user, :admin_personal_snippet, @snippet)
|
||||
= link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-remove", title: 'Delete Snippet' do
|
||||
= icon('trash-o')
|
||||
= link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-warning", title: 'Delete Snippet' do
|
||||
Delete
|
||||
.visible-xs-block.dropdown
|
||||
%button.btn.btn-default.btn-block.append-bottom-0.prepend-top-5{ data: { toggle: "dropdown" } }
|
||||
Options
|
||||
%span.caret
|
||||
.dropdown-menu.dropdown-menu-full-width
|
||||
%ul
|
||||
%li
|
||||
= link_to new_snippet_path, title: "New Snippet" do
|
||||
New Snippet
|
||||
- if can?(current_user, :update_personal_snippet, @snippet)
|
||||
%li
|
||||
= link_to edit_snippet_path(@snippet) do
|
||||
Edit
|
||||
- if can?(current_user, :admin_personal_snippet, @snippet)
|
||||
%li
|
||||
= link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, title: 'Delete Snippet' do
|
||||
Delete
|
||||
|
|
|
@ -3,10 +3,9 @@
|
|||
.snippet-holder
|
||||
= render 'shared/snippets/header'
|
||||
|
||||
%article.file-holder
|
||||
.file-title
|
||||
%article.file-holder.file-holder-no-border.snippet-file-content
|
||||
.file-title.file-title-clear
|
||||
= blob_icon 0, @snippet.file_name
|
||||
%strong
|
||||
= @snippet.file_name
|
||||
.file-actions.hidden-xs
|
||||
= clipboard_button(clipboard_target: ".blob-content[data-blob-id='#{@snippet.id}']")
|
||||
|
|
|
@ -43,12 +43,12 @@ class Spinach::Features::ProjectSnippets < Spinach::FeatureSteps
|
|||
|
||||
step 'I click link "Edit"' do
|
||||
page.within ".detail-page-header" do
|
||||
click_link "Edit"
|
||||
first(:link, "Edit").click
|
||||
end
|
||||
end
|
||||
|
||||
step 'I click link "Delete"' do
|
||||
click_link "Delete"
|
||||
first(:link, "Delete").click
|
||||
end
|
||||
|
||||
step 'I submit new snippet "Snippet three"' do
|
||||
|
|
|
@ -14,12 +14,12 @@ class Spinach::Features::Snippets < Spinach::FeatureSteps
|
|||
|
||||
step 'I click link "Edit"' do
|
||||
page.within ".detail-page-header" do
|
||||
click_link "Edit"
|
||||
first(:link, "Edit").click
|
||||
end
|
||||
end
|
||||
|
||||
step 'I click link "Delete"' do
|
||||
click_link "Delete"
|
||||
first(:link, "Delete").click
|
||||
end
|
||||
|
||||
step 'I submit new snippet "Personal snippet three"' do
|
||||
|
|
Loading…
Reference in a new issue