standardise buttons: .btn base class (border-radius 10px, padding var(--space-xs))

This commit is contained in:
Pontoporeia
2026-05-05 11:34:13 +02:00
parent b58445f71c
commit bca707ee96
30 changed files with 333 additions and 442 deletions

View File

@@ -74,3 +74,10 @@
## Sticky save/cancel buttons on edit page ## Sticky save/cancel buttons on edit page
- [x] `templates/admin/edit.php` — moved `.admin-form-footer` from bottom to top-right, right after `<h1>` - [x] `templates/admin/edit.php` — moved `.admin-form-footer` from bottom to top-right, right after `<h1>`
- [x] `admin.css` — added `.admin-form-footer--sticky` variant with `position:sticky; top:0; justify-content:flex-end` - [x] `admin.css` — added `.admin-form-footer--sticky` variant with `position:sticky; top:0; justify-content:flex-end`
## Standardise buttons with .btn base class
- [x] Create `.btn` base class in common.css: `border-radius: 10px; padding: var(--space-xs)` + background + cursor
- [x] Add `.btn--primary` (accent bg), `.btn--secondary` (--bg bg + border), `.btn--sm`, `.btn--lg`, `.btn--danger`, `.btn--warning`, `.btn--success`, `.btn--ghost`, `.btn--muted`, `.btn--blue`, `.btn--yellow`, `.btn--green`, `.btn--red` modifiers
- [x] Replace old button definitions in admin.css, form.css, tfe.css, file-access.css, system.css with empty alias comments
- [x] Update all PHP templates to use new `.btn` classes (`btn btn--primary`, `btn btn--secondary`, `btn btn--danger`, etc.)
- [x] Update border-radius on pagination buttons to 10px for consistency

View File

@@ -89,68 +89,26 @@
gap: var(--space-s); gap: var(--space-s);
} }
.admin-btn { /* ── Admin button aliases — see common.css .btn base class ────────────── */
padding: var(--space-2xs) var(--space-l);
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
letter-spacing: 0.04em;
text-decoration: none;
display: inline-block;
transition: background 0.15s;
}
.admin-btn:hover { .admin-btn {
background: var(--accent-secondary); /* deprecated alias for .btn--primary; kept for backward-compat */
} }
.admin-btn-secondary { .admin-btn-secondary {
padding: var(--space-3xs) var(--space-m); /* deprecated alias for .btn--secondary; kept for backward-compat */
background: transparent;
color: var(--text-tertiary);
border: 1px solid var(--border-primary);
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
letter-spacing: 0.04em;
text-decoration: none;
display: inline-block;
transition: all 0.15s;
} }
.admin-btn-secondary:hover {
border-color: var(--text-secondary);
color: var(--text-primary);
}
/* Small size modifier */
.admin-btn--sm { .admin-btn--sm {
padding: var(--space-3xs) var(--space-2xs); /* deprecated alias for .btn--sm; kept for backward-compat */
font-size: var(--step--2);
} }
/* Semantic colour modifiers */
.admin-btn--warning { .admin-btn--warning {
background: var(--accent-yellow); /* deprecated alias for .btn--warning; kept for backward-compat */
color: var(--text-primary);
border: none;
}
.admin-btn--warning:hover {
filter: brightness(0.9);
} }
.admin-btn--danger { .admin-btn--danger {
background: var(--accent-red); /* deprecated alias for .btn--danger; kept for backward-compat */
color: var(--accent-foreground);
border: none;
}
.admin-btn--danger:hover {
filter: brightness(0.9);
} }
/* ── Toast messages (bottom-center, CSS-only auto-fade) ─────────────── */ /* ── Toast messages (bottom-center, CSS-only auto-fade) ─────────────── */
@@ -319,37 +277,11 @@
} }
.admin-filters-btn { .admin-filters-btn {
padding: var(--space-3xs) var(--space-s); /* deprecated alias for .btn--primary; kept for backward-compat */
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
transition: background 0.15s;
}
.admin-filters-btn:hover {
background: var(--accent-secondary);
} }
.admin-filters-reset { .admin-filters-reset {
font-size: var(--step--1); /* deprecated alias for .btn--secondary; kept for backward-compat */
color: var(--text-secondary);
background: none;
border: 1px solid var(--border-primary);
border-radius: 3px;
font-family: inherit;
padding: var(--space-3xs) var(--space-xs);
cursor: pointer;
text-decoration: none;
transition: border-color 0.15s, color 0.15s;
}
.admin-filters-reset:hover {
border-color: var(--text-secondary);
color: var(--text-primary);
} }
/* ── Bulk actions bar ───────────────────────────────────────────────────── */ /* ── Bulk actions bar ───────────────────────────────────────────────────── */
@@ -449,80 +381,40 @@
color: var(--error); color: var(--error);
} }
/* ── Action buttons in table ────────────────────────────────────────────── */ /* ── Action buttons in table — see common.css .btn base class ──────────── */
.admin-actions { .admin-actions {
display: flex; display: flex;
gap: var(--space-3xs); gap: var(--space-3xs);
flex-wrap: wrap; flex-wrap: wrap;
} }
/* Legacy table-action size — now just an alias */
.admin-btn-sm { .admin-btn-sm {
padding: var(--space-3xs) var(--space-2xs); /* deprecated alias for .btn--sm; kept for backward-compat */
min-height: 2rem;
border-radius: 3px;
font-size: var(--step--2);
font-family: inherit;
cursor: pointer;
text-decoration: none;
display: inline-flex;
align-items: center;
border: 1px solid transparent;
transition: all 0.15s;
white-space: nowrap;
} }
.admin-btn-view { .admin-btn-view {
background: var(--blue-muted-bg); /* deprecated alias for .btn--sm .btn--blue */
color: var(--accent-blue);
border-color: var(--blue-muted-border);
}
.admin-btn-view:hover {
background: var(--blue-muted-bg-hover);
} }
.admin-btn-visit { .admin-btn-visit {
background: var(--success-muted-bg); /* deprecated alias for .btn--sm .btn--green */
color: var(--success);
border-color: var(--success-muted-border);
}
.admin-btn-visit:hover {
background: var(--green-muted-bg-hover);
} }
.admin-btn-edit { .admin-btn-edit {
background: var(--yellow-muted-bg); /* deprecated alias for .btn--sm .btn--yellow */
color: var(--accent-yellow);
border-color: var(--yellow-muted-border);
}
.admin-btn-edit:hover {
background: var(--yellow-muted-bg-hover);
} }
.admin-btn-publish { .admin-btn-publish {
background: var(--green-muted-bg); /* deprecated alias for .btn--sm .btn--green */
color: var(--accent-green);
border-color: var(--green-muted-border);
}
.admin-btn-publish:hover {
background: var(--green-muted-bg-hover);
} }
.admin-btn-unpublish { .admin-btn-unpublish {
background: var(--bg-secondary); /* deprecated alias for .btn--sm .btn--muted */
color: var(--text-tertiary);
border-color: var(--border-primary);
}
.admin-btn-unpublish:hover {
background: var(--bg-tertiary);
} }
.admin-btn-delete { .admin-btn-delete {
background: var(--error-muted-bg); /* deprecated alias for .btn--sm .btn--red */
color: var(--error);
border-color: var(--error-muted-border, var(--border-primary));
}
.admin-btn-delete:hover {
filter: brightness(0.9);
} }
.publish-form { .publish-form {
@@ -705,7 +597,7 @@
padding-top: var(--space-2xs); padding-top: var(--space-2xs);
} }
.admin-login-box .admin-btn { .admin-login-box .btn {
width: 100%; width: 100%;
} }
@@ -1121,53 +1013,15 @@
} }
.param-form > button { .param-form > button {
align-self: flex-start; /* deprecated alias for .btn--primary; kept for backward-compat */
padding: var(--space-2xs) var(--space-l);
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
letter-spacing: 0.04em;
transition: background 0.15s;
}
.param-form > button:hover {
background: var(--accent-secondary);
} }
.param-btn-warning { .param-btn-warning {
padding: var(--space-3xs) var(--space-s); /* deprecated alias for .btn--warning; kept for backward-compat */
background: var(--accent-yellow);
color: var(--text-primary);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
transition: filter 0.15s;
}
.param-btn-warning:hover {
filter: brightness(0.9);
} }
.param-btn-danger { .param-btn-danger {
padding: var(--space-3xs) var(--space-s); /* deprecated alias for .btn--danger; kept for backward-compat */
background: var(--accent-red);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
transition: filter 0.15s;
}
.param-btn-danger:hover {
filter: brightness(0.9);
} }
.param-danger-zone { .param-danger-zone {
@@ -1208,19 +1062,7 @@
} }
.param-btn-export { .param-btn-export {
padding: var(--space-3xs) var(--space-s); /* deprecated alias for .btn--primary; kept for backward-compat */
background: var(--primary, #2563eb);
color: var(--accent-foreground, #fff);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
transition: filter 0.15s;
}
.param-btn-export:hover {
filter: brightness(0.9);
} }
@@ -1541,7 +1383,7 @@
min-height: 2.75rem; min-height: 2.75rem;
padding: 0 var(--space-2xs); padding: 0 var(--space-2xs);
border: 1px solid var(--border-secondary); border: 1px solid var(--border-secondary);
border-radius: 3px; border-radius: 10px;
color: var(--text-primary); color: var(--text-primary);
font-size: var(--step--1); font-size: var(--step--1);
text-decoration: none; text-decoration: none;

View File

@@ -390,6 +390,174 @@ main {
} }
} }
/* ============================================================
BUTTONS — shared .btn base class
Targets both <a> and <button>, always has a background.
border-radius: 10px; padding: var(--space-xs)
============================================================ */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--space-3xs);
padding: var(--space-xs);
border-radius: 10px;
font-size: var(--step--1);
font-family: inherit;
font-weight: 500;
letter-spacing: 0.04em;
cursor: pointer;
text-decoration: none;
line-height: 1.3;
border: none;
transition:
background 0.15s,
opacity 0.15s,
box-shadow 0.15s,
filter 0.15s;
}
.btn:hover {
filter: brightness(0.92);
}
/* Primary: accent background, white text */
.btn--primary {
background: var(--accent-primary);
color: var(--accent-foreground);
}
.btn--primary:hover {
background: var(--accent-secondary);
filter: none;
}
/* Secondary: light background with border */
.btn--secondary {
background: var(--bg-primary);
color: var(--text-secondary);
border: 1px solid var(--border-primary);
}
.btn--secondary:hover {
border-color: var(--text-secondary);
color: var(--text-primary);
filter: none;
}
/* Muted secondary: bg-secondary background */
.btn--muted {
background: var(--bg-secondary);
color: var(--text-secondary);
border: 1px solid var(--border-primary);
}
.btn--muted:hover {
background: var(--bg-tertiary);
color: var(--text-primary);
filter: none;
}
/* Ghost: transparent bg, border, for links styled as buttons */
.btn--ghost {
background: transparent;
color: var(--text-secondary);
border: 1px solid var(--border-primary);
}
.btn--ghost:hover {
border-color: var(--text-secondary);
color: var(--text-primary);
filter: none;
}
/* Danger: red background */
.btn--danger {
background: var(--accent-red);
color: var(--accent-foreground);
}
.btn--danger:hover {
filter: brightness(0.9);
}
/* Warning: yellow background */
.btn--warning {
background: var(--accent-yellow);
color: var(--text-primary);
}
.btn--warning:hover {
filter: brightness(0.9);
}
/* Success: green background */
.btn--success {
background: var(--accent-green);
color: var(--accent-foreground);
}
.btn--success:hover {
filter: brightness(0.9);
}
/* Small size modifier */
.btn--sm {
padding: var(--space-2xs) var(--space-xs);
font-size: var(--step--2);
}
/* Large size modifier */
.btn--lg {
padding: var(--space-s) var(--space-m);
font-size: var(--step-0);
}
/* Semantic colour modifiers on the muted base (for table/action buttons) */
.btn--blue {
background: var(--blue-muted-bg);
color: var(--accent-blue);
border: 1px solid var(--blue-muted-border);
}
.btn--blue:hover {
background: var(--blue-muted-bg-hover);
filter: none;
}
.btn--yellow {
background: var(--yellow-muted-bg);
color: var(--accent-yellow);
border: 1px solid var(--yellow-muted-border);
}
.btn--yellow:hover {
background: var(--yellow-muted-bg-hover);
filter: none;
}
.btn--green {
background: var(--green-muted-bg);
color: var(--accent-green);
border: 1px solid var(--green-muted-border);
}
.btn--green:hover {
background: var(--green-muted-bg-hover);
filter: none;
}
.btn--red {
background: var(--error-muted-bg);
color: var(--error);
border: 1px solid var(--danger-border-muted);
}
.btn--red:hover {
filter: brightness(0.9);
}
/* ============================================================ /* ============================================================
SEMANTIC HTML ELEMENTS — baseline styling shared everywhere SEMANTIC HTML ELEMENTS — baseline styling shared everywhere
============================================================ */ ============================================================ */

View File

@@ -195,32 +195,15 @@
} }
.access-req-btn { .access-req-btn {
font-family: inherit; /* deprecated alias for .btn; kept for backward-compat */
font-size: var(--step--1);
font-weight: 600;
padding: var(--space-2xs) var(--space-m);
border: none;
border-radius: 4px;
cursor: pointer;
transition: background 0.2s, opacity 0.2s;
} }
.access-req-btn--approve { .access-req-btn--approve {
background: var(--accent-primary); /* deprecated alias for .btn--primary */
color: var(--accent-foreground);
}
.access-req-btn--approve:hover {
background: var(--accent-secondary);
} }
.access-req-btn--reject { .access-req-btn--reject {
background: #e53e3e; /* deprecated alias for .btn--danger */
color: white;
}
.access-req-btn--reject:hover {
background: #c53030;
} }
/* Pagination */ /* Pagination */

View File

@@ -250,20 +250,7 @@ label:has(+ div > input:required)::after {
} }
.admin-btn-remove { .admin-btn-remove {
background: none; /* deprecated alias for .btn--sm .btn--ghost; kept for backward-compat */
border: 1px solid var(--border-primary);
color: var(--text-tertiary);
border-radius: 3px;
padding: var(--space-3xs) var(--space-2xs);
min-height: 2rem;
font-size: var(--step--2);
line-height: 1;
display: inline-flex;
align-items: center;
cursor: pointer;
transition:
border-color 0.15s,
color 0.15s;
} }
.admin-btn-remove:hover { .admin-btn-remove:hover {
@@ -317,20 +304,7 @@ label:has(+ div > input:required)::after {
} }
.form-footer button { .form-footer button {
padding: var(--space-2xs) var(--space-l); /* deprecated alias for .btn--primary; kept for backward-compat */
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
letter-spacing: 0.04em;
transition: background 0.15s;
}
.form-footer button:hover {
background: var(--accent-secondary);
} }
/* ── Flash messages ─────────────────────────────────────────────────────── */ /* ── Flash messages ─────────────────────────────────────────────────────── */
@@ -510,19 +484,7 @@ label:has(+ div > input:required)::after {
} }
.password-gate button { .password-gate button {
padding: var(--space-xs) var(--space-l); /* deprecated alias for .btn--primary; kept for backward-compat */
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
transition: background 0.15s;
}
.password-gate button:hover {
background: var(--accent-secondary);
} }
.password-error { .password-error {
@@ -971,27 +933,7 @@ a.recap-file-name:hover {
} }
.btn-new-form { .btn-new-form {
display: inline-flex; /* deprecated alias for .btn--primary .btn--lg; kept for backward-compat */
align-items: center;
gap: var(--space-2xs);
padding: var(--space-m) var(--space-2xl);
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 6px;
font-size: var(--step-0);
font-weight: 600;
font-family: inherit;
text-decoration: none;
cursor: pointer;
letter-spacing: 0.04em;
transition: background 0.15s, transform 0.15s;
margin-top: var(--space-s);
}
.btn-new-form:hover {
background: var(--accent-secondary);
transform: translateY(-1px);
} }
@@ -1089,31 +1031,9 @@ a.recap-file-name:hover {
} }
.btn-primary { .btn-primary {
padding: var(--space-xs) var(--space-m); /* deprecated alias for .btn--primary; kept for backward-compat */
background: var(--accent-primary);
color: #fff;
border: none;
border-radius: 4px;
font-size: var(--step-0);
cursor: pointer;
font-weight: 600;
}
.btn-primary:hover {
background: var(--accent-secondary, var(--accent-primary));
transform: translateY(-1px);
} }
.btn-secondary { .btn-secondary {
padding: var(--space-xs) var(--space-m); /* deprecated alias for .btn--secondary; kept for backward-compat */
background: transparent;
color: var(--text-secondary);
border: 1px solid var(--border-primary);
border-radius: 4px;
font-size: var(--step-0);
cursor: pointer;
}
.btn-secondary:hover {
background: color-mix(in srgb, var(--text-secondary) 8%, transparent);
} }

View File

@@ -219,7 +219,7 @@
min-height: 2.75rem; min-height: 2.75rem;
padding: 0 var(--space-2xs); padding: 0 var(--space-2xs);
border: 1px solid var(--border-secondary); border: 1px solid var(--border-secondary);
border-radius: 3px; border-radius: 10px;
color: var(--text-primary); color: var(--text-primary);
font-size: var(--step--1); font-size: var(--step--1);
text-decoration: none; text-decoration: none;

View File

@@ -272,19 +272,7 @@
} }
.search-apply-btn { .search-apply-btn {
font-size: var(--step--1); /* deprecated alias for .btn--primary; kept for backward-compat */
padding: var(--space-3xs) var(--space-xs);
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
cursor: pointer;
font-family: inherit;
transition: background 0.15s;
}
.search-apply-btn:hover {
background: var(--accent-secondary);
} }
.search-reset-link { .search-reset-link {
@@ -311,7 +299,7 @@
min-height: 2.75rem; min-height: 2.75rem;
padding: 0 var(--space-2xs); padding: 0 var(--space-2xs);
border: 1px solid var(--border-secondary); border: 1px solid var(--border-secondary);
border-radius: 3px; border-radius: 10px;
color: var(--text-primary); color: var(--text-primary);
font-size: var(--step--1); font-size: var(--step--1);
text-decoration: none; text-decoration: none;

View File

@@ -309,18 +309,10 @@
font-family: ui-monospace, monospace; font-family: ui-monospace, monospace;
} }
.log-copy-btn { .log-copy-btn {
/* uses .btn--secondary .btn--sm but with absolute positioning overrides */
position: absolute; position: absolute;
top: var(--space-2xs); top: var(--space-2xs);
right: var(--space-2xs); right: var(--space-2xs);
background: var(--bg-primary);
border: 1px solid var(--border-primary);
color: var(--text-secondary);
border-radius: 4px;
font-size: var(--step--2);
padding: var(--space-3xs) var(--space-2xs);
cursor: pointer;
font-family: inherit;
transition: color .15s, border-color .15s;
z-index: 2; z-index: 2;
} }
.log-copy-btn:hover { .log-copy-btn:hover {

View File

@@ -283,23 +283,12 @@ aside figcaption {
} }
.tfe-btn-request-access { .tfe-btn-request-access {
font-family: inherit; /* deprecated alias for .btn--primary; kept for backward-compat */
font-size: var(--step--1);
font-weight: 600;
padding: var(--space-2xs) var(--space-s);
background: var(--accent);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
transition:
background 0.2s,
opacity 0.2s;
margin-top: var(--space-3xs); margin-top: var(--space-3xs);
} }
.tfe-btn-request-access:hover:not(:disabled) { .tfe-btn-request-access:hover:not(:disabled) {
background: var(--accent-dark); /* handled by .btn--primary */
} }
.tfe-btn-request-access:disabled { .tfe-btn-request-access:disabled {

View File

@@ -176,7 +176,7 @@ function requirePasswordGate(array $link, string $slug): void
<label for="share_password">Ce lien est protégé par un mot de passe :</label> <label for="share_password">Ce lien est protégé par un mot de passe :</label>
<input type="password" id="share_password" name="share_password" required autofocus> <input type="password" id="share_password" name="share_password" required autofocus>
<br> <br>
<button type="submit">Accéder au formulaire</button> <button type="submit" class="btn btn--primary">Accéder au formulaire</button>
</form> </form>
</div> </div>
</body> </body>
@@ -362,7 +362,7 @@ function renderShareLinkForm(string $slug, array $link): void
</fieldset> </fieldset>
<div class="form-footer"> <div class="form-footer">
<button type="submit" name="go">Soumettre</button> <button type="submit" name="go" class="btn btn--primary">Soumettre</button>
</div> </div>
</form> </form>
</main> </main>

View File

@@ -111,8 +111,8 @@ $pageTitle = 'Corriger l\'adresse e-mail';
> >
</div> </div>
<div class="retry-email-actions"> <div class="retry-email-actions">
<button type="submit" class="btn-primary">Renvoyer l'e-mail</button> <button type="submit" class="btn btn--primary">Renvoyer l'e-mail</button>
<button type="submit" name="skip" value="1" class="btn-secondary">Continuer sans e-mail</button> <button type="submit" name="skip" value="1" class="btn btn--secondary">Continuer sans e-mail</button>
</div> </div>
</form> </form>
</section> </section>

View File

@@ -5,3 +5,5 @@
{"timestamp":"2026-05-05T09:06:21+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"add","status":"success","context":{"thesis_id":38,"identifier":"2025-013","author":"Lila Dubois, Karim Nassar"}} {"timestamp":"2026-05-05T09:06:21+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"add","status":"success","context":{"thesis_id":38,"identifier":"2025-013","author":"Lila Dubois, Karim Nassar"}}
{"timestamp":"2026-05-05T09:08:03+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"publish","status":"success","context":{"count":1,"ids":[38]}} {"timestamp":"2026-05-05T09:08:03+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"publish","status":"success","context":{"count":1,"ids":[38]}}
{"timestamp":"2026-05-05T09:19:46+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"edit","status":"success","context":{"thesis_id":38,"title":"Jouer l'espace : dispositifs scénographiques pour l'expérience participative"}} {"timestamp":"2026-05-05T09:19:46+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"edit","status":"success","context":{"thesis_id":38,"title":"Jouer l'espace : dispositifs scénographiques pour l'expérience participative"}}
{"timestamp":"2026-05-05T09:33:13+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"thesis","action":"csv_export","status":"success"}
{"timestamp":"2026-05-05T09:33:44+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0","resource":"settings","action":"formulaire_update","status":"success","context":{"values":{"access_type_libre_enabled":"0","access_type_interne_enabled":"1","access_type_interdit_enabled":"1","restricted_files_enabled":"1"}}}

View File

@@ -3,7 +3,7 @@
<div class="admin-list-toolbar"> <div class="admin-list-toolbar">
<h1>Accès étudiant·e</h1> <h1>Accès étudiant·e</h1>
<div class="admin-list-toolbar__right"> <div class="admin-list-toolbar__right">
<button type="button" class="admin-btn admin-btn--sm" id="open-create-dialog"> <button type="button" class="btn btn--primary btn--sm" id="open-create-dialog">
Créer un lien Créer un lien
</button> </button>
</div> </div>
@@ -72,10 +72,10 @@
<td> <td>
<div class="admin-actions"> <div class="admin-actions">
<a href="/partage/<?= urlencode($link['slug']) ?>" target="_blank" rel="noopener" <a href="/partage/<?= urlencode($link['slug']) ?>" target="_blank" rel="noopener"
class="admin-btn-sm admin-btn-visit" title="Visiter le formulaire"> class="btn btn--sm btn--green admin-btn-visit" title="Visiter le formulaire">
👁 Visiter 👁 Visiter
</a> </a>
<button type="button" class="admin-btn-sm admin-btn-view" <button type="button" class="btn btn--sm btn--blue admin-btn-view"
onclick="copyUrl(<?= $link['id'] ?>)" title="Copier l'URL"> onclick="copyUrl(<?= $link['id'] ?>)" title="Copier l'URL">
Copier Copier
</button> </button>
@@ -84,12 +84,12 @@
<input type="hidden" name="action" value="toggle"> <input type="hidden" name="action" value="toggle">
<input type="hidden" name="id" value="<?= $link['id'] ?>"> <input type="hidden" name="id" value="<?= $link['id'] ?>">
<button type="submit" <button type="submit"
class="admin-btn-sm <?= $link['is_active'] ? 'admin-btn-unpublish' : 'admin-btn-publish' ?>" class="btn btn--sm <?= $link['is_active'] ? 'btn--muted admin-btn-unpublish' : 'btn--green admin-btn-publish' ?>"
title="<?= $link['is_active'] ? 'Désactiver' : 'Activer' ?>"> title="<?= $link['is_active'] ? 'Désactiver' : 'Activer' ?>">
<?= $link['is_active'] ? '⏸' : '▶' ?> <?= $link['is_active'] ? '⏸' : '▶' ?>
</button> </button>
</form> </form>
<button type="button" class="admin-btn-sm admin-btn-edit" <button type="button" class="btn btn--sm btn--yellow admin-btn-edit"
onclick="openPasswordDialog(<?= $link['id'] ?>, <?= $hasPassword ? 'true' : 'false' ?>)" onclick="openPasswordDialog(<?= $link['id'] ?>, <?= $hasPassword ? 'true' : 'false' ?>)"
title="Modifier le mot de passe"> title="Modifier le mot de passe">
🔑 🔑
@@ -99,7 +99,7 @@
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="action" value="delete"> <input type="hidden" name="action" value="delete">
<input type="hidden" name="id" value="<?= $link['id'] ?>"> <input type="hidden" name="id" value="<?= $link['id'] ?>">
<button type="button" class="admin-btn-sm admin-btn-delete" title="Supprimer" <button type="button" class="btn btn--sm btn--red admin-btn-delete" title="Supprimer"
onclick="openDeleteLinkDialog(<?= $link['id'] ?>)"> onclick="openDeleteLinkDialog(<?= $link['id'] ?>)">
🗑 🗑
</button> </button>
@@ -144,8 +144,8 @@
<small>Laissez vide pour qu'il n'expire jamais.</small> <small>Laissez vide pour qu'il n'expire jamais.</small>
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Créer le lien</button> <button type="submit" class="btn btn--primary">Créer le lien</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('create-dialog').close()">Annuler</button> onclick="document.getElementById('create-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -169,8 +169,8 @@
<p id="password-current-info" style="font-size:var(--step--2);color:var(--text-secondary);margin-top:var(--space-2xs);"></p> <p id="password-current-info" style="font-size:var(--step--2);color:var(--text-secondary);margin-top:var(--space-2xs);"></p>
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('password-dialog').close()">Annuler</button> onclick="document.getElementById('password-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -222,7 +222,7 @@ function openPasswordDialog(id, hasPassword) {
<p>Supprimer ce lien ? Les soumissions via ce lien seront bloquées.</p> <p>Supprimer ce lien ? Les soumissions via ce lien seront bloquées.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--danger" onclick="this.closest('dialog').close(); _executeDeleteLink()">Supprimer</button> <button type="button" class="btn btn--danger" onclick="this.closest('dialog').close(); _executeDeleteLink()">Supprimer</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>

View File

@@ -8,7 +8,7 @@
<div class="admin-list-toolbar"> <div class="admin-list-toolbar">
<h2 id="acces-liens-title">Accès étudiant·e</h2> <h2 id="acces-liens-title">Accès étudiant·e</h2>
<div class="admin-list-toolbar__right"> <div class="admin-list-toolbar__right">
<button type="button" class="admin-btn admin-btn--sm" id="open-create-dialog"> <button type="button" class="btn btn--primary btn--sm" id="open-create-dialog">
+ Créer un lien + Créer un lien
</button> </button>
</div> </div>
@@ -69,10 +69,10 @@
<td> <td>
<div class="admin-actions"> <div class="admin-actions">
<a href="/partage/<?= urlencode($link['slug']) ?>" target="_blank" rel="noopener" <a href="/partage/<?= urlencode($link['slug']) ?>" target="_blank" rel="noopener"
class="admin-btn-sm admin-btn-visit" title="Visiter le formulaire"> class="btn btn--sm btn--green admin-btn-visit" title="Visiter le formulaire">
👁 Visiter 👁 Visiter
</a> </a>
<button type="button" class="admin-btn-sm admin-btn-view" <button type="button" class="btn btn--sm btn--blue admin-btn-view"
onclick="copyUrl(<?= $link['id'] ?>)" title="Copier l'URL"> onclick="copyUrl(<?= $link['id'] ?>)" title="Copier l'URL">
Copier Copier
</button> </button>
@@ -81,12 +81,12 @@
<input type="hidden" name="action" value="toggle"> <input type="hidden" name="action" value="toggle">
<input type="hidden" name="id" value="<?= $link['id'] ?>"> <input type="hidden" name="id" value="<?= $link['id'] ?>">
<button type="submit" <button type="submit"
class="admin-btn-sm <?= $link['is_active'] ? 'admin-btn-unpublish' : 'admin-btn-publish' ?>" class="btn btn--sm <?= $link['is_active'] ? 'btn--muted admin-btn-unpublish' : 'btn--green admin-btn-publish' ?>"
title="<?= $link['is_active'] ? 'Désactiver' : 'Activer' ?>"> title="<?= $link['is_active'] ? 'Désactiver' : 'Activer' ?>">
<?= $link['is_active'] ? '⏸' : '▶' ?> <?= $link['is_active'] ? '⏸' : '▶' ?>
</button> </button>
</form> </form>
<button type="button" class="admin-btn-sm admin-btn-edit" <button type="button" class="btn btn--sm btn--yellow admin-btn-edit"
onclick="openPasswordDialog(<?= $link['id'] ?>, <?= $hasLinkPassword ? 'true' : 'false' ?>)" onclick="openPasswordDialog(<?= $link['id'] ?>, <?= $hasLinkPassword ? 'true' : 'false' ?>)"
title="Modifier le mot de passe"> title="Modifier le mot de passe">
🔑 🔑
@@ -96,7 +96,7 @@
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="action" value="archive"> <input type="hidden" name="action" value="archive">
<input type="hidden" name="id" value="<?= $link['id'] ?>"> <input type="hidden" name="id" value="<?= $link['id'] ?>">
<button type="button" class="admin-btn-sm admin-btn-delete" title="Archiver" <button type="button" class="btn btn--sm btn--red admin-btn-delete" title="Archiver"
onclick="openArchiveLinkDialog(<?= $link['id'] ?>)"> onclick="openArchiveLinkDialog(<?= $link['id'] ?>)">
🗄 🗄
</button> </button>
@@ -255,12 +255,12 @@
<?php if ($status === 'pending'): ?> <?php if ($status === 'pending'): ?>
<div class="access-req-card__actions"> <div class="access-req-card__actions">
<button type="button" <button type="button"
class="access-req-btn access-req-btn--approve" class="btn btn--primary access-req-btn access-req-btn--approve"
onclick="openApproveDialog(<?= $req['id'] ?>)"> onclick="openApproveDialog(<?= $req['id'] ?>)">
Approuver Approuver
</button> </button>
<button type="button" <button type="button"
class="access-req-btn access-req-btn--reject" class="btn btn--danger access-req-btn access-req-btn--reject"
onclick="openRejectDialog(<?= $req['id'] ?>)"> onclick="openRejectDialog(<?= $req['id'] ?>)">
Rejeter Rejeter
</button> </button>
@@ -325,8 +325,8 @@
<small>Laissez vide pour qu'il n'expire jamais.</small> <small>Laissez vide pour qu'il n'expire jamais.</small>
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Créer le lien</button> <button type="submit" class="btn btn--primary">Créer le lien</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('create-dialog').close()">Annuler</button> onclick="document.getElementById('create-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -350,8 +350,8 @@
<p id="password-current-info" style="font-size:var(--step--2);color:var(--text-secondary);margin-top:var(--space-2xs);"></p> <p id="password-current-info" style="font-size:var(--step--2);color:var(--text-secondary);margin-top:var(--space-2xs);"></p>
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('password-dialog').close()">Annuler</button> onclick="document.getElementById('password-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -372,8 +372,8 @@
<textarea name="admin_notes" id="approve-notes" rows="3" <textarea name="admin_notes" id="approve-notes" rows="3"
placeholder="Message personnalisé pour le demandeur..."></textarea> placeholder="Message personnalisé pour le demandeur..."></textarea>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Approuver et envoyer email</button> <button type="submit" class="btn btn--primary">Approuver et envoyer email</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('approve-dialog').close()">Annuler</button> onclick="document.getElementById('approve-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -394,8 +394,8 @@
<textarea name="admin_notes" id="reject-notes" rows="3" <textarea name="admin_notes" id="reject-notes" rows="3"
placeholder="Raison du rejet..."></textarea> placeholder="Raison du rejet..."></textarea>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn admin-btn--danger">Rejeter</button> <button type="submit" class="btn btn--danger">Rejeter</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('reject-dialog').close()">Annuler</button> onclick="document.getElementById('reject-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -457,7 +457,7 @@ function _executeArchiveLink() {
<p>Archiver ce lien ? Il ne sera plus accessible, mais les statistiques seront conservées.</p> <p>Archiver ce lien ? Il ne sera plus accessible, mais les statistiques seront conservées.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--warning" onclick="this.closest('dialog').close(); _executeArchiveLink()">Archiver</button> <button type="button" class="btn btn--warning" onclick="this.closest('dialog').close(); _executeArchiveLink()">Archiver</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>

View File

@@ -57,7 +57,7 @@
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn"> <button type="submit" class="btn btn--primary">
<?= $hasPassword ? 'Mettre à jour le mot de passe' : 'Définir le mot de passe' ?> <?= $hasPassword ? 'Mettre à jour le mot de passe' : 'Définir le mot de passe' ?>
</button> </button>
</div> </div>
@@ -80,7 +80,7 @@
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="action" value="remove_credentials"> <input type="hidden" name="action" value="remove_credentials">
<input type="hidden" name="current_password_remove" id="current_password_remove" value=""> <input type="hidden" name="current_password_remove" id="current_password_remove" value="">
<button type="submit" class="admin-btn admin-btn--danger">Supprimer</button> <button type="submit" class="btn btn--danger">Supprimer</button>
</form> </form>
</div> </div>
<?php endif; ?> <?php endif; ?>

View File

@@ -47,7 +47,7 @@
</fieldset> </fieldset>
<div class="form-footer"> <div class="form-footer">
<button type="submit" name="go">Soumettre</button> <button type="submit" name="go" class="btn btn--primary">Soumettre</button>
</div> </div>
</form> </form>
</main> </main>

View File

@@ -12,8 +12,8 @@
<div id="editor"></div> <div id="editor"></div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
<a href="/admin/contenus.php" class="admin-btn-secondary admin-cancel-link">Annuler</a> <a href="/admin/contenus.php" class="btn btn--secondary admin-cancel-link">Annuler</a>
</div> </div>
</form> </form>
@@ -29,8 +29,8 @@
<div id="editor"></div> <div id="editor"></div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
<a href="/admin/contenus.php#form-help-blocks" class="admin-btn-secondary admin-cancel-link">Annuler</a> <a href="/admin/contenus.php#form-help-blocks" class="btn btn--secondary admin-cancel-link">Annuler</a>
</div> </div>
</form> </form>
@@ -77,15 +77,15 @@
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
<button type="button" class="admin-btn admin-btn--sm add-entry-btn" data-group="<?= $gi ?>">+ Ajouter une entrée</button> <button type="button" class="btn btn--primary btn--sm add-entry-btn" data-group="<?= $gi ?>">+ Ajouter une entrée</button>
</fieldset> </fieldset>
<?php endforeach; ?> <?php endforeach; ?>
<button type="button" class="admin-btn" id="add-group-btn">+ Ajouter un <?= $aproposKey === 'contacts' ? 'contact' : 'groupe de crédit' ?></button> <button type="button" class="btn btn--primary" id="add-group-btn">+ Ajouter un <?= $aproposKey === 'contacts' ? 'contact' : 'groupe de crédit' ?></button>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
<a href="/admin/contenus.php" class="admin-btn-secondary admin-cancel-link">Annuler</a> <a href="/admin/contenus.php" class="btn btn--secondary admin-cancel-link">Annuler</a>
</div> </div>
<template id="entry-template-<?= $aproposKey ?>"> <template id="entry-template-<?= $aproposKey ?>">
@@ -111,7 +111,7 @@
<label>Label :</label> <label>Label :</label>
<input type="text" name="groups[{{gi}}][label]"> <input type="text" name="groups[{{gi}}][label]">
<?php endif; ?> <?php endif; ?>
<button type="button" class="admin-btn admin-btn--sm add-entry-btn" data-group="{{gi}}">+ Ajouter une entrée</button> <button type="button" class="btn btn--primary btn--sm add-entry-btn" data-group="{{gi}}">+ Ajouter une entrée</button>
</fieldset> </fieldset>
</template> </template>
</form> </form>

View File

@@ -30,7 +30,7 @@
<td><?= htmlspecialchars($p['updated_at'] ?? '—') ?></td> <td><?= htmlspecialchars($p['updated_at'] ?? '—') ?></td>
<td> <td>
<a href="/admin/contenus-edit.php?slug=<?= urlencode($p['slug']) ?>" <a href="/admin/contenus-edit.php?slug=<?= urlencode($p['slug']) ?>"
class="admin-btn admin-btn--sm">Éditer</a> class="btn btn--primary btn--sm">Éditer</a>
</td> </td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
@@ -62,7 +62,7 @@
<td><?= htmlspecialchars($a['updated_at'] ?? '—') ?></td> <td><?= htmlspecialchars($a['updated_at'] ?? '—') ?></td>
<td> <td>
<a href="/admin/contenus-edit.php?apropos=<?= urlencode($a['key']) ?>" <a href="/admin/contenus-edit.php?apropos=<?= urlencode($a['key']) ?>"
class="admin-btn admin-btn--sm">Éditer</a> class="btn btn--primary btn--sm">Éditer</a>
</td> </td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
@@ -143,7 +143,7 @@
<?php endif; ?> <?php endif; ?>
</div> </div>
<a href="/admin/contenus-edit.php?form_block=<?= urlencode($b['key']) ?>" <a href="/admin/contenus-edit.php?form_block=<?= urlencode($b['key']) ?>"
class="admin-btn admin-btn--sm fhb-edit-btn">Éditer</a> class="btn btn--primary btn--sm fhb-edit-btn">Éditer</a>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
</form> </form>

View File

@@ -3,8 +3,8 @@
<form method="post" action="/admin/actions/edit.php" class="admin-form" enctype="multipart/form-data"> <form method="post" action="/admin/actions/edit.php" class="admin-form" enctype="multipart/form-data">
<div class="admin-form-footer admin-form-footer--sticky"> <div class="admin-form-footer admin-form-footer--sticky">
<button type="submit" class="admin-btn">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
<a href="/admin/" class="admin-btn-secondary admin-cancel-link">Annuler</a> <a href="/admin/" class="btn btn--secondary admin-cancel-link">Annuler</a>
</div> </div>
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">

View File

@@ -98,12 +98,12 @@
<?php if ($status === 'pending'): ?> <?php if ($status === 'pending'): ?>
<div class="access-req-card__actions"> <div class="access-req-card__actions">
<button type="button" <button type="button"
class="access-req-btn access-req-btn--approve" class="btn btn--primary access-req-btn access-req-btn--approve"
onclick="openApproveDialog(<?= $req['id'] ?>)"> onclick="openApproveDialog(<?= $req['id'] ?>)">
Approuver Approuver
</button> </button>
<button type="button" <button type="button"
class="access-req-btn access-req-btn--reject" class="btn btn--danger access-req-btn access-req-btn--reject"
onclick="openRejectDialog(<?= $req['id'] ?>)"> onclick="openRejectDialog(<?= $req['id'] ?>)">
Rejeter Rejeter
</button> </button>
@@ -153,8 +153,8 @@
placeholder="Message personnalisé pour le demandeur..."></textarea> placeholder="Message personnalisé pour le demandeur..."></textarea>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Approuver et envoyer email</button> <button type="submit" class="btn btn--primary">Approuver et envoyer email</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('approve-dialog').close()">Annuler</button> onclick="document.getElementById('approve-dialog').close()">Annuler</button>
</div> </div>
</form> </form>
@@ -177,8 +177,8 @@
placeholder="Raison du rejet..."></textarea> placeholder="Raison du rejet..."></textarea>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn admin-btn--danger">Rejeter</button> <button type="submit" class="btn btn--danger">Rejeter</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('reject-dialog').close()">Annuler</button> onclick="document.getElementById('reject-dialog').close()">Annuler</button>
</div> </div>
</form> </form>

View File

@@ -104,9 +104,9 @@ document.addEventListener('DOMContentLoaded', () => {
</option> </option>
<?php endforeach; ?> <?php endforeach; ?>
</select> </select>
<button type="submit" class="admin-filters-btn">Filtrer</button> <button type="submit" class="btn btn--primary admin-filters-btn">Filtrer</button>
<?php if ($searchQuery || $yearFilter || $orientationFilter || $apFilter): ?> <?php if ($searchQuery || $yearFilter || $orientationFilter || $apFilter): ?>
<button type="button" class="admin-filters-reset" <button type="button" class="btn btn--secondary admin-filters-reset"
onclick="window.location='/admin/'">&#x2715; Réinitialiser</button> onclick="window.location='/admin/'">&#x2715; Réinitialiser</button>
<?php endif; ?> <?php endif; ?>
</form> </form>
@@ -126,12 +126,12 @@ document.addEventListener('DOMContentLoaded', () => {
<dd class="admin-stat__number"><?= $stats['pending'] ?></dd> <dd class="admin-stat__number"><?= $stats['pending'] ?></dd>
</div> </div>
</dl> </dl>
<a href="/admin/add.php" class="admin-btn admin-btn--sm">Ajouter un TFE</a> <a href="/admin/add.php" class="btn btn--primary btn--sm">Ajouter un TFE</a>
<button type="button" class="admin-btn admin-btn--sm" id="import-dialog-btn" <button type="button" class="btn btn--primary btn--sm" id="import-dialog-btn"
onclick="document.getElementById('import-dialog').showModal()"> onclick="document.getElementById('import-dialog').showModal()">
Importer un CSV Importer un CSV
</button> </button>
<a href="/admin/actions/export-csv.php" class="admin-btn admin-btn--sm"> <a href="/admin/actions/export-csv.php" class="btn btn--primary btn--sm">
Exporter CSV Exporter CSV
</a> </a>
</div> </div>
@@ -141,9 +141,9 @@ document.addEventListener('DOMContentLoaded', () => {
<div id="bulk-actions" class="admin-bulk-actions" role="toolbar" aria-label="Actions groupées"> <div id="bulk-actions" class="admin-bulk-actions" role="toolbar" aria-label="Actions groupées">
<strong><span id="selected-count">0</span> TFE(s) sélectionné(s)</strong> <strong><span id="selected-count">0</span> TFE(s) sélectionné(s)</strong>
<div class="admin-bulk-btns"> <div class="admin-bulk-btns">
<button type="button" class="admin-btn-sm admin-btn-publish" onclick="bulkAction('publish')">Publier</button> <button type="button" class="btn btn--sm btn--green admin-btn-publish" onclick="bulkAction('publish')">Publier</button>
<button type="button" class="admin-btn-sm admin-btn-unpublish" onclick="bulkAction('unpublish')">Dépublier</button> <button type="button" class="btn btn--sm btn--muted admin-btn-unpublish" onclick="bulkAction('unpublish')">Dépublier</button>
<button type="button" class="admin-btn-sm admin-btn-delete" onclick="bulkAction('delete')">Supprimer</button> <button type="button" class="btn btn--sm btn--red admin-btn-delete" onclick="bulkAction('delete')">Supprimer</button>
</div> </div>
</div> </div>
@@ -226,23 +226,23 @@ document.addEventListener('DOMContentLoaded', () => {
</td> </td>
<td> <td>
<div class="admin-actions"> <div class="admin-actions">
<a href="/admin/recapitulatif.php?id=<?= $thesis['id'] ?>" class="admin-btn-sm admin-btn-view">Voir</a> <a href="/admin/recapitulatif.php?id=<?= $thesis['id'] ?>" class="btn btn--sm btn--blue admin-btn-view">Voir</a>
<a href="/admin/edit.php?id=<?= $thesis['id'] ?>" class="admin-btn-sm admin-btn-edit">Éditer</a> <a href="/admin/edit.php?id=<?= $thesis['id'] ?>" class="btn btn--sm btn--yellow admin-btn-edit">Éditer</a>
<form method="post" action="actions/publish.php" class="publish-form"> <form method="post" action="actions/publish.php" class="publish-form">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="thesis_id" value="<?= $thesis['id'] ?>"> <input type="hidden" name="thesis_id" value="<?= $thesis['id'] ?>">
<?php if ($thesis['is_published']): ?> <?php if ($thesis['is_published']): ?>
<input type="hidden" name="action" value="unpublish"> <input type="hidden" name="action" value="unpublish">
<button type="submit" class="admin-btn-sm admin-btn-unpublish">Dépublier</button> <button type="submit" class="btn btn--sm btn--muted admin-btn-unpublish">Dépublier</button>
<?php else: ?> <?php else: ?>
<input type="hidden" name="action" value="publish"> <input type="hidden" name="action" value="publish">
<button type="submit" class="admin-btn-sm admin-btn-publish">Publier</button> <button type="submit" class="btn btn--sm btn--green admin-btn-publish">Publier</button>
<?php endif; ?> <?php endif; ?>
</form> </form>
<form method="post" action="actions/delete.php" id="delete-form-<?= $thesis['id'] ?>" class="publish-form"> <form method="post" action="actions/delete.php" id="delete-form-<?= $thesis['id'] ?>" class="publish-form">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="thesis_id" value="<?= $thesis['id'] ?>"> <input type="hidden" name="thesis_id" value="<?= $thesis['id'] ?>">
<button type="button" class="admin-btn-sm admin-btn-delete" <button type="button" class="btn btn--sm btn--red admin-btn-delete"
onclick="deleteThesis(<?= $thesis['id'] ?>, <?= htmlspecialchars(json_encode($thesis['title']), ENT_QUOTES) ?>)">Supprimer</button> onclick="deleteThesis(<?= $thesis['id'] ?>, <?= htmlspecialchars(json_encode($thesis['title']), ENT_QUOTES) ?>)">Supprimer</button>
</form> </form>
</div> </div>
@@ -281,7 +281,7 @@ document.addEventListener('DOMContentLoaded', () => {
<p>Sélectionnez au moins un TFE avant d'effectuer une action groupée.</p> <p>Sélectionnez au moins un TFE avant d'effectuer une action groupée.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn" onclick="this.closest('dialog').close()">OK</button> <button type="button" class="btn btn--primary" onclick="this.closest('dialog').close()">OK</button>
</div> </div>
</dialog> </dialog>
@@ -296,8 +296,8 @@ document.addEventListener('DOMContentLoaded', () => {
<p><span id="bulk-confirm-word"></span> <span id="bulk-confirm-count"></span> TFE(s) ?</p> <p><span id="bulk-confirm-word"></span> <span id="bulk-confirm-count"></span> TFE(s) ?</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn" onclick="this.closest('dialog').close(); _executeBulkAction()">Confirmer</button> <button type="button" class="btn btn--primary" onclick="this.closest('dialog').close(); _executeBulkAction()">Confirmer</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>
@@ -312,8 +312,8 @@ document.addEventListener('DOMContentLoaded', () => {
<p>Supprimer définitivement <strong><span id="bulk-delete-count"></span> TFE(s)</strong> ? Cette action est irréversible.</p> <p>Supprimer définitivement <strong><span id="bulk-delete-count"></span> TFE(s)</strong> ? Cette action est irréversible.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--danger" onclick="this.closest('dialog').close(); _executeBulkAction()">Supprimer</button> <button type="button" class="btn btn--danger" onclick="this.closest('dialog').close(); _executeBulkAction()">Supprimer</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>
@@ -328,8 +328,8 @@ document.addEventListener('DOMContentLoaded', () => {
<p>Supprimer « <strong id="delete-thesis-title"></strong> » ? Cette action est irréversible.</p> <p>Supprimer « <strong id="delete-thesis-title"></strong> » ? Cette action est irréversible.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--danger" onclick="this.closest('dialog').close(); _executeDeleteThesis()">Supprimer</button> <button type="button" class="btn btn--danger" onclick="this.closest('dialog').close(); _executeDeleteThesis()">Supprimer</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>
@@ -376,8 +376,8 @@ document.addEventListener('DOMContentLoaded', () => {
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Importer</button> <button type="submit" class="btn btn--primary">Importer</button>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('import-dialog').close()">Annuler</button> onclick="document.getElementById('import-dialog').close()">Annuler</button>
</div> </div>
</form> </form>

View File

@@ -11,7 +11,7 @@
<input type="password" id="password" name="password" required autofocus> <input type="password" id="password" name="password" required autofocus>
</div> </div>
<div class="admin-form-footer"> <div class="admin-form-footer">
<button type="submit" class="admin-btn">Se connecter</button> <button type="submit" class="btn btn--primary">Se connecter</button>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -24,7 +24,7 @@
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="action" value="enable_maintenance"> <input type="hidden" name="action" value="enable_maintenance">
<input type="hidden" name="redirect" value="/admin/parametres.php"> <input type="hidden" name="redirect" value="/admin/parametres.php">
<button type="button" class="param-btn-warning" <button type="button" class="btn btn--warning"
onclick="document.getElementById('enable-maintenance-dialog').showModal()"> onclick="document.getElementById('enable-maintenance-dialog').showModal()">
Activer la maintenance Activer la maintenance
</button> </button>
@@ -37,7 +37,7 @@
<legend>Exporter la base de données</legend> <legend>Exporter la base de données</legend>
<p>Télécharger une copie complète de la base de données SQLite. <p>Télécharger une copie complète de la base de données SQLite.
Cela inclut tous les TFE, auteurs, jury, mots-clés, paramètres, etc.</p> Cela inclut tous les TFE, auteurs, jury, mots-clés, paramètres, etc.</p>
<button type="button" class="param-btn-export" <button type="button" class="btn btn--primary"
onclick="document.getElementById('export-db-dialog').showModal()"> onclick="document.getElementById('export-db-dialog').showModal()">
Exporter la base de données Exporter la base de données
</button> </button>
@@ -53,7 +53,7 @@
<form method="post" action="actions/delete.php" id="delete-all-tfe-form"> <form method="post" action="actions/delete.php" id="delete-all-tfe-form">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="delete_all" value="1"> <input type="hidden" name="delete_all" value="1">
<button type="button" class="param-btn-danger" <button type="button" class="btn btn--danger"
onclick="document.getElementById('delete-all-tfe-dialog').showModal()"> onclick="document.getElementById('delete-all-tfe-dialog').showModal()">
Supprimer tous les TFE (<?= $stats['total'] ?? '?' ?>) Supprimer tous les TFE (<?= $stats['total'] ?? '?' ?>)
</button> </button>
@@ -117,7 +117,7 @@
</label> </label>
</fieldset> </fieldset>
<button type="submit">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
</form> </form>
</section> </section>
@@ -163,7 +163,7 @@
</label> </label>
</fieldset> </fieldset>
<button type="submit">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
</form> </form>
</section> </section>
@@ -288,7 +288,7 @@
</div> </div>
</fieldset> </fieldset>
<button type="submit">Enregistrer</button> <button type="submit" class="btn btn--primary">Enregistrer</button>
</form> </form>
<!-- Test d'envoi --> <!-- Test d'envoi -->
@@ -306,7 +306,7 @@
<input type="email" id="smtp_test_email" name="test_email" <input type="email" id="smtp_test_email" name="test_email"
placeholder="test@example.com" required> placeholder="test@example.com" required>
</div> </div>
<button type="submit">Envoyer le test</button> <button type="submit" class="btn btn--primary">Envoyer le test</button>
</div> </div>
</form> </form>
<?php endif; ?> <?php endif; ?>
@@ -366,7 +366,7 @@
name="confirm_password" required autocomplete="new-password"> name="confirm_password" required autocomplete="new-password">
</div> </div>
<button type="submit"> <button type="submit" class="btn btn--primary">
<?= $hasPassword ? 'Mettre à jour le mot de passe' : 'Définir le mot de passe' ?> <?= $hasPassword ? 'Mettre à jour le mot de passe' : 'Définir le mot de passe' ?>
</button> </button>
</form> </form>
@@ -520,8 +520,8 @@
Cela inclut tous les TFE, auteurs, jury, mots-clés, paramètres, etc.</p> Cela inclut tous les TFE, auteurs, jury, mots-clés, paramètres, etc.</p>
<div class="admin-form-footer"> <div class="admin-form-footer">
<a href="/admin/actions/export-db.php" class="admin-btn">Exporter la base de données</a> <a href="/admin/actions/export-db.php" class="btn btn--primary">Exporter la base de données</a>
<button type="button" class="admin-btn-secondary" <button type="button" class="btn btn--secondary"
onclick="document.getElementById('export-db-dialog').close()">Annuler</button> onclick="document.getElementById('export-db-dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>
@@ -599,11 +599,11 @@ document.body.addEventListener('htmx:afterSwap', function(evt) {
<p>Mettre le site en maintenance ? Les visiteurs verront une page 503.</p> <p>Mettre le site en maintenance ? Les visiteurs verront une page 503.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--warning" <button type="button" class="btn btn--warning"
onclick="this.closest('dialog').close(); document.getElementById('enable-maintenance-form').submit()"> onclick="this.closest('dialog').close(); document.getElementById('enable-maintenance-form').submit()">
Activer Activer
</button> </button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>
@@ -618,10 +618,10 @@ document.body.addEventListener('htmx:afterSwap', function(evt) {
<p>⚠️ Supprimer définitivement <strong>TOUS les TFE</strong> ? Cette action est <strong>IRRÉVERSIBLE</strong>.</p> <p>⚠️ Supprimer définitivement <strong>TOUS les TFE</strong> ? Cette action est <strong>IRRÉVERSIBLE</strong>.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--danger" <button type="button" class="btn btn--danger"
onclick="this.closest('dialog').close(); document.getElementById('delete-all-tfe-form').submit()"> onclick="this.closest('dialog').close(); document.getElementById('delete-all-tfe-form').submit()">
Supprimer tout Supprimer tout
</button> </button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>

View File

@@ -42,7 +42,7 @@
<?php else: ?> <?php else: ?>
<div class="log-output" id="log-output" role="log" aria-live="off" aria-label="Contenu du journal"> <div class="log-output" id="log-output" role="log" aria-live="off" aria-label="Contenu du journal">
<button class="log-copy-btn" id="log-copy-btn" type="button" title="Copier le contenu" <button class="btn btn--secondary btn--sm log-copy-btn" id="log-copy-btn" type="button" title="Copier le contenu"
onclick="copyLogContent(this);return false"> onclick="copyLogContent(this);return false">
Copier Copier
</button> </button>

View File

@@ -28,7 +28,7 @@
<?php else: ?> <?php else: ?>
<div class="log-output" id="log-output" role="region" aria-label="Configuration nginx"> <div class="log-output" id="log-output" role="region" aria-label="Configuration nginx">
<button class="log-copy-btn" id="log-copy-btn" type="button" title="Copier la configuration" <button class="btn btn--secondary btn--sm log-copy-btn" id="log-copy-btn" type="button" title="Copier la configuration"
onclick="copyLogContent(this);return false"> onclick="copyLogContent(this);return false">
Copier Copier
</button> </button>

View File

@@ -6,7 +6,7 @@
<div class="thanks-error"> <div class="thanks-error">
<h1>⚠ Oups…</h1> <h1>⚠ Oups…</h1>
<p><?= htmlspecialchars($error) ?></p> <p><?= htmlspecialchars($error) ?></p>
<a href="/admin/add.php?mode=student" class="btn-new-form">← Retour au formulaire</a> <a href="/admin/add.php?mode=student" class="btn btn--primary btn--lg btn-new-form">← Retour au formulaire</a>
</div> </div>
<?php elseif ($thesis): ?> <?php elseif ($thesis): ?>
@@ -15,13 +15,13 @@
<p class="thanks-message"> <p class="thanks-message">
Ton TFE <strong><?= htmlspecialchars($thesis['title']) ?></strong> a bien été soumis. Ton TFE <strong><?= htmlspecialchars($thesis['title']) ?></strong> a bien été soumis.
</p> </p>
<a href="/admin/add.php?mode=student" class="btn-new-form">+ Ajouter un nouveau TFE</a> <a href="/admin/add.php?mode=student" class="btn btn--primary btn--lg btn-new-form">+ Ajouter un nouveau TFE</a>
</div> </div>
<?php else: ?> <?php else: ?>
<div class="thanks-error"> <div class="thanks-error">
<h1>Erreur</h1> <h1>Erreur</h1>
<p>Aucune donnée à afficher.</p> <p>Aucune donnée à afficher.</p>
<a href="/admin/add.php?mode=student" class="btn-new-form">← Retour au formulaire</a> <a href="/admin/add.php?mode=student" class="btn btn--primary btn--lg btn-new-form">← Retour au formulaire</a>
</div> </div>
<?php endif; ?> <?php endif; ?>
</div> </div>
@@ -32,7 +32,7 @@
<?php if ($error): ?> <?php if ($error): ?>
<p class="toast" role="alert" data-type="error">⚠ <?= htmlspecialchars($error) ?></p> <p class="toast" role="alert" data-type="error">⚠ <?= htmlspecialchars($error) ?></p>
<p><a href="/admin/add.php" class="admin-btn-secondary">Retour au formulaire</a></p> <p><a href="/admin/add.php" class="btn btn--secondary">Retour au formulaire</a></p>
<?php elseif ($thesis): ?> <?php elseif ($thesis): ?>
<section> <section>
@@ -123,14 +123,14 @@
<?php endif; ?> <?php endif; ?>
<div class="admin-action-bar"> <div class="admin-action-bar">
<a href="/admin/edit.php?id=<?= $thesisId ?>" class="admin-btn">Modifier</a> <a href="/admin/edit.php?id=<?= $thesisId ?>" class="btn btn--primary">Modifier</a>
<a href="/admin/add.php" class="admin-btn-secondary">Ajouter un autre TFE</a> <a href="/admin/add.php" class="btn btn--secondary">Ajouter un autre TFE</a>
<a href="/admin/" class="admin-btn-secondary">Retour à la liste</a> <a href="/admin/" class="btn btn--secondary">Retour à la liste</a>
</div> </div>
<?php else: ?> <?php else: ?>
<p class="admin-muted">Aucune donnée à afficher.</p> <p class="admin-muted">Aucune donnée à afficher.</p>
<p><a href="/admin/add.php" class="admin-btn-secondary">Retour au formulaire</a></p> <p><a href="/admin/add.php" class="btn btn--secondary">Retour au formulaire</a></p>
<?php endif; ?> <?php endif; ?>
<?php endif; ?> <?php endif; ?>

View File

@@ -47,7 +47,7 @@ function _submitPendingTagForm() {
<input type="hidden" name="tag_id" value="<?= (int)$tag['id'] ?>"> <input type="hidden" name="tag_id" value="<?= (int)$tag['id'] ?>">
<input class="admin-input--inline" type="text" name="new_name" <input class="admin-input--inline" type="text" name="new_name"
value="<?= htmlspecialchars($tag['name']) ?>" required> value="<?= htmlspecialchars($tag['name']) ?>" required>
<button type="submit" class="admin-btn admin-btn--sm">Renommer</button> <button type="submit" class="btn btn--primary btn--sm">Renommer</button>
</form> </form>
<!-- Merge into another tag --> <!-- Merge into another tag -->
@@ -63,7 +63,7 @@ function _submitPendingTagForm() {
<?php endif; ?> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
</select> </select>
<button type="button" class="admin-btn admin-btn--sm admin-btn--warning" <button type="button" class="btn btn--sm btn--warning"
onclick="return confirmMergeTag(this)"> onclick="return confirmMergeTag(this)">
Fusionner Fusionner
</button> </button>
@@ -74,7 +74,7 @@ function _submitPendingTagForm() {
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<input type="hidden" name="action" value="delete"> <input type="hidden" name="action" value="delete">
<input type="hidden" name="tag_id" value="<?= (int)$tag['id'] ?>"> <input type="hidden" name="tag_id" value="<?= (int)$tag['id'] ?>">
<button type="button" class="admin-btn admin-btn--sm admin-btn--danger" <button type="button" class="btn btn--sm btn--danger"
onclick="confirmDeleteTag(this, <?= htmlspecialchars(json_encode($tag['name']), ENT_QUOTES) ?>)"> onclick="confirmDeleteTag(this, <?= htmlspecialchars(json_encode($tag['name']), ENT_QUOTES) ?>)">
Supprimer Supprimer
</button> </button>
@@ -97,8 +97,8 @@ function _submitPendingTagForm() {
<p>Fusionner ce tag dans « <strong id="merge-target-name"></strong> » ? Le tag source sera supprimé.</p> <p>Fusionner ce tag dans « <strong id="merge-target-name"></strong> » ? Le tag source sera supprimé.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--warning" onclick="this.closest('dialog').close(); _submitPendingTagForm()">Fusionner</button> <button type="button" class="btn btn--warning" onclick="this.closest('dialog').close(); _submitPendingTagForm()">Fusionner</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>
@@ -113,7 +113,7 @@ function _submitPendingTagForm() {
<p>Supprimer « <strong id="delete-tag-name"></strong> » ? Cette action est irréversible.</p> <p>Supprimer « <strong id="delete-tag-name"></strong> » ? Cette action est irréversible.</p>
</div> </div>
<div class="admin-dialog__footer"> <div class="admin-dialog__footer">
<button type="button" class="admin-btn admin-btn--danger" onclick="this.closest('dialog').close(); _submitPendingTagForm()">Supprimer</button> <button type="button" class="btn btn--danger" onclick="this.closest('dialog').close(); _submitPendingTagForm()">Supprimer</button>
<button type="button" class="admin-btn-secondary" onclick="this.closest('dialog').close()">Annuler</button> <button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div> </div>
</dialog> </dialog>

View File

@@ -66,7 +66,7 @@ $juryIdx = max(count($juryLecteurs), 1);
<input type="checkbox" name="jury_lecteurs_ext[0]" value="1" <input type="checkbox" name="jury_lecteurs_ext[0]" value="1"
aria-label="Lecteur·ice 1 — externe"> Externe aria-label="Lecteur·ice 1 — externe"> Externe
</label> </label>
<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)" <button type="button" class="btn btn--sm btn--ghost admin-btn-remove" onclick="removeJuryRow(this)"
aria-label="Supprimer le lecteur·ice 1"><span aria-hidden="true">✕</span></button> aria-label="Supprimer le lecteur·ice 1"><span aria-hidden="true">✕</span></button>
</div> </div>
<?php else: ?> <?php else: ?>
@@ -81,13 +81,13 @@ $juryIdx = max(count($juryLecteurs), 1);
<?= $lm['is_external'] ? 'checked' : '' ?> <?= $lm['is_external'] ? 'checked' : '' ?>
aria-label="Lecteur·ice <?= $lNum ?> — externe"> Externe aria-label="Lecteur·ice <?= $lNum ?> — externe"> Externe
</label> </label>
<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)" <button type="button" class="btn btn--sm btn--ghost admin-btn-remove" onclick="removeJuryRow(this)"
aria-label="Supprimer le lecteur·ice <?= $lNum ?>"><span aria-hidden="true">✕</span></button> aria-label="Supprimer le lecteur·ice <?= $lNum ?>"><span aria-hidden="true">✕</span></button>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
<button type="button" class="admin-btn-secondary admin-add-jury-btn" <button type="button" class="btn btn--secondary admin-add-jury-btn"
onclick="addJuryRow()">+ Ajouter un·e lecteur·ice</button> onclick="addJuryRow()">+ Ajouter un·e lecteur·ice</button>
</fieldset> </fieldset>
</fieldset> </fieldset>
@@ -104,7 +104,7 @@ $juryIdx = max(count($juryLecteurs), 1);
+ '<input type="checkbox" name="jury_lecteurs_ext[' + juryIdx + ']" value="1"' + '<input type="checkbox" name="jury_lecteurs_ext[' + juryIdx + ']" value="1"'
+ ' aria-label="Lecteur\u00b7ice ' + n + ' \u2014 externe"> Externe' + ' aria-label="Lecteur\u00b7ice ' + n + ' \u2014 externe"> Externe'
+ '</label>' + '</label>'
+ '<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)"' + '<button type="button" class="btn btn--sm btn--ghost admin-btn-remove" onclick="removeJuryRow(this)"'
+ ' aria-label="Supprimer le lecteur\u00b7ice ' + n + '"><span aria-hidden="true">\u2715</span></button>'; + ' aria-label="Supprimer le lecteur\u00b7ice ' + n + '"><span aria-hidden="true">\u2715</span></button>';
list.appendChild(div); list.appendChild(div);
juryIdx++; juryIdx++;

View File

@@ -41,7 +41,7 @@
</select> </select>
</label> </label>
<button type="submit" class="search-apply-btn">Filtrer</button> <button type="submit" class="btn btn--primary search-apply-btn">Filtrer</button>
<a href="/search?query=<?= urlencode($_GET['query'] ?? '') ?>" class="search-reset-link">Réinitialiser</a> <a href="/search?query=<?= urlencode($_GET['query'] ?? '') ?>" class="search-reset-link">Réinitialiser</a>
</form> </form>

View File

@@ -303,7 +303,7 @@
placeholder="Décrivez brièvement votre motivation (recherche, collaboration, etc.)"></textarea> placeholder="Décrivez brièvement votre motivation (recherche, collaboration, etc.)"></textarea>
</div> </div>
<button type="submit" class="tfe-btn-request-access"> <button type="submit" class="btn btn--primary tfe-btn-request-access">
Demander l'accès Demander l'accès
</button> </button>