Files
ROC/modules/taxonomy/handler/taxonomy_handler.e
Jocelyn Fiat 78ef7af5f8 Removed obsolete calls, harmonized predefine response, added non admin user pages.
When access is denied, also provide when possible and wanted, the needed
permissions so that in the future, user will be able to ask for
permission easily.
Renamed previous user handlers as admin user handlers.
Added non admin user handler /user/{uid} .
Add new `send_...` response to `CMS_API.response_api`, and use them
instead of `create {...RESPONSE}.... ; execute`.
Fixed potential issue with storage mailer initialization if folder does
not exist.
Added utf_8_encoded helpers function on CMS_API interface.
Fixed a few unicode potential issues.
Removed a few obsolete calls.
2017-06-09 09:29:41 +02:00

159 lines
4.1 KiB
Plaintext

note
description: "[
Request handler related to
/taxonomy/term/{termid}
]"
date: "$Date$"
revision: "$revision$"
class
TAXONOMY_HANDLER
inherit
CMS_MODULE_HANDLER [CMS_TAXONOMY_API]
rename
module_api as taxonomy_api
end
WSF_URI_HANDLER
rename
execute as uri_execute,
new_mapping as new_uri_mapping
end
WSF_URI_TEMPLATE_HANDLER
rename
execute as uri_template_execute,
new_mapping as new_uri_template_mapping
select
new_uri_template_mapping
end
WSF_RESOURCE_HANDLER_HELPER
redefine
do_get
end
REFACTORING_HELPER
CMS_API_ACCESS
create
make
feature -- execute
execute (req: WSF_REQUEST; res: WSF_RESPONSE)
-- Execute request handler for any kind of mapping.
do
execute_methods (req, res)
end
uri_execute (req: WSF_REQUEST; res: WSF_RESPONSE)
-- Execute request handler for URI mapping.
do
execute (req, res)
end
uri_template_execute (req: WSF_REQUEST; res: WSF_RESPONSE)
-- Execute request handler for URI-template mapping.
do
execute (req, res)
end
feature -- HTTP Methods
do_get (req: WSF_REQUEST; res: WSF_RESPONSE)
-- <Precursor>
local
l_page: CMS_RESPONSE
tid: INTEGER_64
l_entity: detachable READABLE_STRING_32
s: STRING
l_contents: CMS_TAXONOMY_ENTITY_CONTAINER
ct: CMS_CONTENT
do
if
attached {WSF_STRING} req.path_parameter ("termid") as p_termid and then
p_termid.is_integer
then
tid := p_termid.value.to_integer_64
end
if tid > 0 then
if attached taxonomy_api.term_by_id (tid) as t then
-- Responding with `main_content_html (l_page)'.
create {GENERIC_VIEW_CMS_RESPONSE} l_page.make (req, res, api)
l_page.set_title (t.text)
create s.make_empty
if
attached taxonomy_api.entities_associated_with_term (t) as l_entity_type_lst and then
not l_entity_type_lst.is_empty
then
create l_contents.make (l_entity_type_lst, 25, create {DATE_TIME}.make_now_utc, Void)
if attached api.hooks.subscribers ({CMS_TAXONOMY_HOOK}) as lst then
across
lst as ic
loop
if attached {CMS_TAXONOMY_HOOK} ic.item as h then
h.populate_content_associated_with_term (t, l_contents)
end
end
l_contents.sort
s.append ("<ul class=%"taxonomy-entities%">")
across
l_contents as ic
loop
ct := ic.item.content
s.append ("<li class=%""+ ct.content_type +"%">")
if attached ct.link as lnk then
l_page.append_link_to_html (lnk.title, lnk.location, Void, s)
end
if attached api.content_type_webform_manager_by_name (ct.content_type) as l_wfm then
l_wfm.append_content_as_html_to (ct, True, s, l_page)
end
s.append ("</li>%N")
end
s.append ("</ul>%N")
end
if not l_contents.taxonomy_info.is_empty then
check all_taxo_handled: False end
s.append ("<ul class=%"error%">Item(s) with unknown content type!")
across
l_contents.taxonomy_info as ic
loop
-- FIXME: for now basic implementation .. to be replaced by specific hook !
if attached ic.item.entity as e and then e.is_valid_as_string_8 then
l_entity := e
s.append ("<li>Entity %"")
s.append (api.html_encoded (e))
s.append ("%"")
if attached ic.item.typename as l_type and then l_type.is_valid_as_string_8 then
s.append (" {" + api.html_encoded (l_type) + "}")
end
s.append ("</li>")
end
end
s.append ("</ul>%N")
end
else
if taxonomy_api.error_handler.has_error then
l_page.add_error_message ({STRING_32} "Query error: " + taxonomy_api.error_handler.as_string_representation)
end
s.append ("No entity found.")
end
l_page.set_main_content (s)
l_page.execute
else
-- Responding with `main_content_html (l_page)'.
send_not_found (req, res)
end
else
-- Responding with `main_content_html (l_page)'.
create {BAD_REQUEST_ERROR_CMS_RESPONSE} l_page.make (req, res, api)
l_page.execute
end
end
end