From 4c77d31dec6220e01aecdc7fa1532f4146cc80b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Mon, 13 Mar 2023 15:42:45 +0100 Subject: [PATCH] helpers in application controller with features --- .../admin/application_controller.rb | 1 + .../application_controller/with_features.rb | 34 +++++++++++++++++++ app/helpers/admin/application_helper.rb | 34 +++---------------- db/schema.rb | 14 -------- 4 files changed, 40 insertions(+), 43 deletions(-) create mode 100644 app/controllers/admin/application_controller/with_features.rb diff --git a/app/controllers/admin/application_controller.rb b/app/controllers/admin/application_controller.rb index 44877c2ca..c61a843e5 100644 --- a/app/controllers/admin/application_controller.rb +++ b/app/controllers/admin/application_controller.rb @@ -1,6 +1,7 @@ class Admin::ApplicationController < ApplicationController layout 'admin/layouts/application' + include WithFeatures include Admin::Filterable def set_theme diff --git a/app/controllers/admin/application_controller/with_features.rb b/app/controllers/admin/application_controller/with_features.rb new file mode 100644 index 000000000..8ba479e47 --- /dev/null +++ b/app/controllers/admin/application_controller/with_features.rb @@ -0,0 +1,34 @@ +module Admin::ApplicationController::WithFeatures + extend ActiveSupport::Concern + + included do + + def feature_administration? + current_university.feature_administration && + can?(:read, Administration::Qualiopi::Criterion) + end + helper_method :feature_administration? + + def feature_communication? + current_university.feature_communication && + can?(:read, Communication::Website) + end + helper_method :feature_communication? + + def feature_education? + current_university.feature_education && + can?(:read, Education::Program) + end + helper_method :feature_education? + + def feature_research? + current_university.feature_research && ( + can?(:read, Research::Journal) || + can?(:read, Research::Hal::Publication) || + can?(:read, Research::Laboratory) + ) + end + helper_method :feature_research? + + end +end diff --git a/app/helpers/admin/application_helper.rb b/app/helpers/admin/application_helper.rb index 062fcd4de..6ca939f24 100644 --- a/app/helpers/admin/application_helper.rb +++ b/app/helpers/admin/application_helper.rb @@ -52,8 +52,8 @@ module Admin::ApplicationHelper def osuny_panel(title = nil, subtitle: nil, action: nil, image: nil, &block) render layout: "admin/layouts/themes/#{current_admin_theme}/panel", - locals: { - title: title, + locals: { + title: title, subtitle: subtitle, action: action, image: image @@ -61,18 +61,18 @@ module Admin::ApplicationHelper capture(&block) end end - + def osuny_label(title, classes: '') raw "<label class=\"form-label #{classes}\">#{title}</label>" end def if_appstack(string) - return '' if current_admin_theme != 'appstack' + return '' if current_admin_theme != 'appstack' " #{string}" end def if_pure(string) - return '' if current_admin_theme != 'pure' + return '' if current_admin_theme != 'pure' " #{string}" end @@ -186,30 +186,6 @@ module Admin::ApplicationHelper } end - def feature_education? - can?(:read, Education::Program) && - current_university.feature_education - end - - def feature_research? - ( - can?(:read, Research::Journal) || - can?(:read, Research::Hal::Publication) || - can?(:read, Research::Laboratory) - ) && - current_university.feature_research - end - - def feature_communication? - can?(:read, Communication::Website) && - current_university.feature_communication - end - - def feature_administration? - can?(:read, Administration::Qualiopi::Criterion) && - current_university.feature_administration - end - private def polymorphic_url_param(object_or_class, **options) diff --git a/db/schema.rb b/db/schema.rb index 6eb602e5d..17b032277 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -240,18 +240,6 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_13_140557) do t.index ["communication_website_post_id", "communication_website_category_id"], name: "post_category" end - create_table "communication_website_connections", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| - t.uuid "university_id", null: false - t.uuid "website_id", null: false - t.string "object_type", null: false - t.uuid "object_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["object_type", "object_id"], name: "index_communication_website_connections_on_object" - t.index ["university_id"], name: "index_communication_website_connections_on_university_id" - t.index ["website_id"], name: "index_communication_website_connections_on_website_id" - end - create_table "communication_website_git_files", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| t.string "previous_path" t.string "about_type", null: false @@ -1062,8 +1050,6 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_13_140557) do add_foreign_key "communication_website_categories", "education_programs", column: "program_id" add_foreign_key "communication_website_categories", "languages" add_foreign_key "communication_website_categories", "universities" - add_foreign_key "communication_website_connections", "communication_websites", column: "website_id" - add_foreign_key "communication_website_connections", "universities" add_foreign_key "communication_website_git_files", "communication_websites", column: "website_id" add_foreign_key "communication_website_imported_authors", "communication_website_imported_websites", column: "website_id" add_foreign_key "communication_website_imported_authors", "universities" -- GitLab