Restructure MVC into public/src layout

Co-authored-by: LeOSW42 <673670+LeOSW42@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-01-24 14:00:58 +00:00
parent 1be6b7ff0c
commit f617ecb350
135 changed files with 75 additions and 63 deletions

View File

@@ -0,0 +1,69 @@
/*********************************/
/** Wiki files page **/
/*********************************/
#wiki_files table {
width: 100%;
margin: 10px auto 30px;
}
#wiki_files table, #wiki_files td {
border: 1px solid #ccc;
border-collapse: collapse;
}
#wiki_files th {
border: 1px solid #aaa;
border-collapse: collapse;
}
#wiki_files th a {
color: inherit !important;
}
#wiki_files th i {
float: right;
}
#wiki_files td, #wiki_files th {
padding: 5px;
}
#wiki_files tr:nth-child(even) {
background: #efefef;
}
#wiki_files tr:nth-child(odd) {
background: #e1e1e1;
}
#wiki_files tr.first {
background: #ccc;
}
#wiki_files tr:hover {
background: #f5f5f5;
}
#wiki_files tr.first:hover {
background: #ccc;
}
#wiki_files td a {
display: block;
}
#wiki_files .center {
text-align: center;
}
#send_file {
display: flex;
}
#send_file div {
padding: 10px;
margin: 10px;
}
#send_file div {
flex: 2
}
#send_file input[type="submit"] {
text-align: center;
width: 150px;
flex: 1;
margin: 10px;
padding: 10px;
border-bottom: 2px solid blue;
}

261
public/views/css/d.blog.css Executable file
View File

@@ -0,0 +1,261 @@
/*********************************/
/** Blog list page **/
/*********************************/
#blog_list article {
margin: 40px auto 0 auto;
width: 90%;
background: #efefef;
border: 1px solid #ccc;
border-bottom: 2px solid #ccc;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
#blog_list #articles_list article:first-child {
margin-top: 80px;
}
#blog_list .article_title {
background: #ccc;
padding: 5px 10px;
}
#blog_list .article_content {
padding: 20px 10px 5px 10px;
white-space: pre-line;
}
#blog_list .article_legend {
font-style: italic;
padding: 0 10px;
}
#blog_list .article_link {
font-weight: 500;
}
#blog_list .article_infos {
float: right;
}
#blog_list .article_archive {
opacity: 0.5;
}
#blog_list .pagebuttons {
margin: 40px 0 30px 0;
}
/*********************************/
/** Blog view article page **/
/*********************************/
#blogTimestamp {
font-size: 0.8em;
font-weight: 500;
float: right;
font-style: italic;
}
#blogContent {
margin: 50px 0 20px 0;
}
#blogContent h2 { margin: .75em 0 }
#blogContent h3 { margin: .83em 0 }
#blogContent h4, #blogContent p, #blogContent blockquote, #blogContent ul, #blogContent fieldset, #blogContent form, #blogContent ol, #blogContent dl { margin: 1.12em 0 }
#blogContent h5 { margin: 1.5em 0 }
#blogContent h6 { margin: 1.67em 0 }
#blogContent blockquote { margin-left: 40px; margin-right: 40px }
#blogContent ol, #blogContent ul, #blogContent dd { margin-left: 40px }
#blogContent ol ul, #blogContent ul ol, #blogContent ul ul, #blogContent ol ol { margin-top: 0; margin-bottom: 0 }
#blogContent .footnotes {
font-size: 0.8em;
}
#blogContent .footnotes p {
margin: 0.4em 0;
}
#blogContent hr {
border: 1px inset;
}
#blogContent img {
max-width: 100%;
border: 1px solid #bbb;
}
#blogContent .imglegend {
position: relative;
}
#blogContent .imglegend img {
display: block;
}
#blogContent .imglegend p {
display: block;
background: rgba(0,0,0,0.5);
color: white;
font-size: 14px;
font-variant: small-caps;
line-height: 20px;
position: absolute;
bottom: 0;
right: 0;
margin: 0;
padding: 2px 5px;
}
#new_comment {
clear: both;
margin: 100px auto 0 auto;
width: 90%;
background: #efefef;
border: 1px solid #ccc;
border-bottom: 3px solid #ccc;
}
#new_comment_label {
background: #ccc;
padding: 15px 10px;
cursor: pointer;
font-weight: 500;
font-size: 1.1em;
}
#new_comment_label p {
margin: 0;
}
#new_comment_label input {
display: none;
margin: 3px;
float: right;
padding: 5px 10px;
position: relative;
top: -7px;
width: 140px;
}
#new_comment_form {
display: none;
}
#new_comment_form textarea {
margin: 0;
border: 0;
}
#new_comment_label.sent {
cursor: default;
}
#blog_article article {
margin: 40px auto 0 auto;
width: 90%;
background: #efefef;
border: 1px solid #ccc;
border-bottom: 2px solid #ccc;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
#blog_article .comment_title {
background: #ccc;
padding: 5px 10px;
}
#blog_article .delete_link {
font-variant: small-caps;
font-weight: 500;
padding: 4px 0;
float: right;
}
#blog_article .icon {
border: 1px solid #999;
border-radius: 3px;
margin: 0 3px 0 3px;
padding: 4px 0;
line-height: 20px;
text-align: center;
width: 28px;
background: #ccc;
vertical-align: middle;
}
#blog_article .icon.avatar {
padding: 0;
height: 28px;
}
#blog_article .comment_content {
padding: 5px 10px;
}
#blog_article article.comment_archive {
opacity: 0.5;
}
#blog_article.archive {
opacity: 0.5;
}
/*********************************/
/** Blog edit article page **/
/*********************************/
form.form input[type="checkbox"] {
display:none;
}
form.form input[type="checkbox"] + span:before {
font-family: "Font Awesome 5 Free";
font-weight: 400;
vertical-align: middle;
padding: 2px 5px 2px 4px;
margin-right: 10px;
display: inline-block;
width: 21px;
background: #ddd;
font-size: 25px;
}
form.form input[type="checkbox"] + span:before {
content: "\f0c8"; /* check-empty */
}
form.form input[type="checkbox"]:checked + span:before {
content: "\f14a"; /* check */
}
/* Also used for new comment form in the view page */
form.form input, form.form textarea, #locale {
background: #ddd;
border-bottom: 2px solid #ccc;
display: block;
padding: 10px;
}
form.form textarea {
font-size: 14px;
margin: 10px 0 10px 0px;
width: calc(100% - 20px);
}
form.form input {
width: 58%;
margin: 10px 0 10px 0px;
vertical-align: middle;
font-size: 18px;
}
form.form label {
font-size: 18px;
}
#locale {
width: 38%;
float: right;
font-size: 17px;
}
#permalink_container {
position: relative;
}
#permalink {
width: calc(100% - 225px);
padding-left: 215px;
}
#permalink_label {
position: absolute;
top: 10px;
left: 10px;
opacity: 0.8;
}

489
public/views/css/d.index.css Executable file
View File

@@ -0,0 +1,489 @@
* {
border: 0;
margin: 0;
padding: 0;
}
html {
height: 100%;
}
body {
font-family: "Fira Sans", "Open Sans",Helvetica,Arial,sans-serif;
color: #333;
background: #ddd;
padding-top: 65px;
height: calc(100% - 65px)
}
a {
text-decoration: none;
color: blue;
}
a:hover {
color: #212121;
text-decoration: none;
}
input, textarea {
font-family: "Fira Sans", "Open Sans",Helvetica,Arial,sans-serif;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
textarea {
resize:vertical;
}
small {
font-weight: 500;
}
pre {
overflow: auto;
}
.button {
padding: 5px 10px;
margin: 5px 10px;
border: 1px solid blue;
border-radius: 5px;
background: #ddddff;
}
.button:hover {
background: #eeeeff;
}
.pagebuttons {
text-align: center;
}
.pagebuttons a {
background: #efefef;
border: 1px solid #ccc;
padding: 5px;
font-size: 1.5em;
}
.pagebuttons .previous {
margin-right: -1px;
}
form.form input[type=submit] {
width: auto;
margin: auto;
border-bottom: 2px solid blue;
}
/* FONTS */
@font-face {
font-family: 'Fira Sans';
font-weight: 700;
src: url('../fonts/FiraSans-Bold.eot');
src: local('Fira-Sans-Bold'), local('Fira Sans Bold'), url('../fonts/FiraSans-Bold.otf') format('otf'), url('../fonts/FiraSans-Bold.ttf') format('truetype');
}
@font-face {
font-family: 'Fira Sans';
font-weight: 600;
src: url('../fonts/FiraSans-Medium.eot');
src: local('Fira-Sans-Medium'), local('Fira Sans Medium'), url('../fonts/FiraSans-Medium.otf') format('otf'), url('../fonts/FiraSans-Medium.ttf') format('truetype');
}
@font-face {
font-family: 'Fira Sans';
font-weight: 500;
src: url('../fonts/FiraSans-Regular.eot');
src: local('Fira-Sans'), local('Fira Sans'), url('../fonts/FiraSans-Regular.otf') format('otf'), url('../fonts/FiraSans-Regular.ttf') format('truetype');
}
@font-face {
font-family: 'Fira Sans';
font-weight: 400;
src: url('../fonts/FiraSans-Light.eot');
src: local('Fira-Sans-Light'), local('Fira Sans Light'), url('../fonts/FiraSans-Light.otf') format('otf'), url('../fonts/FiraSans-Light.ttf') format('truetype');
}
@font-face {
font-family: 'Fira Sans';
font-weight: 300;
src: url('../fonts/FiraSans-ExtraLight.eot');
src: local('Fira-Sans-ExtraLight'), local('Fira Sans ExtraLight'), url('../fonts/FiraSans-ExtraLight.otf') format('otf'), url('../fonts/FiraSans-ExtraLight.ttf') format('truetype');
}
/*********************************/
header {
position: fixed;
top: 0;
width: 100%;
background: black;
height: 65px;
color: white;
box-shadow: 0 0 3px black;
z-index: 1000;
}
#menu {
float: right;
position: relative;
}
header li {
display: inline-block;
height: 65px;
vertical-align: middle;
}
header li a, .hamburger {
color: white;
padding: 25px 15px 15px;
height: 20px;
display: block;
vertical-align: middle;
}
header li a:hover, header li a:focus-within {
color: white;
}
header li.with-subtitle a {
padding: 15px 15px 25px;
}
header li .subtitle {
font-size: 80%;
font-style: italic;
white-space: nowrap;
padding-left: 5px;
}
header li:hover a, header li:focus-within a {
border-bottom: 6px solid blue;
background: #212121;
}
header .icon {
border: 1px solid white;
border-radius: 3px;
margin: -5px 0;
padding: 4px 0;
line-height: 20px;
text-align: center;
width: 28px;
}
header .icon.avatar {
margin: -4px 0;
padding: 0;
height: 28px;
}
header li.has-sub:hover a, header li.has-sub:focus-within a {
border-bottom: 6px solid #212121;
}
header li.has-sub:hover > a {
cursor: default;
}
header li.has-sub:hover > ul, header li.has-sub:focus-within > ul {
display: block;
}
header li.has-sub ul {
display: none;
position: absolute;
right: 0px;
margin-top: -1px;
background: #212121;
}
header li.with-subtitle ul {
right: unset;
position: relative;
min-width: 100%;
}
header li.has-sub ul li {
display: block;
height: 46px;
border-left: 6px solid #212121;
}
header #connectform {
height: 127px;
}
header li.has-sub ul li a {
float: none;
padding: 15px 25px 15px 10px;
height: 10px;
border-bottom: none;
}
header li.has-sub ul li:hover, header li.has-sub ul li:focus-within {
border-left: 6px solid blue;
border-bottom: none;
}
header form {
display: block;
width: 200px;
padding: 15px 15px 0 15px;
}
header input {
margin: 0 0 10px -5px;
padding: 5px;
background: #333;
border-bottom: 1px solid #555;
display: block;
width: 100%;
color: #bbb;
}
header input[type=submit] {
position: relative;
margin-left: 0;
}
header input[type=submit] {
background: #555;
border-bottom: 1px solid #777;
}
header input:hover, header input:focus-within {
background: #DDD;
color: #222;
}
.hamburger {
display: none;
float: right;
}
#togglemenu {
display: none;
}
@media (max-width: 800px) {
#menu {
display: none;
background: black;
float: inherit;
position: static;
}
.hamburger {
display: block;
}
#togglemenu:checked ~ #menu {
display: block;
}
header li {
width: 100%;
height: inherit;
}
header li.menu-icon {
width: unset;
}
header li.menu-icon a {
padding: 20px 15px;
}
header li .subtitle {
padding-left: 0px;
}
header li.has-sub ul {
width: 100%;
}
header li.has-sub:hover ul, header li.has-sub:focus-within ul, header li.has-sub:hover ul li, header li.has-sub:focus-within ul li, header li.has-sub:hover ul a, header li.has-sub:focus-within ul a {
background-color: #212121;
border: 0;
}
header li.has-sub:hover a, header li.has-sub:focus-within a {
border-left: 6px solid blue;
border-bottom: 0;
}
header form {
width: unset;
}
}
#Hcontent {
max-width: 850px;
margin: 0 auto;
}
#logo {
float: left;
padding: 8px 15px;
margin: 2px 0;
opacity: 0.85;
}
#logo:hover {
opacity: 1;
}
#logo img {
height: 44px;
}
/*********************************/
section {
position: relative;
background: white;
margin: auto;
max-width: 820px;
min-height: calc(100% - 94px);
z-index: 10;
padding: 15px;
text-align: justify;
}
section#index {
min-height: calc(100% - 95px - 320px);
}
section h1 {
font-weight: 300;
font-size: 43px;
margin-top: 20px;
border-bottom: 1px solid #bbb;
}
section#index h1{
font-size: 40px;
}
section .subtitle {
font-variant: small-caps;
font-weight: 500;
background: #ddd;
margin: 0 20px 5px 0;
display: inline-block;
padding: 3px 5px;
float: right;
}
section p {
margin: 20px 0;
}
@media (max-width: 800px) {
section h1 {
font-size: 1.8rem;
text-align: left;
}
section#index h1 {
font-size: 1.7rem;
}
}
/***************************************/
footer {
background: #212121;
max-width: 820px;
padding: 15px;
margin: 15px auto 0 auto;
color: #c1c1c1;
}
footer #footernav {
padding: 0;
margin: 0;
margin-left: auto;
}
footer a {
color: white;
padding: 0 8px;
}
footer a:hover {
color: white;
}
footer .flex {
display: flex;
flex-wrap: wrap;
gap: 1rem;
}
/*********************************/
/** Index page **/
/*********************************/
#indexFullW {
position: relative;
background: url('../img/aside.jpg') left center no-repeat #070707;
width: 100%;
height: 320px;
z-index: 100;
box-shadow: inset 0 -1px 0 #444, 0 1px 5px black;
}
#AScontent {
height: 320px;
max-width: 850px;
margin: auto;
position: relative;
}
#imglegend {
text-align: right;
background: rgba(0,0,0,0.5);
color: white;
font-size: 14px;
font-variant: small-caps;
line-height: 20px;
position: absolute;
width: 100%;
bottom: 0px;
}
#imglegend p {
padding: 5px;
height: 20px;
}
/*********************************/
/** Community portal page **/
/*********************************/
.action {
clear: both;
margin: 50px auto 0 auto;
width: 90%;
background: #efefef;
}
.action p {
margin: 0;
}
.action .title {
background: #ccc;
cursor: pointer;
font-weight: 500;
font-size: 1.1em;
line-height: 56px;
}
.action .title a, .action .title p {
padding: 0 10px 0 71px;
margin: 0;
color: inherit;
display: block;
}
.action .title i {
float: left;
width: 56px;
line-height: 56px;
text-align: center;
font-size: 30px;
background: #333;
color: #ccc;
}
.action .description {
display: none;
border: solid #ccc;
border-width: 0px 1px 3px 1px;
}
.action .description p {
padding: 10px 20px;
}

240
public/views/css/d.map.css Executable file
View File

@@ -0,0 +1,240 @@
/* Custom configuration for the map page */
html {
height: 100%;
}
body {
height: calc(100% - 65px);
}
footer {
position: absolute;
bottom: 0;
right: 50%;
transform: translateX(50%);
width: 100%;
max-width: 820px;
z-index: 10000;
}
#advert {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 9999;
background: rgba(50,50,50,0.8);
color: #ddd;
padding: 20px;
border-bottom: 6px solid blue;
text-align: center;
}
#advert a{
color: white;
}
#advert .dots span {
opacity: 0;
animation: appear 1.5s infinite;
}
#advert .dots span:nth-child(1) {
animation-delay: 0s;
}
#advert .dots span:nth-child(2) {
animation-delay: 0.3s;
}
#advert .dots span:nth-child(3) {
animation-delay: 0.6s;
}
@keyframes appear {
0%, 80%, 100% {
opacity: 0;
}
40% {
opacity: 1;
}
}
/*****************************************
Controls of the map
*****************************************/
/* General */
.leaflet-control-container {
position: absolute !important;
width: 850px !important;
height: 100%;
left: calc(50% - 425px) !important;
font-family: "Fira Sans", "Open Sans",Helvetica,Arial,sans-serif !important;
}
.leaflet-fullscreen-on .leaflet-control-container {
position: absolute !important;
width: 100% !important;
left: 0 !important;
}
.leaflet-bottom.leaflet-left {
margin-bottom: 60px;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-left {
margin-bottom: 15px !important;
margin-left: 15px !important;
}
.leaflet-bottom.leaflet-right {
margin-bottom: 60px;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-right {
margin-bottom: 15px !important;
margin-right: 15px !important;
}
.leaflet-control {
clear: none !important;
padding: 0 !important;
border-radius: 0 !important;
box-shadow: none !important;
color: #c1c1c1 !important;
}
.leaflet-right .leaflet-control {
margin: 0 0 0 15px !important;
}
.leaflet-left .leaflet-control {
margin: 0 15px 0 0 !important;
}
.leaflet-control a, .leaflet-control button {
display: inline-block !important;
float: none !important;
border: none !important;
background-color: #212121 !important;
border-radius: 0 !important;
color: #c1c1c1 !important;
border-right: 1px #3e3e3e solid !important;
}
.leaflet-control a:last-child, .leaflet-control button:last-child {
border-right: none !important;
}
/* Zoom */
.leaflet-control-zoom-in, .leaflet-control-zoom-out {
font-size: 10px !important;
}
.leaflet-disabled {
background-color: rgba(33, 33, 33, 0.8) !important;
opacity: 0.8 !important;
}
/* Fullscreen */
.leaflet-control-fullscreen a {
background: #212121 !important;
}
.leaflet-control-fullscreen a:before {
content: "\f065";
font-family: "Font Awesome 5 Free";
font-weight: 900;
background: none !important;
}
.leaflet-fullscreen-on .leaflet-control-fullscreen a:before {
content: "\f066";
font-family: "Font Awesome 5 Free";
font-weight: 900;
}
/* Baselayers */
.leaflet-control-layers a {
background: #212121 !important;
width: 26px !important;
height: 26px !important;
line-height: 26px !important;
text-align: center !important;
border-right: none !important;
}
.leaflet-control-layers a:before {
content: "\f5fd";
font-family: "Font Awesome 5 Free";
font-weight: 900;
background: none !important;
}
.leaflet-control-layers-expanded a {
display: none !important;
}
.leaflet-control-layers-list {
padding: 3px 8px !important;
color: white !important;
background: #212121 !important;
width: inherit !important;
}
/* Scale */
.leaflet-control-scale-line {
height: 30px !important;
top: 2px !important;
position: relative !important;
background: #212121 !important;
color: #c1c1c1 !important;
text-align: center !important;
border: none !important;
font-size: 12px !important;
line-height: 30px !important;
}
.leaflet-control-scale {
opacity: 0.8 !important;
}
/* Credit / Legend */
.leaflet-control button {
font-size: 12px !important;
}
#footer-credits, #footer-legend {
background: #212121;
padding: 15px;
margin: 15px auto 0 auto;
color: #c1c1c1;
text-align: left;
position: absolute;
bottom: 0;
right: 50%;
transform: translateX(50%);
width: 100%;
max-width: 820px;
z-index: 10000;
display: flex;
}
#footer-credits .close-link, #footer-legend .close-link {
position: absolute;
right: 10px;
color: white;
padding: 0 8px;
cursor: pointer;
}
#footer-credits a, #footer-legend a {
color: white;
}
#footer-credits a:hover, #footer-legend a:hover {
color: white;
}
.legend_item {
flex: 1;
text-align: center;
}
.poi_icon {
height: 15px;
}
.leaflet-fullscreen-on .easy-button-container {
display: none;
}

675
public/views/css/d.poi.css Executable file
View File

@@ -0,0 +1,675 @@
/*********************************/
/** Common **/
/*********************************/
html, body {
height: 100%;
}
#sticky {
position: relative;
min-height: 0;
top: 65%;
z-index: 10;
pointer-events: none;
}
#sticky * {
pointer-events: auto;
}
@keyframes fadeinfadeout {
0% {color: #444;}
50% {color: #999;}
100% {color: #444;}
}
#slide-icon {
position: absolute;
left: 400px;
top: -35px;
color: #000;
font-size: 60px;
color: #555;
animation-name: fadeinfadeout;
animation-duration: 2s;
animation-iteration-count: infinite;
cursor: pointer;
}
#mapid {
position: fixed;
height: 100%;
width: 100%;
top: 0;
}
section.archive > * {
opacity: 0.5;
}
/* Comments of a poi */
#new_comment {
clear: both;
margin: 30px auto 0 auto;
width: 90%;
background: #efefef;
border: 1px solid #ccc;
border-bottom: 3px solid #ccc;
}
#new_comment_label {
background: #ccc;
padding: 15px 10px;
cursor: pointer;
font-weight: 500;
font-size: 1.1em;
}
#new_comment_label p {
margin: 0;
}
#new_comment_label input {
display: none;
margin: 5px;
float: right;
padding: 5px 10px;
position: relative;
top: -7px;
width: 140px;
}
#new_comment_form {
display: none;
}
#new_comment_form textarea {
margin: 0;
border: 0;
font-size: 14px;
width: calc(100% - 20px);
}
#new_comment_label.sent {
cursor: default;
}
section article {
margin: 30px auto 0 auto;
width: 90%;
background: #efefef;
border: 1px solid #ccc;
border-bottom: 2px solid #ccc;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
section .comment_title {
background: #ccc;
padding: 5px 10px;
}
section .delete_link {
font-variant: small-caps;
font-weight: 500;
padding: 4px 0;
float: right;
}
section .icon {
border: 1px solid #999;
border-radius: 3px;
margin: 0 3px 0 3px;
padding: 4px 0;
line-height: 20px;
text-align: center;
width: 28px;
background: #ccc;
vertical-align: middle;
}
section .icon.avatar {
padding: 0;
height: 28px;
}
section .comment_content {
padding: 5px 10px;
}
section article.comment_archive {
opacity: 0.5;
}
/*********************************/
/** Editor page **/
/*********************************/
form.form input, form.form textarea, #locale {
font-size: 16px;
padding: 10px;
}
form.form input, form.form textarea, form.form input[type=radio]:checked+label, #locale {
background: #ddd;
border-bottom: 2px solid #ccc;
}
form.form h1 input {
flex: 2 !important;
font-size: 18px;
}
form.form h1 {
padding: 10px 0;
margin: 0 0 10px 0;
}
#locale {
flex: 1;
margin: 10px 5px 0 5px;
font-size: 17px;
}
.flex_line {
display: flex;
flex-direction: row;
position: relative;
}
.flex_line > :first-child {
margin-left: 0 !important;
}
.flex_line > :last-child, .last-child {
margin-right: 0 !important;
}
.flex_line input[type=number], .flex_line input[type=text] {
flex: 1;
margin: 10px 5px 0 5px;
}
.noarrow::-webkit-inner-spin-button,
.noarrow::-webkit-outer-spin-button,
.noarrow {
-webkit-appearance: none;
-moz-appearance: textfield;
appearance: textfield;
margin: 0;
}
form.form input[type=submit] {
width: auto;
display: block;
margin: 10px auto;
border-bottom: 2px solid blue;
}
form.form input[type=radio] {
position: absolute;
float: left;
opacity: 0%;
top: 50%;
left: 50%;
}
form.form input[type=radio]+label {
margin-top: 10px;
font-size: 13px;
flex: 1;
text-align: center;
padding: 10px;
vertical-align: middle;
border-bottom: 2px solid transparent;
}
form.form input[type=radio]+label img {
width: 32px;
height: 32px;
}
#specific_form .threecb:after {
font-family: "Font Awesome 5 Free";
font-weight: 400;
vertical-align: middle;
padding: 3px 8px 2px 4px;
margin: 2px 10px;
display: inline-block;
width: 21px;
background: #ddd;
font-size: 25px;
border-radius: 100px;
}
#specific_form .threecb.check:after {
content: "\f058"; /* check */
}
#specific_form .threecb.uncheck:after {
content: "\f057"; /* cross */
}
#specific_form .threecb.intermediate:after {
content: "\f059"; /* question */
}
#specific_form input {
margin: 2px 10px;
}
#specific_form textarea {
margin: 5px 0;
display: block;
width: calc(100% - 20px);
height: 100px;
}
#specific_form .flex_line {
align-items: center;
}
#specific_form .flex_line input {
flex: 1;
}
#abstract {
text-align: center;
color: #555;
font-style: italic;
}
form.form input[type="checkbox"] {
display:none;
}
form.form input[type="checkbox"] + span:before {
font-family: "Font Awesome 5 Free";
font-weight: 400;
vertical-align: middle;
padding: 2px 5px 2px 4px;
margin-right: 10px;
display: inline-block;
width: 21px;
background: #ddd;
font-size: 25px;
}
form.form input[type="checkbox"] + span:before {
content: "\f0c8"; /* check-empty */
}
form.form input[type="checkbox"]:checked + span:before {
content: "\f14a"; /* check */
}
#permalink_container {
position: relative;
margin: 2px 0;
}
#permalink {
width: calc(100% - 194px);
padding-left: 184px;
}
#permalink_label {
position: absolute;
top: 10px;
left: 10px;
opacity: 0.8;
font-size: 16px;
}
/*****************************************
Controls of the map
*****************************************/
/* General */
.leaflet-control-container {
position: absolute !important;
width: 850px !important;
height: 100%;
left: calc(50% - 425px) !important;
font-family: "Fira Sans", "Open Sans",Helvetica,Arial,sans-serif !important;
}
.leaflet-fullscreen-on .leaflet-control-container {
position: absolute !important;
width: 100% !important;
left: 0 !important;
}
.leaflet-bottom.leaflet-left {
bottom: 35% !important;
margin-bottom: -50px !important;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-left {
margin-bottom: 15px !important;
margin-left: 15px !important;
bottom: 0 !important;
}
.leaflet-bottom.leaflet-right {
bottom: 35% !important;
margin-bottom: -50px !important;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-right {
margin-bottom: 15px !important;
margin-right: 15px !important;
bottom: 0 !important;
}
.leaflet-control {
clear: none !important;
padding: 0 !important;
border-radius: 0 !important;
box-shadow: none !important;
color: #c1c1c1 !important;
}
.leaflet-right .leaflet-control {
margin: 0 0 0 15px !important;
}
.leaflet-left .leaflet-control {
margin: 0 15px 0 0 !important;
}
.leaflet-control a, .leaflet-control button {
display: inline-block !important;
float: none !important;
border: none !important;
background-color: #212121 !important;
border-radius: 0 !important;
color: #c1c1c1 !important;
border-right: 1px #3e3e3e solid !important;
}
.leaflet-control a:last-child, .leaflet-control button:last-child {
border-right: none !important;
}
/* Zoom */
.leaflet-control-zoom-in, .leaflet-control-zoom-out {
font-size: 10px !important;
}
.leaflet-disabled {
background-color: rgba(33, 33, 33, 0.8) !important;
opacity: 0.8 !important;
}
/* Fullscreen */
.leaflet-control-fullscreen a {
background: #212121 !important;
}
.leaflet-control-fullscreen a:before {
content: "\f065";
font-family: "Font Awesome 5 Free";
font-weight: 900;
background: none !important;
}
.leaflet-fullscreen-on .leaflet-control-fullscreen a:before {
content: "\f066";
font-family: "Font Awesome 5 Free";
font-weight: 900;
}
/* Baselayers */
.leaflet-control-layers a {
background: #212121 !important;
width: 26px !important;
height: 26px !important;
line-height: 26px !important;
text-align: center !important;
border-right: none !important;
}
.leaflet-control-layers a:before {
content: "\f5fd";
font-family: "Font Awesome 5 Free";
font-weight: 900;
background: none !important;
}
.leaflet-control-layers-expanded a {
display: none !important;
}
.leaflet-control-layers-list {
padding: 3px 8px !important;
color: white !important;
background: #212121 !important;
width: inherit !important;
}
/* Scale */
.leaflet-control-scale-line {
height: 30px !important;
top: 2px !important;
position: relative !important;
background: #212121 !important;
color: #c1c1c1 !important;
text-align: center !important;
border: none !important;
font-size: 12px !important;
line-height: 30px !important;
}
.leaflet-control-scale {
opacity: 0.8 !important;
}
#elevation_icon {
font-size: 20px;
cursor: pointer;
position: relative;
top: 18px;
right: 34px;
}
#elevation_icon i {
position: absolute;
}
/*****************************************
View page
*****************************************/
.poi-icon-wrapper {
position: relative;
display: inline-flex;
align-items: center;
margin-right: 10px;
}
/* Tooltip */
.poi-icon-wrapper[data-tooltip]:hover::after {
content: attr(data-tooltip);
position: absolute;
left: 40px;
top: 50%;
transform: translateY(-50%);
background: rgba(255, 255, 255, 0.9); /* blanc transparent */
color: #000;
padding: 6px 10px;
border-radius: 6px;
font-size: 15px; /* demandé */
border: 1px solid blue; /* bordure fine noire */
white-space: nowrap;
pointer-events: none;
z-index: 9999;
}
/* Petite flèche */
.poi-icon-wrapper[data-tooltip]:hover::before {
content: "";
position: absolute;
left: 32px;
top: 50%;
transform: translateY(-50%);
border: 6px solid transparent;
border-right-color: blue; /* même couleur que la bulle */
z-index: 9999;
filter: drop-shadow(0 0 0.5px #000); /* bordure subtile sur la flèche */
}
/* Fiche d'identité POI */
.poi-idcard {
width: 100%;
padding: 20px 15px;
background: rgba(200, 220, 255, 0.25);
border-bottom: 1px solid #bbb;
margin: 0;
box-sizing: border-box;
display: flex;
flex-direction: column;
gap: 8px;
}
/* Ligne principale : coordonnées + type */
.poi-id-main {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 19px; /* demandé */
font-weight: 600;
}
/* Coordonnées */
.poi-id-coords {
display: flex;
align-items: center;
gap: 8px;
}
.poi-id-coords a {
color: #0055aa;
text-decoration: none;
}
.poi-id-coords a:hover {
text-decoration: underline;
}
.poi-id-elev {
color: #333;
}
/* Type */
.poi-id-type {
display: flex;
align-items: center;
gap: 6px;
}
/* Label discret */
.poi-id-label {
font-weight: 500;
color: #444;
}
/* Dates en petit */
.poi-id-dates {
font-size: 15px; /* demandé */
color: #555;
display: flex;
gap: 20px;
}
/* Mobile */
@media (max-width: 700px) {
.poi-id-main {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.poi-id-dates {
flex-direction: column;
gap: 2px;
}
}
/*****************************************
* CHAMPS GÉNÉRIQUES
*****************************************/
.field {
display: flex;
flex-direction: column;
gap: 4px;
padding-bottom: 12px;
}
.field > label {
font-weight: 600;
font-size: 17px;
}
/*****************************************
* TEXTES LONGS (t_)
*****************************************/
.field-t .field-value {
padding: 10px 12px;
font-size: 15px;
}
/*****************************************
* NOMBRES ET LIENS EN LIGNE (n_ et l_)
*****************************************/
/* Label + valeur sur une seule ligne */
.field-n,
.field-l {
flex-direction: row;
align-items: baseline;
gap: 6px;
}
/* On enlève le padding bas qui faisait “bloc” */
.field-n,
.field-l {
padding-bottom: 4px;
}
/* Valeur inline */
.inline-value {
display: inline-block;
font-size: 15px;
color: #222;
}
/* Liens */
.inline-value a {
color: #1a5ad7;
font-weight: 600;
text-decoration: none;
}
.inline-value a:hover {
text-decoration: underline;
}
/*****************************************
* Booleans grid in poi view
*****************************************/
.bool-grid {
margin: 20px 0 0 0;
padding: 20px 15px;
background: rgba(200, 220, 255, 0.25);
border-top: 1px solid #bbb;
}
.bool-row {
display: grid;
grid-auto-flow: column;
grid-auto-columns: 1fr;
text-align: center;
margin-bottom: 10px;
}
.bool-row.labels {
font-size: 16px;
}
.bool-label {
padding: 5px;
}
.bool-row.values {
margin-top: 5px;
}
.boolean-pill {
display: inline-block;
padding: 8px 12px;
border-radius: 20px;
font-weight: 700;
font-size: 18px;
background: white;
}
@media (max-width: 900px) {
.bool-row {
grid-auto-flow: row;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
}
}

200
public/views/css/d.user.css Executable file
View File

@@ -0,0 +1,200 @@
/*********************************/
/** Login page **/
/*********************************/
form.form {
width: 80%;
margin: 25px auto;
text-align: center;
}
form.form input, form.form textarea {
background: #ddd;
border-bottom: 2px solid #ccc;
width: 100%;
display: block;
margin: 10px 0 15px -10px;
padding: 10px;
}
form.form textarea {
font-size: 14px;
}
form.form input {
font-size: 18px;
}
/*********************************/
/** Profile page **/
/*********************************/
#profile article {
margin: 30px 0;
}
#profile aside {
width: 220px;
height: 240px;
background: #ddd;
float: left;
margin: 0 30px 0 0;
border: 1px solid #bbb;
text-align: center;
color: #999;
line-height: 238px;
overflow: hidden;
}
#profile aside img {
vertical-align: middle;
max-width: 220px;
max-height: 240px;
z-index: 1;
box-shadow: 0 0 15px #aaa;
}
#profile aside.noavatar #profileavatar {
display: none;
}
#profile aside.avatar #profilenoavatar {
display: none;
}
#profile aside.noavatar #profilenoavatar {
display: inline;
font-size: 150px;
line-height: 238px;
}
#profile aside.avatar #profileavatar {
display: inline;
}
.userrole {
font-variant: small-caps;
font-weight: 500;
}
.external-link {
font-size: 0.8em;
margin: 0 3px;
}
#profile form.form {
width: 90%;
}
/*********************************/
/** Edit user page **/
/*********************************/
form.edituser ul {
margin-left: 250px;
}
form.edituser ul {
list-style-type: none;
}
form.edituser label {
width: 150px;
float: left;
margin: 13px 15px 0 0;
text-align: right;
}
form.edituser input, form.edituser select {
background: #ddd;
border-bottom: 2px solid #ccc;
margin: 5px;
padding: 10px;
width: 250px;
}
form.edituser input[type=submit] {
width: 150px;
margin: 20px 0 0 170px;
border-bottom: 2px solid blue;
}
form.edituser #picturebuttonscontainer {
text-align: left;
height: 0;
top: 106px;
left: 0;
position: relative;
z-index: 10;
}
form.edituser #picturebuttons {
text-align: center;
line-height: 30px;
height: 30px;
display: inline-block;
background: #bbb;
}
form.edituser #picturebuttons a {
width: 30px;
display: inline-block;
}
/*********************************/
/** Member list page **/
/*********************************/
#member_list table {
width: 100%;
margin: 30px auto;
}
#member_list table, #member_list td {
border: 1px solid #ccc;
border-collapse: collapse;
}
#member_list th {
border: 1px solid #aaa;
border-collapse: collapse;
}
#member_list th a {
color: inherit !important;
}
#member_list th i {
float: right;
}
#member_list td, #member_list th {
padding: 5px;
}
#member_list tr:nth-child(even) {
background: #efefef;
}
#member_list tr:nth-child(odd) {
background: #e1e1e1;
}
#member_list tr.first {
background: #ccc;
}
#member_list tr:hover {
background: #f5f5f5;
}
#member_list tr.first:hover {
background: #ccc;
}
#member_list .username {
font-size: 1.2em;
}
#member_list .icon {
border: 1px solid #999;
border-radius: 3px;
margin: 0 3px 0 0;
padding: 4px 0;
line-height: 20px;
text-align: center;
width: 28px;
background: #ccc;
vertical-align: middle;
}
#member_list .icon.avatar {
padding: 0;
height: 28px;
}

82
public/views/css/d.wiki.css Executable file
View File

@@ -0,0 +1,82 @@
/*********************************/
/** View page **/
/*********************************/
#wikiTimestamp {
font-size: 0.8em;
font-weight: 500;
float: right;
font-style: italic;
}
form.form input, form.form textarea, #locale {
background: #ddd;
border-bottom: 2px solid #ccc;
display: block;
padding: 10px;
}
form.form textarea {
font-size: 14px;
margin: 10px 0 10px 0px;
width: calc(100% - 20px);
}
form.form input {
width: 58%;
margin: 10px 0 10px 0px;
font-size: 18px;
}
#locale {
width: 38%;
float: right;
font-size: 17px;
}
#wikiContent {
margin: 50px 0;
}
#wikiContent h2 { margin: .75em 0 }
#wikiContent h3 { margin: .83em 0 }
#wikiContent h4, #wikiContent p, #wikiContent blockquote, #wikiContent ul, #wikiContent fieldset, #wikiContent form, #wikiContent ol, #wikiContent dl { margin: 1.12em 0 }
#wikiContent h5 { margin: 1.5em 0 }
#wikiContent h6 { margin: 1.67em 0 }
#wikiContent blockquote { margin-left: 40px; margin-right: 40px }
#wikiContent ol, #wikiContent ul, #wikiContent dd { margin-left: 40px }
#wikiContent ol ul, #wikiContent ul ol, #wikiContent ul ul, #wikiContent ol ol { margin-top: 0; margin-bottom: 0 }
#wikiContent hr { border: 1px solid #bbb }
#wikiContent .footnotes {
font-size: 0.8em;
}
#wikiContent .footnotes p {
margin: 0.4em 0;
}
#wiki_page.archive {
opacity: 0.5;
}
#wikiContent img {
max-width: 100%;
border: 1px solid #bbb;
}
#wikiContent .imglegend {
position: relative;
}
#wikiContent .imglegend img {
display: block;
}
#wikiContent .imglegend p {
display: block;
background: rgba(0,0,0,0.5);
color: white;
font-size: 14px;
font-variant: small-caps;
line-height: 20px;
position: absolute;
bottom: 0;
right: 0;
margin: 0;
padding: 2px 5px;
}