On Monday, April 2, 2012 6:20:42 PM UTC+4, Scott L. Burson wrote:
>
> Yes, I had trouble with this when I was first learning Weblocks also.
>
> WITH-HTML doesn't return a string; it writes HTML to the output stream.  
> So calling it to supply the :CONTENT argument doesn't work.  Similarly for 
> RENDER-LINK.
>
> Thanks. I'll try that. 

> But you can use functions as widgets; the function will be invoked during 
> rendering, which is the right time to render HTML and links.  So, for 
> example:
>
>   (defun make-test-page ()
>     (make-instance 'widget :children
>       (list ... (lambda () (render-link ...)) ... )))
>
> Oh, and you don't need to use DEFUN/CC unless you're doing something 
> really complicated.  I've written quite a substantial app without ever 
> using it.

 
>
-- Scott
>

I understand that this piece of code looks inappropriate but I just want to 
try all the power of framework in simple situations firstly.

On Mon, Apr 2, 2012 at 2:10 AM, Rayslava <[email protected]> wrote:
>
>> Hello.
>> I'm investigating weblocks now and just figured out such a thing:
>>
>> (defun make-about-page ()
>>  (make-instance 'widget :children
>>                 (list
>>                       (make-instance 'string-widget :content
>>                                    "About page"))))
>>
>> (defun make-test-page ()
>>  (make-instance 'widget :children
>>                 (list
>>                   (make-instance 'string-widget :content
>>                                  "test")
>>                   (make-instance 'string-widget :content
>>                        (with-html (str (render-link (lambda (&rest
>> args)
>>                                (declare (ignore args))
>>                                (do-page #'make-test-page))
>>                              "test page"
>>                              :ajaxp nil))))
>>                   (make-instance 'string-widget :content
>>                                  "test2"))))
>>
>> (defun/cc make-other-page (k)
>>                   (make-instance 'string-widget :content
>>                    (with-html (:p "Other Page")
>>                        (:p (render-link (lambda (&rest args)
>>                                (declare (ignorable args))
>>                                (answer k))
>>                              "Go Back")))))
>>
>> (defun make-main-page ()
>>  (make-instance 'widget :children
>>                 (list
>>                    (make-navigation "Main Menu"
>>                        (list "About" (make-about-page) "about")
>>                        (list "Companies" (make-test-page) "test")))))
>>
>> (defun init-user-session (root)
>>  (with-flow root
>>            (yield (make-main-page))))
>>
>> And "test page" link just doesn't appear.
>> Running results into
>>
>> <div class='widget string-widget' id='dom2'>
>> <p>test</p>
>> </div>
>> <div class='widget string-widget' id='dom3'>
>> <p></p>
>> </div>
>> <div class='widget string-widget' id='dom4'>
>> <p>test2</p>
>> </div>
>>
>> The only strange  thing is  the output when I load the file:
>>
>> * (load "/home/ray/projects/localsite/src/layout.lisp")
>> <a href='/about?action=4027%3A9A51E3C66D4DB032E3C3ABE5145C46AD'>test
>> page</a>
>> T
>> * (reset-sessions)
>> *
>>
>> That looks like render-page has wrong output stream. Could I do
>> something with it?
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "weblocks" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/weblocks?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"weblocks" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/weblocks/-/Yx7iQn8rbgYJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/weblocks?hl=en.

Reply via email to