diff --git a/cms/src/configuration/cms_configuration.e b/cms/src/configuration/cms_configuration.e index ae7f91a..2c4437b 100644 --- a/cms/src/configuration/cms_configuration.e +++ b/cms/src/configuration/cms_configuration.e @@ -1,8 +1,14 @@ note description: "[ - Configure the basic settings for a CMS application, for example where to look for themes, the name of the application, etc. - The settings can be configured by default using the current working directory, using the commands provided by the class or by an external configuration file - ]" + Configure the basic settings for a CMS application, + i.e: where to look for themes, name of the application, etc... + + The settings can be configured by default: + - using the current working directory, + - using the commands provided by the class + - or by an external configuration file. + ]" + class CMS_CONFIGURATION @@ -119,7 +125,7 @@ feature -- Access end end - site_url (dft: like site_url): READABLE_STRING_8 + site_url (dft: like site_url): detachable READABLE_STRING_8 do if attached options.item ("site.url") as s then Result := s diff --git a/cms/src/configuration/cms_default_setup.e b/cms/src/configuration/cms_default_setup.e index a2c38f6..03a37bb 100644 --- a/cms/src/configuration/cms_default_setup.e +++ b/cms/src/configuration/cms_default_setup.e @@ -35,7 +35,7 @@ feature {NONE} -- Initialization configure do site_id := configuration.site_id - site_url := configuration.site_url ("") + site_url := configuration.site_url (Void) site_name := configuration.site_name ("EWF::CMS") site_email := configuration.site_email ("webmaster") themes_location := configuration.themes_location @@ -104,7 +104,7 @@ feature -- Compute location -- assets (js, css, images, etc) -- Not used at the moment. do - debug + debug ("refactor_fixme") fixme ("Check if we really need it") end theme_resource_location := theme_location diff --git a/cms/src/configuration/cms_layout.e b/cms/src/configuration/cms_layout.e index 08297f5..71bcb59 100644 --- a/cms/src/configuration/cms_layout.e +++ b/cms/src/configuration/cms_layout.e @@ -1,12 +1,12 @@ note description: "[ - CMS API Layout, to provide paths - *config - *application - *logs - *documentation - *themes - ]" + CMS Layout providing file system locations for + - config + - application + - logs + - documentation + - themes + ]" date: "$Date$" revision: "$Revision$" diff --git a/cms/src/configuration/cms_setup.e b/cms/src/configuration/cms_setup.e index f5dd46f..e2ffd30 100644 --- a/cms/src/configuration/cms_setup.e +++ b/cms/src/configuration/cms_setup.e @@ -39,8 +39,8 @@ feature -- Access: Site site_email: READABLE_STRING_8 -- Email for the site. - site_url: READABLE_STRING_8 - -- Base url of the site. + site_url: detachable READABLE_STRING_8 + -- Optional base url of the site. front_page_path: detachable READABLE_STRING_8 -- Optional path defining the front page. diff --git a/cms/src/service/cms_api.e b/cms/src/service/cms_api.e index a727b41..34bec4b 100644 --- a/cms/src/service/cms_api.e +++ b/cms/src/service/cms_api.e @@ -94,7 +94,9 @@ feature -- Access: Node nodes: LIST[CMS_NODE] -- List of nodes. do - fixme ("Implementation") + debug ("refactor_fixme") + fixme ("Implementation") + end Result := storage.recent_nodes (0, 10) end @@ -107,7 +109,9 @@ feature -- Access: Node node (a_id: INTEGER_64): detachable CMS_NODE -- Node by ID. do - fixme ("Check preconditions") + debug ("refactor_fixme") + fixme ("Check preconditions") + end Result := storage.node (a_id) end @@ -134,21 +138,27 @@ feature -- Change: Node update_node_title (a_id: like {CMS_USER}.id; a_node_id: like {CMS_NODE}.id; a_title: READABLE_STRING_32) -- Update node title, with user identified by `a_id', with node id `a_node_id' and a new title `a_title'. do - fixme ("Check preconditions") + debug ("refactor_fixme") + fixme ("Check preconditions") + end storage.update_node_title (a_id,a_node_id,a_title) end update_node_summary (a_id: like {CMS_USER}.id; a_node_id: like {CMS_NODE}.id; a_summary: READABLE_STRING_32) -- Update node summary, with user identified by `a_id', with node id `a_node_id' and a new summary `a_summary'. do - fixme ("Check preconditions") + debug ("refactor_fixme") + fixme ("Check preconditions") + end storage.update_node_summary (a_id,a_node_id, a_summary) end update_node_content (a_id: like {CMS_USER}.id; a_node_id: like {CMS_NODE}.id; a_content: READABLE_STRING_32) -- Update node content, with user identified by `a_id', with node id `a_node_id' and a new content `a_content'. do - fixme ("Check preconditions") + debug ("refactor_fixme") + fixme ("Check preconditions") + end storage.update_node_content (a_id,a_node_id, a_content) end @@ -172,7 +182,9 @@ feature -- Change User then storage.save_user (a_user) else - fixme ("Add error") + debug ("refactor_fixme") + fixme ("Add error") + end end end diff --git a/cms/src/service/cms_service.e b/cms/src/service/cms_service.e index de634a0..f37b1cb 100644 --- a/cms/src/service/cms_service.e +++ b/cms/src/service/cms_service.e @@ -245,7 +245,7 @@ feature -- Execution execute_default (req: WSF_REQUEST; res: WSF_RESPONSE) -- Default request handler if no other are relevant do - fixme ("To Implement") + to_implement ("Default response for CMS_SERVICE") end note diff --git a/cms/src/service/response/cms_response.e b/cms/src/service/response/cms_response.e index d67fc0e..5ba98a1 100644 --- a/cms/src/service/response/cms_response.e +++ b/cms/src/service/response/cms_response.e @@ -29,6 +29,7 @@ feature {NONE} -- Initialization get_theme create menu_system.make initialize_block_region_settings + create hook_subscribers.make (0) register_hooks end @@ -273,10 +274,12 @@ feature -- Blocks initialization local l_table: like block_region_settings do - fixme ("CHECK:Can we use the same structure as in theme.info?") + debug ("refactor_fixme") + fixme ("CHECK:Can we use the same structure as in theme.info?") + fixme ("let the user choose ...") + end create regions.make_caseless (5) - fixme ("let the user choose ...") create l_table.make_caseless (10) l_table["top"] := "top" l_table["header"] := "header" @@ -337,7 +340,9 @@ feature -- Blocks get_blocks do - fixme ("find a way to have this in configuration or database, and allow different order") + debug ("refactor_fixme") + fixme ("find a way to have this in configuration or database, and allow different order") + end add_block (top_header_block, "top") add_block (header_block, "header") if attached message_block as m then @@ -476,118 +481,111 @@ feature -- Blocks create Result.make ("made_with", Void, made_with_html, Void) end -feature -- Hook: value alter - subscribe_to_value_table_alter_hook (h: like value_table_alter_hooks.item) +feature -- Hooks + + hook_subscribers: HASH_TABLE [LIST [CMS_HOOK], TYPE [CMS_HOOK]] + -- Hook indexed by hook identifier. + + subscribe_to_hook (h: CMS_HOOK; a_hook_type: TYPE [CMS_HOOK]) + -- Subscribe `h' to hooks identified by `a_hook_type'. local - lst: like value_table_alter_hooks + lst: detachable LIST [CMS_HOOK] do - lst := value_table_alter_hooks + lst := hook_subscribers.item (a_hook_type) if lst = Void then - create lst.make (1) - value_table_alter_hooks := lst + create {ARRAYED_LIST [CMS_HOOK]} lst.make (1) + hook_subscribers.force (lst, a_hook_type) end if not lst.has (h) then lst.force (h) end end - value_table_alter_hooks: detachable ARRAYED_LIST [CMS_HOOK_VALUE_TABLE_ALTER] +feature -- Hook: value alter - invoke_value_table_alter (m: CMS_VALUE_TABLE) + subscribe_to_value_table_alter_hook (h: CMS_HOOK_VALUE_TABLE_ALTER) + -- Add `h' as subscriber of value table alter hooks CMS_HOOK_VALUE_TABLE_ALTER. do - if attached value_table_alter_hooks as lst then + subscribe_to_hook (h, {CMS_HOOK_VALUE_TABLE_ALTER}) + end + + invoke_value_table_alter (a_table: CMS_VALUE_TABLE) + -- Invoke value table alter hook for table `a_table'. + do + if attached hook_subscribers.item ({CMS_HOOK_VALUE_TABLE_ALTER}) as lst then across lst as c loop - c.item.value_table_alter (m, Current) + if attached {CMS_HOOK_VALUE_TABLE_ALTER} c.item as h then + h.value_table_alter (a_table, Current) + end end end end feature -- Hook: menu_system_alter - subscribe_to_menu_system_alter_hook (h: like menu_system_alter_hooks.item) - local - lst: like menu_system_alter_hooks + subscribe_to_menu_system_alter_hook (h: CMS_HOOK_MENU_SYSTEM_ALTER) + -- Add `h' as subscriber of menu system alter hooks CMS_HOOK_MENU_SYSTEM_ALTER. do - lst := menu_system_alter_hooks - if lst = Void then - create lst.make (1) - menu_system_alter_hooks := lst - end - if not lst.has (h) then - lst.force (h) - end + subscribe_to_hook (h, {CMS_HOOK_MENU_SYSTEM_ALTER}) end - menu_system_alter_hooks: detachable ARRAYED_LIST [CMS_HOOK_MENU_SYSTEM_ALTER] - - invoke_menu_system_alter (m: CMS_MENU_SYSTEM ) + invoke_menu_system_alter (a_menu_system: CMS_MENU_SYSTEM) + -- Invoke menu system alter hook for menu `a_menu_system'. do - if attached menu_system_alter_hooks as lst then + if attached hook_subscribers.item ({CMS_HOOK_MENU_SYSTEM_ALTER}) as lst then across lst as c loop - c.item.menu_system_alter (m, Current) + if attached {CMS_HOOK_MENU_SYSTEM_ALTER} c.item as h then + h.menu_system_alter (a_menu_system, Current) + end end end end feature -- Hook: menu_alter - subscribe_to_menu_alter_hook (h: like menu_alter_hooks.item) - local - lst: like menu_alter_hooks + subscribe_to_menu_alter_hook (h: CMS_HOOK_MENU_ALTER) + -- Add `h' as subscriber of menu alter hooks CMS_HOOK_MENU_ALTER. do - lst := menu_alter_hooks - if lst = Void then - create lst.make (1) - menu_alter_hooks := lst - end - if not lst.has (h) then - lst.force (h) - end + subscribe_to_hook (h, {CMS_HOOK_MENU_ALTER}) end - menu_alter_hooks: detachable ARRAYED_LIST [CMS_HOOK_MENU_ALTER] - - invoke_menu_alter (m: CMS_MENU) + invoke_menu_alter (a_menu: CMS_MENU) + -- Invoke menu alter hook for menu `a_menu'. do - if attached menu_alter_hooks as lst then + if attached hook_subscribers.item ({CMS_HOOK_MENU_ALTER}) as lst then across lst as c loop - c.item.menu_alter (m, Current) + if attached {CMS_HOOK_MENU_ALTER} c.item as h then + h.menu_alter (a_menu, Current) + end end end end feature -- Hook: form_alter - subscribe_to_form_alter_hook (h: like form_alter_hooks.item) - local - lst: like form_alter_hooks + subscribe_to_form_alter_hook (h: CMS_HOOK_FORM_ALTER) + -- Add `h' as subscriber of form alter hooks CMS_HOOK_FORM_ALTER. do - lst := form_alter_hooks - if lst = Void then - create lst.make (1) - form_alter_hooks := lst - end - if not lst.has (h) then - lst.force (h) - end + subscribe_to_hook (h, {CMS_HOOK_MENU_ALTER}) end - form_alter_hooks: detachable ARRAYED_LIST [CMS_HOOK_FORM_ALTER] - - invoke_form_alter (f: CMS_FORM; a_form_data: detachable WSF_FORM_DATA) + invoke_form_alter (a_form: CMS_FORM; a_form_data: detachable WSF_FORM_DATA) + -- Invoke form alter hook for form `a_form' and associated data `a_form_data' do - if attached form_alter_hooks as lst then + if attached hook_subscribers.item ({CMS_HOOK_FORM_ALTER}) as lst then across lst as c loop - c.item.form_alter (f, a_form_data, Current) + if attached {CMS_HOOK_FORM_ALTER} c.item as h then + h.form_alter (a_form, a_form_data, Current) + end end end end @@ -595,31 +593,24 @@ feature -- Hook: form_alter feature -- Hook: block subscribe_to_block_hook (h: CMS_HOOK_BLOCK) - local - lst: like block_hooks + -- Add `h' as subscriber of hooks CMS_HOOK_BLOCK. do - lst := block_hooks - if lst = Void then - create lst.make (1) - block_hooks := lst - end - if not lst.has (h) then - lst.force (h) - end + subscribe_to_hook (h, {CMS_HOOK_BLOCK}) end - block_hooks: detachable ARRAYED_LIST [CMS_HOOK_BLOCK] - invoke_block + -- Invoke block hook in order to get block from modules. do - if attached block_hooks as lst then + if attached hook_subscribers.item ({CMS_HOOK_BLOCK}) as lst then across lst as c loop - across - c.item.block_list as blst - loop - c.item.get_block_view (blst.item, Current) + if attached {CMS_HOOK_BLOCK} c.item as h then + across + h.block_list as blst + loop + h.get_block_view (blst.item, Current) + end end end end @@ -809,7 +800,9 @@ feature -- Generation common_prepare (page: CMS_HTML_PAGE) -- Common preparation for page `page'. do - fixme ("Fix generation common") + debug ("refactor_fixme") + fixme ("Fix generation common") + end -- Information page.set_title (title) diff --git a/cms/src/theme/cms_theme.e b/cms/src/theme/cms_theme.e index 6066077..1a881a9 100644 --- a/cms/src/theme/cms_theme.e +++ b/cms/src/theme/cms_theme.e @@ -37,7 +37,9 @@ feature -- Conversion menu_html (a_menu: CMS_MENU; is_horizontal: BOOLEAN): STRING_8 do - fixme ("Refactor HTML code to use the new Bootstrap theme template") + debug ("refactor_fixme") + fixme ("Refactor HTML code to use the new Bootstrap theme template") + end create Result.make_from_string ("
") if is_horizontal then Result.append ("