sunrise-cms 1.1.0 → 2.0.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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +49 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +3 -1
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.rdoc +13 -3
  7. data/Gemfile +11 -22
  8. data/Gemfile.lock +344 -214
  9. data/README.md +47 -33
  10. data/Rakefile +1 -0
  11. data/app/assets/config/manifest.js +1 -0
  12. data/app/assets/images/sunrise/icons/export.svg +4 -0
  13. data/app/assets/images/sunrise/icons/import.svg +5 -0
  14. data/app/assets/javascripts/sunrise/application.js +2 -5
  15. data/app/assets/javascripts/sunrise/jquery.dialog.js.coffee +113 -40
  16. data/app/assets/javascripts/sunrise/jquery.editable.js.coffee +21 -21
  17. data/app/assets/javascripts/sunrise/manage.js.coffee +29 -28
  18. data/app/assets/stylesheets/sunrise/application.css +0 -1
  19. data/app/assets/stylesheets/sunrise/customize.css +7 -4
  20. data/app/assets/stylesheets/sunrise/main.css +883 -606
  21. data/app/controllers/sunrise/manager_controller.rb +44 -7
  22. data/app/controllers/sunrise/settings_controller.rb +2 -3
  23. data/app/helpers/sunrise/structure_helper.rb +2 -2
  24. data/app/views/layouts/sunrise/application.html.erb +9 -6
  25. data/app/views/sunrise/manager/_field.html.erb +5 -5
  26. data/app/views/sunrise/manager/_form.html.erb +15 -15
  27. data/app/views/sunrise/manager/_header_edit.html.erb +3 -4
  28. data/app/views/sunrise/manager/_header_new.html.erb +3 -3
  29. data/app/views/sunrise/manager/_header_show.html.erb +9 -13
  30. data/app/views/sunrise/manager/_nested_field.html.erb +6 -6
  31. data/app/views/sunrise/manager/buttons/_export.html.erb +9 -2
  32. data/app/views/sunrise/manager/buttons/_import.html.erb +25 -0
  33. data/app/views/sunrise/manager/buttons/_sort.html.erb +3 -3
  34. data/app/views/sunrise/manager/edit.html.erb +1 -1
  35. data/app/views/sunrise/manager/new.html.erb +1 -1
  36. data/app/views/sunrise/manager/structures/thumbs/_record.html.erb +19 -16
  37. data/app/views/sunrise/manager/thumbs/_record.html.erb +26 -22
  38. data/app/views/sunrise/manager/tree/index.html.erb +1 -1
  39. data/app/views/sunrise/settings/_form.html.erb +5 -5
  40. data/app/views/sunrise/settings/_header_edit.html.erb +3 -4
  41. data/config/locales/sunrise/en.yml +35 -35
  42. data/config/locales/sunrise/ru.yml +35 -35
  43. data/config/locales/sunrise/uk.yml +35 -35
  44. data/config/routes.rb +1 -0
  45. data/db/migrate/20111216144515_create_assets.rb +1 -1
  46. data/db/migrate/20111216144915_create_structures.rb +1 -1
  47. data/db/migrate/20111216145015_create_users.rb +1 -1
  48. data/db/migrate/20120611095315_create_settings.rb +1 -1
  49. data/lib/generators/sunrise/templates/config/active_record/sunrise.rb +0 -4
  50. data/lib/generators/sunrise/templates/config/mongoid/sunrise.rb +0 -4
  51. data/lib/generators/sunrise/templates/models/active_record/attachment_file.rb +0 -2
  52. data/lib/generators/sunrise/templates/models/active_record/avatar.rb +0 -2
  53. data/lib/generators/sunrise/templates/models/active_record/picture.rb +0 -2
  54. data/lib/generators/sunrise/templates/models/active_record/position_type.rb +4 -4
  55. data/lib/generators/sunrise/templates/models/active_record/role_type.rb +5 -5
  56. data/lib/generators/sunrise/templates/models/active_record/settings.rb +14 -2
  57. data/lib/generators/sunrise/templates/models/active_record/structure_type.rb +6 -6
  58. data/lib/generators/sunrise/templates/models/mongoid/attachment_file.rb +0 -2
  59. data/lib/generators/sunrise/templates/models/mongoid/avatar.rb +0 -2
  60. data/lib/generators/sunrise/templates/models/mongoid/picture.rb +0 -2
  61. data/lib/generators/sunrise/templates/models/mongoid/position_type.rb +4 -4
  62. data/lib/generators/sunrise/templates/models/mongoid/role_type.rb +5 -5
  63. data/lib/generators/sunrise/templates/models/mongoid/structure_type.rb +6 -6
  64. data/lib/generators/sunrise/templates/models/sunrise/sunrise_structure.rb +2 -2
  65. data/lib/generators/sunrise/templates/spec/controllers/pages_controller_spec.rb +2 -2
  66. data/lib/generators/sunrise/templates/spec/controllers/welcome_controller_spec.rb +1 -1
  67. data/lib/generators/sunrise/templates/spec/factories/structure_factory.rb +2 -2
  68. data/lib/generators/sunrise/templates/spec/factories/user_factory.rb +6 -6
  69. data/lib/generators/sunrise/templates/spec/spec_helper.rb +1 -1
  70. data/lib/generators/sunrise/templates/spec/support/helpers/controller_macros.rb +4 -4
  71. data/lib/generators/sunrise/templates/uploaders/attachment_file_uploader.rb +4 -0
  72. data/lib/generators/sunrise/templates/uploaders/avatar_uploader.rb +4 -0
  73. data/lib/generators/sunrise/templates/uploaders/picture_uploader.rb +4 -0
  74. data/lib/sunrise/abstract_model.rb +13 -3
  75. data/lib/sunrise/carrierwave/glue.rb +1 -7
  76. data/lib/sunrise/config/model.rb +4 -0
  77. data/lib/sunrise/config.rb +0 -5
  78. data/lib/sunrise/core_ext/string.rb +0 -5
  79. data/lib/sunrise/engine.rb +7 -1
  80. data/lib/sunrise/models/ability.rb +8 -8
  81. data/lib/sunrise/models/position_type.rb +1 -7
  82. data/lib/sunrise/models/role_type.rb +4 -6
  83. data/lib/sunrise/models/structure.rb +3 -3
  84. data/lib/sunrise/models/structure_type.rb +1 -7
  85. data/lib/sunrise/models/user.rb +4 -4
  86. data/lib/sunrise/utils.rb +1 -2
  87. data/lib/sunrise/version.rb +1 -1
  88. data/lib/sunrise/views/search_wrapper.rb +1 -1
  89. data/sunrise-cms.gemspec +8 -13
  90. metadata +24 -65
  91. data/.rspec +0 -2
  92. data/lib/sunrise/carrierwave/file_size_validator.rb +0 -75
  93. data/lib/sunrise/utils/transliteration.rb +0 -73
@@ -15,4 +15,8 @@ class PictureUploader < Sunrise::CarrierWave::BaseUploader
15
15
  def extension_white_list
16
16
  %w[jpg jpeg gif png]
17
17
  end
18
+
19
+ def size_range
20
+ 100..2.megabytes.to_i
21
+ end
18
22
  end
@@ -50,14 +50,14 @@ module Sunrise
50
50
  delegate :label, to: 'self.class.config'
51
51
  delegate :param_key, :singular, :plural, :route_key, to: :model_name
52
52
 
53
- define_model_callbacks :sort, :mass_destroy, only: [:before, :after]
53
+ define_model_callbacks :sort, :mass_destroy, only: %i[before after]
54
54
 
55
55
  def initialize(params = {})
56
56
  @model_name = model.model_name
57
57
  @current_list = config.default_index_view
58
58
  @available_index_views = config.available_index_views
59
59
  @sort_column = config.sort_column
60
- @request_params = params.symbolize_keys
60
+ @request_params = params.try(:symbolize_keys) || params
61
61
  self.current_list = params[:view]
62
62
  end
63
63
 
@@ -65,6 +65,16 @@ module Sunrise
65
65
  @request_params[param_key.to_sym] || {}
66
66
  end
67
67
 
68
+ def permit_model_params(*filters)
69
+ params = @request_params[param_key.to_sym]
70
+
71
+ if params
72
+ filters.empty? ? params.permit! : params.permit(*filters)
73
+ else
74
+ {}
75
+ end
76
+ end
77
+
68
78
  # Save current list view
69
79
  def current_list=(value)
70
80
  @current_list = value.to_sym if value && @available_index_views.include?(value.to_sym)
@@ -183,7 +193,7 @@ module Sunrise
183
193
  if model.respond_to?(:sunrise_search) && params[:search].present?
184
194
  scope = model.sunrise_search(params[:search])
185
195
  end
186
- scope ||= model.where(nil)
196
+ scope ||= model.all
187
197
 
188
198
  scope = scope.merge(association_scope) unless parent_record.nil?
189
199
  scope = scope.merge(sort_scope(params[:sort])) if params[:sort].present?
@@ -10,15 +10,9 @@ module Sunrise
10
10
 
11
11
  module ClassMethods
12
12
  def sunrise_uploader(uploader = nil, options = {}, &block)
13
- options = { mount_on: :data_file_name }.merge(options)
13
+ options = { mount_on: :data_file_name }.merge!(options)
14
14
 
15
15
  mount_uploader(:data, uploader, options, &block)
16
-
17
- validates_processing_of :data
18
- end
19
-
20
- def validates_filesize_of(*attr_names)
21
- validates_with FileSizeValidator, _merge_attributes(attr_names)
22
16
  end
23
17
  end
24
18
 
@@ -38,6 +38,10 @@ module Sunrise
38
38
  Config.available_index_views
39
39
  end
40
40
 
41
+ register_instance_option(:available_import) do
42
+ Config.available_import
43
+ end
44
+
41
45
  register_instance_option(:sort_column) do
42
46
  Config.sort_column
43
47
  end
@@ -40,11 +40,6 @@ module Sunrise
40
40
  mattr_accessor :available_locales
41
41
  @@available_locales = []
42
42
 
43
- # Set transliteration for babosa gem
44
- # more info here: https://github.com/norman/babosa
45
- mattr_accessor :transliteration
46
- @@transliteration = :russian
47
-
48
43
  # Set index toolbar buttons
49
44
  mattr_accessor :default_toolbar_buttons
50
45
  @@default_toolbar_buttons = [:delete, :edit, :new, :sort, :export]
@@ -3,11 +3,6 @@
3
3
  require 'active_support/inflector/inflections'
4
4
 
5
5
  class String
6
- def parameterize(sep = '-')
7
- value = Sunrise::Utils::Transliteration.transliterate(self)
8
- ActiveSupport::Inflector.parameterize(value, sep)
9
- end
10
-
11
6
  def self.randomize(length = 8)
12
7
  Array.new(length) { (rand(122 - 97) + 97).chr }.join
13
8
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'rails'
4
4
  require 'sunrise'
5
+ require 'jquery-ui-rails'
5
6
 
6
7
  module Sunrise
7
8
  class Engine < ::Rails::Engine
@@ -10,6 +11,11 @@ module Sunrise
10
11
 
11
12
  config.i18n.load_path += Dir[Sunrise.root_path.join('config/locales/**', '*.{rb,yml}')]
12
13
 
14
+ config.assets.precompile += %w[sunrise/application.css sunrise/application.js]
15
+ config.assets.precompile += Dir[Sunrise.root_path.join('app/assets/images/sunrise/**/*')].map do |file|
16
+ Pathname.new(file).relative_path_from(Sunrise.root_path.join('app/assets/images')).to_s
17
+ end
18
+
13
19
  initializer 'sunrise.setup' do
14
20
  I18n::Backend::Simple.include I18n::Backend::Pluralization
15
21
  I18n::Backend::Simple.include I18n::Backend::Transliterator
@@ -28,7 +34,7 @@ module Sunrise
28
34
  initializer 'sunrise.csv_renderer' do
29
35
  ::ActionController::Renderers.add :csv do |collection, options|
30
36
  doc = Sunrise::Utils::CsvDocument.new(collection, options)
31
- send_data(doc.render, filename: doc.filename, type: Mime::CSV, disposition: 'attachment')
37
+ send_data(doc.render, filename: doc.filename, disposition: 'attachment')
32
38
  end
33
39
  end
34
40
  end
@@ -1,22 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cancan_namespace'
4
-
5
3
  module Sunrise
6
4
  module Models
7
5
  class Ability
8
- include CanCanNamespace::Ability
6
+ include CanCan::Ability
9
7
 
10
8
  attr_accessor :context, :user
11
9
 
12
10
  def initialize(user, context = nil)
13
- alias_action :delete, to: :destroy
11
+ # alias_action :delete, to: :destroy
14
12
 
15
13
  @user = (user || ::User.new) # guest user (not logged in)
16
14
  @context = context
17
15
 
18
16
  if @user.persisted? && @user.role_type
19
- send @user.role_type.code
17
+ send @user.role_type.name
20
18
  else
21
19
  guest
22
20
  end
@@ -24,13 +22,15 @@ module Sunrise
24
22
 
25
23
  def admin
26
24
  can :manage, :all
27
- can :manage, :all, context: :sunrise
25
+ # can :manage, :all, context: :sunrise
28
26
 
29
27
  # User cannot destroy self account
30
- cannot :destroy, ::User, id: @user.id, context: :sunrise
28
+ # cannot :destroy, ::User, id: @user.id, context: :sunrise
29
+ cannot :destroy, ::User, id: @user.id
31
30
 
32
31
  # User cannot destroy root structure
33
- cannot :destroy, ::Structure, structure_type_id: ::StructureType.main.id, context: :sunrise
32
+ # cannot :destroy, ::Structure, structure_type_id: ::StructureType.main.id, context: :sunrise
33
+ cannot :destroy, ::Structure, structure_type_id: ::StructureType.main.id
34
34
  end
35
35
  end
36
36
  end
@@ -5,14 +5,8 @@ module Sunrise
5
5
  class PositionType
6
6
  include EnumField::DefineEnum
7
7
 
8
- attr_reader :code
9
-
10
- def initialize(code)
11
- @code = code.to_sym
12
- end
13
-
14
8
  def title
15
- I18n.t(@code, scope: [:manage, :structure, :position])
9
+ I18n.t(name, scope: 'manage.structure.position')
16
10
  end
17
11
  end
18
12
  end
@@ -5,14 +5,12 @@ module Sunrise
5
5
  class RoleType
6
6
  include EnumField::DefineEnum
7
7
 
8
- attr_reader :code
9
-
10
- def initialize(code)
11
- @code = code.to_sym
8
+ def title
9
+ I18n.t(name, scope: 'manage.role.name')
12
10
  end
13
11
 
14
- def title
15
- I18n.t(@code, scope: [:manage, :role, :kind])
12
+ def code
13
+ name
16
14
  end
17
15
 
18
16
  def self.legal?(value)
@@ -13,9 +13,9 @@ module Sunrise
13
13
  enumerated_attribute :structure_type
14
14
  enumerated_attribute :position_type
15
15
 
16
- validates_presence_of :title
17
- validates_numericality_of :position_type_id, only_integer: true
18
- validates_numericality_of :structure_type_id, only_integer: true
16
+ validates :title, presence: true
17
+ validates :position_type_id, numericality: { only_integer: true }
18
+ validates :structure_type_id, numericality: { only_integer: true }
19
19
 
20
20
  acts_as_nested_set
21
21
 
@@ -5,14 +5,8 @@ module Sunrise
5
5
  class StructureType
6
6
  include EnumField::DefineEnum
7
7
 
8
- attr_reader :kind
9
-
10
- def initialize(value)
11
- @kind = value.to_sym
12
- end
13
-
14
8
  def title
15
- I18n.t(@kind, scope: [:manage, :structure, :kind])
9
+ I18n.t(name, scope: 'manage.structure.name')
16
10
  end
17
11
  end
18
12
  end
@@ -15,10 +15,10 @@ module Sunrise
15
15
 
16
16
  has_one :avatar, as: :assetable, dependent: :destroy, autosave: true
17
17
 
18
- after_initialize :set_default_role
18
+ before_create :set_default_role
19
19
 
20
20
  validates :name, presence: true
21
- validate :check_role
21
+ validate :ensure_role_is_allowed
22
22
 
23
23
  scope :with_email, ->(email) { where(email: email) }
24
24
  scope :with_name, ->(name) { where(name: name) }
@@ -84,10 +84,10 @@ module Sunrise
84
84
  protected
85
85
 
86
86
  def set_default_role
87
- self.role_type ||= ::RoleType.default
87
+ self.role_type_id ||= ::RoleType.default.id
88
88
  end
89
89
 
90
- def check_role
90
+ def ensure_role_is_allowed
91
91
  errors.add(:role_type_id, :invalid) unless ::RoleType.legal?(role_type_id)
92
92
  end
93
93
  end
data/lib/sunrise/utils.rb CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Sunrise
4
4
  module Utils
5
- autoload :Transliteration, 'sunrise/utils/transliteration'
6
5
  autoload :EvalHelpers, 'sunrise/utils/eval_helpers'
7
6
  autoload :CsvDocument, 'sunrise/utils/csv_document'
8
7
  autoload :SearchWrapper, 'sunrise/utils/search_wrapper'
@@ -48,7 +47,7 @@ module Sunrise
48
47
  # Convert input to friendly slug using babosa gem
49
48
  #
50
49
  def self.normalize_friendly_id(input)
51
- input.to_s.to_slug.normalize(transliterations: Sunrise::Config.transliteration).to_s
50
+ input.to_s.parameterize
52
51
  end
53
52
  end
54
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sunrise
4
- VERSION = '1.1.0'
4
+ VERSION = '2.0.0'.freeze
5
5
  end
@@ -9,7 +9,7 @@ module Sunrise
9
9
 
10
10
  def self.model_name
11
11
  @_model_name ||= begin
12
- namespace = parents.detect { |n| n.respond_to?(:_railtie) }
12
+ namespace = module_parents.detect { |n| n.respond_to?(:_railtie) }
13
13
  ActiveModel::Name.new(self, namespace, 'search')
14
14
  end
15
15
  end
data/sunrise-cms.gemspec CHANGED
@@ -13,7 +13,6 @@ Gem::Specification.new do |s|
13
13
  s.description = 'Sunrise is a Open Source CMS'
14
14
  s.authors = ['Igor Galeta', 'Pavlo Galeta']
15
15
  s.email = 'galeta.igor@gmail.com'
16
- s.rubyforge_project = 'sunrise-cms'
17
16
  s.homepage = 'https://github.com/galetahub/sunrise'
18
17
  s.license = 'MIT'
19
18
 
@@ -26,27 +25,23 @@ Gem::Specification.new do |s|
26
25
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
26
  s.require_paths = ['lib']
28
27
 
29
- s.add_dependency('kaminari')
30
28
  s.add_dependency('rails', '>= 4.0.0')
29
+ s.add_dependency('kaminari')
31
30
  s.add_dependency('simple_form')
32
-
33
- s.add_dependency('babosa')
34
- s.add_dependency('cancan')
35
- s.add_dependency('cancan_namespace')
31
+ s.add_dependency('cancancan')
36
32
  s.add_dependency('carrierwave')
37
33
  s.add_dependency('galetahub-enum_field')
38
- s.add_dependency('jquery-ui-rails', '>= 5.0.0')
39
- s.add_dependency('meta_manager', '>= 0.2.0')
34
+ s.add_dependency('jquery-ui-rails')
35
+ s.add_dependency('meta_manager')
40
36
  s.add_dependency('mime-types')
41
37
  s.add_dependency('mini_magick')
42
- s.add_dependency('page_parts', '>= 0.1.3')
43
- s.add_dependency('public_activity', '>= 1.0.0')
44
- s.add_dependency('rails-settings-cached', '>= 0.4.0')
38
+ s.add_dependency('page_parts')
39
+ s.add_dependency('public_activity')
40
+ s.add_dependency('rails-settings-cached')
45
41
  s.add_dependency('rails-uploader')
46
- s.add_dependency('select2-rails')
47
42
 
48
43
  s.add_development_dependency('capybara')
49
44
  s.add_development_dependency('database_cleaner')
50
- s.add_development_dependency('factory_girl_rails')
45
+ s.add_development_dependency('factory_bot_rails')
51
46
  s.add_development_dependency('rspec-rails')
52
47
  end
metadata CHANGED
@@ -1,30 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunrise-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Galeta
8
8
  - Pavlo Galeta
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-06 00:00:00.000000000 Z
12
+ date: 2025-06-03 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: kaminari
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: rails
30
16
  requirement: !ruby/object:Gem::Requirement
@@ -40,21 +26,7 @@ dependencies:
40
26
  - !ruby/object:Gem::Version
41
27
  version: 4.0.0
42
28
  - !ruby/object:Gem::Dependency
43
- name: simple_form
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
- - !ruby/object:Gem::Dependency
57
- name: babosa
29
+ name: kaminari
58
30
  requirement: !ruby/object:Gem::Requirement
59
31
  requirements:
60
32
  - - ">="
@@ -68,7 +40,7 @@ dependencies:
68
40
  - !ruby/object:Gem::Version
69
41
  version: '0'
70
42
  - !ruby/object:Gem::Dependency
71
- name: cancan
43
+ name: simple_form
72
44
  requirement: !ruby/object:Gem::Requirement
73
45
  requirements:
74
46
  - - ">="
@@ -82,7 +54,7 @@ dependencies:
82
54
  - !ruby/object:Gem::Version
83
55
  version: '0'
84
56
  - !ruby/object:Gem::Dependency
85
- name: cancan_namespace
57
+ name: cancancan
86
58
  requirement: !ruby/object:Gem::Requirement
87
59
  requirements:
88
60
  - - ">="
@@ -129,28 +101,28 @@ dependencies:
129
101
  requirements:
130
102
  - - ">="
131
103
  - !ruby/object:Gem::Version
132
- version: 5.0.0
104
+ version: '0'
133
105
  type: :runtime
134
106
  prerelease: false
135
107
  version_requirements: !ruby/object:Gem::Requirement
136
108
  requirements:
137
109
  - - ">="
138
110
  - !ruby/object:Gem::Version
139
- version: 5.0.0
111
+ version: '0'
140
112
  - !ruby/object:Gem::Dependency
141
113
  name: meta_manager
142
114
  requirement: !ruby/object:Gem::Requirement
143
115
  requirements:
144
116
  - - ">="
145
117
  - !ruby/object:Gem::Version
146
- version: 0.2.0
118
+ version: '0'
147
119
  type: :runtime
148
120
  prerelease: false
149
121
  version_requirements: !ruby/object:Gem::Requirement
150
122
  requirements:
151
123
  - - ">="
152
124
  - !ruby/object:Gem::Version
153
- version: 0.2.0
125
+ version: '0'
154
126
  - !ruby/object:Gem::Dependency
155
127
  name: mime-types
156
128
  requirement: !ruby/object:Gem::Requirement
@@ -185,44 +157,30 @@ dependencies:
185
157
  requirements:
186
158
  - - ">="
187
159
  - !ruby/object:Gem::Version
188
- version: 0.1.3
160
+ version: '0'
189
161
  type: :runtime
190
162
  prerelease: false
191
163
  version_requirements: !ruby/object:Gem::Requirement
192
164
  requirements:
193
165
  - - ">="
194
166
  - !ruby/object:Gem::Version
195
- version: 0.1.3
167
+ version: '0'
196
168
  - !ruby/object:Gem::Dependency
197
169
  name: public_activity
198
170
  requirement: !ruby/object:Gem::Requirement
199
171
  requirements:
200
172
  - - ">="
201
173
  - !ruby/object:Gem::Version
202
- version: 1.0.0
174
+ version: '0'
203
175
  type: :runtime
204
176
  prerelease: false
205
177
  version_requirements: !ruby/object:Gem::Requirement
206
178
  requirements:
207
179
  - - ">="
208
180
  - !ruby/object:Gem::Version
209
- version: 1.0.0
181
+ version: '0'
210
182
  - !ruby/object:Gem::Dependency
211
183
  name: rails-settings-cached
212
- requirement: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- version: 0.4.0
217
- type: :runtime
218
- prerelease: false
219
- version_requirements: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- version: 0.4.0
224
- - !ruby/object:Gem::Dependency
225
- name: rails-uploader
226
184
  requirement: !ruby/object:Gem::Requirement
227
185
  requirements:
228
186
  - - ">="
@@ -236,7 +194,7 @@ dependencies:
236
194
  - !ruby/object:Gem::Version
237
195
  version: '0'
238
196
  - !ruby/object:Gem::Dependency
239
- name: select2-rails
197
+ name: rails-uploader
240
198
  requirement: !ruby/object:Gem::Requirement
241
199
  requirements:
242
200
  - - ">="
@@ -278,7 +236,7 @@ dependencies:
278
236
  - !ruby/object:Gem::Version
279
237
  version: '0'
280
238
  - !ruby/object:Gem::Dependency
281
- name: factory_girl_rails
239
+ name: factory_bot_rails
282
240
  requirement: !ruby/object:Gem::Requirement
283
241
  requirements:
284
242
  - - ">="
@@ -311,8 +269,8 @@ executables: []
311
269
  extensions: []
312
270
  extra_rdoc_files: []
313
271
  files:
272
+ - ".github/workflows/tests.yml"
314
273
  - ".gitignore"
315
- - ".rspec"
316
274
  - ".rubocop.yml"
317
275
  - ".ruby-version"
318
276
  - CHANGELOG.rdoc
@@ -321,6 +279,7 @@ files:
321
279
  - MIT-LICENSE
322
280
  - README.md
323
281
  - Rakefile
282
+ - app/assets/config/manifest.js
324
283
  - app/assets/images/alert.png
325
284
  - app/assets/images/cross_ico.png
326
285
  - app/assets/images/gravatar-140.png
@@ -362,6 +321,8 @@ files:
362
321
  - app/assets/images/sunrise/icons/commented.svg
363
322
  - app/assets/images/sunrise/icons/create.svg
364
323
  - app/assets/images/sunrise/icons/destroy.svg
324
+ - app/assets/images/sunrise/icons/export.svg
325
+ - app/assets/images/sunrise/icons/import.svg
365
326
  - app/assets/images/sunrise/icons/update.svg
366
327
  - app/assets/images/sunrise/note_pointer.png
367
328
  - app/assets/images/sunrise/page_arr_hover.png
@@ -446,6 +407,7 @@ files:
446
407
  - app/views/sunrise/manager/buttons/_delete.html.erb
447
408
  - app/views/sunrise/manager/buttons/_edit.html.erb
448
409
  - app/views/sunrise/manager/buttons/_export.html.erb
410
+ - app/views/sunrise/manager/buttons/_import.html.erb
449
411
  - app/views/sunrise/manager/buttons/_new.html.erb
450
412
  - app/views/sunrise/manager/buttons/_sort.html.erb
451
413
  - app/views/sunrise/manager/edit.html.erb
@@ -543,7 +505,6 @@ files:
543
505
  - lib/sunrise.rb
544
506
  - lib/sunrise/abstract_model.rb
545
507
  - lib/sunrise/carrierwave/base_uploader.rb
546
- - lib/sunrise/carrierwave/file_size_validator.rb
547
508
  - lib/sunrise/carrierwave/glue.rb
548
509
  - lib/sunrise/config.rb
549
510
  - lib/sunrise/config/association.rb
@@ -578,7 +539,6 @@ files:
578
539
  - lib/sunrise/utils/csv_document.rb
579
540
  - lib/sunrise/utils/eval_helpers.rb
580
541
  - lib/sunrise/utils/search_wrapper.rb
581
- - lib/sunrise/utils/transliteration.rb
582
542
  - lib/sunrise/version.rb
583
543
  - lib/sunrise/views/date_time_input.rb
584
544
  - lib/sunrise/views/form_builder.rb
@@ -593,7 +553,7 @@ homepage: https://github.com/galetahub/sunrise
593
553
  licenses:
594
554
  - MIT
595
555
  metadata: {}
596
- post_install_message:
556
+ post_install_message:
597
557
  rdoc_options: []
598
558
  require_paths:
599
559
  - lib
@@ -608,9 +568,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
608
568
  - !ruby/object:Gem::Version
609
569
  version: '0'
610
570
  requirements: []
611
- rubyforge_project: sunrise-cms
612
- rubygems_version: 2.7.6.2
613
- signing_key:
571
+ rubygems_version: 3.5.23
572
+ signing_key:
614
573
  specification_version: 4
615
574
  summary: Rails CMS
616
575
  test_files: []
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format Fuubar
2
- --color
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sunrise
4
- module CarrierWave
5
- class FileSizeValidator < ActiveModel::EachValidator
6
- MESSAGES = { is: :wrong_size, minimum: :size_too_small, maximum: :size_too_big }.freeze
7
- CHECKS = { is: :==, minimum: :>=, maximum: :<= }.freeze
8
-
9
- DEFAULT_TOKENIZER = ->(value) { value.split(//) }
10
- RESERVED_OPTIONS = [:minimum, :maximum, :within, :is, :tokenizer, :too_short, :too_long].freeze
11
-
12
- def initialize(options)
13
- if range = (options.delete(:in) || options.delete(:within))
14
- raise ArgumentError, ':in and :within must be a Range' unless range.is_a?(Range)
15
-
16
- options[:minimum] = range.begin
17
- options[:maximum] = range.end
18
- options[:maximum] -= 1 if range.exclude_end?
19
- end
20
-
21
- super
22
- end
23
-
24
- def check_validity!
25
- keys = CHECKS.keys & options.keys
26
-
27
- if keys.empty?
28
- raise ArgumentError, 'Range unspecified. Specify the :within, :maximum, :minimum, or :is option.'
29
- end
30
-
31
- keys.each do |key|
32
- value = options[key]
33
-
34
- unless value.is_a?(Integer) && value >= 0
35
- raise ArgumentError, ":#{key} must be a nonnegative Integer"
36
- end
37
- end
38
- end
39
-
40
- def validate_each(record, attribute, value)
41
- unless value.is_a? ::CarrierWave::Uploader::Base
42
- raise(ArgumentError, 'A CarrierWave::Uploader::Base object was expected')
43
- end
44
-
45
- value = (options[:tokenizer] || DEFAULT_TOKENIZER).call(value) if value.is_a?(String)
46
-
47
- CHECKS.each do |key, validity_check|
48
- next unless check_value = options[key]
49
-
50
- value ||= [] if key == :maximum
51
-
52
- value_size = value.size
53
- next if value_size.send(validity_check, check_value)
54
-
55
- errors_options = options.except(*RESERVED_OPTIONS)
56
- errors_options[:file_size] = help.number_to_human_size check_value
57
-
58
- default_message = options[MESSAGES[key]]
59
- errors_options[:message] ||= default_message if default_message
60
-
61
- record.errors.add(attribute, MESSAGES[key], errors_options)
62
- end
63
- end
64
-
65
- def help
66
- Helper.instance
67
- end
68
-
69
- class Helper
70
- include Singleton
71
- include ActionView::Helpers::NumberHelper
72
- end
73
- end
74
- end
75
- end