master
Ondřej Hruška 5 years ago
commit 57f30c4b5f
Signed by: MightyPork
GPG Key ID: 2C5FD5035250423D
  1. 3
      .gitignore
  2. 177
      Cargo.lock
  3. 9
      Cargo.toml
  4. 136
      src/main.rs
  5. 1
      web/.gitignore
  6. 82
      web/assets/style.css
  7. BIN
      web/data/2018-09-19/dgs - 1 sep 19.jpg
  8. BIN
      web/data/2018-09-19/dgs - 2 sep 19.jpg
  9. 4
      web/data/2018-09-19/note.txt
  10. BIN
      web/data/2018-09-26/dgs - 3 sep 26.jpg
  11. BIN
      web/data/2018-09-26/dgs - 4 sep 27.jpg
  12. 1
      web/data/2018-09-26/note.txt
  13. BIN
      web/data/2018-09-30/dgs - 5 sep 30.jpg
  14. BIN
      web/data/2018-09-30/dgs - 6 sep 30.jpg
  15. BIN
      web/data/2018-09-30/dgs - 7 sep 30.jpg
  16. BIN
      web/data/2018-09-30/dgs - 8 sep 30.jpg
  17. 1
      web/data/2018-09-30/node.txt
  18. BIN
      web/data/2018-10-04/dgs - 9 oct 4.jpg
  19. 1
      web/data/2018-10-04/note.txt
  20. BIN
      web/data/2018-10-09/dgs - 10 oct 9.jpg
  21. BIN
      web/data/2018-10-09/dgs - 11 oct 9.jpg
  22. 1
      web/data/2018-10-09/note.txt
  23. BIN
      web/data/2018-10-15/dgs - 12 oct 15.jpg
  24. 1
      web/data/2018-10-15/note.txt
  25. BIN
      web/data/2018-10-20/dgs - 13 oct 20.jpg
  26. 1
      web/data/2018-10-20/note.txt
  27. BIN
      web/data/2018-10-24/dgs - 14 oct 24.jpg
  28. BIN
      web/data/2018-10-30/dgs - 15 oct 30.jpg
  29. BIN
      web/data/2018-10-30/dgs - 16 oct 30.jpg
  30. 1
      web/data/2018-10-30/note.txt
  31. BIN
      web/data/2018-11-06/dgs - 17 nov 6.jpg
  32. 1
      web/data/2018-11-06/note.txt
  33. BIN
      web/data/2018-11-20/dgs - 18 - nov 20.jpg
  34. 1
      web/data/2018-11-20/note.txt
  35. 2
      web/data/2018-12-28/note.txt
  36. BIN
      web/data/2018-12-28/pleroma - 2018-12-28.jpg
  37. 1
      web/data/2019-01-02/note.txt
  38. BIN
      web/data/2019-01-02/pleroma - 2019-01-02.jpg
  39. 1
      web/data/2019-01-06/note.txt
  40. BIN
      web/data/2019-01-06/pleroma - 2019-01-06.jpg
  41. 1
      web/data/2019-01-08/note.txt
  42. BIN
      web/data/2019-01-08/pleroma - 2019-01-08.jpg
  43. BIN
      web/data/2019-01-08/pleroma - 2019-01-09.jpg
  44. 13
      web/data/2019-01-10/note.txt
  45. BIN
      web/data/2019-01-10/pleroma - 2019-01-10 a.jpg
  46. BIN
      web/data/2019-01-10/pleroma - 2019-01-10 b.jpg
  47. 1
      web/data/2019-01-11/note.txt
  48. BIN
      web/data/2019-01-11/pleroma - 2019-01-11 a.jpg
  49. BIN
      web/data/2019-01-11/pleroma - 2019-01-11 b.jpg
  50. 2
      web/data/2019-01-14/note.txt
  51. BIN
      web/data/2019-01-14/pleroma - 2019-01-14.jpg
  52. 3
      web/data/2019-01-19/note.txt
  53. BIN
      web/data/2019-01-19/pleroma - 2019-01-19 a.jpg
  54. BIN
      web/data/2019-01-19/pleroma - 2019-01-19 b.jpg
  55. 4
      web/templates/_thumb.html
  56. 23
      web/templates/detail.html
  57. 19
      web/templates/index.html

3
.gitignore vendored

@ -0,0 +1,3 @@
/target
**/*.rs.bk
.idea/

177
Cargo.lock generated

@ -0,0 +1,177 @@
[[package]]
name = "aho-corasick"
version = "0.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "bread"
version = "0.1.0"
dependencies = [
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"markdown 0.2.0 (git+https://github.com/johannhof/markdown.rs)",
]
[[package]]
name = "cfg-if"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "chrono"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "lazy_static"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "lazy_static"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "libc"
version = "0.2.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "markdown"
version = "0.2.0"
source = "git+https://github.com/johannhof/markdown.rs#788aa51284ef71e18bf237f91a4c7cb77de6dbaf"
dependencies = [
"lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"pipeline 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "memchr"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num-integer"
version = "0.1.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num-traits"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "pipeline"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "redox_syscall"
version = "0.1.51"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "regex"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
"memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
"thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "regex-syntax"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "thread_local"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "time"
version = "0.1.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)",
"redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ucd-util"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "utf8-ranges"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e"
"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
"checksum libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "48450664a984b25d5b479554c29cc04e3150c97aa4c01da5604a2d4ed9151476"
"checksum markdown 0.2.0 (git+https://github.com/johannhof/markdown.rs)" = "<none>"
"checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8"
"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea"
"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
"checksum pipeline 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d15b6607fa632996eb8a17c9041cb6071cb75ac057abd45dece578723ea8c7c0"
"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85"
"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7"
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0"
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"

@ -0,0 +1,9 @@
[package]
name = "bread"
version = "0.1.0"
authors = ["Ondřej Hruška <ondra@ondrovo.com>"]
edition = "2018"
[dependencies]
markdown = { git = "https://github.com/johannhof/markdown.rs" }
chrono = "0.4"

@ -0,0 +1,136 @@
use std::env;
use std::fs;
use std::fs::DirEntry;
use std::fs::File;
use std::io::prelude::*;
use std::path::{Path, PathBuf};
use chrono;
use chrono::NaiveDate;
use markdown;
use std::fs::OpenOptions;
#[derive(Debug)]
struct Bread {
path: PathBuf,
rel_path: PathBuf,
date: chrono::NaiveDate,
note: String,
images: Vec<PathBuf>,
}
impl Bread {
fn thumb_photo(&self) -> (&str, &str) {
let first_img : &PathBuf = self.images.get(0).unwrap();
let img_path = first_img.to_str().unwrap();
let img_alt = first_img.file_name().unwrap().to_str().unwrap();
(img_path, img_alt)
}
fn parse(base_dir : &PathBuf, bread_dir : &DirEntry) -> Result<Bread, std::io::Error> {
let bpath = bread_dir.path();
let mut note = String::new();
let mut note_path = bpath.join("note.txt");
// try a md one as a fallback
if !note_path.exists() {
note_path = bpath.join("note.md");
}
if note_path.exists() {
let mut note_file = File::open(note_path)?;
note_file.read_to_string(&mut note)?;
note = markdown::to_html(&note);
}
let mut bread_files: Vec<DirEntry> = fs::read_dir(&bpath)?.map(|e| e.unwrap()).collect();
bread_files.sort_by(|x, y| x.file_name().cmp(&y.file_name()));
let images = bread_files.iter().filter(|&f| {
let fname = f.file_name();
let name = fname.to_str().unwrap();
return
name.ends_with(".png") ||
name.ends_with(".jpg") ||
name.ends_with(".jpeg") ||
name.ends_with(".gif");
}).map(|x| x.path().strip_prefix(base_dir).unwrap().to_path_buf()).collect();
return Ok(Bread {
date: NaiveDate::parse_from_str(bpath.file_name().unwrap().to_str().unwrap(), "%Y-%m-%d").unwrap(),
rel_path: bpath.strip_prefix(base_dir).unwrap().to_path_buf(),
path: bpath,
note,
images
});
}
}
fn main() {
let cwd = env::current_dir().unwrap();
let web_path = Path::new(&cwd).join("web");
let data_path = web_path.join("data");
let tpl_path = web_path.join("templates");
let mut bread_dirs: Vec<DirEntry> = fs::read_dir(&data_path).unwrap().map(|e| e.unwrap()).collect();
bread_dirs.sort_by(|x, y| x.file_name().cmp(&y.file_name()));
let mut breads : Vec<Bread> = Vec::new();
for bread_dir in bread_dirs {
if let Ok(b) = Bread::parse(&web_path, &bread_dir) {
breads.push(b);
}
}
let mut main_tpl = String::new();
let mut thumb_tpl = String::new();
let mut detail_tpl = String::new();
File::open(tpl_path.join("index.html")).unwrap().read_to_string(&mut main_tpl).unwrap();
File::open(tpl_path.join("_thumb.html")).unwrap().read_to_string(&mut thumb_tpl).unwrap();
File::open(tpl_path.join("detail.html")).unwrap().read_to_string(&mut detail_tpl).unwrap();
let mut thumbs = String::new();
for bread in &breads {
let date = bread.date.format("%Y/%m/%d").to_string();
let detail_file = bread.date.format("%Y-%m-%d.html").to_string();
let (img_path, img_alt) = bread.thumb_photo();
let thumb = thumb_tpl
.replace("{detail_url}", &detail_file)
.replace("{img_src}", &img_path)
.replace("{img_alt}", &img_alt)
.replace("{title}", &date);
thumbs.push_str(&thumb);
{
let detail = detail_tpl
.replace("{title}", &date)
.replace("{note}", if bread.note.is_empty() { "<i>There's no note about this bread.</i>" } else { &bread.note });
let mut pics = String::new();
for img in &bread.images {
pics.push_str(&"<a href=\"{src}\"><img src=\"{src}\"><a/>".replace("{src}", img.to_str().unwrap()))
}
let detail = detail.replace("{images}", &pics);
let mut f = OpenOptions::new().write(true).truncate(true).create(true).open(web_path.join(detail_file)).unwrap();
f.write(detail.as_bytes()).unwrap();
}
}
// TODO generate a RSS feed
let main = main_tpl.replace("{breads}", &thumbs);
{
let mut f = OpenOptions::new().write(true).truncate(true).create(true).open(web_path.join("index.html")).unwrap();
f.write(main.as_bytes()).unwrap();
}
}

1
web/.gitignore vendored

@ -0,0 +1 @@
./*.html

@ -0,0 +1,82 @@
html, body {
font-family: "Helvetica Neue", "DejaVu Sans", "Noto Sans", Helvetica, Arial, sans-serif;
background: #404040;
color: white;
}
h1 {
text-align: center;
}
.MainGallery {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: center;
align-items: center;
}
.BreadThumb {
margin: 10px;
cursor: pointer;
}
.BreadThumb img {
max-height: 300px;
box-shadow: 0 0 5px black;
border-radius: 5px;
}
.BreadThumb header {
padding-bottom: 5px;
font-weight: bold;
padding-left: 3px;
}
a {
text-decoration: none;
color: white;
}
.BreadDetail {
}
.BreadDetail .note {
display: block;
margin: 0 auto 10px;
max-width: 800px;
padding: 10px;
border-left: 6px solid #676767;
background: rgba(29, 29, 29, 0.25);
}
.BreadDetail .note a {
color: #9bd6fc;
text-decoration: underline;
}
.BreadDetail .note p:first-child {
margin-top: 0;
}
.BreadDetail .note p:last-child {
margin-bottom: 0;
}
.BreadDetail .images {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: center;
align-items: center;
}
.BreadDetail .images img {
margin: 10px;
max-height: 500px;
box-shadow: 0 0 5px black;
border-radius: 5px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

@ -0,0 +1,4 @@
This was my first bread ever.
I didn't have a sourdough starter yet, so it used store-bought yeast.
It looked okay, tasted mediocre.

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

@ -0,0 +1 @@
My first sourdough bread. I added coriander seeds to it. Pretty good

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

@ -0,0 +1 @@
nice crust, but it had huge holes in it. idk why

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

@ -0,0 +1 @@
Tried cutting the dough blob before baking, like I saw in some tutorial. I think I overdid it a bit

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

@ -0,0 +1 @@
a bit flat, but tasty

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

@ -0,0 +1 @@
I made the dough too runny–too much water–so it spilled over the whole baking form. That's why it's round. I dont remember what it tasted like, probably average

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

@ -0,0 +1 @@
this came out a bit more "rustic" than usual. the cracked crust looks nice, but it makes slicing difficult

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

@ -0,0 +1 @@
Experimenting with chia seeds. Tasted okay, but a lot of the seeds didn't stick to the bread. Maybe I should've put them in water for a bit first.. they get all slimy in water, might stick better

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

@ -0,0 +1 @@
cracked crust again

@ -0,0 +1,2 @@
I didn't bake any bread for almost a month and the starter culture went bad. This bread didn't rise at all and was super sour.
I threw the whole thing out and refreshed the starter for about a week.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@ -0,0 +1 @@
First bread with the renewed starter culture. Didn't rise much, but tasted okay.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

@ -0,0 +1 @@
that's more like it

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

@ -0,0 +1 @@
trying a new recipe - I may have finally found the right ratio of rye vs wheat flour. It's quite simple - 1:1. Baked with 200g of each and one spoon of salt. Note the starter is rye only, so it counts into the rye amount.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

@ -0,0 +1,13 @@
Trying to bake a baguette with a recipe I got from Dashie.
It tasted okay, but I'll stick with bread.
the weird shape is due to limited baking space - I baked it (like all the other breads) in a [Remoska](http://remoska.cz/).
here's the recipe:
- 340ml water ~25°C
- 2 tablespoon of oil (used sunflower one)
- 2 coffee spoons of salt
- 4 coffee spoon of sugar
- 560gr of T55 type flour
- 5g of *instant* yeast (bought in a bunch of small bags)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

@ -0,0 +1 @@
this one was very good

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

@ -0,0 +1,2 @@
nice texture, not cracked at all. this is because I added some water into the baking form,
so it made steam. like you're supposed to.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

@ -0,0 +1,3 @@
made the dough too dry, so it couldn't rise properly. also didn't do the steam thing. all in all a disaster
but it tasted okay regardless

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

@ -0,0 +1,4 @@
<section class="BreadThumb" onclick="location.href='{detail_url}'">
<header><a href="{detail_url}">{title}</a></header>
<img src="{img_src}" alt="{img_alt}">
</section>

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Breads</title>
<link rel="stylesheet" href="assets/style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="apple-mobile-web-app-capable" content="yes">
</head>
<body>
<h1>{title}</h1>
<section class="BreadDetail">
<div class="note">{note}</div>
<div class="images">
{images}
</div>
</section>
</body>
</html>

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Breads</title>
<link rel="stylesheet" href="assets/style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="apple-mobile-web-app-capable" content="yes">
</head>
<body>
<h1>Piggo's Bread Gallery</h1>
<div class="MainGallery">
{breads}
</div>
</body>
</html>
Loading…
Cancel
Save