diff options
author | Wojtek Kosior <koszko@koszko.org> | 2022-11-16 18:52:53 +0100 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2022-11-16 21:43:50 +0100 |
commit | 08f4d63f450ccd96f5077bc60774d8f1fecec92c (patch) | |
tree | 7f09941d62ca23737bc0b1f616d2d50eb7dd14af /src/koszko_org_website/templates | |
download | koszko-org-website-08f4d63f450ccd96f5077bc60774d8f1fecec92c.tar.gz koszko-org-website-08f4d63f450ccd96f5077bc60774d8f1fecec92c.zip |
initial commitv2022.11.16
Diffstat (limited to 'src/koszko_org_website/templates')
22 files changed, 2204 insertions, 0 deletions
diff --git a/src/koszko_org_website/templates/__base.html.jinja b/src/koszko_org_website/templates/__base.html.jinja new file mode 100644 index 0000000..c05a0a1 --- /dev/null +++ b/src/koszko_org_website/templates/__base.html.jinja @@ -0,0 +1,253 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website base page template. + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} + +{% macro same_lang_url(page_path) -%} + {{ url_for('.show_page_in_' ~ lang_short, page_path=page_path) }} +{%- endmacro %} + +{% + set section_ns = namespace( + in_section = false, + id = none, + linked = false, + first = true + ) +%} + +{% macro maybe_link(to, link=true) %} + {%- if to is not none and link -%} + <a href="{{ to }}">{{ caller() }}</a> + {%- else -%} + {{ caller() }} + {%- endif -%} +{% endmacro %} + +{% macro header(level, text='', link_to_section=true) %} + <h{{ level }}{{ header_attrs|default({})|xmlattr }}> + {% + set should_link = section_ns.in_section and + link_to_section and + not section_ns.linked and + section_ns.id is not none + %} + {% set section_ns.linked = section_ns.linked or should_link %} + {% set caller_markup = caller() if caller is defined else '' %} + {% call maybe_link('#' ~ section_ns.id, link=should_link) -%} + {{ text }}{{ caller_markup }} + {%- endcall %} + </h{{ level }}> +{% endmacro %} + +{% macro section(id=none) %} + {% set attrs = {} %} + {% do attrs.update(section_attrs|default({})) %} + {% if section_ns.first %} + {% set section_ns.first = false %} + {% set classes = attrs.get('class') %} + {% set classes = (classes ~ ' ' if classes else '') ~ 'first-section' %} + {% do attrs.update({'class': classes}) %} + {% endif %} + <section{{ attrs|xmlattr }}> + {% if id is not none %} + <div{{ {'class': 'section-anchor', 'id': id}|xmlattr }}></div> + {% endif %} + {% if section_ns.in_section %} + {{ raise_exception('Section defined inside another section.') }} + {% else %} + {% set section_ns.in_section = true %} + {% set section_ns.id = id %} + {% set section_ns.linked = false %} + {% endif %} + {{ caller() }} + {% set section_ns.in_section = false %} + </section> +{% endmacro %} + +{% macro para(ensure_containing_section=true) %} + {% if section_ns.in_section or not ensure_containing_section %} + <p> + {{ caller() }} + </p> + {% else %} + {% set caller_snapshot = caller %} + {% call section() %} + <p> + {{ caller_snapshot() }} + </p> + {% endcall %} + {% endif %} +{% endmacro %} + +{% macro link(to, text='') -%} + <a href="{{ to }}">{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </a> +{%- endmacro %} + +{% macro bold(text='') -%} + <span class="bold">{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </span> +{%- endmacro %} + +{% macro italic(text='') -%} + <span class="italic">{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </span> +{%- endmacro %} + +{% macro unordered_list() %} + <ul> + {{ caller() }} + </ul> +{% endmacro %} + +{% macro list_entry() %} + <li> + {{ caller() }} + </li> +{% endmacro %} + +{% macro descriptions() %} + <dl> + {{ caller() }} + </dl> +{% endmacro %} + +{% macro desc_term(text='') %} + {{ '<div>'|safe }} + <dt>{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </dt> +{% endmacro %} + +{% macro desc_desc(text='') %} + <dd>{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </dd> + {{ '</div>'|safe }} +{% endmacro %} + +{% macro img(url, alt_text, extra_classes=[]) %} + {% set attrs = {'class': (['pure-img'] + extra_classes)|join(' ')} %} + {% do attrs.update({'src': url, 'alt': alt_text, 'draggable': false}) %} + <img {{ attrs|xmlattr }}> +{% endmacro %} + +{% macro aside(text='') %} + <aside>{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </aside> +{% endmacro %} + +{% macro sup(text='') -%} + <sup>{{ text }} + {%- if caller is defined -%} + {{ caller() }} + {%- endif -%} + </sup> +{%- endmacro %} + +{% set numberlinks_ns = namespace(next_num=1, nums={}) %} + +{% macro numberlink(link_url) -%} + {%- if link_url not in numberlinks_ns.nums -%} + {%- do numberlinks_ns.nums.update({link_url: numberlinks_ns.next_num}) -%} + {%- set numberlinks_ns.next_num = numberlinks_ns.next_num + 1 -%} + {%- endif -%} + {%- call sup() -%} + {{ link(link_url, '[' ~ numberlinks_ns.nums[link_url] ~ ']') }} + {%- endcall -%} +{%- endmacro %} + +{% macro newline() %} + <br> +{% endmacro %} + +{% macro nbsp() -%} + +{%- endmacro %} + +{% macro unicode(code) -%} + &#{{ code }}; +{%- endmacro %} + +<!DOCTYPE html> +<html> + <head> + {% block head %} + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta http-equiv="Content-Security-Policy" content="script-src 'none'"> + <title> + {% block title %} + {% endblock %} + </title> + {% block external_css %} + <link rel="stylesheet" href="/static/normalize.css"> + <link rel="stylesheet" href="/static/pure-base.css"> + <link rel="stylesheet" href="/static/pure-tables.css"> + <link rel="stylesheet" href="/static/pure-menus-core.css"> + <link rel="stylesheet" href="/static/pure-menus-skin.css"> + {% endblock %} + <style> + {% block style %} + .bold { + font-weight: bold; + } + + .italic { + font-style: italic; + } + + h1 a, h2 a, h1 a:visited, h2 a:visited { + text-decoration: none; + color: inherit; + } + + .section-anchor { + position: relative; + } + + section > p, section > dl { + margin-left: 20px; + } + + section > .center_text { + margin-left: 0px; + } + + .center-text { + text-align: center; + } + + .pure-menu { + user-select: none; + } + {% endblock %} + </style> + {% endblock %} + </head> + <body> + {% block body %} + Kocham Asię Ɛ> + {% endblock %} + </body> +</html> diff --git a/src/koszko_org_website/templates/__campaign_base.html.jinja b/src/koszko_org_website/templates/__campaign_base.html.jinja new file mode 100644 index 0000000..0cb6ad2 --- /dev/null +++ b/src/koszko_org_website/templates/__campaign_base.html.jinja @@ -0,0 +1,258 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website campaign pages template. + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__base.html.jinja" %} + +{% block external_css %} + {{ super() }} + + <link rel="stylesheet" href="/static/pure-menus-horizontal.css"> + <link rel="icon" type="image/x-icon" href="/static/campaign-favicon.ico"> +{% endblock %} + +{% block style %} + {{ super() }} + + input { + display: none; + } + + * { + color: #777; + } + + body { + min-height: 100vh; + display: flex; + flex-direction: column; + } + + #main { + background-color: white; + flex-grow: 1; + } + + /* + * Wanted to slightly adjust PureCSS menu styling to my needs and ended up + * with a mess :( + */ + + body, .pure-menu { + background-color: #eee; + } + + .pure-menu { + white-space: normal; + position: sticky; + top: 0; + } + + .pure-menu-horizontal .pure-menu-item, + .pure-menu-horizontal .pure-menu-heading, + .pure-menu-horizontal .pure-menu-separator { + white-space: nowrap; + } + + .pure-menu-link { + cursor: pointer; + } + + .pure-menu-item .pure-menu-link:hover, + .pure-menu-item .pure-menu-link:focus, + .pure-menu-heading .pure-menu-link:hover, + .pure-menu-heading .pure-menu-link:focus { + background-color: #ddd; + } + + .pure-menu-disabled .pure-menu-link, + .pure-menu-disabled .pure-menu-link:hover, + .pure-menu-disabled .pure-menu-link:focus { + background-color: transparent; + cursor: pointer; + } + + h1, h2 { + color: #555; + } + + .content { + max-width: 850px; + padding: 0px 20px 20px 20px; + margin: 0 auto; + } + + .section-anchor { + top: -50px; + } + + .hamburger { + display: none; + position: absolute; + right: 0; + border-radius: 3px; + opacity: 0.7; + background-color: #ccc; + cursor: pointer; + } + + .hamburger>div { + height: 3px; + width: 16px; + margin: 6px 5px; + padding: 0 5px; + border-radius: 2px; + background-color: #555; + } + + .hide-menu { + display: none; + text-align: center; + padding: 0 0 0 0; + height: 30px; + border-top: solid 2px #777; + background-color: #ccc; + color: #777; + font-size: 2em; + user-select: none; + cursor: pointer; + } + + @media (max-width: 600px) { + #show-menu:not(:checked)+.hamburger { + display: block; + position: fixed; + } + + .hide-menu { + display: block; + } + + .pure-menu { + position: fixed; + transition: top 0.2s; + } + + #show-menu:not(:checked)+.hamburger+.pure-menu { + top: -160px; + } + + #show-menu:checked+.hamburger+.pure-menu { + top: 0; + } + + .pure-menu .pure-menu-list, + .pure-menu .pure-menu-item, + .pure-menu .pure-menu-heading, + .pure-menu .pure-menu-separator { + display: block; + } + + .pure-menu { + text-align: center; + } + + .section-anchor { + top: 0; + } + } + + footer { + border-top: 1px solid #888; + } + + footer > p { + max-width: 850px; + padding-left: 10px; + padding-right: 10px; + margin-left: auto; + margin-right: auto; + } + + h1 { + text-align: center; + } + + section { + border-top: 1px solid #ccc; + } + + section.first-section { + border-top: none; + } + + {# + The style below is not used right now but is left in case it ever becomes + useful again. + #} + + aside { + display: inline-block; + padding: 10px; + border-radius: 4px; + background-color: #acf; + text-color: #555; + } +{% endblock %} + +{% macro menu_item(link_url, text, active, heading=false) %} + {% set tag_name = 'span' if heading else 'li' %} + {% if heading %} + {% set classes = ['pure-menu-heading'] %} + {% else %} + {% set classes = ['pure-menu-item'] %} + {% endif %} + {% if active %} + {% do classes.append('pure-menu-disabled') %} + {% endif %} + <{{ tag_name }} class="{{ classes|join(' ') }}"> + {% set href = '#' if active else link_url %} + <a{{ {'href': href, 'class': 'pure-menu-link'}|xmlattr }}>{{ text }}</a> + </{{ tag_name }}> +{% endmacro %} + +{% block body %} + <input id="show-menu" type="checkbox"></input> + <label class="hamburger" for="show-menu"> + <div></div> + <div></div> + <div></div> + </label> + <nav class="pure-menu pure-menu-horizontal"> + {% set heading_url = same_lang_url('') %} + {% set heading_text = _('campaign_base.menu.a:libre_program') %} + {{ menu_item(heading_url, heading_text, page_path == '', heading=true) }} + + <ul class="pure-menu-list"> + {% if lang_short == 'en' %} + {% set item_url = url_for('.show_page_in_pl', page_path=page_path) %} + {% set item_text = 'Polska wersja' %} + {% else %} + {% set item_url = url_for('.show_page_in_en', page_path=page_path) %} + {% set item_text = 'English version' %} + {% endif %} + {{ menu_item(item_url, item_text, false) }} + + {% set item_url = same_lang_url('author.html') %} + {% set item_text = _('campaign_base.menu.a:about_author') %} + {{ menu_item(item_url, item_text, page_path == 'author.html') }} + + <label class="hide-menu" for="show-menu">^</label> + </nav> + + <div id="main"> + {% block main %} + <div class="content"> + {% block content %} + {% endblock %} + </div> + {% endblock %} + </div> + + <footer class="center-text"> + {% include [dedicated_footer_path, lang_short ~ '/__footer.html.jinja'] %} + </footer> +{% endblock %} diff --git a/src/koszko_org_website/templates/__index.html.jinja b/src/koszko_org_website/templates/__index.html.jinja new file mode 100644 index 0000000..ac1b335 --- /dev/null +++ b/src/koszko_org_website/templates/__index.html.jinja @@ -0,0 +1,27 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website start page stub. + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__campaign_base.html.jinja" %} + +{% block style %} + {{ super() }} + + @media (max-width: 1000px) { + .libre-program-img { + -o-object-fit: cover; + object-fit: cover; + height: 307px; + } + } +{% endblock %} + +{% block main %} + {% set alt_text = _('index.img:libre_program_alt') %} + {{ img('/static/free-program.svg', alt_text, ['libre-program-img']) }} + + {{ super() }} +{% endblock %} diff --git a/src/koszko_org_website/templates/__koszko_base.html.jinja b/src/koszko_org_website/templates/__koszko_base.html.jinja new file mode 100644 index 0000000..b7de249 --- /dev/null +++ b/src/koszko_org_website/templates/__koszko_base.html.jinja @@ -0,0 +1,210 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website campaign pages template. + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% set section_attrs = {'class': 'layout-item'} %} +{% set header_attrs = {'class': 'content-subhead'} %} + +{% extends "__base.html.jinja" %} + +{% macro gitlink() -%} + {%- for project_id in varargs -%} + {{ numberlink('https://git.koszko.org/' ~ project_id ~ '/') }} + {%- endfor -%} +{%- endmacro %} + +{% block external_css %} + {{ super() }} + + <link rel="stylesheet" href="/static/pure-main.css"> + <link rel="stylesheet" href="/static/pure-layouts.css"> +{% endblock %} + +{% block style %} + {{ super() }} + + .pure-menu-item a { + display: block; + } + + #no-fb { + position: relative; + } + + #no-fb img { + width: 150px; + height: auto; + position: absolute; + left: 100px; + top: -70px; + -webkit-backface-visibility: hidden; + } + + @media (max-width: 520px) { + #no-fb img { + width: 130px; + left: 90px; + top: -60px; + } + } + @media (max-width: 460px) { + #no-fb img { + width: 110px; + top: -50px; + } + } + @media (max-width: 410px) { + #no-fb img { + width: 100px; + left: 80px; + top: -40px; + } + } + @media (max-width: 380px) { + #no-fb img { + width: 70px; + left: 65px; + top: -30px; + } + } + + #main { + min-height: 100vh; + display: flex; + flex-direction: column; + } + + .header, .content { + width: 100%; + } + + .content { + flex-grow: 1; + } + + aside { + background: #1f8dd6; + margin: 10px 0; + padding: 3px 10px; + border-radius: 3px; + color: #fff; + } + + .layout-item:first-child { + margin-top: 0; + border-top: 0; + } + + .content .content-subhead { + margin-top: 0; + } + + dt { + float: left; + margin-right: .5em; + } + + dd { + display: inline; + } + + dl.indent-dl dt { + margin-left: -2em; + } + + dl.indent-dl { + margin-top: 0; + margin-left: 2em; + } + + footer > p { + max-width: 768px; + margin: auto; + } +{% endblock %} + +{% macro menu_item(link_url, text, active) %} + <li class="pure-menu-item"> + {% if active %} + {% set link_url = "#" %} + {% endif %} + {% set attrs = {'href': link_url, 'class': 'active' if active else none} %} + <a{{ attrs|xmlattr }}>{{ text }}</a> + </li> +{% endmacro %} + +{% block body %} + <input id="show-menu" type="checkbox"></input> + <label href="#menu" id="menuLink" class="menu-link" for="show-menu"> + <span></span> + </label> + <nav id="menu"> + <div class="pure-menu"> + <span class="pure-menu-heading"> + {{ _('koszko_base.menu.span:languages') }} + </span> + <ul class="pure-menu-list"> + {% for current_lang, text in [('en', 'English'), ('pl', 'Polski')] %} + {% set flask_endpoint = '.show_page_in_' ~ current_lang %} + {% set link_url = url_for(flask_endpoint, page_path=page_path) %} + {{ menu_item(link_url, text, lang_short == current_lang) }} + {% endfor %} + </ul> + <span class="pure-menu-heading"> + {{ _('koszko_base.menu.span:places') }} + </span> + <ul class="pure-menu-list"> + {% + for current_page, text in [ + ('koszko.html', _('koszko_base.menu.a:home')), + ('cv.html', _('koszko_base.menu.a:curriculum_vitae')), + ('', _('koszko_base.menu.a:campaign')) + ] + %} + {% set link_url = same_lang_url(current_page) %} + {{ menu_item(link_url, text, page_path == current_page) }} + {% endfor %} + </ul> + </div> + </nav> + + <div id="main"> + <div class="header"> + {% block header %} + <h1> + {% if page_path == 'koszko.html' %} + {% set url = '#' %} + {% else %} + {% set url = same_lang_url('koszko.html') %} + {% endif %} + <a href="{{ url }}"> + {{ _('koszko_base.h1:wojtek_kosior') }} + </a> + </h1> + <h2> + <a href="#"> + {% block subheading_text %} + {% endblock %} + </a> + </h2> + {% if include_not_facebookd|default(false) %} + <span id="no-fb"> + <a href="https://stallman.org/facebook.html" draggable="false"> + <img src="/static/no-facebook.svg" draggable="false"> + </a> + </span> + {% endif %} + {% endblock %} + </div> + <div class="content"> + {% block content %} + {% endblock %} + </div> + <footer class="footer center-text"> + {% include [dedicated_footer_path, lang_short ~ '/__footer.html.jinja'] %} + </footer> + </div> +{% endblock %} diff --git a/src/koszko_org_website/templates/cv.html.jinja b/src/koszko_org_website/templates/cv.html.jinja new file mode 100644 index 0000000..60c37ae --- /dev/null +++ b/src/koszko_org_website/templates/cv.html.jinja @@ -0,0 +1,159 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website CV page stub. + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__koszko_base.html.jinja" %} + +{% block title %} CV {% endblock %} + +{% block subheading_text %} CV {% endblock %} + +{% set include_not_facebookd = true %} + +{% macro gitlink() -%} + {%- for project_id in varargs -%} + {{ numberlink('https://git.koszko.org/' ~ project_id ~ '/') }} + {%- endfor -%} +{%- endmacro %} + +{% macro speaks_list() %} + {% call unordered_list() %} + {% call list_entry() %} + C + {%- + set project_ids = [ + 'AGH-engineering-thesis', + 'smtps-and-pop3s-console-program', + 'xml-backup-restore', + 'rpi-MMU-example', + 'C-hashtable', + ] + -%} + {{ gitlink(*project_ids) }} + {%- endcall %} + + {% call list_entry() %} + Python{{ gitlink('0tdns', 'pydrilla') }} + {% endcall %} + + {% call list_entry() %} + JavaScript{{ gitlink('browser-extension') }} + {% endcall %} + + {% call list_entry() %} + sh{{ gitlink('0tdns') }} + {% endcall %} + + {% call list_entry() %} + Verilog{{ gitlink('AGH-engineering-thesis') }} + {% endcall %} + + {% call list_entry() %} + SQL{{ gitlink('xml-backup-restore', 'pydrilla') }} + {% endcall %} + + {% call list_entry() %} + HTML+CSS + {%- + set project_ids = [ + 'mothers-day-css-animation', + 'birthday-flower-css-animation', + 'chrysantemum', + 'browser-extension', + 'pydrilla', + 'hydrilla-website' + ] + -%} + {{ gitlink(*project_ids) }} + {%- endcall %} + + {% call list_entry() %} + Java + {% endcall %} + + {% call list_entry() %} + LaTeX{{ gitlink('change-world-sheets') }} + {% endcall %} + + {% call list_entry() %} + Fortran + {%- + set project_ids = [ + 'fortran-assignment1', + 'fortran-assignment2', + 'fortran-assignment3' + ] + -%} + {{ gitlink(*project_ids) }} + {%- endcall %} + + {% call list_entry() %} + {% block lisp_entry_text %} + {% endblock %} + {% endcall %} + + {% call list_entry() %} + Org mode + {% endcall %} + + {% call list_entry() %} + {% block assembly_link_text %} + {% endblock %}{{ gitlink('rpi-MMU-example') }} + {% endcall %} + + {% call list_entry() %} + C++{{ gitlink('smtps-and-pop3s-console-program') }} + {% endcall %} + + {% call list_entry() %} + Erlang + {% endcall %} + + {% call list_entry() %} + Tcl{{ gitlink('AGH-engineering-thesis') }} + {% endcall %} + {% endcall %} +{% endmacro %} + +{% + set make_project_ids = [ + 'AGH-engineering-thesis', + 'smtps-and-pop3s-console-program', + 'xml-backup-restore', + 'rpi-MMU-example', + 'pydrilla' + ] +%} + +{% set embeds_project_ids = ['rpi-MMU-example'] %} + +{% set networking_project_ids = ['0tdns'] %} + +{% + set xcc_project_ids = [ + 'rpi-MMU-example', + 'gcc-arm-PKGBUILDs', + 'smtps-and-pop3s-console-program', + 'xml-backup-restore' + ] +%} + +{% macro contact_info() %} + {% call descriptions() %} + {{ desc_term(_('Tel.:')) }} + {{ desc_desc('(+48) 12 350 64 74') }} + + {{ desc_term('Email:') }} + {% call desc_desc() -%} + {{ link('mailto:koszko@koszko.org', 'koszko@koszko.org') }} + {%- endcall %} + + {{ desc_term('PGP') }} + {% call desc_desc() -%} + {{ link('/static/key.gpg', 'key.gpg') }} + {%- endcall %} + {% endcall %} +{% endmacro %} diff --git a/src/koszko_org_website/templates/en/__footer.html.jinja b/src/koszko_org_website/templates/en/__footer.html.jinja new file mode 100644 index 0000000..5d1791f --- /dev/null +++ b/src/koszko_org_website/templates/en/__footer.html.jinja @@ -0,0 +1,27 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +Footer text of the koszko.org website pages (english). + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} + +{% call para(ensure_containing_section=false) %} + This site utilizes styling from {{ link('https://purecss.io/', 'PureCSS') }} + and {{ link('https://github.com/necolas/normalize.css', 'Normalize CSS') }} + available under + {{ link('/static/yahoo-bsd-license.txt', 'Yahoo\'s BSD License') }} and + {{ link('/static/normalize-mit-license.txt', 'an X11-style license') }}, + respectively. +{% endcall %} + +{% block extra_footer_copyright_info %} +{% endblock %} + +{% call para(ensure_containing_section=false) %} + The rest is made by {{ link(same_lang_url('koszko.html'), 'Wojtek') }}, + available + {{ link('https://git.koszko.org/koszko-org-website/', 'here') }} + under the terms of + {{ link('/static/cc0-1.0.txt', 'CC0') }}. +{% endcall %} diff --git a/src/koszko_org_website/templates/en/__footer_for_qr.html.jinja b/src/koszko_org_website/templates/en/__footer_for_qr.html.jinja new file mode 100644 index 0000000..f06ea2f --- /dev/null +++ b/src/koszko_org_website/templates/en/__footer_for_qr.html.jinja @@ -0,0 +1,19 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +Footer text of the koszko.org website qr page (english). + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends 'en/__footer.html.jinja' %} + +{% block extra_footer_copyright_info %} + {% call para(ensure_containing_section=false) %} + The Easter eggs photo has been taken from + {% call link('https://commons.wikimedia.org/wiki/File:20110423_Easter_eggs_(3).jpg') -%} + Wikimedia Commons + {%- endcall %} + and is available under the terms of + {{ link('/static/cc-by-3.0.txt', 'CC BY 3.0 Unported') }}. + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/en/__index.html.jinja b/src/koszko_org_website/templates/en/__index.html.jinja new file mode 100644 index 0000000..480c4c4 --- /dev/null +++ b/src/koszko_org_website/templates/en/__index.html.jinja @@ -0,0 +1,160 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website start page (english). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__index.html.jinja" %} + +{% block title %} Libre programs {% endblock %} + +{% block content %} + {{ header(1, 'Campaign for libre software') }} + + {% call section('what-software') %} + {{ header(2, 'What software?') }} + + {% call para() %} + Libre program is one its user can use for any purpose, modify in the form + of source code and redistribute, including for commercial + purposes. Examples are GNU/Linux operating system, VLC media player, GIMP, + LibreOffice, WordPress and also (except for certain components): Firefox + browser, Android operating system and Chromium browser. A program user + cannot modify or redistribute for either legal or technical reasons is + called proprietary or nonfree. + {% endcall %} + {% endcall %} + + {% call section('who-needs-this') %} + {{ header(2, 'Who needs this?') }} + + {% call para() %} + Libre program gives user control. Computer is a useful device, yet is does + nothing by itself. To work it needs a program. Computer's owner is only + able to control it indirectly, through a program. If the software being + run is libre, the user has control over it and hence over the device. A + proprietary program, on the other hand, is controlled by its vendor (or + speaking 100% strictly - the party holding its cource code). Such program + only does what its vendor wants it to. As a result, the device also does + not what its owner wants but rather what program's vendor wants. Instead + of the desired situation where device user controls the device, we get a + reversed one: vendor, through program, controls the user and decides what + user can and cannot do. Of course, in practice we witness different levels + of users mistreatment. One edge case is an operating system only allowing + installation of applications approved by its vendor. + {% endcall %} + + {% call para() %} + Everyone should care about using libre programs simply because it is good + to have control over one's own devices. The issue is not, however, limited + to personal preferences. The more people in a society rely on proprietary, + incompatible tools, the harder life is for those willing to choose libre + ones. + {% endcall %} + + {% call para() %} + The problem is also worth looking at on a different scale. A state with + proprietary programs in widespread use is not fully independent - it + depends indirectly on vendors of these programs. For this reason a duty of + responsibility for one's state also means taking action to stop its + economy and education from relying on proprietary operating systems or + tools. + {% endcall %} + {% endcall %} + + {% call section('how-this-matters-to-non-programmers') %} + {{ header(2, 'How does all this matter to someone who cannot program?') }} + + {% call para() %} + One does not need to be a programmer in order to utilize the control libre + programs give. Quite often when a direction of some libre program is bad + (e.g. antifeatures are being added like telemetry in Firefox), independent + people come up with a version of that program without the original + drawbacks (example would be the + {{ link('https://librewolf-community.gitlab.io/', 'LibreWolf') }} + browser). All that's needed is a bit of demand for a modified version of + some program. Bussinessmen, on the other hand, might find it practical to + employ someone to adapt a libre program to company's needs. + {% endcall %} + {% endcall %} + + {% call section('how-is-moneymaking-affected') %} + {% call header(2) %} + Does it mean programmers shouldn't be paid for writing software? + {% endcall %} + + {% call para() %} + Equating libre program with gratis and proprietary with paid is a very + common misunderstanding. In reality proprietary programs often come for + free (Adobe Reader, Chrome browser, Google Docs) and libre tools can also + be made available for a fee (e.g. commercial GNU/Linux distrubutions). + Many people associate programming with a business model where a customer + is being sold a license for use of some proprietary program. Because such + model is less practical in case of libre programs, some think their + creation cannot be commercialized. However, most code - both libre and + nonfree - is not being written with the goal of selling licenses for its + use. Income often comes from different sources, such as selling services + or hardware the program works with. + {% endcall %} + {% endcall %} + + {% call section('how-it-started') %} + {{ header(2, 'Who came up with all this?') }} + + {% call para() %} + In 1983 + {% call link('https://en.wikipedia.org/wiki/Richard_Stallman') -%} + Richard Stallman + {%- endcall %}, + a + {% call link('https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology') -%} + MIT + {%- endcall %} + scientist, started the + {{ link('https://www.gnu.org/', 'GNU project') }} with a goal of + developing a libre replacement for proprietary UNIX system. 2 years later + in Boston he founded the + {{ link('https://www.fsf.org/', 'Free Software Foundation (FSF)') }} which + still promotes and develops these ideals. + {% endcall %} + {% endcall %} + + {% call section('how-to-come-to-the-good-side') %} + {{ header(2, 'How to come to the good side?') }} + + {% call para() %} + You can help in many ways. For example by + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + using libre programs on daily basis, + {% endcall %} + {% call list_entry() %} + making others aware of the problem (you can link this site + or the {{ link('https://fsf.org', 'FSF\'s site') }}), + {% endcall %} + {% call list_entry() %} + refusing to use proprietary tools to the best of your ability, + {% endcall %} + {% call list_entry() %} + complaining to vendors of proprietary programs asking for their source + code to be released under some libre license, + {% endcall %} + {% call list_entry() %} + calling on people in charge of various organizations and educational + facilities to deploy a libre operating system and tools, + {% endcall %} + {% call list_entry() %} + calling on politicians to enact laws good for software freedom + (e.g. making code written for public money available under a libre + license) and + {% endcall %} + {% call list_entry() %} + {{ link('https://my.fsf.org/join', 'donating to the FSF') }} or various + projects developing libre programs. + {% endcall %} + {% endcall %} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/en/author.html.jinja b/src/koszko_org_website/templates/en/author.html.jinja new file mode 100644 index 0000000..e3a01c3 --- /dev/null +++ b/src/koszko_org_website/templates/en/author.html.jinja @@ -0,0 +1,33 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website "about author" page (english). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__campaign_base.html.jinja" %} + +{% block title %} Campaign author {% endblock %} + +{% block content %} + {{ header(1, 'About campaign author') }} + + {% call section() %} + {% call para() %} + My name is Wojciech Kosior. I am (as one could easily guess) a software + freedom proponent and (as you might not yet know) a catholic. In 2021 I + {% call link('https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html') -%} + successfully defended + {%- endcall %} + my BSc thesis in infomatics at + {{ link('https://en.wikipedia.org/wiki/AGH_University_of_Science_and_Technology', 'AGH') }} + in Kraków, Poland. I am now striving to make people care more about their + digital freedom. + {% endcall %} + + {% call para() %} + You can find more information on + {{ link(same_lang_url('koszko.html'), 'my personal page') }}. + {% endcall %} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/en/cv.html.jinja b/src/koszko_org_website/templates/en/cv.html.jinja new file mode 100644 index 0000000..36f6d59 --- /dev/null +++ b/src/koszko_org_website/templates/en/cv.html.jinja @@ -0,0 +1,160 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website CV page (english). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "cv.html.jinja" %} + +{% block lisp_entry_text %} + Lisp (bits from various dialects) +{% endblock %} + +{% block assembly_link_text %} + assembly (ARM, x86 in Intel syntax) +{% endblock %} + +{% block content %} + {% call section() %} + {% call aside() %} + The formal, PDF version of the Curriculum Vitae can be found + {{ link('/static/cv-formal-en.pdf', 'here') }}. + {% endcall %} + {% endcall %} + + {% call section('edu') %} + {{ header(2, 'Education') }} + + {% call descriptions() %} + {{ desc_term('2017-2021') }} + {% call desc_desc() -%} + Informatics, stationary studies, + {{ link('https://en.wikipedia.org/wiki/AGH_University_of_Science_and_Technology', 'AGH') }} + in Kraków, IEiT faculty + {%- endcall %} + {% endcall %} + {% endcall %} + + {% call section('achievements') %} + {{ header(2, 'Achievements') }} + + {% call descriptions() %} + {{ desc_term('2014') }} + {% call desc_desc() %} + {{ link('https://omj.edu.pl/laureaci-ix', 'Laureate') }} of the 9th + {% call link('https://om.edu.pl/omg/') -%} + Math Olympics for Secondary School Students + {%- endcall %} + {% endcall %} + + {{ desc_term('2017') }} + {% call desc_desc() %} + {{ link('https://www.kgof.edu.pl/archiwum/66/of66-3-laureaci.pdf', 'Laureate') }} + of the 66th {{ link('https://www.kgof.edu.pl/', 'Physics Olympics') }} + {% endcall %} + + {{ desc_term('2017') }} + {% call desc_desc() %} + {{ link('https://om.mimuw.edu.pl/previous_olympiads/68', 'Finalist') }} + of the 68th {{ link('https://om.edu.pl/', 'Math Olympics') }} + {% endcall %} + + {{ desc_term('2021') }} + {% call desc_desc() %} + {{ link('https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html', 'Fight') }} + for the ability to study using libre software, concluded with successful + BSc thesis defence with a "very good" final grade + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('skills') %} + {{ header(2, 'Knowledge of technologies') }} + + {% call para() %} + Speaks (best learned towards the top) + {% endcall %} + + {{ speaks_list() }} + + {% call para() %} + I can also learn almost any programming language in ~20 minutes + {{ unicode(128521) }} + {% endcall %} + + {% call para() %} + I am experienced in + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + administering UNIX-like systems (e.g. Debian GNU/Linux) + {% endcall %} + + {% call list_entry() %} + low-level programming, bare-metal, embedded + systems{{ gitlink(*embeds_project_ids)}} + {% endcall %} + + {% call list_entry() %} + networking facilities offered by the Linux + kernel{{ gitlink(*networking_project_ids) }} + {% endcall %} + + {% call list_entry() %} + Make tool{{ gitlink(*make_project_ids) }} + {% endcall %} + + {% call list_entry() %} + Git tool + {% endcall %} + + {% call list_entry() %} + practical applications of cryptographic tools + {% endcall %} + + {% call list_entry() %} + crafting of lightweight, ethical websites + {% endcall %} + + {% call list_entry() %} + libre software licenses + {% endcall %} + + {% call list_entry() %} + cross-compilation{{ gitlink(*xcc_project_ids) }} + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('rest') %} + {{ header(2, 'Others') }} + + {% call unordered_list() %} + {% call list_entry() %} + english language at level C1 + {% endcall %} + {% call list_entry() %} + polish language (native) + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('freesw-only') %} + {{ header(2, 'Libre software at work') }} + + {% call para() %} + I am open for ethical contracts and job offers that do not involve + proprietary software development nor a non-disclosure agreement. In case + of doubt + {{ link('mailto:koszko@koszko.org', 'I am answering questions') }}. + {% endcall %} + {% endcall %} + + {% call section('contact') %} + {{ header(2, 'Contact') }} + + {{ contact_info() }} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/en/koszko.html.jinja b/src/koszko_org_website/templates/en/koszko.html.jinja new file mode 100644 index 0000000..23bc321 --- /dev/null +++ b/src/koszko_org_website/templates/en/koszko.html.jinja @@ -0,0 +1,157 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website personal page (english). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "koszko.html.jinja" %} + +{% block title %} Wojtek {% endblock %} + +{% block subheading_text %} personal site {% endblock %} + +{% set include_not_facebookd = true %} + +{% block to_freesw_hackers %} + {% call para() %} + You want people to appreciate libre software and choose it, for their own + good and society's? You consider hurtful that most people are very + irresponsible and in every field rely on proprietary tools, without showing + even a tiny bit of initiative to verify whether those are truly good for + them? Perhaps you also met with snubbing of logical argumentation? + {% endcall %} + {% call para() %} + Many catholics feel likewise seeing people leaving Church and dedicated + atheists responding to any miracle reports with conspiracy theories to + undermine them. And we just want good for you -{{ nbsp() }}so that you can + be truly happy and -{{ nbsp() }}put simply -{{ nbsp() }}eventually be + salvated. + {% endcall %} + {% call para() %} + Friends, show the life responsibility we expect from others and seriously + verify if, perhaps, what Church has been saying for 2000 years + is {{ bold('true') }}. + {% endcall %} +{% endblock %} + +{% block to_christians %} + {% call para() %} + As christians we strive to live well and responsibly. As christians we + consider sharing a good thing. Have you heard of free/libre software? It is + a concept that should be extremely popular among christians. But currently + this is not the case. Why most of us are not trying to build a responsible + society that would utilize technology in a sensible manner so that it is + being controlled by human and not the opposite? Why instead of encouraging + others to share code catholics so often release their own as proprietary, + resulting in its user being thrown on their mercy? + {% endcall %} + {% call para() %} + We don't like ignoring? Let's not ignore by ourselves. Snubbing is bad? Let + us not snub. We want the Church to be independent? Then shall we in the + first place stop relying on devices, software and services which take away + freedom. + {% endcall %} +{% endblock %} + +{% block use_internet_if_needed %} + {% call para() %} + I've been told the above is too general and someone who's not aware of what + I wrote about shall not understand it. If you indeed have no idea what I + wrote about, feel free to utilize a search engine and/or Wikipedia to learn + more. + {% endcall %} +{% endblock %} + +{% block content %} + {% call section('contact') %} + {{ header(2, 'Contact') }} + + {% call descriptions() %} + {{ desc_term('Tel.:') }} + {{ desc_desc('(+48) 12 350 64 74') }} + + {{ desc_term('Email:') }} + {% call desc_desc() -%} + {{ link('mailto:koszko@koszko.org', 'koszko@koszko.org') }} + {%- endcall %} + {% endcall %} + {% endcall %} + + {% call section('pubkeys') %} + {{ header(2, 'Public keys') }} + + {% call unordered_list() %} + {% call list_entry() %} + {{ link('/static/key.gpg', 'PGP') }} + + {% call unordered_list() %} + {% call list_entry() %} + {% call link('/static/key.gpg.sig') -%} + PGP key signature made with signify key + {%- endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + + {% call list_entry() %} + {{ link('/static/key.pub', 'signify') }} + + {% call unordered_list() %} + {% call list_entry() %} + {% call link('/static/key.pub.asc') -%} + signify key signature made with PGP key + {%- endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('portal') %} + {{ header(2, 'Portal') }} + + {% call para() %} + This portal of mine is online since april 2021. Sites comprising it are + listed below. + {% endcall %} + + {% call descriptions() %} + {% call desc_term() -%} + {{ link(same_lang_url('koszko.html'), 'koszko.org/koszko.html') }} + {%- endcall %} + - + {{ desc_desc('my personal website (you\'re viewing it)') }} + + {% call desc_term() -%} + {{ link('https://pray.koszko.org', 'pray.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('prayer sheets website') }} + + {% call desc_term() -%} + {{ link('https://sheets.koszko.org', 'sheets.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('world changing sheets website') }} + + {% call desc_term() -%} + {{ link('https://haketilo.koszko.org', 'haketilo.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('Haketilo proxy website') }} + + {% call desc_term() -%} + {{ link('https://git.koszko.org', 'git.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('my repositories') }} + {% endcall %} + {% endcall %} + + {% call section('request') %} + {{ header(2, 'Personal statement') }} + + {{ request_table() }} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/en/prima_aprilis.html.jinja b/src/koszko_org_website/templates/en/prima_aprilis.html.jinja new file mode 100644 index 0000000..d361f4f --- /dev/null +++ b/src/koszko_org_website/templates/en/prima_aprilis.html.jinja @@ -0,0 +1,20 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website Prima Aprilis page (polish). + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__koszko_base.html.jinja" %} + +{% block title %} April Fools! {% endblock %} + +{% block header %} + {{ header(1, 'April Fools!') }} +{% endblock %} + +{% block content %} + {% call para() %} + {{ unicode(128521) }} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/en/qr.html.jinja b/src/koszko_org_website/templates/en/qr.html.jinja new file mode 100644 index 0000000..1fe1545 --- /dev/null +++ b/src/koszko_org_website/templates/en/qr.html.jinja @@ -0,0 +1,28 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website QR code easter egg page (english). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__campaign_base.html.jinja" %} + +{% block title %} Easter eggs {% endblock %} + +{% block content %} + {{ header(1, 'QR code') }} + + {% call section() %} + {% call para() %} + So you scanned the QR code? You'll see something cool then. + {% endcall %} + + {% set alt_text = 'photo of Easter eggs lying on the grass' %} + {{ img('/static/easter-eggs.jpg', alt_text) }} + + {% call para() %} + You can now move to {{ link(same_lang_url(''), 'the target page') }} + {{ unicode(128578) }} + {% endcall %} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/koszko.html.jinja b/src/koszko_org_website/templates/koszko.html.jinja new file mode 100644 index 0000000..4253329 --- /dev/null +++ b/src/koszko_org_website/templates/koszko.html.jinja @@ -0,0 +1,66 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website personal page stub. + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__koszko_base.html.jinja" %} + +{% block style %} + {{ super() }} + + #request_table thead, #request_table tbody { + vertical-align: top; + } + + @media (max-width: 500px) { + #request_table { + font-size: 80%; + } + } + + col { + width: 50%; + } +{% endblock %} + +{% macro request_table() %} + <table id="request_table" class="pure-table"> + <colgroup> + <col> + <col> + </colgroup> + <thead> + <tr> + <th>{{ _('koszko.th:to_freesw_hackers') }}</th> + <th>{{ _('koszko.th:to_christians') }}</th> + </tr> + <tr> + <td>{{ _('koszko.td:nonbelievers') }}</td> + <td>{{ _('koszko.td:choosing_proprietary_programs') }}</td> + </tr> + </thead> + <tbody> + <tr> + <td> + {% block to_freesw_hackers %} + {% endblock %} + </td> + <td> + {% block to_christians %} + {% endblock %} + </td> + </tr> + <tr class="center-text"> + <td colspan="2">{{ _('koszko.td:please') }}</td> + </tr> + <tr class="center-text"> + <td colspan="2"> + {% block use_internet_if_needed %} + {% endblock %} + </td> + </tr> + </tbody> + </table> +{% endmacro %} diff --git a/src/koszko_org_website/templates/pl/__footer.html.jinja b/src/koszko_org_website/templates/pl/__footer.html.jinja new file mode 100644 index 0000000..6dbb419 --- /dev/null +++ b/src/koszko_org_website/templates/pl/__footer.html.jinja @@ -0,0 +1,30 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +Footer text of the koszko.org website pages (polish). + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} + +{% call para(ensure_containing_section=false) %} + Ta strona wykorzystuje stylowanie + {{ link('https://purecss.io/', 'PureCSS') }} + oraz {{ link('https://github.com/necolas/normalize.css', 'Normalize CSS') }} + dostępne odpowiednio na + {{ link('/static/yahoo-bsd-license.txt', 'Licencji BSD Yahoo') }} + i{{ nbsp() }} + {%- call link('/static/normalize-mit-license.txt') -%} + licencji w{{ nbsp() }}stylu X11 + {%- endcall %}. +{% endcall %} + +{% block extra_footer_copyright_info %} +{% endblock %} + +{% call para(ensure_containing_section=false) %} + Reszta jest autorstwa {{ link(same_lang_url('koszko.html'), 'Wojtka') }}, + dostępna + {{ link('https://git.koszko.org/koszko-org-website/', 'tutaj') }} + na warunkach + {{ link('/static/cc0-1.0.txt', 'CC0') }}. +{% endcall %} diff --git a/src/koszko_org_website/templates/pl/__footer_for_qr.html.jinja b/src/koszko_org_website/templates/pl/__footer_for_qr.html.jinja new file mode 100644 index 0000000..9736f9f --- /dev/null +++ b/src/koszko_org_website/templates/pl/__footer_for_qr.html.jinja @@ -0,0 +1,17 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +Footer text of the koszko.org website qr page (polish). + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends 'pl/__footer.html.jinja' %} + +{% block extra_footer_copyright_info %} + {% call para(ensure_containing_section=false) %} + Zdjęcie Jajeczek wielkanocnych zostało zaczerpnięte + z{{ nbsp() }}{{ link('https://commons.wikimedia.org/wiki/File:20110423_Easter_eggs_(3).jpg', 'Wikimedia Commons') }} + i{{ nbsp() }}jest dostępne na licencji + {{ link('/static/cc-by-3.0.txt', 'CC BY 3.0 Unported') }}. + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/pl/__index.html.jinja b/src/koszko_org_website/templates/pl/__index.html.jinja new file mode 100644 index 0000000..59b33e0 --- /dev/null +++ b/src/koszko_org_website/templates/pl/__index.html.jinja @@ -0,0 +1,175 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website start page (english). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__index.html.jinja" %} + +{% block title %} Wolne programy {% endblock %} + +{% block content %} + {{ header(1, 'Kampania na rzecz wolnego oprogramowania') }} + + {% call section('what-software') %} + {{ header(2, 'Jakiego oprogramowania?') }} + + {% call para() %} + Wolny program to taki, który użytkownik ma możliwość używać + w{{ nbsp() }}dowolnym celu, modyfikować w{{ nbsp() }}postaci kodu + źródłowego i{{ nbsp() }}rozpowszechniać dalej, również + w{{ nbsp() }}celach komercyjnych. Przykładami są system operacyjny + GNU/Linux, VLC media player, GIMP, LibreOffice, WordPress, + a{{ nbsp() }}także (za wyjątkiem niektórych komponentów): przeglądarka + Firefox, system Android i{{ nbsp() }}przeglądarka Chromium. Program, + którego z powodów prawnych lub technicznych użytkownik nie może + modyfikować lub rozpowszechniać, nazywamy własnościowym lub niewolnym. + {% endcall %} + {% endcall %} + + {% call section('who-needs-this') %} + {{ header(2, 'Komu to potrzebne?') }} + + {% call para() %} + Wolny program daje użytkownikowi kontrolę. Komputer to przydatne + urządzenie, które jednak samo z{{ nbsp() }}siebie nic nie robi. Do + działania potrzebuje programu. Tylko pośrednio, za pośrednictwem programu, + użytkownik jest w stanie kontrolować swój komputer. Jeśli uruchamiany + program jest wolny, użytkownik ma kontrolę nad nim i{{ nbsp() }}przez to + nad komputerem. Z{{ nbsp() }}kolei nad własnościowym programem władzę + sprawuje jego wydawca (lub mówiąc w 100% ściśle - podmiot mający kod + źródłowy). Taki program robi to, czego chce jego wydawca, przez co także + i{{ nbsp() }}samo urządzenie robi nie to, czego chce jego właściciel, lecz + to, czego chce wydawca programu. Zamiast porządanej sytuacji, + w{{ nbsp() }}której użytkownik kontroluje swoje urządzenie, dostajemy + sytuację odwróconą: wydawca przez program kontroluje użytkownika + i{{ nbsp() }}decyduje, co może on zrobić, a{{ nbsp() }}czego nie. + W{{ nbsp() }}praktyce obserwujemy oczywiście różne stopnie złego + traktowania użytkowników. Jednym ze skrajnych przypadków jest system + operacyjny umożliwiajacy instalowanie wyłącznie tych aplikacji, które + zaaprobował jego wydawca. + {% endcall %} + + {% call para() %} + Każdemu powinno zależeć na używaniu wolnych programów, bo dobrze jest móc + sprawować kontrolę nad swoimi urządzeniem. Sprawa nie ogranicza się jednak + do osobistych preferencji. Im więcej osób w{{ nbsp() }}społeczeństwie + polega na własnościowych, niekompatybilnych narzędziach, tym ciężej jest + żyć tym, którzy chcą wybierać wolne. + {% endcall %} + + {% call para() %} + Warto też popatrzeć na problem w{{ nbsp() }}większej skali. Państwo, + w{{ nbsp() }}którym w{{ nbsp() }}powszechnym użyciu są własnościowe + programy, nie jest w pełni niepodległe - podlega pośrednio wydawcom tych + programów. Z{{ nbsp() }}tego powodu poczucie odpowiedzialności za kraj + wiąże się z{{ nbsp() }}dążeniem do tego, aby gospodarka + i{{ nbsp() }}edukacja nie opierały się na własnościowym systemie + operacyjnym czy narzędziach. + {% endcall %} + {% endcall %} + + {% call section('how-this-matters-to-non-programmers') %} + {% call header(2) %} + Jakie to wszystko ma znaczenie dla kogoś, kto nie umie programować? + {% endcall %} + + {% call para() %} + Nie trzeba być programistą, żeby móc korzystać z{{ nbsp() }}kontroli, jaką + dają wolne programy. Często gdy kierunek rozwoju wolnego programu jest zły + (np. dodawane są antyfunkcjonalności jak telemetria + w{{ nbsp() }}Firefoksie), znajdują się osoby chętne do opracowania wersji + programu niezawierającej tych wad (przykładem jest przeglądarka + {{ link('https://librewolf-community.gitlab.io/', 'LibreWolf') }}. + Wystarczy, że pojawi się wystarczające zapotrzebowanie na odmienną + wersję jakiegoś wolnego programu. Z{{ nbsp() }}kolei z{{ nbsp() }}punktu + widzenia przedsiębiorcy sensowną opcją bywa zatrudnienie kogoś, kto + przystosuje wolny program do celów firmy. + {% endcall %} + {% endcall %} + + {% call section('how-is-moneymaking-affected') %} + {% call header(2) %} + Czy to znaczy, że programiści nie powinni zarabiać na pisaniu programów? + {% endcall %} + + {% call para() %} + Utożsamianie wolnego programu z{{ nbsp() }}darmowym, + a{{ nbsp() }}własnościowego z{{ nbsp() }}płatnym to bardzo częste + nieporozumienie. W{{ nbsp() }}rzeczywistości programy własnościowe często + są darmowe (Adobe Reader, przeglądarka Chrome, Google Docs), + a{{ nbsp() }}wolne narzędzia mogą być dystrybuowane odpłatnie + (np. komercyjne dystrybucje GNU/Linuksa). Wiele osób + z{{ nbsp() }}programowaniem kojarzy model biznesowy, w{{ nbsp() }}którym + klientowi sprzedawana jest licencja na używanie własnościowego + programu. Ponieważ taki model jest mniej opłacalny w{{ nbsp() }}przypadku + wolnych programów, niektórzy myślą, że na ich tworzeniu wcale nie można + zarobić. Tymczasem większość kodu - zarówno wolnego, jak + i{{ nbsp() }}własnościowego - nie jest pisana w{{ nbsp() }}celu sprzedaży + licencji na jego używanie. Dochody są często czerpane z innych źródeł, + np. ze sprzedaży usług i{{ nbsp() }}sprzętu, z{{ nbsp() }}którymi program + współpracuje. + {% endcall %} + {% endcall %} + + {% call section('how-it-started') %} + {{ header(2, 'Kto to wszystko wykminił?') }} + + {% call para() %} + W{{ nbsp() }}1983-cim roku + {% call link('https://pl.wikipedia.org/wiki/Richard_Stallman') -%} + Richard Stallman + {%- endcall %}, + Naukowiec z{{ nbsp() }} + {%- call link('https://pl.wikipedia.org/wiki/Massachusetts_Institute_of_Technology') -%} + MIT + {%- endcall %}, + zapoczątkował {{ link('https://www.gnu.org/', 'projekt GNU') }} mający na + celu stworzenie wolnego zamiennika dla własnościowego systemu UNIX. 2 lata + później założył w Bostonie + {% call link('https://www.fsf.org/') -%} + Fundację Wolnego Oprogramowania (FSF) + {%- endcall %} + zajmującą się do teraz promowaniem i{{ nbsp() }}rozwojem tych idei. + {% endcall %} + {% endcall %} + + {% call section('how-to-come-to-the-good-side') %} + {{ header(2, 'Jak przejść na dobrą stronę?') }} + + {% call para() %} + Pomóc można na wiele sposobów. Na przykład + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + używając na co dzień wolnych programów, + {% endcall %} + {% call list_entry() %} + uświadamiając innych o{{ nbsp() }}problemie (można linkować tą stronę), + {% endcall %} + {% call list_entry() %} + na miarę swoich możliwości odmawiając używania własnościowych narzędzi, + {% endcall %} + {% call list_entry() %} + apelując do twórców własnościowych programów o{{ nbsp() }}udostępnienie + ich kodu na wolnej licencji, + {% endcall %} + {% call list_entry() %} + apelując do osób zarządzających różnorakimi organizacjami i{{ nbsp() }} + placówkami oświatowymi o{{ nbsp() }}wprowadzenie do użytku wolnego + systemu operacyjnego i{{ nbsp() }}narzędzi, + {% endcall %} + {% call list_entry() %} + apelując do polityków stanowienie przepisów sprzyjających wolnemu + oprogramowaniu (np. uczynienie dostępnym na wolnej licencji kodu + pisanego za pieniądze publiczne) oraz + {% endcall %} + {% call list_entry() %} + przekazując {{ link('https://my.fsf.org/join', 'darowiznę na FSF') }} + lub różne projekty tworzące wolne programy. + {% endcall %} + {% endcall %} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/pl/author.html.jinja b/src/koszko_org_website/templates/pl/author.html.jinja new file mode 100644 index 0000000..041f096 --- /dev/null +++ b/src/koszko_org_website/templates/pl/author.html.jinja @@ -0,0 +1,36 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website "about author" page (polish). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__campaign_base.html.jinja" %} + +{% block title %} Autor kampani {% endblock %} + +{% block content %} + {% call header(1) %} + O{{ nbsp() }}autorze kampani + {% endcall %} + + {% call section() %} + {% call para() %} + + Nazywam się Wojciech Kosior. Jestem (jak można się domyślić) zwolennikiem + wolnego oprogramowania i{{ nbsp()}}(o{{ nbsp()}}czym być może nie wiesz) + katolikiem. W{{ nbsp()}}2021-wszym roku + {% call link('https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html') -%} + obroniłem + {%- endcall %} + pracę inżynierską z{{ nbsp()}}informatyki na AGH w{{ nbsp()}}Krakowie. + Obecnie staram się skłonić ludzi do zatroszczenia się bardziej + o{{ nbsp()}}własną wolność cyfrową. + {% endcall %} + + {% call para() %} + Możesz znaleźć więcej informacji na + {{ link(same_lang_url('koszko.html'), 'mojej stronie domowej') }}. + {% endcall %} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/pl/cv.html.jinja b/src/koszko_org_website/templates/pl/cv.html.jinja new file mode 100644 index 0000000..15a0177 --- /dev/null +++ b/src/koszko_org_website/templates/pl/cv.html.jinja @@ -0,0 +1,159 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website CV page (polish). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "cv.html.jinja" %} + +{% block lisp_entry_text %} + Lisp (elementy z różnych dialektów) +{% endblock %} + +{% block assembly_link_text %} + assemblery (ARM, x86 w{{ nbsp() }}składni Intela) +{% endblock %} + +{% block content %} + {% call section() %} + {% call aside() %} + Formalną wersję Curriculum Vitae w formacie PDF znajdziesz + {{ link('/static/cv-formal-pl.pdf', 'tutaj') }}. + {% endcall %} + {% endcall %} + + {% call section('edu') %} + {{ header(2, 'Edukacja') }} + + {% call descriptions() %} + {{ desc_term('2017-2021') }} + {% call desc_desc() -%} + Informatyka, studia dzienne, + {{ link('https://pl.wikipedia.org/wiki/Akademia_G%C3%B3rniczo-Hutnicza_im._Stanis%C5%82awa_Staszica_w_Krakowie', 'AGH') }} + w Krakowie, wydział IEiT + {%- endcall %} + {% endcall %} + {% endcall %} + + {% call section('achievements') %} + {{ header(2, 'Osiągnięcia') }} + + {% call descriptions() %} + {{ desc_term('2014') }} + {% call desc_desc() %} + {{ link('https://omj.edu.pl/laureaci-ix', 'Laureat') }} 9. + {% call link('https://om.edu.pl/omg/') -%} + Olimpiady Matematycznej Gimnazjalistów + {%- endcall %} + {% endcall %} + + {{ desc_term('2017') }} + {% call desc_desc() %} + {{ link('https://www.kgof.edu.pl/archiwum/66/of66-3-laureaci.pdf', 'Laureat') }} + 66. {{ link('https://www.kgof.edu.pl/', 'Olimpiady Fizycznej') }} + {% endcall %} + + {{ desc_term('2017') }} + {% call desc_desc() %} + {{ link('https://om.mimuw.edu.pl/previous_olympiads/68', 'Finalista') }} + 68. {{ link('https://om.edu.pl/', 'Olimpiady Matematycznej') }} + {% endcall %} + + {{ desc_term('2021') }} + {% call desc_desc() %} + {{ link('https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html', 'Walka') }} + o możliwość studiowania przy użyciu wolnego oprogramowania zwieńczona + ukończeniem studiów inżynierskich z{{ nbsp() }}wynikiem "bardzo dobry" + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('skills') %} + {{ header(2, 'Znajomość technologii') }} + + {% call para() %} + Mówię językami (najlepiej poznane u{{ nbsp() }}góry) + {% endcall %} + + {{ speaks_list() }} + + {% call para() %} + Dodatkowo mogę nauczyć się prawie każdego języka programowania + w{{ nbsp() }}~20 minut {{ unicode(128521) }} + {% endcall %} + + {% call para() %} + Znam się na + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + administrowaniu systememami UNIXopodobnymi (e.g. Debian GNU/Linux) + {% endcall %} + + {% call list_entry() %} + programowaniu niskopoziomowym, bare-metal'u, systemach + wbudowanych{{ gitlink(*embeds_project_ids)}} + {% endcall %} + + {% call list_entry() %} + mechanizmach sieciowych udostępnianych przez jądro + Linux{{ gitlink(*networking_project_ids) }} + {% endcall %} + + {% call list_entry() %} + narzędziu Make{{ gitlink(*make_project_ids) }} + {% endcall %} + + {% call list_entry() %} + narzędziu Git + {% endcall %} + + {% call list_entry() %} + praktycznym zastosowaniu narzędzi kryptograficznych + {% endcall %} + + {% call list_entry() %} + tworzeniu lekkich, etycznych stron internetowych + {% endcall %} + + {% call list_entry() %} + licencjach wolnego oprogramowania + {% endcall %} + + {% call list_entry() %} + kompilacji skrośnej{{ gitlink(*xcc_project_ids) }} + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('rest') %} + {{ header(2, 'Pozostałe') }} + + {% call unordered_list() %} + {% call list_entry() %} + znajomość języka angielskiego na poziomie C1 + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('freesw-only') %} + {{ header(2, 'Wolne oprogramowanie w pracy') }} + + {% call para() %} + + Jestem otwarty na zlecenia i{{ nbsp() }}oferty etycznej pracy, czyli + w{{ nbsp() }}szczególności takiej, w{{ nbsp() }}ramach której nie rozwija + się własnościowego oprogramowania i{{ nbsp() }}nie wymaga się klauzuli + o{{ nbsp() }}poufności. W{{ nbsp() }}razie wątpliwości + {{ link('mailto:koszko@koszko.org', 'odpowiadam na pytania') }}. + {% endcall %} + {% endcall %} + + {% call section('contact') %} + {{ header(2, 'Kontakt') }} + + {{ contact_info() }} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/pl/koszko.html.jinja b/src/koszko_org_website/templates/pl/koszko.html.jinja new file mode 100644 index 0000000..1fd1b05 --- /dev/null +++ b/src/koszko_org_website/templates/pl/koszko.html.jinja @@ -0,0 +1,162 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website personal page (polish). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "koszko.html.jinja" %} + +{% block title %} Wojtek {% endblock %} + +{% block subheading_text %} strona domowa {% endblock %} + +{% set include_not_facebookd = true %} + +{% block to_freesw_hackers %} + {% call para() %} + Chcecie, żeby ludzie doceniali i{{ nbsp() }}wybierali wolne programy, dla + dobra ich i{{ nbsp() }}społeczeństwa? Uważacie za przykre, że większość + osób jest bardzo nieodpowiedzialna i{{ nbsp() }}polega w{{ nbsp() }}każdej + dziedzinie na własnościowych narzędziach, nie okazując ani odrobiny + inicjatywy, żeby się przekonać, czy na pewno są dla nich lepsze? Może też + spotkaliście się z{{ nbsp() }}olewaniem logicznych argumentów? + {% endcall %} + {% call para() %} + Wielu katolików czuje się podobnie widząc ludzi odchodzących od Kościoła + oraz zagorzałych ateistów w{{ nbsp() }}odpowiedzi na wszelkie doniesienia + o{{ nbsp() }}cudach wymyślających teorie spiskowe dla ich podważenia. A{{ + nbsp() }}my przecież chcemy dla Was dobrze - żebyście byli naprawdę + szczęśliwi i{{ nbsp() }}-{{ nbsp() }}mówiąc prosto -{{ nbsp() }}zbawili się. + {% endcall %} + {% call para() %} + Przyjaciele, okażcie taką odpowiedzialność życiową, jakiej oczekujemy od + innych i{{ nbsp() }}na poważnie zweryfikujcie czy to, co Kościół głosi od + 2000 lat, przypadkiem nie jest {{ bold('prawdą') }}. + {% endcall %} +{% endblock %} + +{% block to_christians %} + {% call para() %} + Jako chrześcijanie staramy się żyć dobrze i{{ nbsp() }}odpowiedzialnie. + Jako chrześcijanie uznajemy dzielenie się z{{ nbsp() }}innymi za coś + dobrego. Słyszeliście o{{ nbsp() }}wolnym oprogramowaniu? Na logikę to + jest coś, co powinno się cieszyć ogromną popularnością wśród + chrześcijan. Tymczasem tak nie jest. Dlaczego większość z{{ nbsp() }}nas nie + stara się budować społeczeństwa odpowiedzialnego, które technologii + używałoby w{{ nbsp() }}rozsądny sposób, tak, żeby była ona kontrolowana + przez człowieka, a{{ nbsp() }}nie na odwrót? Dlaczego zamiast zachęcać + innych do dzielenia się swoim kodem, katolicy tak często sami swój kod + udostępniają jako własnościowy, przez co jego użytkownik jest całkowicie + zdany na ich łaskę? + {% endcall %} + {% call para() %} + Nie lubimy ignorowania? To i{{ nbsp() }}my nie ignorujmy. Lekceważenie jest + złe? Więc i{{ nbsp() }}my nie lekceważmy. Chcemy, żeby nasze Państwo było + niepodległe a{{ nbsp() }}Kościoł niezależny? To w{{ nbsp() }}pierwszej + kolejności my przestawajmy polegać na urządzeniach, programach i{{ nbsp() + }}serwisach, które odbierają wolność. + {% endcall %} +{% endblock %} + +{% block use_internet_if_needed %} + {% call para() %} + Powiedziano mi, że powyższe jest zbyt ogólnikowe i{{ nbsp() }}ktoś, kto nic + nie wie, niczego nie zrozumie. Jeśli faktycznie nie masz pojęcia, + o{{ nbsp() }}czym tutaj napisałem, możesz skorzystać z wyszukiwarki + internetowej i/lub Wikipedii, żeby dowiedzieć się więcej. + {% endcall %} +{% endblock %} + +{% block content %} + {% call section('contact') %} + {{ header(2, 'Kontakt') }} + + {% call descriptions() %} + {{ desc_term('Tel.:') }} + {{ desc_desc('(+48) 12 350 64 74') }} + + {{ desc_term('Email:') }} + {% call desc_desc() -%} + {{ link('mailto:koszko@koszko.org', 'koszko@koszko.org') }} + {%- endcall %} + {% endcall %} + {% endcall %} + + {% call section('pubkeys') %} + {{ header(2, 'Klucze publiczne') }} + + {% call unordered_list() %} + {% call list_entry() %} + {{ link('/static/key.gpg', 'PGP') }} + + {% call unordered_list() %} + {% call list_entry() %} + {% call link('/static/key.gpg.sig') -%} + podpis klucza PGP wykonany kluczem signify + {%- endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + + {% call list_entry() %} + {{ link('/static/key.pub', 'signify') }} + + {% call unordered_list() %} + {% call list_entry() %} + {% call link('/static/key.pub.asc') -%} + podpis klucza signify wykonany kluczem PGP + {%- endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section('portal') %} + {{ header(2, 'Portal') }} + + {% call para() %} + Niniejszy portal istnieje w{{ nbsp() }}sieci od kwietnia 2021. Wchodzące w + jego skład strony są wymienione poniżej. + {% endcall %} + + {% call descriptions() %} + {% call desc_term() -%} + {{ link(same_lang_url('koszko.html'), 'koszko.org/koszko.html') }} + {%- endcall %} + - + {{ desc_desc('strona domowa (przeglądasz ją)') }} + + {% call desc_term() -%} + {{ link('https://pray.koszko.org', 'pray.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('strona karteczek modlitwy') }} + + {% call desc_term() -%} + {{ link('https://sheets.koszko.org', 'sheets.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('strona karteczek zmieniania świata') }} + + {% call desc_term() -%} + {{ link('https://haketilo.koszko.org', 'haketilo.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('strona proxy Haketilo') }} + + {% call desc_term() -%} + {{ link('https://git.koszko.org', 'git.koszko.org') }} + {%- endcall %} + - + {{ desc_desc('moje repozytoria') }} + {% endcall %} + {% endcall %} + + {% call section('request') %} + {{ header(2, 'Oświadczenie osobiste') }} + + {{ request_table() }} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/pl/prima_aprilis.html.jinja b/src/koszko_org_website/templates/pl/prima_aprilis.html.jinja new file mode 100644 index 0000000..f273f5c --- /dev/null +++ b/src/koszko_org_website/templates/pl/prima_aprilis.html.jinja @@ -0,0 +1,20 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website Prima Aprilis page (polish). + +Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__koszko_base.html.jinja" %} + +{% block title %} Prima Aprilis! {% endblock %} + +{% block header %} + {{ header(1, 'Prima Aprilis!') }} +{% endblock %} + +{% block content %} + {% call para() %} + Uważaj, bo się pomylisz {{ unicode(128521) }} + {% endcall %} +{% endblock %} diff --git a/src/koszko_org_website/templates/pl/qr.html.jinja b/src/koszko_org_website/templates/pl/qr.html.jinja new file mode 100644 index 0000000..92d6652 --- /dev/null +++ b/src/koszko_org_website/templates/pl/qr.html.jinja @@ -0,0 +1,28 @@ +{# +SPDX-License-Identifier: CC0-1.0 + +koszko.org website QR code easter egg page (polish). + +Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> +#} +{% extends "__campaign_base.html.jinja" %} + +{% block title %} Jajeczka {% endblock %} + +{% block content %} + {{ header(1, 'Kod QR') }} + + {% call section() %} + {% call para() %} + A{{ nbsp() }}więc zeskanowałeś/aś kod QR? Zobaczysz za to coś ciekawego. + {% endcall %} + + {% set alt_text = 'zdjęcie jajeczek wielkanocnych leżących w trawie' %} + {{ img('/static/easter-eggs.jpg', alt_text) }} + + {% call para() %} + Możesz już przejść do {{ link(same_lang_url(''), 'właściwej strony') }} + {{ unicode(128578) }} + {% endcall %} + {% endcall %} +{% endblock %} |