diff --git a/src/sigal/themes/default/templates/description.html b/src/sigal/themes/default/templates/description.html new file mode 100644 index 0000000..0323861 --- /dev/null +++ b/src/sigal/themes/default/templates/description.html @@ -0,0 +1,29 @@ +{% macro img_description(media, with_big=True) -%} + {%- if with_big and media.big -%} + Full size + {%- endif -%} + {%- if media.description -%} +
{{ media.description }} + {%- endif -%} + {%- if media.exif -%} +
+ {%- if media.exif.iso -%} + {{ media.exif.iso }} {%- endif -%} + {%- if media.exif.exposure -%} + {{ media.exif.exposure }} {%- endif -%} + {%- if media.exif.fstop -%} + {{ media.exif.fstop }} {%- endif -%} + {%- if media.exif.focal -%} + {{ media.exif.focal }} {%- endif -%} +
+ {%- if media.exif.gps -%} + {{ 'N{:.6f}'.format(media.exif.gps.lat) if media.exif.gps.lat > 0 else 'S{:.6f}'.format(-media.exif.gps.lat) }}{{ 'E{:.6f}'.format(media.exif.gps.lon) if media.exif.gps.lon > 0 else 'W{:.6f}'.format(-media.exif.gps.lon) }} + {%- endif -%} + {%- if media.exif.Make or media.exif.Model -%} + {{ media.exif.Make }} {{ media.exif.Model }} + {%- endif -%} + {%- if media.exif.datetime -%} + {{ media.exif.datetime }} + {%- endif -%} + {% endif %} +{%- endmacro %} diff --git a/src/sigal/themes/galleria/templates/album_items.html b/src/sigal/themes/galleria/templates/album_items.html index 9352462..5c63cc4 100644 --- a/src/sigal/themes/galleria/templates/album_items.html +++ b/src/sigal/themes/galleria/templates/album_items.html @@ -1,3 +1,4 @@ +{% from 'description.html' import img_description %}
Fullscreen (f) @@ -17,29 +18,6 @@ {% block late_js %} {% if album.medias %} - {% macro img_description(media) -%} - {%- if media.big -%}Full size{%- endif -%} - {# clean up tags and whitespace, including newlines, in the description #} - {%- if media.description -%}
{{ media.description }}{%- endif -%} - {%- if media.exif -%} -
- {%- if media.exif.iso -%}{{ media.exif.iso }} {%- endif -%} - {%- if media.exif.exposure -%}{{ media.exif.exposure }} {%- endif -%} - {%- if media.exif.fstop -%}{{ media.exif.fstop }} {%- endif -%} - {%- if media.exif.focal -%}{{ media.exif.focal }} {%- endif -%} -
- {%- if media.exif.gps -%} - {{ 'N{:.6f}'.format(media.exif.gps.lat) if media.exif.gps.lat > 0 else 'S{:.6f}'.format(-media.exif.gps.lat) }}{{ 'E{:.6f}'.format(media.exif.gps.lon) if media.exif.gps.lon > 0 else 'W{:.6f}'.format(-media.exif.gps.lon) }} - {%- endif -%} - {%- if media.exif.Make or media.exif.Model -%} - {{ media.exif.Make }} {{ media.exif.Model }} - {%- endif -%} - {%- if media.exif.datetime -%} - {{ media.exif.datetime }} - {%- endif -%} - {% endif %} - {%- endmacro %} - diff --git a/src/sigal/themes/photoswipe/static/app.js b/src/sigal/themes/photoswipe/static/app.js deleted file mode 100644 index de825ae..0000000 --- a/src/sigal/themes/photoswipe/static/app.js +++ /dev/null @@ -1,214 +0,0 @@ -echo.init({ - offset: 100, - throttle: 250, - unload: false -}); - -var initPhotoSwipeFromDOM = function(gallerySelector) { - - // parse slide data (url, title, size ...) from DOM elements - // (children of gallerySelector) - var parseThumbnailElements = function(el) { - var thumbElements = el.childNodes, - numNodes = thumbElements.length, - items = [], - figureEl, - linkEl, - size, - item; - - for(var i = 0; i < numNodes; i++) { - - figureEl = thumbElements[i]; //
element - - // include only element nodes - if(figureEl.nodeType !== 1) { - continue; - } - - linkEl = figureEl.children[0]; // element - - // create slide object - if (linkEl.getAttribute('data-type') == 'video') { - item = { - html: linkEl.getAttribute('data-video') - }; - } else { - size = linkEl.getAttribute('data-size').split('x'); - item = { - src: linkEl.getAttribute('href'), - w: parseInt(size[0], 10), - h: parseInt(size[1], 10) - }; - } - - if(figureEl.children.length > 1) { - //
content - item.title = figureEl.children[1].innerHTML; - } - - if(linkEl.children.length > 0) { - // thumbnail element, retrieving thumbnail url - item.msrc = linkEl.children[0].getAttribute('data-echo'); - } - - item.el = figureEl; // save link to element for getThumbBoundsFn - items.push(item); - } - - return items; - }; - - // find nearest parent element - var closest = function closest(el, fn) { - return el && ( fn(el) ? el : closest(el.parentNode, fn) ); - }; - - // triggers when user clicks on thumbnail - var onThumbnailsClick = function(e) { - e = e || window.event; - e.preventDefault ? e.preventDefault() : e.returnValue = false; - - var eTarget = e.target || e.srcElement; - - // find root element of slide - var clickedListItem = closest(eTarget, function(el) { - return (el.tagName && el.tagName.toUpperCase() === 'FIGURE'); - }); - - if(!clickedListItem) { - return; - } - - // find index of clicked item by looping through all child nodes - // alternatively, you may define index via data- attribute - var clickedGallery = clickedListItem.parentNode, - childNodes = clickedListItem.parentNode.childNodes, - numChildNodes = childNodes.length, - nodeIndex = 0, - index; - - for (var i = 0; i < numChildNodes; i++) { - if(childNodes[i].nodeType !== 1) { - continue; - } - - if(childNodes[i] === clickedListItem) { - index = nodeIndex; - break; - } - nodeIndex++; - } - - - - if(index >= 0) { - // open PhotoSwipe if valid index found - openPhotoSwipe( index, clickedGallery ); - } - return false; - }; - - // parse picture index and gallery index from URL (#&pid=1&gid=2) - var photoswipeParseHash = function() { - var hash = window.location.hash.substring(1), - params = {}; - - if(hash.length < 5) { - return params; - } - - var vars = hash.split('&'); - for (var i = 0; i < vars.length; i++) { - if(!vars[i]) { - continue; - } - var pair = vars[i].split('='); - if(pair.length < 2) { - continue; - } - params[pair[0]] = pair[1]; - } - - if(params.gid) { - params.gid = parseInt(params.gid, 10); - } - - return params; - }; - - var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { - var pswpElement = document.querySelectorAll('.pswp')[0], - gallery, - options, - items; - - items = parseThumbnailElements(galleryElement); - - // define options (if needed) - options = { - - // define gallery index (for URL) - galleryUID: galleryElement.getAttribute('data-pswp-uid'), - - getThumbBoundsFn: function(index) { - // See Options -> getThumbBoundsFn section of documentation for more info - var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail - pageYScroll = window.pageYOffset || document.documentElement.scrollTop, - rect = thumbnail.getBoundingClientRect(); - - return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; - } - - }; - - // PhotoSwipe opened from URL - if(fromURL) { - if(options.galleryPIDs) { - // parse real index when custom PIDs are used - // http://photoswipe.com/documentation/faq.html#custom-pid-in-url - for(var j = 0; j < items.length; j++) { - if(items[j].pid == index) { - options.index = j; - break; - } - } - } else { - // in URL indexes start from 1 - options.index = parseInt(index, 10) - 1; - } - } else { - options.index = parseInt(index, 10); - } - - // exit if index not found - if( isNaN(options.index) ) { - return; - } - - if(disableAnimation) { - options.showAnimationDuration = 0; - } - - // Pass data to PhotoSwipe and initialize it - gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); - gallery.init(); - }; - - // loop through all gallery elements and bind events - var galleryElements = document.querySelectorAll( gallerySelector ); - - for(var i = 0, l = galleryElements.length; i < l; i++) { - galleryElements[i].setAttribute('data-pswp-uid', i+1); - galleryElements[i].onclick = onThumbnailsClick; - } - - // Parse URL and open gallery if it contains #&pid=3&gid=1 - var hashData = photoswipeParseHash(); - if(hashData.pid && hashData.gid) { - openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); - } -}; - -// execute above function -initPhotoSwipeFromDOM('.gallery'); diff --git a/src/sigal/themes/photoswipe/static/default-skin/default-skin.css b/src/sigal/themes/photoswipe/static/default-skin/default-skin.css deleted file mode 100644 index bc42eba..0000000 --- a/src/sigal/themes/photoswipe/static/default-skin/default-skin.css +++ /dev/null @@ -1,485 +0,0 @@ -/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */ -/* - - Contents: - - 1. Buttons - 2. Share modal and links - 3. Index indicator ("1 of X" counter) - 4. Caption - 5. Loading indicator - 6. Additional styles (root element, top bar, idle state, hidden state, etc.) - -*/ -/* - - 1. Buttons - - */ -/*
',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return Yt.length}},Jt=function(e,t,n){if(!e.src||e.loadError)return e.w=e.h=0,e.initialZoomLevel=e.fitRatio=1,e.bounds=zt(),e.initialPosition=e.bounds.center,e.bounds;var i,o,a,r,l,s,u,c=!n;return c&&(e.vGap||(e.vGap={top:0,bottom:0}),x("parseVerticalMargin",e)),qt.x=t.x,qt.y=t.y-e.vGap.top-e.vGap.bottom,c&&(i=qt.x/e.w,o=qt.y/e.h,e.fitRatio=iqt.x?Math.round(qt.x-l):u.center.x,u.max.y=s>qt.y?Math.round(qt.y-s)+r.vGap.top:u.center.y,u.min.x=l>qt.x?0:u.center.x,u.min.y=s>qt.y?r.vGap.top:u.center.y,c&&n===e.initialZoomLevel&&(e.initialPosition=e.bounds.center),e.bounds):void 0},Qt=function(e,t,n){var i,o,a,r;e.src&&(t=t||e.container.lastChild,i=n?e.w:Math.round(e.w*e.fitRatio),o=n?e.h:Math.round(e.h*e.fitRatio),t.naturalHeight&&t.naturalWidth&&(o<(a=i*(t.naturalHeight/t.naturalWidth))?(r=o*(t.naturalWidth/t.naturalHeight),t.style.marginLeft=(i-r)/2+"px",i=r):(t.style.marginTop=(o-a)/2+"px",o=a)),e.placeholder&&!e.loaded&&(e.placeholder.style.width=i+"px",e.placeholder.style.height=o+"px"),t.style.width=i+"px",t.style.height=o+"px")};o("Controller",{publicMethods:{lazyLoadItem:function(e){e=s(e);var t=Xt(e);t&&(!t.loaded&&!t.loading||ee)&&(x("gettingData",e,t),t.src&&Nt(t))},initController:function(){f.extend(y,jt,!0),h.items=Yt=e,Xt=h.getItemAt,Vt=y.getNumItemsFn,y.loop,Vt()<3&&(y.loop=!1),a("beforeChange",function(e){for(var t=y.preload,n=null===e||0<=e,i=Math.min(t[0],Vt()),o=Math.min(t[1],Vt()),a=1;a<=(n?o:i);a++)h.lazyLoadItem(Y+a);for(a=1;a<=(n?i:o);a++)h.lazyLoadItem(Y-a)}),a("initialLayout",function(){h.currItem.initialLayout=y.getThumbBoundsFn&&y.getThumbBoundsFn(Y)}),a("mainScrollAnimComplete",Wt),a("initialZoomInEnd",Wt),a("destroy",function(){for(var e,t=0;t=Pe.max.x&&n<=Pe.min.y&&n>=Pe.max.y)&&e.preventDefault(),h.panTo(t,n)},toggleDesktopZoom:function(e){e=e||{x:Ge.x/2+Ve.x,y:Ge.y/2+Ve.y};var t=y.getDoubleTapZoom(!0,h.currItem),n=q===t;h.mouseZoomedIn=!n,h.zoomTo(n?h.currItem.initialZoomLevel:t,e,333),f[(n?"remove":"add")+"Class"](m,"pswp--zoomed-in")}}});function an(){return gn.hash.substring(1)}function rn(){sn&&clearTimeout(sn),cn&&clearTimeout(cn)}function ln(){var e=an(),t={};if(e.length<5)return t;var n,i=e.split("&");for(a=0;a - - - + {% endblock extra_head %} {% block content %} {% include 'download_zip.html' %} {% include 'map.html' %} -