From d9c837918ba407e7fa1ed8c16f44e59f95c5025f Mon Sep 17 00:00:00 2001 From: YNH Webdev Date: Wed, 1 Jan 2014 20:41:28 +0100 Subject: [PATCH] Demo upload --- .../kernel/webcontrol/wsf_form_control.e | 1 + .../webcontrol/wsf_form_element_control.e | 7 +- examples/widgetapp/application.e | 11 +++ examples/widgetapp/base_page.e | 1 + examples/widgetapp/image_slider_page.e | 4 - examples/widgetapp/sample_page.e | 35 +------ examples/widgetapp/upload_page.e | 95 +++++++++++++++++++ 7 files changed, 113 insertions(+), 41 deletions(-) create mode 100644 examples/widgetapp/upload_page.e diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e index 81fc8796..8bc55a65 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e @@ -34,6 +34,7 @@ feature {NONE} -- Initialization make_multi_control tag_name := "form" label_width := w + add_class ("form-horizontal") end feature diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e index 1c759e94..1494a207 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e @@ -36,12 +36,13 @@ feature {NONE} -- Initialization do make_control ("div") add_class ("form-group") - if attached {WSF_HTML_CONTROL} c then - c.add_class ("form-control-static") - elseif not attached {WSF_VALUE_CONTROL [LIST[ANY]]} c then + if not attached {WSF_VALUE_CONTROL [LIST[ANY]]} c then c.add_class ("form-control") + else + c.add_class ("form-control-static") end + label_width := 2 value_control := c validators := v diff --git a/examples/widgetapp/application.e b/examples/widgetapp/application.e index 8e250c49..d1dbc466 100644 --- a/examples/widgetapp/application.e +++ b/examples/widgetapp/application.e @@ -81,6 +81,7 @@ feature -- Router and Filter map_agent_uri ("/grid", agent grid_demo, Void) map_agent_uri ("/repeater", agent repeater_demo, Void) map_agent_uri ("/slider", agent slider_demo, Void) + map_agent_uri ("/upload", agent upload_demo, Void) map_agent_uri ("/codeview", agent codeview, Void) -- NOTE: you could put all those files in a specific folder, and use WSF_FILE_SYSTEM_HANDLER with "/" @@ -137,6 +138,16 @@ feature -- Execution page.execute end + upload_demo (request: WSF_REQUEST; response: WSF_RESPONSE) + local + page: UPLOAD_PAGE + do + -- To send a response we need to setup, the status code and + -- the response headers. + create page.make (request, response) + page.execute + end + codeview (request: WSF_REQUEST; response: WSF_RESPONSE) local page: CODEVIEW_PAGE diff --git a/examples/widgetapp/base_page.e b/examples/widgetapp/base_page.e index 7e05d5d1..81d5b65e 100644 --- a/examples/widgetapp/base_page.e +++ b/examples/widgetapp/base_page.e @@ -32,6 +32,7 @@ feature navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/grid%"", "Grid")) navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/repeater%"", "Repeater")) navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/slider%"", "Slider")) + navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/upload%"", "File Upload")) navbar.add_element (dropdown) navbar.add_list_element_right (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/about%"", "About")) create btn.make ("Show Code") diff --git a/examples/widgetapp/image_slider_page.e b/examples/widgetapp/image_slider_page.e index d2411873..e0b82880 100644 --- a/examples/widgetapp/image_slider_page.e +++ b/examples/widgetapp/image_slider_page.e @@ -20,13 +20,9 @@ create feature -- Implementation initialize_controls - local - form: WSF_FORM_CONTROL do Precursor create slider.make - create form.make - form.add_control (create {WSF_FORM_ELEMENT_CONTROL [STRING]}.make ("Input", create {WSF_INPUT_CONTROL}.make ("Test"))) --slider.add_control (form, Void) --slider.add_image ("http://www.placesmustseen.com/wp-content/uploads/2013/01/paris-eiffel-tower.jpg", "Eiffel Tower") slider.add_image ("http://31.media.tumblr.com/43f3edae3fb569943047077cddf93c79/tumblr_mtw7wdX9cm1st5lhmo1_1280.jpg", "car") diff --git a/examples/widgetapp/sample_page.e b/examples/widgetapp/sample_page.e index 2a1d4c49..89adfb68 100644 --- a/examples/widgetapp/sample_page.e +++ b/examples/widgetapp/sample_page.e @@ -26,14 +26,11 @@ feature n3_container: WSF_FORM_ELEMENT_CONTROL [STRING] n4_container: WSF_FORM_ELEMENT_CONTROL [STRING] n5_container: WSF_FORM_ELEMENT_CONTROL [STRING] - n6_container: WSF_FORM_ELEMENT_CONTROL [detachable WSF_PENDING_FILE] - n7_container: WSF_FORM_ELEMENT_CONTROL [detachable WSF_PENDING_FILE] cats_container: WSF_FORM_ELEMENT_CONTROL [LIST [STRING]] source: INCREASING_PROGRESSSOURCE do Precursor - create form.make - form.add_class ("form-horizontal") + create form.make --Number 1 create textbox1.make ("1") create n1_container.make ("Number1", textbox1) @@ -66,21 +63,6 @@ feature cats_container.add_validator (create {WSF_MIN_VALIDATOR [LIST [STRING]]}.make (1, "Choose at least one category")) cats_container.add_validator (create {WSF_MAX_VALIDATOR [LIST [STRING]]}.make (2, "Choose at most two category")) form.add_control (cats_container) - --File - create filebox.make - filebox.set_upload_function (agent upload_file) - create n6_container.make ("File Upload", filebox) - n6_container.add_validator (create {WSF_FILESIZE_VALIDATOR}.make (10000000, "File must be smaller than 10MB")) - form.add_control (n6_container) - --File - create filebox2.make - filebox2.set_upload_function (agent upload_file) - filebox2.set_change_event (agent do - filebox2.start_upload - end) - create n7_container.make ("Auto Upload", filebox2) - n7_container.add_validator (create {WSF_FILESIZE_VALIDATOR}.make (10000000, "File must be smaller than 10MB")) - form.add_control (n7_container) --Button 1 create button1.make ("Update") button1.set_click_event (agent handle_click) @@ -105,23 +87,12 @@ feature navbar.set_active (1) end - upload_file (f: ITERABLE [WSF_UPLOADED_FILE]): detachable String - do - -- Store file on server and return link - across - f as i - loop - Result:=i.item.filename - end - end - handle_click local text: STRING do form.validate if form.is_valid then - filebox.start_upload --progress.set_progress ((textbox1.text.to_integer_64 / textbox2.text.to_integer_64 * 100).ceiling) text := textbox1.text + " + " + textbox2.text + " = " + (textbox1.text.to_integer_64 + textbox2.text.to_integer_64).out text.append ("