X-Git-Url: http://git.kpe.io/?p=hyperobject.git;a=blobdiff_plain;f=views.lisp;h=7cf370db7415e68af6eea30c471d9c2d20187275;hp=b9097a1f93f47b62402edf51c58f7cd96766aac9;hb=b3374bfdd283f1ec52ebecb63f2f597a8b161cb3;hpb=abbf89f03cec17db594badafbaee4f5e1400ba94 diff --git a/views.lisp b/views.lisp index b9097a1..7cf370d 100644 --- a/views.lisp +++ b/views.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: views.lisp,v 1.50 2003/06/06 21:59:29 kevin Exp $ +;;;; $Id: views.lisp,v 1.51 2003/06/12 11:10:38 kevin Exp $ ;;;; ;;;; This file is Copyright (c) 2000-2003 by Kevin M. Rosenberg ;;;; ************************************************************************* @@ -69,15 +69,16 @@ (link-slots :type list :initform nil :documentation "List of slot names that have hyperlinks" :accessor link-slots) - (link-page-name :type (or string null) :initform nil :initarg :link-page-name - :accessor link-page-name) + (link-page-printer :type (or string function symbol null) :initform nil + :initarg :link-page-printer + :accessor link-page-printer) (link-href-start :type (or string null) :initform nil :initarg :link-href-start :accessor link-href-start) (link-href-end :type (or string null) :initform nil :initarg :link-href-end :accessor link-href-end) (link-ampersand :type (or string null) :initform nil :initarg :link-ampersand :accessor link-ampersand)) - (:default-initargs :link-page-name "disp-func1") + (:default-initargs :link-page-printer "disp-func1") (:documentation "View class for a hyperobject")) @@ -515,18 +516,23 @@ (with-output-to-string (s) (write-string (link-href-start view) s) (write-char #\" s) - (write-string (make-url (link-page-name view)) s) - (write-string "?func=" s) - (write-simple fieldfunc s) - (write-string (link-ampersand view) s) - (write-string "key=" s) - (write-simple fieldvalue s) - (dolist (var refvars) - (write-string (link-ampersand view) s) - (write-simple (car var) s) - (write-char #\= s) - (write-simple (cdr var) s)) - (write-char #\" s))) + (let ((link-page (link-page-printer view))) + (typecase link-page + (string + (write-string (make-url link-page) s) + (write-string "?func=" s) + (write-simple fieldfunc s) + (write-string (link-ampersand view) s) + (write-string "key=" s) + (write-simple fieldvalue s) + (dolist (var refvars) + (write-string (link-ampersand view) s) + (write-simple (car var) s) + (write-char #\= s) + (write-simple (cdr var) s)) + (write-char #\" s))) + ((or symbol function) + (funcall link-page fieldfunc fieldvalue refvars s))))) (defun make-link-end (obj view fieldname) (declare (ignore obj fieldname))