diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1829eb8 --- /dev/null +++ b/LICENSE @@ -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. diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..a44d0a1 --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,4 @@ +--- +title: "{{ replace .TranslationBaseName "-" " " | title }}" +number: x +--- diff --git a/assets/scss/dark.scss b/assets/scss/dark.scss new file mode 100644 index 0000000..20f9269 --- /dev/null +++ b/assets/scss/dark.scss @@ -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); +} diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..e8c71de --- /dev/null +++ b/config.toml @@ -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 diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..ea41faa --- /dev/null +++ b/content/about.md @@ -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: + - (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 diff --git a/content/python/.placeholder b/content/python/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/content/qml/.placeholder b/content/qml/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..b639565 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,8 @@ +{{ partial "header.html" . }} + +
+

{{ .Title }}

+

The requested memory does not exist.

+

+ +{{ partial "footer.html" . }} diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..ef51be4 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,17 @@ +{{ partial "header.html" . }} + +

+ {{ .Title }} +

+ +
+ + + +{{ partial "footer.html" . }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..6132593 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,8 @@ +{{ partial "header.html" . }} + +
+

{{ .Title }}

+
{{ .Content }}
+
+ +{{ partial "footer.html" . }} diff --git a/layouts/_default/summary.html b/layouts/_default/summary.html new file mode 100644 index 0000000..6446ef2 --- /dev/null +++ b/layouts/_default/summary.html @@ -0,0 +1,16 @@ + diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..cb54c08 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,15 @@ + +{{ partial "header.html" . }} + +
+ +{{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections) }} + {{ range $paginator.Pages }} + {{ .Render "summary" }} +{{ end }} + +{{ partial "paginator-menu.html" . }} + +
+ +{{ partial "footer.html" . }} diff --git a/layouts/index.xml b/layouts/index.xml new file mode 100644 index 0000000..5bdde69 --- /dev/null +++ b/layouts/index.xml @@ -0,0 +1,115 @@ +{{ printf `` | safeHTML }} {{/* ref: https://validator.w3.org/feed/docs/atom.html */}} + + {{- $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 `<![CDATA[%s]]>` $title | safeHTML }} + {{ with (or (.Param "subtitle") (.Param "tagline")) }} + {{ printf `` . | safeHTML }} + {{ end }} + {{ $output_formats := .OutputFormats }} + {{ range $output_formats -}} + {{- $rel := (or (and (eq "atom" (.Name | lower)) "self") "alternate") -}} + {{ with $output_formats.Get .Name }} + {{ printf `` .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 `` .Permalink .MediaType.Type $lang $langstr .Name | safeHTML }} + {{- end -}} + {{- end }} + {{- end }} + {{ now.Format "2006-01-02T15:04:05-07:00" | safeHTML }} + {{ with site.Copyright }} + {{- $copyright := replace . "{year}" now.Year -}} {{/* In case the site.copyright uses a special string "{year}" */}} + {{- $copyright = replace $copyright "©" "©" -}} + {{ $copyright | plainify }} + {{- 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 -}} + {{ (. | fingerprint).Permalink }} + {{- end }} + + {{/* For this to work, the $logo file should be present in the assets/ directory */}} + {{- $logo := .logo | default "logo.svg" -}} + {{- with resources.Get $logo -}} + {{ (. | fingerprint).Permalink }} + {{- end }} + {{ end }} + {{ with site.Author.name -}} + + {{ . }} + {{ with site.Author.email }} + {{ . }} + {{ end -}} + + {{- end }} + {{ with site.Params.id }} + {{ . | plainify }} + {{ else }} + {{ .Permalink }} + {{ 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 := . }} + + {{ printf `<![CDATA[%s]]>` .Title | safeHTML }} + + {{- range .Translations }} + {{- $link := printf "%s" .Permalink | safeHTML }} + {{- printf `` $link .Lang | safeHTML }} + {{- end }} + {{ with .Params.id }} + {{ . | plainify }} + {{ else }} + {{ .Permalink }} + {{ end }} + {{ with .Params.author -}} + {{- range . -}} + + {{ . }} + + {{- end -}} + {{- end }} + {{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }} + {{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }} + {{ $description1 := .Description | default "" }} + {{ $description := (cond (eq "" $description1) "" (printf "
%s
" ($description1 | markdownify))) }} + {{ printf `` $description .Content | safeHTML }} + {{ with site.Taxonomies }} + {{ range $taxo,$_ := . }} + {{ with $page.Param $taxo }} + {{ $taxo_list := . }} + {{ with site.GetPage (printf "/%s" $taxo) }} + {{ $taxonomy_page := . }} + {{ range $taxo_list }} + + {{ end }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} +
+ {{ end }} +
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 0000000..2c1fb81 --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1,11 @@ + + +
+ + + diff --git a/layouts/partials/head.html b/layouts/partials/head.html new file mode 100644 index 0000000..ac8806f --- /dev/null +++ b/layouts/partials/head.html @@ -0,0 +1,22 @@ + + + + + + + +{{ $style := resources.Get "scss/dark.scss" | resources.ToCSS }} + + + + + +{{ $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 + + diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..61cb4ba --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,27 @@ + + + +{{ partial "head.html" . }} + + +
+
+ +
+ + + +
+ +
diff --git a/layouts/partials/paginator-menu.html b/layouts/partials/paginator-menu.html new file mode 100644 index 0000000..73caf14 --- /dev/null +++ b/layouts/partials/paginator-menu.html @@ -0,0 +1,18 @@ + + diff --git a/layouts/robots.txt b/layouts/robots.txt new file mode 100644 index 0000000..4c807e2 --- /dev/null +++ b/layouts/robots.txt @@ -0,0 +1,3 @@ +User-agent: * + +Sitemap: {{ .Site.BaseURL }}/sitemap.xml diff --git a/layouts/shortcodes/video.html b/layouts/shortcodes/video.html new file mode 100644 index 0000000..3ba003e --- /dev/null +++ b/layouts/shortcodes/video.html @@ -0,0 +1,41 @@ +{{ $extensions := .Get "extensions" }} +{{ $src := .Get "src" }} + + +{{/* +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/" extensions="" >}} + +## Example: +{{< video src="/videos/example" extensions="mp4,webm" >}} +*/}} diff --git a/layouts/static/single.html b/layouts/static/single.html new file mode 100644 index 0000000..5c733bc --- /dev/null +++ b/layouts/static/single.html @@ -0,0 +1,8 @@ +{{ partial "header.html" . }} + +
+

{{ .Title }}

+
{{ .Content }}
+
+ +{{ partial "footer.html" . }} diff --git a/static/css/layout.css b/static/css/layout.css new file mode 100644 index 0000000..b365a30 --- /dev/null +++ b/static/css/layout.css @@ -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; + } + +} diff --git a/static/keys/mailo-publickey.txt b/static/keys/mailo-publickey.txt new file mode 100644 index 0000000..071fadc --- /dev/null +++ b/static/keys/mailo-publickey.txt @@ -0,0 +1,37 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +8ls80+tq +=L1tJ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 0000000..b6a5ef0 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /contact.html