define project MW node mw_Artist[id] {

("id = ", ano),

(name, " (", birthdate, "-", deathdate, ") "), include mw_Countries[id],
(),

("Works in the virtual museum") ,
(include mw_Works_by_artist_list[id] ),

(href mw_add_work_by_artist[ano, name]("[add work]")) ,


(),

("Contemporary with: "),
(include mw_Contemporary[ano, birthdate, deathdate]) } , include mw_To_index from artist selected by ano = id node mw_Artist_index

("Artist Index") ,
( {
(href mw_Artist[ano]((name))," (",birthdate,"-",deathdate , ") " , href mw_Works_by_artist[ano] ("[works]"), " (id=",ano,") " ) } ) ,

(href mw_new_Artist("[New Artist]")) , include mw_To_index from artist selected by name <> "unknown" node mw_Artist_name[id] { name }from artist selected by ano = id node mw_Contemporary[a, b,d] { href mw_Artist[ano] (name)," " } from artist selected by ano <> a and (birthdate+20) < d and (deathdate-20) > b order by birthdate node mw_Content_of_exh[ex] // list of all works in a exhibition ( {(
(name ,
() , title),
(()), ( href mw_Work[wno]("(Jump)")) )} ) from ex_content, work, artist selected by ex_content.work = work.wno and work.author = artist.ano and ex = exhibition order by name node mw_Countries[a] {

(type," ",country) } from art_cnty selected by artist = a order by 1 node mw_Exhibition[ex]

(

(" * ",title, " * ")),

("Description") ,
(description) ,

("Content") , include mw_Content_of_exh[exno] ,

("Organized by") ,
(organizer) , "
" ,

(href mw_select_work[ex] ("[Add a Work]") , " to this exhibition") , include mw_To_index from exhibition selected by ex = exno node mw_Exhibition_index

("Exhibition Index"), ( { (
(

(title) , //

("Description"),
(description) , //

("Organizer") ,
("Organized by " , organizer) ) ,

(expand href mw_Content_of_exh[exno] ("View Content") ,

(href mw_select_work[exno] ("[Add a Work]")) ) ) } ) , include mw_To_index ,


(), href mw_new_Exhibition ("[Create an Exhibition]") from exhibition order by exno node mw_Home

("Mini Virtual Museum") ,
(

(href mw_Artist_index("Artists") ),

(href mw_Work_index("Works") ),

(href mw_Exhibition_index("Exhibitions") ) ,


(),

("To make changes you must log in as ADMIN (password=x) ", href ADMIN.login["MW.mw_Home"]("[login]")) ) node mw_To_index


(), href mw_Work_index ("[Work index]") , " " , href mw_Artist_index("[Artist index]") , " " , href mw_Exhibition_index("[Exhibition index]") , " ", href ADMIN.login["MW.mw_Home"]("[Change user]") node mw_Work[id] { ( (
(

(title),

(c_date),

(href mw_Artist[author] (include mw_Artist_name[author])),

(support," ",height," x ",width), //

(include mw_Owned[wno], ", " , acquired ) ,

(href mw_Works_by_artist[author] ("Works") , " by " , include mw_Artist_name[author]) ),

(

(()) ) ) ) , include mw_To_index , "


" , href mw_upd_Work[id]("Update") , " this description" } from work selected by wno = id node mw_Work_image[id] {

(()) } from work selected by wno=id /** Exhibitions **/ node mw_Work_index

("Work Index") ,
( {
((href mw_Work[wno](title))," (",c_date, ") by ", href mw_Artist[author] (include mw_Artist_name[author]) // , " (id=",wno,") " ) }) , include mw_To_index from work order by wno node mw_Works_by_artist[id] {

("Works by " , href mw_Artist[id] (name) ) , include mw_Works_by_artist_list[id] } ,

(href mw_add_work_by_artist[ano, name]("[add work]")) , include mw_To_index from artist selected by ano = id node mw_Works_by_artist_list[artist] {

((title)," ",c_date, " ", expand href mw_Work_image[wno] ("[open image]") , " " , href mw_Work[wno] ("[details]") ) } from work selected by author = artist order by c_date node mw_add_work_by_artist[a, n]

("Adding a new work") , active href mw_Artist[a] ( //

("Unique identifier: " , set wno = textfield(10)) ,

("Author: ", n , set author = a),

("Title: ", set title = textfield(60) ),

("Support: ", set support = textfield(30)),

("Date: ", set c_date = textfield(10)),

("Height: ", set height = textfield(10)),

("Width: ", set Width = textfield(10)),

("Picture location: ", set picture=textfield(50), " (URL)"), on "Add" do insert work ) node mw_add_work_exh[e, w]

("Add " , work.title , " to " , exhibition.title) , active href mw_Exhibition[e] ( set work = w , set exhibition = e ,

("Comment: " , set org_comment = textarea(10, 30)) , on "Add" do insert ex_content ) from exhibition, work selected by exno = e and wno = w node mw_new_Artist

("Adding a new artist") , active href mw_Artist_index ( //

("Artist identifier: " , set ano = textfield(10)) ,

("Name: ", set name = textfield(60) ),

("Birthdate: ", set birthdate = textfield(10, "1800"), " mandatory"),

("Deathdate: ", set deathdate = textfield(10, "1900"), " mandatory"), on "Add" do insert artist ) node mw_new_Exhibition {

("Creating a new exhibition") , active href mw_Exhibition_index ( // Take a new no. from the mw_seq sequence (Oracle) //

("Unique identifier: " , set exno = mw_seq.nextval , mw_seq.currval) ,

("Title: " , set title = textfield(60) ) ,

("Organizer: " , set organizer = textfield(30)) ,

("Description: " , set description = textarea(10, 50)) , on "Create" do insert exhibition )} node mw_new_Work

("Adding a new work") , active href mw_Work_index ( //

("Unique identifier: " , set wno = textfield(10)) ,

("Title: ", set title = textfield(60) ),

("Author: ", set author = textfield(10) , (" (artist no.)")) ,

("Support: ", set support = textfield(30)),

("Date: ", set c_date = textfield(10)),

("Height: ", set height = textfield(10)),

("Width: ", set Width = textfield(10)),

("Picture location: ", set picture=textfield(50), " (URL)"), on "Add" do insert work ) node mw_select_work[e]

("Select a work to include in the exhibition") ,
( {
( href mw_add_work_exh[e, wno]("[Add]") , " ", title, " " , expand href mw_Work[wno]("[Details]" ) ) } ) from work node mw_upd_Artist[w]

("Updating an artist description") , active href mw_Artist[w] (

("Unique identifier: " , ano) ,

("Name: ", set name = textfield(60, name) ),

("Birthdate: ", set birthdate = textfield(10, birthdate)),

("Deathdate: ", set deathdate = textfield(10, deathdate)), on "Update" do update artist[ano] ) from artist selected by ano=w /* node mw_new_Exhibition

("Creating a new exhibition") , active href mw_Exhibition_index (

("Unique identifier: " , set exno = textfield(10), " (a number not in { " , include mw_Exh_numbers , "} )" ) ,

("Title: " , set title = textfield(60) ) ,

("Organizer: " , set organizer = textfield(30)) ,

("Description: " , set description = textarea(10, 50)) , on "Create" do insert exhibition ) node mw_Exh_numbers { exno, " " } from exhibition node mw_add_work_exh[e, w]

("Add " , work.title , " to " , exhibition.title) , active href mw_Exhibition[e] ( set work = w , set exhibition = e ,

("Comment: " , set org_comment = textarea(10, 30)) , on "Add" do insert ex_content ) from exhibition, work selected by exno = e and wno = w node mw_select_work[e]

("Select a work to include in the exhibition") ,
( {
( href mw_add_work_exh[e, wno]("[Add to exhibition]") , " ", title, " " , expand href mw_Work[wno]("[Details]" ) ) } node mw_upd_Work[w]

("Updating a work") , active href mw_Work[w] (

("Unique identifier: " , wno) ,

("Title: ", set title = textfield(60, title) ),

("Author: ", set author = textfield(10, author) , (" (artist no.)")) ,

("Support: ", set support = textfield(30, support)),

("Date: ", set c_date = textfield(10, c_date )),

("Height: ", set height = textfield(10, height)),

("Width: ", set Width = textfield(10, Width)),

("Picture location: ", set picture=textfield(50, picture), " (URL)"), on "Update" do update work[wno] ) from work selected by wno=w