mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 19:19:19 +02:00
feat: licence page, admin pages editor, license types, gradient card placeholders, latest-year home view
- Feature 1: public /licence.php fetches 'licenses' page from DB, renders Markdown - Feature 1: nav.php adds 'Licence' link with active state - Feature 2: Database::getPage(), savePage(), getAllPages() methods - Feature 2: bundled src/Parsedown.php (MIT, zero-dependency) - Feature 2: apropos.php now renders 'about' page content from DB via Parsedown - Feature 2: admin/pages.php (list) + admin/pages-edit.php (EasyMDE editor) - Feature 2: admin/actions/page.php (auth+CSRF+validation+save) - Feature 2: admin/head.php adds 'Pages statiques' nav link - Feature 3: storage/schema.sql seeds 8 CC license types - Feature 3: storage/migrations/003_seed_license_types.sql (applied to live DB) - Feature 3: Database::getLicenseTypes() / getAllLicenseTypes() - Feature 3: admin/add.php + formulaire.php: license_id field on add form - Feature 3: admin/edit.php: license_id field on edit form with raw FK lookup - Feature 3: tfe.php: shows 'Licence :' meta row when non-null - Feature 6: main.css: .card__media--gradient styles - Feature 6: index.php: deterministic HSL gradient placeholder cards - Feature 6: Database::getLatestYearTheses() + getLatestPublishedYear() - Feature 6: index.php default home = random latest-year theses with info label
This commit is contained in:
@@ -93,6 +93,42 @@ html, body {
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Markdown-rendered page content */
|
||||
.apropos-page-content p {
|
||||
margin: 0 0 1.2em 0;
|
||||
}
|
||||
.apropos-page-content h1,
|
||||
.apropos-page-content h2,
|
||||
.apropos-page-content h3 {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
font-weight: 400;
|
||||
margin: 1.5em 0 0.5em 0;
|
||||
}
|
||||
.apropos-page-content h1 { font-size: 1.55rem; }
|
||||
.apropos-page-content h2 { font-size: 1.3rem; }
|
||||
.apropos-page-content h3 { font-size: 1.1rem; }
|
||||
.apropos-page-content a {
|
||||
color: var(--purple);
|
||||
text-underline-offset: 2px;
|
||||
}
|
||||
.apropos-page-content ul,
|
||||
.apropos-page-content ol {
|
||||
padding-left: 1.5rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.apropos-page-content li {
|
||||
margin-bottom: .3em;
|
||||
}
|
||||
.apropos-page-content strong { font-weight: 700; }
|
||||
.apropos-page-content em { font-style: italic; }
|
||||
.apropos-page-content code {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
font-size: 0.9em;
|
||||
background: rgba(0,0,0,.06);
|
||||
padding: .1em .3em;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* Licences section */
|
||||
.apropos-licences {
|
||||
margin-top: 2rem;
|
||||
|
||||
@@ -91,6 +91,41 @@ html, body {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.card__media--gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.card__gradient-author {
|
||||
color: #fff;
|
||||
font-size: 0.75rem;
|
||||
opacity: .85;
|
||||
margin-bottom: .25rem;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.card__gradient-title {
|
||||
color: #fff;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Latest-year label */
|
||||
.home-latest-label {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.card__info {
|
||||
padding: 0.55rem 0.5rem 0.65rem;
|
||||
font-size: 0.88rem;
|
||||
|
||||
Reference in New Issue
Block a user