diff --git a/draft/application/cms/src/widgets/cms_widget.e b/draft/application/cms/src/widgets/cms_widget.e new file mode 100644 index 00000000..7566ab3c --- /dev/null +++ b/draft/application/cms/src/widgets/cms_widget.e @@ -0,0 +1,16 @@ +note + description: "Summary description for {CMS_WIDGET}." + author: "" + date: "$Date$" + revision: "$Revision$" + +deferred class + CMS_WIDGET + +feature -- Conversion + + append_to_html (a_theme: CMS_THEME; a_html: STRING_8) + deferred + end + +end diff --git a/draft/application/cms/src/widgets/cms_widget_table.e b/draft/application/cms/src/widgets/cms_widget_table.e new file mode 100644 index 00000000..26e8eef5 --- /dev/null +++ b/draft/application/cms/src/widgets/cms_widget_table.e @@ -0,0 +1,177 @@ +note + description: "Summary description for {CMS_WIDGET_TABLE}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + CMS_WIDGET_TABLE [G] + +inherit + CMS_WIDGET + + WITH_CSS_ID + + WITH_CSS_CLASS + + WITH_CSS_STYLE + +create + make + +feature {NONE} -- Initialization + + make + do + create columns.make_empty + end + +feature -- Access + + column_count: INTEGER + do + Result := columns.count + end + + columns: ARRAY [CMS_WIDGET_TABLE_COLUMN] + + column (c: INTEGER): CMS_WIDGET_TABLE_COLUMN + do + if c > column_count then + set_column_count (c) + end + Result := columns[c] + end + + has_title: BOOLEAN + do + Result := across columns as c some c.item.title /= Void end + end + + head_data: detachable ITERABLE [G] + -- thead + + foot_data: detachable ITERABLE [G] + -- tfoot + + data: detachable ITERABLE [G] + -- tbody + + compute_item_function: detachable FUNCTION [ANY, TUPLE [data: G], CMS_WIDGET_TABLE_ROW] + +feature -- Change + + set_head_data (d: like head_data) + do + head_data := d + end + + set_foot_data (d: like foot_data) + do + foot_data := d + end + + set_data (d: like data) + do + data := d + end + + set_compute_item_function (fct: like compute_item_function) + do + compute_item_function := fct + end + + set_column_count (nb: INTEGER) + do + if nb > columns.count then +-- columns.conservative_resize_with_default (create {CMS_WIDGET_TABLE_COLUMN}, 1, nb) + from + until + columns.count = nb + loop + columns.force (create {CMS_WIDGET_TABLE_COLUMN}.make (columns.upper + 1), columns.upper + 1) + end + else + columns.remove_tail (columns.count - nb) + end + end + + set_column_title (c: INTEGER; t: READABLE_STRING_32) + do + if c > column_count then + set_column_count (c) + end + if attached column (c) as col then + col.set_title (t) + end + end + +feature -- Conversion + + append_to_html (a_theme: CMS_THEME; a_html: STRING_8) + local + l_use_tbody: BOOLEAN + do + a_html.append ("") + + if has_title then + a_html.append ("") + across + columns as c + loop + c.item.append_table_header_to_html (a_theme, a_html) + end + a_html.append ("") + end + if attached head_data as l_head_data then + l_use_tbody := True + a_html.append ("") + append_data_to_html (l_head_data, a_theme, a_html) + a_html.append ("") + end + if attached foot_data as l_foot_data then + l_use_tbody := True + a_html.append ("") + append_data_to_html (l_foot_data, a_theme, a_html) + a_html.append ("") + end + + if attached data as l_data then + if l_use_tbody then + a_html.append ("") + end + append_data_to_html (l_data, a_theme, a_html) + if l_use_tbody then + a_html.append ("") + end + end + a_html.append ("") + end + + append_data_to_html (lst: ITERABLE [G]; a_theme: CMS_THEME; a_html: STRING_8) + local + fct: like compute_item_function + do + fct := compute_item_function + across + lst as d + loop + if fct /= Void and then attached fct.item ([d.item]) as r then + r.append_to_html (a_theme, a_html) + else + a_html.append ("") + a_html.append ("") + if attached d.item as g then + a_html.append (g.out) + end + a_html.append ("") + a_html.append ("") + end + end + end + +end diff --git a/draft/application/cms/src/widgets/cms_widget_table_column.e b/draft/application/cms/src/widgets/cms_widget_table_column.e new file mode 100644 index 00000000..3e1da973 --- /dev/null +++ b/draft/application/cms/src/widgets/cms_widget_table_column.e @@ -0,0 +1,52 @@ +note + description: "Summary description for {CMS_WIDGET_COLUMN}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + CMS_WIDGET_TABLE_COLUMN + +inherit + WITH_CSS_CLASS + + WITH_CSS_STYLE + +create + make + +feature {NONE} -- Initialization + + make (i: like index) + do + index := i + end + +feature -- Access + + index: INTEGER + + title: detachable READABLE_STRING_32 + +feature -- Change + + set_title (t: like title) + do + title := t + end + +feature -- Conversion + + append_table_header_to_html (a_theme: CMS_THEME; a_html: STRING_8) + do + a_html.append ("') + if attached title as l_title then + a_html.append (a_theme.html_encoded (l_title)) + end + a_html.append ("") + end + +end diff --git a/draft/application/cms/src/widgets/cms_widget_table_item.e b/draft/application/cms/src/widgets/cms_widget_table_item.e new file mode 100644 index 00000000..6939c846 --- /dev/null +++ b/draft/application/cms/src/widgets/cms_widget_table_item.e @@ -0,0 +1,49 @@ +note + description: "Summary description for {CMS_WIDGET_TABLE_ITEM}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + CMS_WIDGET_TABLE_ITEM + +inherit + CMS_WIDGET + + WITH_CSS_CLASS + + WITH_CSS_STYLE + +create + make_with_text, + make_with_content + +feature {NONE} -- Initialization + + make_with_text (a_text: READABLE_STRING_8) + do + make_with_content (create {CMS_WIDGET_TEXT}.make_with_text (a_text)) + end + + make_with_content (a_widget: CMS_WIDGET) + do + content := a_widget + end + +feature -- Access + + content: CMS_WIDGET + +feature -- Conversion + + append_to_html (a_theme: CMS_THEME; a_html: STRING_8) + do + a_html.append ("') + content.append_to_html (a_theme, a_html) + a_html.append ("") + end + +end diff --git a/draft/application/cms/src/widgets/cms_widget_table_row.e b/draft/application/cms/src/widgets/cms_widget_table_row.e new file mode 100644 index 00000000..f01d2da2 --- /dev/null +++ b/draft/application/cms/src/widgets/cms_widget_table_row.e @@ -0,0 +1,75 @@ +note + description: "Summary description for {CMS_WIDGET_TABLE_ROW}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + CMS_WIDGET_TABLE_ROW + +inherit + WITH_CSS_CLASS + + WITH_CSS_STYLE + + ITERABLE [CMS_WIDGET_TABLE_ITEM] + +create + make, + make_with_items + +feature {NONE} -- Initialization + + make (n: INTEGER) + do + create items.make (n) + end + + make_with_items (lst: ITERABLE [CMS_WIDGET_TABLE_ITEM]) + local + n: INTEGER + do + across lst as c loop + n := n + 1 + end + make (n) + across + lst as c + loop + add_item (c.item) + end + end + + items: ARRAYED_LIST [CMS_WIDGET_TABLE_ITEM] + +feature -- Access + + new_cursor: ITERATION_CURSOR [CMS_WIDGET_TABLE_ITEM] + do + Result := items.new_cursor + end + +feature -- Change + + force, add_item (w: CMS_WIDGET_TABLE_ITEM) + do + items.force (w) + end + +feature -- Conversion + + append_to_html (a_theme: CMS_THEME; a_html: STRING_8) + do + a_html.append ("') + across + items as c + loop + c.item.append_to_html (a_theme, a_html) + end + a_html.append ("") + end + +end diff --git a/draft/application/cms/src/widgets/cms_widget_text.e b/draft/application/cms/src/widgets/cms_widget_text.e new file mode 100644 index 00000000..3d565e53 --- /dev/null +++ b/draft/application/cms/src/widgets/cms_widget_text.e @@ -0,0 +1,41 @@ +note + description: "Summary description for {CMS_WIDGET_TEXT}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + CMS_WIDGET_TEXT + +inherit + CMS_WIDGET + +create + make_with_text + +feature {NONE} -- Initialization + + make_with_text (a_text: READABLE_STRING_8) + do + text := a_text + end + +feature -- Access + + text: READABLE_STRING_8 + +feature -- Change + + set_text (a_text: like text) + do + text := a_text + end + +feature -- Conversion + + append_to_html (a_theme: CMS_THEME; a_html: STRING_8) + do + a_html.append (text) + end + +end