[bknr-cvs] r2027 - in branches/xml-class-rework/bknr/src: . web

bknr at bknr.net bknr at bknr.net
Sun Oct 22 16:45:34 UTC 2006


Author: hhubner
Date: 2006-10-22 12:45:33 -0400 (Sun, 22 Oct 2006)
New Revision: 2027

Modified:
   branches/xml-class-rework/bknr/src/bknr.asd
   branches/xml-class-rework/bknr/src/web/tags.lisp
   branches/xml-class-rework/bknr/src/web/web-utils.lisp
Log:
Convert incoming paramter values to utf-8.
Do not create base href tag in generated html


Modified: branches/xml-class-rework/bknr/src/bknr.asd
===================================================================
--- branches/xml-class-rework/bknr/src/bknr.asd	2006-10-22 16:43:35 UTC (rev 2026)
+++ branches/xml-class-rework/bknr/src/bknr.asd	2006-10-22 16:45:33 UTC (rev 2027)
@@ -35,6 +35,7 @@
 		 :bknr-datastore
 		 :bknr-data-impex
 		 :kmrcl
+		 :iconv
 		 #+(not allegro)
 		 :acl-compat)
 

Modified: branches/xml-class-rework/bknr/src/web/tags.lisp
===================================================================
--- branches/xml-class-rework/bknr/src/web/tags.lisp	2006-10-22 16:43:35 UTC (rev 2026)
+++ branches/xml-class-rework/bknr/src/web/tags.lisp	2006-10-22 16:45:33 UTC (rev 2027)
@@ -183,7 +183,7 @@
 <link rel=\"stylesheet\" href=\"/static/css/dynastyle_01.css\" ....
 "
   (html
-   ((:base :href (website-base-href *website*)))
+   #+(or) ((:base :href (website-base-href *website*)))
    (loop for stylesheet in (website-style-sheet-urls *website*)
 	 do (html ((:link :rel "stylesheet" :type "text/css" :href stylesheet))))
    (loop for javascript in (website-javascript-urls *website*)

Modified: branches/xml-class-rework/bknr/src/web/web-utils.lisp
===================================================================
--- branches/xml-class-rework/bknr/src/web/web-utils.lisp	2006-10-22 16:43:35 UTC (rev 2026)
+++ branches/xml-class-rework/bknr/src/web/web-utils.lisp	2006-10-22 16:45:33 UTC (rev 2027)
@@ -60,12 +60,12 @@
 	    (get-all-multipart-data request :limit *upload-file-size-limit*)))))
       (when file-size-limit-reached
 	(error "upload file size limit exceeded"))
-      (setf (getf (request-reply-plist request) 'bknr-parsed-parameters) parameters)
+      (setf (getf (request-reply-plist request) 'bknr-parsed-body-parameters) parameters)
       (setf (getf (request-reply-plist request) 'uploaded-files) uploaded-files))))
 
 (defun get-urlencoded-form-data (request)
   (loop for name-value in (form-urlencoded-to-query (get-request-body request))
-	do (push name-value (getf (request-reply-plist request) 'bknr-parsed-parameters))))
+	do (push name-value (getf (request-reply-plist request) 'bknr-parsed-body-parameters))))
 
 (defun parse-request-body (request &key uploads)
   (let ((content-type (header-slot-value request :content-type)))
@@ -89,7 +89,7 @@
 
 (defmethod get-parameters-from-body ((request bknr-request))
   (unless (getf (request-reply-plist request) 'body-parsed)
-    (setf (getf (request-reply-plist request) 'bknr-parsed-parameters) nil)
+    (setf (getf (request-reply-plist request) 'bknr-parsed-body-parameters) nil)
     (parse-request-body request :uploads t)
     (setf (getf (request-reply-plist request) 'body-parsed) t)))
 
@@ -112,10 +112,17 @@
 body is present in the request, any uploaded files are saved in a temporary file and noted in the
 request's plist.  Uploaded files will be automatically deleted by the with-bknr-http-response
 macro after the request body has been executed."
-  (get-parameters-from-body request)
-  (remove "" (append (form-urlencoded-to-query (uri-query (request-uri request)))
-		     (getf (request-reply-plist request) 'bknr-parsed-parameters))
-	  :key #'cdr :test #'string-equal))
+  (unless (getf (request-reply-plist request) 'bknr-parsed-parameters)
+    (let ((request-charset (or (register-groups-bind (charset) (#?r".*charset=\"?([^\"; ]+).*" (header-slot-value request :content-type)) charset)
+			       "utf-8")))
+      (get-parameters-from-body request)
+      (setf (getf (request-reply-plist request) 'bknr-parsed-parameters)
+	    (mapcar (lambda (param) (cons (car param)
+					  (iconv:iconv request-charset "utf-8" (cdr param))))
+		    (remove "" (append (form-urlencoded-to-query (uri-query (request-uri request)))
+				       (getf (request-reply-plist request) 'bknr-parsed-body-parameters))
+			    :key #'cdr :test #'string-equal)))))
+  (getf (request-reply-plist request) 'bknr-parsed-parameters))
 
 (defun query-param (request param-name)
   (let ((value (cdr (assoc param-name (all-request-params request) :test #'string-equal))))




More information about the Bknr-cvs mailing list