[Move markdown editor and weblog admin code into their own files clinton@unknownlamer.org**20090427180413 Ignore-this: 5d30a1fc51de9f3b1344535b95d94e3a ] hunk ./beesknees.asd 21 + (:file "markdown-editor" :depends-on ("packages" "web-common")) hunk ./beesknees.asd 23 - (:file "web-admin" :depends-on ("packages" "web-common" - "admin-common" "image-manager")) + (:file "admin-weblog" :depends-on ("packages" "admin-common" + "markdown-editor")) + (:file "web-admin" :depends-on ("packages" "admin-common" + "admin-weblog" "markdown-editor" + "image-manager")) addfile ./src/admin-weblog.lisp hunk ./src/admin-weblog.lisp 1 +(in-package :beesknees.web) + +(define-html-form weblog-entry-editor (markdown-content-editor) + ((title (string-field :input-size 80 + :validators (make-validators 'not-empty-validator)))) + ((entry :initarg :entry :accessor edited-entry :initform nil)) + (:default-initargs :field-order '(title content))) + +(defmethod initialize-instance :after ((editor weblog-entry-editor) &rest keys) + (declare (ignore keys)) + (when-bind entry (edited-entry editor) + (with-slots (title content) + editor + (setf (value title) (beesknees.weblog:entry-title entry) + (value content) (beesknees.weblog:entry-body entry))))) + +(defaction process-form ((editor weblog-entry-editor)) + (elephant:ensure-transaction () + (let ((entry (or (edited-entry editor) + (make-instance 'beesknees.weblog:weblog-entry + :posted (get-universal-time) + :author (session-user))))) + (with-slots (title content) + editor + (setf (beesknees.weblog:entry-title entry) (value title) + (beesknees.weblog:entry-body entry) (value content))) + (answer entry)))) + +(defcomponent weblog-entry-list (bee-admin-list) + () + (:default-initargs + :index-class 'beesknees.weblog:weblog-entry + :index-slot 'beesknees.weblog::posted + :page-size 10 + :reverse t)) + +(defmethod golgonooza:render-query-view-result ((entry weblog-entry) + (list bee-admin-list)) + (<:progn (<:format "~A by ~A: " + (metatilities:date-and-time-string + (entry-posted entry)) + (beesknees.auth:username (entry-author entry))) + (