aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/calp/html/vcomponent.scm2
-rw-r--r--module/calp/html/view/calendar.scm56
-rw-r--r--module/vcomponent/xcal/output.scm5
-rw-r--r--static/vevent.ts13
4 files changed, 39 insertions, 37 deletions
diff --git a/module/calp/html/vcomponent.scm b/module/calp/html/vcomponent.scm
index 1b97e9b8..09d0038b 100644
--- a/module/calp/html/vcomponent.scm
+++ b/module/calp/html/vcomponent.scm
@@ -208,7 +208,7 @@
`(div (@ (class " eventtext edit-tab "))
(form (@ (class "edit-form"))
(select (@ (class "calendar-selection"))
- (option "- Choose a Calendar -")
+ (option "- Choose a Calendar -")
,@(let ((dflt (get-config 'default-calendar)))
(map (lambda (calendar)
(define name (prop calendar 'NAME))
diff --git a/module/calp/html/view/calendar.scm b/module/calp/html/view/calendar.scm
index c328f8b3..f9c60279 100644
--- a/module/calp/html/view/calendar.scm
+++ b/module/calp/html/view/calendar.scm
@@ -294,34 +294,34 @@
;; This would idealy be a <template> element, but there is some
;; form of special case with those in xhtml, but I can't find
;; the documentation for it.
- ,@(let* ((cal (vcalendar
- name: "Generated"
- children: (list (vevent
- ;; The event template SHOULD lack
- ;; a UID, to stop potential problems
- ;; with conflicts when multiple it's
- ;; cloned mulitple times.
- dtstart: (datetime)
- dtend: (datetime)
- summary: ""
- ;; force a description field,
- ;; but don't put anything in
- ;; it.
- description: ""))))
- (event (car (children cal))))
- `(
- ;; (div (@ (class "template event-container") (id "event-template")
- ;; ;; Only needed to create a duration. So actual dates
- ;; ;; dosen't matter
- ;; (data-start "2020-01-01")
- ;; (data-end "2020-01-02"))
- ;; ,(caddar ; strip <a> tag
- ;; (make-block event `((class " generated ")))))
- ;; TODO merge this into the event-set, add attribute
- ;; for non-displaying elements.
- ;; (div (@ (class "template") (id "popup-template"))
- ;; ,(popup event (string-append "popup" (html-id event))))
- ))
+ ;; ,@(let* ((cal (vcalendar
+ ;; name: "Generated"
+ ;; children: (list (vevent
+ ;; ;; The event template SHOULD lack
+ ;; ;; a UID, to stop potential problems
+ ;; ;; with conflicts when multiple it's
+ ;; ;; cloned mulitple times.
+ ;; dtstart: (datetime)
+ ;; dtend: (datetime)
+ ;; summary: ""
+ ;; ;; force a description field,
+ ;; ;; but don't put anything in
+ ;; ;; it.
+ ;; description: ""))))
+ ;; (event (car (children cal))))
+ ;; `(
+ ;; ;; (div (@ (class "template event-container") (id "event-template")
+ ;; ;; ;; Only needed to create a duration. So actual dates
+ ;; ;; ;; dosen't matter
+ ;; ;; (data-start "2020-01-01")
+ ;; ;; (data-end "2020-01-02"))
+ ;; ;; ,(caddar ; strip <a> tag
+ ;; ;; (make-block event `((class " generated ")))))
+ ;; ;; TODO merge this into the event-set, add attribute
+ ;; ;; for non-displaying elements.
+ ;; ;; (div (@ (class "template") (id "popup-template"))
+ ;; ;; ,(popup event (string-append "popup" (html-id event))))
+ ;; ))
;; Auto-complets when adding new fields to a component
;; Any string is however still valid.
diff --git a/module/vcomponent/xcal/output.scm b/module/vcomponent/xcal/output.scm
index 692b3ec2..095c61c2 100644
--- a/module/vcomponent/xcal/output.scm
+++ b/module/vcomponent/xcal/output.scm
@@ -121,7 +121,10 @@
,(vline->value-tag vline)))])
(properties component))))
(unless (null? props)
- `(properties ,@props)))
+ `(properties
+ ;; NOTE
+ (x-hnh-calendar-name (text ,(prop (parent component) 'NAME)))
+ ,@props)))
,(unless (null? (children component))
`(components ,@(map vcomponent->sxcal (children component)))))))
diff --git a/static/vevent.ts b/static/vevent.ts
index 72ab28b1..9d6cec88 100644
--- a/static/vevent.ts
+++ b/static/vevent.ts
@@ -196,19 +196,18 @@ function xml_to_vcal(xml: Element): VEvent {
let property_map = new Map()
if (properties) {
- for (var i = 0; i < properties.childElementCount; i++) {
+ property_loop: for (var i = 0; i < properties.childElementCount; i++) {
let tag = properties.childNodes[i];
if (!(tag instanceof Element)) continue;
let parameters = {};
let value: VEventValue | VEventValue[] = [];
- for (var j = 0; j < tag.childElementCount; j++) {
+ value_loop: for (var j = 0; j < tag.childElementCount; j++) {
let child = tag.childNodes[j];
if (!(child instanceof Element)) continue;
- switch (tag.tagName) {
- case 'parameters':
- parameters = /* TODO handle parameters */ {};
- break;
-
+ if (child.tagName == 'parameters') {
+ parameters = /* TODO handle parameters */ {};
+ continue value_loop;
+ } else switch (tag.tagName) {
/* These can contain multiple value tags, per
RFC6321 3.4.1.1. */
case 'categories':