Skip to content
Snippets Groups Projects
Commit 48518d8e authored by alexisben's avatar alexisben
Browse files

Merge blocks

parents 02f44564 35663582
No related branches found
No related tags found
No related merge requests found
Showing
with 331 additions and 0 deletions
app/assets/images/communication/blocks/templates/definitions.jpg

124 KiB

app/assets/images/communication/blocks/templates/push.jpg

124 KiB

app/assets/images/communication/blocks/templates/timeline.jpg

124 KiB

......@@ -38,6 +38,9 @@ class Communication::Block < ApplicationRecord
testimonials: 400,
posts: 500,
pages: 600
timeline: 700,
definitions: 800,
push: 900,
}
before_save :update_template_images
......
class Communication::Block::Template::Definition < Communication::Block::Template
def definitions
@definitions ||= elements.map { |element| definition(element) }
.compact
end
protected
def definition(element)
element.to_dot
end
end
class Communication::Block::Template::Push < Communication::Block::Template
def build_git_dependencies
# image à déclarer
end
def text
"#{data['text']}"
end
def url
"#{data['url']}"
end
def button
"#{data['button']}"
end
def image
image_with_alt
end
protected
def image_with_alt
blob = find_blob data, 'image'
return if blob.nil?
{
blob: blob,
alt: data['image_alt']
}.to_dot
end
end
class Communication::Block::Template::Timeline < Communication::Block::Template
def events
@events ||= elements.map { |element| event(element) }
.compact
end
protected
def event(element)
element.to_dot
end
end
<a class="<%= button_classes('mb-4') %>"
v-on:click="data.elements.push({title: '', text: ''})">
<%= t '.add_definition' %>
</a>
<draggable :list="data.elements" handle=".dragHandle" class="row">
<div v-for="(definition, index) in data.elements" class="col-md-4">
<div class="card">
<div class="card-body">
<div class="d-flex">
<div>
<a class="btn ps-0 pt-0 dragHandle">
<i class="fa fa-bars handle"></i>
</a>
</div>
<div class="flex-fill">
<label class="form-label"
:for="'definition-' + index + '-title'"><%= t '.title_label' %></label>
<input class="form-control mb-2"
v-model="definition.title"
placeholder="<%= t '.title_placeholder' %>"
type="text"
:id="'definition-' + index + '-title'" />
<label class="form-label"
:for="'definition-' + index + '-text'"><%= t '.text_label' %></label>
<textarea class="form-control mb-2"
rows="3"
v-model="definition.text"
placeholder="<%= t '.text_placeholder' %>"
:id="'definition-' + index + '-text'"></textarea>
</div>
<div>
<a class="btn btn-sm btn-danger ms-3"
v-on:click="data.elements.splice(data.elements.indexOf(definition), 1)"
title="<%= t '.remove_definition' %>">
<i class="fas fa-times"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</draggable>
<dl>
<% @block.template.definitions.each do |definition| %>
<dt><%= definition.title %></dt>
<dd><%= definition.text %></dd>
<% end %>
</dl>
<% block.template.definitions.each do |definition| %>
- title: >-
<%= prepare_text_for_static definition.title %>
text: >-
<%= prepare_text_for_static definition.text %>
<% end %>
<div class="row">
<div class="col-xxl-4 col-md-6">
<label class="form-label"
for="text">
<%= t '.text_label' %>
</label>
<div class="summernote">
<textarea id="text"
class="form-control summernote-vue"
v-model="data.text"
data-summernote-config="mini"
placeholder="<%= t '.text_placeholder' %>"></textarea>
</div>
<label class="form-label mt-3"
for="url">
<%= t '.url_label' %>
</label>
<input id="url"
type="url"
class="form-control"
v-model="data.url"
placeholder="<%= t '.url_placeholder' %>" />
<label class="form-label mt-3"
for="button">
<%= t '.button_label' %>
</label>
<input id="button"
type="text"
class="form-control"
v-model="data.button"
placeholder="<%= t '.button_placeholder' %>" />
<label class="form-label mt-3"
for="button">
<%= t '.button_label' %>
</label>
<input id="button"
type="text"
class="form-control"
v-model="data.button"
placeholder="<%= t '.button_placeholder' %>" />
<hr>
<h3><%= t '.image_title' %></h3>
<div class="row">
<div class="col-md-6">
<div v-if="!data.image">
<%# TODO : create a uploader vue3 component %>
<label class="form-label"
for="image">
<%= t '.image_label' %>
</label>
<input class="form-control mb-2"
type="file"
accept="image/*"
@change="onFileImageChange( $event, data, 'image' )"
id="image">
</div>
<div v-if="data.image">
<img :src="getImageUrl(data.image)"
class="img-fluid"
style="max-height: 80px"
/>
<br>
<a class="btn btn-sm btn-danger mt-2"
v-on:click="data.image=null">
<i class="fas fa-times"></i>
<%= t '.remove_image' %>
</a>
</div>
</div>
<div class="col-md-6">
<label class="form-label"
for="image_alt">
<%= t '.image_alt_label' %>
</label>
<input id="image_alt"
type="text"
class="form-control"
v-model="data.image_alt"
placeholder="<%= t '.image_alt_placeholder' %>" />
</div>
</div>
</div>
</div>
\ No newline at end of file
<div class="col-md-8 col-xl-6">
<div class="card">
<div class="card-body">
<% if @block.template.image %>
<div style= "max-width: 200px;" class="me-3">
<%= kamifusen_tag @block.template.image.blob,
width: 200,
alt: @block.template.image.alt,
class: 'img-fluid' %>
<caption><%= @block.template.image.alt %></caption>
</div>
<% end %>
<hr>
<%= @block.template.text.html_safe %>
<a href="<%= @block.template.url %>" class="btn btn-secondary" target="_blank" rel="noopener">
<%= @block.template.button %>
</a>
</div>
</div>
</div>
text: >-
<%= prepare_html_for_static block.template.text, about.university %>
<a class="<%= button_classes('mb-4') %>"
v-on:click="data.elements.push({title: '', text: ''})">
<%= t '.add_event' %>
</a>
<draggable :list="data.elements" handle=".dragHandle" class="row">
<div v-for="(event, index) in data.elements" class="col-md-4">
<div class="card">
<div class="card-body">
<div class="d-flex">
<div>
<a class="btn ps-0 pt-0 dragHandle">
<i class="fa fa-bars handle"></i>
</a>
</div>
<div class="flex-fill">
<label class="form-label"
:for="'event-' + index + '-title'"><%= t '.title_label' %></label>
<input class="form-control mb-2"
v-model="event.title"
placeholder="<%= t '.title_placeholder' %>"
type="text"
:id="'event-' + index + '-title'" />
<label class="form-label"
:for="'event-' + index + '-text'"><%= t '.text_label' %></label>
<textarea class="form-control mb-2"
rows="3"
v-model="event.text"
placeholder="<%= t '.text_placeholder' %>"
:id="'event-' + index + '-text'"></textarea>
</div>
<div>
<a class="btn btn-sm btn-danger ms-3"
v-on:click="data.elements.splice(data.elements.indexOf(event), 1)"
title="<%= t '.remove_event' %>">
<i class="fas fa-times"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</draggable>
<div class="row">
<% @block.template.events.each do |event| %>
<div class="col-xxl-4 col-xl-6">
<article class="card">
<div class="card-body">
<p class="lead"><%= event.title %></p>
<p><%= event.text %></p>
</div>
</article>
</div>
<% end %>
</div>
<% block.template.events.each do |event| %>
- title: >-
<%= prepare_text_for_static event.title %>
text: >-
<%= prepare_text_for_static event.text %>
<% end %>
......@@ -163,6 +163,22 @@ en:
photo_label: Photo
remove_photo: Remove photo
remove_testimonial: Remove testimonial
timeline:
edit:
add_event: Add event
remove_event: Delete event
title_label: Title
title_placeholder: Enter title here
text_label: Text
text_placeholder: Enter text here
definitions:
edit:
add_definition: Add definition
remove_definition: Delete definition
title_label: Title
title_placeholder: Enter title here
text_label: Text
text_placeholder: Enter text here
website:
pages:
delete_special_page_notice: Can't delete this page
......
......@@ -163,6 +163,35 @@ fr:
photo_label: Photo
remove_photo: Enlever la photo
remove_testimonial: Enlever le témoignage
timeline:
edit:
add_event: Ajouter un événement
remove_event: Supprimer l'événement
title_label: Titre
title_placeholder: Entrer le titre de l'événement
text_label: Texte
text_placeholder: Entrer le texte de l'événement
definitions:
edit:
add_definition: Ajouter une définition
remove_definition: Supprimer la définition
title_label: Titre
title_placeholder: Entrer le titre de la définition
text_label: Texte
text_placeholder: Entrer la description de la définition
push:
edit:
text_label: Texte
text_placeholder: Entrer le texte ici
url_label: Lien
url_placeholder: Entrer le lien ici avec "https://..."
button_label: Bouton
button_placeholder: Entrer le texte du bouton ici
image_title: Image
image_label: Fichier
remove_image: Supprimer l'image
image_alt_label: Texte alternatif
image_alt_placeholder: Entrer le texte alternatif de l'image ici
website:
pages:
delete_special_page_notice: Impossible de supprimer cette page
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment