diff --git a/app/controllers/admin/application_controller.rb b/app/controllers/admin/application_controller.rb index 44877c2ca6c1bad74748e8d284e6308881751e23..c61a843e58791e9a9ef8d7a41d369eb5a5ead517 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 0000000000000000000000000000000000000000..8ba479e4723be421901213aa23d6901b86fbf5bd --- /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 062fcd4de92ca04d3b1e3f0c3639896f65d130d4..6ca939f24b1b54385cd985d8c5daa4b18b5828a1 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 6eb602e5d0bc9f3785cd034a9f2667480f279cbf..17b0322777d8f42728b47b4fd4c1211c8de1ab28 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"