static-pages plugin reports correctly that required fields must be filled in by the user
This commit is contained in:
parent
7d87d483a0
commit
33db0356b1
3 changed files with 16 additions and 2 deletions
|
@ -21,6 +21,7 @@
|
|||
:serial t
|
||||
:components ((:file "packages")
|
||||
(:file "util")
|
||||
(:file "errors")
|
||||
(:file "config")
|
||||
(:file "themes")
|
||||
(:file "documents")
|
||||
|
|
|
@ -18,8 +18,13 @@
|
|||
;; default format is markdown (for backward compatibility)
|
||||
(:default-initargs :format :md))
|
||||
|
||||
(defmethod initialize-instance :after ((object page) &key)
|
||||
(with-slots (coleslaw::url coleslaw::text format) object
|
||||
(defmethod initialize-instance :after ((object page) &key url title)
|
||||
(cond
|
||||
((null url)
|
||||
(error 'coleslaw::required-field-missing :message (format nil "URL field is missing from static page ~A" (coleslaw::content-file object))))
|
||||
((null title)
|
||||
(error 'coleslaw::required-field-missing :message (format nil "Title field is missing from static page ~A" (coleslaw::content-file object)))))
|
||||
(with-slots (coleslaw::url coleslaw::text format title) object
|
||||
(setf coleslaw::url (make-pathname :defaults coleslaw::url)
|
||||
format (alexandria:make-keyword (string-upcase format))
|
||||
coleslaw::text (render-text coleslaw::text format))))
|
||||
|
|
8
src/errors.lisp
Normal file
8
src/errors.lisp
Normal file
|
@ -0,0 +1,8 @@
|
|||
(in-package :coleslaw)
|
||||
|
||||
(define-condition required-field-missing (error)
|
||||
((message :accessor required-field-missing-message :initarg :message))
|
||||
(:report
|
||||
(lambda (c s)
|
||||
(format s (required-field-missing-message
|
||||
c)))))
|
Loading…
Add table
Reference in a new issue