* website/apps/packages/data.scm (%package-list): Compare to 'yes' instead of
any value.
* website/README: Document it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This change introduces a multipage catalog of videos and playlists,
similar to blog posts and packages pages.
Modified files:
* website/README (Adding videos): New section.
* website/apps/base/builder.scm (home-builder): Pass 4 videos and/or
playlists to the home page template.
* website/apps/base/templates/home.scm (home-t): Display videos and
playlists in the Instructional videos section. Move the ALL PACKAGES
button below the screenshots.
* website/apps/media/builder.scm (videos-builder): Use the new list of
videos. Put videos in new paths (/LANG/videos/YYYY/video-slug/).
(video-list-builder): Build the pages of the catalog of videos and
playlists.
* website/apps/media/data.scm (videos): New list of videos plus
playlists.
(playlists): Remove in favor of the new videos list.
* website/apps/media/templates/components.scm:
(playlist-preview, video-track): New components.
(video-preview): Redesign video presentation. Add new keyword parameter,
"playing?", to indicate whether the video is the currently playing
video in a playlist.
(video->shtml, video-content): Removed. Not necessary in the new design.
* website/apps/media/templates/video.scm (video-t): Redesign it.
* website/apps/media/templates/video-list.scm (video-list-t): Likewise.
* website/apps/media/types.scm (<playlist>): New record type.
(<video>): Add a new video-authors field. Rename video-last-updated and
video-page-subpath to video-date and video-slug, respectively. The
former because a video with a new date should be considered a new video.
As for video-slug, it seems more appropriate. Change description type
to string to fit the new design. Explain how the slug field must be
unique. Export video-tracks accessor. Finally, remove video-poster, as
paths to the miniature and poster images of a video are formed using
the video slug and are expected to be in the static directory for
videos.
(<track>): Update documentation to indicate that using the track
constructor is not optional. Make documentation of fields more
descriptive. Make URL field optional.
(track): Refer to it as a "constructor". Make all arguments mandatory,
except for the URL.
(module): Remove duplicated "Data type" headings.
* website/designs/media.svg: Mock up video list and video detail pages.
* website/static/base/css/common.css (top-shadow-bg): Update name of the
background image.
* website/static/base/css/index.css (discovery-box): Update names of the
background images.
* website/static/media/css/video-preview.css (video-preview): Restyle.
(playlist-preview, poster-box, poster, poster-shadow, playing-icon)
(playlist-icon, playlist-title, video-title, playlist-info)
(video-info): New classes.
(video-link, @media): Remove them. Not necessary in this design.
Renamed files:
* website/static/base/img/discovery-box-shadow-bg.png: Change its name
to "depression-shadow-top.png" so that it makes more sense in different
contexts, like the new video list.
Deleted files:
* website/static/base/img/discovery-box-bg.png: It was a duplicate of
noise-bg.png, which is used instead.
* website/static/base/img/top-shadow-bg.png: Became a duplicate of the
new depression-shadow-top.png, which is used instead.
* website/static/videos: This directory was deleted with all its content
in favor of the new "website/static/media/videos", which now contains
new miniatures and updated posters for all videos (see new files).
New files:
* website/static/media/css/video.css: New style sheet.
* website/static/media/css/video-list.css: New style sheet.
* website/static/media/img/playing-icon.svg: New icon.
* website/static/media/img/playlist-icon.svg: New icon.
New miniature and poster images for videos:
* website/static/media/videos/2018/seagl-everyday-use-of-guix.mini.webp
* website/static/media/videos/2018/seagl-everyday-use-of-guix.webp
* website/static/media/videos/2019/beyond-containers-reproducible-software-environments-with-gnu-guix.mini.webp
* website/static/media/videos/2019/beyond-containers-reproducible-software-environments-with-gnu-guix.webp
* website/static/media/videos/2019/bitcoin-build-system-security.mini.webp
* website/static/media/videos/2019/bitcoin-build-system-security.webp
* website/static/media/videos/2019/reproducible-system-administration-with-gnu-guix.mini.webp
* website/static/media/videos/2019/reproducible-system-administration-with-gnu-guix.webp
* website/static/media/videos/2020/asking-for-help.mini.webp
* website/static/media/videos/2020/asking-for-help.webp
* website/static/media/videos/2020/everyday-use-of-gnu-guix-part-one.mini.webp
* website/static/media/videos/2020/everyday-use-of-gnu-guix-part-one.webp
* website/static/media/videos/2020/everyday-use-of-gnu-guix-part-two.mini.webp
* website/static/media/videos/2020/everyday-use-of-gnu-guix-part-two.webp
* website/static/media/videos/2020/installation-from-script.mini.webp
* website/static/media/videos/2020/installation-from-script.webp
* website/static/media/videos/2020/packaging-part-one.mini.webp
* website/static/media/videos/2020/packaging-part-one.webp
* website/static/media/videos/2020/packaging-part-three.mini.webp
* website/static/media/videos/2020/packaging-part-three.webp
* website/static/media/videos/2020/packaging-part-two.mini.webp
* website/static/media/videos/2020/packaging-part-two.webp
* website/static/media/videos/2020/system-graphical-installer.mini.webp
* website/static/media/videos/2020/system-graphical-installer.webp
Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de>
When passing LANG from the environment, the process will try to build
for the local language, which is not supported if it is not one of
`po/LINGUAS`. In addition, the manifest creates the required locales, so
there is no need to share a potentially incomplete locale directory.
* website/README (Build locally): Ensure building for a supported
language.
* website/po/POTFILES: New file. List apps files here.
* website/po/LINGUAS: New file. List en_US lingua.
* website/po/ietf-tags.scm: New file. Add association for en_US lingua.
* website/scripts/sexp-xgettext.scm: New file for generating a POT file.
(<keyword-spec>, <po-entry>, <construct-fold-state>): New record types.
(combine-duplicate-po-entries, complex-keyword-spec?, parse-scheme-file,
po-equal?, write-po-entry, update-ecomments-string!, update-file-name!,
update-old-line-number!, update-line-number!, incr-line-number!,
incr-line-number-for-each-nl!, current-ref, make-simple-po-entry,
matching-keyword, nth-exp, more-than-one-exp?, token->string-symbol-or-keyw,
complex-marked-list->po-entries, construct-po-entries, tag,
construct-msgid-and-po-entries, scheme-file->po-entries): New procedures.
(%keyword-specs, %options, %comments-line, %ecomments-string, %file-name,
%old-line-number, %line-number, %files-from-port, %source-files,
%output-po-entries, %output-port): New variables.
* website/sexp-xgettext.scm: New file with module for looking up
translations.
(%complex-keywords, %simple-keywords, %plural-numbers, %linguas):
New variables.
(<construct-fold-state>, <deconstruct-fold-state>): New record types.
(set-complex-keywords!, set-simple-keywords!, gettext-keyword?, tag,
sexp->msgid, deconstruct): New procedures.
(sgettext, spgettext, sngettext, snpgettext): New macro helpers.
* website/apps/i18n.scm: New file.
(G_, N_, C_, NC_, ietf-tags-file-contents): New syntax to use for i18n.
(%current-ietf-tag, %current-lang, %current-lingua): New variables.
(builder->localized-builder, builders->localized-builders,
localized-root-path, first-value): New utility procedures.
(<asset>, <page>): New imports from Haunt.
* website/haunt.scm: Wrap each builder to build the locale set in LC_ALL.
* website/.guix.scm: Make Haunt build directory writable so Haunt can
overwrite duplicate assets. Convert PO files to MO files and build for
each lingua.
* website/README: Adapt build instructions for i18n.
* website/i18n-howto: New file with usage instructions.
* website/README: Remove documentation.
* website/apps/base/templates/help.scm (help-t): Use just one URL for
the refcard.
* website/apps/base/utils (guix-root-url-path): Use "/".
(builder): Remove big comment about bug #25227 and use expensive
builders.
* website/haunt.scm: Use guix.gnu.org domain.
* website/README (GuixSD website): Remove references to old
files and directory structure.
* website/README (Dependencies): Rename to "Development environment",
and use Guix to install required packages for development.
* website/README (Building and running): Rename to "Running the website".
* website/README (Building and running special pages): Remove it.
All pages are built with haunt now.
* README (Building and running special pages): Correct environment
variable.
* www/packages.scm (packages-page): Move update date to the top of the
page.
(package->sxml): Use ID instead of NAME attribute for anchors, and
move out DIV element from P element, which is invalid.
This provides a simple way to build the website locally.
* website/haunt.scm: New file.
* website/README: Document the new build process.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>