tramway 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +12 -893
  4. data/Rakefile +8 -8
  5. data/app/components/tailwind_component.html.haml +0 -0
  6. data/app/components/tailwind_component.rb +6 -0
  7. data/app/components/tailwinds/navbar/button_component.html.haml +1 -0
  8. data/app/components/tailwinds/navbar/button_component.rb +14 -0
  9. data/config/routes.rb +0 -9
  10. data/lib/tasks/tramway_tasks.rake +5 -0
  11. data/lib/tramway/engine.rb +5 -10
  12. data/lib/tramway/version.rb +1 -1
  13. data/lib/tramway.rb +5 -140
  14. metadata +16 -545
  15. data/app/assets/config/tramway_core_manifest.js +0 -2
  16. data/app/assets/images/tramway/mona_lisa_from_prado.jpg +0 -0
  17. data/app/assets/images/tramway/mona_lisa_from_prado_square.jpg +0 -0
  18. data/app/assets/javascripts/bootstrap-datepicker-1.8.0.js +0 -2035
  19. data/app/assets/javascripts/bootstrap-datepicker-1.8.0.ru.min.js +0 -64
  20. data/app/assets/javascripts/ckeditor/config.js +0 -30
  21. data/app/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +0 -1259
  22. data/app/assets/javascripts/ckeditor/plugins/image/icons/hidpi/image.png +0 -0
  23. data/app/assets/javascripts/ckeditor/plugins/image/icons/image.png +0 -0
  24. data/app/assets/javascripts/ckeditor/plugins/image/images/noimage.png +0 -0
  25. data/app/assets/javascripts/ckeditor/plugins/image/lang/en.js +0 -25
  26. data/app/assets/javascripts/ckeditor/plugins/image/lang/ru.js +0 -25
  27. data/app/assets/javascripts/ckeditor/plugins/image/plugin.js +0 -184
  28. data/app/assets/javascripts/ckeditor/plugins/youtube/images/icon-hdpi.png +0 -0
  29. data/app/assets/javascripts/ckeditor/plugins/youtube/images/icon.png +0 -0
  30. data/app/assets/javascripts/ckeditor/plugins/youtube/lang/en.js +0 -25
  31. data/app/assets/javascripts/ckeditor/plugins/youtube/lang/ru.js +0 -25
  32. data/app/assets/javascripts/ckeditor/plugins/youtube/plugin.js +0 -449
  33. data/app/assets/javascripts/tramway/application.js +0 -61
  34. data/app/assets/stylesheets/tramway/application.sass +0 -59
  35. data/app/controllers/tramway/application_controller.rb +0 -142
  36. data/app/controllers/tramway/concerns/auth_management.rb +0 -26
  37. data/app/controllers/tramway/concerns/filtering.rb +0 -43
  38. data/app/controllers/tramway/export/application_controller.rb +0 -5
  39. data/app/controllers/tramway/has_and_belongs_to_many_records_controller.rb +0 -26
  40. data/app/controllers/tramway/records_controller.rb +0 -86
  41. data/app/controllers/tramway/sessions_controller.rb +0 -49
  42. data/app/controllers/tramway/singletons_controller.rb +0 -48
  43. data/app/controllers/tramway/welcome_controller.rb +0 -17
  44. data/app/decorators/tramway/application_decorated_collection.rb +0 -15
  45. data/app/decorators/tramway/application_decorator.rb +0 -124
  46. data/app/decorators/tramway/associations/class_helper.rb +0 -45
  47. data/app/decorators/tramway/associations/object_helper.rb +0 -58
  48. data/app/decorators/tramway/attributes/view_helper.rb +0 -30
  49. data/app/decorators/tramway/concerns/attributes_decorator_helper.rb +0 -97
  50. data/app/decorators/tramway/concerns/table_builder.rb +0 -33
  51. data/app/decorators/tramway/default/values_helper.rb +0 -23
  52. data/app/decorators/tramway/delegating/class_helper.rb +0 -9
  53. data/app/decorators/tramway/user_decorator.rb +0 -49
  54. data/app/forms/admin/tramway/user_form.rb +0 -24
  55. data/app/forms/tramway/application_form.rb +0 -124
  56. data/app/forms/tramway/application_forms/association_class_helpers.rb +0 -7
  57. data/app/forms/tramway/application_forms/association_object_helpers.rb +0 -36
  58. data/app/forms/tramway/application_forms/constant_class_actions.rb +0 -7
  59. data/app/forms/tramway/application_forms/constant_object_actions.rb +0 -20
  60. data/app/forms/tramway/application_forms/frontend.rb +0 -12
  61. data/app/forms/tramway/application_forms/object_helpers.rb +0 -15
  62. data/app/forms/tramway/application_forms/properties_object_helper.rb +0 -16
  63. data/app/forms/tramway/application_forms/submit_helper.rb +0 -26
  64. data/app/forms/tramway/extendable_form.rb +0 -15
  65. data/app/forms/tramway/extendable_forms_helpers/class_builder.rb +0 -34
  66. data/app/forms/tramway/extendable_forms_helpers/ignored_properties_helper.rb +0 -11
  67. data/app/forms/tramway/extendable_forms_helpers/more_properties_helper.rb +0 -31
  68. data/app/forms/tramway/extendable_forms_helpers/properties_helper.rb +0 -16
  69. data/app/forms/tramway/extendable_forms_helpers/submit/class_helpers.rb +0 -18
  70. data/app/forms/tramway/extendable_forms_helpers/submit/object_helpers.rb +0 -21
  71. data/app/forms/tramway/extendable_forms_helpers/validators.rb +0 -40
  72. data/app/forms/tramway/extended_application_form.rb +0 -23
  73. data/app/forms/tramway/form_creator.rb +0 -7
  74. data/app/forms/tramway/session_form.rb +0 -26
  75. data/app/helpers/tramway/actions_helper.rb +0 -45
  76. data/app/helpers/tramway/additional_buttons_builder.rb +0 -12
  77. data/app/helpers/tramway/application_helper.rb +0 -27
  78. data/app/helpers/tramway/cases_helper.rb +0 -13
  79. data/app/helpers/tramway/copy_to_clipboard_helper.rb +0 -11
  80. data/app/helpers/tramway/focus_generator_helper.rb +0 -10
  81. data/app/helpers/tramway/frontend_helper.rb +0 -26
  82. data/app/helpers/tramway/inputs/associations_helper.rb +0 -30
  83. data/app/helpers/tramway/inputs/polymorphic_associations_helper.rb +0 -24
  84. data/app/helpers/tramway/inputs_helper.rb +0 -96
  85. data/app/helpers/tramway/model_helper.rb +0 -7
  86. data/app/helpers/tramway/navbar_helper.rb +0 -11
  87. data/app/helpers/tramway/records_helper.rb +0 -120
  88. data/app/helpers/tramway/russian_cases_helper.rb +0 -26
  89. data/app/helpers/tramway/singleton_helper.rb +0 -12
  90. data/app/helpers/tramway/state_machine_buttons_helper.rb +0 -61
  91. data/app/helpers/tramway/title_helper.rb +0 -25
  92. data/app/inputs/date_picker_input.rb +0 -4
  93. data/app/inputs/multiple_file_input.rb +0 -7
  94. data/app/models/tramway/application_record.rb +0 -62
  95. data/app/models/tramway/user.rb +0 -18
  96. data/app/uploaders/application_uploader.rb +0 -22
  97. data/app/uploaders/file_uploader.rb +0 -4
  98. data/app/uploaders/ico_uploader.rb +0 -7
  99. data/app/uploaders/image_defaults.rb +0 -14
  100. data/app/uploaders/photo_uploader.rb +0 -54
  101. data/app/views/layouts/tramway/application.html.haml +0 -32
  102. data/app/views/layouts/tramway/shared/_navbar.html.haml +0 -46
  103. data/app/views/tramway/404.haml +0 -1
  104. data/app/views/tramway/records/_form.html.haml +0 -22
  105. data/app/views/tramway/records/_list.html.haml +0 -38
  106. data/app/views/tramway/records/_search.html.haml +0 -34
  107. data/app/views/tramway/records/edit.html.haml +0 -1
  108. data/app/views/tramway/records/index.html.haml +0 -31
  109. data/app/views/tramway/records/new.html.haml +0 -1
  110. data/app/views/tramway/records/show.html.haml +0 -1
  111. data/app/views/tramway/sessions/new.html.haml +0 -9
  112. data/app/views/tramway/shared/_input.html.haml +0 -34
  113. data/app/views/tramway/shared/_input_extended.html.haml +0 -14
  114. data/app/views/tramway/shared/_messages.html.haml +0 -10
  115. data/app/views/tramway/shared/_show.html.haml +0 -35
  116. data/app/views/tramway/shared/errors/server_error.html.haml +0 -12
  117. data/app/views/tramway/shared/input_extended_types/_checkbox.html.haml +0 -1
  118. data/app/views/tramway/shared/input_extended_types/_select.html.haml +0 -16
  119. data/app/views/tramway/shared/input_extended_types/_simple.html.haml +0 -4
  120. data/app/views/tramway/shared/input_extended_types/_yes_no.html.haml +0 -4
  121. data/app/views/tramway/shared/show/_attribute_tr.html.haml +0 -9
  122. data/app/views/tramway/shared/show/associations/_habtm_row.html.haml +0 -14
  123. data/app/views/tramway/shared/show/associations/_list.html.haml +0 -21
  124. data/app/views/tramway/shared/show/associations/_row.html.haml +0 -19
  125. data/app/views/tramway/shared/show/associations/_table_row.html.haml +0 -21
  126. data/app/views/tramway/singletons/_form.html.haml +0 -15
  127. data/app/views/tramway/singletons/edit.html.haml +0 -1
  128. data/app/views/tramway/singletons/new.html.haml +0 -1
  129. data/app/views/tramway/singletons/show.html.haml +0 -1
  130. data/app/views/tramway/welcome/index.html.haml +0 -4
  131. data/config/initializers/assets.rb +0 -7
  132. data/config/initializers/ckeditor.rb +0 -9
  133. data/config/initializers/plurals.rb +0 -25
  134. data/config/locales/en/collections.yml +0 -4
  135. data/config/locales/en/date.yml +0 -16
  136. data/config/locales/en/dates.yml +0 -10
  137. data/config/locales/en/helpers.yml +0 -26
  138. data/config/locales/en/locale.yml +0 -11
  139. data/config/locales/en/messages.yml +0 -7
  140. data/config/locales/en/models.yml +0 -9
  141. data/config/locales/en/simple_form_extension.yml +0 -8
  142. data/config/locales/en/state_machines.yml +0 -8
  143. data/config/locales/ru/collections.yml +0 -4
  144. data/config/locales/ru/date.yml +0 -16
  145. data/config/locales/ru/dates.yml +0 -10
  146. data/config/locales/ru/helpers.yml +0 -30
  147. data/config/locales/ru/locale.yml +0 -6
  148. data/config/locales/ru/messages.yml +0 -7
  149. data/config/locales/ru/models.yml +0 -21
  150. data/config/locales/ru/simple_form_extension.yml +0 -8
  151. data/config/locales/ru/state_machines.yml +0 -8
  152. data/lib/string.rb +0 -18
  153. data/lib/tramway/application.rb +0 -10
  154. data/lib/tramway/class_name_helpers.rb +0 -15
  155. data/lib/tramway/collection.rb +0 -9
  156. data/lib/tramway/collections/helper.rb +0 -21
  157. data/lib/tramway/collections.rb +0 -4
  158. data/lib/tramway/error.rb +0 -32
  159. data/lib/tramway/forms.rb +0 -5
  160. data/lib/tramway/generators/install_generator.rb +0 -49
  161. data/lib/tramway/generators/model_generator.rb +0 -105
  162. data/lib/tramway/generators/templates/create_tramway_users.rb +0 -18
  163. data/lib/tramway/generators/templates/decorator.rb.erb +0 -56
  164. data/lib/tramway/generators/templates/form.rb.erb +0 -22
  165. data/lib/tramway/generators/templates/initializers/simple_form.rb +0 -23
  166. data/lib/tramway/generators/templates/initializers/simple_form_bootstrap.rb +0 -133
  167. data/lib/tramway/generators.rb +0 -6
  168. data/lib/tramway/navbar.rb +0 -44
  169. data/lib/tramway/notifications.rb +0 -12
  170. data/lib/tramway/record_routes_helper.rb +0 -23
  171. data/lib/tramway/records_models.rb +0 -60
  172. data/lib/tramway/singleton_models.rb +0 -32
  173. data/lib/tramway/spec/helpers/navbar_helper.rb +0 -7
  174. data/lib/tramway/spec/helpers/tramway_helpers.rb +0 -47
  175. data/lib/tramway/welcome_page_actions.rb +0 -5
  176. data/lib/tramway/yaml/errors.yml +0 -50
  177. 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 'rake'
4
- require 'rspec/core/rake_task'
5
-
6
- RSpec::Core::RakeTask.new(:spec) do |t|
7
- t.pattern = Dir.glob('spec/**/*_spec.rb')
8
- t.rspec_opts = '--format documentation'
9
- end
10
- task default: :spec
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,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'view_component'
4
+
5
+ class TailwindComponent < ViewComponent::Base
6
+ end
@@ -0,0 +1 @@
1
+ = button_to @text, @href, class: 'text-white hover:bg-red-300 px-4 py-2 rounded'
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tailwinds
4
+ module Navbar
5
+ # Render button styled with Tailwind
6
+ #
7
+ class ButtonComponent < TailwindComponent
8
+ def initialize(text:, href:)
9
+ @href = href
10
+ @text = text
11
+ end
12
+ end
13
+ end
14
+ end
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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # desc "Explaining what the task does"
3
+ # task :tramway do
4
+ # # Task goes here
5
+ # end
@@ -1,14 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'tramway/generators/install_generator'
4
- require 'tramway/application'
5
- require 'simple_form'
6
- require 'enumerize'
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tramway
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
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 'tramway/collection'
5
- require 'tramway/collections/helper'
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
- class << self
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:, role: role.to_sym, 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