indexing description : "System's root class" date: "$Date$" revision: "$Revision$" class ROOT_CLASS inherit CGI_INTERFACE INLINE_ELEMENT create make feature -- Initialization Debug_mode: BOOLEAN is True -- Should exception trace be displayed in case a crash occurs? page: VIEW the_layout : STRING execute is -- Perform form entries processing, and send back the answer -- to the browser. local ii : INTEGER menu_names:ARRAY[STRING] do create menu_names.make (1,7) menu_names.put ("Menu",1) menu_names.put ("Tables",2) menu_names.put ("Titles",3) menu_names.put ("Unordered List",4) menu_names.put ("Ordered List",5) menu_names.put ("Definition List",6) menu_names.put ("Conclusion",7) -- select the layout, defaulting to 3 column if field_defined ("layout") and then text_field_value ("layout").is_equal("2col") then page:=create {LAYOUT_2_COL}.make the_layout := "layout=2col" page.content_footer.put_paragraph (link_to ("?layout=3col", "click here to change to 3 col layout")) else page := create {LAYOUT_3_COL}.make the_layout := "layout=3col" page.content_footer.put_paragraph (link_to ("?layout=2col", "click here to change to 2 col layout")) end -- set common stuff page.put_title("Test application using eiffelweb2") page.content_header.put_h1 (emphasize("EiffelWeb2")+" test application") page.content_left.put_paragraph (link_to ("?"+the_layout, "home")) from ii:=1 until ii>7 loop page.content_left.put_paragraph (link_to ("?p="+ii.out+"&"+the_layout, menu_names.item (ii))) ii := ii+1 end page.content_right.put_paragraph ("This is the right column. It will only appear if you select this layout.") page.content_right.put_paragraph ("You can add stuff in here if you want, but if you don't display this column the stuff is "+emphasize ("not")+" avaiable!") page.content_footer.put_line page.content_footer.put_paragraph (link_to ("http://validator.w3.org/check?uri=referer", image ("http://www.w3.org/Icons/valid-xhtml10", "Valid XHTML 1.0 Strict")) + "© 2007 Philipp Mahler, Matthias Loeu") -- select the correct page to display if field_defined ("p") then if text_field_value ("p").is_equal ("1") then do_page_1 elseif text_field_value ("p").is_equal ("2") then do_page_2 elseif text_field_value ("p").is_equal ("3") then do_page_3 elseif text_field_value ("p").is_equal ("4") then do_page_4 elseif text_field_value ("p").is_equal ("5") then do_page_5 elseif text_field_value ("p").is_equal ("6") then do_page_6 elseif text_field_value ("p").is_equal ("7") then do_page_7 else do_page_0 end elseif field_defined ("code") then print_out_code else do_page_0 end if true then response_header.generate_text_header response_header.send_to_browser response_header.Output.put_string (page.out) else io.put_string (page.out) end rescue io.error.putstring ("crash in `compute' from DOWNLOAD_INTERACTION%N") end feature -- pages do_page_0 is -- Introduction page local list1 : HTML_UNORDERED_LIST do page.content_header.put_h2 ("Welcome") page.content_middle.put_h2 ("Introduction") page.content_middle.put_paragraph ("This application demonstrates how to use the "+emphasize ("new")+" EiffelWeb library by actually using it.") page.content_middle.put_h2 ("Features") create list1.make list1.add_element ("Generic layout and various different layouts (currently two)") list1.add_element ("layout changes with external css file") list1.add_element ("output in strict html by [www.w3.org]'s standards") list1.add_element ("simple way of adding lists and tables to the content areas") page.content_middle.put_html (list1.out) page.content_middle.put_h2 ("Example") page.content_middle.put_paragraph ("To add a footer you just have to use the feature %"page.content_footer.put_*%"...") page.content_middle.put_line page.content_middle.put_html(link_to ("?code=0"+"&"+the_layout, "533 c0d3")) end do_page_1 is -- displaying page 1 do page.content_header.put_h2 ("Menu") page.content_middle.put_paragraph ("This menu on the left is generically generated by a loop; short, nice and easy!") page.content_middle.put_paragraph ("The text in the middle is easily generated by a put_paragraph feature wich takes a string and thats it") page.content_middle.put_line page.content_middle.put_html (link_to("?code=1"+"&"+"layout="+text_field_value ("layout"), "533 c0d3")) end do_page_2 is -- displaying page 2 local tabelle:HTML_TABLE entries,row1,row2,row3:ARRAY[STRING] do page.content_header.put_h2 ("Tables") create entries.make (1,2) create row1.make(1,2) create row2.make(1,2) create row3.make(1,2) entries.put ("Advantages",1) entries.put ("Disadvantages",2) row1.put ("very easy to extend",1) row1.put ("none!?",2) row2.put("one can create rows and cols from arrays",1) row2.put("none!?",2) row3.put ("one can manipulate every single cell as well",1) row3.put("none!? ;)",2) create tabelle.make (4,2) tabelle.set_border (1) tabelle.set_caption ("This is a table") tabelle.set_row (1) tabelle.put_row (entries) tabelle.set_row (2) tabelle.put_row (row1) tabelle.set_row (3) tabelle.put_row (row2) tabelle.set_row (4) tabelle.put_row (row3) page.content_middle.put_html (tabelle.out) page.content_middle.put_line page.content_middle.put_html (link_to("?code=2"+"&"+"layout="+the_layout, "533 c0d3")) end do_page_3 is -- displaying page 3 do page.content_header.put_h2("Titles, Headers and Emphasises") page.put_title ("this is a pretty different title!") page.content_middle.put_h1 ("A header 1") page.content_middle.put_paragraph ("Again taking only a string") page.content_middle.put_h2 ("A header 2") page.content_middle.put_paragraph ("Again taking " + emphasize ("only ") + "a string") page.content_middle.put_paragraph ("i guess the "+emphasize ("only ") +"has to be emphasized...") page.content_middle.put_line page.content_middle.put_html (link_to("?code=3"+"&"+"layout="+the_layout, "533 c0d3")) end do_page_4 is -- displaying page 4 local liste:HTML_UNORDERED_LIST do page.content_header.put_h2("Unordered List") page.content_middle.put_h3 ("this is an unordered list") create liste.make liste.add_element ("it looks nice") liste.add_element ("clean") liste.add_element ("standard conform") page.content_middle.put_html (liste.out) page.content_middle.put_line page.content_middle.put_html (link_to("?code=4"+"&"+"layout="+the_layout, "533 c0d3")) end do_page_5 is -- displaying page 5 local liste:HTML_ORDERED_LIST do page.content_header.put_h2("Ordered List") page.content_middle.put_h3 ("this is an ordered list to show the priority") create liste.make liste.add_element ("it is easy") liste.add_element("it is standard conform") liste.add_element("it looks nice") liste.add_element ("and clean") page.content_middle.put_html (liste.out) page.content_middle.put_line page.content_middle.put_html (link_to("?code=5"+"&"+"layout="+the_layout, "533 c0d3")) end do_page_6 is -- displaying page 6 local liste:HTML_DEFINITION_LIST liste2:HTML_ORDERED_LIST tabelle:HTML_TABLE do page.content_header.put_h2 ("Definition List") create liste.make create liste2.make create tabelle.make (2,1) liste.add_term_element ("Definition List") liste.add_element ("A definition list is special") liste.add_element ("A definition list is different from other lists") liste.add_element("but that makes it interesting") liste.add_term_element("Interesting: ") liste.add_element ("in most cases interesting is different") liste.add_element ("interesting is as well that there might be a better definition of interesting") liste.add_term_element("nesting") liste.add_element("nesting is everywhere possible") liste2.add_element ("first point of the nested list") liste2.add_element ("and the second one") liste.add_element (liste2.out) tabelle.put ("and this is a table",1,1) tabelle.put ("with entries",2,1) tabelle.set_border (1) liste.add_element (tabelle.out) page.content_middle.put_html (liste.out) page.content_middle.put_line page.content_middle.put_html (link_to("?code=6"+"&"+"layout="+the_layout, "533 c0d3")) end do_page_7 is -- displaying page 7 do page.content_header.put_h2 ("Conclusion") page.content_middle.put_paragraph ("we do like it and hope so do you") page.content_middle.put_paragraph ("to have a closer look at the source code, just click "+link_to ("http://svn.origo.ethz.ch/wsvn/mews","here")) page.content_middle.put_line page.content_middle.put_html (link_to("?code=7"+"&"+"layout="+the_layout, "533 c0d3")) end print_out_code is -- printing out code of page local liste:HTML_ORDERED_LIST menu_names:ARRAY[STRING] do create menu_names.make (0,7) menu_names.put ("Home",0) menu_names.put ("Menu",1) menu_names.put ("Tables",2) menu_names.put ("Titles",3) menu_names.put ("Unordered List",4) menu_names.put ("Ordered List",5) menu_names.put ("Definition List",6) menu_names.put ("Conclusion",7) create liste.make page.content_header.put_h2 ("Code") page.content_middle.put_h2 ("code for page " + menu_names.item (text_field_value ("code").to_integer)) if text_field_value ("code").is_equal ("0") then liste.add_element ("page.content_header.put_h2 (%"Welcome%")") liste.add_element ("page.content_middle.put_h2 (%"Introduction%")") liste.add_element ("page.content_middle.put_paragraph (%"This application demonstrates how to use the %"+emphasize (%"new%")+%" EiffelWeb library by actually using it.%")") liste.add_element ("page.content_middle.put_h2 (%"Features%")") liste.add_element ("create list1.make") liste.add_element ("list1.add_element (%"Generic layout and various different layouts (currently two)%")") liste.add_element ("list1.add_element (%"layout changes with external css file%")") liste.add_element ("list1.add_element (%"output in strict html by [www.w3.org]'s standards%")") liste.add_element ("list1.add_element (%"simple way of adding lists and tables to the content areas%")") liste.add_element ("page.content_middle.put_html (list1.out)") liste.add_element ("page.content_middle.put_h2 (%"Example%")") liste.add_element ("page.content_middle.put_paragraph (%"To add a footer you just have to use the feature %"page.content_footer.put_*%"...%")") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html(link_to (%"?code=0%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) elseif text_field_value ("code").is_equal ("1") then liste.add_element ("page.content_header.put_h2 (%"Menu%")") liste.add_element ("page.content_middle.put_paragraph (%"This menu on the left is generically generated by a loop; short, nice and easy!%")") liste.add_element ("page.content_middle.put_paragraph (%"The text in the middle is easily generated by a put_paragraph feature wich takes a string and thats it%")") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=1%"+%"&l%"+%"ayout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) elseif text_field_value ("code").is_equal ("2") then liste.add_element ("page.content_header.put_h2 (%"Tables%")") liste.add_element ("create entries.make (1,2)") liste.add_element ("create row1.make(1,2)") liste.add_element ("create row2.make(1,2)") liste.add_element ("create row3.make(1,2)") liste.add_element ("entries.put (%"Advantages%",1)") liste.add_element ("entries.put (%"Disadvantages%",2)") liste.add_element ("row1.put (%"very easy to extend%",1)") liste.add_element ("row1.put (%"none!?%",2)") liste.add_element ("row2.put(%"one can create rows and cols from arrays%",1)") liste.add_element ("row2.put(%"none!?%",2)") liste.add_element ("row3.put (%"one can manipulate every single cell as well%",1)") liste.add_element ("row3.put(%"none!? ;)%",2)") liste.add_element ("create tabelle.make (4,2)") liste.add_element ("tabelle.set_border (1)") liste.add_element ("tabelle.set_caption (%"This is a table%")") liste.add_element ("tabelle.set_row (1)") liste.add_element ("tabelle.put_row (entries)") liste.add_element ("tabelle.set_row (2)") liste.add_element ("tabelle.put_row (row1)") liste.add_element ("tabelle.set_row (3)") liste.add_element ("tabelle.put_row (row2)") liste.add_element ("tabelle.set_row (4)") liste.add_element ("tabelle.put_row (row3)") liste.add_element ("page.content_middle.put_html (tabelle.out)") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=2%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) elseif text_field_value ("code").is_equal ("3") then liste.add_element ("page.content_header.put_h2(%"Titles, Headers and Emphasises%")") liste.add_element ("page.put_title (%"this is a pretty different title!%")") liste.add_element ("page.content_middle.put_h1 (%"A header 1%")") liste.add_element ("page.content_middle.put_paragraph (%"Again taking only a string%")") liste.add_element ("page.content_middle.put_h2 (%"A header 2%")") liste.add_element ("page.content_middle.put_paragraph (%"Again taking %" + emphasize (%"only %") + %"a string%")") liste.add_element ("page.content_middle.put_paragraph (%"i guess the %"+emphasize (%"only %") +%"has to be emphasized...%")") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=3%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) elseif text_field_value ("code").is_equal ("4") then liste.add_element ("page.content_header.put_h2(%"Unordered List%")") liste.add_element ("page.content_middle.put_h3 (%"this is an unordered list%")") liste.add_element ("create liste.make") liste.add_element ("liste.add_element (%"it looks nice%")") liste.add_element ("liste.add_element (%"clean%")") liste.add_element ("liste.add_element (%"standard conform%")") liste.add_element ("page.content_middle.put_html (liste.out)") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=4%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) elseif text_field_value ("code").is_equal ("5") then liste.add_element ("page.content_header.put_h2(%"Ordered List%")") liste.add_element ("page.content_middle.put_h3 (%"this is an ordered list to show the priority%")") liste.add_element ("create liste.make") liste.add_element ("liste.add_element (%"it is easy%")") liste.add_element ("liste.add_element(%"it is standard conform%")") liste.add_element ("liste.add_element(%"it looks nice%")") liste.add_element ("liste.add_element (%"and clean%")") liste.add_element ("page.content_middle.put_html (liste.out)") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=5%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) elseif text_field_value ("code").is_equal ("6") then liste.add_element ("page.content_header.put_h2 (%"Definition List%")") liste.add_element ("create liste.make") liste.add_element ("create liste2.make") liste.add_element ("create tabelle.make (2,1)") liste.add_element ("liste.add_term_element (%"Definition List%")") liste.add_element ("liste.add_element (%"A definition list is special%")") liste.add_element ("liste.add_element (%"A definition list is different from other lists%")") liste.add_element ("liste.add_element(%"but that makes it interesting%")") liste.add_element ("liste.add_term_element(%"Interesting: %")") liste.add_element ("liste.add_element (%"in most cases interesting is different%")") liste.add_element ("liste.add_element (%"interesting is as well that there might be a better definition of interesting%")") liste.add_element ("liste.add_term_element(%"nesting%")") liste.add_element ("liste.add_element(%"nesting is everywhere possible%")") liste.add_element ("liste2.add_element (%"first point of the nested list%")") liste.add_element ("liste2.add_element (%"and the second one%")") liste.add_element ("liste.add_element (liste2.out)") liste.add_element ("tabelle.put (%"and this is a table%",1,1)") liste.add_element ("tabelle.put (%"with entries%",2,1)") liste.add_element ("tabelle.set_border (1)") liste.add_element ("liste.add_element (tabelle.out)") liste.add_element ("page.content_middle.put_html (liste.out)") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=6%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html(liste.out) elseif text_field_value ("code").is_equal ("7") then liste.add_element ("page.content_header.put_h2 (%"Conclusion%")") liste.add_element ("page.content_middle.put_paragraph (%"we do like it and hope so do you%")") liste.add_element ("page.content_middle.put_paragraph (%"to have a closer look at the source code, just click %"+link_to (%"http://svn.origo.ethz.ch/wsvn/mews%",%"here%"))") liste.add_element ("page.content_middle.put_line") liste.add_element ("page.content_middle.put_html (link_to(%"?code=7%"+%"&%"+%"layout=%", %"533 c0d3%"))") page.content_middle.put_html (liste.out) else page.content_middle.put_paragraph ("very sorry, this is some kind of improved 404, lets call it 405!") page.content_middle.put_paragraph ("good night!") end end end -- class ROOT_CLASS