rademade_admin 0.1.3 → 0.1.4
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/app/assets/javascripts/rademade_admin/app/common/location.coffee.erb +5 -1
- data/app/assets/javascripts/rademade_admin/app/common/status-toggler.coffee +25 -0
- data/app/assets/javascripts/rademade_admin/app/common/turboform.coffee +8 -0
- data/app/assets/javascripts/rademade_admin/app/form-popup/view.coffee +3 -3
- data/app/assets/javascripts/rademade_admin/app/gallery/image/collection-view.coffee +35 -0
- data/app/assets/javascripts/rademade_admin/app/gallery/image/collection.coffee +19 -0
- data/app/assets/javascripts/rademade_admin/app/gallery/image/model.coffee +25 -0
- data/app/assets/javascripts/rademade_admin/app/gallery/image/view.coffee +58 -0
- data/app/assets/javascripts/rademade_admin/app/gallery/view.coffee +40 -0
- data/app/assets/javascripts/rademade_admin/app/select2/related/view.coffee +1 -1
- data/app/assets/javascripts/rademade_admin/app/select2/view.coffee +11 -2
- data/app/assets/javascripts/rademade_admin/app/templates/crop.jst.ejs +2 -2
- data/app/assets/javascripts/rademade_admin/app/templates/related-item.jst.ejs +2 -2
- data/app/assets/javascripts/rademade_admin/form/form.coffee +4 -1
- data/app/assets/stylesheets/rademade_admin.sass.erb +2 -1
- data/app/assets/stylesheets/rademade_admin/blocks/form/input.sass +56 -27
- data/app/assets/stylesheets/rademade_admin/blocks/gallery/_main.sass +67 -0
- data/app/assets/stylesheets/rademade_admin/modules/pagination/main.sass +19 -2
- data/app/cells/menu/item.slim +2 -0
- data/app/cells/menu_cell.rb +8 -2
- data/app/controllers/rademade_admin/abstract_controller.rb +6 -2
- data/app/controllers/rademade_admin/dashboard_controller.rb +1 -1
- data/app/controllers/rademade_admin/file_controller.rb +14 -5
- data/app/controllers/rademade_admin/gallery_controller.rb +48 -0
- data/app/controllers/rademade_admin/model_controller.rb +37 -29
- data/app/controllers/rademade_admin/sessions_controller.rb +7 -6
- data/app/controllers/rademade_admin/status_controller.rb +16 -0
- data/app/helpers/rademade_admin/field_helper.rb +3 -4
- data/app/helpers/rademade_admin/form_helper.rb +35 -25
- data/app/helpers/rademade_admin/uri_helper.rb +6 -14
- data/app/inputs/rademade_admin/file_input.rb +24 -8
- data/app/inputs/rademade_admin/gallery_input.rb +77 -0
- data/app/inputs/rademade_admin/related_select_input.rb +13 -4
- data/app/serializers/autocomplete/base_serializer.rb +1 -1
- data/app/services/gallery/manager.rb +81 -0
- data/app/services/login.rb +3 -3
- data/app/services/menu_service.rb +1 -1
- data/app/services/menu_service/menu_item.rb +4 -0
- data/app/services/model_controller/model_options.rb +1 -0
- data/app/services/model_controller/notifier.rb +24 -10
- data/app/services/search/conditions/autocomplete.rb +4 -11
- data/app/services/search/conditions/list.rb +22 -10
- data/app/services/search/conditions/related_list.rb +8 -4
- data/app/services/search/where.rb +20 -0
- data/app/services/sortable_service.rb +1 -4
- data/app/services/status/toggler.rb +27 -0
- data/app/services/template_service.rb +33 -1
- data/app/services/upload/gallery_preview_service.rb +64 -0
- data/app/views/layouts/rademade_admin.html.erb +1 -22
- data/app/views/rademade_admin/_blocks/_form.html.erb +10 -0
- data/app/views/rademade_admin/_blocks/_header.html.erb +0 -12
- data/app/views/rademade_admin/_blocks/_search.html.erb +11 -0
- data/app/views/rademade_admin/_blocks/_sort_reset.html.erb +5 -0
- data/app/views/rademade_admin/_blocks/button/_cancel.html.erb +7 -0
- data/app/views/rademade_admin/_blocks/button/_destroy.html.erb +12 -0
- data/app/views/rademade_admin/_blocks/button/_edit.html.erb +4 -2
- data/app/views/rademade_admin/_blocks/button/_hide.html.erb +13 -0
- data/app/views/rademade_admin/_blocks/button/_preview.html.erb +3 -0
- data/app/views/rademade_admin/_blocks/form/_control.html.erb +9 -3
- data/app/views/rademade_admin/_blocks/form/_separator.html.erb +1 -0
- data/app/views/rademade_admin/_blocks/table/_head.html.erb +8 -2
- data/app/views/rademade_admin/_layouts/inner/index_table.html.erb +1 -3
- data/app/views/rademade_admin/_layouts/main.html.erb +26 -0
- data/app/views/rademade_admin/abstract/_form.html.erb +1 -7
- data/app/views/rademade_admin/abstract/index.html.erb +7 -13
- data/config/locales/rademade_admin.en.yml +16 -1
- data/config/locales/rademade_admin.ru.yml +22 -2
- data/config/routes.rb +9 -1
- data/lib/rademade_admin.rb +5 -0
- data/lib/rademade_admin/configuration.rb +6 -1
- data/lib/rademade_admin/engine.rb +4 -0
- data/lib/rademade_admin/gallery.rb +13 -0
- data/lib/rademade_admin/hideable.rb +37 -0
- data/lib/rademade_admin/input/related_select_input/related_list.rb +2 -2
- data/lib/rademade_admin/model/adapter/data.rb +8 -0
- data/lib/rademade_admin/model/adapter/data/active_record.rb +12 -2
- data/lib/rademade_admin/model/adapter/data/mongoid.rb +10 -8
- data/lib/rademade_admin/model/adapter/query/active_record.rb +8 -3
- data/lib/rademade_admin/model/configuration.rb +10 -8
- data/lib/rademade_admin/model/info.rb +13 -2
- data/lib/rademade_admin/model/info/data_item.rb +8 -3
- data/lib/rademade_admin/model/info/fields.rb +12 -2
- data/lib/rademade_admin/model/info/relation.rb +5 -0
- data/lib/rademade_admin/model/info/relation/gallery.rb +12 -0
- data/lib/rademade_admin/model/reflection.rb +4 -0
- data/lib/rademade_admin/routing/mapper.rb +1 -1
- data/lib/rademade_admin/routing/resource.rb +4 -0
- data/lib/rademade_admin/uploader/crop_photo.rb +3 -2
- data/lib/rademade_admin/version.rb +1 -1
- metadata +83 -8
|
@@ -20,7 +20,7 @@ module RademadeAdmin::FieldHelper
|
|
|
20
20
|
elsif data_item.has_uploader?
|
|
21
21
|
RademadeAdmin::Upload::PreviewService.new(value).uploaded_file_html
|
|
22
22
|
else
|
|
23
|
-
value.to_s
|
|
23
|
+
value.to_s.html_safe
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -29,10 +29,9 @@ module RademadeAdmin::FieldHelper
|
|
|
29
29
|
hash_params.delete(:page)
|
|
30
30
|
hash_params[name.to_sym] = number
|
|
31
31
|
|
|
32
|
-
options = '?' + hash_params.map { |k, v| "#{k.to_s}=#{v}" }.join('&')
|
|
33
32
|
selected = number == request.query_parameters[name.to_sym].to_i
|
|
34
|
-
|
|
35
|
-
content_tag(:option, number.to_s, :selected => selected, :value =>
|
|
33
|
+
url_params = request.path_parameters.merge(hash_params)
|
|
34
|
+
content_tag(:option, number.to_s, :selected => selected, :value => admin_url_for(url_params, true))
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
def input_attr(attrs = {})
|
|
@@ -17,19 +17,21 @@ module RademadeAdmin::FormHelper
|
|
|
17
17
|
)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def admin_field(form,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
def admin_field(form, data_item, model_info)
|
|
21
|
+
if can_read_relation data_item
|
|
22
|
+
name = data_item.name
|
|
23
|
+
attrs = admin_default_params(name, model_info)
|
|
24
|
+
.merge(field_params(data_item))
|
|
25
|
+
.merge(input_params(name))
|
|
26
|
+
concat form.input(name, input_attr(attrs))
|
|
27
|
+
end
|
|
26
28
|
end
|
|
27
29
|
|
|
28
|
-
def admin_localized_field(form,
|
|
29
|
-
name = "#{
|
|
30
|
-
attrs = admin_default_params(
|
|
31
|
-
.merge(field_params(
|
|
32
|
-
.merge(localized_field_params(
|
|
30
|
+
def admin_localized_field(form, data_item, model_info, locale)
|
|
31
|
+
name = "#{data_item.getter}][#{locale}"
|
|
32
|
+
attrs = admin_default_params(data_item.name, model_info)
|
|
33
|
+
.merge(field_params(data_item))
|
|
34
|
+
.merge(localized_field_params(data_item, locale))
|
|
33
35
|
concat form.input(name, input_attr(attrs))
|
|
34
36
|
end
|
|
35
37
|
|
|
@@ -39,9 +41,9 @@ module RademadeAdmin::FormHelper
|
|
|
39
41
|
{ :label => model_info.label_for(name) }
|
|
40
42
|
end
|
|
41
43
|
|
|
42
|
-
def field_params(
|
|
43
|
-
field_params =
|
|
44
|
-
field_params[:as] = default_field_type(
|
|
44
|
+
def field_params(data_item)
|
|
45
|
+
field_params = data_item.form_params
|
|
46
|
+
field_params[:as] = default_field_type(data_item) unless field_params[:as].present?
|
|
45
47
|
field_params
|
|
46
48
|
end
|
|
47
49
|
|
|
@@ -53,24 +55,28 @@ module RademadeAdmin::FormHelper
|
|
|
53
55
|
}
|
|
54
56
|
end
|
|
55
57
|
|
|
56
|
-
def localized_field_params(
|
|
58
|
+
def localized_field_params(data_item, locale)
|
|
57
59
|
{
|
|
58
60
|
:input_html => {
|
|
59
|
-
:id => "#{
|
|
60
|
-
:value => localized_value(
|
|
61
|
+
:id => "#{data_item.getter}_#{locale}_#{@item.id}",
|
|
62
|
+
:value => localized_value(data_item.getter, locale)
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
end
|
|
64
66
|
|
|
65
|
-
def default_field_type(
|
|
66
|
-
if
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
def default_field_type(data_item)
|
|
68
|
+
if data_item.has_relation?
|
|
69
|
+
if data_item.gallery_relation?
|
|
70
|
+
:'rademade_admin/gallery'
|
|
71
|
+
else
|
|
72
|
+
:'rademade_admin/related_select'
|
|
73
|
+
end
|
|
74
|
+
elsif data_item.has_uploader?
|
|
75
|
+
:'rademade_admin/file'
|
|
76
|
+
elsif data_item.date_time?
|
|
77
|
+
:'rademade_admin/date_time'
|
|
72
78
|
else
|
|
73
|
-
|
|
79
|
+
nil
|
|
74
80
|
end
|
|
75
81
|
end
|
|
76
82
|
|
|
@@ -84,4 +90,8 @@ module RademadeAdmin::FormHelper
|
|
|
84
90
|
item_value
|
|
85
91
|
end
|
|
86
92
|
|
|
93
|
+
def can_read_relation(data_item)
|
|
94
|
+
!data_item.has_relation? || can?(:read, data_item.relation.to)
|
|
95
|
+
end
|
|
96
|
+
|
|
87
97
|
end
|
|
@@ -79,20 +79,12 @@ module RademadeAdmin::UriHelper
|
|
|
79
79
|
}))
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
def admin_url_for(opts)
|
|
83
|
-
opts =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
Rails.application.routes.url_helpers.url_for(opts)
|
|
89
|
-
rescue
|
|
90
|
-
begin
|
|
91
|
-
RademadeAdmin::Engine.routes.url_helpers.url_for(opts)
|
|
92
|
-
rescue
|
|
93
|
-
nil
|
|
94
|
-
end
|
|
95
|
-
end
|
|
82
|
+
def admin_url_for(opts, is_admin_controller = false)
|
|
83
|
+
opts[:only_path] = true
|
|
84
|
+
opts[:controller] = "rademade_admin/#{opts[:controller]}" unless is_admin_controller
|
|
85
|
+
Rails.application.routes.url_helpers.url_for(opts)
|
|
86
|
+
rescue
|
|
87
|
+
RademadeAdmin::Engine.routes.url_helpers.url_for(opts) rescue nil
|
|
96
88
|
end
|
|
97
89
|
|
|
98
90
|
private
|
|
@@ -7,7 +7,7 @@ module RademadeAdmin
|
|
|
7
7
|
def input(wrapper_options = {})
|
|
8
8
|
template.content_tag(
|
|
9
9
|
:div,
|
|
10
|
-
HtmlBuffer.new([file_html]),
|
|
10
|
+
HtmlBuffer.new([file_html, download_button_html]),
|
|
11
11
|
{ :class => 'uploader-block' }
|
|
12
12
|
)
|
|
13
13
|
end
|
|
@@ -35,19 +35,16 @@ module RademadeAdmin
|
|
|
35
35
|
:class => 'btn yellow-btn uploader-input-file',
|
|
36
36
|
:name => uploader.mounted_as,
|
|
37
37
|
:data => {
|
|
38
|
-
:column => uploader.mounted_as,
|
|
39
|
-
:id => object.id.to_s,
|
|
40
38
|
:saved => object.new_record? ? 0 : 1,
|
|
41
|
-
:model => object.class.to_s,
|
|
42
|
-
:uploader => uploader.class.to_s,
|
|
43
39
|
:url => admin_url_for(:controller => 'file', :action => 'upload')
|
|
44
|
-
}
|
|
40
|
+
}.merge(uploader_params)
|
|
45
41
|
})
|
|
46
42
|
end
|
|
47
43
|
|
|
48
44
|
def input_hidden_html
|
|
49
45
|
@builder.hidden_field(attribute_name, {
|
|
50
|
-
:class => 'uploader-input-hidden hidden'
|
|
46
|
+
:class => 'uploader-input-hidden hidden',
|
|
47
|
+
:value => uploader.url
|
|
51
48
|
}.merge(input_html_options))
|
|
52
49
|
end
|
|
53
50
|
|
|
@@ -67,6 +64,16 @@ module RademadeAdmin
|
|
|
67
64
|
})
|
|
68
65
|
end
|
|
69
66
|
|
|
67
|
+
def download_button_html
|
|
68
|
+
template.content_tag(:a, I18n.t('rademade_admin.download_file'), {
|
|
69
|
+
:class => 'btn blue-btn download-btn',
|
|
70
|
+
:href => admin_url_for({
|
|
71
|
+
:controller => 'file',
|
|
72
|
+
:action => 'download'
|
|
73
|
+
}.merge(uploader_params))
|
|
74
|
+
}) unless uploader.file.nil?
|
|
75
|
+
end
|
|
76
|
+
|
|
70
77
|
def crop_button_html
|
|
71
78
|
template.content_tag(:span, I18n.t('rademade_admin.crop'), {
|
|
72
79
|
:class => 'btn red-btn upload-btn',
|
|
@@ -74,7 +81,7 @@ module RademadeAdmin
|
|
|
74
81
|
:crop => true,
|
|
75
82
|
:url => admin_url_for(:controller => 'file', :action => 'crop')
|
|
76
83
|
}
|
|
77
|
-
})
|
|
84
|
+
})
|
|
78
85
|
end
|
|
79
86
|
|
|
80
87
|
def upload_preview_service
|
|
@@ -89,5 +96,14 @@ module RademadeAdmin
|
|
|
89
96
|
uploader.class.ancestors.include? RademadeAdmin::Uploader::Photo
|
|
90
97
|
end
|
|
91
98
|
|
|
99
|
+
def uploader_params
|
|
100
|
+
{
|
|
101
|
+
:id => object.id.to_s,
|
|
102
|
+
:model => object.class.to_s,
|
|
103
|
+
:uploader => uploader.class.to_s,
|
|
104
|
+
:column => uploader.mounted_as
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
|
|
92
108
|
end
|
|
93
109
|
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
module RademadeAdmin
|
|
3
|
+
class GalleryInput < SimpleForm::Inputs::Base
|
|
4
|
+
|
|
5
|
+
include UriHelper
|
|
6
|
+
|
|
7
|
+
def input(wrapper_options = {})
|
|
8
|
+
template.content_tag(
|
|
9
|
+
:div,
|
|
10
|
+
HtmlBuffer.new([upload_button_html, gallery_images_html, gallery_hidden_html]),
|
|
11
|
+
{ :class => 'gallery' }
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def upload_button_html
|
|
18
|
+
template.content_tag(:input, '', {
|
|
19
|
+
:class => 'btn gallery-image-upload',
|
|
20
|
+
:type => 'file',
|
|
21
|
+
:multiple => true,
|
|
22
|
+
:data => {
|
|
23
|
+
:url => admin_url_for(:controller => 'gallery', :action => 'upload'),
|
|
24
|
+
:class_name => gallery_class.to_s
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def gallery_images_html
|
|
30
|
+
is_sortable = gallery_image_info.sortable_relation?
|
|
31
|
+
template.content_tag(:div, HtmlBuffer.new([images_html]), {
|
|
32
|
+
:class => 'gallery-images-container',
|
|
33
|
+
:data => {
|
|
34
|
+
:sortable_url => is_sortable ? admin_url_for(:controller => 'gallery', :action => 'sort') : ''
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def gallery_hidden_html
|
|
40
|
+
template.content_tag(:input, '', {
|
|
41
|
+
:type => 'hidden',
|
|
42
|
+
:name => "data[#{gallery_info.getter}]",
|
|
43
|
+
:value => gallery.id.to_s
|
|
44
|
+
})
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def images_html
|
|
48
|
+
html = ''
|
|
49
|
+
preview_service = RademadeAdmin::Upload::GalleryPreviewService.new
|
|
50
|
+
gallery.images.each do |gallery_image|
|
|
51
|
+
html += preview_service.preview_html(gallery_image.image)
|
|
52
|
+
end
|
|
53
|
+
html
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def gallery
|
|
57
|
+
@gallery ||= object.send(attribute_name) || gallery_class.create
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def gallery_info
|
|
61
|
+
@gallery_relation ||= model_info(object.class.to_s, attribute_name)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def gallery_image_info
|
|
65
|
+
@gallery_image_info ||= model_info(gallery_class, :images)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def gallery_class
|
|
69
|
+
@gallery_class ||= gallery_info.relation.to
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def model_info(class_name, data_item_name)
|
|
73
|
+
RademadeAdmin::Model::Graph.instance.model_info(class_name).data_items.data_item(data_item_name)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -27,7 +27,7 @@ module RademadeAdmin
|
|
|
27
27
|
if multiple?
|
|
28
28
|
related_list_html
|
|
29
29
|
else
|
|
30
|
-
related_item_html
|
|
30
|
+
RademadeAdmin::HtmlBuffer.new([related_item_html, edit_button_html])
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
@@ -55,11 +55,13 @@ module RademadeAdmin
|
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def reflection_data
|
|
58
|
-
|
|
58
|
+
search_url = admin_autocomplete_uri(related_to, :format => :json)
|
|
59
|
+
data = {
|
|
59
60
|
:'rel-multiple' => multiple?,
|
|
60
|
-
:'rel-class' => related_to.to_s
|
|
61
|
-
:'search-url' => admin_autocomplete_uri(related_to, :format => :json)
|
|
61
|
+
:'rel-class' => related_to.to_s
|
|
62
62
|
}
|
|
63
|
+
data[:'search-url'] = search_url unless search_url.nil?
|
|
64
|
+
data
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
def related_item_html
|
|
@@ -74,5 +76,12 @@ module RademadeAdmin
|
|
|
74
76
|
end
|
|
75
77
|
end
|
|
76
78
|
|
|
79
|
+
def edit_button_html
|
|
80
|
+
template.content_tag(:button, I18n.t('rademade_admin.edit_related_item'), {
|
|
81
|
+
:class => 'btn blue-btn',
|
|
82
|
+
:'data-edit-relation' => true
|
|
83
|
+
})
|
|
84
|
+
end
|
|
85
|
+
|
|
77
86
|
end
|
|
78
87
|
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module RademadeAdmin
|
|
2
|
+
module Gallery
|
|
3
|
+
class Manager
|
|
4
|
+
|
|
5
|
+
attr_reader :gallery_images_html
|
|
6
|
+
|
|
7
|
+
def initialize(class_name)
|
|
8
|
+
@class_name = class_name
|
|
9
|
+
init_gallery_models
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def upload_images(gallery_id, files)
|
|
13
|
+
find_gallery gallery_id
|
|
14
|
+
upload_gallery_images files
|
|
15
|
+
@gallery.save
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def crop_image(image_id, crop_data)
|
|
19
|
+
gallery_image = @gallery_image_relation.to.find(image_id)
|
|
20
|
+
uploader = gallery_image.image
|
|
21
|
+
image = uploader.crop_image(crop_data)
|
|
22
|
+
uploader.store!(image)
|
|
23
|
+
gallery_image.save
|
|
24
|
+
uploader
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def remove_image(image_id)
|
|
28
|
+
@gallery_image_relation.to.find(image_id).destroy
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def sort_images(images)
|
|
32
|
+
sort_gallery_images images
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def init_gallery_models
|
|
38
|
+
gallery_info = RademadeAdmin::Model::Graph.instance.model_info(@class_name)
|
|
39
|
+
@gallery_model = gallery_info.model
|
|
40
|
+
@gallery_image_relation = gallery_info.data_items.data_item(:images).relation
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def find_gallery(gallery_id)
|
|
44
|
+
@gallery = @gallery_model.find(gallery_id)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def upload_gallery_images(images)
|
|
48
|
+
preview_service = RademadeAdmin::Upload::GalleryPreviewService.new
|
|
49
|
+
@gallery_images_html = []
|
|
50
|
+
images.each do |image|
|
|
51
|
+
gallery_image = @gallery_image_relation.to.create
|
|
52
|
+
gallery_image.image.store! image
|
|
53
|
+
update_gallery_image_position(gallery_image)
|
|
54
|
+
@gallery.images << gallery_image
|
|
55
|
+
@gallery_images_html << preview_service.preview_html(gallery_image.image)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def sort_gallery_images(images)
|
|
60
|
+
images.each_with_index do |image_id, index|
|
|
61
|
+
gallery_image = @gallery_image_relation.to.find(image_id)
|
|
62
|
+
set_gallery_image_position(gallery_image, index)
|
|
63
|
+
gallery_image.save
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def update_gallery_image_position(gallery_image)
|
|
68
|
+
if @gallery_image_relation.sortable?
|
|
69
|
+
last_image = @gallery.images.last
|
|
70
|
+
previous_position = last_image.nil? ? 0 : last_image.send(:"#{@gallery_image_relation.sortable_field}")
|
|
71
|
+
set_gallery_image_position(gallery_image, previous_position + 1)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def set_gallery_image_position(gallery_image, position)
|
|
76
|
+
gallery_image.send(:"#{@gallery_image_relation.sortable_field}=", position)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
data/app/services/login.rb
CHANGED
|
@@ -6,9 +6,9 @@ module RademadeAdmin
|
|
|
6
6
|
params.require(:data).permit([:email, :password])
|
|
7
7
|
user = RademadeAdmin.user_class.get_by_email(params[:data][:email])
|
|
8
8
|
|
|
9
|
-
error('
|
|
10
|
-
error('
|
|
11
|
-
error('
|
|
9
|
+
error(I18n.t('rademade_admin.login_email_not_found'), :email) unless user.is_a? RademadeAdmin.user_class
|
|
10
|
+
error(I18n.t('rademade_admin.login_incorrect_password'), :password) unless user.valid_password? params[:data][:password]
|
|
11
|
+
error(I18n.t('rademade_admin.login_access_denied'), :email) unless user.admin?
|
|
12
12
|
|
|
13
13
|
user
|
|
14
14
|
end
|
|
@@ -16,7 +16,7 @@ module RademadeAdmin
|
|
|
16
16
|
def collect_children(parent_model = nil)
|
|
17
17
|
menu_items = []
|
|
18
18
|
@model_infos.each do |model_info|
|
|
19
|
-
if model_info.parent_model == parent_model
|
|
19
|
+
if model_info.parent_model == parent_model
|
|
20
20
|
menu_items << RademadeAdmin::MenuService::MenuItem.new(model_info, collect_children(model_info.model))
|
|
21
21
|
end
|
|
22
22
|
end
|