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
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
require 'bundler/setup'
|
4
|
+
|
5
|
+
APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
|
6
|
+
load 'rails/tasks/engine.rake'
|
7
|
+
|
8
|
+
load 'rails/tasks/statistics.rake'
|
9
|
+
|
10
|
+
require 'bundler/gem_tasks'
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
= button_to @text, @href, class: 'text-white hover:bg-red-300 px-4 py-2 rounded'
|
data/config/routes.rb
CHANGED
@@ -1,13 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Tramway::Engine.routes.draw do
|
4
|
-
mount Tramway::Export::Engine, at: '/' if defined? Tramway::Export::Engine
|
5
|
-
|
6
|
-
root to: 'welcome#index'
|
7
|
-
|
8
|
-
resources :records
|
9
|
-
resource :singleton, only: %i[new create show edit update]
|
10
|
-
resources :has_and_belongs_to_many_records, only: %i[create destroy]
|
11
|
-
resource :session, only: %i[new create]
|
12
|
-
get 'sign_out', to: 'sessions#destroy'
|
13
4
|
end
|
data/lib/tramway/engine.rb
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class Tramway::Engine < ::Rails::Engine
|
9
|
-
isolate_namespace Tramway
|
10
|
-
|
11
|
-
config.before_initialize do
|
12
|
-
config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
|
3
|
+
module Tramway
|
4
|
+
# Rails plugin is the Engine
|
5
|
+
#
|
6
|
+
class Engine < ::Rails::Engine
|
7
|
+
isolate_namespace Tramway
|
13
8
|
end
|
14
9
|
end
|
data/lib/tramway/version.rb
CHANGED
data/lib/tramway.rb
CHANGED
@@ -1,146 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'tramway/version'
|
3
4
|
require 'tramway/engine'
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require 'font_awesome5_rails'
|
7
|
-
require 'pg_search'
|
8
|
-
require 'validators/presence_validator'
|
9
|
-
require 'tramway/singleton_models'
|
10
|
-
require 'tramway/records_models'
|
11
|
-
require 'tramway/forms'
|
12
|
-
require 'tramway/notifications'
|
13
|
-
require 'tramway/welcome_page_actions'
|
14
|
-
require 'tramway/navbar'
|
15
|
-
require 'tramway/error'
|
16
|
-
require 'tramway/generators/install_generator'
|
17
|
-
require 'tramway/class_name_helpers'
|
5
|
+
require 'view_component/compiler'
|
6
|
+
require 'view_component/engine'
|
18
7
|
|
8
|
+
# Core module for the whole gem
|
19
9
|
module Tramway
|
20
|
-
|
21
|
-
def initialize_application(**options)
|
22
|
-
@application ||= Tramway::Application.new
|
23
|
-
|
24
|
-
options.each { |attr, value| @application.send "#{attr}=", value }
|
25
|
-
end
|
26
|
-
|
27
|
-
def application_object
|
28
|
-
@application&.model_class.present? ? @application.model_class.first : @application
|
29
|
-
end
|
30
|
-
|
31
|
-
def root
|
32
|
-
File.dirname __dir__
|
33
|
-
end
|
34
|
-
|
35
|
-
attr_reader :application, :customized_admin_navbar
|
36
|
-
|
37
|
-
include Tramway::RecordsModels
|
38
|
-
include Tramway::SingletonModels
|
39
|
-
include Tramway::Forms
|
40
|
-
include Tramway::Notifications
|
41
|
-
include Tramway::WelcomePageActions
|
42
|
-
include Tramway::Navbar
|
43
|
-
|
44
|
-
def engine_class(project)
|
45
|
-
class_name = "Tramway::#{project.to_s.camelize}"
|
46
|
-
class_name.classify.safe_constantize
|
47
|
-
end
|
48
|
-
|
49
|
-
def project_is_engine?(project)
|
50
|
-
engine_class(project)
|
51
|
-
end
|
52
|
-
|
53
|
-
def get_models_by_key(checked_models, project, role)
|
54
|
-
unless project.present?
|
55
|
-
Tramway::Error.raise_error(
|
56
|
-
:tramway,
|
57
|
-
:project,
|
58
|
-
:no_instance_of_application_class,
|
59
|
-
application_class: Tramway.application.model_class
|
60
|
-
)
|
61
|
-
end
|
62
|
-
|
63
|
-
checked_models && checked_models[project]&.dig(role)&.keys || []
|
64
|
-
end
|
65
|
-
|
66
|
-
def models_array(models_type:, role:)
|
67
|
-
instance_variable_get("@#{models_type}_models")&.map { |projects| projects.last[role]&.keys }&.flatten || []
|
68
|
-
end
|
69
|
-
|
70
|
-
def action_is_available?(record, project:, role:, model_name:, action:)
|
71
|
-
project = project.underscore.to_sym unless project.is_a? Symbol
|
72
|
-
actions = select_actions(project: project, role: role.to_sym, model_name: model_name)
|
73
|
-
availability = compute_availability actions, action
|
74
|
-
|
75
|
-
return false unless availability.present?
|
76
|
-
return true if availability.is_a? Symbol
|
77
|
-
|
78
|
-
availability.call record
|
79
|
-
end
|
80
|
-
|
81
|
-
def compute_availability(actions, action)
|
82
|
-
case actions
|
83
|
-
when Array
|
84
|
-
actions.select { |a| a.to_sym == action.to_sym }.first
|
85
|
-
when Hash
|
86
|
-
actions[action.to_sym]
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def select_actions(project:, role:, model_name:)
|
91
|
-
stringify = ->(models) { stringify_keys(models&.dig(project, role))&.dig(model_name) }
|
92
|
-
stringify.call(@singleton_models) || stringify.call(@available_models)
|
93
|
-
end
|
94
|
-
|
95
|
-
def stringify_keys(hash)
|
96
|
-
hash&.reduce({}) { |new_hash, pair| new_hash.merge! pair[0].to_s => pair[1] }
|
97
|
-
end
|
98
|
-
|
99
|
-
def admin_model
|
100
|
-
auth_config.first[:user_model]
|
101
|
-
end
|
102
|
-
|
103
|
-
def auth_config
|
104
|
-
@@auth_config ||= [{ user_model: Tramway::User, auth_attributes: :email }]
|
105
|
-
@@auth_config
|
106
|
-
end
|
107
|
-
|
108
|
-
def auth_config=(params)
|
109
|
-
case params
|
110
|
-
when Hash
|
111
|
-
@@auth_config = [params]
|
112
|
-
when Array
|
113
|
-
@@auth_config = params
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def user_based_models
|
118
|
-
@@auth_config ||= []
|
119
|
-
@@auth_config.map do |conf|
|
120
|
-
conf[:user_model]
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def auth_attributes
|
125
|
-
@@auth_config ||= []
|
126
|
-
@@auth_config.reduce({}) do |hash, conf|
|
127
|
-
hash.merge! conf[:user_model] => conf[:auth_attributes]
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
def root_path_for=(**options)
|
132
|
-
@root_path ||= {}
|
133
|
-
@root_path.merge! options
|
134
|
-
end
|
135
|
-
|
136
|
-
def root_path_for(user_class)
|
137
|
-
@root_path&.dig(user_class) || '/'
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
# HACK: FIXME
|
143
|
-
|
144
|
-
class ActiveModel::Errors
|
145
|
-
def merge!(*args); end
|
10
|
+
# Your code goes here...
|
146
11
|
end
|