tramway 0.1.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/tramway/application.js +1 -0
  3. data/app/assets/stylesheets/tramway/application.sass +0 -1
  4. data/app/controllers/tramway/application_controller.rb +6 -6
  5. data/app/controllers/{concerns → tramway/concerns}/auth_management.rb +1 -1
  6. data/app/controllers/{concerns → tramway/concerns}/filtering.rb +1 -1
  7. data/app/controllers/tramway/sessions_controller.rb +2 -2
  8. data/app/controllers/tramway/welcome_controller.rb +3 -3
  9. data/app/decorators/tramway/application_decorator.rb +1 -1
  10. data/app/decorators/tramway/associations/object_helper.rb +2 -2
  11. data/app/decorators/tramway/concerns/attributes_decorator_helper.rb +4 -4
  12. data/app/decorators/tramway/user_decorator.rb +1 -1
  13. data/app/forms/tramway/application_form.rb +1 -1
  14. data/app/forms/tramway/application_forms/submit_helper.rb +1 -1
  15. data/app/forms/tramway/extendable_forms_helpers/validators.rb +2 -2
  16. data/app/helpers/tramway/additional_buttons_builder.rb +1 -1
  17. data/app/helpers/tramway/application_helper.rb +1 -1
  18. data/app/helpers/tramway/frontend_helper.rb +1 -1
  19. data/app/helpers/tramway/inputs/associations_helper.rb +2 -2
  20. data/app/helpers/tramway/inputs_helper.rb +2 -2
  21. data/app/helpers/tramway/records_helper.rb +2 -2
  22. data/app/helpers/tramway/state_machine_buttons_helper.rb +2 -2
  23. data/app/models/tramway/application_record.rb +3 -1
  24. data/app/models/tramway/user.rb +1 -6
  25. data/app/views/layouts/tramway/application.html.haml +3 -3
  26. data/app/views/tramway/shared/show/_attribute_tr.html.haml +1 -1
  27. data/lib/tramway/error.rb +1 -1
  28. data/lib/tramway/generators/install_generator.rb +1 -1
  29. data/lib/tramway/navbar.rb +2 -2
  30. data/lib/tramway/records_models.rb +18 -10
  31. data/lib/tramway/singleton_models.rb +1 -1
  32. data/lib/tramway/spec/helpers/navbar_helper.rb +1 -1
  33. data/lib/tramway/spec/helpers/tramway_helpers.rb +2 -2
  34. data/lib/tramway/version.rb +1 -1
  35. data/lib/tramway/yaml/errors.yml +1 -0
  36. data/lib/tramway.rb +1 -1
  37. metadata +29 -37
  38. data/app/assets/stylesheets/tramway/bootstrap-datepicker-1.8.0.css +0 -477
  39. data/config/initializers/carrierwave.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f9efcd16a0ef5bb9ff6cccb774eeb63e651981222f08e2c9ddf4f038d8483ab
4
- data.tar.gz: 547ae146cad33a1c113a6dae5772e78881c090b20e9eb1b05315f9d164708d53
3
+ metadata.gz: c0eb13dc9d0261ff482d46394bedd03ffdfd36c6927be19a27bd88698a2a5fc9
4
+ data.tar.gz: bc8d1e80575478ae9b27e23277b5f289e7d06dc533114b87a2a67f43f1532c40
5
5
  SHA512:
6
- metadata.gz: 9546f04a901612d13acd75cfb871e0a242dcf5c17765eadcec96ef458c483952ff44e75c005c5a8bac31450167b0f2ea6934c092cec65c12a05e764374c7564d
7
- data.tar.gz: d94b8e0a3ac822aea90fc46580fe4ff02554db67141b4f4da58b70d0c3e0d896edcbff68374e1f6f49b974b7b8d97dd0a7c99f37de4e1a82d1ba63d3f15f54b9
6
+ metadata.gz: 8ed1b9540aa5d5b712a8c113813782344a55758f85176668d6f9f3f1b0736c6d270a59d650ec1b4d2e00f79800bf8124c7ecdacec8da07eea87b2869d2fef455
7
+ data.tar.gz: f6ad4f133b558760a43cbc0fb7412004ea9259bf7f613fb47a0a630f55a09c6bcf2546de99c0bb78c41f86cb3b47fa64f472579e23cf24d0406da27ed9236d04
@@ -1,6 +1,7 @@
1
1
  //= require jquery
2
2
  //= require jquery_ujs
3
3
  //= require jquery3
4
+ //= require popper
4
5
  //= require bootstrap-datepicker-1.8.0
5
6
  //= require bootstrap-datepicker-1.8.0.ru.min
6
7
  //= require bootstrap-sprockets
@@ -5,7 +5,6 @@
5
5
 
6
6
  @import 'font_awesome5_webfont'
7
7
  @import 'font_awesome5'
8
- @import 'bootstrap-datepicker-1.8.0.css'
9
8
  @import 'bootstrap'
10
9
 
11
10
  .datepicker-inline
@@ -5,13 +5,13 @@ load "#{Tramway.root}/lib/tramway/class_name_helpers.rb"
5
5
  load "#{Tramway.root}/lib/tramway/record_routes_helper.rb"
6
6
 
7
7
  # FIXME: configurate load_path
8
- load "#{Tramway.root}/app/controllers/concerns/auth_management.rb"
9
- load "#{Tramway.root}/app/controllers/concerns/filtering.rb"
8
+ load "#{Tramway.root}/app/controllers/tramway/concerns/auth_management.rb"
9
+ load "#{Tramway.root}/app/controllers/tramway/concerns/filtering.rb"
10
10
 
11
11
  class Tramway::ApplicationController < ActionController::Base
12
12
  include Tramway::ClassNameHelpers
13
- include Tramway::AuthManagement
14
- include Tramway::Filtering
13
+ include Tramway::Concerns::AuthManagement
14
+ include Tramway::Concerns::Filtering
15
15
  include Tramway::RecordRoutesHelper
16
16
 
17
17
  before_action :application
@@ -83,8 +83,8 @@ class Tramway::ApplicationController < ActionController::Base
83
83
  :application,
84
84
  :create_form_for_role,
85
85
  role: current_user.role,
86
- model_class: model_class,
87
- class_name: class_name
86
+ model_class:,
87
+ class_name:
88
88
  )
89
89
  end
90
90
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Tramway::AuthManagement
3
+ module Tramway::Concerns::AuthManagement
4
4
  def sign_in(user)
5
5
  session[:tramway_user_id] = user.id
6
6
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Tramway::Filtering
3
+ module Tramway::Concerns::Filtering
4
4
  def list_filtering(records)
5
5
  params[:list_filters]&.each do |filter, _value|
6
6
  case decorator_class.list_filters[filter.to_sym][:type]
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # FIXME: configurate load_path
4
- load "#{Tramway.root}/app/controllers/concerns/auth_management.rb"
4
+ load "#{Tramway.root}/app/controllers/tramway/concerns/auth_management.rb"
5
5
 
6
6
  class Tramway::SessionsController < Tramway::ApplicationController
7
7
  before_action :redirect_if_signed_in, except: :destroy
8
8
 
9
9
  # FIXME: should be included in Tramway::ApplicationController
10
- include Tramway::AuthManagement
10
+ include Tramway::Concerns::AuthManagement
11
11
 
12
12
  def new
13
13
  @session_form = Tramway::SessionForm.new Tramway::User.new
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # FIXME: configurate load_path
4
- load "#{Tramway.root}/app/controllers/concerns/auth_management.rb"
4
+ load "#{Tramway.root}/app/controllers/tramway/concerns/auth_management.rb"
5
5
 
6
6
  class Tramway::WelcomeController < Tramway::ApplicationController
7
7
  skip_before_action :check_available!
8
8
 
9
9
  # FIXME: should be included in Tramway::ApplicationController
10
- include Tramway::AuthManagement
10
+ include Tramway::Concerns::AuthManagement
11
11
 
12
12
  before_action :authenticate_user!
13
13
 
14
14
  def index
15
- instance_exec(&::Tramway.welcome_page_actions) if ::Tramway.welcome_page_actions.present?
15
+ instance_exec(&Tramway.welcome_page_actions) if Tramway.welcome_page_actions.present?
16
16
  end
17
17
  end
@@ -96,7 +96,7 @@ class Tramway::ApplicationDecorator
96
96
 
97
97
  def associations(associations_type)
98
98
  object.class.reflect_on_all_associations(associations_type).map do |association|
99
- association unless association.name == :audits
99
+ association unless association.name == :versions
100
100
  end.compact
101
101
  end
102
102
 
@@ -21,7 +21,7 @@ module Tramway::Associations::ObjectHelper
21
21
 
22
22
  Tramway::Error.raise_error(
23
23
  :tramway, :associations, :class_helper, :model_does_not_have_association,
24
- object_class: object.class, association_name: association_name
24
+ object_class: object.class, association_name:
25
25
  )
26
26
  end
27
27
 
@@ -43,7 +43,7 @@ module Tramway::Associations::ObjectHelper
43
43
  rescue StandardError
44
44
  Tramway::Error.raise_error(
45
45
  :tramway, :associations, :object_helper, :habtm_add_class_not_defined,
46
- class: form_class, association_name: association_name
46
+ class: form_class, association_name:
47
47
  )
48
48
  end
49
49
  end
@@ -17,7 +17,7 @@ module Tramway::Concerns::AttributesDecoratorHelper
17
17
  end
18
18
 
19
19
  BASE64_REGEXP = %r{^(?:[a-zA-Z0-9+/]{4})*(?:|(?:[a-zA-Z0-9+/]{3}=)|
20
- (?:[a-zA-Z0-9+/]{2}==)|(?:[a-zA-Z0-9+/]{1}===))$}x.freeze
20
+ (?:[a-zA-Z0-9+/]{2}==)|(?:[a-zA-Z0-9+/]{1}===))$}x
21
21
 
22
22
  def image_view(original, thumb: nil, filename: nil)
23
23
  return unless original.present?
@@ -35,7 +35,7 @@ module Tramway::Concerns::AttributesDecoratorHelper
35
35
  content_tag(:div) do
36
36
  concat filename
37
37
  concat ' '
38
- concat download_button(filename: filename, original: original) if filename
38
+ concat download_button(filename:, original:) if filename
39
39
  end
40
40
  end
41
41
 
@@ -81,10 +81,10 @@ module Tramway::Concerns::AttributesDecoratorHelper
81
81
  rescue NoMethodError => e
82
82
  Tramway::Error.raise_error(
83
83
  :tramway, :concerns, :attributes_decorator_helper, :you_should_mount_photo_uploader,
84
- message: e.message, attribute_name: attribute_name
84
+ message: e.message, attribute_name:
85
85
  )
86
86
  end
87
- concat download_button(filename: filename, original: original) if filename
87
+ concat download_button(filename:, original:) if filename
88
88
  end
89
89
 
90
90
  def download_button(filename:, original:)
@@ -33,7 +33,7 @@ class Tramway::UserDecorator < Tramway::ApplicationDecorator
33
33
  content_tag(:pre) do
34
34
  id = "credential_text_#{object.id}"
35
35
 
36
- concat(content_tag(:span, id: id) do
36
+ concat(content_tag(:span, id:) do
37
37
  text = "URL: #{ENV['PROJECT_URL']}\n"
38
38
  text += "Email: #{object.email}\n"
39
39
  "#{text}Password: "
@@ -97,7 +97,7 @@ class Tramway::ApplicationForm
97
97
  @@model_class = model_class_name.constantize
98
98
  rescue StandardError
99
99
  Tramway::Error.raise_error :tramway, :application_form, :model_class, :there_is_not_model_class,
100
- name: name, model_class_name: model_class_name
100
+ name:, model_class_name:
101
101
  end
102
102
  end
103
103
  end
@@ -9,7 +9,7 @@ module Tramway::ApplicationForms::SubmitHelper
9
9
  collecting_associations_errors unless result
10
10
  end
11
11
  else
12
- Tramway::Error.raise_error(:tramway, :application_form, :submit, :params_should_not_be_nil)
12
+ Tramway::Error.raise_error(:application_form, :submit, :params_should_not_be_nil)
13
13
  end
14
14
  end
15
15
 
@@ -19,7 +19,7 @@ module Tramway::ExtendableFormsHelpers::Validators
19
19
  property_name,
20
20
  I18n.t(
21
21
  "activerecord.errors.models.#{model.class.name.underscore}.attributes.default.#{validation[0]}",
22
- value: value
22
+ value:
23
23
  )
24
24
  )
25
25
  end
@@ -33,7 +33,7 @@ module Tramway::ExtendableFormsHelpers::Validators
33
33
  property_name,
34
34
  I18n.t(
35
35
  "activerecord.errors.models.#{model.class.name.underscore}.attributes.default.#{validation[0]}",
36
- value: value
36
+ value:
37
37
  )
38
38
  )
39
39
  end
@@ -4,7 +4,7 @@ module Tramway::AdditionalButtonsBuilder
4
4
  def build_button(button)
5
5
  options = button[:options] || {}
6
6
  style = 'margin-right: 8px'
7
- concat(link_to(button[:url], method: button[:method], class: "btn btn-#{button[:color]} btn-xs", style: style,
7
+ concat(link_to(button[:url], method: button[:method], class: "btn btn-#{button[:color]} btn-xs", style:,
8
8
  **options) do
9
9
  button[:inner]&.call
10
10
  end)
@@ -3,7 +3,7 @@
3
3
  module Tramway::ApplicationHelper
4
4
  include FontAwesome5::Rails::IconHelper
5
5
  include SmartButtons
6
- include Tramway::AuthManagement
6
+ include Tramway::Concerns::AuthManagement
7
7
 
8
8
  helpers = Dir["#{Tramway.root}/app/helpers/tramway/*_helper.rb"]
9
9
  helpers.each do |helper|
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Tramway::FrontendHelper
4
4
  def react_params(form, action, method)
5
- form.properties.each_with_object({ action: react_params_url(form, action), method: method,
5
+ form.properties.each_with_object({ action: react_params_url(form, action), method:,
6
6
  authenticity_token: form_authenticity_token }) do |property, hash|
7
7
  case property[1]
8
8
  when :association
@@ -18,13 +18,13 @@ module Tramway::Inputs::AssociationsHelper
18
18
  def check_valid_association(full_class_name_association)
19
19
  unless full_class_name_association
20
20
  Tramway::Error.raise_error(
21
- :tramway, :inputs_helpers, :association_params, :defined_with_property_method, property: property
21
+ :tramway, :inputs_helpers, :association_params, :defined_with_property_method, property:
22
22
  )
23
23
  end
24
24
  return unless full_class_name_association.is_a? Array
25
25
 
26
26
  Tramway::Error.raise_error(
27
- :tramway, :inputs_helpers, :association_params, :used_polymorphic_association, property: property
27
+ :tramway, :inputs_helpers, :association_params, :used_polymorphic_association, property:
28
28
  )
29
29
  end
30
30
  end
@@ -9,7 +9,7 @@ module Tramway::InputsHelper
9
9
 
10
10
  value = current_user&.id if full_class_name_association.to_s == 'Tramway::User'
11
11
 
12
- build_input_attributes(object: object, property: property, options: options,
12
+ build_input_attributes(object:, property:, options:,
13
13
  value: build_value_for_association(form_object, property, value),
14
14
  collection: build_collection_for_association(form_object, property),
15
15
  include_blank: true,
@@ -17,7 +17,7 @@ module Tramway::InputsHelper
17
17
  end
18
18
 
19
19
  def polymorphic_association_params(object:, form_object:, property:, value:, options: {})
20
- build_input_attributes object: object, property: property,
20
+ build_input_attributes object:, property:,
21
21
  selected: build_value_for_polymorphic_association(form_object, property, value),
22
22
  value: build_value_for_polymorphic_association(form_object, property, value),
23
23
  collection: build_collection_for_polymorphic_association(form_object, property),
@@ -49,9 +49,9 @@ module Tramway::RecordsHelper
49
49
 
50
50
  def index_path_of_model(model_class, tab, filter)
51
51
  if tab
52
- records_path model: model_class, filter: filter, scope: tab
52
+ records_path model: model_class, filter:, scope: tab
53
53
  else
54
- records_path model: model_class, filter: filter
54
+ records_path model: model_class, filter:
55
55
  end
56
56
  end
57
57
 
@@ -36,7 +36,7 @@ module Tramway::StateMachineButtonsHelper
36
36
  event = options[:event]
37
37
 
38
38
  concat(
39
- patch_button(patch_button_options(object, event, options)) do
39
+ patch_button(**patch_button_options(object, event, options)) do
40
40
  model = object.model
41
41
  class_name = model.class.name.underscore
42
42
  actual_event = model.aasm(options[:state_method]).events.select { |ev| ev.name == event }.first.name
@@ -51,7 +51,7 @@ module Tramway::StateMachineButtonsHelper
51
51
 
52
52
  {
53
53
  record: object.model,
54
- attributes: attributes,
54
+ attributes:,
55
55
  model_name: options[:model_name],
56
56
  button_options: { class: css_class },
57
57
  form_options: options[:form_options],
@@ -3,8 +3,10 @@
3
3
  require 'carrierwave/orm/activerecord' if defined?(CarrierWave::Mount)
4
4
 
5
5
  class Tramway::ApplicationRecord < ActiveRecord::Base
6
+ primary_abstract_class
7
+
6
8
  self.abstract_class = true
7
- audited
9
+ has_paper_trail
8
10
  extend ::Enumerize
9
11
  include AASM
10
12
  acts_as_paranoid
@@ -1,13 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Tramway::User < ::Tramway::ApplicationRecord
3
+ class Tramway::User < Tramway::ApplicationRecord
4
4
  has_secure_password
5
5
 
6
- if defined? Tramway::Conference
7
- has_many :social_networks, as: :record,
8
- class_name: 'Tramway::Profiles::SocialNetwork'
9
- end
10
-
11
6
  scope :admins, -> { where role: :admin }
12
7
  scope :simple_users, -> { where role: :user }
13
8
 
@@ -6,11 +6,11 @@
6
6
  = yield :title
7
7
  = stylesheet_link_tag 'tramway/application', media: :all
8
8
  = javascript_include_tag 'tramway/application'
9
- - if File.exists?("#{Rails.root}/app/assets/javascripts/application.js") || File.exists?("#{Rails.root}/app/assets/javascripts/application.js.coffee")
9
+ - if File.exist?("#{Rails.root}/app/assets/javascripts/application.js") || File.exist?("#{Rails.root}/app/assets/javascripts/application.js.coffee")
10
10
  = javascript_include_tag 'application'
11
- - if File.exists?("#{Rails.root}/app/assets/stylesheets/application.css") || File.exists?("#{Rails.root}/app/assets/stylesheets/application.scss")
11
+ - if File.exist?("#{Rails.root}/app/assets/stylesheets/application.css") || File.exist?("#{Rails.root}/app/assets/stylesheets/application.scss")
12
12
  = stylesheet_link_tag 'application'
13
- - if File.exists?("#{Rails.root}/app/javascript/packs/application.js")
13
+ - if File.exist?("#{Rails.root}/app/javascript/packs/application.js")
14
14
  = javascript_pack_tag 'application'
15
15
  = csrf_meta_tags
16
16
  - if @application.favicon.present?
@@ -5,5 +5,5 @@
5
5
  = value
6
6
  %td
7
7
  - if tramway_model?(model_class)
8
- - if attribute_name.to_s != 'state' && object.model.class.aasm.states.map(&:name).include?(attribute_name.to_sym)
8
+ - if object.model.class.aasm.states.map(&:name).include?(attribute_name.to_sym)
9
9
  = state_events_buttons object, state_method: attribute_name, model_param_name: :record, controller: 'tramway/records', action: :update, parameters: { model: object.class.model_name }, button_options: { class: :smart_button }
data/lib/tramway/error.rb CHANGED
@@ -19,7 +19,7 @@ class Tramway::Error < RuntimeError
19
19
 
20
20
  class << self
21
21
  def raise_error(*coordinates, **options)
22
- @errors ||= YAML.load_file("#{Tramway.root}/lib/tramway/yaml/errors.yml").with_indifferent_access
22
+ @errors ||= YAML.load_file("#{Tramway.root}/lib/tramway/yaml/errors.yml").with_indifferent_access[:tramway]
23
23
  error = @errors.dig(*coordinates)
24
24
  raise 'Error is not defined in YAML' unless error
25
25
 
@@ -10,7 +10,7 @@ class Tramway::Generators::InstallGenerator < ::Rails::Generators::Base
10
10
  include Rails::Generators::Migration
11
11
 
12
12
  def run_other_generators
13
- generate 'audited:install'
13
+ generate 'paper_trail:install --with-changes'
14
14
  end
15
15
 
16
16
  def self.next_migration_number(path)
@@ -17,9 +17,9 @@ module Tramway::Navbar
17
17
  private
18
18
 
19
19
  def should_be_in_navbar_as(item, project, role)
20
- if singleton_models_for(project, role: role).map(&:to_s).include?(item.to_s)
20
+ if singleton_models_for(project, role:).map(&:to_s).include?(item.to_s)
21
21
  { item.to_s => :singleton }
22
- elsif available_models_for(project, role: role).map(&:to_s).include?(item.to_s)
22
+ elsif available_models_for(project, role:).map(&:to_s).include?(item.to_s)
23
23
  { item.to_s => :record }
24
24
  elsif item.is_a? Symbol
25
25
  :divider
@@ -1,16 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tramway::RecordsModels
4
- def set_available_models(*models, project:, role: :admin)
4
+ def set_available_models(models, project:, role: :admin)
5
5
  initialize_available_models_for project, role
6
6
 
7
- models.each do |model|
8
- if model.instance_of?(Class) || model.instance_of?(String)
9
- @available_models[project][role].merge! model.to_s => %i[index show update create destroy]
10
- elsif model.instance_of?(Hash)
11
- @available_models[project][role].merge! model
12
- end
13
- end
7
+ Tramway::Error.raise_error :records, :wrong_available_models_type if !models.is_a?(Array) && !models.is_a?(Hash)
8
+
9
+ handle_array_of_models(models, project:, role:) if models.is_a? Array
10
+
11
+ @available_models[project][role].merge! models if models.is_a? Hash
14
12
  @available_models = @available_models.with_indifferent_access
15
13
  end
16
14
 
@@ -25,7 +23,7 @@ module Tramway::RecordsModels
25
23
  end
26
24
 
27
25
  def available_models(role:)
28
- models_array models_type: :available, role: role
26
+ models_array models_type: :available, role:
29
27
  end
30
28
 
31
29
  def clear_available_models!
@@ -34,6 +32,16 @@ module Tramway::RecordsModels
34
32
 
35
33
  private
36
34
 
35
+ def handle_array_of_models(models, project:, role:)
36
+ models.each do |model|
37
+ if model.instance_of?(Class) || model.instance_of?(String)
38
+ @available_models[project][role].merge! model.to_s => %i[index show update create destroy]
39
+ elsif model.instance_of?(Hash)
40
+ @available_models[project][role].merge! model
41
+ end
42
+ end
43
+ end
44
+
37
45
  def initialize_available_models_for(project, role)
38
46
  @available_models ||= {}
39
47
  @available_models[project] ||= {}
@@ -45,7 +53,7 @@ module Tramway::RecordsModels
45
53
  if @available_models&.dig(dependency, role).present?
46
54
  @available_models&.dig(dependency, role)&.keys
47
55
  else
48
- Tramway::Error.raise_error :records, :there_is_no_dependency, dependency: dependency, project: project
56
+ Tramway::Error.raise_error(:records, :there_is_no_dependency, dependency:, project:)
49
57
  end
50
58
  end.flatten.compact
51
59
  end
@@ -27,6 +27,6 @@ module Tramway::SingletonModels
27
27
  end
28
28
 
29
29
  def singleton_models(role:)
30
- models_array models_type: :singleton, role: role
30
+ models_array models_type: :singleton, role:
31
31
  end
32
32
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module NavbarHelper
4
4
  def click_on_dropdown(text)
5
- first('ul.navbar-nav li.nav-item.dropdown a.nav-link.dropdown-toggle', text: text, visible: true).click
5
+ first('ul.navbar-nav li.nav-item.dropdown a.nav-link.dropdown-toggle', text:, visible: true).click
6
6
  end
7
7
  end
@@ -11,11 +11,11 @@ module TramwayHelpers
11
11
  end
12
12
 
13
13
  def click_on_tab(text)
14
- find('li.nav-item a.nav-link', text: text).click
14
+ find('li.nav-item a.nav-link', text:).click
15
15
  end
16
16
 
17
17
  def click_on_table_item(text)
18
- find('table td a', text: text).click
18
+ find('table td a', text:).click
19
19
  end
20
20
 
21
21
  def click_on_delete_button(object)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tramway
4
- VERSION = '0.1.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
@@ -44,6 +44,7 @@ tramway:
44
44
  install: 'Initialize Tramway application before running generators. Add `Tramway.initialize_application name: :your_application_name` to `config/initializers/tramway.rb`'
45
45
  records:
46
46
  there_is_no_dependency: "There is no dependency `%{dependency}` for plugin: %{project}. Please, check file `tramway-%{project}/lib/tramway/%{project}/%{project}.rb`"
47
+ wrong_available_models_type: "First argument in `set_available_models` should Array or Hash"
47
48
  application_controller:
48
49
  create_form_for_role: "Tramway - you should create form for role `%{role}` to edit %{model_class} model. It should be named %{class_name}"
49
50
  model_or_form_not_available: 'Tramway - Model or Form is not available. Looks like current user does not have access to change this model. Update your tramway initializer file'
data/lib/tramway.rb CHANGED
@@ -69,7 +69,7 @@ module Tramway
69
69
 
70
70
  def action_is_available?(record, project:, role:, model_name:, action:)
71
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)
72
+ actions = select_actions(project:, role: role.to_sym, model_name:)
73
73
  availability = compute_availability actions, action
74
74
 
75
75
  return false unless availability.present?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-01-16 00:00:00.000000000 Z
12
+ date: 2023-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '='
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 5.1.7
20
+ version: '7'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '='
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 5.1.7
27
+ version: '7'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: aasm
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,20 +39,6 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: audited
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: 4.8.0
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 4.8.0
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: bootstrap
58
44
  requirement: !ruby/object:Gem::Requirement
@@ -263,16 +249,30 @@ dependencies:
263
249
  name: nokogiri
264
250
  requirement: !ruby/object:Gem::Requirement
265
251
  requirements:
266
- - - '='
252
+ - - ">="
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ type: :runtime
256
+ prerelease: false
257
+ version_requirements: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ - !ruby/object:Gem::Dependency
263
+ name: paper_trail
264
+ requirement: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - ">="
267
267
  - !ruby/object:Gem::Version
268
- version: 1.13.10
268
+ version: '0'
269
269
  type: :runtime
270
270
  prerelease: false
271
271
  version_requirements: !ruby/object:Gem::Requirement
272
272
  requirements:
273
- - - '='
273
+ - - ">="
274
274
  - !ruby/object:Gem::Version
275
- version: 1.13.10
275
+ version: '0'
276
276
  - !ruby/object:Gem::Dependency
277
277
  name: paranoia
278
278
  requirement: !ruby/object:Gem::Requirement
@@ -335,20 +335,14 @@ dependencies:
335
335
  requirements:
336
336
  - - "~>"
337
337
  - !ruby/object:Gem::Version
338
- version: '5.0'
339
- - - ">="
340
- - !ruby/object:Gem::Version
341
- version: 5.0.7
338
+ version: '6'
342
339
  type: :runtime
343
340
  prerelease: false
344
341
  version_requirements: !ruby/object:Gem::Requirement
345
342
  requirements:
346
343
  - - "~>"
347
344
  - !ruby/object:Gem::Version
348
- version: '5.0'
349
- - - ">="
350
- - !ruby/object:Gem::Version
351
- version: 5.0.7
345
+ version: '6'
352
346
  - !ruby/object:Gem::Dependency
353
347
  name: simple_form
354
348
  requirement: !ruby/object:Gem::Requirement
@@ -477,10 +471,9 @@ files:
477
471
  - app/assets/javascripts/ckeditor/plugins/youtube/plugin.js
478
472
  - app/assets/javascripts/tramway/application.js
479
473
  - app/assets/stylesheets/tramway/application.sass
480
- - app/assets/stylesheets/tramway/bootstrap-datepicker-1.8.0.css
481
- - app/controllers/concerns/auth_management.rb
482
- - app/controllers/concerns/filtering.rb
483
474
  - app/controllers/tramway/application_controller.rb
475
+ - app/controllers/tramway/concerns/auth_management.rb
476
+ - app/controllers/tramway/concerns/filtering.rb
484
477
  - app/controllers/tramway/export/application_controller.rb
485
478
  - app/controllers/tramway/has_and_belongs_to_many_records_controller.rb
486
479
  - app/controllers/tramway/records_controller.rb
@@ -575,7 +568,6 @@ files:
575
568
  - app/views/tramway/singletons/show.html.haml
576
569
  - app/views/tramway/welcome/index.html.haml
577
570
  - config/initializers/assets.rb
578
- - config/initializers/carrierwave.rb
579
571
  - config/initializers/ckeditor.rb
580
572
  - config/initializers/plurals.rb
581
573
  - config/locales/en/collections.yml
@@ -645,7 +637,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
645
637
  - !ruby/object:Gem::Version
646
638
  version: '0'
647
639
  requirements: []
648
- rubygems_version: 3.1.6
640
+ rubygems_version: 3.4.6
649
641
  signing_key:
650
642
  specification_version: 4
651
643
  summary: Tramway Rails Engine
@@ -1,477 +0,0 @@
1
- /*!
2
- * Datepicker for Bootstrap v1.8.0 (https://github.com/uxsolutions/bootstrap-datepicker)
3
- *
4
- * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
5
- */
6
-
7
- .datepicker {
8
- padding: 4px;
9
- -webkit-border-radius: 4px;
10
- -moz-border-radius: 4px;
11
- border-radius: 4px;
12
- direction: ltr;
13
- }
14
- .datepicker-inline {
15
- width: 220px;
16
- }
17
- .datepicker-rtl {
18
- direction: rtl;
19
- }
20
- .datepicker-rtl.dropdown-menu {
21
- left: auto;
22
- }
23
- .datepicker-rtl table tr td span {
24
- float: right;
25
- }
26
- .datepicker-dropdown {
27
- top: 0;
28
- left: 0;
29
- }
30
- .datepicker-dropdown:before {
31
- content: '';
32
- display: inline-block;
33
- border-left: 7px solid transparent;
34
- border-right: 7px solid transparent;
35
- border-bottom: 7px solid #999;
36
- border-top: 0;
37
- border-bottom-color: rgba(0, 0, 0, 0.2);
38
- position: absolute;
39
- }
40
- .datepicker-dropdown:after {
41
- content: '';
42
- display: inline-block;
43
- border-left: 6px solid transparent;
44
- border-right: 6px solid transparent;
45
- border-bottom: 6px solid #fff;
46
- border-top: 0;
47
- position: absolute;
48
- }
49
- .datepicker-dropdown.datepicker-orient-left:before {
50
- left: 6px;
51
- }
52
- .datepicker-dropdown.datepicker-orient-left:after {
53
- left: 7px;
54
- }
55
- .datepicker-dropdown.datepicker-orient-right:before {
56
- right: 6px;
57
- }
58
- .datepicker-dropdown.datepicker-orient-right:after {
59
- right: 7px;
60
- }
61
- .datepicker-dropdown.datepicker-orient-bottom:before {
62
- top: -7px;
63
- }
64
- .datepicker-dropdown.datepicker-orient-bottom:after {
65
- top: -6px;
66
- }
67
- .datepicker-dropdown.datepicker-orient-top:before {
68
- bottom: -7px;
69
- border-bottom: 0;
70
- border-top: 7px solid #999;
71
- }
72
- .datepicker-dropdown.datepicker-orient-top:after {
73
- bottom: -6px;
74
- border-bottom: 0;
75
- border-top: 6px solid #fff;
76
- }
77
- .datepicker table {
78
- margin: 0;
79
- -webkit-touch-callout: none;
80
- -webkit-user-select: none;
81
- -khtml-user-select: none;
82
- -moz-user-select: none;
83
- -ms-user-select: none;
84
- user-select: none;
85
- }
86
- .datepicker td,
87
- .datepicker th {
88
- text-align: center;
89
- width: 20px;
90
- height: 20px;
91
- -webkit-border-radius: 4px;
92
- -moz-border-radius: 4px;
93
- border-radius: 4px;
94
- border: none;
95
- }
96
- .table-striped .datepicker table tr td,
97
- .table-striped .datepicker table tr th {
98
- background-color: transparent;
99
- }
100
- .datepicker table tr td.day:hover,
101
- .datepicker table tr td.day.focused {
102
- background: #eee;
103
- cursor: pointer;
104
- }
105
- .datepicker table tr td.old,
106
- .datepicker table tr td.new {
107
- color: #999;
108
- }
109
- .datepicker table tr td.disabled,
110
- .datepicker table tr td.disabled:hover {
111
- background: none;
112
- color: #999;
113
- cursor: default;
114
- }
115
- .datepicker table tr td.highlighted {
116
- background: #d9edf7;
117
- border-radius: 0;
118
- }
119
- .datepicker table tr td.today,
120
- .datepicker table tr td.today:hover,
121
- .datepicker table tr td.today.disabled,
122
- .datepicker table tr td.today.disabled:hover {
123
- background-color: #fde19a;
124
- background-image: -moz-linear-gradient(to bottom, #fdd49a, #fdf59a);
125
- background-image: -ms-linear-gradient(to bottom, #fdd49a, #fdf59a);
126
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
127
- background-image: -webkit-linear-gradient(to bottom, #fdd49a, #fdf59a);
128
- background-image: -o-linear-gradient(to bottom, #fdd49a, #fdf59a);
129
- background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);
130
- background-repeat: repeat-x;
131
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
132
- border-color: #fdf59a #fdf59a #fbed50;
133
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
134
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
135
- color: #000;
136
- }
137
- .datepicker table tr td.today:hover,
138
- .datepicker table tr td.today:hover:hover,
139
- .datepicker table tr td.today.disabled:hover,
140
- .datepicker table tr td.today.disabled:hover:hover,
141
- .datepicker table tr td.today:active,
142
- .datepicker table tr td.today:hover:active,
143
- .datepicker table tr td.today.disabled:active,
144
- .datepicker table tr td.today.disabled:hover:active,
145
- .datepicker table tr td.today.active,
146
- .datepicker table tr td.today:hover.active,
147
- .datepicker table tr td.today.disabled.active,
148
- .datepicker table tr td.today.disabled:hover.active,
149
- .datepicker table tr td.today.disabled,
150
- .datepicker table tr td.today:hover.disabled,
151
- .datepicker table tr td.today.disabled.disabled,
152
- .datepicker table tr td.today.disabled:hover.disabled,
153
- .datepicker table tr td.today[disabled],
154
- .datepicker table tr td.today:hover[disabled],
155
- .datepicker table tr td.today.disabled[disabled],
156
- .datepicker table tr td.today.disabled:hover[disabled] {
157
- background-color: #fdf59a;
158
- }
159
- .datepicker table tr td.today:active,
160
- .datepicker table tr td.today:hover:active,
161
- .datepicker table tr td.today.disabled:active,
162
- .datepicker table tr td.today.disabled:hover:active,
163
- .datepicker table tr td.today.active,
164
- .datepicker table tr td.today:hover.active,
165
- .datepicker table tr td.today.disabled.active,
166
- .datepicker table tr td.today.disabled:hover.active {
167
- background-color: #fbf069 \9;
168
- }
169
- .datepicker table tr td.today:hover:hover {
170
- color: #000;
171
- }
172
- .datepicker table tr td.today.active:hover {
173
- color: #fff;
174
- }
175
- .datepicker table tr td.range,
176
- .datepicker table tr td.range:hover,
177
- .datepicker table tr td.range.disabled,
178
- .datepicker table tr td.range.disabled:hover {
179
- background: #eee;
180
- -webkit-border-radius: 0;
181
- -moz-border-radius: 0;
182
- border-radius: 0;
183
- }
184
- .datepicker table tr td.range.today,
185
- .datepicker table tr td.range.today:hover,
186
- .datepicker table tr td.range.today.disabled,
187
- .datepicker table tr td.range.today.disabled:hover {
188
- background-color: #f3d17a;
189
- background-image: -moz-linear-gradient(to bottom, #f3c17a, #f3e97a);
190
- background-image: -ms-linear-gradient(to bottom, #f3c17a, #f3e97a);
191
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
192
- background-image: -webkit-linear-gradient(to bottom, #f3c17a, #f3e97a);
193
- background-image: -o-linear-gradient(to bottom, #f3c17a, #f3e97a);
194
- background-image: linear-gradient(to bottom, #f3c17a, #f3e97a);
195
- background-repeat: repeat-x;
196
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
197
- border-color: #f3e97a #f3e97a #edde34;
198
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
199
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
200
- -webkit-border-radius: 0;
201
- -moz-border-radius: 0;
202
- border-radius: 0;
203
- }
204
- .datepicker table tr td.range.today:hover,
205
- .datepicker table tr td.range.today:hover:hover,
206
- .datepicker table tr td.range.today.disabled:hover,
207
- .datepicker table tr td.range.today.disabled:hover:hover,
208
- .datepicker table tr td.range.today:active,
209
- .datepicker table tr td.range.today:hover:active,
210
- .datepicker table tr td.range.today.disabled:active,
211
- .datepicker table tr td.range.today.disabled:hover:active,
212
- .datepicker table tr td.range.today.active,
213
- .datepicker table tr td.range.today:hover.active,
214
- .datepicker table tr td.range.today.disabled.active,
215
- .datepicker table tr td.range.today.disabled:hover.active,
216
- .datepicker table tr td.range.today.disabled,
217
- .datepicker table tr td.range.today:hover.disabled,
218
- .datepicker table tr td.range.today.disabled.disabled,
219
- .datepicker table tr td.range.today.disabled:hover.disabled,
220
- .datepicker table tr td.range.today[disabled],
221
- .datepicker table tr td.range.today:hover[disabled],
222
- .datepicker table tr td.range.today.disabled[disabled],
223
- .datepicker table tr td.range.today.disabled:hover[disabled] {
224
- background-color: #f3e97a;
225
- }
226
- .datepicker table tr td.range.today:active,
227
- .datepicker table tr td.range.today:hover:active,
228
- .datepicker table tr td.range.today.disabled:active,
229
- .datepicker table tr td.range.today.disabled:hover:active,
230
- .datepicker table tr td.range.today.active,
231
- .datepicker table tr td.range.today:hover.active,
232
- .datepicker table tr td.range.today.disabled.active,
233
- .datepicker table tr td.range.today.disabled:hover.active {
234
- background-color: #efe24b \9;
235
- }
236
- .datepicker table tr td.selected,
237
- .datepicker table tr td.selected:hover,
238
- .datepicker table tr td.selected.disabled,
239
- .datepicker table tr td.selected.disabled:hover {
240
- background-color: #9e9e9e;
241
- background-image: -moz-linear-gradient(to bottom, #b3b3b3, #808080);
242
- background-image: -ms-linear-gradient(to bottom, #b3b3b3, #808080);
243
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
244
- background-image: -webkit-linear-gradient(to bottom, #b3b3b3, #808080);
245
- background-image: -o-linear-gradient(to bottom, #b3b3b3, #808080);
246
- background-image: linear-gradient(to bottom, #b3b3b3, #808080);
247
- background-repeat: repeat-x;
248
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
249
- border-color: #808080 #808080 #595959;
250
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
251
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
252
- color: #fff;
253
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
254
- }
255
- .datepicker table tr td.selected:hover,
256
- .datepicker table tr td.selected:hover:hover,
257
- .datepicker table tr td.selected.disabled:hover,
258
- .datepicker table tr td.selected.disabled:hover:hover,
259
- .datepicker table tr td.selected:active,
260
- .datepicker table tr td.selected:hover:active,
261
- .datepicker table tr td.selected.disabled:active,
262
- .datepicker table tr td.selected.disabled:hover:active,
263
- .datepicker table tr td.selected.active,
264
- .datepicker table tr td.selected:hover.active,
265
- .datepicker table tr td.selected.disabled.active,
266
- .datepicker table tr td.selected.disabled:hover.active,
267
- .datepicker table tr td.selected.disabled,
268
- .datepicker table tr td.selected:hover.disabled,
269
- .datepicker table tr td.selected.disabled.disabled,
270
- .datepicker table tr td.selected.disabled:hover.disabled,
271
- .datepicker table tr td.selected[disabled],
272
- .datepicker table tr td.selected:hover[disabled],
273
- .datepicker table tr td.selected.disabled[disabled],
274
- .datepicker table tr td.selected.disabled:hover[disabled] {
275
- background-color: #808080;
276
- }
277
- .datepicker table tr td.selected:active,
278
- .datepicker table tr td.selected:hover:active,
279
- .datepicker table tr td.selected.disabled:active,
280
- .datepicker table tr td.selected.disabled:hover:active,
281
- .datepicker table tr td.selected.active,
282
- .datepicker table tr td.selected:hover.active,
283
- .datepicker table tr td.selected.disabled.active,
284
- .datepicker table tr td.selected.disabled:hover.active {
285
- background-color: #666666 \9;
286
- }
287
- .datepicker table tr td.active,
288
- .datepicker table tr td.active:hover,
289
- .datepicker table tr td.active.disabled,
290
- .datepicker table tr td.active.disabled:hover {
291
- background-color: #006dcc;
292
- background-image: -moz-linear-gradient(to bottom, #08c, #0044cc);
293
- background-image: -ms-linear-gradient(to bottom, #08c, #0044cc);
294
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0044cc));
295
- background-image: -webkit-linear-gradient(to bottom, #08c, #0044cc);
296
- background-image: -o-linear-gradient(to bottom, #08c, #0044cc);
297
- background-image: linear-gradient(to bottom, #08c, #0044cc);
298
- background-repeat: repeat-x;
299
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);
300
- border-color: #0044cc #0044cc #002a80;
301
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
302
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
303
- color: #fff;
304
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
305
- }
306
- .datepicker table tr td.active:hover,
307
- .datepicker table tr td.active:hover:hover,
308
- .datepicker table tr td.active.disabled:hover,
309
- .datepicker table tr td.active.disabled:hover:hover,
310
- .datepicker table tr td.active:active,
311
- .datepicker table tr td.active:hover:active,
312
- .datepicker table tr td.active.disabled:active,
313
- .datepicker table tr td.active.disabled:hover:active,
314
- .datepicker table tr td.active.active,
315
- .datepicker table tr td.active:hover.active,
316
- .datepicker table tr td.active.disabled.active,
317
- .datepicker table tr td.active.disabled:hover.active,
318
- .datepicker table tr td.active.disabled,
319
- .datepicker table tr td.active:hover.disabled,
320
- .datepicker table tr td.active.disabled.disabled,
321
- .datepicker table tr td.active.disabled:hover.disabled,
322
- .datepicker table tr td.active[disabled],
323
- .datepicker table tr td.active:hover[disabled],
324
- .datepicker table tr td.active.disabled[disabled],
325
- .datepicker table tr td.active.disabled:hover[disabled] {
326
- background-color: #0044cc;
327
- }
328
- .datepicker table tr td.active:active,
329
- .datepicker table tr td.active:hover:active,
330
- .datepicker table tr td.active.disabled:active,
331
- .datepicker table tr td.active.disabled:hover:active,
332
- .datepicker table tr td.active.active,
333
- .datepicker table tr td.active:hover.active,
334
- .datepicker table tr td.active.disabled.active,
335
- .datepicker table tr td.active.disabled:hover.active {
336
- background-color: #003399 \9;
337
- }
338
- .datepicker table tr td span {
339
- display: block;
340
- width: 23%;
341
- height: 54px;
342
- line-height: 54px;
343
- float: left;
344
- margin: 1%;
345
- cursor: pointer;
346
- -webkit-border-radius: 4px;
347
- -moz-border-radius: 4px;
348
- border-radius: 4px;
349
- }
350
- .datepicker table tr td span:hover,
351
- .datepicker table tr td span.focused {
352
- background: #eee;
353
- }
354
- .datepicker table tr td span.disabled,
355
- .datepicker table tr td span.disabled:hover {
356
- background: none;
357
- color: #999;
358
- cursor: default;
359
- }
360
- .datepicker table tr td span.active,
361
- .datepicker table tr td span.active:hover,
362
- .datepicker table tr td span.active.disabled,
363
- .datepicker table tr td span.active.disabled:hover {
364
- background-color: #006dcc;
365
- background-image: -moz-linear-gradient(to bottom, #08c, #0044cc);
366
- background-image: -ms-linear-gradient(to bottom, #08c, #0044cc);
367
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0044cc));
368
- background-image: -webkit-linear-gradient(to bottom, #08c, #0044cc);
369
- background-image: -o-linear-gradient(to bottom, #08c, #0044cc);
370
- background-image: linear-gradient(to bottom, #08c, #0044cc);
371
- background-repeat: repeat-x;
372
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);
373
- border-color: #0044cc #0044cc #002a80;
374
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
375
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
376
- color: #fff;
377
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
378
- }
379
- .datepicker table tr td span.active:hover,
380
- .datepicker table tr td span.active:hover:hover,
381
- .datepicker table tr td span.active.disabled:hover,
382
- .datepicker table tr td span.active.disabled:hover:hover,
383
- .datepicker table tr td span.active:active,
384
- .datepicker table tr td span.active:hover:active,
385
- .datepicker table tr td span.active.disabled:active,
386
- .datepicker table tr td span.active.disabled:hover:active,
387
- .datepicker table tr td span.active.active,
388
- .datepicker table tr td span.active:hover.active,
389
- .datepicker table tr td span.active.disabled.active,
390
- .datepicker table tr td span.active.disabled:hover.active,
391
- .datepicker table tr td span.active.disabled,
392
- .datepicker table tr td span.active:hover.disabled,
393
- .datepicker table tr td span.active.disabled.disabled,
394
- .datepicker table tr td span.active.disabled:hover.disabled,
395
- .datepicker table tr td span.active[disabled],
396
- .datepicker table tr td span.active:hover[disabled],
397
- .datepicker table tr td span.active.disabled[disabled],
398
- .datepicker table tr td span.active.disabled:hover[disabled] {
399
- background-color: #0044cc;
400
- }
401
- .datepicker table tr td span.active:active,
402
- .datepicker table tr td span.active:hover:active,
403
- .datepicker table tr td span.active.disabled:active,
404
- .datepicker table tr td span.active.disabled:hover:active,
405
- .datepicker table tr td span.active.active,
406
- .datepicker table tr td span.active:hover.active,
407
- .datepicker table tr td span.active.disabled.active,
408
- .datepicker table tr td span.active.disabled:hover.active {
409
- background-color: #003399 \9;
410
- }
411
- .datepicker table tr td span.old,
412
- .datepicker table tr td span.new {
413
- color: #999;
414
- }
415
- .datepicker .datepicker-switch {
416
- width: 145px;
417
- }
418
- .datepicker .datepicker-switch,
419
- .datepicker .prev,
420
- .datepicker .next,
421
- .datepicker tfoot tr th {
422
- cursor: pointer;
423
- }
424
- .datepicker .datepicker-switch:hover,
425
- .datepicker .prev:hover,
426
- .datepicker .next:hover,
427
- .datepicker tfoot tr th:hover {
428
- background: #eee;
429
- }
430
- .datepicker .prev.disabled,
431
- .datepicker .next.disabled {
432
- visibility: hidden;
433
- }
434
- .datepicker .cw {
435
- font-size: 10px;
436
- width: 12px;
437
- padding: 0 2px 0 5px;
438
- vertical-align: middle;
439
- }
440
- .input-append.date .add-on,
441
- .input-prepend.date .add-on {
442
- cursor: pointer;
443
- }
444
- .input-append.date .add-on i,
445
- .input-prepend.date .add-on i {
446
- margin-top: 3px;
447
- }
448
- .input-daterange input {
449
- text-align: center;
450
- }
451
- .input-daterange input:first-child {
452
- -webkit-border-radius: 3px 0 0 3px;
453
- -moz-border-radius: 3px 0 0 3px;
454
- border-radius: 3px 0 0 3px;
455
- }
456
- .input-daterange input:last-child {
457
- -webkit-border-radius: 0 3px 3px 0;
458
- -moz-border-radius: 0 3px 3px 0;
459
- border-radius: 0 3px 3px 0;
460
- }
461
- .input-daterange .add-on {
462
- display: inline-block;
463
- width: auto;
464
- min-width: 16px;
465
- height: 18px;
466
- padding: 4px 5px;
467
- font-weight: normal;
468
- line-height: 18px;
469
- text-align: center;
470
- text-shadow: 0 1px 0 #fff;
471
- vertical-align: middle;
472
- background-color: #eee;
473
- border: 1px solid #ccc;
474
- margin-left: -5px;
475
- margin-right: -5px;
476
- }
477
- /*# sourceMappingURL=bootstrap-datepicker.css.map */
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ActiveSupport.on_load :active_record do
4
- require 'audited'
5
- end