sibu 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/sibu/pages_controller.rb +13 -2
- data/app/helpers/sibu/pages_helper.rb +15 -2
- data/app/models/concerns/sibu/sections_concern.rb +26 -1
- data/app/views/layouts/sibu/edit_content.html.erb +43 -2
- data/app/views/sibu/pages/_link_edit_panel.html.erb +1 -1
- data/app/views/sibu/pages/_text_edit_panel.html.erb +1 -1
- data/app/views/sibu/pages/clone_section.js.erb +10 -0
- data/app/views/sibu/pages/delete_section.js.erb +7 -0
- data/config/routes.rb +2 -0
- data/lib/sibu/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9efa54f95bf9624f3e75050cab00861a3142662b
|
4
|
+
data.tar.gz: 3d84e0bfbfeb7fefd2c8c6fd4116c3de969dc2c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11644aaa295ba8e4f3732ee52328f69384976c24670c46a937405dd2dee498564e0f4b975f8e4090bad6f359afe7f0141df1d08714bcfcb93ca5a9524290aa66
|
7
|
+
data.tar.gz: 7f4821ac37a0cc4dea26cb920843e998c3dce0518c497c261b21a2ed7e5814b79bf460df2f834fe3baf94d47fbe51eca6a01d10c315c55ff612dded668788d3b
|
@@ -2,9 +2,10 @@ require_dependency "sibu/application_controller"
|
|
2
2
|
|
3
3
|
module Sibu
|
4
4
|
class PagesController < ApplicationController
|
5
|
-
before_action :set_page, only: [:edit, :update, :destroy, :edit_element, :update_element, :edit_section
|
5
|
+
before_action :set_page, only: [:edit, :update, :destroy, :edit_element, :update_element, :edit_section,
|
6
|
+
:clone_section, :delete_section]
|
6
7
|
before_action :set_site, only: [:index, :new]
|
7
|
-
before_action :set_edit_context, only: [:edit_element, :update_element]
|
8
|
+
before_action :set_edit_context, only: [:edit_element, :update_element, :clone_section, :delete_section]
|
8
9
|
skip_before_action Rails.application.config.sibu[:auth_filter], only: [:show]
|
9
10
|
|
10
11
|
def index
|
@@ -83,6 +84,16 @@ module Sibu
|
|
83
84
|
def update_section
|
84
85
|
end
|
85
86
|
|
87
|
+
def clone_section
|
88
|
+
@section_id = params[:section_id]
|
89
|
+
@cloned = @entity.clone_section(*@section_id.split('|'))
|
90
|
+
end
|
91
|
+
|
92
|
+
def delete_section
|
93
|
+
@section_id = params[:section_id]
|
94
|
+
@deleted = @entity.delete_section(*@section_id.split('|'))
|
95
|
+
end
|
96
|
+
|
86
97
|
private
|
87
98
|
|
88
99
|
def set_page
|
@@ -47,8 +47,21 @@ module Sibu
|
|
47
47
|
def section(id, sub_id = nil, &block)
|
48
48
|
@sb_entity = @page
|
49
49
|
@sb_section = sub_id ? [id, sub_id] : [id]
|
50
|
-
"<sb-edit data-id='#{@sb_section.join('|')}' data-entity='page'>#{capture(self, &block)}</sb-edit>".html_safe
|
51
|
-
end
|
50
|
+
"<sb-edit data-id='#{@sb_section.join('|')}' data-entity='page' data-duplicate='#{!sub_id.nil?}'>#{capture(self, &block)}</sb-edit>".html_safe
|
51
|
+
end
|
52
|
+
|
53
|
+
# def site_sections(id, &block)
|
54
|
+
# @site.section(id).map {|s| s["id"]}.each do |s|
|
55
|
+
# site_section(id, sub_id, &block)
|
56
|
+
# end
|
57
|
+
# out = ''
|
58
|
+
# @sb_entity = @site
|
59
|
+
# @site.section(id).map do |s|
|
60
|
+
# @sb_section = [id, s["id"]]
|
61
|
+
# out += "<sb-edit data-id='#{@sb_section.join('|')}' data-entity='site' data-duplicate='true'>#{capture(self, &block)}</sb-edit>".html_safe
|
62
|
+
# end
|
63
|
+
# out.html_safe
|
64
|
+
# end
|
52
65
|
|
53
66
|
def site_sections(id)
|
54
67
|
@site.section(id).map {|s| s["id"]}
|
@@ -12,6 +12,7 @@ module Sibu
|
|
12
12
|
s = sections[ids[0]]
|
13
13
|
end
|
14
14
|
if s.nil?
|
15
|
+
logger.debug("init section #{ids[0]}")
|
15
16
|
s = []
|
16
17
|
self.sections[ids[0]] = s
|
17
18
|
save
|
@@ -28,6 +29,7 @@ module Sibu
|
|
28
29
|
if sub_idx
|
29
30
|
sub = s[sub_idx]
|
30
31
|
else
|
32
|
+
logger.debug("init section #{subid}")
|
31
33
|
sub = {"id" => subid, "elements" => []}
|
32
34
|
self.sections[id] << sub
|
33
35
|
save
|
@@ -37,9 +39,12 @@ module Sibu
|
|
37
39
|
|
38
40
|
def element(*ids, element_id)
|
39
41
|
elt = section(*ids).select {|e| e["id"] == element_id}.first
|
40
|
-
elt || {}
|
42
|
+
elt || {"id" => element_id}
|
41
43
|
end
|
42
44
|
|
45
|
+
# Todo : add an "elements" method
|
46
|
+
# and make section and subsection return sections
|
47
|
+
|
43
48
|
def update_section(*ids, value)
|
44
49
|
end
|
45
50
|
|
@@ -55,6 +60,26 @@ module Sibu
|
|
55
60
|
value if save
|
56
61
|
end
|
57
62
|
|
63
|
+
def clone_section(*ids)
|
64
|
+
siblings = section(ids.first)
|
65
|
+
ref_index = siblings.index {|s| s["id"] == ids.last}
|
66
|
+
new_section = siblings[ref_index].deep_dup
|
67
|
+
new_section["id"] = ids.last + '§'
|
68
|
+
siblings.insert(ref_index + 1, new_section)
|
69
|
+
save ? new_section : nil
|
70
|
+
end
|
71
|
+
|
72
|
+
def delete_section(*ids)
|
73
|
+
siblings = section(ids.first)
|
74
|
+
if siblings.length == 1
|
75
|
+
nil
|
76
|
+
else
|
77
|
+
ref_index = siblings.index {|s| s["id"] == ids.last}
|
78
|
+
siblings.delete_at(ref_index)
|
79
|
+
save
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
58
83
|
def sanitize_value(value)
|
59
84
|
unless value["text"].blank?
|
60
85
|
value["text"].gsub!(/<\/?(div|p|ul|li)>/, '')
|
@@ -25,8 +25,10 @@
|
|
25
25
|
<div class="overlay_left"></div>
|
26
26
|
<div class="overlay_bottom"></div>
|
27
27
|
<div class="edit_mode_actions">
|
28
|
-
<p>Modifier la section</p>
|
29
|
-
<button onclick="
|
28
|
+
<p id="edit_section_msg">Modifier la section</p>
|
29
|
+
<button id="clone_section" onclick="cloneSection()">Dupliquer</button>
|
30
|
+
<button id="delete_section" onclick="deleteSection()">Supprimer</button>
|
31
|
+
<button onclick="cancelEditMode()">Annuler</button>
|
30
32
|
</div>
|
31
33
|
</div>
|
32
34
|
<% end %>
|
@@ -47,13 +49,23 @@
|
|
47
49
|
var width = elt.width(), height = elt.height();
|
48
50
|
var overlay = $("#edit_mode_overlay");
|
49
51
|
var yPosition = offset.top - $(".sibu_content_panel").offset().top;
|
52
|
+
var section = elt.parents("sb-edit").first();
|
50
53
|
overlay.find(".overlay_top").css("height", yPosition);
|
51
54
|
overlay.find(".overlay_bottom").css("top", yPosition + height);
|
52
55
|
overlay.find(".overlay_left").css({"height": height, "width": offset.left, "top": yPosition});
|
53
56
|
overlay.find(".overlay_right").css({"height": height, "left": offset.left + width, "top": yPosition});
|
54
57
|
overlay.find(".edit_mode_actions").css({"top": (yPosition <= 40 ? (yPosition + height) : (yPosition - 40)), left: offset.left, width: width});
|
58
|
+
overlay.find("#edit_section_msg").text("Modifier la section");
|
55
59
|
overlay.show();
|
60
|
+
if(!section.data('duplicate')) {
|
61
|
+
overlay.find("#clone_section").hide();
|
62
|
+
overlay.find("#delete_section").hide();
|
63
|
+
} else {
|
64
|
+
overlay.find("#clone_section").show();
|
65
|
+
overlay.find("#delete_section").show();
|
66
|
+
}
|
56
67
|
window.scrollTo(0, yPosition);
|
68
|
+
section.addClass('sb-editing');
|
57
69
|
initInnerOverlays(elt);
|
58
70
|
elt.remove();
|
59
71
|
}
|
@@ -61,9 +73,38 @@
|
|
61
73
|
function cancelEditMode() {
|
62
74
|
$("#edit_mode_overlay").hide();
|
63
75
|
cancelEdit();
|
76
|
+
$("sb-edit.sb-editing").removeClass("sb-editing");
|
64
77
|
initOverlays();
|
65
78
|
}
|
66
79
|
|
80
|
+
function cloneSection() {
|
81
|
+
if (window.confirm("Dupliquer la section ?")) {
|
82
|
+
var section = $("sb-edit.sb-editing");
|
83
|
+
$.ajax({
|
84
|
+
url: "<%= clone_section_site_page_path(@site.id, @page.id) %>",
|
85
|
+
method: "POST",
|
86
|
+
data: {
|
87
|
+
section_id: section.data("id"),
|
88
|
+
entity: section.data("entity")
|
89
|
+
}
|
90
|
+
})
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
function deleteSection() {
|
95
|
+
if (window.confirm("Supprimer la section ?")) {
|
96
|
+
var section = $("sb-edit.sb-editing");
|
97
|
+
$.ajax({
|
98
|
+
url: "<%= delete_section_site_page_path(@site.id, @page.id) %>",
|
99
|
+
method: "DELETE",
|
100
|
+
data: {
|
101
|
+
section_id: section.data("id"),
|
102
|
+
entity: section.data("entity")
|
103
|
+
}
|
104
|
+
})
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
67
108
|
function cancelEdit() {
|
68
109
|
$("#edit_panel").slideUp("fast");
|
69
110
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<h2>Modifier le lien</h2>
|
2
2
|
<div id="edit_msg"></div>
|
3
|
-
<div class="
|
3
|
+
<div class="sibu_edit_form">
|
4
4
|
<%= form_tag(update_element_site_page_path(@site.id, @page.id), method: :patch, remote: true) do |f| %>
|
5
5
|
<div class="sibu_field">
|
6
6
|
<%= label_tag 'element[text]', 'Libellé' %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<h2>Modifier le texte</h2>
|
2
2
|
<div id="edit_msg"></div>
|
3
|
-
<div class="
|
3
|
+
<div class="sibu_edit_form">
|
4
4
|
<%= form_tag(update_element_site_page_path(@site.id, @page.id), method: :patch, remote: true) do |f| %>
|
5
5
|
<%= trix_editor_tag 'element[text]', '', input: 'element_text' %>
|
6
6
|
<%= hidden_field_tag 'element[id]', @element["id"] %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% if @cloned %>
|
2
|
+
var section = $(".sibu_content_panel").find("[data-id='<%= @section_id %>']").first();
|
3
|
+
var newSection = section.clone();
|
4
|
+
newSection.data("id", "<%= [@section_id.split('|')[0], @cloned["id"]].join('|') %>");
|
5
|
+
section.after(newSection);
|
6
|
+
cancelEditMode();
|
7
|
+
<% else %>
|
8
|
+
$("#edit_section_msg").html("<p class='sibu_alert'>Une erreur s'est produite lors de l'enregistrement.</p>");
|
9
|
+
<% end %>
|
10
|
+
|
data/config/routes.rb
CHANGED
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: 0.1.
|
4
|
+
version: 0.1.11
|
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: 2018-02-
|
11
|
+
date: 2018-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -151,6 +151,8 @@ files:
|
|
151
151
|
- app/views/sibu/pages/_link_edit_panel.html.erb
|
152
152
|
- app/views/sibu/pages/_media_edit_panel.html.erb
|
153
153
|
- app/views/sibu/pages/_text_edit_panel.html.erb
|
154
|
+
- app/views/sibu/pages/clone_section.js.erb
|
155
|
+
- app/views/sibu/pages/delete_section.js.erb
|
154
156
|
- app/views/sibu/pages/destroy.html.erb
|
155
157
|
- app/views/sibu/pages/edit.html.erb
|
156
158
|
- app/views/sibu/pages/edit_content.html.erb
|