cmor_core_frontend 0.0.26.pre → 0.0.27.pre
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/app/view_helpers/cmor/core/frontend/breadcrumbs_view_helper.rb +93 -0
- data/app/views/cmor/core/frontend/breadcrumbs_view_helper/_render_breadcrumbs.html.haml +8 -0
- data/config/locales/de.yml +4 -0
- data/config/locales/en.yml +4 -0
- data/lib/cmor/core/frontend/configuration.rb +4 -0
- data/lib/cmor_core_frontend.rb +1 -0
- data/lib/generators/cmor/core/frontend/install/templates/initializer.rb +5 -0
- metadata +22 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1e4f4e3f4aa442e8fab43e3626c41af40cec348a936bf86dfce977742933868
|
4
|
+
data.tar.gz: b7bf673dafc6b7ab82dd44eaab5257d1ce4c35063140098929bc3a3d51502008
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e3ae62fe59ac4f9fdef0613738d7ea7eb126edccfac29a00e8b3e388a3108faff27693b1fd1c3309241f3835a84c405b8061b7aada46cb789f9c014f8e3b104
|
7
|
+
data.tar.gz: 13064acd5aa035a9b65569cc937449ad0f3f291fb69c0d09a2edbabe3f8910680be32f44b1c29c14bb91d73dbfc90d9b146f2c6b87fcecca03ecb5c1843c9c47
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Core
|
3
|
+
module Frontend
|
4
|
+
# Usage:
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# # app/controllers/application_controller.rb
|
8
|
+
# class ApplicationController < ActionController::Base
|
9
|
+
# view_helper Cmor::Core::Frontend::BreadcrumbsViewHelper, as: :breadcrumbs_helper
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
class BreadcrumbsViewHelper < Rao::ViewHelper::Base
|
13
|
+
# Usage:
|
14
|
+
#
|
15
|
+
# # app/views/layouts/application.html.erb
|
16
|
+
# %html
|
17
|
+
# %body
|
18
|
+
# = breadcrumbs_helper(self).render_breadcrumbs
|
19
|
+
#
|
20
|
+
def render_breadcrumbs
|
21
|
+
breadcrumbs = [].tap do |b|
|
22
|
+
# Add breadcrumb to home page
|
23
|
+
b.push(Breadcrumb.new(label: t('.home'), url: c.main_app.root_path))
|
24
|
+
|
25
|
+
# Are we showing a cms page?
|
26
|
+
if c.controller.class.name == 'Cmor::Cms::PageController' && c.action_name == 'respond' && c.params[:page] != 'home'
|
27
|
+
# Add breadcrumb for this page
|
28
|
+
b.push(Breadcrumb.new(label: c.content_for(:title), url: c.url_for()))
|
29
|
+
end
|
30
|
+
|
31
|
+
# Are we inside a resources controller?
|
32
|
+
if c.controller.class.respond_to?(:resource_class)
|
33
|
+
# Add a breadrumb for collection page
|
34
|
+
b.push(Breadcrumb.new(label: c.controller.class.resource_class.model_name.human(count: :other), url: c.url_for(action: :index, page: nil)))
|
35
|
+
|
36
|
+
# Are we showing a single resource?
|
37
|
+
if r = c.instance_variable_get(:@resource).presence
|
38
|
+
# Is it persisted?
|
39
|
+
if r.persisted?
|
40
|
+
# Add breadcrumb to this specific resource
|
41
|
+
b.push(Breadcrumb.new(label: label_for(r), url: c.url_for(action: :show, id: r.to_param)))
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Are we showing the collection (index) page?
|
46
|
+
if r = c.instance_variable_get(:@collection).presence
|
47
|
+
# Are we paginating?
|
48
|
+
if c.params.has_key?(:page)
|
49
|
+
# Ass breadcrumb for this page
|
50
|
+
b.push(Breadcrumb.new(label: c.controller.class.resource_class.model_name.human(count: :other), url: c.url_for()))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
breadcrumbs.last.url = nil
|
56
|
+
render breadcrumbs: breadcrumbs
|
57
|
+
end
|
58
|
+
|
59
|
+
def t(identifier, options = {})
|
60
|
+
if identifier.start_with?('.')
|
61
|
+
prefix = self.class.name.underscore
|
62
|
+
caller_method = caller[0].split(' ').last.gsub("'", '')
|
63
|
+
I18n.t("#{prefix}.#{caller_method}.#{identifier}", options)
|
64
|
+
else
|
65
|
+
I18n.t(identifier, options)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class Breadcrumb
|
70
|
+
extend ActiveModel::Model
|
71
|
+
|
72
|
+
attr_accessor :label, :url, :link_html_options, :li_html_options
|
73
|
+
|
74
|
+
def initialize(attrs)
|
75
|
+
attrs.reverse_merge!(link_html_options: {}, li_html_options: {})
|
76
|
+
attrs.each do |k, v|
|
77
|
+
self.send("#{k}=", v)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def label_for(resource)
|
85
|
+
Cmor::Core::Frontend::Configuration.resource_label_methods.each do |method_name|
|
86
|
+
next unless resource.respond_to?(method_name)
|
87
|
+
return resource.send(method_name)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/cmor_core_frontend.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmor_core_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.27.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Vasquez Angel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.
|
33
|
+
version: 0.0.27.pre
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0.
|
40
|
+
version: 0.0.27.pre
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -290,6 +290,20 @@ dependencies:
|
|
290
290
|
- - ">="
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: rao-view_helper
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
300
|
+
type: :runtime
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - ">="
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '0'
|
293
307
|
description: Cmor::Core::Frontend Module.
|
294
308
|
email:
|
295
309
|
- roberto@vasquez-angel.de
|
@@ -299,6 +313,10 @@ extra_rdoc_files: []
|
|
299
313
|
files:
|
300
314
|
- MIT-LICENSE
|
301
315
|
- Rakefile
|
316
|
+
- app/view_helpers/cmor/core/frontend/breadcrumbs_view_helper.rb
|
317
|
+
- app/views/cmor/core/frontend/breadcrumbs_view_helper/_render_breadcrumbs.html.haml
|
318
|
+
- config/locales/de.yml
|
319
|
+
- config/locales/en.yml
|
302
320
|
- lib/cmor/core/frontend.rb
|
303
321
|
- lib/cmor/core/frontend/configuration.rb
|
304
322
|
- lib/cmor/core/frontend/engine.rb
|