typus 0.9.28 → 0.9.29

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 (78) hide show
  1. data/README.rdoc +25 -14
  2. data/VERSION +1 -1
  3. data/app/helpers/admin/form_helper.rb +16 -146
  4. data/app/helpers/admin/master_helper.rb +1 -1
  5. data/app/helpers/admin/table_helper.rb +3 -3
  6. data/app/helpers/typus_helper.rb +1 -9
  7. data/app/views/admin/resources/show.html.erb +5 -2
  8. data/app/views/admin/templates/_boolean.html.erb +8 -0
  9. data/app/views/admin/templates/_date.html.erb +2 -0
  10. data/app/views/admin/templates/_datetime.html.erb +2 -0
  11. data/app/views/admin/templates/_file.html.erb +44 -0
  12. data/app/views/admin/templates/_password.html.erb +2 -0
  13. data/app/views/admin/templates/_selector.html.erb +21 -0
  14. data/app/views/admin/templates/_string.html.erb +21 -0
  15. data/app/views/admin/templates/_text.html.erb +2 -0
  16. data/app/views/admin/templates/_time.html.erb +2 -0
  17. data/app/views/admin/templates/_tiny_mce.html.erb +2 -0
  18. data/app/views/layouts/admin.html.erb +1 -1
  19. data/config/locales/ru.yml +2 -2
  20. data/generators/typus/templates/config/initializers/typus.rb +2 -1
  21. data/generators/typus/templates/public/images/admin/{fancyzoom/closebox.png → fancybox/fancy_closebox.png} +0 -0
  22. data/generators/typus/templates/public/images/admin/fancybox/fancy_left.png +0 -0
  23. data/generators/typus/templates/public/images/admin/fancybox/fancy_progress.png +0 -0
  24. data/generators/typus/templates/public/images/admin/fancybox/fancy_right.png +0 -0
  25. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_e.png +0 -0
  26. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_n.png +0 -0
  27. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_ne.png +0 -0
  28. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_nw.png +0 -0
  29. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_s.png +0 -0
  30. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_se.png +0 -0
  31. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_sw.png +0 -0
  32. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_w.png +0 -0
  33. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_left.png +0 -0
  34. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_main.png +0 -0
  35. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_right.png +0 -0
  36. data/generators/typus/templates/public/javascripts/admin/jquery-1.3.2.min.js +19 -0
  37. data/generators/typus/templates/public/javascripts/admin/jquery.fancybox-1.2.1.min.js +9 -0
  38. data/generators/typus/templates/public/stylesheets/admin/jquery.fancybox.css +315 -0
  39. data/generators/typus/templates/public/stylesheets/admin/screen.css +75 -89
  40. data/generators/typus/typus_generator.rb +6 -5
  41. data/lib/typus.rb +0 -15
  42. data/lib/typus/active_record.rb +8 -14
  43. data/lib/typus/configuration.rb +2 -2
  44. data/lib/typus/preview.rb +2 -1
  45. data/lib/typus/reloader.rb +0 -1
  46. data/tasks/typus_tasks.rake +2 -0
  47. data/test/helpers/typus_helper_test.rb +0 -10
  48. data/test/lib/active_record_test.rb +0 -10
  49. data/test/lib/configuration_test.rb +2 -1
  50. data/typus.gemspec +30 -30
  51. metadata +30 -30
  52. data/generators/typus/templates/public/images/admin/fancyzoom/bl.gif +0 -0
  53. data/generators/typus/templates/public/images/admin/fancyzoom/bl.png +0 -0
  54. data/generators/typus/templates/public/images/admin/fancyzoom/bm.gif +0 -0
  55. data/generators/typus/templates/public/images/admin/fancyzoom/bm.png +0 -0
  56. data/generators/typus/templates/public/images/admin/fancyzoom/br.gif +0 -0
  57. data/generators/typus/templates/public/images/admin/fancyzoom/br.png +0 -0
  58. data/generators/typus/templates/public/images/admin/fancyzoom/closebox.gif +0 -0
  59. data/generators/typus/templates/public/images/admin/fancyzoom/ml.gif +0 -0
  60. data/generators/typus/templates/public/images/admin/fancyzoom/ml.png +0 -0
  61. data/generators/typus/templates/public/images/admin/fancyzoom/mr.gif +0 -0
  62. data/generators/typus/templates/public/images/admin/fancyzoom/mr.png +0 -0
  63. data/generators/typus/templates/public/images/admin/fancyzoom/tl.gif +0 -0
  64. data/generators/typus/templates/public/images/admin/fancyzoom/tl.png +0 -0
  65. data/generators/typus/templates/public/images/admin/fancyzoom/tm.gif +0 -0
  66. data/generators/typus/templates/public/images/admin/fancyzoom/tm.png +0 -0
  67. data/generators/typus/templates/public/images/admin/fancyzoom/tr.gif +0 -0
  68. data/generators/typus/templates/public/images/admin/fancyzoom/tr.png +0 -0
  69. data/generators/typus/templates/public/javascripts/admin/builder.js +0 -136
  70. data/generators/typus/templates/public/javascripts/admin/controls.js +0 -963
  71. data/generators/typus/templates/public/javascripts/admin/dragdrop.js +0 -973
  72. data/generators/typus/templates/public/javascripts/admin/effects.js +0 -1128
  73. data/generators/typus/templates/public/javascripts/admin/fancyzoom.js +0 -221
  74. data/generators/typus/templates/public/javascripts/admin/prototype.js +0 -4320
  75. data/generators/typus/templates/public/javascripts/admin/scriptaculous.js +0 -58
  76. data/generators/typus/templates/public/javascripts/admin/slider.js +0 -275
  77. data/generators/typus/templates/public/javascripts/admin/sound.js +0 -55
  78. data/lib/typus/locale.rb +0 -0
@@ -47,7 +47,7 @@ Notes on the application demo:
47
47
 
48
48
  == Installing
49
49
 
50
- Install from GitHub the latest version which it's compatible with Rails 2.3.2.
50
+ Install from GitHub the latest version which it's compatible with Rails 2.3.4.
51
51
 
52
52
  $ script/plugin install git://github.com/fesplugas/typus.git
53
53
 
@@ -72,12 +72,12 @@ Hire us to work on your next project. We build large and small websites.
72
72
  Contribute your patches to the community & support people on the
73
73
  mailing list.
74
74
 
75
- Tell everybody about Typus, tell your friends and colleagues about
76
- Typus and blog about Typus.
75
+ Tell everybody about *Typus*, tell your friends and colleagues about
76
+ *Typus* and blog about *Typus*.
77
77
 
78
- == Fancyzoom for assets
78
+ == Fancybox for assets
79
79
 
80
- This feature is a work in progress. Only previews images.
80
+ You can preview assets using Fancybox[http://fancybox.net/example].
81
81
 
82
82
  # db/migrate/create_photos.rb
83
83
 
@@ -100,23 +100,32 @@ This feature is a work in progress. Only previews images.
100
100
 
101
101
  # app/models/photo.rb
102
102
 
103
+ ##
104
+ # Styles are predefined but you can use your own by defining them
105
+ # on `config/initializers/typus.rb`.
106
+ #
107
+ # Typus::Configuration.options[:file_preview] = :my_preview
108
+ # Typus::Configuration.options[:file_thumbnail] = :my_thumbnail
109
+ ##
103
110
  class Photo < ActiveRecord::Base
104
- has_attached_file :asset, :styles => { :typus => "692x461" }
111
+ has_attached_file :asset, :styles => { :typus_preview => "692x461", :typus_thumbnail => "100x100" }
105
112
  end
106
113
 
107
114
  # app/views/admin/photos/_index.html.erb
108
115
 
116
+ <%- content_for :stylesheets do -%>
117
+ <%= stylesheet_link_tag 'admin/jquery.fancybox', :media => 'screen' %>
118
+ <%- end -%>
119
+
109
120
  <%- content_for :javascripts do -%>
110
121
 
111
- <%= javascript_include_tag 'admin/prototype' %>
112
- <%= javascript_include_tag 'admin/scriptaculous' %>
113
- <%= javascript_include_tag 'admin/fancyzoom' %>
122
+ <%= javascript_include_tag 'admin/jquery-1.3.2.min' %>
123
+ <%= javascript_include_tag 'admin/jquery.fancybox-1.2.1.min' %>
114
124
 
115
- <script type="text/javascript">
116
- FancyZoomBox.directory = '/images/admin/fancyzoom';
117
- $(document).observe('dom:loaded', function() {
125
+ <script type="text/javascript" charset="utf-8">
126
+ $(document).ready(function() {
118
127
  <%- @items.each do |item| -%>
119
- new FancyZoom('<%= item.to_dom %>');
128
+ $("#<%= item.to_dom %>").fancybox();
120
129
  <%- end -%>
121
130
  });
122
131
  </script>
@@ -147,7 +156,9 @@ This feature is a work in progress. Only previews images.
147
156
  == Acknowledgments
148
157
 
149
158
  - *Typus* uses "Paginator" by Bruce Williams http://codefluency.com.
150
- - *Typus* has been inspired by "Django Admin" http://www.djangoproject.com.
159
+ - *Typus* has been inspired by "Django Admin" http://djangoproject.com.
160
+ - *Typus* uses http://fancybox.net.
161
+ - *Typus* uses UI icons from http://jqueryui.com.
151
162
 
152
163
  Copyright (c) 2007-2009 Francesc Esplugas Marti, released under the
153
164
  MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.28
1
+ 0.9.29
@@ -7,32 +7,26 @@ module Admin::FormHelper
7
7
  :minute_step => @resource[:class].typus_options_for(:minute_step) }
8
8
 
9
9
  returning(String.new) do |html|
10
+
10
11
  html << (error_messages_for :item, :header_tag => 'h3')
11
12
  html << '<ul>'
12
13
 
13
14
  fields.each do |key, value|
14
- if template = @resource[:class].typus_template(key)
15
- html << typus_template_field(key, template, options)
16
- next
17
- end
18
- case value
19
- when :belongs_to then html << typus_belongs_to_field(key)
20
- when :boolean then html << typus_boolean_field(key)
21
- when :date then html << typus_date_field(key, options)
22
- when :datetime then html << typus_datetime_field(key, options)
23
- when :file then html << typus_file_field(key)
24
- when :password then html << typus_password_field(key)
25
- when :selector then html << typus_selector_field(key)
26
- when :text then html << typus_text_field(key)
27
- when :tiny_mce then html << typus_tiny_mce_field(key)
28
- when :time then html << typus_time_field(key, options)
29
- when :tree then html << typus_tree_field(key)
30
- else
31
- html << typus_string_field(key)
32
- end
15
+
16
+ html << case value
17
+ when :belongs_to then typus_belongs_to_field(key)
18
+ when :tree then typus_tree_field(key)
19
+ when :boolean, :date, :datetime, :file, :password, :selector, :string, :text, :time, :tiny_mce
20
+ typus_template_field(key, value.to_s, options)
21
+ else
22
+ typus_template_field(key, 'string', options)
23
+ end
33
24
  end
25
+
34
26
  html << '</ul>'
27
+
35
28
  end
29
+
36
30
  end
37
31
 
38
32
  def typus_belongs_to_field(attribute)
@@ -69,104 +63,6 @@ module Admin::FormHelper
69
63
 
70
64
  end
71
65
 
72
- def typus_boolean_field(attribute)
73
- attribute_name = attribute.gsub(/\?$/,'')
74
- custom_true = @resource[:class].typus_boolean(attribute)[:true]
75
- custom_true = custom_true != 'True' ? custom_true : "Checked if active"
76
- <<-HTML
77
- <li><label>#{@resource[:class].human_attribute_name(attribute)}</label>
78
- #{check_box :item, attribute_name} <label class="inline_label" for="item_#{attribute_name}">#{_(custom_true)}</label></li>
79
- HTML
80
- end
81
-
82
- def typus_date_field(attribute, options)
83
- <<-HTML
84
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
85
- #{date_select :item, attribute, options, { :disabled => attribute_disabled?(attribute)} }</li>
86
- HTML
87
- end
88
-
89
- def typus_datetime_field(attribute, options)
90
- <<-HTML
91
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
92
- #{datetime_select :item, attribute, options, {:disabled => attribute_disabled?(attribute)}}</li>
93
- HTML
94
- end
95
-
96
- # Optimize
97
- def typus_file_field(attribute)
98
-
99
- attachment = attribute.split('_file_name').first
100
-
101
- unless @item.send(attribute).blank?
102
- item = @item.send(attachment)
103
- preview = if @item.send("#{attachment}_content_type") =~ /^image\/.+/ && item.styles.member?(:typus_thumbnail)
104
- image_tag item.url(:typus_thumbnail)
105
- else
106
- link_to @item.send(attribute), item.url
107
- end
108
- end
109
-
110
- <<-HTML
111
- <li><label for="item_#{attribute}">#{_(attachment.humanize)}</label>
112
- #{file_field :item, attachment, :disabled => attribute_disabled?(attribute)}
113
- #{preview}
114
- </li>
115
- HTML
116
-
117
- end
118
-
119
- def typus_password_field(attribute)
120
- <<-HTML
121
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
122
- #{password_field :item, attribute, :class => 'text', :disabled => attribute_disabled?(attribute)}</li>
123
- HTML
124
- end
125
-
126
- def typus_selector_field(attribute)
127
- returning(String.new) do |html|
128
- options = []
129
- @resource[:class].send(attribute).each do |option|
130
- case option.kind_of?(Array)
131
- when true
132
- selected = (@item.send(attribute).to_s == option.last.to_s) ? 'selected' : ''
133
- options << "<option #{selected} value=\"#{option.last}\">#{option.first}</option>"
134
- else
135
- selected = (@item.send(attribute).to_s == option.to_s) ? 'selected' : ''
136
- options << "<option #{selected} value=\"#{option}\">#{option}</option>"
137
- end
138
- end
139
- html << <<-HTML
140
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
141
- <select id="item_#{attribute}" #{attribute_disabled?(attribute) ? 'disabled="disabled"' : ''} name="item[#{attribute}]">
142
- <option value=""></option>
143
- #{options.join("\n")}
144
- </select></li>
145
- HTML
146
- end
147
- end
148
-
149
- def typus_text_field(attribute)
150
- <<-HTML
151
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
152
- #{text_area :item, attribute, :class => 'text', :rows => @resource[:class].typus_options_for(:form_rows), :disabled => attribute_disabled?(attribute)}</li>
153
- HTML
154
- end
155
-
156
- def typus_tiny_mce_field(attribute)
157
- <<-HTML
158
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
159
- #{text_area :item, attribute, :class => 'mceEditor', :disabled => attribute_disabled?(attribute)}</li>
160
- HTML
161
- end
162
-
163
- def typus_time_field(attribute, options)
164
- <<-HTML
165
- <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
166
- #{time_select :item, attribute, options, {:disabled => attribute_disabled?(attribute)}}</li>
167
- HTML
168
- end
169
-
170
66
  def typus_tree_field(attribute, items = @resource[:class].roots, attribute_virtual = 'parent_id')
171
67
  <<-HTML
172
68
  <li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
@@ -177,30 +73,6 @@ module Admin::FormHelper
177
73
  HTML
178
74
  end
179
75
 
180
- def typus_string_field(attribute)
181
-
182
- # Read only fields.
183
- if @resource[:class].typus_field_options_for(:read_only).include?(attribute)
184
- value = 'read_only' if %w( edit ).include?(params[:action])
185
- end
186
-
187
- # Auto generated fields.
188
- if @resource[:class].typus_field_options_for(:auto_generated).include?(attribute)
189
- value = 'auto_generated' if %w( new edit ).include?(params[:action])
190
- end
191
-
192
- comment = %w( read_only auto_generated ).include?(value) ? "<small>#{value} field</small>".humanize : ''
193
-
194
- attribute_humanized = @resource[:class].human_attribute_name(attribute)
195
- attribute_humanized += " (#{attribute})" if attribute.include?('_id')
196
-
197
- <<-HTML
198
- <li><label for="item_#{attribute}">#{attribute_humanized}#{comment}</label>
199
- #{text_field :item, attribute, :class => 'text', :disabled => attribute_disabled?(attribute) }</li>
200
- HTML
201
-
202
- end
203
-
204
76
  def typus_relationships
205
77
 
206
78
  @back_to = '/' + [ params[:controller], params[:action], params[:id] ].compact.join('/')
@@ -378,11 +250,9 @@ module Admin::FormHelper
378
250
  end
379
251
 
380
252
  def typus_template_field(attribute, template, options = {})
381
- folder = Typus::Configuration.options[:templates_folder]
382
- template_name = File.join(folder, template)
383
-
384
- output = render(:partial => template_name, :locals => { :resource => @resource, :attribute => attribute, :options => options } )
385
- output || "#{attribute}: Can not find the template '#{template}'"
253
+ template_name = File.join('admin', 'templates', template)
254
+ render :partial => template_name,
255
+ :locals => { :resource => @resource, :attribute => attribute, :options => options }
386
256
  end
387
257
 
388
258
  def attribute_disabled?(attribute)
@@ -6,7 +6,7 @@ module Admin::MasterHelper
6
6
  include Admin::FormHelper
7
7
  include Admin::TableHelper
8
8
 
9
- def display_link_to_previous # (_params = params)
9
+ def display_link_to_previous
10
10
 
11
11
  options = {}
12
12
  options[:resource_from] = @resource[:class].typus_human_name
@@ -169,11 +169,11 @@ module Admin::TableHelper
169
169
  def typus_table_file_field(attribute, item, link_options = {})
170
170
 
171
171
  attachment = attribute.split('_file_name').first
172
+ file_preview = Typus::Configuration.options[:file_preview]
172
173
 
173
- if item.send(attachment).styles.member?(:typus_preview) && item.send("#{attachment}_content_type") =~ /^image\/.+/
174
+ if item.send(attachment).styles.member?(file_preview) && item.send("#{attachment}_content_type") =~ /^image\/.+/
174
175
  <<-HTML
175
- <td><a href="##{item.to_dom(:suffix => 'zoom')}" id="#{item.to_dom}" title="Click to preview">#{item.send(attribute)}</a></td>
176
- <div id=\"#{item.to_dom(:suffix => 'zoom')}\">#{item.typus_preview(attachment)}</div>
176
+ <td><a id="#{item.to_dom}" href="#{item.send(attachment).url(file_preview)}" title="#{item.typus_name}">#{item.send(attribute)}</a></td>
177
177
  HTML
178
178
  else
179
179
  <<-HTML
@@ -75,7 +75,7 @@ module TypusHelper
75
75
 
76
76
  html << <<-HTML
77
77
  <tr class="#{cycle('even', 'odd')}">
78
- <td>#{link_to _(resource.humanize), resource_path}</td>
78
+ <td>#{link_to _(resource.tableize.humanize), resource_path}</td>
79
79
  <td align="right" style="vertical-align: bottom;"></td>
80
80
  </tr>
81
81
  HTML
@@ -177,12 +177,4 @@ module TypusHelper
177
177
 
178
178
  end
179
179
 
180
- def typus_message(message, html_class = 'notice')
181
- <<-HTML
182
- <div id="flash" class="#{html_class}">
183
- <p>#{message}</p>
184
- </div>
185
- HTML
186
- end
187
-
188
180
  end
@@ -20,13 +20,16 @@
20
20
  !raw_data.nil? ? boolean_hash["#{raw_data}".to_sym] : @resource[:class].typus_options_for(:nil)
21
21
  when :belongs_to
22
22
  raw_data.typus_name
23
+ when :file
24
+ attachment = field.first.split('_file_name').first
25
+ @item.typus_preview(attachment)
23
26
  when :text
24
27
  defined?(RDiscount) ? markdown(raw_data) : raw_data
25
28
  else
26
- raw_data
29
+ h(raw_data)
27
30
  end
28
31
  -%>
29
- <dd><%= !data.blank? ? (data_type.eql?(:text) ? markdown(data) : h(data)) : '&#151;' %></dd>
32
+ <dd><%= !data.blank? ? data : '&#151;' %></dd>
30
33
  <%- end -%>
31
34
  </dl>
32
35
 
@@ -0,0 +1,8 @@
1
+ <%
2
+ attribute_name = attribute.gsub(/\?$/,'')
3
+ custom_true = @resource[:class].typus_boolean(attribute)[:true]
4
+ custom_true = custom_true != 'True' ? custom_true : "Checked if active"
5
+ %>
6
+
7
+ <li><label><%= @resource[:class].human_attribute_name(attribute) %></label>
8
+ <%= check_box :item, attribute_name %> <label class="inline_label" for="item_<%= attribute_name %>"><%= _(custom_true) %></label></li>
@@ -0,0 +1,2 @@
1
+ <li><label for="item_<%= attribute %>"><%= @resource[:class].human_attribute_name(attribute) %></label>
2
+ <%= date_select :item, attribute, options, { :disabled => attribute_disabled?(attribute)} %></li>
@@ -0,0 +1,2 @@
1
+ <li><label for="item_<%= attribute %>"><%= @resource[:class].human_attribute_name(attribute) %></label>
2
+ <%= datetime_select :item, attribute, options, {:disabled => attribute_disabled?(attribute)} %></li>
@@ -0,0 +1,44 @@
1
+ <%- content_for :stylesheets do -%>
2
+ <%= stylesheet_link_tag 'admin/jquery.fancybox', :media => 'screen' %>
3
+ <%- end -%>
4
+
5
+ <%- content_for :javascripts do -%>
6
+
7
+ <%= javascript_include_tag 'admin/jquery-1.3.2.min' %>
8
+ <%= javascript_include_tag 'admin/jquery.fancybox-1.2.1.min' %>
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ $(document).ready(function() {
12
+ $("#<%= @item.to_dom %>").fancybox();
13
+ });
14
+ </script>
15
+
16
+ <%- end -%>
17
+
18
+ <%
19
+
20
+ attachment = attribute.split('_file_name').first
21
+ file_preview = Typus::Configuration.options[:file_preview]
22
+ file_thumbnail = Typus::Configuration.options[:file_thumbnail]
23
+
24
+ unless @item.send(attribute).blank?
25
+ item = @item.send(attachment)
26
+ preview = if @item.send("#{attachment}_content_type") =~ /^image\/.+/ && item.styles.member?(file_thumbnail)
27
+ <<-HTML
28
+ <a id="#{@item.to_dom}" href="#{@item.send(attachment).url(file_preview)}" title="#{@item.typus_name}">
29
+ #{image_tag item.url(file_thumbnail)}
30
+ </a>
31
+ HTML
32
+ else
33
+ <<-HTML
34
+ #{link_to @item.send(attribute), item.url}
35
+ HTML
36
+ end
37
+ end
38
+
39
+ %>
40
+
41
+ <li><label for="item_<%= attribute %>"><%= _(attachment.humanize) %></label>
42
+ <%= file_field :item, attachment, :disabled => attribute_disabled?(attribute) %>
43
+ <%= preview %>
44
+ </li>
@@ -0,0 +1,2 @@
1
+ <li><label for="item_<%= attribute %>"><%= @resource[:class].human_attribute_name(attribute) %></label>
2
+ <%= password_field :item, attribute, :class => 'text', :disabled => attribute_disabled?(attribute) %></li>
@@ -0,0 +1,21 @@
1
+ <%
2
+
3
+ options = []
4
+ @resource[:class].send(attribute).each do |option|
5
+ case option.kind_of?(Array)
6
+ when true
7
+ selected = (@item.send(attribute).to_s == option.last.to_s) ? 'selected' : ''
8
+ options << "<option #{selected} value=\"#{option.last}\">#{option.first}</option>"
9
+ else
10
+ selected = (@item.send(attribute).to_s == option.to_s) ? 'selected' : ''
11
+ options << "<option #{selected} value=\"#{option}\">#{option}</option>"
12
+ end
13
+ end
14
+
15
+ %>
16
+
17
+ <li><label for="item_<%= attribute %>"><%= @resource[:class].human_attribute_name(attribute) %></label>
18
+ <select id="item_<%= attribute %>" <%= attribute_disabled?(attribute) ? 'disabled="disabled"' : '' %> name="item[<%= attribute %>]">
19
+ <option value=""></option>
20
+ <%= options.join("\n") %>
21
+ </select></li>
@@ -0,0 +1,21 @@
1
+ <%
2
+
3
+ # Read only fields.
4
+ if @resource[:class].typus_field_options_for(:read_only).include?(attribute)
5
+ value = 'read_only' if %w( edit ).include?(params[:action])
6
+ end
7
+
8
+ # Auto generated fields.
9
+ if @resource[:class].typus_field_options_for(:auto_generated).include?(attribute)
10
+ value = 'auto_generated' if %w( new edit ).include?(params[:action])
11
+ end
12
+
13
+ comment = %w( read_only auto_generated ).include?(value) ? "<small>#{value} field</small>".humanize : ''
14
+
15
+ attribute_humanized = @resource[:class].human_attribute_name(attribute)
16
+ attribute_humanized += " (#{attribute})" if attribute.include?('_id')
17
+
18
+ %>
19
+
20
+ <li><label for="item_<%= attribute %>"><%= attribute_humanized %> <%= comment %></label>
21
+ <%= text_field :item, attribute, :class => 'text', :disabled => attribute_disabled?(attribute) %></li>