Artifact 39daa85c0c65b294a23b22a75ae57b2e618ae02c0033f0d87a6f495e21b87abc:
Wiki page
[
Content] by
hypnotoad
2018-05-03 23:06:14.
0000: 44 20 32 30 31 38 2d 30 35 2d 30 33 54 32 33 3a D 2018-05-03T23:
0010: 30 36 3a 31 34 2e 32 36 37 0a 4c 20 43 6f 6e 74 06:14.267.L Cont
0020: 65 6e 74 0a 50 20 30 64 31 39 37 37 30 30 64 37 ent.P 0d197700d7
0030: 37 33 37 35 62 36 37 36 61 35 63 62 32 62 32 65 7375b676a5cb2b2e
0040: 61 37 30 64 31 62 61 35 63 65 39 32 31 66 30 62 a70d1ba5ce921f0b
0050: 66 30 38 63 36 37 63 37 37 38 66 38 66 66 35 30 f08c67c778f8ff50
0060: 64 62 35 62 63 30 0a 55 20 68 79 70 6e 6f 74 6f db5bc0.U hypnoto
0070: 61 64 0a 57 20 32 35 39 35 0a 3c 68 31 3e 43 6f ad.W 2595.<h1>Co
0080: 6e 74 65 6e 74 3c 2f 68 31 3e 0d 0a 50 72 6f 64 ntent</h1>..Prod
0090: 75 63 69 6e 67 20 63 6f 6e 74 65 6e 74 20 66 6f ucing content fo
00a0: 72 20 74 6f 61 64 68 74 74 70 64 20 63 61 6e 20 r toadhttpd can
00b0: 62 65 20 61 63 63 6f 6d 70 6c 69 73 68 65 64 20 be accomplished
00c0: 69 6e 20 61 20 66 65 77 20 77 61 79 73 2e 0d 0a in a few ways...
00d0: 3c 68 33 3e 54 65 6d 70 6c 61 74 65 20 46 69 6c <h3>Template Fil
00e0: 65 73 3c 2f 68 33 3e 0d 0a 49 66 20 79 6f 75 20 es</h3>..If you
00f0: 61 72 65 20 67 65 6e 65 72 61 74 69 6e 67 20 61 are generating a
0100: 20 73 69 6d 70 6c 65 20 73 79 73 74 65 6d 20 74 simple system t
0110: 68 61 74 20 6a 75 73 74 20 6e 65 65 64 73 20 61 hat just needs a
0120: 20 66 65 77 20 73 65 72 76 65 72 20 73 69 64 65 few server side
0130: 20 74 77 65 61 6b 73 2c 20 74 6f 61 64 68 74 74 tweaks, toadhtt
0140: 70 64 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 pd supports the
0150: 74 63 6c 68 74 74 70 64 20 73 74 79 6c 65 20 74 tclhttpd style t
0160: 65 6d 70 6c 61 74 65 20 66 69 6c 65 73 2e 0d 0a emplate files...
0170: 3c 70 3e 0d 0a 49 6e 73 74 65 61 64 20 6f 66 20 <p>..Instead of
0180: 6e 61 6d 69 6e 67 20 61 20 66 69 6c 65 20 2e 68 naming a file .h
0190: 74 6d 6c 2c 20 6e 61 6d 65 20 69 74 20 2e 74 6d tml, name it .tm
01a0: 6c 2e 20 42 65 66 6f 72 65 20 64 65 6c 69 76 65 l. Before delive
01b0: 72 79 2c 20 74 68 65 20 66 69 6c 65 20 77 69 6c ry, the file wil
01c0: 6c 20 62 65 20 72 65 61 64 20 69 6e 74 6f 20 74 l be read into t
01d0: 68 65 20 73 65 72 76 65 72 2c 20 61 6e 64 20 54 he server, and T
01e0: 63 6c 20 77 69 6c 6c 20 75 73 65 20 3c 62 3e 73 cl will use <b>s
01f0: 75 62 73 74 3c 2f 62 3e 20 74 6f 20 73 75 62 73 ubst</b> to subs
0200: 74 69 74 75 74 65 20 61 6e 79 20 63 6f 6d 6d 61 titute any comma
0210: 6e 64 20 63 61 6c 6c 73 20 61 6e 64 20 70 65 72 nd calls and per
0220: 66 6f 72 6d 20 76 61 72 69 61 62 6c 65 20 73 75 form variable su
0230: 62 73 74 69 74 75 74 69 6f 6e 73 2e 20 54 68 65 bstitutions. The
0240: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 61 74 20 result of that
0250: 69 73 20 73 65 6e 74 20 61 73 20 74 68 65 20 66 is sent as the f
0260: 69 6e 61 6c 20 6f 75 74 70 75 74 2e 20 0d 0a 3c inal output. ..<
0270: 70 3e 0d 0a 55 6e 6c 69 6b 65 20 74 63 6c 68 74 p>..Unlike tclht
0280: 74 70 64 20 28 77 68 69 63 68 20 65 78 65 63 75 tpd (which execu
0290: 74 65 73 20 74 68 65 20 73 63 72 69 70 74 20 69 tes the script i
02a0: 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 68 6f n the virtual ho
02b0: 73 74 20 69 6e 74 65 72 70 72 65 74 65 72 29 2c st interpreter),
02c0: 20 74 6f 61 64 68 74 74 70 64 20 65 78 65 63 75 toadhttpd execu
02d0: 74 65 73 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 tes the command
02e0: 77 69 74 68 20 74 68 65 20 6f 62 6a 65 63 74 20 with the object
02f0: 74 68 61 74 20 77 61 73 20 63 72 65 61 74 65 64 that was created
0300: 20 74 6f 20 68 61 6e 64 6c 65 20 74 68 65 20 72 to handle the r
0310: 65 71 75 65 73 74 2e 20 53 6f 20 79 6f 75 72 20 equest. So your
0320: 74 65 6d 70 6c 61 74 65 20 63 61 6e 20 69 6e 76 template can inv
0330: 6f 6b 65 20 74 68 61 74 20 6f 62 6a 65 63 74 27 oke that object'
0340: 73 20 6d 65 74 68 6f 64 73 3a 0d 0a 3c 70 3e 0d s methods:..<p>.
0350: 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a 5b 6d 79 .<verbatim>..[my
0360: 20 68 74 6d 6c 5f 68 65 61 64 65 72 20 7b 48 65 html_header {He
0370: 6c 6c 6f 20 57 6f 72 6c 64 21 7d 5d 0d 0a 59 6f llo World!}]..Yo
0380: 75 72 20 53 65 72 76 65 72 20 69 73 20 72 75 6e ur Server is run
0390: 6e 69 6e 67 2e 0d 0a 3c 70 3e 0d 0a 54 68 65 20 ning...<p>..The
03a0: 70 61 67 65 20 79 6f 75 72 20 61 73 6b 65 64 20 page your asked
03b0: 66 6f 72 20 77 61 73 20 5b 6d 79 20 68 74 74 70 for was [my http
03c0: 5f 69 6e 66 6f 20 67 65 74 20 52 45 51 55 45 53 _info get REQUES
03d0: 54 5f 55 52 49 5d 2e 20 44 65 73 70 69 74 65 20 T_URI]. Despite
03e0: 61 70 70 65 61 72 65 6e 63 65 73 2c 20 74 68 61 appearences, tha
03f0: 74 20 66 69 6c 65 20 69 73 20 61 63 74 75 61 6c t file is actual
0400: 6c 79 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 ly on the server
0410: 20 61 73 20 24 6c 6f 63 61 6c 5f 66 69 6c 65 0d as $local_file.
0420: 0a 3c 70 3e 0d 0a 54 68 65 20 74 69 6d 65 20 69 .<p>..The time i
0430: 73 20 6e 6f 77 20 5b 63 6c 6f 63 6b 20 66 6f 72 s now [clock for
0440: 6d 61 74 20 5b 63 6c 6f 63 6b 20 73 65 63 6f 6e mat [clock secon
0450: 64 73 5d 5d 2e 0d 0a 3c 70 3e 0d 0a 48 61 76 65 ds]]...<p>..Have
0460: 20 61 20 6e 69 63 65 20 64 61 79 2e 0d 0a 5b 6d a nice day...[m
0470: 79 20 68 74 6d 6c 5f 66 6f 6f 74 65 72 5d 0d 0a y html_footer]..
0480: 3c 2f 76 65 72 62 61 74 69 6d 3e 0d 0a 3c 70 3e </verbatim>..<p>
0490: 0d 0a 3c 68 33 3e 53 69 6d 70 6c 65 20 43 75 73 ..<h3>Simple Cus
04a0: 74 6f 6d 20 52 65 70 6c 79 20 4f 62 6a 65 63 74 tom Reply Object
04b0: 3c 2f 68 33 3e 0d 0a 46 6f 72 20 6d 6f 72 65 20 </h3>..For more
04c0: 63 6f 6d 70 6c 65 78 20 70 72 6f 6a 65 63 74 73 complex projects
04d0: 2c 20 79 6f 75 20 63 61 6e 20 63 72 65 61 74 65 , you can create
04e0: 20 61 20 63 6c 61 73 73 20 74 6f 20 6d 61 6e 61 a class to mana
04f0: 67 65 20 72 65 71 75 65 73 74 73 2c 20 61 6e 64 ge requests, and
0500: 20 74 65 6c 6c 20 74 68 65 20 73 65 72 76 65 72 tell the server
0510: 20 74 6f 20 69 6e 76 6f 6b 65 20 61 6e 20 6f 62 to invoke an ob
0520: 6a 65 63 74 20 6f 66 20 74 68 61 74 20 63 6c 61 ject of that cla
0530: 73 73 20 77 68 65 6e 20 72 65 70 6c 79 69 6e 67 ss when replying
0540: 2e 0d 0a 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d .....<verbatim>.
0550: 0a 74 6f 6f 6c 3a 3a 64 65 66 69 6e 65 20 6d 79 .tool::define my
0560: 70 72 6f 6a 65 63 74 3a 3a 72 65 70 6c 79 2e 74 project::reply.t
0570: 69 6d 65 20 7b 0d 0a 20 20 20 6d 65 74 68 6f 64 ime {.. method
0580: 20 63 6f 6e 74 65 6e 74 20 7b 7d 20 7b 0d 0a 20 content {} {..
0590: 20 20 20 20 73 65 74 20 68 6f 75 72 20 5b 63 6c set hour [cl
05a0: 6f 63 6b 20 66 6f 72 6d 61 74 20 5b 63 6c 6f 63 ock format [cloc
05b0: 6b 20 73 65 63 6f 6e 64 73 5d 20 2d 66 6f 72 6d k seconds] -form
05c0: 61 74 20 25 48 5d 0d 0a 20 20 20 20 20 69 66 20 at %H].. if
05d0: 7b 24 68 6f 75 72 20 3e 20 32 30 20 7c 7c 20 24 {$hour > 20 || $
05e0: 68 6f 75 72 20 3c 20 35 7d 20 7b 0d 0a 20 20 20 hour < 5} {..
05f0: 20 20 20 20 6d 79 20 63 6f 6e 74 65 6e 74 5f 6e my content_n
0600: 69 67 68 74 6f 77 6c 0d 0a 20 20 20 20 20 7d 20 ightowl.. }
0610: 65 6c 73 65 69 66 20 7b 24 68 6f 75 72 20 3e 3d elseif {$hour >=
0620: 35 20 26 26 20 24 68 6f 75 72 20 3c 20 31 32 7d 5 && $hour < 12}
0630: 20 7b 0d 0a 20 20 20 20 20 20 20 6d 79 20 63 6f {.. my co
0640: 6e 74 65 6e 74 5f 6d 6f 72 6e 69 6e 67 0d 0a 20 ntent_morning..
0650: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 68 } elseif {$h
0660: 6f 75 72 20 3e 3d 31 32 20 26 26 20 24 68 6f 75 our >=12 && $hou
0670: 72 20 3c 20 35 7d 20 7b 0d 0a 20 20 20 20 20 20 r < 5} {..
0680: 20 6d 79 20 63 6f 6e 74 65 6e 74 5f 61 66 74 65 my content_afte
0690: 72 6e 6f 6f 6e 0d 0a 20 20 20 20 20 7d 20 65 6c rnoon.. } el
06a0: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 6d 79 20 se {.. my
06b0: 63 6f 6e 74 65 6e 74 5f 65 76 65 6e 69 6e 67 0d content_evening.
06c0: 0a 20 20 20 20 20 7d 0d 0a 20 20 20 7d 0d 0a 0d . }.. }...
06d0: 0a 20 20 20 6d 65 74 68 6f 64 20 63 6f 6e 74 65 . method conte
06e0: 6e 74 5f 6e 69 67 68 74 6f 77 6c 20 7b 7d 20 7b nt_nightowl {} {
06f0: 0d 0a 20 20 20 20 20 6d 79 20 70 75 74 73 20 5b .. my puts [
0700: 6d 79 20 68 74 6d 6c 5f 68 65 61 64 65 72 73 20 my html_headers
0710: 7b 47 6f 6f 64 20 67 6f 64 20 69 74 27 73 20 6c {Good god it's l
0720: 61 74 65 7d 5d 0d 0a 20 20 20 20 20 23 20 43 6f ate}].. # Co
0730: 6e 74 65 6e 74 20 74 61 69 6c 6f 72 65 64 20 66 ntent tailored f
0740: 6f 72 20 6c 61 74 65 2c 20 6c 61 74 65 20 6e 69 or late, late ni
0750: 67 68 74 0d 0a 20 20 20 20 20 6d 79 20 70 75 74 ght.. my put
0760: 73 20 5b 6d 79 20 68 74 6d 6c 5f 66 6f 6f 74 65 s [my html_foote
0770: 72 5d 0d 0a 20 20 20 7d 0d 0a 20 20 20 6d 65 74 r].. }.. met
0780: 68 6f 64 20 63 6f 6e 74 65 6e 74 5f 6d 6f 72 6e hod content_morn
0790: 69 6e 67 20 7b 7d 20 7b 0d 0a 20 20 20 20 20 6d ing {} {.. m
07a0: 79 20 70 75 74 73 20 5b 6d 79 20 68 74 6d 6c 5f y puts [my html_
07b0: 68 65 61 64 65 72 73 20 7b 47 6f 6f 64 20 6d 6f headers {Good mo
07c0: 72 6e 69 6e 67 21 7d 5d 0d 0a 20 20 20 20 20 23 rning!}].. #
07d0: 20 43 6f 6e 74 65 6e 74 20 74 61 69 6c 6f 72 65 Content tailore
07e0: 64 20 66 6f 72 20 69 6e 20 74 68 65 20 6d 6f 72 d for in the mor
07f0: 6e 69 6e 67 0d 0a 20 20 20 20 20 6d 79 20 70 75 ning.. my pu
0800: 74 73 20 5b 6d 79 20 68 74 6d 6c 5f 66 6f 6f 74 ts [my html_foot
0810: 65 72 5d 0d 0a 20 20 20 7d 0d 0a 20 20 20 6d 65 er].. }.. me
0820: 74 68 6f 64 20 63 6f 6e 74 65 6e 74 5f 61 66 74 thod content_aft
0830: 65 72 6e 6f 6f 6e 20 7b 7d 20 7b 0d 0a 20 20 20 ernoon {} {..
0840: 20 20 6d 79 20 70 75 74 73 20 5b 6d 79 20 68 74 my puts [my ht
0850: 6d 6c 5f 68 65 61 64 65 72 73 20 7b 47 6f 6f 64 ml_headers {Good
0860: 20 61 66 74 65 72 6e 6f 6f 6e 21 7d 5d 0d 0a 20 afternoon!}]..
0870: 20 20 20 20 23 20 43 6f 6e 74 65 6e 74 20 74 61 # Content ta
0880: 69 6c 6f 72 65 64 20 66 6f 72 20 74 68 65 20 61 ilored for the a
0890: 66 74 65 72 6e 6f 6f 6e 0d 0a 20 20 20 20 20 6d fternoon.. m
08a0: 79 20 70 75 74 73 20 5b 6d 79 20 68 74 6d 6c 5f y puts [my html_
08b0: 66 6f 6f 74 65 72 5d 0d 0a 20 20 20 7d 0d 0a 20 footer].. }..
08c0: 20 20 6d 65 74 68 6f 64 20 63 6f 6e 74 65 6e 74 method content
08d0: 5f 65 76 65 6e 69 6e 67 20 7b 7d 20 7b 0d 0a 20 _evening {} {..
08e0: 20 20 20 20 6d 79 20 70 75 74 73 20 5b 6d 79 20 my puts [my
08f0: 68 74 6d 6c 5f 68 65 61 64 65 72 73 20 7b 47 6f html_headers {Go
0900: 6f 64 20 65 76 65 6e 69 6e 67 21 7d 5d 0d 0a 20 od evening!}]..
0910: 20 20 20 20 23 20 43 6f 6e 74 65 6e 74 20 74 61 # Content ta
0920: 69 6c 6f 72 65 64 20 66 6f 72 20 74 68 65 20 65 ilored for the e
0930: 76 65 6e 69 6e 67 0d 0a 20 20 20 20 20 6d 79 20 vening.. my
0940: 70 75 74 73 20 5b 6d 79 20 68 74 6d 6c 5f 66 6f puts [my html_fo
0950: 6f 74 65 72 5d 0d 0a 20 20 20 7d 0d 0a 0d 0a 7d oter].. }....}
0960: 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d 0a 0d ..</verbatim>...
0970: 0a 3c 68 33 3e 43 6f 6d 70 6c 65 78 20 43 75 73 .<h3>Complex Cus
0980: 74 6f 6d 20 52 65 70 6c 79 20 4f 62 6a 65 63 74 tom Reply Object
0990: 3c 2f 68 33 3e 0d 0a 46 6f 72 20 73 6f 6d 65 20 </h3>..For some
09a0: 63 6f 6e 74 65 6e 74 2c 20 79 6f 75 20 6e 65 65 content, you nee
09b0: 64 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 68 6f 77 d to control how
09c0: 20 74 68 65 20 70 61 67 65 20 69 73 20 64 69 73 the page is dis
09d0: 70 61 74 63 68 65 64 2e 20 46 6f 72 74 75 6e 74 patched. Fortunt
09e0: 65 6c 79 2c 20 74 68 61 74 20 69 73 6e 27 74 20 ely, that isn't
09f0: 74 6f 6f 20 68 61 72 64 20 74 6f 20 64 6f 20 65 too hard to do e
0a00: 69 74 68 65 72 2e 20 59 6f 75 20 6a 75 73 74 20 ither. You just
0a10: 6f 76 65 72 72 69 64 65 20 61 20 64 69 66 66 65 override a diffe
0a20: 72 65 6e 74 20 6d 65 74 68 6f 64 2e 0d 0a 0d 0a rent method.....
0a30: 43 6f 6d 69 6e 67 20 53 6f 6f 6e 0d 0a 3c 76 65 Coming Soon..<ve
0a40: 72 62 61 74 69 6d 3e 0d 0a 74 6f 6f 6c 3a 3a 64 rbatim>..tool::d
0a50: 65 66 69 6e 65 20 6d 79 70 72 6f 6a 65 63 74 3a efine myproject:
0a60: 3a 72 65 70 6c 79 2e 73 65 63 75 72 65 20 7b 0d :reply.secure {.
0a70: 0a 20 20 6d 65 74 68 6f 64 20 64 69 73 70 61 74 . method dispat
0a80: 63 68 20 61 72 67 73 20 7b 7d 20 7b 7d 0d 0a 7d ch args {} {}..}
0a90: 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0a 5a 20 ..</verbatim>.Z
0aa0: 32 31 36 62 37 61 37 34 61 33 34 35 65 36 35 39 216b7a74a345e659
0ab0: 30 39 35 31 64 39 62 33 38 36 65 34 38 36 66 31 0951d9b386e486f1
0ac0: 0a .