diff --git a/cms/src/configuration/cms_default_setup.e b/cms/src/configuration/cms_default_setup.e index ccac309..79ed020 100644 --- a/cms/src/configuration/cms_default_setup.e +++ b/cms/src/configuration/cms_default_setup.e @@ -12,13 +12,18 @@ inherit REFACTORING_HELPER create make + feature {NONE} -- Initialization make (a_layout: CMS_LAYOUT) do layout := a_layout create configuration.make (layout) + configure + end + configure + do site_id := configuration.site_id site_url := configuration.site_url ("") site_name := configuration.site_name ("EWF::CMS") @@ -35,20 +40,14 @@ feature {NONE} -- Initialization initialize end - initialize do build_api_service - build_auth_engine build_mailer - build_modules end feature -- Access - modules: ARRAYED_LIST [CMS_MODULE] - -- List of possible modules - is_html: BOOLEAN -- do @@ -63,34 +62,6 @@ feature -- Access end -feature {NONE} -- Initialization - - build_modules - -- Core modules. (User, Admin, Node) - -- At the moment only node is supported. - local - m: CMS_MODULE - do - create modules.make (3) - --- -- Core --- create {USER_MODULE} m.make --- m.enable --- modules.extend (m) - --- create {ADMIN_MODULE} m.make --- m.enable --- modules.extend (m) - - create {NODE_MODULE} m.make (Current) - m.enable - modules.extend (m) - - create {BASIC_AUTH_MODULE} m.make (Current) - m.enable - modules.extend (m) - end - build_api_service local l_database: DATABASE_CONNECTION @@ -115,12 +86,4 @@ feature {NONE} -- Initialization to_implement ("Not implemented mailer") end -feature -- Change - - add_module (m: CMS_MODULE) - -- Add a module `m' to the list of modules `modules'. - do - modules.force (m) - end - end diff --git a/cms/src/configuration/cms_setup.e b/cms/src/configuration/cms_setup.e index a9f8327..f3bf51d 100644 --- a/cms/src/configuration/cms_setup.e +++ b/cms/src/configuration/cms_setup.e @@ -17,13 +17,6 @@ feature -- Access api_service: CMS_API_SERVICE -- cms api service. - modules: LIST[CMS_MODULE] - -- Possible list of modules. - -- |If we remove Modules from setup. - -- |we can let the CMS_SERVICE define the basic modules. - deferred - end - is_html: BOOLEAN -- api with progresive enhacements css and js, server side rendering. deferred diff --git a/cms/src/modules/cms_module_configurator.e b/cms/src/modules/cms_module_configurator.e new file mode 100644 index 0000000..c8fe906 --- /dev/null +++ b/cms/src/modules/cms_module_configurator.e @@ -0,0 +1,30 @@ +note + description: "Summary description for {CMS_MODULE_CONFIGURATOR}." + author: "" + date: "$Date$" + revision: "$Revision$" + +deferred class + CMS_MODULE_CONFIGURATOR + +feature -- Access + + modules: LIST[CMS_MODULE] + -- Possible list of modules. + deferred + end + +feature -- Add Module + + add_module (a_module: CMS_MODULE) + -- Add module + do + modules.force (a_module) + end + + remove_module (a_module: CMS_MODULE) + -- Remove module + do + modules.prune (a_module) + end +end diff --git a/cms/src/modules/default/cms_default_module_configurator.e b/cms/src/modules/default/cms_default_module_configurator.e new file mode 100644 index 0000000..85132eb --- /dev/null +++ b/cms/src/modules/default/cms_default_module_configurator.e @@ -0,0 +1,53 @@ +note + description: "Summary description for {CMS_DEFAULT_MODULE_CONFIGURATOR}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + CMS_DEFAULT_MODULE_CONFIGURATOR + +inherit + + CMS_MODULE_CONFIGURATOR + +create + make + +feature {NONE} -- Initialization + + make (a_setup: CMS_SETUP) + do + build_modules (a_setup) + end + +feature -- Access + + modules: ARRAYED_LIST [CMS_MODULE] + -- List of possible modules + + +feature -- Configuration + + build_modules (a_setup: CMS_SETUP) + -- Core modules. (User, Admin, Node) + -- At the moment only node is supported. + local + m: CMS_MODULE + do + create modules.make (3) +-- -- Core +-- create {USER_MODULE} m.make (a_setup) +-- m.enable +-- modules.extend (m) + +-- create {ADMIN_MODULE} m.make (a_setup) +-- m.enable +-- modules.extend (m) + + create {NODE_MODULE} m.make (a_setup) + m.enable + modules.extend (m) + end + +end diff --git a/cms/src/service/cms_service.e b/cms/src/service/cms_service.e index 252c9ed..43ccad4 100644 --- a/cms/src/service/cms_service.e +++ b/cms/src/service/cms_service.e @@ -37,16 +37,34 @@ inherit SHARED_LOGGER create - make + make, + make_with_module_configurator feature {NONE} -- Initialization make (a_setup: CMS_SETUP) + -- Build a a default service with a CMS_DEFAULT_MODULE_CONFIGURATOR do setup := a_setup configuration := a_setup.configuration - modules := a_setup.modules + create {CMS_DEFAULT_MODULE_CONFIGURATOR} modules.make (a_setup) create {ARRAYED_LIST[WSF_FILTER]} filters.make (0) + initialize + end + + make_with_module_configurator (a_setup: CMS_SETUP; a_module_configurator: CMS_MODULE_CONFIGURATOR) + -- Build a a default service with a custom CMS_MODULE_CONFIGURATOR + do + setup := a_setup + configuration := a_setup.configuration + modules := a_module_configurator + create {ARRAYED_LIST[WSF_FILTER]} filters.make (0) + initialize + end + + + initialize + do initialize_users initialize_auth_engine initialize_mailer @@ -75,7 +93,7 @@ feature {NONE} -- Initialization do log.write_debug (generator + ".initialize_modules") across - modules as m + modules.modules as m loop if m.item.is_enabled then router.import (m.item.router) @@ -178,13 +196,20 @@ feature -- Access -- CMS configuration. -- | Maybe we can compute it (using `setup') instead of using memory. - modules: LIST [CMS_MODULE] - -- List of possible modules. - -- | Maybe we can compute it (using `setup') instead of using memory. + modules: CMS_MODULE_CONFIGURATOR + -- Configurator of possible modules. filters: LIST[WSF_FILTER] -- List of possible filters. +feature -- Element Change: Modules + + add_module (a_module: CMS_MODULE) + -- Add a module `a_module' to the module configurator `a_module'. + do + modules.add_module (a_module) + end + feature -- Execution execute_default (req: WSF_REQUEST; res: WSF_RESPONSE) diff --git a/examples/roc_api/src/ewf_roc_server.e b/examples/roc_api/src/ewf_roc_server.e index e4eccea..caf08b2 100644 --- a/examples/roc_api/src/ewf_roc_server.e +++ b/examples/roc_api/src/ewf_roc_server.e @@ -111,7 +111,6 @@ feature -- CMS Initialization create layout.make_default end create Result.make (layout) - setup_modules (Result) setup_storage (Result) end @@ -121,20 +120,26 @@ feature -- CMS Initialization do log.write_debug (generator + ".initialize_cms") create cms.make (a_setup) + setup_modules (cms) cms_service := cms end feature -- CMS setup - setup_modules (a_setup: CMS_SETUP) + setup_modules (a_service: CMS_SERVICE) -- Setup modules to be added to the CMS ecosystem. + local + m: CMS_MODULE do - to_implement ("To implement custom modules") + + create {NODE_MODULE} m.make (a_service.setup) + m.enable + a_service.add_module (m) end setup_storage (a_setup: CMS_SETUP) do - + to_implement ("To implement custom storage") end end