diff --git a/app/models/communication/block/template/definition.rb b/app/models/communication/block/template/definition.rb index 2b9e596eee07563ac7d0280d3de34813897f45df..24239084f87559c737261117e70d3b3955c7772f 100644 --- a/app/models/communication/block/template/definition.rb +++ b/app/models/communication/block/template/definition.rb @@ -1,12 +1,5 @@ class Communication::Block::Template::Definition < Communication::Block::Template::Base - def definitions - @definitions ||= elements.map { |element| definition(element) } - .compact - end - protected + has_elements Communication::Block::Template::Definition::Definition - def definition(element) - element.to_dot - end end diff --git a/app/models/communication/block/template/definition/definition.rb b/app/models/communication/block/template/definition/definition.rb new file mode 100644 index 0000000000000000000000000000000000000000..c31848d4ab47ecddc4458b752b2e2efe885f1d6a --- /dev/null +++ b/app/models/communication/block/template/definition/definition.rb @@ -0,0 +1,4 @@ +class Communication::Block::Template::Definition::Definition < Communication::Block::Template::Base + has_string :title + has_text :description +end diff --git a/app/views/admin/communication/blocks/templates/definitions/_edit.html.erb b/app/views/admin/communication/blocks/templates/definitions/_edit.html.erb index 8e3741feaed7a720d61a62d7b2b7ec32e989cf52..753770e0e674a347ba7f087509f7d457484a4693 100644 --- a/app/views/admin/communication/blocks/templates/definitions/_edit.html.erb +++ b/app/views/admin/communication/blocks/templates/definitions/_edit.html.erb @@ -1,10 +1,9 @@ -<a class="<%= button_classes('mb-4') %>" - v-on:click="data.elements.push({title: '', text: ''})"> - <%= t '.add_definition' %> -</a> +<% element = @block.template.default_element %> + +<%= block_component_add_element t('.add_definition') %> <draggable :list="data.elements" handle=".dragHandle" class="row"> - <div v-for="(definition, index) in data.elements" class="col-md-4"> + <div v-for="(element, index) in data.elements" class="col-md-4"> <div class="card"> <div class="card-body"> <div class="d-flex"> @@ -14,6 +13,26 @@ </a> </div> <div class="flex-fill"> + <%= block_component_edit :title, template: element %> + <%= block_component_edit :description, template: element %> + </div> + <div> + <a class="btn btn-sm btn-danger ms-3" + v-on:click="data.elements.splice(data.elements.indexOf(element), 1)" + title="<%= t '.remove_definition' %>"> + <i class="fas fa-times"></i> + </a> + </div> + </div> + </div> + </div> + </div> +</draggable> + + + + + <!-- > <label class="form-label" :for="'definition-' + index + '-title'"><%= t '.title_label' %></label> <input class="form-control mb-3" @@ -29,16 +48,4 @@ 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> + <!--> diff --git a/app/views/admin/communication/blocks/templates/definitions/_preview.html.erb b/app/views/admin/communication/blocks/templates/definitions/_preview.html.erb index e9aaa76eba5ab6851fd439547cf9f7a7ef07058c..cf94cd3c9a5b2ceff4c796b4f04e6db827674274 100644 --- a/app/views/admin/communication/blocks/templates/definitions/_preview.html.erb +++ b/app/views/admin/communication/blocks/templates/definitions/_preview.html.erb @@ -1,6 +1,8 @@ -<dl> - <% @block.template.definitions.each do |definition| %> - <dt><%= definition.title %></dt> - <dd><%= definition.text %></dd> - <% end %> -</dl> +<% @block.template.elements.each do |element| %> + <p class="lead mb-0"> + <b> + <%= block_component_preview :title, template: element %> + </b> + </p> + <%= block_component_preview :description, template: element %> +<% end %> diff --git a/app/views/admin/communication/blocks/templates/definitions/_static.html.erb b/app/views/admin/communication/blocks/templates/definitions/_static.html.erb index 2dd4e4ddb427ede024ae58123ca8e3dbfeb6fdf9..1cf45d3623de48746d5d3b02db60f3aa0b918e1d 100644 --- a/app/views/admin/communication/blocks/templates/definitions/_static.html.erb +++ b/app/views/admin/communication/blocks/templates/definitions/_static.html.erb @@ -1,6 +1,4 @@ -<% block.template.definitions.each do |definition| %> - - title: >- - <%= prepare_html_for_static definition.title, about.university %> - text: >- - <%= prepare_html_for_static definition.text, about.university %> +<% block.template.elements.each do |element| %> +<%= block_component_static :title, template: element, depth:4, list: true %> +<%= block_component_static :description, template: element, depth: 5 %> <% end %> diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml index 793b297590ddb5a2e8de80cb60b4f2a8051197c1..785cd45364ba97c09776d7e1c038ae1b8afa6abc 100644 --- a/config/locales/communication/en.yml +++ b/config/locales/communication/en.yml @@ -194,10 +194,13 @@ en: 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 + element: + title: + label: Title + placeholder: Enter title here + description: + label: Text + placeholder: Enter text here embed: description: HTML raw code, so you can integrate maps or iframe components. edit: diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml index 6bf20ba4e3e27cd12898091862a67d087c84cf2b..42ff75c22e39afd0ddd5ab1b11ee6c17fc554cb8 100644 --- a/config/locales/communication/fr.yml +++ b/config/locales/communication/fr.yml @@ -200,10 +200,13 @@ fr: 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 + element: + title: + label: Titre + placeholder: Entrer le titre de la définition + description: + label: Texte + placeholder: Entrer la description de la définition embed: description: Du code HTML brut, permettant d'intégrer des cartes ou divers composants en iframe. edit: