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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +6 -2
  3. data/app/assets/javascripts/ab_admin/components/base_assets.js.coffee +9 -0
  4. data/app/assets/javascripts/ab_admin/components/gmaps.js.coffee +1 -1
  5. data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +6 -0
  6. data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +2 -2
  7. data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +52 -12
  8. data/app/assets/javascripts/ab_admin/core/init.js.coffee +2 -0
  9. data/app/assets/javascripts/ab_admin/core/pjax.js.coffee +3 -2
  10. data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +3 -4
  11. data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.scss +4 -0
  12. data/app/assets/stylesheets/ab_admin/components/_colored_tabs.scss +4 -0
  13. data/app/assets/stylesheets/ab_admin/components/_form.scss +36 -3
  14. data/app/controllers/admin/admin_comments_controller.rb +4 -0
  15. data/app/controllers/admin/assets_controller.rb +5 -2
  16. data/app/controllers/admin/base_controller.rb +50 -41
  17. data/app/controllers/admin/locators_controller.rb +1 -1
  18. data/app/controllers/admin/manager_controller.rb +32 -3
  19. data/app/controllers/admin/settings_controller.rb +2 -3
  20. data/app/controllers/admin/static_pages_controller.rb +5 -0
  21. data/app/controllers/admin/structures_controller.rb +10 -4
  22. data/app/controllers/admin/users_controller.rb +9 -2
  23. data/app/views/admin/base/_search_layout.html.slim +0 -1
  24. data/app/views/admin/base/index.html.slim +1 -2
  25. data/app/views/admin/fileupload/_container.html.slim +17 -10
  26. data/app/views/admin/shared/_content_actions.html.slim +18 -6
  27. data/app/views/admin/shared/_locale_tabs.html.slim +3 -3
  28. data/app/views/admin/structures/_form.html.slim +2 -1
  29. data/app/views/layouts/admin/_footer.html.slim +5 -4
  30. data/app/views/layouts/admin/application.html.slim +2 -0
  31. data/config/locales/ru.yml +1 -0
  32. data/config/routes.rb +17 -22
  33. data/lib/ab_admin.rb +11 -1
  34. data/lib/ab_admin/abstract_resource.rb +11 -2
  35. data/lib/ab_admin/carrierwave/base_uploader.rb +45 -25
  36. data/lib/ab_admin/carrierwave/file_size_validator.rb +0 -1
  37. data/lib/ab_admin/carrierwave/glue.rb +2 -4
  38. data/lib/ab_admin/concerns/admin_addition.rb +12 -4
  39. data/lib/ab_admin/concerns/deep_cloneable.rb +0 -1
  40. data/lib/ab_admin/concerns/fileuploads.rb +0 -1
  41. data/lib/ab_admin/concerns/headerable.rb +0 -4
  42. data/lib/ab_admin/concerns/nested_set.rb +2 -3
  43. data/lib/ab_admin/concerns/reloadable.rb +0 -2
  44. data/lib/ab_admin/concerns/silencer.rb +0 -3
  45. data/lib/ab_admin/concerns/utilities.rb +2 -4
  46. data/lib/ab_admin/concerns/validations.rb +1 -1
  47. data/lib/ab_admin/config/base.rb +26 -6
  48. data/lib/ab_admin/controllers/callbacks.rb +6 -6
  49. data/lib/ab_admin/controllers/head_options.rb +0 -1
  50. data/lib/ab_admin/controllers/tree.rb +0 -2
  51. data/lib/ab_admin/core_ext.rb +1 -1
  52. data/lib/ab_admin/core_ext/array.rb +0 -1
  53. data/lib/ab_admin/core_ext/hash.rb +11 -0
  54. data/lib/ab_admin/core_ext/string.rb +0 -1
  55. data/lib/ab_admin/devise.rb +1 -1
  56. data/lib/ab_admin/engine.rb +2 -1
  57. data/lib/ab_admin/hooks/globalize_locale_suffix_accessors.rb +17 -31
  58. data/lib/ab_admin/hooks/will_paginate_no_uri.rb +1 -1
  59. data/lib/ab_admin/i18n_tools/google_translate.rb +0 -1
  60. data/lib/ab_admin/i18n_tools/translate_app.rb +0 -1
  61. data/lib/ab_admin/menu/builder.rb +3 -2
  62. data/lib/ab_admin/menu/group.rb +3 -1
  63. data/lib/ab_admin/models/asset.rb +9 -6
  64. data/lib/ab_admin/models/header.rb +2 -3
  65. data/lib/ab_admin/models/locator.rb +1 -1
  66. data/lib/ab_admin/models/settings.rb +6 -6
  67. data/lib/ab_admin/models/structure.rb +0 -6
  68. data/lib/ab_admin/models/track.rb +12 -3
  69. data/lib/ab_admin/models/type_model.rb +0 -1
  70. data/lib/ab_admin/models/user.rb +0 -1
  71. data/lib/ab_admin/models/validations/all.rb +4 -0
  72. data/lib/ab_admin/models/validations/domain_name_validator.rb +9 -0
  73. data/lib/ab_admin/models/validations/email_validator.rb +9 -0
  74. data/lib/ab_admin/utils.rb +12 -4
  75. data/lib/ab_admin/utils/eval_helpers.rb +1 -1
  76. data/lib/ab_admin/utils/logger.rb +0 -2
  77. data/lib/ab_admin/utils/xls_document.rb +25 -6
  78. data/lib/ab_admin/version.rb +1 -1
  79. data/lib/ab_admin/views/admin_helpers.rb +5 -4
  80. data/lib/ab_admin/views/admin_navigation_helpers.rb +16 -5
  81. data/lib/ab_admin/views/form_builder.rb +41 -10
  82. data/lib/ab_admin/views/helpers.rb +0 -2
  83. data/lib/ab_admin/views/inputs/uploader_input.rb +1 -0
  84. data/lib/ab_admin/views/search_form_builder.rb +33 -7
  85. data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +0 -1
  86. data/lib/generators/ab_admin/glob/glob_generator.rb +2 -2
  87. data/lib/generators/ab_admin/glob/templates/migration.erb +1 -1
  88. data/lib/generators/ab_admin/install/install_generator.rb +0 -1
  89. data/lib/generators/ab_admin/install/templates/config/seeds.rb +0 -2
  90. data/lib/generators/ab_admin/install/templates/helpers/admin/structures_helper.rb +1 -4
  91. data/lib/generators/ab_admin/install/templates/models/admin_comment.rb +1 -3
  92. data/lib/generators/ab_admin/install/templates/models/asset.rb +3 -5
  93. data/lib/generators/ab_admin/install/templates/models/header.rb +1 -5
  94. data/lib/generators/ab_admin/install/templates/models/static_page.rb +1 -4
  95. data/lib/generators/ab_admin/install/templates/models/structure.rb +1 -5
  96. data/lib/generators/ab_admin/install/templates/models/track.rb +1 -2
  97. data/lib/generators/ab_admin/install/templates/models/user.rb +1 -9
  98. data/lib/generators/ab_admin/install/templates/uploaders/attachment_file_uploader.rb +1 -1
  99. data/lib/generators/ab_admin/install/templates/uploaders/avatar_uploader.rb +1 -1
  100. data/lib/generators/ab_admin/install/templates/uploaders/picture_uploader.rb +1 -1
  101. data/lib/generators/ab_admin/model/templates/resource.erb +1 -0
  102. data/lib/generators/template.rb +39 -59
  103. metadata +38 -36
  104. 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.html_safe
39
- return template.input_set(title) { data_fields + geo_input(prefix, options[:js_options]) }
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
- loc_html = {}
73
- Globalize.available_locales.each do |l|
74
- loc_html[l] = template.capture { block.call(l) }
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', loc_html: loc_html
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">
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  module AbAdmin
3
2
  module Views
4
3
  module Helpers
@@ -80,7 +79,6 @@ module AbAdmin
80
79
 
81
80
  output_buffer
82
81
  end
83
-
84
82
  end
85
83
  end
86
84
  end
@@ -80,6 +80,7 @@ module AbAdmin
80
80
  sortable: @options[:sortable],
81
81
  edit_meta: @options[:edit_meta],
82
82
  crop: @options[:crop],
83
+ disabled: @options[:disabled],
83
84
  fileupload: {
84
85
  url: AbAdmin.fileupload_url,
85
86
  maxNumberOfFiles: @options[:max_files],
@@ -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
- content_tag :div, class: "clearfix #{field_type} #{options[:wrapper_class]}" do
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
- label(attr, options[:label]) + content_tag(:div, class: 'controls') do
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
- html_options = options[:input_html].merge(include_blank: true, id: "q_#{attr}")
35
- select_tag("q[#{param}]", options_for_select(collection, params[:q][param]), html_options)
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.val(:q, options[:param]) ? klass.where(id: params[:q][options[:param]]).map(&:for_input_token) : []
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
- label(attr, options[:label]) + content_tag(:div, class: 'controls') do
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_/
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  module AbAdmin
3
2
  module Generators
4
3
  class CkeditorAssetsGenerator < Rails::Generators::Base
@@ -28,7 +28,7 @@ module AbAdmin
28
28
 
29
29
  def models
30
30
  @models ||= begin
31
- all_translated.reject { |m| conn.table_exists? m.translations_table_name }
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.table_exists? }
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] %>
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  module AbAdmin
3
2
  module Generators
4
3
  class InstallGenerator < Rails::Generators::Base
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  def insert_user
4
2
  User.truncate!
5
3
  password = Rails.env.production? ? Devise.friendly_token : (1..8).to_a.join
@@ -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,5 +1,3 @@
1
- class AdminComment < ActiveRecord::Base
1
+ class AdminComment < ApplicationRecord
2
2
  include AbAdmin::Models::AdminComment
3
-
4
- attr_accessible :body, :resource_id, :resource_type
5
3
  end
@@ -1,12 +1,10 @@
1
- class Asset < ActiveRecord::Base
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
- default_scope -> { order("#{quoted_table_name}.sort_order") }
7
+
8
+ default_scope -> { order("#{quoted_table_name}.sort_order") }
11
9
 
12
10
  end
@@ -1,9 +1,5 @@
1
- class Header < ActiveRecord::Base
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 < ActiveRecord::Base
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 < ActiveRecord::Base
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,5 +1,4 @@
1
- class Track < ActiveRecord::Base
1
+ class Track < ApplicationRecord
2
2
  include AbAdmin::Models::Track
3
3
 
4
- attr_accessible :key, :name, :user, :owner, :trackable, :trackable_changes, :parameters
5
4
  end
@@ -1,15 +1,8 @@
1
- class User < ActiveRecord::Base
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
@@ -1,5 +1,5 @@
1
1
  class AttachmentFileUploader < AbAdmin::CarrierWave::BaseUploader
2
- def extension_white_list
2
+ def extension_whitelist
3
3
  %w(pdf doc docx xls xlsx ppt pptx jpg jpeg gif png zip rar csv)
4
4
  end
5
5
  end
@@ -6,7 +6,7 @@ class AvatarUploader < AbAdmin::CarrierWave::BaseUploader
6
6
  process resize_to_fill: [80, 80, 'North']
7
7
  end
8
8
 
9
- def extension_white_list
9
+ def extension_whitelist
10
10
  %w(jpg jpeg gif png)
11
11
  end
12
12
 
@@ -7,7 +7,7 @@ class PictureUploader < AbAdmin::CarrierWave::BaseUploader
7
7
  process resize_to_fill: [80, 80]
8
8
  end
9
9
 
10
- def extension_white_list
10
+ def extension_whitelist
11
11
  %w(jpg jpeg gif png)
12
12
  end
13
13
  end
@@ -1,4 +1,5 @@
1
1
  class AbAdmin<%= model.name %> < AbAdmin::AbstractResource
2
+ permitted_params :all
2
3
 
3
4
  <% if model.respond_to?(:acts_as_nested_set_options) -%>
4
5
  settings index_view: 'tree'
@@ -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', '~> 5.0.0'
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
- gem 'ab_admin', github: 'leschenko/ab_admin', branch: 'master'
41
+ install_ckeditor = yes?('Install ckeditor?')
42
+ gem 'ckeditor' if install_ckeditor
38
43
 
39
- ckeditor = yes?('Install ckeditor?')
44
+ gem 'ab_admin', github: 'leschenko/ab_admin', branch: 'rails-5'
40
45
 
41
- if ckeditor
42
- gem 'ckeditor'
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
- gem_adds = yes?('Add additional gems (mostly dev and testing tools)?')
46
-
47
- if gem_adds
48
- # non dependency gems
49
- gem 'dalli'
50
- gem 'exception_notification'
51
- gem 'redis-actionpack'
52
-
53
- gem_group :development, :test do
54
- gem 'quiet_assets'
55
- gem 'rspec-rails'
56
- gem 'factory_girl_rails'
57
- gem 'forgery'
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 ckeditor
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 ckeditor
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?')