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 %>
<% fields_for :wiki, @project.wiki, { :builder => TabularFormBuilder, :lang => current_language} do |wiki| %>
-
<%= wiki.text_field :start_page, :size => 60, :required => true %>
<%= l(:text_unallowed_characters) %>: , . / ? ; |
+
<%= wiki.text_field :start_page, :size => 60, :required => true %>
<%= l(:text_unallowed_characters) %>: , . / ? ; : |
<% # 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 @@
- <% cache "wiki/show/#{content.page.id}/#{content.version}" do %>
- <%= textilizable content.text, :attachments => content.page.attachments %>
- <% end %>
+ <%= textilizable content.text, :attachments => content.page.attachments %>
diff --git a/public/images/external.png b/public/images/external.png
index 0561752f4..45df6404f 100644
Binary files a/public/images/external.png and b/public/images/external.png differ
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 "
#{result}
", textilizable(text) }