tb_core 1.4.3.1 → 1.4.4

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -54
  3. data/app/assets/javascripts/admin/core/application.js +8 -4
  4. data/app/assets/javascripts/admin/core/dashboard.js +2 -3
  5. data/app/assets/javascripts/admin/core/date_picker.js +2 -2
  6. data/app/assets/javascripts/admin/core/editor.js +2 -2
  7. data/app/assets/javascripts/admin/core/modal.js +1 -1
  8. data/app/assets/javascripts/admin/core/users.js +5 -5
  9. data/app/assets/javascripts/tb_core.js +8 -0
  10. data/app/assets/libs/sortable/sortable.js +152 -91
  11. data/app/controllers/admin/application_controller.rb +1 -2
  12. data/app/controllers/admin/dashboard_controller.rb +2 -2
  13. data/app/controllers/admin/settings_controller.rb +2 -2
  14. data/app/controllers/admin/users_controller.rb +4 -7
  15. data/app/controllers/concerns/tb_core/error_handling.rb +16 -7
  16. data/app/controllers/concerns/tb_core/user_authentication.rb +5 -5
  17. data/app/controllers/tb_core/application_controller.rb +1 -1
  18. data/app/controllers/user_sessions_controller.rb +2 -2
  19. data/app/helpers/tb_core/application_helper.rb +4 -36
  20. data/app/mailers/tb_core_mailer.rb +3 -3
  21. data/app/models/concerns/tb_core/user_model.rb +131 -0
  22. data/app/models/spud/spud_user_model.rb +6 -138
  23. data/app/models/spud_permission.rb +4 -4
  24. data/app/models/spud_role.rb +1 -1
  25. data/app/models/spud_user.rb +2 -1
  26. data/app/views/admin/dashboard/index.html.erb +1 -1
  27. data/app/views/admin/settings/_form.html.erb +1 -1
  28. data/app/views/admin/settings/edit.html.erb +1 -1
  29. data/app/views/admin/setup/new.html.erb +1 -1
  30. data/app/views/admin/users/_form.html.erb +1 -1
  31. data/app/views/admin/users/index.html.erb +2 -2
  32. data/app/views/admin/users/show.html.erb +1 -1
  33. data/app/views/layouts/admin/application.html.erb +6 -6
  34. data/app/views/layouts/admin/login.html.erb +1 -1
  35. data/app/views/tb_core_mailer/forgot_password_notification.html.erb +2 -2
  36. data/app/views/tb_core_mailer/user_credentials.html.erb +2 -2
  37. data/app/views/user_sessions/_form.html.erb +1 -1
  38. data/app/views/user_sessions/new.html.erb +1 -1
  39. data/lib/generators/spud/module_generator.rb +7 -7
  40. data/lib/generators/spud/setup_generator.rb +6 -7
  41. data/lib/generators/spud/templates/assets/admin/application.js +1 -1
  42. data/lib/generators/spud/templates/assets/application.js +3 -4
  43. data/lib/generators/spud/templates/controller_spec.rb.erb +5 -5
  44. data/lib/generators/spud/templates/views/admin/_form.html.erb +1 -1
  45. data/lib/generators/spud/templates/views/admin/index.html.erb +1 -1
  46. data/lib/generators/spud/templates/views/admin/show.html.erb +1 -1
  47. data/lib/generators/spud/templates/views/frontend/index.html.erb +1 -1
  48. data/lib/generators/spud/templates/views/frontend/show.html.erb +1 -1
  49. data/lib/tb_core.rb +3 -5
  50. data/lib/tb_core/belongs_to_app.rb +47 -46
  51. data/lib/tb_core/catch_all_route.rb +3 -0
  52. data/lib/tb_core/configuration.rb +28 -0
  53. data/lib/tb_core/engine.rb +61 -0
  54. data/lib/tb_core/errors.rb +50 -0
  55. data/lib/tb_core/responder.rb +0 -26
  56. data/lib/{spud_core → tb_core}/searchable.rb +4 -1
  57. data/lib/tb_core/spud_core.rb +23 -0
  58. data/lib/{spud_core → tb_core}/test_files.rb +0 -0
  59. data/lib/tb_core/test_helper.rb +3 -3
  60. data/lib/tb_core/version.rb +3 -0
  61. data/spec/controllers/admin/application_controller_spec.rb +5 -5
  62. data/spec/controllers/admin/dashboard_controller_spec.rb +5 -5
  63. data/spec/controllers/admin/password_reset_controller_spec.rb +1 -1
  64. data/spec/controllers/admin/settings_controller_spec.rb +1 -1
  65. data/spec/controllers/admin/setup_controller_spec.rb +2 -2
  66. data/spec/controllers/admin/user_sessions_controller_spec.rb +2 -2
  67. data/spec/controllers/admin/users_controller_spec.rb +17 -17
  68. data/spec/dummy/app/assets/javascripts/admin/application.js +1 -1
  69. data/spec/dummy/app/assets/javascripts/application.js +1 -1
  70. data/spec/dummy/config/application.rb +1 -1
  71. data/spec/factories/spud_admin_permission_factories.rb +2 -2
  72. data/spec/factories/spud_role_factories.rb +2 -2
  73. data/spec/factories/spud_user_factories.rb +6 -6
  74. data/spec/helpers/spud/admin/application_helper_spec.rb +1 -1
  75. data/spec/helpers/tb_core/application_helper_spec.rb +0 -35
  76. data/spec/lib/spud_core/configuration_spec.rb +2 -2
  77. data/spec/lib/tb_core/belongs_to_app_spec.rb +4 -3
  78. data/spec/models/spud_role_spec.rb +2 -2
  79. data/spec/models/spud_user_spec.rb +13 -13
  80. data/spec/rails_helper.rb +1 -1
  81. metadata +59 -67
  82. data/app/assets/javascripts/tb_core.js.erb +0 -9
  83. data/app/assets/javascripts/tb_core/configuration.js.erb +0 -9
  84. data/app/assets/javascripts/tb_core/console.js +0 -12
  85. data/app/assets/javascripts/tb_core/remote.js +0 -237
  86. data/app/assets/javascripts/tb_core/utility.js +0 -55
  87. data/app/controllers/concerns/tb_core/sortable_params.rb +0 -80
  88. data/app/controllers/spud/application_controller.rb +0 -10
  89. data/lib/generators/spud/templates/assets/bootstrap.js +0 -14
  90. data/lib/spud_core/catch_all_route.rb +0 -3
  91. data/lib/spud_core/configuration.rb +0 -56
  92. data/lib/spud_core/engine.rb +0 -76
  93. data/lib/spud_core/errors.rb +0 -47
  94. data/lib/spud_core/version.rb +0 -5
  95. data/lib/tb_core/table_header.rb +0 -92
  96. data/spec/controllers/tb_core/sortable_params_spec.rb +0 -64
@@ -1,76 +0,0 @@
1
- require 'responders'
2
- require 'jquery-rails'
3
- require 'authlogic'
4
- require 'bootstrap-sass'
5
- require 'autoprefixer-rails'
6
- require 'will_paginate'
7
- require 'will_paginate-bootstrap'
8
- require 'breadcrumbs_on_rails'
9
- require 'rails-ujs'
10
-
11
- # this should eventually replace the Spud::Core namespace
12
- module TbCore
13
- end
14
-
15
- module Spud
16
- module Core
17
- class Engine < ::Rails::Engine
18
- require "#{root}/lib/spud_core/errors"
19
- require "#{root}/lib/spud_core/searchable"
20
- require "#{root}/lib/tb_core/form_builder"
21
- require "#{root}/lib/tb_core/table_header"
22
-
23
- engine_name :tb_core
24
- config.autoload_paths << "#{root}/lib"
25
-
26
- initializer 'tb_core.controller_overrides' do |config|
27
- ActionController::Base.class_eval do
28
- include TbCore::BelongsToApp
29
- end
30
- end
31
-
32
- initializer 'tb_core.model_overrides' do |config|
33
- ActiveRecord::Base.class_eval do
34
- include Spud::Searchable
35
- end
36
- end
37
-
38
- initializer 'tb_core.admin', after: :admin do |config|
39
- # Translate Hash configured permissions into SpudPermission objects
40
- Spud::Core.permissions.collect! do |p|
41
- if p.class == Hash
42
- p = SpudPermission.new(p[:tag], p[:name], p[:apps])
43
- end
44
- p
45
- end
46
- # Append Users admin module
47
- Spud::Core.config.admin_applications.unshift(name: 'Users',
48
- thumbnail: 'admin/users_thumb.png',
49
- url: '/admin/users',
50
- order: 100)
51
- # Create default permissions for modules
52
- Spud::Core.admin_applications.each do |admin_application|
53
- admin_application[:key] ||= admin_application[:name].gsub(' ', '_').downcase.to_sym
54
- tag = "admin.#{admin_application[:key]}.full_access"
55
- name = "#{admin_application[:name]} admin"
56
- apps = [admin_application[:key]]
57
- Spud::Core.permissions.push(SpudPermission.new(tag, name, apps))
58
- end
59
- end
60
-
61
- initializer 'tb_core.catch_all_route' do |config|
62
- # Handle 404 errors if Spud::Cms is not installed
63
- if !defined?(Spud::Cms)
64
- config.routes_reloader.paths << File.expand_path('../catch_all_route.rb', __FILE__)
65
- end
66
- end
67
-
68
- initializer 'tb_core.assets' do
69
- Rails.application.config.assets.precompile += ['admin/users_thumb.png', 'admin/module_icon.png']
70
- end
71
-
72
- end
73
- end
74
- end
75
-
76
- TbCore::Engine = Spud::Core::Engine
@@ -1,47 +0,0 @@
1
- class Spud::RequestError < StandardError
2
- attr_accessor :request_url, :item, :template
3
- attr_reader :code, :title
4
-
5
- # For compatability reasons, this method accepts multiple styles of inputs
6
- # Going forward the expected input will be:
7
- #
8
- # * item: The item that could not be found. String. (default = page)
9
- # * template (named): ERB template you wish to render
10
- #
11
- def initialize(item_or_opts='page', opts={})
12
- if item_or_opts.is_a?(Hash)
13
- @item = item_or_opts[:item]
14
- @template = item_or_opts[:template]
15
- else
16
- @item = item_or_opts
17
- @template = opts[:template]
18
- end
19
- @template ||= 'layouts/error_page'
20
- @title = I18n.t(:title, scope: [:tb_core, :errors, @i18n])
21
- super(I18n.t(:message, scope: [:tb_core, :errors, @i18n], item: @item))
22
- end
23
- end
24
-
25
- class Spud::AccessDeniedError < Spud::RequestError
26
- def initialize(item_or_opts='page', opts={})
27
- @code = 403
28
- @i18n = 'access_denied'
29
- super(item_or_opts, opts)
30
- end
31
- end
32
-
33
- class Spud::NotFoundError < Spud::RequestError
34
- def initialize(item_or_opts='page', opts={})
35
- @code = 404
36
- @i18n = 'not_found'
37
- super(item_or_opts, opts)
38
- end
39
- end
40
-
41
- class Spud::UnauthorizedError < Spud::RequestError
42
- def initialize(item_or_opts='page', opts={})
43
- @code = 401
44
- @i18n = 'unauthorized'
45
- super(item_or_opts, opts)
46
- end
47
- end
@@ -1,5 +0,0 @@
1
- module Spud
2
- module Core
3
- VERSION = '1.4.3.1'.freeze
4
- end
5
- end
@@ -1,92 +0,0 @@
1
- module TbCore
2
- class TableHeader
3
- attr_reader :context
4
- attr_accessor :header_html
5
-
6
- # Forward view helper methods to the view context
7
- delegate :concat, :content_tag, :link_to, to: :context
8
-
9
- def initialize(path_helper:, model: nil, params: {}, context:)
10
- @path_helper = path_helper
11
- @model = model
12
- @params = params
13
- @context = context
14
- end
15
-
16
- def capture(block)
17
- @html = context.capture do
18
- block.call(self)
19
- end
20
- end
21
-
22
- def sortable(attribute, label: nil)
23
- content_tag :th, class: classes_for_attribute(attribute) do
24
- concat(link_to_for_attribute(attribute, label))
25
- concat(sort_arrow_for_attribute(attribute))
26
- end
27
- end
28
-
29
- def header(attribute, label: nil)
30
- label ||= translated_attribute(attribute)
31
- content_tag :th, label
32
- end
33
-
34
- def to_row
35
- content_tag(:tr, @html)
36
- end
37
-
38
- def to_html
39
- content_tag :thead, to_row, class: 'tb-table-header'
40
- end
41
-
42
- private
43
-
44
- def translated_attribute(attribute)
45
- if @model
46
- @model.human_attribute_name(attribute)
47
- else
48
- context.t(attribute)
49
- end
50
- end
51
-
52
- def current_direction
53
- @params[:dir] || 'asc'
54
- end
55
-
56
- def inverted_direction
57
- current_direction == 'asc' ? 'desc' : 'asc'
58
- end
59
-
60
- def determine_direction(attribute)
61
- if @params[:sort].nil? || @params[:sort] != attribute.to_s
62
- 'asc'
63
- else
64
- inverted_direction
65
- end
66
- end
67
-
68
- def classes_for_attribute(attribute)
69
- classes = ['sortable']
70
- if @params[:sort] == attribute.to_s
71
- classes << 'sortable-active'
72
- classes << "sortable-#{current_direction}"
73
- end
74
- classes.join(' ')
75
- end
76
-
77
- def link_to_for_attribute(attribute, label)
78
- label ||= translated_attribute(attribute)
79
- path = context.send(
80
- @path_helper,
81
- @params.merge(sort: attribute, dir: determine_direction(attribute))
82
- )
83
- link_to(label, path)
84
- end
85
-
86
- def sort_arrow_for_attribute(attribute)
87
- return '' unless @params[:sort] == attribute.to_s
88
- arrow_class = current_direction == 'asc' ? 'up' : 'down'
89
- content_tag(:span, '', class: "glyphicon glyphicon-arrow-#{arrow_class}")
90
- end
91
- end
92
- end
@@ -1,64 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe TbCore::SortableParams, type: :controller do
4
- controller do
5
- include TbCore::SortableParams
6
- sortable_by :first_name, :last_name, :email,
7
- display_name: [:first_name, :last_name],
8
- birth_date: 'user_birthdays.date :dir',
9
- special: proc { |dir| "some_other_tables.whatever #{dir}" },
10
- default: :last_name
11
-
12
- def index; end
13
- end
14
-
15
- describe '#sort_direction' do
16
- it 'returns asc' do
17
- expect(controller.sort_direction).to eq(:asc)
18
- end
19
- it 'returns desc' do
20
- controller.params[:dir] = 'desc'
21
- expect(controller.sort_direction).to eq(:desc)
22
- end
23
- end
24
-
25
- describe '#sort_attribute' do
26
- it 'returns the default' do
27
- expect(controller.sort_attribute).to eq(:last_name)
28
- end
29
- it 'returns the param' do
30
- controller.params[:sort] = 'email'
31
- expect(controller.sort_attribute).to eq(:email)
32
- end
33
- end
34
-
35
- describe '#sortable_query' do
36
- it 'returns the value as a hash' do
37
- controller.params[:sort] = 'email'
38
- expect(controller.sortable_query).to eq(email: :asc)
39
- end
40
-
41
- it 'returns a multi value hash' do
42
- controller.params[:sort] = 'display_name'
43
- controller.params[:dir] = 'desc'
44
- expect(controller.sortable_query).to eq(first_name: :desc, last_name: :desc)
45
- end
46
-
47
- it 'returns a string with substitution' do
48
- controller.params[:sort] = 'birth_date'
49
- controller.params[:dir] = 'desc'
50
- expect(controller.sortable_query).to eq('user_birthdays.date desc')
51
- end
52
-
53
- it 'returns a string by calling a proc' do
54
- controller.params[:sort] = 'special'
55
- controller.params[:dir] = 'desc'
56
- expect(controller.sortable_query).to eq('some_other_tables.whatever desc')
57
- end
58
-
59
- it 'returns nothing' do
60
- controller.params[:sort] = 'not_allowed'
61
- expect(controller.sortable_query).to eq(nil)
62
- end
63
- end
64
- end