Project

General

Profile

Patch #30162 » collapse_block_pdf.patch

Jun NAITOH, 2018-12-09 15:58

View differences:

app/helpers/application_helper.rb (working copy)
697 697
    @current_section = 0 if options[:edit_section_links]
698 698

  
699 699
    parse_sections(text, project, obj, attr, only_path, options)
700
    text = parse_non_pre_blocks(text, obj, macros) do |text|
700
    text = parse_non_pre_blocks(text, obj, macros, options) do |text|
701 701
      [:parse_inline_attachments, :parse_hires_images, :parse_wiki_links, :parse_redmine_links].each do |method_name|
702 702
        send method_name, text, project, obj, attr, only_path, options
703 703
      end
......
711 711
    text.html_safe
712 712
  end
713 713

  
714
  def parse_non_pre_blocks(text, obj, macros)
714
  def parse_non_pre_blocks(text, obj, macros, options={})
715 715
    s = StringScanner.new(text)
716 716
    tags = []
717 717
    parsed = ''
......
720 720
      text, full_tag, closing, tag = s[1], s[2], s[3], s[4]
721 721
      if tags.empty?
722 722
        yield text
723
        inject_macros(text, obj, macros) if macros.any?
723
        inject_macros(text, obj, macros, true, options) if macros.any?
724 724
      else
725
        inject_macros(text, obj, macros, false) if macros.any?
725
        inject_macros(text, obj, macros, false, options) if macros.any?
726 726
      end
727 727
      parsed << text
728 728
      if tag
......
1164 1164
  end
1165 1165

  
1166 1166
  # Executes and replaces macros in text
1167
  def inject_macros(text, obj, macros, execute=true)
1167
  def inject_macros(text, obj, macros, execute=true, options={})
1168 1168
    text.gsub!(MACRO_SUB_RE) do
1169 1169
      all, index = $1, $2.to_i
1170 1170
      orig = macros.delete(index)
1171 1171
      if execute && orig && orig =~ MACROS_RE
1172 1172
        esc, all, macro, args, block = $2, $3, $4.downcase, $6.to_s, $7.try(:strip)
1173 1173
        if esc.nil?
1174
          h(exec_macro(macro, obj, args, block) || all)
1174
          h(exec_macro(macro, obj, args, block, options) || all)
1175 1175
        else
1176 1176
          h(all)
1177 1177
        end
lib/redmine/wiki_formatting/macros.rb (working copy)
24 24
          Redmine::WikiFormatting::Macros.available_macros.key?(name.to_sym)
25 25
        end
26 26

  
27
        def exec_macro(name, obj, args, text)
27
        def exec_macro(name, obj, args, text, options={})
28 28
          macro_options = Redmine::WikiFormatting::Macros.available_macros[name.to_sym]
29 29
          return unless macro_options
30 30

  
31
          if options[:inline_attachments] == false
32
            Redmine::WikiFormatting::Macros.inline_attachments = false
33
          else
34
            Redmine::WikiFormatting::Macros.inline_attachments = true
35
          end
36

  
31 37
          method_name = "macro_#{name}"
32 38
          unless macro_options[:parse_args] == false
33 39
            args = args.split(',').map(&:strip)
......
57 63
      end
58 64

  
59 65
      @@available_macros = {}
66
      @@inline_attachments = true
60 67
      mattr_accessor :available_macros
68
      mattr_accessor :inline_attachments
61 69

  
62 70
      class << self
63 71
        # Plugins can use this method to define new macros:
......
209 217
        @included_wiki_pages ||= []
210 218
        raise 'Circular inclusion detected' if @included_wiki_pages.include?(page.id)
211 219
        @included_wiki_pages << page.id
212
        out = textilizable(page.content, :text, :attachments => page.attachments, :headings => false)
220
        out = textilizable(page.content, :text, :attachments => page.attachments, :headings => false,  :inline_attachments => @@inline_attachments)
213 221
        @included_wiki_pages.pop
214 222
        out
215 223
      end
......
225 233
        out = ''.html_safe
226 234
        out << link_to_function(show_label, js, :id => "#{html_id}-show", :class => 'collapsible collapsed')
227 235
        out << link_to_function(hide_label, js, :id => "#{html_id}-hide", :class => 'collapsible', :style => 'display:none;')
228
        out << content_tag('div', textilizable(text, :object => obj, :headings => false), :id => html_id, :class => 'collapsed-text', :style => 'display:none;')
236
        out << content_tag('div', textilizable(text, :object => obj, :headings => false, :inline_attachments => @@inline_attachments), :id => html_id, :class => 'collapsed-text', :style => 'display:none;')
229 237
        out
230 238
      end
231 239

  
(2-2/2)