Initial commit - Typo3 11.5.41

This commit is contained in:
Matteo Gallo
2026-07-03 17:53:31 +02:00
commit 5ca4743197
6811 changed files with 568848 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
#t3js-location-map-wrap {
position: absolute;
width: 80vw;
height: 80vh;
top: 6vh;
left: 10vw;
opacity: 0;
box-shadow: 0 2px 15px #000;
transition: opacity 1500ms;
z-index: -1;
}
#t3js-location-map-wrap.active {
opacity: 1;
z-index: 999;
}
.t3js-location-map-container {
width: 100%;
height: calc(100% - 40px);
border: 1px solid #CCC;
}
.t3js-location-map-title>div.btn-group {
position: absolute;
left: 15px;
}
.t3js-location-map-title a {
font-weight: bold;
}
.t3js-location-map-title {
background: rgb(237, 237, 237);
font-family: Share, Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
padding: 5px 15px;
text-align: center;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

View File

@@ -0,0 +1,635 @@
/* 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,
.leaflet-container .leaflet-tile {
max-width: none !important;
max-height: 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;
/* Fallback for FF which doesn't support pinch-zoom */
touch-action: none;
touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-ms-touch-action: none;
touch-action: none;
}
.leaflet-container {
-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.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;
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);
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;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-interactive {
cursor: pointer;
}
.leaflet-grab {
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: 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;
cursor: 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;
}
.leaflet-touch .leaflet-bar a:first-child {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.leaflet-touch .leaflet-bar a:last-child {
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
font-size: 22px;
}
/* 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(./layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(./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;
overflow-x: hidden;
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(./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);
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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<rect width="16" height="12" y="2" fill="#151515" color="#000" overflow="visible" rx="1.4" ry="1.4" style="isolation:auto;mix-blend-mode:normal"/>
<path fill="#fff" d="M1.7 3c-.389 0-.7.311-.7.7v8.6c0 .389.311.7.7.7h1.728a1.15 1.15 0 0 1-.028-.25 1.15 1.15 0 0 1 1.15-1.15 1.15 1.15 0 0 1 1.15 1.15 1.15 1.15 0 0 1-.028.25h4.656a1.15 1.15 0 0 1-.027-.25 1.15 1.15 0 0 1 1.148-1.15 1.15 1.15 0 0 1 1.15 1.15 1.15 1.15 0 0 1-.029.25h1.73c.389 0 .7-.311.7-.7V3.7c0-.389-.311-.7-.7-.7H1.7zm4.015 1.05A2.294 2.294 0 0 1 8 6.337c0 .612-.248 1.168-.645 1.58 1.06.585 1.788 1.7 1.788 2.99H8a2.276 2.276 0 0 0-2.285-2.285 2.277 2.277 0 0 0-2.287 2.285H2.285c0-1.29.73-2.405 1.79-2.99a2.274 2.274 0 0 1-.647-1.58A2.295 2.295 0 0 1 5.715 4.05zm0 1.143c-.638 0-1.143.505-1.143 1.143s.505 1.143 1.143 1.143 1.142-.505 1.142-1.143-.504-1.143-1.142-1.143zm4.57 1.143h3.43v1.143h-3.43V6.336zm0 2.285h3.43v1.143h-3.43V8.62z" color="#000" overflow="visible" style="isolation:auto;mix-blend-mode:normal"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="#eee" d="M0 0h16v16H0z" color="#333" overflow="visible" style="isolation:auto;mix-blend-mode:normal"/>
<path fill="#000" d="M3.05 3.5C2.47 3.5 2 3.969 2 4.55v6.9c0 .581.469 1.05 1.05 1.05h9.9c.581 0 1.05-.469 1.05-1.05v-6.9c0-.581-.469-1.05-1.05-1.05h-9.9zm.224.75h9.452c.29 0 .524.234.524.524v6.452c0 .29-.234.524-.524.524h-1.298a.862.862 0 0 0 .022-.188.862.862 0 0 0-.863-.862.862.862 0 0 0-.861.862.862.862 0 0 0 .02.188H6.254a.862.862 0 0 0 .02-.188.862.862 0 0 0-.86-.862.862.862 0 0 0-.864.862.862.862 0 0 0 .02.188H3.275a.523.523 0 0 1-.524-.524V4.774c0-.29.234-.524.524-.524zm3.012.788c-.942 0-1.715.772-1.715 1.714 0 .46.187.876.485 1.185a2.567 2.567 0 0 0-1.342 2.243h.857c0-.952.763-1.714 1.715-1.714.952 0 1.714.762 1.714 1.714h.857c0-.968-.546-1.804-1.34-2.243.297-.309.483-.726.483-1.185a1.72 1.72 0 0 0-1.714-1.714zm0 .857a.85.85 0 0 1 .857.857.85.85 0 0 1-.857.857.85.85 0 0 1-.857-.857.85.85 0 0 1 .857-.857zm3.428.857v.857h2.572v-.857H9.714zm0 1.714v.857h2.572v-.857H9.714z" color="#ccc" overflow="visible" style="isolation:auto;mix-blend-mode:normal"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
id="svg4"
version="1.1"
viewBox="0 0 16 16">
<metadata
id="metadata10">
<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>
<defs
id="defs8" />
<path
id="path817"
d="m 7.9998157,0.9592584 c -2.2900552,0 -4.1467179,1.9491077 -4.1467179,4.3542424 0,2.5466592 0.8574979,5.5847192 4.0146568,9.7272412 C 11.205675,10.82248 12.168579,7.86016 12.146534,5.3135008 12.125714,2.9084655 10.289872,0.9592583 7.9998157,0.9592584 Z m 0,2.4789751 A 1.9332866,1.9332866 0 0 1 9.933567,5.371985 1.9332866,1.9332866 0 0 1 7.9998157,7.3057364 1.9332866,1.9332866 0 0 1 6.0660642,5.371985 1.9332866,1.9332866 0 0 1 7.9998157,3.4382335 Z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.09425406;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="#888" d="M0 2v12h12.69V3.81H5.08L3.95 2H0z"/>
<path fill="#151515" d="M3.058 0c3.33.004 6.661-.006 9.991.006.617.043 1.02.668.94 1.253-.003 2.263.008 4.527-.004 6.79-.043.617-.668 1.021-1.253.94-3.26-.003-6.521.008-9.781-.005-.617-.042-1.02-.668-.94-1.253.003-2.263-.008-4.526.004-6.789A1.05 1.05 0 0 1 3.058.001z"/>
<path fill="#fff" d="M3.275.75a.527.527 0 0 0-.523.47c-.006 2.1 0 4.198-.002 6.298-.046.318.105.705.47.73h1.37c-.054-.229-.035-.475.111-.672.298-.473 1.056-.5 1.387-.049a.861.861 0 0 1 .168.721l3.51.002c-.054-.23-.037-.476.109-.674.298-.473 1.058-.5 1.389-.049a.86.86 0 0 1 .185.535.74.74 0 0 1-.017.188h1.086c.318.046.705-.105.73-.47.006-2.1 0-4.198.002-6.298.046-.318-.105-.705-.47-.73C9.61.746 6.442.752 3.274.75zm3.01.787C7.227 1.537 8 2.31 8 3.252c0 .46-.187.877-.484 1.186A2.566 2.566 0 0 1 8.857 6.68H8c0-.952-.763-1.713-1.715-1.713-.952 0-1.713.76-1.713 1.713h-.857c0-.968.545-1.804 1.34-2.242a1.705 1.705 0 0 1-.483-1.186 1.72 1.72 0 0 1 1.713-1.715zm0 .858a.851.851 0 0 0-.857.857c0 .478.379.857.857.857a.851.851 0 0 0 .858-.857.851.851 0 0 0-.858-.857zm3.43.857h2.57v.857h-2.57v-.857zm0 1.715h2.57v.855h-2.57v-.855z"/>
<path fill="#aaa" d="M16 6.08L12.96 14H0l2.53-6.6h4.02l1.71-1.32z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<rect width="16" height="12" y="2" fill="#151515" color="#000" overflow="visible" rx="1.4" ry="1.4" style="isolation:auto;mix-blend-mode:normal"/>
<path fill="#fff" d="M1.7 3c-.389 0-.7.311-.7.7v8.6c0 .389.311.7.7.7h1.728a1.15 1.15 0 0 1-.028-.25 1.15 1.15 0 0 1 1.15-1.15 1.15 1.15 0 0 1 1.15 1.15 1.15 1.15 0 0 1-.028.25h4.656a1.15 1.15 0 0 1-.027-.25 1.15 1.15 0 0 1 1.148-1.15 1.15 1.15 0 0 1 1.15 1.15 1.15 1.15 0 0 1-.029.25h1.73c.389 0 .7-.311.7-.7V3.7c0-.389-.311-.7-.7-.7H1.7zm4.015 1.05A2.294 2.294 0 0 1 8 6.337c0 .612-.248 1.168-.645 1.58 1.06.585 1.788 1.7 1.788 2.99H8a2.276 2.276 0 0 0-2.285-2.285 2.277 2.277 0 0 0-2.287 2.285H2.285c0-1.29.73-2.405 1.79-2.99a2.274 2.274 0 0 1-.647-1.58A2.295 2.295 0 0 1 5.715 4.05zm0 1.143c-.638 0-1.143.505-1.143 1.143s.505 1.143 1.143 1.143 1.142-.505 1.142-1.143-.504-1.143-1.142-1.143zm4.57 1.143h3.43v1.143h-3.43V6.336zm0 2.285h3.43v1.143h-3.43V8.62z" color="#000" overflow="visible" style="isolation:auto;mix-blend-mode:normal"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,68 @@
function ttAddressGoogleMaps() {
var obj = {};
obj.map = null;
obj.markers = [];
obj.run = function () {
const mapOptions = {
center: new google.maps.LatLng(48.3057664, 14.2873126),
zoom: 11,
maxZoom: 15,
streetViewControl: false,
fullscreenControl: false
};
obj.map = new google.maps.Map(document.getElementById('ttaddress__map'), mapOptions);
infoWindow = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
var records = document.getElementById("ttaddress__records");
for (var i = 0; i < records.childNodes.length; i++) {
var item = records.childNodes[i];
var marker = new google.maps.Marker({
map: obj.map,
position: new google.maps.LatLng(item.getAttribute('data-lat'), item.getAttribute('data-lng')),
infowindow: infoWindow,
recordId: item.getAttribute('data-id')
});
google.maps.event.addListener(marker, 'click', function (e) {
infoWindow.setContent(document.getElementById('ttaddress__record-' + this.recordId).innerHTML);
infoWindow.open(obj.map, this);
var allLabels = document.querySelectorAll('.ttaddress__label');
for (var i = 0; i < allLabels.length; i++) {
allLabels[i].classList.remove('active')
}
document.getElementById('ttaddress__label-' + this.recordId).classList.add('active');
});
bounds.extend(marker.getPosition());
obj.markers.push(marker);
}
obj.map.fitBounds(bounds);
};
obj.openMarker = function (markerId) {
google.maps.event.trigger(obj.markers[markerId], 'click');
};
return obj;
}
document.addEventListener("DOMContentLoaded", function () {
var ttAddressMapInstance = ttAddressGoogleMaps();
ttAddressMapInstance.run();
document.addEventListener('click', function (event) {
if (!event.target.matches('.ttaddress__markerlink')) {
return;
}
event.preventDefault();
var element = event.target;
ttAddressMapInstance.openMarker(element.getAttribute('data-iteration-id'));
}, false);
});

View File

@@ -0,0 +1,68 @@
function ttAddressLeaflet() {
var obj = {};
obj.map = null;
obj.markers = [];
obj.run = function () {
obj.map = L.map('ttaddress__map').setView([51.505, -0.09], 13);
obj.map.scrollWheelZoom.disable();
var mapBounds = L.latLngBounds();
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
'<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
id: 'mapbox.streets'
}).addTo(obj.map);
var records = document.getElementById("ttaddress__records").children;
for (var i = 0; i < records.length; i++) {
var item = records[i];
var marker = L.marker([item.getAttribute('data-lat'), item.getAttribute('data-lng')]).addTo(obj.map)
.bindPopup(document.getElementById('ttaddress__record-' + item.getAttribute('data-id')).innerHTML);
obj.markers.push(marker);
}
var group = new L.featureGroup(obj.markers);
obj.map.fitBounds(group.getBounds());
// Zoom out if zoom level is too high
// var zoomLevel = obj.map.getZoom();
// if (zoomLevel >= 10) {
// obj.map.setZoom(8);
// }
};
obj.openMarker = function (markerId) {
obj.markers[markerId].openPopup();
};
return obj;
}
function ttAddressOnload() {
var ttAddressMapInstance = ttAddressLeaflet();
ttAddressMapInstance.run();
document.addEventListener('click', function (event) {
if (!event.target.matches('.ttaddress__markerlink')) {
return;
}
event.preventDefault();
var element = event.target;
ttAddressMapInstance.openMarker(parseInt(element.getAttribute('data-iteration-id')));
}, false);
}
/** event listener on DOMContentLoaded does not work with scripts which are loaded async.
* With TYPO3 this could e.g. happen with EXT:scriptmerger
* Thus we listen only if document.readyState is loading, otherwise we can already fire as DOM is loaded already.
**/
if (document.readyState === 'loading') {
document.addEventListener("DOMContentLoaded", function () {
ttAddressOnload();
});
} else {
ttAddressOnload();
}

View File

@@ -0,0 +1,195 @@
define(['jquery', 'TYPO3/CMS/Backend/Icons', 'TYPO3/CMS/Backend/FormEngine', 'TYPO3/CMS/TtAddress/leaflet-core-1.4.0'], function ($, Icons, FormEngine) {
'use strict';
let LeafBE = {
$element: null,
$gLatitude: null,
$gLongitude: null,
$latitude: null,
$longitude: null,
$fieldLat: null,
$fieldLon: null,
$fieldLatActive: null,
$geoCodeUrl: null,
$geoCodeUrlShort: null,
$tilesUrl: null,
$tilesCopy: null,
$zoomLevel: 13,
$marker: null,
$map: null,
$iconClose: null
};
// Load icon via TYPO3 Icon-API and requireJS
Icons.getIcon('actions-close', Icons.sizes.small, null, null).then(function(markup) {
LeafBE['$iconClose']= markup;
});
LeafBE.init = function (element) {
// basic variable initialisation, uses data vars on the trigger button
LeafBE.$element = element;
LeafBE.$labelTitle = LeafBE.$element.attr('data-label-title');
LeafBE.$labelClose = LeafBE.$element.attr('data-label-close');
LeafBE.$labelImport = LeafBE.$element.attr('data-label-import');
LeafBE.$latitude = LeafBE.$element.attr('data-lat');
LeafBE.$longitude = LeafBE.$element.attr('data-lon');
LeafBE.$gLatitude = LeafBE.$element.attr('data-glat');
LeafBE.$gLongitude = LeafBE.$element.attr('data-glon');
LeafBE.$tilesUrl = LeafBE.$element.attr('data-tiles');
LeafBE.$tilesCopy = LeafBE.$element.attr('data-copy');
LeafBE.$geoCodeUrl = LeafBE.$element.attr('data-geocodeurl');
LeafBE.$geoCodeUrlShort = LeafBE.$element.attr('data-geocodeurlshort');
LeafBE.$fieldLat = LeafBE.$element.attr('data-namelat');
LeafBE.$fieldLon = LeafBE.$element.attr('data-namelon');
LeafBE.$fieldLatActive = LeafBE.$element.attr('data-namelat-active');
// add the container to display the map as a nice overlay
if (!$('#t3js-location-map-wrap').length) {
LeafBE.addMapMarkup();
}
};
LeafBE.addMapMarkup = function () {
$('body').append(
'<div id="t3js-location-map-wrap">' +
'<div class="t3js-location-map-title">' +
'<div class="btn-group"><a href="#" class="btn btn-icon btn-default" title="' + LeafBE.$labelClose + '" id="t3js-ttaddress-close-map">' +
LeafBE.$iconClose +
'</a>' +
'<a class="btn btn-default" href="#" title="Import marker position to form" id="t3js-ttaddress-import-position">' +
LeafBE.$labelImport +
'</a></div>' +
LeafBE.$labelTitle +
'</div>' +
'<div class="t3js-location-map-container" id="t3js-location-map-container">' +
'</div>' +
'</div>'
);
};
LeafBE.createMap = function () {
if (((!LeafBE.$latitude || !LeafBE.$longitude) || (LeafBE.$latitude == 0 && LeafBE.$longitude == 0)) && LeafBE.$geoCodeUrl != null) {
LeafBE.geocode();
}
// The ultimate fallback: if one of the coordinates is empty, fallback to Kopenhagen.
// Thank you Kaspar for TYPO3 and its great community! ;)
if (LeafBE.$latitude == null || LeafBE.$longitude == null) {
LeafBE.$latitude = LeafBE.$gLatitude;
LeafBE.$longitude = LeafBE.$gLongitude;
// set zoomlevel lower for faster navigation
LeafBE.$zoomLevel = 4;
}
LeafBE.$map = L.map('t3js-location-map-container', {
center: [LeafBE.$latitude, LeafBE.$longitude],
zoom: LeafBE.$zoomLevel
});
L.tileLayer(LeafBE.$tilesUrl, {
attribution: LeafBE.$tilesCopy
}).addTo(LeafBE.$map);
LeafBE.$marker = L.marker([LeafBE.$latitude, LeafBE.$longitude], {
draggable: true
}).addTo(LeafBE.$map);
let position = LeafBE.$marker.getLatLng();
LeafBE.$marker.on('dragend', function (event) {
LeafBE.$marker = event.target;
position = LeafBE.$marker.getLatLng();
});
LeafBE.$map.on('click', function (event) {
LeafBE.$marker.setLatLng(event.latlng);
});
// import coordinates and close overlay
$('#t3js-ttaddress-import-position').on('click', function () {
// set visual coordinates
$('input[data-formengine-input-name="' + LeafBE.$fieldLat + '"]').val(LeafBE.$marker.getLatLng().lat);
$('input[data-formengine-input-name="' + LeafBE.$fieldLon + '"]').val(LeafBE.$marker.getLatLng().lng);
// set hidden fields values
$('input[name="' + LeafBE.$fieldLat + '"]').val(LeafBE.$marker.getLatLng().lat);
$('input[name="' + LeafBE.$fieldLon + '"]').val(LeafBE.$marker.getLatLng().lng);
// enable also latitude, if not already done by user.
$('input[id="' + LeafBE.$fieldLatActive + '"]').parentsUntil('.form-group').removeClass('disabled');
$('input[id="' + LeafBE.$fieldLatActive + '"]').prop('checked', true);
// mark fields as changed for re-evaluation and revalidate the form,
// this is e.g. needed when this wizard is used on inline elements
FormEngine.Validation.markFieldAsChanged($('input[name="' + LeafBE.$fieldLat + '"]'));
FormEngine.Validation.markFieldAsChanged($('input[name="' + LeafBE.$fieldLon + '"]'));
FormEngine.Validation.validate();
// close map after import of coordinates.
$('#t3js-location-map-wrap').removeClass('active');
});
// close overlay without any further action
$('#t3js-ttaddress-close-map').on('click', function () {
$('#t3js-location-map-wrap').removeClass('active');
});
};
LeafBE.geocode = function () {
$.ajax({
type: 'GET',
url: LeafBE.$geoCodeUrl,
async: false,
dataType: 'json',
success: function (data) {
if (data.length == 0) {
$.ajax({
type: 'GET',
url: LeafBE.$geoCodeUrlShort,
async: false,
dataType: 'json',
success: function (data) {
if (data.length != 0) {
$.each(data[0], function (key, value) {
if (key == "lat") {
LeafBE.$latitude = value;
}
if (key == "lon") {
LeafBE.$longitude = value;
}
});
}
}
});
} else {
$.each(data[0], function (key, value) {
if (key == "lat") {
LeafBE.$latitude = value;
}
if (key == "lon") {
LeafBE.$longitude = value;
}
});
}
}
});
};
LeafBE.initializeEvents = function (element) {
$(element).on('click', function () {
if (LeafBE.$map !== null) {
LeafBE.$map.remove();
LeafBE.$map = null;
}
LeafBE.init($(this));
LeafBE.createMap();
$('#t3js-location-map-wrap').addClass('active');
});
};
// reinit when form has changes, e.g. inline relations loaded using ajax
LeafBE.reinitialize = FormEngine.reinitialize;
FormEngine.reinitialize = function () {
LeafBE.reinitialize();
if ($('.locationMapWizard').length) {
LeafBE.initializeEvents('.locationMapWizard');
}
};
//LeafBE.addMapMarkup();
LeafBE.initializeEvents('.locationMapWizard');
return LeafBE;
});

View File

@@ -0,0 +1,17 @@
import FormEngineValidation from '@typo3/backend/form-engine-validation.js';
export class TelephoneEvaluation {
static registerCustomEvaluation(name) {
FormEngineValidation.registerCustomEvaluation(name, TelephoneEvaluation.applyTelephoneValidationPattern);
}
static applyTelephoneValidationPattern(value) {
const items = TYPO3.settings.TtAddress.Evaluation.telephoneValidationPattern.split('/');
// fetch RegExp modifier and remove it
const modifier = items.pop();
// remove first item
items.shift();
const expression = new RegExp(items.join('/'), modifier);
return value.replace(expression, '');
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,59 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Address Example Template</title>
</head>
<body>
<!--
Markers you can use:
###UID###
###GENDER###
###FIRSTNAME###
###MIDDLENAME###
###LASTNAME###
###TITLE###
###EMAIL###
###PHONE###
###MOBILE###
###WWW###
###ADDRESS###
###BUILDING###
###ROOM###
###BIRTHDAY###
###ORGANIZATION###
###COMPANY### (only here for backwards compatibility, this is an alias for ORGANIZATION)
###CITY###
###ZIP###
###REGION###
###COUNTRY###
###IMAGE### (###IMAGE1-5### are available, too if multiple images are added to the address record)
###FAX###
###DESCRIPTION###
###MAINGROUP###
###GROUPLIST###
-->
<!-- ###TEMPLATE_ADDRESS### beginn -->
<div class="vcard" itemscope itemtype="http://schema.org/Person">
###IMAGE###
<!-- ###SUBPART_URL### begin -->
###FIRSTNAME### ###MIDDLENAME### ###LASTNAME###
<!-- ###SUBPART_URL### end -->
###ORGANIZATION###
###EMAIL###
<!-- ###SUBPART_ADR### begin -->
<div class="adr" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
###ADDRESS###
###CITY### ###REGION### ###ZIP### ###COUNTRY###
</div>
<!-- ###SUBPART_ADR### end -->
###PHONE###
</div>
<!-- ###TEMPLATE_ADDRESS### end -->
</body>
</html>

View File

@@ -0,0 +1,8 @@
#ttaddress__records {
display: none;
}
#ttaddress__map {
width: 100%;
min-height: 300px;
}