Splitted administration and normal web site interfaces.

This optimises a bit the routing map, and make cleaner separation.
Make the base url for admin pages customizable via `administration.base_path` variable in cms.ini
   note: could be /admin, /roc-admin, or ..
It is possible to have a specific theme for administration via the variable "administration.admin"
This commit is contained in:
2017-03-24 18:38:58 +01:00
parent 13cbb7d987
commit 21e75a6492
40 changed files with 1172 additions and 512 deletions

View File

@@ -19,8 +19,7 @@ inherit
execute_default,
filter_execute,
initialize,
initialize_router,
initialize_filter
initialize_router
end
WSF_NO_PROXY_POLICY
@@ -57,10 +56,7 @@ feature {NONE} -- Initialization
initialize_cms
do
write_debug_log (generator + ".initialize_cms")
-- CMS Initialization
-- for void-safety concern.
create {WSF_MAINTENANCE_FILTER} filter
end
@@ -69,16 +65,7 @@ feature {NONE} -- Initialization
-- Initialize `router`.
do
create_router
-- router setup is delayed toi `initialize_execution`.
-- setup_router
end
initialize_filter
-- Initialize `filter`.
do
create_filter
-- filter setup is delayed toi `initialize_execution`.
-- setup_filter
-- setup_router: delayed to `initialize_execution`.
end
initialize_modules
@@ -108,7 +95,7 @@ feature -- Access
end
modules: CMS_MODULE_COLLECTION
-- Configurator of possible modules.
-- Declared modules.
feature -- CMS setup
@@ -139,14 +126,15 @@ feature -- Settings: router
l_router: like router
l_module: CMS_MODULE
do
api.logger.put_debug (generator + ".setup_router", Void)
-- Configure root of api handler.
l_api := api
l_api.logger.put_debug (generator + ".setup_router", Void)
l_router := router
-- Configure root of api handler.
configure_api_root (l_router)
-- Include routes from modules.
l_api := api
across
modules as ic
loop
@@ -159,6 +147,37 @@ feature -- Settings: router
configure_api_file_handler (l_router)
end
setup_router_for_administration
-- <Precursor>
local
l_api: like api
l_router: like router
l_module: CMS_MODULE
do
l_api := api
l_router := router
l_api.logger.put_debug (generator + ".setup_router_for_administration", Void)
-- Configure root of api handler.
l_router.set_base_url (l_api.administration_path (""))
-- Include routes from modules.
across
modules as ic
loop
l_module := ic.item
if
l_module.is_initialized and then
attached {CMS_ADMINISTRABLE} l_module as l_administration and then
attached l_administration.module_administration as adm
then
adm.setup_router (l_router, l_api)
end
end
map_uri ("/install", create {CMS_ADMIN_INSTALL_HANDLER}.make (api), l_router.methods_head_get)
end
configure_api_root (a_router: WSF_ROUTER)
local
l_root_handler: CMS_ROOT_HANDLER
@@ -171,8 +190,6 @@ feature -- Settings: router
a_router.handle ("/", l_root_handler, l_methods)
a_router.handle ("", l_root_handler, l_methods)
map_uri_agent ("/favicon.ico", agent handle_favicon, a_router.methods_head_get)
map_uri ("/admin/install", create {CMS_ADMIN_INSTALL_HANDLER}.make (api), a_router.methods_head_get)
end
configure_api_file_handler (a_router: WSF_ROUTER)
@@ -217,10 +234,28 @@ feature -- Request execution
-- Initialize CMS execution.
do
request.set_uploaded_file_path (api.temp_location)
setup_filter
if api.is_administration_request (request) then
initialize_administration_execution
else
initialize_site_execution
end
end
initialize_site_execution
-- Initialize for site execution.
do
api.setup_hooks
setup_router
end
initialize_administration_execution
-- Initialize for administration execution.
do
api.switch_to_administration_mode
api.setup_hooks
setup_router_for_administration
end
execute
-- <Precursor>.
do
@@ -233,6 +268,7 @@ feature -- Request execution
do
res.put_header_line ("Date: " + (create {HTTP_DATE}.make_now_utc).string)
res.put_header_line ("X-EWF-Server: CMS_v1.0")
Precursor (req, res)
end
@@ -282,8 +318,6 @@ feature -- Filters
setup_filter
-- Setup `filter'.
do
api.logger.put_debug (generator + ".setup_filter", Void)
append_filter (Current)
end
feature -- Execution