Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 71
- Log:
Start of upgrade to Typo 4.0.0, the latest stable release since
2.6.0. Note test/mocks/themes/azure changes from a file to a
directory, so the file has been removed in this revision and
the directory will be added in the next revision.
- Author:
- adh
- Date:
- Mon Aug 07 22:18:11 +0100 2006
- Size:
- 3100 Bytes
1 | require 'net/http' |
2 | require_dependency 'textfilter_controller' |
3 | |
4 | class TextFilter < ActiveRecord::Base |
5 | serialize :filters |
6 | serialize :params |
7 | |
8 | def self.available_filters |
9 | objects = [] |
10 | ObjectSpace.each_object(Class) do |o| |
11 | if TextFilterPlugin > o and o.to_s =~ /Controller/ |
12 | objects.push o |
13 | end |
14 | end |
15 | |
16 | objects |
17 | end |
18 | |
19 | def self.available_filter_types |
20 | filters=available_filters |
21 | types={"macropre" => [], |
22 | "macropost" => [], |
23 | "markup" => [], |
24 | "postprocess" => [], |
25 | "other" => []} |
26 | |
27 | typemap={TextFilterPlugin::Markup => "markup", |
28 | TextFilterPlugin::MacroPre => "macropre", |
29 | TextFilterPlugin::MacroPost => "macropost", |
30 | TextFilterPlugin::PostProcess => "postprocess", |
31 | TextFilterPlugin => "other"} |
32 | |
33 | filters.each { |filter| types[typemap[filter.superclass]].push(filter) } |
34 | |
35 | types |
36 | end |
37 | |
38 | def self.filters_map |
39 | available_filters.inject({}) { |map,filter| map[filter.short_name] = filter; map } |
40 | end |
41 | |
42 | def self.filter_text(text, controller, content, filters, filterparams={}, filter_html=false) |
43 | |
44 | map=TextFilter.filters_map |
45 | filters = [:htmlfilter, filters].flatten if filter_html |
46 | |
47 | filters.each do |filter| |
48 | next if filter == nil |
49 | begin |
50 | filter_controller = map[filter.to_s] |
51 | next unless filter_controller |
52 | text = filter_controller.filtertext(controller, content, text, :filterparams => filterparams) |
53 | rescue => err |
54 | logger.error "Filter #{filter} failed: #{err}" |
55 | end |
56 | end |
57 | |
58 | text |
59 | end |
60 | |
61 | def self.filter_text_by_name(text, controller, filtername, filter_html=false) |
62 | f = TextFilter.find_by_name(filtername) |
63 | f.filter_text_for_controller text, controller, nil, filter_html |
64 | end |
65 | |
66 | def filter_text_for_controller(text, controller, content, filter_html=false) |
67 | self.class.filter_text( |
68 | text, controller, content, |
69 | [:macropre, markup, :macropost, filters].flatten, params, |
70 | filter_html) |
71 | end |
72 | |
73 | def filter(text,filter_html=false) |
74 | self.class.filter(text,self.filters,self.params,filter_html) |
75 | end |
76 | |
77 | def help |
78 | filter_map = TextFilter.filters_map |
79 | filter_types = TextFilter.available_filter_types |
80 | |
81 | help = [] |
82 | help.push(filter_map[markup]) |
83 | filter_types['macropre'].sort_by {|f| f.short_name}.each { |f| help.push f } |
84 | filter_types['macropost'].sort_by {|f| f.short_name}.each { |f| help.push f } |
85 | filters.each { |f| help.push(filter_map[f.to_s]) } |
86 | |
87 | help_text = help.collect do |f| |
88 | f.help_text.blank? ? '' : "<h3>#{f.display_name}</h3>\n#{BlueCloth.new(f.help_text).to_html}\n" |
89 | end |
90 | |
91 | help_text.join("\n") |
92 | end |
93 | |
94 | def commenthelp |
95 | filter_map = TextFilter.filters_map |
96 | filter_types = TextFilter.available_filter_types |
97 | |
98 | help = [filter_map[markup]] |
99 | filters.each { |f| help.push(filter_map[f.to_s]) } |
100 | |
101 | help_text = help.collect do |f| |
102 | f.help_text.blank? ? '' : "#{BlueCloth.new(f.help_text).to_html}\n" |
103 | end.join("\n") |
104 | |
105 | return help_text |
106 | end |
107 | |
108 | def to_s; self.name; end |
109 | |
110 | def to_text_filter; self; end |
111 | end |