Skip to content
Snippets Groups Projects
Commit 94cc44ad authored by alexisben's avatar alexisben
Browse files

Block program WIP

parent 96111ee3
No related merge requests found
Showing
with 103 additions and 2 deletions
app/assets/images/communication/blocks/templates/programs.jpg

159 KiB

......@@ -51,13 +51,14 @@ class Communication::Block < ApplicationRecord
partners: 200,
posts: 500,
pages: 600,
contact: 601,
contact: 57,
programs: 58
}
CATEGORIES = {
basic: [:chapter, :image, :video, :datatable],
storytelling: [:key_figures, :gallery, :call_to_action, :testimonials, :timeline],
references: [:pages, :posts, :organization_chart, :partners],
references: [:pages, :posts, :organization_chart, :partners, :programs],
utilities: [:files, :definitions, :embed, :contact]
}
......
class Communication::Block::Component::Program < Communication::Block::Component::Base
def program
template.block.university.programs.find_by(id: data)
end
def git_dependencies
[program, program&.picture&.blob]
end
end
class Communication::Block::Template::Program < Communication::Block::Template::Base
has_elements
def program
program_id_component.program
end
def selected_programs
@selected_programs ||= selected_programs_selection
end
def add_custom_git_dependencies
selected_programs.each do |program|
add_dependency program
add_dependency program.active_storage_blobs.to_a
end
end
protected
def selected_programs_selection
elements.map { |element| element.program }.compact
end
end
class Communication::Block::Template::Program::Element < Communication::Block::Template::Base
has_component :id, :program
def program
id_component.program
end
end
<%
program = current_university.programs.ordered
%>
<label class="form-label"
:for="<%= dom_id.html_safe %>">
<%= label %>
</label>
<select :id="<%= dom_id.html_safe %>"
class="form-select select mb-3"
v-model="<%= model %>.<%= property %>">
<% if placeholder %>
<option value="" disabled><%= placeholder %></option>
<% end %>
<% program.each do |program| %>
<option value="<%= program.id %>">
<%= program %>
</option>
<% end %>
</select>
<%= component.program.to_s %>
<%= indentation %><%= '- ' if list %><%= property %>: <%= value %>
<% pages = collection_tree(@block.university.programs) %>
<div class="row mb-4">
<div class="col-lg-6">
<div class="mb-4">
<%= block_component_add_element t('.selection.add') %>
<draggable :list="data.elements" handle=".dragHandle" class="list-group">
<div v-for="(element, index) in data.elements" class="list-group-item">
<div class="d-flex mb-n3">
<div>
<a class="btn ps-0 pt-0 dragHandle" title="Drag and drop">
<i class="fa fa-bars handle"></i>
</a>
</div>
<div class="flex-fill">
<%= block_component_edit :id, template: @element %>
</div>
<div>
<a class="btn btn-sm btn-danger ms-3"
v-on:click="data.elements.splice(data.elements.indexOf(page), 1)"
title="Supprimer">
<i class="fas fa-times"></i>
</a>
</div>
</div>
</div>
</draggable>
</div>
</div>
</div>
programs:
<% block.template.elements.each do |element| %>
<% next unless element.program %>
- slug: "<%= element.program.slug %>"
<% end %>
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