From 2700f0f2a8a7fe1c127e92043aaec9cafe7d8733 Mon Sep 17 00:00:00 2001 From: Christoph Dwertmann Date: Fri, 10 May 2013 21:25:44 +1000 Subject: [PATCH] Works with Redmine 2.3 (no patch required) --- Gemfile | 1 + README.markdown | 2 +- app/helpers/wiki_external_filter_helper.rb | 19 ++++++++----------- init.rb | 16 ---------------- 4 files changed, 10 insertions(+), 28 deletions(-) create mode 100644 Gemfile diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..310b12c --- /dev/null +++ b/Gemfile @@ -0,0 +1 @@ +gem "open4" diff --git a/README.markdown b/README.markdown index 3629f70..911039d 100644 --- a/README.markdown +++ b/README.markdown @@ -7,7 +7,7 @@ NOT THE ORIGINAL ================ This is a fork. -**NOTE works only on Redmine > v2.0** +**NOTE tested only on Redmine v2.3** Overview ======== diff --git a/app/helpers/wiki_external_filter_helper.rb b/app/helpers/wiki_external_filter_helper.rb index 63d7e85..598cbfc 100644 --- a/app/helpers/wiki_external_filter_helper.rb +++ b/app/helpers/wiki_external_filter_helper.rb @@ -61,10 +61,8 @@ module WikiExternalFilterHelper Rails.logger.debug "cache saved: #{cache_key} expires #{expires.seconds}" rescue Rails.logger.error "Failed to save cache: #{cache_key}, result content #{result[:content]}, error: $!" - end - else - raise "please set expires time under plugins settings" - end + end + end else raise "Error applying external filter: stdout is #{result[:content]}, stderr is #{result[:errors]}" end @@ -94,7 +92,7 @@ module WikiExternalFilterHelper content = [] errors = "" - text = text.gsub("
", "\n") + text = text.gsub("
", "\n") if text Rails.logger.debug "\n Text #{text} \n" info['outputs'].each do |out| @@ -107,22 +105,21 @@ module WikiExternalFilterHelper # redirection so we can get more info in the case of error. begin require 'open4' - Open4::popen4(out['command']) { |pid, fin, fout, ferr| - fin.write out['prolog'] if out.key?('prolog') + fin.puts out['prolog'] if out.key?('prolog') fin.write text - fin.write out['epilog'] if out.key?('epilog') + fin.write "\n"+out['epilog'] if out.key?('epilog') fin.close c, e = [fout.read, ferr.read] } rescue LoadError IO.popen(out['command'], 'r+b') { |f| - f.write out['prolog'] if out.key?('prolog') + f.puts out['prolog']+"\n" if out.key?('prolog') f.write text - f.write out['epilog'] if out.key?('epilog') + f.write "\n"+out['epilog'] if out.key?('epilog') f.close_write c = f.read - } + } end Rails.logger.debug("child status: sig=#{$?.termsig}, exit=#{$?.exitstatus}") diff --git a/init.rb b/init.rb index e606ad6..70212d1 100644 --- a/init.rb +++ b/init.rb @@ -25,22 +25,6 @@ Redmine::Plugin.register :wiki_external_filter do m = WikiExternalFilterHelper::Macro.new(self, args, text, obj.respond_to?('page') ? obj.page.attachments : nil, name, info) m.render.html_safe end - - # code borrowed from wiki latex plugin - # code borrowed from wiki template macro - desc info['description'] - macro (name + "_include").to_sym do |obj, args, text| - page = Wiki.find_page(args.to_s, :project => @project) - raise 'Page not found' if page.nil? || !User.current.allowed_to?(:view_wiki_pages, page.wiki.project) - - @included_wiki_pages ||= [] - raise 'Circular inclusion detected' if @included_wiki_pages.include?(page.title) - @included_wiki_pages << page.title - m = WikiExternalFilterHelper::Macro.new(self, args, page.content.text, page.attachments, name, info) - @included_wiki_pages.pop - m.render_block(args.to_s) - end end end - end