releaf-core 0.2.1 → 1.0.3
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/LICENSE +19 -21
- data/app/assets/javascripts/releaf/application.js +1 -2
- data/app/assets/javascripts/releaf/include/field.type_date_or_datetime_or_time.js +19 -21
- data/app/assets/javascripts/releaf/include/field.type_richtext.js +31 -9
- data/app/assets/javascripts/releaf/include/localization.js +3 -8
- data/app/assets/javascripts/releaf/include/nested_fields.js +1 -1
- data/app/assets/javascripts/releaf/include/remote_validator.js +7 -4
- data/app/assets/javascripts/releaf/include/sortable.js +1 -1
- data/app/assets/javascripts/releaf/include/{profile_settings.js → store_settings.js} +4 -10
- data/app/assets/javascripts/releaf/include/toolbox.js +7 -11
- data/app/assets/stylesheets/releaf/layout/fields.scss +1 -0
- data/app/assets/stylesheets/releaf/layout/header.scss +1 -0
- data/app/assets/stylesheets/releaf/layout/search.scss +15 -0
- data/app/builders/releaf/builders/base.rb +11 -9
- data/app/builders/releaf/builders/confirm_destroy_dialog_builder.rb +2 -2
- data/app/builders/releaf/builders/confirm_dialog_builder.rb +3 -3
- data/app/builders/releaf/builders/edit_builder.rb +51 -6
- data/app/builders/releaf/builders/form_builder/associated_set_field.rb +37 -0
- data/app/builders/releaf/builders/form_builder/associations.rb +153 -0
- data/app/builders/releaf/builders/form_builder/boolean_fields.rb +12 -0
- data/app/builders/releaf/builders/form_builder/date_fields.rb +30 -0
- data/app/builders/releaf/builders/form_builder/fields.rb +10 -0
- data/app/builders/releaf/builders/form_builder/file_fields.rb +47 -0
- data/app/builders/releaf/builders/form_builder/i18n_fields.rb +75 -0
- data/app/builders/releaf/builders/form_builder/label.rb +34 -0
- data/app/builders/releaf/builders/form_builder/number_fields.rb +13 -0
- data/app/builders/releaf/builders/form_builder/richtext_fields.rb +28 -0
- data/app/builders/releaf/builders/form_builder/text_fields.rb +43 -0
- data/app/builders/releaf/builders/form_builder.rb +8 -489
- data/app/builders/releaf/builders/index_builder.rb +10 -3
- data/app/builders/releaf/builders/page/header_builder.rb +23 -59
- data/app/builders/releaf/builders/page/layout_builder.rb +125 -115
- data/app/builders/releaf/builders/page/menu_builder.rb +96 -106
- data/app/builders/releaf/builders/refused_destroy_dialog_builder.rb +7 -12
- data/app/builders/releaf/builders/resource_view.rb +4 -4
- data/app/builders/releaf/builders/table_builder.rb +20 -30
- data/app/builders/releaf/builders/toolbox_builder.rb +1 -1
- data/app/builders/releaf/builders/utilities/date_fields.rb +100 -0
- data/app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb +80 -0
- data/app/builders/releaf/builders/view.rb +5 -2
- data/app/builders/releaf/settings/form_builder.rb +18 -0
- data/app/builders/releaf/settings/table_builder.rb +9 -0
- data/app/controllers/releaf/action_controller.rb +174 -0
- data/app/controllers/releaf/{core/errors_controller.rb → errors_controller.rb} +1 -1
- data/app/controllers/releaf/root_controller.rb +23 -0
- data/app/controllers/releaf/settings_controller.rb +22 -0
- data/app/helpers/releaf/application_helper.rb +1 -1
- data/app/lib/releaf/action_controller/ajax.rb +24 -0
- data/app/lib/releaf/action_controller/breadcrumbs.rb +26 -0
- data/app/lib/releaf/action_controller/builders.rb +34 -0
- data/app/lib/releaf/action_controller/features.rb +47 -0
- data/app/lib/releaf/action_controller/notifications.rb +28 -0
- data/app/lib/releaf/action_controller/resources.rb +59 -0
- data/app/{controllers/concerns/releaf → lib/releaf/action_controller}/richtext_attachments.rb +1 -1
- data/app/lib/releaf/action_controller/search.rb +22 -0
- data/app/lib/releaf/action_controller/urls.rb +49 -0
- data/app/lib/releaf/action_controller/views.rb +29 -0
- data/app/lib/releaf/assets_resolver.rb +51 -0
- data/app/lib/releaf/build_errors_hash.rb +81 -0
- data/app/lib/releaf/controller_definition.rb +22 -0
- data/app/lib/releaf/controller_group_definition.rb +12 -0
- data/app/lib/releaf/{core/default_searchable_fields.rb → default_searchable_fields.rb} +1 -1
- data/app/lib/releaf/{core/resource_base.rb → resource_base.rb} +14 -6
- data/app/lib/releaf/{core/resource_fields.rb → resource_fields.rb} +1 -1
- data/app/lib/releaf/{core/resource_params.rb → resource_params.rb} +3 -3
- data/app/lib/releaf/resource_table_fields.rb +10 -0
- data/app/lib/releaf/{core/resource_utilities.rb → resource_utilities.rb} +2 -2
- data/app/lib/releaf/{core/responders → responders}/access_denied_responder.rb +2 -2
- data/app/lib/releaf/{core/responders → responders}/after_save_responder.rb +3 -3
- data/app/lib/releaf/{core/responders → responders}/confirm_destroy_responder.rb +1 -1
- data/app/lib/releaf/{core/responders → responders}/destroy_responder.rb +1 -1
- data/app/lib/releaf/{core/responders → responders}/error_responder.rb +1 -1
- data/app/lib/releaf/{core/responders → responders}/feature_disabled_responder.rb +2 -2
- data/app/lib/releaf/{core/responders → responders}/page_not_found_responder.rb +2 -2
- data/app/lib/releaf/responders.rb +31 -0
- data/app/lib/releaf/{core/search.rb → search.rb} +1 -1
- data/app/lib/releaf/settings/normalize_value.rb +45 -0
- data/app/lib/releaf/settings/register.rb +45 -0
- data/app/models/releaf/settings.rb +25 -13
- data/app/services/array/reorder.rb +82 -0
- data/app/views/releaf/{base → action}/confirm_destroy.ruby +0 -0
- data/app/views/releaf/{base → action}/create_releaf_richtext_attachment.haml +0 -0
- data/app/views/releaf/{base → action}/edit.ruby +0 -0
- data/app/views/releaf/{base → action}/index.ruby +0 -0
- data/app/views/releaf/{base → action}/new.ruby +0 -0
- data/app/views/releaf/{base → action}/refused_destroy.ruby +0 -0
- data/app/views/releaf/{base → action}/show.ruby +0 -0
- data/app/views/releaf/{base → action}/toolbox.ruby +0 -0
- data/lib/generators/dummy/install_generator.rb +5 -0
- data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/books.js +23 -0
- data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/nodes.js +1 -0
- data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/other_site/other_nodes.js +1 -0
- data/lib/generators/dummy/templates/assets/stylesheets/controllers/admin/nodes.scss +1 -0
- data/lib/generators/dummy/templates/assets/stylesheets/controllers/admin/other_site/other_nodes.scss +1 -0
- data/lib/generators/dummy/templates/builders/admin/books/form_builder.rb +11 -1
- data/lib/generators/dummy/templates/config/routes.rb +31 -7
- data/lib/generators/dummy/templates/controllers/admin/authors_controller.rb +3 -6
- data/lib/generators/dummy/templates/controllers/admin/books_controller.rb +1 -1
- data/lib/generators/dummy/templates/controllers/admin/chapters_controller.rb +1 -1
- data/lib/generators/dummy/templates/controllers/admin/nodes_controller.rb +3 -0
- data/lib/generators/dummy/templates/controllers/admin/other_site/other_nodes_controller.rb +3 -0
- data/lib/generators/dummy/templates/controllers/admin/publishers_controller.rb +1 -1
- data/lib/generators/dummy/templates/controllers/application_controller.rb +27 -5
- data/lib/generators/dummy/templates/controllers/concerns/node_controller.rb +13 -3
- data/lib/generators/dummy/templates/controllers/contacts_controller.rb +3 -1
- data/lib/generators/dummy/templates/initializers/releaf.rb +31 -25
- data/lib/generators/dummy/templates/migrations/create_home_pages.rb +1 -0
- data/lib/generators/dummy/templates/migrations/create_other_nodes.rb +29 -0
- data/lib/generators/dummy/templates/models/author.rb +2 -2
- data/lib/generators/dummy/templates/models/book.rb +0 -2
- data/lib/generators/dummy/templates/models/chapter.rb +0 -2
- data/lib/generators/dummy/templates/models/home_page.rb +1 -0
- data/lib/generators/dummy/templates/models/other_site/other_node.rb +7 -0
- data/lib/generators/dummy/templates/models/publisher.rb +0 -5
- data/lib/generators/dummy/templates/models/text_page.rb +0 -1
- data/lib/generators/dummy/templates/views/contacts/show.html.haml +1 -1
- data/lib/generators/dummy/templates/views/layouts/application.html.haml +9 -1
- data/lib/generators/dummy/templates/views/text_pages/show.haml +1 -1
- data/lib/generators/releaf/templates/initializers/releaf.rb +6 -17
- data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +13 -14
- data/lib/generators/releaf/templates/seeds/seeds.rb +28 -32
- data/lib/releaf/{core/application.rb → application.rb} +5 -4
- data/lib/releaf/{core/component.rb → component.rb} +6 -2
- data/lib/releaf/configuration.rb +95 -0
- data/lib/releaf/core_ext/array/reorder.rb +5 -0
- data/lib/releaf/engine.rb +12 -0
- data/lib/releaf/exceptions.rb +5 -0
- data/lib/releaf/instance_cache.rb +72 -0
- data/lib/releaf/{core → rails_ext}/validation_error_codes.rb +1 -1
- data/lib/releaf/root/configuration.rb +6 -0
- data/lib/releaf/root/default_controller_resolver.rb +37 -0
- data/lib/releaf/root/settings_manager.rb +12 -0
- data/lib/releaf/root.rb +17 -0
- data/lib/releaf/{core/route_mapper.rb → route_mapper.rb} +6 -6
- data/lib/releaf/service.rb +11 -0
- data/lib/releaf/settings_ui.rb +7 -0
- data/lib/releaf/version.rb +1 -1
- data/lib/releaf-core.rb +38 -9
- data/spec/builders/{builders → releaf/builders}/association_reflector_spec.rb +0 -0
- data/spec/builders/{builders → releaf/builders}/base_spec.rb +17 -21
- data/spec/builders/{builders → releaf/builders}/collection_spec.rb +0 -0
- data/spec/builders/{builders → releaf/builders}/confirm_destroy_dialog_builder_spec.rb +5 -5
- data/spec/builders/{builders → releaf/builders}/confirm_dialog_builder_spec.rb +9 -7
- data/spec/builders/{builders → releaf/builders}/edit_builder_spec.rb +127 -20
- data/spec/builders/releaf/builders/form_builder/associations_spec.rb +129 -0
- data/spec/builders/releaf/builders/form_builder/date_fields_spec.rb +86 -0
- data/spec/builders/releaf/builders/form_builder/i18n_fields_spec.rb +48 -0
- data/spec/builders/releaf/builders/form_builder/label_spec.rb +106 -0
- data/spec/builders/releaf/builders/form_builder/number_fields_spec.rb +37 -0
- data/spec/builders/releaf/builders/form_builder_spec.rb +228 -0
- data/spec/builders/{builders → releaf/builders}/index_builder_spec.rb +29 -10
- data/spec/builders/releaf/builders/page/header_builder_spec.rb +65 -0
- data/spec/builders/releaf/builders/page/layout_builder_spec.rb +170 -0
- data/spec/builders/releaf/builders/page/menu_builder_spec.rb +345 -0
- data/spec/builders/{builders → releaf/builders}/pagination_builder_spec.rb +0 -0
- data/spec/builders/{builders → releaf/builders}/resource_dialog_spec.rb +0 -0
- data/spec/builders/{builders → releaf/builders}/resource_view_spec.rb +8 -8
- data/spec/builders/{builders → releaf/builders}/show_builder_spec.rb +0 -0
- data/spec/builders/{builders → releaf/builders}/table_builder_spec.rb +31 -75
- data/spec/builders/{builders → releaf/builders}/template_spec.rb +0 -0
- data/spec/builders/{builders → releaf/builders}/toolbox_builder_spec.rb +4 -4
- data/spec/builders/{builders → releaf/builders}/toolbox_spec.rb +0 -0
- data/spec/builders/releaf/builders/utilities/date_fields_spec.rb +125 -0
- data/spec/builders/releaf/builders/utilities/resolve_attribute_field_method_name_spec.rb +318 -0
- data/spec/builders/{builders → releaf/builders}/view_spec.rb +1 -1
- data/spec/builders/{builders_spec.rb → releaf/builders_spec.rb} +0 -0
- data/spec/builders/releaf/settings/form_builder_spec.rb +48 -0
- data/spec/builders/{core → releaf}/settings/table_builder_spec.rb +6 -4
- data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +1 -1
- data/spec/controllers/releaf/{base_controller_spec.rb → action_controller_spec.rb} +132 -161
- data/spec/controllers/releaf/root_controller_spec.rb +40 -0
- data/spec/controllers/releaf/settings_controller_spec.rb +52 -0
- data/spec/error_hash_builder_spec.rb +83 -0
- data/spec/ext/array_reorder_spec.rb +12 -0
- data/spec/features/ajaxbox_spec.rb +6 -6
- data/spec/features/errors_spec.rb +2 -1
- data/spec/features/index_table_spec.rb +6 -3
- data/spec/features/richtext_attachments_spec.rb +2 -2
- data/spec/features/richtext_custom_config_spec.rb +28 -0
- data/spec/features/richtext_embed_spec.rb +1 -1
- data/spec/features/richtext_spec.rb +10 -1
- data/spec/features/search_spec.rb +1 -1
- data/spec/features/settings_spec.rb +10 -5
- data/spec/helpers/application_helper_spec.rb +4 -6
- data/spec/lib/releaf/action_controller/features_spec.rb +171 -0
- data/spec/lib/releaf/action_controller/search_spec.rb +84 -0
- data/spec/lib/releaf/{core/application_spec.rb → application_spec.rb} +7 -6
- data/spec/lib/releaf/assets_resolver_spec.rb +130 -0
- data/spec/lib/releaf/build_errors_hash_spec.rb +141 -0
- data/spec/lib/releaf/configuration_spec.rb +205 -0
- data/spec/lib/releaf/controller_definition_spec.rb +49 -0
- data/spec/lib/releaf/controller_group_definition_spec.rb +27 -0
- data/spec/lib/releaf/{core/default_searchable_fields_spec.rb → default_searchable_fields_spec.rb} +1 -1
- data/spec/lib/releaf/instance_cache_spec.rb +98 -0
- data/spec/lib/releaf/{core/resource_base_spec.rb → resource_base_spec.rb} +59 -21
- data/spec/lib/releaf/{core/resource_fields_spec.rb → resource_fields_spec.rb} +1 -1
- data/spec/lib/releaf/{core/resource_params_spec.rb → resource_params_spec.rb} +3 -5
- data/spec/lib/releaf/resource_table_fields_spec.rb +20 -0
- data/spec/lib/releaf/{core/resource_utilities_spec.rb → resource_utilities_spec.rb} +1 -1
- data/spec/lib/releaf/{core/responders → responders}/access_denied_responder_spec.rb +1 -1
- data/spec/lib/releaf/{core/responders → responders}/after_save_responder_spec.rb +9 -8
- data/spec/lib/releaf/{core/responders → responders}/confirm_destroy_responder_spec.rb +2 -2
- data/spec/lib/releaf/{core/responders → responders}/destroy_responder_spec.rb +2 -2
- data/spec/lib/releaf/{core/responders → responders}/error_responder_spec.rb +4 -4
- data/spec/lib/releaf/{core/responders → responders}/feature_disabled_responder_spec.rb +1 -1
- data/spec/lib/releaf/{core/responders → responders}/page_not_found_responder_spec.rb +1 -1
- data/spec/lib/releaf/{core/responders_spec.rb → responders_spec.rb} +14 -14
- data/spec/lib/releaf/root/configuration_spec.rb +9 -0
- data/spec/lib/releaf/root/default_controller_resolver_spec.rb +108 -0
- data/spec/lib/releaf/root_spec.rb +13 -0
- data/spec/lib/releaf/service_spec.rb +20 -0
- data/spec/lib/releaf/settings/normalize_value_spec.rb +103 -0
- data/spec/lib/releaf/settings/register_spec.rb +135 -0
- data/spec/lib/releaf/settings_manager_spec.rb +22 -0
- data/spec/lib/validation_error_codes_spec.rb +1 -1
- data/spec/misc/factories_spec.rb +0 -12
- data/spec/models/settings_spec.rb +74 -32
- data/spec/routing/route_mapper_spec.rb +5 -5
- data/spec/rspec_helpers/test_helpers_spec.rb +1 -1
- data/spec/rspec_helpers/test_spec.rb +14 -0
- data/spec/{lib/releaf/core/item_orderer_spec.rb → services/array/reorder_spec.rb} +32 -53
- metadata +299 -224
- data/app/builders/releaf/builders/orderer.rb +0 -5
- data/app/builders/releaf/builders/tags/releaf_associated_set_field.rb +0 -40
- data/app/builders/releaf/core/settings/form_builder.rb +0 -21
- data/app/builders/releaf/core/settings/table_builder.rb +0 -11
- data/app/controllers/concerns/releaf/breadcrumbs.rb +0 -42
- data/app/controllers/releaf/base_controller.rb +0 -458
- data/app/controllers/releaf/core/settings_controller.rb +0 -50
- data/app/helpers/releaf/javascript_helper.rb +0 -75
- data/app/lib/releaf/core/assets_resolver.rb +0 -58
- data/app/lib/releaf/core/error_formatter.rb +0 -103
- data/app/lib/releaf/core/item_orderer.rb +0 -102
- data/app/lib/releaf/core/resource_table_fields.rb +0 -10
- data/app/lib/releaf/core/responders.rb +0 -31
- data/app/lib/releaf/core/template_field_type_mapper.rb +0 -127
- data/lib/generators/dummy/templates/controllers/concerns/.keep +0 -0
- data/lib/releaf/core/builders_autoload.rb +0 -27
- data/lib/releaf/core/configuration.rb +0 -101
- data/lib/releaf/core/engine.rb +0 -35
- data/lib/releaf/core/exceptions.rb +0 -38
- data/lib/releaf/core/settings_ui_component.rb +0 -7
- data/releaf-core.gemspec +0 -35
- data/spec/builders/builders/form_builder_spec.rb +0 -562
- data/spec/builders/builders/orderer_spec.rb +0 -22
- data/spec/builders/builders/page/header_builder_spec.rb +0 -143
- data/spec/builders/builders/page/layout_builder_spec.rb +0 -73
- data/spec/builders/builders/page/menu_builder_spec.rb +0 -160
- data/spec/builders/core/settings/form_builder_spec.rb +0 -69
- data/spec/controllers/releaf/core/settings_controller_spec.rb +0 -31
- data/spec/lib/releaf/core/assets_resolver_spec.rb +0 -113
- data/spec/lib/releaf/core/configuration_spec.rb +0 -230
- data/spec/lib/releaf/core/error_formatter_spec.rb +0 -242
- data/spec/lib/releaf/core/resource_table_fields_spec.rb +0 -18
- data/spec/lib/releaf/core/template_field_type_mapper_spec.rb +0 -311
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
module Releaf::Core
|
|
2
|
-
class AssetsResolver
|
|
3
|
-
NONCOMPILED_PATTERN = /app\/assets\/(javascripts|stylesheets)\/((releaf\/)?controllers\/(.*?))\..*/
|
|
4
|
-
COMPILED_PATTERN = /(releaf\/)?controllers\/(.*?)\.(js|css)$/
|
|
5
|
-
|
|
6
|
-
def self.base_assets
|
|
7
|
-
["releaf/application"]
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def self.controller_assets(controller, type)
|
|
11
|
-
base_assets + assets.fetch(controller, {}).fetch(type, [])
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def self.noncompiled_assets
|
|
15
|
-
list = {}
|
|
16
|
-
|
|
17
|
-
Rails.application.assets.each_file do|file|
|
|
18
|
-
match = file.to_s.match(NONCOMPILED_PATTERN)
|
|
19
|
-
if match
|
|
20
|
-
controller = match[4]
|
|
21
|
-
asset_type = match[1].to_sym
|
|
22
|
-
list[controller] ||= {stylesheets: [], javascripts: []}
|
|
23
|
-
list[controller][asset_type] << match[2]
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
list
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def self.compiled_assets
|
|
31
|
-
list = {}
|
|
32
|
-
|
|
33
|
-
Rails.application.assets_manifest.files.each_pair do|asset_path, asset|
|
|
34
|
-
match = asset["logical_path"].match(COMPILED_PATTERN)
|
|
35
|
-
if match
|
|
36
|
-
controller = match[2]
|
|
37
|
-
asset_type = match[3] == "css" ? :stylesheets : :javascripts
|
|
38
|
-
list[controller] ||= {stylesheets: [], javascripts: []}
|
|
39
|
-
list[controller][asset_type] << asset["logical_path"]
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
list
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def self.compiled_assets?
|
|
47
|
-
Rails.application.assets.nil?
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def self.assets
|
|
51
|
-
if compiled_assets?
|
|
52
|
-
@@compiled_assets ||= compiled_assets
|
|
53
|
-
else
|
|
54
|
-
noncompiled_assets
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
module Releaf::Core
|
|
2
|
-
class ErrorFormatter
|
|
3
|
-
attr_reader :errors
|
|
4
|
-
|
|
5
|
-
def self.format_errors(resource, field_name_prefix = "resource")
|
|
6
|
-
validator = new(resource, field_name_prefix)
|
|
7
|
-
validator.errors
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def initialize(resource, field_name_prefix)
|
|
11
|
-
@resource = resource
|
|
12
|
-
@klass = @resource.class
|
|
13
|
-
@field_name_prefix = field_name_prefix
|
|
14
|
-
@errors = {}
|
|
15
|
-
@error_message_i18n_scope = "activerecord.errors.messages.#{@klass.name.underscore}"
|
|
16
|
-
format_errors
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
def format_errors
|
|
22
|
-
@resource.errors.each do |attribute, message|
|
|
23
|
-
if models_attribute? attribute
|
|
24
|
-
add_error attribute, message
|
|
25
|
-
else
|
|
26
|
-
process_nested_resource_errors attribute
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def process_nested_resource_errors(attribute)
|
|
32
|
-
association_name = attribute.to_s.split('.', 2).first
|
|
33
|
-
if single_association? association_name
|
|
34
|
-
prefix_template = "#{@field_name_prefix}[#{association_name}_attributes]"
|
|
35
|
-
nested_resources = [@resource.send(association_name)]
|
|
36
|
-
else
|
|
37
|
-
prefix_template = "#{@field_name_prefix}[#{association_name}_attributes][%d]"
|
|
38
|
-
nested_resources = @resource.send(association_name)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
nested_resources.each_with_index do |resource, i|
|
|
42
|
-
prefix = prefix_template % i
|
|
43
|
-
resource_errors = ErrorFormatter.format_errors(resource, prefix)
|
|
44
|
-
@errors.merge!(resource_errors)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def models_attribute?(attribute)
|
|
49
|
-
attribute !~ /\./
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def add_error(attribute, message)
|
|
53
|
-
@errors[field_id(attribute)] ||= []
|
|
54
|
-
@errors[field_id(attribute)] << error_hash(attribute, message)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def error_hash(attribute, message)
|
|
58
|
-
h = {
|
|
59
|
-
error_code: message.error_code,
|
|
60
|
-
message: I18n.t(message, scope: @error_message_i18n_scope),
|
|
61
|
-
full_message: full_error_message(attribute, message)
|
|
62
|
-
}
|
|
63
|
-
h[:data] = message.data unless message.data.nil?
|
|
64
|
-
h
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def full_error_message(attribute, message)
|
|
68
|
-
template = "%{class} with id %{id} has error \"#{message}\""
|
|
69
|
-
template += ' on attribute "%{attribute}"' unless attribute.to_sym == :base
|
|
70
|
-
options = {
|
|
71
|
-
default: template,
|
|
72
|
-
attribute: attribute,
|
|
73
|
-
class: @resource.class.name,
|
|
74
|
-
id: @resource.id ? @resource.id.to_s : 'null',
|
|
75
|
-
scope: @error_message_i18n_scope
|
|
76
|
-
}
|
|
77
|
-
I18n.t(template, options)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def field_id(attribute)
|
|
81
|
-
return @field_name_prefix if attribute.to_sym == :base
|
|
82
|
-
field = attribute
|
|
83
|
-
if association(attribute).present?
|
|
84
|
-
field = association(attribute).foreign_key.to_s
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
"#{@field_name_prefix}[#{field}]"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def single_association?(association_name)
|
|
91
|
-
[:belongs_to, :has_one].include? association_type(association_name)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def association_type(association_name)
|
|
95
|
-
association(association_name).macro
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def association(association_name)
|
|
99
|
-
@klass.reflect_on_association(association_name.to_sym)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
end
|
|
103
|
-
end
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
module Releaf::Core
|
|
2
|
-
# Utility class for array items reordering.
|
|
3
|
-
#
|
|
4
|
-
# There are 4 possible reordering options: <code>:first, :last, :before and :after</code>.
|
|
5
|
-
#
|
|
6
|
-
# All reorder methods are chainable, so:
|
|
7
|
-
# Releaf::Core::ItemOrderer.new(:a, :b, :c, :d, :e, :f).reorder(:c, :last).reorder([:a, :b], after: :d).result
|
|
8
|
-
# will return
|
|
9
|
-
# [:d, :a, :b, :e, :f, :c]
|
|
10
|
-
#
|
|
11
|
-
# For reordering with <code>`first`</code> and <code>`last`</code> options you must give this option as symbols.
|
|
12
|
-
# Example:
|
|
13
|
-
# Releaf::Core::ItemOrderer.new(:a, :b, :c).reorder(:c, :first)
|
|
14
|
-
#
|
|
15
|
-
# For reorderind with <code>`before`</code> and <code>`after`</code> options you must give option together with target value as hash.
|
|
16
|
-
# Example:
|
|
17
|
-
# Releaf::Core::ItemOrderer.new(:a, :b, :c).reorder(:a, after: :b)
|
|
18
|
-
class ItemOrderer
|
|
19
|
-
|
|
20
|
-
attr_accessor :list
|
|
21
|
-
|
|
22
|
-
def initialize(*args)
|
|
23
|
-
self.list = args
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def result
|
|
27
|
-
list
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def to_a
|
|
31
|
-
result
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def reorder(values, options)
|
|
35
|
-
values = [values] unless values.is_a? Array
|
|
36
|
-
deleted_values = delete(values)
|
|
37
|
-
index = reorder_index(options)
|
|
38
|
-
|
|
39
|
-
values.reverse.each do|value|
|
|
40
|
-
list.insert(index, deleted_values[value])
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
self
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def reorder_index(options)
|
|
47
|
-
if options == :first
|
|
48
|
-
index = 0
|
|
49
|
-
elsif options == :last
|
|
50
|
-
index = list.length
|
|
51
|
-
elsif options[:after]
|
|
52
|
-
index = index(options[:after]) + 1
|
|
53
|
-
elsif options[:before]
|
|
54
|
-
index = index(options[:before])
|
|
55
|
-
else
|
|
56
|
-
raise ArgumentError, "unknown reorder option"
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def delete(values)
|
|
61
|
-
deleted = {}
|
|
62
|
-
|
|
63
|
-
values.each do|value|
|
|
64
|
-
index = index(value)
|
|
65
|
-
deleted[value] = list[index]
|
|
66
|
-
list.delete_at(index)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
deleted
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def index(value)
|
|
73
|
-
value = value.to_s
|
|
74
|
-
list.index do |existing_value|
|
|
75
|
-
if existing_value.is_a? Hash
|
|
76
|
-
existing_value.keys.first.to_s == value
|
|
77
|
-
else
|
|
78
|
-
existing_value.to_s == value
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# Shortcut for creating new ItemOrderer class, ordering and result retrieving.
|
|
84
|
-
#
|
|
85
|
-
# Releaf::Core::ItemOrderer.reorder([:a, :b, :c, :d, :e, :f], c: :last, [:a, :b] => {after: :d})
|
|
86
|
-
# is same as
|
|
87
|
-
# Releaf::Core::ItemOrderer.new(:a, :b, :c, :d, :e, :f).reorder(:c, :last).reorder([:a, :b], after: :d).result
|
|
88
|
-
#
|
|
89
|
-
# @param list [Array] array to reorder
|
|
90
|
-
# @param options_list [Hash] hash with reorder options
|
|
91
|
-
# @return [Array] reordered array
|
|
92
|
-
def self.reorder(list, options_list)
|
|
93
|
-
orderer = new(*list)
|
|
94
|
-
|
|
95
|
-
options_list.each_pair do|values, options|
|
|
96
|
-
orderer.reorder(values, options)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
orderer.result
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module Releaf::Core::Responders
|
|
2
|
-
|
|
3
|
-
def respond_with(resource = nil, options = {}, &block)
|
|
4
|
-
options[:responder] = active_responder unless options.has_key? :responder
|
|
5
|
-
super
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def action_responders
|
|
9
|
-
{
|
|
10
|
-
create: Releaf::Core::Responders::AfterSaveResponder,
|
|
11
|
-
update: Releaf::Core::Responders::AfterSaveResponder,
|
|
12
|
-
confirm_destroy: Releaf::Core::Responders::ConfirmDestroyResponder,
|
|
13
|
-
destroy: Releaf::Core::Responders::DestroyResponder,
|
|
14
|
-
access_denied: Releaf::Core::Responders::AccessDeniedResponder,
|
|
15
|
-
feature_disabled: Releaf::Core::Responders::FeatureDisabledResponder,
|
|
16
|
-
page_not_found: Releaf::Core::Responders::PageNotFoundResponder,
|
|
17
|
-
}
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Returns generic view name for given action
|
|
21
|
-
# @return String
|
|
22
|
-
def action_responder(_action_name)
|
|
23
|
-
action_responders[_action_name.to_sym]
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Returns generic view name for current action
|
|
27
|
-
# @return String
|
|
28
|
-
def active_responder
|
|
29
|
-
action_responder(action_name)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
module Releaf::Core
|
|
2
|
-
module TemplateFieldTypeMapper
|
|
3
|
-
|
|
4
|
-
# Helps to determinate which template to render in :edit feature
|
|
5
|
-
# for given objects attribute.
|
|
6
|
-
#
|
|
7
|
-
# @return field_type
|
|
8
|
-
#
|
|
9
|
-
# where field_type is a string representing field type
|
|
10
|
-
# and use_i18n is a `true` or `false`. If use_i18n is true, then template
|
|
11
|
-
# with localization features should be used (if exists)
|
|
12
|
-
#
|
|
13
|
-
# This helper is used by views.
|
|
14
|
-
#
|
|
15
|
-
# @todo document rendering conventions
|
|
16
|
-
def self.field_type_name obj, attribute_name
|
|
17
|
-
field_type = nil
|
|
18
|
-
column_type = nil
|
|
19
|
-
|
|
20
|
-
if use_i18n?(obj, attribute_name)
|
|
21
|
-
begin
|
|
22
|
-
column_type = obj.class::Translation.columns_hash[attribute_name.to_s].try(:type)
|
|
23
|
-
rescue
|
|
24
|
-
end
|
|
25
|
-
else
|
|
26
|
-
column_type = obj.class.columns_hash[attribute_name.to_s].try(:type)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
column_type ||= 'string'
|
|
30
|
-
|
|
31
|
-
if respond_to?("field_type_name_for_#{column_type}")
|
|
32
|
-
field_type = send("field_type_name_for_#{column_type}", attribute_name, obj)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
return field_type || 'text'
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# should localized template be preffered?
|
|
39
|
-
def self.use_i18n? obj, attribute_name
|
|
40
|
-
return false unless obj.class.respond_to? :translates?
|
|
41
|
-
return false unless obj.class.translates?
|
|
42
|
-
return obj.class.translated_attribute_names.include?(attribute_name.to_sym)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
protected
|
|
46
|
-
|
|
47
|
-
def self.image_or_error attribute_name, obj
|
|
48
|
-
field_type_or_error 'image', attribute_name, obj
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def self.file_or_error attribute_name, obj
|
|
52
|
-
field_type_or_error 'file', attribute_name, obj
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def self.field_type_or_error type, attribute_name, obj
|
|
56
|
-
raise ArgumentError, 'attribute_name must end with _uid' unless attribute_name =~ /_uid$/
|
|
57
|
-
file_method_name = attribute_name.to_s.sub(/_uid$/, '')
|
|
58
|
-
if obj.respond_to? file_method_name
|
|
59
|
-
return type
|
|
60
|
-
else
|
|
61
|
-
raise "object doesn't respond to `#{file_method_name}` method. Did you forgot to add `#{type}_accessor :#{file_method_name}` to `#{obj.class.name}` model?"
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def self.field_type_name_for_string attribute_name, obj
|
|
66
|
-
case attribute_name.to_s
|
|
67
|
-
when /(thumbnail|image|photo(graphy)?|picture|avatar|logo|banner|icon)_uid$/
|
|
68
|
-
return image_or_error attribute_name, obj
|
|
69
|
-
|
|
70
|
-
when /_uid$/
|
|
71
|
-
return file_or_error attribute_name, obj
|
|
72
|
-
|
|
73
|
-
when /password/, 'pin'
|
|
74
|
-
return 'password'
|
|
75
|
-
|
|
76
|
-
when /_email$/, 'email'
|
|
77
|
-
return 'email'
|
|
78
|
-
|
|
79
|
-
when /_link$/, 'link'
|
|
80
|
-
return 'link'
|
|
81
|
-
|
|
82
|
-
else
|
|
83
|
-
return 'text'
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def self.field_type_name_for_text attribute_name, obj
|
|
88
|
-
case attribute_name.to_s
|
|
89
|
-
when /_(url|homepage|link)$/, 'homepage', 'url'
|
|
90
|
-
'link'
|
|
91
|
-
when /_html$/, 'html'
|
|
92
|
-
'richtext'
|
|
93
|
-
else
|
|
94
|
-
'textarea'
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def self.field_type_name_for_datetime attribute_name, obj
|
|
99
|
-
'datetime'
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def self.field_type_name_for_date attribute_name, obj
|
|
103
|
-
'date'
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def self.field_type_name_for_time attribute_name, obj
|
|
107
|
-
'time'
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def self.field_type_name_for_float attribute_name, obj
|
|
111
|
-
'float'
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def self.field_type_name_for_decimal attribute_name, obj
|
|
115
|
-
'decimal'
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def self.field_type_name_for_integer attribute_name, obj
|
|
119
|
-
return 'item' if attribute_name.to_s =~ /_id$/ && obj.class.reflect_on_association(attribute_name[0..-4].to_sym)
|
|
120
|
-
return 'integer'
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def self.field_type_name_for_boolean attribute_name, obj
|
|
124
|
-
return 'boolean'
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
File without changes
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
root_path = File.expand_path('../..', File.dirname(__dir__))
|
|
2
|
-
files = %w(
|
|
3
|
-
builders/tags/releaf_associated_set_field
|
|
4
|
-
builders
|
|
5
|
-
builders/base
|
|
6
|
-
builders/orderer
|
|
7
|
-
builders/template
|
|
8
|
-
builders/toolbox
|
|
9
|
-
builders/view
|
|
10
|
-
builders/collection
|
|
11
|
-
builders/resource
|
|
12
|
-
builders/resource_dialog
|
|
13
|
-
builders/resource_view
|
|
14
|
-
builders/confirm_dialog_builder
|
|
15
|
-
builders/confirm_destroy_dialog_builder
|
|
16
|
-
builders/edit_builder
|
|
17
|
-
builders/form_builder
|
|
18
|
-
builders/index_builder
|
|
19
|
-
builders/refused_destroy_dialog_builder
|
|
20
|
-
builders/table_builder
|
|
21
|
-
builders/toolbox_builder
|
|
22
|
-
core/settings/form_builder
|
|
23
|
-
core/settings/table_builder
|
|
24
|
-
)
|
|
25
|
-
files.each do|file|
|
|
26
|
-
require "#{root_path}/app/builders/releaf/#{file}"
|
|
27
|
-
end
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
module Releaf::Core
|
|
2
|
-
class Configuration
|
|
3
|
-
attr_accessor :available_locales, :available_admin_locales, :all_locales
|
|
4
|
-
attr_accessor :access_control_module_name, :assets_resolver_class_name, :layout_builder_class_name
|
|
5
|
-
attr_accessor :menu, :devise_for, :mount_location, :components,
|
|
6
|
-
:available_controllers, :additional_controllers, :controllers
|
|
7
|
-
|
|
8
|
-
def configure
|
|
9
|
-
initialize_defaults
|
|
10
|
-
initialize_locales
|
|
11
|
-
initialize_controllers
|
|
12
|
-
initialize_components
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def assets_resolver
|
|
16
|
-
assets_resolver_class_name.constantize
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def access_control_module
|
|
20
|
-
access_control_module_name.constantize
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def initialize_defaults
|
|
24
|
-
default_values.each_pair do|key, value|
|
|
25
|
-
send("#{key}=", value) if send(key).nil?
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def initialize_locales
|
|
30
|
-
::I18n.available_locales = available_locales
|
|
31
|
-
self.available_admin_locales = available_locales if available_admin_locales.nil?
|
|
32
|
-
self.all_locales = (available_locales + available_admin_locales).map(&:to_s).uniq
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def initialize_components
|
|
36
|
-
self.components = flatten_components(components)
|
|
37
|
-
components.each do|component_class|
|
|
38
|
-
component_class.initialize_component if component_class.respond_to? :initialize_component
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def flatten_components(raw_components)
|
|
43
|
-
raw_components.each.inject([]) do |list, component_class|
|
|
44
|
-
list += flatten_components(component_class.components) if component_class.respond_to? :components
|
|
45
|
-
list << component_class # add component itself latter as there can be dependancy to be loadable first
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def initialize_controllers
|
|
50
|
-
self.menu = normalize_controllers(menu)
|
|
51
|
-
self.additional_controllers = normalize_controllers(additional_controllers)
|
|
52
|
-
self.controllers = extract_controllers(menu + additional_controllers)
|
|
53
|
-
self.available_controllers = controllers.keys
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def extract_controllers(list)
|
|
57
|
-
list.each.inject({}) do |controller_list, item|
|
|
58
|
-
controller_list[item[:controller]] = item if item.has_key? :controller
|
|
59
|
-
controller_list.merge!(extract_controllers(item[:items])) if item.has_key? :items
|
|
60
|
-
controller_list
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def normalize_controllers(list)
|
|
65
|
-
list.map{|item| normalize_controller_item(item)}
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def normalize_controller_item(item_data)
|
|
69
|
-
if item_data.is_a? String
|
|
70
|
-
item = {controller: item_data}
|
|
71
|
-
elsif item_data.is_a? Hash
|
|
72
|
-
item = item_data
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
item[:name] = item[:controller] unless item.has_key? :name
|
|
76
|
-
|
|
77
|
-
if item.has_key? :helper
|
|
78
|
-
item[:url_helper] = item[:helper].to_sym
|
|
79
|
-
elsif item.has_key? :controller
|
|
80
|
-
item[:url_helper] = item[:controller].gsub('/', '_').to_sym
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
item[:items] = normalize_controllers(item[:items]) if item.has_key?(:items)
|
|
84
|
-
|
|
85
|
-
item
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def default_values
|
|
89
|
-
{
|
|
90
|
-
menu: [],
|
|
91
|
-
devise_for: 'releaf/permissions/user',
|
|
92
|
-
additional_controllers: [],
|
|
93
|
-
controllers: {},
|
|
94
|
-
components: [],
|
|
95
|
-
assets_resolver_class_name: 'Releaf::Core::AssetsResolver',
|
|
96
|
-
layout_builder_class_name: 'Releaf::Builders::Page::LayoutBuilder',
|
|
97
|
-
access_control_module_name: 'Releaf::Permissions'
|
|
98
|
-
}
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|
data/lib/releaf/core/engine.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'jquery-cookie-rails'
|
|
2
|
-
require 'rails-settings-cached'
|
|
3
|
-
require 'ckeditor_rails'
|
|
4
|
-
require 'will_paginate'
|
|
5
|
-
require 'font-awesome-rails'
|
|
6
|
-
require 'haml'
|
|
7
|
-
require 'haml-rails'
|
|
8
|
-
require 'jquery-rails'
|
|
9
|
-
require 'jquery-ui-rails'
|
|
10
|
-
require 'acts_as_list'
|
|
11
|
-
require 'dragonfly'
|
|
12
|
-
require 'globalize'
|
|
13
|
-
require 'globalize-accessors'
|
|
14
|
-
|
|
15
|
-
module Releaf::Core
|
|
16
|
-
require 'releaf/core/component'
|
|
17
|
-
require 'releaf/core/settings_ui_component'
|
|
18
|
-
require 'releaf/core/route_mapper'
|
|
19
|
-
require 'releaf/core/builders_autoload'
|
|
20
|
-
|
|
21
|
-
def self.components
|
|
22
|
-
[Releaf::Core::SettingsUIComponent]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
class Engine < ::Rails::Engine
|
|
26
|
-
initializer 'precompile', group: :all do |app|
|
|
27
|
-
app.config.assets.precompile += %w(ckeditor/*)
|
|
28
|
-
app.config.assets.precompile += %w(releaf/application.css releaf/controllers/*.css releaf/*.js releaf/*.png releaf/*.gif releaf/*.ico)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
ActiveSupport.on_load :action_controller do
|
|
33
|
-
ActionDispatch::Routing::Mapper.send(:include, Releaf::Core::RouteMapper)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module Releaf::Core
|
|
2
|
-
# A general Releaf exception
|
|
3
|
-
class Error < StandardError; end
|
|
4
|
-
|
|
5
|
-
# This error is raised when a user isn't allowed to access a given controller action.
|
|
6
|
-
# This usually happens within a call to ControllerAdditions#authorize! but can be
|
|
7
|
-
# raised manually.
|
|
8
|
-
#
|
|
9
|
-
# raise Releaf::AccessDenied.new("Not authorized!", AdminArticles, :read)
|
|
10
|
-
#
|
|
11
|
-
# The passed message, action, and subject are optional and can later be retrieved when
|
|
12
|
-
# rescuing from the exception.
|
|
13
|
-
#
|
|
14
|
-
# exception.message # => "Not authorized!"
|
|
15
|
-
# exception.action # => :read
|
|
16
|
-
# exception.subject # => Article
|
|
17
|
-
#
|
|
18
|
-
# If the message is not specified (or is nil) it will default to "You are not authorized
|
|
19
|
-
# to access this page." This default can be overridden by setting default_message.
|
|
20
|
-
#
|
|
21
|
-
# exception.default_message = "Default error message"
|
|
22
|
-
# exception.message # => "Default error message"
|
|
23
|
-
#
|
|
24
|
-
# See ControllerAdditions#authorized! for more information on rescuing from this exception
|
|
25
|
-
# and customizing the message using I18n.
|
|
26
|
-
class AccessDenied < Error
|
|
27
|
-
attr_reader :action, :subject
|
|
28
|
-
attr_writer :default_message
|
|
29
|
-
|
|
30
|
-
def initialize(controller = nil, action = nil, message = nil)
|
|
31
|
-
@message = message
|
|
32
|
-
@controller = controller
|
|
33
|
-
@action = action
|
|
34
|
-
@default_message = I18n.t(:"unauthorized.default", :default => "You are not authorized to access this page.")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
end
|
data/releaf-core.gemspec
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require File.expand_path('../lib/releaf/version', __FILE__)
|
|
2
|
-
|
|
3
|
-
Gem::Specification.new do |s|
|
|
4
|
-
s.name = "releaf-core"
|
|
5
|
-
s.version = Releaf::VERSION
|
|
6
|
-
|
|
7
|
-
s.summary = "core gem for releaf"
|
|
8
|
-
s.description = "Admin interface for RubyOnRails projects inspired by Leaf CMS"
|
|
9
|
-
s.authors = ["CubeSystems"]
|
|
10
|
-
s.email = 'info@cubesystems.lv'
|
|
11
|
-
s.homepage = 'https://github.com/cubesystems/releaf'
|
|
12
|
-
|
|
13
|
-
s.files = `git ls-files`.split("\n")
|
|
14
|
-
s.test_files = Dir["spec/**/*"]
|
|
15
|
-
|
|
16
|
-
s.add_dependency 'rails', '~> 4.2', '>= 4.2.0'
|
|
17
|
-
s.add_dependency 'i18n', '~> 0.7', '>= 0.7.0'
|
|
18
|
-
s.add_dependency 'sprockets-rails', '~> 3.0', '>= 3.0.0'
|
|
19
|
-
s.add_dependency 'sass-rails'
|
|
20
|
-
s.add_dependency 'jquery-rails'
|
|
21
|
-
s.add_dependency 'jquery-ui-rails'
|
|
22
|
-
s.add_dependency 'railties'
|
|
23
|
-
s.add_dependency 'haml-rails'
|
|
24
|
-
s.add_dependency 'dragonfly'
|
|
25
|
-
s.add_dependency 'rails-settings-cached', '>= 0.4.5'
|
|
26
|
-
s.add_dependency 'ckeditor_rails'
|
|
27
|
-
s.add_dependency 'acts_as_list'
|
|
28
|
-
s.add_dependency 'will_paginate'
|
|
29
|
-
s.add_dependency 'font-awesome-rails'
|
|
30
|
-
s.add_dependency 'jquery-cookie-rails'
|
|
31
|
-
s.add_dependency 'globalize-accessors'
|
|
32
|
-
s.add_dependency 'rack-cache'
|
|
33
|
-
|
|
34
|
-
s.required_ruby_version = '>= 2.2.0'
|
|
35
|
-
end
|