[claw-cvs] r38 - in trunk: doc/chapters main/claw-core/src
achiumenti at common-lisp.net
achiumenti at common-lisp.net
Tue Apr 15 05:02:28 UTC 2008
Author: achiumenti
Date: Tue Apr 15 01:02:25 2008
New Revision: 38
Modified:
trunk/doc/chapters/writing-components.texinfo
trunk/main/claw-core/src/hunchentoot-overrides.lisp
Log:
user manual update
Modified: trunk/doc/chapters/writing-components.texinfo
==============================================================================
--- trunk/doc/chapters/writing-components.texinfo (original)
+++ trunk/doc/chapters/writing-components.texinfo Tue Apr 15 01:02:25 2008
@@ -63,7 +63,8 @@
So a call to the constructor function of our new fresh component might have this shape:
@cartouche
@lisp
-(site-template> :title "this is the page title" :class "foo"
+(site-template> :title "this is the page title"
+ :class "foo"
(p>
Hello world))
@end lisp
@@ -94,4 +95,45 @@
Ouch, this is nearly what we expected, but it seems there are two extraneous tags, do you see them?
They are the meta and the script tags.
-...continue...
+
+The meta tag is inserted by the @code{HTHEAD} component, that we have instantiated with @code{HEAD>}.
+The value of the content attribute, is taken from the @code{PAGE-CONTENT-TYPE} slot method, whose default is @code{HUNCHENTOOT:*DEFAULT-CONTENT-TYPE*}.
+
+The script tag is used when @value{claw} components want to inject their instance javascripts.
+So, for example, we could create a component that, when clicked, it shows a js alert containing the html
+component of another component:
+
+ at cartouche
+ at lisp
+(defcomponent inspector () ())
+
+(defmethod wcomponent-parameters ((inspector inspector))
+ (list :id :required :ref-id :required))
+
+(defmethod wcomponent-template ((inspector inspector))
+ (div> :static-id (htcomponent-client-id inspactor)
+ (htcomponent-body o)))
+
+(defmethod htcomponent-instance-initscript ((inspector inspector))
+ (format nil "document.getElementById('~a').onclick =
+ function () @{alert(document.getElementById('~a').innerHTML);@};"
+ (htcomponent-client-id inspector)
+ (wcomponent-parameter-value inspector :ref-id)))
+
+ at end lisp
+ at end cartouche
+
+Ok, now we can use our new inspector component inside our page:
+
+ at cartouche
+ at lisp
+(defmethod page-content ((some-page some-page))
+ (let ((hidden-component-id (generate-id "hidden"))
+ (rnd-value (prin1-to-string (random 10000)))
+ (site-template> :title "this is the page title"
+ :class "foo"
+ (p>
+ (div> :static-id hidden-component-id rnd-value)
+ (inspector> :id "inspector" "Show value"))))))
+ at end lisp
+ at end cartouche
Modified: trunk/main/claw-core/src/hunchentoot-overrides.lisp
==============================================================================
--- trunk/main/claw-core/src/hunchentoot-overrides.lisp (original)
+++ trunk/main/claw-core/src/hunchentoot-overrides.lisp Tue Apr 15 01:02:25 2008
@@ -171,10 +171,10 @@
realm)))
(when *reply*
(cond ((null session)
- (log-message :notice "No session for session identifier '~A' (User-Agent: '~A', IP: '~A', REALM: '~A')"
+ (log-message :notice "No session for session identifier '~A' \(User-Agent: '~A', IP: '~A', REALM: '~A')"
session-identifier user-agent remote-addr realm))
(t
- (log-message :warning "Fake session identifier '~A' (User-Agent: '~A', IP: '~A', REALM: '~A')"
+ (log-message :warning "Fake session identifier '~A' \(User-Agent: '~A', IP: '~A', REALM: '~A')"
session-identifier user-agent remote-addr realm))))
(when session
(remove-session session))
More information about the Claw-cvs
mailing list