From f98d87ea49605465c5ac1ae68673408f8d08907b Mon Sep 17 00:00:00 2001 From: jensp Date: Sat, 11 Aug 2018 14:33:39 +0000 Subject: [PATCH] CCM NG: PageModels Editor Alpha finished git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5670 8810af33-2d31-482b-a856-94f89814c4df --- .../ccm-cms/ccm-cms-pagemodelseditor.tsx | 22 +- .../CategoryTreeComponentJsonConverter.java | 2 +- .../AbstractComponentModelJsonConverter.java | 17 +- .../org/libreccm/pagemodel/rs/Components.java | 13 +- .../ccm-pagemodelseditor/PageModelsEditor.tsx | 202 +++++++++++++++++- 5 files changed, 224 insertions(+), 32 deletions(-) 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 88ae12a90..926d6cb2d 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 @@ -77,7 +77,7 @@ class CategoryTreeComponentEditorDialog pageModelName={this.props.pageModelName}> - @@ -637,41 +637,45 @@ interface ItemListComponent extends ComponentModel { } ComponentModelEditor.registerEditorComponents( - "org.librecms.pagemodel.CategoryTreeComponent", { + componentTitle: "Category Tree", + componentType: "org.librecms.pagemodel.CategoryTreeComponent", editorDialog: CategoryTreeComponentEditorDialog as typeof React.Component, propertiesList: CategoryTreeComponentPropertiesList as typeof React.Component, - }, + } ); ComponentModelEditor.registerEditorComponents( - "org.librecms.pagemodel.ItemListComponent", { + componentTitle: "Item List", + componentType: "org.librecms.pagemodel.ItemListComponent", editorDialog: ItemListComponentEditorDialog as typeof React.Component, propertiesList: ItemListComponentPropertiesList as typeof React.Component, - }, + } ); ComponentModelEditor.registerEditorComponents( - "org.librecms.pagemodel.FixedContentItemComponent", { + componentTitle: "Fixed Content Item", + componentType: "org.librecms.pagemodel.FixedContentItemComponent", editorDialog: FixedContentItemComponentEditorDialog as typeof React.Component, propertiesList: FixedContentItemComponentPropertiesList as typeof React.Component, - }, + } ); ComponentModelEditor.registerEditorComponents( - "org.librecms.pagemodel.GreetingItemComponent", { + componentTitle: "Greeting Item", + componentType: "org.librecms.pagemodel.GreetingItemComponent", editorDialog: GreetingItemComponentEditorDialog as typeof React.Component, propertiesList: GreetingItemComponentPropertiesList as typeof React.Component - }, + } ); diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/CategoryTreeComponentJsonConverter.java b/ccm-cms/src/main/java/org/librecms/pagemodel/CategoryTreeComponentJsonConverter.java index dcd71ba24..f07c43e2a 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/CategoryTreeComponentJsonConverter.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/CategoryTreeComponentJsonConverter.java @@ -82,7 +82,7 @@ public class CategoryTreeComponentJsonConverter readBasePropertiesFromJson(jsonObject, categoryTree); - if (!jsonObject.isNull(SHOW_FULL_TREE)) { + if (jsonObject.containsKey(SHOW_FULL_TREE)) { categoryTree.setShowFullTree(jsonObject.getBoolean(SHOW_FULL_TREE)); } } diff --git a/ccm-core/src/main/java/org/libreccm/pagemodel/AbstractComponentModelJsonConverter.java b/ccm-core/src/main/java/org/libreccm/pagemodel/AbstractComponentModelJsonConverter.java index d9da153ac..03f103001 100644 --- a/ccm-core/src/main/java/org/libreccm/pagemodel/AbstractComponentModelJsonConverter.java +++ b/ccm-core/src/main/java/org/libreccm/pagemodel/AbstractComponentModelJsonConverter.java @@ -83,22 +83,25 @@ public abstract class AbstractComponentModelJsonConverter Objects.requireNonNull(jsonObject); Objects.requireNonNull(componentModel); - componentModel.setComponentModelId( - jsonObject.getInt("componentModelId")); - componentModel.setUuid(jsonObject.getString("uuid")); - componentModel.setModelUuid(jsonObject.getString("modelUuid")); + //UUIDs are solely managed by the server! +// if (jsonObject.containsKey("uuid")) { +// componentModel.setUuid(jsonObject.getString("uuid")); +// } +// if (jsonObject.containsKey("modelUuid")) { +// componentModel.setModelUuid(jsonObject.getString("modelUuid")); +// } componentModel.setKey(jsonObject.getString("key")); - if (jsonObject.getString("idAttribute") != null) { + if (jsonObject.getString("idAttribute", null) != null) { componentModel.setIdAttribute(jsonObject.getString("idAttribute")); } - if (jsonObject.getString("classAttribute") != null) { + if (jsonObject.getString("classAttribute", null) != null) { componentModel .setClassAttribute(jsonObject.getString("classAttribute")); } - if (jsonObject.getString("styleAttribute") != null) { + if (jsonObject.getString("styleAttribute", null) != null) { componentModel .setStyleAttribute(jsonObject.getString("styleAttribute")); } diff --git a/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java b/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java index d5d69c784..e8a1a5d84 100644 --- a/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java +++ b/ccm-core/src/main/java/org/libreccm/pagemodel/rs/Components.java @@ -19,7 +19,6 @@ package org.libreccm.pagemodel.rs; import org.libreccm.core.CoreConstants; -import org.libreccm.core.UnexpectedErrorException; import org.libreccm.pagemodel.ComponentModel; import org.libreccm.pagemodel.ComponentModelJsonConverter; import org.libreccm.pagemodel.ComponentModelRepository; @@ -31,9 +30,6 @@ import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.RequiresPrivilege; import org.libreccm.web.CcmApplication; -import java.beans.BeanInfo; -import java.beans.IntrospectionException; -import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -53,7 +49,6 @@ import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; import javax.json.JsonValue; import javax.transaction.Transactional; import javax.ws.rs.BadRequestException; @@ -242,8 +237,10 @@ public class Components { setComponentPropertiesFromJson(componentModelData, componentModel); componentRepo.save(componentModel); - - return mapComponentModelToJson(componentModel); + + final ComponentModel saved = controller + .findComponentModel(app, pageModel, container, componentKey); + return mapComponentModelToJson(saved); } /** @@ -427,7 +424,7 @@ public class Components { try { final Class clazz = Class.forName(type); - if (clazz.isAssignableFrom(ComponentModel.class)) { + if (ComponentModel.class.isAssignableFrom(clazz)) { return (Class) clazz; } else { throw new BadRequestException(String.format( diff --git a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx index 1ce372962..1bec35ec0 100644 --- a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx +++ b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx @@ -775,6 +775,8 @@ interface ContainerModelComponentProps { interface ContainerModelComponentState { + addComponentOfType: string; + addComponentWithKey: string; components: ComponentModel[]; errorMessages: string[]; } @@ -789,9 +791,15 @@ class ContainerModelComponent this.state = { + addComponentOfType: "", + addComponentWithKey: "", components: [], errorMessages: [], }; + + this.handleKeyChange = this.handleKeyChange.bind(this); + this.handleTypeSelectChange = this.handleTypeSelectChange.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); } public componentDidMount() { @@ -812,7 +820,41 @@ class ContainerModelComponent Delete + {this.state.errorMessages.length > 0 + &&
+ +
+ }
+
+ + + + + +