diff --git a/src/kernel/content/cms_block.e b/src/kernel/content/cms_block.e index ac300f2..94d4ed1 100644 --- a/src/kernel/content/cms_block.e +++ b/src/kernel/content/cms_block.e @@ -23,7 +23,12 @@ feature -- Access html_options: detachable CMS_HTML_OPTIONS -- Optional addition html options. -feature -- status report +feature -- Status report + + is_empty: BOOLEAN + -- Is current block empty? + deferred + end is_enabled: BOOLEAN -- Is current block enabled? @@ -93,4 +98,7 @@ feature -- Status report 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 diff --git a/src/kernel/content/cms_block_region.e b/src/kernel/content/cms_block_region.e index 2184332..750ebd6 100644 --- a/src/kernel/content/cms_block_region.e +++ b/src/kernel/content/cms_block_region.e @@ -21,11 +21,10 @@ feature {NONE} -- Initialization feature -- Access name: READABLE_STRING_8 - -- Block region name. + -- Block region name. blocks: ARRAYED_LIST [CMS_BLOCK] - -- List of blocks. - + -- List of blocks. feature -- Element change @@ -35,8 +34,15 @@ feature -- Element change blocks.force (b) end -;note - copyright: "2011-2014, Jocelyn Fiat, Eiffel Software and others" + remove (b: CMS_BLOCK) + require + has_block_b: blocks.has (b) + do + blocks.prune_all (b) + 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)" source: "[ Eiffel Software diff --git a/src/kernel/content/cms_content_block.e b/src/kernel/content/cms_content_block.e index 1dd1605..d45f89c 100644 --- a/src/kernel/content/cms_content_block.e +++ b/src/kernel/content/cms_content_block.e @@ -49,6 +49,12 @@ feature -- Access feature -- Status report + is_empty: BOOLEAN + -- Is current block empty? + do + Result := is_raw and content.is_empty + end + is_raw: BOOLEAN assign set_is_raw -- Is raw? -- If True, do not get wrapped it with block specific div @@ -87,7 +93,7 @@ feature -- Conversion end end note - copyright: "2011-2014, Jocelyn Fiat, Eiffel Software and others" + copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software diff --git a/src/kernel/content/cms_menu_block.e b/src/kernel/content/cms_menu_block.e index 0b4a306..8e060d8 100644 --- a/src/kernel/content/cms_menu_block.e +++ b/src/kernel/content/cms_menu_block.e @@ -31,6 +31,12 @@ feature -- Access feature -- Status report + is_empty: BOOLEAN + -- Is current block empty? + do + Result := menu.is_empty + end + is_horizontal: BOOLEAN assign set_is_horizontal -- Is horizontal layout for the menu? @@ -72,4 +78,7 @@ feature -- Conversion Result := a_theme.menu_html (menu, is_horizontal, html_options) 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 diff --git a/src/kernel/content/cms_smarty_template_block.e b/src/kernel/content/cms_smarty_template_block.e index 51c3b9a..bdb76b3 100644 --- a/src/kernel/content/cms_smarty_template_block.e +++ b/src/kernel/content/cms_smarty_template_block.e @@ -69,6 +69,9 @@ feature -- Access feature -- Status report + is_empty: BOOLEAN = False + -- Is current block empty? + is_raw: BOOLEAN -- Is raw? -- If True, do not get wrapped it with block specific div @@ -192,4 +195,7 @@ feature -- Debug end Result.append ("%N}") 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 diff --git a/src/service/response/cms_response.e b/src/service/response/cms_response.e index f32d903..c95ada9 100644 --- a/src/service/response/cms_response.e +++ b/src/service/response/cms_response.e @@ -738,7 +738,9 @@ feature -- Generation prepare (page: CMS_HTML_PAGE) local lnk: CMS_LINK + l_region: CMS_BLOCK_REGION l_menu_list_prepared: ARRAYED_LIST [CMS_LINK_COMPOSITE] + l_empty_blocks: detachable ARRAYED_LIST [CMS_BLOCK] do -- Menu create {CMS_LOCAL_LINK} lnk.make ("Home", "") @@ -756,14 +758,29 @@ feature -- Generation across regions as reg_ic loop + l_region := reg_ic.item across - reg_ic.item.blocks as ic + l_region.blocks as ic loop if attached {CMS_MENU_BLOCK} ic.item as l_menu_block then l_menu_list_prepared.force (l_menu_block.menu) prepare_links (l_menu_block.menu) + if l_menu_block.menu.is_empty then + if l_empty_blocks = Void then + create l_empty_blocks.make (1) + end + l_empty_blocks.force (l_menu_block) + end end end + if l_empty_blocks /= Void then + across + l_empty_blocks as ic + loop + l_region.remove (ic.item) + end + l_empty_blocks := Void + end end -- Prepare menu not in a block.