summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2010-01-12 11:01:36 +0100
committerJohan Sørensen <johan@johansorensen.com>2010-01-12 11:01:36 +0100
commit624e4220fba6510d1f219b0ce80b7fe672d37958 (patch)
tree0612e27e5523c0c5edf942675f15714bf866e3b4
parenta5c14a41bba328960f3a9338ce79b25185ea4a09 (diff)
downloadgitorious-mainline-outdated-624e4220fba6510d1f219b0ce80b7fe672d37958.zip
gitorious-mainline-outdated-624e4220fba6510d1f219b0ce80b7fe672d37958.tar.gz
gitorious-mainline-outdated-624e4220fba6510d1f219b0ce80b7fe672d37958.tar.bz2
Add a dashboard breadcrumb
-rw-r--r--app/controllers/site_controller.rb25
-rw-r--r--app/helpers/breadcrumbs_helper.rb14
-rw-r--r--app/views/site/dashboard.html.erb1
-rw-r--r--lib/breadcrumb.rb25
-rw-r--r--public/stylesheets/base.css1
-rw-r--r--test/functional/site_controller_test.rb6
6 files changed, 50 insertions, 22 deletions
diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb
index b6e2943..3436b59 100644
--- a/app/controllers/site_controller.rb
+++ b/app/controllers/site_controller.rb
@@ -25,7 +25,7 @@ class SiteController < ApplicationController
before_filter :login_required, :only => [:dashboard]
renders_in_site_specific_context :except => [:about, :faq, :contact]
renders_in_global_context :only => [:about, :faq, :contact]
-
+
def index
if !current_site.subdomain.blank?
render_site_index and return
@@ -38,22 +38,22 @@ class SiteController < ApplicationController
render_public_timeline
end
-
+
def dashboard
redirect_to current_user
end
-
+
def about
end
-
- def faq
+
+ def faq
end
-
- def contact
+
+ def contact
end
-
+
protected
-
+
# Render a Site-specific index template
def render_site_index
@projects = current_site.projects.find(:all, :order => "created_at asc")
@@ -82,6 +82,7 @@ class SiteController < ApplicationController
@events = @user.paginated_events_in_watchlist(:page => params[:page])
@messages = @user.messages_in_inbox(3) if @user == current_user
@favorites = @user.watched_objects
+ @root = Breadcrumb::Dashboard.new(current_user)
render :template => "site/dashboard"
end
@@ -91,10 +92,10 @@ class SiteController < ApplicationController
@teams = Group.most_active
@users = User.most_active
@latest_events = Event.latest(4)
-
+
render :layout => "second_generation/application", :inline => ""
end
-
+
# Render the global index template
def render_global_index
if logged_in?
@@ -105,5 +106,5 @@ class SiteController < ApplicationController
render_public_timeline
end
end
-
+
end
diff --git a/app/helpers/breadcrumbs_helper.rb b/app/helpers/breadcrumbs_helper.rb
index 1ca864f..e1a1fa9 100644
--- a/app/helpers/breadcrumbs_helper.rb
+++ b/app/helpers/breadcrumbs_helper.rb
@@ -15,7 +15,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#++
-module BreadcrumbsHelper
+module BreadcrumbsHelper
def render_breadcrumb_starting_from(root)
result = []
html = ''
@@ -35,14 +35,14 @@ module BreadcrumbsHelper
end
html
end
-
+
# Renders breadcrumbs starting from +root+
def breadcrumbs_from(root)
content_for(:breadcrumbs) do
render_breadcrumb_starting_from(root)
end
end
-
+
def breadcrumb_link_to(an_object)
url = case an_object
when Repository
@@ -54,7 +54,7 @@ module BreadcrumbsHelper
when User
user_path(an_object)
when Breadcrumb::Branch
- repo_owner_path(@repository, :project_repository_commits_in_ref_path,
+ repo_owner_path(@repository, :project_repository_commits_in_ref_path,
@project, @repository, ensplat_path(an_object.title))
when Breadcrumb::Folder
tree_path(@ref, an_object.paths)
@@ -72,7 +72,7 @@ module BreadcrumbsHelper
edit_group_membership_path(@group, @membership)
when Breadcrumb::MergeRequests
[@owner, @repository, :merge_requests]
- when MergeRequest
+ when MergeRequest
[@owner, @repository, @merge_request]
when Breadcrumb::Committerships
[@owner, @repository, :committerships]
@@ -82,7 +82,7 @@ module BreadcrumbsHelper
messages_path
when Breadcrumb::ReceivedMessages
messages_path
- when Breadcrumb::SentMessages
+ when Breadcrumb::SentMessages
sent_messages_path
when Breadcrumb::Aliases
user_aliases_path
@@ -90,6 +90,8 @@ module BreadcrumbsHelper
user_keys_path
when Message
an_object.new_record? ? new_message_path : message_path(an_object)
+ when Breadcrumb::Dashboard
+ root_path
else
"" # Current path
end
diff --git a/app/views/site/dashboard.html.erb b/app/views/site/dashboard.html.erb
index 193c835..fd89873 100644
--- a/app/views/site/dashboard.html.erb
+++ b/app/views/site/dashboard.html.erb
@@ -18,6 +18,7 @@
%>
<% @page_title = "Your dashboard" -%>
+<%= breadcrumbs_from(@root) -%>
<div class="with_divider">
<div id="left">
diff --git a/lib/breadcrumb.rb b/lib/breadcrumb.rb
index f7e1c60..7589363 100644
--- a/lib/breadcrumb.rb
+++ b/lib/breadcrumb.rb
@@ -293,7 +293,7 @@ module Breadcrumb
end
def breadcrumb_parent
- @user
+ Dashboard.new(@user)
end
def title
@@ -311,7 +311,7 @@ module Breadcrumb
end
def breadcrumb_parent
- @user
+ Dashboard.new(@user)
end
def title
@@ -329,7 +329,7 @@ module Breadcrumb
end
def breadcrumb_parent
- @user
+ Dashboard.new(@user)
end
def title
@@ -365,7 +365,7 @@ module Breadcrumb
end
def breadcrumb_parent
- @user
+ Dashboard.new(@user)
end
def title
@@ -490,4 +490,21 @@ module Breadcrumb
end
end
+ class Dashboard
+ def initialize(user)
+ @user = user
+ end
+
+ def breadcrumb_parent
+ @user
+ end
+
+ def title
+ "Dashboard"
+ end
+
+ def breadcrumb_css_class
+ "dashboard"
+ end
+ end
end
diff --git a/public/stylesheets/base.css b/public/stylesheets/base.css
index 496a2c5..fb9b35b 100644
--- a/public/stylesheets/base.css
+++ b/public/stylesheets/base.css
@@ -590,6 +590,7 @@ li.sent_emails > a { background-image: url("../images/silk/email_go.png") !impor
li.received_emails > a { background-image: url("../images/silk/email_open.png") !important; }
li.all_emails > a { background-image: url("../images/silk/folder.png") !important; }
li.favorite > a { background-image: url("../images/silk/star.png"); }
+li.dashboard > a { background-image: url("../images/silk/shield.png") !important; }
/* Icons used both for events and actions/breadcrums */
li.event_instance.create_repository, li.create_repository > a { background-image: url("../images/silk/database_add.png") !important; }
diff --git a/test/functional/site_controller_test.rb b/test/functional/site_controller_test.rb
index 36e2693..592b7a4 100644
--- a/test/functional/site_controller_test.rb
+++ b/test/functional/site_controller_test.rb
@@ -62,6 +62,12 @@ class SiteControllerTest < ActionController::TestCase
assert_response :success
assert_template "site/dashboard"
end
+
+ should "render the dashboard breadcrumb" do
+ login_as :johan
+ get :index
+ assert_instance_of Breadcrumb::Dashboard, assigns(:root)
+ end
end
context "Anonymous users" do