- now, the CMS_PAGE_MODULE has to be declared in the related CMS_SETUP via CMS_EXECUTION. (See demo for example) Improved the export facilities. Implemented blog and page export. Added import facilities. Implemented blog and page import. Improved node revision web interface (allow to edit a past revision, in order to restore it as latest revisionm i.e current). Removed specific tag from blog module, and reuse the taxonomy module for that purpose. Added WIKITEXT module that provide a WIKITEXT_FILTER, so now we can have wikitext content. - for now, no support for wiki links such as [[Foobar]].
175 lines
5.3 KiB
Plaintext
175 lines
5.3 KiB
Plaintext
note
|
|
description: "CMS module providing Administration support (back-end)."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
CMS_ADMIN_MODULE
|
|
|
|
inherit
|
|
CMS_MODULE
|
|
redefine
|
|
setup_hooks,
|
|
permissions
|
|
end
|
|
|
|
CMS_HOOK_MENU_SYSTEM_ALTER
|
|
|
|
CMS_HOOK_RESPONSE_ALTER
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make
|
|
-- Create Current module, disabled by default.
|
|
do
|
|
version := "1.0"
|
|
description := "Service to Administrate CMS (users, modules, etc)"
|
|
package := "core"
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
name: STRING = "admin"
|
|
|
|
feature {CMS_API} -- Module Initialization
|
|
|
|
feature -- Access: router
|
|
|
|
setup_router (a_router: WSF_ROUTER; a_api: CMS_API)
|
|
-- <Precursor>
|
|
do
|
|
configure_web (a_api, a_router)
|
|
end
|
|
|
|
configure_web (a_api: CMS_API; a_router: WSF_ROUTER)
|
|
local
|
|
l_admin_handler: CMS_ADMIN_HANDLER
|
|
|
|
l_modules_handler: CMS_ADMIN_MODULES_HANDLER
|
|
l_users_handler: CMS_ADMIN_USERS_HANDLER
|
|
l_roles_handler: CMS_ADMIN_ROLES_HANDLER
|
|
|
|
l_user_handler: CMS_USER_HANDLER
|
|
l_role_handler: CMS_ROLE_HANDLER
|
|
l_admin_logs_handler: CMS_LOGS_HANDLER
|
|
|
|
l_admin_cache_handler: CMS_ADMIN_CACHE_HANDLER
|
|
l_admin_export_handler: CMS_ADMIN_EXPORT_HANDLER
|
|
l_admin_import_handler: CMS_ADMIN_IMPORT_HANDLER
|
|
|
|
l_uri_mapping: WSF_URI_MAPPING
|
|
do
|
|
create l_admin_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin", l_admin_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_modules_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/modules", l_modules_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_users_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/users", l_users_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_roles_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/roles", l_roles_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_admin_logs_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/logs", l_admin_logs_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get)
|
|
|
|
|
|
create l_admin_cache_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/cache", l_admin_cache_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_admin_export_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/export", l_admin_export_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_admin_import_handler.make (a_api)
|
|
create l_uri_mapping.make_trailing_slash_ignored ("/admin/import", l_admin_import_handler)
|
|
a_router.map (l_uri_mapping, a_router.methods_get_post)
|
|
|
|
create l_user_handler.make (a_api)
|
|
a_router.handle ("/admin/add/user", l_user_handler, a_router.methods_get_post)
|
|
a_router.handle ("/admin/user/{id}", l_user_handler, a_router.methods_get)
|
|
a_router.handle ("/admin/user/{id}/edit", l_user_handler, a_router.methods_get_post)
|
|
a_router.handle ("/admin/user/{id}/delete", l_user_handler, a_router.methods_get_post)
|
|
|
|
create l_role_handler.make (a_api)
|
|
a_router.handle ("/admin/add/role", l_role_handler, a_router.methods_get_post)
|
|
a_router.handle ("/admin/role/{id}", l_role_handler, a_router.methods_get)
|
|
a_router.handle ("/admin/role/{id}/edit", l_role_handler, a_router.methods_get_post)
|
|
a_router.handle ("/admin/role/{id}/delete", l_role_handler, a_router.methods_get_post)
|
|
end
|
|
|
|
feature -- Security
|
|
|
|
permissions: LIST [READABLE_STRING_8]
|
|
-- List of permission ids, used by this module, and declared.
|
|
do
|
|
Result := Precursor
|
|
Result.force ("access admin")
|
|
Result.force ("admin users")
|
|
Result.force ("admin roles")
|
|
Result.force ("admin modules")
|
|
Result.force ("install modules")
|
|
Result.force ("view logs")
|
|
Result.force ("admin core caches")
|
|
Result.force ("clear blocks cache")
|
|
Result.force ("admin export")
|
|
Result.force ("admin import")
|
|
Result.force ("export core")
|
|
Result.force ("import core")
|
|
end
|
|
|
|
feature -- Hooks
|
|
|
|
setup_hooks (a_hooks: CMS_HOOK_CORE_MANAGER)
|
|
-- <Precursor>
|
|
do
|
|
a_hooks.subscribe_to_menu_system_alter_hook (Current)
|
|
a_hooks.subscribe_to_response_alter_hook (Current)
|
|
end
|
|
|
|
response_alter (a_response: CMS_RESPONSE)
|
|
-- <Precursor>
|
|
do
|
|
a_response.add_style (a_response.url ("/module/" + name + "/files/css/admin.css", Void), Void)
|
|
end
|
|
|
|
menu_system_alter (a_menu_system: CMS_MENU_SYSTEM; a_response: CMS_RESPONSE)
|
|
local
|
|
lnk: CMS_LOCAL_LINK
|
|
admin_lnk: CMS_LINK_COMPOSITE
|
|
do
|
|
if a_response.api.user_is_authenticated then
|
|
admin_lnk := a_menu_system.management_menu.new_composite_item ("Admin", "admin")
|
|
|
|
create lnk.make ("Module", "admin/modules")
|
|
lnk.set_permission_arguments (<<"manage module">>)
|
|
admin_lnk.extend (lnk)
|
|
|
|
-- Per module cache permission!
|
|
create lnk.make ("Cache", "admin/cache")
|
|
admin_lnk.extend (lnk)
|
|
|
|
-- Per module export permission!
|
|
create lnk.make ("Export", "admin/export")
|
|
admin_lnk.extend (lnk)
|
|
-- Per module import permission!
|
|
create lnk.make ("Import", "admin/import")
|
|
admin_lnk.extend (lnk)
|
|
end
|
|
end
|
|
|
|
note
|
|
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
|
end
|