leonardo 1.5.0 → 1.6.0

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.
Files changed (37) hide show
  1. data/CHANGELOG +9 -3
  2. data/lib/generators/base.rb +262 -24
  3. data/lib/generators/erb/leosca/leosca_generator.rb +38 -22
  4. data/lib/generators/erb/leosca/templates/_form.html.erb +14 -3
  5. data/lib/generators/erb/leosca/templates/_list.erb +13 -20
  6. data/lib/generators/erb/leosca/templates/_show.erb +9 -0
  7. data/lib/generators/erb/leosca/templates/edit.html.erb +3 -5
  8. data/lib/generators/erb/leosca/templates/formtastic/_form.html.erb +10 -4
  9. data/lib/generators/erb/leosca/templates/index.html.erb +15 -4
  10. data/lib/generators/erb/leosca/templates/new.html.erb +1 -1
  11. data/lib/generators/erb/leosca/templates/show.html.erb +5 -22
  12. data/lib/generators/erb/leosca/templates/show.js.erb +7 -0
  13. data/lib/generators/leolay/USAGE +1 -1
  14. data/lib/generators/leolay/install_generator.rb +0 -1
  15. data/lib/generators/leolay/leolay_generator.rb +24 -17
  16. data/lib/generators/leolay/templates/config/locales/devise.en.yml +1 -0
  17. data/lib/generators/leolay/templates/config/locales/devise.it.yml +1 -0
  18. data/lib/generators/leolay/templates/config/locales/en.yml +5 -5
  19. data/lib/generators/leolay/templates/config/locales/it.yml +5 -5
  20. data/lib/generators/leolay/templates/lib/generators/rspec/scaffold/scaffold_generator.rb +173 -0
  21. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/controller_spec.rb +39 -39
  22. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/edit_spec.rb +4 -1
  23. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/index_spec.rb +15 -4
  24. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/new_spec.rb +5 -2
  25. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/routing_spec.rb +37 -0
  26. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/show_spec.rb +3 -0
  27. data/lib/generators/leolay/templates/styles/cloudy/{stylesheet.sass → stylesheets/app/stylesheet.sass} +0 -0
  28. data/lib/generators/leolay/templates/{vendor/assets/stylesheets → styles/cloudy/stylesheets/vendor}/jquery-ui/jquery-ui-1.8.16.redcarpet.css +17 -17
  29. data/lib/generators/leolay/templates/vendor/assets/javascripts/jquery-ui/jquery.ui.datepicker-de.js +1 -1
  30. data/lib/generators/leolay/templates/vendor/assets/javascripts/jquery-ui/jquery.ui.datepicker-en.js +1 -1
  31. data/lib/generators/leolay/templates/vendor/assets/javascripts/jquery-ui/jquery.ui.datepicker-it.js +1 -1
  32. data/lib/generators/leosca/install_generator.rb +1 -1
  33. data/lib/generators/rails/leosca/leosca_generator.rb +21 -0
  34. data/lib/generators/rails/leosca_controller/leosca_controller_generator.rb +41 -114
  35. data/lib/generators/rails/leosca_controller/templates/controller.rb +51 -23
  36. data/template.rb +4 -1
  37. metadata +10 -6
data/CHANGELOG CHANGED
@@ -1,11 +1,17 @@
1
+ 1.6.0 (September 16th, 2011) Marco Mastrodonato
2
+ * Nested resource: use new option rails g leosca product --under=category field:type
3
+ * Improved views data format
4
+ * Added ajax mode for show view managed by jquery-ui dialog
5
+ * Updated specs for namespaced resource and other improvements
6
+ * Several little improvements
7
+
8
+
9
+
1
10
  1.5.0 (September 6th, 2011) Marco Mastrodonato
2
11
  * Added Rspec support with requests to check ajax => All green if you use formtastic views (associations with select)
3
12
  * New template
4
13
  * Little improvements
5
14
 
6
- Next release:
7
- * Nested resource
8
- * Code improvements
9
15
 
10
16
 
11
17
  1.4.1 (August 25th, 2011) Marco Mastrodonato
@@ -1,28 +1,266 @@
1
- module LeonardoShared
2
- def prova
3
- puts 'ok'
4
- end
1
+ module Leonardo
2
+ module Leosca
5
3
 
6
- protected
7
- def authorization?
8
- File.exists? "app/models/ability.rb"
9
- end
10
- def authentication?
11
- return true if File.exists? "app/models/user.rb"
12
- File.exists? "config/initializers/devise.rb"
13
- end
14
- def camel_case(str)
15
- return str if str !~ /_/ && str =~ /[A-Z]+.*/
16
- str.split('_').map { |i| i.capitalize }.join
17
- end
18
- def formtastic?
19
- return false unless options.formtastic?
20
- File.exists? "config/initializers/formtastic.rb"
4
+ protected
5
+ def authorization?
6
+ File.exists? "app/models/ability.rb"
7
+ end
8
+ def authentication?
9
+ return true if File.exists? "app/models/user.rb"
10
+ File.exists? "config/initializers/devise.rb"
11
+ end
12
+ def formtastic?
13
+ return false unless options.formtastic?
14
+ File.exists? "config/initializers/formtastic.rb"
15
+ end
16
+ def jquery_ui?
17
+ File.exists? "vendor/assets/javascripts/jquery-ui"
18
+ end
19
+ def pagination?
20
+ File.exists? "config/initializers/kaminari_config.rb"
21
+ end
22
+ def attribute_to_hash(attribute)
23
+ name = case attribute.type
24
+ when :references, :belongs_to then ":#{attribute.name}_id"
25
+ else ":#{attribute.name}"
26
+ end
27
+ value = case attribute.type
28
+ when :boolean then "true"
29
+ when :integer then "#"
30
+ when :float, :decimal then "#.46"
31
+ when :references, :belongs_to then "#"
32
+ when :date then "#{Time.now.strftime("%Y-%m-%d 00:00:00.000")}".inspect
33
+ when :datetime then "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.000")}".inspect
34
+ when :time, :timestamp then "#{Time.now.strftime("%H:%M:%S.000")}".inspect
35
+ else "#{attribute.name.titleize}\#".inspect
36
+ end
37
+ " #{name} => #{value}"
38
+ end
39
+ def attribute_to_factories(attribute)
40
+ str_space = " " * (20-attribute.name.size).abs
41
+ name = case attribute.type
42
+ when :references, :belongs_to then "#{singular_table_name[0..0]}.association #{str_space}"
43
+ when :boolean, :datetime, :time, :timestamp
44
+ then "#{singular_table_name[0..0]}.#{attribute.name} #{str_space}"
45
+ else "#{singular_table_name[0..0]}.sequence(:#{attribute.name})#{str_space}"
46
+ end
47
+ value = case attribute.type
48
+ when :boolean then "true"
49
+ when :integer then "{|n| n }"
50
+ when :float, :decimal then "{|n| n }"
51
+ when :references, :belongs_to then ":#{attribute.name}"
52
+ when :date then "{|n| n.month.ago }"
53
+ when :datetime then "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.000")}".inspect
54
+ when :time, :timestamp then "#{Time.now.strftime("%H:%M:%S.000")}".inspect
55
+ else "{|n| \"#{attribute.name.titleize}\#{n}\" }"
56
+ end
57
+ " #{name} #{value}"
58
+ end
59
+ def attribute_to_requests(attribute)
60
+ case attribute.type
61
+ when :boolean then " check '#{singular_table_name}_#{attribute.name}' if #{singular_table_name}.#{attribute.name}"
62
+ when :references, :belongs_to then " select #{singular_table_name}.#{attribute.name}.name, :from => '#{singular_table_name}_#{attribute.name}_id'"
63
+ when :datetime, :time, :timestamp
64
+ then ""
65
+ when :date then " fill_in '#{singular_table_name}_#{attribute.name}', :with => #{singular_table_name}.#{attribute.name}.strftime('%d-%m-%Y')"
66
+ else " fill_in '#{singular_table_name}_#{attribute.name}', :with => #{singular_table_name}.#{attribute.name}"
67
+ end
68
+ end
69
+ def attribute_to_erb(attribute, object)
70
+ case attribute.type
71
+ when :boolean then "<%= #{object}.#{attribute.name} ? style_image_tag(\"ico_v.png\", :class => \"ico_true\") : style_image_tag(\"ico_x.png\", :class => \"ico_false\") %>"
72
+ when :references, :belongs_to then "<%= link_to((#{object}.#{attribute.name}.try(:name) || \"\#{t('models.#{attribute.name}')} \#{#{object}.#{attribute.name}.try(:id)}\"), #{object}.#{attribute.name}) %>"
73
+ when :integer then "<%= number_with_delimiter #{object}.#{attribute.name} %>"
74
+ when :decimal then "<%= number_to_currency #{object}.#{attribute.name} %>"
75
+ when :float then "<%= number_with_precision #{object}.#{attribute.name} %>"
76
+ when :date then "<%= #{object}.#{attribute.name}.strftime('%d-%m-%Y') if #{object}.#{attribute.name} %>"
77
+ when :datetime then "<%= #{object}.#{attribute.name}.strftime('%d-%m-%Y %H:%M:%S') if #{object}.#{attribute.name} %>"
78
+ when :time, :timestamp then "<%= #{object}.#{attribute.name}.strftime('%H:%M:%S') if #{object}.#{attribute.name} %>"
79
+ else "<%= #{object}.#{attribute.name} %>"
80
+ end
81
+ end
82
+ def get_attr_to_match(view=:list)
83
+ attributes.each do |attribute|
84
+ return "have_content(#{singular_table_name}.#{attribute.name})",
85
+ "have_no_content(#{singular_table_name}.#{attribute.name})" if attribute.type==:string
86
+ end
87
+ #If there are not string attributes
88
+ case view
89
+ when :list
90
+ return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
91
+ when :show
92
+ return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
93
+ end
94
+ end
95
+ def plural_path_file_name
96
+ (class_path + [plural_table_name]).join('/')
97
+ end
21
98
  end
22
- def jquery_ui?
23
- File.exists? "vendor/assets/javascripts/jquery-ui"
24
- end
25
- def pagination?
26
- File.exists? "config/initializers/kaminari_config.rb"
99
+
100
+ module Nested
101
+ protected
102
+
103
+ #product under brand/category => "brand_category_product"
104
+ def underscore_resource_path(names=:all_singular)
105
+ case names
106
+ when :all_singular
107
+ resource_path.join('_')
108
+ when :all_plural
109
+ #who needs?
110
+ when :parent_singular_resource_plural
111
+ resource_path.join('_').pluralize
112
+ else
113
+ "#{names.to_s}_not_supported"
114
+ end
115
+
116
+ end
117
+
118
+ #product => products_path
119
+ #product under category => category_products_path(@category)
120
+ #product under brand/category => brand_category_products_path(@brand, @category)
121
+ def list_resources_path
122
+ "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources("@")})"
123
+ end
124
+
125
+ #product => "product"
126
+ #product under category => "[@category, product]"
127
+ #product under brand/category => "[@brand, @category, product]"
128
+ def destroy_resource_path(prefix_resource="")
129
+ formatted_resource_path("@", prefix_resource, "[]")
130
+ end
131
+
132
+ #product => "product"
133
+ #product under category => "[@category, product]"
134
+ #product under brand/category => "[@brand, @category, product]"
135
+ def show_resource_path(prefix_resource="")
136
+ formatted_resource_path("@", prefix_resource, "[]")
137
+ end
138
+
139
+ #product => "@product"
140
+ #product under category => "[@category, @product]"
141
+ #product under brand/category => "[@brand, @category, @product]"
142
+ def form_resource_path
143
+ formatted_resource_path("@", "@", "[]")
144
+ end
145
+
146
+ #product => new_product_path
147
+ #product under category => new_category_product_path(@category)
148
+ #product under brand/category => new_brand_category_product_path(@brand, @category)
149
+ def new_resource_path
150
+ "new_#{underscore_resource_path}_path(#{formatted_parent_resources("@")})"
151
+ end
152
+
153
+ #product => edit_product_path(@product)
154
+ #product under category => edit_category_product_path(@category, @product)
155
+ #product under brand/category => edit_brand_category_product_path(@brand, @category, @product)
156
+ def edit_resource_path(prefix_resource="")
157
+ "edit_#{underscore_resource_path}_path(#{formatted_resource_path("@", prefix_resource)})"
158
+ end
159
+
160
+ #product under brand/category => "[brand, category, product]" or "[@brand, @category, @product]" or "@brand, @category, @product" or [product.brand, product.category, product]
161
+ def formatted_resource_path(prefix_parent="", prefix_resource="", delimiter="", resource=nil)
162
+ formatted_resource_base resource_path(prefix_parent, prefix_resource, resource), delimiter
163
+ end
164
+
165
+ #product under brand/category => "[brand, category]" or "[@brand, @category]" or "@brand, @category" or product.brand, product.category
166
+ def formatted_parent_resources(prefix_parent="", delimiter="", resource=nil)
167
+ prefix_parent = "#{resource}." if resource
168
+ formatted_resource_base parent_resources(prefix_parent), delimiter
169
+ end
170
+
171
+ def formatted_resource_base(resources, delimiter="")
172
+ str_resources = resources.join(', ')
173
+ resources.size > 1 ? "#{delimiter[0..0]}#{str_resources}#{delimiter[1..1]}" : str_resources
174
+ end
175
+
176
+ #product under brand/category => ["brand", "category", "product"] or ["@brand", "@category", "@product"]
177
+ def resource_path(prefix_parent="", prefix_resource="", resource=nil)
178
+ if resource
179
+ prefix_parent = "#{resource}."
180
+ else
181
+ resource = singular_table_name
182
+ end
183
+
184
+ if nested?
185
+ parent_resources(prefix_parent) << "#{prefix_resource}#{resource}"
186
+ else
187
+ ["#{prefix_resource}#{resource}"]
188
+ end
189
+ end
190
+
191
+ #product under brand/category => "categories"
192
+ def plural_last_parent
193
+ plural_parent_resources.last
194
+ end
195
+
196
+ #product under brand/category => ["brands", "categories"] or ["@brands", "@categories"]
197
+ def plural_parent_resources(prefix_parent="")
198
+ base_parent_resources.map{|m| "#{prefix_parent}#{m.pluralize}"}
199
+ end
200
+
201
+ #product under brand/category => ["brand", "category"] or ["@brand", "@category"]
202
+ def parent_resources(prefix_parent="")
203
+ base_parent_resources.map{|m| "#{prefix_parent}#{m}"}
204
+ end
205
+
206
+ #product under brand/category => "category"
207
+ def last_parent
208
+ base_parent_resources.last
209
+ end
210
+
211
+ #product under brand/category => ["brand", "category"]
212
+ def base_parent_resources
213
+ options[:under].split('/').map{|m| m.underscore}
214
+ end
215
+
216
+ def nested?
217
+ options[:under].present?
218
+ end
219
+
220
+ module Test
221
+ protected
222
+ #Add parent(s) param(s) to request
223
+ #get :index for a product under category => get :index, :category_id => product.category_id.to_s
224
+ def nested_params_http_request(value=nil)
225
+ return unless nested?
226
+ ", " << base_parent_resources.map{|m| ":#{m}_id => #{value ? value.to_s.inspect : "#{file_name}.#{m}_id.to_s"}"}.join(', ')
227
+ end
228
+
229
+ #Create new parent(s) and add it to request
230
+ #get :index for a product under category => get :index, :category_id => Factory(:category).id.to_s
231
+ def nested_params_http_request_new_parent
232
+ return unless nested?
233
+ ", " << base_parent_resources.map{|m| ":#{m}_id => Factory(:#{m}).id.to_s"}.join(', ')
234
+ end
235
+
236
+ #product => products_path
237
+ #product under category => category_products_path(product.category)
238
+ #product under brand/category => brand_category_products_path(product.brand, product.category)
239
+ def list_resources_path_test(resource=nil, prefix_parent=nil)
240
+ unless prefix_parent
241
+ resource = resource || singular_table_name
242
+ prefix_parent = "#{resource}."
243
+ end
244
+ "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources(prefix_parent, "", resource)})"
245
+ end
246
+
247
+ #product => "product"
248
+ #product under category => "[category, product]" or "[product.category, product]"
249
+ #product under brand/category => "[brand, category, product]" or "[product.brand, product.category, product]"
250
+ def show_resource_path_test(resource=nil, prefix_parent=nil, prefix_resource="")
251
+ resource = resource || singular_table_name
252
+ prefix_parent = prefix_parent || "#{resource}."
253
+ formatted_resource_path(prefix_parent, prefix_resource, "[]", resource)
254
+ end
255
+
256
+ #product => new_product_path
257
+ #product under category => new_category_product_path(product.category)
258
+ #product under brand/category => new_brand_category_product_path(product.brand, product.category)
259
+ def new_resource_path_test(resource=nil, prefix_parent=nil)
260
+ resource = resource || singular_table_name
261
+ prefix_parent = prefix_parent || "#{resource}."
262
+ "new_#{underscore_resource_path}_path(#{formatted_parent_resources(prefix_parent, "",resource)})"
263
+ end
264
+ end
27
265
  end
28
266
  end
@@ -1,10 +1,13 @@
1
1
  require 'rails/generators/erb'
2
2
  require 'rails/generators/resource_helpers'
3
+ require File.join(File.dirname(__FILE__), '../../base')
3
4
 
4
5
  module Erb
5
6
  module Generators
6
7
  class LeoscaGenerator < Base
7
8
  include Rails::Generators::ResourceHelpers
9
+ include ::Leonardo::Leosca
10
+ include ::Leonardo::Nested
8
11
  #puts 'erb:leosca'
9
12
 
10
13
  source_root File.expand_path('../templates', __FILE__)
@@ -12,6 +15,7 @@ module Erb
12
15
  class_option :authorization, :type => :boolean, :default => true, :description => "Add code to manage authorization with cancan"
13
16
  class_option :remote, :type => :boolean, :default => true, :description => "Enable ajax. You can also do later set remote to true into index view."
14
17
  class_option :formtastic, :type => :boolean, :default => true, :description => "Create forms to manage with formtastic gem"
18
+ class_option :under, :type => :string, :default => "", :banner => "brand/category"
15
19
 
16
20
  def create_root_folder
17
21
  empty_directory File.join("app/views", controller_file_path)
@@ -35,13 +39,46 @@ module Erb
35
39
  template filename_source, File.join("app/views", controller_file_path, filename)
36
40
  end
37
41
  end
42
+ end
43
+
44
+ def update_layout_html
45
+ file = "app/views/layouts/_#{CONFIG[:default_style]}.html.erb"
46
+ if nested?
47
+ inject_into_file file, :after => "<!-- Insert below here other #{last_parent} elements -->#{CRLF}" do
48
+ <<-FILE.gsub(/^ /, '')
49
+ #{"<% if can?(:read, #{class_name}) && controller.controller_path == '#{controller_name}' -%>" if authorization?}
50
+ <li class="active"><%= t('models.#{plural_table_name}') %></li>
51
+ <!-- Insert below here other #{singular_table_name} elements -->
52
+ #{"<% end -%>" if authorization?}
53
+ FILE
54
+ end if File.exists?(file)
55
+ else
56
+ inject_into_file file, :after => "<!-- Insert below other elements -->#{CRLF}" do
57
+ <<-FILE.gsub(/^ /, '')
58
+ #{"<% if can?(:read, #{class_name}) -%>" if authorization?}
59
+ <li class="<%= controller.controller_path == '#{controller_name}' ? 'active' : '' %>"><a href="<%= #{plural_table_name}_path %>"><%= t('models.#{plural_table_name}') %></a></li>
60
+ <!-- Insert below here other #{singular_table_name} elements -->
61
+ #{"<% end -%>" if authorization?}
62
+ FILE
63
+ end if File.exists?(file)
64
+ end
65
+ end
66
+
67
+ def update_parent_views
68
+ return unless nested?
69
+ file = "app/views/#{plural_last_parent}/_list.erb"
70
+ inject_into_file file, :before => "<!-- Manage section, do not remove this tag -->" do
71
+ <<-FILE.gsub(/^ /, '')
72
+ <td><%= link_to t('models.#{plural_table_name}'), #{underscore_resource_path :parent_singular_resource_plural}_path(#{last_parent}) %></td>
38
73
 
74
+ FILE
75
+ end if File.exists?(file)
39
76
  end
40
77
 
41
78
  protected
42
79
 
43
80
  def available_views
44
- %w(index edit show new _form _list destroy)
81
+ %w(index edit show new _form _list destroy _show)
45
82
  end
46
83
 
47
84
  def filenames_all_formats(name, paths=[], formats=[:html, :js, nil])
@@ -61,27 +98,6 @@ module Erb
61
98
  [name, format, parser].compact.join(".")
62
99
  end
63
100
 
64
- def authorization?
65
- File.exists? "app/models/ability.rb"
66
- end
67
- def authentication?
68
- return true if File.exists? "app/models/user.rb"
69
- File.exists? "config/initializers/devise.rb"
70
- end
71
- def camel_case(str)
72
- return str if str !~ /_/ && str =~ /[A-Z]+.*/
73
- str.split('_').map { |i| i.capitalize }.join
74
- end
75
- def formtastic?
76
- return false unless options.formtastic?
77
- File.exists? "config/initializers/formtastic.rb"
78
- end
79
- def jquery_ui?
80
- File.exists? "vendor/assets/javascripts/jquery-ui"
81
- end
82
- def pagination?
83
- File.exists? "config/initializers/kaminari_config.rb"
84
- end
85
101
  end
86
102
  end
87
103
  end
@@ -1,4 +1,4 @@
1
- <%%= form_for(@<%= singular_table_name %>) do |f| %>
1
+ <%%= form_for(<%= form_resource_path %>) do |f| %>
2
2
  <%% if @<%= singular_table_name %>.errors.any? %>
3
3
  <div id="error_explanation">
4
4
  <h2><%%= pluralize(@<%= singular_table_name %>.errors.count, "error") %> prohibited this <%= singular_table_name %> from being saved:</h2>
@@ -11,12 +11,23 @@
11
11
  </div>
12
12
  <%% end %>
13
13
 
14
- <% attributes.each do |attribute| -%>
14
+ <%- attributes.each do |attribute| -%>
15
15
  <div class="field">
16
16
  <%%= f.label :<%= attribute.name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %><br />
17
+ <%- case attribute.type
18
+ when :references, :belongs_to -%>
19
+ <%% if @<%= singular_table_name %>.new_record? -%>
20
+ <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true if can?(:manage, <%=class_name %>) %>
21
+ <%% else -%>
22
+ <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true %>
23
+ <%% end -%>
24
+ <%- when :date -%>
25
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %> <%=", :class => \"calendar\"" if jquery_ui?%> %>
26
+ <%- else -%>
17
27
  <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
28
+ <%- end -%>
18
29
  </div>
19
- <% end -%>
30
+ <%- end -%>
20
31
  <div class="actions">
21
32
  <%%= f.submit :class => 'button large' %>
22
33
  </div>
@@ -1,6 +1,6 @@
1
- <%- if pagination? -%>
1
+ <%- if pagination? %>
2
2
  <%%= paginate @<%= plural_table_name %>, :remote => remote %>
3
- <%- end -%>
3
+ <%- end %>
4
4
  <div class="separator"></div>
5
5
 
6
6
  <table class='user' cellspacing='0'>
@@ -15,36 +15,29 @@
15
15
  </tr>
16
16
  </thead>
17
17
  <tbody>
18
- <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
18
+ <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| -%>
19
19
  <tr id="tr<%%= <%= singular_table_name %>.id %>" class="<%%= cycle("odd", "even")%>">
20
20
  <%- attributes.each do |attribute| -%>
21
- <%- case attribute.type
22
- when :boolean -%>
23
- <td><%%= <%= singular_table_name %>.<%= attribute.name %> ? style_image_tag("ico_v.png", :class => "ico_true") : style_image_tag("ico_x.png", :class => "ico_false") %></td>
24
- <%- when :references, :belongs_to -%>
25
- <%% link_name = <%= singular_table_name %>.<%= attribute.name %>.try(:name) || <%= singular_table_name %>.<%= attribute.name %>.try(:id) %>
26
- <td><%%= link_to(link_name, <%= singular_table_name %>.<%= attribute.name %> ) %></td>
27
- <%- else -%>
28
- <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
29
- <%- end -%>
21
+ <td><%= attribute_to_erb(attribute, singular_table_name) -%></td>
30
22
  <%- end -%>
31
- <td><%%= link_to t(:show), <%= singular_table_name %> %></td>
23
+ <!-- Manage section, do not remove this tag -->
24
+ <td><%%= link_to t(:show), <%= show_resource_path %><%= ", :remote => remote" if jquery_ui? %> %></td>
32
25
  <%- if authorization? -%>
33
- <%% if can? :update, <%= singular_table_name %> -%>
26
+ <%%- if can? :update, <%= singular_table_name %> -%>
34
27
  <%- end -%>
35
- <td><%%= link_to t(:edit), edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
28
+ <td><%%= link_to t(:edit), <%= edit_resource_path %> %></td>
36
29
  <%- if authorization? -%>
37
- <%% end -%>
30
+ <%%- end -%>
38
31
  <%- end -%>
39
32
  <%- if authorization? -%>
40
- <%% if can? :destroy, <%= singular_table_name %> -%>
33
+ <%%- if can? :destroy, <%= singular_table_name %> -%>
41
34
  <%- end -%>
42
- <td><%%= link_to t(:destroy), <%= singular_table_name %>, <%= key_value :confirm, "t(:sure?)" %>, <%= key_value :method, ":delete" %>, :remote => remote %></td>
35
+ <td><%%= link_to t(:destroy), <%= destroy_resource_path %>, <%= key_value :confirm, "t(:sure?)" %>, <%= key_value :method, ":delete" %>, :remote => remote %></td>
43
36
  <%- if authorization? -%>
44
- <%% end -%>
37
+ <%%- end -%>
45
38
  <%- end -%>
46
39
  </tr>
47
- <%% end %>
40
+ <%% end -%>
48
41
  </tbody>
49
42
  </table>
50
43
 
@@ -0,0 +1,9 @@
1
+ <table>
2
+ <%- attributes.each do |attribute| -%>
3
+
4
+ <tr>
5
+ <td><b><%%= t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %>:</b></td>
6
+ <td><%= attribute_to_erb(attribute, "@#{singular_table_name}") %></td>
7
+ </tr>
8
+ <%- end -%>
9
+ </table>
@@ -1,11 +1,9 @@
1
- <%% secondary_navigation({:value => link_to(t(:list), <%= plural_table_name %>_path)},
2
- ({:value => link_to(t(:add), new_<%= singular_table_name %>_path)}<%= " if can?(:create, @#{singular_table_name})" if authorization? %>),
1
+ <%% secondary_navigation({:value => link_to(t(:list), <%= list_resources_path %>)},
2
+ ({:value => link_to(t(:add), <%= new_resource_path %>)}<%= " if can?(:create, @#{singular_table_name})" if authorization? %>),
3
3
  {:value => t(:edit), :active => true},
4
- {:value => link_to(t(:show), @<%= singular_table_name %>)}
4
+ {:value => link_to(t(:show), <%= show_resource_path("@") %>)}
5
5
  ) %>
6
6
 
7
7
  <%% title t('attributes.<%= singular_table_name %>.op_edit') %>
8
8
 
9
9
  <%%= render 'form' %>
10
- <!--<%%#= link_to t(:show), @<%= singular_table_name %> %> |-->
11
- <!--<%%#= link_to t(:back), <%= index_helper %>_path %>-->
@@ -1,11 +1,17 @@
1
- <%%= semantic_form_for(@<%= singular_table_name %>) do |f| %>
1
+ <%%= semantic_form_for(<%= form_resource_path %>) do |f| %>
2
2
  <%%= f.inputs do %>
3
3
  <%- attributes.each do |attribute| -%>
4
4
  <%- case attribute.type
5
- when :date -%>
6
- <%%= f.input :<%= attribute.name %>, :as => :string, :input_html => { :class => 'calendar', :maxlength => 10 } %>
7
- <%- else -%>
5
+ when :references, :belongs_to -%>
6
+ <%% if @<%= singular_table_name %>.new_record? -%>
7
+ <%%= f.input :<%= attribute.name %> if can?(:manage, <%=class_name %>) %>
8
+ <%% else -%>
8
9
  <%%= f.input :<%= attribute.name %> %>
10
+ <%% end -%>
11
+ <%- when :date -%>
12
+ <%%= f.input :<%= attribute.name %>, :as => :string, :input_html => { :class => 'calendar', :maxlength => 10 } %>
13
+ <%- else -%>
14
+ <%%= f.input :<%= attribute.name %> %>
9
15
  <%- end -%>
10
16
  <%- end -%>
11
17
  <%% end %>
@@ -1,16 +1,28 @@
1
1
  <%% secondary_navigation({:value => t(:list), :active => true},
2
- ({:value => link_to(t(:add), new_<%= singular_table_name %>_path)}<%= " if can?(:create, @#{singular_table_name})" if authorization? %>)
2
+ ({:value => link_to(t(:add), <%= new_resource_path %> )}<%= " if can?(:create, @#{singular_table_name})" if authorization? %>)
3
3
  ) %>
4
4
 
5
- <%% title t('attributes.<%= singular_table_name %>.op_index') %>
5
+ <%% title t('attributes.<%= singular_table_name %>.op_index'<%= ", {:parent => \"#{last_parent}\", :name => @#{last_parent}.try(:name) || @#{last_parent}.try(:id)}" if nested? -%>) %>
6
6
 
7
7
  <%% remote = <%= options.remote? %> %>
8
- <%%= form_for :<%= singular_table_name %>, :remote => remote, :html => { :method => :get, :id => "form_search" } do |f| %>
8
+ <%%= form_for <%= show_resource_path("@") %>, :remote => remote, :html => { :method => :get, :id => "form_search" } do |f| %>
9
9
  <div class="filter-container">
10
10
  <%- attributes.each do |attribute| -%>
11
11
  <div class="filter-field">
12
+ <%- case attribute.type -%>
13
+ <%- when :references, :belongs_to -%>
14
+ <%- unless nested? -%>
15
+ <b><%%= f.label :<%= attribute.name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %></b><br />
16
+ <%- end -%>
17
+ <%- else -%>
12
18
  <b><%%= f.label :<%= attribute.name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %></b><br />
19
+ <%- end -%>
20
+
13
21
  <%- case attribute.type -%>
22
+ <%- when :references, :belongs_to -%>
23
+ <%- unless nested? -%>
24
+ <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true %>
25
+ <%- end -%>
14
26
  <%- when :boolean -%>
15
27
  <%%= radio_button("<%= singular_table_name %>", "<%= attribute.name %>", "1", {:checked => (@<%= singular_table_name %>.<%= attribute.name %>)}) %><%%= label_tag "<%= singular_table_name %>_<%= attribute.name %>_1", t(:yes) %><br />
16
28
  <%%= radio_button("<%= singular_table_name %>", "<%= attribute.name %>", "0", {:checked => (!@<%= singular_table_name %>.<%= attribute.name %>)}) %><%%= label_tag "<%= singular_table_name %>_<%= attribute.name %>_0", t(:no) %><br />
@@ -22,7 +34,6 @@
22
34
  <%- else -%>
23
35
  <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
24
36
  <%- end -%>
25
-
26
37
  </div>
27
38
  <%- end -%>
28
39
  <div style="clear:both;">
@@ -1,4 +1,4 @@
1
- <%% secondary_navigation({:value => link_to(t(:list), <%= plural_table_name %>_path)},
1
+ <%% secondary_navigation({:value => link_to(t(:list), <%= list_resources_path %>)},
2
2
  {:value => t(:add), :active => true})
3
3
  %>
4
4
 
@@ -1,25 +1,8 @@
1
- <%% secondary_navigation({:value => link_to(t(:list),<%= plural_table_name %>_path)},
2
- ({:value => link_to(t(:add), new_<%= singular_table_name %>_path)}<%= " if can?(:create, @#{singular_table_name})" if authorization? %>),
3
- ({:value => link_to(t(:edit), edit_<%= singular_table_name %>_path(@<%= singular_table_name %>))}<%= " if can?(:update, @#{singular_table_name})" if authorization? %>),
4
- {:value => link_to(t(:show), @<%= singular_table_name %>), :active => true}
1
+ <%% secondary_navigation({:value => link_to(t(:list), <%= list_resources_path %>)},
2
+ ({:value => link_to(t(:add), <%= new_resource_path %>)}<%= " if can?(:create, @#{singular_table_name})" if authorization? %>),
3
+ ({:value => link_to(t(:edit), <%= edit_resource_path("@") %>)}<%= " if can?(:update, @#{singular_table_name})" if authorization? %>),
4
+ {:value => t(:show), :active => true}
5
5
  )%>
6
6
 
7
- <table>
8
- <% attributes.each do |attribute| -%>
9
- <tr>
10
- <%- case attribute.type
11
- when :boolean -%>
12
- <td><b><%%= t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %>:</b></td>
13
- <td><%%= @<%= singular_table_name %>.<%= attribute.name %> ? style_image_tag("ico_v.png", :class => "ico_true") : style_image_tag("ico_x.png", :class => "ico_false") %></td>
14
- <%- when :references, :belongs_to -%>
15
- <%% link_name = @<%= singular_table_name %>.<%= attribute.name %>.try(:name) || @<%= singular_table_name %>.<%= attribute.name %>.try(:id) %>
16
- <td><b><%%= t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %>:</b></td>
17
- <td><%%= link_to(link_name, @<%= singular_table_name %>.<%= attribute.name %> ) %></td>
18
- <%- else -%>
19
- <td><b><%%= t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %>:</b></td>
20
- <td><%%= @<%= singular_table_name %>.<%= attribute.name %> %></td>
21
- <%- end -%>
22
- </tr>
23
- <% end -%>
24
- </table>
7
+ <%%= render 'show' %>
25
8
 
@@ -0,0 +1,7 @@
1
+ var $dialog = $('<div></div>')
2
+ .html("<%%= escape_javascript(render('show'))%>")
3
+ .dialog({
4
+ autoOpen: false,
5
+ title: '<%%= "#{t(:show)}"%>'
6
+ });
7
+ $dialog.dialog('open');
@@ -5,7 +5,7 @@ Rails version supported:
5
5
  3.1
6
6
 
7
7
  Available layout:
8
- ergo [default]
8
+ cloudy [default]
9
9
 
10
10
  Example:
11
11
  rails generate leolay