sibu 1.0.9 → 1.0.14
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/controllers/sibu/sites_controller.rb +5 -5
- data/app/helpers/sibu/pages_helper.rb +42 -14
- data/app/models/sibu/dynamic_style.rb +2 -2
- data/app/views/layouts/sibu/edit_content.html.erb +7 -3
- data/app/views/sibu/pages/edit_element.js.erb +3 -3
- data/lib/sibu/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 269f3881e2c48664a07b538764e527e174a8ae39
|
4
|
+
data.tar.gz: 8ec378a884b7d26ff5b400241cd6333ac0177aa1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db8306822fca5383613540b03d8e2e26ba0a511aa4e0c5ae62e30a6ada43778a442551cb8b9a1b11a9d6c79417ec60d24ddb53750acafd7fa0f11cd92419402e
|
7
|
+
data.tar.gz: 59f03f99a1920ae2a406ae657a043e8f216c952514ff3e8a4488023ae9a1bf8b7da89d81782821c5776780ef9fb54c12604b07302203c2242fd25c8f3b9e32ab
|
@@ -38,8 +38,8 @@ module Sibu
|
|
38
38
|
|
39
39
|
def update
|
40
40
|
if @site.update(site_params)
|
41
|
-
if conf[:custom_styles]
|
42
|
-
generate_styles(@site)
|
41
|
+
if conf[:custom_styles]
|
42
|
+
generate_styles(@site, @site.previous_changes.has_key?(:custom_data))
|
43
43
|
end
|
44
44
|
if @site.previous_changes.has_key?(:version)
|
45
45
|
@site.update_paths
|
@@ -61,7 +61,7 @@ module Sibu
|
|
61
61
|
if new_site.save
|
62
62
|
if conf[:custom_styles]
|
63
63
|
generate_styles(@site)
|
64
|
-
generate_styles(new_site)
|
64
|
+
generate_styles(new_site, true)
|
65
65
|
end
|
66
66
|
redirect_to sites_url, notice: "Le site a bien été copié."
|
67
67
|
else
|
@@ -81,8 +81,8 @@ module Sibu
|
|
81
81
|
params.require(:site).permit!
|
82
82
|
end
|
83
83
|
|
84
|
-
def generate_styles(site)
|
85
|
-
ds = Sibu::DynamicStyle.new(site.id)
|
84
|
+
def generate_styles(site, force_styles = false)
|
85
|
+
ds = Sibu::DynamicStyle.new(site.id, force_styles)
|
86
86
|
ds.compile
|
87
87
|
end
|
88
88
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# Note : methods defined here are included in ActionView::Base
|
1
2
|
module Sibu
|
2
3
|
module PagesHelper
|
3
4
|
include Sibu::Engine.routes.url_helpers
|
@@ -52,10 +53,11 @@ module Sibu
|
|
52
53
|
defaults = {"id" => t_id, "text" => (t == :p ? Sibu::DEFAULT_PARAGRAPH : Sibu::DEFAULT_TEXT)}
|
53
54
|
content = defaults.merge(elt.is_a?(Hash) ? elt : (select_element(elt) || {}))
|
54
55
|
html_opts = {"id" => t_id}.merge(opts.except(:repeat, :children).stringify_keys)
|
55
|
-
@sb_section
|
56
|
+
instance_variable_set("@sb_section", (instance_variable_get("@sb_section") || []) + [t_id])
|
57
|
+
Rails.logger.info("s : #{instance_variable_get("@sb_section")} - t : #{t_id} - content: #{content}")
|
56
58
|
if action_name != 'show'
|
57
59
|
html_opts.merge!({
|
58
|
-
"data-id" => @sb_section[1..-1].join('|'),
|
60
|
+
"data-id" => instance_variable_get("@sb_section")[1..-1].join('|'),
|
59
61
|
"data-type" => (t == :p ? "paragraph" : "text"),
|
60
62
|
"data-repeat" => opts.delete(:repeat),
|
61
63
|
"data-children" => opts.delete(:children)
|
@@ -74,7 +76,7 @@ module Sibu
|
|
74
76
|
html_output = content_tag(t, raw(content["text"]).html_safe, html_opts)
|
75
77
|
end
|
76
78
|
end
|
77
|
-
@sb_section
|
79
|
+
instance_variable_set("@sb_section", instance_variable_get("@sb_section")[0..-2])
|
78
80
|
html_output
|
79
81
|
end
|
80
82
|
end
|
@@ -82,18 +84,18 @@ module Sibu
|
|
82
84
|
[:div, :section, :article, :aside, :header, :footer, :nav, :main, :ul, :ol, :wrapper].each do |t|
|
83
85
|
define_method(t) do |elt, opts = {}, &block|
|
84
86
|
t_id = elt.is_a?(Hash) ? elt["id"] : elt
|
85
|
-
@sb_section
|
87
|
+
instance_variable_set("@sb_section", (instance_variable_get("@sb_section") || []) + [t_id])
|
86
88
|
html_opts = {"id" => t_id}.merge(opts.except(:repeat, :children).stringify_keys)
|
87
89
|
if action_name != 'show'
|
88
90
|
html_opts.merge!({
|
89
|
-
"data-id" => @sb_section[1..-1].join('|'),
|
91
|
+
"data-id" => instance_variable_get("@sb_section")[1..-1].join('|'),
|
90
92
|
"data-type" => "group",
|
91
93
|
"data-repeat" => opts.delete(:repeat),
|
92
94
|
"data-children" => opts.delete(:children)
|
93
95
|
})
|
94
96
|
end
|
95
97
|
html_output = t == :wrapper ? capture(current_elt(elt), nested_elements(t_id), &block) : content_tag(t, capture(current_elt(elt), nested_elements(t_id), &block), html_opts)
|
96
|
-
@sb_section
|
98
|
+
instance_variable_set("@sb_section", instance_variable_get("@sb_section")[0..-2])
|
97
99
|
html_output
|
98
100
|
end
|
99
101
|
end
|
@@ -118,8 +120,15 @@ module Sibu
|
|
118
120
|
nested_elts.map {|e| e.merge({"data-id" => join_tokens(element_id_tokens[1..-1], e['id'])})}
|
119
121
|
end
|
120
122
|
|
123
|
+
def each_element(elt_or_id)
|
124
|
+
element_id = elt_id(elt_or_id)
|
125
|
+
@sb_section = (@sb_section + element_id.split("|")).uniq unless element_id.blank?
|
126
|
+
(@sb_entity.elements(*@sb_section) || []).map {|el| yield(el)}
|
127
|
+
@sb_section -= [element_id] unless element_id.blank?
|
128
|
+
end
|
129
|
+
|
121
130
|
def select_element(id)
|
122
|
-
@sb_entity.element(
|
131
|
+
@sb_entity.element(*instance_variable_get("@sb_section"), id)
|
123
132
|
end
|
124
133
|
|
125
134
|
def elements(id = nil)
|
@@ -146,6 +155,22 @@ module Sibu
|
|
146
155
|
html_output
|
147
156
|
end
|
148
157
|
|
158
|
+
def svg_image(elt, opts = {})
|
159
|
+
size = opts.delete(:size)
|
160
|
+
t_id = elt.is_a?(Hash) ? elt["id"] : elt
|
161
|
+
defaults = {"id" => t_id, "xlink:href" => Sibu::DEFAULT_IMG}
|
162
|
+
content = defaults.merge((elt.is_a?(Hash) ? elt : (select_element(elt) || {})).transform_keys {|k| k == 'src' ? 'xlink:href' : k})
|
163
|
+
@sb_section = (@sb_section || []) + [t_id]
|
164
|
+
if action_name == 'show'
|
165
|
+
content["xlink:href"] = ("/#{conf[:deployment_path]}" + content["xlink:href"]) if @online && conf[:deployment_path]
|
166
|
+
else
|
167
|
+
opts.merge!({data: {id: @sb_section[1..-1].join('|'), type: "media", repeat: false, size: size}})
|
168
|
+
end
|
169
|
+
html_output = content_tag(:image, nil, content.except("id").merge(opts.stringify_keys) {|k, old, new| k == 'class' ? [old, new].join(' ') : new})
|
170
|
+
@sb_section -= [t_id]
|
171
|
+
html_output
|
172
|
+
end
|
173
|
+
|
149
174
|
def grp(elt, opts = {}, &block)
|
150
175
|
wrapper = opts.delete(:wrapper) || :div
|
151
176
|
repeat = opts.delete(:repeat)
|
@@ -242,16 +267,17 @@ module Sibu
|
|
242
267
|
|
243
268
|
alias site sb_site
|
244
269
|
|
245
|
-
def render_page_section(s)
|
270
|
+
def render_page_section(s, set_id = false)
|
246
271
|
@sb_section = [s['id']]
|
247
272
|
@sb_entity = @page
|
248
273
|
render partial: "shared/#{@site.section_template(s)}",
|
249
|
-
locals: {sibu: self, sibu_section: s, sibu_attrs: sibu_attributes(s).html_safe}
|
274
|
+
locals: {sibu: self, sibu_section: s, sibu_attrs: sibu_attributes(s, set_id).html_safe}
|
250
275
|
end
|
251
276
|
|
252
277
|
# Page sections attrs
|
253
|
-
def sibu_attributes(section)
|
254
|
-
|
278
|
+
def sibu_attributes(section, set_id)
|
279
|
+
attrs = set_id ? ('id="' + section['id'] + '" ') : ''
|
280
|
+
attrs + (action_name != 'show' ? ('data-sb-id="' + section['id'] + '" data-sb-entity="page"') : '')
|
255
281
|
end
|
256
282
|
|
257
283
|
# Site sections attrs
|
@@ -289,8 +315,9 @@ module Sibu
|
|
289
315
|
content = defaults.merge(link_elt)
|
290
316
|
val = content.delete("value") || ""
|
291
317
|
text = content.delete("text")
|
292
|
-
@sb_section
|
293
|
-
|
318
|
+
instance_variable_set("@sb_section", (instance_variable_get("@sb_section") || []) + [t_id])
|
319
|
+
# @sb_section = (@sb_section || []) + [t_id]
|
320
|
+
html_opts.merge!({data: {id: instance_variable_get("@sb_section")[1..-1].join('|'), type: "link", repeat: repeat, children: children}}) if action_name != 'show'
|
294
321
|
if val.to_s.start_with?('http')
|
295
322
|
content["href"] = val
|
296
323
|
elsif val.to_s.start_with?('#')
|
@@ -308,7 +335,8 @@ module Sibu
|
|
308
335
|
else
|
309
336
|
html_output = content_tag(:a, raw(text), content.merge(html_opts).except("elements"))
|
310
337
|
end
|
311
|
-
@sb_section
|
338
|
+
instance_variable_set("@sb_section", instance_variable_get("@sb_section") - [t_id])
|
339
|
+
# @sb_section -= [t_id]
|
312
340
|
html_output
|
313
341
|
end
|
314
342
|
|
@@ -3,9 +3,9 @@ module Sibu
|
|
3
3
|
|
4
4
|
attr_reader :site, :body, :env, :filename, :scss_file, :styles_changed
|
5
5
|
|
6
|
-
def initialize(site_id)
|
6
|
+
def initialize(site_id, force_styles = false)
|
7
7
|
@site = Sibu::Site.find(site_id)
|
8
|
-
@styles_changed = styles_changed?(@site.style_url)
|
8
|
+
@styles_changed = @site.style.nil? || force_styles || styles_changed?(@site.style_url)
|
9
9
|
if @styles_changed
|
10
10
|
@filename = "#{site_id}_#{Time.current.to_i}"
|
11
11
|
@scss_file = File.new(scss_file_path, 'w')
|
@@ -14,6 +14,12 @@
|
|
14
14
|
<%= javascript_include_tag "#{conf[:javascript]}-edit" %>
|
15
15
|
<%= csrf_meta_tags %>
|
16
16
|
<%= yield :styles %>
|
17
|
+
<% if @site && !@site.header_code.blank? %>
|
18
|
+
<%= raw @site.header_code %>
|
19
|
+
<% end %>
|
20
|
+
<% if @page && !@page.header_code.blank? %>
|
21
|
+
<%= raw @page.header_code %>
|
22
|
+
<% end %>
|
17
23
|
</head>
|
18
24
|
<body class="sibu_edit_content">
|
19
25
|
<% [:top_panel, :side_panel, :content_panel, :bottom_panel].each do |panel| %>
|
@@ -65,7 +71,7 @@
|
|
65
71
|
rightOverlay.style.height = height + "px";
|
66
72
|
rightOverlay.style.left = left + width + "px";
|
67
73
|
rightOverlay.style.top = top + "px";
|
68
|
-
editModeActions.style.top = (top
|
74
|
+
editModeActions.style.top = (top + height) + "px";
|
69
75
|
editModeActions.style.left = left + "px";
|
70
76
|
editModeActions.style.width = width + "px";
|
71
77
|
editMode.querySelector("#edit_section_msg").innerText = "Modifier la section";
|
@@ -79,8 +85,6 @@
|
|
79
85
|
editMode.querySelector("#new_section_after").style.display = "block";
|
80
86
|
editMode.querySelector("#delete_section").style.display = "block";
|
81
87
|
}
|
82
|
-
var topPadding = top <= 120 ? 60 : 120;
|
83
|
-
window.scrollTo(0, top - topPadding);
|
84
88
|
section.classList.add('sb-editing');
|
85
89
|
initInnerOverlays(section);
|
86
90
|
document.querySelector("#edit_overlays").innerHTML = "";
|
@@ -49,11 +49,11 @@ setTimeout(function() {
|
|
49
49
|
editPanel.querySelector('.sibu_image.selected').classList.remove('selected');
|
50
50
|
}
|
51
51
|
evt.currentTarget.classList.add('selected');
|
52
|
-
var imgElt = evt.currentTarget.querySelector("img");
|
53
|
-
|
52
|
+
var imgElt = evt.currentTarget.querySelector("img"), eltSrc = document.querySelector("#element_src");
|
53
|
+
eltSrc.value = imgElt.getAttribute("data-src");
|
54
54
|
document.querySelector("#element_alt").value = imgElt.getAttribute("data-alt");
|
55
55
|
editPanel.querySelector(".sibu_center").innerHTML =
|
56
|
-
'<img src="' +
|
56
|
+
'<img src="' + eltSrc.value + '"/>' +
|
57
57
|
'<div id="sibu_center_pos" style="display: none;">✕</div>' +
|
58
58
|
'<div id="sibu_center_desc" style="display: none;"><em>Cliquez sur l\'image pour la recentrer sur un point donné (à utiliser lorsque l\'image est tronquée car la zone d\'affichage est trop petite)</em></div>';
|
59
59
|
if (editPanel.querySelector(".sibu_selected_image > p:first-child")) {
|
data/lib/sibu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sibu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean-Baptiste Vilain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|