From c372490ff680a429f9c629dfa5757268d3fe9421 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Wed, 5 Feb 2025 20:24:50 +0100 Subject: [PATCH 1/6] update to Nikola 8 --- conf.py | 541 +++++++++--------- pages/index.md | 2 +- posts/blog/2018-06-20-avoiding-window-ids.rst | 4 +- posts/blog/2020-03-19-hire-wxpython-pro.rst | 4 +- .../news/2018-06-25-wxpython-4.0.3-release.md | 2 +- requirements.txt | 6 +- shortcodes/homepage_news.tmpl | 2 +- themes/wxpy-theme/templates/base.tmpl | 2 +- .../templates/homepage_postlist.tmpl | 2 +- 9 files changed, 271 insertions(+), 294 deletions(-) diff --git a/conf.py b/conf.py index af56eb2e..c5ed7cfd 100644 --- a/conf.py +++ b/conf.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals import time # !! This is the configuration of Nikola. !! # @@ -38,56 +37,7 @@ BLOG_DESCRIPTION = "wxPython's home page, news feed and blog." # (translatable) # Nikola is multilingual! -# -# Currently supported languages are: -# -# en English -# ar Arabic -# az Azerbaijani -# bg Bulgarian -# bs Bosnian -# ca Catalan -# cs Czech [ALTERNATIVELY cz] -# da Danish -# de German -# el Greek [NOT gr] -# eo Esperanto -# es Spanish -# et Estonian -# eu Basque -# fa Persian -# fi Finnish -# fr French -# gl Galician -# he Hebrew -# hi Hindi -# hr Croatian -# hu Hungarian -# id Indonesian -# it Italian -# ja Japanese [NOT jp] -# ko Korean -# lt Lithuanian -# nb Norwegian (Bokmål) -# nl Dutch -# pa Punjabi -# pl Polish -# pt Portuguese -# pt_br Portuguese (Brazil) -# ru Russian -# sk Slovak -# sl Slovene -# sq Albanian -# sr Serbian (Cyrillic) -# sr_latin Serbian (Latin) -# sv Swedish -# te Telugu -# tr Turkish [NOT tr_TR] -# uk Ukrainian -# ur Urdu -# zh_cn Chinese (Simplified) -# zh_tw Chinese (Traditional) -# + # If you want to use Nikola with a non-supported language you have to provide # a module containing the necessary translations # (cf. the modules at nikola/data/themes/base/messages/). @@ -133,12 +83,12 @@ # # WARNING: Support for submenus is theme-dependent. # Only one level of submenus is supported. -# WARNING: Some themes, including the default Bootstrap 3 theme, +# WARNING: Some themes, including the default Bootstrap 4 theme, # may present issues if the menu is too large. -# (in bootstrap3, the navbar can grow too large and cover contents.) +# (in Bootstrap, the navbar can grow too large and cover contents.) # WARNING: If you link to directories, make sure to follow # ``STRIP_INDEXES``. If it’s set to ``True``, end your links -# with a ``/``, otherwise end them with ``/index.html`` — or +# with a ``/``, otherwise end them with ``/index.html`` - or # else they won’t be highlighted when active. NAVIGATION_LINKS = { @@ -192,6 +142,13 @@ ), } +# Alternative navigation links. Works the same way NAVIGATION_LINKS does, +# although themes may not always support them. (translatable) +# (Bootstrap 4: right-side of navbar, Bootblog 4: right side of title) +NAVIGATION_ALT_LINKS = { + DEFAULT_LANG: () +} + # Name of the theme to use. #THEME = "bootstrap3" @@ -200,10 +157,49 @@ THEME = "wxpy-theme" -# Primary color of your theme. This will be used to customize your theme and -# auto-generate related colors in POSTS_SECTION_COLORS. Must be a HEX value. +# A theme color. In default themes, it might be displayed by some browsers as +# the browser UI color (eg. Chrome on Android). Other themes might also use it +# as an accent color (the default ones don't). Must be a HEX value. THEME_COLOR = '#5670d4' +# Theme configuration. Fully theme-dependent. (translatable) +# Samples for bootblog4 (enabled) and bootstrap4 (commented) follow. +# bootblog4 supports: featured_large featured_small featured_on_mobile +# featured_large_image_on_mobile featured_strip_html sidebar +# bootstrap4 supports: navbar_light (defaults to False) +# navbar_custom_bg (defaults to '') + +# Config for bootblog4: +THEME_CONFIG = { + DEFAULT_LANG: { + # Show the latest featured post in a large box, with the previewimage as its background. + 'featured_large': False, + # Show the first (remaining) two featured posts in small boxes. + 'featured_small': False, + # Show featured posts on mobile. + 'featured_on_mobile': True, + # Show image in `featured_large` on mobile. + # `featured_small` displays them only on desktop. + 'featured_large_image_on_mobile': True, + # Strip HTML from featured post text. + 'featured_strip_html': False, + # Contents of the sidebar, If empty, the sidebar is not displayed. + 'sidebar': '' + } +} +# Config for bootstrap4: +# THEME_CONFIG = { +# DEFAULT_LANG: { +# # Use a light navbar with dark text. Defaults to False. +# 'navbar_light': False, +# # Use a custom navbar color. If unset, 'navbar_light' sets text + +# # background color. If set, navbar_light controls only background +# # color. Supported values: bg-dark, bg-light, bg-primary, bg-secondary, +# # bg-success, bg-danger, bg-warning, bg-info, bg-white, bg-transparent. +# 'navbar_custom_bg': '', +# } +# } + # POSTS and PAGES contains (wildcard, destination, template) tuples. # (translatable) # @@ -265,7 +261,9 @@ INDEX_PATH = "postsindex" +############################################## # Below this point, everything is optional +############################################## # Post's dates are considered in UTC by default, if you want to use # another time zone, please set TIMEZONE to match. Check the available @@ -282,36 +280,29 @@ # FORCE_ISO8601 = False # Date format used to display post dates. (translatable) -# (str used by datetime.datetime.strftime) -# DATE_FORMAT = '%Y-%m-%d %H:%M' +# Used by babel.dates, CLDR style: http://cldr.unicode.org/translation/date-time-1/date-time +# You can also use 'full', 'long', 'medium', or 'short' +# DATE_FORMAT = 'yyyy-MM-dd HH:mm' # Date format used to display post dates, if local dates are used. (translatable) -# (str used by moment.js) -# JS_DATE_FORMAT = 'YYYY-MM-DD HH:mm' +# Used by Luxon: https://moment.github.io/luxon/docs/manual/formatting +# Example for presets: {'preset': True, 'format': 'DATE_FULL'} +# LUXON_DATE_FORMAT = { +# DEFAULT_LANG: {'preset': False, 'format': 'yyyy-MM-dd HH:mm'}, +# } # Date fanciness. # -# 0 = using DATE_FORMAT and TIMEZONE -# 1 = using JS_DATE_FORMAT and local user time (via moment.js) -# 2 = using a string like “2 days ago” +# 0 = using DATE_FORMAT and TIMEZONE (without JS) +# 1 = using LUXON_DATE_FORMAT and local user time (JS, using Luxon) +# 2 = using a string like '2 days ago' (JS, using Luxon) # -# Your theme must support it, bootstrap and bootstrap3 already do. +# Your theme must support it, Bootstrap already does. # DATE_FANCINESS = 0 -# While Nikola can select a sensible locale for each language, -# sometimes explicit control can come handy. -# In this file we express locales in the string form that -# python's locales will accept in your OS, by example -# "en_US.utf8" in Unix-like OS, "English_United States" in Windows. -# LOCALES = dict mapping language --> explicit locale for the languages -# in TRANSLATIONS. You can omit one or more keys. -# LOCALE_FALLBACK = locale to use when an explicit locale is unavailable -# LOCALE_DEFAULT = locale to use for languages not mentioned in LOCALES; if -# not set the default Nikola mapping is used. - +# Customize the locale/region used for a language. +# For example, to use British instead of US English: LOCALES = {'en': 'en_GB'} # LOCALES = {} -# LOCALE_FALLBACK = None -# LOCALE_DEFAULT = None # One or more folders containing files to be copied as-is into the output. # The format is a dictionary of {source: relative destination}. @@ -329,6 +320,8 @@ # Feel free to add or delete extensions to any list, but don't add any new # compilers unless you write the interface for it yourself. # +# The default compiler for `new_post` is the first entry in the POSTS tuple. +# # 'rest' is reStructuredText # 'markdown' is Markdown # 'html' assumes the file is HTML and just copies it @@ -351,12 +344,17 @@ # "pandoc": ('.rst', '.md', '.txt'), } +# Enable reST directives that insert the contents of external files such +# as "include" and "raw." This maps directly to the docutils file_insertion_enabled +# config. See: https://docutils.sourceforge.io/docs/user/config.html#file-insertion-enabled +# REST_FILE_INSERTION_ENABLED = True + # Create by default posts in one file format? # Set to False for two-file posts, with separate metadata. ONE_FILE_POSTS = True # Preferred metadata format for new posts -# "Nikola": reST comments wrapped in a comment if needed (default) +# "Nikola": reST comments, wrapped in a HTML comment if needed (default) # "YAML": YAML wrapped in "---" # "TOML": TOML wrapped in "+++" # "Pelican": Native markdown metadata or reST docinfo fields. Nikola style for other formats. @@ -364,7 +362,7 @@ # Use date-based path when creating posts? # Can be enabled on a per-post basis with `nikola new_post -d`. -# The setting is ignored when creating pages (`-d` still works). +# The setting is ignored when creating pages. # NEW_POST_DATE_PATH = False # What format to use when creating posts with date paths? @@ -375,7 +373,6 @@ # untranslated posts. # If this is set to False, then posts that are not translated to a language # LANG will not be visible at all in the pages in that language. -# Formerly known as HIDE_UNTRANSLATED_POSTS (inverse) # SHOW_UNTRANSLATED_POSTS = True # Nikola supports logo display. If you have one, you can put the URL here. @@ -383,93 +380,27 @@ # The URL may be relative to the site root. #LOGO_URL = '/images/phoenix_main.png' +# When linking posts to social media, Nikola provides Open Graph metadata +# which is used to show a nice preview. This includes an image preview +# taken from the post's previewimage metadata field. +# This option lets you use an image to be used if the post doesn't have it. +# The default is None, valid values are URLs or output paths like +# "/images/foo.jpg" +# DEFAULT_PREVIEW_IMAGE = None + # If you want to hide the title of your website (for example, if your logo # already contains the text), set this to False. +# Note: if your logo is a SVG image, and you set SHOW_BLOG_TITLE = False, +# you should explicitly set a height for #logo in CSS. SHOW_BLOG_TITLE = False -# Writes tag cloud data in form of tag_cloud_data.json. -# Warning: this option will change its default value to False in v8! -WRITE_TAG_CLOUD = True - -# Generate pages for each section. The site must have at least two sections -# for this option to take effect. It wouldn't build for just one section. -POSTS_SECTIONS = True - -# Setting this to False generates a list page instead of an index. Indexes -# are the default and will apply GENERATE_ATOM if set. -# POSTS_SECTIONS_ARE_INDEXES = True - -# Final locations are: -# output / TRANSLATION[lang] / SECTION_PATH / SECTION_NAME / index.html (list of posts for a section) -# output / TRANSLATION[lang] / SECTION_PATH / SECTION_NAME / rss.xml (RSS feed for a section) -# (translatable) -# SECTION_PATH = "" - -# Each post and section page will have an associated color that can be used -# to style them with a recognizable color detail across your site. A color -# is assigned to each section based on shifting the hue of your THEME_COLOR -# at least 7.5 % while leaving the lightness and saturation untouched in the -# HUSL colorspace. You can overwrite colors by assigning them colors in HEX. -# POSTS_SECTION_COLORS = { -# DEFAULT_LANG: { -# 'posts': '#49b11bf', -# 'reviews': '#ffe200', -# }, -# } - -# Associate a description with a section. For use in meta description on -# section index pages or elsewhere in themes. -POSTS_SECTION_DESCRIPTIONS = { - DEFAULT_LANG: { - 'news': 'wxPython News', - 'blog': "wxForty-Two, a.k.a Robin's Ramblings" - }, -} - -# Sections are determined by their output directory as set in POSTS by default, -# but can alternatively be determined from file metadata instead. -# POSTS_SECTION_FROM_META = False - -# Names are determined from the output directory name automatically or the -# metadata label. Unless overwritten below, names will use title cased and -# hyphens replaced by spaces. -# POSTS_SECTION_NAME = { -# DEFAULT_LANG: { -# 'news': 'wxPython News', -# 'blog': 'wxForty-Two Blog', -# }, -# } - -# Titles for per-section index pages. Can be either one string where "{name}" -# is substituted or the POSTS_SECTION_NAME, or a dict of sections. Note -# that the INDEX_PAGES option is also applied to section page titles. -POSTS_SECTION_TITLE = { - DEFAULT_LANG: { - 'news': 'wxPython News', - 'blog': 'wxForty-Two Blog', - }, -} - -# A list of dictionaries specifying sections which translate to each other. -# For example: -# [ -# {'en': 'private', 'de': 'Privat'}, -# {'en': 'work', 'fr': 'travail', 'de': 'Arbeit'}, -# ] -# POSTS_SECTION_TRANSLATIONS = [] - -# If set to True, a section in a language will be treated as a translation -# of the literally same section in all other languages. Enable this if you -# do not translate sections, for example. -# POSTS_SECTION_TRANSLATIONS_ADD_DEFAULTS = True - # Paths for different autogenerated bits. These are combined with the # translation paths. # Final locations are: # output / TRANSLATION[lang] / TAG_PATH / index.html (list of tags) # output / TRANSLATION[lang] / TAG_PATH / tag.html (list of posts for a tag) -# output / TRANSLATION[lang] / TAG_PATH / tag.xml (RSS feed for a tag) +# output / TRANSLATION[lang] / TAG_PATH / tag RSS_EXTENSION (RSS feed for a tag) # (translatable) # TAG_PATH = "categories" @@ -487,16 +418,18 @@ # Set descriptions for tag pages to make them more interesting. The # default is no description. The value is used in the meta description -# and displayed underneath the tag list or index page’s title. -# TAG_PAGES_DESCRIPTIONS = { +# and displayed underneath the tag list or index page’s title. +# (translatable) +# TAG_DESCRIPTIONS = { # DEFAULT_LANG: { -# "blogging": "Meta-blog posts about blogging about blogging.", +# "blogging": "Meta-blog posts about blogging.", # "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects." # }, # } # Set special titles for tag pages. The default is "Posts about TAG". -# TAG_PAGES_TITLES = { +# (translatable) +# TAG_TITLES = { # DEFAULT_LANG: { # "blogging": "Meta-posts about blogging", # "open source": "Posts about open source software" @@ -504,7 +437,7 @@ # } # If you do not want to display a tag publicly, you can mark it as hidden. -# The tag will not be displayed on the tag list page, the tag cloud and posts. +# The tag will not be displayed on the tag list page and posts. # Tag pages will still be generated. HIDDEN_TAGS = ['mathjax'] @@ -515,8 +448,12 @@ # TAGLIST_MINIMUM_POSTS = 1 # A list of dictionaries specifying tags which translate to each other. -# Format: a list of dicts {language: translation, language2: translation2, …} -# See POSTS_SECTION_TRANSLATIONS example above. +# Format: a list of dicts {language: translation, language2: translation2, …} +# For example: +# [ +# {'en': 'private', 'de': 'Privat'}, +# {'en': 'work', 'fr': 'travail', 'de': 'Arbeit'}, +# ] # TAG_TRANSLATIONS = [] # If set to True, a tag in a language will be treated as a translation @@ -527,10 +464,13 @@ # Final locations are: # output / TRANSLATION[lang] / CATEGORY_PATH / index.html (list of categories) # output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.html (list of posts for a category) -# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.xml (RSS feed for a category) +# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category RSS_EXTENSION (RSS feed for a category) # (translatable) -# CATEGORY_PATH = "categories" -# CATEGORY_PREFIX = "cat_" + +#CATEGORY_PATH = "categories" +#CATEGORY_PREFIX = "cat_" +CATEGORY_PATH = "" +CATEGORY_PREFIX = "" # By default, the list of categories is stored in # output / TRANSLATION[lang] / CATEGORY_PATH / index.html @@ -538,7 +478,7 @@ # output / TRANSLATION[lang] / CATEGORIES_INDEX_PATH # with an arbitrary relative path CATEGORIES_INDEX_PATH. # (translatable) -# CATEGORIES_INDEX_PATH = "categories.html" +CATEGORIES_INDEX_PATH = "categories.html" # If CATEGORY_ALLOW_HIERARCHIES is set to True, categories can be organized in # hierarchies. For a post, the whole path in the hierarchy must be specified, @@ -552,25 +492,30 @@ # If CATEGORY_PAGES_ARE_INDEXES is set to True, each category's page will contain # the posts themselves. If set to False, it will be just a list of links. -# CATEGORY_PAGES_ARE_INDEXES = False + +# this affects only 'output/categories/cat_news' +CATEGORY_PAGES_ARE_INDEXES = True # Set descriptions for category pages to make them more interesting. The # default is no description. The value is used in the meta description # and displayed underneath the category list or index page’s title. -# CATEGORY_PAGES_DESCRIPTIONS = { -# DEFAULT_LANG: { -# "blogging": "Meta-blog posts about blogging about blogging.", -# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects." -# }, -# } +# (translatable) +CATEGORY_DESCRIPTIONS = { + DEFAULT_LANG: { + 'News': 'wxPython News', + 'Blog': "wxForty-Two, a.k.a Robin's Ramblings" + }, +} # Set special titles for category pages. The default is "Posts about CATEGORY". -# CATEGORY_PAGES_TITLES = { -# DEFAULT_LANG: { -# "blogging": "Meta-posts about blogging", -# "open source": "Posts about open source software" -# }, -# } +# (translatable) + +CATEGORY_TITLES = { + DEFAULT_LANG: { + 'News': 'wxPython News', + 'Blog': 'wxForty-Two Blog', + }, +} # If you do not want to display a category publicly, you can mark it as hidden. # The category will not be displayed on the category list page. @@ -578,8 +523,8 @@ HIDDEN_CATEGORIES = [] # A list of dictionaries specifying categories which translate to each other. -# Format: a list of dicts {language: translation, language2: translation2, …} -# See POSTS_SECTION_TRANSLATIONS example above. +# Format: a list of dicts {language: translation, language2: translation2, ...} +# See TAG_TRANSLATIONS example above. # CATEGORY_TRANSLATIONS = [] # If set to True, a category in a language will be treated as a translation @@ -587,6 +532,37 @@ # do not translate categories, for example. # CATEGORY_TRANSLATIONS_ADD_DEFAULTS = True +# If no category is specified in a post, the destination path of the post +# can be used in its place. This replaces the sections feature. Using +# category hierarchies is recommended. +# CATEGORY_DESTPATH_AS_DEFAULT = False + +# If True, the prefix will be trimmed from the category name, eg. if the +# POSTS destination is "foo/bar", and the path is "foo/bar/baz/quux", +# the category will be "baz/quux" (or "baz" if only the first directory is considered). +# Note that prefixes coming from translations are always ignored. +# CATEGORY_DESTPATH_TRIM_PREFIX = False + +# If True, only the first directory of a path will be used. +# CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLY = True + +# Map paths to prettier category names. (translatable) +# CATEGORY_DESTPATH_NAMES = { +# DEFAULT_LANG: { +# 'webdev': 'Web Development', +# 'webdev/django': 'Web Development/Django', +# 'random': 'Odds and Ends', +# }, +# } + +# By default, category indexes will appear in CATEGORY_PATH and use +# CATEGORY_PREFIX. If this is enabled, those settings will be ignored (except +# for the index) and instead, they will follow destination paths (eg. category +# 'foo' might appear in 'posts/foo'). If the category does not come from a +# destpath, first entry in POSTS followed by the category name will be used. +# For this setting, category hierarchies are required and cannot be flattened. +# CATEGORY_PAGES_FOLLOW_DESTPATH = False + # If ENABLE_AUTHOR_PAGES is set to True and there is more than one # author, author pages are generated. ENABLE_AUTHOR_PAGES = False @@ -594,7 +570,7 @@ # Path to author pages. Final locations are: # output / TRANSLATION[lang] / AUTHOR_PATH / index.html (list of authors) # output / TRANSLATION[lang] / AUTHOR_PATH / author.html (list of posts by an author) -# output / TRANSLATION[lang] / AUTHOR_PATH / author.xml (RSS feed for an author) +# output / TRANSLATION[lang] / AUTHOR_PATH / author RSS_EXTENSION (RSS feed for an author) # (translatable) # AUTHOR_PATH = "authors" @@ -614,16 +590,19 @@ # If you do not want to display an author publicly, you can mark it as hidden. -# The author will not be displayed on the author list page and posts. -# Tag pages will still be generated. +# The author will not be displayed on the author list page. +# Author pages and links to them will still be generated. HIDDEN_AUTHORS = ['Guest'] +# Allow multiple, comma-separated authors for a post? (Requires theme support, present in built-in themes) +# MULTIPLE_AUTHORS_PER_POST = False + # Final location for the main blog page and sibling paginated pages is # output / TRANSLATION[lang] / INDEX_PATH / index-*.html # (translatable) # INDEX_PATH = "" -# Optional HTML that displayed on “main” blog index.html files. +# Optional HTML that displayed on main blog index.html files. # May be used for a greeting. (translatable) FRONT_INDEX_HEADER = { DEFAULT_LANG: '' @@ -645,6 +624,7 @@ # output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / index.html # output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / index.html # output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / DAY / index.html +# (translatable) # ARCHIVE_PATH = "" # ARCHIVE_FILENAME = "archive.html" @@ -659,21 +639,30 @@ # absolute: a complete URL (that includes the SITE_URL) # URL_TYPE = 'rel_path' -# If USE_BASE_TAG is True, then all HTML files will include -# something like to help -# the browser resolve relative links. -# Most people don’t need this tag; major websites don’t use it. Use -# only if you know what you’re doing. If this is True, your website -# will not be fully usable by manually opening .html files in your web -# browser (`nikola serve` or `nikola auto` is mandatory). Also, if you -# have mirrors of your site, they will point to SITE_URL everywhere. -USE_BASE_TAG = False +# Extension for RSS feed files +# RSS_EXTENSION = ".xml" + +# RSS filename base (without extension); used for indexes and galleries. +# (translatable) +# RSS_FILENAME_BASE = "rss" # Final location for the blog main RSS feed is: -# output / TRANSLATION[lang] / RSS_PATH / rss.xml +# output / TRANSLATION[lang] / RSS_PATH / RSS_FILENAME_BASE RSS_EXTENSION # (translatable) # RSS_PATH = "" +# Final location for the blog main Atom feed is: +# output / TRANSLATION[lang] / ATOM_PATH / ATOM_FILENAME_BASE ATOM_EXTENSION +# (translatable) +# ATOM_PATH = "" + +# Atom filename base (without extension); used for indexes. +# (translatable) +ATOM_FILENAME_BASE = "feed" + +# Extension for Atom feed files +# ATOM_EXTENSION = ".atom" + # Slug the Tag URL. Easier for users to type, special characters are # often removed or replaced as well. # SLUG_TAG_PATH = True @@ -698,7 +687,7 @@ # Presets of commands to execute to deploy. Can be anything, for # example, you may use rsync: -# "rsync -rav --delete output/ joe@my.site:/srv/www/site" +# "rsync -rav --delete --delete-after output/ joe@my.site:/srv/www/site" # And then do a backup, or run `nikola ping` from the `ping` # plugin (`nikola plugin -i ping`). Or run `nikola check -l`. # You may also want to use github_deploy (see below). @@ -708,7 +697,7 @@ # in a `nikola deploy` command as you like. # DEPLOY_COMMANDS = { # 'default': [ -# "rsync -rav --delete output/ joe@my.site:/srv/www/site", +# "rsync -rav --delete --delete-after output/ joe@my.site:/srv/www/site", # ] # } @@ -758,7 +747,7 @@ # argument. # # By default, only .php files uses filters to inject PHP into -# Nikola’s templates. All other filters must be enabled through FILTERS. +# Nikola's templates. All other filters must be enabled through FILTERS. # # Many filters are shipped with Nikola. A list is available in the manual: # @@ -812,20 +801,6 @@ # return partial content of another representation for these resources. Do not # use this feature if you do not understand what this means. -# Compiler to process LESS files. -# LESS_COMPILER = 'lessc' - -# A list of options to pass to the LESS compiler. -# Final command is: LESS_COMPILER LESS_OPTIONS file.less -# LESS_OPTIONS = [] - -# Compiler to process Sass files. -# SASS_COMPILER = 'sass' - -# A list of options to pass to the Sass compiler. -# Final command is: SASS_COMPILER SASS_OPTIONS file.s(a|c)ss -# SASS_OPTIONS = [] - # ############################################################################# # Image Gallery Options # ############################################################################# @@ -841,7 +816,16 @@ # MAX_IMAGE_SIZE = 1280 # USE_FILENAME_AS_TITLE = True # EXTRA_IMAGE_EXTENSIONS = [] -# + +# Use a thumbnail (defined by ".. previewimage:" in the gallery's index) in +# list of galleries for each gallery +GALLERIES_USE_THUMBNAIL = False + +# Image to use as thumbnail for those galleries that don't have one +# None: show a grey square +# '/url/to/file': show the image in that url +GALLERIES_DEFAULT_THUMBNAIL = None + # If set to False, it will sort by filename instead. Defaults to True # GALLERY_SORT_BY_DATE = True @@ -881,6 +865,10 @@ # Embedded thumbnail information: # EXIF_WHITELIST['1st'] = ["*"] +# If set to True, any ICC profile will be copied when an image is thumbnailed or +# resized. +# PRESERVE_ICC_PROFILES = False + # Folders containing images to be used in normal posts or pages. # IMAGE_FOLDERS is a dictionary of the form {"source": "destination"}, # where "source" is the folder containing the images to be published, and @@ -899,6 +887,7 @@ # options, but will have to be referenced manually to be visible on the site # (the thumbnail has ``.thumbnail`` added before the file extension by default, # but a different naming template can be configured with IMAGE_THUMBNAIL_FORMAT). +# Panoramas (aspect ratio over 3:1) get 4x larger thumbnails due to scaling issues. IMAGE_FOLDERS = { #'images': 'images', 'screenshots': 'screenshots', @@ -965,13 +954,14 @@ # META_GENERATOR_TAG = True # Color scheme to be used for code blocks. If your theme provides -# "assets/css/code.css" this is ignored. Leave empty to disable. +# "assets/css/code.css" this is ignored. Set to None to disable. # Can be any of: # algol, algol_nu, autumn, borland, bw, colorful, default, emacs, friendly, # fruity, igor, lovelace, manni, monokai, murphy, native, paraiso-dark, # paraiso-light, pastie, perldoc, rrt, tango, trac, vim, vs, xcode # This list MAY be incomplete since pygments adds styles every now and then. # Check with list(pygments.styles.get_all_styles()) in an interpreter. +# # CODE_COLOR_SCHEME = 'default' # FAVICONS contains (name, file, size) tuples. @@ -1076,13 +1066,6 @@ else: COMMENT_SYSTEM_ID = "wxpython" -# Enable annotations using annotateit.org? -# If set to False, you can still enable them for individual posts and pages -# setting the "annotations" metadata. -# If set to True, you can disable them for individual posts and pages using -# the "noannotations" metadata. -# ANNOTATIONS = False - # Create index.html for page folders? # WARNING: if a page would conflict with the index file (usually # caused by setting slug to `index`), the PAGE_INDEX @@ -1102,17 +1085,8 @@ # http://mysite/foo/bar/index.html => http://mysite/foo/bar/ # (Uses the INDEX_FILE setting, so if that is, say, default.html, # it will instead /foo/default.html => /foo) -# (Note: This was briefly STRIP_INDEX_HTML in v 5.4.3 and 5.4.4) STRIP_INDEXES = False -# Should the sitemap list directories which only include other directories -# and no files. -# Default to True -# If this is False -# e.g. /2012 includes only /01, /02, /03, /04, ...: don't add it to the sitemap -# if /2012 includes any files (including index.html)... add it to the sitemap -# SITEMAP_INCLUDE_FILELESS_DIRS = True - # List of files relative to the server root (!) that will be asked to be excluded # from indexing and other robotic spidering. * is supported. Will only be effective # if SITE_URL points to server root. The list is used to exclude resources from @@ -1138,12 +1112,12 @@ # DEPLOY_DRAFTS = True # Allows scheduling of posts using the rule specified here (new_post -s) -# Specify an iCal Recurrence Rule: http://www.kanzaki.com/docs/ical/rrule.html +# Specify an iCal Recurrence Rule: https://www.kanzaki.com/docs/ical/rrule.html # SCHEDULE_RULE = '' -# If True, use the scheduling rule to all posts by default +# If True, use the scheduling rule to all posts (not pages!) by default # SCHEDULE_ALL = False -# Do you want a add a Mathjax config file? +# Do you want to add a Mathjax config file? # MATHJAX_CONFIG = "" # If you want support for the $.$ syntax (which may conflict with running @@ -1168,14 +1142,15 @@ # feature yet, it's faster and the output looks better. # USE_KATEX = False -# KaTeX auto-render settings. If you want support for the $.$ syntax (wihch may +# KaTeX auto-render settings. If you want support for the $.$ syntax (which may # conflict with running text!), just use this config: # KATEX_AUTO_RENDER = """ # delimiters: [ # {left: "$$", right: "$$", display: true}, -# {left: "\\\[", right: "\\\]", display: true}, +# {left: "\\\\[", right: "\\\\]", display: true}, +# {left: "\\\\begin{equation*}", right: "\\\\end{equation*}", display: true}, # {left: "$", right: "$", display: false}, -# {left: "\\\(", right: "\\\)", display: false} +# {left: "\\\\(", right: "\\\\)", display: false} # ] # """ @@ -1183,14 +1158,15 @@ # IPYNB_CONFIG = {} # With the following example configuration you can use a custom jinja template # called `toggle.tpl` which has to be located in your site/blog main folder: -# IPYNB_CONFIG = {'Exporter':{'template_file': 'toggle'}} +# IPYNB_CONFIG = {'Exporter': {'template_file': 'toggle'}} # What Markdown extensions to enable? # You will also get gist, nikola and podcast because those are # done in the code, hope you don't mind ;-) # Note: most Nikola-specific extensions are done via the Nikola plugin system, # with the MarkdownExtension class and should not be added here. -# The default is ['fenced_code', 'codehilite'] +# Defaults are markdown.extensions.(fenced_code|codehilite|extra) +# markdown.extensions.meta is required for Markdown metadata. MARKDOWN_EXTENSIONS = ['markdown.extensions.fenced_code', 'markdown.extensions.codehilite', 'markdown.extensions.extra', @@ -1199,9 +1175,23 @@ 'markdown.extensions.admonition', ] -# Extra options to pass to the pandoc command. -# by default, it's empty, is a list of strings, for example -# ['-F', 'pandoc-citeproc', '--bibliography=/Users/foo/references.bib'] +# Options to be passed to markdown extensions (See https://python-markdown.github.io/reference/) +# Default is {DEFAULT_LANG: {}} (no config at all) +# (translatable) +# MARKDOWN_EXTENSION_CONFIGS = {DEFAULT_LANG: {}} + + +# Extra options to pass to the pandoc command, empty by default. +# It can be a list of strings or a dict (keys are file extensions). +# Example for a list of strings (used for all extensions): +# PANDOC_OPTIONS = ['-F', 'pandoc-citeproc', '--bibliography=/Users/foo/references.bib'] +# Example for a dict, where the keys are the extensions in COMPILERS['pandoc']: +# COMPILERS['pandoc'] = ['.rst', '.md', '.txt'] +# PANDOC_OPTIONS = { +# '.rst': ['-t', 'rst'], +# '.md': ['-t', 'markdown'], +# '.txt': ['-t', 'markdown-raw_html'], +# } # Pandoc does not demote headers by default. To enable this, you can use, for example # ['--base-header-level=2'] # PANDOC_OPTIONS = [] @@ -1225,7 +1215,6 @@ # """ # Show link to source for the posts? -# Formerly known as HIDE_SOURCELINK (inverse) SHOW_SOURCELINK = False # Copy the source files for your pages? # Setting it to False implies SHOW_SOURCELINK = False @@ -1258,12 +1247,6 @@ # Number of posts in Atom and RSS feeds. # FEED_LENGTH = 10 -# Include preview image as a
at the top of the entry. -# Requires FEED_PLAIN = False. If the preview image is found in the content, -# it will not be included again. Image will be included as-is, aim to optmize -# the image source for Feedly, Apple News, Flipboard, and other popular clients. -# FEED_PREVIEWIMAGE = True - # RSS_LINK is a HTML fragment to link the RSS or Atom feeds. If set to None, # the base.tmpl will use the feed Nikola generates. However, you may want to # change it for a FeedBurner feed or something else. @@ -1349,7 +1332,12 @@ # (Note the '.*\/' in the beginning -- matches source paths relative to conf.py) # FILE_METADATA_REGEXP = None -# If enabled, extract metadata from docinfo fields in reST documents +# Should titles fetched from file metadata be unslugified (made prettier?) +FILE_METADATA_UNSLUGIFY_TITLES = True + +# If enabled, extract metadata from docinfo fields in reST documents. +# If your text files start with a level 1 heading, it will be treated as the +# document title and will be removed from the text. # USE_REST_DOCINFO_METADATA = False # If enabled, hide docinfo fields in reST document output @@ -1366,33 +1354,23 @@ # } # Other examples: https://getnikola.com/handbook.html#mapping-metadata-from-other-formats -METADATA_MAPPING = { +METADATA_VALUE_MAPPING = { "rest_docinfo": {"summary": "description", "modified": "updated"}, "markdown_metadata": {"summary": "description", "modified": "updated"}, "html_metadata": {"summary": "description", "modified": "updated"} } - -# If you hate "Filenames with Capital Letters and Spaces.md", you should -# set this to true. -UNSLUGIFY_TITLES = True +# Add any post types here that you want to be displayed without a title. +# If your theme supports it, the titles will not be shown. +# TYPES_TO_HIDE_TITLE = [] # Additional metadata that is added to a post when creating a new_post # ADDITIONAL_METADATA = {} -# Nikola supports Open Graph Protocol data for enhancing link sharing and -# discoverability of your site on Facebook, Google+, and other services. -# Open Graph is enabled by default. -# USE_OPEN_GRAPH = True - # Nikola supports Twitter Card summaries, but they are disabled by default. # They make it possible for you to attach media to Tweets that link # to your content. # -# IMPORTANT: -# Please note, that you need to opt-in for using Twitter Cards! -# To do this please visit https://cards-dev.twitter.com/validator -# # Uncomment and modify to following lines to match your accounts. # Images displayed come from the `previewimage` meta tag. # You can specify the card type by using the `card` parameter in TWITTER_CARD. @@ -1404,19 +1382,19 @@ # # 'creator': '@username', # Username for the content creator / author. # } -# If webassets is installed, bundle JS and CSS into single files to make -# site loading faster in a HTTP/1.1 environment but is not recommended for -# HTTP/2.0 when caching is used. Defaults to True. +# Bundle JS and CSS into single files to make site loading faster in a HTTP/1.1 +# environment but is not recommended for HTTP/2.0 when caching is used. +# Defaults to True. USE_BUNDLES = not USE_TEST_SITE # Plugins you don't want to use. Be careful :-) # DISABLED_PLUGINS = ["render_galleries"] -# Special settings to disable only parts of the indexes plugin (to allow RSS -# but no blog indexes, or to allow blog indexes and Atom but no site-wide RSS). +# Special settings to disable only parts of the indexes plugin. # Use with care. -# DISABLE_INDEXES_PLUGIN_INDEX_AND_ATOM_FEED = False -# DISABLE_INDEXES_PLUGIN_RSS_FEED = False +# DISABLE_INDEXES = False +# DISABLE_MAIN_ATOM_FEED = False +# DISABLE_MAIN_RSS_FEED = False # Add the absolute paths to directories containing plugins to use them. # For example, the `plugins` directory of your clone of the Nikola plugins @@ -1438,25 +1416,28 @@ # HYPHENATE = False # The tags in HTML generated by certain compilers (reST/Markdown) -# will be demoted by that much (1 → h1 will become h2 and so on) +# will be demoted by that much (1 -> h1 will become h2 and so on) # This was a hidden feature of the Markdown and reST compilers in the # past. Useful especially if your post titles are in

tags too, for # example. # (defaults to 1.) # DEMOTE_HEADERS = 1 -# Docutils, by default, will perform a transform in your documents -# extracting unique titles at the top of your document and turning -# them into metadata. This surprises a lot of people, and setting -# this option to True will prevent it. -# NO_DOCUTILS_TITLE_TRANSFORM = False - -# If you don’t like slugified file names ([a-z0-9] and a literal dash), +# If you don't like slugified file names ([a-z0-9] and a literal dash), # and would prefer to use all the characters your file system allows. # USE WITH CARE! This is also not guaranteed to be perfect, and may # sometimes crash Nikola, your web server, or eat your cat. # USE_SLUGIFY = True +# If set to True, the tags 'draft', 'mathjax' and 'private' have special +# meaning. If set to False, these tags are handled like regular tags. +USE_TAG_METADATA = False + +# If set to True, a warning is issued if one of the 'draft', 'mathjax' +# and 'private' tags are found in a post. Useful for checking that +# migration was successful. +WARN_ABOUT_TAG_METADATA = False + # Templates will use those filters, along with the defaults. # Consult your engine's documentation on filters if you need help defining # those. diff --git a/pages/index.md b/pages/index.md index 9736e430..e9d93e38 100644 --- a/pages/index.md +++ b/pages/index.md @@ -26,7 +26,7 @@ modifications on Windows, Macs and Linux or other unix-like systems. # Latest News {{% post-list stop=3 - sections=news + categories=news template=homepage_postlist.tmpl %}} {{% /post-list %}} diff --git a/posts/blog/2018-06-20-avoiding-window-ids.rst b/posts/blog/2018-06-20-avoiding-window-ids.rst index 331a776c..c804eaec 100644 --- a/posts/blog/2018-06-20-avoiding-window-ids.rst +++ b/posts/blog/2018-06-20-avoiding-window-ids.rst @@ -1,9 +1,9 @@ .. title: Avoiding Window IDs .. slug: avoiding-window-ids -.. date: 2018-06-20 20:25:52 PDT +.. date: 2018-06-20 20:25:52 UTC-07:00 .. author: Robin .. tags: -.. category: +.. category: Blog .. link: .. description: .. type: text diff --git a/posts/blog/2020-03-19-hire-wxpython-pro.rst b/posts/blog/2020-03-19-hire-wxpython-pro.rst index 93bdb701..a97dbca5 100644 --- a/posts/blog/2020-03-19-hire-wxpython-pro.rst +++ b/posts/blog/2020-03-19-hire-wxpython-pro.rst @@ -1,9 +1,9 @@ .. title: Hire a wxPython Pro! .. slug: hire-wxpython-pro -.. date: 2020-03-24 10:00:00 PDT +.. date: 2020-03-24 10:00:00 UTC-08:00 .. author: Robin .. tags: -.. category: +.. category: Blog .. link: .. description: .. type: text diff --git a/posts/news/2018-06-25-wxpython-4.0.3-release.md b/posts/news/2018-06-25-wxpython-4.0.3-release.md index 88634331..11248648 100644 --- a/posts/news/2018-06-25-wxpython-4.0.3-release.md +++ b/posts/news/2018-06-25-wxpython-4.0.3-release.md @@ -1,7 +1,7 @@ + + + From 75cae15be3aee8ed476e5acbdc80de6ccb1cc7d9 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Wed, 5 Feb 2025 21:58:54 +0100 Subject: [PATCH 4/6] move annotation_helper to the correct dir --- themes/wxpy-theme/{ => templates}/annotation_helper.tmpl | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename themes/wxpy-theme/{ => templates}/annotation_helper.tmpl (100%) diff --git a/themes/wxpy-theme/annotation_helper.tmpl b/themes/wxpy-theme/templates/annotation_helper.tmpl similarity index 100% rename from themes/wxpy-theme/annotation_helper.tmpl rename to themes/wxpy-theme/templates/annotation_helper.tmpl From 3ce9c1c0a55567dcf639b2b56f135b66e6c18e04 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Thu, 6 Feb 2025 21:58:37 +0100 Subject: [PATCH 5/6] add command to install bootstrap3 theme --- .github/actions/build-website/action.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/actions/build-website/action.yml b/.github/actions/build-website/action.yml index 5dd7805e..1a632dc2 100644 --- a/.github/actions/build-website/action.yml +++ b/.github/actions/build-website/action.yml @@ -13,6 +13,11 @@ runs: run: | pip install -r requirements.txt + - name: Install old base theme + shell: bash + run: | + nikola build theme -i bootstrap3 + - name: Build website shell: bash run: | From af1e8035777777c9ececd71c7a1bef40edcef2b1 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Thu, 6 Feb 2025 23:47:50 +0100 Subject: [PATCH 6/6] fix copy paste error in theme installation --- .github/actions/build-website/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-website/action.yml b/.github/actions/build-website/action.yml index 1a632dc2..079d0775 100644 --- a/.github/actions/build-website/action.yml +++ b/.github/actions/build-website/action.yml @@ -16,7 +16,7 @@ runs: - name: Install old base theme shell: bash run: | - nikola build theme -i bootstrap3 + nikola theme -i bootstrap3 - name: Build website shell: bash