Compare commits

..

5 commits
v1.0 ... master

43 changed files with 1799 additions and 947 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
test/output/
test/__pycache__
xtemplatesold/

View file

@ -10,10 +10,9 @@ pelican-sitemap = "*"
pelican-image-process = "*"
pygments = "*"
markdown = "*"
pelican-photos = "<=1.3.0"
pelican-photos = "*"
[dev-packages]
[requires]
python_version = "3.10"
python_version = "3"

609
Pipfile.lock generated Normal file
View file

@ -0,0 +1,609 @@
{
"_meta": {
"hash": {
"sha256": "8c4a663db0f38684969701302402a1b5cd7aaf21ca0b10d04cfaee5bd031b8ef"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"anyio": {
"hashes": [
"sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a",
"sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"
],
"markers": "python_version >= '3.9'",
"version": "==4.8.0"
},
"beautifulsoup4": {
"hashes": [
"sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b",
"sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16"
],
"markers": "python_version >= '3.7'",
"version": "==4.13.3"
},
"blinker": {
"hashes": [
"sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9",
"sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"
],
"markers": "python_version >= '3.8'",
"version": "==1.7.0"
},
"docutils": {
"hashes": [
"sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f",
"sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"
],
"markers": "python_version >= '3.9'",
"version": "==0.21.2"
},
"exceptiongroup": {
"hashes": [
"sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b",
"sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"
],
"markers": "python_version < '3.11'",
"version": "==1.2.2"
},
"feedgenerator": {
"hashes": [
"sha256:93b7ce1c5a86195cafd6a8e9baf6a2a863ebd6d9905e840ce5778f73efd9a8d5",
"sha256:f075f23f28fd227f097c36b212161c6cf012e1c6caaf7ff53d5d6bb02cd42b9d"
],
"markers": "python_version >= '3.7'",
"version": "==2.1.0"
},
"idna": {
"hashes": [
"sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9",
"sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"
],
"markers": "python_version >= '3.6'",
"version": "==3.10"
},
"jinja2": {
"hashes": [
"sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb",
"sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"
],
"markers": "python_version >= '3.7'",
"version": "==3.1.5"
},
"lxml": {
"hashes": [
"sha256:016b96c58e9a4528219bb563acf1aaaa8bc5452e7651004894a973f03b84ba81",
"sha256:05123fad495a429f123307ac6d8fd6f977b71e9a0b6d9aeeb8f80c017cb17131",
"sha256:057e30d0012439bc54ca427a83d458752ccda725c1c161cc283db07bcad43cf9",
"sha256:06a20d607a86fccab2fc15a77aa445f2bdef7b49ec0520a842c5c5afd8381576",
"sha256:094b28ed8a8a072b9e9e2113a81fda668d2053f2ca9f2d202c2c8c7c2d6516b1",
"sha256:0bcfadea3cdc68e678d2b20cb16a16716887dd00a881e16f7d806c2138b8ff0c",
"sha256:0d6b2fa86becfa81f0a0271ccb9eb127ad45fb597733a77b92e8a35e53414914",
"sha256:0f2cfae0688fd01f7056a17367e3b84f37c545fb447d7282cf2c242b16262607",
"sha256:106b7b5d2977b339f1e97efe2778e2ab20e99994cbb0ec5e55771ed0795920c8",
"sha256:133f3493253a00db2c870d3740bc458ebb7d937bd0a6a4f9328373e0db305709",
"sha256:136bf638d92848a939fd8f0e06fcf92d9f2e4b57969d94faae27c55f3d85c05b",
"sha256:155e1a5693cf4b55af652f5c0f78ef36596c7f680ff3ec6eb4d7d85367259b2c",
"sha256:1637fa31ec682cd5760092adfabe86d9b718a75d43e65e211d5931809bc111e7",
"sha256:172d65f7c72a35a6879217bcdb4bb11bc88d55fb4879e7569f55616062d387c2",
"sha256:17b5d7f8acf809465086d498d62a981fa6a56d2718135bb0e4aa48c502055f5c",
"sha256:198bb4b4dd888e8390afa4f170d4fa28467a7eaf857f1952589f16cfbb67af27",
"sha256:1b6f92e35e2658a5ed51c6634ceb5ddae32053182851d8cad2a5bc102a359b33",
"sha256:1b92fe86e04f680b848fff594a908edfa72b31bfc3499ef7433790c11d4c8cd8",
"sha256:1bcc211542f7af6f2dfb705f5f8b74e865592778e6cafdfd19c792c244ccce19",
"sha256:1c93ed3c998ea8472be98fb55aed65b5198740bfceaec07b2eba551e55b7b9ae",
"sha256:203b1d3eaebd34277be06a3eb880050f18a4e4d60861efba4fb946e31071a295",
"sha256:22ec2b3c191f43ed21f9545e9df94c37c6b49a5af0a874008ddc9132d49a2d9c",
"sha256:231cf4d140b22a923b1d0a0a4e0b4f972e5893efcdec188934cc65888fd0227b",
"sha256:236610b77589faf462337b3305a1be91756c8abc5a45ff7ca8f245a71c5dab70",
"sha256:29bfc8d3d88e56ea0a27e7c4897b642706840247f59f4377d81be8f32aa0cfbf",
"sha256:2b8969dbc8d09d9cd2ae06362c3bad27d03f433252601ef658a49bd9f2b22d79",
"sha256:2dd0b80ac2d8f13ffc906123a6f20b459cb50a99222d0da492360512f3e50f84",
"sha256:2df7ed5edeb6bd5590914cd61df76eb6cce9d590ed04ec7c183cf5509f73530d",
"sha256:2e4a570f6a99e96c457f7bec5ad459c9c420ee80b99eb04cbfcfe3fc18ec6423",
"sha256:2f1be45d4c15f237209bbf123a0e05b5d630c8717c42f59f31ea9eae2ad89394",
"sha256:2f23cf50eccb3255b6e913188291af0150d89dab44137a69e14e4dcb7be981f1",
"sha256:3031e4c16b59424e8d78522c69b062d301d951dc55ad8685736c3335a97fc270",
"sha256:33e06717c00c788ab4e79bc4726ecc50c54b9bfb55355eae21473c145d83c2d2",
"sha256:364de8f57d6eda0c16dcfb999af902da31396949efa0e583e12675d09709881b",
"sha256:3715cdf0dd31b836433af9ee9197af10e3df41d273c19bb249230043667a5dfd",
"sha256:3bb8149840daf2c3f97cebf00e4ed4a65a0baff888bf2605a8d0135ff5cf764e",
"sha256:3c3c8b55c7fc7b7e8877b9366568cc73d68b82da7fe33d8b98527b73857a225f",
"sha256:3d68eeef7b4d08a25e51897dac29bcb62aba830e9ac6c4e3297ee7c6a0cf6439",
"sha256:3dddf0fb832486cc1ea71d189cb92eb887826e8deebe128884e15020bb6e3f61",
"sha256:3edbb9c9130bac05d8c3fe150c51c337a471cc7fdb6d2a0a7d3a88e88a829314",
"sha256:3effe081b3135237da6e4c4530ff2a868d3f80be0bda027e118a5971285d42d0",
"sha256:422c179022ecdedbe58b0e242607198580804253da220e9454ffe848daa1cfd2",
"sha256:42978a68d3825eaac55399eb37a4d52012a205c0c6262199b8b44fcc6fd686e8",
"sha256:4399b4226c4785575fb20998dc571bc48125dc92c367ce2602d0d70e0c455eb0",
"sha256:45fbb70ccbc8683f2fb58bea89498a7274af1d9ec7995e9f4af5604e028233fc",
"sha256:4867361c049761a56bd21de507cab2c2a608c55102311d142ade7dab67b34f32",
"sha256:48fd46bf7155def2e15287c6f2b133a2f78e2d22cdf55647269977b873c65499",
"sha256:4b0d5cdba1b655d5b18042ac9c9ff50bda33568eb80feaaca4fc237b9c4fbfde",
"sha256:4df0ec814b50275ad6a99bc82a38b59f90e10e47714ac9871e1b223895825468",
"sha256:4e52e1b148867b01c05e21837586ee307a01e793b94072d7c7b91d2c2da02ffe",
"sha256:514fe78fc4b87e7a7601c92492210b20a1b0c6ab20e71e81307d9c2e377c64de",
"sha256:524ccfded8989a6595dbdda80d779fb977dbc9a7bc458864fc9a0c2fc15dc877",
"sha256:528f3a0498a8edc69af0559bdcf8a9f5a8bf7c00051a6ef3141fdcf27017bbf5",
"sha256:52d82b0d436edd6a1d22d94a344b9a58abd6c68c357ed44f22d4ba8179b37629",
"sha256:5412500e0dc5481b1ee9cf6b38bb3b473f6e411eb62b83dc9b62699c3b7b79f7",
"sha256:585c4dc429deebc4307187d2b71ebe914843185ae16a4d582ee030e6cfbb4d8a",
"sha256:5865b270b420eda7b68928d70bb517ccbe045e53b1a428129bb44372bf3d7dd5",
"sha256:5881aaa4bf3a2d086c5f20371d3a5856199a0d8ac72dd8d0dbd7a2ecfc26ab73",
"sha256:5885bc586f1edb48e5d68e7a4b4757b5feb2a496b64f462b4d65950f5af3364f",
"sha256:5a11b16a33656ffc43c92a5343a28dc71eefe460bcc2a4923a96f292692709f6",
"sha256:5a997b784a639e05b9d4053ef3b20c7e447ea80814a762f25b8ed5a89d261eac",
"sha256:5be8f5e4044146a69c96077c7e08f0709c13a314aa5315981185c1f00235fe65",
"sha256:63d57fc94eb0bbb4735e45517afc21ef262991d8758a8f2f05dd6e4174944519",
"sha256:673b9d8e780f455091200bba8534d5f4f465944cbdd61f31dc832d70e29064a5",
"sha256:67d2f8ad9dcc3a9e826bdc7802ed541a44e124c29b7d95a679eeb58c1c14ade8",
"sha256:67f5e80adf0aafc7b5454f2c1cb0cde920c9b1f2cbd0485f07cc1d0497c35c5d",
"sha256:68018c4c67d7e89951a91fbd371e2e34cd8cfc71f0bb43b5332db38497025d51",
"sha256:6c4dd3bfd0c82400060896717dd261137398edb7e524527438c54a8c34f736bf",
"sha256:71f31eda4e370f46af42fc9f264fafa1b09f46ba07bdbee98f25689a04b81c20",
"sha256:7512b4d0fc5339d5abbb14d1843f70499cab90d0b864f790e73f780f041615d7",
"sha256:75fa3d6946d317ffc7016a6fcc44f42db6d514b7fdb8b4b28cbe058303cb6e53",
"sha256:779e851fd0e19795ccc8a9bb4d705d6baa0ef475329fe44a13cf1e962f18ff1e",
"sha256:796520afa499732191e39fc95b56a3b07f95256f2d22b1c26e217fb69a9db5b5",
"sha256:7aae7a3d63b935babfdc6864b31196afd5145878ddd22f5200729006366bc4d5",
"sha256:7b82e67c5feb682dbb559c3e6b78355f234943053af61606af126df2183b9ef9",
"sha256:7c0536bd9178f754b277a3e53f90f9c9454a3bd108b1531ffff720e082d824f2",
"sha256:7eda194dd46e40ec745bf76795a7cccb02a6a41f445ad49d3cf66518b0bd9cff",
"sha256:82a4bb10b0beef1434fb23a09f001ab5ca87895596b4581fd53f1e5145a8934a",
"sha256:85c4f11be9cf08917ac2a5a8b6e1ef63b2f8e3799cec194417e76826e5f1de9c",
"sha256:88b72eb7222d918c967202024812c2bfb4048deeb69ca328363fb8e15254c549",
"sha256:89934f9f791566e54c1d92cdc8f8fd0009447a5ecdb1ec6b810d5f8c4955f6be",
"sha256:8b1942b3e4ed9ed551ed3083a2e6e0772de1e5e3aca872d955e2e86385fb7ff9",
"sha256:8ffb141361108e864ab5f1813f66e4e1164181227f9b1f105b042729b6c15125",
"sha256:8fffc08de02071c37865a155e5ea5fce0282e1546fd5bde7f6149fcaa32558ac",
"sha256:91fb6a43d72b4f8863d21f347a9163eecbf36e76e2f51068d59cd004c506f332",
"sha256:928e75a7200a4c09e6efc7482a1337919cc61fe1ba289f297827a5b76d8969c2",
"sha256:96eef5b9f336f623ffc555ab47a775495e7e8846dde88de5f941e2906453a1ce",
"sha256:a0611da6b07dd3720f492db1b463a4d1175b096b49438761cc9f35f0d9eaaef5",
"sha256:a091026c3bf7519ab1e64655a3f52a59ad4a4e019a6f830c24d6430695b1cf6a",
"sha256:a22f66270bd6d0804b02cd49dae2b33d4341015545d17f8426f2c4e22f557a23",
"sha256:a243132767150a44e6a93cd1dde41010036e1cbc63cc3e9fe1712b277d926ce3",
"sha256:a31fa7536ec1fb7155a0cd3a4e3d956c835ad0a43e3610ca32384d01f079ea1c",
"sha256:a364e8e944d92dcbf33b6b494d4e0fb3499dcc3bd9485beb701aa4b4201fa414",
"sha256:a4058f16cee694577f7e4dd410263cd0ef75644b43802a689c2b3c2a7e69453b",
"sha256:a4b382e0e636ed54cd278791d93fe2c4f370772743f02bcbe431a160089025c9",
"sha256:a83d3adea1e0ee36dac34627f78ddd7f093bb9cfc0a8e97f1572a949b695cb98",
"sha256:a8ade0363f776f87f982572c2860cc43c65ace208db49c76df0a21dde4ddd16e",
"sha256:aa59974880ab5ad8ef3afaa26f9bda148c5f39e06b11a8ada4660ecc9fb2feb3",
"sha256:aa826340a609d0c954ba52fd831f0fba2a4165659ab0ee1a15e4aac21f302406",
"sha256:aaca5a812f050ab55426c32177091130b1e49329b3f002a32934cd0245571307",
"sha256:ae82fce1d964f065c32c9517309f0c7be588772352d2f40b1574a214bd6e6098",
"sha256:aed57b541b589fa05ac248f4cb1c46cbb432ab82cbd467d1c4f6a2bdc18aecf9",
"sha256:afa578b6524ff85fb365f454cf61683771d0170470c48ad9d170c48075f86725",
"sha256:b0884e3f22d87c30694e625b1e62e6f30d39782c806287450d9dc2fdf07692fd",
"sha256:b2aca14c235c7a08558fe0a4786a1a05873a01e86b474dfa8f6df49101853a4e",
"sha256:b450d7cabcd49aa7ab46a3c6aa3ac7e1593600a1a0605ba536ec0f1b99a04322",
"sha256:b725e70d15906d24615201e650d5b0388b08a5187a55f119f25874d0103f90dd",
"sha256:bfbbab9316330cf81656fed435311386610f78b6c93cc5db4bebbce8dd146675",
"sha256:c093c7088b40d8266f57ed71d93112bd64c6724d31f0794c1e52cc4857c28e0e",
"sha256:c2e49dc23a10a1296b04ca9db200c44d3eb32c8d8ec532e8c1fd24792276522a",
"sha256:c4393600915c308e546dc7003d74371744234e8444a28622d76fe19b98fa59d1",
"sha256:c5ae125276f254b01daa73e2c103363d3e99e3e10505686ac7d9d2442dd4627a",
"sha256:c6aacf00d05b38a5069826e50ae72751cb5bc27bdc4d5746203988e429b385bb",
"sha256:c76722b5ed4a31ba103e0dc77ab869222ec36efe1a614e42e9bcea88a36186fe",
"sha256:c809eef167bf4a57af4b03007004896f5c60bd38dc3852fcd97a26eae3d4c9e6",
"sha256:c92ea6d9dd84a750b2bae72ff5e8cf5fdd13e58dda79c33e057862c29a8d5b50",
"sha256:cb659702a45136c743bc130760c6f137870d4df3a9e14386478b8a0511abcfca",
"sha256:ce0930a963ff593e8bb6fda49a503911accc67dee7e5445eec972668e672a0f0",
"sha256:d0751528b97d2b19a388b302be2a0ee05817097bab46ff0ed76feeec24951f78",
"sha256:d184f85ad2bb1f261eac55cddfcf62a70dee89982c978e92b9a74a1bfef2e367",
"sha256:d2a3e412ce1849be34b45922bfef03df32d1410a06d1cdeb793a343c2f1fd666",
"sha256:d61ec60945d694df806a9aec88e8f29a27293c6e424f8ff91c80416e3c617645",
"sha256:db0c742aad702fd5d0c6611a73f9602f20aec2007c102630c06d7633d9c8f09a",
"sha256:db4743e30d6f5f92b6d2b7c86b3ad250e0bad8dee4b7ad8a0c44bfb276af89a3",
"sha256:dbf7bebc2275016cddf3c997bf8a0f7044160714c64a9b83975670a04e6d2252",
"sha256:de1fc314c3ad6bc2f6bd5b5a5b9357b8c6896333d27fdbb7049aea8bd5af2d79",
"sha256:df7e5edac4778127f2bf452e0721a58a1cfa4d1d9eac63bdd650535eb8543615",
"sha256:e220f7b3e8656ab063d2eb0cd536fafef396829cafe04cb314e734f87649058f",
"sha256:e3c623923967f3e5961d272718655946e5322b8d058e094764180cdee7bab1af",
"sha256:e69add9b6b7b08c60d7ff0152c7c9a6c45b4a71a919be5abde6f98f1ea16421c",
"sha256:e8e0d177b1fe251c3b1b914ab64135475c5273c8cfd2857964b2e3bb0fe196a7",
"sha256:ef45f31aec9be01379fc6c10f1d9c677f032f2bac9383c827d44f620e8a88407",
"sha256:f1208c1c67ec9e151d78aa3435aa9b08a488b53d9cfac9b699f15255a3461ef2",
"sha256:f12582b8d3b4c6be1d298c49cb7ae64a3a73efaf4c2ab4e37db182e3545815ac",
"sha256:f1de541a9893cf8a1b1db9bf0bf670a2decab42e3e82233d36a74eda7822b4c9",
"sha256:f4eac0584cdc3285ef2e74eee1513a6001681fd9753b259e8159421ed28a72e5",
"sha256:f7b64fcd670bca8800bc10ced36620c6bbb321e7bc1214b9c0c0df269c1dddc2",
"sha256:fb7c61d4be18e930f75948705e9718618862e6fc2ed0d7159b2262be73f167a2"
],
"markers": "python_version >= '3.6'",
"version": "==5.3.1"
},
"markdown": {
"hashes": [
"sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2",
"sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"
],
"index": "pypi",
"version": "==3.7"
},
"markdown-it-py": {
"hashes": [
"sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1",
"sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"
],
"markers": "python_version >= '3.8'",
"version": "==3.0.0"
},
"markupsafe": {
"hashes": [
"sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4",
"sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30",
"sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0",
"sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9",
"sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396",
"sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13",
"sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028",
"sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca",
"sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557",
"sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832",
"sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0",
"sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b",
"sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579",
"sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a",
"sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c",
"sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff",
"sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c",
"sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22",
"sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094",
"sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb",
"sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e",
"sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5",
"sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a",
"sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d",
"sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a",
"sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b",
"sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8",
"sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225",
"sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c",
"sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144",
"sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f",
"sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87",
"sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d",
"sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93",
"sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf",
"sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158",
"sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84",
"sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb",
"sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48",
"sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171",
"sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c",
"sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6",
"sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd",
"sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d",
"sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1",
"sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d",
"sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca",
"sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a",
"sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29",
"sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe",
"sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798",
"sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c",
"sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8",
"sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f",
"sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f",
"sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a",
"sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178",
"sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0",
"sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79",
"sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430",
"sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"
],
"markers": "python_version >= '3.9'",
"version": "==3.0.2"
},
"mdurl": {
"hashes": [
"sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
"sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"
],
"markers": "python_version >= '3.7'",
"version": "==0.1.2"
},
"ordered-set": {
"hashes": [
"sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562",
"sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8"
],
"markers": "python_version >= '3.7'",
"version": "==4.1.0"
},
"pelican": {
"hashes": [
"sha256:aca6993f6b8a03a20f6828471089cb0504a4dca71e0d30b341fa80ab65668fa4",
"sha256:b90234487b818d391733acc1306b785934009749b1fc112b879df9bd89478bd8"
],
"index": "pypi",
"version": "==4.11.0"
},
"pelican-image-process": {
"hashes": [
"sha256:b014f5db989218df56200cc3cf6d34d53139c94a708bb07345cba72e71e45a03",
"sha256:f7debd0dc6d20403c5ff70dab44cea2cee1afdb69433778452715b8dd7467c25"
],
"index": "pypi",
"version": "==3.0.4"
},
"pelican-photos": {
"hashes": [
"sha256:b8044e2ee1e395048b41a8956354574e6255d62b83ff559a91953a335f91a627",
"sha256:cf24fb56fa7d740c4a10b1aaf39a3f70ed3bd9e9c04a4ccf49e55dcf52553dfd"
],
"index": "pypi",
"version": "==1.6.2"
},
"pelican-series": {
"hashes": [
"sha256:dc6cd93690afeb5336d867e702070396ca0a465fba1976083281e01a346ed882",
"sha256:e44ced55b8f1459b02392a55c77f19d3e449f75cf120d5b1de6705819781e3f3"
],
"index": "pypi",
"version": "==3.0.0"
},
"pelican-sitemap": {
"hashes": [
"sha256:9e5bba7c98bae8e0e94c8fa72bbc49673ceaed5c5bb934e23d675572572a9fb2",
"sha256:d4016c9ebdf4bd87776f48fd5a36f9c3af1c3bca01cda22a83c840c9669df7e1"
],
"index": "pypi",
"version": "==1.2.0"
},
"piexif": {
"hashes": [
"sha256:3bc435d171720150b81b15d27e05e54b8abbde7b4242cddd81ef160d283108b6",
"sha256:83cb35c606bf3a1ea1a8f0a25cb42cf17e24353fd82e87ae3884e74a302a5f1b"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==1.1.3"
},
"pillow": {
"hashes": [
"sha256:015c6e863faa4779251436db398ae75051469f7c903b043a48f078e437656f83",
"sha256:0a2f91f8a8b367e7a57c6e91cd25af510168091fb89ec5146003e424e1558a96",
"sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65",
"sha256:2062ffb1d36544d42fcaa277b069c88b01bb7298f4efa06731a7fd6cc290b81a",
"sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352",
"sha256:3362c6ca227e65c54bf71a5f88b3d4565ff1bcbc63ae72c34b07bbb1cc59a43f",
"sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20",
"sha256:36ba10b9cb413e7c7dfa3e189aba252deee0602c86c309799da5a74009ac7a1c",
"sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114",
"sha256:3a5fe20a7b66e8135d7fd617b13272626a28278d0e578c98720d9ba4b2439d49",
"sha256:3cdcdb0b896e981678eee140d882b70092dac83ac1cdf6b3a60e2216a73f2b91",
"sha256:4637b88343166249fe8aa94e7c4a62a180c4b3898283bb5d3d2fd5fe10d8e4e0",
"sha256:4db853948ce4e718f2fc775b75c37ba2efb6aaea41a1a5fc57f0af59eee774b2",
"sha256:4dd43a78897793f60766563969442020e90eb7847463eca901e41ba186a7d4a5",
"sha256:54251ef02a2309b5eec99d151ebf5c9904b77976c8abdcbce7891ed22df53884",
"sha256:54ce1c9a16a9561b6d6d8cb30089ab1e5eb66918cb47d457bd996ef34182922e",
"sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c",
"sha256:5bb94705aea800051a743aa4874bb1397d4695fb0583ba5e425ee0328757f196",
"sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756",
"sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861",
"sha256:73ddde795ee9b06257dac5ad42fcb07f3b9b813f8c1f7f870f402f4dc54b5269",
"sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1",
"sha256:7d33d2fae0e8b170b6a6c57400e077412240f6f5bb2a342cf1ee512a787942bb",
"sha256:7fdadc077553621911f27ce206ffcbec7d3f8d7b50e0da39f10997e8e2bb7f6a",
"sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081",
"sha256:837060a8599b8f5d402e97197d4924f05a2e0d68756998345c829c33186217b1",
"sha256:89dbdb3e6e9594d512780a5a1c42801879628b38e3efc7038094430844e271d8",
"sha256:8c730dc3a83e5ac137fbc92dfcfe1511ce3b2b5d7578315b63dbbb76f7f51d90",
"sha256:8e275ee4cb11c262bd108ab2081f750db2a1c0b8c12c1897f27b160c8bd57bbc",
"sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5",
"sha256:93a18841d09bcdd774dcdc308e4537e1f867b3dec059c131fde0327899734aa1",
"sha256:9409c080586d1f683df3f184f20e36fb647f2e0bc3988094d4fd8c9f4eb1b3b3",
"sha256:96f82000e12f23e4f29346e42702b6ed9a2f2fea34a740dd5ffffcc8c539eb35",
"sha256:9aa9aeddeed452b2f616ff5507459e7bab436916ccb10961c4a382cd3e03f47f",
"sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c",
"sha256:a07dba04c5e22824816b2615ad7a7484432d7f540e6fa86af60d2de57b0fcee2",
"sha256:a3cd561ded2cf2bbae44d4605837221b987c216cff94f49dfeed63488bb228d2",
"sha256:a697cd8ba0383bba3d2d3ada02b34ed268cb548b369943cd349007730c92bddf",
"sha256:a76da0a31da6fcae4210aa94fd779c65c75786bc9af06289cd1c184451ef7a65",
"sha256:a85b653980faad27e88b141348707ceeef8a1186f75ecc600c395dcac19f385b",
"sha256:a8d65b38173085f24bc07f8b6c505cbb7418009fa1a1fcb111b1f4961814a442",
"sha256:aa8dd43daa836b9a8128dbe7d923423e5ad86f50a7a14dc688194b7be5c0dea2",
"sha256:ab8a209b8485d3db694fa97a896d96dd6533d63c22829043fd9de627060beade",
"sha256:abc56501c3fd148d60659aae0af6ddc149660469082859fa7b066a298bde9482",
"sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe",
"sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc",
"sha256:b20be51b37a75cc54c2c55def3fa2c65bb94ba859dde241cd0a4fd302de5ae0a",
"sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec",
"sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3",
"sha256:b6123aa4a59d75f06e9dd3dac5bf8bc9aa383121bb3dd9a7a612e05eabc9961a",
"sha256:bd165131fd51697e22421d0e467997ad31621b74bfc0b75956608cb2906dda07",
"sha256:bf902d7413c82a1bfa08b06a070876132a5ae6b2388e2712aab3a7cbc02205c6",
"sha256:c12fc111ef090845de2bb15009372175d76ac99969bdf31e2ce9b42e4b8cd88f",
"sha256:c1eec9d950b6fe688edee07138993e54ee4ae634c51443cfb7c1e7613322718e",
"sha256:c640e5a06869c75994624551f45e5506e4256562ead981cce820d5ab39ae2192",
"sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0",
"sha256:cfd5cd998c2e36a862d0e27b2df63237e67273f2fc78f47445b14e73a810e7e6",
"sha256:d3d8da4a631471dfaf94c10c85f5277b1f8e42ac42bade1ac67da4b4a7359b73",
"sha256:d44ff19eea13ae4acdaaab0179fa68c0c6f2f45d66a4d8ec1eda7d6cecbcc15f",
"sha256:dd0052e9db3474df30433f83a71b9b23bd9e4ef1de13d92df21a52c0303b8ab6",
"sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547",
"sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9",
"sha256:e06695e0326d05b06833b40b7ef477e475d0b1ba3a6d27da1bb48c23209bf457",
"sha256:e1abe69aca89514737465752b4bcaf8016de61b3be1397a8fc260ba33321b3a8",
"sha256:e267b0ed063341f3e60acd25c05200df4193e15a4a5807075cd71225a2386e26",
"sha256:e5449ca63da169a2e6068dd0e2fcc8d91f9558aba89ff6d02121ca8ab11e79e5",
"sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab",
"sha256:f189805c8be5ca5add39e6f899e6ce2ed824e65fb45f3c28cb2841911da19070",
"sha256:f7955ecf5609dee9442cbface754f2c6e541d9e6eda87fad7f7a989b0bdb9d71",
"sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9",
"sha256:fbd43429d0d7ed6533b25fc993861b8fd512c42d04514a0dd6337fb3ccf22761"
],
"markers": "python_version >= '3.9'",
"version": "==11.1.0"
},
"pygments": {
"hashes": [
"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199",
"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"
],
"index": "pypi",
"version": "==2.18.0"
},
"python-dateutil": {
"hashes": [
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.9.0.post0"
},
"pytz": {
"hashes": [
"sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57",
"sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e"
],
"version": "==2025.1"
},
"rich": {
"hashes": [
"sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098",
"sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"
],
"markers": "python_version >= '3.8'",
"version": "==13.9.4"
},
"six": {
"hashes": [
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.17.0"
},
"sniffio": {
"hashes": [
"sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2",
"sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"
],
"markers": "python_version >= '3.7'",
"version": "==1.3.1"
},
"soupsieve": {
"hashes": [
"sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb",
"sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"
],
"markers": "python_version >= '3.8'",
"version": "==2.6"
},
"typing-extensions": {
"hashes": [
"sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d",
"sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
],
"markers": "python_version >= '3.8'",
"version": "==4.12.2"
},
"tzdata": {
"hashes": [
"sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694",
"sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"
],
"markers": "sys_platform == 'win32'",
"version": "==2025.1"
},
"unidecode": {
"hashes": [
"sha256:cfdb349d46ed3873ece4586b96aa75258726e2fa8ec21d6f00a591d98806c2f4",
"sha256:d130a61ce6696f8148a3bd8fe779c99adeb4b870584eeb9526584e9aa091fd39"
],
"markers": "python_version >= '3.5'",
"version": "==1.3.8"
},
"watchfiles": {
"hashes": [
"sha256:02a526ee5b5a09e8168314c905fc545c9bc46509896ed282aeb5a8ba9bd6ca27",
"sha256:05d341c71f3d7098920f8551d4df47f7b57ac5b8dad56558064c3431bdfc0b74",
"sha256:076f293100db3b0b634514aa0d294b941daa85fc777f9c698adb1009e5aca0b1",
"sha256:0799ae68dfa95136dde7c472525700bd48777875a4abb2ee454e3ab18e9fc712",
"sha256:0986902677a1a5e6212d0c49b319aad9cc48da4bd967f86a11bde96ad9676ca1",
"sha256:0bc80d91ddaf95f70258cf78c471246846c1986bcc5fd33ccc4a1a67fcb40f9a",
"sha256:13c2ce7b72026cfbca120d652f02c7750f33b4c9395d79c9790b27f014c8a5a2",
"sha256:1941b4e39de9b38b868a69b911df5e89dc43767feeda667b40ae032522b9b5f1",
"sha256:1eacd91daeb5158c598fe22d7ce66d60878b6294a86477a4715154990394c9b3",
"sha256:229e6ec880eca20e0ba2f7e2249c85bae1999d330161f45c78d160832e026ee2",
"sha256:22bb55a7c9e564e763ea06c7acea24fc5d2ee5dfc5dafc5cfbedfe58505e9f90",
"sha256:278aaa395f405972e9f523bd786ed59dfb61e4b827856be46a42130605fd0899",
"sha256:2a9f93f8439639dc244c4d2902abe35b0279102bca7bbcf119af964f51d53c19",
"sha256:308ac265c56f936636e3b0e3f59e059a40003c655228c131e1ad439957592303",
"sha256:31f1a379c9dcbb3f09cf6be1b7e83b67c0e9faabed0471556d9438a4a4e14202",
"sha256:32b026a6ab64245b584acf4931fe21842374da82372d5c039cba6bf99ef722f3",
"sha256:342622287b5604ddf0ed2d085f3a589099c9ae8b7331df3ae9845571586c4f3d",
"sha256:39f4914548b818540ef21fd22447a63e7be6e24b43a70f7642d21f1e73371590",
"sha256:3f68d8e9d5a321163ddacebe97091000955a1b74cd43724e346056030b0bacee",
"sha256:43b168bba889886b62edb0397cab5b6490ffb656ee2fcb22dec8bfeb371a9e12",
"sha256:47eb32ef8c729dbc4f4273baece89398a4d4b5d21a1493efea77a17059f4df8a",
"sha256:4810ea2ae622add560f4aa50c92fef975e475f7ac4900ce5ff5547b2434642d8",
"sha256:4e997802d78cdb02623b5941830ab06f8860038faf344f0d288d325cc9c5d2ff",
"sha256:4ebbeca9360c830766b9f0df3640b791be569d988f4be6c06d6fae41f187f105",
"sha256:4f8c4998506241dedf59613082d1c18b836e26ef2a4caecad0ec41e2a15e4226",
"sha256:55ccfd27c497b228581e2838d4386301227fc0cb47f5a12923ec2fe4f97b95af",
"sha256:5717021b199e8353782dce03bd8a8f64438832b84e2885c4a645f9723bf656d9",
"sha256:5c11ea22304d17d4385067588123658e9f23159225a27b983f343fcffc3e796a",
"sha256:5e0227b8ed9074c6172cf55d85b5670199c99ab11fd27d2c473aa30aec67ee42",
"sha256:62c9953cf85529c05b24705639ffa390f78c26449e15ec34d5339e8108c7c407",
"sha256:6ba473efd11062d73e4f00c2b730255f9c1bdd73cd5f9fe5b5da8dbd4a717205",
"sha256:740d103cd01458f22462dedeb5a3382b7f2c57d07ff033fbc9465919e5e1d0f3",
"sha256:74cb3ca19a740be4caa18f238298b9d472c850f7b2ed89f396c00a4c97e2d9ff",
"sha256:7b75fee5a16826cf5c46fe1c63116e4a156924d668c38b013e6276f2582230f0",
"sha256:7cf684aa9bba4cd95ecb62c822a56de54e3ae0598c1a7f2065d51e24637a3c5d",
"sha256:8012bd820c380c3d3db8435e8cf7592260257b378b649154a7948a663b5f84e9",
"sha256:857f5fc3aa027ff5e57047da93f96e908a35fe602d24f5e5d8ce64bf1f2fc733",
"sha256:8b1f135238e75d075359cf506b27bf3f4ca12029c47d3e769d8593a2024ce161",
"sha256:8d0d0630930f5cd5af929040e0778cf676a46775753e442a3f60511f2409f48f",
"sha256:90192cdc15ab7254caa7765a98132a5a41471cf739513cc9bcf7d2ffcc0ec7b2",
"sha256:95b42cac65beae3a362629950c444077d1b44f1790ea2772beaea95451c086bb",
"sha256:9745a4210b59e218ce64c91deb599ae8775c8a9da4e95fb2ee6fe745fc87d01a",
"sha256:9d1ef56b56ed7e8f312c934436dea93bfa3e7368adfcf3df4c0da6d4de959a1e",
"sha256:9eea33ad8c418847dd296e61eb683cae1c63329b6d854aefcd412e12d94ee235",
"sha256:9f25d0ba0fe2b6d2c921cf587b2bf4c451860086534f40c384329fb96e2044d1",
"sha256:9fe37a2de80aa785d340f2980276b17ef697ab8db6019b07ee4fd28a8359d2f3",
"sha256:a38320582736922be8c865d46520c043bff350956dfc9fbaee3b2df4e1740a4b",
"sha256:a462490e75e466edbb9fc4cd679b62187153b3ba804868452ef0577ec958f5ff",
"sha256:a5ae5706058b27c74bac987d615105da17724172d5aaacc6c362a40599b6de43",
"sha256:aa216f87594f951c17511efe5912808dfcc4befa464ab17c98d387830ce07b60",
"sha256:ab0311bb2ffcd9f74b6c9de2dda1612c13c84b996d032cd74799adb656af4e8b",
"sha256:ab594e75644421ae0a2484554832ca5895f8cab5ab62de30a1a57db460ce06c6",
"sha256:aee397456a29b492c20fda2d8961e1ffb266223625346ace14e4b6d861ba9c80",
"sha256:b045c800d55bc7e2cadd47f45a97c7b29f70f08a7c2fa13241905010a5493f94",
"sha256:b77d5622ac5cc91d21ae9c2b284b5d5c51085a0bdb7b518dba263d0af006132c",
"sha256:ba5bb3073d9db37c64520681dd2650f8bd40902d991e7b4cfaeece3e32561d08",
"sha256:bdef5a1be32d0b07dcea3318a0be95d42c98ece24177820226b56276e06b63b0",
"sha256:c2acfa49dd0ad0bf2a9c0bb9a985af02e89345a7189be1efc6baa085e0f72d7c",
"sha256:c7cce76c138a91e720d1df54014a047e680b652336e1b73b8e3ff3158e05061e",
"sha256:cc27a65069bcabac4552f34fd2dce923ce3fcde0721a16e4fb1b466d63ec831f",
"sha256:cdbd912a61543a36aef85e34f212e5d2486e7c53ebfdb70d1e0b060cc50dd0bf",
"sha256:cdcc92daeae268de1acf5b7befcd6cfffd9a047098199056c72e4623f531de18",
"sha256:d3452c1ec703aa1c61e15dfe9d482543e4145e7c45a6b8566978fbb044265a21",
"sha256:d6097538b0ae5c1b88c3b55afa245a66793a8fec7ada6755322e465fb1a0e8cc",
"sha256:d8d3d9203705b5797f0af7e7e5baa17c8588030aaadb7f6a86107b7247303817",
"sha256:e0611d244ce94d83f5b9aff441ad196c6e21b55f77f3c47608dcf651efe54c4a",
"sha256:f12969a3765909cf5dc1e50b2436eb2c0e676a3c75773ab8cc3aa6175c16e902",
"sha256:f44a39aee3cbb9b825285ff979ab887a25c5d336e5ec3574f1506a4671556a8d",
"sha256:f9ce064e81fe79faa925ff03b9f4c1a98b0bbb4a1b8c1b015afa93030cb21a49",
"sha256:fb2c46e275fbb9f0c92e7654b231543c7bbfa1df07cdc4b99fa73bedfde5c844",
"sha256:fc2eb5d14a8e0d5df7b36288979176fbb39672d45184fc4b1c004d7c3ce29317"
],
"markers": "python_version >= '3.9'",
"version": "==1.0.4"
}
},
"develop": {}
}

View file

@ -2,6 +2,8 @@
The base pelican theme for my site, [jeffmackinnon.com](https://jeffmackinnon.com)
This is version 2.0, which is very very different and "simple". If you are looking for the original theme check the release V1.0
## Configuration
The first step is the pelicanconf.py file.
@ -16,17 +18,10 @@ There are some variables that you can add to the `pelicanconf.py` file that make
#DIRECT_TEMPLATES = ['posts'] # If you already have a direct templates just add posts.
THEME_COLOUR = 0 # Pick the colour.
# 0 => default
# 1 => Blue
SITELICENSE = '<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.'
TRACKING = False
IMAGETRACKINGCODE = ''
## Sidebar things
#
#DUCKDUCKGOSEARCHURL = '' # This is the only search that I have working right now.
BIO_IMAGE = 'jeffmackinnon.jpg' # Make sure that this is in the "images" folder
SHOWCATEGORIES = True
SHOWTAGS = False
@ -35,39 +30,13 @@ CONTACT_EMAIL = 'support@thisdoamin.co'
CONTACT_HOME_ADDR = 'Nova Scotia'
#CONTACT_BUSINESS_ADDR =''
# The Social Things
#
SOCIAL_SHARE = True
SOCIAL_TWITTER = 'jeffmackinnon'
SOCIAL_GITHUB = 'Jeffmackinnon'
SOCIAL_LINKEDIN = 'jeffmackinnon'
SOCIAL_FLICKR = 'jeffmackinnon'
SOCIAL_MASTODON = 'https://bluenoser.me/@Jeff'
# Frontpage customization
#
#MINIMAL = True # If True the homepage will use the 'minimal_homepage.html template.
# If minimal is set to true, the other configuration options below don't do anything.
BANNER = True
TAGLINEHEAD = 'The cool headline'
TAGLINESUBHEAD = 'The sub-header'
TAGLINE = 'Now this is going to be super cool, think of all the things we can teach you about. It is going to be amazing'
BANNERLINK = 'services/'
BANNERIMAGE = 'images/20130923124523.jpg'
CORNERSTONE_CONTENT = True # If true add the html you want in include/cornerstone.html
NEWSLETTER = '' # place your newsletter embed information here
# Article List Pages
#
INCLUDE_SUMMARY = False # Default True
INCLUDE_TITLE = False # Default True
INCLUDE_CATEGORY = True # Default False
INCLUDE_IMAGE = True # Default False
MOREBUTTON = True # This adds the "MORE" to the article list
MICROBLOG = 'microblog' # This caetgory will ALWAYS have just a picture and no headline or summary
# This is for https://fediring.net/#table-of-members and is located in the sidebar
#
@ -83,11 +52,6 @@ SHOW_TOP_IMAGE = True # This shows the article image at the top before the conte
# Commenting
#
# Mastodon Comments
MASTODON_COMMENTS = False
MASTODON_HOST = 'url.tld
MASTODON_USER = 'user'
# If you use a hosted commenting engine like hashover, commento, etc.
COMMENTS = False
COMMENT_EMBED ='' # This is the emdbed code that you need for the comments.
@ -104,7 +68,6 @@ To make this configurable for a bunch of different sites I wanted to make sure t
To do this I have included a few templates in the `include` folder. Whether or not these are used is controlled by the configuration file.
- article_footer.html
- cornerstone.html
- trackingcode.html
The other files in there can be modified, but don't need to be.
@ -121,44 +84,5 @@ So, the below set up is for this [post](https://jeffmackinnon.com/20230511-new_f
:image: {photo}microblog/865A0747.jpg
:image_alt: Macro photo of a flower.
```
### Mastodon comments
To use the mastodon commenting system you will need to edit the article with the mastodon id of where it is posted.
For example, for this [post with flowers](https://jeffmackinnon.com/20230704-sea-of-white-flowers.html) I have the following tags in the post:
```
:date: 2023-07-04
:author: Jeff
:category: microblog
:tags: flowers, year-of-flowers
:slug: 20230704-sea-of-white-flowers
:status: published
:image: {photo}microblog/865A2210.JPG
:alt_text_image: white flowers with yellow center.
:mastodon_post_id: 110656661657103654
```
The critical one here is the `:mastodon_post_id:` with the ID of the mastodon post.
In the future this may be automatic using a plugin and some fancy JS.
## RoadMap
In order of percieved importance, but not in the order that I will get them done.
- [ ] Make installable
- [X] Create custom colours
- [ ] Figure out how to create a Dark Mode
- [ ] Create a minimal homepage option
### Roadmap notes
I would like for this to be installable, and once that is ready/working I will bind it as a release.
I would also like to have a couple colour themes so that I can use this exact theme for a few of the different sites that I would like to use it for, to make that work I will need different colour styles.
Finally, and probably similar to the above, I want to have it set up so that I can have a dark mode for each of those colour schemes. I really prefer dark mode for anything that has a lot of text, and not having it for my own theme/website is probably annoying for some people.

1
debug.log Normal file
View file

@ -0,0 +1 @@
[1218/091012.067:ERROR:crashpad_client_win.cc(868)] not connected

View file

@ -1,27 +0,0 @@
/*
Blue Theme Colours
*/
:root {
--body-colour: #000000;
--body-background: #fff;
--style-colour: #004360;
--header-colour: #3d4449;
--placeholder-colour: #9fa3a6;
--input-colour: #7f888f;
--white: #fff;
--light-blue: #cee4ff;
--light-pink: #ef9eff;
--base-pink: #e45dff;
--base-green: #93e836;
--base-yellow: #fffc7a;
--midlight-blue: #93d9eb;
--base-blue: #33c6ee;
--base-dark: #041417;
--admonition-header-backgroud: #5b7990;
--admonition-backgroud: #9fa3a6;
}

View file

@ -1,25 +0,0 @@
/*
Default Colours
*/
:root {
--body-colour: #000000;
--body-background: #fff;
--style-colour: #f56a6a;
--header-colour: #3d4449;
--placeholder-colour: #9fa3a6;
--input-colour: #7f888f;
--white: #fff;
--light-blue: #cee4ff;
--light-pink: #ef9eff;
--base-pink: #e45dff;
--base-green: #93e836;
--base-yellow: #fffc7a;
--midlight-blue: #93d9eb;
--base-blue: #33c6ee;
--base-dark: #041417;
--admonition-header-backgroud: #5b7990;
--admonition-backgroud: #9fa3a6;
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,220 @@
.timeline {
position: relative;
width: 860px;
margin: 0px auto;
padding: 20px;
list-style-type: none;
@media(max-width: 860px) {
width: 100%;
padding: 4em 0 1em 0;
}
&:before {
position: absolute;
left: 50%;
top: 0;
content: ' ';
display: block;
width: 6px;
height: 100%;
margin-left: -3px;
background: rgb(80,80,80);
z-index: 5;
}
li {
padding: 1em 0;
@media(max-width: 860px) {
padding: 2em 0;
}
&::after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
}
}
.direction-l {
position: relative;
width: 400px;
float: left;
text-align: right;
@media(max-width: 860px) {
float: none;
width: 100%;
text-align: center;
}
.flag {
box-shadow: -1px 1px 1px rgba(0,0,0,0.15);
&:after {
content: "";
position: absolute;
left: 100%;
top: 50%;
height: 0;
width: 0;
margin-top: -8px;
border: solid transparent;
border-left-color: rgb(248,248,248);
border-width: 8px;
pointer-events: none;
@media(max-width: 860px) {
content: "";
position: absolute;
left: 50%;
top: -8px;
height: 0;
width: 0;
margin-left: -8px;
border: solid transparent;
border-bottom-color: rgb(255,255,255);
border-width: 8px;
pointer-events: none;
}
}
}
.time-wrapper {
float: left;
@media(max-width: 860px) {
float: none;
}
}
}
.direction-r {
position: relative;
width: 400px;
float: right;
@media(max-width: 860px) {
float: none;
width: 100%;
text-align: center;
}
.flag {
box-shadow: 1px 1px 1px rgba(0,0,0,0.15);
&:after {
content: "";
position: absolute;
right: 100%;
top: 50%;
height: 0;
width: 0;
margin-top: -8px;
border: solid transparent;
border-right-color: rgb(248,248,248);
border-width: 8px;
pointer-events: none;
@media(max-width: 860px) {
content: "";
position: absolute;
left: 50%;
top: -8px;
height: 0;
width: 0;
margin-left: -8px;
border: solid transparent;
border-bottom-color: rgb(255,255,255);
border-width: 8px;
pointer-events: none;
}
}
&:before {
left: -40px;
}
}
.time-wrapper {
float: right;
@media(max-width: 860px) {
float: none;
}
}
}
.flag-wrapper {
position: relative;
display: inline-block;
text-align: center;
@media(max-width: 860px) {
text-align: center;
}
.flag {
position: relative;
display: inline;
background: rgb(248,248,248);
padding: 6px 10px;
border-radius: 5px;
font-weight: 600;
text-align: left;
@media(max-width: 860px) {
background: rgb(255,255,255);
z-index: 15;
}
}
}
.direction-l .flag:before,
.direction-r .flag:before {
position: absolute;
top: 50%;
right: -40px;
content: ' ';
display: block;
width: 12px;
height: 12px;
margin-top: -10px;
background: #fff;
border-radius: 10px;
z-index: 10;
@media(max-width: 860px) {
position: absolute;
top: -30px;
left: 50%;
content: ' ';
display: block;
margin-left: -10px;
}
}
.time-wrapper {
display: inline;
line-height: 1em;
font-size: 0.66666em;
vertical-align: middle;
@media(max-width: 860px) {
display: block;
position: relative;
margin: 4px 0 0 0;
z-index: 14;
}
.time {
display: inline-block;
padding: 4px 6px;
background: rgb(248,248,248);
}
}
.desc {
margin: 1em 0.75em 0 0;
font-size: 0.9em;
font-style: italic;
line-height: 1.5em;
a {
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
@media(max-width: 860px) {
position: relative;
margin: 1em 1em 0 1em;
padding: 1em;
background: rgb(245,245,245);
box-shadow: 0 0 1px rgba(0,0,0,0.20);
z-index: 15;
}
}

BIN
static/images/flag.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -1,58 +1,63 @@
/*Heavily influenced by Emily Gagne (https://codepen.io/ceg9498/) from their CodePen post here - https://codepen.io/ceg9498/post/creating-lined-paper
/* Styling specific to an index card */
.card{
font-family: Courier, monospace;
font-weight:bold;
background-color: white;
background: repeating-linear-gradient(white, white 25px, #9198e5 26px, #9198e5 27px);
background-position-y: 34px;
background-position-y: 24px;
height: 592px;
width: 840px;
padding: 0;
margin: 1em;
margin-bottom: 1em;
border-style:solid;
border-width: 2px;
border-color: #555;
}
.card header {
background: linear-gradient(white, white 33px, pink 35px, pink 36px);
height: 36px;
}
.card-title {
.card header h2 {
position: relative;
/*left: 1em;*/
top: 6px;
font-size: 1.5em;
font-weight: bold;
margin-bottom: 0.2em;
margin-left:25px;
}
.card-subtitle {
.card header p {
position: relative;
font-style: italic;
font-size: 1em;
margin: 0 25px;
margin: 1em;
line-height: 27px;
font-style:italic;
}
.card-text {
/*
.ingredients {
padding-top:30px;
}*/
.ingredients ul, ol {
columns: 2;
-webkit-columns: 2;
-moz-columns: 2;
position: relative;
top: 30px;
font-size: 1em;
margin: 27px 1em;
line-height: 27px;
list-style-type: none;
}
.card-ingredients {
.instructions p, ol, ul {
columns: 1;
position: relative;
top: 30px;
font-size: 1em;
margin: 0 20px;
margin: 27px 1em;
line-height: 27px;
list-style-type: auto;
}
.ingredient-qty {
display: inline-block;
width:5em;
text-align:left;
}
.ingredient-type {
margin-left:4px;
}

76
static/style.css Normal file
View file

@ -0,0 +1,76 @@
body{
margin:40px auto;
max-width:840px;
line-height:150%;
font-size:20px;
color:#333;
padding:0 10px;
font-family: "Times New Roman", Times, serif;
}
h1, h2, h3, h4 {
margin: 2.5rem 0 1.5rem 0;
line-height: 1.25;
color: #333;
}
img {
max-width: 100%;
height: auto;
float: center;
}
header { padding-bottom: 0.6em; }
footer { padding-top: 2em; }
article {
flex-grow: 0;
flex-shrink: 1;
margin: 0 2em 1em 0em;
position: relative;
width: 100%;
}
article header {padding:0;}
article footer {padding:0;}
nav {
list-style-type: none;
margin-bottom: 0.6em;
}
nav ul {
margin: 0.1em;
padding:0;
}
nav li {
display: inline-block;
margin-right: 1.5em;
}
nav li a {
color: #000;
text-decoration: italic;
display: inline-block;
transition: background-color 0.3s;
}
nav li a:hover { background-color: #555; }
/* Style the form element with a border around it */
form {
border: 4px solid #f1f1f1;
}
/* The dark scheme needs a lot of work.
@media (prefers-color-scheme: dark) {
body, h1, h2, h3, h4, p{
color: #eee;
background: #121212;
}
nav li a {
color: #65c2de;}
body a {
color: #65c2de;
}
}*/

View file

@ -1,10 +1,14 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Archives{% endblock %}
{% block title %}{{ SITENAME|striptags }} - Archives{% endblock %}
{% block content %}
<h1>Archives for {{ SITENAME }}</h1>
{% include 'include/archive_list.html' %}
<h2>Archives for {{ SITENAME }}</h2>
<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
{% endblock %}

View file

@ -1,50 +1,29 @@
{% extends "base.html" %}
{% block html_lang %}{{ article.lang }}{% endblock %}
{% block title %}{{ SITENAME }} - {{ article.title|striptags }}{% endblock %}
{% block title %}{{ SITENAME|striptags }} - {{ article.title|striptags }}{% endblock %}
{% block head %}
{% if article.status == "hidden" %}
<meta name="robots" content="noindex">
<meta name="robots" content="nofollow">
<meta name="robots" content="noarchive">
{% endif %}
{{ super() }}
{% import 'translations.html' as translations with context %}
{% if translations.entry_hreflang(article) %}
{{ translations.entry_hreflang(article) }}
{% endif %}
{% if article.status == "hidden" %}
<meta name="robots" content="noindex">
<meta name="robots" content="nofollow">
<meta name="robots" content="noarchive">
{% endif %}
{% if article.description %}
<meta name="description" content="{{article.description}}" />
{% endif %}
{% for tag in article.tags %}
<meta name="tags" content="{{ tag }}" />
<meta name="tags" content="{{tag}}" />
{% endfor %}
{% if article.summary %}
<meta name="description" content="{{ article.summary|striptags }}">
{% else %}
<meta name="description" content="{{ article.title|striptags }}">
{% endif %}
<!-- Twitter Card Things-->
{% if article.photo_image %}
<meta name="twitter:card" content="summary_large_image" />
{% else %}
<meta name="twitter:card" content="summary" />
{% endif %}
{% if SOCIAL_TWIITER %}
<meta name="twitter:site" content="@{{ SOCIAL_TWIITER }}" />
{% endif %}
<meta property="twitter:domain" content="jeffmackinnon.com">
{% if article.summary %}
<meta name="twitter:description" content="{{ article.summary|striptags }}" />
{% else %}
<meta name="twitter:description" content="Read the full post at jeffmackinnon.com" />
{% endif %}
{% if article.photo_image %}
<meta name="twitter:image" content="{{ SITEURL }}/{{ article.photo_image[1] }}" />
{% endif %}
<!-- Open Graph Tags-->
<meta property="og:site_name" content="{{ SITENAME }}" />
@ -60,7 +39,7 @@
<link rel="stylesheet" type="text/css" href="/hashover/themes/default/comments.css">
{% endif %}
<link rel="canonical" href="{{ SITEURL }}/{{ article.url }}" />
<link rel="canonical" href="{{ SITEURL }}/{{ article.url }}" />
{% endblock %}
@ -73,45 +52,31 @@
{% block content %}
<section id="content" class="body">
<article>
<header>
<h1 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1>
</header>
<div id="entry-info">
<h2>
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(article) }}
{% if article.authors %}
<p class="pentry"><address class="vcard author">By {% for author in article.authors %}
<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
{% endfor %}
</address></p>
{% endif %}
<p class="pentry">Published: <time class="published" datetime="{{ article.date.isoformat() }}">{{ article.locale_date }}</time></p>
{% if article.modified %}
<p class="pentry">Updated: <time class="modified" datetime="{{ article.modified.isoformat() }}">{{ article.locale_modified }}</time></p>
{% endif %}
{% if SOCIAL_SHARE is sameas true %}
<p class="share">Share this article on:
<span><a class="" href="https://twitter.com/intent/tweet?text={{ article.title|striptags }}&url={{ SITEURL }}/{{ article.url }}{% if SOCIAL_TWITTER %}&via={{ SOCIAL_TWITTER }}{% endif %}" target="_blank" title="Share on Twitter"><i class="fab fa-twitter"></i> Twitter</a></span>
<span><a class="" href="https://www.linkedin.com/sharing/share-offsite/?url={{ SITEURL }}/{{ article.url }}" target="_blank" title="Share via Linkedin"><i class="icon brands fa-linkedin"></i> Linkedin</a></span>
<span><a class="" href="mailto:?subject={{ article.title|striptags }}&body={{ article.summary|striptags }} - {{ SITEURL }}/{{ article.url }}" target="_blank" title="Share via Email"><i class="fas fa-envelope"></i> Email</a></span>
</p>
{% endif %}
</div>
<div class="entry-content">
</header>
{% if article.photo_image and SHOW_TOP_IMAGE == True %}
<a href="{{ SITEURL }}/{{ article.photo_image[1] }}"><img style="display: block; margin: 0 auto 0 0;" src="{{ SITEURL }}/{{ article.photo_image[1] }}" alt="{{ article.image_alt }}"/></a>
<img style="display: block; margin: 0 auto 0 0;" src="{{ SITEURL }}/{{ article.photo_image[1] }}" alt="{{ article.image_alt }}"/>
{% endif %}
{{ article.content }}
{% if article.photo_gallery %}
<br /><br />
{% if USE_LIGHTBOX == True %}
<div class="gallery">
{% for title, gallery in article.photo_gallery %}
<h2>{{ title }}</h2>
{% for name, photo, thumb, exif, caption in gallery %}
<a href="{{ SITEURL }}/{{ photo }}" title="{{ name }}" exif="{{ exif }}" caption="{{ caption }}"><img src="{{ SITEURL }}/{{ thumb }}"></a>
{% endfor %}
{% endfor %}
{% else %}
{% for title, gallery in article.photo_gallery %}
<h2>{{ title }}</h2>
<section class="photo_gallery">
@ -119,73 +84,77 @@
{% for name, photo, thumb, exif, caption in gallery %}
<li class="photo gallery-item"><a href="{{ SITEURL }}/{{ photo }}" target="_blank" title="{{ name }}" exif="{{ exif }}" caption="{{ caption }}"><img src="{{ SITEURL }}/{{ thumb }}"></a></li>
{% endfor %}
</ol></section>
</ol></section>
{% endfor %}
{% endif %}
</div>
<br /><br />
{% endif %}
{% if article.series %}
<div class="post-series">
<p>This post is part {{ article.series.index }} of the "{{ article.series.name }}" series:</p>
<ol class="parts">
{% for part_article in article.series.all %}
<li {% if part_article == article %}class="active"{% endif %}>
<a href='{{ SITEURL }}/{{ part_article.url }}'>{{ part_article.title }}</a>
</li>
<p>This post is part {{ article.series.index }} of the "{{ article.series.name }}" series:</p>
<ol>
{% for part_article in article.series.all %}
<li {% if part_article == article %}class="active"{% endif %}>
<a href='{{ SITEURL }}/{{ part_article.url }}'>{{ part_article.title }}</a>
</li>
{% endfor %}
</ol>
</div>
{% endif %}
<footer>
<p>Published: <time datetime="{{ article.date.isoformat() }}">
{{ article.locale_date }}
</time></p>
{% if article.modified %}
<p>Last updated: <time datetime="{{ article.modified.isoformat() }}">
{{ article.locale_modified }}
</time></p>
{% endif %}
{% if article.authors %}
<address>
By {% for author in article.authors %}
<a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
{% endfor %}
</ol>
</div>
</address>
{% endif %}
<footer id="post-info">
{% if article.category %}
<div class="category">
<p> In <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a></p>
</div>
{% endif %}
{% if article.tags %}
<div class="tags">
Tags:
{% for tag in article.tags %}
<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
{% endfor %}
</div>
{% endif %}
</footer><!-- /.post-info -->
{% if COMMENTS is sameas True %}
<div class="comments">
<h3>Comments</h3>
{{ COMMENT_EMBED }}
</div>
{% if article.category %}
<p>
Category: <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
</p>
{% endif %}
{% if MASTODON_COMMENTS == True and article.mastodon_post_id is defined %}
<div class="comments">
<h3>Comment on Mastodon</h3>
{% include 'include/mastodon-comments.html' %}
</div>
{% if article.tags %}
<p>
Tags:
{% for tag in article.tags %}
<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
{% endfor %}
</p>
{% endif %}
</footer>
{% if TWITTER_COMMENTS is sameas True %}
<div class="comments">
<h3>Comment on Twitter</h3>
<p><strong>To join a conversation on Twitter <a href="https://twitter.com/search?q={{ SITEURL }}/{{ article.url }}">click here</a>.</p>
</div>
{% endif %}
</article>
{% if COMMENTS is sameas True %}
<!-- <h3>Comments</h3> -->
{{ COMMENT_EMBED }}
{% endif %}
<section id="article-footer">
{% if article.photo_image and SHOW_BOTTOM_IMAGE == True %}
<a href="{{ SITEURL }}/{{ article.photo_image[1] }}"><img style="display: block; margin: 0 auto 0 0;" src="{{ SITEURL }}/{{ article.photo_image[2] }}" /></a>
{% endif %}
{% if ARTICLE_FOOTER == true %}
{% include 'include/article_footer.html' %}
{% endif %}
</section>
</div><!-- /.entry-content -->
{% if MASTODON_COMMENTS == True and article.mastodon_post_id is defined %}
<h3>Comment on Mastodon</h3>
{% include 'include/mastodon-comments.html' %}
{% endif %}
{% if article.photo_image and SHOW_BOTTOM_IMAGE == True %}
<a href="{{ SITEURL }}/{{ article.photo_image[1] }}"><img style="display: block; margin: 0 auto 0 0;" src="{{ SITEURL }}/{{ article.photo_image[2] }}" /></a>
{% endif %}
{% if ARTICLE_FOOTER == true %}
{% include 'include/article_footer.html' %}
{% endif %}
{% endblock %}
</section>
{% endblock %}

View file

@ -1,12 +0,0 @@
{% extends "base.html" %}
{% block content %}
<section>
<header class="major">
<h2>{% block header %}{% endblock %}</h2>
</header>
{% include 'include/paginated_posts.html' %}
</section>
{% endblock content %}

View file

@ -1,8 +1,7 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %}
{% block title %}{{ SITENAME|striptags }} - Articles by {{ author }}{% endblock %}
{% block content_title %}
<h2>Articles by {{ author }}</h2>
<h2>Articles by {{ author }}</h2>
{% endblock %}

View file

@ -1,12 +1,12 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Authors{% endblock %}
{% block title %}{{ SITENAME|striptags }} - Authors{% endblock %}
{% block content %}
<h1>Authors on {{ SITENAME }}</h1>
<h2>Authors on {{ SITENAME }}</h2>
<ul>
{% for author, articles in authors|sort %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
{% endfor %}
{% for author, articles in authors|sort %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

184
templates/base-minimal.html Normal file
View file

@ -0,0 +1,184 @@
<!DOCTYPE html>
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
<head>
{% block head %}
<title>{% block title %}{{ SITENAME|striptags }}{% endblock title %}</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/style.css">
<link rel="webmention" href="https://webmention.io/jeffmackinnon.com/webmention" />
{% if SITESUBTITLE %}
<meta name="description" content="{{ SITESUBTITLE }}" />
{% endif %}
{% if STYLESHEET_URL %}
<link rel="stylesheet" type="text/css" href="{{ STYLESHEET_URL }}" />
{% endif %}
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Tags RSS Feed" />
{% endif %}
{% if TRACKING == True %}
{% include 'include/trackingcode.html' %}
{% endif %}
{% endblock head %}
{% block somemorehead %}
{% endblock somemorehead %}
{% if USE_LIGHTBOX == True %}
{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/magnific-popup.css">
{% endif %}
{% endif %}
</head>
<body>
<header>
<hgroup><h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>{% if SITESUBTITLE %}<p>{{ SITESUBTITLE }}</p>{% endif %}</hgroup>
{% if BIO_IMAGE %}
<img src="{{ SITEURL }}/images/{{ BIO_IMAGE }}" style="max-width: 75%; display: inline; float: center; border-radius: 50%;" />
{% endif %}
{% if NOMENU %}
{% else %}
{% if (article and article.navminimal == TRUE) or (page and page.navminimal == TRUE) %}
<nav>
<ul>
<li><b>Menu:</b></li>
{% if MENUITEMS %}
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% endif %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in pages %}
<li><a href="{{ SITEURL }}/{{ p.url }}" {% if p==page %} aria-current="page" {% endif %}>{{ p.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if DISPLAY_CATEGORIES_ON_MENU %}
<ul></ul>
<li><b>Topics:</b></li>
{% for cat, null in categories %}
<li><a href="{{ SITEURL }}/{{ cat.url }}" {% if cat==category %} aria-current="page" {% endif %}>{{ cat}}</a></li>
{% endfor %}
</ul>
{% endif %}
</nav>
{% endif %}
{% endif %}
</header>
<main>
{% block content %}
{% endblock %}
</main>
<footer>
{% if LINKS %}
<nav>
<ul>
<li><b>Blogroll:</b></li>
{% for name, link in LINKS %}
<li><a href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
{% if SOCIAL %}
<nav>
<ul>
<li><b>My Socials</b></li>
{% for name, link in SOCIAL %}
<li><a rel="me" href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
{% if FEED_ALL_ATOM %}
<nav>
<ul>
<li><b>Site FEED(s):</b></li>
<li><a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate">ATOM FEED</a></li>
{% endif %}
{% if FEED_ALL_RSS %}
<li><a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml">RSS FEED</a></li>
</ul>
</nav>
{% endif %} <p>&copy; Jeff Mackinnon. All rights reserved.<br />
<!--Style by: <a href="https://jeffmackinnon.com/i-built-a-pelican-theme.html">Jeff MacKinnon</a><br />-->
{% if POWEREDBY == True %}Proudly powered by <a href="https://getpelican.com/">Pelican</a>, which takes great advantage of <a href="https://www.python.org/">Python</a>.{% endif %}</p>
<a href="https://jeffmackinnon.com/go/canada"><img style="float: right;" alt="" src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/flagfooter.png" /> </a>
{% if SITELICENSE %}{{ SITELICENSE }}{% endif %}
</footer>
{% if USE_LIGHTBOX == True %}
{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
<!-- jQuery 1.7.2+ or Zepto.js 1.0+ -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- Magnific Popup core JS file -->
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/magnific-popup.js"></script>
<script>
$('.gallery').magnificPopup({
delegate: 'a',
type: 'image',
gallery: {
enabled: true,
navigateByImgClick: true,
preload: [1,2]
},
image: {
titleSrc: function(item) {
if (item.el.attr('caption') && item.el.attr('exif')) {
return (item.el.attr('caption').replace(/\\n/g, '<br />') +
'<small>' + item.el.attr('title') + ' - ' + item.el.attr('exif') + '</small>');
}
return item.el.attr('caption').replace(/\\n/g, '<br /><br />') + '<small>' + item.el.attr('exif') + '</small>';
} }
});
</script>
{% endif %}
{% endif %}
{% block content_footer %}
{% endblock %}
</body>
</html>

View file

@ -1,143 +1,220 @@
<!DOCTYPE html>
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
<head>
{% block head %}
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
{% if FAVICON %}
<link rel="icon" type="image/x-icon" href="{{ SITEURL }}/{{ FAVICON }}">
{% endif %}
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/{{ CSS_FILE }}" />
{% if THEME_COLOUR == 1 %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-blue.css" />
{% elif THEME_COLOUR == 0 %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-default.css" />
{% else %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-default.css" />
{% endif %}
<meta name="generator" content="Pelican" />
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
{% endif %}
<head>
{% block head %}
<title>{% block title %}{{ SITENAME|striptags }}{% endblock title %}</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/style.css">
<link rel="webmention" href="https://webmention.io/jeffmackinnon.com/webmention" />
{% if TRACKING == True %}
{% include 'include/trackingcode.html' %}
{% endif %}
<!-- The CSS needs a little work, I want to keep it extra simple
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/pelican.css" />
{% if THEME_COLOUR == 1 %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-blue.css" />
{% elif THEME_COLOUR == 0 %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-default.css" />
{% else %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-default.css" />
{% endif %}
The CSS needs a little work, I want to keep it extra simple-->
{% if SITESUBTITLE %}
<meta name="description" content="{{ SITESUBTITLE }}" />
{% endif %}
{% if STYLESHEET_URL %}
<link rel="stylesheet" type="text/css" href="{{ STYLESHEET_URL }}" />
{% endif %}
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Tags RSS Feed" />
{% endif %}
{% if TRACKING == True %}
{% include 'include/trackingcode.html' %}
{% endif %}
{% endblock head %}
{% block somemorehead %}
{% endblock somemorehead %}
{% if USE_LIGHTBOX == True %}
{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/magnific-popup.css">
{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/magnific-popup.css">
{% endif %}
{% endif %}
{% endif %}
</head>
<body class="is-preload">
<div id="wrapper">
<div id="main">
<div class="inner">
<!-- Header -->
<header id="header">
<strong><a href="{{ SITEURL }}/" class="logo">{{ SITENAME }}{% if SITESUBTITLE %} {{ SITESUBTITLE }}{% endif %}</a></strong>
<ul class="icons">
{% if SOCIAL_MASTODON %}
<li><a href="{{ SOCIAL_MASTODON }}" class="icon brands fa-mastodon" target="_blank" rel="noopener noreferrer"><span class="label">Mastodon</span></a></li>
{% endif %}
{% if SOCIAL_FLICKR %}
<li><a href="https://www.flickr.com/photos/{{ SOCIAL_FLICKR }}" class="icon brands fa-flickr" target="_blank" rel="noopener noreferrer"><span class="label">Flickr</span></a></li>
{% endif %}
{% if SOCIAL_GITHUB %}
<li><a href="https://github.com/{{ SOCIAL_GITHUB }}" class="icon brands fa-github" target="_blank" rel="noopener noreferrer"><span class="label">Github</span></a></li>
{% endif %}
{% if SOCIAL_LINKEDIN %}
<li><a href="https://www.linkedin.com/in/{{ SOCIAL_LINKEDIN }}" class="icon brands fa-linkedin" target="_blank" rel="noopener noreferrer"><span class="label">LinkedIn</span></a></li>
{% endif %}
{% if SOCIAL_YOUTUBE %}
<li><a href="https://www.youtube.com/channel/{{ SOCIAL_YOUTUBE }}" class="icon brands fa-youtube" target="_blank" rel="noopener noreferrer"><span class="label">LinkedIn</span></a></li>
{% endif %}
</head>
{% if FEED_ALL_ATOM %}
<li><a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" class="icon brands fa-atom"><span class="label">atom feed</span></a></li>
{% endif %}
{% if FEED_ALL_RSS %}
<li><a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" class="icon brands fa-rss"><span class="label">rss feed</span></a></li>
{% endif %}
</ul>
</header>
<body>
{% if (page and page.navminimal is defined )%}
{% else %}
<header>
<hgroup><h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>{% if SITESUBTITLE %}<p>{{ SITESUBTITLE }}</p>{% endif %}</hgroup>
{% if BIO_IMAGE %}
<img src="{{ SITEURL }}/images/{{ BIO_IMAGE }}" style="max-width: 75%; display: inline; float: center; border-radius: 50%;" />
{% endif %}
{% if NOMENU %}
{% else %}
<section>
{% block content %}
{% endblock %}
</section>
<nav>
<ul>
<li><b>Menu:</b></li>
{% if MENUITEMS %}
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% endif %}
</div>
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in pages %}
<li><a href="{{ SITEURL }}/{{ p.url }}" {% if p==page %} aria-current="page" {% endif %}>{{ p.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if DISPLAY_CATEGORIES_ON_MENU %}
<ul>
<li><b>Topics:</b></li>
{% for cat, null in categories %}
<li><a href="{{ SITEURL }}/{{ cat.url }}" {% if cat==category %} aria-current="page" {% endif %}>{{ cat}}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
</nav>
</header>
{% endif %}
<main>
{% block content %}
{% endblock %}
</main>
</div>
{% include 'include/sidebar.html' %}
</div>
<footer>
{% if (page and page.navminimal is defined )%}
{% else %}
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/jquery.min.js"></script>
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/browser.min.js"></script>
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/breakpoints.min.js"></script>
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/util.js"></script>
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/main.js"></script>
{% if DISPLAY_CATEGORIES_ON_FOOTER %}
<nav>
<ul>
<li><b>Topics:</b></li>
{% for cat, null in categories %}
<li><a href="{{ SITEURL }}/{{ cat.url }}" {% if cat==category %} aria-current="page" {% endif %}>{{ cat}}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
{% if IMAGETRACKINGCODE %}
{{ IMAGETRACKINGCODE }}
{% endif %}
{% if USE_LIGHTBOX == True %}
{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
<!-- jQuery 1.7.2+ or Zepto.js 1.0+ -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- Magnific Popup core JS file -->
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/magnific-popup.js"></script>
<script>
$('.gallery').magnificPopup({
delegate: 'a',
type: 'image',
gallery: {
enabled: true,
navigateByImgClick: true,
preload: [1,2]
},
image: {
titleSrc: function(item) {
if (item.el.attr('caption') && item.el.attr('exif')) {
return (item.el.attr('caption').replace(/\\n/g, '<br />') +
'<small>' + item.el.attr('title') + ' - ' + item.el.attr('exif') + '</small>');
}
return item.el.attr('title') + '<small>' + item.el.attr('exif') + '</small>';
} }
});
</script>
{% endif %}
{% endif %}
</body>
{% if LINKS %}
<nav>
<ul>
<li><b>Blogroll:</b></li>
{% for name, link in LINKS %}
<li><a href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
{% if SOCIAL %}
<nav>
<ul>
<li><b>My Socials</b></li>
{% for name, link in SOCIAL %}
<li><a rel="me" href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
{% if FEED_ALL_ATOM %}
<nav>
<ul>
<li><b>Site FEED(s):</b></li>
<li><a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate">ATOM FEED</a></li>
{% endif %}
{% if FEED_ALL_RSS %}
<li><a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml">RSS FEED</a></li>
</ul>
</nav>
{% endif %}
{% endif %}
<p>&copy; Jeff Mackinnon. All rights reserved.<br />
<!--Style by: <a href="https://jeffmackinnon.com/i-built-a-pelican-theme.html">Jeff MacKinnon</a><br />-->
{% if POWEREDBY == True %}Proudly powered by <a href="https://getpelican.com/">Pelican</a>, which takes great advantage of <a href="https://www.python.org/">Python</a>.{% endif %}</p>
<a href="https://jeffmackinnon.com/go/canada"><img style="float: right;" alt="" src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/flagfooter.png" /> </a>
{% if SITELICENSE %}{{ SITELICENSE }}{% endif %}
</footer>
{% if USE_LIGHTBOX == True %}
{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
<!-- jQuery 1.7.2+ or Zepto.js 1.0+ -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- Magnific Popup core JS file -->
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/magnific-popup.js"></script>
<script>
$('.gallery').magnificPopup({
delegate: 'a',
type: 'image',
gallery: {
enabled: true,
navigateByImgClick: true,
preload: [1,2]
},
image: {
titleSrc: function(item) {
if (item.el.attr('caption') && item.el.attr('exif')) {
return (item.el.attr('caption').replace(/\\n/g, '<br />') +
'<small>' + item.el.attr('title') + ' - ' + item.el.attr('exif') + '</small>');
}
return item.el.attr('caption').replace(/\\n/g, '<br /><br />') + '<small>' + item.el.attr('exif') + '</small>';
} }
});
</script>
{% endif %}
{% endif %}
{% block content_footer %}
{% endblock %}
</body>
</html>

View file

@ -1,12 +1,12 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Categories{% endblock %}
{% block title %}{{ SITENAME|striptags }} - Categories{% endblock %}
{% block content %}
<h1>Categories on {{ SITENAME }}</h1>
<h2>Categories on {{ SITENAME }}</h2>
<ul>
{% for category, articles in categories|sort %}
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> ({{ articles|count }})</li>
{% endfor %}
{% for category, articles in categories|sort %}
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

View file

@ -1,9 +1,7 @@
{% extends "articles_list_page.html" %}
{% extends "index.html" %}
{% block title %}{{ category }}{% endblock %}
{% block title %}{{ SITENAME|striptags }} - {{ category }} category{% endblock %}
{% block meta_description %}
<meta name="description" content="{{ SITENAME }} articles about {{ category }}">
{% block content_title %}
<h2>Articles in the {{ category }} category</h2>
{% endblock %}
{% block header %}All posts in category: {{ category }}{% endblock %}

View file

@ -1,15 +1,5 @@
<section id="banner">
<div class="content">
<header class="major">
<h2>Our Newsletter</h2>
</header>
<p>We also have a weekly-ish newsletter where I keep you up to date with my thoughts on the industry, practical tutorials and more.</p>
<ul class="actions">
<li><a href="nl/" class="button big">Learn More</a></li>
</ul>
</div>
<span class="image object">
<script async data-uid="c20eb8a248" src="https://jeffmackinnon.ck.page/c20eb8a248/index.js"></script>
</span>
<!-- Add what you want at the bottom of the article here.
Make sure that you enable it in pelicanconf.py -->
</section>

View file

@ -1,55 +0,0 @@
<!-- This is from an old version of JMK Engineering. At some point I will update it with something generic.-->
<header class="major">
<h2>Cornerstone Content</h2>
</header>
<div class="posts">
<article>
<header>
<h2 id="indexheader"><a href="https://jmkengineering.com/electrical-safety/" rel="bookmark" title="Electrical Safety">Electrical Safety</a></h2>
</header>
<a href="https://jmkengineering.com/electrical-safety/" class="image"><img src="https://jmkengineering.com/images/adobestock514814a.jpg" style="max-width: 100%; display: inline; float: center;" /></a>
<div class="entry-content">Electrical safety is a nebulous thing, but we define it as the set of systems designed to lower the risks associated with the electrical hazards of shock, arc flash and arc blast, to an acceptable level. In our day-to-day life this is handled for us</div>
<br />
<ul class="actions">
<li><a href="https://jmkengineering.com/electrical-safety/" class="button">Learn More</a></li>
</ul>
<br />
</article>
<!--
<article>
<header>
<h2 id="indexheader"><a href="https://jmkengineering.com/power-system-studies/" rel="bookmark" title="Power System Studies">Power System Studies</a></h2>
</header>
<a href="https://jmkengineering.com/power-system-studies/" class="image"><img src="images/mcc-room.jpg" style="max-width: 100%; display: inline; float: center;" /></a>
<div class="entry-content">Power System Studies are important.</div>
<br />
<ul class="actions">
<li><a href="https://jmkengineering.com/power-system-studies/" class="button">Learn More</a></li>
</ul>
<br />
</article> -->
<article>
<header>
<h2 id="indexheader"><a href="https://jmkengineering.com/solar-design/" rel="bookmark" title="olar Design">Solar Design</a></h2>
</header>
<a href="https://jmkengineering.com/solar-design/" class="image"><img src="images/pv-solar-array.jpg" style="max-width: 100%; display: inline; float: center;" /></a>
<div class="entry-content"><p>This page we will focus on PV solar, however concepts like solar angles, radiation vs irradiation, etc will be helpful regardless of type.</p><p>
Before getting into the details like off-grid vs grid connected, power draw, VOC, etc; I want to introduce some of the basic concepts starting with solar angles.</p></div>
<br />
<ul class="actions">
<li><a href="https://jmkengineering.com/solar-design/" class="button">Learn More</a></li>
</ul>
<br />
</article>
</div>

View file

@ -1,72 +0,0 @@
<!DOCTYPE html>
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
<head>
{% block head %}
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
{% if FAVICON %}
<link rel="icon" type="image/x-icon" href="{{ SITEURL }}/{{ FAVICON }}">
{% endif %}
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/{{ CSS_FILE }}" />
{% if THEME_COLOUR == 1 %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-blue.css" />
{% elif THEME_COLOUR == 0 %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-default.css" />
{% else %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/colour-default.css" />
{% endif %}
<meta name="generator" content="Pelican" />
{% if TRACKING == True %}
{% include 'include/trackingcode.html' %}
{% endif %}
{% endblock head %}
</head>
<body class="is-preload">
<div class="linktree">
<header>
<h1>{{ page.title }}</h1>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}
</header>
<div class="linkwrapper">
{% for name, link in SOCIAL %}
<a class="linktreelink" href="{{ link }}" target="_blank" rel="me"><i>{{ name }}</i></a>
{% endfor %}
<div class="social-links">
{% if SOCIAL_MASTODON %}
<a href="{{ SOCIAL_MASTODON }}" target="_blank" rel="noopener noreferrer"><i class="fab fa-mastodon" alt="" aria-hidden="true"></i></a>
{% endif %}
{% if SOCIAL_FLICKR %}
<a href="https://www.flickr.com/photos/{{ SOCIAL_FLICKR }}" class="icon brands fa-flickr" target="_blank" rel="noopener noreferrer"><span class="label">Flickr</span></a>
{% endif %}
{% if SOCIAL_GITHUB %}
<a href="https://github.com/{{ SOCIAL_GITHUB }}" target="_blank" rel="noopener noreferrer"><i class="fab fa-github" alt="" aria-hidden="true"></i></a>
{% endif %}
{% if SOCIAL_LINKEDIN %}
<a href="https://www.linkedin.com/in/{{ SOCIAL_LINKEDIN }}" class="icon brands fa-linkedin" target="_blank" rel="noopener noreferrer"><span class="label">LinkedIn</span></a>
{% endif %}
{% if SOCIAL_YOUTUBE %}
<a href="https://www.youtube.com/channel/{{ SOCIAL_YOUTUBE }}" target="_blank" rel="noopener noreferrer">
<i class="fab fa-youtube" alt="" aria-hidden="true"></i>
</a>
{% endif %}
{% if CONTACT_EMAIL %}
<a href="mailto:{{CONTACT_EMAIL}}" aria-label="Email" title="Email" target="_blank">
<i class="fas fa-envelope" alt="" aria-hidden="true"></i>
</a>
{% endif %}
</div>
</div>
</div>
{% if IMAGETRACKINGCODE %}
{{ IMAGETRACKINGCODE }}
{% endif %}
</body>
</html>

View file

@ -1,11 +0,0 @@
<section>
<header>
<h1>The Frontpage</h1>
</header>
<p>This is my minimal homepage. I post things here sometimes.</p>
<p>If you want to know what I'm up to <a href="pages/now.html">now click here</a> if you want to know a little more about me <a href="pages/about.html">click here</a>. </p>
{% include 'include/minimal_posts.html' %}
</section>

View file

@ -1,6 +0,0 @@
<ul>
{% for article in articles_page.object_list %}
<li><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a> </li>
{% endfor %}
</il>

View file

@ -1,45 +0,0 @@
<div class="posts">
{% for article in articles_page.object_list %}
<article>
{% if INCLUDE_IMAGE == True %}
{% if article.photo_image %}
<a href="{{ SITEURL }}/{{ article.url }}" class="image"><img src="{{ SITEURL }}/{{ article.photo_image[2] }}" style="max-width: 100%; display: inline; float: center;" /></a>
{% endif %}
{% endif %}
{% if (article.category != MICROBLOG ) %}
{% if INCLUDE_TITLE != False %}
<header>
<h2 id="indexheader"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
</header>
{% endif %}
{% endif %}
{% if (article.category != MICROBLOG)%}
{% if INCLUDE_SUMMARY != False %}
<div class="entry-content"> {{ article.summary }} </div>
{% if INCLUDE_CATEGORY == True %}
{% if article.category %}
<div class="category">
Posted in: <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
</div>
{% endif %}
{% endif %}
{% endif %}
{% if MOREBUTTON == True %}
<br />
<ul class="actions">
<li><a href="{{ SITEURL }}/{{ article.url }}" class="button">More</a></li>
</ul>
<br />
{% endif %}
<!-- /.entry-content -->
{% endif %}
</article>
{% endfor %}
<!-- /#posts-list -->
</div>
<div>
{% if articles_page.has_other_pages() %}
{% include 'include/pagination.html' %}
{% endif %}
</div>

View file

@ -1,15 +1,17 @@
{% if DEFAULT_PAGINATION %}
{% set first_page = articles_paginator.page(1) %}
{% set last_page = articles_paginator.page(articles_paginator.num_pages) %}
<p class="paginator">
{% if articles_page.has_previous() %}
<a href="{{ SITEURL }}/{{ first_page.url }}">&#8647;</a>
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}">&laquo;</a>
{% endif %}
Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
{% if articles_page.has_next() %}
<a href="{{ SITEURL }}/{{ articles_next_page.url }}">&raquo;</a>
<a href="{{ SITEURL }}/{{ last_page.url }}">&#8649;</a>
{% endif %}
</p>
{% set first_page = articles_paginator.page(1) %}
{% set last_page = articles_paginator.page(articles_paginator.num_pages) %}
<nav style="text-align: center;">
<ul>
{% if articles_page.has_previous() %}
<li><a href="{{ SITEURL }}/{{ first_page.url }}">&Lang;</a></li>
<li><a href="{{ SITEURL }}/{{ articles_previous_page.url }}">&lang;</a></li>
{% endif %}
<li>Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}</li>
{% if articles_page.has_next() %}
<li><a href="{{ SITEURL }}/{{ articles_next_page.url }}">&rang;</a></li>
<li><a href="{{ SITEURL }}/{{ last_page.url }}">&Rang;</a></li>
{% endif %}
</ul>
</nav>
{% endif %}

View file

@ -1,190 +0,0 @@
<div id="sidebar">
<div class="inner">
<!-- Search -->
{% if DUCKDUCKGOSEARCHURL %}
<section id="search" class="alt">
<iframe src="https://duckduckgo.com/search.html?site={{ DUCKDUCKGOSEARCHURL }}&prefill=Search" style="overflow:hidden;margin:0;padding:0;width:300px;height:40px;" frameborder="0"></iframe>
</section>
{% endif %}
{% if BIO_IMAGE %}
<section id="bio">
<img src="{{ SITEURL }}/images/{{ BIO_IMAGE }}" style="max-width: 75%; display: inline; float: center; border-radius: 50%;" />
</section>
{% endif %}
<!-- Menu -->
<nav id="menu">
<header class="major">
<h2>Pages</h2>
</header>
<ul>
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in pages %}
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
{% endfor %}
{% endif %}
</ul>
{% if DISPLAY_CATEGORIES_ON_MENU %}
<br />
<br />
<header class="major">
<h2>Categories</h2>
</header>
<ul>
{% for cat, null in categories %}
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
{% endfor %}
</ul>
{% endif %}
</nav>
<!-- Section --> <!-- No mini posts for now
<section>
<header class="major">
<h2>Ante interdum</h2>
</header>
<div class="mini-posts">
<article>
<a href="#" class="image"><img src="images/pic07.jpg" alt="" /></a>
<p>Aenean ornare velit lacus, ac varius enim lorem ullamcorper dolore aliquam.</p>
</article>
<article>
<a href="#" class="image"><img src="images/pic08.jpg" alt="" /></a>
<p>Aenean ornare velit lacus, ac varius enim lorem ullamcorper dolore aliquam.</p>
</article>
<article>
<a href="#" class="image"><img src="images/pic09.jpg" alt="" /></a>
<p>Aenean ornare velit lacus, ac varius enim lorem ullamcorper dolore aliquam.</p>
</article>
</div>
<ul class="actions">
<li><a href="#" class="button">More</a></li>
</ul>
</section> -->
{% if LINKS %}
<section id="blogroll">
<header class="major">
<h2>Blogroll</h2>
</header>
{% for name, link in LINKS %}
<li><a href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</section>
{% endif %}
{% if SOCIAL %}
<section id="social">
<header class="major">
<h2>My Socials</h2>
</header>
{% for name, link in SOCIAL %}
<li><a rel="me" href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</section>
{% endif %}
{% if series.items() %}
<!-- Section - The various series -->
<section id="article-series">
<header class="major">
<h2>Here are some post series</h2>
</header>
{% for series_name, series_articles in series.items() %}
{% set article = series_articles[0] %}
<article class="card">
<div class="card-body">
<a href="{{ SITEURL }}/{{ article.url }}"><h3 class="card-title">{{ series_name }}</h3></a>
<ul class="actions">
<li><a href="{{ SITEURL }}/{{ article.url }}" class="button">Start</a></li>
</ul>
</div>
</article>
{% endfor %}
</section>
{% endif %}
{% if WEBRING_FEED_URLS %}
<section>
<div class="webring">
<h2>Webring</h2>
{% for article in webring_articles %}
<p><a href="{{ article.link }}">{{ article.title }}</a></p>
<p>{{ article.date|strftime('%d %B %Y') }}<!-- {{ article.summary}}--></p>
{% endfor %}
</div>
</section>
{% endif %}
{% if FEDIRING is sameas True %}
<section>
<div class="webring">
<h2>Webring - Fediverse</h2>
<p>
<a href="https://fediring.net/previous?host={{ FEDIRINGURL }}">(PREV)</a>
<a href="https://fediring.net/">Fediring</a>
<a href="https://fediring.net/next?host={{ FEDIRINGURL }}">(NEXT)</a>
</p>
{% if FEDIRINGRANDOM is sameas True %}
<p>
<a href="https://fediring.net/random">Fediring Random</a>
</p>
{% endif %}
</div>
</section>
{% endif %}
{% if CONTACT_EMAIL or CONTACT_PHONE_NUM or CONTACT_HOME_ADDR %}
<section>
<header class="major">
<h2>Get in touch</h2>
</header>
<ul class="contact">
{% if CONTACT_EMAIL %}
<li class="icon sold fa-envelope">{{ CONTACT_EMAIL }}</li>
{% endif %}
{% if CONTACT_PHONE_NUM %}
<li class="icon solid fa-phone">{{ CONTACT_PHONE_NUM }}</li>
{% endif %}
{% if CONTACT_HOME_ADDR %}
<li class="icon solid fa-home">{{ CONTACT_HOME_ADDR }}</li>
{% endif %}
</ul>
</section>
{% endif %}
{% if THEME_DARKMODE == 1 %}
<img src="https://media.geeksforgeeks.org/wp-content/uploads/20200122115631/GeeksforGeeks210.png"/>
<div>
<button onclick="darkMode()">Darkmode</button>
</div>
<script>
function darkMode() {
var element = document.body;
element.classList.toggle("dark-mode");
}
</script>
{% endif %}
<!-- Footer -->
<footer id="footer">
<p class="copyright">&copy; Untitled. All rights reserved.<br />
Original design inspired by: <a href="https://html5up.net">HTML5 UP</a>.<br />
Modifed by <a href="https://jeffmackinnon.com/i-built-a-pelican-theme.html">Jeff MacKinnon</a><br />
{% if POWEREDBY == True %}Proudly powered by <a href="https://getpelican.com/">Pelican</a>, which takes great advantage of <a href="https://www.python.org/">Python</a>.{% endif %}
</p>
{% if SITELICENSE %}
{{ SITELICENSE }}
{% endif %}
</footer>
</div>
</div>

View file

@ -1,54 +1,62 @@
{% extends "base.html" %}
{% block content %}
{% if MINIMAL == True %}
{% include 'include/minimal_homepage.html' %}
{% else%}
{% if BANNER == True %}
<!-- Banner -->
<section id="banner">
<div class="content">
<header>
<h1>{{ TAGLINEHEAD }}</h1>
{% if TAGLINESUBHEAD %}
<p>{{ TAGLINESUBHEAD }}</p>
{% endif %}
</header>
<p>{{ TAGLINE }}</p>
<ul class="actions">
<li><a href="{{ BANNERLINK }}" class="button big">Learn More</a></li>
</ul>
</div>
<span class="image object">
<img src="{{ BANNERIMAGE }}" alt="" />
</span>
</section>
{% endif %}
{% block head %}
{{ super() }}
{% if CORNERSTONE_CONTENT == True %}
<!-- Cornerstone Pages -->
<section id="cornerstone_pages">
{% include 'include/cornerstone.html' %}
<br />
<br />
</section>
{% endif %}
<style>
/* The only class is for the post lists, if I didn't have the pesky images, I could have a simple list here too */
.posts {
display: flex;
flex-wrap: wrap;
width: 100%;
}
.posts h2 {margin:0em;}
.posts img {
display: inline;
float: left;
padding-right: 25px;
}
{% if NEWSLETTER %}
<section id="banner">
{% include 'include/newsletter.html' %}
</style>
</section>
{% endif %}
<section>
{% block content_title %}
<header class="major">
<h2>Articles</h2>
</header>
{% endblock %}
{% include 'include/paginated_posts.html' %}
</section><!-- /#content -->
{% endif %}
{% block content %}
<div class="posts">
{% block content_title %}
<h2>All articles</h2>
{% endblock %}
{% for article in articles_page.object_list %}
<article>
<header> <h3><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h3> </header>
<section>
{% if INCLUDE_IMAGE == True %}
{% if article.photo_image %}
<a href="{{ SITEURL }}/{{ article.url }}" class="image">
<img style="display: inline; float: left;" src="{{ SITEURL }}/{{ article.photo_image[2] }}" />
</a>
{% endif %}
{% endif %}
{{ article.summary }}
</section>
<!-- <footer>
<p>Published: <time datetime="{{ article.date.isoformat() }}"> {{ article.locale_date }} </time>
<address>By
{% for author in article.authors %}
<a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
{% endfor %}
</address></p>
</footer>
-->
</article>
{% endfor %}
</div>
{% if articles_page.has_other_pages() %}
{% include 'include/pagination.html' %}
{% endif %}
{% endblock content %}

View file

@ -1,17 +1,13 @@
{% if page.linktree %}
{% include 'include/links.html' %}
{% else %}
{% extends "base.html" %}
{% block html_lang %}{{ page.lang }}{% endblock %}
{% block title %}{{ SITENAME }} - {{ page.title|striptags }}{%endblock%}
{% block title %}{{ SITENAME|striptags }} - {{ page.title|striptags }}{%endblock%}
{% block head %}
{% if page.status == "hidden" %}
<meta name="robots" content="noindex">
<meta name="robots" content="nofollow">
<meta name="robots" content="noarchive">
<meta name="robots" content="noindex">
<meta name="robots" content="nofollow">
<meta name="robots" content="noarchive">
{% endif %}
{{ super() }}
@ -23,35 +19,31 @@
<link rel="canonical" href="{{ SITEURL }}/{{ page.url }}" />
{% endblock %}
{% block somemorehead %}
{% if page.specialcss %}
{% if page.specialcss %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css-include/{{ page.specialcss }}">
{% endif %}
{% endif %}
{% endblock somemorehead %}
<section id="content" class="body">
{% block content %}
<header>
<h1>{{ page.title }}</h1>
{% block content %}
<article>
<header>
<h2>{{ page.title }}</h2>
</header>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}
</header>
<div>
{{ page.content }}
{% if page.modified %}
<footer id="post-info">
<p>Last updated: {{ page.locale_modified }}</p>
</footer>
<footer>
<p>
Last updated: {{ page.locale_modified }}
</p>
</footer>
{% endif %}
</div>
</section>
</article>
{% endblock %}
{% endif %}

View file

@ -1,10 +1,14 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - {{ period | reverse | join(' ') }} archives{% endblock %}
{% block title %}{{ SITENAME|striptags }} - {{ period | reverse | join(' ') }} archives{% endblock %}
{% block content %}
<h1>Archives for {{ period | reverse | join(' ') }}</h1>
{% include 'include/archive_list.html' %}
<h2>Archives for {{ period | reverse | join(' ') }}</h2>
<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
{% endblock %}

View file

@ -0,0 +1,102 @@
{% extends "base.html" %}
{% block head %}
{{ super() }}
<style>
.linktree{
padding:20%;
padding-top:1%;
padding-bottom:1%;
text-align: center;
}
.linktreelink{
text-align: center;
margin-top: 1px;
padding: 20px 0;
max-width: 590px;
display: block;
margin-left: auto;
margin-right: auto;
margin-top:10px;
background-color:#f56a6a;
color:white;
text-decoration:none;
border-radius: 40px;
}
.linktreelink a {
border-bottom: none;
}
.linktreelink:hover{
color:#f56a6a;
background-color:white;
border: 2px solid;
border-color:#f56a6a;
}
.linktree img {
max-width: 75%; display: inline; float: center; border-radius: 50%;
}
</style>
{% endblock %}
{% block content %}
<div class="linktree">
<header>
<H1>All of {% for author in page.authors %}
{{ author }}'s
{% endfor %} Links</H1>
{% if BIO_IMAGE_LINKS %}
<img src="{{ SITEURL }}/images/{{ BIO_IMAGE_LINKS }}"/>
{% endif %}
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}
</header>
<div class="linkwrapper">
{% if SOCIAL %}
<h2>Where to Find Me</h2>
{% for name, link in SOCIAL %}
<a class="linktreelink" href="{{ link }}" target="_blank" rel="me"><i>{{ name }}</i></a>
{% endfor %}
{% endif %}
{% if OTHER_LINKTREE_LINKS %}
<h2>Other important Links</h2>
{% for name, link in OTHER_LINKTREE_LINKS %}
<a class="linktreelink" href="{{ link }}" target="_blank"><i>{{ name }}</i></a>
{% endfor %}
{% endif %}
{% if FEED_ALL_ATOM or FEED_ALL_RSS %}
<h2>Feed Links</h2>
{% if FEED_ALL_ATOM %}
<a class="linktreelink" target="_blank" href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate">ATOM FEED</a>
{% endif %}
{% if FEED_ALL_RSS %}
<a class="linktreelink" target="_blank" href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml">RSS FEED</a>
{% endif %}
{% endif %}
{% if OTHER_FEED_LINKS %}
<h2>Other Feeds I think you should follow</h2>
{% for name, link in OTHER_FEED_LINKS %}
<a class="linktreelink" href="{{ link }}" target="_blank"><i>{{ name }}</i></a>
{% endfor %}
{% endif %}
{% if CONTACT_EMAIL %}
<a href="mailto:{{CONTACT_EMAIL}}" aria-label="Email" title="Email" target="_blank"> </a>
{% endif %}
</div>
</div>
</div>
{% endblock content %}

View file

@ -0,0 +1,25 @@
{% extends "page.html" %}
{% block head%}
{{ super() }}
<style>
/************************************************/
/* This is the stuff for my reading library */
.wip {
width: 150px;
opacity: 75%;
border: 5px solid #d11586
}
.read {
width: 150px;
}
.dnf {
width: 150px;
opacity: 75%;
filter: grayscale(100%);
}
</style>
{% endblock head%}

View file

@ -0,0 +1,31 @@
{% extends "article.html" %}
{% block head%}
{{ super() }}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/recipestyle.css">
{% endblock head %}
{% block content_footer %}
<!-- This print script is based on this website - https://www.geeksforgeeks.org/print-the-contents-of-a-div-element-using-javascript/ -->
<script>
function printDiv() {
let divContents = document.getElementById("recipe").innerHTML;
let printWindow = window.open('', '', 'height=500, width=850');
printWindow.document.open();
printWindow.document.write(`
<html>
<head>
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/recipestyle.css">
</head>
<body>
${divContents}
</body>
</html>
`);
printWindow.document.close();
printWindow.print();
}
</script>
{% endblock content_footer %}

View file

@ -1,9 +1,7 @@
{% extends "articles_list_page.html" %}
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - {{ tag }} tag{% endblock %}
{% block title %}{{ SITENAME|striptags }} - {{ tag }} tag{% endblock %}
{% block meta_description %}
<meta name="description" content="{{ SITENAME }} articles about {{ tag }}">
{% block content_title %}
<h2>Articles tagged with {{ tag }}</h2>
{% endblock %}
{% block header %}All posts tagged: {{ tag }}{% endblock %}

View file

@ -1,12 +1,12 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Tags{% endblock %}
{% block title %}{{ SITENAME|striptags }} - Tags{% endblock %}
{% block content %}
<h1>Tags for {{ SITENAME }}</h1>
<h2>Tags for {{ SITENAME }}</h2>
<ul>
{% for tag, articles in tags|sort %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
{% endfor %}
{% for tag, articles in tags|sort %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

View file

@ -1,16 +1,16 @@
{% macro translations_for(article) %}
{% if article.translations %}
Translations:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}" hreflang="{{ translation.lang }}">{{ translation.lang }}</a>
{% endfor %}
{% endif %}
{% if article.translations %}
Translations:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}" hreflang="{{ translation.lang }}">{{ translation.lang }}</a>
{% endfor %}
{% endif %}
{% endmacro %}
{% macro entry_hreflang(entry) %}
{% if entry.translations %}
{% for translation in entry.translations %}
<link rel="alternate" hreflang="{{ translation.lang }}" href="{{ SITEURL }}/{{ translation.url }}">
{% endfor %}
{% endif %}
{% if entry.translations %}
{% for translation in entry.translations %}
<link rel="alternate" hreflang="{{ translation.lang }}" href="{{ SITEURL }}/{{ translation.url }}">
{% endfor %}
{% endif %}
{% endmacro %}

15
test/content/timeline.rst Normal file
View file

@ -0,0 +1,15 @@
Test Timeline
===================
:date: 2025-03-02
:author: jeffmackinnon
:slug: timeline
:status: published
:specialcss: timeline.css
This is a test for a way to add timelines to a site.
.. raw:: html
:file: ../includes/testtimeline.html
Unfortuneatly it requires an HTML source, and rather than having to write that out myself, I think I will come up with a way to make them with a little template script.

View file

@ -0,0 +1,67 @@
<!-- The Timeline -->
<ul class="timeline">
<!-- Item 1 -->
<li>
<div class="direction-r">
<div class="flag-wrapper">
<span class="flag">Start</span>
<span class="time-wrapper"><span class="time">Jul 2022</span></span>
</div>
<div class="desc">
I created my Pelican Theme and posted it to Github
</div>
</div>
</li>
<!-- Item 2 -->
<li>
<div class="direction-l">
<div class="flag-wrapper">
<span class="flag">Website</span>
<span class="time-wrapper"><span class="time">July 2023</span></span>
</div>
<div class="desc">
I created my page describing how I set up my pelican site. Note: I should update that </div>
</div>
</li>
<!-- Item 3 -->
<li>
<div class="direction-r">
<div class="flag-wrapper">
<span class="flag">Github</span>
<span class="time-wrapper"><span class="time">July 2023</span></span>
</div>
<div class="desc">
I moved my theme to my own self-hosted repo </div>
</div>
</li>
<!-- Item 4 -->
<li>
<div class="direction-l">
<div class="flag-wrapper">
<span class="flag">Gitea</span>
<span class="time-wrapper"><span class="time">2024</span></span>
</div>
<div class="desc">
"Hackers" defaced my gitea server so I made it private. Well they didn't hack it, I left registrations open like a noob.
</div>
</div>
</li>
<li>
<div class="direction-r">
<div class="flag-wrapper">
<span class="flag">Pelican</span>
<span class="time-wrapper"><span class="time">Mar 2025</span></span>
</div>
<div class="desc">
I made this theme and started testing it.</div>
</div>
</li>
</ul>

View file

@ -59,7 +59,9 @@ THEME_COLOUR = 0 # Pick the colour.
# 0 => default
# 1 => Blue
SITELICENSE = '<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.'
REMOVEFLAG = False
SITELICENSE = '<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a>.'
TRACKING = False
IMAGETRACKINGCODE = ''