summaryrefslogtreecommitdiffstats
path: root/app/helpers
diff options
context:
space:
mode:
authorJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2010-08-08 07:07:20 +0000
committerJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2010-08-08 07:07:20 +0000
commita1b607480abc6649f9531b1fd8a7d20c3c656084 (patch)
treec23e04bd9922308d8c00f9e3962a02bdcb120248 /app/helpers
parent5b64f0ff969db3f0a99c1c780ab03d842da6b59d (diff)
downloadredmine-a1b607480abc6649f9531b1fd8a7d20c3c656084.tar.gz
redmine-a1b607480abc6649f9531b1fd8a7d20c3c656084.zip
Refactor: added link_to_project helper to handle links to projects
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3924 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/application_helper.rb27
-rw-r--r--app/helpers/projects_helper.rb2
-rw-r--r--app/helpers/queries_helper.rb2
3 files changed, 23 insertions, 8 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index d6fd16a6e..2c334b7f0 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -103,6 +103,23 @@ module ApplicationHelper
link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => revision}, :title => l(:label_revision_id, revision))
end
+ # Generates a link to a project if active
+ # Examples:
+ #
+ # link_to_project(project) # => link to the specified project overview
+ # link_to_project(project, :action=>'settings') # => link to project settings
+ # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options
+ # link_to_project(project, {}, :class => "project") # => html options with default url (project overview)
+ #
+ def link_to_project(project, options={}, html_options = nil)
+ if project.active?
+ url = {:controller => 'projects', :action => 'show', :id => project}.merge(options)
+ link_to(h(project), url, html_options)
+ else
+ h(project)
+ end
+ end
+
def toggle_link(name, id, options={})
onclick = "Element.toggle('#{id}'); "
onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
@@ -368,12 +385,12 @@ module ApplicationHelper
ancestors = (@project.root? ? [] : @project.ancestors.visible)
if ancestors.any?
root = ancestors.shift
- b << link_to(h(root), {:controller => 'projects', :action => 'show', :id => root, :jump => current_menu_item}, :class => 'root')
+ b << link_to_project(root, {:jump => current_menu_item}, :class => 'root')
if ancestors.size > 2
b << '&#8230;'
ancestors = ancestors[-2, 2]
end
- b += ancestors.collect {|p| link_to(h(p), {:controller => 'projects', :action => 'show', :id => p, :jump => current_menu_item}, :class => 'ancestor') }
+ b += ancestors.collect {|p| link_to_project(p, {:jump => current_menu_item}, :class => 'ancestor') }
end
b << h(@project)
b.join(' &#187; ')
@@ -605,8 +622,7 @@ module ApplicationHelper
end
when 'project'
if p = Project.visible.find_by_id(oid)
- link = link_to h(p.name), {:only_path => only_path, :controller => 'projects', :action => 'show', :id => p},
- :class => 'project'
+ link = link_to_project(p, {:only_path => only_path}, :class => 'project')
end
end
elsif sep == ':'
@@ -648,8 +664,7 @@ module ApplicationHelper
end
when 'project'
if p = Project.visible.find(:first, :conditions => ["identifier = :s OR LOWER(name) = :s", {:s => name.downcase}])
- link = link_to h(p.name), {:only_path => only_path, :controller => 'projects', :action => 'show', :id => p},
- :class => 'project'
+ link = link_to_project(p, {:only_path => only_path}, :class => 'project')
end
end
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 044ccfb77..3b089c111 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -72,7 +72,7 @@ module ProjectsHelper
end
classes = (ancestors.empty? ? 'root' : 'child')
s << "<li class='#{classes}'><div class='#{classes}'>" +
- link_to(h(project), {:controller => 'projects', :action => 'show', :id => project}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}")
+ link_to_project(project, {}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}")
s << "<div class='wiki description'>#{textilizable(project.short_description, :project => project)}</div>" unless project.description.blank?
s << "</div>\n"
ancestors << project
diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb
index 594c8a79a..26be63693 100644
--- a/app/helpers/queries_helper.rb
+++ b/app/helpers/queries_helper.rb
@@ -50,7 +50,7 @@ module QueriesHelper
when 'User'
link_to_user value
when 'Project'
- link_to(h(value), :controller => 'projects', :action => 'show', :id => value)
+ link_to_project value
when 'Version'
link_to(h(value), :controller => 'versions', :action => 'show', :id => value)
when 'TrueClass'