Chris@441: # Redmine - project management software Chris@441: # Copyright (C) 2006-2011 Jean-Philippe Lang Chris@0: # Chris@0: # This program is free software; you can redistribute it and/or Chris@0: # modify it under the terms of the GNU General Public License Chris@0: # as published by the Free Software Foundation; either version 2 Chris@0: # of the License, or (at your option) any later version. Chris@441: # Chris@0: # This program is distributed in the hope that it will be useful, Chris@0: # but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@0: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@0: # GNU General Public License for more details. Chris@441: # Chris@0: # You should have received a copy of the GNU General Public License Chris@0: # along with this program; if not, write to the Free Software Chris@0: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Chris@0: Chris@0: module AttachmentsHelper Chris@0: # Displays view/delete links to the attachments of the given object Chris@0: # Options: Chris@0: # :author -- author names are not displayed if set to false Chris@0: def link_to_attachments(container, options = {}) Chris@0: options.assert_valid_keys(:author) Chris@441: Chris@0: if container.attachments.any? Chris@0: options = {:deletable => container.attachments_deletable?, :author => true}.merge(options) Chris@0: render :partial => 'attachments/links', :locals => {:attachments => container.attachments, :options => options} Chris@0: end Chris@0: end Chris@441: Chris@0: def to_utf8(str) Chris@119: if str.respond_to?(:force_encoding) Chris@119: str.force_encoding('UTF-8') Chris@119: return str if str.valid_encoding? Chris@119: else Chris@119: return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii Chris@119: end Chris@441: Chris@119: begin Chris@119: Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] Chris@119: rescue Iconv::InvalidEncoding Chris@119: # "UTF-8//IGNORE" is not supported on some OS Chris@119: str Chris@119: end Chris@0: end Chris@0: end