[Initial frontend clinton@unknownlamer.org**20080114211930] { hunk ./src/web-frontend.lisp 3 +(defcomponent show-previewer (show-viewer) + ((preview-length :initform nil + :initarg :preview-length + :accessor preview-length))) + +(defmethod render-show ((viewer show-previewer) (show radio-show)) + (<:h1 (<:as-html (show-title show))) + (<:h2 (<:as-html (date-string (show-date show)))) + (let* ((transcript (transcript show)) + (length (if (and (preview-length viewer) + (> (length transcript) (preview-length viewer))) + (preview-length viewer) + (length transcript)))) + (<:p (<:as-html (subseq transcript 0 length)) + (if (> (length transcript) length) (<:as-html "..."))))) + +(defmethod render-controls ((viewer show-previewer)) + (let ((show (viewer-show viewer)) + (self (parent viewer))) ; evil, I know + (component-controls ("View" (call 'full-show-viewer :show show))) + (if (audio-data show) + (component-controls ("Play" (play-file self show)))))) + +(defcomponent sidebar-show-chooser (ranged-show-chooser) + () + (:default-initargs :viewer 'full-show-viewer)) + +(defmethod render-show ((self sidebar-show-chooser) (show radio-show)) + (let ((show (viewer-show self))) + (<:h1 (<:as-html (date-string-brief (show-date show)))) + (<:h1 + (