Skip to content
Snippets Groups Projects
Unverified Commit 045f5458 authored by Sébastien Gaya's avatar Sébastien Gaya
Browse files

program featured image

parent f2654ab2
No related branches found
No related tags found
No related merge requests found
......@@ -80,6 +80,7 @@ class Admin::Education::ProgramsController < Admin::Education::ApplicationContro
def program_params
params.require(:education_program).permit(
:name, :slug, :level, :capacity, :ects, :continuing, :description, :published,
:featured_image, :featured_image_delete, :featured_image_infos,
:prerequisites, :objectives, :duration, :registration, :pedagogy,
:evaluation, :accessibility, :pricing, :contacts, :opportunities, :other,
:parent_id, school_ids: [], teacher_ids: []
......
......@@ -2,10 +2,20 @@ module Communication::Website::WithMedia
extend ActiveSupport::Concern
def active_storage_blobs
blob_ids = [best_featured_image&.blob_id, text.embeds.blobs.pluck(:id)].flatten.compact
blob_ids = [best_featured_image&.blob_id, rich_text_blob_ids].flatten.compact
university.active_storage_blobs.where(id: blob_ids)
end
def rich_text_reflection_names
@rich_text_reflection_names ||= _reflections.select { |name, reflection| reflection.class_name == "ActionText::RichText" }.keys
end
def rich_text_blob_ids
rich_text_reflection_names.map { |rich_text_reflection_name|
public_send(rich_text_reflection_name).embeds.blobs.pluck(:id)
}.flatten
end
# Can be overwrite to get featured_image from associated objects (ex: parents)
def best_featured_image(fallback: true)
featured_image
......
......@@ -32,6 +32,7 @@ class Education::Program < ApplicationRecord
include WithGithubFiles
include WithMenuItemTarget
include WithTree
include Communication::Website::WithMedia
attr_accessor :skip_websites_categories_callback
......@@ -46,6 +47,7 @@ class Education::Program < ApplicationRecord
has_rich_text :prerequisites
has_rich_text :pricing
has_rich_text :registration
has_one_attached_deletable :featured_image
belongs_to :university
belongs_to :parent,
......
......@@ -24,6 +24,20 @@
<%= f.association :parent, collection: program.persisted? ? program.list_of_other_programs : current_university.list_of_programs, label_method: ->(p) { sanitize p[:label] }, value_method: ->(p) { p[:id] } %>
</div>
</div>
<div class="card flex-fill w-100">
<div class="card-header">
<h5 class="card-title mb-0"><%= t('activerecord.attributes.education/program.featured_image') %></h5>
</div>
<div class="card-body">
<%= f.input :featured_image,
as: :single_deletable_file,
direct_upload: true,
label: false,
input_html: { accept: '.jpg,.jpeg,.png' },
preview: true
%>
</div>
</div>
</div>
<div class="col-md-8">
<div class="card flex-fill w-100">
......
......@@ -28,6 +28,16 @@
<% end %>
</div>
</div>
<% if @program.featured_image.attached? && @program.featured_image.variable? %>
<div class="card flex-fill w-100">
<div class="card-header">
<h5 class="card-title mb-0"><%= t('activerecord.attributes.education/program.featured_image') %></h5>
</div>
<div class="card-body">
<%= image_tag @program.featured_image.variant(resize: '600'), class: 'img-fluid mb-3' %><br>
</div>
</div>
<% end %>
</div>
<div class="col-md-8">
<div class="card flex-fill w-100">
......
......@@ -20,6 +20,7 @@ en:
duration: Durée
ects: Crédits ECTS
evaluation: Modalités d’évaluation
featured_image: Featured image
level: Level
name: Name
objectives: Objectifs
......
......@@ -20,6 +20,7 @@ fr:
duration: Durée
ects: Crédits ECTS
evaluation: Modalités d’évaluation
featured_image: Image à la une
level: Niveau
name: Nom
objectives: Objectifs
......
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