diff --git a/CHANGELOG.md b/CHANGELOG.md index aebd243f..db6159a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ Changelog for Redmine DMSF * New: Settings introduced to enable read-only or read-write stance to be taken with webdav * Fix: Issue #27 - incorrect call to display column information from database (redmine 1.x fragment). * Fix: Issue #28 - incompatible SQL in db migration script for postgresql +* Fix: Issue #23 - Incorrect call to to_s for displaying time in certain views +* Fix: Issue #24 - Incorrect times shown on revision history / documents +* Fix: Issue #25 - Character in init.rb stops execution 1.4.4p2: *2012-07-08* ------------------- diff --git a/app/helpers/dmsf_helper.rb b/app/helpers/dmsf_helper.rb index 583703bf..a70628d2 100644 --- a/app/helpers/dmsf_helper.rb +++ b/app/helpers/dmsf_helper.rb @@ -63,5 +63,17 @@ module DmsfHelper def plugin_asset_path(plugin, asset_type, source) return "/plugin_assets/#{plugin}/#{asset_type}/#{source}" end + + def self.to_time(obj) + #Right, enough of bugs, let's try a better approach here. + return if !obj + return obj.to_time(ActiveRecord::Base.default_timezone) if obj.is_a?(String) + + # Why can't Mysql::Time conform to time object? - without a utc? method it breaks redmine's + # rendering method, so we convert it to string, and back into time - not the most efficient + # of methods - however seems functional. Not sure if MySQL + return obj.to_s.to_time(ActiveRecord::Base.default_timezone) if obj.class.name == "Mysql::Time" + return obj + end end diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 36ee93bf..43374df7 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -39,7 +39,8 @@ class DmsfFile < ActiveRecord::Base :conditions => {:entity_type => 0}, :dependent => :destroy belongs_to :deleted_by_user, :class_name => "User", :foreign_key => "deleted_by_user_id" - scope :visible, lambda {|*args| where(DmsfFile.visible_condition(args.shift || User.current, *args))} + + scope :visible, lambda {|*args| where(DmsfFile.visible_condition(args.shift || User.current, *args)).readonly(false)} validates_presence_of :name validates_format_of :name, :with => DmsfFolder.invalid_characters, diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 8a5788d1..c05bff55 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -27,7 +27,7 @@ class DmsfFileRevision < ActiveRecord::Base has_many :access, :class_name => "DmsfFileRevisionAccess", :foreign_key => "dmsf_file_revision_id", :dependent => :destroy #Returns a list of revisions that are not deleted here, or deleted at parent level either - scope :visible, lambda {|*args| joins(:file).where(DmsfFile.visible_condition(args.shift || User.current, *args)).where("#{self.table_name}.deleted = :false", :false => false ) } + scope :visible, lambda {|*args| joins(:file).where(DmsfFile.visible_condition(args.shift || User.current, *args)).where("#{self.table_name}.deleted = :false", :false => false ).readonly(false) } acts_as_customizable @@ -63,6 +63,7 @@ class DmsfFileRevision < ActiveRecord::Base end def delete(delete_all = false) + reload if self.file.locked_for_user? errors[:base] << l(:error_file_is_locked) return false diff --git a/app/views/dmsf_files/_revision_access.html.erb b/app/views/dmsf_files/_revision_access.html.erb index 86a41e46..f5a97fc9 100644 --- a/app/views/dmsf_files/_revision_access.html.erb +++ b/app/views/dmsf_files/_revision_access.html.erb @@ -13,8 +13,8 @@ <%=link_to_user(access.user)%> <%=access["count"]%> - <%=format_time(access.first_at.to_time(ActiveRecord::Base.default_timezone))%> - <%=format_time(access.last_at.to_time(ActiveRecord::Base.default_timezone))%> + <%=format_time(DmsfHelper::to_time(access.first_at))%> + <%=format_time(DmsfHelper::to_time(access.last_at))%> <% end %>