View script | License | Download script | History | Other scripts by: notchent |
5-Feb 5:40 UTC
[0.041] 18.955k
[0.041] 18.955k
Archive version of: 3d-game.r ... version: 3 ... notchent 3-Jan-2017REBOL [ title: "Little 3D Game" date: 29-Nov-2009 file: %3d-game.r author: Nick Antonaccio purpose: { Try to click the bouncing REBOLs as many times as possible in 30 seconds. The speed increases with each click! The 3D logic and calculations in this script were taken directly from Gregory Pecheret's "ebuc-cube" script, at: http://www.rebol.net/demos/download.html This script can also be found in the tutorial at http://re-bol.com } ] view center-face gui: layout [ style area area 500x100 across h4 200 "Form Title:" h4 200 "Data File:" return f1: field 200 "Form #1" f2: field 200 "form1.db" below h4 "FORM CHECK BOX OPTIONS:" a1: area {Uploaded To Server^/Private/Secure} h4 "FORM TEXT ENTRY FIELDS:" a2: area {Name^/Date^/Location^/Device Model^/File Name} h4 "FORM TEXT ENTRY AREAS:" a3: area {Description^/Notes} h4 "FORM DROPDOWN SELECTIONS:" a4: area {---COLOR^/Red^/Green^/Blue^/---OPTION^/AAA^/BBB^/CCC} across btn "SUBMIT" [ checks: parse/all a1/text "^/" remove-each i checks [i = ""] texts: parse/all a2/text "^/" remove-each i texts [i = ""] areas: parse/all a3/text "^/" remove-each i areas [i = ""] drops: parse/all a4/text "^/" remove-each i areas [i = ""] title: join uppercase f1/text ":" data-file: to-file f2/text unview ] btn "Save" [ save to-file request-file/save/file %formsettings reduce [ f1/text f2/text a1/text a2/text a3/text a4/text ] ] btn "Load" [attempt [ settings: load to-file request-file/file %formsettings f1/text: settings/1 f2/text: settings/2 a1/text: settings/3 a2/text: settings/4 a3/text: settings/5 a4/text: settings/6 show gui ]] ] poll: copy "^/" repeat i len: length? checks [ append poll rejoin [ {<input type="checkbox" name="checks" value="} i {">} checks/:i {<br>} newline ] ] append poll {<br>} repeat i len: length? texts [ append poll rejoin [ texts/:i {:<br><INPUT TYPE="TEXT" NAME="text} i {" SIZE="38"><br>} newline ] ] append poll {<br>} repeat i len: length? areas [ append poll rejoin [ areas/:i {:<br><TEXTAREA COLS="40" ROWS="3" NAME="area} i {"></TEXTAREA><br>} newline ] ] append poll {<br>} repeat i len: length? drops [ either find drops/:i "---" [ closer: either i = 1 [{}][{</option></select><br>}] append poll rejoin [ closer newline droptitle: replace/all drops/:i "---" "" {: <select NAME="} droptitle {">} ] ][ append poll rejoin [{<option>} drops/:i] ] ] append poll {</option></select><br>^/} append poll {<br><INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Submit">^/} either exists? data-file [responses: load data-file][responses: copy[]] port: open/lines tcp://:80 l: read join dns:// read dns:// print rejoin ["Waiting on: " l] browse join l "?" forever [ p: first port if error? try [ z: decode-cgi replace next find first p "?" " HTTP/1.1" "" if not empty? z [ append z reduce [to-set-word 'timestamp now] append/only responses z save data-file responses received: construct z ?? received ] d: rejoin [ {HTTP/1.0 200 OK^/Content-type: text/html^/^/ ^/<HTML><BODY><FORM ACTION="} l {">} title {<br><br>} poll {</FORM></BODY></HTML>} ] write-io p d length? d ] [] ;[print "(empty submission)"] close p ] halt ; Here's a CGI version you can run on shared hosts: #!/usr/bin/rebol.exe -cs REBOL [title "HTML form builder (CRUD app maker)"] print "content-type: text/html^/" print [<HTML><HEAD><TITLE>"Formbuilder"</TITLE></HEAD><BODY>] submitted: decode-cgi submitted-bin: read-cgi if ((submitted/2 = none) or (submitted/4 = none)) [ print rejoin [{ <FORM METHOD="post"> Form File: <BR> <input type=text size="50" value="form1.html" name="formtitle"><BR> Data File: <br> <input type=text size="50" value="form1data.db" name="datafile"><BR> FORM CHECK BOX OPTIONS:<BR> <TEXTAREA COLS="40" ROWS="3" NAME="checks">} {Uploaded To Server^/Private/Secure</TEXTAREA><br> FORM TEXT ENTRY FIELDS:<br> <TEXTAREA COLS="40" ROWS="3" NAME="texts">} {Name^/Date^/Location^/Device Model^/File Name</TEXTAREA><br> FORM TEXT ENTRY AREAS:<br> <TEXTAREA COLS="40" ROWS="3" NAME="areas">} {Description^/Notes</TEXTAREA><br> FORM DROPDOWN SELECTIONS:<br> <TEXTAREA COLS="40" ROWS="3" NAME="drops">} {---COLOR^/Red^/Green^/Blue^/---OPTION^/AAA^/BBB^/CCC} {</TEXTAREA><br><br> <INPUT TYPE=hidden NAME="formsubmitted" VALUE="formsubmitted"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Submit"> </FORM> </BODY></HTML>}] quit ] if submitted/14 ="formsubmitted" [ checks: parse/all submitted/6 "^/" remove-each i checks [i = ""] texts: parse/all submitted/8 "^/" remove-each i texts [i = ""] areas: parse/all submitted/10 "^/" remove-each i areas [i = ""] drops: parse/all submitted/12 "^/" remove-each i areas [i = ""] title: submitted/2 data-file: to-file submitted/4 poll: copy {<FORM METHOD="post" action="index.cgi">^/} ; EDIT ABO8VE TO MATCH FILE NAME OF THIS SCRIPT append poll {<INPUT TYPE=hidden NAME="formdata" VALUE="formdata">^/} append poll rejoin [ {<INPUT TYPE=hidden NAME="datafile" VALUE="} data-file {">^/} ] repeat i len: length? checks [ append poll rejoin [ {<input type="checkbox" name="checks" value="} i {">} checks/:i {<br>} newline ] ] append poll {<br>} repeat i len: length? texts [ append poll rejoin [ texts/:i {:<br><INPUT TYPE="TEXT" NAME="text} i {" SIZE="38"><br>} newline ] ] append poll {<br>} repeat i len: length? areas [ append poll rejoin [ areas/:i {:<br><TEXTAREA COLS="40" ROWS="3" NAME="area} i {"></TEXTAREA><br>} newline ] ] append poll {<br>} repeat i len: length? drops [ either find drops/:i "---" [ closer: either i = 1 [{}][{</option></select><br>}] append poll rejoin [ closer newline droptitle: replace/all drops/:i "---" "" {: <select NAME="} droptitle {">} ] ][ append poll rejoin [{<option>} drops/:i] ] ] append poll {</option></select><br>^/} append poll {<br><INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Submit"> </FORM>} write to-file submitted/2 poll print rejoin [ {<strong><a href="./} submitted/2 {">} submitted/2 {</a></strong> created:<br><br>} ] print poll ] if submitted/2 = "formdata" [ append submitted reduce [to-set-word 'timestamp now] write/append to-file submitted/4 mold at submitted 5 print "<strong>Saved:</strong><br><br>" probe submitted ] quit rebol [title: "Search HTML Logs"] data: load %./form1.db view layout [ h4 "Search Phrase:" f1: field h4 "Search Fields: (CTRL to select multiple)" t1: text-list data ["text1" "text2" "text3" "text4" "text5" "area1"] btn "Search" [ foreach record data [ obj: construct record foreach field t1/picked [ if find (get in obj to-lit-word field) f1/text [ print rejoin [ mold f1/text " found in " field ", " obj/timestamp ] ] ] ] ] h4 "View Record (paste timestamp in field)" f2: field btn "View" [ foreach record data [ obj: construct record if (form get in obj 'timestamp) = f2/text [ editor obj ] ] ] ] |