initial commit after server failure

This commit is contained in:
Léo
2017-12-20 21:49:11 +01:00
commit a14390f8f5
109 changed files with 27898 additions and 0 deletions

7
views/blocks/d.footer.html Executable file
View File

@@ -0,0 +1,7 @@
<footer>
<div id="footernav">
<a href="<?=$config['rel_root_folder']?>wiki/legal">Mentions Légales</a> &mdash;
<a href="<?=$config['rel_root_folder']?>contact">Contact</a>
</div>
<p><i>Applications mobiles bientôt disponibles.</i></p>
</footer>

46
views/blocks/d.head.html Executable file
View File

@@ -0,0 +1,46 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, height=device-height">
<link rel="shortcut icon" href="<?=$config['views_url']?>img/favicon.png">
<? if (isset($head['css'])) {
foreach(explode(";",$head['css']) as $css) { ?>
<link rel="stylesheet" href="<?=$config['views_url']?>css/<?=$css?>"/>
<? }
}
else { ?>
<link rel="stylesheet" href="<?=$config['views_url']?>css/d.index.css"/>
<? } ?>
<link rel="stylesheet" href="<?=$config['views_url']?>third/font-awesome-4.7.0/css/font-awesome.min.css"/>
<script type="text/javascript" src="<?=$config['views_url']?>third/jquery-3.1.1.min.js"></script>
<? if (isset($head['third'])) {
foreach(explode(";",$head['third']) as $third) { ?>
<script type="text/javascript" src="<?=$config['views_url']?>third/<?=$third?>"></script>
<? }
} ?>
<script type="text/javascript" src="<?=$config['views_url']?>js/d.header.js"></script>
<? if (isset($head['js'])) {
foreach(explode(";",$head['js']) as $js) { ?>
<script type="text/javascript" src="<?=$config['views_url']?>js/<?=$js?>"></script>
<? }
} ?>
<? if (isset($head['title'])) { ?>
<title><?=$head['title']?> &mdash; Kabano</title>
<? }
else { ?>
<title>Cabanes et bivouac en montagne</title>
<? } ?>
<? if (isset($head['description'])) { ?>
<meta name="description" content="<?=$head['description']?>">
? }
else { ?>
<meta name="description" content="Annuaire collaboratif des hébergements pour les activitées de plein air : cabanes, refuges, campings...">
<? } ?>
<? if (isset($head['keywords'])) { ?>
<meta name="keywords" content="<?=$head['keywords']?>">
<? }
else { ?>
<meta name="keywords" content="kabano, huts, mountain, hiking, cabanes, refuges, bivouac, montagne, randonnée">
<? } ?>
</head>

52
views/blocks/d.nav.html Executable file
View File

@@ -0,0 +1,52 @@
<header>
<div id="Hcontent">
<a href="<?=$config['rel_root_folder']?>" id="logo">
<img alt="Kabano logo" src="<?=$config['views_url'].'img/'?>header.svg">
</a>
<nav>
<ul>
<li class="on-bar"><a class="on-bar" href="<?=$config['rel_root_folder']?>map">Carte</a></li>
<li class="on-bar"><a class="on-bar" href="<?=$config['rel_root_folder']?>search">Recherche</a></li>
<li class="on-bar"><a class="on-bar" href="<?=$config['rel_root_folder']?>news">Nouveautés</a></li>
<li class="on-bar"><a class="on-bar" href="<?=$config['rel_root_folder']?>community">Contribuer</a></li>
<li class="on-bar has-sub">
<? if (isset($user->avatar) AND $user->avatar=='t') { ?>
<a class="on-bar" href="#"><img alt="Avatar" class="icon avatar" src="<?=$config['rel_root_folder']?>medias/avatars/<?=$user->id?>_s.jpg"></a>
<? } elseif (isset($user->avatar) AND $user->avatar=='f') { ?>
<a class="on-bar" href="#"><i class="icon fa fa-user-secret"></i></a>
<? } else { ?>
<a class="on-bar" href="#"><i class="icon fa fa-user"></i></a>
<? } ?>
<ul>
<? if($user->role == 0) { ?>
<li id="connectform">
<form action="<?=$config['rel_root_folder']?>user/login" method="post">
<input type="text" name="login" placeholder="Nom d'utilisateur">
<input type="password" name="password" placeholder="Mot de passe">
<input type="submit" name="submit" value="Se connecter">
</form>
</li>
<li><a href="<?=$config['rel_root_folder']?>user/signin">S'inscrire</a></li>
<? } else { ?>
<li><a href="<?=$config['rel_root_folder']?>user/p">Mon profil</a></li>
<li><a href="<?=$config['rel_root_folder']?>user/member_list">Liste des membres</a></li>
<? if($user->role >= 800) { ?>
<li><a href="<?=$config['rel_root_folder']?>admin">Administration</a></li>
<? } ?>
<li><a href="<?=$config['rel_root_folder']?>user/logout">Se déconnecter</a></li>
<? } ?>
</ul>
</li>
<li class="on-bar has-sub"><a class="on-bar" href="#"><i class="icon fa fa-question"></i></a>
<ul>
<li><a href="<?=$config['rel_root_folder']?>wiki/help">Aide</a></li>
<li><a href="<?=$config['rel_root_folder']?>blog">Blog</a></li>
<li><a href="<?=$config['rel_root_folder']?>contact">Contact</a></li>
<li><a href="<?=$config['rel_root_folder']?>wiki/api">API Développeurs</a></li>
<li><a href="<?=$config['rel_root_folder']?>wiki/about">À propos</a></li>
</ul>
</li>
</ul>
</nav>
</div>
</header>

240
views/css/d.blog.css Executable file
View File

@@ -0,0 +1,240 @@
/*********************************/
/** 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 {
text-align: center;
margin: 40px 0 30px 0;
}
#blog_list .pagebuttons a {
background: #efefef;
border: 1px solid #ccc;
padding: 5px;
font-size: 1.5em;
}
#blog_list .pagebuttons .previous {
margin-right: -1px;
}
/*********************************/
/** 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;
}
#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: -2px;
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: 'FontAwesome';
vertical-align: middle;
padding: 2px 4px 0px 5px;
margin-right: 10px;
display: inline-block;
width: 21px;
background: #ddd;
font-size: 25px;
}
form.form input[type="checkbox"] + span:before {
content: "\f096"; /* check-empty */
}
form.form input[type="checkbox"]:checked + span:before {
content: "\f046"; /* 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;
}
#url {
width: calc(100% - 20px);
}
form.form input[type=submit] {
width: auto;
margin: auto;
border-bottom: 2px solid blue;
}

341
views/css/d.index.css Executable file
View File

@@ -0,0 +1,341 @@
* {
border: 0;
margin: 0;
padding: 0;
}
body {
font-family: "Fira Sans", "Open Sans",Helvetica,Arial,sans-serif;
color: #333;
background: #ddd;
padding-top: 65px;
}
a {
text-decoration: none;
color: blue;
}
a:hover {
color: #212121;
text-decoration: none;
}
input {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
textarea {
resize:vertical;
}
small {
font-weight: 500;
}
.button {
padding: 5px 10px;
margin: 5px 10px;
border: 1px solid blue;
border-radius: 5px;
background: #ddddff;
}
.button:hover {
background: #eeeeff;
}
/* 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;
}
header ul {
float: right;
position: relative;
}
header li {
display: inline-block;
height: 65px;
vertical-align: middle;
}
header li a {
color: white;
padding: 25px 15px 15px;
height: 20px;
display: block;
vertical-align: middle;
}
header li a:hover {
color: white;
}
header li:hover 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 {
padding: 0;
height: 28px;
}
header li.has-sub:hover a {
border-bottom: 6px solid #212121;
}
header li.has-sub:hover > ul {
display: block;
}
header li.has-sub ul {
display: none;
position: absolute;
right: 0px;
margin-top: -1px;
background: #212121;
}
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 {
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 {
background: #DDD;
color: #222;
}
#Hcontent {
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;
width: 820px;
min-height: 320px;
z-index: 10;
padding: 15px;
text-align: justify;
}
section h1 {
font-weight: 300;
font-size: 43px;
margin-top: 20px;
border-bottom: 1px solid #bbb;
}
section .subtitle {
font-variant: small-caps;
font-weight: 500;
background: #ddd;
margin: 0 20px 20px 0;
display: inline-block;
padding: 3px 5px;
float: right;
}
section p {
margin: 20px 0;
}
/***************************************/
footer {
background: #212121;
width: 820px;
padding: 15px;
margin: 15px auto 0 auto;
color: #c1c1c1;
text-align: left;
}
footer #footernav {
float: right;
padding: 0;
margin: 0;
}
footer a {
color: white;
padding: 0 8px;
}
footer a:hover {
color: white;
}
/*********************************/
/** Index page **/
/*********************************/
#indexFullW {
position: relative;
background: url('../img/aside.jpg') center 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;
width: 850px;
margin: auto;
}
#spacebeforesponsors {
height: 238px;
}
#sponsors {
height: 70px;
background: rgba(0,0,0,0.5);
padding: 5px 30px;
}
#sponsors a {
float: right;
display: block;
padding-top: 5px;
padding-left: 5px;
padding-right: 5px;
}
#sponsors a img {
height: 60px;
display: inline;
}
#sponsors p {
float: left;
color: white;
font-size: 20px;
font-variant: small-caps;
line-height: 70px;
}
section .thumb {
margin: 0 10px;
border: 1px solid #aaa;
}

173
views/css/d.map.css Executable file
View File

@@ -0,0 +1,173 @@
/* Custom configuration for the map page */
html {
height: 100%;
}
body {
height: calc(100% - 65px);
}
footer {
position: absolute;
bottom: 0;
left: calc(50% - 425px);
z-index: 10000;
}
/*****************************************
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 !important;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-left {
margin-bottom: 15px !important;
margin-left: 15px !important;
}
.leaflet-bottom.leaflet-right {
margin-bottom: 60px !important;
}
.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: FontAwesome;
background: none !important;
}
.leaflet-fullscreen-on .leaflet-control-fullscreen a:before {
content: "\f066";
font-family: FontAwesome;
}
/* 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: "\f279";
font-family: FontAwesome;
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;
}
/* Credit / Legend */
.leaflet-control button {
font-size: 12px !important;
}
#footer-credits, #footer-legend {
background: #212121;
width: 820px;
padding: 15px;
margin: 15px auto 0 auto;
color: #c1c1c1;
text-align: left;
position: absolute;
bottom: 0;
left: calc(50% - 425px);
z-index: 10000;
}
#footer-credits .close-link, #footer-legend .close-link {
float: right;
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;
}
/* Scale */
.leaflet-control-scale-line {
height: 26px !important;
background: #212121 !important;
color: #c1c1c1 !important;
text-align: center !important;
border: none !important;
font-size: 12px !important;
line-height: 20px !important;
}
.leaflet-control-scale {
opacity: 0.8 !important;
}

219
views/css/d.user.css Executable file
View File

@@ -0,0 +1,219 @@
/*********************************/
/** Login page **/
/*********************************/
form.form {
width: 50%;
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;
}
form.form input[type=submit] {
width: auto;
margin: auto;
border-bottom: 2px solid blue;
}
/*********************************/
/** 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;
}
#member_list .pagebuttons {
text-align: center;
}
#member_list .pagebuttons a {
background: #efefef;
border: 1px solid #ccc;
padding: 5px;
font-size: 1.5em;
}
#member_list .pagebuttons .previous {
margin-right: -1px;
}

66
views/css/d.wiki.css Executable file
View File

@@ -0,0 +1,66 @@
/*********************************/
/** 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;
}
form.form input[type=submit] {
width: auto;
margin: auto;
border-bottom: 2px solid blue;
}
#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 .footnotes {
font-size: 0.8em;
}
#wikiContent .footnotes p {
margin: 0.4em 0;
}
#wikiContent hr {
border: 1px inset;
}
#wiki_page.archive {
opacity: 0.5;
}

23
views/d.admin.git-pull.html Executable file
View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Mise à jour.</h1>
<br>
<pre><?
foreach($output as $line) {
echo $line."<br>";
}
?></pre>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

24
views/d.admin.html Executable file
View File

@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Administration.</h1>
<br>
<? if($user->role >= 1000) { ?>
<a href="<?=$config['rel_root_folder']?>admin/git-pull" class="button"><i class="fa fa-refresh"></i> Mettre à jour</a> <small>Met à jour le logiciel depuis le dépôt GIT.</small><br><br>
<? } ?>
<? if($user->role >= 800) { ?>
<a href="<?=$config['rel_root_folder']?>admin/logs" class="button"><i class="fa fa-history"></i> Voir les logs</a> <small>Permet d'accéder aux 200 dernières lignes des logs bruts des actions sur la base de données.</small><br><br>
<? } ?>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

41
views/d.admin.logs.html Executable file
View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Logs.</h1>
<span class="subtitle">
<select id="logfile">
<? $i = 0;
foreach ($files_list as $row) {
if ($row != "." && $row != "..") { ?>
<option <?=$i==$filenb?'selected':''?> value="<?=$i?>"><? echo $row; ?></option>
<? $i++;
} ?>
<? } ?>
</select>
</span>
<br>
<br>
<pre><?
foreach($output as $line) {
echo $line."<br>";
}
?></pre>
</section>
<script type="text/javascript">
$( "#logfile" ).change(function() {
window.location.href = "<?=$config['rel_root_folder']?>admin/logs/"+$( this ).val();
});
</script>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

72
views/d.blog.edit.html Executable file
View File

@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<? if(isset($new) AND $new==1) { ?>
<form class="form" action="<?=$config['rel_root_folder']?>blog/new" method="post">
<? }
else { ?>
<form class="form" action="<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/edit" method="post">
<? } ?>
<h1>
<select name="locale" id="locale">
<? foreach($config['locales'] as $locale) { ?>
<option <?=$blogArticle->locale==$locale[0]?'selected':''?> value="<?=$locale[0]?>"><?=$locale[5]?></option>
<? } ?>
</select>
<input type="text" value="<?=$blogArticle->title?>" name="title" id="title" placeholder="Titre">
</h1>
<? if(isset($error) AND $error=="url") { ?>
<p style="color: red;">L'URL sélectionnée est déjà prise.</p>
<? } ?>
<textarea rows="30" name="content" id="content" placeholder="Contenu de la page"><?=$blogArticle->content?></textarea>
<? if(isset($new) AND $new==1) { ?>
<input type="text" value="<?=$blogArticle->url?>" name="url" id="url" placeholder="URL">
<? } ?>
<label for="comments">
<input type="checkbox" name="comments" id="comments" value="comments"
<? if($blogArticle->comments == 't') { ?>
checked
<? } ?>
/>
<span>Autoriser les commentaires</span>
</label>
<input name="submit" id="submit" type="submit" value="Envoyer">
</form>
</section>
<script type="text/javascript">
$( "#title" ).keyup(function() {
url = $( "#title" ).val();
url = url.replace(/ /g,'_');
url = url.toLowerCase();
url = url.replace(/[^a-z0-9_]/g,'-');
url = url.replace(/[_$]/g,'-');
$( "#url" ).val(url);
});
$( "#title" ).change(function() {
url = $( "#title" ).val();
url = url.replace(/ /g,'_');
url = url.toLowerCase();
url = url.replace(/[^a-z0-9_]/g,'-');
url = url.replace(/[_$]/g,'-');
$( "#url" ).val(url);
});
</script>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

55
views/d.blog.list.html Executable file
View File

@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section id="blog_list">
<h1>Blog.</h1>
<p class="subtitle">
<? if ($user->role >= 800) { ?>
<a href="<?=$config['rel_root_folder']?>blog/new"><i class="fa fa-plus"></i> Nouvel article</a> &mdash;
<? } ?>
<a href="<?=$config['rel_root_folder']?>blog/rss"><i class="fa fa-rss" aria-hidden="true"></i> Flux RSS</a> &mdash;
Articles <?=$first?> à <?=$last?> sur <?=$blogArticles->number?>
</p>
<div id="articles_list">
<? foreach ($blogArticles_list as $row) { ?>
<article <? if($row->archive == 't') echo 'class="article_archive" '; ?>>
<h2 class="article_title"><?=$row->title?>.</h2>
<div class="article_content"><?=mb_substr($row->content_txt,0,200)?>...</div>
<p class="article_legend">
<a class="article_link" href="<?=$config['rel_root_folder']?>blog/<?=$row->url?>">Lire la suite...</a>
<span class="article_infos">
Le <? echo strftime('%e %B %G',strtotime($row->lastedit)) ?> par
<? if ($user->role > 0) { ?>
<a href="<?=$config['rel_root_folder']?>user/p/<?=$row->author?>"><?=$row->author_name?></a>
<? }
else { ?>
<?=$row->author_name?>
<? } ?>
</span>
</p>
</article>
<? } ?>
</div>
<div class="pagebuttons">
<? if ($page != 0) { ?><a class="previous" href="<?=$config['rel_root_folder']?>blog/<?=$page?>"><i class="fa fa-chevron-left fa-fw"></i></a><? }
if (($page+1)*$articles_per_pages < $blogArticles->number) { ?><a class="next" href="<?=$config['rel_root_folder']?>blog/<?=$page+2?>"><i class="fa fa-chevron-right fa-fw"></i></a><? } ?>
</div>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

45
views/d.blog.list.rss Executable file
View File

@@ -0,0 +1,45 @@
<?
$ts = gmdate("D, d M Y H:i:s", time() + 60) . " GMT";
header("Content-disposition: filename=blog.rss");
header("Content-Type: application/xml; UTF-8");
header("Content-Transfer-Encoding: binary");
header("Pragma: cache");
header("Expires: $ts");
header("Access-Control-Allow-Origin: *");
header("Cache-Control: max-age=60");
echo ('<?xml version="1.0" encoding="UTF-8"?>'); ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Kabano</title>
<link><?=$config['rel_root_folder']?></link>
<atom:link href="<?=$config['rel_root_folder']?>blog/rss" rel="self" type="application/rss+xml" />
<description>L'actualité du blog officiel de Kabano : Plateforme collaborative de recensement de cabanes et refuges.</description>
<language>fr</language>
<image>
<url><?=$config['views_url']?>img/header_rss.svg</url>
<title>Kabano</title>
<link><?=$config['rel_root_folder']?></link>
<height>44</height>
<width>154</width>
</image>
<? foreach ($blogArticles_list as $row) { ?>
<item>
<title><?=$row->title?></title>
<link><?=$config['rel_root_folder']?>blog/<?=$row->url?></link>
<guid><?=$config['rel_root_folder']?>blog/<?=$row->url?></guid>
<pubDate><?=$row->lastedit?></pubDate>
<description><![CDATA[
<?=$row->content_html?>
]]></description>
</item>
<? } ?>
</channel>
</rss>

125
views/d.blog.view.html Executable file
View File

@@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section id="blog_article" <?=$blogArticle->archive=="t"?'class="archive"':''?>>
<h1><?=$blogArticle->title?>.</h1>
<? if($user->role >= 600) { ?>
<span class="subtitle">
<? if(isset($blogArticles_history_list)) { ?>
<select id="bloghistory">
<? $i = 0;
foreach ($blogArticles_history_list as $row) { ?>
<option <?=$row->id==$blogArticle->id?'selected':''?> value="<?=$i?>"><?=$row->archive=="f"?'&bull; ':''?><? echo strftime('%d/%m/%Y %H:%M:%S',strtotime($row->lastedit)) ?></option>
<? $i++;
} ?>
</select>
<? }
if ($user->role >= 800 && isset($blogArticles_history_list)) { ?>
&mdash;
<? }
if ($user->role >= 800) { ?>
<a href="<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/edit"><i class="fa fa-pencil"></i> Éditer l'article</a>
<? if ($blogArticle->archive == 'f') { ?>
&mdash;
<a href="<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/delete"><i class="fa fa-trash"></i> Effacer l'article</a>
<? } ?>
<? } ?>
</span>
<? } ?>
<div id="blogContent">
<?=$blogArticle->content_html?>
</div>
<p id="blogTimestamp">Article écrit par
<? if ($user->role > 0) { ?>
<a href="<?=$config['rel_root_folder']?>user/p/<?=$blogArticle->author?>"><?=$blogArticle->author_name?></a>
<? }
else { ?>
<?=$blogArticle->author_name?>
<? } ?>
le <? echo strftime('%e %B %G, %kh%Mm%Ss',strtotime($blogArticle->lastedit)) ?> <small><abbr title="Temps Universel Coordonné">UTC</abbr></small></p>
<!-- COMMENTS -->
<? if ($blogArticle->comments == "t" && $blogArticle->archive == "f") { ?>
<div id="new_comment">
<form class="form" action="<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/new_comment" method="post">
<div id="new_comment_label" <?=$user->role==0?"class='sent' ":""?>>
<? if ($user->role > 0) { ?>
<input name="submit" type="submit" value="Envoyer">
<p>Ajouter un nouveau commentaire</p>
<? } else { ?>
<p>Veuillez vous connecter pour ajouter un commentaire</p>
<? } ?>
</div>
<div id="new_comment_form">
<textarea id="comment" name="comment" rows="5" placeholder="Votre commentaire"></textarea>
</div>
</form>
</div>
<? if(isset($blogArticles_comments_list)) {
foreach ($blogArticles_comments_list as $row) { ?>
<article <? if($row->archive == 't') echo 'class="comment_archive" '; ?>>
<div class="comment_title">
<? if ($row->author_obj->avatar=='t') { ?>
<img alt="Avatar" class="icon avatar" src="<?=$config['rel_root_folder']?>medias/avatars/<?=$row->author_obj->id?>_s.jpg">
<? } else { ?>
<i class="icon fa fa-user-secret"></i>
<? } ?>
<? if ($user->role > 0) { ?>
<a class="username" href="<?=$config['rel_root_folder']?>user/p/<?=$row->author_obj->id?>"><?=$row->author_obj->name?></a>
<? } else { ?>
<?=$row->author_obj->name?>
<? } ?>
le <? echo strftime('%e %B %G, %kh%Mm%Ss',strtotime($row->lastedit)) ?> <small><abbr title="Temps Universel Coordonné">UTC</abbr></small>
<? if (($user->role >= 800 || $user->id == $row->author) && $row->archive == 'f') { ?>
<span class="delete_link"><a href="<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/delete_comment/<?=$row->id?>"><i class="fa fa-trash"></i> Effacer le commentaire</a></span>
<? } ?>
<? if (($user->role >= 800 || $user->id == $row->author) && $row->archive == 't') { ?>
<span class="delete_link"><a href="<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/undelete_comment/<?=$row->id?>"><i class="fa fa-eye"></i> Réafficher le commentaire</a></span>
<? } ?>
</div>
<div class="comment_content">
<?=$row->content_html?>
</div>
</article>
<? }
}
} ?>
<br>
<br>
<div style="clear: both;"> </div>
</section>
<? if($user->role >= 600) { ?>
<script type="text/javascript">
$( "#bloghistory" ).change(function() {
window.location.href = "<?=$config['rel_root_folder']?>blog/<?=$blogArticle->url?>/"+$( this ).val();
});
</script>
<? } ?>
<? if($user->role > 0) { ?>
<script type="text/javascript">
$( "#new_comment_label" ).click(function() {
$( "#new_comment_form" ).show(400);
$( "#new_comment_label input" ).show(0);
$( "#new_comment_label").addClass('sent');
});
</script>
<? } ?>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

58
views/d.contact.html Executable file
View File

@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Nous contacter.</h1>
<form class="form" action="<?=$config['rel_root_folder']?>contact" method="post">
<? if($error=="name") { ?>
<p style="color: red;">Veuillez renseigner votre nom.</p>
<? } ?>
<? if($error=="subject") { ?>
<p style="color: red;">Veuillez renseigner un sujet.</p>
<? } ?>
<? if($error=="mail") { ?>
<p style="color: red;">Veuillez renseigner une adresse mail.</p>
<? } ?>
<? if($error=="message") { ?>
<p style="color: red;">Veuillez renseigner un message.</p>
<? } ?>
<? if($error=="unknown") { ?>
<p style="color: red;">Une erreur est survenue.</p>
<? } ?>
<? if($error=="spam") { ?>
<p style="color: red;">Veuillez n'envoyer qu'un message et attendre la fin du compte à rebours.<br>
Avez-vous javascript activé et attendu la fin du compte à rebours ?</p>
<? } ?>
<? if($error=="none") { ?>
<p style="color: green;">Message bien envoyé.</p>
<? } ?>
<input type="text" name="name" id="name" placeholder="Nom" value="<?=$contact['name']?>">
<input type="text" name="mail" id="mail" placeholder="Adresse mail" value="<?=$contact['mail']?>">
<input type="text" name="subject" id="subject" placeholder="Sujet" value="<?=$contact['subject']?>">
<textarea name="message" id="message" rows="12" placeholder="Contenu de votre message"><?=$contact['message']?></textarea>
<? if($user->role >= 200) { ?>
<input type="hidden" name="captcha" value="-2">
<input type="submit" name="submit" value="Envoyer">
<? }
else { ?>
<p id="captcha">
<input type="hidden" id="captchahidden" name="captcha" value="10">
<span id="captchatext">Merci d'attendre <b id="captchasec">10 s</b> avant de pouvoir nous contacter.<br>
<small>Ceci nous permet de laisser les robots à la porte.</small></span>
<input disabled id="captchasubmit" style="display:none;" type="submit" name="submit" value="Envoyer">
</p>
<? } ?>
<input type="hidden" name="ns" value="<?=$contact['ns']?>"/>
</form>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

33
views/d.index.html Executable file
View File

@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<aside id="indexFullW">
<!-- <div id="AScontent">
<div id="spacebeforesponsors"></div>
<div id="sponsors">
<p style="font-size: 1.3em;">Aidez Kabano en partagant sa <a style="font-weight: 6b00; color: orange; float: none; padding: 0; display: inline;" href="http://fr.ulule.com/kabano/" target="_blank">campagne de financement Ulule</a> !</p>
</div>
</div> -->
</aside>
<section>
<h1>Cabanes et bivouac en montagne.</h1>
<p><abbr title="Cabane en espéranto">Kabano</abbr> est une plateforme collaborative sur laquelle vous pouvez récupérer toutes les informations nécessaires relatives aux hébergements en montagne. Ces informations ont été ajoutées par vous, pour vous, c'est pourquoi il est primordial de ne pas cesser d'ajouter des commentaires, cabanes, refuges ou emplacements de bivouac. Attention toutefois, ces données ne sont en aucun cas garanties et des précautions dues à l'environnement montagnard sont à prendre.</p>
<br>
<p style="text-align: center;">
<img alt="Illustration hut" src="<?=$config['views_url']?>img/thumb1.jpg" class="thumb" title="© ptit tapou - Forums Pyrénées Team">
<img alt="Illustration tent" src="<?=$config['views_url']?>img/thumb2.jpg" class="thumb">
<img alt="Illustration hut" src="<?=$config['views_url']?>img/thumb3.jpg" class="thumb" title="CC BY-SA - EricM - refuges.info">
</p>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

25
views/d.map.html Executable file
View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<div id="mapid" style="height: 100%;"></div>
<div id="footer-credits" style="display: none;">
<i class="fa fa-times close-link" aria-hidden="true"></i>
<p><i id="map-credits"></i></p>
</div>
<div id="footer-legend" style="display: none;">
<i class="fa fa-times close-link" aria-hidden="true"></i>
<p><i id="map-legend">Légende.</i></p>
</div>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

34
views/d.user.login.html Executable file
View File

@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Connexion.</h1>
<form class="form" action="<?=$config['rel_root_folder']?>user/login" method="post" id="login">
<? if(isset($_GET['error']) AND $_GET['error']==1) { ?>
<p style="color: red;">Erreur lors de la connexion, merci de réessayer.</p>
<? } ?>
<? if(isset($_GET['status']) AND $_GET['status']=="created") { ?>
<p style="color: #006600;">Votre compte a été créé, vous pouvez vous connecter.</p>
<? } ?>
<? if(isset($_GET['status']) AND $_GET['status']=="password_sent") { ?>
<p style="color: #006600;">Un nouveau mot de passe vous a été envoyé par mail.</p>
<? } ?>
<input type="text" name="login" id="login" placeholder="Nom d'utilisateur">
<input type="password" name="password" id="password" placeholder="Mot de passe">
<input type="submit" name="submit" value="Se connecter">
<p style="text-align: center;">
<a href="<?=$config['rel_root_folder']?>user/password_lost">Mot de passe oublié</a>
</p>
</form>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

70
views/d.user.member_list.html Executable file
View File

@@ -0,0 +1,70 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section id="member_list">
<h1>Liste des membres.</h1>
<p class="subtitle">Membres <?=$first?> à <?=$last?> sur les <?=$users->number?> inscrits</p>
<table>
<tr class="first">
<th>
<a href="<?=$config['rel_root_folder']?>user/member_list/<?=$page+1?>?orderby=name&amp;order=<?=$order=='ASC'?'DESC':'ASC'?>">Nom d'utilisateur</a>
<?=$orderby=='name'?$order=='ASC'?'<i class="fa fa-caret-down" aria-hidden="true"></i>':'<i class="fa fa-caret-up" aria-hidden="true"></i>':''?>
</th>
<th>
<a href="<?=$config['rel_root_folder']?>user/member_list/<?=$page+1?>?orderby=role&amp;order=<?=$order=='ASC'?'DESC':'ASC'?>">Rôle</a>
<?=$orderby=='role'?$order=='ASC'?'<i class="fa fa-caret-down" aria-hidden="true"></i>':'<i class="fa fa-caret-up" aria-hidden="true"></i>':''?>
</th>
<th>
<a href="<?=$config['rel_root_folder']?>user/member_list/<?=$page+1?>?orderby=registered&amp;order=<?=$order=='ASC'?'DESC':'ASC'?>">Inscription</a>
<?=$orderby=='registered'?$order=='ASC'?'<i class="fa fa-caret-down" aria-hidden="true"></i>':'<i class="fa fa-caret-up" aria-hidden="true"></i>':''?>
</th>
<th>
<a href="<?=$config['rel_root_folder']?>user/member_list/<?=$page+1?>?orderby=lastlogin&amp;order=<?=$order=='ASC'?'DESC':'ASC'?>">Dernière visite</a>
<?=$orderby=='lastlogin'?$order=='ASC'?'<i class="fa fa-caret-down" aria-hidden="true"></i>':'<i class="fa fa-caret-up" aria-hidden="true"></i>':''?>
</th>
<th>
<a href="<?=$config['rel_root_folder']?>user/member_list/<?=$page+1?>?orderby=website&amp;order=<?=$order=='ASC'?'DESC':'ASC'?>">Site internet</a>
<?=$orderby=='website'?$order=='ASC'?'<i class="fa fa-caret-down" aria-hidden="true"></i>':'<i class="fa fa-caret-up" aria-hidden="true"></i>':''?>
</th>
</tr>
<? foreach ($user_list as $row) { ?>
<tr>
<td>
<? if ($row->avatar=='t') { ?>
<img alt="Avatar" class="icon avatar" src="<?=$config['rel_root_folder']?>medias/avatars/<?=$row->id?>_s.jpg">
<? } else { ?>
<i class="icon fa fa-user-secret"></i>
<? } ?>
<a class="username" href="<?=$config['rel_root_folder']?>user/p/<?=$row->id?>"><?=$row->name?></a>
</td>
<td><?=$row->role()?></td>
<td><? echo strftime('%e %B %G',strtotime($row->registered)) ?></td>
<td><? echo strftime('%e %B %G',strtotime($row->lastlogin)) ?></td>
<td>
<? if ($row->website != "") { ?>
<a target="_blank" href="<?=$row->website?>">Site internet <span class="external-link"><i class="fa fa-external-link"></i></span></a>
<? } ?>
</td>
</tr>
<? } ?>
</table>
<div class="pagebuttons">
<? if ($page != 0) { ?><a class="previous" href="<?=$config['rel_root_folder']?>user/member_list/<?=$page?>?orderby=<?=$orderby?>&amp;order=<?=$order?>"><i class="fa fa-chevron-left fa-fw"></i></a><? }
if (($page+1)*$rows_per_pages < $users->number) { ?><a class="next" href="<?=$config['rel_root_folder']?>user/member_list/<?=$page+2?>?orderby=<?=$orderby?>&amp;order=<?=$order?>"><i class="fa fa-chevron-right fa-fw"></i></a><? } ?>
</div>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

24
views/d.user.password_lost.html Executable file
View File

@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Envoi d'un mot de passe.</h1>
<form class="form" action="<?=$config['rel_root_folder']?>user/password_lost" method="post" id="password_lodt">
<? if(isset($_GET['error']) AND $_GET['error']==1) { ?>
<p style="color: red;">Cette adresse mail n'existe pas.</p>
<? } ?>
<input type="text" name="mail" id="mail" placeholder="Adresse mail">
<input type="submit" name="submit" value="Envoyer un nouveau mot de passe">
</form>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

74
views/d.user.profile.edit.html Executable file
View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section id="profile">
<? if ($userProfile->id != 0) { ?>
<h1><?=$userProfile->name?></h1>
<article>
<? if(isset($nameError) AND $nameError==1) { ?>
<p style="color: #660000;">Veuillez choisir un autre nom d'utilisateur.</p>
<? } ?>
<? if(isset($nameError) AND $nameError==1) { ?>
<p style="color: #660000;">Veuillez choisir un autre nom d'utilisateur.</p>
<? } ?>
<? if(isset($updated) AND $updated==1) { ?>
<p style="color: #006600;">Le profil a été mis à jour.</p>
<? } ?>
<form action="<?=$config['rel_root_folder']?>user/p/<?=$userProfile->id?>/edit" method="post" class="edituser" enctype="multipart/form-data">
<aside class="<?=$userProfile->avatar=='t'?'':'no'?>avatar">
<div id="picturebuttonscontainer">
<div id="picturebuttons">
<a href="#" id="uploadavatar"><i class="fa fa-camera"></i></a><a <?=$userProfile->avatar=='t'?'':'style="display: none;"'?> href="#" id="deleteavatar" style="font-size: 1.1em;"><i class="fa fa-trash"></i></a>
</div>
</div>
<img alt="Avatar" id="profileavatar" src="<?=$config['rel_root_folder']?>medias/avatars/<?=$userProfile->id?>_p.jpg" alt="Profile picture">
<i id="profilenoavatar" class="fa fa-user-secret"></i>
</aside>
<input id="avatarcheckbox" style="display: none;" type="checkbox" name="avatar" <?=$userProfile->avatar=='t'?'checked':''?>>
<input type="hidden" name="MAX_FILE_SIZE" value="4194304" />
<input id="avatarfile" name="avatarfile" style="display: none;" type="file" accept="image/*" />
<div id="description">
<ul>
<li><label for="name">Nom d'utilisateur :</label><input name="name" id="name" type="text" value="<?=$userProfile->name?>" placeholder="Charlie"></li>
<li><label for="mail">Adresse mail :</label><input name="mail" id="mail" type="text" value="<?=$userProfile->mail?>" placeholder="charlie@mountain.org"></li>
<li><label for="password">Mot de passe :</label><input name="password" id="password" type="password" placeholder="Nouveau mot de passe"></li>
<li><label for="locale">Langue :</label>
<select name="locale" id="locale">
<? foreach($config['locales'] as $locale) { ?>
<option <?=$userProfile->locale==$locale[0]?'selected':''?> value="<?=$locale[0]?>"><?=$locale[5]?></option>
<? } ?>
</select></li>
<? if($user->role >= 1000) { ?>
<li><label for="role">Rang : </label>
<select name="role" id="role">
<? foreach($config['roles'] as $role) { ?>
<option <?=$userProfile->role==$role[0]?'selected':''?> value="<?=$role[0]?>"><?=$role[1]?></option>
<? } ?>
</select></li>
<? } ?>
<li><label for="website">Site internet :</label><input name="website" id="website" type="text" value="<?=$userProfile->website?>" placeholder="mountain.org"></li>
<input name="submit" id="submit" type="submit" value="Envoyer">
</ul>
</div>
<div style="clear:both;"></div>
</form>
</article>
<? } else { ?>
<p style="color:red;">Le profil demandé n'existe pas.</p>
<? } ?>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

66
views/d.user.profile.html Executable file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section id="profile">
<? if ($userProfile->id != 0) { ?>
<h1><?=$userProfile->name?></h1>
<? if($user->role >= 800 || $user->id == $userProfile->id) { ?>
<a class="subtitle" id="editprofile" href="<?=$config['rel_root_folder']?>user/p/<?=$userProfile->id?>/edit"><i class="fa fa-pencil"></i> Éditer les paramètres du compte</a>
<? } ?>
<article>
<div id="profilepart">
<? if(isset($mailsent) AND $mailsent==1) { ?>
<p style="color: #006600;">Le message a bien été envoyé.</p>
<? } ?>
<aside class="<?=$userProfile->avatar=='t'?'':'no'?>avatar">
<img alt="Avatar" id="profileavatar" src="<?=$config['rel_root_folder']?>medias/avatars/<?=$userProfile->id?>_p.jpg" alt="Profile picture">
<i id="profilenoavatar" class="fa fa-user-secret"></i>
</aside>
<div id="description">
<p>Langue : <?=$config['locales'][$userProfile->locale][5]?></p>
<p>Inscrit le <? echo strftime('%e %B %G, %kh%Mm%Ss',strtotime($userProfile->registered)) ?> <small><abbr title="Temps Universel Coordonné">UTC</abbr></small></p>
<p>Dernière connexion le <? echo strftime('%e %B %G, %kh%Mm%Ss',strtotime($userProfile->lastlogin)) ?> <small><abbr title="Temps Universel Coordonné">UTC</abbr></small></p>
<p><?=$userProfile->role()?></p>
<p>
<? if ($userProfile->website != "") { ?>
<a target="_blank" href="<?=$userProfile->website?>">Site internet <span class="external-link"><i class="fa fa-external-link"></i></span></a>
<? }
if ($userProfile->website != "" AND $userProfile->id != $user->id) { ?>
&mdash;
<? }
if ($userProfile->id != $user->id) { ?>
<a href="#" onclick="$('#profilepart').hide(0, function(){$('#contact').show('fast');});">Contacter par mail</a>
<? }
if ($user->role >= 600 AND ($userProfile->website != "" OR $userProfile->id != $user->id)) { ?>
&mdash;
<? }
if ($user->role >= 600) { ?>
<a href="mailto:<?=$userProfile->mail?>"><?=$userProfile->mail?></a>
<? } ?>
</p>
</div>
<div style="clear:both;"></div>
</div>
<? if ($userProfile->id != $user->id) { ?>
<form style="display:none;" class="form" id="contact" action="<?=$config['rel_root_folder']?>user/p/<?=$userProfile->id?>" method="post" >
<textarea rows="12" name="message" id="message" placeholder="Votre message"></textarea>
<p><i>Votre adresse email sera transmise à votre destinataire.</i></p>
<input type="submit" name="submit" value="Envoyer">
</form>
<? } ?>
</article>
<? } else { ?>
<p style="color:red;">Le profil demandé n'existe pas.</p>
<? } ?>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

41
views/d.user.signin.html Executable file
View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Inscription.</h1>
<form class="form" action="<?=$config['rel_root_folder']?>user/signin" method="post" id="signin">
<? if(isset($_GET['error']) AND $_GET['error']=="name") { ?>
<p style="color: red;">Veuillez choisir un autre nom d'utilisateur.</p>
<? } ?>
<? if(isset($_GET['error']) AND $_GET['error']=="mail") { ?>
<p style="color: red;">Cette adresse mail est déjà prise.</p>
<? } ?>
<? if(isset($_GET['error']) AND $_GET['error']=="empty") { ?>
<p style="color: red;">Merci de remplir tous les champs, il n'y en a que trois.</p>
<? } ?>
<? if(isset($_GET['error']) AND $_GET['error']=="captcha") { ?>
<p style="color: red;">Nous n'avons pas pu vérifier que vous êtes un humain.<br>
Avez-vous javascript activé et attendu la fin du compte à rebours ?</p>
<? } ?>
<input type="text" name="login" id="login" placeholder="Nom d'utilisateur">
<input type="password" name="password" id="password" placeholder="Mot de passe">
<input type="text" name="mail" id="mail" placeholder="Adresse mail">
<p id="captcha">
<input type="hidden" id="captchahidden" name="captcha" value="10">
<span id="captchatext">Merci d'attendre <b id="captchasec">10 s</b> avant de pouvoir vous inscrire.<br>
<small>Ceci nous permet de laisser les robots à la porte.</small></span>
<input disabled id="captchasubmit" style="display:none;" type="submit" name="submit" value="S'inscrire">
</p>
</form>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

30
views/d.wiki.edit.html Executable file
View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<form class="form" action="<?=$config['rel_root_folder']?>wiki/<?=$wikiPage->url?>/edit" method="post">
<h1>
<select name="locale" id="locale">
<? foreach($config['locales'] as $locale) { ?>
<option <?=$wikiPage->locale==$locale[0]?'selected':''?> value="<?=$locale[0]?>"><?=$locale[5]?></option>
<? } ?>
</select>
<input type="text" value="<?=$wikiPage->title?>" name="title" id="title" placeholder="Titre">
</h1>
<textarea rows="30" name="content" id="content" placeholder="Contenu de la page"><?=$wikiPage->content?></textarea>
<input name="submit" id="submit" type="submit" value="Envoyer">
</form>
</section>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

56
views/d.wiki.view.html Executable file
View File

@@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section id="wiki_page" <?=$wikiPage->archive=="t"?'class="archive"':''?>>
<h1><?=$wikiPage->title?>.</h1>
<? if($user->role >= 600) { ?>
<span class="subtitle">
<? if(isset($wikiHistory_list)) { ?>
<select id="wikihistory">
<? $i = 0;
foreach ($wikiHistory_list as $row) { ?>
<option <?=$row->id==$wikiPage->id?'selected':''?> value="<?=$i?>"><?=$row->archive=="f"?'&bull; ':''?><? echo strftime('%d/%m/%Y %H:%M:%S',strtotime($row->lastedit)) ?></option>
<? $i++;
} ?>
</select>
<? }
if ($user->role >= 800 && isset($wikiHistory_list)) { ?>
&mdash;
<? }
if ($user->role >= 800) { ?>
<a href="<?=$config['rel_root_folder']?>wiki/<?=$wikiPage->url?>/edit"><i class="fa fa-pencil"></i> Éditer la page</a>
<? if ($wikiPage->archive == 'f') { ?>
&mdash;
<a href="<?=$config['rel_root_folder']?>wiki/<?=$wikiPage->url?>/delete"><i class="fa fa-trash"></i> Effacer la page</a>
<? } ?>
<? } ?>
</span>
<? } ?>
<div id="wikiContent">
<?=$wikiPage->content_html?>
</div>
<p id="wikiTimestamp">Page mise à jour le <? echo strftime('%e %B %G, %kh%Mm%Ss',strtotime($wikiPage->lastedit)) ?> <small><abbr title="Temps Universel Coordonné">UTC</abbr></small></p>
<div style="clear: both;"> </div>
</section>
<? if($user->role >= 600) { ?>
<script type="text/javascript">
$( "#wikihistory" ).change(function() {
window.location.href = "<?=$config['rel_root_folder']?>wiki/<?=$wikiPage->url?>/"+$( this ).val();
});
</script>
<? } ?>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

BIN
views/fonts/FiraMono-Bold.eot Executable file

Binary file not shown.

BIN
views/fonts/FiraMono-Bold.otf Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Bold.ttf Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
views/fonts/FiraSans-Light.eot Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Light.otf Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Light.ttf Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Medium.eot Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Medium.otf Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Medium.ttf Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Regular.eot Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Regular.otf Executable file

Binary file not shown.

BIN
views/fonts/FiraSans-Regular.ttf Executable file

Binary file not shown.

BIN
views/img/aside.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
views/img/favicon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

104
views/img/header.svg Executable file
View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="154"
height="44"
viewBox="0 0 154 44"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logo3.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8"
inkscape:cx="56.867628"
inkscape:cy="65.836934"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1366"
inkscape:window-height="745"
inkscape:window-x="1280"
inkscape:window-y="23"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(2.2888184e-7,-1008.3622)">
<g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4136"
transform="matrix(1.1379801,0,0,1.1379801,3.1581138e-8,-151.20504)">
<path
d="m 1.3999998,1024.6822 -1.40000002888184,0 0,27.28 1.40000002888184,0 0,-27.28 z m 13.9200002,0 -1.68,0 -12.1200002,12.6 12.7200002,14.68 1.72,0 -12.6800002,-14.68 12.0400002,-12.6 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#ffffff;fill-opacity:1"
id="path4186"
inkscape:connector-curvature="0" />
<path
d="m 53.246875,1037.4822 c 3,-0.52 4.92,-2.44 4.92,-6.04 0,-4.56 -3.44,-6.76 -9.32,-6.76 l -5.8,0 0,27.28 7.36,0 c 5.76,0 9.12,-2.64 9.12,-7.44 0,-4.76 -2.88,-6.84 -6.28,-7.04 z m -4.24,-11.52 c 4.96,0 7.72,1.68 7.72,5.52 0,3.4 -2.32,5.48 -5.8,5.48 l -6.48,0 0,-11 4.56,0 z m 1.44,24.72 -6,0 0,-12.52 6.68,0 c 4.04,0 6.96,2 6.96,6.36 0,4.16 -2.88,6.16 -7.64,6.16 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#ffffff;fill-opacity:1"
id="path4190"
inkscape:connector-curvature="0" />
<path
d="m 105.32312,1024.6822 -1.36,0 0,17.8 c 0,3.64 0.08,6.36 0.16,7.92 l -14.159995,-25.72 -1.76,0 0,27.28 1.36,0 0,-17.2 c 0,-4.8 -0.08,-6.92 -0.2,-8.52 l 14.199995,25.72 1.76,0 0,-27.28 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#ffffff;fill-opacity:1"
id="path4194"
inkscape:connector-curvature="0" />
<path
d="m 123.80562,1024.2422 c -6.4,0 -10.84,5.12 -10.84,14.16 0,9 4.4,13.96 10.84,13.96 6.68,0 10.84,-5.12 10.84,-14 0,-9.24 -4.36,-14.12 -10.84,-14.12 z m 0,1.32 c 5.64,0 9.4,4.2 9.4,12.8 0,8.4 -3.56,12.72 -9.4,12.72 -5.52,0 -9.4,-4.32 -9.4,-12.68 0,-8.56 3.84,-12.84 9.4,-12.84 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#ffffff;fill-opacity:1"
id="path4196"
inkscape:connector-curvature="0" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4136-1"
transform="matrix(1.1379801,0,0,1.1379801,-327.34608,665.85293)">
<path
d="m 327.11423,334.16668 -10.09786,-27.23536 -10.34214,27.23536 z m -18.81955,-1.19739 5.88391,-15.62044 4.87414,-1.40926 6.40569,16.95891 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#ffffff;fill-opacity:1"
id="path4159"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
d="m 372.70688,333.82719 -0.008,-1.24916 -1.36672,-0.006 -8.73903,-23.76226 0.83839,-1.55306 -0.73436,-0.62958 -0.82296,1.22506 -0.69448,-1.17371 -0.71601,0.66008 0.84437,1.49829 -9.42882,23.88393 -1.23813,0.005 0.0188,1.14693 z m -17.50259,-1.13043 6.57828,-15.51649 6.1435,15.46802 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-size:40px;line-height:125%;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path4159-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

104
views/img/header_rss.svg Executable file
View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="154"
height="44"
viewBox="0 0 154 44"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="header_rss.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8"
inkscape:cx="55.336881"
inkscape:cy="65.836934"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1366"
inkscape:window-height="745"
inkscape:window-x="1280"
inkscape:window-y="279"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(2.2888184e-7,-1008.3622)">
<g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4136"
transform="matrix(1.1379801,0,0,1.1379801,3.1581138e-8,-151.20504)">
<path
d="m 1.3999998,1024.6822 -1.40000002888184,0 0,27.28 1.40000002888184,0 0,-27.28 z m 13.9200002,0 -1.68,0 -12.1200002,12.6 12.7200002,14.68 1.72,0 -12.6800002,-14.68 12.0400002,-12.6 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#000000;fill-opacity:1"
id="path4186"
inkscape:connector-curvature="0" />
<path
d="m 53.246875,1037.4822 c 3,-0.52 4.92,-2.44 4.92,-6.04 0,-4.56 -3.44,-6.76 -9.32,-6.76 l -5.8,0 0,27.28 7.36,0 c 5.76,0 9.12,-2.64 9.12,-7.44 0,-4.76 -2.88,-6.84 -6.28,-7.04 z m -4.24,-11.52 c 4.96,0 7.72,1.68 7.72,5.52 0,3.4 -2.32,5.48 -5.8,5.48 l -6.48,0 0,-11 4.56,0 z m 1.44,24.72 -6,0 0,-12.52 6.68,0 c 4.04,0 6.96,2 6.96,6.36 0,4.16 -2.88,6.16 -7.64,6.16 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#000000;fill-opacity:1"
id="path4190"
inkscape:connector-curvature="0" />
<path
d="m 105.32312,1024.6822 -1.36,0 0,17.8 c 0,3.64 0.08,6.36 0.16,7.92 l -14.159995,-25.72 -1.76,0 0,27.28 1.36,0 0,-17.2 c 0,-4.8 -0.08,-6.92 -0.2,-8.52 l 14.199995,25.72 1.76,0 0,-27.28 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#000000;fill-opacity:1"
id="path4194"
inkscape:connector-curvature="0" />
<path
d="m 123.80562,1024.2422 c -6.4,0 -10.84,5.12 -10.84,14.16 0,9 4.4,13.96 10.84,13.96 6.68,0 10.84,-5.12 10.84,-14 0,-9.24 -4.36,-14.12 -10.84,-14.12 z m 0,1.32 c 5.64,0 9.4,4.2 9.4,12.8 0,8.4 -3.56,12.72 -9.4,12.72 -5.52,0 -9.4,-4.32 -9.4,-12.68 0,-8.56 3.84,-12.84 9.4,-12.84 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#000000;fill-opacity:1"
id="path4196"
inkscape:connector-curvature="0" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4136-1"
transform="matrix(1.1379801,0,0,1.1379801,-327.34608,665.85293)">
<path
d="m 327.11423,334.16668 -10.09786,-27.23536 -10.34214,27.23536 z m -18.81955,-1.19739 5.88391,-15.62044 4.87414,-1.40926 6.40569,16.95891 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';fill:#000000;fill-opacity:1"
id="path4159"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
d="m 372.70688,333.82719 -0.008,-1.24916 -1.36672,-0.006 -8.73903,-23.76226 0.83839,-1.55306 -0.73436,-0.62958 -0.82296,1.22506 -0.69448,-1.17371 -0.71601,0.66008 0.84437,1.49829 -9.42882,23.88393 -1.23813,0.005 0.0188,1.14693 z m -17.50259,-1.13043 6.57828,-15.51649 6.1435,15.46802 z"
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:normal;font-size:40px;line-height:125%;font-family:'Fira Sans';-inkscape-font-specification:'Fira Sans Ultra-Light';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path4159-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
views/img/lstronic.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
views/img/thumb1.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
views/img/thumb2.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
views/img/thumb3.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

40
views/js/d.avatar.js Executable file
View File

@@ -0,0 +1,40 @@
$(window).ready(function() {
$("#deleteavatar").click(function() {
$("aside").removeClass("avatar").addClass("noavatar");
$("#deleteavatar").hide();
$("#avatarcheckbox").prop("checked", false);
$('#avatarfile').val('');
});
$("#uploadavatar").click(function() {
$('#avatarfile').trigger('click');
});
$("#avatarfile").change(function () {
if($("#avatarfile").val == '') {
$("#avatarcheckbox").prop("checked", false);
$("aside").removeClass("avatar").addClass("noavatar");
$("#deleteavatar").hide();
}
else {
$("#avatarcheckbox").prop("checked", true);
$("aside").removeClass("noavatar").addClass("avatar");
$("#deleteavatar").show();
readURL(this);
}
});
});
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#profileavatar').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}$

22
views/js/d.captcha.js Executable file
View File

@@ -0,0 +1,22 @@
var time = 9;
$(window).ready(function() {
var interval = setInterval(function() {
if (time > 0) {
$("#captchahidden").val(time);
$("#captchasec").html(time+" s");
time--;
}
else {
time--;
$("#captchahidden").val(time);
$("#captchatext").remove();
$("#captchasubmit").removeAttr('disabled');
$("#captchasubmit").css("display", "block");
time--;
$("#captchahidden").val(time);
clearInterval(interval);
}
}, 1000);
});

81
views/js/d.header.js Executable file
View File

@@ -0,0 +1,81 @@
var small = 2;
function reduce() {
$( "header" ).animate({
height: "45px"
}, 100, function() {
// Animation complete.
});
$( "header #logo img" ).animate({
height: "34px"
}, 100, function() {
// Animation complete.
});
$( "header #logo" ).animate({
paddingTop: "3px"
}, 100, function() {
// Animation complete.
});
$( "header li.on-bar" ).animate({
height: "45px"
}, 100, function() {
// Animation complete.
});
$( "header a.on-bar" ).animate({
paddingTop: "15px",
paddingBottom: "5px"
}, 100, function() {
// Animation complete.
});
}
function enlarge() {
$( "header" ).animate({
height: "65px"
}, 100, function() {
// Animation complete.
});
$( "header #logo img" ).animate({
height: "44px"
}, 100, function() {
// Animation complete.
});
$( "header #logo" ).animate({
paddingTop: "8px"
}, 100, function() {
// Animation complete.
});
$( "header li.on-bar" ).animate({
height: "65px"
}, 100, function() {
// Animation complete.
});
$( "header a.on-bar" ).animate({
paddingTop: "25px",
paddingBottom: "15px"
}, 100, function() {
// Animation complete.
});
}
$(window).scroll(function() {
var position = $(window).scrollTop();
if (position>80 && small!=1) {
small = 1;
reduce();
}
else if (position<=80 && small!=0) {
small = 0;
enlarge();
}
});
$(window).ready(function() {
$( "#logo" ).hover(
function() {
$("#kabanologotext").show(100);
}, function() {
$("#kabanologotext").hide(100);
}
)
});

64
views/js/d.map.js Executable file
View File

@@ -0,0 +1,64 @@
var mymap;
$( document ).ready(function() {
// Differents layers for the map
var osmfr = L.tileLayer('//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {maxZoom: 20, attribution: 'Maps © <a href="http://www.openstreetmap.fr">OpenSreetMap France</a>, Data © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>'});
var wikimedia = L.tileLayer('//maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', {maxZoom: 18, attribution: 'Maps © <a href="http://wikimedia.org">Wikimedia</a>, Data © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>'});
// Base layers
var baseLayers = {
"OSM France": osmfr,
"OSM Wikimedia": wikimedia,
};
mymap = L.map('mapid', {
zoomControl: false,
layers: [wikimedia],
}).setView([47.018, 3.142], 6);
$("#map-credits").html(wikimedia.getAttribution());
L.control.scale({
position: "bottomleft",
imperial: false
}).addTo(mymap);
var credits = L.easyButton('fa-info',
function(control, mymap){
$("footer").hide();
$("#footer-credits").show();
$("#footer-legend").hide();
}, 'Credits');
var legend = L.easyButton('fa-question',
function(control, mymap){
$("footer").hide();
$("#footer-credits").hide();
$("#footer-legend").show();
}, 'Legend');
L.easyBar([ credits, legend, ], {position: "bottomleft"}).addTo(mymap);
L.control.fullscreen({
position: "bottomleft"
}).addTo(mymap);
L.control.zoom({
zoomOutText: "<i class=\"fa fa-minus\" aria-hidden=\"true\"></i>",
zoomInText: "<i class=\"fa fa-plus\" aria-hidden=\"true\"></i>",
position: "bottomleft"
}).addTo(mymap);
L.control.layers(baseLayers,null,{
position: "bottomright"
}).addTo(mymap);
mymap.removeControl(mymap.attributionControl);
$(".close-link").click(function() {
$("footer").show();
$("#footer-credits").hide();
$("#footer-legend").hide();
});
mymap.on('baselayerchange', function(e) {
$("#map-credits").html(e.layer.getAttribution());
});
});

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

4
views/third/jquery-3.1.1.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,56 @@
.leaflet-bar button,
.leaflet-bar button:hover {
background-color: #fff;
border: none;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar button {
background-position: 50% 50%;
background-repeat: no-repeat;
overflow: hidden;
display: block;
}
.leaflet-bar button:hover {
background-color: #f4f4f4;
}
.leaflet-bar button:first-of-type {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar button:last-of-type {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar.disabled,
.leaflet-bar button.disabled {
cursor: default;
pointer-events: none;
opacity: .4;
}
.easy-button-button .button-state{
display: block;
width: 100%;
height: 100%;
position: relative;
}
.leaflet-touch .leaflet-bar button {
width: 30px;
height: 30px;
line-height: 30px;
}

View File

@@ -0,0 +1,379 @@
(function(){
// This is for grouping buttons into a bar
// takes an array of `L.easyButton`s and
// then the usual `.addTo(map)`
L.Control.EasyBar = L.Control.extend({
options: {
position: 'topleft', // part of leaflet's defaults
id: null, // an id to tag the Bar with
leafletClasses: true // use leaflet classes?
},
initialize: function(buttons, options){
if(options){
L.Util.setOptions( this, options );
}
this._buildContainer();
this._buttons = [];
for(var i = 0; i < buttons.length; i++){
buttons[i]._bar = this;
buttons[i]._container = buttons[i].button;
this._buttons.push(buttons[i]);
this.container.appendChild(buttons[i].button);
}
},
_buildContainer: function(){
this._container = this.container = L.DomUtil.create('div', '');
this.options.leafletClasses && L.DomUtil.addClass(this.container, 'leaflet-bar easy-button-container leaflet-control');
this.options.id && (this.container.id = this.options.id);
},
enable: function(){
L.DomUtil.addClass(this.container, 'enabled');
L.DomUtil.removeClass(this.container, 'disabled');
this.container.setAttribute('aria-hidden', 'false');
return this;
},
disable: function(){
L.DomUtil.addClass(this.container, 'disabled');
L.DomUtil.removeClass(this.container, 'enabled');
this.container.setAttribute('aria-hidden', 'true');
return this;
},
onAdd: function () {
return this.container;
},
addTo: function (map) {
this._map = map;
for(var i = 0; i < this._buttons.length; i++){
this._buttons[i]._map = map;
}
var container = this._container = this.onAdd(map),
pos = this.getPosition(),
corner = map._controlCorners[pos];
L.DomUtil.addClass(container, 'leaflet-control');
if (pos.indexOf('bottom') !== -1) {
corner.insertBefore(container, corner.firstChild);
} else {
corner.appendChild(container);
}
return this;
}
});
L.easyBar = function(){
var args = [L.Control.EasyBar];
for(var i = 0; i < arguments.length; i++){
args.push( arguments[i] );
}
return new (Function.prototype.bind.apply(L.Control.EasyBar, args));
};
// L.EasyButton is the actual buttons
// can be called without being grouped into a bar
L.Control.EasyButton = L.Control.extend({
options: {
position: 'topleft', // part of leaflet's defaults
id: null, // an id to tag the button with
type: 'replace', // [(replace|animate)]
// replace swaps out elements
// animate changes classes with all elements inserted
states: [], // state names look like this
// {
// stateName: 'untracked',
// onClick: function(){ handle_nav_manually(); };
// title: 'click to make inactive',
// icon: 'fa-circle', // wrapped with <a>
// }
leafletClasses: true, // use leaflet styles for the button
tagName: 'button',
},
initialize: function(icon, onClick, title, id){
// clear the states manually
this.options.states = [];
// add id to options
if(id != null){
this.options.id = id;
}
// storage between state functions
this.storage = {};
// is the last item an object?
if( typeof arguments[arguments.length-1] === 'object' ){
// if so, it should be the options
L.Util.setOptions( this, arguments[arguments.length-1] );
}
// if there aren't any states in options
// use the early params
if( this.options.states.length === 0 &&
typeof icon === 'string' &&
typeof onClick === 'function'){
// turn the options object into a state
this.options.states.push({
icon: icon,
onClick: onClick,
title: typeof title === 'string' ? title : ''
});
}
// curate and move user's states into
// the _states for internal use
this._states = [];
for(var i = 0; i < this.options.states.length; i++){
this._states.push( new State(this.options.states[i], this) );
}
this._buildButton();
this._activateState(this._states[0]);
},
_buildButton: function(){
this.button = L.DomUtil.create(this.options.tagName, '');
// the next three if statements should be collapsed into the options
// when it's time for breaking changes.
if (this.tagName === 'button') {
this.button.type = 'button';
}
if (this.options.id ){
this.button.id = this.options.id;
}
if (this.options.leafletClasses){
L.DomUtil.addClass(this.button, 'easy-button-button leaflet-bar-part leaflet-interactive');
}
// don't let double clicks and mousedown get to the map
L.DomEvent.addListener(this.button, 'dblclick', L.DomEvent.stop);
L.DomEvent.addListener(this.button, 'mousedown', L.DomEvent.stop);
// take care of normal clicks
L.DomEvent.addListener(this.button,'click', function(e){
L.DomEvent.stop(e);
this._currentState.onClick(this, this._map ? this._map : null );
this._map.getContainer().focus();
}, this);
// prep the contents of the control
if(this.options.type == 'replace'){
this.button.appendChild(this._currentState.icon);
} else {
for(var i=0;i<this._states.length;i++){
this.button.appendChild(this._states[i].icon);
}
}
},
_currentState: {
// placeholder content
stateName: 'unnamed',
icon: (function(){ return document.createElement('span'); })()
},
_states: null, // populated on init
state: function(newState){
// activate by name
if(typeof newState == 'string'){
this._activateStateNamed(newState);
// activate by index
} else if (typeof newState == 'number'){
this._activateState(this._states[newState]);
}
return this;
},
_activateStateNamed: function(stateName){
for(var i = 0; i < this._states.length; i++){
if( this._states[i].stateName == stateName ){
this._activateState( this._states[i] );
}
}
},
_activateState: function(newState){
if( newState === this._currentState ){
// don't touch the dom if it'll just be the same after
return;
} else {
// swap out elements... if you're into that kind of thing
if( this.options.type == 'replace' ){
this.button.appendChild(newState.icon);
this.button.removeChild(this._currentState.icon);
}
if( newState.title ){
this.button.title = newState.title;
} else {
this.button.removeAttribute('title');
}
// update classes for animations
for(var i=0;i<this._states.length;i++){
L.DomUtil.removeClass(this._states[i].icon, this._currentState.stateName + '-active');
L.DomUtil.addClass(this._states[i].icon, newState.stateName + '-active');
}
// update classes for animations
L.DomUtil.removeClass(this.button, this._currentState.stateName + '-active');
L.DomUtil.addClass(this.button, newState.stateName + '-active');
// update the record
this._currentState = newState;
}
},
enable: function(){
L.DomUtil.addClass(this.button, 'enabled');
L.DomUtil.removeClass(this.button, 'disabled');
this.button.setAttribute('aria-hidden', 'false');
return this;
},
disable: function(){
L.DomUtil.addClass(this.button, 'disabled');
L.DomUtil.removeClass(this.button, 'enabled');
this.button.setAttribute('aria-hidden', 'true');
return this;
},
removeFrom: function (map) {
this._container.parentNode.removeChild(this._container);
this._map = null;
return this;
},
onAdd: function(){
var containerObj = L.easyBar([this], {
position: this.options.position,
leafletClasses: this.options.leafletClasses
});
this._container = containerObj.container;
return this._container;
}
});
L.easyButton = function(/* args will pass automatically */){
var args = Array.prototype.concat.apply([L.Control.EasyButton],arguments);
return new (Function.prototype.bind.apply(L.Control.EasyButton, args));
};
/*************************
*
* util functions
*
*************************/
// constructor for states so only curated
// states end up getting called
function State(template, easyButton){
this.title = template.title;
this.stateName = template.stateName ? template.stateName : 'unnamed-state';
// build the wrapper
this.icon = L.DomUtil.create('span', '');
L.DomUtil.addClass(this.icon, 'button-state state-' + this.stateName.replace(/(^\s*|\s*$)/g,''));
this.icon.innerHTML = buildIcon(template.icon);
this.onClick = L.Util.bind(template.onClick?template.onClick:function(){}, easyButton);
}
function buildIcon(ambiguousIconString) {
var tmpIcon;
// does this look like html? (i.e. not a class)
if( ambiguousIconString.match(/[&;=<>"']/) ){
// if so, the user should have put in html
// so move forward as such
tmpIcon = ambiguousIconString;
// then it wasn't html, so
// it's a class list, figure out what kind
} else {
ambiguousIconString = ambiguousIconString.replace(/(^\s*|\s*$)/g,'');
tmpIcon = L.DomUtil.create('span', '');
if( ambiguousIconString.indexOf('fa-') === 0 ){
L.DomUtil.addClass(tmpIcon, 'fa ' + ambiguousIconString)
} else if ( ambiguousIconString.indexOf('glyphicon-') === 0 ) {
L.DomUtil.addClass(tmpIcon, 'glyphicon ' + ambiguousIconString)
} else {
L.DomUtil.addClass(tmpIcon, /*rollwithit*/ ambiguousIconString)
}
// make this a string so that it's easy to set innerHTML below
tmpIcon = tmpIcon.outerHTML;
}
return tmpIcon;
}
})();

View File

@@ -0,0 +1,152 @@
L.Control.Fullscreen = L.Control.extend({
options: {
position: 'topleft',
title: {
'false': 'View Fullscreen',
'true': 'Exit Fullscreen'
}
},
onAdd: function (map) {
var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control');
this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container);
this.link.href = '#';
this._map = map;
this._map.on('fullscreenchange', this._toggleTitle, this);
this._toggleTitle();
L.DomEvent.on(this.link, 'click', this._click, this);
return container;
},
_click: function (e) {
L.DomEvent.stopPropagation(e);
L.DomEvent.preventDefault(e);
this._map.toggleFullscreen(this.options);
},
_toggleTitle: function() {
this.link.title = this.options.title[this._map.isFullscreen()];
}
});
L.Map.include({
isFullscreen: function () {
return this._isFullscreen || false;
},
toggleFullscreen: function (options) {
var container = this.getContainer();
if (this.isFullscreen()) {
if (options && options.pseudoFullscreen) {
this._disablePseudoFullscreen(container);
} else if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else {
this._disablePseudoFullscreen(container);
}
} else {
if (options && options.pseudoFullscreen) {
this._enablePseudoFullscreen(container);
} else if (container.requestFullscreen) {
container.requestFullscreen();
} else if (container.mozRequestFullScreen) {
container.mozRequestFullScreen();
} else if (container.webkitRequestFullscreen) {
container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
} else if (container.msRequestFullscreen) {
container.msRequestFullscreen();
} else {
this._enablePseudoFullscreen(container);
}
}
},
_enablePseudoFullscreen: function (container) {
L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen');
this._setFullscreen(true);
this.fire('fullscreenchange');
},
_disablePseudoFullscreen: function (container) {
L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen');
this._setFullscreen(false);
this.fire('fullscreenchange');
},
_setFullscreen: function(fullscreen) {
this._isFullscreen = fullscreen;
var container = this.getContainer();
if (fullscreen) {
L.DomUtil.addClass(container, 'leaflet-fullscreen-on');
} else {
L.DomUtil.removeClass(container, 'leaflet-fullscreen-on');
}
this.invalidateSize();
},
_onFullscreenChange: function (e) {
var fullscreenElement =
document.fullscreenElement ||
document.mozFullScreenElement ||
document.webkitFullscreenElement ||
document.msFullscreenElement;
if (fullscreenElement === this.getContainer() && !this._isFullscreen) {
this._setFullscreen(true);
this.fire('fullscreenchange');
} else if (fullscreenElement !== this.getContainer() && this._isFullscreen) {
this._setFullscreen(false);
this.fire('fullscreenchange');
}
}
});
L.Map.mergeOptions({
fullscreenControl: false
});
L.Map.addInitHook(function () {
if (this.options.fullscreenControl) {
this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl);
this.addControl(this.fullscreenControl);
}
var fullscreenchange;
if ('onfullscreenchange' in document) {
fullscreenchange = 'fullscreenchange';
} else if ('onmozfullscreenchange' in document) {
fullscreenchange = 'mozfullscreenchange';
} else if ('onwebkitfullscreenchange' in document) {
fullscreenchange = 'webkitfullscreenchange';
} else if ('onmsfullscreenchange' in document) {
fullscreenchange = 'MSFullscreenChange';
}
if (fullscreenchange) {
var onFullscreenChange = L.bind(this._onFullscreenChange, this);
this.whenReady(function () {
L.DomEvent.on(document, fullscreenchange, onFullscreenChange);
});
this.on('unload', function () {
L.DomEvent.off(document, fullscreenchange, onFullscreenChange);
});
}
});
L.control.fullscreen = function (options) {
return new L.Control.Fullscreen(options);
};

View File

@@ -0,0 +1 @@
L.Control.Fullscreen=L.Control.extend({options:{position:"topleft",title:{"false":"View Fullscreen","true":"Exit Fullscreen"}},onAdd:function(map){var container=L.DomUtil.create("div","leaflet-control-fullscreen leaflet-bar leaflet-control");this.link=L.DomUtil.create("a","leaflet-control-fullscreen-button leaflet-bar-part",container);this.link.href="#";this._map=map;this._map.on("fullscreenchange",this._toggleTitle,this);this._toggleTitle();L.DomEvent.on(this.link,"click",this._click,this);return container},_click:function(e){L.DomEvent.stopPropagation(e);L.DomEvent.preventDefault(e);this._map.toggleFullscreen(this.options)},_toggleTitle:function(){this.link.title=this.options.title[this._map.isFullscreen()]}});L.Map.include({isFullscreen:function(){return this._isFullscreen||false},toggleFullscreen:function(options){var container=this.getContainer();if(this.isFullscreen()){if(options&&options.pseudoFullscreen){this._disablePseudoFullscreen(container)}else if(document.exitFullscreen){document.exitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else{this._disablePseudoFullscreen(container)}}else{if(options&&options.pseudoFullscreen){this._enablePseudoFullscreen(container)}else if(container.requestFullscreen){container.requestFullscreen()}else if(container.mozRequestFullScreen){container.mozRequestFullScreen()}else if(container.webkitRequestFullscreen){container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else if(container.msRequestFullscreen){container.msRequestFullscreen()}else{this._enablePseudoFullscreen(container)}}},_enablePseudoFullscreen:function(container){L.DomUtil.addClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(true);this.fire("fullscreenchange")},_disablePseudoFullscreen:function(container){L.DomUtil.removeClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(false);this.fire("fullscreenchange")},_setFullscreen:function(fullscreen){this._isFullscreen=fullscreen;var container=this.getContainer();if(fullscreen){L.DomUtil.addClass(container,"leaflet-fullscreen-on")}else{L.DomUtil.removeClass(container,"leaflet-fullscreen-on")}this.invalidateSize()},_onFullscreenChange:function(e){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(fullscreenElement===this.getContainer()&&!this._isFullscreen){this._setFullscreen(true);this.fire("fullscreenchange")}else if(fullscreenElement!==this.getContainer()&&this._isFullscreen){this._setFullscreen(false);this.fire("fullscreenchange")}}});L.Map.mergeOptions({fullscreenControl:false});L.Map.addInitHook(function(){if(this.options.fullscreenControl){this.fullscreenControl=new L.Control.Fullscreen(this.options.fullscreenControl);this.addControl(this.fullscreenControl)}var fullscreenchange;if("onfullscreenchange"in document){fullscreenchange="fullscreenchange"}else if("onmozfullscreenchange"in document){fullscreenchange="mozfullscreenchange"}else if("onwebkitfullscreenchange"in document){fullscreenchange="webkitfullscreenchange"}else if("onmsfullscreenchange"in document){fullscreenchange="MSFullscreenChange"}if(fullscreenchange){var onFullscreenChange=L.bind(this._onFullscreenChange,this);this.whenReady(function(){L.DomEvent.on(document,fullscreenchange,onFullscreenChange)});this.on("unload",function(){L.DomEvent.off(document,fullscreenchange,onFullscreenChange)})}});L.control.fullscreen=function(options){return new L.Control.Fullscreen(options)};

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

View File

@@ -0,0 +1,40 @@
.leaflet-control-fullscreen a {
background:#fff url(fullscreen.png) no-repeat 0 0;
background-size:26px 52px;
}
.leaflet-touch .leaflet-control-fullscreen a {
background-position: 2px 2px;
}
.leaflet-fullscreen-on .leaflet-control-fullscreen a {
background-position:0 -26px;
}
.leaflet-touch.leaflet-fullscreen-on .leaflet-control-fullscreen a {
background-position: 2px -24px;
}
/* Do not combine these two rules; IE will break. */
.leaflet-container:-webkit-full-screen {
width:100%!important;
height:100%!important;
}
.leaflet-container.leaflet-fullscreen-on {
width:100%!important;
height:100%!important;
}
.leaflet-pseudo-fullscreen {
position:fixed!important;
width:100%!important;
height:100%!important;
top:0!important;
left:0!important;
z-index:99999;
}
@media
(-webkit-min-device-pixel-ratio:2),
(min-resolution:192dpi) {
.leaflet-control-fullscreen a {
background-image:url(fullscreen@2x.png);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

13251
views/third/leaflet/leaflet-src.js Executable file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

624
views/third/leaflet/leaflet.css Executable file
View File

@@ -0,0 +1,624 @@
/* required styles */
.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
position: absolute;
left: 0;
top: 0;
}
.leaflet-container {
overflow: hidden;
}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-user-drag: none;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
image-rendering: -webkit-optimize-contrast;
}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
width: 1600px;
height: 1600px;
-webkit-transform-origin: 0 0;
}
.leaflet-marker-icon,
.leaflet-marker-shadow {
display: block;
}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg,
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer {
max-width: none !important;
}
.leaflet-container.leaflet-touch-zoom {
-ms-touch-action: pan-x pan-y;
touch-action: pan-x pan-y;
}
.leaflet-container.leaflet-touch-drag {
-ms-touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-ms-touch-action: none;
touch-action: none;
}
.leaflet-tile {
filter: inherit;
visibility: hidden;
}
.leaflet-tile-loaded {
visibility: inherit;
}
.leaflet-zoom-box {
width: 0;
height: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
z-index: 800;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-pane { z-index: 400; }
.leaflet-tile-pane { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane { z-index: 500; }
.leaflet-marker-pane { z-index: 600; }
.leaflet-tooltip-pane { z-index: 650; }
.leaflet-popup-pane { z-index: 700; }
.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg { z-index: 200; }
.leaflet-vml-shape {
width: 1px;
height: 1px;
}
.lvml {
behavior: url(#default#VML);
display: inline-block;
position: absolute;
}
/* control positioning */
.leaflet-control {
position: relative;
z-index: 800;
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
.leaflet-top,
.leaflet-bottom {
position: absolute;
z-index: 1000;
pointer-events: none;
}
.leaflet-top {
top: 0;
}
.leaflet-right {
right: 0;
}
.leaflet-bottom {
bottom: 0;
}
.leaflet-left {
left: 0;
}
.leaflet-control {
float: left;
clear: both;
}
.leaflet-right .leaflet-control {
float: right;
}
.leaflet-top .leaflet-control {
margin-top: 10px;
}
.leaflet-bottom .leaflet-control {
margin-bottom: 10px;
}
.leaflet-left .leaflet-control {
margin-left: 10px;
}
.leaflet-right .leaflet-control {
margin-right: 10px;
}
/* zoom and fade animations */
.leaflet-fade-anim .leaflet-tile {
will-change: opacity;
}
.leaflet-fade-anim .leaflet-popup {
opacity: 0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1;
}
.leaflet-zoom-animated {
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
will-change: transform;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-interactive {
cursor: pointer;
}
.leaflet-grab {
cursor: -webkit-grab;
cursor: -moz-grab;
}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
cursor: crosshair;
}
.leaflet-popup-pane,
.leaflet-control {
cursor: auto;
}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
cursor: move;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
}
/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
pointer-events: none;
}
.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive {
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
/* visual tweaks */
.leaflet-container {
background: #ddd;
outline: 0;
}
.leaflet-container a {
color: #0078A8;
}
.leaflet-container a.leaflet-active {
outline: 2px solid orange;
}
.leaflet-zoom-box {
border: 2px dotted #38f;
background: rgba(255,255,255,0.5);
}
/* general typography */
.leaflet-container {
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* general toolbar styles */
.leaflet-bar {
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
border-radius: 4px;
}
.leaflet-bar a,
.leaflet-bar a:hover {
background-color: #fff;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar a,
.leaflet-control-layers-toggle {
background-position: 50% 50%;
background-repeat: no-repeat;
display: block;
}
.leaflet-bar a:hover {
background-color: #f4f4f4;
}
.leaflet-bar a:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar a.leaflet-disabled {
cursor: default;
background-color: #f4f4f4;
color: #bbb;
}
.leaflet-touch .leaflet-bar a {
width: 30px;
height: 30px;
line-height: 30px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-control-zoom-out {
font-size: 20px;
}
.leaflet-touch .leaflet-control-zoom-in {
font-size: 22px;
}
.leaflet-touch .leaflet-control-zoom-out {
font-size: 24px;
}
/* layers control */
.leaflet-control-layers {
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
background: #fff;
border-radius: 5px;
}
.leaflet-control-layers-toggle {
background-image: url(images/layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(images/layers-2x.png);
background-size: 26px 26px;
}
.leaflet-touch .leaflet-control-layers-toggle {
width: 44px;
height: 44px;
}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none;
}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
display: block;
position: relative;
}
.leaflet-control-layers-expanded {
padding: 6px 10px 6px 6px;
color: #333;
background: #fff;
}
.leaflet-control-layers-scrollbar {
overflow-y: scroll;
padding-right: 5px;
}
.leaflet-control-layers-selector {
margin-top: 2px;
position: relative;
top: 1px;
}
.leaflet-control-layers label {
display: block;
}
.leaflet-control-layers-separator {
height: 0;
border-top: 1px solid #ddd;
margin: 5px -10px 5px -6px;
}
/* Default icon URLs */
.leaflet-default-icon-path {
background-image: url(images/marker-icon.png);
}
/* attribution and scale controls */
.leaflet-container .leaflet-control-attribution {
background: #fff;
background: rgba(255, 255, 255, 0.7);
margin: 0;
}
.leaflet-control-attribution,
.leaflet-control-scale-line {
padding: 0 5px;
color: #333;
}
.leaflet-control-attribution a {
text-decoration: none;
}
.leaflet-control-attribution a:hover {
text-decoration: underline;
}
.leaflet-container .leaflet-control-attribution,
.leaflet-container .leaflet-control-scale {
font-size: 11px;
}
.leaflet-left .leaflet-control-scale {
margin-left: 5px;
}
.leaflet-bottom .leaflet-control-scale {
margin-bottom: 5px;
}
.leaflet-control-scale-line {
border: 2px solid #777;
border-top: none;
line-height: 1.1;
padding: 2px 5px 1px;
font-size: 11px;
white-space: nowrap;
overflow: hidden;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: #fff;
background: rgba(255, 255, 255, 0.5);
}
.leaflet-control-scale-line:not(:first-child) {
border-top: 2px solid #777;
border-bottom: none;
margin-top: -2px;
}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
border-bottom: 2px solid #777;
}
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
}
/* popup */
.leaflet-popup {
position: absolute;
text-align: center;
margin-bottom: 20px;
}
.leaflet-popup-content-wrapper {
padding: 1px;
text-align: left;
border-radius: 12px;
}
.leaflet-popup-content {
margin: 13px 19px;
line-height: 1.4;
}
.leaflet-popup-content p {
margin: 18px 0;
}
.leaflet-popup-tip-container {
width: 40px;
height: 20px;
position: absolute;
left: 50%;
margin-left: -20px;
overflow: hidden;
pointer-events: none;
}
.leaflet-popup-tip {
width: 17px;
height: 17px;
padding: 1px;
margin: -10px auto 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
background: white;
color: #333;
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
}
.leaflet-container a.leaflet-popup-close-button {
position: absolute;
top: 0;
right: 0;
padding: 4px 4px 0 0;
border: none;
text-align: center;
width: 18px;
height: 14px;
font: 16px/14px Tahoma, Verdana, sans-serif;
color: #c3c3c3;
text-decoration: none;
font-weight: bold;
background: transparent;
}
.leaflet-container a.leaflet-popup-close-button:hover {
color: #999;
}
.leaflet-popup-scrolled {
overflow: auto;
border-bottom: 1px solid #ddd;
border-top: 1px solid #ddd;
}
.leaflet-oldie .leaflet-popup-content-wrapper {
zoom: 1;
}
.leaflet-oldie .leaflet-popup-tip {
width: 24px;
margin: 0 auto;
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
}
.leaflet-oldie .leaflet-popup-tip-container {
margin-top: -1px;
}
.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
border: 1px solid #999;
}
/* div icon */
.leaflet-div-icon {
background: #fff;
border: 1px solid #666;
}
/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
position: absolute;
padding: 6px;
background-color: #fff;
border: 1px solid #fff;
border-radius: 3px;
color: #222;
white-space: nowrap;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
.leaflet-tooltip.leaflet-clickable {
cursor: pointer;
pointer-events: auto;
}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
position: absolute;
pointer-events: none;
border: 6px solid transparent;
background: transparent;
content: "";
}
/* Directions */
.leaflet-tooltip-bottom {
margin-top: 6px;
}
.leaflet-tooltip-top {
margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
left: 50%;
margin-left: -6px;
}
.leaflet-tooltip-top:before {
bottom: 0;
margin-bottom: -12px;
border-top-color: #fff;
}
.leaflet-tooltip-bottom:before {
top: 0;
margin-top: -12px;
margin-left: -6px;
border-bottom-color: #fff;
}
.leaflet-tooltip-left {
margin-left: -6px;
}
.leaflet-tooltip-right {
margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
top: 50%;
margin-top: -6px;
}
.leaflet-tooltip-left:before {
right: 0;
margin-right: -12px;
border-left-color: #fff;
}
.leaflet-tooltip-right:before {
left: 0;
margin-left: -12px;
border-right-color: #fff;
}

9
views/third/leaflet/leaflet.js Executable file

File diff suppressed because one or more lines are too long