Merge pull request 'Ajout intermédiaire' (#1) from poi-dev into master

Reviewed-on: #1
This commit is contained in:
Léo Serre 2020-11-10 09:59:47 +00:00
commit 5715280b87
62 changed files with 2980 additions and 1343 deletions

2
.gitignore vendored
View File

@ -1,5 +1,7 @@
/includes/config.php /includes/config.php
/medias/* /medias/*
/_maps
_ressources/dump.sql
*.sublime-project *.sublime-project
*.sublime-workspace *.sublime-workspace
*.log *.log

0
_ressources/db_model.dbm Normal file → Executable file
View File

9
_ressources/sql_skeleton.sql Normal file → Executable file
View File

@ -6,10 +6,7 @@
-- object: kabano | type: ROLE -- -- object: kabano | type: ROLE --
-- DROP ROLE IF EXISTS kabano; -- DROP ROLE IF EXISTS kabano;
CREATE ROLE kabano WITH
INHERIT
LOGIN
ENCRYPTED PASSWORD '********';
-- ddl-end -- -- ddl-end --
@ -42,7 +39,7 @@ SET search_path TO pg_catalog,public,topology;
-- DROP EXTENSION IF EXISTS postgis CASCADE; -- DROP EXTENSION IF EXISTS postgis CASCADE;
CREATE EXTENSION postgis CREATE EXTENSION postgis
WITH SCHEMA public WITH SCHEMA public
VERSION '2.5.1'; VERSION '3.0.1';
-- ddl-end -- -- ddl-end --
COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions'; COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions';
-- ddl-end -- -- ddl-end --
@ -51,7 +48,7 @@ COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial
-- DROP EXTENSION IF EXISTS postgis_topology CASCADE; -- DROP EXTENSION IF EXISTS postgis_topology CASCADE;
CREATE EXTENSION postgis_topology CREATE EXTENSION postgis_topology
WITH SCHEMA topology WITH SCHEMA topology
VERSION '2.5.1'; VERSION '3.0.1';
-- ddl-end -- -- ddl-end --
COMMENT ON EXTENSION postgis_topology IS 'PostGIS topology spatial types and functions'; COMMENT ON EXTENSION postgis_topology IS 'PostGIS topology spatial types and functions';
-- ddl-end -- -- ddl-end --

View File

@ -34,7 +34,7 @@ if(isset($controller->splitted_url[1]) && $user->rankIsHigher("moderator")) {
} }
chdir($config['logs_folder']); chdir($config['logs_folder']);
exec("tail -n 200 ".$files_list[$filenb+2]." | tac", $output); //exec("tail -n 200 ".$files_list[$filenb+2]." | tac", $output);
include ($config['views_folder']."d.admin.logs.html"); include ($config['views_folder']."d.admin.logs.html");
} }

152
controllers/d.poi.php Executable file
View File

@ -0,0 +1,152 @@
<?
require_once($config['models_folder']."d.poi.php");
require_once($config['models_folder']."d.users.php");
$head['css'] = "d.index.css;d.poi.css";
$poi = new Kabano\Poi();
switch ($controller->splitted_url[1]) {
case "new":
if($user->rankIsHigher("registered")) {
if(isset($_POST['submit'])) {
$poi->name = $_POST['name'];
$poi->locale = $_POST['locale'];
$poi->poi_type = $_POST['poi_type'];
$poi->lat = $_POST['lat'];
$poi->lon = $_POST['lon'];
$poi->alt = $_POST['alt'];
$poi->author = $user->id;
if(!$blogArticle->checkPermalink($_POST['permalink'],1)) {
$blogArticle->permalink = $_POST['permalink'];
$blogArticle->insert();
header('Location: '.$config['rel_root_folder']."blog/".$blogArticle->permalink);
}
else {
$head['title'] = $blogArticle->name;
$error = "permalink";
}
}
else {
$head['title'] = "Nouvel hébergement";
}
$locales = new Kabano\Locales();
$locales->getAll();
$head['third'] = "leaflet/leaflet.js;leaflet-fullscreen/Leaflet.fullscreen.min.js;leaflet-easybutton/easy-button.js";
$head['css'] .= ";../third/leaflet/leaflet.css;../third/leaflet-fullscreen/leaflet.fullscreen.css;../third/leaflet-easybutton/easy-button.css";
$head['js'] = "d.poi_map.js";
$poi->lat = ""; $poi->lon = ""; $poi->alt = "";
$new = 1;
include ($config['views_folder']."d.poi.edit.html");
break;
}
else {
$notfound = 1;
}
default:
// // If the page exists
// if ($blogArticle->checkPermalink($controller->splitted_url[1],$user->rankIsHigher("premium"))) {
// if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "delete" && $user->rankIsHigher("moderator")) {
// $blogArticle->delete();
// header('Location: '.$config['rel_root_folder']."blog/".$blogArticle->permalink);
// }
// else if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "restore" && $user->rankIsHigher("moderator")) {
// $blogArticle->restore();
// header('Location: '.$config['rel_root_folder']."blog/".$blogArticle->permalink);
// }
// else if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "edit" && $user->rankIsHigher("moderator")) {
// if(isset($_POST['submit'])) {
// $blogArticle->content = $_POST['content'];
// $blogArticle->locale = $_POST['locale'];
// $blogArticle->name = $_POST['name'];
// $blogArticle->is_commentable = isset($_POST['is_commentable'])?'t':'f';
// $blogArticle->author = $user->id;
// $blogArticle->update();
// header('Location: '.$config['rel_root_folder']."blog/".$blogArticle->permalink);
// }
// else {
// $locales = new Kabano\Locales();
// $locales->getAll();
// $head['title'] = $blogArticle->name;
// include ($config['views_folder']."d.blog.edit.html");
// }
// }
// else {
// // Manage history of an article
// if($user->rankIsHigher("premium")) {
// $blogHistory = new Kabano\BlogArticles();
// $blogHistory->getHistory($controller->splitted_url[1]);
// }
// if (isset($controller->splitted_url[2]) && is_numeric($controller->splitted_url[2]))
// $blogArticle->checkPermalink($controller->splitted_url[1],$user->rankIsHigher("premium"),$controller->splitted_url[2]);
// // Manage comment creation
// if (isset($controller->splitted_url[2]) && $controller->splitted_url[2]=="new_comment") {
// if (isset($_POST['submit']) && $user->rankIsHigher("registered")) {
// $blogComment = new Kabano\BlogComment();
// $blogComment->locale = $user->locale;
// $blogComment->author = $user->id;
// $blogComment->content = $blogArticle->content_id;
// $blogComment->comment = $_POST['comment'];
// $blogComment->insert();
// }
// }
// // Manage comment deletion
// if (isset($controller->splitted_url[2]) && $controller->splitted_url[2]=="delete_comment") {
// if (isset($controller->splitted_url[3]) && is_numeric($controller->splitted_url[3])) {
// $blogComment = new Kabano\BlogComment();
// if($blogComment->checkId($controller->splitted_url[3]))
// if ($user->rankIsHigher("moderator") || $user->id == $blogComment->author)
// $blogComment->delete();
// }
// }
// // Manage comment restoration
// if (isset($controller->splitted_url[2]) && $controller->splitted_url[2]=="restore_comment") {
// if (isset($controller->splitted_url[3]) && is_numeric($controller->splitted_url[3])) {
// $blogComment = new Kabano\BlogComment();
// if($blogComment->checkId($controller->splitted_url[3]))
// if ($user->rankIsHigher("moderator") || $user->id == $blogComment->author)
// $blogComment->restore();
// }
// }
// $blogArticle->md2html();
// // Manage comments
// if ($blogArticle->is_commentable == "t") {
// $blogArticles_comments = new Kabano\BlogComments();
// $blogArticles_comments->listComments($blogArticle->content_id, ($user->rankIsHigher("premium")));
// $i = 0;
// foreach ($blogArticles_comments->objs as $comment) {
// $comment->md2html();
// $comment->author_obj = new Kabano\User();
// $comment->author_obj->checkId($comment->author);
// }
// }
// $tempUser = new Kabano\User();
// $tempUser->checkId($blogArticle->author);
// $blogArticle->author_name = $tempUser->name;
// unset($tempUser);
// $head['title'] = $blogArticle->name;
// include ($config['views_folder']."d.blog.view.html");
// }
// }
// else {
// $notfound = 1;
// }
// break;
}
?>

View File

@ -20,12 +20,15 @@ $controller->prefix = "d.";
$notfound = 0; $notfound = 0;
$session = 1; $session = 1;
if($controller->splitted_url[0]=="") $controller->splitted_url[0]="index";
// Routing to the correct page from the correct link // Routing to the correct page from the correct link
switch ($controller->splitted_url[0]) switch ($controller->splitted_url[0])
{ {
case "index": case "" : case "index":
case "community" :
$controller->name=""; $controller->name="";
$view->name="index"; $view->name=$controller->splitted_url[0];
break; break;
case "user" : case "user" :
$controller->name="users"; $controller->name="users";
@ -35,6 +38,7 @@ switch ($controller->splitted_url[0])
case "wiki" : case "wiki" :
case "blog" : case "blog" :
case "map" : case "map" :
case "poi" :
case "admin" : case "admin" :
$controller->name=$controller->splitted_url[0]; $controller->name=$controller->splitted_url[0];
$view->name=""; $view->name="";

0
models/d.locales.php Normal file → Executable file
View File

183
models/d.poi.php Executable file
View File

@ -0,0 +1,183 @@
<?
namespace Kabano;
/**********************************************************
***********************************************************
**
** This class is to manage a poi object
**
***********************************************************
**********************************************************/
require_once($config['third_folder']."Md/MarkdownExtra.inc.php");
// This array is related to the defined SQL enum, do not touch.
$poi_types = array(
"basic_hut" => array("Abri sommaire", "Abri", "#ef2929", "basic_hut"),
"wilderness_hut" => array("Cabane non gardée", "Cabane", "#ef2929", "wilderness_hut"),
"alpine_hut" => array("Refuge gardé", "Refuge", "#ef2929", "alpine_hut"),
"halt" => array("Gîte d'étape", "Gîte", "#4e9a06", "halt"),
"bivouac" => array("Zone de bivouac", "Bivouac", "#ef2929", "bivouac"),
"campsite" => array("Camping", "Camping", "#4e9a06", "campsite")
);
class Poi
{
public $poi_id = NULL;
public $locale_id = NULL;
public $source_id = NULL;
public $version_id = NULL;
public $is_public = NULL;
public $permalink = NULL;
public $creation_date = NULL;
public $name = NULL;
public $position = NULL;
public $type = NULL;
public $locale = NULL;
public $source = NULL;
public $remote_source_id = NULL;
public $author = NULL;
public $version = NULL;
public $update_date = NULL;
public $is_archive = NULL;
public $alt_type = NULL;
public $is_destroyed = NULL;
public $alt_name = NULL;
public $alt_position = NULL;
public $parameters = NULL;
/*****
** Checks if a page at this URL exists and return the ID
*****/
public function checkPermalink($permalink, $withArchive=0, $elementNb=0) {
global $config;
$con = pg_connect("host=".$config['SQL_host']." dbname=".$config['SQL_db']." user=".$config['SQL_user']." password=".$config['SQL_pass'])
or die ("Could not connect to server\n");
$query = "SELECT poi_versions.id AS version_id, * FROM pois INNER JOIN poi_locales ON pois.id = poi_locales.poi_id INNER JOIN poi_sources ON poi_locales.id = poi_sources.locale_id INNER JOIN poi_versions ON poi_sources.id = poi_versions.source_id WHERE permalink=$1";
if($withArchive==0) {
$query .= " AND is_archive=FALSE AND is_public=TRUE";
}
$query .= " ORDER BY update_date DESC LIMIT 1 OFFSET $2";
pg_prepare($con, "prepare1", $query)
or die ("Cannot prepare statement\n");
$result = pg_execute($con, "prepare1", array($permalink, $elementNb))
or die ("Cannot execute statement\n");
pg_close($con);
if(pg_num_rows($result) == 1) {
$row = pg_fetch_assoc($result);
$this->populate($row);
return 1;
}
else {
return 0;
}
}
/*****
** Populate the object using its ID
*****/
public function populate($row) {
$this->$poi_id = $row['poi_id'];
$this->$locale_id = $row['locale_id'];
$this->$source_id = $row['source_id'];
$this->$version_id = $row['version_id'];
$this->$is_public = $row['is_public'];
$this->$permalink = $row['permalink'];
$this->$creation_date = $row['creation_date'];
$this->$name = $row['name'];
$this->$position = $row['position'];
$this->$type = $row['type'];
$this->$locale = $row['locale'];
$this->$source = $row['source'];
$this->$remote_source_id = $row['remote_source_id'];
$this->$author = $row['author'];
$this->$version = $row['version'];
$this->$update_date = $row['update_date'];
$this->$is_archive = $row['is_archive'];
$this->$alt_type = $row['alt_type'];
$this->$is_destroyed = $row['is_destroyed'];
$this->$alt_name = $row['alt_name'];
$this->$alt_position = $row['alt_position'];
$this->$parameters = $row['parameters'];
}
/*****
** Create a new poi, all field required except alt_*, *_id
*****/
public function insert() {
global $config;
global $user;
$con = pg_connect("host=".$config['SQL_host']." dbname=".$config['SQL_db']." user=".$config['SQL_user']." password=".$config['SQL_pass'])
or die ("Could not connect to server\n");
// Because it is the first insert.
$this->alt_type = $this->type;
$this->alt_name = $this->name;
$this->alt_position = $this->position;
$query = "INSERT INTO pois (is_public, permalink, creation_date, name, position, type) VALUES
(TRUE, $1, $2, $3, $4, $5) RETURNING id";
pg_prepare($con, "prepare1", $query)
or die ("Cannot prepare statement\n");
$result = pg_execute($con, "prepare1", array($this->permalink, date('r'), $this->name, $this->position, $this->type))
or die ("Cannot execute statement\n");
$this->poi_id = pg_fetch_assoc($result)['id'];
$query = "INSERT INTO poi_locales (locale, poi_id) VALUES
($1, $2) RETURNING id";
pg_prepare($con, "prepare2", $query)
or die ("Cannot prepare statement\n");
$result = pg_execute($con, "prepare2", array($this->locale, $this->poi_id))
or die ("Cannot execute statement\n");
$this->locale_id = pg_fetch_assoc($result)['id'];
$query = "INSERT INTO poi_sources (source, remote_source_id, author, locale_id) VALUES
($1, $2, $3, $4) RETURNING id";
pg_prepare($con, "prepare3", $query)
or die ("Cannot prepare statement\n");
$result = pg_execute($con, "prepare3", array($this->source, $this->remote_source_id, $this->author, $this->locale_id))
or die ("Cannot execute statement\n");
$this->source_id = pg_fetch_assoc($result)['id'];
$query = "INSERT INTO poi_versions (version, update_date, is_archive, alt_type, is_destroyed, alt_name, alt_position, parameters, source_id) VALUES
('0', $1, FALSE, $2, $3, $4, $5, $6, $7) RETURNING id";
pg_prepare($con, "prepare4", $query)
or die ("Cannot prepare statement\n");
$result = pg_execute($con, "prepare4", array(date('r'), $this->alt_type, $this->is_destroyed, $this->alt_name, $this->alt_position, $this->parameters, $this->source_id))
or die ("Cannot execute statement\n");
$this->version_id = pg_fetch_assoc($result)['id'];
$query = "INSERT INTO poi_contributors (poi, contributor) VALUES
($1, $2)";
pg_prepare($con, "prepare5", $query)
or die ("Cannot prepare statement\n");
$result = pg_execute($con, "prepare5", array($this->source_id, $user->id))
or die ("Cannot execute statement\n");
pg_close($con);
error_log(
date('r')." \t".$user->name." (".$user->id.") \tINSERT \tCreate new poi '".$this->permalink."'\r\n",
3,
$config['logs_folder'].'wiki.log');
}
}
?>

View File

@ -12,6 +12,7 @@ namespace Kabano;
require_once($config['models_folder']."d.locales.php"); require_once($config['models_folder']."d.locales.php");
// This array is related to the defined SQL enum, do not touch.
$ranks = array( $ranks = array(
"administrator" => array(1000,"Administrateur", "red", "administrator"), "administrator" => array(1000,"Administrateur", "red", "administrator"),
"moderator" => array(800,"Modérateur", "orangered", "moderator"), "moderator" => array(800,"Modérateur", "orangered", "moderator"),

View File

@ -182,7 +182,7 @@ class WikiPage
} }
/***** /*****
** Create a page by archiving the current one and inserting a new one ID ** Create a new page, fails if permalink already exists
*****/ *****/
public function insert() { public function insert() {
global $config; global $config;

View File

@ -1,10 +1,10 @@
<?php <?php
# Use this file if you cannot use class autoloading. It will include all the // Use this file if you cannot use class autoloading. It will include all the
# files needed for the Markdown parser. // files needed for the Markdown parser.
# //
# Take a look at the PSR-0-compatible class autoloading implementation // Take a look at the PSR-0-compatible class autoloading implementation
# in the Readme.php file if you want a simple autoloader setup. // in the Readme.php file if you want a simple autoloader setup.
require_once dirname(__FILE__) . '/MarkdownInterface.php'; require_once dirname(__FILE__) . '/MarkdownInterface.php';
require_once dirname(__FILE__) . '/Markdown.php'; require_once dirname(__FILE__) . '/Markdown.php';

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
<?php <?php
# Use this file if you cannot use class autoloading. It will include all the // Use this file if you cannot use class autoloading. It will include all the
# files needed for the MarkdownExtra parser. // files needed for the MarkdownExtra parser.
# //
# Take a look at the PSR-0-compatible class autoloading implementation // Take a look at the PSR-0-compatible class autoloading implementation
# in the Readme.php file if you want a simple autoloader setup. // in the Readme.php file if you want a simple autoloader setup.
require_once dirname(__FILE__) . '/MarkdownInterface.php'; require_once dirname(__FILE__) . '/MarkdownInterface.php';
require_once dirname(__FILE__) . '/Markdown.php'; require_once dirname(__FILE__) . '/Markdown.php';

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
<?php <?php
# Use this file if you cannot use class autoloading. It will include all the // Use this file if you cannot use class autoloading. It will include all the
# files needed for the MarkdownInterface interface. // files needed for the MarkdownInterface interface.
# //
# Take a look at the PSR-0-compatible class autoloading implementation // Take a look at the PSR-0-compatible class autoloading implementation
# in the Readme.php file if you want a simple autoloader setup. // in the Readme.php file if you want a simple autoloader setup.
require_once dirname(__FILE__) . '/MarkdownInterface.php'; require_once dirname(__FILE__) . '/MarkdownInterface.php';

View File

@ -1,34 +1,38 @@
<?php <?php
# /**
# Markdown - A text-to-HTML conversion tool for web writers * Markdown - A text-to-HTML conversion tool for web writers
# *
# PHP Markdown * @package php-markdown
# Copyright (c) 2004-2015 Michel Fortin * @author Michel Fortin <michel.fortin@michelf.com>
# <https://michelf.ca/projects/php-markdown/> * @copyright 2004-2019 Michel Fortin <https://michelf.com/projects/php-markdown/>
# * @copyright (Original Markdown) 2004-2006 John Gruber <https://daringfireball.net/projects/markdown/>
# Original Markdown */
# Copyright (c) 2004-2006 John Gruber
# <https://daringfireball.net/projects/markdown/>
#
namespace Michelf; namespace Michelf;
/**
# * Markdown Parser Interface
# Markdown Parser Interface */
#
interface MarkdownInterface { interface MarkdownInterface {
/**
* Initialize the parser and return the result of its transform method.
* This will work fine for derived classes too.
*
* @api
*
* @param string $text
* @return string
*/
public static function defaultTransform($text);
# /**
# Initialize the parser and return the result of its transform method. * Main function. Performs some preprocessing on the input text
# This will work fine for derived classes too. * and pass it through the document gamut.
# *
public static function defaultTransform($text); * @api
*
# * @param string $text
# Main function. Performs some preprocessing on the input text * @return string
# and pass it through the document gamut. */
# public function transform($text);
public function transform($text);
} }

View File

@ -138,6 +138,7 @@ header .icon {
} }
header .icon.avatar { header .icon.avatar {
margin: -4px 0;
padding: 0; padding: 0;
height: 28px; height: 28px;
} }
@ -238,11 +239,14 @@ section {
background: white; background: white;
margin: auto; margin: auto;
width: 820px; width: 820px;
min-height: calc(100% - 94px); min-height: calc(100% - 98px);
z-index: 10; z-index: 10;
padding: 15px; padding: 15px;
text-align: justify; text-align: justify;
} }
section#index {
min-height: calc(100% - 98px - 320px);
}
section h1 { section h1 {
font-weight: 300; font-weight: 300;
@ -275,6 +279,8 @@ footer {
color: #c1c1c1; color: #c1c1c1;
text-align: left; text-align: left;
} }
footer {
}
footer #footernav { footer #footernav {
float: right; float: right;
@ -343,4 +349,49 @@ footer a:hover {
section .thumb { section .thumb {
margin: 0 10px; margin: 0 10px;
border: 1px solid #aaa; border: 1px solid #aaa;
}
/*********************************/
/** Community portal page **/
/*********************************/
.action {
clear: both;
margin: 50px auto 0 auto;
width: 90%;
background: #efefef;
}
.action p {
margin: 0;
}
.action .title {
background: #ccc;
cursor: pointer;
font-weight: 500;
font-size: 1.1em;
}
.action .title a, .action .title p {
padding: 15px 10px 15px 71px;
margin: 0;
color: inherit;
display: block;
}
.action .title i {
float: left;
width: 56px;
line-height: 56px;
text-align: center;
font-size: 30px;
background: #333;
color: #ccc;
}
.action .description {
display: none;
border: solid #ccc;
border-width: 0px 1px 3px 1px;
}
.action .description p {
padding: 10px 20px;
} }

View File

@ -33,7 +33,7 @@ footer {
} }
.leaflet-bottom.leaflet-left { .leaflet-bottom.leaflet-left {
margin-bottom: 60px !important; margin-bottom: 60px;
} }
.leaflet-fullscreen-on .leaflet-bottom.leaflet-left { .leaflet-fullscreen-on .leaflet-bottom.leaflet-left {
margin-bottom: 15px !important; margin-bottom: 15px !important;
@ -41,7 +41,7 @@ footer {
} }
.leaflet-bottom.leaflet-right { .leaflet-bottom.leaflet-right {
margin-bottom: 60px !important; margin-bottom: 60px;
} }
.leaflet-fullscreen-on .leaflet-bottom.leaflet-right { .leaflet-fullscreen-on .leaflet-bottom.leaflet-right {
margin-bottom: 15px !important; margin-bottom: 15px !important;
@ -127,6 +127,23 @@ footer {
background: #212121 !important; background: #212121 !important;
} }
/* Scale */
.leaflet-control-scale-line {
height: 30px !important;
top: 2px !important;
position: relative !important;
background: #212121 !important;
color: #c1c1c1 !important;
text-align: center !important;
border: none !important;
font-size: 12px !important;
line-height: 30px !important;
}
.leaflet-control-scale {
opacity: 0.8 !important;
}
/* Credit / Legend */ /* Credit / Legend */
.leaflet-control button { .leaflet-control button {
@ -162,21 +179,4 @@ footer {
.leaflet-fullscreen-on .easy-button-container { .leaflet-fullscreen-on .easy-button-container {
display: none; display: none;
}
/* Scale */
.leaflet-control-scale-line {
height: 30px !important;
top: 2px !important;
position: relative !important;
background: #212121 !important;
color: #c1c1c1 !important;
text-align: center !important;
border: none !important;
font-size: 12px !important;
line-height: 30px !important;
}
.leaflet-control-scale {
opacity: 0.8 !important;
} }

231
views/css/d.poi.css Executable file
View File

@ -0,0 +1,231 @@
/*********************************/
/** Common **/
/*********************************/
html, body {
height: 100%;
}
#sticky {
position: relative;
min-height: 0;
top: 65%;
z-index: 10;
}
@keyframes fadeinfadeout {
0% {color: #444;}
50% {color: #999;}
100% {color: #444;}
}
#slide-icon {
position: absolute;
left: 400px;
top: -35px;
color: #000;
font-size: 60px;
color: #555;
animation-name: fadeinfadeout;
animation-duration: 2s;
animation-iteration-count: infinite;
cursor: pointer;
}
#mapid {
position: fixed;
height: 100%;
width: 100%;
top: 0;
}
/*********************************/
/** Editor page **/
/*********************************/
form.form input, form.form textarea, form.form input[type=radio]:checked+label, #locale {
background: #ddd;
border-bottom: 2px solid #ccc;
display: block;
padding: 10px;
}
form.form h1 input {
flex: 2 !important;
font-size: 18px;
}
form.form h1 {
padding: 10px 0;
margin: 0 0 10px 0;
}
#locale {
flex: 1;
margin: 10px 5px 0 5px;
font-size: 17px;
}
.flex_line {
display: flex;
flex-direction: row;
}
.flex_line input[type=text] {
flex: 1;
margin: 10px 5px 0 5px;
}
form.form input[type=submit] {
width: auto;
margin: 10px auto;
border-bottom: 2px solid blue;
}
form.form input[type=radio] {
display: none;
}
form.form input[type=radio]+label {
font-size: 13px;
flex: 1;
text-align: center;
padding: 10px;
vertical-align: middle;
border-bottom: 2px solid transparent;
}
form.form input[type=radio]+label img {
width: 32px;
height: 32px;
}
/*****************************************
Controls of the map
*****************************************/
/* General */
.leaflet-control-container {
position: absolute !important;
width: 850px !important;
height: 100%;
left: calc(50% - 425px) !important;
font-family: "Fira Sans", "Open Sans",Helvetica,Arial,sans-serif !important;
}
.leaflet-fullscreen-on .leaflet-control-container {
position: absolute !important;
width: 100% !important;
left: 0 !important;
}
.leaflet-bottom.leaflet-left {
bottom: 35% !important;
margin-bottom: -50px !important;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-left {
margin-bottom: 15px !important;
margin-left: 15px !important;
bottom: 0 !important;
}
.leaflet-bottom.leaflet-right {
bottom: 35% !important;
margin-bottom: -50px !important;
}
.leaflet-fullscreen-on .leaflet-bottom.leaflet-right {
margin-bottom: 15px !important;
margin-right: 15px !important;
bottom: 0 !important;
}
.leaflet-control {
clear: none !important;
padding: 0 !important;
border-radius: 0 !important;
box-shadow: none !important;
color: #c1c1c1 !important;
}
.leaflet-right .leaflet-control {
margin: 0 0 0 15px !important;
}
.leaflet-left .leaflet-control {
margin: 0 15px 0 0 !important;
}
.leaflet-control a, .leaflet-control button {
display: inline-block !important;
float: none !important;
border: none !important;
background-color: #212121 !important;
border-radius: 0 !important;
color: #c1c1c1 !important;
border-right: 1px #3e3e3e solid !important;
}
.leaflet-control a:last-child, .leaflet-control button:last-child {
border-right: none !important;
}
/* Zoom */
.leaflet-control-zoom-in, .leaflet-control-zoom-out {
font-size: 10px !important;
}
.leaflet-disabled {
background-color: rgba(33, 33, 33, 0.8) !important;
opacity: 0.8 !important;
}
/* Fullscreen */
.leaflet-control-fullscreen a {
background: #212121 !important;
}
.leaflet-control-fullscreen a:before {
content: "\f065";
font-family: "Font Awesome 5 Free";
font-weight: 900;
background: none !important;
}
.leaflet-fullscreen-on .leaflet-control-fullscreen a:before {
content: "\f066";
font-family: "Font Awesome 5 Free";
font-weight: 900;
}
/* Baselayers */
.leaflet-control-layers a {
background: #212121 !important;
width: 26px !important;
height: 26px !important;
line-height: 26px !important;
text-align: center !important;
border-right: none !important;
}
.leaflet-control-layers a:before {
content: "\f5fd";
font-family: "Font Awesome 5 Free";
font-weight: 900;
background: none !important;
}
.leaflet-control-layers-expanded a {
display: none !important;
}
.leaflet-control-layers-list {
padding: 3px 8px !important;
color: white !important;
background: #212121 !important;
}
/* Scale */
.leaflet-control-scale-line {
height: 30px !important;
top: 2px !important;
position: relative !important;
background: #212121 !important;
color: #c1c1c1 !important;
text-align: center !important;
border: none !important;
font-size: 12px !important;
line-height: 30px !important;
}
.leaflet-control-scale {
opacity: 0.8 !important;
}

65
views/d.community.html Executable file
View File

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html lang="fr">
<? include('blocks/d.head.html'); ?>
<body>
<? include('blocks/d.nav.html'); ?>
<section>
<h1>Contribuer au projet Kabano.</h1>
<p>&Eacute;tant un projet collaboratif, Kabano se repose sur vos contributions pour diffuser des informations au plus proche de la réalité. En participant au projet Kabano, vous acceptez de placer vos collaborations sous <a href="<?=$config['rel_root_folder']?>wiki/licences">nos licences libres</a>.</p>
<br>
<div class="action">
<? if($user->rankIsHigher("registered")) { ?>
<div class="title"><i class="fas fa-home"></i>
<a href="<?=$config['rel_root_folder']?>poi/new">Ajouter un hébergement de montagne</a>
</div>
<? } else { ?>
<div class="title" id="js_open_1"><i class="fas fa-home"></i>
<p>Ajouter un hébergement de montagne</p>
</div>
<div class="description" id="js_openned_1">
<p>Vous devez être connecté pour pouvoir ajouter un hébergement. &Ccedil;a nous permet de laisser les robots à la porte.</p>
</div>
<? } ?>
</div>
<div class="action">
<div class="title" id="js_open_2"><i class="fas fa-comment"></i>
<p>Ajouter un commentaire sur un hébergement</p>
</div>
<div class="description" id="js_openned_2">
<p>Rendez-vous sur la page hébergement où vous souhaitez laisser un commentaire, puis ajoutez un commentaire en bas de page.</p>
</div>
</div>
<div class="action">
<div class="title" id="js_open_3"><i class="fas fa-wrench"></i>
<p>Faire une demande de travaux</p>
</div>
<div class="description" id="js_openned_3">
<p>Cette fonctionnalité n'est pas encore disponible, mais n'hésitez pas à laisser un commentaire pour faire savoir le besoin d'entretien.</p>
</div>
</div>
</section>
<script type="text/javascript">
$( "#js_open_1" ).click(function() {
$( "#js_openned_1" ).show(400);
});
$( "#js_open_2" ).click(function() {
$( "#js_openned_2" ).show(400);
});
$( "#js_open_3" ).click(function() {
$( "#js_openned_3" ).show(400);
});
</script>
<? include('blocks/d.footer.html'); ?>
</body>
</html>

View File

@ -16,7 +16,7 @@
</div> --> </div> -->
</aside> </aside>
<section> <section id="index">
<h1>Cabanes et bivouac en montagne.</h1> <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> <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> <br>

55
views/d.poi.edit.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'); ?>
<div id="mapid"></div>
<div id="sticky">
<section>
<i id="slide-icon" class="fas fa-chevron-up"></i>
<? if(isset($new) AND $new==1) { ?>
<form class="form" action="<?=$config['rel_root_folder']?>poi/new" method="post">
<? }
else { ?>
<form class="form" action="<?=$config['rel_root_folder']?>poi/<?=$poi->permalink?>/edit" method="post">
<? } ?> <h1 class="flex_line">
<input type="text" value="<?=$poi->name?>" name="name" id="name" placeholder="Nom de l'hébergement">
<select name="locale" id="locale">
<? foreach($locales->objs as $locale) { ?>
<option <?=$poi->locale==$locale->name?'selected':''?> value="<?=$locale->name?>"><?=$locale->display_name?></option>
<? } ?>
</select>
</h1>
<div class="flex_line" id="type_selector">
<? foreach($poi_types as $type) { ?>
<input type="radio" name="poi_type" value="<?=$type[3]?>" id="<?=$type[3]?>">
<label for="<?=$type[3]?>"><img src="<?=$config['views_url']?>img/<?=$type[3]?>.svg"><br><?=$type[0]?></label>
<? } ?>
</div>
<div class="flex_line">
<input type="text" value="<?=$poi->lat?>" name="lat" id="lat" placeholder="Latitude">
<input type="text" value="<?=$poi->lon?>" name="lon" id="lon" placeholder="Longitude">
<input type="text" value="<?=$poi->alt?>" name="alt" id="alt" placeholder="Altitude">
</div>
<input name="submit" id="submit" type="submit" value="Ajouter l'hébergement">
</form>
</section>
<script type="text/javascript">
$( "#slide-icon" ).click(function() {
$( "html, body" ).animate({scrollTop: "300px"});
});
</script>
<? include('blocks/d.footer.html'); ?>
</div>
</body>
</html>

29
views/img/alpine_hut.svg Executable file
View File

@ -0,0 +1,29 @@
<?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="32" height="32" viewBox="0 0 31.999999 31.999998" id="svg4371" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="refuge-garde.svg">
<defs id="defs4373"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="15.839192" inkscape:cx="20.352187" inkscape:cy="10.481553" inkscape:document-units="px" inkscape:current-layer="g4689" showgrid="false" inkscape:window-width="1366" inkscape:window-height="745" inkscape:window-x="0" inkscape:window-y="23" inkscape:window-maximized="1" units="px"/>
<metadata id="metadata4376">
<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/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1020.3622)">
<g transform="translate(-41.001273,2.4589125)" id="g4668" style="fill:#ef2929;fill-opacity:1">
<g transform="translate(-22.998727,-2.4589163)" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="g4689-8">
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 66,1034.3622 6,0 8,-6 8,6 6,0 0,-2 -14,-10 -14,10 z" id="path4462-1-2" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 80,1050.3622 -10,0 0,-18 10,-7 10,7 0,18 z" id="path4460-7-7" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 71,1029.3622 0,-6 4,0 0,3 z" id="path4464-3-6" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
</g>
<g transform="translate(-22.998727,-2.4589163)" id="g4689" style="fill:#ef2929;fill-opacity:1">
<path sodipodi:nodetypes="ccccccccc" inkscape:connector-curvature="0" id="path4462-1" d="m 66,1034.3622 6,0 8,-6 8,6 6,0 0,-2 -14,-10 -14,10 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccccc" inkscape:connector-curvature="0" id="path4460-7" d="m 80,1050.3622 -10,0 0,-18 10,-7 10,7 0,18 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path4464-3" d="m 71,1029.3622 0,-6 4,0 0,3 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

27
views/img/basic_hut.svg Executable file
View File

@ -0,0 +1,27 @@
<?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="32" height="32" viewBox="0 0 31.999999 31.999998" id="svg4371" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="abri.svg">
<defs id="defs4373"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="7.9195959" inkscape:cx="33.591252" inkscape:cy="15.994383" inkscape:document-units="px" inkscape:current-layer="g4668" showgrid="false" inkscape:window-width="1366" inkscape:window-height="745" inkscape:window-x="0" inkscape:window-y="23" inkscape:window-maximized="1" units="px"/>
<metadata id="metadata4376">
<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/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1020.3622)">
<g transform="translate(-32,-3.8146968e-6)" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="g4668-0">
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 34,1034.3622 6,0 8,-6 8,6 6,0 0,-2 -14,-10 -14,10 z" id="path4462-3-8" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 38,1050.3622 0,-18 4,0 0,18 z" id="path4489-64" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 54,1050.3622 0,-18 4,0 0,18 z" id="path4489-6-3" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
</g>
<g transform="translate(-32,-3.8146968e-6)" id="g4668" style="fill:#ef2929;fill-opacity:1">
<path sodipodi:nodetypes="ccccccccc" inkscape:connector-curvature="0" id="path4462-3" d="m 34,1034.3622 6,0 8,-6 8,6 6,0 0,-2 -14,-10 -14,10 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path4489" d="m 38,1050.3622 0,-18 4,0 0,18 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path4489-6" d="m 54,1050.3622 0,-18 4,0 0,18 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

27
views/img/bivouac.svg Executable file
View File

@ -0,0 +1,27 @@
<?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="32" height="32" viewBox="0 0 31.999999 31.999998" id="svg4371" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="bivouac.svg">
<defs id="defs4373"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="12.5625" inkscape:cx="19.992835" inkscape:cy="5.4636994" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1366" inkscape:window-height="745" inkscape:window-x="0" inkscape:window-y="23" inkscape:window-maximized="1" units="px"/>
<metadata id="metadata4376">
<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/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1020.3622)">
<g transform="translate(-128,-3.814697e-6)" inkscape:export-ydpi="44.365292" inkscape:export-xdpi="44.365292" inkscape:export-filename="/home/leo/Projets/WRI/images/icones/bivouac.png" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="g4682-8">
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 130,1050.3622 4,0 17,-28 -5,0 -16,26 z" id="path4554-2" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 158,1050.3622 -4,0 -17,-28 5,0 16,26 z" id="path4554-6-4" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 134,1050.3622 0,-4 7,0 3,-5 3,5 7,0 0,4 z" id="path4571-6" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccc"/>
</g>
<g transform="translate(-128,-3.814697e-6)" id="g4682" style="fill:#ef2929;fill-opacity:1" inkscape:export-filename="/home/leo/Projets/WRI/images/icones/bivouac.png" inkscape:export-xdpi="44.365292" inkscape:export-ydpi="44.365292">
<path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" id="path4554" d="m 130,1050.3622 4,0 17,-28 -5,0 -16,26 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" id="path4554-6" d="m 158,1050.3622 -4,0 -17,-28 5,0 16,26 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="cccccccc" inkscape:connector-curvature="0" id="path4571" d="m 134,1050.3622 0,-4 7,0 3,-5 3,5 7,0 0,4 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

110
views/img/campsite.svg Executable file
View File

@ -0,0 +1,110 @@
<?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="32"
height="32"
viewBox="0 0 31.999999 31.999998"
id="svg4371"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="camping.svg">
<defs
id="defs4373" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="12.5625"
inkscape:cx="5.7838798"
inkscape:cy="11.195043"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1680"
inkscape:window-height="998"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
units="px" />
<metadata
id="metadata4376">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1020.3622)">
<g
transform="translate(-128,-3.814697e-6)"
inkscape:export-ydpi="44.365292"
inkscape:export-xdpi="44.365292"
inkscape:export-filename="/home/leo/Projets/WRI/images/icones/bivouac.png"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="g4682-8">
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 130,1050.3622 h 4 l 17,-28 h -5 l -16,26 z"
id="path4554-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 158,1050.3622 h -4 l -17,-28 h 5 l 16,26 z"
id="path4554-6-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 134,1050.3622 v -4 h 7 l 3,-5 3,5 h 7 v 4 z"
id="path4571-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
</g>
<g
transform="translate(-128,-3.814697e-6)"
id="g4682"
style="fill:#4e9a06;fill-opacity:1"
inkscape:export-filename="/home/leo/Projets/WRI/images/icones/bivouac.png"
inkscape:export-xdpi="44.365292"
inkscape:export-ydpi="44.365292">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4554"
d="m 130,1050.3622 h 4 l 17,-28 h -5 l -16,26 z"
style="fill:#4e9a06;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4554-6"
d="m 158,1050.3622 h -4 l -17,-28 h 5 l 16,26 z"
style="fill:#4e9a06;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path4571"
d="m 134,1050.3622 v -4 h 7 l 3,-5 3,5 h 7 v 4 z"
style="fill:#4e9a06;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

30
views/img/halt.svg Executable file
View File

@ -0,0 +1,30 @@
<?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="32" height="32" viewBox="0 0 31.999999 31.999998" id="svg4371" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="gite-d-etape.svg">
<defs id="defs4373"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="11.2" inkscape:cx="19.601284" inkscape:cy="15.042108" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1366" inkscape:window-height="745" inkscape:window-x="0" inkscape:window-y="23" inkscape:window-maximized="1" units="px"/>
<metadata id="metadata4376">
<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/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1020.3622)">
<g transform="translate(-41.001273,2.4589125)" id="g4668" style="fill:#ef2929;fill-opacity:1">
<g transform="translate(-22.998727,-2.4589163)" id="g4689" style="fill:#ef2929;fill-opacity:1"/>
<g transform="translate(-54.998727,-2.4589163)" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="g4677-7">
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 112,1050.3622 -10,0 0,-18 10,-7 9.99999,7 0,18 z" id="path4460-7-1-2" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 98,1034.3622 6,0 8,-6 7.99999,6 6,0 0,-2 -13.99999,-10 -14,10 z" id="path4462-1-5-9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 103,1029.3622 0,-6 4,0 0,3 z" id="path4464-3-1-9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
</g>
<g transform="translate(-54.998727,-2.4589163)" id="g4677" style="fill:#4e9a06;fill-opacity:1">
<path sodipodi:nodetypes="ccccccc" inkscape:connector-curvature="0" id="path4460-7-1" d="m 112,1050.3622 -10,0 0,-18 10,-7 9.99999,7 0,18 z" style="fill:#4e9a06;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccccccc" inkscape:connector-curvature="0" id="path4462-1-5" d="m 98,1034.3622 6,0 8,-6 7.99999,6 6,0 0,-2 -13.99999,-10 -14,10 z" style="fill:#4e9a06;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path4464-3-1" d="m 103,1029.3622 0,-6 4,0 0,3 z" style="fill:#4e9a06;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

28
views/img/wilderness_hut.svg Executable file
View File

@ -0,0 +1,28 @@
<?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="32" height="32" viewBox="0 0 31.999999 31.999998" id="svg4371" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="cabane-non-gardee.svg">
<defs id="defs4373"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.8" inkscape:cx="65.143784" inkscape:cy="39.340085" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1366" inkscape:window-height="745" inkscape:window-x="0" inkscape:window-y="23" inkscape:window-maximized="1" units="px"/>
<metadata id="metadata4376">
<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/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1020.3622)">
<g transform="translate(0,-3.8146968e-6)" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="g4663-6">
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 16,1050.3622 -10,0 0,-18 4,0 0,14 12,0 0,-14 4,0 0,18 z" id="path4460-73" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 2,1034.3622 6,0 8,-6 8,6 6,0 0,-2 -14,-10 -14,10 z" id="path4462-4" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccc"/>
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 7,1029.3622 0,-6 4,0 0,3 z" id="path4464-1" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
<rect y="1028.9393" x="8.5736694" height="17.766058" width="15.467961" id="rect4328" style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
</g>
<g transform="translate(0,-3.8146968e-6)" id="g4663" style="fill:#ef2929;fill-opacity:1">
<path sodipodi:nodetypes="cccccccccc" inkscape:connector-curvature="0" id="path4460" d="m 16,1050.3622 -10,0 0,-18 4,0 0,14 12,0 0,-14 4,0 0,18 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccccccc" inkscape:connector-curvature="0" id="path4462" d="m 2,1034.3622 6,0 8,-6 8,6 6,0 0,-2 -14,-10 -14,10 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path4464" d="m 7,1029.3622 0,-6 4,0 0,3 z" style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -2,20 +2,25 @@ var mymap;
$( document ).ready(function() { $( document ).ready(function() {
// Differents layers for the map // 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 osmfr = L.tileLayer('//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {tms: true, 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>'}); var wikimedia = L.tileLayer('//maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', {tms: true, maxZoom: 18, attribution: 'Maps © <a href="http://wikimedia.org">Wikimedia</a>, Data © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>'});*/
var sat_cro = L.tileLayer('/_maps/sat_cro/{z}/{x}/{y}.png', {tms: true, maxZoom: 17, attribution: 'For dev purpose only'});
var osm_cro = L.tileLayer('/_maps/osm_cro/{z}/{x}/{y}.png', {tms: true, maxZoom: 17, attribution: 'For dev purpose only'});
var ign_cro = L.tileLayer('/_maps/ign_cro/{z}/{x}/{y}.jpg.tile', {tms: false, maxZoom: 13, attribution: 'For dev purpose only'});
// Base layers // Base layers
var baseLayers = { var baseLayers = {
"OSM France": osmfr, "Crozet IGN": ign_cro,
"OSM Wikimedia": wikimedia, "Crozet satellite": sat_cro,
"Crozet OSM": osm_cro,
}; };
mymap = L.map('mapid', { mymap = L.map('mapid', {
zoomControl: false, zoomControl: false,
layers: [wikimedia], layers: [sat_cro],
}).setView([47.018, 3.142], 6); maxBounds: [[-46.32,51.60],[-46.50,51.90]]
$("#map-credits").html(wikimedia.getAttribution()); }).setView([-46.407, 51.766], 13);
$("#map-credits").html(sat_cro.getAttribution());
L.control.scale({ L.control.scale({
position: "bottomleft", position: "bottomleft",

75
views/js/d.poi_map.js Executable file
View File

@ -0,0 +1,75 @@
var mymap;
var poi_layer;
$( document ).ready(function() {
// Differents layers for the map
/* var osmfr = L.tileLayer('//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {tms: true, 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', {tms: true, maxZoom: 18, attribution: 'Maps © <a href="http://wikimedia.org">Wikimedia</a>, Data © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>'});*/
var sat_cro = L.tileLayer('/_maps/sat_cro/{z}/{x}/{y}.png', {tms: true, maxZoom: 17, attribution: 'For dev purpose only'});
var osm_cro = L.tileLayer('/_maps/osm_cro/{z}/{x}/{y}.png', {tms: true, maxZoom: 17, attribution: 'For dev purpose only'});
var ign_cro = L.tileLayer('/_maps/ign_cro/{z}/{x}/{y}.jpg.tile', {tms: false, maxZoom: 13, attribution: 'For dev purpose only'});
// Base layers
var baseLayers = {
"Crozet IGN": ign_cro,
"Crozet satellite": sat_cro,
"Crozet OSM": osm_cro,
};
mymap = L.map('mapid', {
zoomControl: false,
layers: [sat_cro],
maxBounds: [[-46.32,51.60],[-46.50,51.90]]
}).setView([-46.407, 51.766], 13);
$("#map-credits").html(sat_cro.getAttribution());
L.control.scale({
position: "bottomleft",
imperial: false
}).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);
mymap.on('baselayerchange', function(e) {
$("#map-credits").html(e.layer.getAttribution());
});
poi_layer = L.marker([-46.407, 51.766], {draggable: true}).addTo(mymap);
poi_layer.bindTooltip("Glissez moi au bon endroit.", {permanent: true, direction: 'top'}).openTooltip();
mymap.on('click', function(e){
poi_layer.unbindTooltip();
poi_layer.setLatLng(e.latlng);
$("#lat").val(e.latlng.lat);
$("#lon").val(e.latlng.lng);
})
poi_layer.on('move', function(e){
poi_layer.unbindTooltip();
$("#lat").val(e.latlng.lat);
$("#lon").val(e.latlng.lng);
})
var poiicon = L.icon({
iconSize: [24, 24],
iconAnchor: [12, 12]
});
$("#type_selector label").click(function(e) {
poi_layer.unbindTooltip();
poiicon.options.iconUrl = e.currentTarget.firstChild.currentSrc;
poi_layer.setIcon(poiicon);
})
});

0
views/third/fontawesome-free-5.4.1-web/css/all.css Normal file → Executable file
View File

0
views/third/fontawesome-free-5.4.1-web/css/all.min.css vendored Normal file → Executable file
View File

View File

View File

Before

Width:  |  Height:  |  Size: 673 KiB

After

Width:  |  Height:  |  Size: 673 KiB

View File

View File

View File

View File

View File

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

View File

View File

View File

View File

View File

Before

Width:  |  Height:  |  Size: 708 KiB

After

Width:  |  Height:  |  Size: 708 KiB

View File

View File

View File

0
views/third/jquery-3.3.1.min.js vendored Normal file → Executable file
View File

0
views/third/leaflet-easybutton/easy-button.css Normal file → Executable file
View File

0
views/third/leaflet-easybutton/easy-button.js Normal file → Executable file
View File

0
views/third/leaflet-fullscreen/Leaflet.fullscreen.js Normal file → Executable file
View File

0
views/third/leaflet-fullscreen/Leaflet.fullscreen.min.js vendored Normal file → Executable file
View File

0
views/third/leaflet-fullscreen/fullscreen.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 299 B

After

Width:  |  Height:  |  Size: 299 B

0
views/third/leaflet-fullscreen/fullscreen@2x.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 420 B

0
views/third/leaflet-fullscreen/leaflet.fullscreen.css Normal file → Executable file
View File

0
views/third/leaflet/images/layers-2x.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
views/third/leaflet/images/layers.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 696 B

After

Width:  |  Height:  |  Size: 696 B

0
views/third/leaflet/images/marker-icon-2x.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

0
views/third/leaflet/images/marker-icon.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
views/third/leaflet/images/marker-shadow.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 618 B

After

Width:  |  Height:  |  Size: 618 B

0
views/third/leaflet/leaflet.css Normal file → Executable file
View File

0
views/third/leaflet/leaflet.js Normal file → Executable file
View File