[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: website: Add publications page.
From: |
julien lepiller |
Subject: |
branch master updated: website: Add publications page. |
Date: |
Thu, 27 May 2021 08:29:41 -0400 |
This is an automated email from the git hooks/post-receive script.
roptat pushed a commit to branch master
in repository guix-artwork.
The following commit(s) were added to refs/heads/master by this push:
new 813d04b website: Add publications page.
813d04b is described below
commit 813d04bd17834eb9b116dcd8f2614a318cbf786f
Author: Luis Felipe <luis.felipe.la@protonmail.com>
AuthorDate: Mon May 24 17:54:17 2021 -0500
website: Add publications page.
This page lists different kinds of written publications that talk about
Guix.
* website/apps/base/templates/components.scm (navbar): Link to the new
page from the Media menu.
* website/apps/media/builder.scm (publication-list-builder): New helper
builder.
(builder): Use the new helper builder.
* website/apps/media/data.scm (publications): New data set.
* website/apps/media/templates/components.scm (publication->shtml): New
component.
* website/apps/media/templates/publication-list.scm: New template.
* website/apps/media/types.scm (<publication>): New record type.
* website/static/base/img/link-arrow-shaper.svg: New image.
* website/static/media/css/publications.css: New style sheet.
Signed-off-by: Julien Lepiller <julien@lepiller.eu>
---
website/apps/base/templates/components.scm | 14 ++++-
website/apps/media/builder.scm | 19 +++++--
website/apps/media/data.scm | 25 +++++++++
website/apps/media/templates/components.scm | 28 +++++++++-
website/apps/media/templates/publication-list.scm | 46 ++++++++++++++++
website/apps/media/types.scm | 52 +++++++++++++++++-
website/static/base/img/link-arrow-shaper.svg | 66 +++++++++++++++++++++++
website/static/media/css/publications.css | 35 ++++++++++++
8 files changed, 277 insertions(+), 8 deletions(-)
diff --git a/website/apps/base/templates/components.scm
b/website/apps/base/templates/components.scm
index b615f98..e2a74d3 100644
--- a/website/apps/base/templates/components.scm
+++ b/website/apps/base/templates/components.scm
@@ -461,8 +461,18 @@ manual.
,(menu-dropdown #:label (C_ "website menu" "Media") #:active-item
active-item
#:items
(list
- (C_ "website menu" (menu-item #:label "Videos" #:active-item
active-item #:url (guix-url "videos/")))
- (C_ "website menu" (menu-item #:label "Screenshots" #:active-item
active-item #:url (guix-url "screenshots/")))))
+ (C_ "website menu"
+ (menu-item #:label "Videos"
+ #:active-item active-item
+ #:url (guix-url "videos/")))
+ (C_ "website menu"
+ (menu-item #:label "Screenshots"
+ #:active-item active-item
+ #:url (guix-url "screenshots/")))
+ (C_ "website menu"
+ (menu-item #:label "Publications"
+ #:active-item active-item
+ #:url (guix-url "publications/")))))
,(C_ "website menu" (menu-item #:label "Donate" #:active-item
active-item #:url (guix-url "donate/")))
diff --git a/website/apps/media/builder.scm b/website/apps/media/builder.scm
index 53378e6..c270db5 100644
--- a/website/apps/media/builder.scm
+++ b/website/apps/media/builder.scm
@@ -6,11 +6,13 @@
(define-module (apps media builder)
#:use-module (apps aux system)
#:use-module (apps media data)
+ #:use-module (apps media templates publication-list)
#:use-module (apps media templates screenshot)
#:use-module (apps media templates screenshots-overview)
#:use-module (apps media templates video)
#:use-module (apps media templates video-list)
#:use-module (apps media types)
+ #:use-module (haunt artifact)
#:use-module (haunt html)
#:use-module (haunt page)
#:use-module (haunt utils)
@@ -37,11 +39,13 @@
A list of post objects that represent articles from the blog. See
Haunt <post> objects for more information.
- RETURN (list of <page>)
- A list of page objects that represent the web resources of the
- application. See Haunt <page> objects for more information."
+ RETURN (list of <artifact> and <page>)
+ A list of objects that represent the web resources of the
+ application. See Haunt <artifact> and <page> objects for more
+ information."
(flatten
- (list (screenshots-overview-builder)
+ (list (publication-list-builder)
+ (screenshots-overview-builder)
(screenshots-builder)
(videos-builder)
(video-list-builder))))
@@ -51,6 +55,13 @@
;;; Helper builders.
;;;
+(define (publication-list-builder)
+ "Return a Haunt artifact representing the publications page."
+ (serialized-artifact (url-path-join "publications" "index.html")
+ (publication-list-t publications)
+ sxml->html))
+
+
(define (screenshots-builder)
"Return a list of Haunt pages representing screenshot pages."
(map
diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index 9b1e2c5..a82d647 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -9,6 +9,7 @@
#:use-module (apps media types)
#:use-module (srfi srfi-19)
#:export (playlists
+ publications
screenshots))
@@ -98,6 +99,30 @@ distribution."))
#:last-updated (string->date "2020-03-28T16:00:00"
"~Y-~m-~dT~H:~M:~S")))))
+(define publications
+ (list
+ (publication
+ #:title "Functional Package Management with Guix"
+ #:url "https://arxiv.org/abs/1305.4584"
+ #:authors "Ludovic Courtès"
+ #:date (string->date "2013-05-20" "~Y-~m-~d"))
+ (publication
+ #:title "Reproducible and User-Controlled Software Environments in HPC
with Guix"
+ #:url "https://hal.inria.fr/hal-01161771/en"
+ #:authors (G_ "Ludovic Courtès, Ricardo Wurmus")
+ #:date (string->date "2015-07-25" "~Y-~m-~d"))
+ (publication
+ #:title "Code Staging in GNU Guix"
+ #:url "https://arxiv.org/abs/1709.00833"
+ #:authors "Ludovic Courtès"
+ #:date (string->date "2017-09-04" "~Y-~m-~d"))
+ (publication
+ #:title "Guix: A most advanced operating system"
+ #:url "https://ambrevar.xyz/guix-advance/index.html"
+ #:authors "Pierre Neidhardt"
+ #:date (string->date "2019-01-14" "~Y-~m-~d"))))
+
+
(define screenshots
(list
(screenshot
diff --git a/website/apps/media/templates/components.scm
b/website/apps/media/templates/components.scm
index d928d23..ce9d944 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -14,7 +14,8 @@
#:use-module (apps media types)
#:use-module (apps media utils)
#:use-module (srfi srfi-19)
- #:export (screenshot->shtml
+ #:export (publication->shtml
+ screenshot->shtml
screenshots-box
video->shtml
video-content
@@ -25,6 +26,31 @@
;;; Components.
;;;
+(define (publication->shtml publication)
+ "Return an SHTML representation of the given publication object.
+
+ PUBLICATION (<publication>)
+ A publication object as defined in (apps media types)."
+ (let ((date
+ (date->string (publication-date publication)
+ (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))))
+
+ `(a
+ (@ (class "publication-preview")
+ (href ,(publication-url publication)))
+
+ (h3
+ (@ (lang ,(publication-language publication))
+ (class "publication-title"))
+ ,(publication-title publication))
+
+ (p
+ (@ (class "publication-info"))
+ ;; TRANSLATORS: <1/> is a date, and <2/> a list of authors.
+ ,(G_ `("Published " ,date " by "
+ ,(publication-authors publication) ""))))))
+
+
(define (screenshot->shtml shot)
"Return an SHTML representation of the given screenshot object.
diff --git a/website/apps/media/templates/publication-list.scm
b/website/apps/media/templates/publication-list.scm
new file mode 100644
index 0000000..44847c7
--- /dev/null
+++ b/website/apps/media/templates/publication-list.scm
@@ -0,0 +1,46 @@
+;;; GNU Guix web site
+;;; Public domain 2021 Luis Felipe López Acevedo
+
+(define-module (apps media templates publication-list)
+ #:use-module (apps base templates theme)
+ #:use-module (apps base types)
+ #:use-module (apps base utils)
+ #:use-module (apps i18n)
+ #:use-module (apps media templates components)
+ #:export (publication-list-t))
+
+
+(define (publication-list-t publications)
+ "Return the Publication list page in SHTML.
+
+ PUBLICATIONS (list of <publication>)
+ See the (apps media types) module for information on the
+ <publication> type."
+ (theme
+ #:title (C_ "webpage title" '("Publications"))
+ #:description
+ (G_ "A list of written publications about GNU Guix.")
+ #:keywords
+ ;; TRANSLATORS: |-separated list of webpage keywords.
+ (string-split (G_ "Publications|Papers") #\|)
+ #:active-menu-item (C_ "website menu" "Publications")
+ #:css (list
+ (guix-url "static/base/css/page.css")
+ (guix-url "static/media/css/publications.css"))
+ #:crumbs (list (crumb (C_ "website menu" "Publications") "./"))
+ #:content
+ `(main
+ (section
+ (@ (class "page"))
+ ,(G_ `(h2 "Publications"))
+
+ ,(G_
+ `(p
+ (@ (class "centered-block limit-width"))
+
+ "The following is a list of written materials that talk about GNU
Guix. It is a diverse collection of writings, from blog posts to grey
literature to academic and research papers."))
+
+ (div
+ (@ (class "publication-list centered-block limit-width"))
+
+ ,@(map publication->shtml publications))))))
diff --git a/website/apps/media/types.scm b/website/apps/media/types.scm
index 50c0989..579e642 100644
--- a/website/apps/media/types.scm
+++ b/website/apps/media/types.scm
@@ -5,7 +5,14 @@
(define-module (apps media types)
#:use-module (srfi srfi-9)
- #:export (screenshot
+ #:export (publication
+ publication?
+ publication-authors
+ publication-date
+ publication-language
+ publication-title
+ publication-url
+ screenshot
screenshot?
screenshot-caption
screenshot-image
@@ -32,6 +39,49 @@
;;; Data types.
;;;
+;;; Publication (record type)
+;;; -------------------------
+;;;
+;;; A publication object represents a written material that talks about
+;;; GNU Guix.
+;;;
+;;; Objects of this type can be created with the "publication" procedure
+;;; (see Helper procedures below).
+;;;
+;;; Fields:
+;;;
+;;; title (string)
+;;; The title of the publication.
+;;;
+;;; url (string)
+;;; A URL to the publication.
+;;;
+;;; authors (string)
+;;; The names of the authors.
+;;;
+;;; date (date)
+;;; The date of publication.
+;;;
+;;; language (string)
+;;; IETF language tag corresponding to the language in which the
+;;; publication is written.
+;;;
+(define-record-type <publication>
+ (make-publication title url authors date language)
+ publication?
+ (title publication-title)
+ (url publication-url)
+ (authors publication-authors)
+ (date publication-date)
+ (language publication-language))
+
+;;; Helper procedures.
+
+(define* (publication #:key title url authors date (language "en"))
+ "Return a <publication> object with the given attributes."
+ (make-publication title url authors date language))
+
+
;;; Screenshot (record type)
;;; ------------------------
;;;
diff --git a/website/static/base/img/link-arrow-shaper.svg
b/website/static/base/img/link-arrow-shaper.svg
new file mode 100644
index 0000000..834fd84
--- /dev/null
+++ b/website/static/base/img/link-arrow-shaper.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="50"
+ height="100"
+ id="RSSicon"
+ viewBox="0 0 100 200"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+ sodipodi:docname="link-arrow-shaper.svg"
+ inkscape:export-filename="feed-bg-whitepng.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata34">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ id="namedview32"
+ showgrid="false"
+ inkscape:showpageshadow="false"
+ inkscape:zoom="1"
+ inkscape:cx="94.060188"
+ inkscape:cy="157.85589"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="RSSicon"
+ inkscape:snap-page="false"
+ inkscape:document-rotation="0"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <defs
+ id="defs3" />
+ <path
+ id="rect88"
+ style="opacity:1;fill:#ffffff;stroke:none;stroke-width:3.77734"
+ d="M 0,-4 H 104 V 204 H 0 L 56,100 Z"
+ sodipodi:nodetypes="cccccc" />
+</svg>
diff --git a/website/static/media/css/publications.css
b/website/static/media/css/publications.css
new file mode 100644
index 0000000..797918f
--- /dev/null
+++ b/website/static/media/css/publications.css
@@ -0,0 +1,35 @@
+.publication-list {
+ margin-top: 2em;
+}
+
+.publication-preview,
+.publication-preview:link,
+.publication-preview:visited {
+ display: block;
+ border-image: linear-gradient(to right, gray, transparent) 1;
+ border-style: none none solid none;
+ border-width: thin thick;
+ color: #4D4D4D;
+ padding: 20px 70px 20px 10px;
+ transition: border-width .2s cubic-bezier(.22,.61,.36,1);
+}
+
+.publication-preview:active,
+.publication-preview:focus,
+.publication-preview:hover {
+ background-color: gold;
+ background-image: url("/static/base/img/link-arrow-shaper.svg");
+ background-position: right;
+ background-repeat: no-repeat;
+ background-size: auto 100%;
+ border-image: linear-gradient(to right, #333, white, white) 1;
+ border-style: none none solid solid;
+}
+
+.publication-title {
+ margin: 0px;
+}
+
+.publication-info {
+ margin-bottom: 0px;
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: website: Add publications page.,
julien lepiller <=