static-pages plugin reports correctly that required fields must be filled in by the user

This commit is contained in:
Johan Sjolen 2017-05-21 16:24:44 +02:00
parent 7d87d483a0
commit 33db0356b1
3 changed files with 16 additions and 2 deletions

View file

@ -21,6 +21,7 @@
:serial t
:components ((:file "packages")
(:file "util")
(:file "errors")
(:file "config")
(:file "themes")
(:file "documents")

View file

@ -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
View 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)))))