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

Block program WIP

parent 96111ee3
No related branches found
No related tags found
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