Add basic hugo site
Signed-off-by: Juraj Oravec <jurajoravec@mailo.com>
This commit is contained in:
parent
0758a391c7
commit
caffb5abb3
283
LICENSE
Normal file
283
LICENSE
Normal file
|
@ -0,0 +1,283 @@
|
||||||
|
The code that powers this blog uses the following license:
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2017 Gyorgy Orban
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
The articles themselves are CC BY-NC 3.0:
|
||||||
|
|
||||||
|
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||||
|
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT
|
||||||
|
AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER
|
||||||
|
THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||||
|
|
||||||
|
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO
|
||||||
|
BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE
|
||||||
|
CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE
|
||||||
|
IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
|
||||||
|
"Adaptation" means a work based upon the Work, or upon the Work and other
|
||||||
|
pre-existing works, such as a translation, adaptation, derivative work,
|
||||||
|
arrangement of music or other alterations of a literary or artistic work, or
|
||||||
|
phonogram or performance and includes cinematographic adaptations or any other
|
||||||
|
form in which the Work may be recast, transformed, or adapted including in any
|
||||||
|
form recognizably derived from the original, except that a work that constitutes
|
||||||
|
a Collection will not be considered an Adaptation for the purpose of this
|
||||||
|
License. For the avoidance of doubt, where the Work is a musical work,
|
||||||
|
performance or phonogram, the synchronization of the Work in timed-relation with
|
||||||
|
a moving image ("synching") will be considered an Adaptation for the purpose of
|
||||||
|
this License.
|
||||||
|
"Collection" means a collection of literary or artistic works, such as
|
||||||
|
encyclopedias and anthologies, or performances, phonograms or broadcasts, or
|
||||||
|
other works or subject matter other than works listed in Section 1(f) below,
|
||||||
|
which, by reason of the selection and arrangement of their contents, constitute
|
||||||
|
intellectual creations, in which the Work is included in its entirety in
|
||||||
|
unmodified form along with one or more other contributions, each constituting
|
||||||
|
separate and independent works in themselves, which together are assembled into
|
||||||
|
a collective whole. A work that constitutes a Collection will not be considered
|
||||||
|
an Adaptation (as defined above) for the purposes of this License.
|
||||||
|
"Distribute" means to make available to the public the original and copies
|
||||||
|
of the Work or Adaptation, as appropriate, through sale or other transfer of
|
||||||
|
ownership.
|
||||||
|
"Licensor" means the individual, individuals, entity or entities that
|
||||||
|
offer(s) the Work under the terms of this License.
|
||||||
|
"Original Author" means, in the case of a literary or artistic work, the
|
||||||
|
individual, individuals, entity or entities who created the Work or if no
|
||||||
|
individual or entity can be identified, the publisher; and in addition (i) in
|
||||||
|
the case of a performance the actors, singers, musicians, dancers, and other
|
||||||
|
persons who act, sing, deliver, declaim, play in, interpret or otherwise perform
|
||||||
|
literary or artistic works or expressions of folklore; (ii) in the case of a
|
||||||
|
phonogram the producer being the person or legal entity who first fixes the
|
||||||
|
sounds of a performance or other sounds; and, (iii) in the case of broadcasts,
|
||||||
|
the organization that transmits the broadcast.
|
||||||
|
"Work" means the literary and/or artistic work offered under the terms of
|
||||||
|
this License including without limitation any production in the literary,
|
||||||
|
scientific and artistic domain, whatever may be the mode or form of its
|
||||||
|
expression including digital form, such as a book, pamphlet and other writing; a
|
||||||
|
lecture, address, sermon or other work of the same nature; a dramatic or
|
||||||
|
dramatico-musical work; a choreographic work or entertainment in dumb show; a
|
||||||
|
musical composition with or without words; a cinematographic work to which are
|
||||||
|
assimilated works expressed by a process analogous to cinematography; a work of
|
||||||
|
drawing, painting, architecture, sculpture, engraving or lithography; a
|
||||||
|
photographic work to which are assimilated works expressed by a process
|
||||||
|
analogous to photography; a work of applied art; an illustration, map, plan,
|
||||||
|
sketch or three-dimensional work relative to geography, topography, architecture
|
||||||
|
or science; a performance; a broadcast; a phonogram; a compilation of data to
|
||||||
|
the extent it is protected as a copyrightable work; or a work performed by a
|
||||||
|
variety or circus performer to the extent it is not otherwise considered a
|
||||||
|
literary or artistic work.
|
||||||
|
"You" means an individual or entity exercising rights under this License who
|
||||||
|
has not previously violated the terms of this License with respect to the
|
||||||
|
Work, or who has received express permission from the Licensor to exercise
|
||||||
|
rights under this License despite a previous violation.
|
||||||
|
"Publicly Perform" means to perform public recitations of the Work and to
|
||||||
|
communicate to the public those public recitations, by any means or process,
|
||||||
|
including by wire or wireless means or public digital performances; to make
|
||||||
|
available to the public Works in such a way that members of the public may
|
||||||
|
access these Works from a place and at a place individually chosen by them; to
|
||||||
|
perform the Work to the public by any means or process and the communication to
|
||||||
|
the public of the performances of the Work, including by public digital
|
||||||
|
performance; to broadcast and rebroadcast the Work by any means including signs,
|
||||||
|
sounds or images.
|
||||||
|
"Reproduce" means to make copies of the Work by any means including without
|
||||||
|
limitation by sound or visual recordings and the right of fixation and
|
||||||
|
reproducing fixations of the Work, including storage of a protected performance
|
||||||
|
or phonogram in digital form or other electronic medium.
|
||||||
|
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||||
|
limit, or restrict any uses free from copyright or rights arising from
|
||||||
|
limitations or exceptions that are provided for in connection with the copyright
|
||||||
|
protection under copyright law or other applicable laws.
|
||||||
|
|
||||||
|
3. License Grant. Subject to the terms and conditions of this License,
|
||||||
|
Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual
|
||||||
|
(for the duration of the applicable copyright) license to exercise the rights in
|
||||||
|
the Work as stated below:
|
||||||
|
|
||||||
|
to Reproduce the Work, to incorporate the Work into one or more Collections,
|
||||||
|
and to Reproduce the Work as incorporated in the Collections;
|
||||||
|
to create and Reproduce Adaptations provided that any such Adaptation, to
|
||||||
|
Distribute and Publicly Perform the Work including as incorporated in
|
||||||
|
Collections; and,
|
||||||
|
to Distribute and Publicly Perform Adaptations.
|
||||||
|
The above rights may be exercised in all media and formats whether now known
|
||||||
|
or hereafter devised. The above rights include the right to make such
|
||||||
|
modifications as are technically necessary to exercise the rights in other media
|
||||||
|
and formats. Subject to Section 8(f), all rights not expressly granted by
|
||||||
|
Licensor are hereby reserved, including but not limited to the rights set forth
|
||||||
|
in Section 4(d).
|
||||||
|
|
||||||
|
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||||
|
subject to and limited by the following restrictions:
|
||||||
|
|
||||||
|
You may Distribute or Publicly Perform the Work only under the terms of this
|
||||||
|
License. You must include a copy of, or the Uniform Resource Identifier
|
||||||
|
(URI) for, this License with every copy of the Work You Distribute or Publicly
|
||||||
|
Perform. You may not offer or impose any terms on the Work that restrict the
|
||||||
|
terms of this License or the ability of the recipient of the Work to exercise
|
||||||
|
the rights granted to that recipient under the terms of the License. You may not
|
||||||
|
sublicense the Work. You must keep intact all notices that refer to this License
|
||||||
|
and to the disclaimer of warranties with every copy of the Work You Distribute
|
||||||
|
or Publicly Perform. When You Distribute or Publicly Perform the Work, You may
|
||||||
|
not impose any effective technological measures on the Work that restrict the
|
||||||
|
ability of a recipient of the Work from You to exercise the rights granted to
|
||||||
|
that recipient under the terms of the License. This Section 4(a) applies to the
|
||||||
|
Work as incorporated in a Collection, but this does not require the Collection
|
||||||
|
apart from the Work itself to be made subject to the terms of this License. If
|
||||||
|
You create a Collection, upon notice from any Licensor You must, to the extent
|
||||||
|
practicable, remove from the Collection any credit as required by Section 4(c),
|
||||||
|
as requested. If You create an Adaptation, upon notice from any Licensor You
|
||||||
|
must, to the extent practicable, remove from the Adaptation any credit as
|
||||||
|
required by Section 4(c), as requested.
|
||||||
|
You may not exercise any of the rights granted to You in Section 3 above in
|
||||||
|
any manner that is primarily intended for or directed toward commercial
|
||||||
|
advantage or private monetary compensation. The exchange of the Work for other
|
||||||
|
copyrighted works by means of digital file-sharing or otherwise shall not be
|
||||||
|
considered to be intended for or directed toward commercial advantage or private
|
||||||
|
monetary compensation, provided there is no payment of any monetary compensation
|
||||||
|
in connection with the exchange of copyrighted works.
|
||||||
|
If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||||
|
Collections, You must, unless a request has been made pursuant to Section
|
||||||
|
4(a), keep intact all copyright notices for the Work and provide, reasonable to
|
||||||
|
the medium or means You are utilizing: (i) the name of the Original Author (or
|
||||||
|
pseudonym, if applicable) if supplied, and/or if the Original Author and/or
|
||||||
|
Licensor designate another party or parties (e.g., a sponsor institute,
|
||||||
|
publishing entity, journal) for attribution ("Attribution Parties") in
|
||||||
|
Licensor's copyright notice, terms of service or by other reasonable means, the
|
||||||
|
name of such party or parties; (ii) the title of the Work if supplied; (iii) to
|
||||||
|
the extent reasonably practicable, the URI, if any, that Licensor specifies to
|
||||||
|
be associated with the Work, unless such URI does not refer to the copyright
|
||||||
|
notice or licensing information for the Work; and, (iv) consistent with Section
|
||||||
|
3(b), in the case of an Adaptation, a credit identifying the use of the Work in
|
||||||
|
the Adaptation (e.g., "French translation of the Work by Original Author," or
|
||||||
|
"Screenplay based on original Work by Original Author"). The credit required by
|
||||||
|
this Section 4(c) may be implemented in any reasonable manner; provided,
|
||||||
|
however, that in the case of a Adaptation or Collection, at a minimum such
|
||||||
|
credit will appear, if a credit for all contributing authors of the Adaptation
|
||||||
|
or Collection appears, then as part of these credits and in a manner at least as
|
||||||
|
prominent as the credits for the other contributing authors. For the avoidance
|
||||||
|
of doubt, You may only use the credit required by this Section for the purpose
|
||||||
|
of attribution in the manner set out above and, by exercising Your rights under
|
||||||
|
this License, You may not implicitly or explicitly assert or imply any
|
||||||
|
connection with, sponsorship or endorsement by the Original Author, Licensor
|
||||||
|
and/or Attribution Parties, as appropriate, of You or Your use of the Work,
|
||||||
|
without the separate, express prior written permission of the Original Author,
|
||||||
|
Licensor and/or Attribution Parties.
|
||||||
|
For the avoidance of doubt:
|
||||||
|
|
||||||
|
Non-waivable Compulsory License Schemes. In those jurisdictions in which the
|
||||||
|
right to collect royalties through any statutory or compulsory licensing
|
||||||
|
scheme cannot be waived, the Licensor reserves the exclusive right to collect
|
||||||
|
such royalties for any exercise by You of the rights granted under this License;
|
||||||
|
Waivable Compulsory License Schemes. In those jurisdictions in which the
|
||||||
|
right to collect royalties through any statutory or compulsory licensing
|
||||||
|
scheme can be waived, the Licensor reserves the exclusive right to collect such
|
||||||
|
royalties for any exercise by You of the rights granted under this License if
|
||||||
|
Your exercise of such rights is for a purpose or use which is otherwise than
|
||||||
|
noncommercial as permitted under Section 4(b) and otherwise waives the right to
|
||||||
|
collect royalties through any statutory or compulsory licensing scheme; and,
|
||||||
|
Voluntary License Schemes. The Licensor reserves the right to collect
|
||||||
|
royalties, whether individually or, in the event that the Licensor is a
|
||||||
|
member of a collecting society that administers voluntary licensing schemes, via
|
||||||
|
that society, from any exercise by You of the rights granted under this License
|
||||||
|
that is for a purpose or use which is otherwise than noncommercial as permitted
|
||||||
|
under Section 4(c).
|
||||||
|
Except as otherwise agreed in writing by the Licensor or as may be otherwise
|
||||||
|
permitted by applicable law, if You Reproduce, Distribute or Publicly
|
||||||
|
Perform the Work either by itself or as part of any Adaptations or Collections,
|
||||||
|
You must not distort, mutilate, modify or take other derogatory action in
|
||||||
|
relation to the Work which would be prejudicial to the Original Author's honor
|
||||||
|
or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in
|
||||||
|
which any exercise of the right granted in Section 3(b) of this License (the
|
||||||
|
right to make Adaptations) would be deemed to be a distortion, mutilation,
|
||||||
|
modification or other derogatory action prejudicial to the Original Author's
|
||||||
|
honor and reputation, the Licensor will waive or not assert, as appropriate,
|
||||||
|
this Section, to the fullest extent permitted by the applicable national law, to
|
||||||
|
enable You to reasonably exercise Your right under Section 3(b) of this License
|
||||||
|
(right to make Adaptations) but not otherwise.
|
||||||
|
5. Representations, Warranties and Disclaimer
|
||||||
|
|
||||||
|
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
|
||||||
|
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
|
||||||
|
CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
|
||||||
|
WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
|
||||||
|
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
|
||||||
|
EXCLUSION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW,
|
||||||
|
IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
|
||||||
|
LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
7. Termination
|
||||||
|
|
||||||
|
This License and the rights granted hereunder will terminate automatically
|
||||||
|
upon any breach by You of the terms of this License. Individuals or entities
|
||||||
|
who have received Adaptations or Collections from You under this License,
|
||||||
|
however, will not have their licenses terminated provided such individuals or
|
||||||
|
entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7,
|
||||||
|
and 8 will survive any termination of this License.
|
||||||
|
Subject to the above terms and conditions, the license granted here is
|
||||||
|
perpetual (for the duration of the applicable copyright in the Work).
|
||||||
|
Notwithstanding the above, Licensor reserves the right to release the Work under
|
||||||
|
different license terms or to stop distributing the Work at any time; provided,
|
||||||
|
however that any such election will not serve to withdraw this License (or any
|
||||||
|
other license that has been, or is required to be, granted under the terms of
|
||||||
|
this License), and this License will continue in full force and effect unless
|
||||||
|
terminated as stated above.
|
||||||
|
8. Miscellaneous
|
||||||
|
|
||||||
|
Each time You Distribute or Publicly Perform the Work or a Collection, the
|
||||||
|
Licensor offers to the recipient a license to the Work on the same terms and
|
||||||
|
conditions as the license granted to You under this License.
|
||||||
|
Each time You Distribute or Publicly Perform an Adaptation, Licensor offers
|
||||||
|
to the recipient a license to the original Work on the same terms and
|
||||||
|
conditions as the license granted to You under this License.
|
||||||
|
If any provision of this License is invalid or unenforceable under
|
||||||
|
applicable law, it shall not affect the validity or enforceability of the
|
||||||
|
remainder of the terms of this License, and without further action by the
|
||||||
|
parties to this agreement, such provision shall be reformed to the minimum
|
||||||
|
extent necessary to make such provision valid and enforceable.
|
||||||
|
No term or provision of this License shall be deemed waived and no breach
|
||||||
|
consented to unless such waiver or consent shall be in writing and signed by
|
||||||
|
the party to be charged with such waiver or consent.
|
||||||
|
This License constitutes the entire agreement between the parties with
|
||||||
|
respect to the Work licensed here. There are no understandings, agreements
|
||||||
|
or representations with respect to the Work not specified here. Licensor shall
|
||||||
|
not be bound by any additional provisions that may appear in any communication
|
||||||
|
from You. This License may not be modified without the mutual written agreement
|
||||||
|
of the Licensor and You.
|
||||||
|
The rights granted under, and the subject matter referenced, in this License
|
||||||
|
were drafted utilizing the terminology of the Berne Convention for the
|
||||||
|
Protection of Literary and Artistic Works (as amended on September 28, 1979),
|
||||||
|
the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO
|
||||||
|
Performances and Phonograms Treaty of 1996 and the Universal Copyright
|
||||||
|
Convention (as revised on July 24, 1971). These rights and subject matter take
|
||||||
|
effect in the relevant jurisdiction in which the License terms are sought to be
|
||||||
|
enforced according to the corresponding provisions of the implementation of
|
||||||
|
those treaty provisions in the applicable national law. If the standard suite of
|
||||||
|
rights granted under applicable copyright law includes additional rights not
|
||||||
|
granted under this License, such additional rights are deemed to be included in
|
||||||
|
the License; this License is not intended to restrict the license of any rights
|
||||||
|
under applicable law.
|
4
archetypes/default.md
Normal file
4
archetypes/default.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: "{{ replace .TranslationBaseName "-" " " | title }}"
|
||||||
|
number: x
|
||||||
|
---
|
142
assets/scss/dark.scss
Normal file
142
assets/scss/dark.scss
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
$theme-colors: (
|
||||||
|
"main-bg-color": #0a0a0a,
|
||||||
|
"main-text": #ffffff,
|
||||||
|
"main-sec": #99cc66, /* main secondary color for the site */
|
||||||
|
"code-quote-bg": #0a0a0a, /* background color for quotes and code blocks */
|
||||||
|
"copyright": #808080, /* copyright text color */
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: map-get($theme-colors, "main-bg-color");
|
||||||
|
color: map-get($theme-colors, "main-text");
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: map-get($theme-colors, "main-text");
|
||||||
|
}
|
||||||
|
|
||||||
|
code, pre {
|
||||||
|
background: map-get($theme-colors, "code-quote-bg");
|
||||||
|
border: 1px solid #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
background-color: transparent;
|
||||||
|
border: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
video .video {
|
||||||
|
background-color: map-get($theme-colors, "code-quote-bg");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* syntax highlight code block table backround
|
||||||
|
* looks better if overwritten.
|
||||||
|
* */
|
||||||
|
.post .content .highlight table {
|
||||||
|
background-color: #181818 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
background: map-get($theme-colors, "code-quote-bg");
|
||||||
|
border-left-color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
table, th, td {
|
||||||
|
border-color: #5C5C5C;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover {
|
||||||
|
background: #1D1F21;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background: #101010;
|
||||||
|
}
|
||||||
|
|
||||||
|
.siteTitle a {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
background: #181818;
|
||||||
|
border-left: 1px solid #303030;
|
||||||
|
border-right: 1px solid #303030;
|
||||||
|
border-top: 1px solid #303030;
|
||||||
|
border-radius: 0.2em;
|
||||||
|
box-shadow: 0 1px 2px 0 #000000, 0 2px 5px 0 #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content h1,
|
||||||
|
.post .content h2,
|
||||||
|
.post .content h3,
|
||||||
|
.post .content h4,
|
||||||
|
.post .content h5,
|
||||||
|
.post .content h6 {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content a {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content a:hover {
|
||||||
|
color: map-get($theme-colors, "main-text");
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item-title:hover {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag a:hover {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.copyright, {
|
||||||
|
color: map-get($theme-colors, "copyright");
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-preview {
|
||||||
|
border: 1px solid #303030;
|
||||||
|
border-radius: 0.2em;
|
||||||
|
box-shadow: 0 1px 2px 0 #000000, 0 2px 5px 0 #000000;
|
||||||
|
background: #181818;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-preview .title a {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.rmore {
|
||||||
|
color: map-get($theme-colors, "main-text");
|
||||||
|
}
|
||||||
|
|
||||||
|
.rmore a {
|
||||||
|
background: map-get($theme-colors, "main-bg-color");
|
||||||
|
border: 1px solid #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rmore a:hover {
|
||||||
|
background: #202020;
|
||||||
|
color: map-get($theme-colors, "main-text");
|
||||||
|
};
|
||||||
|
|
||||||
|
.err-404 {
|
||||||
|
border: 1px solid #303030;
|
||||||
|
border-radius: 0.2em;
|
||||||
|
background: #202020;
|
||||||
|
box-shadow: 0 1px 2px 0 #000000, 0 2px 5px 0 #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-list .archive-list a {
|
||||||
|
color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
table.stats td.graph div {
|
||||||
|
background-color: map-get($theme-colors, "main-sec");
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-list .archive-list a:hover {
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
74
config.toml
Normal file
74
config.toml
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
baseurl = "https://falkon.sgorava.xyz/"
|
||||||
|
title = "Falkon Tutorials"
|
||||||
|
canonifyurls = true
|
||||||
|
languageCode = "en-US"
|
||||||
|
paginate = 3
|
||||||
|
disableHugoGeneratorInject = true
|
||||||
|
pluralizeListTitles = false
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "Juraj Oravec"
|
||||||
|
|
||||||
|
SectionPagesMenu = "main"
|
||||||
|
|
||||||
|
# Configure syntax highlight
|
||||||
|
[markup]
|
||||||
|
[markup.highlight]
|
||||||
|
style = "rrt" # dark themes: monokai, api, fruity, native, rrt, swapoff
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "About"
|
||||||
|
weight = -140
|
||||||
|
identifier = "about"
|
||||||
|
url = "/about/"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "Docs"
|
||||||
|
weight = -130
|
||||||
|
identifier = "docs"
|
||||||
|
url = "/docs"
|
||||||
|
[menu.main.params]
|
||||||
|
target = "_blank"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "QML"
|
||||||
|
weight = -120
|
||||||
|
identifier = "qml"
|
||||||
|
url = "/qml/"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "Python"
|
||||||
|
weight = -110
|
||||||
|
identifier = "python"
|
||||||
|
url = "/python/"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "RSS"
|
||||||
|
weight = -100
|
||||||
|
identifier = "feed"
|
||||||
|
url = "/index.xml"
|
||||||
|
|
||||||
|
[params.meta]
|
||||||
|
description = "A collection of tutorial for Falkon plugin development."
|
||||||
|
|
||||||
|
[params]
|
||||||
|
year = 2022
|
||||||
|
email = "jurajoravec@mailo.com"
|
||||||
|
|
||||||
|
[permalinks]
|
||||||
|
qml = "/tutorial/qml/:title/"
|
||||||
|
python = "/tutorial/python/:title"
|
||||||
|
|
||||||
|
[privacy]
|
||||||
|
[privacy.disqus]
|
||||||
|
disable = true
|
||||||
|
[privacy.googleAnalytics]
|
||||||
|
disable = true
|
||||||
|
[privacy.instagram]
|
||||||
|
disable = true
|
||||||
|
[privacy.twitter]
|
||||||
|
disable = true
|
||||||
|
[privacy.vimeo]
|
||||||
|
disable = true
|
||||||
|
[privacy.youtube]
|
||||||
|
disable = true
|
33
content/about.md
Normal file
33
content/about.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
title: About
|
||||||
|
type: static
|
||||||
|
---
|
||||||
|
|
||||||
|
The purpose of these tutorials is to show a basic usage of Falkom plugin
|
||||||
|
API so that other can more easily start developing extensions for it.
|
||||||
|
|
||||||
|
You are here at your own risk.
|
||||||
|
|
||||||
|
## Code
|
||||||
|
|
||||||
|
The code of this website can be found at my
|
||||||
|
[Gitea instance][gitea-instance] and tutorials are also
|
||||||
|
[there][gitea-tutorial].
|
||||||
|
|
||||||
|
The purpose of which is to provide a web interface for my own use. You
|
||||||
|
can always download the code and mess around on your own, at worst you
|
||||||
|
can write me an email.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
You can find me at different places and the best way is to use emaail.
|
||||||
|
|
||||||
|
- Emails:
|
||||||
|
- <jurajoravec [:a+t:] mailo.com> (GPG :
|
||||||
|
[13660A3F1D9F093B][gpg-key-mailo])
|
||||||
|
|
||||||
|
|
||||||
|
[gitea-instance]: https://git.sgorava.xyz/
|
||||||
|
[gitea-tutorial]: https://git.sgorava.xyz/Falkon/FalkonTutorials
|
||||||
|
|
||||||
|
[gpg-key-mailo]: /keys/mailo-publickey.txt
|
0
content/python/.placeholder
Normal file
0
content/python/.placeholder
Normal file
0
content/qml/.placeholder
Normal file
0
content/qml/.placeholder
Normal file
8
layouts/404.html
Normal file
8
layouts/404.html
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<div class="err-404" >
|
||||||
|
<h1 id="title">{{ .Title }}</h1>
|
||||||
|
<p>The requested memory does not exist.<p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
17
layouts/_default/list.html
Normal file
17
layouts/_default/list.html
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<h2 class="content-list-title">
|
||||||
|
<a href="{{ .Permalink }}" class="linktopost">{{ .Title }}</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="content-list">
|
||||||
|
|
||||||
|
<ul class="archive-list">
|
||||||
|
{{ range sort .Data.Pages ".Params.number" }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
8
layouts/_default/single.html
Normal file
8
layouts/_default/single.html
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<article class="post">
|
||||||
|
<h1 class="title"> {{ .Title }} </h1>
|
||||||
|
<div class="content"> {{ .Content }} </div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
16
layouts/_default/summary.html
Normal file
16
layouts/_default/summary.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<article class="post-preview">
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h2 class="title"> <a href="{{ .Permalink }}"> {{ .Title }}</a> </h2>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="summary">
|
||||||
|
{{ .Summary }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rmore">
|
||||||
|
<a href="{{ .Permalink }}" class="rmore">Read more</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
15
layouts/index.html
Normal file
15
layouts/index.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
{{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections) }}
|
||||||
|
{{ range $paginator.Pages }}
|
||||||
|
{{ .Render "summary" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "paginator-menu.html" . }}
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
115
layouts/index.xml
Normal file
115
layouts/index.xml
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
{{ printf `<?xml version="1.0" encoding="utf-8"?>` | safeHTML }} {{/* ref: https://validator.w3.org/feed/docs/atom.html */}}
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom"{{ with site.LanguageCode }} xml:lang="{{ . }}"{{ end }}>
|
||||||
|
{{- $title := site.Title -}}
|
||||||
|
{{- with .Title -}}
|
||||||
|
{{- if (not (eq . site.Title)) -}}
|
||||||
|
{{- $title = printf `%s %s %s` . (i18n "feed_title_on" | default "on") site.Title -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .IsTranslated -}}
|
||||||
|
{{ $title = printf "%s (%s)" $title (index site.Data.i18n.languages .Lang) }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ printf `<title type="html"><![CDATA[%s]]></title>` $title | safeHTML }}
|
||||||
|
{{ with (or (.Param "subtitle") (.Param "tagline")) }}
|
||||||
|
{{ printf `<subtitle type="html"><![CDATA[%s]]></subtitle>` . | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $output_formats := .OutputFormats }}
|
||||||
|
{{ range $output_formats -}}
|
||||||
|
{{- $rel := (or (and (eq "atom" (.Name | lower)) "self") "alternate") -}}
|
||||||
|
{{ with $output_formats.Get .Name }}
|
||||||
|
{{ printf `<link href=%q rel=%q type=%q title=%q />` .Permalink $rel .MediaType.Type .Name | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Translations }}
|
||||||
|
{{ $output_formats := .OutputFormats }}
|
||||||
|
{{- $lang := .Lang }}
|
||||||
|
{{- $langstr := index site.Data.i18n.languages .Lang }}
|
||||||
|
{{ range $output_formats -}}
|
||||||
|
{{ with $output_formats.Get .Name }}
|
||||||
|
{{ printf `<link href=%q rel="alternate" type=%q hreflang=%q title="[%s] %s" />` .Permalink .MediaType.Type $lang $langstr .Name | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<updated>{{ now.Format "2006-01-02T15:04:05-07:00" | safeHTML }}</updated>
|
||||||
|
{{ with site.Copyright }}
|
||||||
|
{{- $copyright := replace . "{year}" now.Year -}} {{/* In case the site.copyright uses a special string "{year}" */}}
|
||||||
|
{{- $copyright = replace $copyright "©" "©" -}}
|
||||||
|
<rights>{{ $copyright | plainify }}</rights>
|
||||||
|
{{- end }}
|
||||||
|
{{ with .Param "feed" }}
|
||||||
|
{{/* For this to work, the $icon file should be present in the assets/ directory */}}
|
||||||
|
{{- $icon := .icon | default "icon.svg" -}}
|
||||||
|
{{- with resources.Get $icon -}}
|
||||||
|
<icon>{{ (. | fingerprint).Permalink }}</icon>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* For this to work, the $logo file should be present in the assets/ directory */}}
|
||||||
|
{{- $logo := .logo | default "logo.svg" -}}
|
||||||
|
{{- with resources.Get $logo -}}
|
||||||
|
<logo>{{ (. | fingerprint).Permalink }}</logo>
|
||||||
|
{{- end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ with site.Author.name -}}
|
||||||
|
<author>
|
||||||
|
<name>{{ . }}</name>
|
||||||
|
{{ with site.Author.email }}
|
||||||
|
<email>{{ . }}</email>
|
||||||
|
{{ end -}}
|
||||||
|
</author>
|
||||||
|
{{- end }}
|
||||||
|
{{ with site.Params.id }}
|
||||||
|
<id>{{ . | plainify }}</id>
|
||||||
|
{{ else }}
|
||||||
|
<id>{{ .Permalink }}</id>
|
||||||
|
{{ end }}
|
||||||
|
{{- $limit := (cond (le site.Config.Services.RSS.Limit 0) 65536 site.Config.Services.RSS.Limit) }}
|
||||||
|
{{- $feed_sections := site.Params.feedSections | default site.Params.mainSections -}}
|
||||||
|
{{/* Range through only the pages with a Type in $feed_sections. */}}
|
||||||
|
{{- $pages := where .RegularPages "Type" "in" $feed_sections -}}
|
||||||
|
{{- if (eq .Kind "home") -}}
|
||||||
|
{{- $pages = where site.RegularPages "Type" "in" $feed_sections -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{/* Remove the pages that have the disable_feed parameter set to true. */}}
|
||||||
|
{{- $pages = where $pages ".Params.disable_feed" "!=" true -}}
|
||||||
|
{{- range first $limit $pages }}
|
||||||
|
{{ $page := . }}
|
||||||
|
<entry>
|
||||||
|
{{ printf `<title type="html"><![CDATA[%s]]></title>` .Title | safeHTML }}
|
||||||
|
<link href="{{ .Permalink }}" rel="alternate" type="text/html" />
|
||||||
|
{{- range .Translations }}
|
||||||
|
{{- $link := printf "%s" .Permalink | safeHTML }}
|
||||||
|
{{- printf `<link href=%q rel="alternate" type="text/html" hreflang=%q />` $link .Lang | safeHTML }}
|
||||||
|
{{- end }}
|
||||||
|
{{ with .Params.id }}
|
||||||
|
<id>{{ . | plainify }}</id>
|
||||||
|
{{ else }}
|
||||||
|
<id>{{ .Permalink }}</id>
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Params.author -}}
|
||||||
|
{{- range . -}} <!-- Assuming the author front-matter to be a list -->
|
||||||
|
<author>
|
||||||
|
<name>{{ . }}</name>
|
||||||
|
</author>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
<published>{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}</published>
|
||||||
|
<updated>{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}</updated>
|
||||||
|
{{ $description1 := .Description | default "" }}
|
||||||
|
{{ $description := (cond (eq "" $description1) "" (printf "<blockquote>%s</blockquote>" ($description1 | markdownify))) }}
|
||||||
|
{{ printf `<content type="html"><![CDATA[%s%s]]></content>` $description .Content | safeHTML }}
|
||||||
|
{{ with site.Taxonomies }}
|
||||||
|
{{ range $taxo,$_ := . }} <!-- Defaults taxos: "tags", "categories" -->
|
||||||
|
{{ with $page.Param $taxo }}
|
||||||
|
{{ $taxo_list := . }} <!-- $taxo_list will be the tags/categories list -->
|
||||||
|
{{ with site.GetPage (printf "/%s" $taxo) }}
|
||||||
|
{{ $taxonomy_page := . }}
|
||||||
|
{{ range $taxo_list }} <!-- Below, assuming pretty URLs -->
|
||||||
|
<category scheme="{{ printf "%s%s" $taxonomy_page.Permalink (. | urlize) }}" term="{{ (. | urlize) }}" label="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</entry>
|
||||||
|
{{ end }}
|
||||||
|
</feed>
|
11
layouts/partials/footer.html
Normal file
11
layouts/partials/footer.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
<div class="copyright"> The content of this website is licensed under <a href="https://creativecommons.org/licenses/by-nc/3.0/">CC BY-NC 3.0</a>. The <a href="https://git.sgorava.xyz/Websites/falkon.sgorava.xyz">code of this website</a> is under <a href="https://opensource.org/licenses/MIT">MIT</a> </div>
|
||||||
|
<div class="copyright"> Copyright @ Juraj Oravec {{ .Site.Params.year }}-{{ now.Year }} </div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div> <!-- main -->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
22
layouts/partials/head.html
Normal file
22
layouts/partials/head.html
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="author" content="{{ .Site.Author.name }}" />
|
||||||
|
<meta name="description" content="{{ .Site.Params.meta.description }}" />
|
||||||
|
<link rel="canonical" href="{{ .Permalink }}" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/css/layout.css" />
|
||||||
|
{{ $style := resources.Get "scss/dark.scss" | resources.ToCSS }}
|
||||||
|
<link rel="stylesheet" href="{{ $style.Permalink }}">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="{{ .Site.Title }} - News" href="/index.xml" />
|
||||||
|
|
||||||
|
<title>
|
||||||
|
{{ $url := replace .Permalink ( printf "%s" .Site.BaseURL) "" }}
|
||||||
|
{{ if or (eq $url "/") (eq $url "") }}
|
||||||
|
{{ .Site.Title }}
|
||||||
|
{{ else }}
|
||||||
|
{{ if .Params.heading }} {{ .Params.heading }} {{ else }} {{ .Title }} | {{ .Site.Title }} {{ end }}
|
||||||
|
{{ end }}
|
||||||
|
0</title>
|
||||||
|
|
||||||
|
</head>
|
27
layouts/partials/header.html
Normal file
27
layouts/partials/header.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-US{{ end }}">
|
||||||
|
|
||||||
|
{{ partial "head.html" . }}
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="main">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<div class="header-bar">
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<div class="siteTitle">
|
||||||
|
<a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a>
|
||||||
|
</div> <!--siteTitle-->
|
||||||
|
|
||||||
|
<div class="links">
|
||||||
|
{{ $currentPage := . }}
|
||||||
|
{{ range .Site.Menus.main }}
|
||||||
|
<a class="nav-item{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} active{{end}}" href="{{.URL}}"{{ with .Params.target }} target="{{ . }}"{{ end }}><span class="nav-item-title">{{ .Name }}</span></a>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
18
layouts/partials/paginator-menu.html
Normal file
18
layouts/partials/paginator-menu.html
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
<p class="page-nav">
|
||||||
|
<span class="page-prev">
|
||||||
|
{{ if .Paginator.HasPrev }}
|
||||||
|
<a href="{{ .Paginator.Prev.URL }}" title="Previous page" > << </a>
|
||||||
|
{{ end }}
|
||||||
|
</span> <!-- page-prev -->
|
||||||
|
|
||||||
|
<span class="page-num">
|
||||||
|
{{ .Paginator.PageNumber }}/{{ .Paginator.TotalPages }}
|
||||||
|
</span> <!-- page-num -->
|
||||||
|
|
||||||
|
<span class="page-next">
|
||||||
|
{{ if .Paginator.HasNext }}
|
||||||
|
<a href="{{ .Paginator.Next.URL }}" title="Next page"> >> </a>
|
||||||
|
{{ end }}
|
||||||
|
</span> <!-- page-next -->
|
||||||
|
</p> <!-- page-nav -->
|
3
layouts/robots.txt
Normal file
3
layouts/robots.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
User-agent: *
|
||||||
|
|
||||||
|
Sitemap: {{ .Site.BaseURL }}/sitemap.xml
|
41
layouts/shortcodes/video.html
Normal file
41
layouts/shortcodes/video.html
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{{ $extensions := .Get "extensions" }}
|
||||||
|
{{ $src := .Get "src" }}
|
||||||
|
|
||||||
|
<video width="480" height="320" controls>
|
||||||
|
{{ range split $extensions "," }}
|
||||||
|
<source src="{{ $src }}.{{ . }}">
|
||||||
|
{{ end }}
|
||||||
|
<div class="video">
|
||||||
|
|
||||||
|
Your browser does not support HTML5 video.
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{{ range split $extensions "," }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ $src }}.{{ . }}">{{ $src }}.{{ . }}</a>
|
||||||
|
{{ $filename := . | printf "/static%s.%s" $src }}
|
||||||
|
{{ $stat := os.Stat $filename }}
|
||||||
|
({{ div $stat.Size 1024 }} kiB)
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</video>
|
||||||
|
{{/*
|
||||||
|
MP4 and Webm formats are preferred.
|
||||||
|
|
||||||
|
Convert to MP4:
|
||||||
|
ffmpeg -i input.mkv -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac output.mp4 -hide_banner
|
||||||
|
|
||||||
|
Convert to Webm:
|
||||||
|
ffmpeg -i input.mkv -c:v libvpx-vp9 -crf 30 -b:v 0 -b:a 128k -c:a libopus output.webm
|
||||||
|
|
||||||
|
## Usage:
|
||||||
|
Put the video files into `/static/videos` folder.
|
||||||
|
Than include this file with its name and available extensions.
|
||||||
|
{{< video src="/videos/<video-file-name-without-extension>" extensions="<comma_separated_list_of_extensions>" >}}
|
||||||
|
|
||||||
|
## Example:
|
||||||
|
{{< video src="/videos/example" extensions="mp4,webm" >}}
|
||||||
|
*/}}
|
8
layouts/static/single.html
Normal file
8
layouts/static/single.html
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<article class="post">
|
||||||
|
<h1 class="title"> {{ .Title }} </h1>
|
||||||
|
<div class="content"> {{ .Content }} </div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
337
static/css/layout.css
Normal file
337
static/css/layout.css
Normal file
|
@ -0,0 +1,337 @@
|
||||||
|
body {
|
||||||
|
font-family: "Arial", Gadget, sans-serif;
|
||||||
|
counter-reset: heading;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
margin: auto;
|
||||||
|
max-width: 48em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main .header-bar {
|
||||||
|
padding: 1em 0.2em 0.3em 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.9em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe {
|
||||||
|
max-width: 42em;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 1.17em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
font-size: 1.12em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
font-size: .83em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
font-size: .75em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:active, a:focus {
|
||||||
|
outline-style: solid;
|
||||||
|
outline-width: thin;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* navigation */
|
||||||
|
nav {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav .links {
|
||||||
|
display: -webkit-flex;
|
||||||
|
-webkit-justify-content: space-between;
|
||||||
|
-webkit-flex-flow: column;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-flow: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item {
|
||||||
|
font-size: 1.2em;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item-title {
|
||||||
|
padding: 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item-title:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
margin: 1em 0em 1em;
|
||||||
|
padding: 0.5em 0.5em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
white-space: pre-wrap; /* Since CSS 2.1 */
|
||||||
|
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||||||
|
white-space: -pre-wrap; /* Opera 4-6 */
|
||||||
|
white-space: -o-pre-wrap; /* Opera 7 */
|
||||||
|
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
code, pre {
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
padding: 0.5em;
|
||||||
|
padding-left: 1em;
|
||||||
|
border-left: 3px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
th, td {
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* site title */
|
||||||
|
.siteTitle {
|
||||||
|
font-size: 2.5em;
|
||||||
|
margin-bottom: 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.siteTitle a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.articleheader_data {
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .title {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content{
|
||||||
|
padding-left : 1em;
|
||||||
|
padding-right : 1em;
|
||||||
|
padding-bottom : 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
margin-top : 1.5em;
|
||||||
|
margin-bottom : 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content h1{
|
||||||
|
margin: 1em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content h2{
|
||||||
|
margin: 1em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content h3{
|
||||||
|
margin: 1em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content h4{
|
||||||
|
margin: 1em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content h5{
|
||||||
|
margin: 1em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .content p{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.post-prev a {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-next a {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-home a {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copyright {
|
||||||
|
font-size: smaller;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.err-404 {
|
||||||
|
margin: 3em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-list {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-item a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* summary list on main page */
|
||||||
|
|
||||||
|
.post-preview {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 0.5em 0.5em 1em 0.5em;
|
||||||
|
margin-top: 1.5em;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-preview .title {
|
||||||
|
margin-top: 0.3em;
|
||||||
|
margin-bottom: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-preview a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-preview .summary {
|
||||||
|
padding-left: 0.5em;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
padding-top: 0.5em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-preview .summary p {
|
||||||
|
margin-block-start: 0.5em;
|
||||||
|
margin-block-end: 0.5em;
|
||||||
|
margin-inline-start: 0.em;
|
||||||
|
margin-inline-end: 0em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rmore {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
white-space:nowrap;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rmore a {
|
||||||
|
border-radius: 0.2em;
|
||||||
|
padding: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-nav {
|
||||||
|
text-align: center;
|
||||||
|
padding: 1em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-nav a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-num {
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-list-title {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-list-title a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sitemap {
|
||||||
|
margin: auto;
|
||||||
|
width: 50%;
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin: 1em auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table, th, td {
|
||||||
|
border: 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media only screen and (min-width: 400px) {
|
||||||
|
|
||||||
|
header:after {
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav .links {
|
||||||
|
float: right;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.siteTitle {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item-title {
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
37
static/keys/mailo-publickey.txt
Normal file
37
static/keys/mailo-publickey.txt
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
8ls80+tq
|
||||||
|
=L1tJ
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
2
static/robots.txt
Normal file
2
static/robots.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
User-agent: *
|
||||||
|
Disallow: /contact.html
|
Loading…
Reference in New Issue
Block a user