REBOL [ Title: "REBOL/Services Guestbook Demo" Author: "Gabriele Santilli" Version: 1.1.1 ] url: http://www.rebol.net/cgi-bin/services.r msg-lay: [] lay: layout [ space 0x5 backeffect [gradient 0x1 water mint] vh1 "Example Guestbook" across pan: panel 520x300 msg-lay edge [size: 1x1] scl: scroller 16x300 [ pan/pane/offset/y: negate value * (pan/pane/size/y - pan/size/y) show pan ] return vh2 "Sign the guestbook:" return label 100 "Your name:" name: field return l2: label 100 "Your message:" msg: area wrap return at l2/offset + 5x70 guide btn-enter 80 #"^S" "Send" [send-msg] return btn 80 "Refresh" [refresh] return btn-cancel 80 "Close" [quit] return ] refresh: does [ append clear msg-lay [backcolor snow across space 0x1] messages: fourth do-service port [guestbook/list-messages 20] foreach msg next messages [ append msg-lay compose [ text bold 120 right (msg/2) text as-is 340 (msg/3) text as-is font-size 9 center 60 gray (rejoin [msg/1/date newline msg/1/time]) return box 520x1 gray return ] ] pan/pane: layout/tight msg-lay scl/data: 1.0 show scl do-face scl 1.0 ] send-msg: does [ if all [ not empty? trim/head/tail name/text not empty? trim/head/tail msg/text ][ do-service port compose [guestbook/sign (name/text) (msg/text)] refresh ] clear-face msg ] view/new center-face lay pan/text: "Downloading REBOL/Services client..." show pan do http://www.rebol.net/rebservices/client.r pan/text: "Opening service..." show pan port: open-service url pan/text: none refresh do-events