Benjamin Völkl 2022-01-01 15:51:36 +01:00
commit 25e21e9165
12 changed files with 403 additions and 0 deletions

12
config.json Normal file
View File

@ -0,0 +1,12 @@
{
"name": "Minimal Template",
"description": "A minimal Template for the Lumino CMS",
"image": "https://ik.imagekit.io/areya/tr:ar-5-3,w-800/krys-amon-mrdlxnP7hSg-unsplash_lHJMkV3q6.jpg",
"version": "2.1",
"author": {
"name": "Areya Webservices",
"link": "https://www.areya.de/"
},
"lumino-version": {"min": "2.4", "max": "2.4"}
}

View File

View File

@ -0,0 +1,23 @@
<div id="footer">
<div class="container">



<div class="row">
<div class="col-12 col-sm-6 text-md-start text-center mt-3">
Erstellt mit dem <a href="https://www.areya.de/software/cms">Areya CMS
<svg style="width: 11px; fill: black" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M440,256H424a8,8,0,0,0-8,8V464a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V112A16,16,0,0,1,48,96H248a8,8,0,0,0,8-8V72a8,8,0,0,0-8-8H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V264A8,8,0,0,0,440,256ZM500,0,364,.34a12,12,0,0,0-12,12v10a12,12,0,0,0,12,12L454,34l.7.71L131.51,357.86a12,12,0,0,0,0,17l5.66,5.66a12,12,0,0,0,17,0L477.29,57.34l.71.7-.34,90a12,12,0,0,0,12,12h10a12,12,0,0,0,12-12L512,12A12,12,0,0,0,500,0Z"/></svg>
</a>
</div>
<div class="col-12 col-sm-6 text-md-end text-center mt-3">
<a href="{{url('/agb')}}">AGB</a>
|
<a href="{{url('/datenschutz')}}">Datenschutz</a>
|
<a href="{{url('/impressum')}}">Impressum</a>


</div>
</div>
</div>
</div>

View File

@ -0,0 +1,84 @@
@if(App::environment('production'))
@if (!empty(config('settings.facebook')))
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', "{{config('settings.facebook') }}");
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id={{config('settings.facebook') }}&ev=PageView&noscript=1"/>
</noscript>
@endif

<!-- Hotjar Tracking Code -->
@if (!empty(config('settings.hotjar')))
<script>
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:{{config('settings.hotjar')}},hjsv:6};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
</script>
@endif



@if (!empty(config('settings.analytics')))
<script async src="https://www.googletagmanager.com/gtag/js?id={{config('settings.analytics')}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', "{{config('settings.analytics')}}");
</script>
@endif
@if (!empty(config('settings.intercom')) && !empty(config('settings.intercom_key')))
@if(Auth::check())
@php ($hash_hmac = hash_hmac('sha256', Auth::user()->id, config('settings.intercom_key')))
<script>
window.intercomSettings = {
app_id: "{{config('settings.intercom')}}",
user_hash: "{{$hash_hmac}}",
user_id: "{{Auth::user()->id}}",
name: "{{Auth::user()->name}}",
email: "{{Auth::user()->email}}",
created_at: "{{strtotime(Auth::user()->created_at)}}",
avatar: '{"type":"avatar", "image_url": "{{Auth::user()->gravatar()}}"}',
custom_launcher_selector:'.btn-intercom'
};
</script>
@elseif(isset($invitedUser) && $invitedUser->invite != null)
@php ($hash_hmac = hash_hmac('sha256', $invitedUser->id, config('settings.intercom_key')))
<script>
window.intercomSettings = {
app_id: "{{config('settings.intercom')}}",
user_hash: "{{$hash_hmac}}",
user_id: "{{$invitedUser->id}}",
name: "{{$invitedUser->name}}",
email: "{{$invitedUser->email}}",
created_at: "{{strtotime($invitedUser->created_at)}}",
avatar: '{"type":"avatar", "image_url": "{{$invitedUser->gravatar()}}"}',
custom_launcher_selector:'.btn-intercom'
};
</script>
@else
<script>
window.intercomSettings = {app_id: "{{config('settings.intercom')}}"};
</script>
@endif
<script>
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/qffjq6ts';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();
</script>
@endif
@endif

View File

@ -0,0 +1,131 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<link rel="manifest" href="/manifest.json">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=rMBWbbb2wK">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=rMBWbbb2wK">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=rMBWbbb2wK">
<link rel="manifest" href="/site.webmanifest?v=rMBWbbb2wK">
<link rel="mask-icon" href="/safari-pinned-tab.svg?v=rMBWbbb2wK" color="#5bbad5">
<link rel="shortcut icon" href="/favicon.ico?v=rMBWbbb2wK">
<meta name="msapplication-TileColor" content="#f49c35">
<meta name="theme-color" content="#ffffff">

@if (\Route::currentRouteName() == 'content' and isset($list))
<title>{{removeHtmlTags(showListTitle($list, $filters))}}</title>
<!-- Para colocar title do SEO exemplo: $listModel->seo_title -->
<meta name="description" content="Finden Sie hier Ihren Job in der Region {{ $list->name }} und bewerben Sie sich ohne Registrierung bei Top-Arbeitgebern.">
<meta property="og:description" content="Finden Sie hier Ihren Job in der Region {{ $list->name }} und bewerben Sie sich ohne Registrierung bei Top-Arbeitgebern.">
<meta property="og:type" content="website">
<meta property="og:title" content="Aktuelle Stellenangebote in {{ $list->name }}">
<meta property="og:site_name" content="{{ config('settings.name') }}">
<meta property="og:url" content="{{ \Request::url() }}">
@if ($list->image)
<meta property="og:image" content="{{ asset('uploads/lists/' . $list->image) }}">
@else
<meta property="og:image" content="{{ asset('uploads/' . config('settings.image')) }}">
@endif

<link rel="canonical" href="{{url('/') .'/'. $list->slug }}" />



@elseif (\Route::currentRouteName() == 'author.get' and isset($author))
<title>Offene Jobangebote bei {{ $author->name }}</title>
<meta name="description" content="Finden Sie hier Ihren Job bei {{ $author->name }} und bewerben Sie sich direkt online">
<meta property="og:description" content="Finden Sie hier Ihren Job bei {{ $author->name }} und bewerben Sie sich direkt online">
<meta property="og:type" content="website">
<meta property="og:title" content="Offene Jobangebote bei {{ $author->name }}">
<meta property="og:site_name" content="{{ config('settings.name') }}">
<meta property="og:url" content="{{ \Request::url() }}">
<meta property="og:image" content="{{ $author->gravatar() }}?s=120&d=identicon&r=PG">
@elseif (Route::currentRouteName() == 'content' and isset($content))
<title>{{ $content->title }}</title>
<!-- Para colocar title do SEO exemplo: $nach->seo_title -->
@isset($content->data_fields['stellenbeschreibung'])
<meta name="description" content="{!! \Str::limit(strip_tags($content->data_fields['stellenbeschreibung']), 285, ' ...') !!}">
<meta property="og:description" content="{!! \Str::limit(strip_tags($content->data_fields['stellenbeschreibung']), 285, ' ...') !!}">
@endisset
<meta property="og:type" content="article">
<meta property="article:author" content="{{ $content->user->name }}">
<meta property="article:published_time" content="{{ $content->created_at }}">
<meta property="og:title" content="Stellenangebot: {{ $content->title}}">
<meta property="og:site_name" content="{{ config('settings.name') }}">
<meta property="og:url" content="{{ \Request::url() }}">
@if ($content->image)
<meta property="og:image" content="{{ asset('uploads/' . $content->image) }}">
@else
<meta property="og:image" content="{{ $content->user->gravatar() }}">
@endif
@if(App::environment('production'))
<?php
$employmentType = "";
if(isset($content->data_fields['beschaftigungsart'])){
if ($content->data_fields['beschaftigungsart'] == 'Praktikum') {
$employmentType = "INTERN";
}
if ($content->data_fields['beschaftigungsart'] == 'Vollzeit') {
$employmentType = "FULL_TIME";
}
if ($content->data_fields['beschaftigungsart'] == 'Teilzeit') {
$employmentType = "PART_TIME";
}
if ($content->data_fields['beschaftigungsart'] == 'Ausbildung') {
$employmentType = "INTERN";
}
}
function escapeJsonString($value)
{
$escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
$replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
$result = str_replace($escapers, $replacements, $value);
return $result;
}
?>
@isset ($content->data_fields['arbeitsort']['postalCode'])
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": "{{ $content->title }}",
"description": "{!! escapeJsonString($content->data_fields['stellenbeschreibung']) !!}",
"datePosted": "{{ $content->updated_at->format('Y-m-d') }}",
"validThrough": "{{ $content->updated_at->addDays(90)->toIso8601String() }}",
"employmentType": "{{ $employmentType }}",
"hiringOrganization": {
"@type": "Organization",
"name": "{{ $content->user->name }}",
"sameAs": "{{ isset($content->user->social_networks['site']) ? $content->user->social_networks['site'] : '' }}",
"logo": "{{ $content->user->gravatar() }}?s=120&d=identicon&r=PG"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "{{ $content->data_fields['arbeitsort']['streetAddress'] }}",
"addressLocality": "{{ $content->data_fields['arbeitsort']['addressLocality'] }}",
"addressRegion": "{{ $content->data_fields['arbeitsort']['addressRegion'] }}",
"postalCode": "{{ $content->data_fields['arbeitsort']['postalCode'] }}",
"addressCountry": "{{ $content->data_fields['arbeitsort']['addressCountry'] }}"
}
}
}
</script>
@endisset
@endif
@else
<title>@yield('meta_title', '')</title>
<meta name="description" content="@yield('meta_description', \Str::limit(strip_tags(config('settings.description')), 285, ' ...'))">
<meta property="og:description" content="@yield('meta_og_description', \Str::limit(strip_tags(config('settings.description')), 285, ' ...'))">
<meta property="og:type" content="website">
<meta property="og:title" content="@yield('meta_og_title', config('settings.name'))">
<meta property="og:site_name" content="@yield('meta_og_site_name', config('settings.name'))">
<meta property="og:url" content="{{ \Request::url() }}">
<meta property="og:image" content="@yield('meta_og_image', asset('uploads/' . config('settings.image')))">
<link rel="canonical" href="{{ \Request::url() }}" />
@endif

@if (!empty(config('settings.favicon_image')))
<link rel="apple-touch-icon" sizes="180x180" href="{{ asset('uploads/' . config('settings.favicon_image')) }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ asset('uploads/' . config('settings.favicon_image')) }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ asset('uploads/' . config('settings.favicon_image')) }}">
@endif

View File

136
content/index.blade.php Normal file
View File

@ -0,0 +1,136 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title></title>
</head>
<body>
<div id="root"></div>
<div id="container"></div>
<script type="module">
import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.121.1/build/three.module.js';
import {
OrbitControls
} from 'https://cdn.jsdelivr.net/npm/three@0.121.1/examples/jsm/controls/OrbitControls.js';
import {
GLTFLoader
} from 'https://cdn.jsdelivr.net/npm/three@0.121.1/examples/jsm/loaders/GLTFLoader.js';
import {
RGBELoader
} from 'https://cdn.jsdelivr.net/npm/three@0.121.1/examples/jsm/loaders/RGBELoader.js';

let container;
let camera, scene, renderer;
let controls;
const clock = new THREE.Clock();
var envMap;

init();
animate();

function init() {

container = document.getElementById('container');

//
scene = new THREE.Scene();
console.log(scene)

//
renderer = new THREE.WebGLRenderer({
alpha: true,
antialias: true
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.xr.enabled = true;
renderer.localClippingEnabled = true;
renderer.physicallyCorrectLights = true;
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.toneMappingExposure = 0.7;
container.appendChild(renderer.domElement);

var pmremGenerator = new THREE.PMREMGenerator(renderer);
pmremGenerator.compileEquirectangularShader();

camera = new THREE.PerspectiveCamera(55, window.innerWidth / window.innerHeight, 0.01, 20000);
camera.position.set(0, 0, 10);

//
new RGBELoader()
.setDataType(THREE.UnsignedByteType)
.setPath('../')
.load("resources/views/template/minimal-theme/files/photo_studio_01_1k.hdr", function (texture2) {
envMap = pmremGenerator.fromEquirectangular(texture2).texture;
scene.environment = envMap;
texture2.dispose();
pmremGenerator.dispose();
});

//
const loader = new GLTFLoader();
loader.setPath('../');
loader.load('resources/views/template/minimal-theme/files/room5.glb', function (gltf) {

gltf.scene.traverse(function (child) {
if (child.material) {
if (child.name == "Object_6") {
child.material.map.wrapS = THREE.RepeatWrapping;
child.material.map.wrapT = THREE.RepeatWrapping;
child.material.map.repeat.x = 10;
child.material.map.repeat.y = 10;
}
}
});

scene.add(gltf.scene);
});

//
const loader2 = new GLTFLoader();
loader2.setPath('../');
loader2.load('resources/views/template/minimal-theme/files/car.glb', function (gltf) {

gltf.scene.scale.set(30, 30, 30);
gltf.scene.position.set(10, 0, 12);

var bb = new THREE.Box3()
bb.setFromObject(gltf.scene);
bb.center(controls.target);

scene.add(gltf.scene);
});

//
controls = new OrbitControls(camera, renderer.domElement);
controls.maxPolarAngle = Math.PI * 0.495;
controls.target.set(11, 5, 12);
controls.minDistance = 0.5;
controls.maxDistance = 14;
controls.enableDamping = true; // an animation loop is required when either damping or auto-rotation are enabled
controls.dampingFactor = 0.05;
controls.update();

//
window.addEventListener('resize', onWindowResize);
}

function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}

function animate() {
renderer.setAnimationLoop(render);
}

function render(timestamp, frame) {
renderer.render(scene, camera);
controls.update();
}
</script>
</body>
</html>

16
content/master.blade.php Normal file
View File

@ -0,0 +1,16 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
@include('template.'.config('settings.template').'.content.includes.meta')
@include('template.'.config('settings.template').'.content.includes.css')
@include('template.'.config('settings.template').'.content.includes.integrations')
@yield('head')
</head>
<body>
@yield('content')
@include('template.'.config('settings.template').'.content.includes.footer')
@include('template.'.config('settings.template').'.content.includes.scripts')
@yield('scripts')
@yield('end_scripts')
</body>
</html>

View File

@ -0,0 +1 @@
Impressum

BIN
files/car.glb Normal file

Binary file not shown.

Binary file not shown.

BIN
files/room5.glb Normal file

Binary file not shown.