Dashboard refactoring:
* dashboard should be in dashboard controller not project index * projects index removed
This commit is contained in:
parent
9ef9c58f55
commit
edd81a79c5
|
@ -659,6 +659,10 @@ li.note {
|
|||
width:24px;
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
strong {
|
||||
line-height:24px;
|
||||
}
|
||||
}
|
||||
|
||||
.automerge_widget {
|
||||
|
@ -741,7 +745,7 @@ li.note {
|
|||
*/
|
||||
.event_lp {
|
||||
@extend .alert-info;
|
||||
margin-bottom:15px;
|
||||
margin-bottom:20px;
|
||||
padding:8px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
|
|
|
@ -2,18 +2,17 @@ class DashboardController < ApplicationController
|
|||
respond_to :html
|
||||
|
||||
def index
|
||||
@projects = current_user.projects.all
|
||||
@projects = current_user.projects.includes(:events).order("events.created_at DESC")
|
||||
@projects = @projects.page(params[:page]).per(40)
|
||||
|
||||
@active_projects = @projects.select(&:last_activity_date).sort_by(&:last_activity_date).reverse
|
||||
@events = Event.where(:project_id => current_user.projects.map(&:id)).recent.limit(20)
|
||||
|
||||
@merge_requests = MergeRequest.where("author_id = :id or assignee_id = :id", :id => current_user.id).opened.order("created_at DESC").limit(5)
|
||||
@last_push = current_user.recent_push
|
||||
|
||||
@user = current_user
|
||||
@issues = current_user.assigned_issues.opened.order("created_at DESC").limit(5)
|
||||
@issues = @issues.includes(:author, :project)
|
||||
|
||||
@events = Event.where(:project_id => @projects.map(&:id)).recent.limit(20)
|
||||
@last_push = Event.where(:project_id => @projects.map(&:id)).recent.code_push.limit(1).first
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.atom { render :layout => false }
|
||||
end
|
||||
end
|
||||
|
||||
# Get authored or assigned open merge requests
|
||||
|
|
|
@ -60,8 +60,9 @@ module ApplicationHelper
|
|||
def search_autocomplete_source
|
||||
projects = current_user.projects.map{ |p| { :label => p.name, :url => project_path(p) } }
|
||||
default_nav = [
|
||||
{ :label => "Profile", :url => profile_path },
|
||||
{ :label => "Keys", :url => keys_path },
|
||||
{ :label => "Projects", :url => projects_path },
|
||||
{ :label => "Dashboard", :url => root_path },
|
||||
{ :label => "Admin", :url => admin_root_path }
|
||||
]
|
||||
|
||||
|
|
|
@ -34,6 +34,13 @@
|
|||
→
|
||||
.bottom= paginate @projects, :theme => "gitlab"
|
||||
|
||||
%hr
|
||||
%div
|
||||
%span.rss-icon
|
||||
= link_to dashboard_path(:atom, { :private_token => current_user.private_token }) do
|
||||
= image_tag "rss_ui.png", :title => "feed"
|
||||
%strong News Feed
|
||||
|
||||
- else
|
||||
%h3.nothing_here_message There are no projects you have access to.
|
||||
%br
|
2
app/views/dashboard/index.js.haml
Normal file
2
app/views/dashboard/index.js.haml
Normal file
|
@ -0,0 +1,2 @@
|
|||
:plain
|
||||
$(".projects .activities").append("#{escape_javascript(render(@events))}");
|
|
@ -1,5 +1,5 @@
|
|||
%nav.main_menu
|
||||
= link_to "Home", root_path, :class => "home #{"current" if current_page?(projects_path) || current_page?(root_path)}", :title => "Home"
|
||||
= link_to "Home", root_path, :class => "home #{"current" if current_page?(dashboard_path) || current_page?(root_path)}", :title => "Home"
|
||||
= link_to dashboard_issues_path, :class => "#{"current" if current_page?(dashboard_issues_path)}", :id => "issues_slide" do
|
||||
Issues
|
||||
%span.count= current_user.assigned_issues.opened.count
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
:plain
|
||||
Pager.append(#{@projects.count}, "#{escape_javascript(render(:partial => 'projects/tile'))}");
|
|
@ -2,10 +2,6 @@
|
|||
|
||||
.entry
|
||||
.row
|
||||
-#.span2
|
||||
.back_link
|
||||
= link_to projects_path do
|
||||
← To projects list
|
||||
.span7
|
||||
.form-horizontal
|
||||
.input-prepend
|
||||
|
|
|
@ -33,6 +33,10 @@ Gitlab::Application.routes.draw do
|
|||
end
|
||||
|
||||
get "errors/githost"
|
||||
|
||||
#
|
||||
# Profile Area
|
||||
#
|
||||
get "profile/password", :to => "profile#password"
|
||||
put "profile/password", :to => "profile#password_update"
|
||||
get "profile/token", :to => "profile#token"
|
||||
|
@ -41,10 +45,14 @@ Gitlab::Application.routes.draw do
|
|||
get "profile/design", :to => "profile#design"
|
||||
put "profile/update", :to => "profile#update"
|
||||
|
||||
#
|
||||
# Dashboard Area
|
||||
#
|
||||
get "dashboard", :to => "dashboard#index"
|
||||
get "dashboard/issues", :to => "dashboard#issues"
|
||||
get "dashboard/merge_requests", :to => "dashboard#merge_requests"
|
||||
|
||||
resources :projects, :constraints => { :id => /[^\/]+/ }, :only => [:new, :create, :index]
|
||||
resources :projects, :constraints => { :id => /[^\/]+/ }, :only => [:new, :create]
|
||||
resources :keys
|
||||
|
||||
devise_for :users, :controllers => { :omniauth_callbacks => :omniauth_callbacks }
|
||||
|
@ -145,5 +153,5 @@ Gitlab::Application.routes.draw do
|
|||
end
|
||||
resources :notes, :only => [:index, :create, :destroy]
|
||||
end
|
||||
root :to => "projects#index"
|
||||
root :to => "dashboard#index"
|
||||
end
|
||||
|
|
39
spec/requests/dashboard_spec.rb
Normal file
39
spec/requests/dashboard_spec.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe "User Dashboard" do
|
||||
before { login_as :user }
|
||||
|
||||
describe "GET /" do
|
||||
before do
|
||||
@project = Factory :project, :owner => @user
|
||||
@project.add_access(@user, :read)
|
||||
visit dashboard_path
|
||||
end
|
||||
|
||||
it "should be on projects page" do
|
||||
current_path.should == dashboard_path
|
||||
end
|
||||
|
||||
it "should have link to new project" do
|
||||
page.should have_content("New Project")
|
||||
end
|
||||
|
||||
it "should have project" do
|
||||
page.should have_content(@project.name)
|
||||
end
|
||||
|
||||
it "should render projects atom feed via private token" do
|
||||
logout
|
||||
|
||||
visit dashboard_path(:atom, :private_token => @user.private_token)
|
||||
page.body.should have_selector("feed title")
|
||||
end
|
||||
|
||||
it "should not render projects page via private token" do
|
||||
logout
|
||||
|
||||
visit dashboard_path(:private_token => @user.private_token)
|
||||
current_path.should == new_user_session_path
|
||||
end
|
||||
end
|
||||
end
|
|
@ -7,7 +7,7 @@ describe "Last Push widget" do
|
|||
@project = Factory :project, :owner => @user
|
||||
@project.add_access(@user, :read)
|
||||
create_push_event
|
||||
visit projects_path
|
||||
visit dashboard_path
|
||||
end
|
||||
|
||||
it "should display last push widget with link to merge request page" do
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe "Projects" do
|
||||
describe "GET /projects" do
|
||||
it { projects_path.should be_allowed_for :admin }
|
||||
it { projects_path.should be_allowed_for :user }
|
||||
it { projects_path.should be_denied_for :visitor }
|
||||
describe "Projects Security" do
|
||||
describe "GET /" do
|
||||
it { root_path.should be_allowed_for :admin }
|
||||
it { root_path.should be_allowed_for :user }
|
||||
it { root_path.should be_denied_for :visitor }
|
||||
end
|
||||
|
||||
describe "GET /projects/new" do
|
||||
it { projects_path.should be_allowed_for :admin }
|
||||
it { projects_path.should be_allowed_for :user }
|
||||
it { projects_path.should be_denied_for :visitor }
|
||||
it { new_project_path.should be_allowed_for :admin }
|
||||
it { new_project_path.should be_allowed_for :user }
|
||||
it { new_project_path.should be_denied_for :visitor }
|
||||
end
|
||||
|
||||
describe "Project" do
|
||||
|
|
|
@ -3,43 +3,9 @@ require 'spec_helper'
|
|||
describe "Projects" do
|
||||
before { login_as :user }
|
||||
|
||||
describe "GET /projects" do
|
||||
before do
|
||||
@project = Factory :project, :owner => @user
|
||||
@project.add_access(@user, :read)
|
||||
visit projects_path
|
||||
end
|
||||
|
||||
it "should be on projects page" do
|
||||
current_path.should == projects_path
|
||||
end
|
||||
|
||||
it "should have link to new project" do
|
||||
page.should have_content("New Project")
|
||||
end
|
||||
|
||||
it "should have project" do
|
||||
page.should have_content(@project.name)
|
||||
end
|
||||
|
||||
it "should render projects atom feed via private token" do
|
||||
logout
|
||||
|
||||
visit projects_path(:atom, :private_token => @user.private_token)
|
||||
page.body.should have_selector("feed title")
|
||||
end
|
||||
|
||||
it "should not render projects page via private token" do
|
||||
logout
|
||||
|
||||
visit projects_path(:private_token => @user.private_token)
|
||||
current_path.should == new_user_session_path
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/new" do
|
||||
before do
|
||||
visit projects_path
|
||||
visit root_path
|
||||
click_link "New Project"
|
||||
end
|
||||
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
__END__
|
||||
require 'spec_helper'
|
||||
|
||||
describe "Top Panel", :js => true do
|
||||
before { login_as :user }
|
||||
|
||||
describe "Search autocomplete" do
|
||||
before do
|
||||
visit projects_path
|
||||
fill_in "search", :with => "Ke"
|
||||
within ".ui-autocomplete" do
|
||||
find(:xpath, "//a[.=\"Keys\"]").click
|
||||
end
|
||||
end
|
||||
|
||||
it "should be on projects page" do
|
||||
current_path.should == keys_path
|
||||
end
|
||||
end
|
||||
|
||||
describe "with project" do
|
||||
before do
|
||||
@project = Factory :project
|
||||
@project.add_access(@user, :read)
|
||||
visit project_path(@project)
|
||||
|
||||
fill_in "search", :with => "Commi"
|
||||
within ".ui-autocomplete" do
|
||||
find(:xpath, "//a[.=\"#{@project.code} / Commits\"]").click
|
||||
end
|
||||
end
|
||||
|
||||
it "should be on projects page" do
|
||||
current_path.should == project_commits_path(@project)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue