diff options
author | Chen Zhe <chenzhesg@gmail.com> | 2020-02-16 19:44:23 +0300 |
---|---|---|
committer | Chen Zhe <chenzhesg@gmail.com> | 2020-02-16 19:44:23 +0300 |
commit | 3e446245d1c8da2c7a83b048efc9fa56bf6024fa (patch) | |
tree | f9157081ccd6c4fcc84b97507448bc67e624305e | |
parent | 8336d19f1e5752eef38919cfb4683a72780137d0 (diff) |
bug fixes and add demos
36 files changed, 132 insertions, 505 deletions
@@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 [Pavel Kanyshev](https://github.com/aerohub) +Copyright (c) 2020 [Chen Zhe](https://github.com/chen-zhe) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -1,24 +1,24 @@ -# Hugrid +# Photo Grid -Hugrid (Hugo+grid) is a simple grid theme for Hugo. It's a kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on. +Specifically adapted to photogragh display, this responsive grid layout is # Origin -Hugrid is based on Codrops' [Thumbnail Grid with Expanding Preview](http://tympanus.net/codrops/?p=14530). +Photo Grid is based on [Hugird](http://themes.gohugo.io/theme/hugrid/). ## Demo -- [Demo on themes.gohugo.io](http://themes.gohugo.io/theme/hugrid/) -- [Original demo from Codrops](http://tympanus.net/Tutorials/ThumbnailGridExpandingPreview/) +- [My own photo gallery](https://chen-zhe.github.io/portfolio/) ## Features - Responsive design -- Google Analytics +- Easy photo management with automatic sorting, thumbnail creation and EXIF info extraction +- Full lazy loading for maximum bandwidth savings ## Screenshot -![Hugrid screenshot](https://raw.githubusercontent.com/aerohub/hugrid/master/images/screenshot.png) +![Hugrid screenshot](https://github.com/chen-zhe/photo-grid/master/images/screenshot.png) ## Contents @@ -26,7 +26,7 @@ Hugrid is based on Codrops' [Thumbnail Grid with Expanding Preview](http://tympa - [Installation](#installation) - [Getting started](#getting-started) - [The config file](#the-config-file) - - [Data file](#data-file) + - [Photo Management](#photo-management) - [Nearly finished](#nearly-finished) - [Contributing](#contributing) - [License](#license) @@ -37,10 +37,11 @@ Hugrid is based on Codrops' [Thumbnail Grid with Expanding Preview](http://tympa Inside the folder of your new Hugo site run: +```sh $ mkdir themes $ cd themes - $ git clone https://github.com/aerohub/hugrid - + $ git clone https://github.com/chen-zhe/photo-grid +``` For more information read the official [setup guide](//gohugo.io/overview/installing/) of Hugo. @@ -51,36 +52,38 @@ After installing the theme successfully it requires a just a few more steps to g ### The config file -Take a look inside the [`exampleSite`](//github.com/aerohub/hugrid/tree/master/exampleSite) folder of this theme. You'll find a file called [`config.toml`](//github.com/aerohub/hugrid/blob/master/exampleSite/config.toml). To use it, copy the [`config.toml`](//github.com/aerohub/hugrid/blob/master/exampleSite/config.toml) in the root folder of your Hugo site. Feel free to change the strings in this theme. +Take a look inside the [`exampleSite`](https://github.com/chen-zhe/photo-grid/tree/master/exampleSite) folder of this theme. You'll find a file called [`config.toml`](https://github.com/chen-zhe/photo-grid/blob/master/exampleSite/config.toml). To use it, copy the `config.toml` in the root folder of your Hugo site. Feel free to change the strings in this theme. + +### Photo Management -### Data file +All photos are stored in the [`photo`](https://github.com/chen-zhe/photo-grid/tree/master/exampleSite/content/photo) folder under `content`. You can make multiple directories under it and the theme will enumerate all photos within in order. Within each subfolder, e.g. [`1-trip1`](https://github.com/chen-zhe/photo-grid/tree/master/exampleSite/content/photo/1-trip1), you can put all relevant photos in it and then copy over the `index.md` file. -Take a look inside the [`exampleSite/data`](//github.com/aerohub/hugrid/tree/master/exampleSite/data) folder of this theme. You'll find a file called [`items.toml`](//github.com/aerohub/hugrid/blob/master/exampleSite/data/items.toml). To use it, copy the [`exampleSite/data`](//github.com/aerohub/hugrid/tree/master/exampleSite/data) folder in the root folder of your Hugo site. Change the strings in the `items.toml` with your data. +Within `index.md` file, you can specify each photo's name, description and other properties. Take a look at the descriptions to understand what can be customized. ### Nearly finished In order to see your site in action, run Hugo's built-in local server. - $ hugo server -w + $ hugo server Now enter `localhost:1313` in the address bar of your browser. ## Contributing -Did you found a bug or got an idea for a new feature? Feel free to use the [issue tracker](//github.com/aerohub/hugrid/issues) to let me know. Or make directly a [pull request](//github.com/aerohub/hugrid/pulls). +Did you found a bug or got an idea for a new feature? Feel free to use the [issue tracker](//github.com/chen-zhe/photo-grid/issues) to let me know. Or make directly a [pull request](//github.com/chen-zhe/photo-grid/pulls). ## License -This work is licensed under the MIT License. For more information read the [License](//github.com/aerohub/hugrid/blob/master/LICENSE.md). -And there are [Original Codrops Licensing and Terms Of Use](http://tympanus.net/codrops/licensing/). +This work is licensed under the MIT License. For more information read the [License](//github.com/chen-zhe/photo-grid/blob/master/LICENSE.md). ## Annotations Thanks -- to [spf13](//github.com/spf13) for creating Hugo and the awesome community around the project -- to [digitalcraftsman](//github.com/digitalcraftsman) for creating Hugo themes and writing nice READMEs -- to Codrops for original [Thumbnail Grid with Expanding Preview](http://tympanus.net/codrops/?p=14530).
\ No newline at end of file +- to [spf13](https://github.com/spf13) for creating Hugo and the awesome community around the project +- to [digitalcraftsman](https://github.com/digitalcraftsman) for creating Hugo themes and writing nice READMEs +- to Codrops for original [Thumbnail Grid with Expanding Preview](http://tympanus.net/codrops/?p=14530). +- to Pavel for porting over the aforementioned theme to Hugo as [Hugrid](https://github.com/aerohub/hugrid)
\ No newline at end of file diff --git a/exampleSite/config.toml b/exampleSite/config.toml index dc1c51f..8b30451 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -1,32 +1,23 @@ # Site settings baseurl = "http://example.org/" languageCode = "en-us" -title = "Hugrid - Grid Theme For Hugo" -theme = "hugrid" -# Enter your tracking code to enable Google Analytics -googleAnalytics = "UA-XXXXXXXX-Y" +title = "Photo Grid - Grid Gallery For Hugo" +theme = "photo-grid" -contentdir = "content" -datadir = "data" -layoutdir = "layouts" -publishdir = "public" +# Enter your tracking code to enable Google Analytics +# googleAnalytics = "UA-XXXXXXXX-Y"x [params] # Meta - title = "Hugrid - a simple grid theme for Hugo" - subtitle = "A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." - author = "Pavel Kanyshev" - description = "Hugrid - grid theme for Hugo with an expanding image preview." - keywords = "Hugo, Hugo theme, grid theme, portfolio, bookmarks, collection, contacts" + title = "Photo Grid - Grid Gallery" + subtitle = "A customized theme for showing your photography work with minimal effort and multiple customization options. Click on each image to find out more about this theme" + author = "Chen Zhe" + description = "Photo Grid - Grid Gallery For Hugo" + keywords = "Hugo, Hugo theme, grid theme, gallery" - # Body background color - bodybgcolor = "#f9f9f9" - - # Preview container button text - buttontext = "Get the theme" + # Body background and text color + bodybgcolor = "#3d3d3d" + bodytextcolor = "#f2f2f2" # Footer text - footertext = "Made by [Codrops](http://tympanus.net/codrops/2013/03/19/thumbnail-grid-with-expanding-preview/), [Hugo](http://gohugo.io) and [me](https://github.com/aerohub)" - - # add extra-css - # custom_css = ['css/extra1.css', 'css/extra2.css'] + footertext = "Made by [Codrops](http://tympanus.net/codrops/2013/03/19/thumbnail-grid-with-expanding-preview/), [Hugo](http://gohugo.io), [Pavel](https://themes.gohugo.io/hugrid/) and [me](https://chen-zhe.github.io)." diff --git a/exampleSite/content/.gitkeep b/exampleSite/content/.gitkeep deleted file mode 100644 index e69de29..0000000 --- a/exampleSite/content/.gitkeep +++ /dev/null diff --git a/exampleSite/content/photo/1-trip1/3x2_photo.png b/exampleSite/content/photo/1-trip1/3x2_photo.png Binary files differnew file mode 100644 index 0000000..10226ee --- /dev/null +++ b/exampleSite/content/photo/1-trip1/3x2_photo.png diff --git a/exampleSite/content/photo/1-trip1/3x2_with_exif.jpg b/exampleSite/content/photo/1-trip1/3x2_with_exif.jpg Binary files differnew file mode 100644 index 0000000..163405c --- /dev/null +++ b/exampleSite/content/photo/1-trip1/3x2_with_exif.jpg diff --git a/exampleSite/content/photo/1-trip1/index.md b/exampleSite/content/photo/1-trip1/index.md new file mode 100644 index 0000000..180e0a0 --- /dev/null +++ b/exampleSite/content/photo/1-trip1/index.md @@ -0,0 +1,39 @@ +--- +title: Series A + +resources: + +- src: 3x2_photo.png + name: Photo name 1 + params: + order: blue + description: Photo description. If you want to add your own link, specify button_text and button_url here. + button_text: Button text + button_url: "https://example.com" + +- src: 3x2_with_exif.jpg + name: Photo with EXIF + params: + order: 1 + description: This photo has EXIF info that is automatically extracted. Only JPG and TIFF files supports EXIF. If the automatically extracted time is incorrect, use "timestamp" field to supply your own time. + timestamp: 2020-01-01 19:45 + +- src: landscape_panorama.png + name: Panorama + params: + order: 3 + description: Use the "title" field on top of this file to specify a series name for a stylized appearance. It is hidden if "title" is unspecified. + +- src: portrait.png + name: Portrait + params: + order: 4 + description: Some description 2. + +- src: square.png + name: Square + params: + order: 5 + description: Some description 4. + +--- diff --git a/exampleSite/content/photo/1-trip1/landscape_panorama.png b/exampleSite/content/photo/1-trip1/landscape_panorama.png Binary files differnew file mode 100644 index 0000000..5cbd118 --- /dev/null +++ b/exampleSite/content/photo/1-trip1/landscape_panorama.png diff --git a/exampleSite/content/photo/1-trip1/portrait.png b/exampleSite/content/photo/1-trip1/portrait.png Binary files differnew file mode 100644 index 0000000..2d8f553 --- /dev/null +++ b/exampleSite/content/photo/1-trip1/portrait.png diff --git a/exampleSite/content/photo/1-trip1/square.png b/exampleSite/content/photo/1-trip1/square.png Binary files differnew file mode 100644 index 0000000..f7a23fd --- /dev/null +++ b/exampleSite/content/photo/1-trip1/square.png diff --git a/exampleSite/content/photo/2-trip2/index.md b/exampleSite/content/photo/2-trip2/index.md new file mode 100644 index 0000000..92c05dd --- /dev/null +++ b/exampleSite/content/photo/2-trip2/index.md @@ -0,0 +1,22 @@ +--- +resources: + +- src: landscape_panorama.png + name: Panorama + params: + order: light + description: Use the "title" field on top of this file to specify a series name for a stylized appearance. It is hidden if "title" is unspecified. + +- src: portrait.png + name: Portrait + params: + order: dark + description: You don't have to use a number for ordering. Using text is also possible. This could be helpful if you wish to arrange photos by their color scheme + +- src: square.png + name: Square + params: + order: light + description: You don't have to use a number for ordering. Using text is also possible. This could be helpful if you wish to arrange photos by their color scheme + +--- diff --git a/exampleSite/content/photo/2-trip2/landscape_panorama.png b/exampleSite/content/photo/2-trip2/landscape_panorama.png Binary files differnew file mode 100644 index 0000000..5cbd118 --- /dev/null +++ b/exampleSite/content/photo/2-trip2/landscape_panorama.png diff --git a/exampleSite/content/photo/2-trip2/portrait.png b/exampleSite/content/photo/2-trip2/portrait.png Binary files differnew file mode 100644 index 0000000..2d8f553 --- /dev/null +++ b/exampleSite/content/photo/2-trip2/portrait.png diff --git a/exampleSite/content/photo/2-trip2/square.png b/exampleSite/content/photo/2-trip2/square.png Binary files differnew file mode 100644 index 0000000..f7a23fd --- /dev/null +++ b/exampleSite/content/photo/2-trip2/square.png diff --git a/exampleSite/data/items.toml b/exampleSite/data/items.toml deleted file mode 100644 index ec3c755..0000000 --- a/exampleSite/data/items.toml +++ /dev/null @@ -1,105 +0,0 @@ -[[items]] -title = "Hugrid Theme" -image = "images/full/1.png" -thumb = "images/thumbs/1.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/2.png" -thumb = "images/thumbs/2.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/3.png" -thumb = "images/thumbs/3.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/4.png" -thumb = "images/thumbs/4.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/5.png" -thumb = "images/thumbs/5.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/3.png" -thumb = "images/thumbs/3.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/4.png" -thumb = "images/thumbs/4.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/1.png" -thumb = "images/thumbs/1.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/2.png" -thumb = "images/thumbs/2.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/3.png" -thumb = "images/thumbs/3.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/4.png" -thumb = "images/thumbs/4.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/5.png" -thumb = "images/thumbs/5.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/2.png" -thumb = "images/thumbs/2.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/3.png" -thumb = "images/thumbs/3.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid" -[[items]] -title = "Hugrid Theme" -image = "images/full/1.png" -thumb = "images/thumbs/1.png" -alt = "Hugrid Theme" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on." -url = "https://github.com/aerohub/hugrid"
\ No newline at end of file diff --git a/exampleSite/static/css/component.css b/exampleSite/static/css/component.css deleted file mode 100644 index 8f21f49..0000000 --- a/exampleSite/static/css/component.css +++ /dev/null @@ -1,195 +0,0 @@ -.og-grid { - list-style: none; - padding: 20px 0; - margin: 0 auto; - text-align: center; - width: 100%; -} - -.og-grid li { - display: inline-block; - margin: 10px 5px 0 5px; - vertical-align: top; - height: 250px; -} - -.og-grid li > a, -.og-grid li > a img { - border: none; - outline: none; - display: block; - position: relative; -} - -.og-grid li.og-expanded > a::after { - top: auto; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-bottom-color: #ddd; - border-width: 15px; - left: 50%; - margin: -20px 0 0 -15px; -} - -.og-expander { - position: absolute; - background: #ddd; - top: auto; - left: 0; - width: 100%; - margin-top: 10px; - text-align: left; - height: 0; - overflow: hidden; -} - -.og-expander-inner { - padding: 50px 30px; - height: 100%; -} - -.og-close { - position: absolute; - width: 40px; - height: 40px; - top: 20px; - right: 20px; - cursor: pointer; -} - -.og-close::before, -.og-close::after { - content: ''; - position: absolute; - width: 100%; - top: 50%; - height: 1px; - background: #888; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - transform: rotate(45deg); -} - -.og-close::after { - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.og-close:hover::before, -.og-close:hover::after { - background: #333; -} - -.og-fullimg, -.og-details { - width: 50%; - float: left; - height: 100%; - overflow: hidden; - position: relative; -} - -.og-details { - padding: 0 40px 0 20px; -} - -.og-fullimg { - text-align: center; -} - -.og-fullimg img { - display: inline-block; - max-height: 100%; - max-width: 100%; -} - -.og-details h3 { - font-weight: 300; - font-size: 52px; - padding: 40px 0 10px; - margin-bottom: 10px; -} - -.og-details p { - font-weight: 400; - font-size: 16px; - line-height: 22px; - color: #999; -} - -.og-details a { - font-weight: 700; - font-size: 16px; - color: #333; - text-transform: uppercase; - letter-spacing: 2px; - padding: 10px 20px; - border: 3px solid #333; - display: inline-block; - margin: 30px 0 0; - outline: none; -} - -.og-details a::before { - content: '\2192'; - display: inline-block; - margin-right: 10px; -} - -.og-details a:hover { - border-color: #999; - color: #999; -} - -.og-loading { - width: 20px; - height: 20px; - border-radius: 50%; - background: #ddd; - box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ccc; - position: absolute; - top: 50%; - left: 50%; - margin: -25px 0 0 -25px; - -webkit-animation: loader 0.5s infinite ease-in-out both; - -moz-animation: loader 0.5s infinite ease-in-out both; - animation: loader 0.5s infinite ease-in-out both; -} - -@-webkit-keyframes loader { - 0% { background: #ddd; } - 33% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ddd; } - 66% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ddd, -15px 30px 1px #ccc; } -} - -@-moz-keyframes loader { - 0% { background: #ddd; } - 33% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ddd; } - 66% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ddd, -15px 30px 1px #ccc; } -} - -@keyframes loader { - 0% { background: #ddd; } - 33% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ddd; } - 66% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ddd, -15px 30px 1px #ccc; } -} - -@media screen and (max-width: 830px) { - - .og-expander h3 { font-size: 32px; } - .og-expander p { font-size: 13px; } - .og-expander a { font-size: 12px; } - -} - -@media screen and (max-width: 650px) { - - .og-fullimg { display: none; } - .og-details { float: none; width: 100%; } - -}
\ No newline at end of file diff --git a/exampleSite/static/css/default.css b/exampleSite/static/css/default.css deleted file mode 100644 index e68894b..0000000 --- a/exampleSite/static/css/default.css +++ /dev/null @@ -1,80 +0,0 @@ -/* General Demo Style */ -@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700); - -html { height: 100%; } - -*, -*:after, -*:before { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; - margin: 0; -} - -/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */ -.clearfix:before, -.clearfix:after { - content: " "; - display: table; -} - -.clearfix:after { - clear: both; -} - -.clearfix { - *zoom: 1; -} - -body { - font-family: 'Lato', Calibri, Arial, sans-serif; - font-weight: 300; - font-size: 15px; - color: #333; - overflow: scroll; - overflow-x: hidden; -} - -a { - color: #555; - text-decoration: none; -} - -.container { - width: 100%; - position: relative; -} - -.container > header { - width: 90%; - max-width: 1240px; - margin: 0 auto; - position: relative; - padding: 0 30px 50px 30px; -} - -.container > header { - padding: 60px 30px 50px; - text-align: center; -} - -.container > header h1 { - font-size: 34px; - line-height: 38px; - margin: 0 auto; - font-weight: 700; - color: #333; -} - -.container > header h1 span { - display: block; - font-size: 20px; - font-weight: 300; -} - -.main > p { - text-align: center; - padding: 50px 20px; -} diff --git a/exampleSite/static/images/full/1.png b/exampleSite/static/images/full/1.png Binary files differdeleted file mode 100644 index 9decf64..0000000 --- a/exampleSite/static/images/full/1.png +++ /dev/null diff --git a/exampleSite/static/images/full/2.png b/exampleSite/static/images/full/2.png Binary files differdeleted file mode 100644 index d8dfeb6..0000000 --- a/exampleSite/static/images/full/2.png +++ /dev/null diff --git a/exampleSite/static/images/full/3.png b/exampleSite/static/images/full/3.png Binary files differdeleted file mode 100644 index 14b21c0..0000000 --- a/exampleSite/static/images/full/3.png +++ /dev/null diff --git a/exampleSite/static/images/full/4.png b/exampleSite/static/images/full/4.png Binary files differdeleted file mode 100644 index dfd50fd..0000000 --- a/exampleSite/static/images/full/4.png +++ /dev/null diff --git a/exampleSite/static/images/full/5.png b/exampleSite/static/images/full/5.png Binary files differdeleted file mode 100644 index e0760c9..0000000 --- a/exampleSite/static/images/full/5.png +++ /dev/null diff --git a/exampleSite/static/images/thumbs/1.png b/exampleSite/static/images/thumbs/1.png Binary files differdeleted file mode 100644 index d539c0a..0000000 --- a/exampleSite/static/images/thumbs/1.png +++ /dev/null diff --git a/exampleSite/static/images/thumbs/2.png b/exampleSite/static/images/thumbs/2.png Binary files differdeleted file mode 100644 index a34f4b1..0000000 --- a/exampleSite/static/images/thumbs/2.png +++ /dev/null diff --git a/exampleSite/static/images/thumbs/3.png b/exampleSite/static/images/thumbs/3.png Binary files differdeleted file mode 100644 index aafc4a0..0000000 --- a/exampleSite/static/images/thumbs/3.png +++ /dev/null diff --git a/exampleSite/static/images/thumbs/4.png b/exampleSite/static/images/thumbs/4.png Binary files differdeleted file mode 100644 index fb14b44..0000000 --- a/exampleSite/static/images/thumbs/4.png +++ /dev/null diff --git a/exampleSite/static/images/thumbs/5.png b/exampleSite/static/images/thumbs/5.png Binary files differdeleted file mode 100644 index 1964c23..0000000 --- a/exampleSite/static/images/thumbs/5.png +++ /dev/null diff --git a/exampleSite/static/js/modernizr.custom.js b/exampleSite/static/js/modernizr.custom.js deleted file mode 100644 index fb55d0f..0000000 --- a/exampleSite/static/js/modernizr.custom.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-csstransitions-shiv-cssclasses-prefixed-testprop-testallprops-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function x(a){j.cssText=a}function y(a,b){return x(prefixes.join(a+";")+(b||""))}function z(a,b){return typeof a===b}function A(a,b){return!!~(""+a).indexOf(b)}function B(a,b){for(var d in a){var e=a[d];if(!A(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:z(f,"function")?f.bind(d||b):f}return!1}function D(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+n.join(d+" ")+d).split(" ");return z(b,"string")||z(b,"undefined")?B(e,b):(e=(a+" "+o.join(d+" ")+d).split(" "),C(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m="Webkit Moz O ms",n=m.split(" "),o=m.toLowerCase().split(" "),p={},q={},r={},s=[],t=s.slice,u,v={}.hasOwnProperty,w;!z(v,"undefined")&&!z(v.call,"undefined")?w=function(a,b){return v.call(a,b)}:w=function(a,b){return b in a&&z(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=t.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(t.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(t.call(arguments)))};return e}),p.csstransitions=function(){return D("transition")};for(var E in p)w(p,E)&&(u=E.toLowerCase(),e[u]=p[E](),s.push((e[u]?"":"no-")+u));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)w(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},x(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._domPrefixes=o,e._cssomPrefixes=n,e.testProp=function(a){return B([a])},e.testAllProps=D,e.prefixed=function(a,b,c){return b?D(a,b,c):D(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+s.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file diff --git a/images/screenshot.png b/images/screenshot.png Binary files differindex 01c7a1f..0e38cab 100644 --- a/images/screenshot.png +++ b/images/screenshot.png diff --git a/images/tn.png b/images/tn.png Binary files differindex 145c3d0..ee2efce 100644 --- a/images/tn.png +++ b/images/tn.png diff --git a/layouts/index.html b/layouts/index.html index 3ddc6dd..eac86c0 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -9,14 +9,15 @@ {{ partial "header.html" . }} <div class="main"> <ul id="og-grid" class="og-grid"> - {{ range $page := sort (where .Site.RegularPages "Type" "photo") ".Dir" }} + {{ range $page := sort (where .Site.RegularPages "Type" "photo") ".File.Dir" }} {{ range $index, $image := sort ($page.Resources.ByType "image") "Params.order" }} <li> <a href="{{ if isset $image.Params "button_url" }}{{ $image.Params.button_url }}{{ else }}#{{ end }}" data-largesrc="{{ $image.RelPermalink }}" data-title="{{ $image.Name }}" data-description="{{ $image.Params.description | markdownify }}" {{ if isset $image.Params "button_text" }}data-buttontext="{{ $image.Params.button_text }}"{{ end }} data-collection="{{ $page.Title }}" - data-exif="{{- with $image.Exif -}} + data-exif="{{if in (slice "jpg" "jpeg" "tiff" "tif") $image.MediaType.SubType }} + {{- with $image.Exif -}} {{- with .Tags -}} <li>{{- if isset . "Model" }}{{ if not (hasPrefix (lower .Model) (lower .Make)) }}{{ .Make }} {{ end }}{{ .Model }} {{- else }}{{ if isset $image.Params "composite" }}{{ $image.Params.composite }} @@ -30,7 +31,8 @@ {{- with .ISOSpeedRatings }}<li>ISO {{ . }}</li>{{ end }} {{ end -}} <li>Taken at {{ if isset $image.Params "timestamp" }} {{ $image.Params.timestamp }} {{ else }}{{ .Date.Format "2006-1-2 15:04" }}{{ end }}</li> - {{ end }}"> + {{- end }} + {{- end }}"> {{ $.Scratch.Set "thumbnail" ($image.Resize "x250") }} <img class="lazy" data-src="{{ ($.Scratch.Get "thumbnail").RelPermalink }}" style="width:{{ ($.Scratch.Get "thumbnail").Width }}px;" alt="Thumbnail of {{ $image.Name }}"/> </a> diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 1446652..6b223df 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -6,7 +6,7 @@ <meta name="keywords" content="{{ with .Site.Params.keywords }}{{ . }}{{ end }}" /> <meta name="author" content="{{ with .Site.Params.author }}{{ . }}{{ end }}" /> {{ with .Site.Params.favicon }}<link rel="icon" href="{{ . }}">{{ end }} - {{ .Hugo.Generator }} + {{ hugo.Generator }} <style> body { background: {{ .Site.Params.bodybgcolor }}; diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 46394e6..227d9da 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -1,5 +1,4 @@ <header class="clearfix"> <h1>{{ with .Site.Params.title }}{{ . | markdownify }}{{ end }}</h1> <span>{{ with .Site.Params.subtitle }}{{ . | markdownify }}{{ end }}</span> - <!-- <button onclick="shuffleImg()">Surprise Me!</button> --> </header>
\ No newline at end of file diff --git a/static/css/default.css b/static/css/default.css index f8ed59e..9c21f0d 100644 --- a/static/css/default.css +++ b/static/css/default.css @@ -65,17 +65,6 @@ a { padding-bottom: 0.5em; } - -.container > header button { - background-color: rgb(116, 116, 116); - border: none; - padding: 0.2em 0.5em; - text-align: center; - text-decoration: none; - display: inline-block; - font-weight: bold; -} - .main > p { text-align: center; padding: 50px 20px; diff --git a/static/js/main.js b/static/js/main.js index a33a50e..b8f41bb 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -319,8 +319,14 @@ var Grid = (function() { this.$title.html( eldata.title ); this.$description.html( eldata.description ); - this.$exifInfo.html( eldata.exif ); - this.$collectionName.html( eldata.collectionName ); + if(eldata.exif) { + this.$exifInfo.html( eldata.exif ); + this.$exifInfo.show(); + } else this.$exifInfo.hide(); + if(eldata.collectionName) { + this.$collectionName.html( eldata.collectionName ); + this.$collectionName.show(); + } else this.$collectionName.hide(); if(eldata.buttontext) this.$href.text(eldata.buttontext); if (eldata.href && eldata.buttontext) { @@ -449,10 +455,9 @@ var Grid = (function() { // lazy loading thumbnails document.addEventListener("DOMContentLoaded", function() { - var lazyloadImages; + var lazyloadImages= document.querySelectorAll("img.lazy"); if ("IntersectionObserver" in window) { - lazyloadImages = document.querySelectorAll("img.lazy"); var imageObserver = new IntersectionObserver(function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { @@ -469,49 +474,11 @@ document.addEventListener("DOMContentLoaded", function() { lazyloadImages.forEach(function(image) { imageObserver.observe(image); }); - } else { - var lazyloadThrottleTimeout; - lazyloadImages = document.querySelectorAll("img.lazy"); - - function lazyload () { - if(lazyloadThrottleTimeout) { - clearTimeout(lazyloadThrottleTimeout); - } - - lazyloadThrottleTimeout = setTimeout(function() { - var scrollTop = window.pageYOffset; - lazyloadImages.forEach(function(img) { - if(img.offsetTop < (window.innerHeight + scrollTop)) { - img.src = img.dataset.src; - img.classList.remove('lazy'); - } - }); - if(lazyloadImages.length == 0) { - document.removeEventListener("scroll", lazyload); - window.removeEventListener("resize", lazyload); - window.removeEventListener("orientationChange", lazyload); - } - }, 20); - } - - document.addEventListener("scroll", lazyload); - window.addEventListener("resize", lazyload); - window.addEventListener("orientationChange", lazyload); - } -}) - -function shuffleImg(){ - var imgGrid = $("ul#og-grid"); - var preview = $.data( this, 'preview' ); - if( typeof preview != 'undefined' ) { - current = -1; - preview.close(); - $.removeData( this, 'preview' ); - } - imgGrid.hide(); - for (var i = imgGrid.children().length; i >= 0; i--) { - imgGrid.append(imgGrid.children()[Math.random() * i | 0]); + } else {// original code has some issue. Disable lazy loading for now + lazyloadImages.forEach(function(img) { + img.src = img.dataset.src; + img.classList.remove('lazy'); + img.style.removeProperty("width"); + }); } - Grid.updateList(); - imgGrid.show(); -}
\ No newline at end of file +})
\ No newline at end of file @@ -1,17 +1,16 @@ -name = "Hugrid" -license = "MIT License" #original Codrops Lisense is here http://tympanus.net/codrops/licensing/ -licenselink = "//github.com/aerohub/hugrid/blob/master/LICENSE.md" -description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly." -homepage = "//github.com/aerohub/hugrid" -tags = ["responsive", "grid", "portfolio", "cards", "simple", "collections", "google analytics"] -min_version = 0.15 +name = "Photo Grid" +license = "MIT License" +licenselink = "https://github.com/chen-zhe/photo-grid/blob/master/LICENSE.md" +description = "A Photography-centric responsive grid gallery with deep content management integration with Hugo. Based on Hugrid" +homepage = "https://github.com/chen-zhe/photo-grid" +tags = ["gallery", "photography", "content management", "google analytics"] +min_version = 0.59.0 [author] - name = "Pavel Kanyshev" - homepage = "//github.com/aerohub/hugrid" + name = "Chen Zhe" + homepage = "https://chen-zhe.github.io" -# If porting an existing theme [original] - name = "Codrops' Thumbnail Grid with Expanding Preview" - homepage = "http://tympanus.net/codrops/2013/03/19/thumbnail-grid-with-expanding-preview/" - repo = "//github.com/codrops/ThumbnailGridExpandingPreview"
\ No newline at end of file + name = "Hugrid" + homepage = "https://themes.gohugo.io/theme/hugrid/" + repo = "https://github.com/aerohub/hugrid"
\ No newline at end of file |