From 68f4b00146920b111739c64be8228b7b8ff43674 Mon Sep 17 00:00:00 2001 From: jdotcms Date: Sun, 10 Apr 2022 22:48:21 -0600 Subject: [PATCH] #21697 adding fixes to try to keep the layout --- .../business/ContentTypeAPIImpl.java | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/dotCMS/src/main/java/com/dotcms/contenttype/business/ContentTypeAPIImpl.java b/dotCMS/src/main/java/com/dotcms/contenttype/business/ContentTypeAPIImpl.java index e5cbb73f1a4d..da09ce59be09 100644 --- a/dotCMS/src/main/java/com/dotcms/contenttype/business/ContentTypeAPIImpl.java +++ b/dotCMS/src/main/java/com/dotcms/contenttype/business/ContentTypeAPIImpl.java @@ -247,7 +247,7 @@ public ContentType copyFrom(final CopyContentTypeBean copyContentTypeBean) throw final ContentType contentType = builder.build(); final ContentType newContentType = this.save(contentType); - final List currentFields = sourceContentType.fields(); + final List currentFields = APILocator.getContentTypeFieldAPI().byContentTypeId(sourceContentType.id()); final Map baseFieldMap = newContentType.fieldMap(); Logger.debug(this, ()->"Saving the fields for the the content type: " + copyContentTypeBean.getName() @@ -255,21 +255,31 @@ public ContentType copyFrom(final CopyContentTypeBean copyContentTypeBean) throw for (final Field currentField : currentFields) { - final Field newField = !baseFieldMap.containsKey(currentField.variable())? - FieldBuilder.builder(currentField).contentTypeId(newContentType.id()).id(null).build(): - baseFieldMap.get(currentField.variable()); + if (!baseFieldMap.containsKey(currentField.variable())) { - final Field savedField = APILocator.getContentTypeFieldAPI().save(newField, user); + final Field newField = APILocator.getContentTypeFieldAPI() + .save(FieldBuilder.builder(currentField).sortOrder(currentField.sortOrder()).contentTypeId(newContentType.id()).id(null).build(), user); - final List currentFieldVariables = currentField.fieldVariables(); - if (UtilMethods.isSet(currentFields)) { - for (final FieldVariable fieldVariable : currentFieldVariables) { + final List currentFieldVariables = currentField.fieldVariables(); + if (UtilMethods.isSet(currentFieldVariables)) { + for (final FieldVariable fieldVariable : currentFieldVariables) { - final FieldVariable newFieldVariable = ImmutableFieldVariable.builder().from(fieldVariable). - fieldId(savedField.id()).id(null).userId(user.getUserId()).build(); + APILocator.getContentTypeFieldAPI().save(ImmutableFieldVariable.builder().from(fieldVariable). + fieldId(newField.id()).id(null).userId(user.getUserId()).build(), user); + } + } + } else { - APILocator.getContentTypeFieldAPI().save(newFieldVariable, user); - } + final Field newField = baseFieldMap.get(currentField.variable()); + + final List currentFieldVariables = currentField.fieldVariables(); + if (UtilMethods.isSet(currentFieldVariables)) { + for (final FieldVariable fieldVariable : currentFieldVariables) { + + APILocator.getContentTypeFieldAPI().save(ImmutableFieldVariable.builder().from(fieldVariable). + fieldId(newField.id()).id(null).userId(user.getUserId()).build(), user); + } + } } }