(@ (rel "stylesheet")
(media "screen")
(type "text/css")
- (href "/css/screen.css?202005100000"))))
+ (href "/css/screen.css?202005160000"))))
(body ,@body
(footer (@ (class "text-center"))
(p "Copyright © 2016—2020 by the GNU Guix community."
(span (@ (class "filter"))
"submitter:me")
", "
+ (span (@ (class "filter"))
+ "severity:serious")
+ ", "
+ (span (@ (class "filter"))
+ "tag:easy")
+ ", "
(span (@ (class "filter"))
"date:2d..now")
", "
(span (@ (class "filter")) "author:rekado")
" for all messages where rekado has commented. "
"The filter matches both the email address and the name."))
+ (tr
+ (td (span (@ (class "filter")) "severity:<type>"))
+ (td "Issues that have been marked with the given severity, e.g. "
+ (span (@ (class "filter")) "severity:serious")
+ " for all issues that have been labelled as serious bugs. "
+ "The following severities are recognized: "
+ (strong "critical") ", "
+ (strong "grave") ", "
+ (strong "serious") ", "
+ (strong "important") ", "
+ (strong "normal") ", "
+ (strong "minor") ", and "
+ (strong "wishlist") "."))
+ (tr
+ (td (span (@ (class "filter")) "tag:<type>"))
+ (td "Issues that have been tagged with the given tag, e.g. "
+ (span (@ (class "filter")) "tag:easy")
+ " for all easy issues that are suitable for newcomers. "
+ "The following tags are recognized: "
+ (strong "patch") ", "
+ (strong "wontfix") ", "
+ (strong "moreinfo") ", "
+ (strong "unreproducible") ", "
+ (strong "fixed") ", "
+ (strong "notabug") ", "
+ (strong "pending") ", "
+ (strong "help") ", "
+ (strong "security") ", "
+ (strong "confirmed") ", and "
+ (strong "easy") "."))
(tr
(td (span (@ (class "filter")) "date:<start>..<end>"))
(td "Issues submitted within the provided range. "
(define* (issue-page bug #:optional flash-message)
"Render the conversation for the given BUG."
(define id (bug-num bug))
- (define messages (issue-messages id))
+ (define messages
+ (filter (lambda (msg)
+ ;; Ignore messages without body, and internal messages.
+ (and msg
+ (email-body msg)
+ (not (internal-message? msg))))
+ (issue-messages id)))
(define parties (sort (filter (compose (negate bot?) extract-email)
(participants (filter identity messages)))
(lambda (a b)
(span (@ (class "date"))
(a (@ (href ,(string-append "#" (number->string
message-number))))
- ,(date->string (date message))))))
+ ,(time->string (date message))))))
messages
(iota (length messages)))))
(define issue-details
(map extract-email parties)))))
,(string-upcase (string-take (sender-name message) 1)))
(span (@ (class "address")) ,(sender-name message))
- " wrote on "
+ " wrote "
(span (@ (class "date"))
(a (@ (href ,(string-append "#" (number->string
- message-number))))
- ,(date->string (date message)))))
+ message-number)))
+ (title ,(date->string (date message))))
+ ,(time->string (date message)))))
+ (div (@ (class "download-message"))
+ (a (@ (href ,(format #f "issue/~a/raw/~a"
+ id message-number)))
+ ,download-icon))
,@(if (string-suffix? previous-subject (subject message))
'()
`((div (@ (class "subject")) ,(subject message))))
(div (@ (class "row"))
(div
(@ (class "conversation col-12"))
- ,(let ((msgs (filter (lambda (msg)
- ;; Ignore messages
- ;; without body, and
- ;; internal messages.
- (and msg
- (email-body msg)
- (not (internal-message? msg))))
- messages)))
- (map (lambda (message-number msg previous-subject)
- (show-message message-number msg previous-subject))
- (iota (length msgs))
- msgs
- (cons (bug-subject* bug)
- (map subject msgs))))
+ ,(map show-message
+ (iota (length messages))
+ messages
+ (cons (bug-subject* bug)
+ (map subject messages)))
,comment-box)))))))
(define (list-of-bugs bugs)
s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7z\
m1 3H6v5h2V4zm0 6H6v2h2v-2z")))))
'())
+ ,@(or (and=> (bug-tags bug)
+ (lambda (tags)
+ (map (lambda (tag)
+ `(a (@ (href ,(string-append "search?query=tag:" tag)))
+ (span
+ (@ (class ,(string-append "badge badge-info mr-1 "
+ tag)))
+ ,tag)))
+ (string-split tags #\space))))
+ '())
,(if id
`(a (@ (href ,(string-append "/" id)))
,(bug-subject* bug))