Module: Tramway::Admin

Defined in:
lib/tramway/admin.rb,
lib/tramway/admin/engine.rb,
lib/tramway/admin/version.rb,
app/jobs/tramway/admin/application_job.rb,
lib/tramway/admin/record_routes_helper.rb,
app/helpers/tramway/admin/inputs_helper.rb,
app/helpers/tramway/admin/navbar_helper.rb,
app/helpers/tramway/admin/records_helper.rb,
app/helpers/tramway/admin/application_helper.rb,
app/mailers/tramway/admin/application_mailer.rb,
app/helpers/tramway/admin/russian_cases_helper.rb,
app/controllers/tramway/admin/records_controller.rb,
app/controllers/tramway/admin/welcome_controller.rb,
app/controllers/tramway/admin/singletons_controller.rb,
app/controllers/tramway/admin/application_controller.rb

Defined Under Namespace

Modules: AdditionalButtonsBuilder, ApplicationHelper, FocusGeneratorHelper, InputsHelper, NavbarHelper, RecordRoutesHelper, RecordsHelper, RussianCasesHelper, SingletonHelper Classes: ApplicationController, ApplicationJob, ApplicationMailer, Engine, RecordsController, SingletonsController, WelcomeController

Constant Summary collapse

VERSION =
'1.9'

Class Method Summary collapse

Class Method Details

.additional_buttons(view: nil, record: nil, project: nil) ⇒ Object



69
70
71
# File 'lib/tramway/admin.rb', line 69

def additional_buttons(view: nil, record: nil, project: nil)
  @additional_buttons&.dig record, view
end

.available_models ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/tramway/admin.rb', line 34

def available_models
  if @available_models
    @available_models.values.flatten
  else
    error = Tramway::Error.new(plugin: :admin, method: :available_models, message: ('List of available_models is empty. You should add some of them using `::Tramway::Admin.set_available_models(*list_of_classes, project: :your_project_name)` in `config/initializers/tramway.rb`'))
    raise error.message
  end
end

.available_models_for(project) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/tramway/admin.rb', line 15

def available_models_for(project)
  if project_is_engine?(project)
    get_models_by_key(@available_models, project) + engine_class(project).dependencies.map do |dependency|
      if @available_models[dependency].present?
        @available_models[dependency]
      else
        error = Tramway::Error.new(
          plugin: :admin,
          method: :available_models_for,
          message: "There is no dependency `#{dependency}` for plugin: #{project}. Please, check file `tramway-#{project}/lib/tramway/#{project}/#{project}.rb`"
        )
        raise error
      end
    end.flatten.compact
  else
    get_models_by_key(@available_models, project)
  end
end

.customized_admin_navbar ⇒ Object



73
74
75
# File 'lib/tramway/admin.rb', line 73

def customized_admin_navbar
  @customized_admin_navbar
end

.engine_class(project) ⇒ Object



77
78
79
80
# File 'lib/tramway/admin.rb', line 77

def engine_class(project)
  class_name = "::Tramway::#{project.to_s.camelize}"
  class_name.classify.safe_constantize
end

.get_models_by_key(checked_models, project) ⇒ Object



86
87
88
# File 'lib/tramway/admin.rb', line 86

def get_models_by_key(checked_models, project)
  checked_models && checked_models != [] && checked_models[project.to_sym] || []
end

.project_is_engine?(project) ⇒ Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/tramway/admin.rb', line 82

def project_is_engine?(project)
  engine_class(project)
end

.set_additional_buttons(buttons, project:) ⇒ Object



63
64
65
66
67
# File 'lib/tramway/admin.rb', line 63

def set_additional_buttons(buttons, project:)
  @additional_buttons ||= {}
  @additional_buttons[project] ||= {}
  @additional_buttons[project].merge! buttons
end

.set_available_models(*models, project:) ⇒ Object



9
10
11
12
13
# File 'lib/tramway/admin.rb', line 9

def set_available_models(*models, project:)
  @available_models ||= {}
  @available_models[project] ||= []
  @available_models[project] += models
end

.set_singleton_models(*models, project:) ⇒ Object



43
44
45
46
47
# File 'lib/tramway/admin.rb', line 43

def set_singleton_models(*models, project:)
  @singleton_models ||= {}
  @singleton_models[project] ||= []
  @singleton_models[project] += models
end

.singleton_models ⇒ Object



59
60
61
# File 'lib/tramway/admin.rb', line 59

def singleton_models
  @singleton_models&.values&.flatten || []
end

.singleton_models_for(project) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/tramway/admin.rb', line 49

def singleton_models_for(project)
  if project_is_engine?(project)
    get_models_by_key(@singleton_models, project) + engine_class(project).dependencies.map do |dependency|
      @singleton_models[dependency]
    end.flatten.compact
  else
    get_models_by_key(@singleton_models, project)
  end
end