ab_admin 0.6.1 → 0.7.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/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +6 -2
- data/app/assets/javascripts/ab_admin/components/base_assets.js.coffee +9 -0
- data/app/assets/javascripts/ab_admin/components/gmaps.js.coffee +1 -1
- data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +6 -0
- data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +2 -2
- data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +52 -12
- data/app/assets/javascripts/ab_admin/core/init.js.coffee +2 -0
- data/app/assets/javascripts/ab_admin/core/pjax.js.coffee +3 -2
- data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +3 -4
- data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.scss +4 -0
- data/app/assets/stylesheets/ab_admin/components/_colored_tabs.scss +4 -0
- data/app/assets/stylesheets/ab_admin/components/_form.scss +36 -3
- data/app/controllers/admin/admin_comments_controller.rb +4 -0
- data/app/controllers/admin/assets_controller.rb +5 -2
- data/app/controllers/admin/base_controller.rb +50 -41
- data/app/controllers/admin/locators_controller.rb +1 -1
- data/app/controllers/admin/manager_controller.rb +32 -3
- data/app/controllers/admin/settings_controller.rb +2 -3
- data/app/controllers/admin/static_pages_controller.rb +5 -0
- data/app/controllers/admin/structures_controller.rb +10 -4
- data/app/controllers/admin/users_controller.rb +9 -2
- data/app/views/admin/base/_search_layout.html.slim +0 -1
- data/app/views/admin/base/index.html.slim +1 -2
- data/app/views/admin/fileupload/_container.html.slim +17 -10
- data/app/views/admin/shared/_content_actions.html.slim +18 -6
- data/app/views/admin/shared/_locale_tabs.html.slim +3 -3
- data/app/views/admin/structures/_form.html.slim +2 -1
- data/app/views/layouts/admin/_footer.html.slim +5 -4
- data/app/views/layouts/admin/application.html.slim +2 -0
- data/config/locales/ru.yml +1 -0
- data/config/routes.rb +17 -22
- data/lib/ab_admin.rb +11 -1
- data/lib/ab_admin/abstract_resource.rb +11 -2
- data/lib/ab_admin/carrierwave/base_uploader.rb +45 -25
- data/lib/ab_admin/carrierwave/file_size_validator.rb +0 -1
- data/lib/ab_admin/carrierwave/glue.rb +2 -4
- data/lib/ab_admin/concerns/admin_addition.rb +12 -4
- data/lib/ab_admin/concerns/deep_cloneable.rb +0 -1
- data/lib/ab_admin/concerns/fileuploads.rb +0 -1
- data/lib/ab_admin/concerns/headerable.rb +0 -4
- data/lib/ab_admin/concerns/nested_set.rb +2 -3
- data/lib/ab_admin/concerns/reloadable.rb +0 -2
- data/lib/ab_admin/concerns/silencer.rb +0 -3
- data/lib/ab_admin/concerns/utilities.rb +2 -4
- data/lib/ab_admin/concerns/validations.rb +1 -1
- data/lib/ab_admin/config/base.rb +26 -6
- data/lib/ab_admin/controllers/callbacks.rb +6 -6
- data/lib/ab_admin/controllers/head_options.rb +0 -1
- data/lib/ab_admin/controllers/tree.rb +0 -2
- data/lib/ab_admin/core_ext.rb +1 -1
- data/lib/ab_admin/core_ext/array.rb +0 -1
- data/lib/ab_admin/core_ext/hash.rb +11 -0
- data/lib/ab_admin/core_ext/string.rb +0 -1
- data/lib/ab_admin/devise.rb +1 -1
- data/lib/ab_admin/engine.rb +2 -1
- data/lib/ab_admin/hooks/globalize_locale_suffix_accessors.rb +17 -31
- data/lib/ab_admin/hooks/will_paginate_no_uri.rb +1 -1
- data/lib/ab_admin/i18n_tools/google_translate.rb +0 -1
- data/lib/ab_admin/i18n_tools/translate_app.rb +0 -1
- data/lib/ab_admin/menu/builder.rb +3 -2
- data/lib/ab_admin/menu/group.rb +3 -1
- data/lib/ab_admin/models/asset.rb +9 -6
- data/lib/ab_admin/models/header.rb +2 -3
- data/lib/ab_admin/models/locator.rb +1 -1
- data/lib/ab_admin/models/settings.rb +6 -6
- data/lib/ab_admin/models/structure.rb +0 -6
- data/lib/ab_admin/models/track.rb +12 -3
- data/lib/ab_admin/models/type_model.rb +0 -1
- data/lib/ab_admin/models/user.rb +0 -1
- data/lib/ab_admin/models/validations/all.rb +4 -0
- data/lib/ab_admin/models/validations/domain_name_validator.rb +9 -0
- data/lib/ab_admin/models/validations/email_validator.rb +9 -0
- data/lib/ab_admin/utils.rb +12 -4
- data/lib/ab_admin/utils/eval_helpers.rb +1 -1
- data/lib/ab_admin/utils/logger.rb +0 -2
- data/lib/ab_admin/utils/xls_document.rb +25 -6
- data/lib/ab_admin/version.rb +1 -1
- data/lib/ab_admin/views/admin_helpers.rb +5 -4
- data/lib/ab_admin/views/admin_navigation_helpers.rb +16 -5
- data/lib/ab_admin/views/form_builder.rb +41 -10
- data/lib/ab_admin/views/helpers.rb +0 -2
- data/lib/ab_admin/views/inputs/uploader_input.rb +1 -0
- data/lib/ab_admin/views/search_form_builder.rb +33 -7
- data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +0 -1
- data/lib/generators/ab_admin/glob/glob_generator.rb +2 -2
- data/lib/generators/ab_admin/glob/templates/migration.erb +1 -1
- data/lib/generators/ab_admin/install/install_generator.rb +0 -1
- data/lib/generators/ab_admin/install/templates/config/seeds.rb +0 -2
- data/lib/generators/ab_admin/install/templates/helpers/admin/structures_helper.rb +1 -4
- data/lib/generators/ab_admin/install/templates/models/admin_comment.rb +1 -3
- data/lib/generators/ab_admin/install/templates/models/asset.rb +3 -5
- data/lib/generators/ab_admin/install/templates/models/header.rb +1 -5
- data/lib/generators/ab_admin/install/templates/models/static_page.rb +1 -4
- data/lib/generators/ab_admin/install/templates/models/structure.rb +1 -5
- data/lib/generators/ab_admin/install/templates/models/track.rb +1 -2
- data/lib/generators/ab_admin/install/templates/models/user.rb +1 -9
- data/lib/generators/ab_admin/install/templates/uploaders/attachment_file_uploader.rb +1 -1
- data/lib/generators/ab_admin/install/templates/uploaders/avatar_uploader.rb +1 -1
- data/lib/generators/ab_admin/install/templates/uploaders/picture_uploader.rb +1 -1
- data/lib/generators/ab_admin/model/templates/resource.erb +1 -0
- data/lib/generators/template.rb +39 -59
- metadata +38 -36
- data/lib/ab_admin/hooks/active_model_attr_accessible_few_roles.rb +0 -50
|
@@ -31,12 +31,18 @@ module AbAdmin
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
attribute_name = "#{attribute_name}_#{options[:locale]}" if options[:locale]
|
|
35
|
+
|
|
36
|
+
options[:disabled] = disabled_attribute?(attribute_name) unless options.has_key?(:disabled)
|
|
37
|
+
|
|
34
38
|
case options[:as]
|
|
35
39
|
when :map
|
|
36
40
|
title = options[:title] || I18n.t("admin.#{attribute_name}", default: object.class.han(attribute_name))
|
|
37
41
|
prefix = options[:prefix] || object.class.model_name.singular
|
|
38
|
-
data_fields = [:lat, :lon, :zoom].map { |attr| hidden_field(attr) }.join
|
|
39
|
-
|
|
42
|
+
data_fields = [:lat, :lon, :zoom].map { |attr| hidden_field(attr) }.join unless options[:disabled]
|
|
43
|
+
options[:js_options] ||= {}
|
|
44
|
+
options[:js_options][:disabled] = options[:disabled]
|
|
45
|
+
return template.input_set(title) { data_fields.to_s.html_safe + geo_input(prefix, options[:js_options]) }
|
|
40
46
|
when :token
|
|
41
47
|
options[:label] = object.class.han(attribute_name.to_s.sub(/^token_|_id$/, '')) unless options.key?(:label)
|
|
42
48
|
when :association, :tree_select
|
|
@@ -49,31 +55,56 @@ module AbAdmin
|
|
|
49
55
|
return template.render 'admin/shared/inputs/checkbox_tree', attribute_name: attribute_name, reflection: reflection, f: self
|
|
50
56
|
end
|
|
51
57
|
|
|
52
|
-
attribute_name = "#{attribute_name}_#{options[:locale]}" if options[:locale]
|
|
53
|
-
|
|
54
58
|
super(attribute_name, options, &block)
|
|
55
59
|
end
|
|
56
60
|
|
|
61
|
+
def input_field(attribute_name, options = {})
|
|
62
|
+
options[:disabled] = disabled_attribute?(attribute_name) unless options.has_key?(:disabled)
|
|
63
|
+
super(attribute_name, options)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def disable_all
|
|
67
|
+
@disable_all = true
|
|
68
|
+
@defaults ||= {}
|
|
69
|
+
@defaults[:disabled] = true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def disable_not_accessible_for(roles)
|
|
73
|
+
ActiveSupport::Deprecation.warn('#disable_not_accessible_for is deprecated without replacement')
|
|
74
|
+
@disable_not_accessible_for = roles
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def disabled_attribute?(attribute_name)
|
|
78
|
+
@disable_all
|
|
79
|
+
# return true if @disable_all
|
|
80
|
+
# return unless @disable_not_accessible_for
|
|
81
|
+
# @accessible_attributes ||= object.class.attr_accessible.values_at(*@disable_not_accessible_for).map(&:to_a).flatten
|
|
82
|
+
# !@accessible_attributes.include?(attribute_name.to_s)
|
|
83
|
+
end
|
|
84
|
+
|
|
57
85
|
def render_dsl_node(node, options={})
|
|
58
86
|
input node.name, node.options.merge(options), &node.block
|
|
59
87
|
end
|
|
60
88
|
|
|
61
89
|
def link_to_add_assoc(assoc, options={})
|
|
90
|
+
return if @disable_all
|
|
62
91
|
model = @object.class.reflect_on_association(assoc).klass
|
|
63
92
|
title = [@template.icon('plus', true), I18n.t('admin.add'), options[:title] || model.model_name.human].join(' ').html_safe
|
|
64
93
|
link_to_add title, assoc, class: "btn btn-primary #{options[:class]}"
|
|
65
94
|
end
|
|
66
95
|
|
|
67
96
|
def link_to_remove_assoc
|
|
97
|
+
return if @disable_all
|
|
68
98
|
link_to_remove @template.icon('trash', true) + I18n.t('admin.delete'), class: 'btn btn-danger btn-mini pull-right'
|
|
69
99
|
end
|
|
70
100
|
|
|
71
|
-
def locale_tabs(&block)
|
|
72
|
-
|
|
73
|
-
Globalize.available_locales
|
|
74
|
-
|
|
101
|
+
def locale_tabs(options={}, &block)
|
|
102
|
+
locale_html = {}
|
|
103
|
+
options[:locales] ||= Globalize.available_locales
|
|
104
|
+
options[:locales].each do |l|
|
|
105
|
+
locale_html[l] = template.capture { block.call(l) }
|
|
75
106
|
end
|
|
76
|
-
template.render 'admin/shared/locale_tabs',
|
|
107
|
+
template.render 'admin/shared/locale_tabs', locale_html: locale_html, locales: options[:locales]
|
|
77
108
|
end
|
|
78
109
|
|
|
79
110
|
def save_buttons
|
|
@@ -86,7 +117,7 @@ module AbAdmin
|
|
|
86
117
|
<<-HTML.html_safe
|
|
87
118
|
<script src="//maps.googleapis.com/maps/api/js?sensor=false&libraries=places&language=#{I18n.locale}" type="text/javascript"></script>
|
|
88
119
|
<div class="geo_input" id="#{prefix}_geo_input">
|
|
89
|
-
<div class="control-group">
|
|
120
|
+
<div class="control-group #{'hidden' if js_options[:disabled]}">
|
|
90
121
|
<label class="control-label" for="#{input_name}">#{I18n.t('admin.geo_autocomplete')}</label>
|
|
91
122
|
<div class="controls">
|
|
92
123
|
<input type="text" name="#{input_name}" id="#{input_name}" class="geo_ac string">
|
|
@@ -5,15 +5,19 @@ module AbAdmin
|
|
|
5
5
|
:text_field_tag, :check_box_tag, :radio_button_tag, :label_tag, :select_tag,
|
|
6
6
|
:options_for_select, :options_from_collection_for_select, :hidden_field_tag, to: :@template
|
|
7
7
|
|
|
8
|
+
alias_method :builder_options, :options
|
|
9
|
+
|
|
8
10
|
def input(attr, options={})
|
|
9
11
|
field_type = field_type(attr, options)
|
|
10
|
-
|
|
12
|
+
options[:wrapper_html] ||= {}
|
|
13
|
+
options[:wrapper_html][:class] = "clearfix #{field_type} #{options[:wrapper_html][:class]}"
|
|
14
|
+
content_tag :div, options[:wrapper_html] do
|
|
11
15
|
public_send("#{field_type}_field", attr, options)
|
|
12
16
|
end
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
def select_field(attr, options={})
|
|
16
|
-
|
|
20
|
+
conditional_wrapper attr, options do
|
|
17
21
|
param = options[:param] || "#{options[:value_attr] || attr}_eq"
|
|
18
22
|
|
|
19
23
|
if options[:collection].is_a?(Proc)
|
|
@@ -27,19 +31,26 @@ module AbAdmin
|
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
options[:input_html] ||= {}
|
|
34
|
+
options[:input_html][:id] = "q_#{attr}"
|
|
35
|
+
|
|
30
36
|
if options[:fancy] || collection.length > 30
|
|
31
37
|
options[:input_html][:class] = [options[:input_html][:class], 'fancy_select'].join(' ')
|
|
32
38
|
end
|
|
33
39
|
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
if options[:input_html][:placeholder]
|
|
41
|
+
options[:input_html][:include_blank] = false
|
|
42
|
+
options[:input_html][:prompt] ||= options[:input_html][:placeholder]
|
|
43
|
+
else
|
|
44
|
+
options[:input_html][:include_blank] = true
|
|
45
|
+
end
|
|
46
|
+
select_tag("q[#{param}]", options_for_select(collection, params[:q][param]), options[:input_html])
|
|
36
47
|
end
|
|
37
48
|
end
|
|
38
49
|
|
|
39
50
|
def ac_select_field(attr, options={})
|
|
40
51
|
klass = options[:klass]
|
|
41
52
|
options[:param] ||= "#{options[:value_attr] || attr}_eq"
|
|
42
|
-
pre_select = params.
|
|
53
|
+
pre_select = params[:q].try!(:[], options[:param]) ? klass.where(id: params[:q][options[:param]]).map(&:for_input_token) : []
|
|
43
54
|
options[:input_html] ||= {}
|
|
44
55
|
options[:input_html].deep_merge! class: 'fancy_select', data: {class: klass.name, pre: pre_select.to_json}
|
|
45
56
|
string_field attr, options
|
|
@@ -53,8 +64,19 @@ module AbAdmin
|
|
|
53
64
|
end
|
|
54
65
|
end
|
|
55
66
|
|
|
67
|
+
def conditional_wrapper(attr, options, &block)
|
|
68
|
+
if builder_options[:compact_labels]
|
|
69
|
+
options[:input_html] ||= {}
|
|
70
|
+
options[:input_html][:placeholder] ||= extract_label(attr, options)
|
|
71
|
+
wrapper_html = {'class' => 'controls js-tooltip', 'data-placement' => 'left', 'title' => options[:input_html][:placeholder]}
|
|
72
|
+
content_tag(:div, wrapper_html, &block)
|
|
73
|
+
else
|
|
74
|
+
label(attr, options[:label]) + content_tag(:div, class: 'controls', &block)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
56
78
|
def string_field(attr, options={})
|
|
57
|
-
|
|
79
|
+
conditional_wrapper attr, options do
|
|
58
80
|
param = options[:param] || "#{options[:value_attr] || attr}_cont"
|
|
59
81
|
options[:input_html] ||= {}
|
|
60
82
|
options[:input_html][:id] = "q_#{attr}"
|
|
@@ -88,6 +110,7 @@ module AbAdmin
|
|
|
88
110
|
end + label(attr, options[:label], class: 'right-label')
|
|
89
111
|
end
|
|
90
112
|
|
|
113
|
+
# Rails 4.2: Should be used only for string columns because of https://github.com/activerecord-hackery/ransack/issues/617
|
|
91
114
|
def presence_field(attr, options={})
|
|
92
115
|
yes_no_field(attr, options.merge(predicates: {yes: %w(present 1), no: %w(present 0)}))
|
|
93
116
|
end
|
|
@@ -96,7 +119,6 @@ module AbAdmin
|
|
|
96
119
|
yes_no_field(attr, options.merge(predicates: {yes: %w(null 0), no: %w(null 1)}))
|
|
97
120
|
end
|
|
98
121
|
|
|
99
|
-
|
|
100
122
|
def hidden_field(attr, options={})
|
|
101
123
|
hidden_field_tag("q[#{attr}_eq]", options[:value], options)
|
|
102
124
|
end
|
|
@@ -106,6 +128,10 @@ module AbAdmin
|
|
|
106
128
|
super(attr, text, options)
|
|
107
129
|
end
|
|
108
130
|
|
|
131
|
+
def extract_label(attr, options)
|
|
132
|
+
options[:label].presence || @object.klass.han(attr)
|
|
133
|
+
end
|
|
134
|
+
|
|
109
135
|
def field_type(attr, options={})
|
|
110
136
|
return options[:as].to_sym if options[:as]
|
|
111
137
|
return :string if attr =~ /^translations_/
|
|
@@ -28,7 +28,7 @@ module AbAdmin
|
|
|
28
28
|
|
|
29
29
|
def models
|
|
30
30
|
@models ||= begin
|
|
31
|
-
all_translated.reject { |m| conn.
|
|
31
|
+
all_translated.reject { |m| conn.data_source_exists? m.translations_table_name }
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
@@ -41,7 +41,7 @@ module AbAdmin
|
|
|
41
41
|
next if file =~ /(?:concerns|shared)\//
|
|
42
42
|
require file
|
|
43
43
|
end
|
|
44
|
-
ActiveRecord::Base.subclasses.find_all { |model| model.
|
|
44
|
+
ActiveRecord::Base.subclasses.find_all { |model| model.connection.data_source_exists?(model.table_name) }
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def conn
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class <%= migration_class_name %> < ActiveRecord::Migration
|
|
1
|
+
class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
|
|
2
2
|
def up
|
|
3
3
|
<%- models.each do |m| -%>
|
|
4
4
|
<%= m.name %>.create_translation_table! <%= model_attrs[m.name] %>
|
|
@@ -2,7 +2,7 @@ module Admin::StructuresHelper
|
|
|
2
2
|
|
|
3
3
|
def edit_structure_record_path(structure)
|
|
4
4
|
case structure.structure_type
|
|
5
|
-
when StructureType.static_page
|
|
5
|
+
when StructureType.static_page, StructureType.main
|
|
6
6
|
if structure.static_page
|
|
7
7
|
edit_admin_structure_static_page_path(structure_id: structure.id)
|
|
8
8
|
else
|
|
@@ -10,8 +10,6 @@ module Admin::StructuresHelper
|
|
|
10
10
|
end
|
|
11
11
|
when StructureType.posts
|
|
12
12
|
'#'
|
|
13
|
-
when StructureType.main
|
|
14
|
-
'#'
|
|
15
13
|
when StructureType.redirect
|
|
16
14
|
edit_admin_structure_path(structure)
|
|
17
15
|
when StructureType.group
|
|
@@ -20,5 +18,4 @@ module Admin::StructuresHelper
|
|
|
20
18
|
'#'
|
|
21
19
|
end
|
|
22
20
|
end
|
|
23
|
-
|
|
24
21
|
end
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
class Asset <
|
|
1
|
+
class Asset < ApplicationRecord
|
|
2
2
|
include AbAdmin::Models::Asset
|
|
3
3
|
|
|
4
|
-
attr_accessible :data, :is_main, :original_name, :base_filename
|
|
5
4
|
translates :name, :alt
|
|
6
|
-
attr_accessible *all_translated_attribute_names
|
|
7
5
|
|
|
8
6
|
validates_presence_of :data
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
|
|
8
|
+
default_scope -> { order("#{quoted_table_name}.sort_order") }
|
|
11
9
|
|
|
12
10
|
end
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
class Header <
|
|
2
|
-
|
|
3
|
-
attr_accessible :title, :keywords, :description, :h1, :seo_block
|
|
4
|
-
|
|
1
|
+
class Header < ApplicationRecord
|
|
5
2
|
translates :title, :keywords, :description, :h1, :seo_block, fallbacks_for_empty_translations: false
|
|
6
|
-
attr_accessible *all_translated_attribute_names
|
|
7
3
|
|
|
8
4
|
include AbAdmin::Models::Header
|
|
9
5
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
class StaticPage <
|
|
2
|
-
attr_accessible :structure_id, :title, :content, :kind, :is_visible
|
|
3
|
-
|
|
1
|
+
class StaticPage < ApplicationRecord
|
|
4
2
|
belongs_to :structure
|
|
5
3
|
|
|
6
4
|
has_many :pictures, as: :assetable, dependent: :destroy
|
|
@@ -12,6 +10,5 @@ class StaticPage < ActiveRecord::Base
|
|
|
12
10
|
|
|
13
11
|
fileuploads :pictures, :attachment_files
|
|
14
12
|
translates :title, :content
|
|
15
|
-
attr_accessible *all_translated_attribute_names
|
|
16
13
|
|
|
17
14
|
end
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
class Structure <
|
|
1
|
+
class Structure < ApplicationRecord
|
|
2
2
|
include AbAdmin::Models::Structure
|
|
3
3
|
|
|
4
|
-
attr_accessible :structure_type_id, :position_type_id, :parent_id, :title, :redirect_url, :is_visible,
|
|
5
|
-
:structure_type, :position_type, :slug, :parent
|
|
6
|
-
|
|
7
4
|
has_one :picture, -> { where(is_main: true) }, as: :assetable, dependent: :destroy
|
|
8
5
|
has_many :pictures, -> { where(is_main: false) }, as: :assetable, dependent: :destroy
|
|
9
6
|
|
|
10
7
|
fileuploads :picture
|
|
11
8
|
translates :title, :redirect_url
|
|
12
|
-
attr_accessible *all_translated_attribute_names
|
|
13
9
|
|
|
14
10
|
include AbAdmin::Concerns::AdminAddition
|
|
15
11
|
simple_slug :title
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
class User <
|
|
1
|
+
class User < ApplicationRecord
|
|
2
2
|
devise :database_authenticatable, :confirmable, :lockable,
|
|
3
3
|
:recoverable, :rememberable, :trackable, :validatable, :registerable,
|
|
4
4
|
:encryptable, encryptor: :sha512
|
|
5
5
|
|
|
6
|
-
attr_accessible :password, :password_confirmation, :email, :remember_me,
|
|
7
|
-
:login, :first_name, :last_name, :patronymic, :phone, :skype, :web_site, :address, :birthday,
|
|
8
|
-
:time_zone, :locale, :bg_color, :gender
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
attr_accessible :user_role_id, as: :admin
|
|
12
|
-
|
|
13
6
|
include AbAdmin::Concerns::AdminAddition
|
|
14
7
|
include AbAdmin::Models::User
|
|
15
8
|
|
|
@@ -26,5 +19,4 @@ class User < ActiveRecord::Base
|
|
|
26
19
|
return false if persisted? && password.blank?
|
|
27
20
|
super
|
|
28
21
|
end
|
|
29
|
-
|
|
30
22
|
end
|
data/lib/generators/template.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
gem 'jquery-rails'
|
|
1
2
|
gem 'rails-i18n'
|
|
2
3
|
gem 'slim'
|
|
3
4
|
|
|
4
|
-
gem 'inherited_resources'
|
|
5
|
+
gem 'inherited_resources', github: 'activeadmin/inherited_resources'
|
|
5
6
|
gem 'has_scope'
|
|
6
7
|
gem 'rack-pjax'
|
|
7
8
|
|
|
@@ -9,67 +10,60 @@ gem 'devise'
|
|
|
9
10
|
gem 'devise-encryptable'
|
|
10
11
|
gem 'cancancan'
|
|
11
12
|
|
|
12
|
-
gem 'protected_attributes'
|
|
13
|
+
gem 'protected_attributes', github: 'leschenko/protected_attributes'
|
|
13
14
|
gem 'galetahub-enum_field', require: 'enum_field'
|
|
14
15
|
gem 'ransack'
|
|
15
16
|
gem 'simple_slug'
|
|
16
17
|
gem 'awesome_nested_set'
|
|
17
|
-
gem 'globalize',
|
|
18
|
+
gem 'globalize', github: 'globalize/globalize'
|
|
18
19
|
|
|
19
20
|
gem 'carrierwave'
|
|
20
21
|
gem 'mini_magick'
|
|
22
|
+
# 3.0 is broken - creates new `configatron` instance in every namespace
|
|
21
23
|
gem 'configatron', '~> 2.13'
|
|
22
24
|
gem 'simple_form'
|
|
25
|
+
gem 'coffee-rails'
|
|
26
|
+
gem 'sass-rails'
|
|
27
|
+
gem 'uglifier'
|
|
23
28
|
gem 'will_paginate'
|
|
24
29
|
gem 'will_paginate-bootstrap'
|
|
25
30
|
gem 'bootstrap-sass'
|
|
26
|
-
gem 'bootstrap-wysihtml5-rails'
|
|
27
|
-
gem 'select2-rails'
|
|
31
|
+
gem 'bootstrap-wysihtml5-rails', '~> 0.3.1.24'
|
|
32
|
+
gem 'select2-rails', '~> 3.5.9.3'
|
|
28
33
|
gem 'jquery-fileupload-rails'
|
|
29
34
|
gem 'fancybox2-rails'
|
|
30
35
|
gem 'i18n-js'
|
|
31
36
|
|
|
32
37
|
gem 'ruby-progressbar'
|
|
33
|
-
gem 'ruby2xlsx'
|
|
34
38
|
gem 'rest-client'
|
|
35
39
|
gem 'nested_form', '~> 0.2.2'
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
install_ckeditor = yes?('Install ckeditor?')
|
|
42
|
+
gem 'ckeditor' if install_ckeditor
|
|
38
43
|
|
|
39
|
-
|
|
44
|
+
gem 'ab_admin', github: 'leschenko/ab_admin', branch: 'rails-5'
|
|
40
45
|
|
|
41
|
-
|
|
42
|
-
gem '
|
|
46
|
+
gem_group :development, :test do
|
|
47
|
+
gem 'rspec-rails'
|
|
48
|
+
gem 'factory_girl_rails'
|
|
49
|
+
gem 'launchy'
|
|
50
|
+
gem 'forgery'
|
|
51
|
+
gem 'byebug'
|
|
43
52
|
end
|
|
44
53
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
gem '
|
|
50
|
-
gem '
|
|
51
|
-
gem '
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
gem_group :development do
|
|
61
|
-
gem 'slim-rails'
|
|
62
|
-
gem 'annotate'
|
|
63
|
-
gem 'letter_opener'
|
|
64
|
-
gem 'better_errors'
|
|
65
|
-
gem 'binding_of_caller'
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
gem_group :test do
|
|
69
|
-
gem 'database_cleaner'
|
|
70
|
-
gem 'fuubar'
|
|
71
|
-
gem 'guard-rspec'
|
|
72
|
-
end
|
|
54
|
+
gem_group :test do
|
|
55
|
+
gem 'capybara'
|
|
56
|
+
gem 'database_cleaner'
|
|
57
|
+
gem 'connection_pool'
|
|
58
|
+
gem 'fuubar'
|
|
59
|
+
gem 'guard-rspec'
|
|
60
|
+
gem 'rb-fsevent', require: false
|
|
61
|
+
gem 'growl', require: false
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
gem_group :development do
|
|
65
|
+
gem 'better_errors'
|
|
66
|
+
gem 'binding_of_caller'
|
|
73
67
|
end
|
|
74
68
|
|
|
75
69
|
# run bundle install
|
|
@@ -77,14 +71,10 @@ run('bundle install')
|
|
|
77
71
|
#run('bundle install --path=vendor/bundle --binstubs')
|
|
78
72
|
|
|
79
73
|
# create database
|
|
80
|
-
if yes?('Create database?')
|
|
81
|
-
rake('db:create')
|
|
82
|
-
end
|
|
74
|
+
rake('db:create') if yes?('Create database?')
|
|
83
75
|
|
|
84
76
|
# run default generators
|
|
85
|
-
if
|
|
86
|
-
generate('ckeditor:install', '--orm=active_record', '--backend=carrierwave')
|
|
87
|
-
end
|
|
77
|
+
generate('ckeditor:install', '--orm=active_record', '--backend=carrierwave') if install_ckeditor
|
|
88
78
|
generate('devise:install')
|
|
89
79
|
generate('simple_form:install', '--bootstrap')
|
|
90
80
|
generate('ab_admin:install')
|
|
@@ -93,26 +83,16 @@ generate('ab_admin:install')
|
|
|
93
83
|
rake('ab_admin:install:migrations')
|
|
94
84
|
|
|
95
85
|
# init git
|
|
96
|
-
if yes?('Init empty git?')
|
|
97
|
-
git(:init)
|
|
98
|
-
end
|
|
86
|
+
git(:init) if yes?('Init empty git?')
|
|
99
87
|
|
|
100
88
|
# create && migrate database
|
|
101
|
-
if yes?('Run db:migrate?')
|
|
102
|
-
rake('db:migrate')
|
|
103
|
-
end
|
|
89
|
+
rake('db:migrate') if yes?('Run db:migrate?')
|
|
104
90
|
|
|
105
91
|
# run db seed
|
|
106
|
-
if yes?('Run db:seed?')
|
|
107
|
-
rake('db:seed')
|
|
108
|
-
end
|
|
92
|
+
rake('db:seed') if yes?('Run db:seed?')
|
|
109
93
|
|
|
110
94
|
# copy ckeditor assets to public/javascripts
|
|
111
|
-
if
|
|
112
|
-
generate('ab_admin:ckeditor_assets')
|
|
113
|
-
end
|
|
95
|
+
generate('ab_admin:ckeditor_assets') if install_ckeditor
|
|
114
96
|
|
|
115
97
|
# run db seed
|
|
116
|
-
if yes?('Export i18n js locales?')
|
|
117
|
-
rake('i18n:js:export')
|
|
118
|
-
end
|
|
98
|
+
rake('i18n:js:export') if yes?('Export i18n js locales?')
|