Patch #29359 » mime_type.rb.patch
mime_type.rb (working copy) | ||
---|---|---|
15 | 15 |
# along with this program; if not, write to the Free Software |
16 | 16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 | |
18 |
require 'mime/types' |
|
19 | ||
20 | 18 |
module Redmine |
21 | 19 |
module MimeType |
22 | 20 | |
... | ... | |
62 | 60 |
# returns mime type for name or nil if unknown |
63 | 61 |
def self.of(name) |
64 | 62 |
return nil unless name.present? |
65 |
if m = name.to_s.match(/(^|\.)([^\.]+)$/) |
|
66 |
extension = m[2].downcase |
|
67 |
@known_types ||= Hash.new do |h, ext| |
|
68 |
type = EXTENSIONS[ext] |
|
69 |
type ||= MIME::Types.type_for(ext).first.to_s.presence |
|
70 |
h[ext] = type |
|
63 |
ext = File.extname(name)[1..-1].to_s |
|
64 |
ext.downcase! |
|
65 |
EXTENSIONS[ext] || |
|
66 |
MiniMime::Db::LOCK.synchronize do |
|
67 |
db = MiniMime::Db.instance_variable_get(:@db) |
|
68 |
db ||= MiniMime::Db.instance_variable_set(:@db, MiniMime::Db.new) |
|
69 |
lookup = db.lookup_by_extension(ext) |
|
70 |
lookup.content_type if lookup |
|
71 | 71 |
end |
72 |
@known_types[extension] |
|
73 |
end |
|
74 | 72 |
end |
75 | 73 | |
76 | 74 |
# Returns the css class associated to |
77 | 75 |
# the mime type of name |
78 | 76 |
def self.css_class_of(name) |
79 | 77 |
mime = of(name) |
80 |
mime && mime.gsub('/', '-')
|
|
78 |
mime && mime.tr('/', '-')
|
|
81 | 79 |
end |
82 | 80 | |
83 | 81 |
def self.main_mimetype_of(name) |