effective_bootstrap 0.11.22 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24a354917ddcb9cf03b259454d6baa78e5facf958dcf349666b48ee89e6a9856
4
- data.tar.gz: aa3e2aa4f2bf0d9b9ac1821db877699c81719c66530102fbeb7bebbcd99234a7
3
+ metadata.gz: d704ce4e1eb946de08651ae3d5ab12c3fba6e7fcb420d0d0148626a023598a16
4
+ data.tar.gz: 2934e7fce86b41479c10a4b1a831a6dbab493836ea84b64327ebe2bd257bc2f3
5
5
  SHA512:
6
- metadata.gz: fc4eabbbd27ab171b3f22aa0cf1f5dfc74b76081f92aa64e437b2f0de4d71e19c1fafd7f464570e76d1c18cbc74be45fc21e5a3839850192031488063b43ed94
7
- data.tar.gz: d99041285fc605bfc124dddeb8ed8a76ee6a44fb970f53584d7e40efee66cb8268af8a1a0816d4a361afe291ea1997ccddc2d025af6ac278e2c07936f9205881
6
+ metadata.gz: 94d6919a5026511bddc02029dfc25f1ad6336f648d1dd34ebc50bca7779f220703ed14655157f0b46acbe5840185a84fc085c104f1ebbdb8d250314ccdc3020f
7
+ data.tar.gz: 35423d971df78886a1d7887b001e6c6d4bafd5ae62ef9bcab4c51f96b14f942f60589645802df20e4a85da17e2d847ca6cdecf3f348941e48d77672c0bd0ff03
@@ -72,7 +72,7 @@ module EffectiveBootstrapHelper
72
72
  end
73
73
 
74
74
  header = opts.delete(:header)
75
- title = opts.delete(:title) || value
75
+ title = opts.delete(:title) || effective_bootstrap_human_name(value)
76
76
 
77
77
  content_tag(:div, merge_class_key(opts, 'card mb-4')) do
78
78
  header = content_tag(:div, header, class: 'card-header') if header.present?
@@ -311,7 +311,13 @@ module EffectiveBootstrapHelper
311
311
  # = nav_link_to 'Account Settings', user_settings_path
312
312
  # = nav_divider
313
313
  # = nav_link_to 'Sign In', new_user_session_path, method: :delete
314
- def nav_link_to(label, path, opts = {})
314
+ #
315
+ # If you pass a class, it will authorize and display that class if you have :index access
316
+ def nav_link_to(resource, path, opts = {})
317
+ return if resource.kind_of?(Class) && !EffectiveResources.authorized?(self, :index, resource)
318
+
319
+ label = effective_bootstrap_human_name(resource, plural: true, prefer_model_name: true)
320
+
315
321
  if @_nav_mode == :dropdown # We insert dropdown-items
316
322
  return link_to(label, path, merge_class_key(opts, 'dropdown-item'))
317
323
  end
@@ -564,6 +570,8 @@ module EffectiveBootstrapHelper
564
570
  NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
565
571
 
566
572
  def tab(label, options = {}, &block)
573
+ label = effective_bootstrap_human_name(label, prefer_model_name: true)
574
+
567
575
  (@_tab_labels.push(label) and return) if @_tab_mode == :validate
568
576
 
569
577
  controls = options.delete(:controls) || label.to_s.parameterize.gsub('_', '-')
@@ -622,6 +630,18 @@ module EffectiveBootstrapHelper
622
630
  end
623
631
  end
624
632
 
633
+ def effective_bootstrap_human_name(resource, plural: false, prefer_model_name: false)
634
+ return resource.to_s unless resource.respond_to?(:model_name)
635
+
636
+ if resource.kind_of?(ActiveRecord::Relation) || plural
637
+ ets(resource)
638
+ elsif resource.kind_of?(Class) || prefer_model_name
639
+ et(resource)
640
+ else
641
+ resource.to_s
642
+ end
643
+ end
644
+
625
645
  def effective_bootstrap_unique_id
626
646
  # Set the first unique value
627
647
  @_effective_bootstrap_unique_id ||= Time.zone.now.to_i
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '0.11.22'.freeze
2
+ VERSION = '0.12.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.22
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-31 00:00:00.000000000 Z
11
+ date: 2023-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails