diff options
-rw-r--r-- | module/calp/html/vcomponent.scm | 2 | ||||
-rw-r--r-- | module/calp/html/view/calendar.scm | 56 | ||||
-rw-r--r-- | module/vcomponent/xcal/output.scm | 5 | ||||
-rw-r--r-- | static/vevent.ts | 13 |
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': |