rooftop-rails-extras 0.0.3 → 0.2.0
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 +7 -0
- data/app/controllers/concerns/rooftop/rails/extras/contact_form_handler.rb +5 -1
- data/app/helpers/rooftop/rails/extras/navigation_helper.rb +12 -4
- data/app/models/concerns/rooftop/rails/extras/resolved_children.rb +1 -1
- data/app/models/{concerns/rooftop → rooftop}/rails/extras/contact_form.rb +7 -15
- data/lib/rooftop/rails/extras/version.rb +1 -1
- data/rooftop-rails-extras.gemspec +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 146aac62fdbc7ca8d90c1751b3ea0677c50d267e
|
4
|
+
data.tar.gz: 476df8a7cd38c68d0b1b71d748076ab4c813fd7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 564b6903a2805f46de117e36ce67a7779119aa604e263c0602e65c6f462d07f99faaf8aa0f0d192e8fc56c952c36a1c6ad61e1ca1f1945bacf19670606439f3c
|
7
|
+
data.tar.gz: cb430ca435d51dbf74e181091a67c4b8d6afe61fa4890bf60f71ca043d25f41cf251d3cbd6a7a3c5062827b7870ebd223c21faebc79a2a132ce1a1d34fbadce0
|
data/README.md
CHANGED
@@ -30,6 +30,12 @@ class SomePostType
|
|
30
30
|
end
|
31
31
|
```
|
32
32
|
|
33
|
+
Then doing a search is as simple as:
|
34
|
+
|
35
|
+
```
|
36
|
+
SomePostType.search("your string") #will return a collection of matching objects.
|
37
|
+
```
|
38
|
+
|
33
39
|
## Contact form handling
|
34
40
|
Almost every website we build needs a simple mail handler. Extending the [mail_form gem](https://github.com/plataformatec/mail_form), we've added a way to handle these with minimal fuss. Some assumptions are made in the name of expedience; if you need more than this, you probably need to use `mail_form` directly.
|
35
41
|
|
@@ -49,6 +55,7 @@ class ContactForm < Rooftop::Rails::Extras::ContactForm #you can call your class
|
|
49
55
|
}
|
50
56
|
self.to = "the email you want to send the contact messages to"
|
51
57
|
self.from = "the email from which you want to send the messages"
|
58
|
+
self.setup! #you need to call setup! here because there's no elegant way to call it automatically in the parent class.
|
52
59
|
end
|
53
60
|
```
|
54
61
|
|
@@ -38,7 +38,11 @@ module Rooftop
|
|
38
38
|
|
39
39
|
private
|
40
40
|
def contact_form_params
|
41
|
-
params.
|
41
|
+
# Sometimes we might want to pass params into this which are arrays from e.g. checkboxes. So we allow the keys from the form as syms and also as hashes
|
42
|
+
permitted_keys = [self.class.contact_form.fields.keys, self.class.contact_form.fields.keys.inject({}) {|h,k| h[k] = []; h }]
|
43
|
+
self.class.contact_form.fields.keys
|
44
|
+
params.require(self.class.contact_form.to_s.underscore.to_sym).permit(*permitted_keys)
|
45
|
+
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end
|
@@ -10,10 +10,10 @@ module Rooftop
|
|
10
10
|
}.merge(opts)
|
11
11
|
raise ArgumentError, "#{entity.class} isn't a nested class" unless entity.respond_to?(:resolved_children)
|
12
12
|
raise ArgumentError, "You passed a current #{entity.class.to_s.downcase} which isn't a #{entity.class} object" unless (default_opts[:current].nil? || default_opts[:current].is_a?(entity.class))
|
13
|
-
|
14
|
-
|
13
|
+
resolved_children = entity.resolved_children
|
14
|
+
if resolved_children.any?
|
15
15
|
content_tag(:ul, class: default_opts[:class]) do
|
16
|
-
items =
|
16
|
+
items = resolved_children.collect do |child|
|
17
17
|
subnavigation_item_for(child, default_opts)
|
18
18
|
end
|
19
19
|
items.join.html_safe
|
@@ -41,6 +41,10 @@ module Rooftop
|
|
41
41
|
}.merge(opts)
|
42
42
|
item_path = path_for_menu_item(item)
|
43
43
|
item_class = path_matches?(item_path) ? default_opts[:current_class] : ""
|
44
|
+
# add the status into the item class
|
45
|
+
if item.respond_to?(:status)
|
46
|
+
item_class += " status-#{item.status}"
|
47
|
+
end
|
44
48
|
content_tag :li, class: item_class do
|
45
49
|
link = content_tag :a, href: item_path do
|
46
50
|
item.title.html_safe
|
@@ -86,6 +90,10 @@ module Rooftop
|
|
86
90
|
list_opts = {}
|
87
91
|
opts.reverse_merge!({level: 1})
|
88
92
|
list_opts[:class] = opts[:current_class] if opts[:current].present? && opts[:current].id == entity.id
|
93
|
+
# add the status if the item as a class
|
94
|
+
if entity.respond_to?(:status)
|
95
|
+
list_opts[:class] += " status-#{entity.status}"
|
96
|
+
end
|
89
97
|
# The link to the entity
|
90
98
|
content_tag :li, list_opts do
|
91
99
|
|
@@ -97,7 +105,7 @@ module Rooftop
|
|
97
105
|
|
98
106
|
# Nested ul for children if necessary
|
99
107
|
if opts[:current].present? && (opts[:current].ancestors.collect(&:id).include?(entity.id) || opts[:current].id == entity.id)
|
100
|
-
children = entity.class.where(post_parent: entity.id)
|
108
|
+
children = entity.class.where(post_parent: entity.id, orderby: :menu_order, order: :asc)
|
101
109
|
if children.any?
|
102
110
|
child_links = content_tag :ul, class: "subnavigation-level-#{opts[:level]}" do
|
103
111
|
items = children.collect do |child|
|
@@ -12,24 +12,16 @@ module Rooftop
|
|
12
12
|
message: :text_area
|
13
13
|
}
|
14
14
|
|
15
|
-
def self.
|
16
|
-
(
|
17
|
-
|
15
|
+
def self.setup!
|
16
|
+
(self.fields || DEFAULT_FIELDS).keys.each do |field|
|
17
|
+
self.send(:attribute,field, {validate: true})
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
self.subject ||= "Contact form message"
|
21
|
+
self.to ||= "change.me@#{self.to_s.underscore}"
|
22
|
+
self.from ||= "change.me@#{self.to_s.underscore}"
|
23
|
+
self.headers ||= {}
|
24
24
|
end
|
25
|
-
#
|
26
|
-
# attribute :salutation
|
27
|
-
# attribute :first_name, validate: true
|
28
|
-
# attribute :last_name, validate: true
|
29
|
-
# attribute :email, validate: true
|
30
|
-
# attribute :phone
|
31
|
-
# attribute :message, validate: true
|
32
|
-
# attribute :nickname, captcha: true
|
33
25
|
|
34
26
|
# Declare the e-mail headers. It accepts anything the mail method
|
35
27
|
# in ActionMailer accepts.
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
|
24
24
|
spec.add_dependency 'require_all', '~> 1.3'
|
25
|
-
spec.add_dependency 'rooftop-rails', '0.0
|
25
|
+
spec.add_dependency 'rooftop-rails', '~>0.1.0'
|
26
26
|
spec.add_dependency 'mail_form', '~> 1.5'
|
27
27
|
|
28
28
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rooftop-rails-extras
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ed Jones
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: rooftop-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0
|
61
|
+
version: 0.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.0
|
68
|
+
version: 0.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mail_form
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,10 +95,10 @@ files:
|
|
95
95
|
- app/controllers/concerns/rooftop/rails/extras/contact_form_handler.rb
|
96
96
|
- app/helpers/rooftop/rails/extras/navigation_helper.rb
|
97
97
|
- app/helpers/rooftop/rails/extras/related_fields_helper.rb
|
98
|
-
- app/models/concerns/rooftop/rails/extras/contact_form.rb
|
99
98
|
- app/models/concerns/rooftop/rails/extras/page_redirect.rb
|
100
99
|
- app/models/concerns/rooftop/rails/extras/resolved_children.rb
|
101
100
|
- app/models/concerns/rooftop/rails/extras/resource_search.rb
|
101
|
+
- app/models/rooftop/rails/extras/contact_form.rb
|
102
102
|
- lib/generators/rooftop/extras_generator.rb
|
103
103
|
- lib/generators/rooftop/page_generator.rb
|
104
104
|
- lib/generators/rooftop/pages_controller_generator.rb
|