basic-business-template/content/contents/leistungen.blade.php

237 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

@extends('template.'.config('settings.template').'.content.master')
@section('head')
<link rel="stylesheet" href="{{storage('assets/libs/intl-tel-input-17.0.0/css/intlTelInput.min.css')}}">
@stop
@section('content')
<div class="pt-3 pb-2 mb-5" style="background-color: {{$_primary_ci_color}}">
<div class="container">
<nav style="--bs-breadcrumb-divider: '';" aria-label="breadcrumb">
<ol class="breadcrumb text-decoration-none">
<li class="breadcrumb-item"><a href="{{url('/')}}">Home</a></li>
<li class="breadcrumb-item"><a href="{{url('/leistungen')}}">Leistungen</a></li>
<li class="breadcrumb-item active" aria-current="page">{{$content->title}}</li>
</ol>
</nav>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-12 col-lg-7">
<div class="row">
<div class="col-12 col-md-11 d-flex">
<h1 class="mt-3 mb-2 ">{{$content->title}}</h1>
</div>
<div class="fw-bolder my-4">
{!! $content->kurzbeschreibung !!}
</div>
<div class="col-12 col-lg-9">
<x-img src="{{ $content->image() }}" sizes="(max-width: 330px) 330px, (max-width: 540px) 540px, 720px," class="img-fluid card-img-top"/>
<br>
</div>
<div class="col-12 mb-5 mt-5 fs-5">
{!! $content->beschreibung !!}
</div>
@isset($content->bilder)
<div class="col-12 mb-5">
<h2 class="mb-4 mt-5 h3">Bilder</h2>
</div>
@foreach($content->bilder as $image)
<div class="col-12 col-md-6 col-lg-3 text-center">
<x-img src="{{$image}}" class="rounded img-fluid border mb-3"/>
</div>
@endforeach
@endisset
</div>
</div>
<div class="col-12 col-lg-4 offset-lg-1" id="lumino-form-sent">
<div class="card mb-5 mt-5 shadow-lg position-sticky" style="top:5rem;">
<div class="card-header text-center">
<h3 class="fs-5 fw-bold">Unverbindlich anfragen</h3>
</div>
<div class="card-body">
@if(session()->has('error'))
<div class="alert alert-danger mb-4">
<span class="fw-bold">Fehler!</span>
<br>
{{session()->get('error')}}
</div>
@endif
@if(session()->has('success'))
<div class="row">
<div class="col-12">
<div class="alert alert-success" id="successful-submitting-form" role="alert">
<div class="row text-center">
<div class="col-12" style="text-align: center;">
<script src="{{storage('assets/libs/lottie-player-0.4.0.js')}}"></script>
<lottie-player src="{{storage('assets/animations/form-sent.json')}}" background="transparent" speed="1" style="width: 190px; height: 190px; display: inline-block;" autoplay loop></lottie-player>
</div>
<div class="col-12">
<h2 class="mt-3 fs-4 text-muted">Anfrage erfolgreich abgesendet!</h2>
</div>
</div>
</div>
</div>
</div>
@else
<x-form id="anfrage" class="form-load" id-name="anfrage" channels="email-anfrage,bestaetigung-kunde">
<div class="mb-4">
<label for="exampleInputEmail1" class="form-label">Name:</label>
<input type="name" name="name" class="form-control" id="name" aria-describedby="emailHelp" placeholder="Max Mustermann" autocomplete="on" required>
</div>
<div class="mb-4">
<label for="exampleInputEmail1" class="form-label">Telefonnummer:</label>
<input type="tel" name="tel" class="form-control phone" id="tel" aria-describedby="emailHelp" placeholder="0170 1234 56478" autocomplete="on">
</div>
<div class="mb-4">
<label for="email" class="form-label">E-Mail:</label>
<input type="email" name="email" class="form-control" id="email" aria-describedby="emailHelp" placeholder="beispiel@areya.de" autocomplete="on" required>
</div>
<div class="form-floating mb-4">
<textarea style="height: 80px;" name="nachricht" class="form-control" placeholder="Leave a comment here" id="nachricht"></textarea>
<label for="floatingTextarea">Nachricht</label>
</div>
<div class="mb-4">
<i class="text-muted small">Wir verwenden Ihre Daten ausschließlich gemäß unserer <a href="{{url('/datenschutz')}}" class="text-decoration-none" >Datenschutzerklärung</a>.</i>
</div>
<div class="d-grid gap-2">
<button type="submit" d-load-message="Wird verschickt" class="btn btn-primary btn-block btn-load">Anfrage unverbindlich absenden
<svg style="fill: currentColor;width: 17px;margin-left: 6px;margin-bottom: 4px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z"/></svg>
</button>
</div>
</x-form>
@endif
</div>
</div>
</div>
</div>
@php($otherContents = filterByContentType("Leistungen")->filter(function ($item) use ($content) { return $item->id != $content->id; }))
@if($otherContents->isNotEmpty())
<div class="row mb-5">
<div class="col-12">
<hr class="pb-5 mt-5">
<h2 class="mb-4 mt-5 h3">Weitere Leistungen</h2>
</div>
@foreach($otherContents->take(3) as $index => $otherContent)
<div class="col-12 col-md-6 col-lg-4 mb-3">
<a href="{{$otherContent->path}}" class="text-decoration-none">
<div class="card shadow-sm h-100" data-aos="fade-up" data-aos-delay="{{$index * 250}}">
<x-img src="{{$otherContent->image()}}" class="img-fluid card-img-top"/>
<div class="card-body">
<h3 class="h5 mb-3">{{$otherContent->title}}</h3>
{{$otherContent->kurzbeschreibung}}
</div>
</div>
</a>
</div>
@endforeach
</div>
@endif
</div>
<div class="fixed-bottom d-lg-none text-center pb-3">
<div class="d-grid gap-2 px-4">
<a href="#lumino-form-sent" class="btn btn-primary btn-block">Angebot anfordern
<svg style="fill: currentColor;width: 17px;margin-left: 6px;margin-bottom: 4px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z"/></svg>
</a>
</div>
</div>
@stop
@section('scripts')
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script>
const shareData = {
title: "{{ $content->title }}",
text: 'Text',
url: window.location.href,
}
</script>
<!-- <script src="{{ asset('template/js/pages/news/methods.js') }}"></script>
<script src="{{ asset('template/js/pages/news/events.js') }}"></script>
<script src="{{ asset('template/js/pages/news/script.js') }}"></script> -->
<script src="{{ asset('template/assets/libs/intl-tel-input-17.0.0/js/intlTelInput.min.js') }}"></script>
<script>
document.addEventListener("DOMContentLoaded", () => {
let baseUrl = document.querySelector("meta[name=url-base]").getAttribute('content');
let input = document.querySelector(".phone");
let iti = window.intlTelInput(input, {
initialCountry: "de",
geoIpLookup: function(callback) {
$.get('https://ipinfo.io', function() {}, "jsonp").always(function(resp) {
var countryCode = (resp && resp.country) ? resp.country : "us";
callback(countryCode);
});
},
utilsScript: baseUrl+"/template/assets/libs/intl-tel-input-17.0.0/js/utils.min.js"
});
$("#anfrage").submit(function() {
if (iti.isValidNumber() == false) {
alert('Telefonnummer nicht gültig!');
return false;
}
return true;
});
});
</script>
<script>
document.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll(".form-load").forEach(formLoad => formLoad.addEventListener("submit", () => {
let btnLoad = formLoad.querySelector('.btn-load');
let message = btnLoad.getAttribute('d-load-message');
btnLoad.innerHTML = `
<span class="spinner-border spinner-border-sm" aria-hidden="true"></span>
<span role="status">${message}...</span>
`;
}));
});
</script>
<script>
// Get the elements
const targetElement = document.querySelector('#lumino-form-sent');
const elementToRemove = document.querySelector('.fixed-bottom');
// Create an Intersection Observer
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
// If target element is visible
if (entry.isIntersecting) {
// Remove the element to remove
elementToRemove.remove();
// Stop observing once it's removed (optional)
observer.unobserve(targetElement);
}
});
});
// Observe the target element
observer.observe(targetElement);
</script>
@stop