Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
497e1ed
Improve layouts and titles
JeSuisUnCaillou Jun 4, 2026
9a203d0
display the card preview
JeSuisUnCaillou Jun 4, 2026
45b018c
display introduction WYSIWYG
JeSuisUnCaillou Jun 4, 2026
e3db736
improve display of preview and introduction sections
JeSuisUnCaillou Jun 4, 2026
1416d74
improve a spacing
JeSuisUnCaillou Jun 4, 2026
8b4cdf0
display all from's blocks WYSIWYG
JeSuisUnCaillou Jun 4, 2026
24ed504
display if a block is static
JeSuisUnCaillou Jun 4, 2026
ba62eed
display properties on top
JeSuisUnCaillou Jun 4, 2026
adbdb3c
display CGUS in a WYSIWYG fashien
JeSuisUnCaillou Jun 4, 2026
e385630
fake modify button on each section
JeSuisUnCaillou Jun 4, 2026
22c5857
inert form
JeSuisUnCaillou Jun 4, 2026
4859003
improve display of preperties
JeSuisUnCaillou Jun 4, 2026
f0a5c9c
fix display of no service provider
JeSuisUnCaillou Jun 5, 2026
562e74c
remove formulaire description : it's unused.
JeSuisUnCaillou Jun 5, 2026
4b4d92f
move title_with_modify_button to shared
JeSuisUnCaillou Jun 5, 2026
1b889fc
display properties like cas usage
JeSuisUnCaillou Jun 5, 2026
e8c0006
add kind property
JeSuisUnCaillou Jun 5, 2026
a4b033f
more properties
JeSuisUnCaillou Jun 5, 2026
8b6a768
display all features config
JeSuisUnCaillou Jun 5, 2026
02b6c03
remove parameters wi will replace by the form WYSIWYG
JeSuisUnCaillou Jun 5, 2026
1aa40f3
factorise formulaire wysiwyg render
JeSuisUnCaillou Jun 5, 2026
58eab36
display demande libre in formulaire
JeSuisUnCaillou Jun 5, 2026
b9dca16
make a separate page for the list of cas d'usages
JeSuisUnCaillou Jun 5, 2026
b8eff10
improve cas d'usages link with a card
JeSuisUnCaillou Jun 5, 2026
e33d115
move introduction to the shared partial
JeSuisUnCaillou Jun 5, 2026
a1531ec
don't display cgus in cas d'usages
JeSuisUnCaillou Jun 5, 2026
fe18c8b
improve cas d'usages index title
JeSuisUnCaillou Jun 5, 2026
9d6994a
harmonize a margin
JeSuisUnCaillou Jun 5, 2026
c406e44
missing double dot
JeSuisUnCaillou Jun 5, 2026
aac20b6
fake autmated emails link
JeSuisUnCaillou Jun 5, 2026
4f19660
fix wordings of cas usages
JeSuisUnCaillou Jun 5, 2026
837fbc1
improve badges on cas usages index
JeSuisUnCaillou Jun 5, 2026
aa222cd
improve titel
JeSuisUnCaillou Jun 5, 2026
f753916
improve badges on cas usage index
JeSuisUnCaillou Jun 5, 2026
f003889
display stats on formulaires list
JeSuisUnCaillou Jun 5, 2026
67ca316
factorise badges counts
JeSuisUnCaillou Jun 5, 2026
04f9847
fix
JeSuisUnCaillou Jun 5, 2026
54b4675
fix card layout
JeSuisUnCaillou Jun 5, 2026
7a8408b
display counts on fomulaire show header
JeSuisUnCaillou Jun 5, 2026
e2d91ce
improve display of header badges
JeSuisUnCaillou Jun 5, 2026
a864bb2
display stats in cas usage show
JeSuisUnCaillou Jun 5, 2026
e7a4036
rename configuration
JeSuisUnCaillou Jun 5, 2026
f960a5f
add links to formulaire show
JeSuisUnCaillou Jun 5, 2026
ed2dd50
links in cas usage show
JeSuisUnCaillou Jun 5, 2026
1b79b0a
move links in cas usage header
JeSuisUnCaillou Jun 5, 2026
8ab084f
don't display actions on index
JeSuisUnCaillou Jun 5, 2026
262b5dc
add a button to manage my forms
JeSuisUnCaillou Jun 5, 2026
c1be782
add link to init a request as instructor
JeSuisUnCaillou Jun 5, 2026
4da774f
remove instructor drafts from menu
JeSuisUnCaillou Jun 5, 2026
db9b554
display fomulaires instead of providers if user has only one provider
JeSuisUnCaillou Jun 5, 2026
d597062
add emails automatiques page for formulaires
JeSuisUnCaillou Jun 11, 2026
bb189bc
render email body with stub AR when no real preview available
JeSuisUnCaillou Jun 11, 2026
428da32
always render email body with placeholder stub, remove real AR preview
JeSuisUnCaillou Jun 11, 2026
00180d9
simplify card content
JeSuisUnCaillou Jun 11, 2026
98dd500
explicit tags
JeSuisUnCaillou Jun 11, 2026
2d844b2
capture previously missing automatic emails in catalog
JeSuisUnCaillou Jun 11, 2026
f5ab29f
simplify data
JeSuisUnCaillou Jun 11, 2026
0369a9c
show actual recipient emails for DGFIP APIM and FranceConnect
JeSuisUnCaillou Jun 11, 2026
439fbe9
display emails even when no cas d'usage
JeSuisUnCaillou Jun 11, 2026
3a7d2ba
add administrateur_metier_email stub to fix HubEE approve body rendering
JeSuisUnCaillou Jun 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions app/assets/stylesheets/pages/cas_usages-show.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
.cas-usage-section {
padding: 3rem 0;
}

.cas-usage-section.even:nth-of-type(even) {
background-color: var(--background-alt-grey);
}

.cas-usage-section.odd:nth-of-type(odd) {
background-color: var(--background-alt-grey);
}

.cas-usage-section:first-of-type {
padding: 0 0 3rem 0;
}

.viewer-of-content {
border: 1px solid lightgray;
border-radius: 1rem;
padding: 2rem;
background-color: white;
}

.title-with-modify-button {
display: flex;
flex-direction: row-reverse;
flex-wrap: wrap;
justify-content: right;
}

.title-with-modify-button .title {
flex-grow: 1;
}

.cas-usage-properties {
display: flex;
flex-wrap: wrap;
gap: 1rem;
}

.cas-usage-property {
border: 1px lightgray solid;
padding: 0.5rem 1rem;
border-radius: 5px;
}

.header-count-badges {
display: flex;
flex-direction: column;
justify-content: center;
}

.bordered-link-box {
border: 1px solid #000091;
}
8 changes: 0 additions & 8 deletions app/components/instructor_menu_component.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,6 @@
</a>
</li>

<% if show_drafts %>
<li class="fr-nav__item">
<a class="fr-nav__link center" href="<%= instruction_instructor_draft_requests_path %>" target="_self">
<%= t('layouts.header.menu.instruction.instructor_authorization_requests') %>
</a>
</li>
<% end %>

<% if show_templates %>
<li class="fr-nav__item">
<a class="fr-nav__link center" href="<%= instruction_message_templates_path %>" target="_self">
Expand Down
25 changes: 25 additions & 0 deletions app/controllers/instruction/cas_usages_controller.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,40 @@
class Instruction::CasUsagesController < Instruction::AbstractCatalogueController
before_action :set_formulaire

def index
@cas_usages = @formulaire.available_forms
@demandes_counts = counts_by_form_uid(AuthorizationRequest.where(state: :submitted))
@habilitations_counts = counts_by_form_uid(Authorization.where(state: :active))


@formulaire_demandes_count = @formulaire.authorization_request_class.where(state: :submitted).count
@formulaire_habilitations_counts = Authorization.where(authorization_request_class: @formulaire.authorization_request_class.to_s).where(state: :active).count
end

def show
@cas_usage = @formulaire.available_forms.find { |form| form.uid == params[:uid] }
raise ActiveRecord::RecordNotFound unless @cas_usage

authorize [:instruction, @cas_usage], :show?

@authorization_request = @cas_usage.authorization_request_class.new(form_uid: @cas_usage.uid).tap do |ar|
ar.assign_attributes(@cas_usage.initialize_with)
end.decorate

@cas_usage_demandes_count = AuthorizationRequest.where(state: :submitted).where(form_uid: @cas_usage.uid).count
@cas_usage_habilitations_count = Authorization.where(state: :active).where(form_uid: @cas_usage.uid).count
end

private

def layout_name
'wide_container'
end

def counts_by_form_uid(model)
model.where(form_uid: @cas_usages.map(&:uid)).group(:form_uid).count
end

def set_formulaire
@formulaire = AuthorizationDefinition.find(params.expect(:formulaire_id))
raise ActiveRecord::RecordNotFound unless @formulaire.provider_slug == @data_provider.slug
Expand Down
11 changes: 11 additions & 0 deletions app/controllers/instruction/dashboard_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class Instruction::DashboardController < Instruction::AbstractAuthorizationReque
Tab = Data.define(:id, :path, :count)

def show
@fomulaires_management_path = fomulaires_management_path
case params[:id]
when 'habilitations'
search_object = Instruction::Search::DashboardHabilitationsSearch.new(
Expand Down Expand Up @@ -80,4 +81,14 @@ def search_record_path(record)
def search_terms_is_a_possible_id?
Instruction::Search::DashboardSearch.search_terms_is_a_possible_id?(params)
end

def fomulaires_management_path
data_providers = policy_scope([:instruction, DataProvider]).to_a

if data_providers.count == 1
instruction_formulaires_path(provider_slug: data_providers.first)
else
instruction_data_providers_path
end
end
end
24 changes: 24 additions & 0 deletions app/controllers/instruction/emails_automatiques_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
class Instruction::EmailsAutomatiquesController < Instruction::AbstractCatalogueController
before_action :set_formulaire

def show
@emails = AutomaticEmailsCatalog.new(@formulaire).build
@formulaire_demandes_count = @formulaire.authorization_request_class.where(state: :submitted).count
@formulaire_habilitations_count = Authorization.where(authorization_request_class: @formulaire.authorization_request_class.to_s).where(state: :active).count
end

private

def set_formulaire
@formulaire = AuthorizationDefinition.find(params.expect(:formulaire_id))
raise ActiveRecord::RecordNotFound unless @formulaire.provider_slug == @data_provider.slug

authorize [:instruction, @formulaire], :show?
rescue StaticApplicationRecord::EntryNotFound
raise ActiveRecord::RecordNotFound
end

def layout_name
'wide_container'
end
end
34 changes: 27 additions & 7 deletions app/controllers/instruction/formulaires_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,48 @@ class Instruction::FormulairesController < Instruction::AbstractCatalogueControl
def index
@formulaires = @data_provider.authorization_definitions
.select { |definition| permitted_definition?(definition) }

classes = @formulaires.map(&:authorization_request_class).map(&:to_s)
@demandes_counts = AuthorizationRequest.where(state: :submitted).where(type: classes).group(:type).count
@habilitations_counts = Authorization.where(state: :active).where(authorization_request_class: classes).group(:authorization_request_class).count
end

def show
@formulaire = AuthorizationDefinition.find(params.expect(:id))
raise ActiveRecord::RecordNotFound unless @formulaire.provider_slug == @data_provider.slug

# on utilise la demande libre pour montrer le formulaire
@cas_usage = @formulaire.default_form
@authorization_request = @formulaire.authorization_request_class.new(form_uid: @cas_usage.uid).tap do |ar|
ar.assign_attributes(@cas_usage.initialize_with)
end.decorate

authorize [:instruction, @formulaire], :show?

@cas_usages = @formulaire.available_forms
@demandes_counts = counts_by_form_uid(AuthorizationRequest)
@habilitations_counts = counts_by_form_uid(Authorization)
@cas_usages_count = @formulaire.available_forms.count
@emails_automatiques_count = emails_automatiques_count
@formulaire_demandes_count = @formulaire.authorization_request_class.where(state: :submitted).count
@formulaire_habilitations_count = Authorization.where(authorization_request_class: @formulaire.authorization_request_class.to_s).where(state: :active).count
rescue StaticApplicationRecord::EntryNotFound
raise ActiveRecord::RecordNotFound
end

private

def permitted_definition?(definition)
Instruction::AuthorizationDefinitionPolicy.new(pundit_user, definition).show?
def layout_name
'wide_container'
end

def counts_by_definition(model)

model.where(type: classes).group(:type).count
end

def emails_automatiques_count
AutomaticEmailsCatalog.new(@formulaire).build.count
end

def counts_by_form_uid(model)
model.where(form_uid: @cas_usages.map(&:uid)).group(:form_uid).count
def permitted_definition?(definition)
Instruction::AuthorizationDefinitionPolicy.new(pundit_user, definition).show?
end
end
Loading
Loading