Skip to content
Snippets Groups Projects
Commit cd779e56 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

dashboard v1

parent 4107f2cc
No related branches found
No related tags found
No related merge requests found
Showing
with 188 additions and 128 deletions
class DashboardController < ApplicationController
respond_to :js, :html
def index
@projects = current_user.projects.all
@active_projects = @projects.select(&:last_activity_date).sort_by(&:last_activity_date).reverse
respond_to do |format|
format.html
format.js { no_cache_headers }
end
end
def merge_requests
@projects = current_user.projects.all
@merge_requests = current_user.assigned_merge_requests.order("created_at DESC").limit(40)
respond_to do |format|
format.html
format.js { no_cache_headers }
end
end
def issues
@projects = current_user.projects.all
@user = current_user
@issues = current_user.assigned_issues.opened.order("created_at DESC").limit(40)
@issues = @issues.includes(:author, :project)
respond_to do |format|
format.html
format.js { no_cache_headers }
format.atom { render :layout => false }
end
end
end
class UserIssuesController < ApplicationController
before_filter :authenticate_user!
respond_to :js, :html
def index
@projects = current_user.projects.all
@user = current_user
@issues = current_user.assigned_issues.opened
@issues = @issues.includes(:author, :project)
respond_to do |format|
format.html
format.js
format.atom { render :layout => false }
end
end
end
class UserMergeRequestsController < ApplicationController
before_filter :authenticate_user!
def index
@projects = current_user.projects.all
@merge_requests = current_user.assigned_merge_requests
end
end
#news-feed.news-feed
%div
= link_to dashboard_path, :class => "left" do
.box-arrow
&larr;
%h2{:style => "width:86%; text-align:center"}
Issues
= link_to merge_requests_path, :class => "right" do
.box-arrow
&rarr;
%div
= link_to dashboard_path, :remote => true, :class => "left" do
.box-arrow
&larr;
%h2{:style => "width:86%; text-align:center"}
Issues
= link_to dashboard_merge_requests_path, :remote => true, :class => "right" do
.box-arrow
&rarr;
 
 
#feeds_content_holder
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
.data
- @issues.each do |update|
%a.project-update{:href => dashboard_feed_path(update.project, update)}
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
%span.update-title
= dashboard_feed_title(update)
= truncate update.title, :length => 50
.right= update.project.name
%span.update-author
%strong= update.author_name
authored
= time_ago_in_words(update.created_at)
ago
.right
- klass = update.class.to_s.split("::").last.downcase
%span.tag{ :class => klass }= klass
- if update.critical
%span.tag.high critical
- if update.today?
%span.tag.today today
 
#news-feed.news-feed
%div
= link_to issues_path, :class => "left" do
.box-arrow
&larr;
%h2{:style => "width:86%; text-align:center"}
Merge Requests
= link_to dashboard_path, :class => "right" do
.box-arrow
&rarr;
%div
= link_to dashboard_issues_path, :remote => true, :class => "left" do
.box-arrow
&larr;
%h2{:style => "width:86%; text-align:center"}
Merge Requests
= link_to dashboard_path, :remote => true, :class => "right" do
.box-arrow
&rarr;
 
#feeds_content_holder
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
.data
- @merge_requests.each do |update|
%a.project-update{:href => dashboard_feed_path(update.project, update)}
%a.project-update{:href => project_merge_request_path(update.project, update)}
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
%span.update-title
= dashboard_feed_title(update)
= truncate update.title, :length => 70
.right= update.project.name
%span.update-author
%strong= update.author_name
authored
= time_ago_in_words(update.created_at)
ago
.right
- klass = update.class.to_s.split("::").last.downcase
%span.tag{ :class => klass }= klass
%span.tag.commit= update.source_branch
&rarr;
%span.tag.commit= update.target_branch
#news-feed.news-feed
%div
= link_to merge_requests_path, :class => "left" do
.box-arrow
&larr;
%h2{:style => "width:86%; text-align:center"}
Activities
= link_to issues_path, :class => "right" do
.box-arrow
&rarr;
%div
= link_to dashboard_merge_requests_path, :remote => true, :class => "left", :id => "merge_requests_slide" do
.box-arrow
&larr;
%h2{:style => "width:86%; text-align:center"}
Activities
= link_to dashboard_issues_path, :remote => true, :class => "right", :id => "issues_slide" do
.box-arrow
&rarr;
 
#feeds_content_holder
- @active_projects.first(3).each do |project|
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
= link_to project, do
Loading
Loading
%aside
%h4
- if current_user.can_create_project?
%a.button-small.button-green{:href => new_project_path} New Project
Your Projects
%ol.project-list
- @projects.each do |project|
%li
%a{:href => project_path(project)}
%span.arrow
%span.project-name= project.name
%span.time
%strong Last activity:
= project.last_activity_date ? time_ago_in_words(project.last_activity_date) + " ago" : "Never"
- content_for(:body_class, "dashboard-page")
 
#dashboard-content.dashboard-content.content
%aside
%h4
- if current_user.can_create_project?
%a.button-small.button-green{:href => new_project_path} New Project
Your Projects
%ol.project-list
- @projects.each do |project|
%li
%a{:href => project_path(project)}
%span.arrow
%span.project-name= project.name
%span.time
%strong Last activity:
= project.last_activity_date ? time_ago_in_words(project.last_activity_date) + " ago" : "Never"
= render "dashboard/projects_feed"
= render "dashboard/sidebar"
#news-feed.news-feed= render "dashboard/projects_feed"
:plain
$("#feeds_content_holder").hide("slide", { direction: "left" }, 150, function(){
$("#news-feed").html("#{escape_javascript(render(:partial => "projects_feed"))}");
$("#feeds_content_holder").show("slide", { direction: "right" }, 150);
history.pushState({ path: this.path }, '', '#{dashboard_path}')
});
xml.instruct!
xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://search.yahoo.com/mrss/" do
xml.title "#{@user.name} issues"
xml.link :href => issues_url(:atom, :private_token => @user.private_token), :rel => "self", :type => "application/atom+xml"
xml.link :href => issues_url(:private_token => @user.private_token), :rel => "alternate", :type => "text/html"
xml.id issues_url(:private_token => @user.private_token)
xml.link :href => dashboard_issues_url(:atom, :private_token => @user.private_token), :rel => "self", :type => "application/atom+xml"
xml.link :href => dashboard_issues_url(:private_token => @user.private_token), :rel => "alternate", :type => "text/html"
xml.id dashboard_issues_url(:private_token => @user.private_token)
xml.updated @issues.first.created_at.strftime("%Y-%m-%dT%H:%M:%SZ") if @issues.any?
 
@issues.each do |issue|
Loading
Loading
- content_for(:body_class, "dashboard-page")
#dashboard-content.dashboard-content.content
= render "dashboard/sidebar"
#news-feed.news-feed= render "dashboard/issues_feed"
:plain
$("#feeds_content_holder").hide("slide", { direction: "left" }, 150, function(){
$("#news-feed").html("#{escape_javascript(render(:partial => "issues_feed"))}");
$("#feeds_content_holder").show("slide", { direction: "right" }, 150);
history.pushState({ path: this.path }, '', '#{dashboard_issues_path}')
});
- content_for(:body_class, "dashboard-page")
#dashboard-content.dashboard-content.content
= render "dashboard/sidebar"
#news-feed.news-feed= render "dashboard/merge_requests_feed"
:plain
$("#feeds_content_holder").hide("slide", { direction: "left" }, 150, function(){
$("#news-feed").html("#{escape_javascript(render(:partial => "merge_requests_feed"))}");
$("#feeds_content_holder").show("slide", { direction: "right" }, 150);
history.pushState({ path: this.path }, '', '#{dashboard_merge_requests_path}')
});
Loading
Loading
@@ -3,9 +3,6 @@
%span.update-title
= merge_request.title
%span.update-author
- if not @project.present?
%strong= merge_request.project.name
= '-'
%strong= merge_request.author_name
authored
= time_ago_in_words(merge_request.created_at)
Loading
Loading
- content_for(:body_class, "dashboard-page")
#dashboard-content.dashboard-content.content
%aside
%h4
- if current_user.can_create_project?
%a.button-small.button-green{:href => new_project_path} New Project
Your Projects
%ol.project-list
- @projects.each do |project|
%li
%a{:href => project_path(project)}
%span.arrow
%span.project-name= project.name
%span.time
%strong Last activity:
= project.last_activity_date ? time_ago_in_words(project.last_activity_date) + " ago" : "Never"
= render "dashboard/issues_feed"
- content_for(:body_class, "dashboard-page")
#dashboard-content.dashboard-content.content
%aside
%h4
- if current_user.can_create_project?
%a.button-small.button-green{:href => new_project_path} New Project
Your Projects
%ol.project-list
- @projects.each do |project|
%li
%a{:href => project_path(project)}
%span.arrow
%span.project-name= project.name
%span.time
%strong Last activity:
= project.last_activity_date ? time_ago_in_words(project.last_activity_date) + " ago" : "Never"
= render "dashboard/merge_requests_feed"
Gitlab::Application.routes.draw do
 
get "user_issues/index"
 
get 'tags'=> 'tags#index'
get 'tags/:tag' => 'projects#index'
Loading
Loading
@@ -22,9 +21,10 @@ Gitlab::Application.routes.draw do
put "profile/reset_private_token", :to => "profile#reset_private_token"
put "profile/edit", :to => "profile#social_update"
get "profile", :to => "profile#show"
get "dashboard", :to => "dashboard#index"
get "issues", :to => "user_issues#index", :as => "issues"
get "merge_requests", :to => "user_merge_requests#index", :as => "merge_requests"
get "dashboard/issues", :to => "dashboard#issues"
get "dashboard/merge_requests", :to => "dashboard#merge_requests"
 
#get "profile/:id", :to => "profile#show"
 
Loading
Loading
require 'spec_helper'
 
describe "User Issues Dashboard" do
describe "User Issues Dashboard", :js => true do
describe "GET /issues" do
before do
 
Loading
Loading
@@ -27,29 +27,32 @@ describe "User Issues Dashboard" do
:assignee => @user,
:project => @project2
 
visit issues_path
visit dashboard_path
click_link "issues_slide"
end
 
subject { page }
 
it { should have_content(@issue1.title) }
it { should have_content(@issue1.title[0..10]) }
it { should have_content(@issue1.project.name) }
it { should have_content(@issue1.assignee.name) }
 
it { should have_content(@issue2.title) }
it { should have_content(@issue2.title[0..10]) }
it { should have_content(@issue2.project.name) }
it { should have_content(@issue2.assignee.name) }
 
it "should render atom feed via private token" do
logout
visit issues_path(:atom, :private_token => @user.private_token)
page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", :text => "#{@user.name} issues")
page.body.should have_selector("author email", :text => @issue1.author_email)
page.body.should have_selector("entry summary", :text => @issue1.title)
page.body.should have_selector("author email", :text => @issue2.author_email)
page.body.should have_selector("entry summary", :text => @issue2.title)
describe "atom feed", :js => false do
it "should render atom feed via private token" do
logout
visit dashboard_issues_path(:atom, :private_token => @user.private_token)
page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", :text => "#{@user.name} issues")
page.body.should have_selector("author email", :text => @issue1.author_email)
page.body.should have_selector("entry summary", :text => @issue1.title)
page.body.should have_selector("author email", :text => @issue2.author_email)
page.body.should have_selector("entry summary", :text => @issue2.title)
end
end
end
end
require 'spec_helper'
 
describe "User MergeRequests" do
describe "User MergeRequests", :js => true do
describe "GET /issues" do
before do
 
Loading
Loading
@@ -27,7 +27,8 @@ describe "User MergeRequests" do
:assignee => @user,
:project => @project2
 
visit merge_requests_path
visit dashboard_path
click_link "merge_requests_slide"
end
 
subject { page }
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment