From 88c741dde062e320ad007a2c5ccb4e7bdc6cdacf Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 5 Aug 2013 17:59:58 +0300 Subject: [PATCH] Refactor recent branches page --- app/controllers/projects/branches_controller.rb | 4 ++++ app/controllers/projects/repositories_controller.rb | 4 ---- app/models/repository.rb | 6 ++++++ .../{repositories => branches}/_filter.html.haml | 4 ++-- app/views/projects/branches/index.html.haml | 2 +- app/views/projects/branches/recent.html.haml | 8 ++++++++ app/views/projects/commits/_head.html.haml | 2 +- app/views/projects/protected_branches/index.html.haml | 2 +- app/views/projects/repositories/show.html.haml | 9 --------- config/routes.rb | 7 ++++++- 10 files changed, 29 insertions(+), 19 deletions(-) rename app/views/projects/{repositories => branches}/_filter.html.haml (80%) create mode 100644 app/views/projects/branches/recent.html.haml delete mode 100644 app/views/projects/repositories/show.html.haml diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb index 97dbb2bc0c..aa6914414c 100644 --- a/app/controllers/projects/branches_controller.rb +++ b/app/controllers/projects/branches_controller.rb @@ -11,6 +11,10 @@ class Projects::BranchesController < Projects::ApplicationController @branches = Kaminari.paginate_array(@repository.branches).page(params[:page]).per(30) end + def recent + @branches = @repository.recent_branches + end + def create @repository.add_branch(params[:branch_name], params[:ref]) diff --git a/app/controllers/projects/repositories_controller.rb b/app/controllers/projects/repositories_controller.rb index 7e6c7016ec..20e2a9311e 100644 --- a/app/controllers/projects/repositories_controller.rb +++ b/app/controllers/projects/repositories_controller.rb @@ -4,10 +4,6 @@ class Projects::RepositoriesController < Projects::ApplicationController before_filter :authorize_code_access! before_filter :require_non_empty_project - def show - @activities = @repository.commits_with_refs(20) - end - def stats @stats = Gitlab::Git::Stats.new(@repository.raw, @repository.root_ref) @graph = @stats.graph diff --git a/app/models/repository.rb b/app/models/repository.rb index cd33782a4c..a2fd91bbec 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -49,6 +49,12 @@ class Repository tags.find { |tag| tag.name == name } end + def recent_branches(limit = 20) + branches.sort do |a, b| + a.commit.committed_date <=> b.commit.committed_date + end[0..limit] + end + def add_branch(branch_name, ref) Rails.cache.delete(cache_key(:branch_names)) diff --git a/app/views/projects/repositories/_filter.html.haml b/app/views/projects/branches/_filter.html.haml similarity index 80% rename from app/views/projects/repositories/_filter.html.haml rename to app/views/projects/branches/_filter.html.haml index 660d9d25a3..7ea11a74a2 100644 --- a/app/views/projects/repositories/_filter.html.haml +++ b/app/views/projects/branches/_filter.html.haml @@ -1,6 +1,6 @@ %ul.nav.nav-pills.nav-stacked - = nav_link(path: 'repositories#show') do - = link_to 'Recent', project_repository_path(@project) + = nav_link(path: 'branches#recent') do + = link_to 'Recent', recent_project_branches_path(@project) = nav_link(path: 'protected_branches#index') do = link_to project_protected_branches_path(@project) do Protected diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml index 4cfafe1a7a..7a0eda6408 100644 --- a/app/views/projects/branches/index.html.haml +++ b/app/views/projects/branches/index.html.haml @@ -1,7 +1,7 @@ = render "projects/commits/head" .row .span3 - = render "projects/repositories/filter" + = render "filter" .span9 - unless @branches.empty? %ul.bordered-list diff --git a/app/views/projects/branches/recent.html.haml b/app/views/projects/branches/recent.html.haml new file mode 100644 index 0000000000..6cafb47364 --- /dev/null +++ b/app/views/projects/branches/recent.html.haml @@ -0,0 +1,8 @@ += render "projects/commits/head" +.row + .span3 + = render "filter" + .span9 + %ul.bordered-list + - @branches.each do |branch| + = render "projects/branches/branch", branch: branch diff --git a/app/views/projects/commits/_head.html.haml b/app/views/projects/commits/_head.html.haml index 06d69eb5f7..c16abac7f1 100644 --- a/app/views/projects/commits/_head.html.haml +++ b/app/views/projects/commits/_head.html.haml @@ -7,7 +7,7 @@ = link_to 'Compare', project_compare_index_path(@project) = nav_link(html_options: {class: branches_tab_class}) do - = link_to project_repository_path(@project) do + = link_to recent_project_branches_path(@project) do Branches %span.badge= @repository.branches.length diff --git a/app/views/projects/protected_branches/index.html.haml b/app/views/projects/protected_branches/index.html.haml index 9cadb6fb12..8930ec4b30 100644 --- a/app/views/projects/protected_branches/index.html.haml +++ b/app/views/projects/protected_branches/index.html.haml @@ -1,7 +1,7 @@ = render "projects/commits/head" .row .span3 - = render "projects/repositories/filter" + = render "projects/branches/filter" .span9 .alert.alert-info %p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, class: "vlink"}. diff --git a/app/views/projects/repositories/show.html.haml b/app/views/projects/repositories/show.html.haml deleted file mode 100644 index 611d0eddc4..0000000000 --- a/app/views/projects/repositories/show.html.haml +++ /dev/null @@ -1,9 +0,0 @@ -= render "projects/commits/head" -.row - .span3 - = render "filter" - .span9 - %ul.bordered-list - - @activities.each do |update| - = render "projects/branches/branch", branch: update.head - diff --git a/config/routes.rb b/config/routes.rb index d303a57d30..c83e18ce4f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -225,8 +225,13 @@ Gitlab::Application.routes.draw do end end + resources :branches, only: [:index, :new, :create, :destroy] do + collection do + get :recent + end + end + resources :tags, only: [:index, :new, :create, :destroy] - resources :branches, only: [:index, :new, :create, :destroy] resources :protected_branches, only: [:index, :create, :destroy] resources :refs, only: [] do