diff --git a/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx b/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx
index 8f5e106de..88ae12a90 100644
--- a/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx
+++ b/ccm-cms-js/src/main/typescript/ccm-cms/ccm-cms-pagemodelseditor.tsx
@@ -32,6 +32,9 @@ class CategoryTreeComponentPropertiesList
component={this.props.component}>
showFullTree
{this.props.component.showFullTree}
+
+ {this.props.children}
+
;
}
}
@@ -78,6 +81,9 @@ class CategoryTreeComponentEditorDialog
id={`${idPrefix}showFullTree`}
onChange={this.handleChange}
type="checkbox" />
+
+ {this.props.children}
+
;
}
@@ -106,6 +112,319 @@ class CategoryTreeComponentEditorDialog
}
}
+class ContentItemComponentPropertiesList extends React.Component<
+ BasicComponentModelPropertiesListProps, {}> {
+
+ constructor(
+ props: BasicComponentModelPropertiesListProps) {
+
+ super(props);
+ }
+
+ public render(): React.ReactNode {
+
+ return
+
+ Mode
+ {this.props.component.mode}
+ {this.props.children}
+
+ ;
+ }
+}
+
+interface ContentItemComponentEditorDialogState
+ extends BasicComponentModelEditorDialogState {
+
+ mode: string;
+}
+
+class ContentItemComponentEditorDialog extends React.Component<
+ BasicComponentModelEditorDialogProps,
+ ContentItemComponentEditorDialogState> {
+
+ constructor(
+ props: BasicComponentModelEditorDialogProps) {
+
+ super(props);
+
+ this.state = {
+ ...this.state,
+ mode: this.props.component.mode,
+ };
+
+ this.handleChange = this.handleChange.bind(this);
+
+ this.getComponentModelProperties
+ = this.getComponentModelProperties.bind(this);
+ }
+
+ public render(): React.ReactNode {
+
+ const idPrefix: string
+ = `${this.props.containerKey}_${this.props.component.key}_`;
+
+ return
+
+
+
+
+ {this.props.children}
+
+ ;
+ }
+
+ private getComponentModelProperties(): {[name: string]: any} {
+
+ return {
+ mode: this.state.mode,
+ };
+ }
+
+ private handleChange(event: React.ChangeEvent): void {
+
+ const target: HTMLInputElement = event.currentTarget;
+ const idPrefix: string
+ = `${this.props.containerKey}_${this.props.component.key}_`;
+
+ switch (target.id) {
+ case `${idPrefix}mode`: {
+ this.setState({
+ ...this.state,
+ mode: target.value,
+ });
+ break;
+ }
+ }
+ }
+}
+
+class CategorizedItemComponentPropertiesList extends React.Component<
+ BasicComponentModelPropertiesListProps, {}> {
+
+ constructor(
+ props: BasicComponentModelPropertiesListProps) {
+
+ super(props);
+ }
+
+ public render(): React.ReactNode {
+
+ return
+
+ {this.props.children}
+
+
+ }
+}
+
+class CategorizedItemComponentEditorDialog extends React.Component<
+ BasicComponentModelEditorDialogProps,
+ ContentItemComponentEditorDialogState> {
+
+ constructor(
+ props: BasicComponentModelEditorDialogProps) {
+
+ super(props);
+
+ this.getComponentModelProperties
+ = this.getComponentModelProperties.bind(this);
+ }
+
+ public render(): React.ReactNode {
+
+ return
+
+ {this.props.children}
+
+
+ }
+
+ private getComponentModelProperties(): {[name: string]: any} {
+
+ return {};
+ }
+}
+
+class FixedContentItemComponentPropertiesList extends React.Component<
+ BasicComponentModelPropertiesListProps, {}> {
+
+ constructor(
+ props: BasicComponentModelPropertiesListProps
+ ) {
+
+ super(props);
+ }
+
+ public render(): React.ReactNode {
+
+ return
+
+ Content Item UUID
+ {this.props.component.contentItem}
+ {this.props.children}
+
+
+ }
+}
+
+interface FixedContentItemComponentEditorDialogState
+ extends ContentItemComponentEditorDialogState {
+
+ contentItem: string;
+}
+
+class FixedContentItemComponentEditorDialog extends React.Component<
+ BasicComponentModelEditorDialogProps,
+ FixedContentItemComponentEditorDialogState> {
+
+ constructor(
+ props: BasicComponentModelEditorDialogProps
+ ) {
+ super(props);
+
+ this.state = {
+ ...this.state,
+ contentItem: this.props.component.contentItem,
+ };
+
+ this.handleChange = this.handleChange.bind(this);
+
+ this.getComponentModelProperties
+ = this.getComponentModelProperties.bind(this);
+ }
+
+ public render(): React.ReactNode {
+
+ const idPrefix: string
+ = `${this.props.containerKey}_${this.props.component.key}_`;
+
+ return
+
+
+
+
+ {this.props.children}
+
+ ;
+ }
+
+ private getComponentModelProperties(): {[name: string]: any} {
+
+ return {
+ contentItem: this.state.contentItem,
+ };
+
+ }
+
+ private handleChange(event: React.ChangeEvent): void {
+
+ const target: HTMLInputElement = event.currentTarget;
+ const idPrefix: string
+ = `${this.props.containerKey}_${this.props.component.key}_`;
+
+ switch (target.id) {
+ case `${idPrefix}contentItemUuid`: {
+ this.setState({
+ ...this.state,
+ contentItem: target.value,
+ });
+ break;
+ }
+ }
+ }
+}
+
+class GreetingItemComponentPropertiesList extends React.Component<
+ BasicComponentModelPropertiesListProps, {}> {
+
+ constructor(
+ props: BasicComponentModelPropertiesListProps) {
+
+ super(props);
+ }
+
+ public render(): React.ReactNode {
+
+ return
+
+ {this.props.children}
+
+
+ }
+}
+
+class GreetingItemComponentEditorDialog extends React.Component<
+ BasicComponentModelEditorDialogProps,
+ ContentItemComponentEditorDialogState> {
+
+ constructor(
+ props: BasicComponentModelEditorDialogProps) {
+
+ super(props);
+
+ this.getComponentModelProperties
+ = this.getComponentModelProperties.bind(this);
+ }
+
+ public render(): React.ReactNode {
+
+ return
+
+ {this.props.children}
+
+
+ }
+
+ private getComponentModelProperties(): {[name: string]: any} {
+
+ return {};
+ }
+}
+
+
class ItemListComponentPropertiesList extends React.Component<
BasicComponentModelPropertiesListProps, {}> {
@@ -137,6 +456,9 @@ class ItemListComponentPropertiesList extends React.Component<
) : ("No order set")
}
+
+ {this.props.children}
+
;
}
}
@@ -223,6 +545,8 @@ class ItemListComponentEditorDialog extends React.Component<
)}>
+ {this.props.children}
+
;
}
@@ -294,6 +618,16 @@ interface CategoryTreeComponent extends ComponentModel {
showFullTree: boolean;
}
+interface ContentItemComponent extends ComponentModel {
+
+ mode: string;
+}
+
+interface FixedContentItemComponent extends ContentItemComponent {
+
+ contentItem: string;
+}
+
interface ItemListComponent extends ComponentModel {
descending: boolean;
@@ -321,3 +655,23 @@ ComponentModelEditor.registerEditorComponents(
ItemListComponentPropertiesList as typeof React.Component,
},
);
+
+ComponentModelEditor.registerEditorComponents(
+ "org.librecms.pagemodel.FixedContentItemComponent",
+ {
+ editorDialog:
+ FixedContentItemComponentEditorDialog as typeof React.Component,
+ propertiesList:
+ FixedContentItemComponentPropertiesList as typeof React.Component,
+ },
+);
+
+ComponentModelEditor.registerEditorComponents(
+ "org.librecms.pagemodel.GreetingItemComponent",
+ {
+ editorDialog:
+ GreetingItemComponentEditorDialog as typeof React.Component,
+ propertiesList:
+ GreetingItemComponentPropertiesList as typeof React.Component
+ },
+);