adminpanel 2.2.5 → 2.3.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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -5
  3. data/CONTRIBUTING.md +22 -0
  4. data/Gemfile +1 -6
  5. data/README.md +8 -13
  6. data/Rakefile +4 -6
  7. data/adminpanel.gemspec +29 -24
  8. data/app/assets/javascripts/{application-admin.js → adminpanel/application.js} +2 -1
  9. data/app/assets/javascripts/adminpanel/images_form_add_remove_fields.js.coffee +11 -0
  10. data/app/assets/javascripts/adminpanel/sections.js.coffee +9 -0
  11. data/app/assets/javascripts/adminpanel/spinner.js.coffee +3 -3
  12. data/app/assets/javascripts/adminpanel/tables.js +4 -3
  13. data/app/assets/javascripts/adminpanel/wysiwyg.js.coffee +4 -1
  14. data/app/assets/stylesheets/{application-admin.css → adminpanel/application.css} +2 -2
  15. data/app/assets/stylesheets/adminpanel/fa-hidden.css.scss +7 -0
  16. data/app/assets/stylesheets/adminpanel/theme.css.scss.erb +3 -27
  17. data/app/assets/stylesheets/adminpanel/turbolinks_progress_load.css.scss +5 -0
  18. data/app/controllers/adminpanel/analytics_controller.rb +3 -3
  19. data/app/controllers/adminpanel/application_controller.rb +5 -11
  20. data/app/controllers/adminpanel/auths_controller.rb +6 -0
  21. data/app/controllers/adminpanel/categories_controller.rb +26 -60
  22. data/app/controllers/adminpanel/permissions_controller.rb +1 -2
  23. data/app/controllers/adminpanel/roles_controller.rb +10 -0
  24. data/app/controllers/adminpanel/sections_controller.rb +14 -14
  25. data/app/controllers/adminpanel/sessions_controller.rb +4 -3
  26. data/app/controllers/adminpanel/users_controller.rb +2 -2
  27. data/app/controllers/concerns/adminpanel/analytics/twitter_analytics.rb +1 -1
  28. data/app/controllers/concerns/adminpanel/facebook_actions.rb +13 -12
  29. data/app/controllers/concerns/adminpanel/galleryzable_actions.rb +13 -9
  30. data/app/controllers/concerns/adminpanel/rest_actions.rb +65 -59
  31. data/app/controllers/concerns/adminpanel/sitemap_actions.rb +1 -1
  32. data/app/controllers/concerns/adminpanel/sortable_actions.rb +29 -0
  33. data/app/controllers/concerns/adminpanel/twitter_actions.rb +5 -5
  34. data/app/helpers/adminpanel/adminpanel_form_builder.rb +104 -64
  35. data/app/helpers/adminpanel/application_helper.rb +20 -9
  36. data/app/helpers/adminpanel/breadcrumbs_helper.rb +2 -2
  37. data/app/helpers/adminpanel/router_helper.rb +8 -4
  38. data/app/helpers/adminpanel/shared_pages_helper.rb +59 -11
  39. data/app/models/ability.rb +2 -2
  40. data/app/models/adminpanel/analytic.rb +3 -3
  41. data/app/models/adminpanel/permission.rb +19 -19
  42. data/app/models/adminpanel/{rol.rb → role.rb} +9 -2
  43. data/app/models/adminpanel/section.rb +10 -6
  44. data/app/models/adminpanel/{image.rb → sectionfile.rb} +1 -1
  45. data/app/models/adminpanel/user.rb +27 -31
  46. data/app/models/concerns/adminpanel/base.rb +33 -19
  47. data/app/models/concerns/adminpanel/galleryzation.rb +18 -5
  48. data/app/models/concerns/adminpanel/sitemap.rb +1 -1
  49. data/app/models/concerns/adminpanel/sortable.rb +69 -0
  50. data/app/uploaders/adminpanel/.keep +1 -0
  51. data/app/views/adminpanel/analytics/_fb_statistic_widget.html.erb +27 -27
  52. data/app/views/adminpanel/categories/_categories_table.html.erb +4 -4
  53. data/app/views/adminpanel/categories/_category_form.html.erb +26 -6
  54. data/app/views/adminpanel/categories/create.js.erb +4 -5
  55. data/app/views/adminpanel/categories/index.html.erb +23 -16
  56. data/app/views/adminpanel/categories/new.js.erb +1 -1
  57. data/app/views/adminpanel/form/_adminpanel_file_field.html.erb +24 -0
  58. data/app/views/adminpanel/form/_belongs_to.html.erb +24 -0
  59. data/app/views/adminpanel/form/_file_field.html.erb +4 -0
  60. data/app/views/adminpanel/form/_has_many.html.erb +19 -0
  61. data/app/views/adminpanel/form/_non_image_file_field.html.erb +4 -0
  62. data/app/views/{shared/_delete_icon_button.html.erb → adminpanel/icons/_delete.html.erb} +3 -1
  63. data/app/views/{shared/_edit_icon_button.html.erb → adminpanel/icons/_edit.html.erb} +3 -3
  64. data/app/views/{shared/_fb_icon_button.html.erb → adminpanel/icons/_facebook.html.erb} +6 -5
  65. data/app/views/adminpanel/icons/_move_to_better.html.erb +16 -0
  66. data/app/views/adminpanel/icons/_move_to_worst.html.erb +17 -0
  67. data/app/views/{shared/_show_icon_button.html.erb → adminpanel/icons/_show.html.erb} +1 -1
  68. data/app/views/{shared/_twitter_icon_button.html.erb → adminpanel/icons/_twitter.html.erb} +1 -1
  69. data/app/views/adminpanel/sections/_sections_table.html.erb +1 -1
  70. data/app/views/adminpanel/sections/edit.html.erb +25 -17
  71. data/app/views/adminpanel/sections/index.html.erb +1 -1
  72. data/app/views/adminpanel/sections/show.html.erb +2 -2
  73. data/app/views/{shared → adminpanel/shared}/_breadcrumb.html.erb +0 -0
  74. data/app/views/adminpanel/shared/_create_remote_resource_button.html.erb +21 -0
  75. data/app/views/{shared → adminpanel/shared}/_error_messages.html.erb +0 -0
  76. data/app/views/{shared → adminpanel/shared}/_fb_publish_modal.html.erb +2 -2
  77. data/app/views/adminpanel/shared/_form_fields.html.erb +21 -0
  78. data/app/views/adminpanel/shared/_gallery_entries.html.erb +11 -0
  79. data/app/views/adminpanel/shared/_image_fields.html.erb +3 -0
  80. data/app/views/adminpanel/shared/_index_records.html.erb +32 -0
  81. data/app/views/adminpanel/shared/_modal.html.erb +20 -0
  82. data/app/views/adminpanel/shared/_new_resource_button.html.erb +17 -0
  83. data/app/views/adminpanel/shared/_remote_form_fields.html.erb +28 -0
  84. data/app/views/{shared → adminpanel/shared}/_twitter_publish_modal.html.erb +0 -0
  85. data/app/views/{shared → adminpanel/shared}/create_belongs_to.js.erb +0 -0
  86. data/app/views/{shared → adminpanel/shared}/create_has_many.js.erb +0 -0
  87. data/app/views/adminpanel/shared/edit.html.erb +42 -0
  88. data/app/views/{shared → adminpanel/shared}/fb_choose_page.html.erb +2 -2
  89. data/app/views/adminpanel/shared/gallery_entries.js.erb +1 -0
  90. data/app/views/adminpanel/shared/index.html.erb +43 -0
  91. data/app/views/adminpanel/shared/index_records.js.erb +1 -0
  92. data/app/views/adminpanel/shared/new.html.erb +42 -0
  93. data/app/views/adminpanel/shared/new.js.erb +2 -0
  94. data/app/views/adminpanel/shared/show.html.erb +77 -0
  95. data/app/views/layouts/{_shim.html.erb → adminpanel/_shim.html.erb} +0 -0
  96. data/app/views/layouts/adminpanel/_side_menu.html.erb +32 -0
  97. data/app/views/layouts/{_top_bar.html.erb → adminpanel/_top_bar.html.erb} +4 -2
  98. data/app/views/layouts/{admin-login.html.erb → adminpanel/application-login.html.erb} +4 -4
  99. data/app/views/layouts/{admin.html.erb → adminpanel/application.html.erb} +8 -6
  100. data/config/initializers/adminpanel/clear_cache.rb +4 -0
  101. data/config/initializers/{pluralization_es.rb → adminpanel/pluralization_es.rb} +0 -0
  102. data/config/initializers/{twitter-oauth.rb → adminpanel/twitter_oauth.rb} +0 -0
  103. data/config/locales/en.yml +93 -59
  104. data/config/locales/es.yml +34 -14
  105. data/config/routes.rb +27 -24
  106. data/lib/adminpanel.rb +3 -1
  107. data/lib/adminpanel/engine.rb +6 -3
  108. data/lib/adminpanel/version.rb +1 -1
  109. data/lib/generators/adminpanel/contact/contact_generator.rb +12 -0
  110. data/{app/models/contact.rb → lib/generators/adminpanel/contact/templates/contact_template.rb} +0 -0
  111. data/lib/generators/adminpanel/dump/dump_generator.rb +37 -0
  112. data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +7 -0
  113. data/lib/generators/adminpanel/gallery/templates/uploader.rb +7 -9
  114. data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +2 -2
  115. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +23 -34
  116. data/lib/generators/adminpanel/initialize/templates/section_uploader.rb +6 -8
  117. data/lib/generators/adminpanel/resource/resource_generator.rb +3 -2
  118. data/lib/generators/adminpanel/resource/resource_generator_helper.rb +6 -8
  119. data/lib/generators/adminpanel/resource/templates/adminpanel_controller_template.rb +1 -1
  120. data/lib/generators/adminpanel/resource/templates/adminpanel_resource_template.rb +2 -2
  121. data/lib/tasks/adminpanel/adminpanel.rake +11 -24
  122. data/lib/tasks/adminpanel/sections.rake +65 -0
  123. data/test/dummy/app/controllers/adminpanel/file_resources_controller.rb +12 -0
  124. data/test/dummy/app/controllers/adminpanel/galleries_controller.rb +4 -0
  125. data/test/dummy/app/controllers/adminpanel/products_controller.rb +5 -5
  126. data/test/dummy/app/models/adminpanel/category.rb +2 -0
  127. data/test/dummy/app/models/adminpanel/file_resource.rb +34 -0
  128. data/test/dummy/app/models/adminpanel/file_resourcefile.rb +13 -0
  129. data/test/dummy/app/models/adminpanel/gallery.rb +32 -0
  130. data/test/dummy/app/models/adminpanel/galleryfile.rb +19 -0
  131. data/test/dummy/app/models/adminpanel/mug.rb +14 -14
  132. data/test/dummy/app/models/adminpanel/photo.rb +1 -0
  133. data/test/dummy/app/models/adminpanel/product.rb +7 -7
  134. data/test/dummy/app/models/adminpanel/test_object.rb +53 -0
  135. data/test/dummy/app/uploader/adminpanel/file_resourcefile_uploader.rb +82 -0
  136. data/test/dummy/app/uploader/adminpanel/photo_uploader.rb +5 -9
  137. data/test/dummy/app/uploader/adminpanel/section_uploader.rb +5 -9
  138. data/test/dummy/config/application.rb +3 -30
  139. data/test/dummy/config/carrierwave.rb +1 -1
  140. data/test/dummy/config/environments/test.rb +10 -4
  141. data/test/dummy/config/initializers/adminpanel_setup.rb +5 -2
  142. data/test/dummy/db/schema.rb +65 -34
  143. data/test/dummy/test/fixtures/adminpanel/categories.yml +7 -0
  144. data/test/dummy/test/fixtures/adminpanel/galleryfiles.yml +18 -0
  145. data/test/dummy/test/fixtures/adminpanel/permissions.yml +7 -7
  146. data/test/dummy/test/fixtures/adminpanel/products.yml +7 -0
  147. data/test/dummy/test/fixtures/adminpanel/{rols.yml → roles.yml} +0 -0
  148. data/test/dummy/test/fixtures/adminpanel/test_objects.yml +7 -0
  149. data/test/dummy/test/fixtures/adminpanel/users.yml +7 -7
  150. data/test/dummy/test/fixtures/dog fries.png +0 -0
  151. data/test/features/categories/categories_index_test.rb +31 -0
  152. data/test/features/shared/concerns/galleryzable_test.rb +22 -0
  153. data/test/features/shared/concerns/sortable_test.rb +26 -0
  154. data/test/features/shared/form/has_many_through_non_category_modal_test.rb +1 -1
  155. data/test/features/shared/form/remote_resource_modal_test.rb +41 -0
  156. data/test/features/shared/resource/edit_test.rb +7 -6
  157. data/test/features/shared/resource/new_test.rb +3 -2
  158. data/test/features/shared/ui/max_images_gallery_test.rb +52 -0
  159. data/test/generators/contact_generator_test.rb +20 -0
  160. data/test/generators/dump_generator_test.rb +51 -0
  161. data/test/generators/resource_generator_test.rb +46 -1
  162. data/test/helpers/breadcrumbs_helper_test.rb +3 -4
  163. data/test/helpers/router_helper_test.rb +1 -1
  164. data/test/helpers/shared_pages_helper_test.rb +120 -0
  165. data/test/models/adminpanel/gallery_test.rb +16 -23
  166. data/test/models/adminpanel/user_test.rb +1 -1
  167. data/test/support/view_case.rb +18 -19
  168. data/test/tasks/adminpanel_rake_test.rb +5 -3
  169. data/test/test_helper.rb +2 -5
  170. metadata +204 -150
  171. data/.rspec +0 -2
  172. data/app/assets/javascripts/adminpanel/images_form.js +0 -23
  173. data/app/assets/javascripts/adminpanel/imagesloaded.js +0 -16
  174. data/app/controllers/adminpanel/galleries_controller.rb +0 -75
  175. data/app/controllers/adminpanel/rols_controller.rb +0 -10
  176. data/app/models/adminpanel/gallery.rb +0 -82
  177. data/app/uploaders/adminpanel/gallery_uploader.rb +0 -56
  178. data/app/views/adminpanel/galleries/_galleries_table.html.erb +0 -15
  179. data/app/views/adminpanel/galleries/create.html.erb +0 -2
  180. data/app/views/adminpanel/galleries/index.html.erb +0 -52
  181. data/app/views/adminpanel/galleries/move_better.js.erb +0 -1
  182. data/app/views/adminpanel/galleries/move_worst.js.erb +0 -1
  183. data/app/views/layouts/_side_menu.html.erb +0 -40
  184. data/app/views/shared/_create_remote_resource_button.html.erb +0 -23
  185. data/app/views/shared/_form_fields.html.erb +0 -63
  186. data/app/views/shared/_gallery_entries.html.erb +0 -11
  187. data/app/views/shared/_image_fields.html.erb +0 -3
  188. data/app/views/shared/_modal.html.erb +0 -8
  189. data/app/views/shared/_new_resource_button.html.erb +0 -17
  190. data/app/views/shared/_remote_form_fields.html.erb +0 -12
  191. data/app/views/shared/edit.html.erb +0 -29
  192. data/app/views/shared/gallery_entries.js.erb +0 -1
  193. data/app/views/shared/index.html.erb +0 -68
  194. data/app/views/shared/new.html.erb +0 -41
  195. data/app/views/shared/new.js.erb +0 -2
  196. data/app/views/shared/show.html.erb +0 -92
  197. data/test/dummy/README.rdoc +0 -261
  198. data/test/dummy/config/environments/development.rb +0 -29
  199. data/test/dummy/config/environments/production.rb +0 -80
  200. data/test/dummy/lib/assets/.gitkeep +0 -0
  201. data/test/dummy/script/rails +0 -6
  202. data/test/unit/gallery_unit_test.rb +0 -21
@@ -2,7 +2,7 @@ module Adminpanel
2
2
  module SitemapActions
3
3
  extend ActiveSupport::Concern
4
4
  included do
5
- before_filter :set_default_host, only:[:create, :update, :destroy]
5
+ before_action :set_default_host, only:[:create, :update, :destroy]
6
6
  end
7
7
 
8
8
  protected
@@ -0,0 +1,29 @@
1
+ module Adminpanel
2
+ module SortableActions
3
+ extend ActiveSupport::Concern
4
+
5
+ def move_to_better
6
+ resource = @model.find(params[:id])
7
+ resource.move_to_better_position
8
+ update_index_table
9
+
10
+ end
11
+
12
+ def move_to_worst
13
+ resource = @model.find(params[:id])
14
+ resource.move_to_worst_position
15
+ update_index_table
16
+ end
17
+
18
+ protected
19
+ def update_index_table
20
+ respond_to do |format|
21
+ format.js do
22
+ render 'adminpanel/shared/index_records', locals: {
23
+ collection: @model.all
24
+ }
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -3,19 +3,19 @@ module Adminpanel
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- before_filter :get_twitter_token, only:[:index, :create, :update, :destroy, :show, :twitter_publish]
6
+ before_action :get_twitter_token, only:[:index, :create, :update, :destroy, :show, :twitter_publish]
7
7
  end
8
8
 
9
9
  def twitter_publish
10
- resource.twitter_message = params[model_name][:twitter_message]
11
- if !@twitter_token.nil? && !@twitter_secret.nil? && resource.has_valid_tweet?
10
+ @resource_instance.twitter_message = params[model_name][:twitter_message]
11
+ if !@twitter_token.nil? && !@twitter_secret.nil? && @resource_instance.has_valid_tweet?
12
12
  client = get_twitter_token
13
- client.update(resource.twitter_message)
13
+ client.update(@resource_instance.twitter_message)
14
14
  flash[:success] = I18n.t('twitter.posted', user: @twitter_token.name)
15
15
  else
16
16
  flash[:error] = I18n.t('twitter.not-posted')
17
17
  end
18
- redirect_to resource
18
+ redirect_to @resource_instance
19
19
  end
20
20
 
21
21
  private
@@ -8,13 +8,26 @@ module Adminpanel
8
8
  alias_method :number_field_original, :number_field
9
9
  alias_method :email_field_original, :email_field
10
10
  alias_method :file_field_original, :file_field
11
- # alias_method :select_original, :select
12
11
 
13
- def text_field name, *args
12
+ def body(&block)
13
+ @template.content_tag :div, class: 'widget-body' do
14
+ @template.content_tag :div, class: 'widget-forms clearfix' do
15
+ yield
16
+ end
17
+ end
18
+ end
19
+
20
+ def footer(&block)
21
+ @template.content_tag :div, class: 'widget-footer' do
22
+ yield
23
+ end
24
+ end
25
+
26
+ def text_field(name, *args)
14
27
  base_layout name, *args, 'text_field_original'
15
28
  end
16
29
 
17
- def file_field name, *args
30
+ def file_field(name, *args)
18
31
  image_input = base_layout(name, *args, 'file_field_original')
19
32
 
20
33
  if !object.nil? && !object.new_record? #if not new record
@@ -24,11 +37,21 @@ module Adminpanel
24
37
  end
25
38
  end
26
39
 
27
- def gallery_field name, *args
40
+ def non_image_file_field(name, *args)
41
+ file_input = base_layout(name, *args, 'file_field_original')
42
+
43
+ if !object.nil? && !object.new_record? #if not new record
44
+ "#{title_layout(name)}#{file_input}".html_safe
45
+ else
46
+ file_input
47
+ end
48
+ end
49
+
50
+ def gallery_field(name, *args)
28
51
  base_layout name, *args, 'gallery_base'
29
52
  end
30
53
 
31
- def wysiwyg_field name, *args
54
+ def wysiwyg_field(name, *args)
32
55
 
33
56
  options = args.extract_options!
34
57
  options.reverse_merge! class: 'wysihtml5 span7'
@@ -36,7 +59,7 @@ module Adminpanel
36
59
  base_layout name, options, 'text_area_original'
37
60
  end
38
61
 
39
- def text_area name, *args
62
+ def text_area(name, *args)
40
63
  base_layout name, *args, 'text_area_original'
41
64
  end
42
65
 
@@ -55,7 +78,7 @@ module Adminpanel
55
78
  # end
56
79
  # end
57
80
 
58
- def checkbox checkbox_object, form_object_name, relationship
81
+ def checkbox(checkbox_object, form_object_name, relationship)
59
82
  @template.content_tag(
60
83
  :label,
61
84
  @template.check_box_tag(
@@ -63,19 +86,25 @@ module Adminpanel
63
86
  checkbox_object.id,
64
87
  self.object.send(relationship).include?(checkbox_object.id)
65
88
  ) + checkbox_object.name,
66
- :class => "checkbox"
89
+ class: "checkbox"
67
90
  )
68
91
  end
69
92
 
70
- def boolean name, *args
93
+ def boolean(name, *args)
71
94
  base_layout name, *args, 'boolean_base'
72
95
  end
73
96
 
74
- def enum_field name, *args
75
- select name, self.object.class.actions.map{|action, value| [I18n.t("#{self.object.class.name.demodulize.downcase}.#{action}"), action]}, *args
97
+ def enum_field(name, *args)
98
+ select(
99
+ name,
100
+ self.object.class.send(name.pluralize).map{|option, value|
101
+ [I18n.t("#{self.object.class.name.demodulize.downcase}.#{option}"), option]
102
+ },
103
+ *args
104
+ )
76
105
  end
77
106
 
78
- def resource_select name, *args
107
+ def resource_select(name, *args)
79
108
  select name, Adminpanel.displayable_resources.map{|resource| [symbol_class(resource).display_name, resource.to_s]}, *args
80
109
  # select name, Adminpanel.displayable_resources.map{|resource| ['resource', 'resource']}, *args
81
110
 
@@ -86,11 +115,11 @@ module Adminpanel
86
115
  label = options['label']
87
116
  options.delete('label')
88
117
 
89
- options.reverse_merge! :class => 'span7', :include_blank => '(Seleccione por favor)';
118
+ options.reverse_merge! class: 'span7', include_blank: '(Seleccione por favor)';
90
119
 
91
- @template.content_tag :div, :class => "control-group" do
92
- @template.content_tag(:label, label, :class => "control-label") +
93
- @template.content_tag(:div, super(name, select_options, options), :class => "controls")
120
+ @template.content_tag :div, class: "control-group" do
121
+ @template.content_tag(:label, label, class: "control-label") +
122
+ @template.content_tag(:div, super(name, select_options, options), class: "controls")
94
123
  end
95
124
  end
96
125
 
@@ -109,7 +138,12 @@ module Adminpanel
109
138
  def submit(name, *args)
110
139
  options = args.extract_options!
111
140
 
112
- options.reverse_merge! :class => "btn btn-primary"
141
+ options.reverse_merge!(
142
+ class: 'btn btn-primary',
143
+ data: {
144
+ disable_with: I18n.t('action.submitting')
145
+ }
146
+ )
113
147
  super(name, *args << options)
114
148
  end
115
149
 
@@ -170,67 +204,73 @@ module Adminpanel
170
204
  # )
171
205
  # end
172
206
  # end
173
-
174
207
  private
175
208
 
176
- def base_layout(name, *args, input_type)
177
- options = args.extract_options!
178
- options.reverse_merge! class: 'span7'
179
- label = options['label']
180
- options.delete('label')
209
+ def base_layout(name, *args, input_type)
210
+ options = args.extract_options!
211
+ options.reverse_merge! class: 'span7'
212
+ label = options['label']
213
+ options.delete('label')
181
214
 
182
- @template.content_tag :div, :class => 'control-group' do
183
- @template.content_tag(:label, label, :class => 'control-label') +
184
- @template.content_tag(:div, :class => 'controls') do
185
- self.send(input_type, name, options)
215
+ @template.content_tag :div, class: 'control-group' do
216
+ @template.content_tag(:label, label, class: 'control-label') +
217
+ @template.content_tag(:div, class: 'controls') do
218
+ self.send(input_type, name, options)
219
+ end
186
220
  end
187
221
  end
188
- end
189
222
 
190
- def datepickerize_base(name, options)
191
- options.reverse_merge! 'value' => Time.now.strftime("%d-%m-%Y")
192
- @template.content_tag(
193
- :div,
194
- class: 'input-append date datepicker datepicker-basic',
195
- data: {
196
- date_format: 'dd-mm-yyyy',
197
- date: options['value']
198
- }
199
- ) do
200
- text_field_original(name, options) +
201
- (
202
- @template.content_tag :span, class: 'add-on' do
203
- @template.content_tag :i, nil, class: 'fa fa-th'
204
- end
205
- )
223
+ def datepickerize_base(name, options)
224
+ options.reverse_merge! 'value' => Time.now.strftime("%d-%m-%Y")
225
+ @template.content_tag(
226
+ :div,
227
+ class: 'input-append date datepicker datepicker-basic',
228
+ data: {
229
+ date_format: 'dd-mm-yyyy',
230
+ date: options['value']
231
+ }
232
+ ) do
233
+ text_field_original(name, options) +
234
+ (
235
+ @template.content_tag :span, class: 'add-on' do
236
+ @template.content_tag :i, nil, class: 'fa fa-th'
237
+ end
238
+ )
239
+ end
206
240
  end
207
- end
208
241
 
209
- def boolean_base(name, options)
210
- @template.content_tag :label, class: 'checkbox' do
211
- check_box(name)
242
+ def boolean_base(name, options)
243
+ @template.content_tag :label, class: 'checkbox' do
244
+ check_box(name)
245
+ end
212
246
  end
213
- end
214
247
 
215
- def gallery_base(name, options)
216
- file_field_input = file_field_original(name, options)
217
- hidden_input = hidden_field(:_destroy)
218
- delete_button = @template.content_tag(:button, I18n.t("action.delete"), :class => "btn btn-danger remove_fields")
248
+ def gallery_base(name, options)
249
+ file_field_input = file_field_original(name, options)
250
+ hidden_input = hidden_field(:_destroy)
251
+ delete_button = @template.content_tag(:button, I18n.t("action.delete"), class: "btn btn-danger remove-fields")
219
252
 
220
- if object.nil? || object.new_record?
221
- "#{file_field_input}#{hidden_input}#{delete_button}".html_safe
222
- else
223
- "#{thumbnail_layout(name)}#{file_field_input}#{hidden_input}#{delete_button}".html_safe
253
+ if object.nil? || object.new_record?
254
+ "#{file_field_input}#{hidden_input}#{delete_button}".html_safe
255
+ else
256
+ "#{thumbnail_layout(name)}#{file_field_input}#{hidden_input}#{delete_button}".html_safe
257
+ end
224
258
  end
225
- end
226
259
 
227
- def thumbnail_layout(attribute)
228
- @template.content_tag :div, :class => 'control-group' do
229
- @template.content_tag :div, :class => 'controls' do
230
- @template.image_tag self.object.send("#{attribute}_url", :thumb)
260
+ def thumbnail_layout(attribute)
261
+ @template.content_tag :div, class: 'control-group' do
262
+ @template.content_tag :div, class: 'controls' do
263
+ @template.image_tag self.object.send("#{attribute}_url", :thumb)
264
+ end
231
265
  end
232
266
  end
233
- end
234
267
 
235
- end
268
+ def title_layout(attribute)
269
+ @template.content_tag :div, class: 'control-group' do
270
+ @template.content_tag :div, class: 'controls' do
271
+ @template.content_tag(:i, I18n.t('adminpanel.form.server_file', file: self.object["#{attribute}"]))
272
+ end
273
+ end
274
+ end
275
+ end
236
276
  end
@@ -6,7 +6,7 @@ module Adminpanel
6
6
 
7
7
  def adminpanel_form_for(name, *args, &block)
8
8
  options = args.extract_options!
9
- options.reverse_merge! :builder => Adminpanel::AdminpanelFormBuilder, :html => { :class => "form-horizontal" }
9
+ options.reverse_merge! builder: Adminpanel::AdminpanelFormBuilder, html: { class: "form-horizontal" }
10
10
 
11
11
  form_for(name, *(args << options), &block)
12
12
  end
@@ -23,17 +23,28 @@ module Adminpanel
23
23
  def is_current_section?(display_name)
24
24
  display_name == params[:controller].classify.constantize.display_name ? 'active' : nil
25
25
  end
26
-
27
- def link_to_add_fields(name, f, association)
26
+
27
+ def link_to_add_fields(name, f, association, hidden='not-hidden')
28
28
  new_object = f.object.send(association).klass.new
29
29
  id = new_object.object_id
30
- fields = f.fields_for(association, new_object, :child_index => id) do |builder|
31
- render("shared/image_fields", :f => builder)
30
+ fields = f.fields_for(association, new_object, child_index: id) do |builder|
31
+ render('adminpanel/shared/image_fields', f: builder)
32
+ end
33
+ add_another_image_button = content_tag(:div, id: 'new-image-button') do
34
+ content_tag(:button, class: 'btn btn-success btn-mini') do
35
+ content_tag(:h6, name)
36
+ end
32
37
  end
33
- link_to(content_tag(:div, content_tag(:button,
34
- content_tag(:h6, name, :id => "add-image-button"),
35
- :class => "btn btn-success btn-mini"), :class => "mws-form-row"),
36
- '#', :class => "add_fields", :data => {:id => id, :fields => fields.gsub("\n", "")})
38
+ link_to(
39
+ add_another_image_button,
40
+ '#',
41
+ class: "add-fields #{hidden}",
42
+ id: 'add-image-link',
43
+ data: {
44
+ id: id,
45
+ fields: fields.gsub("\n", "")
46
+ }
47
+ )
37
48
  end
38
49
 
39
50
  def route_symbol(model_name)
@@ -6,12 +6,12 @@ module Adminpanel
6
6
  end
7
7
 
8
8
  def render_breadcrumb(divider)
9
- render partial: 'shared/breadcrumb', locals: { nav: initialize_breadcrumb, divider: divider }
9
+ render partial: 'adminpanel/shared/breadcrumb', locals: { nav: initialize_breadcrumb, divider: divider }
10
10
  end
11
11
 
12
12
  private
13
13
  def initialize_breadcrumb
14
- @breadcrumb ||= [{ title: 'Inicio', url: adminpanel.root_url }, ]
14
+ @breadcrumb ||= [{ title: I18n.t('breadcrumb.index'), url: adminpanel.root_url }, ]
15
15
  end
16
16
 
17
17
  end
@@ -16,6 +16,10 @@ module Adminpanel
16
16
  resource_class(resource).twitter_share?
17
17
  end
18
18
 
19
+ def is_sortable?(resource)
20
+ resource_class(resource).is_sortable?
21
+ end
22
+
19
23
  def member_routes(resource)
20
24
  resource_class(resource).member_routes
21
25
  end
@@ -33,9 +37,9 @@ module Adminpanel
33
37
  }
34
38
  }
35
39
  end
36
- private
37
- def resource_class(resource)
38
- "adminpanel/#{resource.to_s.singularize}".classify.constantize
39
- end
40
+ private
41
+ def resource_class(resource)
42
+ "adminpanel/#{resource.to_s.singularize}".classify.constantize
43
+ end
40
44
  end
41
45
  end
@@ -1,14 +1,15 @@
1
1
  module Adminpanel
2
2
  module SharedPagesHelper
3
- def belong_to_object_name(resource, belong_to_assoc_name)
4
- @model.reflect_on_all_associations.each do |association|
5
- if association.name.to_s == belong_to_assoc_name.to_s
6
- if !resource.send(association.name.to_s).nil? #if there's something in the association
7
- return resource.send(association.name).name
8
- else
9
- return "N/A #{association.klass.to_s}"
10
- end
11
- end
3
+ ### Searches for current controller's Class (@model) associaciations
4
+ # and execute the association method on the model, It's going
5
+ # to return 'name' of the related object if it exists.
6
+ # E.x. Given a Prodcuct that belongs_to category, this method
7
+ # is going to search for a relationship named 'category'
8
+ def belong_to_object_name(resource, belongs_to_assoc_name)
9
+ if !resource.send(belongs_to_assoc_name).nil? #if there's something in the association
10
+ return resource.send(belongs_to_assoc_name).name
11
+ else
12
+ return "#{belongs_to_assoc_name} N/A"
12
13
  end
13
14
  end
14
15
 
@@ -30,9 +31,9 @@ module Adminpanel
30
31
 
31
32
  def active_tab(index)
32
33
  if index == 0
33
- return "active"
34
+ return 'active'
34
35
  else
35
- return ""
36
+ return ''
36
37
  end
37
38
  end
38
39
 
@@ -49,5 +50,52 @@ module Adminpanel
49
50
  ).url_for_oauth_code
50
51
  end
51
52
 
53
+ def field_value properties, attribute, object
54
+ case properties['type']
55
+ when 'belongs_to'
56
+ belong_to_object_name(object, attribute.split('_id').first)
57
+ when 'has_many'
58
+ li_tags = ""
59
+ content_tag :ul do
60
+ object.send("#{pluralize_model(properties['model'])}").each do |member|
61
+ li_tags << content_tag(:li, class: 'priority-low') do
62
+ member.name
63
+ end
64
+ end
65
+ li_tags.html_safe
66
+ end
67
+ when 'file_field'
68
+ content_tag :ul do
69
+ image_tag(object.send("#{attribute}_url", :thumb))
70
+ end
71
+ when 'boolean'
72
+ if object.send(attribute)
73
+ I18n.t('action.is_true')
74
+ else
75
+ I18n.t('action.is_false')
76
+ end
77
+ when 'enum_field'
78
+ I18n.t("#{object.class.name.demodulize.downcase}.#{object.send(attribute)}")
79
+ else
80
+ object.send(attribute)
81
+ end
82
+ end
83
+
84
+ def is_customized_field?(field_name)
85
+ field_name = field_name.to_sym
86
+ return (field_name == :adminpanel_file_field ||
87
+ field_name == :belongs_to ||
88
+ field_name == :file_field ||
89
+ field_name == :non_image_file_field ||
90
+ field_name == :has_many)
91
+ end
92
+
93
+ def table_type(model)
94
+ if model.is_sortable?
95
+ ''
96
+ else
97
+ 'information-table'
98
+ end
99
+ end
52
100
  end
53
101
  end