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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -5
- data/CONTRIBUTING.md +22 -0
- data/Gemfile +1 -6
- data/README.md +8 -13
- data/Rakefile +4 -6
- data/adminpanel.gemspec +29 -24
- data/app/assets/javascripts/{application-admin.js → adminpanel/application.js} +2 -1
- data/app/assets/javascripts/adminpanel/images_form_add_remove_fields.js.coffee +11 -0
- data/app/assets/javascripts/adminpanel/sections.js.coffee +9 -0
- data/app/assets/javascripts/adminpanel/spinner.js.coffee +3 -3
- data/app/assets/javascripts/adminpanel/tables.js +4 -3
- data/app/assets/javascripts/adminpanel/wysiwyg.js.coffee +4 -1
- data/app/assets/stylesheets/{application-admin.css → adminpanel/application.css} +2 -2
- data/app/assets/stylesheets/adminpanel/fa-hidden.css.scss +7 -0
- data/app/assets/stylesheets/adminpanel/theme.css.scss.erb +3 -27
- data/app/assets/stylesheets/adminpanel/turbolinks_progress_load.css.scss +5 -0
- data/app/controllers/adminpanel/analytics_controller.rb +3 -3
- data/app/controllers/adminpanel/application_controller.rb +5 -11
- data/app/controllers/adminpanel/auths_controller.rb +6 -0
- data/app/controllers/adminpanel/categories_controller.rb +26 -60
- data/app/controllers/adminpanel/permissions_controller.rb +1 -2
- data/app/controllers/adminpanel/roles_controller.rb +10 -0
- data/app/controllers/adminpanel/sections_controller.rb +14 -14
- data/app/controllers/adminpanel/sessions_controller.rb +4 -3
- data/app/controllers/adminpanel/users_controller.rb +2 -2
- data/app/controllers/concerns/adminpanel/analytics/twitter_analytics.rb +1 -1
- data/app/controllers/concerns/adminpanel/facebook_actions.rb +13 -12
- data/app/controllers/concerns/adminpanel/galleryzable_actions.rb +13 -9
- data/app/controllers/concerns/adminpanel/rest_actions.rb +65 -59
- data/app/controllers/concerns/adminpanel/sitemap_actions.rb +1 -1
- data/app/controllers/concerns/adminpanel/sortable_actions.rb +29 -0
- data/app/controllers/concerns/adminpanel/twitter_actions.rb +5 -5
- data/app/helpers/adminpanel/adminpanel_form_builder.rb +104 -64
- data/app/helpers/adminpanel/application_helper.rb +20 -9
- data/app/helpers/adminpanel/breadcrumbs_helper.rb +2 -2
- data/app/helpers/adminpanel/router_helper.rb +8 -4
- data/app/helpers/adminpanel/shared_pages_helper.rb +59 -11
- data/app/models/ability.rb +2 -2
- data/app/models/adminpanel/analytic.rb +3 -3
- data/app/models/adminpanel/permission.rb +19 -19
- data/app/models/adminpanel/{rol.rb → role.rb} +9 -2
- data/app/models/adminpanel/section.rb +10 -6
- data/app/models/adminpanel/{image.rb → sectionfile.rb} +1 -1
- data/app/models/adminpanel/user.rb +27 -31
- data/app/models/concerns/adminpanel/base.rb +33 -19
- data/app/models/concerns/adminpanel/galleryzation.rb +18 -5
- data/app/models/concerns/adminpanel/sitemap.rb +1 -1
- data/app/models/concerns/adminpanel/sortable.rb +69 -0
- data/app/uploaders/adminpanel/.keep +1 -0
- data/app/views/adminpanel/analytics/_fb_statistic_widget.html.erb +27 -27
- data/app/views/adminpanel/categories/_categories_table.html.erb +4 -4
- data/app/views/adminpanel/categories/_category_form.html.erb +26 -6
- data/app/views/adminpanel/categories/create.js.erb +4 -5
- data/app/views/adminpanel/categories/index.html.erb +23 -16
- data/app/views/adminpanel/categories/new.js.erb +1 -1
- data/app/views/adminpanel/form/_adminpanel_file_field.html.erb +24 -0
- data/app/views/adminpanel/form/_belongs_to.html.erb +24 -0
- data/app/views/adminpanel/form/_file_field.html.erb +4 -0
- data/app/views/adminpanel/form/_has_many.html.erb +19 -0
- data/app/views/adminpanel/form/_non_image_file_field.html.erb +4 -0
- data/app/views/{shared/_delete_icon_button.html.erb → adminpanel/icons/_delete.html.erb} +3 -1
- data/app/views/{shared/_edit_icon_button.html.erb → adminpanel/icons/_edit.html.erb} +3 -3
- data/app/views/{shared/_fb_icon_button.html.erb → adminpanel/icons/_facebook.html.erb} +6 -5
- data/app/views/adminpanel/icons/_move_to_better.html.erb +16 -0
- data/app/views/adminpanel/icons/_move_to_worst.html.erb +17 -0
- data/app/views/{shared/_show_icon_button.html.erb → adminpanel/icons/_show.html.erb} +1 -1
- data/app/views/{shared/_twitter_icon_button.html.erb → adminpanel/icons/_twitter.html.erb} +1 -1
- data/app/views/adminpanel/sections/_sections_table.html.erb +1 -1
- data/app/views/adminpanel/sections/edit.html.erb +25 -17
- data/app/views/adminpanel/sections/index.html.erb +1 -1
- data/app/views/adminpanel/sections/show.html.erb +2 -2
- data/app/views/{shared → adminpanel/shared}/_breadcrumb.html.erb +0 -0
- data/app/views/adminpanel/shared/_create_remote_resource_button.html.erb +21 -0
- data/app/views/{shared → adminpanel/shared}/_error_messages.html.erb +0 -0
- data/app/views/{shared → adminpanel/shared}/_fb_publish_modal.html.erb +2 -2
- data/app/views/adminpanel/shared/_form_fields.html.erb +21 -0
- data/app/views/adminpanel/shared/_gallery_entries.html.erb +11 -0
- data/app/views/adminpanel/shared/_image_fields.html.erb +3 -0
- data/app/views/adminpanel/shared/_index_records.html.erb +32 -0
- data/app/views/adminpanel/shared/_modal.html.erb +20 -0
- data/app/views/adminpanel/shared/_new_resource_button.html.erb +17 -0
- data/app/views/adminpanel/shared/_remote_form_fields.html.erb +28 -0
- data/app/views/{shared → adminpanel/shared}/_twitter_publish_modal.html.erb +0 -0
- data/app/views/{shared → adminpanel/shared}/create_belongs_to.js.erb +0 -0
- data/app/views/{shared → adminpanel/shared}/create_has_many.js.erb +0 -0
- data/app/views/adminpanel/shared/edit.html.erb +42 -0
- data/app/views/{shared → adminpanel/shared}/fb_choose_page.html.erb +2 -2
- data/app/views/adminpanel/shared/gallery_entries.js.erb +1 -0
- data/app/views/adminpanel/shared/index.html.erb +43 -0
- data/app/views/adminpanel/shared/index_records.js.erb +1 -0
- data/app/views/adminpanel/shared/new.html.erb +42 -0
- data/app/views/adminpanel/shared/new.js.erb +2 -0
- data/app/views/adminpanel/shared/show.html.erb +77 -0
- data/app/views/layouts/{_shim.html.erb → adminpanel/_shim.html.erb} +0 -0
- data/app/views/layouts/adminpanel/_side_menu.html.erb +32 -0
- data/app/views/layouts/{_top_bar.html.erb → adminpanel/_top_bar.html.erb} +4 -2
- data/app/views/layouts/{admin-login.html.erb → adminpanel/application-login.html.erb} +4 -4
- data/app/views/layouts/{admin.html.erb → adminpanel/application.html.erb} +8 -6
- data/config/initializers/adminpanel/clear_cache.rb +4 -0
- data/config/initializers/{pluralization_es.rb → adminpanel/pluralization_es.rb} +0 -0
- data/config/initializers/{twitter-oauth.rb → adminpanel/twitter_oauth.rb} +0 -0
- data/config/locales/en.yml +93 -59
- data/config/locales/es.yml +34 -14
- data/config/routes.rb +27 -24
- data/lib/adminpanel.rb +3 -1
- data/lib/adminpanel/engine.rb +6 -3
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/contact/contact_generator.rb +12 -0
- data/{app/models/contact.rb → lib/generators/adminpanel/contact/templates/contact_template.rb} +0 -0
- data/lib/generators/adminpanel/dump/dump_generator.rb +37 -0
- data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +7 -0
- data/lib/generators/adminpanel/gallery/templates/uploader.rb +7 -9
- data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +2 -2
- data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +23 -34
- data/lib/generators/adminpanel/initialize/templates/section_uploader.rb +6 -8
- data/lib/generators/adminpanel/resource/resource_generator.rb +3 -2
- data/lib/generators/adminpanel/resource/resource_generator_helper.rb +6 -8
- data/lib/generators/adminpanel/resource/templates/adminpanel_controller_template.rb +1 -1
- data/lib/generators/adminpanel/resource/templates/adminpanel_resource_template.rb +2 -2
- data/lib/tasks/adminpanel/adminpanel.rake +11 -24
- data/lib/tasks/adminpanel/sections.rake +65 -0
- data/test/dummy/app/controllers/adminpanel/file_resources_controller.rb +12 -0
- data/test/dummy/app/controllers/adminpanel/galleries_controller.rb +4 -0
- data/test/dummy/app/controllers/adminpanel/products_controller.rb +5 -5
- data/test/dummy/app/models/adminpanel/category.rb +2 -0
- data/test/dummy/app/models/adminpanel/file_resource.rb +34 -0
- data/test/dummy/app/models/adminpanel/file_resourcefile.rb +13 -0
- data/test/dummy/app/models/adminpanel/gallery.rb +32 -0
- data/test/dummy/app/models/adminpanel/galleryfile.rb +19 -0
- data/test/dummy/app/models/adminpanel/mug.rb +14 -14
- data/test/dummy/app/models/adminpanel/photo.rb +1 -0
- data/test/dummy/app/models/adminpanel/product.rb +7 -7
- data/test/dummy/app/models/adminpanel/test_object.rb +53 -0
- data/test/dummy/app/uploader/adminpanel/file_resourcefile_uploader.rb +82 -0
- data/test/dummy/app/uploader/adminpanel/photo_uploader.rb +5 -9
- data/test/dummy/app/uploader/adminpanel/section_uploader.rb +5 -9
- data/test/dummy/config/application.rb +3 -30
- data/test/dummy/config/carrierwave.rb +1 -1
- data/test/dummy/config/environments/test.rb +10 -4
- data/test/dummy/config/initializers/adminpanel_setup.rb +5 -2
- data/test/dummy/db/schema.rb +65 -34
- data/test/dummy/test/fixtures/adminpanel/categories.yml +7 -0
- data/test/dummy/test/fixtures/adminpanel/galleryfiles.yml +18 -0
- data/test/dummy/test/fixtures/adminpanel/permissions.yml +7 -7
- data/test/dummy/test/fixtures/adminpanel/products.yml +7 -0
- data/test/dummy/test/fixtures/adminpanel/{rols.yml → roles.yml} +0 -0
- data/test/dummy/test/fixtures/adminpanel/test_objects.yml +7 -0
- data/test/dummy/test/fixtures/adminpanel/users.yml +7 -7
- data/test/dummy/test/fixtures/dog fries.png +0 -0
- data/test/features/categories/categories_index_test.rb +31 -0
- data/test/features/shared/concerns/galleryzable_test.rb +22 -0
- data/test/features/shared/concerns/sortable_test.rb +26 -0
- data/test/features/shared/form/has_many_through_non_category_modal_test.rb +1 -1
- data/test/features/shared/form/remote_resource_modal_test.rb +41 -0
- data/test/features/shared/resource/edit_test.rb +7 -6
- data/test/features/shared/resource/new_test.rb +3 -2
- data/test/features/shared/ui/max_images_gallery_test.rb +52 -0
- data/test/generators/contact_generator_test.rb +20 -0
- data/test/generators/dump_generator_test.rb +51 -0
- data/test/generators/resource_generator_test.rb +46 -1
- data/test/helpers/breadcrumbs_helper_test.rb +3 -4
- data/test/helpers/router_helper_test.rb +1 -1
- data/test/helpers/shared_pages_helper_test.rb +120 -0
- data/test/models/adminpanel/gallery_test.rb +16 -23
- data/test/models/adminpanel/user_test.rb +1 -1
- data/test/support/view_case.rb +18 -19
- data/test/tasks/adminpanel_rake_test.rb +5 -3
- data/test/test_helper.rb +2 -5
- metadata +204 -150
- data/.rspec +0 -2
- data/app/assets/javascripts/adminpanel/images_form.js +0 -23
- data/app/assets/javascripts/adminpanel/imagesloaded.js +0 -16
- data/app/controllers/adminpanel/galleries_controller.rb +0 -75
- data/app/controllers/adminpanel/rols_controller.rb +0 -10
- data/app/models/adminpanel/gallery.rb +0 -82
- data/app/uploaders/adminpanel/gallery_uploader.rb +0 -56
- data/app/views/adminpanel/galleries/_galleries_table.html.erb +0 -15
- data/app/views/adminpanel/galleries/create.html.erb +0 -2
- data/app/views/adminpanel/galleries/index.html.erb +0 -52
- data/app/views/adminpanel/galleries/move_better.js.erb +0 -1
- data/app/views/adminpanel/galleries/move_worst.js.erb +0 -1
- data/app/views/layouts/_side_menu.html.erb +0 -40
- data/app/views/shared/_create_remote_resource_button.html.erb +0 -23
- data/app/views/shared/_form_fields.html.erb +0 -63
- data/app/views/shared/_gallery_entries.html.erb +0 -11
- data/app/views/shared/_image_fields.html.erb +0 -3
- data/app/views/shared/_modal.html.erb +0 -8
- data/app/views/shared/_new_resource_button.html.erb +0 -17
- data/app/views/shared/_remote_form_fields.html.erb +0 -12
- data/app/views/shared/edit.html.erb +0 -29
- data/app/views/shared/gallery_entries.js.erb +0 -1
- data/app/views/shared/index.html.erb +0 -68
- data/app/views/shared/new.html.erb +0 -41
- data/app/views/shared/new.js.erb +0 -2
- data/app/views/shared/show.html.erb +0 -92
- data/test/dummy/README.rdoc +0 -261
- data/test/dummy/config/environments/development.rb +0 -29
- data/test/dummy/config/environments/production.rb +0 -80
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/script/rails +0 -6
- data/test/unit/gallery_unit_test.rb +0 -21
|
@@ -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
|
-
|
|
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
|
-
|
|
11
|
-
if !@twitter_token.nil? && !@twitter_secret.nil? &&
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
:
|
|
89
|
+
class: "checkbox"
|
|
67
90
|
)
|
|
68
91
|
end
|
|
69
92
|
|
|
70
|
-
def boolean
|
|
93
|
+
def boolean(name, *args)
|
|
71
94
|
base_layout name, *args, 'boolean_base'
|
|
72
95
|
end
|
|
73
96
|
|
|
74
|
-
def enum_field
|
|
75
|
-
select
|
|
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
|
|
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! :
|
|
118
|
+
options.reverse_merge! class: 'span7', include_blank: '(Seleccione por favor)';
|
|
90
119
|
|
|
91
|
-
@template.content_tag :div, :
|
|
92
|
-
@template.content_tag(:label, label, :
|
|
93
|
-
@template.content_tag(:div, super(name, select_options, options), :
|
|
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!
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
|
|
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! :
|
|
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, :
|
|
31
|
-
render(
|
|
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(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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: '
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
|
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
|