rademade_admin 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -4,7 +4,7 @@ module RademadeAdmin
|
|
4
4
|
|
5
5
|
def success_action
|
6
6
|
render :json => {
|
7
|
-
:message => '
|
7
|
+
:message => I18n.t('rademade_admin.success_message')
|
8
8
|
}
|
9
9
|
end
|
10
10
|
|
@@ -12,9 +12,12 @@ module RademadeAdmin
|
|
12
12
|
respond_to do |format|
|
13
13
|
format.html { redirect_to admin_edit_uri(item) }
|
14
14
|
format.json {
|
15
|
-
|
16
|
-
:
|
17
|
-
|
15
|
+
if params.has_key?(:create_and_return)
|
16
|
+
data = { :redirect_to => admin_list_uri(item.class) }
|
17
|
+
else
|
18
|
+
data = { :form_action => admin_update_uri(item) }
|
19
|
+
end
|
20
|
+
success_message(item, I18n.t('rademade_admin.success_insert_message'), data)
|
18
21
|
}
|
19
22
|
end
|
20
23
|
end
|
@@ -23,7 +26,9 @@ module RademadeAdmin
|
|
23
26
|
respond_to do |format|
|
24
27
|
format.html { redirect_to admin_edit_uri(item) }
|
25
28
|
format.json {
|
26
|
-
|
29
|
+
data = {}
|
30
|
+
data[:redirect_to] = admin_list_uri(item.class) if params.has_key?(:create_and_return)
|
31
|
+
success_message(item, I18n.t('rademade_admin.success_update_message'), data)
|
27
32
|
}
|
28
33
|
end
|
29
34
|
end
|
@@ -32,27 +37,36 @@ module RademadeAdmin
|
|
32
37
|
respond_to do |format|
|
33
38
|
format.html { redirect_to admin_list_uri(item) }
|
34
39
|
format.json {
|
35
|
-
success_message(item, '
|
40
|
+
success_message(item, I18n.t('rademade_admin.success_delete_message'))
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def success_status_change(item)
|
46
|
+
respond_to do |format|
|
47
|
+
format.html { redirect_to admin_list_uri(item) }
|
48
|
+
format.json {
|
49
|
+
success_message(item, t('rademade_admin.success_status_update_message'))
|
36
50
|
}
|
37
51
|
end
|
38
52
|
end
|
39
53
|
|
40
54
|
def success_unlink
|
41
55
|
render :json => {
|
42
|
-
:message => '
|
56
|
+
:message => I18n.t('rademade_admin.success_unlink_message')
|
43
57
|
}
|
44
58
|
end
|
45
59
|
|
46
60
|
def success_link
|
47
61
|
render :json => {
|
48
|
-
:message => '
|
62
|
+
:message => I18n.t('rademade_admin.success_link_message')
|
49
63
|
}
|
50
64
|
end
|
51
65
|
|
52
|
-
def success_message(item,
|
66
|
+
def success_message(item, message, additional_data = {})
|
53
67
|
render :json => {
|
54
68
|
:data => Autocomplete::BaseSerializer.new([item]).as_json.first,
|
55
|
-
:message =>
|
69
|
+
:message => message
|
56
70
|
}.merge(additional_data)
|
57
71
|
end
|
58
72
|
|
@@ -1,16 +1,19 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'search/conditions/abstract'
|
3
|
+
require 'search/where'
|
3
4
|
|
4
5
|
module RademadeAdmin
|
5
6
|
module Search
|
6
7
|
module Conditions
|
7
8
|
class Autocomplete < Abstract
|
8
9
|
|
10
|
+
include RademadeAdmin::Search::Where
|
11
|
+
|
9
12
|
protected
|
10
13
|
|
11
14
|
def where
|
12
15
|
@where_conditions = RademadeAdmin::Search::Part::Where.new(:and)
|
13
|
-
|
16
|
+
regex_filter(@where_conditions, @params[:q])
|
14
17
|
append_search_params
|
15
18
|
append_ids_params
|
16
19
|
@where_conditions
|
@@ -22,16 +25,6 @@ module RademadeAdmin
|
|
22
25
|
|
23
26
|
private
|
24
27
|
|
25
|
-
def append_query_condition
|
26
|
-
if @params[:q].present? and not @data_items.filter_fields.empty?
|
27
|
-
query_where = RademadeAdmin::Search::Part::Where.new(:or)
|
28
|
-
@data_items.filter_fields.each do |field|
|
29
|
-
query_where.add(field, /#{@params[:q]}/i)
|
30
|
-
end
|
31
|
-
@where_conditions.sub_add(query_where)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
28
|
def append_search_params
|
36
29
|
if @params[:search].present?
|
37
30
|
@params[:search].each do |key, value|
|
@@ -1,25 +1,27 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'search/conditions/abstract'
|
3
|
+
require 'search/where'
|
3
4
|
|
4
5
|
module RademadeAdmin
|
5
6
|
module Search
|
6
7
|
module Conditions
|
7
8
|
class List < Abstract
|
8
9
|
|
10
|
+
include RademadeAdmin::Search::Where
|
11
|
+
|
9
12
|
protected
|
10
13
|
|
11
14
|
def where
|
12
|
-
where_conditions = RademadeAdmin::Search::Part::Where.new(:and)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
where_conditions
|
15
|
+
@where_conditions = RademadeAdmin::Search::Part::Where.new(:and)
|
16
|
+
search_by_fields
|
17
|
+
regex_filter(@where_conditions, @params[:q])
|
18
|
+
@where_conditions
|
17
19
|
end
|
18
20
|
|
19
21
|
def order
|
20
22
|
order_conditions = super
|
21
|
-
|
22
|
-
order_conditions.unshift(
|
23
|
+
list_order_field = order_field
|
24
|
+
order_conditions.unshift(list_order_field, @params[:direction]) unless list_order_field.nil?
|
23
25
|
order_conditions
|
24
26
|
end
|
25
27
|
|
@@ -33,11 +35,21 @@ module RademadeAdmin
|
|
33
35
|
|
34
36
|
private
|
35
37
|
|
36
|
-
def
|
37
|
-
@
|
38
|
+
def order_field
|
39
|
+
if @params[:sort]
|
40
|
+
@params[:sort]
|
41
|
+
else
|
42
|
+
@data_items.has_field?(:position) ? :position : nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def search_by_fields
|
47
|
+
@params.slice(*@data_items.origin_fields).each do |field, value|
|
48
|
+
@where_conditions.add(field, value)
|
49
|
+
end
|
38
50
|
end
|
39
51
|
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
43
|
-
end
|
55
|
+
end
|
@@ -26,8 +26,8 @@ module RademadeAdmin
|
|
26
26
|
|
27
27
|
def order
|
28
28
|
order_conditions = super
|
29
|
-
|
30
|
-
order_conditions.unshift(
|
29
|
+
related_order_field = order_field
|
30
|
+
order_conditions.unshift(related_order_field, @params[:direction]) unless related_order_field.nil?
|
31
31
|
order_conditions
|
32
32
|
end
|
33
33
|
|
@@ -41,8 +41,12 @@ module RademadeAdmin
|
|
41
41
|
|
42
42
|
private
|
43
43
|
|
44
|
-
def
|
45
|
-
@
|
44
|
+
def order_field
|
45
|
+
if @params[:sort]
|
46
|
+
@params[:sort]
|
47
|
+
else
|
48
|
+
@data_items.has_field?(:position) ? :position : nil
|
49
|
+
end
|
46
50
|
end
|
47
51
|
|
48
52
|
def related_item_ids
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RademadeAdmin
|
2
|
+
module Search
|
3
|
+
module Where
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def regex_filter(where_conditions, search)
|
8
|
+
if search.present? and not @data_items.filter_fields.empty?
|
9
|
+
query_where = RademadeAdmin::Search::Part::Where.new(:or)
|
10
|
+
@data_items.filter_fields.each do |field|
|
11
|
+
query_where.add(field, /#{search}/i)
|
12
|
+
end
|
13
|
+
where_conditions.sub_add(query_where)
|
14
|
+
end
|
15
|
+
where_conditions
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -19,11 +19,8 @@ module RademadeAdmin
|
|
19
19
|
@params[:sort].present?
|
20
20
|
end
|
21
21
|
|
22
|
-
#
|
23
|
-
# @return [RademadeAdmin::Model::Info::DataItem]
|
24
|
-
#
|
25
22
|
def sorting_sign(field)
|
26
|
-
if field.
|
23
|
+
if field.order_column.to_s == @params[:sort]
|
27
24
|
return '⬇' if @params[:direction] == 'asc'
|
28
25
|
return '⬆' if @params[:direction] == 'desc'
|
29
26
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module RademadeAdmin
|
3
|
+
module Status
|
4
|
+
class Toggler
|
5
|
+
|
6
|
+
attr_reader :item
|
7
|
+
|
8
|
+
def initialize(model, id)
|
9
|
+
@model = model
|
10
|
+
@id = id
|
11
|
+
end
|
12
|
+
|
13
|
+
def init_item
|
14
|
+
@model_info = RademadeAdmin::Model::Graph.instance.model_info @model
|
15
|
+
@item = @model_info.model.find @id
|
16
|
+
end
|
17
|
+
|
18
|
+
def toggle
|
19
|
+
if @model_info.hideable?
|
20
|
+
@item.toggle
|
21
|
+
@item.save
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -9,23 +9,39 @@ module RademadeAdmin
|
|
9
9
|
def template_path(*directories)
|
10
10
|
"#{@root_dir}/#{directories.join('/')}"
|
11
11
|
end
|
12
|
+
|
13
|
+
def index_template
|
14
|
+
abstract_template 'index'
|
15
|
+
end
|
12
16
|
|
13
17
|
def inner_layout
|
14
18
|
layout_path 'inner'
|
15
19
|
end
|
16
20
|
|
21
|
+
def main_layout
|
22
|
+
layout_path 'main'
|
23
|
+
end
|
24
|
+
|
17
25
|
def inner_form_layout
|
18
26
|
layout_path 'inner/form'
|
19
27
|
end
|
20
28
|
|
29
|
+
def form_block
|
30
|
+
block_path 'form'
|
31
|
+
end
|
32
|
+
|
21
33
|
def form_control_block
|
22
34
|
block_path 'form/control'
|
23
35
|
end
|
24
36
|
|
25
|
-
def
|
37
|
+
def form_lang_panel_block
|
26
38
|
block_path 'form/lang_panel'
|
27
39
|
end
|
28
40
|
|
41
|
+
def form_separator_block
|
42
|
+
block_path 'form/separator'
|
43
|
+
end
|
44
|
+
|
29
45
|
def pagination_block
|
30
46
|
block_path 'pagination'
|
31
47
|
end
|
@@ -34,6 +50,14 @@ module RademadeAdmin
|
|
34
50
|
block_path 'on_page_select'
|
35
51
|
end
|
36
52
|
|
53
|
+
def sort_reset_block
|
54
|
+
block_path 'sort_reset'
|
55
|
+
end
|
56
|
+
|
57
|
+
def search_block
|
58
|
+
block_path 'search'
|
59
|
+
end
|
60
|
+
|
37
61
|
def header_block
|
38
62
|
block_path 'header'
|
39
63
|
end
|
@@ -54,8 +78,16 @@ module RademadeAdmin
|
|
54
78
|
block_path 'table/head'
|
55
79
|
end
|
56
80
|
|
81
|
+
def cancel_button
|
82
|
+
block_path 'button/cancel'
|
83
|
+
end
|
84
|
+
|
57
85
|
private
|
58
86
|
|
87
|
+
def abstract_template(path)
|
88
|
+
template_path 'abstract', path
|
89
|
+
end
|
90
|
+
|
59
91
|
def layout_path(layout)
|
60
92
|
template_path '_layouts', layout
|
61
93
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module RademadeAdmin
|
3
|
+
module Upload
|
4
|
+
class GalleryPreviewService
|
5
|
+
|
6
|
+
include ActionView::Helpers::TagHelper
|
7
|
+
include ActionView::Context
|
8
|
+
include UriHelper
|
9
|
+
|
10
|
+
def preview_html(uploader)
|
11
|
+
content_tag(:div, HtmlBuffer.new([
|
12
|
+
gallery_image_html(uploader),
|
13
|
+
remove_ico_html(uploader),
|
14
|
+
crop_button_html(uploader)
|
15
|
+
]), {
|
16
|
+
:class => 'gallery-image',
|
17
|
+
:data => {
|
18
|
+
:id => uploader.model.id.to_s
|
19
|
+
}
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
def crop_button_html(uploader)
|
24
|
+
content_tag(:span, I18n.translate('rademade_admin.crop'), {
|
25
|
+
:class => 'btn red-btn crop-btn',
|
26
|
+
:data => {
|
27
|
+
:crop => true,
|
28
|
+
:url => admin_url_for(:controller => 'gallery', :action => 'crop'),
|
29
|
+
:full_url => uploader.url,
|
30
|
+
:original_dimensions => uploader.original_dimensions.join(',')
|
31
|
+
}
|
32
|
+
}) if uploader.class.ancestors.include? RademadeAdmin::Uploader::CropPhoto
|
33
|
+
end
|
34
|
+
|
35
|
+
def gallery_image_preview(uploader)
|
36
|
+
uploader.resize(150, 100)
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def gallery_image_html(uploader)
|
42
|
+
content_tag(:img, '', {
|
43
|
+
:src => gallery_image_preview(uploader),
|
44
|
+
:width => 150,
|
45
|
+
:height => 100
|
46
|
+
})
|
47
|
+
end
|
48
|
+
|
49
|
+
def remove_ico_html(uploader)
|
50
|
+
content_tag(:span, 'x', {
|
51
|
+
:class => 'remove-ico',
|
52
|
+
:data => {
|
53
|
+
:url => admin_url_for(
|
54
|
+
:controller => 'gallery',
|
55
|
+
:action => 'remove',
|
56
|
+
:id => uploader.model.id.to_s
|
57
|
+
)
|
58
|
+
}
|
59
|
+
})
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -1,22 +1 @@
|
|
1
|
-
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>Rademade Admin</title>
|
5
|
-
<%= stylesheet_link_tag(:rademade_admin, :media => 'all', 'data-turbolinks-track' => true) %>
|
6
|
-
<%= javascript_include_tag(:rademade_admin, 'data-turbolinks-track' => true) %>
|
7
|
-
<%= csrf_meta_tags %>
|
8
|
-
</head>
|
9
|
-
|
10
|
-
<body>
|
11
|
-
<div class="wrapper">
|
12
|
-
<%= yield %>
|
13
|
-
</div>
|
14
|
-
</body>
|
15
|
-
|
16
|
-
<%= javascript_tag do %>
|
17
|
-
I18n.defaultLocale = "<%= I18n.default_locale %>";
|
18
|
-
I18n.locale = "<%= I18n.locale %>";
|
19
|
-
I18n.fallbacks = true;
|
20
|
-
<% end %>
|
21
|
-
|
22
|
-
</html>
|
1
|
+
<%= render :template => @template_service.main_layout %>
|