Author: hhubner Date: 2006-03-10 09:53:13 -0500 (Fri, 10 Mar 2006) New Revision: 1910
Modified: branches/xml-class-rework/bknr/src/packages.lisp branches/xml-class-rework/bknr/src/sysclasses/user.lisp branches/xml-class-rework/bknr/src/web/authorizer.lisp branches/xml-class-rework/bknr/src/web/event-log.lisp branches/xml-class-rework/bknr/src/web/handlers.lisp branches/xml-class-rework/bknr/src/web/menu.lisp branches/xml-class-rework/bknr/src/web/user-handlers.lisp branches/xml-class-rework/bknr/src/web/web-macros.lisp branches/xml-class-rework/bknr/src/web/web-visitor.lisp Log: Numerous smaller changes to make running a bknr based site under a non-root path possible. This is not finished and I basically gave up the idea.
Modified: branches/xml-class-rework/bknr/src/packages.lisp =================================================================== --- branches/xml-class-rework/bknr/src/packages.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/packages.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -280,6 +280,7 @@ #:website-url #:website-session-info #:website-base-href + #:website-make-path #:host #:publish-site #:publish-handler
Modified: branches/xml-class-rework/bknr/src/sysclasses/user.lisp =================================================================== --- branches/xml-class-rework/bknr/src/sysclasses/user.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/sysclasses/user.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -155,9 +155,12 @@ (deftransaction set-user-crypted-password (user crypted-password) (setf (user-password user) crypted-password))
-(defun set-user-password (user password) +(defmethod set-user-password ((user user) password) (set-user-crypted-password user (crypt-md5 password (make-salt))))
+(defmethod set-user-password ((user string) password) + (set-user-crypted-password (find-user user) (crypt-md5 password (make-salt)))) + ;;; owned objects
(define-persistent-class owned-object (store-object)
Modified: branches/xml-class-rework/bknr/src/web/authorizer.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/authorizer.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/authorizer.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -90,5 +90,5 @@
(format t "; request NOT authorized~%") ;; unauthorized, come up with 401 response to the web browser - (redirect "/login" req) + (redirect (website-make-path *website* "login") req) :deny)
Modified: branches/xml-class-rework/bknr/src/web/event-log.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/event-log.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/event-log.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -50,7 +50,7 @@ `(html ((:td :class "lognavi") ((:input :type "checkbox" :name "show-class" :value ,class-name ,@(if checked '(:checked "checked")))) - (cmslink (format nil "/event-log?show-only-class=~a" ,class-name) + (cmslink (format nil "event-log?show-only-class=~a" ,class-name) (:princ-safe (regex-replace ,class-name "-event$" ""))))))
(defun serve-event-log-request (req) @@ -107,7 +107,7 @@ "count: " (html-text-input print-count 3) " hours: " (html-text-input print-hours 3) " " ((:input :type "submit" :name "filter" :value "filter")) - " " (cmslink ("/event-class-documentation" :target "documentation") " documentation "))) + " " (cmslink ("event-class-documentation" :target "documentation") " documentation "))) #+(or) (:tr ((:td :class "lognavi") "message: " ((:input :type "text" :size "80" :name "message"))))) ;; Query the database.
Modified: branches/xml-class-rework/bknr/src/web/handlers.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/handlers.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/handlers.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -85,6 +85,9 @@ (dolist (handler (website-handlers website)) (format t "~A => ~A~%" (uri-path (page-handler-url handler)) handler)))
+(defmethod website-make-path ((website website) relative-path) + (format nil "~A~A" (website-base-href website) relative-path)) + (defgeneric publish-handler (website handler)) (defgeneric publish-site (website))
@@ -222,7 +225,7 @@ (progn (setf (session-variable :login-redirect-uri) (redirect-uri (request-uri req))) - (redirect "/login" req)) + (redirect (website-make-path *website* "login") req)) (handler-bind ((error #'(lambda (e) (funcall (website-show-error-page-function *website*) e) (do-error-log-request req e)
Modified: branches/xml-class-rework/bknr/src/web/menu.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/menu.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/menu.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -39,7 +39,7 @@ (defun in-subtree (url subtree-url) (search subtree-url url))
-(define-bknr-tag site-menu (&key config menu-name container-class active-class inactive-class) +(define-bknr-tag site-menu (&key config menu-name title container-class active-class inactive-class) (declare (ignore menu-name)) (let* ((menu (bknr.impex:parse-xml-file #+cmu (ext:unix-namestring (merge-pathnames config *default-pathname-defaults*)) @@ -47,6 +47,8 @@ *menu-def-classes*))) (html ((:div :class container-class) + (when title + (html ((:div :class "title") (:princ-safe title)))) (dolist (item (menu-items menu)) (let ((item-is-active (in-subtree (puri:uri-path (net.aserve:request-uri *req*)) (item-url item)))) (with-slots (url title active-image inactive-image) item
Modified: branches/xml-class-rework/bknr/src/web/user-handlers.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/user-handlers.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/user-handlers.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -20,73 +20,20 @@ (:princ (format nil "edit ~a" (user-login user))))))
;;; handlers -(defparameter *login-default-url* "/") - -(defclass login-handler (page-handler) - ((name :initform :login))) - -(defclass logout-handler (login-handler) - ((name :initform :logout))) - -(defmethod handle ((page-handler login-handler) req) - (with-query-params (req __username) - (let (login-failed-message) - (when (and __username - (equal __username (user-login (bknr-request-user req)))) - ;; request has successfully been authorized, redirect to asked uri - (let ((url (or (session-variable :login-redirect-uri) - *login-default-url*))) - (redirect url req) - (return-from handle))) - (when __username - (setf login-failed-message "invalid username or invalid password")) - (with-bknr-http-response (req) - (with-http-body (req *ent*) - (html - (:html - (:head - (loop for stylesheet in (bknr.web::website-style-sheet-urls *website*) - do (html ((:link :rel "stylesheet" :type "text/css" :href stylesheet)))) - ((:script :language "JavaScript") "function setFocus() { document.forms[0].elements[0].focus(); }") - (:title "please login to " (:princ-safe (website-name *website*)))) - ((:body :class "cms" :onload "setFocus();") - ((:div :align "center") - (bknr.images:banner :keyword :bknr) - ((:form :method "post") - (let* ((user-images (loop for user in (all-users) - for image = (random-elt (bknr.images:user-images user)) - when image - collect (list user image))) - (rows (group-by user-images 4))) - (when user-images - (html ((:table :class "login-images") - (dolist (row rows) - (html - (:tr (loop for (user image) in row - do (html - (:td - ((:a :href "#" - :onClick (format nil"javascript:document.forms[0].elements['__username'].value='~a'" (user-login user))) - ((:img :src (format nil "/image/~a/thumbnail,,120,120" - (store-object-id image))))))))))))))) - (when login-failed-message - (html (:p (:princ-safe login-failed-message)))) - (:table - (:tr ((:td :colspan "2") "please log in to " (:princ-safe (website-name *website*)))) - (:tr (:td "username") (:td ((:input :type "text" :name "__username" :size "20")))) - (:tr (:td "password") (:td ((:input :type "password" :name "__password" :size "20"))))) - ((:input :type "submit" :name "login" :value " login ")) - ((:input :type "button" :name "info" :value " info " :onclick "self.location.href='/info'")) - ((:input :type "button" :name "message" :value "message" :onclick "self.location.href='/message'"))))))))))))
-(defmethod handle ((page-handler logout-handler) req) +(defclass logout-handler (page-handler) + ()) + +(defmethod handle ((handler logout-handler) req) (bknr.web::drop-session (bknr-request-session req)) - (with-query-params (req url) + (format t "url: ~A referer: ~A~%" (query-param req "url") (header-slot-value req :referer)) + (let ((url (or (query-param req "url") + (header-slot-value req :referer)))) (if url - (redirect url req) - (progn (with-bknr-page (req :title "logged out") - (html (:h2 "you are logged out"))) - (change-class req 'http-request))))) + (redirect url req) + (progn (with-bknr-page (req :title "logged out") + (html (:h2 "you are logged out"))) + (change-class req 'http-request)))))
(defclass user-handler (edit-object-handler) ((require-user-flag :initform :admin))) @@ -179,5 +126,4 @@
(define-bknr-webserver-module user ("/user" user-handler) - ("/login" login-handler) ("/logout" logout-handler)) \ No newline at end of file
Modified: branches/xml-class-rework/bknr/src/web/web-macros.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/web-macros.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/web-macros.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -152,5 +152,5 @@ (warn ,@warning)))
(defmacro cmslink (url &body body) - `(html ((:a :class "cmslink" :href ,url) + `(html ((:a :class "cmslink" :href (website-make-path *website* ,url)) ,@body)))
Modified: branches/xml-class-rework/bknr/src/web/web-visitor.lisp =================================================================== --- branches/xml-class-rework/bknr/src/web/web-visitor.lisp 2006-03-08 06:51:00 UTC (rev 1909) +++ branches/xml-class-rework/bknr/src/web/web-visitor.lisp 2006-03-10 14:53:13 UTC (rev 1910) @@ -35,7 +35,7 @@ (html-link (web-visitor-event-user event))) " from " (when (web-visitor-event-host event) - (cmslink (format nil "/host?host=~a" (host-ip-address (web-visitor-event-host event))) + (cmslink (format nil "host?host=~a" (host-ip-address (web-visitor-event-host event))) (:princ-safe (host-name (web-visitor-event-host event)))))))
(defmethod as-xml ((event web-visitor-event))