tramway 0.1.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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