Files
ROC/modules/admin/handler/cms_admin_import_handler.e
Jocelyn Fiat 1aad62ed52 Added CMS_RESPONSE.request_url (...)
Update a few callers of CMS_RESPONSE.url (...).
Renamed the demo files using "server" instead of "demo".
2017-04-11 13:19:39 +02:00

134 lines
3.3 KiB
Plaintext

note
description: "[
Administrate import functionality.
]"
date: "$Date$"
revision: "$Revision$"
class
CMS_ADMIN_IMPORT_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
if api.has_permission ("admin import") then
create {GENERIC_VIEW_CMS_RESPONSE} l_response.make (req, res, api)
f := importation_web_form (l_response)
create s.make_empty
f.append_to_html (l_response.wsf_theme, s)
l_response.set_main_content (s)
else
create {FORBIDDEN_ERROR_CMS_RESPONSE} l_response.make (req, res, api)
end
l_response.execute
end
do_post (req: WSF_REQUEST; res: WSF_RESPONSE)
local
l_response: CMS_RESPONSE
s: STRING
f: CMS_FORM
l_importation: CMS_IMPORT_CONTEXT
p: PATH
do
if api.has_permission ("admin import") then
create {GENERIC_VIEW_CMS_RESPONSE} l_response.make (req, res, api)
f := importation_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_import_all_data) then
if attached fd.string_item ("folder") as l_folder then
create p.make_from_string (l_folder)
create l_importation.make (api.site_location.extended (import_folder_name).extended (l_folder))
if l_importation.location_exists then
l_response.add_notice_message ("Import all data (if permitted)!")
api.hooks.invoke_import_from (Void, l_importation, l_response)
create s.make_empty
across
l_importation.logs as ic
loop
s.append (ic.item)
s.append ("<br/>")
s.append_character ('%N')
end
l_response.add_notice_message (s)
else
l_response.add_error_message ("Specified import folder is not found!")
fd.report_invalid_field ("folder", "Folder not found!")
end
else
fd.report_error ("Invalid form data!")
end
else
fd.report_error ("Invalid form data!")
end
end
create s.make_empty
f.append_to_html (l_response.wsf_theme, s)
l_response.set_main_content (s)
else
create {FORBIDDEN_ERROR_CMS_RESPONSE} l_response.make (req, res, api)
end
l_response.execute
end
feature -- Widget
importation_web_form (a_response: CMS_RESPONSE): CMS_FORM
local
f_name: WSF_FORM_TEXT_INPUT
but: WSF_FORM_SUBMIT_INPUT
do
create Result.make (a_response.request_url (Void), "import_all_data")
Result.extend_raw_text ("Import CMS data from ")
create f_name.make_with_text ("folder", "default")
f_name.set_label ("Import folder name")
f_name.set_description ("Folder name under '" + a_response.html_encoded (import_folder_name) + "' folder.")
f_name.set_is_required (True)
Result.extend (f_name)
create but.make_with_text ("op", text_import_all_data)
Result.extend (but)
end
feature -- Interface text.
import_folder_name: STRING_32 = "import"
text_import_all_data: STRING_32 = "Import all data"
end