Redmine デフォルト記法である Textile では
!{width:30%}top_page.png!
のような形でスタイル指定が可能ですが、XSS 対策のために Redmine 側で無効にされています。
プロジェクト内部で使う Redmine では XSS を気にしてもしょうがないので、
のような方法でスタイル指定を有効にするわけですが、Redmine のソースに手を入れるのが嫌な方のために、モンキーパッチを使う方法を書いておきます。
変更したい箇所
lib/redmine/wiki_formatting/textile/formatter.rb に
require 'redcloth3' module Redmine module WikiFormatting module Textile class Formatter < RedCloth3 def initialize(*args) super self.hard_breaks=true self.no_span_caps=true self.filter_styles=true end
のような処理があり(※説明に不要な箇所は削っています)、この self.filter_styles をうまいこと外部から false に変更してやればいいことになります。
モンキーパッチ
Rails アプリの起動時に config/initializers/*.rb が実行されることになっていますので、ここにフラグを変更する処理を書けばよいです。
今回は config/initializers/enable_wiki_styles.rb を以下のような感じで作成しました。
module Redmine module WikiFormatting module Textile class Formatter < RedCloth3 def initialize_with_enabling_styles(*args) initialize_without_enabling_styles(*args) self.filter_styles = false end alias_method_chain :initialize, :enabling_styles end end end end
ファイルは https://gist.github.com/974513 にも置いています。
動作確認は Bitnami Redmine Stack 1.1.3-0 を入れた環境(redmine 1.1.3-0、rails 2.3.9、RedCloth 4.2.7 or 4.2.3)で行いましたが、うまくいっているみたいです。