/ M006 Message Box

Das ist eine Message-Box

mit Untertitel

Non ipsum nulla qui aliquip est reprehenderit. Ipsum cupidatat mollit magna ea laborum aute labore consequat enim eu pariatur officia dolore sint. Incididunt quis sit Lorem cillum est velit aute occaecat velit do et aliqua.
Profitiere von den SAC Vorteilen Mitglied werden
Profitiere von den SAC Vorteilen Mitglied werden

Default implemention.

Data

{
	"messageId": "important-message-1",
	"headline": "Das ist eine Message-Box",
	"headlineTag": "h3",
	"subline": "mit Untertitel",
	"sublineTag": "h4",
	"copy": "Non ipsum nulla qui aliquip est reprehenderit. Ipsum cupidatat mollit magna ea laborum aute labore consequat enim eu pariatur officia dolore sint. Incididunt quis sit Lorem cillum est velit aute occaecat velit do et aliqua.",
	"link": {
		"label": "Mehr Informationen",
		"icon": "",
		"url": "#"
	},
	"size": null,
	"style": null
}

Data

{
	"messageId": "important-message-2",
	"copy": "Profitiere von den SAC Vorteilen <a href=\"#\">Mitglied werden</a>",
	"size": "compact"
}

Data

{
	"messageId": "important-message-3",
	"copy": "Profitiere von den SAC Vorteilen <a href=\"#\">Mitglied werden</a>",
	"size": "compact",
	"style": "green"
}

Template

<div class="m-message-box{{#if size}} m-message-box--{{size}}{{/if}}{{#if style}} m-message-box--{{style}}{{/if}} is-closed" data-init="MessageBox" data-message-id="{{messageId}}"{{{moduleAttributes this}}}>
	<div class="row">
		<div class="columns small-12 medium-10 large-8">
			{{#if headline}}
				<{{headlineTag}} class="m-message-box__headline fs-h3">{{headline}}</{{headlineTag}}>
			{{/if}}
			{{#if subline}}
				<{{sublineTag}} class="m-message-box__subline fs-h3-subline">{{subline}}</{{sublineTag}}>
			{{/if}}

			<div class="m-message-box__copy c-rich-text fs-copy">
				{{{copy}}}
			</div>

			{{#if link}}
				<div class="m-message-box__link-wrapper">
					{{> modules/c018_label_with_icon/c018_label_with_icon link}}
				</div>
			{{/if}}
		</div>
	</div>

	<button class="m-message-box__close c-button-text" data-js-binding="close" aria-hidden="true">
		<svg class="m-message-box__close-icon svg">
			<use xlink:href="{{@root.global.svgSprite}}#icon-x"></use>
		</svg>
	</button>
</div>

Global Data

{
	"global": {
		"lang": "de",
		"locale": "de-CH",
		"svgSprite": "/assets/media/svg/svg-sprite.svg",
		"transparentPixel": "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
		"season": "summer",
		"api": {
			"suisseAlpine": "https://dev.suissealpine.sac-cas.ch/api",
			"sacRouteDetail": "https://dev.web.sac-cas.ch/de/?type=1567765346410&tx_usersaccas2020_sac2020[routeId]=",
			"sacRoutePassTrough": "https://dev.web.sac-cas.ch/de/?type=1567765346411&tx_usersaccas2020_sac2020[routeId]=",
			"uploadProfileImage": "https://dev.web.sac-cas.ch/?eID=routing&route=usersaccassite/users/current/uploadProfileImage",
			"deleteProfileImage": "https://dev.web.sac-cas.ch/?eID=routing&route=usersaccassite/users/current/deleteProfileImage",
			"aimeosShop": "https://dev.web.sac-cas.ch/de/shop/shopapi/",
			"mailchimpForm": "https://sac-cas.us2.list-manage.com/subscribe/post?u=466a37a029f12e4df9e7a2a1f&id=ee3f0f3cf3",
			"collections": "https://collectionsdev.web.sac-cas.ch/api",
			"hrs": "https://www.alpsonline.org/hut-web-service?wsdl"
		},
		"baseAimeosUploadPath": "https://dev.web.sac-cas.ch/uploads/tx_aimeos/",
		"mapIframeUrl": "/modules/m030_map/media/map_iframe.html",
		"baseDestinationLinkUrl": "/pages/destination_summit/destination_summit.html?",
		"destinationLinkRouteAnchor": "route",
		"baseJourneyLinkUrl": "https://dev.web.sac-cas.ch/de/redirect/google-maps-routing/lv03/",
		"routeCollectionLinkUrl": "https://dev.web.sac-cas.ch/de/mein-sac/uebersicht/",
		"hrsLinkUrl": "https://www.alpsonline.org/reservation/wizard?header=yes&hut_id={{hutId}}&selectedDate={{date}}",
		"schweizMobilImportUrl": "https://map.schweizmobil.ch/?showDialog=importcoordinates&showLogin&coordinates={{coordinates}}",
		"geologyImageUrl": "https://www.sac-cas.ch/fileadmin/Huetten_und_Touren/Tourenportal/Gesteinszonenkarten/Hovercard/{{image}}.jpg",
		"features": {
			"archive": true
		},
		"translations": {
			"disciplines": {
				"mountain_hiking": "Berg- und Alpinwandern",
				"alpine_tour": "Hochtour",
				"climbing": "Klettern",
				"alpine_climbing": "Alpinklettern",
				"via_ferrata": "Klettersteig",
				"ski_tour": "Skitour",
				"snowshoe_tour": "Schneeschuhtour",
				"archive": "Routenarchiv"
			},
			"types": {
				"summit": "Gipfel",
				"hut": "Hütte",
				"traverse": "Übergang",
				"marking_point": "Markanter Punkt",
				"departure_arrival": "Ausgangp./Talort",
				"climbing_area": "Klettergebiet"
			},
			"markingPoints": {
				"lake": "See",
				"catering": "Einkehr",
				"waterfall": "Wasserfall",
				"cave": "Höhle",
				"bridge": "Brücke",
				"alp": "Alpe",
				"other": "Sehenswürdigkeit"
			},
			"difficulties": {
				"alpine_tour": {
					"L": "L",
					"WS": "WS",
					"ZS": "ZS",
					"S": "S",
					"SS": "SS",
					"AS": "AS"
				},
				"ski_tour": {
					"L": "L",
					"WS": "WS",
					"ZS": "ZS",
					"S": "S",
					"SS": "SS",
					"AS": "AS"
				}
			},
			"altitudeSuffix": "m ü.M.",
			"altitudeDifferenceUnit": "hm",
			"hoursUnit": "h",
			"difficulty": "Schwierigkeit",
			"ascent": "Aufstieg",
			"descent": "Abstieg",
			"route": "Route",
			"routes": "Routen",
			"segment": "Routenabschnitt",
			"segments": "Routenabschnitte",
			"approach": "Zustieg",
			"approaches": "Zustiege",
			"sector": "Sektor",
			"sectors": "Sektoren",
			"hut": "Hütte",
			"hutPrivate": "Hütte Privat",
			"hutFilter": "Hüttenfinder",
			"situationWarning": "Zustandswarnung",
			"protectionRule": "Schutzbestimmung",
			"archiveRoute": "Archivroute",
			"archiveRoutes": "Archivrouten",
			"map": {
				"map": "Karte",
				"legend": "Legende",
				"zoomIn": "Reinzoomen",
				"zoomOut": "Rauszoomen",
				"enterFullscreenMode": "Vollbildmodus starten",
				"leaveFullscreenMode": "Vollbildmodus verlassen",
				"searchLabel": "Region, Gipfel, Hütte, Talort, POI, …",
				"disciplineSettings": "Disziplinen Einstellungen",
				"layerSettings": "Ergänzende Kartenebenen",
				"geolocate": "Lokalisieren",
				"searchInView": "In diesem Gebiet suchen",
				"waypointDrawing": "Auf Karte zeichnen",
				"drawWaypoints": "Route zeichnen",
				"removeWaypoints": "Route löschen",
				"exportWaypoints": "GPX downloaden",
				"saveInSchweizMobil": "Speichern|SchweizMobil Plus",
				"moreInFullscreen": "Entdecke weitere Funktionen auf der Vollbildkarte:<br>- Zeichne deine eigenen Tracks",
				"baseLayers": {
					"pois": "Tourenziele, Hütten",
					"routes": "Routen"
				},
				"additionalLayers": {
					"summer": "Sommer",
					"winter": "Winter",
					"hikingTrails": "Wanderwege",
					"closedHikingTrails": "Gesperrte Wanderwege",
					"wildlifeReserves": "Wildschutzgebiete",
					"skiTours": "swisstopo Skitouren",
					"designatedWildlifeAreas": "Wildruhezonen",
					"publicTransportStops": "ÖV-Stationen",
					"slopesOver30": "Hangneigung ab 30°",
					"protectionRules": "Schutzbestimmungen",
					"situationWarnings": "Zustandswarnungen",
					"geology": "Gesteinszonenkarte",
					"alpGuardDogs": "Herdenschutzhunde",
					"armyShooting": "Schiessanzeigen",
					"snowCover": "Schneeabdeckung",
					"snowDepth": "Schneehöhe"
				},
				"layerOpacity": "Deckkraft aktiver Karten",
				"foregroundOpacity": "Deckkraft aktiver Disziplinen und Hütten",
				"backgroundOpacity": "Deckkraft inaktiver Disziplinen und Hütten",
				"reset": "Zurücksetzen"
			},
			"mapHoverCard": {
				"publicTransport": "Öffentlicher Verkehr",
				"parkingInformations": "Parkinformationen",
				"planJourneyPublicTransport": "Anreise",
				"searchPublicTransport": "Verbindung suchen (SBB)",
				"planJourneyCar": "Anreise Google Maps",
				"downloadWaypoint": "Wegpunkt downloaden",
				"routeLinkLabel": "Route ansehen",
				"wildlifeReserve": "Wildschutzgebiet",
				"wildlifeArea": "Wildruhezone",
				"closedHikingTrail": "Sperrung / Umleitung Wanderweg",
				"alpGuardDogs": "Alpweide geschützt durch Herdenschutzhunde",
				"armyShooting": "Schiessanzeige und Gefahrenstelle",
				"legalBasis": "Grundlage",
				"additionalInformation": "Zusatzinformationen",
				"showDetails": "Details anzeigen",
				"moreOnMapAdminCh": "Mehr Informationen auf map.admin.ch",
				"currentSnowDepth": "Aktuelle Schneehöhe"
			},
			"protectionArea": {
				"lastUpdated": "zuletzt aktualisiert am {{lastUpdate}}",
				"validity": "gültig von {{validFrom}} bis {{validUntil}}",
				"validityEstimated": "gültig von {{validFrom}} bis voraussichtlich {{validUntil}}",
				"validFrom": "gültig ab {{validFrom}}",
				"validUntil": "gültig bis {{validUntil}}",
				"validUntilEstimated": "gültig bis voraussichtlich {{validUntil}}",
				"generallyValid": "generell gültig"
			},
			"collections": {
				"addRouteToCollection": "Route merken",
				"selectCollection": "Merkliste auswählen",
				"selectRoute": "Welche Route(n) dieses Tourenziels möchtest du dir merken?",
				"selectRouteError": "Bitte wähle eine Route aus.",
				"addToCollection": "Merken",
				"cancel": "Abbrechen",
				"routeAddedToCollection": "Die ausgewählte Route(n) wurden zu deiner Merkliste hinzugefügt.",
				"createNew": "Neue Liste",
				"close": "Schliessen",
				"goToCollection": "Zur Merkliste",
				"alreadyCollectedIn": "Bereits gemerkt auf"
			}
		},
		"basePublicTransportLinkUrl": "https://www.sbb.ch/en/buying/pages/fahrplan/fahrplan.xhtml?language=en&nach=",
		"snowDepthInfoUrl": "https://www.sac-cas.ch",
		"snowCoverInfoUrl": "https://www.sac-cas.ch",
		"destinationFallbackImages": {
			"summit": {
				"srcset": {
					"sizeList": [
						[
							600
						],
						[
							1200
						],
						[
							2048
						]
					],
					"urlList": [
						"/modules/c015_teaser_destination/media/summit_600.jpg",
						"/modules/c015_teaser_destination/media/summit_1200.jpg",
						"/modules/c015_teaser_destination/media/summit_2048.jpg"
					]
				}
			},
			"hut": {
				"srcset": {
					"sizeList": [
						[
							600
						],
						[
							1200
						]
					],
					"urlList": [
						"/modules/c015_teaser_destination/media/hut_600.jpg",
						"/modules/c015_teaser_destination/media/hut_1200.jpg",
						"/modules/c015_teaser_destination/media/hut_2048.jpg"
					]
				}
			}
		},
		"map": {
			"news": [
				{
					"label": "Neu",
					"copy": "Jetzt auch <b>GPX downloaden</b>",
					"type": "waypointDrawing"
				},
				{
					"label": "Neu",
					"copy": "Jetzt Deckkraft für jede Ebene einstellbar",
					"type": "layerSettings"
				}
			],
			"metaLinkList": [
				{
					"url": "https://www.swisstopo.admin.ch/",
					"label": "© swisstopo (5701325910)"
				},
				{
					"url": "/pages/map_legend/map_legend.html",
					"label": "Hilfe & Legende"
				},
				{
					"url": "#",
					"label": "Haftungsausschluss"
				}
			]
		}
	}
}

Documentation

Description

Ein Modul, in dem wichtige Hinweise für den Nutzer angezeigt werden können.

Integration

Das Modul ist bereits eine l-box und kann nur auf der Hauptebene als direktes Child von l-wrapper platziert werden.

Jede Message Box wird so lange angezeigt, bis sie aktiv geschlossen wurde. Message Boxes mit anderer oder neuer messageId werden weiterhin angezeigt, bis auch diese aktiv geschlossen wurden. Der Cookie läuft nach 10 Tagen ab, kann darüberhinaus aber auch vom Backend verwaltet werden.

Der Cookie wird als JSON-String unter dem Namen message-box in folgender Struktur abgespeichert:

{
   "message-box":{
      "closedMessages":{
         "important-message-1":{
            "timestamp":1485591214508
         },
         "important-message-2":{
            "timestamp":1485591218000
         }
      }
   }
}

Testing

Durch Anhängen von ?no-storage an die URL wird die Cookie Funktionalität deaktiviert und die Message Box erscheint auch nach dem Schließen bei jedem Seitenaufruf.