tb_core 1.4.3.1 → 1.4.4

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