tb_core 1.4.1 → 1.4.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.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/app/assets/javascripts/admin/core/dashboard.js +19 -16
- data/app/assets/libs/sortable/sortable.js +1481 -0
- data/app/controllers/admin/application_controller.rb +2 -1
- data/app/controllers/admin/users_controller.rb +5 -1
- data/app/controllers/concerns/tb_core/error_handling.rb +49 -0
- data/app/controllers/concerns/tb_core/redirection.rb +23 -0
- data/app/controllers/concerns/tb_core/sortable_params.rb +80 -0
- data/app/controllers/concerns/tb_core/user_authentication.rb +57 -0
- data/app/controllers/spud/application_controller.rb +8 -136
- data/app/controllers/tb_core/application_controller.rb +16 -0
- data/app/helpers/admin/application_helper.rb +3 -1
- data/app/helpers/tb_core/application_helper.rb +32 -0
- data/app/views/admin/users/index.html.erb +6 -6
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +1 -1
- data/lib/generators/spud/templates/application_controller.rb +1 -1
- data/lib/spud_core/engine.rb +1 -1
- data/lib/spud_core/version.rb +1 -1
- data/lib/tb_core/form_builder.rb +1 -1
- data/lib/tb_core/table_header.rb +92 -0
- data/spec/controllers/admin/application_controller_spec.rb +1 -1
- data/spec/controllers/{spud → tb_core}/application_controller_spec.rb +1 -1
- data/spec/controllers/tb_core/sortable_params_spec.rb +64 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/helpers/tb_core/application_helper_spec.rb +39 -0
- data/spec/rails_helper.rb +3 -4
- data/spec/spec_helper.rb +2 -0
- metadata +18 -11
- data/app/assets/javascripts/admin/core/jquery_ui.js +0 -22
- data/app/assets/stylesheets/admin/core/jquery_ui.scss +0 -19
- data/app/controllers/spud/admin/application_controller.rb +0 -12
- data/app/helpers/spud/application_helper.rb +0 -36
@@ -0,0 +1,64 @@
|
|
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
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe TbCore::ApplicationHelper, type: :helper do
|
4
|
+
describe '#tb_table_header' do
|
5
|
+
|
6
|
+
it 'returns a table header with rows' do
|
7
|
+
result = helper.tb_table_header(:admin_users_path)
|
8
|
+
expect(result).to include('<thead class="tb-table-header"><tr></tr></thead>')
|
9
|
+
expect(result).to include('</thead>')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has some headers' do
|
13
|
+
result = helper.tb_table_header(:admin_users_path, model: SpudUser) do |t|
|
14
|
+
view.concat(t.header(:first_name))
|
15
|
+
view.concat(t.header(:email))
|
16
|
+
end
|
17
|
+
expect(result).to include('<th>First name</th>')
|
18
|
+
expect(result).to include('<th>Email</th>')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'generates links' do
|
22
|
+
result = helper.tb_table_header(:admin_users_path, model: SpudUser) do |t|
|
23
|
+
view.concat(t.sortable(:first_name))
|
24
|
+
view.concat(t.sortable(:email))
|
25
|
+
end
|
26
|
+
expect(result).to include('<a href="/admin/users?dir=asc&sort=first_name">First name</a>')
|
27
|
+
expect(result).to include('<a href="/admin/users?dir=asc&sort=email">Email</a>')
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'sets the active class' do
|
31
|
+
helper.params[:sort] = 'first_name'
|
32
|
+
helper.params[:dir] = 'desc'
|
33
|
+
result = helper.tb_table_header(:admin_users_path, model: SpudUser) do |t|
|
34
|
+
view.concat(t.sortable(:first_name))
|
35
|
+
end
|
36
|
+
expect(result).to include('<th class="sortable sortable-active sortable-desc">')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/rails_helper.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start 'rails'
|
3
|
+
|
1
4
|
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
5
|
ENV['RAILS_ENV'] ||= 'test'
|
3
6
|
|
4
7
|
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
5
8
|
require 'spec_helper'
|
6
|
-
# require 'session_helper'
|
7
9
|
require 'tb_core/test_helper'
|
8
10
|
require 'rails-controller-testing'
|
9
11
|
require 'rspec/rails'
|
10
12
|
require 'database_cleaner'
|
11
|
-
require 'simplecov'
|
12
13
|
require 'factory_girl_rails'
|
13
14
|
|
14
|
-
SimpleCov.start 'rails'
|
15
|
-
|
16
15
|
# Add additional requires below this line. Rails is not loaded until this point!
|
17
16
|
|
18
17
|
# Requires supporting ruby files with custom matchers and macros, etc, in
|
data/spec/spec_helper.rb
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
#
|
16
16
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
17
17
|
RSpec.configure do |config|
|
18
|
+
config.example_status_persistence_file_path = 'tmp/rspec.txt'
|
19
|
+
|
18
20
|
# rspec-expectations config goes here. You can use an alternate
|
19
21
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
20
22
|
# assertions if you prefer.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tb_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Woods
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -67,19 +67,19 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: jquery-
|
70
|
+
name: jquery-rails
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: breadcrumbs_on_rails
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -281,7 +281,6 @@ files:
|
|
281
281
|
- app/assets/javascripts/admin/core/dashboard.js
|
282
282
|
- app/assets/javascripts/admin/core/date_picker.js
|
283
283
|
- app/assets/javascripts/admin/core/editor.js
|
284
|
-
- app/assets/javascripts/admin/core/jquery_ui.js
|
285
284
|
- app/assets/javascripts/admin/core/modal.js
|
286
285
|
- app/assets/javascripts/admin/core/preinit.js
|
287
286
|
- app/assets/javascripts/admin/core/roles.js
|
@@ -295,9 +294,9 @@ files:
|
|
295
294
|
- app/assets/libs/datepicker/js/bootstrap-datepicker.js
|
296
295
|
- app/assets/libs/datepicker/less/datepicker.less
|
297
296
|
- app/assets/libs/rails-ujs.js
|
297
|
+
- app/assets/libs/sortable/sortable.js
|
298
298
|
- app/assets/stylesheets/admin/application.css
|
299
299
|
- app/assets/stylesheets/admin/core/application.scss
|
300
|
-
- app/assets/stylesheets/admin/core/jquery_ui.scss
|
301
300
|
- app/assets/stylesheets/admin/core/login.scss
|
302
301
|
- app/assets/stylesheets/admin/core/users.scss
|
303
302
|
- app/controllers/admin/application_controller.rb
|
@@ -308,13 +307,16 @@ files:
|
|
308
307
|
- app/controllers/admin/setup_controller.rb
|
309
308
|
- app/controllers/admin/user_sessions_controller.rb
|
310
309
|
- app/controllers/admin/users_controller.rb
|
310
|
+
- app/controllers/concerns/tb_core/error_handling.rb
|
311
|
+
- app/controllers/concerns/tb_core/redirection.rb
|
312
|
+
- app/controllers/concerns/tb_core/sortable_params.rb
|
313
|
+
- app/controllers/concerns/tb_core/user_authentication.rb
|
311
314
|
- app/controllers/password_resets_controller.rb
|
312
|
-
- app/controllers/spud/admin/application_controller.rb
|
313
315
|
- app/controllers/spud/application_controller.rb
|
316
|
+
- app/controllers/tb_core/application_controller.rb
|
314
317
|
- app/controllers/user_sessions_controller.rb
|
315
318
|
- app/helpers/admin/application_helper.rb
|
316
319
|
- app/helpers/admin/roles_helper.rb
|
317
|
-
- app/helpers/spud/application_helper.rb
|
318
320
|
- app/helpers/tb_core/application_helper.rb
|
319
321
|
- app/mailers/tb_core_mailer.rb
|
320
322
|
- app/models/spud/spud_user_model.rb
|
@@ -408,6 +410,7 @@ files:
|
|
408
410
|
- lib/tb_core/belongs_to_app.rb
|
409
411
|
- lib/tb_core/form_builder.rb
|
410
412
|
- lib/tb_core/responder.rb
|
413
|
+
- lib/tb_core/table_header.rb
|
411
414
|
- lib/tb_core/test_helper.rb
|
412
415
|
- spec/controllers/admin/application_controller_spec.rb
|
413
416
|
- spec/controllers/admin/dashboard_controller_spec.rb
|
@@ -416,7 +419,8 @@ files:
|
|
416
419
|
- spec/controllers/admin/setup_controller_spec.rb
|
417
420
|
- spec/controllers/admin/user_sessions_controller_spec.rb
|
418
421
|
- spec/controllers/admin/users_controller_spec.rb
|
419
|
-
- spec/controllers/
|
422
|
+
- spec/controllers/tb_core/application_controller_spec.rb
|
423
|
+
- spec/controllers/tb_core/sortable_params_spec.rb
|
420
424
|
- spec/dummy/README.rdoc
|
421
425
|
- spec/dummy/Rakefile
|
422
426
|
- spec/dummy/app/assets/javascripts/admin/application.js
|
@@ -452,6 +456,7 @@ files:
|
|
452
456
|
- spec/factories/spud_role_factories.rb
|
453
457
|
- spec/factories/spud_user_factories.rb
|
454
458
|
- spec/helpers/spud/admin/application_helper_spec.rb
|
459
|
+
- spec/helpers/tb_core/application_helper_spec.rb
|
455
460
|
- spec/lib/spud_core/configuration_spec.rb
|
456
461
|
- spec/lib/tb_core/belongs_to_app_spec.rb
|
457
462
|
- spec/models/spud_role_spec.rb
|
@@ -489,7 +494,8 @@ test_files:
|
|
489
494
|
- spec/controllers/admin/setup_controller_spec.rb
|
490
495
|
- spec/controllers/admin/user_sessions_controller_spec.rb
|
491
496
|
- spec/controllers/admin/users_controller_spec.rb
|
492
|
-
- spec/controllers/
|
497
|
+
- spec/controllers/tb_core/application_controller_spec.rb
|
498
|
+
- spec/controllers/tb_core/sortable_params_spec.rb
|
493
499
|
- spec/dummy/app/assets/javascripts/admin/application.js
|
494
500
|
- spec/dummy/app/assets/javascripts/application.js
|
495
501
|
- spec/dummy/app/assets/stylesheets/admin/application.scss
|
@@ -525,6 +531,7 @@ test_files:
|
|
525
531
|
- spec/factories/spud_role_factories.rb
|
526
532
|
- spec/factories/spud_user_factories.rb
|
527
533
|
- spec/helpers/spud/admin/application_helper_spec.rb
|
534
|
+
- spec/helpers/tb_core/application_helper_spec.rb
|
528
535
|
- spec/lib/spud_core/configuration_spec.rb
|
529
536
|
- spec/lib/tb_core/belongs_to_app_spec.rb
|
530
537
|
- spec/models/spud_role_spec.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
// Use this file to customize which jQuery UI JavaScript modules we include in the admin.
|
2
|
-
//
|
3
|
-
// https://github.com/joliss/jquery-ui-rails
|
4
|
-
//
|
5
|
-
// We primarily use UI for some interaction utilties and to fill in gaps
|
6
|
-
// left by Bootstrap. As a general rule, we should try to use a Bootstrap
|
7
|
-
// equivalent FIRST and then fall back to jQuery UI if necessary.
|
8
|
-
//
|
9
|
-
// For example, we prefer bootstrap-datepicker over jQuery UI Datepicker
|
10
|
-
//
|
11
|
-
// To see a full list of available modules (and their dependencies), see here:
|
12
|
-
// http://jqueryui.com/download
|
13
|
-
//
|
14
|
-
// NOTE: Don't forget to also add the corresponding modules to jquery_ui.scss!
|
15
|
-
//
|
16
|
-
//= require jquery-ui/core
|
17
|
-
//= require jquery-ui/widget
|
18
|
-
//= require jquery-ui/widgets/mouse
|
19
|
-
//= require jquery-ui/widgets/draggable
|
20
|
-
//= require jquery-ui/widgets/droppable
|
21
|
-
//= require jquery-ui/widgets/sortable
|
22
|
-
//
|
@@ -1,19 +0,0 @@
|
|
1
|
-
// Use this file to customize which jQuery UI CSS modules we include in the admin.
|
2
|
-
//
|
3
|
-
// https://github.com/joliss/jquery-ui-rails
|
4
|
-
//
|
5
|
-
// We primarily use UI for some interaction utilties and to fill in gaps
|
6
|
-
// left by Bootstrap. As a general rule, we should try to use a Bootstrap
|
7
|
-
// equivalent FIRST and then fall back to jQuery UI if necessary.
|
8
|
-
//
|
9
|
-
// For example, we prefer bootstrap-datepicker over jQuery UI Datepicker
|
10
|
-
//
|
11
|
-
// To see a full list of available modules (and their dependencies), see here:
|
12
|
-
// http://jqueryui.com/download
|
13
|
-
//
|
14
|
-
// NOTE: Don't forget to also add the corresponding modules to jquery_ui.js!
|
15
|
-
//
|
16
|
-
//= require jquery-ui/core
|
17
|
-
//= require jquery-ui/draggable
|
18
|
-
//= require jquery-ui/sortable
|
19
|
-
//
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class Spud::Admin::ApplicationController < Admin::ApplicationController
|
2
|
-
|
3
|
-
def initialize
|
4
|
-
ActiveSupport::Deprecation.warn(
|
5
|
-
"Spud::Admin::ApplicationController is deprecated and may be removed from future releases,
|
6
|
-
use Admin::ApplicationController instead.",
|
7
|
-
caller
|
8
|
-
)
|
9
|
-
super
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module Spud::ApplicationHelper
|
2
|
-
|
3
|
-
def tb_page_title
|
4
|
-
if content_for?(:title)
|
5
|
-
title = content_for(:title) + ' | ' + Spud::Core.site_name
|
6
|
-
elsif @page_title
|
7
|
-
title = @page_title + ' | ' + Spud::Core.site_name
|
8
|
-
else
|
9
|
-
title = Spud::Core.site_name
|
10
|
-
end
|
11
|
-
return content_tag :title, title
|
12
|
-
end
|
13
|
-
|
14
|
-
def current_site_name
|
15
|
-
return Spud::Core.config.site_name
|
16
|
-
end
|
17
|
-
|
18
|
-
def cache_key_for_spud_collection(collection, key:'view', cache_params:[], for_user:false)
|
19
|
-
cache_keys = [controller_name, action_name, key]
|
20
|
-
cache_keys << collection.collect(&:updated_at).max().try(:utc).try(:to_i)
|
21
|
-
if for_user
|
22
|
-
cache_keys << current_user_id
|
23
|
-
end
|
24
|
-
if cache_params.any?
|
25
|
-
cache_keys += cache_params.collect{ |cache_param| params[cache_param] || 'nil' }
|
26
|
-
end
|
27
|
-
cache_keys += collection.collect(&:id)
|
28
|
-
cache_key = cache_keys.join('/')
|
29
|
-
if cache_key.length > 250
|
30
|
-
return Digest::SHA1.hexdigest(cache_key)
|
31
|
-
else
|
32
|
-
return cache_key
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|