CREATE OR REPLACE PACKAGE GUI AS -- VERSIONE: 1.10 /* COSTANTI */ /* un po' di valori di default... */ default_Title CONSTANT varchar2(100):='Laboratorio Basi di Dati 2005'; -- titolo delle pagine default_MaxTextLength CONSTANT number := 200; -- massima dimensione di un campo in una textbox default_MaxTextBoxSize CONSTANT number := 50; -- massimo numero di caratteri visualizzati da una textbox default_TextAreaNRows CONSTANT number := 5; -- numero di righe in una textarea default_TextAreaNCols CONSTANT number := 80; -- numero di colonne in una textarea default_YearDiff CONSTANT number := 20; /* differenza standard fra la prima e l'ultima data mostrata nel menu` a tendina delle date */ /* inserite qui l'indirizzo del server oracle che usate Probabilmente se non funzionano alcuni link all'interno della pagina e` perche` dovete cambiare oracle1 con oracle2 in questa stringa... (o viceversa) */ urlServerName CONSTANT varchar2(60):='http://oracle1.cli.di.unipi.it/pls/webdb/'; /* inserite qui il vostro username di oracle (non l'account del cli!) */ userName CONSTANT varchar2(15):='bdl05'; /* alcuni nomi di procedure standard, da NON cambiare (esclusi i casi di testing) */ urlMenu CONSTANT varchar2(40):='gruppo38.menuPrincipale'; urlHelp CONSTANT varchar2(15):='help'; /* url usati, da cambiare. Occhio alla dimensione dell'url!! */ urlLogo CONSTANT varchar2(70):='http://www.cli.di.unipi.it/~gestbdl/bdl05/logobdl.jpg'; urlCSS CONSTANT varchar2(70):='http://www.cli.di.unipi.it/~gestbdl/bdl05/modgui.css'; urlJS CONSTANT varchar2(70):='http://www.cli.di.unipi.it/~gestbdl/bdl05/modgui.js'; /* PROTOTIPI DI FUNZIONE */ PROCEDURE openPage ( title varchar2 DEFAULT default_Title, javascript2 varchar2 DEFAULT NULL); PROCEDURE closePage; PROCEDURE printPlainText ( text varchar2); PROCEDURE printText ( text varchar2); PROCEDURE printMessage ( text varchar2); PROCEDURE printErrorText( text varchar2); PROCEDURE printH1 ( text varchar2); PROCEDURE printH2 ( text varchar2); PROCEDURE printH3 ( text varchar2); PROCEDURE printNLine; PROCEDURE openForm ( action varchar2, method varchar2 DEFAULT 'GET', other varchar2 DEFAULT NULL); PROCEDURE closeForm; PROCEDURE openTable ( width varchar2 DEFAULT '100%', border varchar2 DEFAULT '1', other varchar2 DEFAULT NULL); PROCEDURE closeTable; PROCEDURE openTableRow( other varchar2 default null ); PROCEDURE closeTableRow; PROCEDURE printTableData(text varchar2, other varchar2 default null); PROCEDURE openTableData( other varchar2 default null ); PROCEDURE closeTableData; PROCEDURE printTableHead( text varchar2, other varchar2 default null ); PROCEDURE openTableHead( other varchar2 default null ); PROCEDURE closeTableHead; PROCEDURE printWrongTableData( text varchar2, other varchar2 default null ); PROCEDURE openWrongTableData( other varchar2 default null ); PROCEDURE printTableEditRow( label varchar2, name varchar2, length number DEFAULT default_MaxTextLength, defval varchar2 DEFAULT NULL, thesize number DEFAULT default_MaxTextBoxSize, error boolean DEFAULT FALSE); PROCEDURE printTextBox( name varchar2, length number DEFAULT default_MaxTextLength, defval varchar2 DEFAULT NULL, thesize number DEFAULT default_MaxTextBoxSize, other varchar2 DEFAULT NULL); PROCEDURE printPassword ( name varchar2, length number DEFAULT default_MaxTextLength); PROCEDURE printCheckBox( name varchar2, active boolean DEFAULT FALSE, value varchar2 DEFAULT 'on', other varchar2 DEFAULT NULL); PROCEDURE printRadioButton ( name varchar2, value varchar2, label varchar2, selected boolean DEFAULT FALSE, other varchar2 DEFAULT NULL); PROCEDURE openSelect ( name varchar2, other varchar2 DEFAULT NULL); PROCEDURE openLinkedSelect ( name varchar2, other varchar2 DEFAULT NULL); PROCEDURE closeSelect; PROCEDURE printOption( value varchar2, label varchar2, selected boolean DEFAULT FALSE); PROCEDURE printTextArea ( name varchar2, value varchar2 DEFAULT NULL, nrows number DEFAULT default_TextAreaNRows, ncols number DEFAULT default_TextAreaNCols, other varchar2 DEFAULT NULL); PROCEDURE printSubmitButton ( label varchar2, name varchar2 DEFAULT NULL, other varchar2 DEFAULT NULL); PROCEDURE printButton ( label varchar2, name varchar2 DEFAULT NULL, other varchar2 DEFAULT NULL); PROCEDURE printResetButton ( label varchar2, other varchar2 DEFAULT NULL); PROCEDURE printHiddenField ( name varchar2, value varchar2 DEFAULT NULL); PROCEDURE printSession ( value varchar2); PROCEDURE printLink( url varchar2, name varchar2, newwnd boolean DEFAULT FALSE); PROCEDURE openCenter; PROCEDURE closeCenter; PROCEDURE printToolbar (sessione varchar2); PROCEDURE printDateInput( prefix in varchar2 DEFAULT 'laData', data date DEFAULT NULL, yearDiff integer DEFAULT default_YearDiff, canBeNull boolean DEFAULT FALSE, other varchar2 DEFAULT NULL); PROCEDURE printDateComp( prefix in varchar2 DEFAULT 'laData', prefix2 in varchar2 DEFAULT 'laData2', data date DEFAULT NULL, comp varchar2 DEFAULT NULL, data2 date DEFAULT NULL, yearDiff integer DEFAULT default_YearDiff, canBeNull boolean DEFAULT FALSE ); FUNCTION htmlEncode( text varchar2 ) RETURN varchar2; FUNCTION sessionEncode( iduser number ) RETURN varchar2; FUNCTION getUserID( session varchar2 ) RETURN number; END GUI; / CREATE OR REPLACE PACKAGE BODY GUI AS /* inizializza una pagina html. Parametri: title - titolo della pagina (default: Laboratorio Basi di Dati 2005) javascript2 - url di un ulteriore (opzionale) file javascript Genera: title */ PROCEDURE openPage ( title varchar2 DEFAULT default_Title, javascript2 varchar2 DEFAULT NULL) IS BEGIN htp.print(''); htp.print(''); htp.print('' ); htp.print('' ); IF javascript2 IS NOT NULL THEN htp.print( '' ); END IF; htp.print('' || title || ''); htp.print(''); htp.print('
' ); htp.print(''); htp.print(' ' ); htp.print(' ' ); htp.print('
Universit&' || 'agrave; di Pisa
' ); htp.print(' Laboratorio di Basi di Dati
' ); htp.print('
'); END; /* chiude una pagina html. Genera: */ PROCEDURE closePage IS BEGIN htp.print(''); htp.print(''); END; /* stampa del testo normale, cosi` com'e` (equivalente a htp.print()) Parametri: text - testo da stampare Genera: text */ PROCEDURE printPlainText ( text varchar2) IS BEGIN htp.print(text); END; /* stampa del testo normale in un paragrafo. Parametri: text - testo da stampare Genera:

text

*/ PROCEDURE printText ( text varchar2) IS BEGIN htp.print('

' || text || '

'); END; /* stampa un messaggio se la stringa passata e` diversa da null Parametri: text - testo da stampare Genera:

text

*/ PROCEDURE printMessage ( text varchar2) IS BEGIN htp.print( '

' || text || '

' ); END; /* stampa del testo di un errore in un paragrafo. Parametri: text - testo da stampare Genera:

text

*/ PROCEDURE printErrorText ( text varchar2) IS BEGIN htp.print('

' || text || '

' ); END; /* stampa del testo come un titolo principale Parametri: text - testo da stampare Genera:

text

*/ PROCEDURE printH1 ( text varchar2) IS BEGIN htp.print('

' || text || '

'); END; /* stampa del testo come un titolo secondario Parametri: text - testo da stampare Genera:

text

*/ PROCEDURE printH2 ( text varchar2) IS BEGIN htp.print('

' || text || '

'); END; /* stampa del testo come un titolo di terzo livello Parametri: text - testo da stampare Genera:

text

*/ PROCEDURE printH3 ( text varchar2) IS BEGIN htp.print('

' || text || '

'); END; /* stampa un ritorno a capo in html. Genera:
*/ PROCEDURE printNLine IS BEGIN htp.print('
'); END; /* inizializza un form Parametri: action - url della pagina a cui trasferire i dati method - metodo di trasferimento dei parametri (GET o POST) (default: 'GET') other - altre variabili opzionali da inserire nel tag (default: NULL) Genera:
*/ PROCEDURE openForm ( action varchar2, method varchar2 DEFAULT 'GET', other varchar2 DEFAULT NULL) IS BEGIN htp.print(''); END; /* chiude un form Genera:
*/ PROCEDURE closeForm IS BEGIN htp.print(''); END; /* inizializza una tabella Parametri: width - larghezza della tabella (default: 100%) border - dimensione dei bordi della tabella (default: 1) other - altre variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE openTable ( width varchar2 DEFAULT '100%', border varchar2 DEFAULT '1', other varchar2 DEFAULT NULL) IS BEGIN htp.print('
'); END; /* chiude una tabella Genera:
*/ PROCEDURE closeTable IS BEGIN htp.print(''); END; /* inizializza una riga di una tabella Parametri: other - variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE openTableRow( other varchar2 DEFAULT NULL ) IS BEGIN htp.print('' ); END; /* chiude una riga di una tabella Genera: */ PROCEDURE closeTableRow IS BEGIN htp.print(''); END; /* scrive un campo di una tabella. Parametri: text - contenuto del campo other - altre variabili opzionali da inserire nel tag (default: NULL) Genera: text */ PROCEDURE printTableData( text varchar2, other varchar2 DEFAULT NULL) IS BEGIN htp.print( '' || text || '' ); END; /* inizializza un campo di una tabella. Parametri: other - variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE openTableData( other varchar2 DEFAULT NULL ) IS BEGIN htp.print( '' ); END; /* chiude un campo di una tabella. */ PROCEDURE closeTableData IS BEGIN htp.print( '' ); END; /* scrive un campo d'intestazione di una tabella. Parametri: text - contenuto del campo other - variabili opzionali da inserire nel tag (default: NULL) Genera: text */ PROCEDURE printTableHead( text varchar2, other varchar2 DEFAULT NULL) IS BEGIN htp.print( '' || text || '' ); END; /* inizializza un campo d'intestazione di una tabella. Parametri: other - variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE openTableHead( other varchar2 DEFAULT NULL ) IS BEGIN htp.print( '' ); END; /* chiude un campo d'intestazione di una tabella. */ PROCEDURE closeTableHead IS BEGIN htp.print( '' ); END; /* scrive il nome di un campo errato di una tabella. Parametri: text - contenuto del campo other - variabili opzionali da inserire nel tag (default: NULL) Genera: text */ PROCEDURE printWrongTableData( text varchar2, other varchar2 DEFAULT NULL) IS BEGIN htp.print( '' || text || '' ); END; /* inizializza un campo errato di una tabella. Parametri: other - variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE openWrongTableData( other varchar2 DEFAULT NULL ) IS BEGIN htp.print( '' ); END; /* stampa una riga di una tabella comunemente usata per la modifica dei campi. Parametri: label - nome del campo da visualizzare all'utente name - nome del campo della casella di testo (non visibile all'utente) length - lunghezza della casella di testo (default: default_MaxTextLength) defval - valore di preimpostato della casella di testo (default: NULL) thesize - dimensione massima del campo (default: default_MaxTextBoxSize) error - indica se deve segnalare il campo come errato o meno (nome in rosso o no) (default: FALSE) Genera: label */ PROCEDURE printTableEditRow( label varchar2, name varchar2, length number DEFAULT default_MaxTextLength, defval varchar2 DEFAULT NULL, thesize number DEFAULT default_MaxTextBoxSize, error boolean DEFAULT FALSE) IS BEGIN openTableRow; IF error = TRUE THEN printWrongTableData( label ); ELSE printTableData( label ); END IF; openTableData; printTextBox( name, length, defval, thesize ); closeTableData; closeTableRow; END; /* stampa una casella di testo. Parametri: name - nome del campo length - dimensione massima del campo (default: default_MaxTextLength) defval - valore di default thesize - dimensione della casella di testo (default: default_MaxTextBoxSize) other - altre variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE printTextBox( name varchar2, length number DEFAULT default_MaxTextLength, defval varchar2 DEFAULT NULL, thesize number DEFAULT default_MaxTextBoxSize, other varchar2 DEFAULT NULL) IS BEGIN IF defval IS NULL THEN htp.print( ''); ELSE htp.print( ''); END IF; END; /* stampa una casella per immettere una password. Parametri: name - nome del campo length - lunghezza del campo (default: default_MaxTextLength) Genera: */ PROCEDURE printPassword ( name varchar2, length number DEFAULT default_MaxTextLength) IS BEGIN htp.print(''); END; /* stampa una checkbox Parametri: name - nome del campo active - stato della checkbox (attiva o meno) (default: FALSE) value - valore del campo quando attivo (default: 'on') other - altre variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE printCheckBox( name varchar2, active boolean DEFAULT FALSE, value varchar2 DEFAULT 'on', other varchar2 DEFAULT NULL) IS BEGIN IF active = TRUE THEN htp.print(''); ELSE htp.print(''); END IF; END; /* stampa un radiobutton Parametri: name - nome del campo value - valore del campo quando attivo label - etichetta del campo selected - stato della checkbox (attiva o meno) (default: FALSE) other - altre variabili opzionali da inserire nel tag (default: NULL) Genera: */ PROCEDURE printRadioButton ( name varchar2, value varchar2, label varchar2, selected boolean DEFAULT FALSE, other varchar2 DEFAULT NULL) IS BEGIN IF selected = TRUE THEN htp.print('' || label); ELSE htp.print('' || label); END IF; END; /* inizializza un menu` a tendina Parametri: name - nome del campo other - altre variabili opzionali da inserire nel tag (default: NULL) Genera: '); END; PROCEDURE openLinkedSelect( name varchar2, other varchar2 DEFAULT NULL) IS BEGIN openSelect( name, 'onChange="updateSelect(this.form)" ' || other ); END; /* chiude un menu` a tendina Genera: */ PROCEDURE closeSelect IS BEGIN htp.print(''); END; /* aggiunge un'opzione nel menu` a tendina Parametri: value - valore del campo quando selezionata questa opzione label - etichetta dell'opzione selected - specifica se l'opzione e` selezionata (default: FALSE) Genera: */ PROCEDURE printOption( value varchar2, label varchar2, selected boolean DEFAULT FALSE) IS BEGIN IF selected = FALSE THEN htp.print(''); ELSE htp.print(''); END IF; END; /* stampa un'area di testo multiriga Parametri: name - nome del campo value - valore di default del campo (default: NULL) nrows - numero di righe (default: default_TextAreaNRows) ncols - numero di colonne (default: default_TextAreaNCols) other - altre variabili opzionali da aggiungere al tag (default: NULL) Genera: */ PROCEDURE printTextArea ( name varchar2, value varchar2 DEFAULT NULL, nrows number DEFAULT default_TextAreaNRows, ncols number DEFAULT default_TextAreaNCols, other varchar2 DEFAULT NULL) IS BEGIN htp.print(''); END; /* aggiunge un pulsante di submit al form Parametri: label = label del pulsante name = nome del pulsante (default: NULL) other = altre variabili opzionali da aggiungere al tag (default: NULL) Genera: */ PROCEDURE printSubmitButton ( label varchar2, name varchar2 DEFAULT NULL, other varchar2 DEFAULT NULL) IS BEGIN IF name IS NULL THEN htp.print(''); ELSE htp.print(''); END IF; END; /* aggiunge un pulsante generico in un form (non fa ne` submit ne` reset) Parametri: label = label del pulsante name = nome del pulsante (default: NULL) other = altre variabili opzionali da aggiungere al tag (default: NULL) Genera: */ PROCEDURE printButton ( label varchar2, name varchar2 DEFAULT NULL, other varchar2 DEFAULT NULL) IS BEGIN IF name IS NULL THEN htp.print(''); ELSE htp.print(''); END IF; END; /* aggiunge un pulsante di reset al form Parametri: label = label del pulsante other = altre variabili opzionali da aggiungere al tag (default: NULL) Genera: */ PROCEDURE printResetButton ( label varchar2, other varchar2 DEFAULT NULL) IS BEGIN htp.print(''); END; /* aggiunge un campo nascosto al form Parametri: name - nome del campo value - valore del campo (default: NULL) Genera: */ PROCEDURE printHiddenField ( name varchar2, value varchar2 DEFAULT NULL) IS BEGIN htp.print(''); END; /* aggiunge un campo nascosto per la variabile di sessioe nel form Parametri: value - valore del parametro di sessioe Genera: Nota: equivale ad usare inputHiddenField( 'sessione', value ); */ PROCEDURE printSession ( value varchar2) IS BEGIN printHiddenField( 'sessione', value ); END; /* stampa un link Parametri: url - l'url di destinazione (solo il nome della procedura e` necessario, utente e url del server sono automaticamente aggiunti) name - nome del link newwnd - specifica se deve aprire una nuova finestra una volta cliccato Genera: name */ PROCEDURE printLink( url varchar2, name varchar2, newwnd boolean DEFAULT FALSE) IS BEGIN htp.print('' || name || ''); END; /* inizializza del testo centrato Genera:
*/ PROCEDURE openCenter IS BEGIN htp.print('
'); END; /* chiude del testo centrato Genera:
*/ PROCEDURE closeCenter IS BEGIN htp.print('
'); END; /* stampa la toolbar con i comandi standard di navigazione (ovvero i due riferimenti al menu ed all'help) Parametri: sessione - L'identificativo di sessione. */ PROCEDURE printToolbar( sessione varchar2 ) IS BEGIN htp.print( '
' ); openTable( border=>'0', width=>'0' ); openTableRow; openTableData; openForm( urlMenu ); printHiddenField( 'sessione', sessione ); printSubmitButton( 'Menu Principale' ); closeForm; closeTableData; openTableData; openForm( urlHelp ); printHiddenField( 'sessione', sessione ); printSubmitButton( 'Help' ); closeForm(); closeTableData; closeTableRow; closeTable; END; /* inserisce le 3 combobox dei menu` a tendina di gg/mm/aaaa Parametri: prefix - prefisso per il nome delle componenti data - la data iniziale da usare yearDiff - massima distanza degli anni da mostrare canBeNull - indica se la data puo` essere nulla other - aggiunge delle opzioni a TUTTE le combobox Genera: 3 combobox di nome prefix_lAnno, prefix_ilMese, prefix_ilGiorno con gia` selezionata la data attuale Autori originali: Anedda Valentino Casanovi Claudio Fioravanti Luca e` stato cambiato il nome della procedura e sono stati aggiunti i parametri data e yearDiff. */ PROCEDURE printDateInput( prefix in varchar2 DEFAULT 'laData', data date DEFAULT NULL, yearDiff integer DEFAULT default_YearDiff, canBeNull boolean DEFAULT FALSE, other varchar2 DEFAULT NULL) IS --Variabili della procedura today date; tyear integer; tmonth integer; tday integer; minYear integer; maxYear integer; --prefix VarChar2(20) := 'default'; --Inizio corpo procedura BEGIN today := data; IF today IS NULL AND canBeNull = FALSE THEN today := CURRENT_DATE; END IF; IF NOT today IS NULL THEN tyear := EXTRACT(YEAR FROM today); tmonth := EXTRACT(MONTH FROM today); tday := EXTRACT(DAY FROM today); ELSE tyear := 0; tmonth := 0; tday := 0; END IF; -- calcola l'intervallo degli anni da visualizzare IF today IS NULL THEN minYear := EXTRACT( YEAR FROM CURRENT_DATE ) - yearDiff/2; maxYear := EXTRACT( YEAR FROM CURRENT_DATE ) + yearDiff/2; ELSE minYear := tyear - yearDiff/2; maxYear := tyear + yearDiff/2; END IF; --giorno GUI.openSelect(prefix||'_ilGiorno', other=>other); IF canBeNull=TRUE THEN GUI.printOption( '', '', true ); END IF; FOR giorno in 1..31 LOOP IF (giorno = tday) then GUI.printOption(giorno, giorno, true); ELSE GUI.printOption(giorno, giorno); END IF; END LOOP; GUI.closeSelect(); --mese GUI.openSelect(prefix || '_ilMese', other=>other); IF canBeNull=TRUE THEN GUI.printOption( '', '', true ); END IF; FOR mese in 1..12 LOOP IF (mese = tmonth) THEN GUI.printOption(mese, mese, true); ELSE GUI.printOption(mese, mese); END IF; END LOOP; GUI.closeSelect(); --Anno GUI.openSelect(prefix || '_lAnno', other=>other); IF canBeNull=TRUE THEN GUI.printOption( '', '', true ); END IF; --For per inserire anni. FOR anno IN minYear..maxYear LOOP IF (anno = tyear) THEN GUI.printOption(anno, anno, true); ELSE GUI.printOption(anno, anno); END IF; END LOOP; GUI.closeSelect(); END; /* inserisce le 3 combobox dei menu` a tendina di gg/mm/aaaa, un menu per la scelta del tipo di confronto da fare con la data (maggiore, minore, uguale, ecc...) ed altre 3 combobox per una possibile data da indicare per un intervallo Parametri: prefix - prefisso per il nome delle componenti prefix2 - prefisso per il nome dei componenti della seconda data per l'intervallo data - la data iniziale da usare comp - tipo di confronto selezionato ('uguale', 'maggiore', 'minore', 'diverso', 'trail') data2 - la seconda data da usare (per l'intervallo) yearDiff - massima distanza degli anni da mostrare canBeNull - indica se la data puo` essere nulla Genera: 1 combobox con la selezione dei confronti di nome prefix_comp 3 combobox di nome prefix_lAnno, prefix_ilMese, prefix_ilGiorno con gia` selezionata la data attuale altre 3 combobox per la seconda data dell'intervallo (il nome e` composto con prefix2 invece che prefix) Nota: La seconda data, indipendentemente dal valore di canBeNull non puo` essere null, se viene passato null viene usata la data attuale. */ PROCEDURE printDateComp( prefix in varchar2 DEFAULT 'laData', prefix2 in varchar2 DEFAULT 'laData2', data date DEFAULT NULL, comp varchar2 DEFAULT NULL, data2 date DEFAULT NULL, yearDiff integer DEFAULT default_YearDiff, canBeNull boolean DEFAULT FALSE ) IS --Variabili della procedura today date; tyear integer; tmonth integer; tday integer; minYear integer; maxYear integer; hiddenstr varchar2(50); BEGIN today := data; IF today IS NULL AND canBeNull = FALSE THEN today := CURRENT_DATE; END IF; IF today IS NOT NULL THEN tyear := EXTRACT(YEAR FROM today); tmonth := EXTRACT(MONTH FROM today); tday := EXTRACT(DAY FROM today); ELSE tyear := 0; tmonth := 0; tday := 0; END IF; IF today IS NULL THEN minYear := EXTRACT( YEAR FROM CURRENT_DATE ) - yearDiff/2; maxYear := EXTRACT( YEAR FROM CURRENT_DATE ) + yearDiff/2; ELSE minYear := tyear - yearDiff/2; maxYear := tyear + yearDiff/2; END IF; --Menu a tendina per i confronti GUI.openSelect(prefix || '_comp', other=>'onChange="dateCompChange( this, ''' || prefix2 || ''' )"' ); GUI.printOption( 'uguale', 'uguale a', comp='uguale' ); GUI.printOption( 'maggiore', 'maggiore di', comp='maggiore' ); GUI.printOption( 'minore', 'minore di', comp='minore' ); GUI.printOption( 'diverso', 'diverso da', comp='diverso' ); GUI.printOption( 'trail', 'tra il', comp='trail' ); GUI.printOption( 'qualsiasi', 'qualsiasi', comp='qualsiasi' ); GUI.closeSelect; --giorno GUI.openSelect(prefix||'_ilGiorno'); IF canBeNull = TRUE THEN GUI.printOption( '', '' ); END IF; FOR giorno in 1..31 LOOP IF (giorno = tday) then GUI.printOption(giorno, giorno, true); ELSE GUI.printOption(giorno, giorno); END IF; END LOOP; GUI.closeSelect(); --mese GUI.openSelect(prefix || '_ilMese'); IF canBeNull = TRUE THEN GUI.printOption( '', '' ); END IF; FOR mese in 1..12 LOOP IF (mese = tmonth) THEN GUI.printOption(mese, mese, true); ELSE GUI.printOption(mese, mese); END IF; END LOOP; GUI.closeSelect(); --Anno GUI.openSelect(prefix || '_lAnno'); IF canBeNull = TRUE THEN GUI.printOption( '', '' ); END IF; --For per inserire anni. FOR anno IN minYear..maxYear LOOP IF (anno = tyear) THEN GUI.printOption(anno, anno, true); ELSE GUI.printOption(anno, anno); END IF; END LOOP; GUI.closeSelect(); /*********** SECONDA DATA *************/ hiddenstr := 'style="visibility:hidden" '; IF comp = 'trail' THEN hiddenstr := ''; END IF; htp.print( 'ed il' ); today := data2; IF today IS NULL THEN today := CURRENT_DATE; END IF; tyear := EXTRACT(YEAR FROM today); tmonth := EXTRACT(MONTH FROM today); tday := EXTRACT(DAY FROM today); --giorno GUI.openSelect(prefix2||'_ilGiorno', other=>hiddenstr || 'id="' || prefix2 || '_ilGiorno"'); FOR giorno in 1..31 LOOP IF (giorno = tday) then GUI.printOption(giorno, giorno, true); ELSE GUI.printOption(giorno, giorno); END IF; END LOOP; GUI.closeSelect(); --mese GUI.openSelect(prefix2 || '_ilMese', other=>hiddenstr || 'id="' || prefix2 || '_ilMese"'); FOR mese in 1..12 LOOP IF (mese = tmonth) THEN GUI.printOption(mese, mese, true); ELSE GUI.printOption(mese, mese); END IF; END LOOP; GUI.closeSelect(); --Anno GUI.openSelect(prefix2 || '_lAnno', other=>hiddenstr || 'id="' || prefix2 || '_lAnno"'); --For per inserire anni. FOR anno IN minYear..maxYear LOOP IF (anno = tyear) THEN GUI.printOption(anno, anno, true); ELSE GUI.printOption(anno, anno); END IF; END LOOP; GUI.closeSelect(); END; /* converte una stringa in una stringa html valida Parametri: text - testo da convertire Return: una stringa con i caratteri speciali html convertiti */ FUNCTION htmlEncode( text varchar2 ) RETURN varchar2 IS BEGIN RETURN REPLACE( REPLACE( REPLACE( REPLACE( text, '&', '&' || 'amp;' ), '<', '&' || 'lt;' ), '>', '&' || 'gt;' ), '"', '&' || 'quot;' ); END; /* codifica il parametro di sessione Parametri: iduser - id dell'utente Return: una stringa di sessione codificata */ FUNCTION sessionEncode( iduser number ) RETURN varchar2 IS BEGIN RETURN to_char( iduser ); END; /* decodifica il parametro userid dalla variabile di sessione. Parametri: session - la sessione codificata */ FUNCTION getUserID( session varchar2 ) RETURN number IS BEGIN RETURN to_number( session ); END; END GUI; / show err package GUI; show err; commit;