Show last update datetime (last attachment added) on document list (#4232).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3095 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2009-11-26 20:12:20 +00:00
parent f3bcb705f7
commit 43fd27fd0c
6 changed files with 44 additions and 5 deletions

View File

@ -28,7 +28,7 @@ class DocumentsController < ApplicationController
documents = @project.documents.find :all, :include => [:attachments, :category] documents = @project.documents.find :all, :include => [:attachments, :category]
case @sort_by case @sort_by
when 'date' when 'date'
@grouped = documents.group_by {|d| d.created_on.to_date } @grouped = documents.group_by {|d| d.updated_on.to_date }
when 'title' when 'title'
@grouped = documents.group_by {|d| d.title.first.upcase} @grouped = documents.group_by {|d| d.title.first.upcase}
when 'author' when 'author'

View File

@ -34,4 +34,12 @@ class Document < ActiveRecord::Base
self.category ||= DocumentCategory.default self.category ||= DocumentCategory.default
end end
end end
def updated_on
unless @updated_on
a = attachments.find(:first, :order => 'created_on DESC')
@updated_on = (a && a.created_on) || created_on
end
@updated_on
end
end end

View File

@ -1,3 +1,3 @@
<p><%= link_to h(document.title), :controller => 'documents', :action => 'show', :id => document %><br /> <p><%= link_to h(document.title), :controller => 'documents', :action => 'show', :id => document %><br />
<% unless document.description.blank? %><%=h(truncate(document.description, :length => 250)) %><br /><% end %> <% unless document.description.blank? %><%=h(truncate(document.description, :length => 250)) %><br /><% end %>
<em><%= format_time(document.created_on) %></em></p> <em><%= format_time(document.updated_on) %></em></p>

View File

@ -12,7 +12,7 @@ attachments_001:
filename: error281.txt filename: error281.txt
author_id: 2 author_id: 2
attachments_002: attachments_002:
created_on: 2006-07-19 21:07:27 +02:00 created_on: 2007-01-27 15:08:27 +01:00
downloads: 0 downloads: 0
content_type: text/plain content_type: text/plain
disk_filename: 060719210727_document.txt disk_filename: 060719210727_document.txt
@ -121,4 +121,16 @@ attachments_010:
filename: picture.jpg filename: picture.jpg
author_id: 2 author_id: 2
content_type: image/jpeg content_type: image/jpeg
attachments_011:
created_on: 2007-02-12 15:08:27 +01:00
container_type: Document
container_id: 1
downloads: 0
disk_filename: 060719210727_picture.jpg
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
id: 11
filesize: 452
filename: picture.jpg
author_id: 2
content_type: image/jpeg

View File

@ -5,3 +5,10 @@ documents_001:
id: 1 id: 1
description: "Document description" description: "Document description"
category_id: 1 category_id: 1
documents_002:
created_on: 2007-02-12 15:08:27 +01:00
project_id: 1
title: "An other document"
id: 2
description: ""
category_id: 2

View File

@ -18,7 +18,7 @@
require File.dirname(__FILE__) + '/../test_helper' require File.dirname(__FILE__) + '/../test_helper'
class DocumentTest < ActiveSupport::TestCase class DocumentTest < ActiveSupport::TestCase
fixtures :projects, :enumerations, :documents fixtures :projects, :enumerations, :documents, :attachments
def test_create def test_create
doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation')) doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation'))
@ -43,4 +43,16 @@ class DocumentTest < ActiveSupport::TestCase
assert_equal e, doc.category assert_equal e, doc.category
assert doc.save assert doc.save
end end
def test_updated_on_with_attachments
d = Document.find(1)
assert d.attachments.any?
assert_equal d.attachments.map(&:created_on).max, d.updated_on
end
def test_updated_on_without_attachments
d = Document.find(2)
assert d.attachments.empty?
assert_equal d.created_on, d.updated_on
end
end end