releaf-core 1.0.10 → 1.1.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/app/assets/javascripts/releaf/include/field.type_richtext.js +10 -2
- data/app/assets/stylesheets/releaf/layout/main.scss +5 -1
- data/app/builders/releaf/builders/page/layout_builder.rb +18 -4
- data/app/controllers/releaf/action_controller.rb +1 -0
- data/app/lib/releaf/action_controller/layout.rb +7 -0
- data/spec/builders/releaf/builders/page/layout_builder_spec.rb +72 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b20117c8f011eeb352f897d424a54c9aca0da121
|
4
|
+
data.tar.gz: f350cbf3d9c4c8428b023457e0ad705c633f9af0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe61243ff475a95c0fea93023b5a3e83f212e981c3ad2871315d411cf9f396affbb4f3bb3ca7f46ce97edf7b1aa71da887270283e7550017d80a4427da97f1fb
|
7
|
+
data.tar.gz: aa0c250c7a029ef6dbee115b458ed1135eda3ea7571c70ee13f4aad45a62fb84ba6d19a59a0a143a41929ecdaf9a9a2c1e917ca296d70575f0528bda5a13c32a
|
@@ -84,9 +84,17 @@ jQuery(function()
|
|
84
84
|
textarea.attr( 'id', 'richtext_' + String((new Date()).getTime()).replace(/\D/gi,'') );
|
85
85
|
}
|
86
86
|
|
87
|
-
if (textarea.data('attachment-upload-url'))
|
87
|
+
if (textarea.data('attachment-upload-url') || textarea.data('attachment-browse-url'))
|
88
88
|
{
|
89
|
-
|
89
|
+
if (textarea.data('attachment-browse-url'))
|
90
|
+
{
|
91
|
+
config.filebrowserBrowseUrl = textarea.data('attachment-browse-url');
|
92
|
+
}
|
93
|
+
|
94
|
+
if (textarea.data('attachment-upload-url'))
|
95
|
+
{
|
96
|
+
config.filebrowserUploadUrl = textarea.data('attachment-upload-url');
|
97
|
+
}
|
90
98
|
}
|
91
99
|
else
|
92
100
|
{
|
@@ -12,12 +12,16 @@ main
|
|
12
12
|
position: relative;
|
13
13
|
min-height: 100%;
|
14
14
|
}
|
15
|
+
body[data-layout-features~="sidebar"] > main
|
16
|
+
{
|
17
|
+
padding-left: steps(20 + 3);
|
18
|
+
}
|
15
19
|
|
16
20
|
main
|
17
21
|
{
|
18
22
|
display: block; /* as of now, not all rendering engines recognize the main element as a block */
|
19
23
|
position: relative;
|
20
|
-
padding: 0 steps(3) steps(4) steps(
|
24
|
+
padding: 0 steps(3) steps(4) steps(3);
|
21
25
|
z-index: 1;
|
22
26
|
|
23
27
|
.side-compact &
|
@@ -21,20 +21,30 @@ module Releaf::Builders::Page
|
|
21
21
|
|
22
22
|
def body
|
23
23
|
tag(:body, body_atttributes) do
|
24
|
-
|
24
|
+
safe_join{ body_content_blocks{ yield } }
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
def body_atttributes
|
29
|
-
{class: body_classes, "data-settings-path" => settings_path}
|
29
|
+
{class: body_classes, "data-settings-path" => settings_path, "data-layout-features" => features.join(" ")}
|
30
30
|
end
|
31
31
|
|
32
32
|
def settings_path
|
33
33
|
url_for(action: "store_settings", controller: "/releaf/root", only_path: true)
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
|
36
|
+
def feature_available?(feature)
|
37
|
+
features.include? feature
|
38
|
+
end
|
39
|
+
|
40
|
+
def body_content_blocks
|
41
|
+
parts = []
|
42
|
+
parts << header if feature_available?(:header)
|
43
|
+
parts << menu if feature_available?(:sidebar)
|
44
|
+
parts << tag(:main, id: :main){ yield } if feature_available?(:main)
|
45
|
+
parts << notifications
|
46
|
+
parts << assets(:javascripts, :javascript_include_tag)
|
47
|
+
parts
|
38
48
|
end
|
39
49
|
|
40
50
|
def notifications
|
@@ -57,6 +67,10 @@ module Releaf::Builders::Page
|
|
57
67
|
Releaf::Builders::Page::MenuBuilder
|
58
68
|
end
|
59
69
|
|
70
|
+
def features
|
71
|
+
controller.layout_features
|
72
|
+
end
|
73
|
+
|
60
74
|
def assets(type, tag_method)
|
61
75
|
safe_join do
|
62
76
|
send(type).collect do |asset|
|
@@ -13,6 +13,7 @@ class Releaf::ActionController < ActionController::Base
|
|
13
13
|
include Releaf::ActionController::Breadcrumbs
|
14
14
|
include Releaf::ActionController::RichtextAttachments
|
15
15
|
include Releaf::ActionController::Views
|
16
|
+
include Releaf::ActionController::Layout
|
16
17
|
include Releaf::Responders
|
17
18
|
|
18
19
|
helper_method :controller_scope_name, :page_title
|
@@ -47,6 +47,14 @@ describe Releaf::Builders::Page::LayoutBuilder, type: :class do
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
+
describe "#features" do
|
51
|
+
it "returns controller layout features" do
|
52
|
+
allow(subject).to receive(:controller).and_return(NewRolesController.new)
|
53
|
+
allow(subject.controller).to receive(:layout_features).and_return([:a, :c])
|
54
|
+
expect(subject.features).to eq([:a, :c])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
50
58
|
describe "#header_builder" do
|
51
59
|
it "returns `Releaf::Builders::Page::HeaderBuilder` class" do
|
52
60
|
expect(subject.header_builder).to eq(Releaf::Builders::Page::HeaderBuilder)
|
@@ -59,6 +67,20 @@ describe Releaf::Builders::Page::LayoutBuilder, type: :class do
|
|
59
67
|
end
|
60
68
|
end
|
61
69
|
|
70
|
+
describe "#feature_available?" do
|
71
|
+
before do
|
72
|
+
allow(subject).to receive(:features).and_return([:a, :b])
|
73
|
+
end
|
74
|
+
|
75
|
+
it "returns true when feature is available" do
|
76
|
+
expect(subject.feature_available?(:a)).to be true
|
77
|
+
end
|
78
|
+
|
79
|
+
it "returns false when feature is not available" do
|
80
|
+
expect(subject.feature_available?(:c)).to be false
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
62
84
|
describe "#stylesheets" do
|
63
85
|
it "returns stylesheets from assets resolver for given controller" do
|
64
86
|
allow(subject).to receive(:assets_resolver).and_return(DummyAssetsResolver)
|
@@ -111,10 +133,52 @@ describe Releaf::Builders::Page::LayoutBuilder, type: :class do
|
|
111
133
|
|
112
134
|
describe "#body" do
|
113
135
|
it "returns body with body attributes and" do
|
114
|
-
allow(subject).to receive(:assets).with(:javascripts, :javascript_include_tag).and_return("_assets_")
|
115
136
|
allow(subject).to receive(:body_atttributes).and_return(class: ["xx", "y"], id: "121212")
|
116
|
-
allow(subject).to receive(:
|
117
|
-
|
137
|
+
allow(subject).to receive(:body_content_blocks){|*args, &block| expect(block.call).to eq("x") }
|
138
|
+
.and_return(["a<b>".html_safe, "b<i>", "c<d>".html_safe])
|
139
|
+
expect(subject.body{ "x" }).to eq("<body class=\"xx y\" id=\"121212\">a<b>b<i>c<d></body>")
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
#parts = []
|
144
|
+
#parts << header if feature_available?(:header)
|
145
|
+
#parts << menu if feature_available?(:sidebar)
|
146
|
+
#parts << tag(:main, id: "main"){ yield } if feature_available?(:main)
|
147
|
+
#parts << notifications
|
148
|
+
#parts << assets(:javascripts, :javascript_include_tag)
|
149
|
+
#parts
|
150
|
+
|
151
|
+
|
152
|
+
describe "#body_content_blocks" do
|
153
|
+
before do
|
154
|
+
allow(subject).to receive(:feature_available?).with(:header).and_return(true)
|
155
|
+
allow(subject).to receive(:feature_available?).with(:sidebar).and_return(true)
|
156
|
+
allow(subject).to receive(:feature_available?).with(:main).and_return(true)
|
157
|
+
|
158
|
+
allow(subject).to receive(:assets).with(:javascripts, :javascript_include_tag).and_return("_assets_")
|
159
|
+
allow(subject).to receive(:header).and_return("_header_")
|
160
|
+
allow(subject).to receive(:menu).and_return("_menu_")
|
161
|
+
allow(subject).to receive(:notifications).and_return("_notifications_")
|
162
|
+
allow(subject).to receive(:tag).with(:main, id: :main){|*args, &block| expect(block.call).to eq("x") }.and_return("body content")
|
163
|
+
end
|
164
|
+
|
165
|
+
it "returns body with body attributes and" do
|
166
|
+
expect(subject.body_content_blocks{ "x" }).to eq(["_header_", "_menu_", "body content", "_notifications_", "_assets_"])
|
167
|
+
end
|
168
|
+
|
169
|
+
it "skips header when header feature not available" do
|
170
|
+
allow(subject).to receive(:feature_available?).with(:header).and_return(false)
|
171
|
+
expect(subject.body_content_blocks{ "x" }).to eq(["_menu_", "body content", "_notifications_", "_assets_"])
|
172
|
+
end
|
173
|
+
|
174
|
+
it "skips menu when sidebar feature not available" do
|
175
|
+
allow(subject).to receive(:feature_available?).with(:sidebar).and_return(false)
|
176
|
+
expect(subject.body_content_blocks{ "x" }).to eq(["_header_", "body content", "_notifications_", "_assets_"])
|
177
|
+
end
|
178
|
+
|
179
|
+
it "skips main conrtent when main feature not available" do
|
180
|
+
allow(subject).to receive(:feature_available?).with(:main).and_return(false)
|
181
|
+
expect(subject.body_content_blocks{ "x" }).to eq(["_header_", "_menu_", "_notifications_", "_assets_"])
|
118
182
|
end
|
119
183
|
end
|
120
184
|
|
@@ -134,10 +198,13 @@ describe Releaf::Builders::Page::LayoutBuilder, type: :class do
|
|
134
198
|
end
|
135
199
|
|
136
200
|
describe "#body_atttributes" do
|
137
|
-
it "returns hash with classes and data-
|
201
|
+
it "returns hash with classes, data-settings-path and data-layout-features" do
|
202
|
+
allow(subject).to receive(:features).and_return([:top, :bottom])
|
138
203
|
allow(subject).to receive(:controller_body_classes).and_return(["a", "b"])
|
139
204
|
allow(subject).to receive(:settings_path).and_return("/xxx/sett")
|
140
|
-
expect(subject.body_atttributes).to eq(class: ["application-dummy", "a", "b"],
|
205
|
+
expect(subject.body_atttributes).to eq(class: ["application-dummy", "a", "b"],
|
206
|
+
"data-settings-path" => "/xxx/sett",
|
207
|
+
"data-layout-features" => "top bottom")
|
141
208
|
end
|
142
209
|
end
|
143
210
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: releaf-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CubeSystems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -395,6 +395,7 @@ files:
|
|
395
395
|
- app/lib/releaf/action_controller/breadcrumbs.rb
|
396
396
|
- app/lib/releaf/action_controller/builders.rb
|
397
397
|
- app/lib/releaf/action_controller/features.rb
|
398
|
+
- app/lib/releaf/action_controller/layout.rb
|
398
399
|
- app/lib/releaf/action_controller/notifications.rb
|
399
400
|
- app/lib/releaf/action_controller/resources.rb
|
400
401
|
- app/lib/releaf/action_controller/richtext_attachments.rb
|