Indeed, hooks does not require RESPONSE interface, and should be setup before, at the system level (i.e CMS_API) Added exportation solution via CMS_HOOK_EXPORT. Updated blocks settings for demo example project.
105 lines
2.5 KiB
Plaintext
105 lines
2.5 KiB
Plaintext
note
|
|
description: "[
|
|
Administrate export functionality.
|
|
]"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
CMS_ADMIN_EXPORT_HANDLER
|
|
|
|
inherit
|
|
CMS_HANDLER
|
|
|
|
WSF_URI_HANDLER
|
|
rename
|
|
new_mapping as new_uri_mapping
|
|
end
|
|
|
|
WSF_RESOURCE_HANDLER_HELPER
|
|
redefine
|
|
do_get,
|
|
do_post
|
|
end
|
|
|
|
REFACTORING_HELPER
|
|
|
|
create
|
|
make
|
|
|
|
feature -- Execution
|
|
|
|
execute (req: WSF_REQUEST; res: WSF_RESPONSE)
|
|
-- Execute request handler
|
|
do
|
|
execute_methods (req, res)
|
|
end
|
|
|
|
do_get (req: WSF_REQUEST; res: WSF_RESPONSE)
|
|
local
|
|
l_response: CMS_RESPONSE
|
|
s: STRING
|
|
f: CMS_FORM
|
|
do
|
|
create {GENERIC_VIEW_CMS_RESPONSE} l_response.make (req, res, api)
|
|
f := exportation_web_form (l_response)
|
|
create s.make_empty
|
|
f.append_to_html (create {CMS_TO_WSF_THEME}.make (l_response, l_response.theme), s)
|
|
l_response.set_main_content (s)
|
|
l_response.execute
|
|
end
|
|
|
|
do_post (req: WSF_REQUEST; res: WSF_RESPONSE)
|
|
local
|
|
l_response: CMS_RESPONSE
|
|
s: STRING
|
|
f: CMS_FORM
|
|
l_exportation_parameters: CMS_EXPORT_PARAMETERS
|
|
do
|
|
create {GENERIC_VIEW_CMS_RESPONSE} l_response.make (req, res, api)
|
|
f := exportation_web_form (l_response)
|
|
f.process (l_response)
|
|
if
|
|
attached f.last_data as fd and then
|
|
fd.is_valid
|
|
then
|
|
if attached fd.string_item ("op") as l_op and then l_op.same_string (text_export_all_data) then
|
|
create l_exportation_parameters.make (api.site_location.extended ("export").extended ((create {DATE_TIME}.make_now_utc).formatted_out ("yyyy-[0]mm-[0]dd_hh12-[0]mi-[0]ss")))
|
|
l_response.hooks.invoke_export_to (Void, l_exportation_parameters, l_response)
|
|
l_response.add_notice_message ("All data exported (if allowed)!")
|
|
create s.make_empty
|
|
across
|
|
l_exportation_parameters.logs as ic
|
|
loop
|
|
s.append (ic.item)
|
|
s.append ("<br/>")
|
|
s.append_character ('%N')
|
|
end
|
|
l_response.add_notice_message (s)
|
|
else
|
|
fd.report_error ("Invalid form data!")
|
|
end
|
|
end
|
|
create s.make_empty
|
|
f.append_to_html (create {CMS_TO_WSF_THEME}.make (l_response, l_response.theme), s)
|
|
l_response.set_main_content (s)
|
|
l_response.execute
|
|
end
|
|
|
|
feature -- Widget
|
|
|
|
exportation_web_form (a_response: CMS_RESPONSE): CMS_FORM
|
|
local
|
|
but: WSF_FORM_SUBMIT_INPUT
|
|
do
|
|
create Result.make (a_response.url (a_response.location, Void), "export_all_data")
|
|
create but.make_with_text ("op", text_export_all_data)
|
|
Result.extend (but)
|
|
end
|
|
|
|
feature -- Interface text.
|
|
|
|
text_export_all_data: STRING_32 = "Export all data"
|
|
|
|
end
|