From 3cdfcc707a393ed7b006a97c945ce944708e8ed2 Mon Sep 17 00:00:00 2001 From: Arnaud Levy <arnaud.levy@noesya.coop> Date: Thu, 19 Dec 2024 10:20:40 +0100 Subject: [PATCH] Featured image (#2513) --- .../admin/education/programs_controller.rb | 2 +- .../university/organizations_controller.rb | 4 ++ .../university/organization/localization.rb | 42 ++++++++++--------- .../university/organizations/_form.html.erb | 12 +++++- .../university/organizations/show.html.erb | 10 +++-- .../university/organizations/static.html.erb | 1 + ...atured_image_to_university_organization.rb | 6 +++ db/schema.rb | 4 +- 8 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 db/migrate/20241218180521_add_featured_image_to_university_organization.rb diff --git a/app/controllers/admin/education/programs_controller.rb b/app/controllers/admin/education/programs_controller.rb index a313f4426..59d7eab80 100644 --- a/app/controllers/admin/education/programs_controller.rb +++ b/app/controllers/admin/education/programs_controller.rb @@ -65,7 +65,7 @@ class Admin::Education::ProgramsController < Admin::Education::Programs::Applica load_part if @program.update(program_params) load_localization - @l10n.add_photo_import params[:photo_import] if params.has_key?(:photo_import) + @l10n.add_photo_import params[:photo_import] @program.touch # to ensure it send the photo_import picture redirect_to after_update_path, notice: t('admin.successfully_updated_html', model: @program.to_s_in(current_language)) diff --git a/app/controllers/admin/university/organizations_controller.rb b/app/controllers/admin/university/organizations_controller.rb index 6a36176cf..354b4f058 100644 --- a/app/controllers/admin/university/organizations_controller.rb +++ b/app/controllers/admin/university/organizations_controller.rb @@ -46,6 +46,7 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio end def create + @l10n.add_photo_import params[:photo_import] if @organization.save redirect_to admin_university_organization_path(@organization), notice: t('admin.successfully_created_html', model: @organization.to_s_in(current_language)) @@ -58,6 +59,8 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio def update if @organization.update(organization_params) + load_localization + @l10n.add_photo_import params[:photo_import] redirect_to admin_university_organization_path(@organization), notice: t('admin.successfully_updated_html', model: @organization.to_s_in(current_language)) else @@ -93,6 +96,7 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio :url, :linkedin, :twitter, :mastodon, :logo, :logo_delete, :logo_infos, :logo_on_dark_background, :logo_on_dark_background_delete, :logo_on_dark_background_infos, + :featured_image, :featured_image_delete, :featured_image_infos, :featured_image_alt, :featured_image_credit, :shared_image, :shared_image_delete, :language_id ] diff --git a/app/models/university/organization/localization.rb b/app/models/university/organization/localization.rb index 9a471a2cd..a775297aa 100644 --- a/app/models/university/organization/localization.rb +++ b/app/models/university/organization/localization.rb @@ -2,24 +2,26 @@ # # Table name: university_organization_localizations # -# id :uuid not null, primary key -# address_additional :string -# address_name :string -# linkedin :string -# long_name :string -# mastodon :string -# meta_description :text -# name :string -# slug :string -# summary :text -# text :text -# twitter :string -# url :string -# created_at :datetime not null -# updated_at :datetime not null -# about_id :uuid indexed -# language_id :uuid indexed -# university_id :uuid indexed +# id :uuid not null, primary key +# address_additional :string +# address_name :string +# featured_image_alt :string +# featured_image_credit :text +# linkedin :string +# long_name :string +# mastodon :string +# meta_description :text +# name :string +# slug :string +# summary :text +# text :text +# twitter :string +# url :string +# created_at :datetime not null +# updated_at :datetime not null +# about_id :uuid indexed +# language_id :uuid indexed +# university_id :uuid indexed # # Indexes # @@ -42,6 +44,7 @@ class University::Organization::Localization < ApplicationRecord include Sanitizable include Shareable include WithBlobs + include WithFeaturedImage include WithGitFiles include WithUniversity @@ -50,8 +53,6 @@ class University::Organization::Localization < ApplicationRecord has_one_attached_deletable :logo has_one_attached_deletable :logo_on_dark_background - alias :featured_image :logo - validates :name, presence: true validates :name, uniqueness: { scope: [:university_id, :language_id] } validates :logo, size: { less_than: 1.megabytes } @@ -84,6 +85,7 @@ class University::Organization::Localization < ApplicationRecord [ logo&.blob_id, logo_on_dark_background&.blob_id, + featured_image&.blob_id, shared_image&.blob_id ] end diff --git a/app/views/admin/university/organizations/_form.html.erb b/app/views/admin/university/organizations/_form.html.erb index 7a3c2d90e..621543501 100644 --- a/app/views/admin/university/organizations/_form.html.erb +++ b/app/views/admin/university/organizations/_form.html.erb @@ -22,8 +22,8 @@ input_html: { accept: default_images_formats_accepted }, preview: 200, resize: false %> - <%= render 'admin/application/images/shared/form', f: lf, about: l10n %> - <%= render 'admin/application/meta_description/form', f: lf, about: l10n %> + <%= osuny_separator %> + <%= render 'admin/application/images/featured/form', f: lf, about: l10n %> </div> <div class="offset-lg-1 col-lg-8"> <%= render 'admin/application/summary/form', f: lf, about: l10n %> @@ -47,6 +47,14 @@ </div> </div> <% end %> + <div class="row"> + <div class="col-lg-6"> + <%= render 'admin/application/images/shared/form', f: lf, about: l10n %> + </div> + <div class="col-lg-6"> + <%= render 'admin/application/meta_description/form', f: lf, about: l10n %> + </div> + </div> </div> </div> <% content_for :action_bar_right do %> diff --git a/app/views/admin/university/organizations/show.html.erb b/app/views/admin/university/organizations/show.html.erb index 919524c60..e4fdcd25f 100644 --- a/app/views/admin/university/organizations/show.html.erb +++ b/app/views/admin/university/organizations/show.html.erb @@ -6,17 +6,21 @@ <% if @l10n.logo.attached? %> <div> <%= osuny_label University::Organization::Localization.human_attribute_name('logo') %><br> - <%= kamifusen_tag @l10n.logo, class: 'img-fluid img-fill bg-light img-thumbnail p-5 mb-3' %> + <%= kamifusen_tag @l10n.logo, + width: 200, + class: 'img-fluid img-fill bg-light img-thumbnail p-5 mb-3' %> </div> <% end %> <% if @l10n.logo_on_dark_background.attached? %> <div> <%= osuny_label University::Organization::Localization.human_attribute_name('logo_on_dark_background') %><br> - <%= kamifusen_tag @l10n.logo_on_dark_background, class: 'img-fluid img-fill bg-dark img-thumbnail p-5' %> + <%= kamifusen_tag @l10n.logo_on_dark_background, + width: 200, + class: 'img-fluid img-fill bg-dark img-thumbnail p-5' %> </div> <% end %> <% end if @l10n.logo.attached? || @l10n.logo_on_dark_background.attached? %> - + <%= render 'admin/application/images/featured/show', about: @l10n, small: true %> <%= osuny_property_show_text @l10n, :slug, hide_blank: true %> <%= osuny_property_show_boolean @organization, :active %> <%= render 'admin/application/categories/widget/show', about: @organization %> diff --git a/app/views/admin/university/organizations/static.html.erb b/app/views/admin/university/organizations/static.html.erb index 87d102f89..a6c6de56d 100644 --- a/app/views/admin/university/organizations/static.html.erb +++ b/app/views/admin/university/organizations/static.html.erb @@ -17,6 +17,7 @@ cache cache_key do toc_offcanvas: true %> <%= render 'admin/application/l10n/static', about: @l10n %> <%= render 'admin/application/meta_description/static', about: @l10n %> +<%= render 'admin/application/images/featured/static', about: @l10n %> <%= render 'admin/application/images/shared/static', about: @l10n %> <%= render 'admin/application/summary/static', about: @l10n %> <%= render 'admin/application/connections/backlinks', about: @l10n %> diff --git a/db/migrate/20241218180521_add_featured_image_to_university_organization.rb b/db/migrate/20241218180521_add_featured_image_to_university_organization.rb new file mode 100644 index 000000000..007e8f5b1 --- /dev/null +++ b/db/migrate/20241218180521_add_featured_image_to_university_organization.rb @@ -0,0 +1,6 @@ +class AddFeaturedImageToUniversityOrganization < ActiveRecord::Migration[7.2] + def change + add_column :university_organization_localizations, :featured_image_alt, :string + add_column :university_organization_localizations, :featured_image_credit, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index 743212ecf..7a2c1620d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.2].define(version: 2024_12_17_141959) do +ActiveRecord::Schema[7.2].define(version: 2024_12_18_180521) do # These are extensions that must be enabled in order to support this database enable_extension "pg_trgm" enable_extension "pgcrypto" @@ -1552,6 +1552,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_12_17_141959) do t.uuid "university_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "featured_image_alt" + t.text "featured_image_credit" t.index ["about_id"], name: "index_university_organization_localizations_on_about_id" t.index ["language_id"], name: "index_university_organization_localizations_on_language_id" t.index ["university_id"], name: "index_university_organization_localizations_on_university_id" -- GitLab