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.
159 lines
4.1 KiB
Plaintext
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
|