summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--emacsconf-pad.el49
1 files changed, 46 insertions, 3 deletions
diff --git a/emacsconf-pad.el b/emacsconf-pad.el
index 5f53d7f..b9f007c 100644
--- a/emacsconf-pad.el
+++ b/emacsconf-pad.el
@@ -473,6 +473,39 @@ ${next-talk-list}
(emacsconf-pad-prepopulate-shift-hyperlists info))
emacsconf-shifts)))
+(defun emacsconf-pad-expand-intro (talk)
+ (cond
+ ((null (plist-get talk :speakers))
+ (format "Next up, we have \"%s\"." (plist-get talk :title)))
+ ((plist-get talk :intro-note)
+ (format "The next talk is called \"%s\". %s" (plist-get talk :title)
+ (plist-get talk :intro-note)))
+ (t
+ (let ((pronoun (pcase (plist-get talk :pronouns)
+ ((rx "she") "She")
+ ((rx "they") "They")
+ ((rx "she") "He")
+ (_ (or (plist-get talk :pronouns) "")))))
+ (format "The next talk is called \"%s\"\", by %s.%s" (plist-get talk :title)
+ (replace-regexp-in-string ", \\([^,]+\\)$"
+ ", and \\1"
+ (plist-get talk :speakers))
+ (pcase (plist-get talk :q-and-a)
+ ((or 'nil "") "")
+ ((rx "after") " We'll collect questions via Etherpad and IRC to send to the speaker, and we'll post the speaker's answers on the talk page afterwards.")
+ ((rx "IRC")
+ (format " %s will answer questions via IRC in the #%s channel."
+ pronoun
+ (plist-get talk :channel)))
+ ((rx "Mumble")
+ (format " %s will answer questions via Etherpad."
+ pronoun
+ ))
+ ((rx "live")
+ (format " %s will answer questions via BigBlueButton. You can join using the URL from the talk page or ask questions through Etherpad or IRC."
+ pronoun
+ ))))))))
+
;; Related: emacsconf-talk-hyperlist
(defun emacsconf-pad-talk-hyperlist (talk &optional do-insert)
(interactive (list (emacsconf-complete-talk-info) t))
@@ -484,6 +517,13 @@ ${next-talk-list}
(list
:year emacsconf-year
:track-id track-id
+ :intro-note
+ (emacsconf-pad-expand-intro talk)
+ (if (plist-get talk :intro-note)
+ (format "The next talk is called \"%s\". %s" (plist-get talk :title)
+ (plist-get talk :intro-note))
+ (format "The next talk is called \"%s\", by %s." (plist-get talk :title)
+ (plist-get talk :speakers)))
:media-base emacsconf-media-base-url
:mumble (concat emacsconf-id "-" track-id)
:next-talk-in-5 (if next-talk (format-time-string "%H:%M" (time-subtract (plist-get next-talk :start-time) (seconds-to-time 300)) emacsconf-timezone) "")
@@ -580,13 +620,16 @@ ${next-talk-list}
(emacsconf-pad-create-pad "intros")
(emacsconf-pad-set-html
"intros"
- (concat "<p>https://media.emacsconf.org/2022/backstage/</p><ul>"
+ (concat "<p>https://media.emacsconf.org/2022/backstage/</p>
+This page is for easy reference and recording. Please make sure any changes here are reflected in the INTRO_NOTE property of the talk.
+<ul>"
(mapconcat
(lambda (o)
(emacsconf-replace-plist-in-string
- (append (list :full-url (concat emacsconf-base-url (plist-get o :url))) o)
- "<li>${slug} - ${track}: ${title} (${speakers-with-pronouns}, Q&amp;A: ${q-and-a})<ul><li>${full-url}</li><li>Intro: ${intro-note}</li></ul></li>"))
+ (append (list :intro-note (emacsconf-pad-expand-intro o)) o)
+ "<li>${slug} - ${track}: ${title} (${speakers-with-pronouns}, Q&amp;A: ${q-and-a})<ul><li>${absolute-url}</li><li>Intro: ${intro-note}</li></ul></li>"))
(emacsconf-prepare-for-display (emacsconf-get-talk-info)))
"</ul>")))
+
(provide 'emacsconf-pad)
;;; emacsconf-pad.el ends here