Track theme
This commit is contained in:
parent
48932f2b80
commit
928e3afebd
21 changed files with 988 additions and 1 deletions
|
|
@ -11,7 +11,7 @@ JsonLD: { "@context": "https://schema.org", "@type": "WebPage", "name": "Accueil
|
|||
# La {LINK} est parue !
|
||||
|
||||
La Craft Letter est une newsletter hebdomadaire dans laquelle je partage des articles
|
||||
issues de ma veille technologique. Vous y trouverez des articles relatifs au développement logiciel d'une façon générale, qu'il soit front-end, back-end ou autre. Mais aussi des articles consacrés à l'architecture logicielle, la méthodologie, les outils, des projets open source, des conférences...
|
||||
issus de ma veille technologique. Vous y trouverez des articles relatifs au développement logiciel d'une façon générale, qu'il soit front-end, back-end ou autre. Mais aussi des articles consacrés à l'architecture logicielle, la méthodologie, les outils, des projets open source, des conférences...
|
||||
|
||||
Pour savoir qui je suis, ou pourquoi j'écris cette lettre, je vous invite à vous lire l'édito du [premier numéro]({filename}/newsletter/craft-letter-1.md).
|
||||
|
||||
|
|
|
|||
17
themes/blue-penguin/CONTRIBUTORS.md
Normal file
17
themes/blue-penguin/CONTRIBUTORS.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Contributors
|
||||
|
||||
* [Nevan Scott](https://github.com/nevanscott/Mockingbird) (original author)
|
||||
* [wrl](http://ghttps://github.com/guikcdithub.com/wrl) (port to pelican, pelican-mockingbird)
|
||||
* [Jody Frankowski](http://github.com/jody-frankowski) (Blue Penguin)
|
||||
* [Grimbox](https://github.com/Grimbox)
|
||||
* [ix5](https://github.com/ix5)
|
||||
* [dn0](https://github.com/dn0)
|
||||
* [anhtuann](https://github.com/anhtuann)
|
||||
* [aperep](https://github.com/aperep)
|
||||
* [iranzo](https://github.com/iranzo)
|
||||
* [thetlk](https://github.com/thetlk)
|
||||
* [SnorlaxYum](https://github.com/SnorlaxYum)
|
||||
* [guikcd](https://github.com/guikcd)
|
||||
* [jorgesumle](https://github.com/jorgesumle)
|
||||
* [crxxn](https://github.com/crxxn)
|
||||
* [Pascal Le Merrer](https://www.craftletter.fr)
|
||||
53
themes/blue-penguin/README.md
Normal file
53
themes/blue-penguin/README.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||

|
||||
|
||||
# Blue Penguin for pelican
|
||||
A simple theme for pelican. Solarized pygments. Feeds support.
|
||||
|
||||
## Settings
|
||||
```python
|
||||
# all the following settings are *optional*
|
||||
|
||||
# HTML metadata
|
||||
SITEDESCRIPTION = ''
|
||||
|
||||
# all defaults to True.
|
||||
DISPLAY_HEADER = True
|
||||
DISPLAY_FOOTER = True
|
||||
DISPLAY_HOME = True
|
||||
DISPLAY_MENU = True
|
||||
|
||||
# provided as examples, they make ‘clean’ urls. used by MENU_INTERNAL_PAGES.
|
||||
TAGS_URL = 'tags'
|
||||
TAGS_SAVE_AS = 'tags/index.html'
|
||||
AUTHORS_URL = 'authors'
|
||||
AUTHORS_SAVE_AS = 'authors/index.html'
|
||||
CATEGORIES_URL = 'categories'
|
||||
CATEGORIES_SAVE_AS = 'categories/index.html'
|
||||
ARCHIVES_URL = 'archives'
|
||||
ARCHIVES_SAVE_AS = 'archives/index.html'
|
||||
|
||||
# use those if you want pelican standard pages to appear in your menu
|
||||
MENU_INTERNAL_PAGES = (
|
||||
('Tags', TAGS_URL, TAGS_SAVE_AS),
|
||||
('Authors', AUTHORS_URL, AUTHORS_SAVE_AS),
|
||||
('Categories', CATEGORIES_URL, CATEGORIES_SAVE_AS),
|
||||
('Archives', ARCHIVES_URL, ARCHIVES_SAVE_AS),
|
||||
)
|
||||
# additional menu items
|
||||
MENUITEMS = (
|
||||
('GitHub', 'https://github.com/'),
|
||||
('Linux Kernel', 'https://www.kernel.org/'),
|
||||
)
|
||||
```
|
||||
|
||||
## How to contribute
|
||||
Contributions are very welcome. Keep in mind that this theme goal is to be
|
||||
minimalistic/simple. Contributions will be accepted through Github Pull
|
||||
Requests. If you don’t have a Github account you can suggest me your
|
||||
changes by email (which you can find on my github profile).
|
||||
|
||||
## Contributors
|
||||
See [CONTRIBUTORS.md](CONTRIBUTORS.md).
|
||||
|
||||
## License
|
||||
Public domain.
|
||||
BIN
themes/blue-penguin/screenshot.png
Normal file
BIN
themes/blue-penguin/screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 984 KiB |
4
themes/blue-penguin/static/css/print.css
Normal file
4
themes/blue-penguin/static/css/print.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
* { background: #fff; }
|
||||
body { font-family: georgia, times, serif; color: black; }
|
||||
blockquote { font-style: italic; color: black; }
|
||||
a:link, a:visited { border-bottom-width: 1px; border-bottom-style: solid; }
|
||||
87
themes/blue-penguin/static/css/pygments.css
Normal file
87
themes/blue-penguin/static/css/pygments.css
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/* Solarized Dark
|
||||
|
||||
For use with Jekyll and Pygments
|
||||
|
||||
https://ethanschoonover.com/solarized
|
||||
|
||||
SOLARIZED HEX ROLE
|
||||
--------- -------- ------------------------------------------
|
||||
base03 #002b36 background
|
||||
base01 #586e75 comments / secondary content
|
||||
base1 #93a1a1 body text / default code / primary content
|
||||
orange #cb4b16 constants
|
||||
red #dc322f regex, special keywords
|
||||
blue #268bd2 reserved keywords
|
||||
cyan #2aa198 strings, numbers
|
||||
green #859900 operators, other keywords
|
||||
*/
|
||||
|
||||
.highlight { background-color: #002b36; color: #93a1a1 }
|
||||
.highlight .c { color: #586e75 } /* Comment */
|
||||
.highlight .err { color: #93a1a1 } /* Error */
|
||||
.highlight .g { color: #93a1a1 } /* Generic */
|
||||
.highlight .k { color: #859900 } /* Keyword */
|
||||
.highlight .l { color: #93a1a1 } /* Literal */
|
||||
.highlight .n { color: #93a1a1 } /* Name */
|
||||
.highlight .o { color: #859900 } /* Operator */
|
||||
.highlight .x { color: #cb4b16 } /* Other */
|
||||
.highlight .p { color: #93a1a1 } /* Punctuation */
|
||||
.highlight .cm { color: #586e75 } /* Comment.Multiline */
|
||||
.highlight .cp { color: #859900 } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #586e75 } /* Comment.Single */
|
||||
.highlight .cs { color: #859900 } /* Comment.Special */
|
||||
.highlight .gd { color: #2aa198 } /* Generic.Deleted */
|
||||
.highlight .ge { color: #93a1a1; font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #dc322f } /* Generic.Error */
|
||||
.highlight .gh { color: #cb4b16 } /* Generic.Heading */
|
||||
.highlight .gi { color: #859900 } /* Generic.Inserted */
|
||||
.highlight .go { color: #93a1a1 } /* Generic.Output */
|
||||
.highlight .gp { color: #93a1a1 } /* Generic.Prompt */
|
||||
.highlight .gs { color: #93a1a1; font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #cb4b16 } /* Generic.Subheading */
|
||||
.highlight .gt { color: #93a1a1 } /* Generic.Traceback */
|
||||
.highlight .kc { color: #cb4b16 } /* Keyword.Constant */
|
||||
.highlight .kd { color: #268bd2 } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #859900 } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #859900 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #268bd2 } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #dc322f } /* Keyword.Type */
|
||||
.highlight .ld { color: #93a1a1 } /* Literal.Date */
|
||||
.highlight .m { color: #2aa198 } /* Literal.Number */
|
||||
.highlight .s { color: #2aa198 } /* Literal.String */
|
||||
.highlight .na { color: #93a1a1 } /* Name.Attribute */
|
||||
.highlight .nb { color: #B58900 } /* Name.Builtin */
|
||||
.highlight .nc { color: #268bd2 } /* Name.Class */
|
||||
.highlight .no { color: #cb4b16 } /* Name.Constant */
|
||||
.highlight .nd { color: #268bd2 } /* Name.Decorator */
|
||||
.highlight .ni { color: #cb4b16 } /* Name.Entity */
|
||||
.highlight .ne { color: #cb4b16 } /* Name.Exception */
|
||||
.highlight .nf { color: #268bd2 } /* Name.Function */
|
||||
.highlight .nl { color: #93a1a1 } /* Name.Label */
|
||||
.highlight .nn { color: #93a1a1 } /* Name.Namespace */
|
||||
.highlight .nx { color: #93a1a1 } /* Name.Other */
|
||||
.highlight .py { color: #93a1a1 } /* Name.Property */
|
||||
.highlight .nt { color: #268bd2 } /* Name.Tag */
|
||||
.highlight .nv { color: #268bd2 } /* Name.Variable */
|
||||
.highlight .ow { color: #859900 } /* Operator.Word */
|
||||
.highlight .w { color: #93a1a1 } /* Text.Whitespace */
|
||||
.highlight .mf { color: #2aa198 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #586e75 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #2aa198 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #93a1a1 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #2aa198 } /* Literal.String.Double */
|
||||
.highlight .se { color: #cb4b16 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #93a1a1 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #2aa198 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #2aa198 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #dc322f } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #2aa198 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #268bd2 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #268bd2 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */
|
||||
495
themes/blue-penguin/static/css/screen.css
Normal file
495
themes/blue-penguin/static/css/screen.css
Normal file
|
|
@ -0,0 +1,495 @@
|
|||
/* https://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
/* Mockingbird Theme by Nevan Scott nevanscott.com */
|
||||
/* Modified by Jody Frankowski */
|
||||
/* Modified by ix5 */
|
||||
/* Modified by Pascal Le Merrer */
|
||||
|
||||
:root {
|
||||
--link-color: #801515;
|
||||
--link-background-color: #abdae7;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
div,
|
||||
span,
|
||||
applet,
|
||||
object,
|
||||
iframe,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
a,
|
||||
abbr,
|
||||
acronym,
|
||||
address,
|
||||
big,
|
||||
cite,
|
||||
code,
|
||||
del,
|
||||
dfn,
|
||||
em,
|
||||
img,
|
||||
ins,
|
||||
kbd,
|
||||
q,
|
||||
s,
|
||||
samp,
|
||||
small,
|
||||
strike,
|
||||
strong,
|
||||
sub,
|
||||
sup,
|
||||
tt,
|
||||
var,
|
||||
b,
|
||||
u,
|
||||
i,
|
||||
center,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
li,
|
||||
fieldset,
|
||||
form,
|
||||
label,
|
||||
legend,
|
||||
table,
|
||||
caption,
|
||||
tbody,
|
||||
tfoot,
|
||||
thead,
|
||||
tr,
|
||||
th,
|
||||
td,
|
||||
article,
|
||||
aside,
|
||||
canvas,
|
||||
details,
|
||||
embed,
|
||||
figure,
|
||||
figcaption,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
menu,
|
||||
nav,
|
||||
output,
|
||||
ruby,
|
||||
section,
|
||||
summary,
|
||||
time,
|
||||
mark,
|
||||
audio,
|
||||
video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
menu,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol,
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote,
|
||||
q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before,
|
||||
blockquote:after,
|
||||
q:before,
|
||||
q:after {
|
||||
content: "";
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 1.5em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
header,
|
||||
#wrapper {
|
||||
padding: 0 10px;
|
||||
max-width: 910px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
a {
|
||||
box-shadow: inset 0 0 0 0 var(--link-background-color);
|
||||
color: var(--link-color);
|
||||
padding: 0 0.25rem;
|
||||
margin: 0 -0.25rem;
|
||||
transition:
|
||||
color 0.3s ease-in-out,
|
||||
box-shadow 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
box-shadow: inset 800px 0 0 0 var(--link-background-color);
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: outside disc;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style: outside decimal;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
line-height: 1em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
img,
|
||||
p,
|
||||
.post > .highlight,
|
||||
.highlighttable,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 1.2em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 1.5em 1.5em 1.5em 0.75em;
|
||||
padding-left: 0.75em;
|
||||
border-left: 1px solid #eee;
|
||||
}
|
||||
|
||||
.date {
|
||||
color: #ccc;
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 130px;
|
||||
font-size: 1.5em;
|
||||
line-height: 1em;
|
||||
margin: 0 20px 1em 0;
|
||||
}
|
||||
|
||||
.info {
|
||||
margin-top: 1.3em;
|
||||
font-family: sans-serif;
|
||||
text-align: right;
|
||||
color: #bbb;
|
||||
}
|
||||
.info a {
|
||||
color: inherit;
|
||||
}
|
||||
.info a.tags {
|
||||
background: #ccc;
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
padding: 0 0.3em;
|
||||
border: 1px transparent solid;
|
||||
border-radius: 5px;
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
.info a.tags:hover {
|
||||
background: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
.info a.tags.selected {
|
||||
border: 1px #999 solid;
|
||||
}
|
||||
|
||||
.post {
|
||||
margin: 0 0 4.5em 150px;
|
||||
}
|
||||
.post.archives {
|
||||
margin-bottom: 1.5em;
|
||||
margin-left: 160px;
|
||||
}
|
||||
.post p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.page {
|
||||
margin: 0 90px;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
border-radius: 3px;
|
||||
}
|
||||
.code > .highlight {
|
||||
border-radius: 0px 3px 3px 0px;
|
||||
}
|
||||
.linenos {
|
||||
border-radius: 3px 0px 0px 3px;
|
||||
background-color: #073642;
|
||||
border-right: 1px solid #00232c;
|
||||
color: #586e75;
|
||||
text-shadow: 0px -1px #021014;
|
||||
}
|
||||
td.code {
|
||||
width: 100%;
|
||||
max-width: 100px;
|
||||
}
|
||||
.linenos a {
|
||||
color: #586e75;
|
||||
}
|
||||
|
||||
.logo {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 6rem;
|
||||
margin-bottom: 6rem;
|
||||
}
|
||||
|
||||
/*sub and sup stolen from Twitter bootstrap.*/
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
.post pre,
|
||||
.page pre {
|
||||
padding: 0.8em;
|
||||
font-size: 12px;
|
||||
font-family: Monospace;
|
||||
line-height: 1.1em;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
form.inline_edit {
|
||||
clear: both;
|
||||
margin: 4.5em 0;
|
||||
background-color: #ddd;
|
||||
color: #000;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.inline_edit .sub {
|
||||
color: #888;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.inline_edit label {
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 140px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.inline_edit .buttons {
|
||||
display: block;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
nav a {
|
||||
color: var(--link-color);
|
||||
}
|
||||
nav a:hover {
|
||||
color: var(--link-color);
|
||||
text-decoration: underline;
|
||||
background-color: #d3d3d3;
|
||||
}
|
||||
|
||||
nav li.selected a {
|
||||
background-color: var(--link-background-color);
|
||||
color: var(--link-color);
|
||||
}
|
||||
|
||||
header .header_box {
|
||||
padding-top: 4.5em;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
font-size: 1.5em;
|
||||
line-height: 1em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header h2 {
|
||||
font-size: 1em;
|
||||
margin: 0.3em 0;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
.pages {
|
||||
font-family: sans-serif;
|
||||
line-height: 2.5em;
|
||||
margin: 4.5em 0 3em;
|
||||
background-color: #f9f9f9;
|
||||
color: #444;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.pages a.next_page {
|
||||
float: right;
|
||||
width: 140px;
|
||||
text-align: center;
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
background-color: #eee;
|
||||
}
|
||||
.pages a.prev_page {
|
||||
float: left;
|
||||
width: 140px;
|
||||
text-align: center;
|
||||
border-top-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
background-color: #eee;
|
||||
}
|
||||
.pages a {
|
||||
color: inherit;
|
||||
border: none;
|
||||
}
|
||||
.pages a:hover {
|
||||
background-color: #ddd;
|
||||
}
|
||||
|
||||
.pages span {
|
||||
display: block;
|
||||
margin: 0 160px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f9f2f4;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
box-sizing: border-box;
|
||||
color: #c7254e;
|
||||
font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
font-size: 12.6px;
|
||||
line-height: 18px;
|
||||
padding-bottom: 2px;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
padding-top: 2px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
footer {
|
||||
font-family: sans-serif;
|
||||
line-height: 2.5em;
|
||||
text-align: center;
|
||||
color: #bbb;
|
||||
margin: 3em 0;
|
||||
border: 1px solid #eee;
|
||||
border-radius: 5px;
|
||||
}
|
||||
footer p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
header,
|
||||
#wrapper {
|
||||
max-width: 500px;
|
||||
min-width: 300px;
|
||||
}
|
||||
.page,
|
||||
.post {
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
hr {
|
||||
color: #cccccc;
|
||||
margin-top: 40px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
11
themes/blue-penguin/templates/analytics.html
Normal file
11
themes/blue-penguin/templates/analytics.html
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{% if GOOGLE_ANALYTICS %}
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("{{GOOGLE_ANALYTICS}}");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}</script>
|
||||
{% endif %}
|
||||
22
themes/blue-penguin/templates/archives.html
Normal file
22
themes/blue-penguin/templates/archives.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME }} | Archives{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h1>Archives</h1>
|
||||
|
||||
{# based on https://stackoverflow.com/questions/12764291/jinja2-group-by-month-year #}
|
||||
|
||||
{% for year, year_group in dates|groupby('date.year')|reverse %}
|
||||
{% for month, month_group in year_group|groupby('date.month')|reverse %}
|
||||
<h4 class="date">{{ (month_group|first).date|strftime('%b %Y') }}</h4>
|
||||
<div class="post archives">
|
||||
<ul>
|
||||
{% for article in month_group %}
|
||||
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
21
themes/blue-penguin/templates/article.html
Normal file
21
themes/blue-penguin/templates/article.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
{% if article.tags %}
|
||||
<meta name="keywords" content="{{ article.tags|join(",") }}" />
|
||||
{% endif %}
|
||||
{% if article.description %}
|
||||
<meta name="description" content="{{ article.description }}" />
|
||||
{% endif %}
|
||||
<script type="application/ld+json">
|
||||
{{ article.jsonld }}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ SITENAME }} | {{ article.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include "article_stub.html" %}
|
||||
{% endblock %}
|
||||
37
themes/blue-penguin/templates/article_stub.html
Normal file
37
themes/blue-penguin/templates/article_stub.html
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{% if not articles_page or first_article_of_day %}
|
||||
<h4 class="date">{{ article.date.strftime("%d %b %Y") }}</h4>
|
||||
{% endif %}
|
||||
|
||||
<article class="post">
|
||||
{% if article.title %}
|
||||
<h2 class="title">
|
||||
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permanent Link to "{{ article.title }}"">{{ article.title }}</a>
|
||||
</h2>
|
||||
{% endif %}
|
||||
|
||||
{% if not articles_page %}
|
||||
{% include "translations.html" %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{{ article.content }}
|
||||
<div class="clear"></div>
|
||||
|
||||
<div class="info">
|
||||
<a href="{{ SITEURL }}/{{ article.url }}">Publié à {{ article.date.strftime("%H:%M") }}</a>
|
||||
{% if article.category.name != "misc" %}
|
||||
· <a href="{{ SITEURL }}/{{ article.category.url }}" rel="tag">{{ article.category }}</a>
|
||||
{% endif %}
|
||||
{% if article.tags %}
|
||||
·
|
||||
{% for t in article.tags %}
|
||||
<a href="{{ SITEURL }}/{{ t.url }}" class="tags{% if tag and tag.name == t.name %} selected{% endif %}">{{ t }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if articles_page and DISQUS_SITENAME %}
|
||||
<a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">Click to read and post comments</a>
|
||||
{% else %}
|
||||
{% include "disqus.html" %}
|
||||
{% endif %}
|
||||
</article>
|
||||
7
themes/blue-penguin/templates/author.html
Normal file
7
themes/blue-penguin/templates/author.html
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME }} | Articles by {{ author }}{% endblock %}
|
||||
{% block ephemeral_nav %}
|
||||
|
||||
{{ ephemeral_nav_link(author, output_file, True) }}
|
||||
{% endblock %}
|
||||
123
themes/blue-penguin/templates/base.html
Normal file
123
themes/blue-penguin/templates/base.html
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
{% macro ephemeral_nav_link(what, where, selected=False) -%}
|
||||
<li class="ephemeral{% if selected %} selected{% endif %}"><a href="{{ SITEURL }}/{{ where }}">{{what}}</a></li>
|
||||
{%- endmacro -%}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ DEFAULT_LANG }}">
|
||||
<head>
|
||||
{% block head %}
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
|
||||
{# favicon #}
|
||||
<link rel="shortcut icon" type="image/png" href="{{ SITEURL }}/favicon.png">
|
||||
<link rel="shortcut icon" type="image/x-icon" href="{{ SITEURL }}/favicon.ico">
|
||||
{% if FEED_ALL_ATOM %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
|
||||
{% endif %}
|
||||
{% if FEED_ALL_RSS %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
|
||||
{% endif %}
|
||||
{% if FEED_ATOM %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
|
||||
{% endif %}
|
||||
{% if FEED_RSS %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
|
||||
{% endif %}
|
||||
{% if CATEGORY_FEED_ATOM and category %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
|
||||
{% endif %}
|
||||
{% if CATEGORY_FEED_RSS and category %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
|
||||
{% endif %}
|
||||
{% if TAG_FEED_ATOM and tag %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM.format(slug=tag.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
|
||||
{% endif %}
|
||||
{% if TAG_FEED_RSS and tag %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS.format(slug=tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
|
||||
{% endif %}
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/screen.css" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/print.css" type="text/css" media="print" />
|
||||
<meta name="generator" content="Pelican" />
|
||||
<meta name="description" content="{{ SITEDESCRIPTION }}" />
|
||||
<meta name="author" content="{{ AUTHOR }}" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="{{ SITEURL }}" />
|
||||
<meta property="og:title" content="{{ SITENAME }}" />
|
||||
<meta property="og:image" content="{{ SITEURL }}/images/LogoCraftLetter-800px.png" />
|
||||
<meta property="og:image:width" content="800" />
|
||||
<meta property="og:image:height" content="222" />
|
||||
<meta property="og:image:type" content="image/png" />
|
||||
<meta property="og:description" content="{{ SITEDESCRIPTION }}" />
|
||||
|
||||
<link rel="stylesheet" href="https://files.stork-search.net/basic.css" />
|
||||
{% endblock head %}
|
||||
</head>
|
||||
<body>
|
||||
{% if DISPLAY_HEADER or DISPLAY_HEADER is not defined %}
|
||||
<header>
|
||||
{% if DISPLAY_MENU or DISPLAY_MENU is not defined %}
|
||||
<nav>
|
||||
<ul>
|
||||
{% block ephemeral_nav %}{% endblock %}
|
||||
<!-- {% if DISPLAY_HOME or DISPLAY_HOME is not defined %} -->
|
||||
<!-- <li{% if output_file == "index.html" %} class="selected"{% endif %}><a href="{{ SITEURL }}/">Home</a></li> -->
|
||||
<!-- {% endif %} -->
|
||||
{% if DISPLAY_PAGES_ON_MENU %}
|
||||
{% for p in pages %}
|
||||
<li{% if p == page %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% for title, link in MENUITEMS %}
|
||||
<li><a href="{{ link }}">{{ title }}</a></li>
|
||||
{% endfor %}
|
||||
{% for name, link, file in MENU_INTERNAL_PAGES %}
|
||||
<li{% if output_file == file %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ link }}">{{ name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<ul>
|
||||
<search>Rechercher : <input data-stork="sitesearch" />
|
||||
<div data-stork="sitesearch-output"></div>
|
||||
</search>
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
<div class="header_box">
|
||||
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
|
||||
{% if SITESUBTITLE %}
|
||||
<h2>{{ SITESUBTITLE }}</h2>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
{% endif %}
|
||||
<div id="wrapper">
|
||||
<div id="content">
|
||||
<main>
|
||||
{%- block content -%}{%- endblock %}
|
||||
<!-- </main> -->
|
||||
{% if DISPLAY_FOOTER or DISPLAY_FOOTER is not defined %}
|
||||
<div class="clear"></div>
|
||||
<footer>
|
||||
<p>
|
||||
Thème dérivé de <a href="https://github.com/jody-frankowski/blue-penguin">Blue Penguin</a>
|
||||
·
|
||||
Propulsé par <a href="https://getpelican.com">Pelican</a>
|
||||
{% if FEED_ALL_RSS %}
|
||||
·
|
||||
<a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate">Flux RSS</a>
|
||||
{% endif %}
|
||||
<p>
|
||||
<a href="https://www.craftletter.fr">Craft Letter</a> © 2025 - 2026 par <a href="https://www.linkedin.com/in/pascal-le-merrer/">Pascal Le Merrer</a> est sous licence <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/">CC BY-NC-ND 4.0</a><div><img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg" alt="CC" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/by.svg" alt="BY" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/nc.svg" alt="NC" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/nd.svg" alt="ND" style="max-width: 1em;max-height:1em;margin-left: .2em;"></div>
|
||||
<p/>
|
||||
</footer>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<script src="https://files.stork-search.net/releases/v1.5.0/stork.js"></script>
|
||||
<script>
|
||||
stork.register("sitesearch", "{{ SITEURL }}/search-index.st");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
6
themes/blue-penguin/templates/category.html
Normal file
6
themes/blue-penguin/templates/category.html
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}{{ SITENAME }} | articles in the "{{ category }}" category{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||
{% block ephemeral_nav %}
|
||||
|
||||
{{ ephemeral_nav_link(category, output_file, True) }}
|
||||
{% endblock %}
|
||||
12
themes/blue-penguin/templates/disqus.html
Normal file
12
themes/blue-penguin/templates/disqus.html
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{% if DISQUS_SITENAME %}
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_shortname = '{{ DISQUS_SITENAME }}';
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
{% endif %}
|
||||
17
themes/blue-penguin/templates/index.html
Normal file
17
themes/blue-penguin/templates/index.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME }}{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||
{% block content %}
|
||||
{% set date = None %}
|
||||
{% for article in articles_page.object_list %}
|
||||
{% if date != article.date.date() %}
|
||||
{% set first_article_of_day = True %}
|
||||
{% else %}
|
||||
{% set first_article_of_day = False %}
|
||||
{% endif %}
|
||||
{% set date = article.date.date() %}
|
||||
{% include "article_stub.html" %}
|
||||
{% endfor %}
|
||||
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
18
themes/blue-penguin/templates/page.html
Normal file
18
themes/blue-penguin/templates/page.html
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<script type="application/ld+json">
|
||||
{{ page.jsonld }}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ SITENAME }} | {{ page.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="page">
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ page.content }}
|
||||
</div>
|
||||
{% endblock %}
|
||||
38
themes/blue-penguin/templates/pagination.html
Normal file
38
themes/blue-penguin/templates/pagination.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{# Use PAGINATION_PATTERNS or pagination may break #}
|
||||
{% if DEFAULT_PAGINATION and (articles_page.has_previous() or articles_page.has_next()) %}
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="pages">
|
||||
{% if PAGINATION_PATTERNS[0][0] != 0 %}
|
||||
{%- if articles_page.has_previous() %}
|
||||
{% if articles_page.previous_page_number() == 1 %}
|
||||
|
||||
<a href="{{ SITEURL }}/" class="prev_page">← Previous</a>
|
||||
{%- else %}
|
||||
|
||||
<a href="{{ SITEURL }}/page/{{ articles_page.previous_page_number() }}" class="prev_page">← Previous</a>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if articles_page.has_next() %}
|
||||
|
||||
<a href="{{ SITEURL }}/page/{{ articles_page.next_page_number() }}" class="next_page">Next →</a>
|
||||
{%- endif %}
|
||||
{% else %}
|
||||
{%- if articles_page.has_previous() %}
|
||||
{% if articles_page.previous_page_number() == 1 %}
|
||||
|
||||
<a href="{{ SITEURL }}/{{ page_name }}.html" class="prev_page">← Previous</a>
|
||||
{%- else %}
|
||||
|
||||
<a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html" class="prev_page">← Previous</a>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if articles_page.has_next() %}
|
||||
|
||||
<a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html" class="next_page">Next →</a>
|
||||
{%- endif %}
|
||||
{% endif %}
|
||||
|
||||
<span>Page {{ articles_page.number }} of {{ articles_paginator.num_pages }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
5
themes/blue-penguin/templates/tag.html
Normal file
5
themes/blue-penguin/templates/tag.html
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}{{ SITENAME }} | articles tagged "{{ tag }}"{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||
{% block ephemeral_nav %}
|
||||
{{ ephemeral_nav_link(tag, output_file, True) }}
|
||||
{% endblock %}
|
||||
8
themes/blue-penguin/templates/tags.html
Normal file
8
themes/blue-penguin/templates/tags.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<ul>
|
||||
{% for tag, articles in tags %}
|
||||
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
6
themes/blue-penguin/templates/translations.html
Normal file
6
themes/blue-penguin/templates/translations.html
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{% if article.translations %}
|
||||
Translations:
|
||||
{% for translation in article.translations %}
|
||||
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue