tramway 0.1.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +12 -893
- data/Rakefile +8 -8
- data/app/components/tailwind_component.html.haml +0 -0
- data/app/components/tailwind_component.rb +6 -0
- data/app/components/tailwinds/navbar/button_component.html.haml +1 -0
- data/app/components/tailwinds/navbar/button_component.rb +14 -0
- data/config/routes.rb +0 -9
- data/lib/tasks/tramway_tasks.rake +5 -0
- data/lib/tramway/engine.rb +5 -10
- data/lib/tramway/version.rb +1 -1
- data/lib/tramway.rb +5 -140
- metadata +17 -554
- data/app/assets/config/tramway_core_manifest.js +0 -2
- data/app/assets/images/tramway/mona_lisa_from_prado.jpg +0 -0
- data/app/assets/images/tramway/mona_lisa_from_prado_square.jpg +0 -0
- data/app/assets/javascripts/bootstrap-datepicker-1.8.0.js +0 -2035
- data/app/assets/javascripts/bootstrap-datepicker-1.8.0.ru.min.js +0 -64
- data/app/assets/javascripts/ckeditor/config.js +0 -30
- data/app/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +0 -1259
- data/app/assets/javascripts/ckeditor/plugins/image/icons/hidpi/image.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/image/icons/image.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/image/images/noimage.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/image/lang/en.js +0 -25
- data/app/assets/javascripts/ckeditor/plugins/image/lang/ru.js +0 -25
- data/app/assets/javascripts/ckeditor/plugins/image/plugin.js +0 -184
- data/app/assets/javascripts/ckeditor/plugins/youtube/images/icon-hdpi.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/youtube/images/icon.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/youtube/lang/en.js +0 -25
- data/app/assets/javascripts/ckeditor/plugins/youtube/lang/ru.js +0 -25
- data/app/assets/javascripts/ckeditor/plugins/youtube/plugin.js +0 -449
- data/app/assets/javascripts/tramway/application.js +0 -60
- data/app/assets/stylesheets/tramway/application.sass +0 -60
- data/app/assets/stylesheets/tramway/bootstrap-datepicker-1.8.0.css +0 -477
- data/app/controllers/concerns/auth_management.rb +0 -26
- data/app/controllers/concerns/filtering.rb +0 -43
- data/app/controllers/tramway/application_controller.rb +0 -142
- data/app/controllers/tramway/export/application_controller.rb +0 -5
- data/app/controllers/tramway/has_and_belongs_to_many_records_controller.rb +0 -26
- data/app/controllers/tramway/records_controller.rb +0 -86
- data/app/controllers/tramway/sessions_controller.rb +0 -49
- data/app/controllers/tramway/singletons_controller.rb +0 -48
- data/app/controllers/tramway/welcome_controller.rb +0 -17
- data/app/decorators/tramway/application_decorated_collection.rb +0 -15
- data/app/decorators/tramway/application_decorator.rb +0 -124
- data/app/decorators/tramway/associations/class_helper.rb +0 -45
- data/app/decorators/tramway/associations/object_helper.rb +0 -58
- data/app/decorators/tramway/attributes/view_helper.rb +0 -30
- data/app/decorators/tramway/concerns/attributes_decorator_helper.rb +0 -97
- data/app/decorators/tramway/concerns/table_builder.rb +0 -33
- data/app/decorators/tramway/default/values_helper.rb +0 -23
- data/app/decorators/tramway/delegating/class_helper.rb +0 -9
- data/app/decorators/tramway/user_decorator.rb +0 -49
- data/app/forms/admin/tramway/user_form.rb +0 -24
- data/app/forms/tramway/application_form.rb +0 -124
- data/app/forms/tramway/application_forms/association_class_helpers.rb +0 -7
- data/app/forms/tramway/application_forms/association_object_helpers.rb +0 -36
- data/app/forms/tramway/application_forms/constant_class_actions.rb +0 -7
- data/app/forms/tramway/application_forms/constant_object_actions.rb +0 -20
- data/app/forms/tramway/application_forms/frontend.rb +0 -12
- data/app/forms/tramway/application_forms/object_helpers.rb +0 -15
- data/app/forms/tramway/application_forms/properties_object_helper.rb +0 -16
- data/app/forms/tramway/application_forms/submit_helper.rb +0 -26
- data/app/forms/tramway/extendable_form.rb +0 -15
- data/app/forms/tramway/extendable_forms_helpers/class_builder.rb +0 -34
- data/app/forms/tramway/extendable_forms_helpers/ignored_properties_helper.rb +0 -11
- data/app/forms/tramway/extendable_forms_helpers/more_properties_helper.rb +0 -31
- data/app/forms/tramway/extendable_forms_helpers/properties_helper.rb +0 -16
- data/app/forms/tramway/extendable_forms_helpers/submit/class_helpers.rb +0 -18
- data/app/forms/tramway/extendable_forms_helpers/submit/object_helpers.rb +0 -21
- data/app/forms/tramway/extendable_forms_helpers/validators.rb +0 -40
- data/app/forms/tramway/extended_application_form.rb +0 -23
- data/app/forms/tramway/form_creator.rb +0 -7
- data/app/forms/tramway/session_form.rb +0 -26
- data/app/helpers/tramway/actions_helper.rb +0 -45
- data/app/helpers/tramway/additional_buttons_builder.rb +0 -12
- data/app/helpers/tramway/application_helper.rb +0 -27
- data/app/helpers/tramway/cases_helper.rb +0 -13
- data/app/helpers/tramway/copy_to_clipboard_helper.rb +0 -11
- data/app/helpers/tramway/focus_generator_helper.rb +0 -10
- data/app/helpers/tramway/frontend_helper.rb +0 -26
- data/app/helpers/tramway/inputs/associations_helper.rb +0 -30
- data/app/helpers/tramway/inputs/polymorphic_associations_helper.rb +0 -24
- data/app/helpers/tramway/inputs_helper.rb +0 -96
- data/app/helpers/tramway/model_helper.rb +0 -7
- data/app/helpers/tramway/navbar_helper.rb +0 -11
- data/app/helpers/tramway/records_helper.rb +0 -120
- data/app/helpers/tramway/russian_cases_helper.rb +0 -26
- data/app/helpers/tramway/singleton_helper.rb +0 -12
- data/app/helpers/tramway/state_machine_buttons_helper.rb +0 -61
- data/app/helpers/tramway/title_helper.rb +0 -25
- data/app/inputs/date_picker_input.rb +0 -4
- data/app/inputs/multiple_file_input.rb +0 -7
- data/app/models/tramway/application_record.rb +0 -60
- data/app/models/tramway/user.rb +0 -23
- data/app/uploaders/application_uploader.rb +0 -22
- data/app/uploaders/file_uploader.rb +0 -4
- data/app/uploaders/ico_uploader.rb +0 -7
- data/app/uploaders/image_defaults.rb +0 -14
- data/app/uploaders/photo_uploader.rb +0 -54
- data/app/views/layouts/tramway/application.html.haml +0 -32
- data/app/views/layouts/tramway/shared/_navbar.html.haml +0 -46
- data/app/views/tramway/404.haml +0 -1
- data/app/views/tramway/records/_form.html.haml +0 -22
- data/app/views/tramway/records/_list.html.haml +0 -38
- data/app/views/tramway/records/_search.html.haml +0 -34
- data/app/views/tramway/records/edit.html.haml +0 -1
- data/app/views/tramway/records/index.html.haml +0 -31
- data/app/views/tramway/records/new.html.haml +0 -1
- data/app/views/tramway/records/show.html.haml +0 -1
- data/app/views/tramway/sessions/new.html.haml +0 -9
- data/app/views/tramway/shared/_input.html.haml +0 -34
- data/app/views/tramway/shared/_input_extended.html.haml +0 -14
- data/app/views/tramway/shared/_messages.html.haml +0 -10
- data/app/views/tramway/shared/_show.html.haml +0 -35
- data/app/views/tramway/shared/errors/server_error.html.haml +0 -12
- data/app/views/tramway/shared/input_extended_types/_checkbox.html.haml +0 -1
- data/app/views/tramway/shared/input_extended_types/_select.html.haml +0 -16
- data/app/views/tramway/shared/input_extended_types/_simple.html.haml +0 -4
- data/app/views/tramway/shared/input_extended_types/_yes_no.html.haml +0 -4
- data/app/views/tramway/shared/show/_attribute_tr.html.haml +0 -9
- data/app/views/tramway/shared/show/associations/_habtm_row.html.haml +0 -14
- data/app/views/tramway/shared/show/associations/_list.html.haml +0 -21
- data/app/views/tramway/shared/show/associations/_row.html.haml +0 -19
- data/app/views/tramway/shared/show/associations/_table_row.html.haml +0 -21
- data/app/views/tramway/singletons/_form.html.haml +0 -15
- data/app/views/tramway/singletons/edit.html.haml +0 -1
- data/app/views/tramway/singletons/new.html.haml +0 -1
- data/app/views/tramway/singletons/show.html.haml +0 -1
- data/app/views/tramway/welcome/index.html.haml +0 -4
- data/config/initializers/assets.rb +0 -7
- data/config/initializers/carrierwave.rb +0 -5
- data/config/initializers/ckeditor.rb +0 -9
- data/config/initializers/plurals.rb +0 -25
- data/config/locales/en/collections.yml +0 -4
- data/config/locales/en/date.yml +0 -16
- data/config/locales/en/dates.yml +0 -10
- data/config/locales/en/helpers.yml +0 -26
- data/config/locales/en/locale.yml +0 -11
- data/config/locales/en/messages.yml +0 -7
- data/config/locales/en/models.yml +0 -9
- data/config/locales/en/simple_form_extension.yml +0 -8
- data/config/locales/en/state_machines.yml +0 -8
- data/config/locales/ru/collections.yml +0 -4
- data/config/locales/ru/date.yml +0 -16
- data/config/locales/ru/dates.yml +0 -10
- data/config/locales/ru/helpers.yml +0 -30
- data/config/locales/ru/locale.yml +0 -6
- data/config/locales/ru/messages.yml +0 -7
- data/config/locales/ru/models.yml +0 -21
- data/config/locales/ru/simple_form_extension.yml +0 -8
- data/config/locales/ru/state_machines.yml +0 -8
- data/lib/string.rb +0 -18
- data/lib/tramway/application.rb +0 -10
- data/lib/tramway/class_name_helpers.rb +0 -15
- data/lib/tramway/collection.rb +0 -9
- data/lib/tramway/collections/helper.rb +0 -21
- data/lib/tramway/collections.rb +0 -4
- data/lib/tramway/error.rb +0 -32
- data/lib/tramway/forms.rb +0 -5
- data/lib/tramway/generators/install_generator.rb +0 -49
- data/lib/tramway/generators/model_generator.rb +0 -105
- data/lib/tramway/generators/templates/create_tramway_users.rb +0 -18
- data/lib/tramway/generators/templates/decorator.rb.erb +0 -56
- data/lib/tramway/generators/templates/form.rb.erb +0 -22
- data/lib/tramway/generators/templates/initializers/simple_form.rb +0 -23
- data/lib/tramway/generators/templates/initializers/simple_form_bootstrap.rb +0 -133
- data/lib/tramway/generators.rb +0 -6
- data/lib/tramway/navbar.rb +0 -44
- data/lib/tramway/notifications.rb +0 -12
- data/lib/tramway/record_routes_helper.rb +0 -23
- data/lib/tramway/records_models.rb +0 -52
- data/lib/tramway/singleton_models.rb +0 -32
- data/lib/tramway/spec/helpers/navbar_helper.rb +0 -7
- data/lib/tramway/spec/helpers/tramway_helpers.rb +0 -47
- data/lib/tramway/welcome_page_actions.rb +0 -5
- data/lib/tramway/yaml/errors.yml +0 -49
- data/lib/validators/presence_validator.rb +0 -9
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Tramway::UserDecorator < Tramway::ApplicationDecorator
|
4
|
-
class << self
|
5
|
-
def collections
|
6
|
-
[:all]
|
7
|
-
end
|
8
|
-
|
9
|
-
def list_attributes
|
10
|
-
[:email]
|
11
|
-
end
|
12
|
-
|
13
|
-
def show_attributes
|
14
|
-
%i[email first_name last_name phone role created_at updated_at credential_text]
|
15
|
-
end
|
16
|
-
|
17
|
-
if defined? Tramway::Conference
|
18
|
-
def show_associations
|
19
|
-
[:social_networks]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
decorate_association :social_networks, as: :record if defined? Tramway::Conference
|
25
|
-
|
26
|
-
delegate_attributes :first_name, :last_name, :email, :phone, :role, :created_at, :updated_at, :admin?
|
27
|
-
|
28
|
-
def name
|
29
|
-
"#{object&.first_name} #{object&.last_name}"
|
30
|
-
end
|
31
|
-
|
32
|
-
def credential_text
|
33
|
-
content_tag(:pre) do
|
34
|
-
id = "credential_text_#{object.id}"
|
35
|
-
|
36
|
-
concat(content_tag(:span, id: id) do
|
37
|
-
text = "URL: #{ENV['PROJECT_URL']}\n"
|
38
|
-
text += "Email: #{object.email}\n"
|
39
|
-
"#{text}Password: "
|
40
|
-
end)
|
41
|
-
|
42
|
-
concat(content_tag(:br))
|
43
|
-
|
44
|
-
concat copy_to_clipboard id
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
alias title name
|
49
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Admin::Tramway::UserForm < ::Tramway::ApplicationForm
|
4
|
-
self.model_class = Tramway::User
|
5
|
-
|
6
|
-
properties :email, :password, :first_name, :last_name, :role, :phone
|
7
|
-
|
8
|
-
# fix me
|
9
|
-
unless model_class.columns_hash['project_id'].present?
|
10
|
-
validates :email, email: true, uniqueness: true,
|
11
|
-
on: :destroy
|
12
|
-
end
|
13
|
-
|
14
|
-
def initialize(object)
|
15
|
-
super(object).tap do
|
16
|
-
form_properties email: :string,
|
17
|
-
password: :string,
|
18
|
-
first_name: :string,
|
19
|
-
last_name: :string,
|
20
|
-
phone: :string,
|
21
|
-
role: :default
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Tramway::ApplicationForm
|
4
|
-
include Tramway::ApplicationForms::AssociationObjectHelpers
|
5
|
-
include Tramway::ApplicationForms::ConstantObjectActions
|
6
|
-
include Tramway::ApplicationForms::PropertiesObjectHelper
|
7
|
-
include Tramway::ApplicationForms::ObjectHelpers
|
8
|
-
include Tramway::ApplicationForms::SubmitHelper
|
9
|
-
|
10
|
-
attr_accessor :submit_message
|
11
|
-
|
12
|
-
def initialize(object = nil)
|
13
|
-
tap do
|
14
|
-
@object = object
|
15
|
-
@@model_class = object.class
|
16
|
-
@@enumerized_attributes = object.class.try :enumerized_attributes
|
17
|
-
@@associations ||= []
|
18
|
-
|
19
|
-
self.class.full_class_name_associations&.each do |association, class_name|
|
20
|
-
define_association_method association, class_name
|
21
|
-
end
|
22
|
-
|
23
|
-
delegating object
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def model_name
|
28
|
-
@@model_class.model_name
|
29
|
-
end
|
30
|
-
|
31
|
-
def associations
|
32
|
-
@@associations
|
33
|
-
end
|
34
|
-
|
35
|
-
class << self
|
36
|
-
include Tramway::ApplicationForms::AssociationClassHelpers
|
37
|
-
include Tramway::ApplicationForms::ConstantClassActions
|
38
|
-
include Tramway::ApplicationForms::Frontend
|
39
|
-
|
40
|
-
delegate :defined_enums, to: :model_class
|
41
|
-
|
42
|
-
def properties(*props)
|
43
|
-
props.each { |prop| property prop }
|
44
|
-
end
|
45
|
-
|
46
|
-
def property(prop)
|
47
|
-
@@properties ||= []
|
48
|
-
@@properties << prop
|
49
|
-
delegate prop, to: :model
|
50
|
-
define_method("#{prop}=") do |value|
|
51
|
-
model.send "#{prop}=", value
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def association(property)
|
56
|
-
properties property
|
57
|
-
@@associations = ((defined?(@@associations) && @@associations) || []) + [property]
|
58
|
-
end
|
59
|
-
|
60
|
-
def full_class_name_associations
|
61
|
-
@@associations&.reduce({}) do |hash, association|
|
62
|
-
options = @@model_class.reflect_on_all_associations(:belongs_to).select do |a|
|
63
|
-
a.name == association.to_sym
|
64
|
-
end.first&.options
|
65
|
-
add_polymorphic_association hash, association, options
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def add_polymorphic_association(hash, association, options)
|
70
|
-
if options&.dig(:polymorphic)
|
71
|
-
hash.merge association => @@model_class.send("#{association}_type").values
|
72
|
-
elsif options
|
73
|
-
hash.merge(association => (options[:class_name] || association.to_s.camelize).constantize)
|
74
|
-
else
|
75
|
-
hash
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def full_class_name_association(association_name)
|
80
|
-
full_class_name_associations[association_name]
|
81
|
-
end
|
82
|
-
|
83
|
-
def reflect_on_association(*args)
|
84
|
-
@@model_class.reflect_on_association(*args)
|
85
|
-
end
|
86
|
-
|
87
|
-
def enumerized_attributes
|
88
|
-
@@enumerized_attributes
|
89
|
-
end
|
90
|
-
|
91
|
-
def model_class
|
92
|
-
if defined?(@@model_class) && @@model_class
|
93
|
-
@@model_class
|
94
|
-
else
|
95
|
-
model_class_name ||= name.to_s.sub(/Form$/, '')
|
96
|
-
begin
|
97
|
-
@@model_class = model_class_name.constantize
|
98
|
-
rescue StandardError
|
99
|
-
Tramway::Error.raise_error :tramway, :application_form, :model_class, :there_is_not_model_class,
|
100
|
-
name: name, model_class_name: model_class_name
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def model_class=(name)
|
106
|
-
@@model_class = name
|
107
|
-
end
|
108
|
-
|
109
|
-
def validates(attribute, **options)
|
110
|
-
if !defined?(@@model_class) || @@model_class.nil?
|
111
|
-
Tramway::Error.raise_error(:tramway, :application_form, :validates, :you_need_to_set_model_class)
|
112
|
-
end
|
113
|
-
@@model_class.validates attribute, **options
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
private
|
118
|
-
|
119
|
-
def collecting_associations_errors
|
120
|
-
@@associations.each do |association|
|
121
|
-
model.send("#{association}=", send(association)) if errors.details[association] == [{ error: :blank }]
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ApplicationForms::AssociationObjectHelpers
|
4
|
-
def define_association_method(association, class_name)
|
5
|
-
if class_name.is_a? Array
|
6
|
-
define_polymorphic_association association
|
7
|
-
else
|
8
|
-
self.class.send(:define_method, "#{association}=") do |value|
|
9
|
-
model.send "#{association}_id=", value
|
10
|
-
model.send "#{association}=", class_name.find(value)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def define_polymorphic_association(association)
|
16
|
-
self.class.send(:define_method, "#{association}=") do |value|
|
17
|
-
if value.present?
|
18
|
-
if association_class(value).nil?
|
19
|
-
Tramway::Error.raise_error :tramway, :application_form, :initialize, :polymorphic_class_is_nil,
|
20
|
-
association_name: association
|
21
|
-
else
|
22
|
-
model.send "#{association}=", association_class(value).find(value.split('_')[-1])
|
23
|
-
send "#{association}_type=", association_class(value).to_s
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def association_class(value)
|
32
|
-
association_class_object = value.split('_')[0..-2].join('_').camelize
|
33
|
-
association_class_object = association_class_object.constantize if association_class_object.is_a? String
|
34
|
-
association_class_object
|
35
|
-
end
|
36
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ApplicationForms::ConstantObjectActions
|
4
|
-
def delegating(object)
|
5
|
-
%i[to_key errors].each { |method| self.class.send(:define_method, method) { object.send method } }
|
6
|
-
end
|
7
|
-
|
8
|
-
def build_errors; end
|
9
|
-
|
10
|
-
def attributes
|
11
|
-
properties.reduce({}) do |hash, property|
|
12
|
-
value = if model.respond_to? :values
|
13
|
-
model.values[property.first.to_s]
|
14
|
-
else
|
15
|
-
model.send(property.first.to_s)
|
16
|
-
end
|
17
|
-
hash.merge! property.first => value
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ApplicationForms::PropertiesObjectHelper
|
4
|
-
def form_properties(**args)
|
5
|
-
@form_properties = args
|
6
|
-
end
|
7
|
-
|
8
|
-
def properties
|
9
|
-
@form_properties ||= {}
|
10
|
-
yaml_config_file_path = Rails.root.join('app', 'forms', "#{self.class.name.underscore}.yml")
|
11
|
-
|
12
|
-
return @form_properties unless File.exist? yaml_config_file_path
|
13
|
-
|
14
|
-
@form_properties.deep_merge YAML.load_file(yaml_config_file_path).deep_symbolize_keys
|
15
|
-
end
|
16
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ApplicationForms::SubmitHelper
|
4
|
-
def submit(params)
|
5
|
-
if params
|
6
|
-
params.each { |key, value| send("#{key}=", value) }
|
7
|
-
result = save
|
8
|
-
result.tap do
|
9
|
-
collecting_associations_errors unless result
|
10
|
-
end
|
11
|
-
else
|
12
|
-
Tramway::Error.raise_error(:tramway, :application_form, :submit, :params_should_not_be_nil)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def save
|
17
|
-
model.save
|
18
|
-
rescue ArgumentError => e
|
19
|
-
Tramway::Error.raise_error :tramway, :application_form, :save, :argument_error, message: e.message
|
20
|
-
rescue StandardError => e
|
21
|
-
raise e unless e.try :name
|
22
|
-
|
23
|
-
Tramway::Error.raise_error :tramway, :application_form, :save, :looks_like_you_have_method,
|
24
|
-
method_name: e.name.to_s.gsub('=', ''), model_class: model.class, class_name: self.class
|
25
|
-
end
|
26
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Tramway::ExtendableForm
|
4
|
-
class << self
|
5
|
-
include Tramway::ExtendableFormsHelpers::ClassBuilder
|
6
|
-
|
7
|
-
def new(name, simple_properties: {}, **more_properties)
|
8
|
-
if Object.const_defined? name
|
9
|
-
name.constantize
|
10
|
-
else
|
11
|
-
build_form_class name, simple_properties, more_properties
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::ClassBuilder
|
4
|
-
def build_form_class(name, simple_properties, more_properties)
|
5
|
-
Object.const_set(name, Class.new(::Tramway::ApplicationForm) do
|
6
|
-
properties(*simple_properties.keys) if simple_properties.keys.any?
|
7
|
-
|
8
|
-
include Tramway::ExtendableFormsHelpers::Submit::ObjectHelpers
|
9
|
-
include Tramway::ExtendableFormsHelpers::Validators
|
10
|
-
extend Tramway::ExtendableFormsHelpers::Submit::ClassHelpers
|
11
|
-
extend Tramway::ExtendableFormsHelpers::PropertiesHelper
|
12
|
-
extend Tramway::ExtendableFormsHelpers::MorePropertiesHelper
|
13
|
-
extend Tramway::ExtendableFormsHelpers::IgnoredPropertiesHelper
|
14
|
-
|
15
|
-
define_submit_method simple_properties, more_properties
|
16
|
-
define_properties_method simple_properties, more_properties
|
17
|
-
define_ignored_properties_method
|
18
|
-
|
19
|
-
more_properties.each do |property|
|
20
|
-
define_property_method property[0]
|
21
|
-
|
22
|
-
case property[1][:object].field_type
|
23
|
-
when 'file'
|
24
|
-
field = property[1][:object]
|
25
|
-
define_file_property_assignment_method property, field
|
26
|
-
else
|
27
|
-
# next unless property[1][:validates].present?
|
28
|
-
|
29
|
-
define_assignment_method property
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end)
|
33
|
-
end
|
34
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::IgnoredPropertiesHelper
|
4
|
-
def define_ignored_properties_method
|
5
|
-
define_method :jsonb_ignored_properties do |properties|
|
6
|
-
properties.map do |property|
|
7
|
-
property[0].to_s if property[1][:object].field_type == 'file'
|
8
|
-
end.compact
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::MorePropertiesHelper
|
4
|
-
def define_property_method(property_name)
|
5
|
-
define_method property_name do
|
6
|
-
model.values[property_name] if model.values
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def define_assignment_method(property)
|
11
|
-
define_method "#{property[0]}=" do |value|
|
12
|
-
if property[1][:validates].present?
|
13
|
-
property[1][:validates].each do |pair|
|
14
|
-
make_validates property[0], pair, value
|
15
|
-
end
|
16
|
-
else
|
17
|
-
model.values.merge property[0] => value
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def define_file_property_assignment_method(property, field)
|
23
|
-
define_method "#{property[0]}=" do |value|
|
24
|
-
file_instance = property[1][:association_model].find_or_create_by(
|
25
|
-
"#{model.class.name.underscore}_id" => model.id, "#{field.class.name.underscore}_id" => field.id
|
26
|
-
)
|
27
|
-
file_instance.file = value
|
28
|
-
file_instance.save!
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::PropertiesHelper
|
4
|
-
def define_properties_method(simple_properties, more_properties)
|
5
|
-
define_method 'properties' do
|
6
|
-
hash = simple_properties.each_with_object({}) do |property, h|
|
7
|
-
h.merge! property[0] => property[1] unless model.class.state_machines_names.include?(property[0])
|
8
|
-
end
|
9
|
-
more_properties.reduce(hash) do |h, property|
|
10
|
-
h.merge! property[0] => {
|
11
|
-
extended_form_property: property[1][:object]
|
12
|
-
}
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::Submit::ClassHelpers
|
4
|
-
def define_submit_method(simple_properties, more_properties)
|
5
|
-
define_method 'submit' do |params|
|
6
|
-
model.values ||= {}
|
7
|
-
extended_params = extended(simple_properties, more_properties, params)
|
8
|
-
every_attribute_set params
|
9
|
-
model.values = extended_params.reduce(model.values) do |hash, (key, value)|
|
10
|
-
hash.merge! key => value
|
11
|
-
end
|
12
|
-
|
13
|
-
return unless model.errors.empty?
|
14
|
-
|
15
|
-
save_in_submit params
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::Submit::ObjectHelpers
|
4
|
-
def extended(simple_properties, more_properties, params)
|
5
|
-
params.except(*simple_properties.keys).except(*jsonb_ignored_properties(more_properties)).permit!.to_h
|
6
|
-
end
|
7
|
-
|
8
|
-
def every_attribute_set(params)
|
9
|
-
params.each do |key, value|
|
10
|
-
method_name = "#{key}="
|
11
|
-
send(method_name, value) if respond_to?(method_name)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def save_in_submit(_params)
|
16
|
-
result = save
|
17
|
-
result.tap do
|
18
|
-
collecting_associations_errors unless result
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ExtendableFormsHelpers::Validators
|
4
|
-
def make_validates(property_name, validation, value)
|
5
|
-
case validation[0].to_s
|
6
|
-
when 'presence'
|
7
|
-
presence_validator property_name, validation, value
|
8
|
-
when 'inclusion'
|
9
|
-
inclusion_validator property_name, validation, value
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def presence_validator(property_name, validation, value)
|
14
|
-
validator_object = PresenceValidator.new(attributes: :not_blank)
|
15
|
-
return if validation[1] == 'false'
|
16
|
-
return if validation[1] == 'true' && validator_object.send(:valid?, value)
|
17
|
-
|
18
|
-
model.errors.add(
|
19
|
-
property_name,
|
20
|
-
I18n.t(
|
21
|
-
"activerecord.errors.models.#{model.class.name.underscore}.attributes.default.#{validation[0]}",
|
22
|
-
value: value
|
23
|
-
)
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
def inclusion_validator(property_name, validation, value)
|
28
|
-
in_array = validation[1][:in]
|
29
|
-
|
30
|
-
return if value.in? in_array
|
31
|
-
|
32
|
-
model.errors.add(
|
33
|
-
property_name,
|
34
|
-
I18n.t(
|
35
|
-
"activerecord.errors.models.#{model.class.name.underscore}.attributes.default.#{validation[0]}",
|
36
|
-
value: value
|
37
|
-
)
|
38
|
-
)
|
39
|
-
end
|
40
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Tramway::ExtendedApplicationForm < Tramway::ApplicationForm
|
4
|
-
class << self
|
5
|
-
def properties(*args)
|
6
|
-
@@extendable_properties ||= []
|
7
|
-
@@extendable_properties += args
|
8
|
-
super(*args)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def initialize(model)
|
13
|
-
@@extendable_properties.each do |prop|
|
14
|
-
next if model.respond_to? prop
|
15
|
-
|
16
|
-
model.class.define_method prop do
|
17
|
-
end
|
18
|
-
model.class.define_method "#{prop}=" do |value|
|
19
|
-
end
|
20
|
-
end
|
21
|
-
super
|
22
|
-
end
|
23
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Tramway::SessionForm < Tramway::ApplicationForm
|
4
|
-
properties :email
|
5
|
-
attr_accessor :password
|
6
|
-
|
7
|
-
def initialize(object)
|
8
|
-
object = Tramway::User.new unless object.present?
|
9
|
-
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
def validate(params)
|
14
|
-
(add_wrong_email_or_password_error && return) if model.new_record?
|
15
|
-
|
16
|
-
(!model.new_record? && model.authenticate(params[:password])).tap do |result|
|
17
|
-
add_wrong_email_or_password_error unless result
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def add_wrong_email_or_password_error
|
24
|
-
errors.add(:email, I18n.t('errors.wrong_email_or_password'))
|
25
|
-
end
|
26
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::ActionsHelper
|
4
|
-
def create_is_available?(model_class)
|
5
|
-
Tramway.action_is_available?(
|
6
|
-
nil,
|
7
|
-
project: (@application_engine || @application.name),
|
8
|
-
model_name: model_class,
|
9
|
-
role: current_user.role,
|
10
|
-
action: :create
|
11
|
-
)
|
12
|
-
end
|
13
|
-
|
14
|
-
def update_is_available?(object)
|
15
|
-
Tramway.action_is_available?(
|
16
|
-
object,
|
17
|
-
project: (@application_engine || @application.name),
|
18
|
-
model_name: object.model.class.name,
|
19
|
-
role: current_user.role,
|
20
|
-
action: :update
|
21
|
-
)
|
22
|
-
end
|
23
|
-
|
24
|
-
def destroy_is_available?(object)
|
25
|
-
Tramway.action_is_available?(
|
26
|
-
object,
|
27
|
-
project: (@application_engine || @application.name),
|
28
|
-
model_name: object.model.class.name,
|
29
|
-
role: current_user.role,
|
30
|
-
action: :destroy
|
31
|
-
)
|
32
|
-
end
|
33
|
-
|
34
|
-
# delete_button is in smart-buttons gem
|
35
|
-
|
36
|
-
def edit_button(url:, button_options:, &block)
|
37
|
-
link_to(url, **button_options, &block)
|
38
|
-
end
|
39
|
-
|
40
|
-
def habtm_destroy_is_available?(association_object, main_object)
|
41
|
-
main_model_name = main_object.model.class.to_s.underscore.pluralize
|
42
|
-
|
43
|
-
Tramway.forms&.include?("#{main_model_name}/remove_#{association_object.model.class.to_s.underscore}")
|
44
|
-
end
|
45
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tramway::AdditionalButtonsBuilder
|
4
|
-
def build_button(button)
|
5
|
-
options = button[:options] || {}
|
6
|
-
style = 'margin-right: 8px'
|
7
|
-
concat(link_to(button[:url], method: button[:method], class: "btn btn-#{button[:color]} btn-xs", style: style,
|
8
|
-
**options) do
|
9
|
-
button[:inner]&.call
|
10
|
-
end)
|
11
|
-
end
|
12
|
-
end
|