fullstack-admin 0.1.36 → 0.1.37

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/TODO.tasks CHANGED
@@ -2,28 +2,38 @@
2
2
  = Fullstack Admin Roadmap =
3
3
  ===========================
4
4
 
5
- - fix delete not removing rows/thumbnails on success
5
+ fix delete not removing rows/thumbnails on success
6
6
 
7
7
  ✓ Better rendering for boolean input
8
8
 
9
- - Nested forms for Has Many associations
9
+ Nested forms for Has Many associations
10
10
  ✓ Sorting
11
11
  ✓ autogenerate from has_many
12
- - skip input for associated model
12
+ skip input for associated model
13
13
 
14
14
  ✓ Fix production issues
15
15
 
16
16
  ✓ Multiple choice input with chosen
17
17
 
18
+ ✓ Image inputs NB. Changed to file_input
19
+ ✓ detect smaller image size for thumbnails
20
+ ✓ inference of input type from model
21
+
22
+ ✓ Ckeditor: upload assets to S3 according to app.config
23
+
24
+ - Localizable models
25
+ - Create Localized module: a model is localizable if has a :locale field (cms?)
26
+ - Add a scope to Localized to find models within the current locale (cms?)
27
+
28
+ - Create an option to specify the admin_locale
29
+ - add a before filter to Admin::BaseController that uses the default locale for the admin
30
+ - Split localized models index into tabs (either through ajax?)
31
+ - Let the programmer decide a default locale and a set of available locales
32
+ - Translations for locale codes
33
+
18
34
  - Form for accepts_nested_attributes_for and has_one
19
-
20
- - Image inputs
21
- - detect smaller image size for thumbnails
22
- - inference of input type from model
23
-
24
35
  - Optional tracking of author/updaters for every model (CMS?)
25
36
 
26
-
27
37
  ==================
28
38
  = Long Run Goals =
29
39
  ==================
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.36
1
+ 0.1.37
@@ -51,18 +51,51 @@ module AdminFormHelper
51
51
  except_arg = options[:except] || []
52
52
  except_attributes = except_arg + model.protected_attributes.to_a + %W(created_at updated_at slug slugs lat lng position)
53
53
 
54
- only_attributes.map! {|a| :"#{a}"}
55
- except_attributes.map! {|a| :"#{a}"}
56
-
57
- columns = model.schema.hierarchy_field_names.map! {|a| :"#{a}"}
54
+ only_attributes.map! {|a| a.to_s}
55
+ except_attributes.map! {|a| a.to_s}
56
+
57
+ columns = model.schema.hierarchy_field_names
58
+
59
+ # ===============
60
+ # = Attachments =
61
+ # ===============
58
62
 
59
63
  attachment_definitions = (model.attachment_definitions || {}).keys
60
64
  attachment_columns = attachment_definitions.map {|a|
61
- [:"#{a}_file_name", :"#{a}_file_size", :"#{a}_content_type", :"#{a}_updated_at"]
65
+ ["#{a}_file_name", "#{a}_file_size", "#{a}_content_type", "#{a}_updated_at"]
62
66
  }.flatten
63
-
67
+
64
68
  columns -= attachment_columns
65
69
  columns += attachment_definitions
70
+
71
+
72
+ # ================
73
+ # = Associations =
74
+ # ================
75
+
76
+ columns = columns.map {|field_name|
77
+ field_name.to_s.gsub(/_id$/, "").gsub(/_type$/, "")
78
+ }.uniq
79
+
80
+ belongs_to_associations = model.reflect_on_all_associations(:belongs_to).select {|a|
81
+ !a.options[:polymorphic]
82
+ }.map {|assoc| assoc.name.to_s}
83
+
84
+ polymorphic_associations = model.reflect_on_all_associations(:belongs_to).select {|a|
85
+ a.options[:polymorphic]
86
+ }.map {|assoc| assoc.name.to_s}
87
+
88
+ has_many_associations = model.reflect_on_all_associations(:has_many).select {|a|
89
+ a.options[:autosave]
90
+ }.map {|assoc| assoc.name.to_s}
91
+
92
+ columns -= polymorphic_associations
93
+ columns += has_many_associations
94
+
95
+
96
+ # ====================================
97
+ # = Intersect with :only and :except =
98
+ # ====================================
66
99
 
67
100
  if only_attributes.any?
68
101
  columns = columns.select {|k| only_attributes.include?(k)}
@@ -70,42 +103,42 @@ module AdminFormHelper
70
103
  columns = columns.delete_if {|k| except_attributes.include?(k)}
71
104
  end
72
105
 
106
+
107
+ # =============
108
+ # = Rendering =
109
+ # =============
110
+
73
111
  buff = ""
74
112
 
75
- columns.each {|k|
76
- k = "#{k}".gsub(/_ids?$/, "").gsub(/_type$/, "").to_sym
77
- assoc = model.reflect_on_association(k)
78
- if assoc && assoc.belongs_to?
79
- unless assoc.options[:polymorphic]
80
- buff << @target.input(k, :as => :select)
81
- end
82
- else
83
-
84
- if field = model.schema.hierarchy_fields[k]
85
- if field.options[:markup]
86
- buff << @target.input(k, :as => :markup)
87
- elsif field.options[:simple_markup]
88
- buff << @target.input(k, :as => :simple_markup)
89
- else
90
- buff << @target.input(k)
91
- end
92
- else
93
- buff << @target.input(k)
94
- end
95
-
96
- end
113
+ columns.each do |column|
114
+ sym = column.to_sym
115
+ field = model.schema.hierarchy_fields[sym]
116
+ is_belongs_to_associaiton = belongs_to_associations.include?(column)
117
+ is_has_many_association = has_many_associations.include?(column)
97
118
 
98
- }
99
-
100
- buff = self.inputs do
101
- buff.html_safe
119
+ buff << if is_belongs_to_associaiton
120
+ @target.input(sym, :as => :select)
121
+
122
+ elsif is_has_many_association
123
+ association_inputs(sym)
124
+ else
125
+ input_type = if field && field.options[:markup]
126
+ :markup
127
+ elsif field && field.options[:simple_markup]
128
+ :simple_markup
129
+ else
130
+ nil
131
+ end
132
+
133
+ @target.input(sym, :as => input_type)
134
+
135
+ end
102
136
  end
103
137
 
104
- model.reflect_on_all_associations(:has_many).select {|m| m.options[:autosave] }.each do |assoc|
105
- buff << association_inputs(assoc.name)
138
+ inputs do
139
+ buff.html_safe
106
140
  end
107
-
108
- buff
141
+
109
142
  end
110
143
 
111
144
  def resource_submit
@@ -1,7 +1,5 @@
1
1
  class Ckeditor::AttachmentFile < Ckeditor::Asset
2
- has_attached_file :data,
3
- :url => "/ckeditor_assets/attachments/:id/:filename",
4
- :path => ":rails_root/public/ckeditor_assets/attachments/:id/:filename"
2
+ has_attached :data
5
3
 
6
4
  validates_attachment_size :data, :less_than => 100.megabytes
7
5
  validates_attachment_presence :data
@@ -40,7 +40,7 @@
40
40
  <% begin %>
41
41
  <%= render :partial => "admin/#{association}/associated_fields", :locals => {:f => f} %>
42
42
  <% rescue ActionView::MissingTemplate %>
43
- <%= f.resource_inputs %>
43
+ <%= f.resource_inputs :except => [resource_name] %>
44
44
  <% end %>
45
45
 
46
46
  <%= f.hidden_field(:_destroy, :class => "destroy-associated-resource") %>
@@ -1,4 +1,4 @@
1
- <% if instance_variable_get("@#{controller_name.singularize}").destroyed? %>
1
+ <% if current_resource.destroyed? %>
2
2
  $("a[data-method='delete']").filter("[href='<%=j request.path %>']").closest("tr, li").remove()
3
3
  notify_notice('<%=j t("fullstack.admin.flash.success.delete") %>')
4
4
  <% else %>
@@ -37,7 +37,7 @@ it:
37
37
  success:
38
38
  generic: "Cambiamenti salvati con successo"
39
39
  update: "Documento salvato con successo"
40
- delete: "Document eliminato con successo"
40
+ delete: "Documento eliminato con successo"
41
41
 
42
42
  error:
43
43
  generic: "Cambiamenti non salvati a causa di un errore"
@@ -29,7 +29,7 @@ it:
29
29
  image: "Immagine"
30
30
  icon: "Icona"
31
31
  external: "Esterno"
32
- nofollow: "Nofollow"
32
+ nofollow: "Non segnalare ai motori di ricerca"
33
33
  alignment_right: "Allinea a destra"
34
34
  browser_title: "Titolo del browser"
35
35
  seo_title: "Titolo SEO"
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "fullstack-admin"
8
- s.version = "0.1.36"
8
+ s.version = "0.1.37"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["mcasimir"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fullstack-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.36
4
+ version: 0.1.37
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -1329,7 +1329,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1329
1329
  version: '0'
1330
1330
  segments:
1331
1331
  - 0
1332
- hash: -2718455350685329463
1332
+ hash: -4320214889325089488
1333
1333
  required_rubygems_version: !ruby/object:Gem::Requirement
1334
1334
  none: false
1335
1335
  requirements: