WikiのdiffをWebビュー形式で表示したい

1,015 views
Skip to first unread message

Misako Tateiwa

unread,
Jun 24, 2014, 9:42:33 PM6/24/14
to redmine-...@googlegroups.com
初めまして misako ともうします。

RedmineのWikiで文書作成をしているのですが、diffを見た時にwiki記法そのままの差分しか表示できず、
作成者以外の人に差分を見てもらいたいときに見づらいため困っています。
wikiを見たときのまま(HTML変換後)で差分を表示したいのですが、なにかよい方法 or プラグイン等
ご存じないでしょうか?
ソースのdiffと同じようにインラインまたは横に並べての差分を表示できるとよいなと思っています。

こうやってカスタマイズすればできますよ等ヒントでも構いません。よろしくお願いします。

nobu_toyofuku

unread,
Jul 4, 2014, 6:05:29 AM7/4/14
to redmine-...@googlegroups.com

2014年6月25日水曜日 10時42分33秒 UTC+9 Misako Tateiwa:

RedmineのWikiで文書作成をしているのですが、diffを見た時にwiki記法そのままの差分しか表示できず、
作成者以外の人に差分を見てもらいたいときに見づらいため困っています。
wikiを見たときのまま(HTML変換後)で差分を表示したいのですが、なにかよい方法 or プラグイン等
ご存じないでしょうか?
 
下記のパッチでどうでしょうか。
(lib/redmine/helpers/diff.rb の修正の方はオリジナルのバグのような気がする)

ソースのdiffと同じようにインラインまたは横に並べての差分を表示できるとよいなと思っています。

こちらは余裕がなくてすぐにはできませんが参考になるのは添付ファイルが差分のとき
(拡張子が .patch か .diff のとき)差分を表示する
app/views/attachments/diff.html.erb
そこから render される
 app/views/common/_diff.html.erb
です。

--- app/models/wiki_page.rb.org
+++ app/models/wiki_page.rb
@@ -207,7 +207,9 @@
   def initialize(content_to, content_from)
     @content_to = content_to
     @content_from = content_from
-    super(content_to.text, content_from.text)
+    super(
+      ApplicationController.helpers.textilizable(content_to, :text, :attachments => content_to.page.attachments),
+      ApplicationController.helpers.textilizable(content_from, :text, :attachments => content_from.page.attachments))
   end
 end

--- lib/redmine/helpers/diff.rb.org
+++ lib/redmine/helpers/diff.rb
@@ -62,7 +62,7 @@
             words[add_to] = words[add_to] + '</span>'.html_safe
           end
           if del_at
-            words.insert del_at - del_off + dels + words_add, '<span class="diff_out">'.html_safe + deleted + '</span>'.html_safe
+            words.insert del_at - del_off + dels + words_add, '<span class="diff_out">'.html_safe + deleted.html_safe + '</span>'.html_safe
             dels += 1
             del_off += words_del
             words_del = 0

Misako Tateiwa

unread,
Jul 13, 2014, 11:56:16 PM7/13/14
to redmine-...@googlegroups.com
nobu_toyofukuさん

misakoです。パッチ提供ありがとうございます。
試したところ、差分をとるとinternal errorで止まってしまうようです。
どこで具体的にまでは追えていませんが、diffを取る際に以下のようにエラーが出ます

NoMethodError (undefined method `url_for' for nil:NilClass):
  app/helpers/application_helper.rb:584:in `block in parse_inline_attachments'
  app/helpers/application_helper.rb:579:in `gsub!'
  app/helpers/application_helper.rb:579:in `parse_inline_attachments'
  app/helpers/application_helper.rb:534:in `block (2 levels) in textilizable'
  app/helpers/application_helper.rb:533:in `each'
  app/helpers/application_helper.rb:533:in `block in textilizable'
  app/helpers/application_helper.rb:554:in `parse_non_pre_blocks'
  app/helpers/application_helper.rb:532:in `textilizable'
  app/models/wiki_page.rb:192:in `initialize'
  app/models/wiki_page.rb:120:in `new'
  app/models/wiki_page.rb:120:in `diff'
  app/controllers/wiki_controller.rb:202:in `diff'

詳しいこと調べられ次第また投稿します。

nobu_toyofuku

unread,
Jul 15, 2014, 12:23:01 AM7/15/14
to redmine-...@googlegroups.com

2014年7月14日月曜日 12時56分16秒 UTC+9 Misako Tateiwa:
試したところ、差分をとるとinternal errorで止まってしまうようです。
どこで具体的にまでは追えていませんが、diffを取る際に以下のようにエラーが出ます

NoMethodError (undefined method `url_for' for nil:NilClass):
  app/helpers/application_helper.rb:584:in `block in parse_inline_attachments'

最初に確認しておくべきだったのですが redmine のバージョンはいくつですか。
---

Misako Tateiwa

unread,
Jul 15, 2014, 3:46:07 AM7/15/14
to redmine-...@googlegroups.com
すみません。とても古くて2.0.1です・・。
# アップデート計画中です。。

nobu_toyofuku

unread,
Jul 15, 2014, 6:58:40 AM7/15/14
to redmine-...@googlegroups.com

2014年7月15日火曜日 16時46分07秒 UTC+9 Misako Tateiwa:
とても古くて2.0.1です・・。

redmine-2.0.1 でWikiを以下のような簡単な内容で試したところではエラーになりませんでした。
=== ここから ===
h1. Wiki

* abc
* 123
=== ここまで ===
この内容でもエラーになるか、ならないならどんな内容でエラーになるか、
試してもらえませんか。

一応以下に 2.0.1 用のパッチを付けますが先日のパッチと行番号が違うだけだと思います。

--- app/models/wiki_page.rb.org
+++ app/models/wiki_page.rb
@@ -187,7 +187,9 @@

   def initialize(content_to, content_from)
     @content_to = content_to
     @content_from = content_from
-    super(content_to.text, content_from.text)
+    super(
+      ApplicationController.helpers.textilizable(content_to, :text, :attachments => content_to.page.attachments),
+      ApplicationController.helpers.textilizable(content_from, :text, :attachments => content_from.page.attachments))
   end
 end

--- lib/redmine/helpers/diff.rb.org
+++ lib/redmine/helpers/diff.rb
@@ -59,7 +59,7 @@

             words[add_to] = words[add_to] + '</span>'
           end
           if del_at
-            words.insert del_at - del_off + dels + words_add, '<span class="diff_out">' + deleted + '</span>'
+            words.insert del_at - del_off + dels + words_add, '<span class="diff_out">' + deleted.html_safe + '</span>'
Reply all
Reply to author
Forward
0 new messages