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 0000000000000000000000000000000000000000..6f9adb9587f06b65daaef50bf7513e3c1bd1e6dc --- /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 0000000000000000000000000000000000000000..072f60f724e6538913ee7d57ec5b3bdda85e791f --- /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 e74568c38ec98761ba8129ad71c51e30542ec878..11673833223f05f869e9d9ca4427c7d3b001c540 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 f62fa6fc402c8cb803e22844cef6df6205dbb630..5cbf7e19ac7fcc3dfa1a46df05f4e01c29e1e6f0 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 11f3259d0a014afe9cea5c149a400439e2adafeb..d21e60aacd34520843b878c4b5b0c25b38abee60 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 0000000000000000000000000000000000000000..aae3e1fb35481f39bee9e71b00025c727faa623b --- /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 233e001e2e02b3f8960b8a561c612258eda659f7..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..626d9e5a2b0b72d7cc4d5903ed78ea1c82d098b0 --- /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 720816e22b7048c3843f85402ede6a8e923f87b7..2e057fd3ddd39d336c84ba1c025f3ca012db7b2c 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 ab6c0bdccaff2a50f1c0e217c9e0215bc3bd5898..b337ee29d1845c0997ffb9fc6e6ddb1871c9e2ca 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 0000000000000000000000000000000000000000..ebc7b4bf0659d1e257991b9e1fc26447d96cf322 --- /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 051089a792bcba7468224c54fda1c2e754c0f2de..165c442108b1d231f643893d1f559719fae2ae75 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 1603ba28f54e9c1c54408161b06fbab8ad9554b7..fdd33a22e1d497295a78f3aab54a3079032bcbb3 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 ce30a34fc479de5308102ce4afef2280df47721b..27def60d6b90721cb6883cb4e85819bdfb5ba362 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 0000000000000000000000000000000000000000..356809d49ac36c48101370dd8c701bf990ab6556 --- /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 d7d92f37c150e5c022a10ce8f619b08beca313db..678144f5a906e6e7d9714f247b4da264e68010ca 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 0000000000000000000000000000000000000000..b8cf12aa84274a028b52713101e652d0731768e3 --- /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 11ae70c71f4073e14f056cb9945137820d4685f2..b46c733d033f04fff7a24652a0404789d831d8f4 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 02036c6d57eaab60dc0b50c1fd5fa964e2d99797..15834d84e5161583af3331e2c4aec3ddcd788bdf 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 0000000000000000000000000000000000000000..8fb3beee6168a70cf27218b3adc412e6e26952fc --- /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 bf56bb37554ac1a8ef49cb33331d790e67831490..7ebca949241cbfdc19764a396f19ff909e030883 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 260dae31812edf55a55d5fa296dd46eb4b334c0f..f8c3744a6512cb372be1a2198f2e9570f76374e3 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 0000000000000000000000000000000000000000..d268b86181385f2789826069f05ab9b69685c4e1 --- /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 0f6cc75aef0a15387c69fa226ebd54a87abb5e5d..4f0315420892216426d8030eb5847c39384001b7 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 0000000000000000000000000000000000000000..73009c588a7ef47db4d0e4d79a9f6e269052fd90 --- /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 c3356b0344690eb227e9cf8e17557f769921943b..a935cc4bac37171a849ee044e81eaa9e0d24f694 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 51a4f8e855313182770fa953fff468e53666e881..0000000000000000000000000000000000000000 --- 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 0c9ecf9763172f87ae124eaa78b4a924bc766d18..0000000000000000000000000000000000000000 --- 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 49f8a6a3a96e2e9bb41e9e049ed0cd541df55a5f..0000000000000000000000000000000000000000 --- 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 c8865931a6956255c789661ea11129b259f2501c..faa147e7f7dd40cdc2e82622b186406056baf50c 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 7c86e6c1390ccce6f88e9faf9e4880827d9bef32..57b2e3cc52d6f4f5f92400c0d98a76f586551a2b 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 0000000000000000000000000000000000000000..dc43f37b892bb761ac0bb49d94999564f7bb9aab --- /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 f35b30ce98a55d0bd26f66f2e805c48327de0dd4..96d1d628c717a56bdc1e683cd5a3a95d2b60dbcb 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 94aa132c4d2e5d64fe3161ce48b2b386b73f7da2..b52be4802c2b16394a423e1ec82e244a5ccd1555 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 59b29dc59d860f142d5ca60b2e39a5a8c91756dd..27bedfcadc910f2171a114d4a49b268e8cf14b09 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 0000000000000000000000000000000000000000..eac3359ce6f2181bec8e1582992534c019951c15 --- /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 0000000000000000000000000000000000000000..81ff89fb80f6d5e23d2337bcf4a137a8d25f8135 --- /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 03c04b4c69f1d956d5e77e2ac9ff6c38ef4f3dd4..cc201452bbe5bc05169a791b32e01c80bb7654e0 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