From ae1b2f5b7c7d590ee94ecd66c7c038f5ac52acec Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Wed, 11 Aug 2021 11:39:16 +0200 Subject: [PATCH] features --- .../education/application_controller.rb | 6 ++ .../education/dashboard_controller.rb | 5 ++ .../education}/programs_controller.rb | 17 +++-- .../qualiopi/criterions_controller.rb | 9 +-- .../qualiopi/indicators_controller.rb | 13 ++-- .../features/education/programs_controller.rb | 12 ++++ app/controllers/programs_controller.rb | 12 ---- app/models/feature.rb | 7 ++ .../{qualiopi.rb => features/education.rb} | 4 +- .../{ => features/education}/program.rb | 6 +- app/models/features/education/qualiopi.rb | 7 ++ .../education}/qualiopi/criterion.rb | 4 +- .../education}/qualiopi/indicator.rb | 8 +-- app/models/university.rb | 3 +- .../university/with_feature_education.rb | 7 ++ app/models/university/with_identifier.rb | 2 +- .../education/dashboard/index.html.erb | 1 + .../education}/programs/_form.html.erb | 1 - .../programs/_program.json.jbuilder | 0 .../education}/programs/edit.html.erb | 0 .../education}/programs/index.html.erb | 8 +-- .../education}/programs/index.json.jbuilder | 0 .../features/education/programs/new.html.erb | 3 + .../education}/programs/show.html.erb | 5 -- .../education}/programs/show.json.jbuilder | 0 .../qualiopi/criterions/_form.html.erb | 0 .../_qualiopi_criterion.json.jbuilder | 0 .../qualiopi/criterions/edit.html.erb | 0 .../qualiopi/criterions/index.html.erb | 2 +- .../qualiopi/criterions/index.json.jbuilder | 0 .../qualiopi/criterions/new.html.erb | 3 + .../qualiopi/criterions/show.html.erb | 0 .../qualiopi/criterions/show.json.jbuilder | 0 .../qualiopi/indicators/_form.html.erb | 0 .../_qualiopi_indicator.json.jbuilder | 0 .../qualiopi/indicators/edit.html.erb | 0 .../qualiopi/indicators/index.html.erb | 8 +-- .../qualiopi/indicators/index.json.jbuilder | 0 .../qualiopi/indicators/new.html.erb | 3 + .../qualiopi/indicators/show.html.erb | 6 +- .../qualiopi/indicators/show.json.jbuilder | 0 app/views/admin/programs/new.html.erb | 3 - .../admin/qualiopi/criterions/new.html.erb | 3 - .../admin/qualiopi/indicators/new.html.erb | 3 - .../programs/_program.json.jbuilder | 0 .../education}/programs/index.html.erb | 0 .../education}/programs/index.json.jbuilder | 0 .../education}/programs/show.html.erb | 0 .../education}/programs/show.json.jbuilder | 0 config/admin_navigation.rb | 13 ++-- config/application.rb | 1 + config/locales/features/education/fr.yml | 67 +++++++++++++++++++ config/locales/fr.yml | 55 +-------------- config/routes.rb | 2 +- config/routes/admin.rb | 9 ++- config/routes/admin/features/education.rb | 8 +++ .../20210811082802_namespace_features.rb | 7 ++ db/schema.rb | 16 ++--- 58 files changed, 206 insertions(+), 143 deletions(-) create mode 100644 app/controllers/admin/features/education/application_controller.rb create mode 100644 app/controllers/admin/features/education/dashboard_controller.rb rename app/controllers/admin/{ => features/education}/programs_controller.rb (64%) rename app/controllers/admin/{ => features/education}/qualiopi/criterions_controller.rb (78%) rename app/controllers/admin/{ => features/education}/qualiopi/indicators_controller.rb (73%) create mode 100644 app/controllers/features/education/programs_controller.rb delete mode 100644 app/controllers/programs_controller.rb create mode 100644 app/models/feature.rb rename app/models/{qualiopi.rb => features/education.rb} (56%) rename app/models/{ => features/education}/program.rb (82%) create mode 100644 app/models/features/education/qualiopi.rb rename app/models/{ => features/education}/qualiopi/criterion.rb (71%) rename app/models/{ => features/education}/qualiopi/indicator.rb (63%) create mode 100644 app/models/university/with_feature_education.rb create mode 100644 app/views/admin/features/education/dashboard/index.html.erb rename app/views/admin/{ => features/education}/programs/_form.html.erb (94%) rename app/views/admin/{ => features/education}/programs/_program.json.jbuilder (100%) rename app/views/admin/{ => features/education}/programs/edit.html.erb (100%) rename app/views/admin/{ => features/education}/programs/index.html.erb (59%) rename app/views/admin/{ => features/education}/programs/index.json.jbuilder (100%) create mode 100644 app/views/admin/features/education/programs/new.html.erb rename app/views/admin/{ => features/education}/programs/show.html.erb (92%) rename app/views/admin/{ => features/education}/programs/show.json.jbuilder (100%) rename app/views/admin/{ => features/education}/qualiopi/criterions/_form.html.erb (100%) rename app/views/admin/{ => features/education}/qualiopi/criterions/_qualiopi_criterion.json.jbuilder (100%) rename app/views/admin/{ => features/education}/qualiopi/criterions/edit.html.erb (100%) rename app/views/admin/{ => features/education}/qualiopi/criterions/index.html.erb (84%) rename app/views/admin/{ => features/education}/qualiopi/criterions/index.json.jbuilder (100%) create mode 100644 app/views/admin/features/education/qualiopi/criterions/new.html.erb rename app/views/admin/{ => features/education}/qualiopi/criterions/show.html.erb (100%) rename app/views/admin/{ => features/education}/qualiopi/criterions/show.json.jbuilder (100%) rename app/views/admin/{ => features/education}/qualiopi/indicators/_form.html.erb (100%) rename app/views/admin/{ => features/education}/qualiopi/indicators/_qualiopi_indicator.json.jbuilder (100%) rename app/views/admin/{ => features/education}/qualiopi/indicators/edit.html.erb (100%) rename app/views/admin/{ => features/education}/qualiopi/indicators/index.html.erb (54%) rename app/views/admin/{ => features/education}/qualiopi/indicators/index.json.jbuilder (100%) create mode 100644 app/views/admin/features/education/qualiopi/indicators/new.html.erb rename app/views/admin/{ => features/education}/qualiopi/indicators/show.html.erb (77%) rename app/views/admin/{ => features/education}/qualiopi/indicators/show.json.jbuilder (100%) delete mode 100644 app/views/admin/programs/new.html.erb delete mode 100644 app/views/admin/qualiopi/criterions/new.html.erb delete mode 100644 app/views/admin/qualiopi/indicators/new.html.erb rename app/views/{ => features/education}/programs/_program.json.jbuilder (100%) rename app/views/{ => features/education}/programs/index.html.erb (100%) rename app/views/{ => features/education}/programs/index.json.jbuilder (100%) rename app/views/{ => features/education}/programs/show.html.erb (100%) rename app/views/{ => features/education}/programs/show.json.jbuilder (100%) create mode 100644 config/locales/features/education/fr.yml create mode 100644 config/routes/admin/features/education.rb create mode 100644 db/migrate/20210811082802_namespace_features.rb diff --git a/app/controllers/admin/features/education/application_controller.rb b/app/controllers/admin/features/education/application_controller.rb new file mode 100644 index 000000000..6f9adb958 --- /dev/null +++ b/app/controllers/admin/features/education/application_controller.rb @@ -0,0 +1,6 @@ +class Admin::Features::Education::ApplicationController < Admin::ApplicationController + def breadcrumb + super + add_breadcrumb I18n.t('features.education.title'), :admin_features_education_dashboard_path + end +end diff --git a/app/controllers/admin/features/education/dashboard_controller.rb b/app/controllers/admin/features/education/dashboard_controller.rb new file mode 100644 index 000000000..072f60f72 --- /dev/null +++ b/app/controllers/admin/features/education/dashboard_controller.rb @@ -0,0 +1,5 @@ +class Admin::Features::Education::DashboardController < Admin::Features::Education::ApplicationController + def index + breadcrumb + end +end diff --git a/app/controllers/admin/programs_controller.rb b/app/controllers/admin/features/education/programs_controller.rb similarity index 64% rename from app/controllers/admin/programs_controller.rb rename to app/controllers/admin/features/education/programs_controller.rb index e74568c38..116738332 100644 --- a/app/controllers/admin/programs_controller.rb +++ b/app/controllers/admin/features/education/programs_controller.rb @@ -1,8 +1,8 @@ -class Admin::ProgramsController < Admin::ApplicationController - load_and_authorize_resource +class Admin::Features::Education::ProgramsController < Admin::Features::Education::ApplicationController + load_and_authorize_resource class: Features::Education::Program def index - @programs = current_university.programs + @programs = current_university.features_education_programs breadcrumb end @@ -20,7 +20,7 @@ class Admin::ProgramsController < Admin::ApplicationController end def create - @program = Program.new(program_params) + @program.university = current_university respond_to do |format| if @program.save format.html { redirect_to [:admin, @program], notice: "Program was successfully created." } @@ -47,7 +47,7 @@ class Admin::ProgramsController < Admin::ApplicationController def destroy @program.destroy respond_to do |format| - format.html { redirect_to admin_programs_url, notice: "Program was successfully destroyed." } + format.html { redirect_to admin_features_education_programs_url, notice: "Program was successfully destroyed." } format.json { head :no_content } end end @@ -56,7 +56,7 @@ class Admin::ProgramsController < Admin::ApplicationController def breadcrumb super - add_breadcrumb Program.model_name.human(count: 2), admin_programs_path + add_breadcrumb Features::Education::Program.model_name.human(count: 2), admin_features_education_programs_path if @program if @program.persisted? add_breadcrumb @program, [:admin, @program] @@ -67,6 +67,9 @@ class Admin::ProgramsController < Admin::ApplicationController end def program_params - params.require(:program).permit(:university_id, :name, :level, :capacity, :ects, :continuing, :prerequisites, :objectives, :duration, :registration, :pedagogy, :evaluation, :accessibility, :pricing, :contacts) + params.require(:features_education_program) + .permit(:name, :level, :capacity, :ects, :continuing, + :prerequisites, :objectives, :duration, :registration, :pedagogy, + :evaluation, :accessibility, :pricing, :contacts) end end diff --git a/app/controllers/admin/qualiopi/criterions_controller.rb b/app/controllers/admin/features/education/qualiopi/criterions_controller.rb similarity index 78% rename from app/controllers/admin/qualiopi/criterions_controller.rb rename to app/controllers/admin/features/education/qualiopi/criterions_controller.rb index f62fa6fc4..5cbf7e19a 100644 --- a/app/controllers/admin/qualiopi/criterions_controller.rb +++ b/app/controllers/admin/features/education/qualiopi/criterions_controller.rb @@ -1,5 +1,5 @@ -class Admin::Qualiopi::CriterionsController < Admin::ApplicationController - load_and_authorize_resource class: Qualiopi::Criterion +class Admin::Features::Education::Qualiopi::CriterionsController < Admin::Features::Education::ApplicationController + load_and_authorize_resource class: Features::Education::Qualiopi::Criterion def index breadcrumb @@ -54,7 +54,7 @@ class Admin::Qualiopi::CriterionsController < Admin::ApplicationController def breadcrumb super - add_breadcrumb Qualiopi.model_name.human(count: 2), admin_qualiopi_root_path + add_breadcrumb Features::Education::Qualiopi.model_name.human, admin_features_education_qualiopi_criterions_path if @criterion if @criterion.persisted? add_breadcrumb @criterion, [:admin, @criterion] @@ -65,6 +65,7 @@ class Admin::Qualiopi::CriterionsController < Admin::ApplicationController end def criterion_params - params.require(:qualiopi_criterion).permit(:number, :name, :description) + params.require(:features_education_qualiopi_criterion) + .permit(:number, :name, :description) end end diff --git a/app/controllers/admin/qualiopi/indicators_controller.rb b/app/controllers/admin/features/education/qualiopi/indicators_controller.rb similarity index 73% rename from app/controllers/admin/qualiopi/indicators_controller.rb rename to app/controllers/admin/features/education/qualiopi/indicators_controller.rb index 11f3259d0..d21e60aac 100644 --- a/app/controllers/admin/qualiopi/indicators_controller.rb +++ b/app/controllers/admin/features/education/qualiopi/indicators_controller.rb @@ -1,12 +1,12 @@ -class Admin::Qualiopi::IndicatorsController < Admin::ApplicationController - load_and_authorize_resource class: Qualiopi::Indicator +class Admin::Features::Education::Qualiopi::IndicatorsController < Admin::Features::Education::ApplicationController + load_and_authorize_resource class: Features::Education::Qualiopi::Indicator def index breadcrumb end def show - @programs = Program.all + @programs = current_university.features_education_programs @checks = [ :prerequisites, :objectives, @@ -65,10 +65,10 @@ class Admin::Qualiopi::IndicatorsController < Admin::ApplicationController def breadcrumb super - add_breadcrumb Qualiopi.model_name.human(count: 2), admin_qualiopi_root_path + add_breadcrumb Features::Education::Qualiopi.model_name.human(count: 2), admin_features_education_qualiopi_criterions_path if @indicator - add_breadcrumb @indicator.criterion, [:admin, @indicator.criterion] if @indicator.persisted? + add_breadcrumb @indicator.criterion, [:admin, @indicator.criterion] add_breadcrumb @indicator, [:admin, @indicator] else add_breadcrumb 'Créer' @@ -77,6 +77,7 @@ class Admin::Qualiopi::IndicatorsController < Admin::ApplicationController end def indicator_params - params.require(:qualiopi_indicator).permit(:criterion_id, :number, :name, :level_expected, :proof, :requirement, :non_conformity) + params.require(:features_education_qualiopi_indicator) + .permit(:criterion_id, :number, :name, :level_expected, :proof, :requirement, :non_conformity) end end diff --git a/app/controllers/features/education/programs_controller.rb b/app/controllers/features/education/programs_controller.rb new file mode 100644 index 000000000..aae3e1fb3 --- /dev/null +++ b/app/controllers/features/education/programs_controller.rb @@ -0,0 +1,12 @@ +class Features::Education::ProgramsController < ApplicationController + # load_and_authorize_resource + + add_breadcrumb 'Programmes', :features_education_programs_path + + def index + end + + def show + add_breadcrumb @program + end +end diff --git a/app/controllers/programs_controller.rb b/app/controllers/programs_controller.rb deleted file mode 100644 index 233e001e2..000000000 --- a/app/controllers/programs_controller.rb +++ /dev/null @@ -1,12 +0,0 @@ -class ProgramsController < ApplicationController - load_and_authorize_resource - - add_breadcrumb 'Programmes', :programs_path - - def index - end - - def show - add_breadcrumb @program - end -end diff --git a/app/models/feature.rb b/app/models/feature.rb new file mode 100644 index 000000000..626d9e5a2 --- /dev/null +++ b/app/models/feature.rb @@ -0,0 +1,7 @@ +class Feature + def self.all + [ + :education + ] + end +end diff --git a/app/models/qualiopi.rb b/app/models/features/education.rb similarity index 56% rename from app/models/qualiopi.rb rename to app/models/features/education.rb index 720816e22..2e057fd3d 100644 --- a/app/models/qualiopi.rb +++ b/app/models/features/education.rb @@ -1,7 +1,7 @@ -module Qualiopi +module Features::Education extend ActiveModel::Naming def self.table_name_prefix - 'qualiopi_' + 'features_education_' end end diff --git a/app/models/program.rb b/app/models/features/education/program.rb similarity index 82% rename from app/models/program.rb rename to app/models/features/education/program.rb index ab6c0bdcc..b337ee29d 100644 --- a/app/models/program.rb +++ b/app/models/features/education/program.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: programs +# Table name: features_education_programs # # id :uuid not null, primary key # accessibility :text @@ -23,13 +23,13 @@ # # Indexes # -# index_programs_on_university_id (university_id) +# index_features_education_programs_on_university_id (university_id) # # Foreign Keys # # fk_rails_... (university_id => universities.id) # -class Program < ApplicationRecord +class Features::Education::Program < ApplicationRecord belongs_to :university enum level: { diff --git a/app/models/features/education/qualiopi.rb b/app/models/features/education/qualiopi.rb new file mode 100644 index 000000000..ebc7b4bf0 --- /dev/null +++ b/app/models/features/education/qualiopi.rb @@ -0,0 +1,7 @@ +module Features::Education::Qualiopi + extend ActiveModel::Naming + + def self.table_name_prefix + 'features_education_qualiopi_' + end +end diff --git a/app/models/qualiopi/criterion.rb b/app/models/features/education/qualiopi/criterion.rb similarity index 71% rename from app/models/qualiopi/criterion.rb rename to app/models/features/education/qualiopi/criterion.rb index 051089a79..165c44210 100644 --- a/app/models/qualiopi/criterion.rb +++ b/app/models/features/education/qualiopi/criterion.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: qualiopi_criterions +# Table name: features_education_qualiopi_criterions # # id :uuid not null, primary key # description :text @@ -9,7 +9,7 @@ # created_at :datetime not null # updated_at :datetime not null # -class Qualiopi::Criterion < ApplicationRecord +class Features::Education::Qualiopi::Criterion < ApplicationRecord has_many :indicators def to_s diff --git a/app/models/qualiopi/indicator.rb b/app/models/features/education/qualiopi/indicator.rb similarity index 63% rename from app/models/qualiopi/indicator.rb rename to app/models/features/education/qualiopi/indicator.rb index 1603ba28f..fdd33a22e 100644 --- a/app/models/qualiopi/indicator.rb +++ b/app/models/features/education/qualiopi/indicator.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: qualiopi_indicators +# Table name: features_education_qualiopi_indicators # # id :uuid not null, primary key # level_expected :text @@ -15,13 +15,13 @@ # # Indexes # -# index_qualiopi_indicators_on_criterion_id (criterion_id) +# index_features_education_qualiopi_indicators_on_criterion_id (criterion_id) # # Foreign Keys # -# fk_rails_... (criterion_id => qualiopi_criterions.id) +# fk_rails_... (criterion_id => features_education_qualiopi_criterions.id) # -class Qualiopi::Indicator < ApplicationRecord +class Features::Education::Qualiopi::Indicator < ApplicationRecord belongs_to :criterion def to_s diff --git a/app/models/university.rb b/app/models/university.rb index ce30a34fc..27def60d6 100644 --- a/app/models/university.rb +++ b/app/models/university.rb @@ -18,8 +18,7 @@ class University < ApplicationRecord validates_presence_of :name include WithIdentifier - - has_many :programs + include WithFeatureEducation def to_s "#{name}" diff --git a/app/models/university/with_feature_education.rb b/app/models/university/with_feature_education.rb new file mode 100644 index 000000000..356809d49 --- /dev/null +++ b/app/models/university/with_feature_education.rb @@ -0,0 +1,7 @@ +module University::WithFeatureEducation + extend ActiveSupport::Concern + + included do + has_many :features_education_programs, class_name: 'Features::Education::Program', dependent: :destroy + end +end diff --git a/app/models/university/with_identifier.rb b/app/models/university/with_identifier.rb index d7d92f37c..678144f5a 100644 --- a/app/models/university/with_identifier.rb +++ b/app/models/university/with_identifier.rb @@ -2,7 +2,7 @@ module University::WithIdentifier extend ActiveSupport::Concern included do - # todo lower case, numbers, -, _ + # TODO restrict to lower case, numbers, -, _ validates :identifier, presence: true, uniqueness: true end diff --git a/app/views/admin/features/education/dashboard/index.html.erb b/app/views/admin/features/education/dashboard/index.html.erb new file mode 100644 index 000000000..b8cf12aa8 --- /dev/null +++ b/app/views/admin/features/education/dashboard/index.html.erb @@ -0,0 +1 @@ +<% content_for :title, t('features.education.title') %> diff --git a/app/views/admin/programs/_form.html.erb b/app/views/admin/features/education/programs/_form.html.erb similarity index 94% rename from app/views/admin/programs/_form.html.erb rename to app/views/admin/features/education/programs/_form.html.erb index 11ae70c71..b46c733d0 100644 --- a/app/views/admin/programs/_form.html.erb +++ b/app/views/admin/features/education/programs/_form.html.erb @@ -3,7 +3,6 @@ <div class="col-md-4"> <h2 class="h4">Informations essentielles</h2> <%= f.input :name %> - <%= f.association :university, include_blank: false%> <%= f.input :level, include_blank: false %> <%= f.input :capacity %> <%= f.input :ects %> diff --git a/app/views/admin/programs/_program.json.jbuilder b/app/views/admin/features/education/programs/_program.json.jbuilder similarity index 100% rename from app/views/admin/programs/_program.json.jbuilder rename to app/views/admin/features/education/programs/_program.json.jbuilder diff --git a/app/views/admin/programs/edit.html.erb b/app/views/admin/features/education/programs/edit.html.erb similarity index 100% rename from app/views/admin/programs/edit.html.erb rename to app/views/admin/features/education/programs/edit.html.erb diff --git a/app/views/admin/programs/index.html.erb b/app/views/admin/features/education/programs/index.html.erb similarity index 59% rename from app/views/admin/programs/index.html.erb rename to app/views/admin/features/education/programs/index.html.erb index 02036c6d5..15834d84e 100644 --- a/app/views/admin/programs/index.html.erb +++ b/app/views/admin/features/education/programs/index.html.erb @@ -1,10 +1,10 @@ -<% content_for :title, Program.model_name.human(count: 2) %> +<% content_for :title, Features::Education::Program.model_name.human(count: 2) %> <table class="table"> <thead> <tr> - <th><%= Program.human_attribute_name('name') %></th> - <th><%= Program.human_attribute_name('level') %></th> + <th><%= Features::Education::Program.human_attribute_name('name') %></th> + <th><%= Features::Education::Program.human_attribute_name('level') %></th> <th></th> </tr> </thead> @@ -23,5 +23,5 @@ </table> <% content_for :buttons do %> - <%= create_link Program %> + <%= create_link Features::Education::Program %> <% end %> diff --git a/app/views/admin/programs/index.json.jbuilder b/app/views/admin/features/education/programs/index.json.jbuilder similarity index 100% rename from app/views/admin/programs/index.json.jbuilder rename to app/views/admin/features/education/programs/index.json.jbuilder diff --git a/app/views/admin/features/education/programs/new.html.erb b/app/views/admin/features/education/programs/new.html.erb new file mode 100644 index 000000000..8fb3beee6 --- /dev/null +++ b/app/views/admin/features/education/programs/new.html.erb @@ -0,0 +1,3 @@ +<% content_for :title, Features::Education::Program.model_name.human %> + +<%= render 'form', program: @program %> diff --git a/app/views/admin/programs/show.html.erb b/app/views/admin/features/education/programs/show.html.erb similarity index 92% rename from app/views/admin/programs/show.html.erb rename to app/views/admin/features/education/programs/show.html.erb index bf56bb375..7ebca9492 100644 --- a/app/views/admin/programs/show.html.erb +++ b/app/views/admin/features/education/programs/show.html.erb @@ -1,10 +1,5 @@ <% content_for :title, @program %> -<p> - <strong>University:</strong> - <%= @program.university %> -</p> - <p> <strong>Name:</strong> <%= @program.name %> diff --git a/app/views/admin/programs/show.json.jbuilder b/app/views/admin/features/education/programs/show.json.jbuilder similarity index 100% rename from app/views/admin/programs/show.json.jbuilder rename to app/views/admin/features/education/programs/show.json.jbuilder diff --git a/app/views/admin/qualiopi/criterions/_form.html.erb b/app/views/admin/features/education/qualiopi/criterions/_form.html.erb similarity index 100% rename from app/views/admin/qualiopi/criterions/_form.html.erb rename to app/views/admin/features/education/qualiopi/criterions/_form.html.erb diff --git a/app/views/admin/qualiopi/criterions/_qualiopi_criterion.json.jbuilder b/app/views/admin/features/education/qualiopi/criterions/_qualiopi_criterion.json.jbuilder similarity index 100% rename from app/views/admin/qualiopi/criterions/_qualiopi_criterion.json.jbuilder rename to app/views/admin/features/education/qualiopi/criterions/_qualiopi_criterion.json.jbuilder diff --git a/app/views/admin/qualiopi/criterions/edit.html.erb b/app/views/admin/features/education/qualiopi/criterions/edit.html.erb similarity index 100% rename from app/views/admin/qualiopi/criterions/edit.html.erb rename to app/views/admin/features/education/qualiopi/criterions/edit.html.erb diff --git a/app/views/admin/qualiopi/criterions/index.html.erb b/app/views/admin/features/education/qualiopi/criterions/index.html.erb similarity index 84% rename from app/views/admin/qualiopi/criterions/index.html.erb rename to app/views/admin/features/education/qualiopi/criterions/index.html.erb index 260dae318..f8c3744a6 100644 --- a/app/views/admin/qualiopi/criterions/index.html.erb +++ b/app/views/admin/features/education/qualiopi/criterions/index.html.erb @@ -1,4 +1,4 @@ -<% content_for :title, Qualiopi.model_name %> +<% content_for :title, Features::Education::Qualiopi.model_name.human %> <div class="row"> <% @criterions.each do |criterion| %> diff --git a/app/views/admin/qualiopi/criterions/index.json.jbuilder b/app/views/admin/features/education/qualiopi/criterions/index.json.jbuilder similarity index 100% rename from app/views/admin/qualiopi/criterions/index.json.jbuilder rename to app/views/admin/features/education/qualiopi/criterions/index.json.jbuilder diff --git a/app/views/admin/features/education/qualiopi/criterions/new.html.erb b/app/views/admin/features/education/qualiopi/criterions/new.html.erb new file mode 100644 index 000000000..d268b8618 --- /dev/null +++ b/app/views/admin/features/education/qualiopi/criterions/new.html.erb @@ -0,0 +1,3 @@ +<% content_for :title, Features::Education::Qualiopi::Criterion.model_name.human %> + +<%= render 'form', criterion: @criterion %> diff --git a/app/views/admin/qualiopi/criterions/show.html.erb b/app/views/admin/features/education/qualiopi/criterions/show.html.erb similarity index 100% rename from app/views/admin/qualiopi/criterions/show.html.erb rename to app/views/admin/features/education/qualiopi/criterions/show.html.erb diff --git a/app/views/admin/qualiopi/criterions/show.json.jbuilder b/app/views/admin/features/education/qualiopi/criterions/show.json.jbuilder similarity index 100% rename from app/views/admin/qualiopi/criterions/show.json.jbuilder rename to app/views/admin/features/education/qualiopi/criterions/show.json.jbuilder diff --git a/app/views/admin/qualiopi/indicators/_form.html.erb b/app/views/admin/features/education/qualiopi/indicators/_form.html.erb similarity index 100% rename from app/views/admin/qualiopi/indicators/_form.html.erb rename to app/views/admin/features/education/qualiopi/indicators/_form.html.erb diff --git a/app/views/admin/qualiopi/indicators/_qualiopi_indicator.json.jbuilder b/app/views/admin/features/education/qualiopi/indicators/_qualiopi_indicator.json.jbuilder similarity index 100% rename from app/views/admin/qualiopi/indicators/_qualiopi_indicator.json.jbuilder rename to app/views/admin/features/education/qualiopi/indicators/_qualiopi_indicator.json.jbuilder diff --git a/app/views/admin/qualiopi/indicators/edit.html.erb b/app/views/admin/features/education/qualiopi/indicators/edit.html.erb similarity index 100% rename from app/views/admin/qualiopi/indicators/edit.html.erb rename to app/views/admin/features/education/qualiopi/indicators/edit.html.erb diff --git a/app/views/admin/qualiopi/indicators/index.html.erb b/app/views/admin/features/education/qualiopi/indicators/index.html.erb similarity index 54% rename from app/views/admin/qualiopi/indicators/index.html.erb rename to app/views/admin/features/education/qualiopi/indicators/index.html.erb index 0f6cc75ae..4f0315420 100644 --- a/app/views/admin/qualiopi/indicators/index.html.erb +++ b/app/views/admin/features/education/qualiopi/indicators/index.html.erb @@ -1,11 +1,11 @@ -<% content_for :title, Qualiopi::Indicator.model_name.human(count: 2) %> +<% content_for :title, Features::Education::Qualiopi::Indicator.model_name.human(count: 2) %> <table class="table"> <thead> <tr> - <th><%= Qualiopi::Indicator.human_attribute_name('criterion') %></th> - <th><%= Qualiopi::Indicator.human_attribute_name('number') %></th> - <th><%= Qualiopi::Indicator.human_attribute_name('name') %></th> + <th><%= Features::Education::Qualiopi::Indicator.human_attribute_name('criterion') %></th> + <th><%= Features::Education::Qualiopi::Indicator.human_attribute_name('number') %></th> + <th><%= Features::Education::Qualiopi::Indicator.human_attribute_name('name') %></th> <th></th> </tr> </thead> diff --git a/app/views/admin/qualiopi/indicators/index.json.jbuilder b/app/views/admin/features/education/qualiopi/indicators/index.json.jbuilder similarity index 100% rename from app/views/admin/qualiopi/indicators/index.json.jbuilder rename to app/views/admin/features/education/qualiopi/indicators/index.json.jbuilder diff --git a/app/views/admin/features/education/qualiopi/indicators/new.html.erb b/app/views/admin/features/education/qualiopi/indicators/new.html.erb new file mode 100644 index 000000000..73009c588 --- /dev/null +++ b/app/views/admin/features/education/qualiopi/indicators/new.html.erb @@ -0,0 +1,3 @@ +<% content_for :title, Features::Education::Qualiopi::Indicator.model_name.human %> + +<%= render 'form', indicator: @indicator %> diff --git a/app/views/admin/qualiopi/indicators/show.html.erb b/app/views/admin/features/education/qualiopi/indicators/show.html.erb similarity index 77% rename from app/views/admin/qualiopi/indicators/show.html.erb rename to app/views/admin/features/education/qualiopi/indicators/show.html.erb index c3356b034..a935cc4ba 100644 --- a/app/views/admin/qualiopi/indicators/show.html.erb +++ b/app/views/admin/features/education/qualiopi/indicators/show.html.erb @@ -5,7 +5,7 @@ <div class="row"> <% [:level_expected, :proof, :requirement, :non_conformity].each do |attribute| %> <div class="col-md-3"> - <h2 class="h4 mt-4"><%= Qualiopi::Indicator.human_attribute_name(attribute) %></h2> + <h2 class="h4 mt-4"><%= Features::Education::Qualiopi::Indicator.human_attribute_name(attribute) %></h2> <p><%= @indicator.send attribute %></p> </div> <% end %> @@ -14,9 +14,9 @@ <table class="table mt-5"> <thead> <tr> - <th><%= Program.model_name.human %></th> + <th><%= Features::Education::Program.model_name.human %></th> <% @checks.each do |check| %> - <th><%= Program.human_attribute_name(check) %></th> + <th><%= Features::Education::Program.human_attribute_name(check) %></th> <% end %> </tr> </thead> diff --git a/app/views/admin/qualiopi/indicators/show.json.jbuilder b/app/views/admin/features/education/qualiopi/indicators/show.json.jbuilder similarity index 100% rename from app/views/admin/qualiopi/indicators/show.json.jbuilder rename to app/views/admin/features/education/qualiopi/indicators/show.json.jbuilder diff --git a/app/views/admin/programs/new.html.erb b/app/views/admin/programs/new.html.erb deleted file mode 100644 index 51a4f8e85..000000000 --- a/app/views/admin/programs/new.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% content_for :title, Program.model_name.human %> - -<%= render 'form', program: @program %> diff --git a/app/views/admin/qualiopi/criterions/new.html.erb b/app/views/admin/qualiopi/criterions/new.html.erb deleted file mode 100644 index 0c9ecf976..000000000 --- a/app/views/admin/qualiopi/criterions/new.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% content_for :title, Qualiopi::Criterion.model_name.human %> - -<%= render 'form', criterion: @criterion %> diff --git a/app/views/admin/qualiopi/indicators/new.html.erb b/app/views/admin/qualiopi/indicators/new.html.erb deleted file mode 100644 index 49f8a6a3a..000000000 --- a/app/views/admin/qualiopi/indicators/new.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% content_for :title, Qualiopi::Indicator.model_name.human %> - -<%= render 'form', indicator: @indicator %> diff --git a/app/views/programs/_program.json.jbuilder b/app/views/features/education/programs/_program.json.jbuilder similarity index 100% rename from app/views/programs/_program.json.jbuilder rename to app/views/features/education/programs/_program.json.jbuilder diff --git a/app/views/programs/index.html.erb b/app/views/features/education/programs/index.html.erb similarity index 100% rename from app/views/programs/index.html.erb rename to app/views/features/education/programs/index.html.erb diff --git a/app/views/programs/index.json.jbuilder b/app/views/features/education/programs/index.json.jbuilder similarity index 100% rename from app/views/programs/index.json.jbuilder rename to app/views/features/education/programs/index.json.jbuilder diff --git a/app/views/programs/show.html.erb b/app/views/features/education/programs/show.html.erb similarity index 100% rename from app/views/programs/show.html.erb rename to app/views/features/education/programs/show.html.erb diff --git a/app/views/programs/show.json.jbuilder b/app/views/features/education/programs/show.json.jbuilder similarity index 100% rename from app/views/programs/show.json.jbuilder rename to app/views/features/education/programs/show.json.jbuilder diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb index c8865931a..faa147e7f 100644 --- a/config/admin_navigation.rb +++ b/config/admin_navigation.rb @@ -1,13 +1,16 @@ SimpleNavigation::Configuration.run do |navigation| navigation.renderer = ::Appstack::SimpleNavigationRenderer navigation.auto_highlight = true - # navigation.highlight_on_subpath = true + navigation.highlight_on_subpath = true navigation.items do |primary| - primary.item :dashboard, 'Tableau de bord', admin_root_path, { icon: 'tachometer-alt' } + primary.item :dashboard, t('dashboard'), admin_root_path, { icon: 'tachometer-alt' } primary.item :universities, University.model_name.human(count: 2), admin_universities_path, { icon: 'university' } primary.item :users, User.model_name.human(count: 2), admin_users_path, { icon: 'user' } - primary.item :programs, Program.model_name.human(count: 2), admin_programs_path, { icon: 'graduation-cap' } - primary.item :qualiopi, 'Qualiopi', admin_qualiopi_root_path, { icon: 'check-circle' } - primary.item :settings, 'Paramètres', '', { icon: 'cog' } + primary.item :education, I18n.t('features.education.title'), nil, { icon: 'graduation-cap' } do |secondary| + secondary.item :dashboard, t('dashboard'), admin_features_education_dashboard_path + secondary.item :programs, Features::Education::Program.model_name.human(count: 2), admin_features_education_programs_path + secondary.item :qualiopi, Features::Education::Qualiopi.model_name.human, admin_features_education_qualiopi_criterions_path + end + primary.item :settings, 'Paramètres', nil, { icon: 'cog' } end end diff --git a/config/application.rb b/config/application.rb index 7c86e6c13..57b2e3cc5 100644 --- a/config/application.rb +++ b/config/application.rb @@ -33,6 +33,7 @@ module Osuny config.i18n.available_locales = [:fr] config.i18n.default_locale = :fr + config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.yml"] config.generators do |g| g.orm :active_record, primary_key_type: :uuid diff --git a/config/locales/features/education/fr.yml b/config/locales/features/education/fr.yml new file mode 100644 index 000000000..dc43f37b8 --- /dev/null +++ b/config/locales/features/education/fr.yml @@ -0,0 +1,67 @@ +fr: + features: + education: + title: Education + qualiopi: Qualiopi + activerecord: + models: + features/education/program: + one: Formation + other: Formations + features/education/qualiopi: + one: Qualiopi + other: Qualiopi + features/education/qualiopi/criterion: + one: Critère + other: Critères + features/education/qualiopi/indicator: + one: Indicateur + other: Indicateurs + attributes: + features/education/program: + name: Nom + level: Niveau + capacity: Capacité + ects: Crédits ECTS + continuing: Formation continue + prerequisites: Prérequis + objectives: Objectifs + duration: Durée + registration: Modalités et délais d’accès + pricing: Tarifs + contacts: Contacts + pedagogy: Méthodes mobilisées + evaluation: Modalités d’évaluation + accessibility: Accessibilité + features/education/qualiopi/criterion: + number: Numéro + name: Nom + description: Description + features/education/qualiopi/indicator: + number: Numéro + name: Nom + criterion: Critère + description: Description + level_expected: Niveau attendu + proof: Éléments de preuve + requirement: Obligations spécifiques + non_conformity: Non-conformité + enums: + features/education/program: + level: + bachelor: Licence / bachelor + master: Master + doctor: Doctorat + simple_form: + hints: + features/education/program: + capacity: Nombre de places disponibles par promotion + ects: European Credits Transfer System + prerequisites: Préalables nécessaires ou indispensables pour bénéficier d'une prestation déterminée. L'absence de prérequis doit être mentionnée. + objectives: "Énoncé des aptitudes et compétences, visées et évaluables, qui seront acquises au cours de la prestation. Aptitude : capacité d'appliquer un savoir et d'utiliser un savoir-faire pour réaliser des tâches et résoudre des problèmes. Compétences : capacité avérée de mettre en œuvre des savoirs, des savoir-faire et des dispositions personnelles, sociales ou méthodologiques dans des situations de travail ou d’études/formations, pour le développement professionnel ou personnel." + duration: La durée peut être exprimée en heure ou en jour. Elle peut également être forfaitisée ou estimée. + registration: "Délai d’accès : durée estimée entre la demande du bénéficiaire et le début de la prestation." + pricing: Prix de la prestation ou conditions tarifaires. + pedagogy: Modalités pédagogiques et/ou moyens et/ou outils utilisés pour mener à bien la prestation dispensée. + evaluation: Moyens mobilisés pour me- surer à l'aide de critères objectifs les acquis du bénéficiaire en cours et/ou à la fin de la prestation. + accessibility: Conditions d'accueil et d’accès des publics en situation de handicap (locaux, adaptation des moyens de la prestation). diff --git a/config/locales/fr.yml b/config/locales/fr.yml index f35b30ce9..96d1d628c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1,17 +1,9 @@ fr: true: Oui false: Non + dashboard: Tableau de bord activerecord: models: - program: - one: Formation - other: Formations - qualiopi/criterion: - one: Critère - other: Critères - qualiopi/indicator: - one: Indicateur - other: Indicateurs university: one: Université other: Universités @@ -19,34 +11,6 @@ fr: one: Utilisateur other: Utilisateurs attributes: - program: - name: Nom - level: Niveau - capacity: Capacité - ects: Crédits ECTS - continuing: Formation continue - prerequisites: Prérequis - objectives: Objectifs - duration: Durée - registration: Modalités et délais d’accès - pricing: Tarifs - contacts: Contacts - pedagogy: Méthodes mobilisées - evaluation: Modalités d’évaluation - accessibility: Accessibilité - qualiopi/criterion: - number: Numéro - name: Nom - description: Description - qualiopi/indicator: - number: Numéro - name: Nom - criterion: Critère - description: Description - level_expected: Niveau attendu - proof: Éléments de preuve - requirement: Obligations spécifiques - non_conformity: Non-conformité university: name: Nom address: Adresse @@ -62,22 +26,5 @@ fr: first_name: Prénom last_name: Nom role: Rôle - enums: - program: - level: - bachelor: Licence / bachelor - master: Master - doctor: Doctorat simple_form: hints: - program: - capacity: Nombre de places disponibles par promotion - ects: European Credits Transfer System - prerequisites: Préalables nécessaires ou indispensables pour bénéficier d'une prestation déterminée. L'absence de prérequis doit être mentionnée. - objectives: "Énoncé des aptitudes et compétences, visées et évaluables, qui seront acquises au cours de la prestation. Aptitude : capacité d'appliquer un savoir et d'utiliser un savoir-faire pour réaliser des tâches et résoudre des problèmes. Compétences : capacité avérée de mettre en œuvre des savoirs, des savoir-faire et des dispositions personnelles, sociales ou méthodologiques dans des situations de travail ou d’études/formations, pour le développement professionnel ou personnel." - duration: La durée peut être exprimée en heure ou en jour. Elle peut également être forfaitisée ou estimée. - registration: "Délai d’accès : durée estimée entre la demande du bénéficiaire et le début de la prestation." - pricing: Prix de la prestation ou conditions tarifaires. - pedagogy: Modalités pédagogiques et/ou moyens et/ou outils utilisés pour mener à bien la prestation dispensée. - evaluation: Moyens mobilisés pour me- surer à l'aide de critères objectifs les acquis du bénéficiaire en cours et/ou à la fin de la prestation. - accessibility: Conditions d'accueil et d’accès des publics en situation de handicap (locaux, adaptation des moyens de la prestation). diff --git a/config/routes.rb b/config/routes.rb index 94aa132c4..b52be4802 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,5 +5,5 @@ Rails.application.routes.draw do resources :programs, only: [:index, :show] - root to: 'programs#index' + root to: 'home#index' end diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 59b29dc59..27bedfcad 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -1,12 +1,11 @@ namespace :admin do resources :universities resources :users - resources :programs - namespace :qualiopi do - resources :criterions - resources :indicators - root to: 'criterions#index' + namespace :features, path: '' do + Feature.all.each do |feature| + draw "admin/features/#{feature}" + end end root to: 'dashboard#index' diff --git a/config/routes/admin/features/education.rb b/config/routes/admin/features/education.rb new file mode 100644 index 000000000..eac3359ce --- /dev/null +++ b/config/routes/admin/features/education.rb @@ -0,0 +1,8 @@ +namespace :education do + resources :programs + namespace :qualiopi do + resources :criterions + resources :indicators + end + get 'dashboard' => 'dashboard#index', as: :dashboard +end diff --git a/db/migrate/20210811082802_namespace_features.rb b/db/migrate/20210811082802_namespace_features.rb new file mode 100644 index 000000000..81ff89fb8 --- /dev/null +++ b/db/migrate/20210811082802_namespace_features.rb @@ -0,0 +1,7 @@ +class NamespaceFeatures < ActiveRecord::Migration[6.1] + def change + rename_table :programs, :features_education_programs + rename_table :qualiopi_indicators, :features_education_qualiopi_indicators + rename_table :qualiopi_criterions, :features_education_qualiopi_criterions + end +end diff --git a/db/schema.rb b/db/schema.rb index 03c04b4c6..cc201452b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,13 +10,13 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_08_09_084645) do +ActiveRecord::Schema.define(version: 2021_08_11_082802) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" - create_table "programs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + create_table "features_education_programs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "university_id", null: false t.string "name" t.integer "level" @@ -34,10 +34,10 @@ ActiveRecord::Schema.define(version: 2021_08_09_084645) do t.datetime "updated_at", precision: 6, null: false t.text "pricing" t.text "contacts" - t.index ["university_id"], name: "index_programs_on_university_id" + t.index ["university_id"], name: "index_features_education_programs_on_university_id" end - create_table "qualiopi_criterions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + create_table "features_education_qualiopi_criterions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.integer "number" t.text "name" t.text "description" @@ -45,7 +45,7 @@ ActiveRecord::Schema.define(version: 2021_08_09_084645) do t.datetime "updated_at", precision: 6, null: false end - create_table "qualiopi_indicators", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + create_table "features_education_qualiopi_indicators", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "criterion_id", null: false t.integer "number" t.text "name" @@ -55,7 +55,7 @@ ActiveRecord::Schema.define(version: 2021_08_09_084645) do t.text "non_conformity" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false - t.index ["criterion_id"], name: "index_qualiopi_indicators_on_criterion_id" + t.index ["criterion_id"], name: "index_features_education_qualiopi_indicators_on_criterion_id" end create_table "universities", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| @@ -101,6 +101,6 @@ ActiveRecord::Schema.define(version: 2021_08_09_084645) do t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true end - add_foreign_key "programs", "universities" - add_foreign_key "qualiopi_indicators", "qualiopi_criterions", column: "criterion_id" + add_foreign_key "features_education_programs", "universities" + add_foreign_key "features_education_qualiopi_indicators", "features_education_qualiopi_criterions", column: "criterion_id" end -- GitLab