diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb index 70525beea15..49b740af046 100644 --- a/app/controllers/snippets_controller.rb +++ b/app/controllers/snippets_controller.rb @@ -15,19 +15,28 @@ class SnippetsController < ApplicationController def user_index @user = User.find_by_username(params[:username]) + @snippets = @user.snippets.fresh.non_expired - @snippets = @current_user.snippets.fresh.non_expired - - @snippets = case params[:scope] - when 'public' then - @snippets.public - when 'private' then - @snippets.private - else - @snippets - end + if @user == current_user + @snippets = case params[:scope] + when 'public' then + @snippets.public + when 'private' then + @snippets.private + else + @snippets + end + else + @snippets = @snippets.public + end @snippets = @snippets.page(params[:page]).per(20) + + if @user == current_user + render 'current_user_index' + else + render 'user_index' + end end def new @@ -79,7 +88,7 @@ class SnippetsController < ApplicationController protected def snippet - @snippet ||= PersonalSnippet.find(params[:id]) + @snippet ||= PersonalSnippet.where('author_id = :user_id or private is false', user_id: current_user.id).find(params[:id]) end def authorize_modify_snippet! diff --git a/app/helpers/snippets_helper.rb b/app/helpers/snippets_helper.rb index 6a91d616722..b0abc2cae33 100644 --- a/app/helpers/snippets_helper.rb +++ b/app/helpers/snippets_helper.rb @@ -8,4 +8,12 @@ module SnippetsHelper ] options_for_select(options) end + + def reliable_snippet_path(snippet) + if snippet.project_id? + project_snippet_path(snippet.project, snippet) + else + snippet_path(snippet) + end + end end diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml index b214d51bc29..f0b001f6efc 100644 --- a/app/views/layouts/_head_panel.html.haml +++ b/app/views/layouts/_head_panel.html.haml @@ -19,7 +19,7 @@ = link_to public_root_path, title: "Public area", class: 'has_bottom_tooltip', 'data-original-title' => 'Public area' do %i.icon-globe %li - = link_to snippets_path, title: "Snippets area", class: 'has_bottom_tooltip', 'data-original-title' => 'Public area' do + = link_to user_snippets_path(current_user), title: "My snippets", class: 'has_bottom_tooltip', 'data-original-title' => 'Public area' do %i.icon-paste - if current_user.is_admin? %li diff --git a/app/views/layouts/snippets.html.haml b/app/views/layouts/snippets.html.haml index d177709e087..f2696a0e987 100644 --- a/app/views/layouts/snippets.html.haml +++ b/app/views/layouts/snippets.html.haml @@ -7,15 +7,12 @@ %nav.main-nav .container %ul - = nav_link(path: 'dashboard#show', html_options: {class: 'home'}) do - = link_to root_path, title: "Back to dashboard" do + = nav_link(path: 'snippets#user_index', html_options: {class: 'home'}) do + = link_to user_snippets_path(current_user), title: "My Snippets" do %i.icon-home = nav_link(path: 'snippets#new') do = link_to new_snippet_path do New snippet - = nav_link(path: 'snippets#user_index') do - = link_to user_snippets_path(@current_user) do - My snippets = nav_link(path: 'snippets#index') do = link_to snippets_path do Discover snippets diff --git a/app/views/projects/snippets/_blob.html.haml b/app/views/projects/snippets/_blob.html.haml index 017a33b34f3..e0d1669acbe 100644 --- a/app/views/projects/snippets/_blob.html.haml +++ b/app/views/projects/snippets/_blob.html.haml @@ -3,7 +3,10 @@ %i.icon-file %strong= @snippet.file_name %span.options - = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank" + .btn-group.tree-btn-group.pull-right + - if can?(current_user, :admin_project_snippet, @project) || @snippet.author == current_user + = link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn btn-tiny", title: 'Edit Snippet' + = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank" .file_content.code - unless @snippet.content.empty? %div{class: user_color_scheme_class} diff --git a/app/views/projects/snippets/_snippet.html.haml b/app/views/projects/snippets/_snippet.html.haml index a576500c15d..72865bf2872 100644 --- a/app/views/projects/snippets/_snippet.html.haml +++ b/app/views/projects/snippets/_snippet.html.haml @@ -1,13 +1,25 @@ -%tr - %td - = image_tag gravatar_icon(snippet.author_email), class: "avatar s24" - %a{href: project_snippet_path(snippet.project, snippet)} - %strong= truncate(snippet.title, length: 60) - %td - = snippet.file_name - %td +%li + .snippet-title + - if snippet.private? + %i.icon-lock.cgreen + - else + %i.icon-globe.cblue + = link_to reliable_snippet_path(snippet) do + %h5.inline + = truncate(snippet.title, length: 60) %span.cgray - - if snippet.expires_at - = snippet.expires_at.to_date.to_s(:short) - - else - Never + = snippet.file_name + + %small.pull-right.cgray + Expires: + - if snippet.expires_at + = snippet.expires_at.to_date.to_s(:short) + - else + Never + + .snippet-info.prepend-left-20 + = "##{snippet.id}" + %span.light + by + = image_tag gravatar_icon(snippet.author_email), class: "avatar avatar-inline s16" + = snippet.author_name diff --git a/app/views/projects/snippets/index.html.haml b/app/views/projects/snippets/index.html.haml index 5971e3ffaac..ce36bed1e0d 100644 --- a/app/views/projects/snippets/index.html.haml +++ b/app/views/projects/snippets/index.html.haml @@ -5,15 +5,9 @@ - if can? current_user, :write_project_snippet, @project = link_to new_project_snippet_path(@project), class: "btn btn-small add_new pull-right", title: "New Snippet" do Add new snippet -%br -%table - %thead - %tr - %th Title - %th File Name - %th Expires At +%hr +%ul.bordered-list = render partial: "projects/snippets/snippet", collection: @snippets - if @snippets.empty? - %tr - %td{colspan: 3} - %h3.nothing_here_message Nothing here. + %li + %h3.nothing_here_message Nothing here. diff --git a/app/views/projects/snippets/show.html.haml b/app/views/projects/snippets/show.html.haml index db5a721dc45..da93e4bdbb1 100644 --- a/app/views/projects/snippets/show.html.haml +++ b/app/views/projects/snippets/show.html.haml @@ -1,9 +1,13 @@ %h3.page_title + %i.icon-lock.cgreen = @snippet.title - %small= @snippet.file_name - - if can?(current_user, :admin_project_snippet, @project) || @snippet.author == current_user - = link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn btn-small pull-right", title: 'Edit Snippet' + %small.pull-right + = "##{@snippet.id}" + %span.light + by + = image_tag gravatar_icon(@snippet.author_email), class: "avatar avatar-inline s16" + = @snippet.author_name %br %div= render 'projects/snippets/blob' %div#notes= render "notes/notes_with_form" diff --git a/app/views/snippets/_blob.html.haml b/app/views/snippets/_blob.html.haml index 56e62f0d6b3..6f62ea05205 100644 --- a/app/views/snippets/_blob.html.haml +++ b/app/views/snippets/_blob.html.haml @@ -3,7 +3,10 @@ %i.icon-file %strong= @snippet.file_name %span.options - = link_to "raw", raw_snippet_path(@snippet), class: "btn btn-tiny", target: "_blank" + .btn-group.tree-btn-group.pull-right + - if @snippet.author == current_user + = link_to "Edit", edit_snippet_path(@snippet), class: "btn btn-tiny", title: 'Edit Snippet' + = link_to "Raw", raw_snippet_path(@snippet), class: "btn btn-tiny", target: "_blank" .file_content.code - unless @snippet.content.empty? %div{class: user_color_scheme_class} diff --git a/app/views/snippets/_snippet.html.haml b/app/views/snippets/_snippet.html.haml index 77d9d211d8d..1256236ed94 100644 --- a/app/views/snippets/_snippet.html.haml +++ b/app/views/snippets/_snippet.html.haml @@ -1,24 +1,30 @@ -%tr - %td +%li + .snippet-title - if snippet.private? - %i.icon-lock + %i.icon-lock.cgreen - else - %i.icon-globe - = image_tag gravatar_icon(snippet.author_email), class: "avatar s24" - - if snippet.project_id? - %a{href: project_snippet_path(snippet.project, snippet)} - %strong= truncate(snippet.title, length: 60) - - else - %a{href: snippet_path(snippet)} - %strong= truncate(snippet.title, length: 60) - %td - = snippet.file_name - %td + %i.icon-globe.cblue + = link_to reliable_snippet_path(snippet) do + %h5.inline + = truncate(snippet.title, length: 60) %span.cgray - - if snippet.expires_at - = snippet.expires_at.to_date.to_s(:short) - - else - Never - %td + = snippet.file_name + + %small.pull-right.cgray - if snippet.project_id? - = link_to snippet.project.name, project_path(snippet.project) + = link_to snippet.project.name_with_namespace, project_path(snippet.project) + %span + \| + Expires: + - if snippet.expires_at + = snippet.expires_at.to_date.to_s(:short) + - else + Never + + .snippet-info.prepend-left-20 + = "##{snippet.id}" + %span.light + by + = image_tag gravatar_icon(snippet.author_email), class: "avatar avatar-inline s16" + = snippet.author_name + diff --git a/app/views/snippets/_snippets.html.haml b/app/views/snippets/_snippets.html.haml index 192cb6aa94a..636bf37f6d9 100644 --- a/app/views/snippets/_snippets.html.haml +++ b/app/views/snippets/_snippets.html.haml @@ -1,15 +1,7 @@ -%table - %thead - %tr - %th Title - %th File Name - %th Expires At - %th Project - +%ul.bordered-list = render partial: 'snippet', collection: @snippets - if @snippets.empty? - %tr - %td{colspan: 4} - %h3.nothing_here_message Nothing here. + %li + %h3.nothing_here_message Nothing here. = paginate @snippets diff --git a/app/views/snippets/current_user_index.html.haml b/app/views/snippets/current_user_index.html.haml new file mode 100644 index 00000000000..912f4c77a4b --- /dev/null +++ b/app/views/snippets/current_user_index.html.haml @@ -0,0 +1,21 @@ +%h3.page_title + My Snippets + %small share code pastes with others out of git repository + = link_to new_snippet_path, class: "btn btn-small add_new pull-right", title: "New Snippet" do + Add new snippet + +%hr + +.row + .span3 + %ul.nav.nav-pills.nav-stacked + = nav_tab :scope, nil do + = link_to "All", user_snippets_path(@user) + = nav_tab :scope, 'private' do + = link_to "Private", user_snippets_path(@user, scope: 'private') + = nav_tab :scope, 'public' do + = link_to "Public", user_snippets_path(@user, scope: 'public') + + .span9 + = render 'snippets' + diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml index 18348fb1067..f425c4bd51e 100644 --- a/app/views/snippets/show.html.haml +++ b/app/views/snippets/show.html.haml @@ -1,13 +1,16 @@ %h3.page_title - if @snippet.private? - %i.icon-lock + %i.icon-lock.cgreen - else - %i.icon-globe + %i.icon-globe.cblue = @snippet.title - %small= @snippet.file_name - - if @snippet.author == current_user - = link_to "Edit", edit_snippet_path(@snippet), class: "btn btn-small pull-right", title: 'Edit Snippet' + %small.pull-right + = "##{@snippet.id}" + %span.light + by + = image_tag gravatar_icon(@snippet.author_email), class: "avatar avatar-inline s16" + = @snippet.author_name %br %div= render 'blob' diff --git a/app/views/snippets/user_index.html.haml b/app/views/snippets/user_index.html.haml index 2f2cce26af4..79e3ddf96fd 100644 --- a/app/views/snippets/user_index.html.haml +++ b/app/views/snippets/user_index.html.haml @@ -1,20 +1,13 @@ %h3.page_title - Snippets by + = image_tag gravatar_icon(@user.email), class: "avatar s24" = @user.name + %span + \/ + Snippets %small share code pastes with others out of git repository = link_to new_snippet_path, class: "btn btn-small add_new pull-right", title: "New Snippet" do Add new snippet %hr -.row - .span3 - %ul.nav.nav-pills.nav-stacked - = nav_tab :scope, nil do - = link_to "All", user_snippets_path(@user) - = nav_tab :scope, 'private' do - = link_to "Private", user_snippets_path(@user, scope: 'private') - = nav_tab :scope, 'public' do - = link_to "Public", user_snippets_path(@user, scope: 'public') - .span9 - = render 'snippets' += render 'snippets'