Initial commit
9
.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
.cabal-sandbox
|
||||
cabal.sandbox.config
|
||||
dist/
|
||||
_cache
|
||||
public
|
||||
.cabal-sandbox
|
||||
.stack-work
|
||||
thumb/
|
||||
thumbs.db
|
||||
10
default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
(import (
|
||||
let
|
||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||
in fetchTarball {
|
||||
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||
}
|
||||
) {
|
||||
src = ./.;
|
||||
}).defaultNix
|
||||
128
flake.lock
generated
Normal file
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650374568,
|
||||
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650374568,
|
||||
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hakyll-contrib-tojnar": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650900302,
|
||||
"narHash": "sha256-QlFO0Q2m/wMlMbMDiV+ggVIqyNQ+b/eVGqQhb9VxaKc=",
|
||||
"owner": "tojnar.cz",
|
||||
"repo": "hakyll-contrib-tojnar",
|
||||
"rev": "5e0e94b9df6d36776e1bbd1ed5a01f7efb8cacf5",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tojnar.cz",
|
||||
"repo": "hakyll-contrib-tojnar",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1650792148,
|
||||
"narHash": "sha256-n1MZSZIzvP70BJ56tV8GwQ5L0wHt/nTH9UkF5HTGB/4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ab83c5d70528f1edc7080dead3a5dee61797b3ff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1662096612,
|
||||
"narHash": "sha256-R+Q8l5JuyJryRPdiIaYpO5O3A55rT+/pItBrKcy7LM4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "21de2b973f9fee595a7a1ac4693efff791245c34",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"hakyll-contrib-tojnar": "hakyll-contrib-tojnar",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"utils": "utils_2"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1649676176,
|
||||
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
58
flake.nix
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
description = "HROB 2022 Website";
|
||||
|
||||
inputs = {
|
||||
flake-compat = {
|
||||
url = "github:edolstra/flake-compat";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
hakyll-contrib-tojnar.url = "gitlab:tojnar.cz/hakyll-contrib-tojnar";
|
||||
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, flake-compat, hakyll-contrib-tojnar, nixpkgs, utils }:
|
||||
utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
haskellPackages = pkgs.haskellPackages.override {
|
||||
overrides = final: prev: {
|
||||
hrob2022-krk-litvinov-cz = final.callPackage ./hrob2022-krk-litvinov-cz.nix { };
|
||||
} // hakyll-contrib-tojnar.haskellOverlay final prev;
|
||||
};
|
||||
|
||||
in {
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
buildInputs = [
|
||||
self.packages.${system}.default
|
||||
];
|
||||
};
|
||||
|
||||
haskell = self.packages.${system}.hrob2022-krk-litvinov-cz.env.overrideAttrs (attrs: {
|
||||
nativeBuildInputs = attrs.nativeBuildInputs ++ [
|
||||
pkgs.cabal-install
|
||||
];
|
||||
});
|
||||
};
|
||||
|
||||
packages = rec {
|
||||
hrob2022-krk-litvinov-cz = haskellPackages.hrob2022-krk-litvinov-cz;
|
||||
|
||||
default = hrob2022-krk-litvinov-cz;
|
||||
};
|
||||
|
||||
apps = rec {
|
||||
hrob2022-krk-litvinov-cz = utils.lib.mkApp {
|
||||
drv = self.packages.${system}.hrob2022-krk-litvinov-cz;
|
||||
};
|
||||
|
||||
default = hrob2022-krk-litvinov-cz;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
17
hrob2022-krk-litvinov-cz.cabal
Normal file
@@ -0,0 +1,17 @@
|
||||
name: hrob2022-krk-litvinov-cz
|
||||
version: 0.0.1
|
||||
build-type: Simple
|
||||
cabal-version: >= 1.10
|
||||
|
||||
executable site
|
||||
main-is: site.hs
|
||||
hs-source-dirs: src
|
||||
build-depends:
|
||||
base >= 4.8 && < 5,
|
||||
containers >= 0.5 && < 0.7,
|
||||
hakyll >= 4.9 && < 4.16,
|
||||
hakyll-contrib-tojnar >= 0.0.1 && < 0.2.0,
|
||||
filepath >= 1.4 && < 1.5,
|
||||
pandoc >= 2.0 && < 2.18
|
||||
ghc-options: -threaded -Wall -fno-warn-tabs
|
||||
default-language: Haskell2010
|
||||
31
hrob2022-krk-litvinov-cz.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ mkDerivation
|
||||
, base
|
||||
, containers
|
||||
, filepath
|
||||
, hakyll
|
||||
, hakyll-contrib-tojnar
|
||||
, pandoc
|
||||
, lib
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
pname = "hrob2022-krk-litvinov-cz";
|
||||
version = "0.0.1";
|
||||
|
||||
# Keep the contents of the src/ directory and top-level .cabal file.
|
||||
src = lib.sourceByRegex ./. [ "^src(/.+|$)" "[^/]+\.cabal$" ];
|
||||
|
||||
isLibrary = false;
|
||||
isExecutable = true;
|
||||
|
||||
executableHaskellDepends = [
|
||||
base
|
||||
containers
|
||||
filepath
|
||||
hakyll
|
||||
hakyll-contrib-tojnar
|
||||
pandoc
|
||||
];
|
||||
|
||||
license = lib.licenses.mit;
|
||||
}
|
||||
29
images/icon.svg
Normal file
@@ -0,0 +1,29 @@
|
||||
<svg width="100" height="100" version="1.0" viewBox="0 0 1050 952" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1.0608 0 0 1.097 -22.697 -96.476)">
|
||||
<circle transform="matrix(-1.0002 -.51969 .53746 -.96726 563.21 1187.4)" cx="323.32" cy="514.41" r="433.77" fill="#fff" stroke="#000" stroke-width="4.1475"/>
|
||||
<path transform="matrix(1.134 .056927 .058868 -1.0966 119.37 1067.5)" d="m-84.833 367.58a433.77 433.77 0 0 1 338.9 -281.36 433.77 433.77 0 0 1 410.31 160.19l-341.06 268.01z"/>
|
||||
<path d="m523.41 488.52c2.7191-12.97 3.5211-26.387 5.4456-39.603 1.855-11.097 1.7388-22.558 1.8631-33.864 0.40311-41.258 0.14557-82.313 0.67277-123.56-0.54249-10.498 0.736-21.083-0.30288-31.606-1.9313-14.661-3.2767-29.439-5.3321-44.106-1.4194-10.625-11.224-42.324-11.505-43.239-3.8155 12.801-6.0902 27.079-9.6641 40.013-2.1995 8.311-2.8969 15.678-4.4759 24.021-0.75658 9.2277-2.8851 18.227-3.1452 27.48-0.10735 38.144-0.10209 76.361-0.58172 114.49 0.37341 20.358-0.59118 40.718-0.10028 61.202 1.4164 12.709 3.2032 34.631 3.875 47.302z"/>
|
||||
<path d="m533.8 528.01c-9.1252-16.764-20.152-32.907-30.118-49.486-8.1793-14.062-17.601-28.411-27.328-41.685-35.535-48.411-72.046-95.155-107.48-143.63-9.5509-11.933-17.74-25.054-27.705-36.721-14.265-15.966-28.168-32.417-42.536-48.317-10.353-11.559-22.434-17.415-31.999-25.131 5.3953 17.516 0.71246 9.3777 12.49 33.988 5.31 11.096 11.338 20.032 17.342 30.715 7.4219 11.225 13.563 23.001 21.398 33.96 33.063 44.599 66.278 89.217 99.03 134.02 17.986 23.546 34.918 47.893 53.106 71.516 12.162 13.994 32.623 38.524 44.164 52.917z"/>
|
||||
<circle transform="matrix(1.4602 0 0 1.4121 -252.77 -206.45)" cx="523.4" cy="516.02" r="32.012"/>
|
||||
<path d="m318.34 622.95c8.8235-3.4851 18.393-4.3263 27.837-5.4079-5.5923 5.7684-12.303 10.455-17.523 16.464-15.783 16.344-26.967 37.134-30.447 59.367-0.24855 4.5667-0.99419 9.0132-1.6156 13.58-0.24855 7.2105 0.37282 14.421 1.6156 21.511 2.1126 8.2921 3.4797 16.704 7.4564 24.396 4.971 12.739 13.422 24.035 23.115 33.89 8.8234 8.6526 18.02 16.945 25.725 26.559-27.837 1.2018-55.55-10.335-75.31-28.962-6.7108-7.6912-13.546-15.503-18.02-24.636-7.5807-15.262-11.682-32.327-10.315-49.272 1.4913-16.704 6.338-33.409 16.031-47.469 11.806-18.507 30.696-32.207 51.449-40.018z" fill="#fff" stroke="#fff" stroke-width=".11457"/>
|
||||
<g transform="matrix(.71486 0 0 .69129 943.95 289.98)" fill="#fff">
|
||||
<path transform="matrix(.16185 -.12192 .12192 .16185 -649.84 462.91)" d="m-377.09 515.15-81.523 67.773 34.048 92.36-89.648-56.59-77.318 60.922 26.118-102.75-81.833-54.708 105.79-6.9111 26.743-94.733 39.264 98.476z"/>
|
||||
<path transform="matrix(.10084 -.10889 .10889 .10084 -444.46 488.07)" d="m-377.09 515.15-81.523 67.773 34.048 92.36-89.648-56.59-77.318 60.922 26.118-102.75-81.833-54.708 105.79-6.9111 26.743-94.733 39.264 98.476z"/>
|
||||
<path transform="matrix(.19515 -.054574 .054574 .19515 -484.52 679.67)" d="m-377.09 515.15-81.523 67.773 34.048 92.36-89.648-56.59-77.318 60.922 26.118-102.75-81.833-54.708 105.79-6.9111 26.743-94.733 39.264 98.476z"/>
|
||||
<path transform="matrix(.19515 -.054574 .054574 .19515 -463.37 355.53)" d="m-377.09 515.15-81.523 67.773 34.048 92.36-89.648-56.59-77.318 60.922 26.118-102.75-81.833-54.708 105.79-6.9111 26.743-94.733 39.264 98.476z"/>
|
||||
<path transform="matrix(.068647 -.074128 .074128 .068647 -501.14 604.3)" d="m-377.09 515.15-81.523 67.773 34.048 92.36-89.648-56.59-77.318 60.922 26.118-102.75-81.833-54.708 105.79-6.9111 26.743-94.733 39.264 98.476z"/>
|
||||
</g>
|
||||
<path d="m514.67 918.3v81.098" fill="none" stroke="#fff" stroke-width="3.2079"/>
|
||||
<path d="m926.93 523.94h81.147" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m883.7 690.27 77.678 35.426" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m683.71 146.62 31.39-59.175" fill="none" stroke="#000" stroke-width="3.3517"/>
|
||||
<path d="m514.67 47.3v64.121" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m22.899 523.94 71.16 0.46196" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m260.3 930.39 35.069-70.582" fill="none" stroke="#fff" stroke-width="3.2079"/>
|
||||
<path d="m133 344.23-59.189-27.65" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m929.84 264.81-64.288 38.316" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m268.79 185.94-37.484-52.139" fill="none" stroke="#000" stroke-width="3.2079"/>
|
||||
<path d="m96.266 763.71 62.849-37.013" fill="none" stroke="#fff" stroke-width="3.2079"/>
|
||||
<path d="m745.52 844.81 48.767 67.042" fill="none" stroke="#fff" stroke-width="3.2079"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
20
pages/cs/@menu.md
Normal file
@@ -0,0 +1,20 @@
|
||||
[](http://www.rogaining.cz/)[](http://www.caes.cz/)
|
||||
|
||||
[](/en/)
|
||||
|
||||
#### Menu
|
||||
|
||||
* [Novinky](/cs/)
|
||||
|
||||
|
||||
#### Další závody ČAR
|
||||
|
||||
* [6. Sudetské Tojnárkovo Bloudění (25.-27. 9. 2020)](https://bloudeni.krk-litvinov.cz/2020/cs/)
|
||||
* [19. Letní Kraktrek (3.-4. 10. 2020)](http://kraktrek.maweb.eu/)
|
||||
* [Noční můry (16.-17. 10. 2020)](http://mury.play-map.com/)
|
||||
* 23. Brutus Extreme Orienteering (březen 2021)
|
||||
|
||||
|
||||
#### Partneři závodu
|
||||
|
||||
[](http://play-map.com/)
|
||||
4
pages/cs/index.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: Novinky
|
||||
author: Jan Tojnar
|
||||
---
|
||||
11
pages/en/@menu.md
Normal file
@@ -0,0 +1,11 @@
|
||||
[](http://www.rogaining.cz/)[](http://www.caes.cz/)
|
||||
|
||||
[](/cs/)
|
||||
|
||||
#### Menu
|
||||
|
||||
* [News](/en/)
|
||||
|
||||
#### Event partners
|
||||
|
||||
[](http://play-map.com/)
|
||||
4
pages/en/index.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: News
|
||||
author: Jan Tojnar
|
||||
---
|
||||
BIN
pages/files/logo_zachranka.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
pages/images/caes-cerna.gif
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
pages/images/car.gif
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
pages/images/csflag.png
Normal file
|
After Width: | Height: | Size: 634 B |
BIN
pages/images/enflag.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
pages/images/playmap.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
14
readme.md
Normal file
@@ -0,0 +1,14 @@
|
||||
## Requirements
|
||||
* [git](http://git-scm.com/downloads)
|
||||
* [nix](https://nixos.org)
|
||||
* [direnv](https://direnv.net/) (optional)
|
||||
|
||||
## Setting up
|
||||
Run `nix-shell` to enter a shell containing `site` program for controlling the website. If you have `direnv` installed, you can instead run `direnv allow` and it will prepare the correct shell environment automatically, every time you enter the directory.
|
||||
|
||||
## Changing content
|
||||
The website is generated by the `site` program based on the files in `pages/` directory and other directories in this tree. You can trigger the generation a single time by running `site build` or start a program that will regenerate the website on any change by running `site watch`.
|
||||
|
||||
The resulting website will be placed in the `public/` directory from which it can be uploaded to the server, either manually or by calling `site deploy`.
|
||||
|
||||
You can also run `site check` to check the website for broken links, and `site rebuild` when something breaks in such a way that `site build` does not notice some changes.
|
||||
12
scripts/jquery.fancybox.min.js
vendored
Normal file
4
scripts/jquery.min.js
vendored
Normal file
14
scripts/main.js
Normal file
@@ -0,0 +1,14 @@
|
||||
$(document).ready(function() {
|
||||
$("[data-lightbox]").fancybox({
|
||||
loop: false,
|
||||
caption: function(instance, item) {
|
||||
var caption = $(this).find('img').attr('alt') || '';
|
||||
|
||||
if (item.type === 'image') {
|
||||
caption = (caption.length ? caption + '<br />' : '') + '<a href="' + item.src + '">Stáhnout obrázek</a>' ;
|
||||
}
|
||||
|
||||
return caption;
|
||||
}
|
||||
});
|
||||
});
|
||||
10
shell.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
(import (
|
||||
let
|
||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||
in fetchTarball {
|
||||
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||
}
|
||||
) {
|
||||
src = ./.;
|
||||
}).shellNix
|
||||
78
src/site.hs
Normal file
@@ -0,0 +1,78 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE OverloadedLists #-}
|
||||
import Data.Function ((&))
|
||||
import qualified GHC.IO.Encoding as E
|
||||
import Hakyll
|
||||
import Hakyll.Contrib.Tojnar.Gallery (figureGroups, implicitFigures)
|
||||
import Hakyll.Contrib.Tojnar.Menu (menuField)
|
||||
import Hakyll.Contrib.Tojnar.Thumbnail (makeThumbnails)
|
||||
import Text.Pandoc.Extensions (Extension (..), disableExtension)
|
||||
import Text.Pandoc.Options (readerExtensions)
|
||||
|
||||
config :: Configuration
|
||||
config = defaultConfiguration {
|
||||
deployCommand = "rsync --checksum -av '--groupmap=\\*:krk' public/* tojnar@ogion.cz:/var/www/krk-litvinov.cz/hrob-2022/",
|
||||
destinationDirectory = "public",
|
||||
previewHost = "0.0.0.0"
|
||||
}
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
E.setLocaleEncoding E.utf8
|
||||
|
||||
hakyllWith config $ do
|
||||
match "styles/*" $ do
|
||||
route idRoute
|
||||
compile compressCssCompiler
|
||||
|
||||
match ("scripts/*" .||. "images/*") $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match (fromRegex "^pages/(.+/)?@menu\\.md$") $ do
|
||||
compile markdownCompiler
|
||||
|
||||
match (fromRegex "^pages/(.+/)?[^@/][^/]+\\.md$") $ do
|
||||
route $ stripPages `composeRoutes` setExtension "html"
|
||||
let ctx = activeClassField <> langField <> menuField <> defaultContext
|
||||
compile $ markdownCompiler
|
||||
>>= loadAndApplyTemplate "templates/layout.html" ctx
|
||||
|
||||
match (fromRegex "^pages/" .&&. complement (fromRegex "\\.md$")) $ do
|
||||
route $ stripPages `composeRoutes` idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "templates/*" $ compile templateCompiler
|
||||
|
||||
version "redirects" $ createRedirects brokenLinks
|
||||
|
||||
activeClassField :: Context String
|
||||
activeClassField = functionField "activeClass" $ \[p] _ -> do
|
||||
path <- toFilePath <$> getUnderlying
|
||||
return $ if path == p then "active" else ""
|
||||
|
||||
langField :: Context String
|
||||
langField = field "lang" $ \_ -> do
|
||||
path <- toFilePath <$> getUnderlying
|
||||
return $ takeWhile (/= '/') path
|
||||
|
||||
stripPages :: Routes
|
||||
stripPages = gsubRoute "pages/" (const "")
|
||||
|
||||
markdownCompiler :: Compiler (Item String)
|
||||
markdownCompiler = pandocCompilerWithTransformM readOpts writeOpts filters
|
||||
where
|
||||
enabledReaderExtensions =
|
||||
readerExtensions defaultHakyllReaderOptions
|
||||
& disableExtension Ext_markdown_in_html_blocks
|
||||
& disableExtension Ext_implicit_figures
|
||||
readOpts = defaultHakyllReaderOptions { readerExtensions = enabledReaderExtensions }
|
||||
writeOpts = defaultHakyllWriterOptions
|
||||
filters = makeThumbnails . implicitFigures . figureGroups
|
||||
|
||||
|
||||
brokenLinks :: [(Identifier, String)]
|
||||
brokenLinks = [
|
||||
-- Root redirects
|
||||
("index.html", "/cs/")
|
||||
]
|
||||
7
styles/bootstrap.min.css
vendored
Normal file
222
styles/default.css
Normal file
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
* Globals
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #555;
|
||||
background: #eeeeec;
|
||||
}
|
||||
|
||||
h1, .h1,
|
||||
h2, .h2,
|
||||
h3, .h3,
|
||||
h4, .h4,
|
||||
h5, .h5,
|
||||
h6, .h6 {
|
||||
margin-top: 0;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
ul + h4 {
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align: top;
|
||||
padding: .75em;
|
||||
}
|
||||
|
||||
td:first-child {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Override Bootstrap's default container.
|
||||
*/
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.container {
|
||||
width: 970px;
|
||||
background: white;
|
||||
margin-top: 2em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Nav links */
|
||||
.blog-nav-item {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
font-weight: 500;
|
||||
color: #cdddeb;
|
||||
}
|
||||
.blog-nav-item:hover,
|
||||
.blog-nav-item:focus {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.embed-responsive {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
/* Active state gets a caret at the bottom */
|
||||
.blog-nav .active {
|
||||
color: #fff;
|
||||
}
|
||||
.blog-nav .active:after {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-left: -5px;
|
||||
vertical-align: middle;
|
||||
content: " ";
|
||||
border-right: 5px solid transparent;
|
||||
border-bottom: 5px solid;
|
||||
border-left: 5px solid transparent;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Blog name and description
|
||||
*/
|
||||
|
||||
.main {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding: 15px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
header a {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding-top: 25%;
|
||||
background-color: #000000;
|
||||
background-image: url(/images/header.jpg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.header-wrapper {
|
||||
position: absolute;
|
||||
bottom: 1rem;
|
||||
left: 1.5rem;
|
||||
}
|
||||
.blog-title {
|
||||
display: inline-block;
|
||||
color: white;
|
||||
text-shadow: 1px 1px 3px black;
|
||||
margin-bottom: 0;
|
||||
font-size: 60px;
|
||||
font-weight: normal;
|
||||
}
|
||||
.blog-description {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
font-size: 20px;
|
||||
color: #eee;
|
||||
margin-left: 1rem;
|
||||
text-shadow: 1px 1px 2px black;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Main column and sidebar layout
|
||||
*/
|
||||
|
||||
.blog-main, .blog-masthead, .blog-sidebar {
|
||||
font-size: 18px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Sidebar modules for boxing content */
|
||||
.sidebar-module {
|
||||
padding: 15px;
|
||||
margin: 0 -15px 15px;
|
||||
}
|
||||
.sidebar-module-inset {
|
||||
padding: 15px;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.sidebar-module-inset p:last-child,
|
||||
.sidebar-module-inset ul:last-child,
|
||||
.sidebar-module-inset ol:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Pagination */
|
||||
.pager {
|
||||
margin-bottom: 60px;
|
||||
text-align: left;
|
||||
}
|
||||
.pager > li > a {
|
||||
width: 140px;
|
||||
padding: 10px 20px;
|
||||
text-align: center;
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Blog posts
|
||||
*/
|
||||
|
||||
.blog-post {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
.blog-post-title {
|
||||
margin-bottom: 5px;
|
||||
font-size: 40px;
|
||||
}
|
||||
.blog-post-meta {
|
||||
margin-bottom: 20px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Footer
|
||||
*/
|
||||
|
||||
.blog-footer {
|
||||
padding: 40px 0;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
background-color: #f9f9f9;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
}
|
||||
.blog-footer p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.figuregroup {
|
||||
margin: 1em auto;
|
||||
}
|
||||
.figuregroup > figure {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.card-sm {
|
||||
display: inline-block;
|
||||
width: 300px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.card-sm img {
|
||||
margin: auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
748
styles/jquery.fancybox.css
vendored
Normal file
@@ -0,0 +1,748 @@
|
||||
@charset "UTF-8";
|
||||
.fancybox-enabled {
|
||||
overflow: hidden; }
|
||||
|
||||
.fancybox-enabled body {
|
||||
overflow: visible;
|
||||
height: 100%; }
|
||||
|
||||
.fancybox-is-hidden {
|
||||
position: absolute;
|
||||
top: -9999px;
|
||||
left: -9999px;
|
||||
visibility: hidden; }
|
||||
|
||||
.fancybox-container {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 99993;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0); }
|
||||
|
||||
/* Make sure that the first one is on the top */
|
||||
.fancybox-container ~ .fancybox-container {
|
||||
z-index: 99992; }
|
||||
|
||||
.fancybox-outer,
|
||||
.fancybox-inner,
|
||||
.fancybox-bg,
|
||||
.fancybox-stage {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0; }
|
||||
|
||||
.fancybox-outer {
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; }
|
||||
|
||||
.fancybox-bg {
|
||||
background: #1e1e1e;
|
||||
opacity: 0;
|
||||
transition-duration: inherit;
|
||||
transition-property: opacity;
|
||||
transition-timing-function: cubic-bezier(0.47, 0, 0.74, 0.71); }
|
||||
|
||||
.fancybox-is-open .fancybox-bg {
|
||||
opacity: 0.87;
|
||||
transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1); }
|
||||
|
||||
.fancybox-infobar,
|
||||
.fancybox-toolbar,
|
||||
.fancybox-caption-wrap {
|
||||
position: absolute;
|
||||
direction: ltr;
|
||||
z-index: 99997;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: opacity .25s, visibility 0s linear .25s;
|
||||
box-sizing: border-box; }
|
||||
|
||||
.fancybox-show-infobar .fancybox-infobar,
|
||||
.fancybox-show-toolbar .fancybox-toolbar,
|
||||
.fancybox-show-caption .fancybox-caption-wrap {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
transition: opacity .25s, visibility 0s; }
|
||||
|
||||
.fancybox-infobar {
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -79px; }
|
||||
|
||||
.fancybox-infobar__body {
|
||||
display: inline-block;
|
||||
width: 70px;
|
||||
line-height: 44px;
|
||||
font-size: 13px;
|
||||
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
text-align: center;
|
||||
color: #ddd;
|
||||
background-color: rgba(30, 30, 30, 0.7);
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-font-smoothing: subpixel-antialiased; }
|
||||
|
||||
.fancybox-toolbar {
|
||||
top: 0;
|
||||
right: 0; }
|
||||
|
||||
.fancybox-stage {
|
||||
overflow: hidden;
|
||||
direction: ltr;
|
||||
z-index: 99994;
|
||||
-webkit-transform: translate3d(0, 0, 0); }
|
||||
|
||||
.fancybox-slide {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: auto;
|
||||
outline: none;
|
||||
white-space: normal;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
z-index: 99994;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
display: none;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
transition-property: opacity, -webkit-transform;
|
||||
transition-property: transform, opacity;
|
||||
transition-property: transform, opacity, -webkit-transform;
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d; }
|
||||
|
||||
.fancybox-slide::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: 100%;
|
||||
width: 0; }
|
||||
|
||||
.fancybox-is-sliding .fancybox-slide,
|
||||
.fancybox-slide--previous,
|
||||
.fancybox-slide--current,
|
||||
.fancybox-slide--next {
|
||||
display: block; }
|
||||
|
||||
.fancybox-slide--image {
|
||||
overflow: visible; }
|
||||
|
||||
.fancybox-slide--image::before {
|
||||
display: none; }
|
||||
|
||||
.fancybox-slide--video .fancybox-content,
|
||||
.fancybox-slide--video iframe {
|
||||
background: #000; }
|
||||
|
||||
.fancybox-slide--map .fancybox-content,
|
||||
.fancybox-slide--map iframe {
|
||||
background: #E5E3DF; }
|
||||
|
||||
.fancybox-slide--next {
|
||||
z-index: 99995; }
|
||||
|
||||
.fancybox-slide > div {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
padding: 24px;
|
||||
margin: 44px 0 44px;
|
||||
border-width: 0;
|
||||
vertical-align: middle;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
overflow: auto;
|
||||
box-sizing: border-box; }
|
||||
|
||||
.fancybox-slide .fancybox-image-wrap {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
z-index: 99995;
|
||||
background: transparent;
|
||||
cursor: default;
|
||||
overflow: visible;
|
||||
-webkit-transform-origin: top left;
|
||||
-ms-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.fancybox-can-zoomOut .fancybox-image-wrap {
|
||||
cursor: -webkit-zoom-out;
|
||||
cursor: zoom-out; }
|
||||
|
||||
.fancybox-can-zoomIn .fancybox-image-wrap {
|
||||
cursor: -webkit-zoom-in;
|
||||
cursor: zoom-in; }
|
||||
|
||||
.fancybox-can-drag .fancybox-image-wrap {
|
||||
cursor: -webkit-grab;
|
||||
cursor: grab; }
|
||||
|
||||
.fancybox-is-dragging .fancybox-image-wrap {
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: grabbing; }
|
||||
|
||||
.fancybox-image,
|
||||
.fancybox-spaceball {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
max-width: none;
|
||||
max-height: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.fancybox-spaceball {
|
||||
z-index: 1; }
|
||||
|
||||
.fancybox-slide--iframe .fancybox-content {
|
||||
padding: 0;
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
max-width: calc(100% - 100px);
|
||||
max-height: calc(100% - 88px);
|
||||
overflow: visible;
|
||||
background: #fff; }
|
||||
|
||||
.fancybox-iframe {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff; }
|
||||
|
||||
.fancybox-error {
|
||||
margin: 0;
|
||||
padding: 40px;
|
||||
width: 100%;
|
||||
max-width: 380px;
|
||||
background: #fff;
|
||||
cursor: default; }
|
||||
|
||||
.fancybox-error p {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: #444;
|
||||
font: 16px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; }
|
||||
|
||||
.fancybox-close-small {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
z-index: 10;
|
||||
cursor: pointer; }
|
||||
|
||||
.fancybox-close-small:after {
|
||||
content: '×';
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 5px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
font: 20px/30px Arial,"Helvetica Neue",Helvetica,sans-serif;
|
||||
color: #888;
|
||||
font-weight: 300;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
border-width: 0;
|
||||
background: #fff;
|
||||
transition: background .25s;
|
||||
box-sizing: border-box;
|
||||
z-index: 2; }
|
||||
|
||||
.fancybox-close-small:focus:after {
|
||||
outline: 1px dotted #888; }
|
||||
|
||||
.fancybox-close-small:hover:after {
|
||||
color: #555;
|
||||
background: #eee; }
|
||||
|
||||
.fancybox-slide--iframe .fancybox-close-small {
|
||||
top: 0;
|
||||
right: -44px; }
|
||||
|
||||
.fancybox-slide--iframe .fancybox-close-small:after {
|
||||
background: transparent;
|
||||
font-size: 35px;
|
||||
color: #aaa; }
|
||||
|
||||
.fancybox-slide--iframe .fancybox-close-small:hover:after {
|
||||
color: #fff; }
|
||||
|
||||
/* Caption */
|
||||
.fancybox-caption-wrap {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding: 60px 30px 0 30px;
|
||||
background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.1) 20%, rgba(0, 0, 0, 0.2) 40%, rgba(0, 0, 0, 0.6) 80%, rgba(0, 0, 0, 0.8) 100%);
|
||||
pointer-events: none; }
|
||||
|
||||
.fancybox-caption {
|
||||
padding: 30px 0;
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.4);
|
||||
font-size: 14px;
|
||||
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
color: #fff;
|
||||
line-height: 20px;
|
||||
-webkit-text-size-adjust: none; }
|
||||
|
||||
.fancybox-caption a,
|
||||
.fancybox-caption button,
|
||||
.fancybox-caption select {
|
||||
pointer-events: all; }
|
||||
|
||||
.fancybox-caption a {
|
||||
color: #fff;
|
||||
text-decoration: underline; }
|
||||
|
||||
/* Buttons */
|
||||
.fancybox-button {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
line-height: 44px;
|
||||
text-align: center;
|
||||
background: transparent;
|
||||
color: #ddd;
|
||||
border-radius: 0;
|
||||
cursor: pointer;
|
||||
vertical-align: top;
|
||||
outline: none; }
|
||||
|
||||
.fancybox-button[disabled] {
|
||||
cursor: default;
|
||||
pointer-events: none; }
|
||||
|
||||
.fancybox-infobar__body, .fancybox-button {
|
||||
background: rgba(30, 30, 30, 0.6); }
|
||||
|
||||
.fancybox-button:hover:not([disabled]) {
|
||||
color: #fff;
|
||||
background: rgba(0, 0, 0, 0.8); }
|
||||
|
||||
.fancybox-button::before,
|
||||
.fancybox-button::after {
|
||||
content: '';
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
background-color: currentColor;
|
||||
color: currentColor;
|
||||
opacity: 0.9;
|
||||
box-sizing: border-box;
|
||||
display: inline-block; }
|
||||
|
||||
.fancybox-button[disabled]::before,
|
||||
.fancybox-button[disabled]::after {
|
||||
opacity: 0.3; }
|
||||
|
||||
.fancybox-button--left::after,
|
||||
.fancybox-button--right::after {
|
||||
top: 18px;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: transparent;
|
||||
border-top: solid 2px currentColor;
|
||||
border-right: solid 2px currentColor; }
|
||||
|
||||
.fancybox-button--left::after {
|
||||
left: 20px;
|
||||
-webkit-transform: rotate(-135deg);
|
||||
-ms-transform: rotate(-135deg);
|
||||
transform: rotate(-135deg); }
|
||||
|
||||
.fancybox-button--right::after {
|
||||
right: 20px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
|
||||
.fancybox-button--left {
|
||||
border-bottom-left-radius: 5px; }
|
||||
|
||||
.fancybox-button--right {
|
||||
border-bottom-right-radius: 5px; }
|
||||
|
||||
.fancybox-button--close::before, .fancybox-button--close::after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
height: 2px;
|
||||
width: 16px;
|
||||
top: calc(50% - 1px);
|
||||
left: calc(50% - 8px); }
|
||||
|
||||
.fancybox-button--close::before {
|
||||
-webkit-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
|
||||
.fancybox-button--close::after {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
-ms-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
|
||||
/* Navigation arrows */
|
||||
.fancybox-arrow {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin: -50px 0 0 0;
|
||||
height: 100px;
|
||||
width: 54px;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: none;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
z-index: 99995;
|
||||
opacity: 0;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
transition: opacity .25s; }
|
||||
|
||||
.fancybox-arrow::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 28px;
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
background-color: rgba(30, 30, 30, 0.8);
|
||||
background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSI0OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgNGwtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHoiLz48L3N2Zz4=);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 24px 24px; }
|
||||
|
||||
.fancybox-arrow--right {
|
||||
right: 0; }
|
||||
|
||||
.fancybox-arrow--left {
|
||||
left: 0;
|
||||
-webkit-transform: scaleX(-1);
|
||||
-ms-transform: scaleX(-1);
|
||||
transform: scaleX(-1); }
|
||||
|
||||
.fancybox-arrow--right::after,
|
||||
.fancybox-arrow--left::after {
|
||||
left: 0; }
|
||||
|
||||
.fancybox-show-nav .fancybox-arrow {
|
||||
opacity: 0.6; }
|
||||
|
||||
.fancybox-show-nav .fancybox-arrow[disabled] {
|
||||
opacity: 0.3; }
|
||||
|
||||
/* Loading indicator */
|
||||
.fancybox-slide > .fancybox-loading {
|
||||
border: 6px solid rgba(100, 100, 100, 0.4);
|
||||
border-top: 6px solid rgba(255, 255, 255, 0.6);
|
||||
border-radius: 100%;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
-webkit-animation: fancybox-rotate .8s infinite linear;
|
||||
animation: fancybox-rotate .8s infinite linear;
|
||||
background: transparent;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -25px;
|
||||
margin-left: -25px;
|
||||
z-index: 99999; }
|
||||
|
||||
@-webkit-keyframes fancybox-rotate {
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
to {
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg); } }
|
||||
|
||||
@keyframes fancybox-rotate {
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
to {
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg); } }
|
||||
|
||||
/* Transition effects */
|
||||
.fancybox-animated {
|
||||
transition-timing-function: cubic-bezier(0, 0, 0.25, 1); }
|
||||
|
||||
/* transitionEffect: slide */
|
||||
.fancybox-fx-slide.fancybox-slide--previous {
|
||||
-webkit-transform: translate3d(-100%, 0, 0);
|
||||
transform: translate3d(-100%, 0, 0);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-slide.fancybox-slide--next {
|
||||
-webkit-transform: translate3d(100%, 0, 0);
|
||||
transform: translate3d(100%, 0, 0);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-slide.fancybox-slide--current {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
opacity: 1; }
|
||||
|
||||
/* transitionEffect: fade */
|
||||
.fancybox-fx-fade.fancybox-slide--previous,
|
||||
.fancybox-fx-fade.fancybox-slide--next {
|
||||
opacity: 0;
|
||||
transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
|
||||
|
||||
.fancybox-fx-fade.fancybox-slide--current {
|
||||
opacity: 1; }
|
||||
|
||||
/* transitionEffect: zoom-in-out */
|
||||
.fancybox-fx-zoom-in-out.fancybox-slide--previous {
|
||||
-webkit-transform: scale3d(1.5, 1.5, 1.5);
|
||||
transform: scale3d(1.5, 1.5, 1.5);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-zoom-in-out.fancybox-slide--next {
|
||||
-webkit-transform: scale3d(0.5, 0.5, 0.5);
|
||||
transform: scale3d(0.5, 0.5, 0.5);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-zoom-in-out.fancybox-slide--current {
|
||||
-webkit-transform: scale3d(1, 1, 1);
|
||||
transform: scale3d(1, 1, 1);
|
||||
opacity: 1; }
|
||||
|
||||
/* transitionEffect: rotate */
|
||||
.fancybox-fx-rotate.fancybox-slide--previous {
|
||||
-webkit-transform: rotate(-360deg);
|
||||
-ms-transform: rotate(-360deg);
|
||||
transform: rotate(-360deg);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-rotate.fancybox-slide--next {
|
||||
-webkit-transform: rotate(360deg);
|
||||
-ms-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-rotate.fancybox-slide--current {
|
||||
-webkit-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
opacity: 1; }
|
||||
|
||||
/* transitionEffect: circular */
|
||||
.fancybox-fx-circular.fancybox-slide--previous {
|
||||
-webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
|
||||
transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-circular.fancybox-slide--next {
|
||||
-webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
|
||||
transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
|
||||
opacity: 0; }
|
||||
|
||||
.fancybox-fx-circular.fancybox-slide--current {
|
||||
-webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
|
||||
transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
|
||||
opacity: 1; }
|
||||
|
||||
/* transitionEffect: tube */
|
||||
.fancybox-fx-tube.fancybox-slide--previous {
|
||||
-webkit-transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg);
|
||||
transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); }
|
||||
|
||||
.fancybox-fx-tube.fancybox-slide--next {
|
||||
-webkit-transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg);
|
||||
transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg); }
|
||||
|
||||
.fancybox-fx-tube.fancybox-slide--current {
|
||||
-webkit-transform: translate3d(0, 0, 0) scale(1);
|
||||
transform: translate3d(0, 0, 0) scale(1); }
|
||||
|
||||
/* Styling for Small-Screen Devices */
|
||||
@media all and (max-width: 800px) {
|
||||
.fancybox-infobar {
|
||||
left: 0;
|
||||
margin-left: 0; }
|
||||
.fancybox-button--left,
|
||||
.fancybox-button--right {
|
||||
display: none !important; }
|
||||
.fancybox-caption {
|
||||
padding: 20px 0;
|
||||
margin: 0; } }
|
||||
|
||||
/* Fullscreen */
|
||||
.fancybox-button--fullscreen::before {
|
||||
width: 15px;
|
||||
height: 11px;
|
||||
left: calc(50% - 7px);
|
||||
top: calc(50% - 6px);
|
||||
border: 2px solid;
|
||||
background: none; }
|
||||
|
||||
/* Slideshow button */
|
||||
.fancybox-button--play::before,
|
||||
.fancybox-button--pause::before {
|
||||
top: calc(50% - 6px);
|
||||
left: calc(50% - 4px);
|
||||
background: transparent; }
|
||||
|
||||
.fancybox-button--play::before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-top: 6px inset transparent;
|
||||
border-bottom: 6px inset transparent;
|
||||
border-left: 10px solid;
|
||||
border-radius: 1px; }
|
||||
|
||||
.fancybox-button--pause::before {
|
||||
width: 7px;
|
||||
height: 11px;
|
||||
border-style: solid;
|
||||
border-width: 0 2px 0 2px; }
|
||||
|
||||
/* Thumbs */
|
||||
.fancybox-thumbs {
|
||||
display: none; }
|
||||
|
||||
.fancybox-button--thumbs {
|
||||
display: none; }
|
||||
|
||||
@media all and (min-width: 800px) {
|
||||
.fancybox-button--thumbs {
|
||||
display: inline-block; }
|
||||
.fancybox-button--thumbs span {
|
||||
font-size: 23px; }
|
||||
.fancybox-button--thumbs::before {
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
top: calc(50% - 2px);
|
||||
left: calc(50% - 2px);
|
||||
box-shadow: 0 -4px 0, -4px -4px 0, 4px -4px 0, 0 0 0 32px inset, -4px 0 0, 4px 0 0, 0 4px 0, -4px 4px 0, 4px 4px 0; }
|
||||
.fancybox-thumbs {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: auto;
|
||||
width: 220px;
|
||||
margin: 0;
|
||||
padding: 5px 5px 0 0;
|
||||
background: #fff;
|
||||
word-break: normal;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
box-sizing: border-box;
|
||||
z-index: 99995; }
|
||||
.fancybox-show-thumbs .fancybox-thumbs {
|
||||
display: block; }
|
||||
.fancybox-show-thumbs .fancybox-inner {
|
||||
right: 220px; }
|
||||
.fancybox-thumbs > ul {
|
||||
list-style: none;
|
||||
position: absolute;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
font-size: 0; }
|
||||
.fancybox-thumbs > ul > li {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
max-width: 50%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 105px;
|
||||
height: 75px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
border: 5px solid transparent;
|
||||
border-top-width: 0;
|
||||
border-right-width: 0;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
box-sizing: border-box; }
|
||||
li.fancybox-thumbs-loading {
|
||||
background: rgba(0, 0, 0, 0.1); }
|
||||
.fancybox-thumbs > ul > li > img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
min-width: 100%;
|
||||
min-height: 100%;
|
||||
max-width: none;
|
||||
max-height: none;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
.fancybox-thumbs > ul > li:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
border-radius: 2px;
|
||||
border: 4px solid #4ea7f9;
|
||||
z-index: 99991;
|
||||
opacity: 0;
|
||||
transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); }
|
||||
.fancybox-thumbs > ul > li.fancybox-thumbs-active:before {
|
||||
opacity: 1; } }
|
||||
50
templates/layout.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="$lang$">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
$if(robots)$<meta name="robots" content="$robots$">$endif$
|
||||
|
||||
<link rel="icon" href="/images/icon.svg" type="image/svg+xml">
|
||||
|
||||
<title>MČR HROB 2022 ⬩ $title$</title>
|
||||
|
||||
<link href="/styles/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<link href="/styles/default.css" rel="stylesheet">
|
||||
|
||||
<link href="/styles/jquery.fancybox.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container main">
|
||||
<header>
|
||||
<a href="/">
|
||||
<div class="header-wrapper">
|
||||
<h1 class="blog-title">MČR HROB 2022</h1>
|
||||
<p class="lead blog-description">5.–6. 11. 2022</p>
|
||||
</div>
|
||||
</a>
|
||||
</header>
|
||||
<div class="row">
|
||||
<div class="col-sm-8 blog-main">
|
||||
<h2>$title$</h2>
|
||||
|
||||
$body$
|
||||
</div><!-- /.blog-main -->
|
||||
|
||||
<div class="col-sm-4 col-sm-offset-1 blog-sidebar">
|
||||
<div class="sidebar-module">
|
||||
$menu$
|
||||
</div>
|
||||
</div><!-- /.blog-sidebar -->
|
||||
|
||||
</div><!-- /.row -->
|
||||
</div><!-- /.container -->
|
||||
|
||||
<script src="/scripts/jquery.min.js"></script>
|
||||
<script src="/scripts/jquery.fancybox.min.js"></script>
|
||||
<script src="/scripts/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||