qm-acts-as-generic-controller 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -9,9 +9,9 @@ begin
9
9
  gemspec.email = "marcin@saepia.net"
10
10
  gemspec.homepage = "http://q.saepia.net"
11
11
  gemspec.authors = ["Marcin Lewandowski"]
12
- gemspec.version = "0.1.0"
12
+ gemspec.version = "0.1.1"
13
13
  gemspec.files = Rake::FileList.new [ "MIT-LICENSE", "Rakefile", "lib/*", "app/views/generic_controller/*" ]
14
- gemspec.add_dependency "qui-common-helpers", ">= 0.0.7"
14
+ gemspec.add_dependency "qui-common-helpers", ">= 0.0.8"
15
15
  gemspec.add_dependency "qui-index-table", ">= 0.0.8"
16
16
  gemspec.add_dependency "qui-tabs", ">= 0.0.3"
17
17
  gemspec.add_dependency "qui-toolbar", ">= 0.0.4"
@@ -11,6 +11,7 @@
11
11
  <%- end -%>
12
12
 
13
13
  <%- if defined?(QUI::IndexTable) -%>
14
+ <%- class_name.generic_actions(:action => :index).size.times{ headers << :oneicon } -%>
14
15
 
15
16
  <%- headers << :oneicon if has_edit %>
16
17
  <%- headers << :oneicon if has_delete %>
@@ -34,12 +35,16 @@
34
35
  </td>
35
36
  <%- end -%>
36
37
 
38
+ <%- class_name.generic_actions(:action => :index).each do |action| -%>
39
+ <%= content_tag(:td, send(action[:options][:renderer], { :action => :index, :record => r, :action => action }), :class => "action #{action[:name]}") %>
40
+ <%- end -%>
41
+
37
42
  <%- if has_edit -%>
38
- <td><%= link_to_edit r %></td>
43
+ <td class="action edit"><%= link_to_edit r %></td>
39
44
  <%- end -%>
40
45
 
41
46
  <%- if has_delete -%>
42
- <td><%= link_to_delete r %></td>
47
+ <td class="action delete"><%= link_to_delete r %></td>
43
48
  <%- end -%>
44
49
 
45
50
 
@@ -35,7 +35,7 @@
35
35
  <li>
36
36
  <%= f.label field[:name] %>
37
37
 
38
- <%- if field.is_a?(Hash) and field.values.first == :enum -%>
38
+ <%- if klass.is_enum?(field[:name]) -%>
39
39
  <%= f.select field[:name], t("activerecord.enums.#{table_name}.#{field[:name]}").collect{|k,v| [v, k.to_s] }.sort{|x,y| x.last.to_i <=> y.last.to_i }, { :selected => params[table_name] ? params[table_name][field[:name]].to_s : f.object.send(field[:name]).to_s } %>
40
40
 
41
41
  <%- elsif klass.generic_field_associations[field[:name]] -%>
@@ -64,9 +64,18 @@ module QM
64
64
  end
65
65
 
66
66
 
67
+
68
+ def generic_actions(options = {})
69
+ @generic_actions ||= {}
70
+ if options.has_key? :action
71
+ @generic_actions[options[:action]] || []
72
+ else
73
+ @generic_actions || []
74
+ end
75
+ end
67
76
 
68
77
  def generic_fields(options = {})
69
- @generic_fields ||= {}
78
+ @generic_fields ||= {}
70
79
  if options.has_key? :action
71
80
  @generic_fields[options[:action]] || []
72
81
  else
@@ -94,6 +103,24 @@ module QM
94
103
  @generic_fields[actions.to_sym] << { :name => name.to_sym, :options => options }
95
104
  end
96
105
  end
106
+
107
+ def has_generic_action_for(actions, name, options = {})
108
+ options = options.symbolize_keys!
109
+ @generic_actions ||= {}
110
+
111
+ if actions.is_a? Array
112
+ actions.each do |action|
113
+ raise ArgumentError, "action must be one of :index, :show, :form" unless [ :index, :show, :form ].include? action.to_sym
114
+ @generic_actions[action.to_sym] ||= []
115
+ @generic_actions[action.to_sym] << { :name => name.to_sym, :options => options }
116
+ end
117
+ else
118
+ raise ArgumentError, "action must be one of :index, :show, :form" unless [ :index, :show, :form ].include? actions.to_sym
119
+ @generic_actions[actions.to_sym] ||= []
120
+ @generic_actions[actions.to_sym] << { :name => name.to_sym, :options => options }
121
+ end
122
+
123
+ end
97
124
 
98
125
  def has_generic_form_fieldsets(*fieldsets)
99
126
  @generic_form_fieldsets = fieldsets.flatten
@@ -13,6 +13,12 @@ module QM
13
13
  elsif data.is_a?(Array) and data.first.is_a?(ActiveRecord::Base)
14
14
  result = data.collect{ |x| link_to_object(x) }.sort_alphabetical.join(", ")
15
15
 
16
+ elsif options[:record].class.is_enum? options[:field][:name]
17
+ result = t("activerecord.enums.#{options[:record].class.table_name.singularize}.#{options[:field][:name]}.#{data}")
18
+
19
+ elsif options[:record].class.columns_hash[options[:field][:name].to_s].type == :boolean
20
+ result = data ? image_tag("tick.png", :alt => t(:"genericController.yesAsBooleanOption")) : ""
21
+
16
22
  elsif defined?(RFC822) and data.is_a?(String) and data =~ RFC822::EMAIL_REGEXP_WHOLE
17
23
  result = link_to data, "mailto:#{data}"
18
24
 
@@ -20,9 +26,6 @@ module QM
20
26
  result = h data
21
27
  end
22
28
 
23
-
24
- puts options.inspect
25
-
26
29
  result = link_to_object options[:record], result if options[:field][:options][:link_to] == :show
27
30
 
28
31
  result
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qm-acts-as-generic-controller
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marcin Lewandowski
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-19 00:00:00 +02:00
18
+ date: 2010-10-20 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,12 +26,12 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- hash: 17
29
+ hash: 15
30
30
  segments:
31
31
  - 0
32
32
  - 0
33
- - 7
34
- version: 0.0.7
33
+ - 8
34
+ version: 0.0.8
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency