Files
xamxam/app/templates/partials/form/fieldset-licence-explanation.php
Pontoporeia 696259afae Fix form field required states & missing fields per spec
- Admin add: add contact_public checkbox (matching edit form)
- All forms: formats checkbox-list now required
- All forms: jury promoteur·ice interne required, lecteur·ice interne/externe required
- All forms: licence select now required
- Admin edit: add E-mail de confirmation fieldset
- Partage: contact always visible when provided (no contact_public field)
- Partage: filter PACS from AP programs dropdown
- Server-side validation: formats, jury, licence required (create + edit controllers)
- Autofocus mappings for new validation errors
- No duplicate asterisks — verified across all rendered fields
- fix: add missing old() function in admin edit controller
- refactor: move admin email field to Backoffice as Contact interne, never send email
- Untrack admin.log (covered by .gitignore)
2026-05-07 23:39:41 +02:00

112 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Shared partial — "Degrés d'ouverture et licences" fieldset.
*
* Renders:
* 1. Généralités (editable via form help blocks)
* 2. Radio choice: Libre / Interne / Interdit (filtered by enabled flags)
* 3. Licence dropdown + custom licence text input
* 4. CC2r checkbox
*
* Variables consumed:
* array $formData — raw form data for repopulation
* array $licenseTypes — [{id, name}]
* bool $libreEnabled — show Libre option (always true for admin)
* bool $interneEnabled — show Interne option
* bool $interditEnabled — show Interdit option
* string $generalitiesHtml — HTML content for Généralités section (editable)
* int $defaultAccessTypeId — default selected access type (default: 2)
*/
$formData = $formData ?? [];
$licenseTypes = $licenseTypes ?? [];
$libreEnabled = $libreEnabled ?? true;
$interneEnabled = $interneEnabled ?? true;
$interditEnabled = $interditEnabled ?? true;
$generalitiesHtml = $generalitiesHtml ?? '';
$defaultAccessTypeId = $defaultAccessTypeId ?? 2;
?>
<fieldset class="licence-explanation">
<legend>Degrés d'ouverture et licences</legend>
<!-- Généralités -->
<div class="licence-generalites">
<h3>Généralités</h3>
<?php if ($generalitiesHtml): ?>
<div class="form-help-editable"><?= $generalitiesHtml ?></div>
<?php else: ?>
<ul>
<li>L'auteur·ice peut décider entre trois degrés de partage de son travail : <strong>libre</strong>, <strong>interne</strong>, <strong>interdit</strong>.</li>
<li>L'auteur·ice peut, à tout moment, décider de <strong>restreindre</strong> le degré d'accès à son travail. Il ne peut néanmoins pas l'ouvrir davantage.</li>
<li>Le choix effectué dans ce formulaire sera d'application <strong>une semaine après la soutenance orale</strong> de l'auteur·ice. Celui-ci peut donc décider de restreindre ce choix avant sa publication (mais pas l'ouvrir).</li>
<li>L'erg se réserve le droit de restreindre le degré d'ouverture du TFE ce en accord avec le règlement.</li>
<li>Dans tous les cas, l'auteur·ice garde les droits d'auteurs, de diffusion, d'utilisation, etc. de son travail sauf si la licence choisie restreindrait ses droits.</li>
<li>La diffusion « xamxam » est indépendante de la diffusion à la BAIU.</li>
</ul>
<?php endif; ?>
</div>
<!-- Degré d'ouverture -->
<div class="licence-choice">
<h3>J'autorise l'erg à archiver mon TFE de la manière suivante :</h3>
<?php $selectedAccess = $formData['access_type_id'] ?? (string)$defaultAccessTypeId; ?>
<?php if ($libreEnabled): ?>
<div class="licence-degree">
<label class="admin-checkbox-label">
<input type="radio" name="access_type_id" value="1"
<?= $selectedAccess === '1' ? 'checked' : '' ?> required>
<strong>🔓 Libre</strong> — Mon TFE est en libre accès à tout le monde sur la plateforme des TFE ainsi que dans la bibliothèque de l'erg.
</label>
</div>
<?php endif; ?>
<?php if ($interneEnabled): ?>
<div class="licence-degree">
<label class="admin-checkbox-label">
<input type="radio" name="access_type_id" value="2"
<?= $selectedAccess === '2' ? 'checked' : '' ?> required>
<strong>🔒 Interne</strong> — Mon TFE n'est accessible que sur place en physique. Une note descriptive est disponible sur le site.
</label>
</div>
<?php endif; ?>
<?php if ($interditEnabled): ?>
<div class="licence-degree">
<label class="admin-checkbox-label">
<input type="radio" name="access_type_id" value="3"
<?= $selectedAccess === '3' ? 'checked' : '' ?> required>
<strong>🚫 Interdit</strong> — Mon TFE n'est pas disponible en physique ni sur le site. Une note descriptive est disponible sur le site.
</label>
</div>
<?php endif; ?>
<p class="licence-note"><em>L'auteur·ice peut, à tout moment, décider de restreindre son propre choix. Iel ne peut par contre pas l'ouvrir.</em></p>
</div>
<!-- Licence -->
<div class="licence-license-choice">
<h3>Licence du TFE</h3>
<?php
$name = 'license_id'; $label = 'Licence :'; $options = $licenseTypes;
$selected = $formData['license_id'] ?? ''; $placeholder = '— Sélectionner —'; $required = true;
include APP_ROOT . '/templates/partials/form/select-field.php';
?>
<?php
$name = 'license_custom'; $label = 'Ou précisez une autre licence :';
$value = htmlspecialchars($formData['license_custom'] ?? '');
$hint = 'Ex: CC BY-NC 4.0, Tous droits réservés...';
include APP_ROOT . '/templates/partials/form/text-field.php';
?>
<div class="admin-form-group">
<label class="admin-checkbox-label">
<input type="checkbox" name="cc2r" value="1"
<?= !empty($formData['cc2r']) ? 'checked' : '' ?>>
J'accepte les Conditions Collectives de Réutilisation (CC2r)
</label>
<small><a href="https://cc2r.net/" target="_blank" rel="noopener">En savoir plus sur la CC2r ↗</a></small>
</div>
</div>
</fieldset>