diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-07 20:07:54 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-07 20:07:54 +0000 |
commit | fdf842a4c458b9f40c233bda221ff241df8eb108 (patch) | |
tree | 2c0347e452453725c478d9423ba610459bd135ed | |
parent | b812705976645a58a441b00a1fc9050dd1fa6887 (diff) | |
download | redmine-fdf842a4c458b9f40c233bda221ff241df8eb108.tar.gz redmine-fdf842a4c458b9f40c233bda221ff241df8eb108.zip |
Improved Redmine links:
* issue and changeset links generated only if the object exists
* issue subject and status appear in the link title
* strike issue link if issue is closed
* red wiki page link if page doesn't exist
* new icon for external links
Wiki page cache had to be disabled.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@714 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/helpers/application_helper.rb | 22 | ||||
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | app/views/projects/_form.rhtml | 2 | ||||
-rw-r--r-- | app/views/wiki/_content.rhtml | 4 | ||||
-rw-r--r-- | public/images/external.png | bin | 323 -> 194 bytes | |||
-rw-r--r-- | public/stylesheets/application.css | 6 | ||||
-rw-r--r-- | test/unit/helpers/application_helper_test.rb | 13 |
7 files changed, 35 insertions, 13 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 135d61627..91594529b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -157,7 +157,16 @@ module ApplicationHelper page = title || $2 title = $1 if page.blank? end - link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page)), :class => 'wiki-page') + + if link_project && link_project.wiki + # check if page exists + wiki_page = link_project.wiki.find_page(page) + link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page)), + :class => ('wiki-page' + (wiki_page ? '' : ' new'))) + else + # project or wiki doesn't exist + title || page + end end # turn issue and revision ids into links @@ -168,9 +177,16 @@ module ApplicationHelper leading, otype, oid = $1, $2, $3 link = nil if otype == 'r' - link = link_to("r#{oid}", {:controller => 'repositories', :action => 'revision', :id => project.id, :rev => oid}, :class => 'changeset') if project + if project && (changeset = project.changesets.find_by_revision(oid)) + link = link_to("r#{oid}", {:controller => 'repositories', :action => 'revision', :id => project.id, :rev => oid}, :class => 'changeset', + :title => truncate(changeset.comments, 100)) + end else - link = link_to("##{oid}", {:controller => 'issues', :action => 'show', :id => oid}, :class => 'issue') + if issue = Issue.find_by_id(oid.to_i, :include => [:project, :status], :conditions => Project.visible_by(User.current)) + link = link_to("##{oid}", {:controller => 'issues', :action => 'show', :id => oid}, :class => 'issue', + :title => "#{truncate(issue.subject, 100)} (#{issue.status.name})") + link = content_tag('del', link) if issue.closed? + end end leading + (link || "#{otype}#{oid}") end diff --git a/app/models/project.rb b/app/models/project.rb index 2eaa0f733..fa975c435 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -33,6 +33,7 @@ class Project < ActiveRecord::Base has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name" has_many :boards, :order => "position ASC" has_one :repository, :dependent => :destroy + has_many :changesets, :through => :repository has_one :wiki, :dependent => :destroy has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id' acts_as_tree :order => "name", :counter_cache => true diff --git a/app/views/projects/_form.rhtml b/app/views/projects/_form.rhtml index 55527e080..7edf17e30 100644 --- a/app/views/projects/_form.rhtml +++ b/app/views/projects/_form.rhtml @@ -45,7 +45,7 @@ <%= hidden_field_tag "wiki_enabled", 0 %> <div id="wiki"> <% fields_for :wiki, @project.wiki, { :builder => TabularFormBuilder, :lang => current_language} do |wiki| %> -<p><%= wiki.text_field :start_page, :size => 60, :required => true %><br /><em><%= l(:text_unallowed_characters) %>: , . / ? ; |</em></p> +<p><%= wiki.text_field :start_page, :size => 60, :required => true %><br /><em><%= l(:text_unallowed_characters) %>: , . / ? ; : |</em></p> <% # content_tag("div", "", :id => "wiki_start_page_auto_complete", :class => "auto_complete") + # auto_complete_field("wiki_start_page", { :url => { :controller => 'wiki', :action => 'auto_complete_for_wiki_page', :id => @project } }) %> diff --git a/app/views/wiki/_content.rhtml b/app/views/wiki/_content.rhtml index 3f7c14201..0c6f4d648 100644 --- a/app/views/wiki/_content.rhtml +++ b/app/views/wiki/_content.rhtml @@ -1,5 +1,3 @@ <div class="wiki"> - <% cache "wiki/show/#{content.page.id}/#{content.version}" do %> - <%= textilizable content.text, :attachments => content.page.attachments %> - <% end %> + <%= textilizable content.text, :attachments => content.page.attachments %> </div> diff --git a/public/images/external.png b/public/images/external.png Binary files differindex 0561752f4..45df6404f 100644 --- a/public/images/external.png +++ b/public/images/external.png diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index bb1812025..8f4a3ecdb 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -615,7 +615,7 @@ div.wiki table, div.wiki td, div.wiki th { div.wiki a { background-position: 0% 60%; background-repeat: no-repeat; - padding-left: 14px; + padding-left: 12px; background-image: url(../images/external.png); } @@ -624,6 +624,10 @@ div.wiki a.wiki-page, div.wiki a.issue, div.wiki a.changeset, div.wiki a.email { background-image: none; } +div.wiki a.new { + color: #b73535; +} + div.wiki code { font-size: 1.2em; } diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index c618cec09..10372fb74 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -19,7 +19,8 @@ require File.dirname(__FILE__) + '/../../test_helper' class ApplicationHelperTest < HelperTestCase include ApplicationHelper - fixtures :projects + include ActionView::Helpers::TextHelper + fixtures :projects, :repositories, :changesets, :trackers, :issue_statuses, :issues def setup super @@ -53,12 +54,14 @@ class ApplicationHelperTest < HelperTestCase end def test_redmine_links - issue_link = link_to('#52', {:controller => 'issues', :action => 'show', :id => 52}, :class => 'issue') - changeset_link = link_to('r19', {:controller => 'repositories', :action => 'revision', :id => 1, :rev => 19}, :class => 'changeset') + issue_link = link_to('#3', {:controller => 'issues', :action => 'show', :id => 3}, + :class => 'issue', :title => 'Error 281 when updating a recipe (New)') + changeset_link = link_to('r1', {:controller => 'repositories', :action => 'revision', :id => 1, :rev => 1}, + :class => 'changeset', :title => 'My very first commit') to_test = { - '#52, #52 and #52.' => "#{issue_link}, #{issue_link} and #{issue_link}.", - 'r19' => changeset_link + '#3, #3 and #3.' => "#{issue_link}, #{issue_link} and #{issue_link}.", + 'r1' => changeset_link } @project = Project.find(1) to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } |