note description: "Summary description for {IRON_REPO_HTML_RESPONSE}." author: "" date: "$Date$" revision: "$Revision$" class IRON_REPO_HTML_RESPONSE inherit IRON_REPO_CONSTANTS WSF_HTML_PAGE_RESPONSE rename make as make_response redefine append_html_body_code end create make, make_with_body, make_not_permitted, make_not_found feature {NONE} -- Initialization make (req: WSF_REQUEST; a_iron: like iron) do iron := a_iron request := req set_status_code ({HTTP_STATUS_CODE}.ok) make_response add_style (req.absolute_script_url (iron.html_page (iron_version, "style.css")), Void) add_javascript_url (req.absolute_script_url (iron.html_page (iron_version, "iron.js"))) end make_with_body (b: READABLE_STRING_8; req: WSF_REQUEST; a_iron: like iron) do make (req, a_iron) set_body (b) end make_not_permitted (req: WSF_REQUEST; a_iron: like iron) do make (req, a_iron) set_body ("Operation not permitted.") end make_not_found (req: WSF_REQUEST; a_iron: like iron) do make (req, a_iron) set_body ("Resource not found.") end iron: IRON_REPO request: WSF_REQUEST iron_version: detachable IRON_REPO_VERSION feature -- Access location: detachable READABLE_STRING_8 -- Redirected location if any. feature -- Change set_iron_version (v: like iron_version) do iron_version := v end set_location (v: like location) do if v = Void then set_status_code ({HTTP_STATUS_CODE}.ok) header.remove_location else set_status_code ({HTTP_STATUS_CODE}.found) header.put_location (v) end end feature -- Messages message_type_normal: INTEGER = 0 message_type_warning: INTEGER = 1 message_type_error: INTEGER = 2 add_normal_message (m: READABLE_STRING_8) do add_message (m, 0) end add_warning_message (m: READABLE_STRING_8) do add_message (m, 1) end add_error_message (m: READABLE_STRING_8) do add_message (m, 2) end add_message (m: READABLE_STRING_8; k: INTEGER) require valid_k: k = message_type_normal or k = message_type_warning or k = message_type_error local lst: like messages do lst := messages if lst = Void then create lst.make (1) messages := lst end lst.force ([m, k]) end messages: detachable ARRAYED_LIST [TUPLE [message: READABLE_STRING_8; kind: INTEGER]] menu_items: detachable ARRAYED_LIST [TUPLE [title: READABLE_STRING_32; url: READABLE_STRING_8]] add_menu (a_title: READABLE_STRING_32; a_url: READABLE_STRING_8) local lst: like menu_items do lst := menu_items if lst = Void then create lst.make (1) menu_items := lst end lst.force ([a_title, a_url]) end feature {NONE} -- HTML Generation append_html_body_code (s: STRING_8) local old_body, b: like body h, f: STRING l_version: detachable IRON_REPO_VERSION l_form: WSF_FORM l_combo: WSF_FORM_SELECT l_combo_item: WSF_FORM_SELECT_OPTION l_url: READABLE_STRING_8 l_new_url: STRING_8 do h := "