/* $VER: 1.1, ©1998 Dietmar Eilert */

options results                             /* enable return codes     */

if (left(address(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */

    address 'GOLDED.1'

'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */

if (RC ~= 0) then

    exit

options failat 6                            /* ignore warnings         */

signal on syntax                            /* ensure clean exit       */

/* ------------------------ INSERT YOUR CODE HERE: ------------------- */

'QUERY CAT'

if (RESULT = "deutsch") then do

    STRING.sWIZARD       = "Formular-Wizard"
    STRING.sCGI          = "CGI-Script für Bearbeitung der Eingaben"
    STRING.sMETHOD       = "Methode der Datenweiterleitung an Server:"
    STRING.sPOST         = "!POST|GET|Abbru_ch"
    STRING.sSUBMIT       = "Beschriftung des Submit-Feldes"
    STRING.sRESET        = "Beschriftung des Reset-Feldes"
    STRING.sELEMENT      = "Hinzuzufügendes Element wählen:"
    STRING.sTYPES        = "!STRING|_Passwort|_Textfeld|_Radio|_Liste|Check_box|_Fertig"
    STRING.sCHARACTERS   = "Anzahl der maximal zulässigen Buchstaben"
    STRING.sDEFAULT      = "Vorgabewert des Feldes"
    STRING.sDESCRIBE     = "Feldbeschreibung (falls gewünscht)"
    STRING.sFIELDSIZE    = "Feldgröße (Einheit = Zeichen)"
    STRING.sFIELDID      = "Feldkennung"
    STRING.sRADIO        = "Anzahl der Knöpfe"
    STRING.sLIST         = "Anzahl der Einträge"
    STRING.sMULTIPLE     = "Mehrfachauswahl erlauben ?"
    STRING.sSINGLE       = "!EINFACHAUSWAHL|_Mehrfachauswahl|Abbru_ch"
    STRING.sHIDDEN       = "Wert des versteckten Feldes"
    STRING.sNOFORM       = "Formular nicht gefunden. Neues Formular erzeugen ?"
    STRING.sFIELDCOLUMNS = "Anzahl der Spalten"
    STRING.sFIELDROWS    = "Anzahl der Zeilen"
    STRING.sCREATE       = "!ERZEUGEN|Abbru_ch"
    STRING.sCHECKED      = "!NORMAL|_Angewählt"
    STRING.sID           = "Feldkennung"
end
else do

    STRING.sWIZARD       = "Form Wizard"
    STRING.sCGI          = "CGI script that will handle form input"
    STRING.sMETHOD       = "Method used to send data to server:"
    STRING.sPOST         = "!POST|GET|_Cancel"
    STRING.sSUBMIT       = "Label of the submit button"
    STRING.sRESET        = "Label of the reset button"
    STRING.sELEMENT      = "Select element to be added to the form"
    STRING.sTYPES        = "!STRING|_Password|_Textarea|_Radio|_List|Check_box|_Done"
    STRING.sCHARACTERS   = "Number of characters that can be written to the field"
    STRING.sDEFAULT      = "Set field''s default value"
    STRING.sDESCRIBE     = "Field description (if any)"
    STRING.sFIELDSIZE    = "Field size (units = characters)"
    STRING.sFIELDID      = "Select field''s ID code"
    STRING.sRADIO        = "Number of radio buttons"
    STRING.sLIST         = "Number of list items"
    STRING.sMULTIPLE     = "Allow multiple selections ?"
    STRING.sSINGLE       = "!SINGLE|_Multiple|_Cancel"
    STRING.sHIDDEN       = "Select value of hidden field"
    STRING.sNOFORM       = "Form not found. Create new form ?"
    STRING.sFIELDCOLUMNS = "Number of columns"
    STRING.sFIELDROWS    = "Number of rows"
    STRING.sCREATE       = "!CREATE|_Cancel"
    STRING.sCHECKED      = "!NORMAL|Checke_d"
    STRING.sID           = "Field ID code"
end

if ((RC = 0) & (RESULT ~= 0)) then do

    'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sCGI || '" OLD="http://" VAR=URL'

    if (RC = 0) then do

        'REQUEST TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sMETHOD || '" BUTTON="' || STRING.sPOST || '" VAR=METHOD'

        if ((RC = 0) & (RESULT ~= 0)) then do

            'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sSUBMIT || '" OLD="Submit" VAR=SUBMIT'

            if (RC = 0) then do

                'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sRESET || '" OLD="Reset" VAR=RESET'

            if (RC = 0) then do

                'FIX VAR=URL'
                'FIX VAR=RESET'
                'FIX VAR=SUBMIT'

                'INSERT LINE'
                'INSERT LINE'
                'DOWN'

                if (METHOD = 1) then
                    'TEXT STAY T="<FORM ACTION=*"' || URL || '*" METHOD=POST>"'
                else
                    'TEXT STAY T="<FORM ACTION=*"' || URL || '*" METHOD=GET>"'

                'DOWN'
                'INSERT LINE'
                'TEXT STAY T="</FORM>"'
                'INSERT LINE'
                'PING SLOT=0'
                'DOWN'
                'INSERT LINE'
                'TEXT STAY T="<P>"'
                'DOWN'
                'INSERT LINE'
                'TEXT STAY T="<INPUT TYPE=RESET  VALUE=*"' || RESET || '*">"'
                'DOWN'
                'INSERT LINE'
                'TEXT STAY T="<INPUT TYPE=SUBMIT VALUE=*"' || SUBMIT || '*">"'
                'DOWN'
                'INSERT LINE'

                'PONG SLOT=0'

                ID = 1;

                do forever

                    'REQUEST TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sELEMENT || '" BUTTON="' || STRING.sTYPES || '" VAR=TYPE'

                    if ((RC ~= 0) | (RESULT = 0)) then
                        break

                    if (RC = 0) then do

                        /* string field */

                        if (TYPE = 1) then do

                            'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sCHARACTERS || '" MIN=1 MAX=255 OLD=40 VAR=MAXLEN'

                            if (RC = 0) then do

                                'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sDEFAULT || '" VAR=VALUE MAX=' || MAXLEN

                                if (RC = 0) then do

                                    'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sDESCRIBE || '" VAR=COMMENT'

                                    if (RC = 0) then do

                                        'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sFIELDSIZE || '" MIN=1 MAX=255 OLD=40 VAR=SIZE'

                                        if (RC = 0) then do

                                            'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                            if (RC = 0) then do

                                                'FIX VAR=VALUE'
                                                'FIX VAR=COMMENT'
                                                'FIX VAR=IDCODE'

                                                'INSERT LINE'
                                                'INSERT LINE'
                                                'INSERT LINE'
                                                'DOWN'
                                                'TEXT STAY T="<P>"'
                                                'DOWN'
                                                'TEXT STAY T="<INPUT TYPE=text NAME=*"' || IDCODE || '*" VALUE=*"' || VALUE || '*" MAXLENGTH=' || MAXLEN || ' SIZE=' || SIZE || '> ' || COMMENT || '"'
                                                'DOWN'

                                                ID = ID + 1
                                            end
                                        end
                                    end
                                end
                            end
                        end

                        /* password */

                        if (TYPE = 2) then do

                            'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sCHARACTERS || '" MIN=1 MAX=255 OLD=40 VAR=MAXLEN'

                            if (RC = 0) then do

                                'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sDEFAULT || '" VAR=VALUE MAX=' || MAXLEN

                                if (RC = 0) then do

                                    'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sDESCRIBE || '" OLD="Password" VAR=COMMENT'

                                    if (RC = 0) then do

                                        'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sFIELDSIZE || '" MIN=1 MAX=255 OLD=40 VAR=SIZE'

                                        if (RC = 0) then do

                                            'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                            if (RC = 0) then do

                                                'FIX VAR=VALUE'
                                                'FIX VAR=COMMENT'
                                                'FIX VAR=IDCODE'

                                                'INSERT LINE'
                                                'INSERT LINE'
                                                'INSERT LINE'
                                                'DOWN'
                                                'TEXT STAY T="<P>"'
                                                'DOWN'
                                                'TEXT STAY T="<INPUT TYPE=password NAME=*"' || IDCODE || '*" VALUE=*"' || VALUE || '*" MAXLENGTH=' || MAXLEN || ' SIZE=' || SIZE || '> ' || COMMENT || '"'
                                                'DOWN'

                                                ID = ID + 1
                                            end
                                        end
                                    end
                                end
                            end
                        end

                        /* textarea */

                        if (TYPE = 3) then do

                            'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sFIELDCOLUMNS || '" MIN=1 MAX=255 OLD=40 VAR=COLUMNS'

                            if (RC = 0) then do

                                'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sFIELDROWS || '" MIN=1 MAX=255 OLD=10 VAR=ROWS'

                                if (RC = 0) then do

                                    'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                    if (RC = 0) then do

                                        'FIX VAR=IDCODE'

                                        'INSERT LINE'
                                        'INSERT LINE'
                                        'DOWN'
                                        'TEXT STAY T="<P>"'
                                        'DOWN'
                                        'TEXT STAY T="<TEXTAREA NAME=*"' || IDCODE || '*" ROWS=' || ROWS || ' COLS=' || COLUMNS || '></TEXTAREA>"'
                                        'DOWN'
                                        'INSERT LINE'

                                        ID = ID + 1
                                    end
                                end
                            end
                        end

                        /* radio */

                        if (TYPE = 4) then do

                            'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sRADIO || '" MIN=2 MAX=255 OLD=2 VAR=OPTIONS'

                            if (RC = 0) then do

                                'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                if (RC = 0) then do

                                    'FIX VAR=IDCODE'

                                    'INSERT LINE'
                                    'INSERT LINE'
                                    'DOWN'
                                    'TEXT STAY T="<P>"'
                                    'DOWN'

                                    do OPTION = 1 to OPTIONS

                                        if (OPTION = OPTIONS) then
                                            'TEXT STAY T="<INPUT TYPE=radio NAME=*"' || IDCODE || '*" VALUE=*"radio button ' || OPTION || '*"> radio button"'
                                        else
                                            'TEXT STAY T="<INPUT TYPE=radio NAME=*"' || IDCODE || '*" VALUE=*"radio button ' || OPTION || '*"> radio button<BR>"'

                                        'DOWN'
                                        'INSERT LINE'
                                    end

                                    ID = ID + 1
                                end
                            end
                        end

                        /* list */

                        if (TYPE = 5) then do

                            'REQUEST LONG TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sLIST || '" MIN=2 MAX=255 OLD=2 VAR=OPTIONS'

                            if (RC = 0) then do

                                'REQUEST TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sMULTIPLE || '" BUTTON="' || STRING.sSINGLE || '" VAR=MULTIPLE'

                                if ((RC = 0) & (MULTIPLE ~= 0)) then do

                                    'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                    if (RC = 0) then do

                                        'FIX VAR=IDCODE'

                                        'INSERT LINE'
                                        'INSERT LINE'
                                        'INSERT LINE'
                                        'DOWN'
                                        'TEXT STAY T="<P>"'
                                        'DOWN'

                                        if (MULTIPLE = 1) then
                                            'TEXT STAY T="<SELECT NAME=*"' || IDCODE || '*">"'
                                        else
                                            'TEXT STAY T="<SELECT NAME=*"' || IDCODE || '*" MULTIPLE>"'

                                        'DOWN'
                                        'INSERT LINE'
                                        'TEXT STAY T="</SELECT>"'

                                        do OPTION = 1 to OPTIONS

                                            'INSERT LINE'
                                            'TEXT STAY T="<OPTION>' || 'item' || '</OPTION>"'
                                            'DOWN'
                                        end

                                        'DOWN'

                                        ID = ID + 1
                                    end
                                end
                            end
                        end

                        /* checkbox */

                        if (TYPE = 6) then do

                            'REQUEST TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sDEFAULT || '" BUTTON="' || STRING.sCHECKED || '" VAR=CHECKED'

                            if (RC = 0) then do

                                'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sDESCRIBE || '" VAR=COMMENT'

                                if (RC = 0) then do

                                    'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                    if (RC = 0) then do

                                        'FIX VAR=COMMENT'
                                        'FIX VAR=IDCODE'

                                        'INSERT LINE'
                                        'INSERT LINE'
                                        'INSERT LINE'
                                        'DOWN'
                                        'TEXT STAY T="<P>"'
                                        'DOWN'

                                        if (CHECKED = 0) then
                                            'TEXT STAY T="<INPUT TYPE=checkbox NAME=*"' || IDCODE || '*" CHECKED> ' || COMMENT || '"'
                                        else
                                            'TEXT STAY T="<INPUT TYPE=checkbox NAME=*"' || IDCODE || '*"> ' || COMMENT || '"'

                                        'DOWN'

                                        ID = ID + 1
                                    end
                                end
                            end
                        end

                        /* hidden */

                        if (TYPE = 7) then do

                            'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sHIDDEN || '" VAR=VALUE'

                            if (RC = 0) then do

                                'REQUEST STRING TITLE="' || STRING.sWIZARD || '" BODY="' || STRING.sID || '" OLD="FIELD' || ID || '" VAR=IDCODE'

                                if (RC = 0) then do

                                    'FIX VAR=VALUE'
                                    'FIX VAR=IDCODE'

                                    'INSERT LINE'
                                    'INSERT LINE'
                                    'DOWN'
                                    'TEXT STAY T="<INPUT TYPE=hidden NAME=*"' || IDCODE || '*" VALUE=*"' || VALUE || '*">"'
                                    'DOWN'
                                end

                                ID = ID + 1
                            end
                        end
                    end
                end
            end
        end
    end
end


/* ---------------------------- END OF YOUR CODE --------------------- */

'UNLOCK' /* VERY important: unlock GUI */

exit

SYNTAX:

SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("

'UNLOCK'

exit
