R4THF7FOB3LE7JE7DMA5UL6PJIYZMNUWH6TLUKDHNB2X47V4MAEQC L3PX32UXE2SC4JK3VXLL654DHBZGVXSBLZRQIGUIB4RIXEVHU5IQC QX7XVNQYOTBDULUCLFRGSATHL7KWBSEV6QWNFY353S7ZIR6UGJWQC SXSLASK6UE4R24JBPAHVXH7IT4QVFU76T2ASPDIPI7HYKPF6M46QC NLSNNB46NE4J26V72TP27OHEZFUFG5REZ5N72FDWDNB5K4TAZQIAC UW4WSPWD7TVQWURMTLRNW6LKVFLUVQT7NBUP5A4WMAIVHSLUPH7AC MCPXLE6LIQRLQA2OBQSVIH4O3HAEZZWKPQMEDERPBHN6IVOAVXVAC TYCBCSGHUAHVPEH5E3LW7KURDC5W4CZ73WSBVRTOWTBSKUNPATUQC EUMM2RHPFO5XQ6WMZO7PPRQK6A5WVOUTSPP4FSEP4EQWBXJYZN4QC R6Y5EKVY5CYGP3RONJ6MKTUBHU4QDHALEYPEPQN25LTACKIGBDVAC EZHOZLJCJNWS7KMYAFTMVOL54XDQNZQJ4O6E6OKWCBXPHDOMATVQC A4YDN3ZM5CNM43BMK4BAEB6I2GVQQZUKBCZYMYCRVZSS6EXRY3VAC TW5LVJJLFOTPD7UWZ42ZAW6OCAAQ6FUWIZT42R4W7CPFVXMGIG7QC }.menubar.scrolled {background-color: @card-background-color;position: fixed;width: 100%;left: 0;right: 0;top: 0;margin-top: -130px;padding-top: 0 !important;padding-bottom: 0 !important;-webkit-box-shadow: 0 4px 15px -5px rgba(0, 0, 0, 0.1);box-shadow: 0 4px 15px -5px rgba(0, 0, 0, 0.1);
.menubar.scrolled.awake {margin-top: 0px;-webkit-transition: .3s all ease-out;-o-transition: .3s all ease-out;transition: .3s all ease-out;}.menubar.scrolled.sleep {-webkit-transition: .3s all ease-out;-o-transition: .3s all ease-out;transition: .3s all ease-out;}#mainbox {display: none;}.closebtn {display: none;}.mobile-header {display: none;}
.mobile-header {position: absolute;top: 12px;left: 0;display: block;width: 100%;text-align: center;color: @fontcolor;font-size: 1.25em;font-weight: 400;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;
.page-teaser-desc h2,.page-header .home,.page-albumtitle {font-size: 2.0em;
#menu {position: fixed !important;top: 0px !important;left: 0px !important;height: 100%;width: 0px;padding: 8px 0 0 32px;margin: 0;background-color: @card-background-color;padding-top: 100px;overflow-x: hidden;transition: all .5s;z-index: 1500;display: none;text-align: left;box-shadow: @menubar-box-shadow;}a.menubar-item {padding: 8px 0 8px 0;text-decoration: none;font-size: 20px;color: #999;display: block;text-align: left;left: 32px;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;border: none;line-height: 2em;}#menu a:hover {border: none;}#menu .closebtn {position: absolute;top: 0px;right: 4px;font-size: 36px;padding: 8px;margin: 0;display: inline-block;color: @fontcolor;}span.active,span.desktop {display: none;}.page-teaser-desc h2,.page-header .home,.page-albumtitle {font-size: 2.0em;}
}
.megamenu {position: fixed;top: 0;left: 0;background-color: #fafafa;height: 100%;width: 420px;overflow: scroll;z-index: 5000;display: none;box-shadow: 0 12px 0 0 rgba(0, 0, 0, .35)}#megaitems {padding-top: 20px;}.megamenu-title {padding-left: 4px;padding-top: 18px;line-height: 2em;font-size: 1.2em;font-weight: 400;}.megamenu #albums {margin: 1em 0 0 40px;}.megamenu .card {width: 154px;height: 132px;}.megamenu .card-photo {width: 100%;height: 96px;}.megamenu #albums .card-info h3 {font-size: 0.9em;text-align: center;}.megamenu #albums .card-info .summary,.megamenu #albums .card-info .date {display: none;}.menu-close {position: relative;top: 3px;border: 0;width: 44px;background-color: transparent;font-size: 1.4em;}.menu-close:hover {color: @hovercolor;cursor: pointer;}
{{#each breadcrumbs~}}<a class="menubar-item" href="{{relative url}}">{{#compare this.title '==' 'Home'}}{{@root.gallery.settings.tabHome}}{{else}}{{this.title}}{{/compare}}</a><span class="desktop"> </span>{{~/each~}}<span class="menubar-item active">{{album.title}}</span><a href="#" class="closebtn" onclick="closeFunction()">×</a>
<a class="avatar-link" href="{{album.files.0.meta.exif.DocumentName}} title="{{album.files.0.meta.exif.DocumentName}}"><img src="public/assets/{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.DocumentName}}"></img>
<a class="avatar-link" href="{{album.files.0.meta.exif.DocumentName}}" title="{{album.files.0.meta.exif.DocumentName}}"><img src="{{@root.gallery.settings.assets}}{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.DocumentName}}"></img>
<img src="public/assets/{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.Artist}}"></img>
<img src="{{@root.gallery.settings.assets}}{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.Artist}}"></img>
<a class="avatar-link" href="{{album.files.0.meta.exif.DocumentName}} title="{{album.files.0.meta.exif.DocumentName}}"><img src="public/assets/{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.DocumentName}}"></img>
<a class="avatar-link" href="{{album.files.0.meta.exif.DocumentName}}" title="{{album.files.0.meta.exif.DocumentName}}"><img src="{{@root.gallery.settings.assets}}{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.DocumentName}}"></img>
<img src="public/assets/{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.Artist}}"></img>
<img src="{{@root.gallery.settings.assets}}{{album.files.0.meta.exif.Copyright}}" class="avatar-small" alt="" title="{{album.files.0.meta.exif.Artist}}"></img>
{{> galleryHeader}}
{{> galleryHeader}}<aside id="gallery-overview" class="megamenu">{{#if @root.gallery.settings.menutitle}}<h2 class="megamenu-title"><button class="menu-close icon-arrow-left"></button>{{@root.gallery.settings.tabHome}} | {{@root.gallery.settings.menutitle}}</h2>{{/if}}<div id="megaitems"></div><div class="space3em"> </div></aside>
/** get the navigation menu for the current gallery*/"use strict";var results = [];/*** @call foldertree album 'navi.json'* foldertree album gallery.settings.navigation*/module.exports = (jsonObj, filename) => {const fs = require('fs');// console.log(jsonObj)albumdata(jsonObj.albums);if (results && results.length) {var jsonContent = JSON.stringify(results, null, 4);fs.writeFile(filename, jsonContent, 'utf8', function(err) {if (err) {console.log("An error occured while writing JSON Object to File " + filename);return console.log(err);}});}}/*** get all album data* @param {*} data*/function albumdata(data) {data.forEach(function(obj) {var d = {};d.title = obj.title;d.basename = obj.basename;d.url = obj.url;d.image = obj.files[0].output.thumbnail.path;d.summary = obj.summary;d.depth = obj.depth;results.push(d);if (obj.albums && obj.albums.length > 0) {albumdata(obj.albums);}})}
function openFunction(){document.getElementById("menu").style.width="300px";$("#menu").toggle();}function closeFunction(){document.getElementById("menu").style.width="0px";$("#menu").toggle();document.getElementById("mainbox").innerHTML="☰";}
//open sidebar with album teasersfunction handleMegaItems(){$('.shimlayer').toggle()$('.megamenu').fadeToggle( "slow", "linear" );if ( $( "#megaitems" ).data('loaded')) return;$('#megaitems').load("index.html #albums").fadeIn('slow');$('#megaitems').data('loaded', '1');}$('.menubutton').on('click', function(event){event.preventDefault();handleMegaItems();});$('.megamenu-title').on('click', function(event){event.preventDefault();handleMegaItems();});
{"input": "/Users/petsie1612/ips_apps/webfotos/tmp2","output": "./fbtemp2","title": "Fotobuch Peter Siebler","include-raw-photos": false,"photo-quality": 90,"thumb-size": 360,"large-size": 1200,"embed-exif": true,"sort-albums-by": "title","sort-albums-direction": "desc","theme-path": "/Users/petsie1612/ips_apps/webfotos/theme-cards-flow/theme","cleanup": true,"footer": "<span>Test Fotopalbum</span>","usage-stats": false,"settings": "/Users/petsie1612/ips_apps/webfotos/tmp2-cfg.json","_log": "debug"}
{"author": "Peter Siebler","logo": "public/assets/icons/apple-touch-icon.png","application": "tumbsUp Fotobook","menutitle": "Meine Alben","appVersion": "2.1.0","assets": "public/assets/","tabHome": "Fotobuch","albumPrefix": "Album","albumsPrefix": "Alben","albumCardTitle": "Öffne Album ","copyright": "2019 Peter Siebler. All rights reserved.","navigation": "navi/fotobuch.json"}
```
##Features- Layout with cards (gallery, album)- Flow Layout for album fotos- Modified thumbsup: add Application settings.- Album cover with text for gallery- & Album pages- Cover Text is based on EXIF Data- Sidemenu to select the albums