;;; -*- mode: Lisp; Syntax: Common-Lisp; -*- ;;; ;;; Copyright (c) 2009 by the authors. ;;; ;;; See LICENCE for details. (in-package :hu.dwim.wiki) ;;;;;; ;;; t/alternator/inspector (def layered-method make-alternatives ((component t/alternator/inspector) (class entity) (prototype wiki-page) (value wiki-page)) (list* (make-instance 'wiki-page/text/inspector :component-value value) (call-next-layered-method))) ;;;;;; ;;; wiki-page/text/inspector (def (component e) wiki-page/text/inspector (t/inspector t/detail/presentation content/mixin title/mixin) ((last-modified-by :type component) (last-modified-at :type component))) (def refresh-component wiki-page/text/inspector (bind (((:slots hu.dwim.presentation::content last-modified-by last-modified-at component-value) -self-)) (setf hu.dwim.presentation::content (make-instance 'place/value/inspector :component-value (make-object-slot-place component-value 'hu.dwim.wiki::content)) last-modified-by (make-instance 'place/value/inspector :component-value (make-object-slot-place (hu.dwim.model:last-modified-in-of component-value) 'hu.dwim.meta-model::authenticated-subject)) last-modified-at (make-instance 'place/value/inspector :component-value (make-object-slot-place component-value 'hu.dwim.model::last-modified-at))))) (def render-xhtml wiki-page/text/inspector (bind (((:read-only-slots last-modified-by last-modified-at) -self-)) (with-render-style/component (-self-)
))) (def layered-method make-title ((self wiki-page/text/inspector) (class entity) (prototype wiki-page) (value wiki-page)) (make-instance 'place/value/inspector :component-value (make-object-slot-place value 'hu.dwim.wiki::title))) ;;;;;; ;;; t/alternator/inspector (def layered-method make-alternatives ((component t/alternator/inspector) (class entity) (prototype wiki-menu-item) (value wiki-menu-item)) (append (call-next-layered-method) (list (make-instance 'wiki-menu-item/menu-item/inspector :component-value value)))) ;;;;;; ;;; wiki-menu-item/menu-item/inspector (def (component e) wiki-menu-item/menu-item/inspector (t/detail/inspector menu-item/widget) ()) (def refresh-component wiki-menu-item/menu-item/inspector (bind (((:slots component-value hu.dwim.presentation::content hu.dwim.presentation::menu-items) -self-) (page (referred-page-of component-value)) (content (content-of component-value))) (setf hu.dwim.presentation::content (if page (replace-target-place/widget () content (make-value-inspector page)) content) hu.dwim.presentation::menu-items (mapcar (lambda (menu-item) (make-instance 'wiki-menu-item/menu-item/inspector :component-value menu-item)) (child-menu-items-of component-value)))))