context_help 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -25,6 +25,16 @@ module ContextHelp
25
25
  :link_to_help => false
26
26
  }
27
27
 
28
+ def self.help_items
29
+ @help_items
30
+ end
31
+ def self.config
32
+ @config
33
+ end
34
+ def self.flush_items
35
+ @help_items = []
36
+ end
37
+
28
38
  def self.help_for(options)
29
39
  help_options = options[:context_help]
30
40
  self.help_path_for(help_options)
@@ -42,15 +52,6 @@ module ContextHelp
42
52
  end
43
53
  help.strip
44
54
  end
45
- def self.help_items
46
- @help_items
47
- end
48
- def self.config
49
- @config
50
- end
51
- def self.flush_items
52
- @help_items = []
53
- end
54
55
  def self.inline_help(options)
55
56
  return '' if options[:skip] or !options[:calculated_path]
56
57
  if options[:inline_help_builder].is_a?(Proc)
@@ -68,13 +69,16 @@ module ContextHelp
68
69
  ruta = nil
69
70
  if !options[:skip]
70
71
  if path[:model] and @config[:exclude_models].index(path[:model].to_sym).nil?
71
- ruta = 'context_help.models.'+model_name(path[:model])
72
+ ruta = 'context_help.models.'+Helpers.model_name(path[:model])
72
73
  options[:pre_level_class] = @config[:level_classes][:model]
73
74
 
74
75
  if (path[:attribute])
75
76
  ruta = ruta + '.attributes.'+ path[:attribute].to_s.underscore
76
77
  options[:pre_level_class] = @config[:level_classes][:model_attribute]
77
78
  end
79
+ elsif path[:custom]
80
+ ruta = 'context_help.custom.'+path[:custom]
81
+ options[:pre_level_class] = @config[:level_classes][:custom]
78
82
  elsif path[:tag] and @config[:exclude_tags].index(path[:tag].to_sym).nil?
79
83
  ruta = 'context_help.html.'+path[:tag].to_s.downcase
80
84
  ruta = ruta + '.' + path[:tag_options][:id].to_s if path[:tag_options][:id]
@@ -84,13 +88,10 @@ module ContextHelp
84
88
  else
85
89
  options[:pre_level_class] = @config[:level_classes][:html][:default]
86
90
  end
87
- elsif path[:custom]
88
- ruta = 'context_help.custom.'+path[:custom]
89
- options[:pre_level_class] = @config[:level_classes][:custom]
90
91
  end
91
92
  end
92
93
  if ruta
93
- options[:calculated_path] = ruta if (I18n.t(ruta+'.title', :default => '') != '') or (Rails.env.development? and @config[:show_missing])
94
+ options[:calculated_path] = ruta
94
95
  self.register_item(options) if register
95
96
  return options[:calculated_path]
96
97
  end
@@ -100,8 +101,10 @@ module ContextHelp
100
101
  if options[:help_builder].is_a?(Proc)
101
102
  options[:help_builder].call(options)
102
103
  elsif options[:calculated_path]
103
- title = options[:title] || I18n.t(options[:calculated_path]+'.title')
104
- text = options[:text] || I18n.t(options[:calculated_path]+'.text')
104
+ title = Helpers.get_title(options)
105
+ text = Helpers.get_text(options)
106
+ return '' if (title.nil? || text.nil?) and !(Rails.env.development? and @config[:show_missing])
107
+
105
108
  html = "<#{options[:title_tag]} id=\"#{options[:item_id]}\" class=\"#{options[:title_class]} #{options[:level_class]}\">#{title}</#{options[:title_tag]}>
106
109
  <#{options[:text_tag]} class=\"#{options[:text_class]} #{options[:level_class]}\">#{text}</#{options[:text_tag]}>"
107
110
  html += self.link_to_object(options)
@@ -111,7 +114,9 @@ module ContextHelp
111
114
  def self.link_to_help(options)
112
115
  if options[:link_to_help_builder].is_a?(Proc)
113
116
  options[:link_to_help_builder].call(options)
114
- elsif options[:link_to_help] and !I18n.t(options[:calculated_path]+'.title', :default => {}).is_a?(Hash)
117
+ elsif options[:link_to_help] and options[:calculated_path]
118
+ title = Helpers.get_title(options)
119
+ return '' if title.nil?
115
120
  "<a href=\"##{options[:item_id]}\" id=\"#{options[:item_id]}_object\" class=\"context_help_link_to_help\">help</a>"
116
121
  else
117
122
  ''
@@ -159,6 +164,51 @@ module ContextHelp
159
164
  @help_items << options
160
165
  end
161
166
  end
167
+ end
168
+
169
+ module Helpers
170
+ def self.is_visible(options)
171
+ return false if options[:calculated_path].nil?
172
+ text = options[:text] || I18n.t(options[:calculated_path]+'.text', :default => {})
173
+ return false if (text.nil? or text.is_a?(Hash)) and !(Rails.env.development? and ContextHelp::Base.config[:show_missing])
174
+ true
175
+ end
176
+ def self.get_title(options)
177
+ title = options[:title] || I18n.t(options[:calculated_path]+'.title', :default => {})
178
+ if (title.nil? or title.is_a?(Hash))
179
+ title = nil
180
+ if options[:path][:model]
181
+ model_class = model_name(options[:path][:model]).classify
182
+ if const_defined?(model_class)
183
+ model_class = model_class.constantize
184
+ if options[:path][:attribute] then
185
+ title = model_class.human_attribute_name(options[:path][:attribute].to_s) rescue I18n.t(options[:calculated_path]+'.title')
186
+ else
187
+ title = model_class.human_name
188
+ end
189
+ else
190
+ title = I18n.t(options[:calculated_path]+'.title')
191
+ end
192
+ else
193
+ title = I18n.t(options[:calculated_path]+'.title') if Rails.env.development? and ContextHelp::Base.config[:show_missing]
194
+ end
195
+ else
196
+ if title.start_with?('t.')
197
+ title = I18n.t title[2, title.length]
198
+ elsif title.start_with?('I18n.')
199
+ title = I18n.t title[5, title.length]
200
+ end
201
+ end
202
+ title
203
+ end
204
+ def self.get_text(options)
205
+ text = options[:text] || I18n.t(options[:calculated_path]+'.text', :default => {})
206
+ if (text.nil? or text.is_a?(Hash))
207
+ nil
208
+ else
209
+ text
210
+ end
211
+ end
162
212
  def self.model_name(model)
163
213
  model = model.to_s.underscore
164
214
  if model =~ /^[a-z][a-z0-9_]*\[[a-z][a-z0-9_]*_attributes\]/
@@ -170,7 +220,7 @@ module ContextHelp
170
220
  def self.merge_options(base, added)
171
221
  if base.is_a?(Hash) and added.is_a?(Hash)
172
222
  added.each do |key,value|
173
- base[key] = self.merge_options(base[key], value)
223
+ base[key.to_sym] = self.merge_options(base[key.to_sym], value)
174
224
  end
175
225
  return base
176
226
  else
@@ -9,48 +9,55 @@ module ActionView
9
9
  object_name = ActionController::RecordIdentifier.singular_class_name(record_or_name_or_array)
10
10
  end
11
11
 
12
- options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym} } }, args.last.is_a?(::Hash)? args.last : {})
12
+ options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym} } }, args.last.is_a?(::Hash)? args.last : {})
13
13
  help = ContextHelp::Base.help_for(options)
14
14
  help + fields_for_without_context_help_fields_for(record_or_name_or_array, *args, &block)
15
15
  end
16
16
  def label_with_context_help_label(object_name, method, text = nil, options = {})
17
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
17
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
18
18
  ContextHelp::Base.help_for(help_options)
19
19
  link_to_help = ContextHelp::Base.link_to_help(help_options[:context_help])
20
- label_without_context_help_label(object_name, method, text.to_s + link_to_help, options)
20
+ text = if text.blank?
21
+ i18n_label = I18n.t("helpers.label.#{object_name}.#{method}", :default => "")
22
+ i18n_label if i18n_label.present?
23
+ else
24
+ text.to_s
25
+ end
26
+ text ||= method.to_s.humanize
27
+ label_without_context_help_label(object_name, method, text.to_s + link_to_help, help_options)
21
28
  end
22
29
  def text_field_with_context_help_text_field(object_name, method, options = {})
23
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
30
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
24
31
  help = ContextHelp::Base.help_for(help_options)
25
32
  text_field_without_context_help_text_field(object_name, method, options) + help
26
33
  end
27
34
  def password_field_with_context_help_password_field(object_name, method, options = {})
28
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
35
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
29
36
  help = ContextHelp::Base.help_for(help_options)
30
37
  password_field_without_context_help_password_field(object_name, method, options) + help
31
38
  end
32
39
  def hidden_field_with_context_help_hidden_field(object_name, method, options = {})
33
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
40
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
34
41
  help = ContextHelp::Base.help_for(help_options)
35
42
  hidden_field_without_context_help_hidden_field(object_name, method, options) + help
36
43
  end
37
44
  def file_field_with_context_help_file_field(object_name, method, options = {})
38
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
45
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
39
46
  help = ContextHelp::Base.help_for(help_options)
40
47
  file_field_without_context_help_file_field(object_name, method, options) + help
41
48
  end
42
49
  def text_area_with_context_help_text_area(object_name, method, options = {})
43
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
50
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
44
51
  help = ContextHelp::Base.help_for(help_options)
45
52
  text_area_without_context_help_text_area(object_name, method, options) + help
46
53
  end
47
54
  def check_box_with_context_help_check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
48
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
55
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
49
56
  help = ContextHelp::Base.help_for(help_options)
50
57
  check_box_without_context_help_check_box(object_name, method, options, checked_value, unchecked_value) + help
51
58
  end
52
59
  def radio_button_with_context_help_radio_button(object_name, method, tag_value, options = {})
53
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
60
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => object_name.to_sym, :attribute=> method.to_sym}}}, options)
54
61
  help = ContextHelp::Base.help_for(help_options)
55
62
  radio_button_without_context_help_radio_button(object_name, method, tag_value, options) +help
56
63
  end
@@ -0,0 +1,20 @@
1
+ module ActionView
2
+ module Helpers
3
+ module FormTagHelper
4
+ def form_tag_with_context_help_form_tag(url_for_options = {}, options = {}, *parameters_for_url, &block)
5
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:tag => :form, :tag_options => options}}}, options)
6
+ ContextHelp::Base.help_for(help_options)
7
+ form_tag_without_context_help_form_tag(url_for_options, options, *parameters_for_url, &block)
8
+ end
9
+ def label_tag_with_context_help_label_tag(name, text = nil, options = {})
10
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:tag => :label, :tag_options => options}}}, options)
11
+ text ||= name.to_s.humanize
12
+ text = text + ContextHelp::Base.help_for(help_options)
13
+ label_tag_without_context_help_label_tag name, text, help_options
14
+ end
15
+
16
+ alias_method_chain :form_tag, :context_help_form_tag
17
+ alias_method_chain :label_tag, :context_help_label_tag
18
+ end
19
+ end
20
+ end
@@ -3,14 +3,19 @@ module ContextHelp
3
3
  def inputs(*args, &block)
4
4
  title = field_set_title_from_args(*args)
5
5
  html_options = args.extract_options!
6
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:tag => 'fieldset', :tag_options => html_options}}}, html_options)
6
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:tag => 'fieldset', :tag_options => html_options}}}, html_options)
7
7
  help_options[:context_help][:title] = title if help_options[:context_help][:path][:tag]
8
8
  help = ContextHelp::Base.help_for(help_options)
9
9
  super *(args<<help_options), &block
10
10
  end
11
11
  def input(method, options = {})
12
- options = ContextHelp::Base.merge_options({:context_help => {:path => {:model => model_name.to_sym, :attribute=> method.to_sym}}}, options || {})
13
- html = super
12
+ options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:model => model_name.to_sym, :attribute=> method.to_sym}}}, options || {})
13
+ super
14
+ end
15
+ def radio_input(method, options)
16
+ options[:label] = localized_string(method, options[:label], :label) || humanized_attribute_name(method)
17
+ ContextHelp::Base.help_for(options)
18
+ super
14
19
  end
15
20
  def legend_tag(method, options = {})
16
21
  if options[:label] == false
@@ -19,8 +24,7 @@ module ContextHelp
19
24
  text = localized_string(method, options[:label], :label) || humanized_attribute_name(method)
20
25
  text += required_or_optional_string(options.delete(:required))
21
26
  text = Formtastic::Util.html_safe(text)
22
- text += ContextHelp::Base.link_to_help(options[:context_help])
23
- template.content_tag :legend, template.label_tag(nil, text, :for => nil), :class => :label
27
+ template.content_tag :legend, template.label_tag(nil, text, options), :class => :label
24
28
  end
25
29
  end
26
30
  end
@@ -2,14 +2,16 @@ module ActionView
2
2
  module Helpers
3
3
  module TagHelper
4
4
  def tag_with_context_help_tag(name, options = {}, open = false, escape = true)
5
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:tag => name.to_sym, :tag_options => options}}}, options)
5
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:tag => name.to_sym, :tag_options => options}}}, options)
6
6
  help = ContextHelp::Base.help_for(help_options)
7
+ options.delete('context_help')
7
8
  tag_without_context_help_tag(name, options, open, escape) + help
8
9
  end
9
10
  def content_tag_with_context_help_content_tag(name, content_or_options_with_block = nil, options = {}, escape = true, &block)
10
- help_options = ContextHelp::Base.merge_options({:context_help => {:path => {:tag => name.to_sym, :tag_options => options}}}, options)
11
+ help_options = ContextHelp::Helpers.merge_options({:context_help => {:path => {:tag => name.to_sym, :tag_options => options}}}, options)
11
12
  help = ContextHelp::Base.help_for(help_options)
12
- html = content_tag_without_context_help_content_tag(name, content_or_options_with_block, options, escape, &block) + help
13
+ options.delete('context_help')
14
+ content_tag_without_context_help_content_tag(name, content_or_options_with_block, options, escape, &block) + help
13
15
  end
14
16
 
15
17
  alias_method_chain :tag, :context_help_tag
@@ -1,3 +1,3 @@
1
1
  module ContextHelp
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/context_help.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'context_help/patches/form_tag_helper_patch'
1
2
  require 'context_help/patches/tag_helper_patch'
2
3
  require 'context_help/patches/form_helper_patch'
3
4
  require 'context_help/patches/formtastic_patch'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: context_help
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-10 00:00:00.000000000 -03:00
12
+ date: 2011-08-15 00:00:00.000000000 -03:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
  description: ContextHelp is a gem that allows you to show inline or aside help about
@@ -29,6 +29,7 @@ files:
29
29
  - lib/context_help.rb
30
30
  - lib/context_help/base.rb
31
31
  - lib/context_help/patches/form_helper_patch.rb
32
+ - lib/context_help/patches/form_tag_helper_patch.rb
32
33
  - lib/context_help/patches/formtastic_patch.rb
33
34
  - lib/context_help/patches/tag_helper_patch.rb
34
35
  - lib/context_help/version.rb