diff --git a/src/main/java/org/seed/C.java b/src/main/java/org/seed/C.java index d6a65a20e..a352098e7 100644 --- a/src/main/java/org/seed/C.java +++ b/src/main/java/org/seed/C.java @@ -22,6 +22,7 @@ public final class C { public static final String ACTION = "action"; public static final String ANALYSIS = "analysis"; public static final String ANNOTATION = "annotation"; + public static final String AUTOLAYOUT = "autoLayout"; public static final String BASE = "base"; public static final String CASCADE = "cascade"; public static final String CHUNKSIZE = "chunkSize"; diff --git a/src/main/java/org/seed/core/entity/EntityRelation.java b/src/main/java/org/seed/core/entity/EntityRelation.java index e8d8658bd..7e65f004a 100644 --- a/src/main/java/org/seed/core/entity/EntityRelation.java +++ b/src/main/java/org/seed/core/entity/EntityRelation.java @@ -92,7 +92,9 @@ public void setName(String name) { @XmlAttribute public String getRelatedEntityUid() { - return relatedEntity != null ? relatedEntity.getUid() : relatedEntityUid; + return relatedEntity != null + ? relatedEntity.getUid() + : relatedEntityUid; } public void setRelatedEntityUid(String relatedEntityUid) { @@ -101,7 +103,9 @@ public void setRelatedEntityUid(String relatedEntityUid) { @JsonIgnore public String getInternalName() { - return name != null ? NameUtils.getInternalName(name).toLowerCase() : null; + return name != null + ? NameUtils.getInternalName(name).toLowerCase() + : null; } @JsonIgnore @@ -146,12 +150,10 @@ public boolean isEqual(Object other) { public EntityRelation createInverseRelation(Entity relatedEntity) { Assert.notNull(relatedEntity, "related entity"); - if (entity.isGeneric()) { - Assert.stateAvailable(derivedEntity, "derived entity"); - - return createRelation(derivedEntity, relatedEntity); - } - return createRelation(entity, relatedEntity); + + return entity.isGeneric() + ? createRelation(getDerivedEntity(), relatedEntity) + : createRelation(entity, relatedEntity); } public EntityRelation createDescendantRelation(Entity descendantEntity) { @@ -160,26 +162,26 @@ public EntityRelation createDescendantRelation(Entity descendantEntity) { return createRelation(descendantEntity, relatedEntity); } - void setDerivedEntity(Entity realEntity) { - this.derivedEntity = realEntity; + void setDerivedEntity(Entity derivedEntity) { + this.derivedEntity = derivedEntity; + } + + private Entity getDerivedEntity() { + Assert.stateAvailable(derivedEntity, "derived entity"); + + return derivedEntity; } boolean isEntityAudited() { - if (entity.isGeneric()) { - Assert.stateAvailable(derivedEntity, "derived entity"); - - return derivedEntity.isAudited(); - } - return entity.isAudited(); + return entity.isGeneric() + ? getDerivedEntity().isAudited() + : entity.isAudited(); } private String getEntityTableName() { - if (entity.isGeneric()) { - Assert.stateAvailable(derivedEntity, "derived entity"); - - return derivedEntity.getEffectiveTableName(); - } - return entity.getEffectiveTableName(); + return entity.isGeneric() + ? getDerivedEntity().getEffectiveTableName() + : entity.getEffectiveTableName(); } private static EntityRelation createRelation(Entity entity, Entity relatedEntity) { diff --git a/src/main/java/org/seed/core/entity/codegen/EntitySourceCodeBuilder.java b/src/main/java/org/seed/core/entity/codegen/EntitySourceCodeBuilder.java index 10f3baff0..ffaa7dd16 100644 --- a/src/main/java/org/seed/core/entity/codegen/EntitySourceCodeBuilder.java +++ b/src/main/java/org/seed/core/entity/codegen/EntitySourceCodeBuilder.java @@ -154,13 +154,9 @@ else if (entity.hasStatus()) { buildNesteds(); } - // relations - if (!entity.isGeneric() && entity.hasAllRelations()) { - buildRelations(); - } - - // entityId + // relations / entityId if (!entity.isGeneric()) { + buildRelations(); buildEntityIdGetter(); } @@ -173,7 +169,7 @@ else if (entity.hasStatus()) { } // relation methods - if (!entity.isGeneric() && entity.hasAllRelations()) { + if (!entity.isGeneric()) { buildRelationMethods(); } @@ -271,7 +267,7 @@ else if (entity.hasStatus()) { } }); } - if (!entity.isGeneric() && entity.hasAllRelations()) { + if (!entity.isGeneric()) { entity.getAllRelations().forEach(relation -> addGetterAndSetter(relation.getInternalName())); } diff --git a/src/main/java/org/seed/core/entity/doc/ERDiagramBuilder.java b/src/main/java/org/seed/core/entity/doc/ERDiagramBuilder.java index 48ce50311..09ba8b2b2 100644 --- a/src/main/java/org/seed/core/entity/doc/ERDiagramBuilder.java +++ b/src/main/java/org/seed/core/entity/doc/ERDiagramBuilder.java @@ -50,9 +50,8 @@ private static void buildEntity(StringBuilder buf, Entity entity) { buf.append("entity ").append(entity.getEffectiveTableName()).append(" {\n") .append(SystemField.ID.columName).append(COLON).append("number <>\n") .append("--\n"); - if (entity.hasAllFields()) { - entity.getAllFields().forEach(field -> buildField(buf, field)); - } + entity.getAllFields().forEach(field -> buildField(buf, field)); + buildSystemField(buf, SystemField.CREATEDBY); buildSystemField(buf, SystemField.CREATEDON); buildSystemField(buf, SystemField.MODIFIEDBY); @@ -62,9 +61,7 @@ private static void buildEntity(StringBuilder buf, Entity entity) { } private static void buildRelationEntities(StringBuilder buf, Entity entity) { - if (entity.hasAllRelations()) { - entity.getAllRelations().forEach(relation -> buildRelationEntity(buf, relation)); - } + entity.getAllRelations().forEach(relation -> buildRelationEntity(buf, relation)); } private static void buildRelationEntity(StringBuilder buf, EntityRelation relation) { @@ -75,23 +72,19 @@ private static void buildRelationEntity(StringBuilder buf, EntityRelation relati } private static void buildReferences(StringBuilder buf, Entity entity) { - if (entity.hasAllFields()) { - filterAndForEach(entity.getAllFields(), - EntityField::isReferenceField, - field -> buildReference(buf, field)); - } + filterAndForEach(entity.getAllFields(), + EntityField::isReferenceField, + field -> buildReference(buf, field)); } private static void buildReference(StringBuilder buf, EntityField field) { buf.append(field.getEntity().getEffectiveTableName()).append(" }o..") - .append(field.isMandatory() ? "||" : "o|") - .append(field.getReferenceEntity().getEffectiveTableName()).append("\n\n"); + .append(field.isMandatory() ? "||" : "o|") + .append(field.getReferenceEntity().getEffectiveTableName()).append("\n\n"); } private static void buildRelations(StringBuilder buf, Entity entity) { - if (entity.hasAllRelations()) { - entity.getAllRelations().forEach(relation -> buildRelation(buf, relation)); - } + entity.getAllRelations().forEach(relation -> buildRelation(buf, relation)); } private static void buildRelation(StringBuilder buf, EntityRelation relation) { diff --git a/src/main/java/org/seed/core/entity/transfer/TransferServiceImpl.java b/src/main/java/org/seed/core/entity/transfer/TransferServiceImpl.java index 55fc424c6..55996f1bb 100644 --- a/src/main/java/org/seed/core/entity/transfer/TransferServiceImpl.java +++ b/src/main/java/org/seed/core/entity/transfer/TransferServiceImpl.java @@ -153,26 +153,24 @@ public void initObject(Transfer transfer) throws ValidationException { public List getAvailableElements(Transfer transfer, List elements) { Assert.notNull(transfer, C.TRANSFER); Assert.notNull(elements, ELEMENTS); - final var entity = transfer.getEntity(); final var result = new ArrayList(); - if (entity.hasAllFields()) { - boolean identifierFound = false; - for (EntityField entityField : entity.getAllFields()) { - // skip non-transferable types - if (entityField.getType().isBinary() || - entityField.getType().isFile() || - entityField.isReferenceField()) { - continue; - } - if (!anyMatch(elements, elem -> entityField.equals(elem.getEntityField()))) { - final var element = createElement(transfer, entityField); - if (entityField.isUnique() && !identifierFound) { - element.setIdentifier(true); - identifierFound = true; - } - result.add(element); + + boolean identifierFound = false; + for (EntityField entityField : entity.getAllFields()) { + // skip non-transferable types + if (entityField.getType().isBinary() || + entityField.getType().isFile() || + entityField.isReferenceField()) { + continue; + } + if (!anyMatch(elements, elem -> entityField.equals(elem.getEntityField()))) { + final var element = createElement(transfer, entityField); + if (entityField.isUnique() && !identifierFound) { + element.setIdentifier(true); + identifierFound = true; } + result.add(element); } } return result; @@ -182,21 +180,19 @@ public List getAvailableElements(Transfer transfer, List getAvailableNestedElements(NestedTransfer nestedTransfer, List elements) { Assert.notNull(nestedTransfer, "NestedTransfer"); Assert.notNull(elements, ELEMENTS); - final var entity = nestedTransfer.getNested().getNestedEntity(); final var result = new ArrayList(); - if (entity.hasAllFields()) { - for (EntityField entityField : entity.getAllFields()) { - if (entityField.getType().isBinary() || - entityField.getType().isFile() || - entityField.isReferenceField()) { - continue; - } - if (!anyMatch(elements, elem -> entityField.equals(elem.getEntityField()))) { - final var element = new TransferElement(); - element.setEntityField(entityField); - result.add(element); - } + + for (EntityField entityField : entity.getAllFields()) { + if (entityField.getType().isBinary() || + entityField.getType().isFile() || + entityField.isReferenceField()) { + continue; + } + if (!anyMatch(elements, elem -> entityField.equals(elem.getEntityField()))) { + final var element = new TransferElement(); + element.setEntityField(entityField); + result.add(element); } } return result; diff --git a/src/main/java/org/seed/core/entity/transform/TransformerServiceImpl.java b/src/main/java/org/seed/core/entity/transform/TransformerServiceImpl.java index b2c73ce31..d6246e397 100644 --- a/src/main/java/org/seed/core/entity/transform/TransformerServiceImpl.java +++ b/src/main/java/org/seed/core/entity/transform/TransformerServiceImpl.java @@ -457,20 +457,17 @@ public boolean autoMatchFields(Transformer transformer, List Assert.notNull(elements, "elements"); boolean matched = false; - if (transformer.getSourceEntity().hasAllFields() && - transformer.getTargetEntity().hasAllFields()) { - for (EntityField sourceField : transformer.getSourceEntity().getAllFields()) { - for (EntityField targetField : transformer.getTargetEntity().getAllFields()) { - if (sourceField.getType() == targetField.getType() && - sourceField.getName().equalsIgnoreCase(targetField.getName()) && - !containsElement(elements, sourceField, targetField)) { - - final var element = createElement(sourceField, targetField); - element.setTransformer(transformer); - elements.add(element); - matched = true; - break; - } + for (EntityField sourceField : transformer.getSourceEntity().getAllFields()) { + for (EntityField targetField : transformer.getTargetEntity().getAllFields()) { + if (sourceField.getType() == targetField.getType() && + sourceField.getName().equalsIgnoreCase(targetField.getName()) && + !containsElement(elements, sourceField, targetField)) { + + final var element = createElement(sourceField, targetField); + element.setTransformer(transformer); + elements.add(element); + matched = true; + break; } } } @@ -482,18 +479,15 @@ public boolean autoMatchFields(NestedTransformer transformer) { Assert.notNull(transformer, C.TRANSFORMER); boolean matched = false; - if (transformer.getSourceNested().getNestedEntity().hasAllFields() && - transformer.getTargetNested().getNestedEntity().hasAllFields()) { - for (EntityField sourceField : transformer.getSourceNested().getFields(true)) { - for (EntityField targetField : transformer.getTargetNested().getFields(true)) { - if (sourceField.getType() == targetField.getType() && - sourceField.getName().equalsIgnoreCase(targetField.getName()) && - !transformer.containsElement(sourceField, targetField)) { - - transformer.addElement(createElement(sourceField, targetField)); - matched = true; - break; - } + for (EntityField sourceField : transformer.getSourceNested().getFields(true)) { + for (EntityField targetField : transformer.getTargetNested().getFields(true)) { + if (sourceField.getType() == targetField.getType() && + sourceField.getName().equalsIgnoreCase(targetField.getName()) && + !transformer.containsElement(sourceField, targetField)) { + + transformer.addElement(createElement(sourceField, targetField)); + matched = true; + break; } } } diff --git a/src/main/java/org/seed/core/entity/value/ValueObjectRepository.java b/src/main/java/org/seed/core/entity/value/ValueObjectRepository.java index f60db65f2..f3f6217c2 100644 --- a/src/main/java/org/seed/core/entity/value/ValueObjectRepository.java +++ b/src/main/java/org/seed/core/entity/value/ValueObjectRepository.java @@ -480,10 +480,8 @@ protected String getIdentifier(ValueObject object, Session session) { private String resolveIdentifierPattern(Entity entity, ValueObject object) { String pattern = entity.getIdentifierPattern(); pattern = pattern.replace("{entity}", entity.getName()); - if (entity.hasAllFields()) { - for (EntityField field : entity.getAllFields()) { - pattern = resolveFieldPattern(field, pattern, object); - } + for (EntityField field : entity.getAllFields()) { + pattern = resolveFieldPattern(field, pattern, object); } if (StringUtils.hasText(pattern)) { return pattern; @@ -576,12 +574,10 @@ private Map getValueMap(ValueObject object, NestedEntity nestedE private Map getValueMap(ValueObject object, Entity entity) { final var valueMap = new HashMap(); - if (entity.hasAllFields()) { - for (EntityField field : entity.getAllFields()) { - final Object value = objectAccess.getValue(object, field); - if (value != null) { - valueMap.put(field.getUid(), value); - } + for (EntityField field : entity.getAllFields()) { + final Object value = objectAccess.getValue(object, field); + if (value != null) { + valueMap.put(field.getUid(), value); } } return valueMap; diff --git a/src/main/java/org/seed/core/entity/value/ValueObjectServiceImpl.java b/src/main/java/org/seed/core/entity/value/ValueObjectServiceImpl.java index 80902d860..645e08ebf 100644 --- a/src/main/java/org/seed/core/entity/value/ValueObjectServiceImpl.java +++ b/src/main/java/org/seed/core/entity/value/ValueObjectServiceImpl.java @@ -866,11 +866,9 @@ private boolean setObjectValues(Session session, Entity entity, ValueObject obje boolean isModified = false; final var caseInsensitiveKeyMap = toCaseInsensitiveKeyMap(valueMap); - if (entity.hasAllFields()) { - for (EntityField field : entity.getAllFields()) { - if (setObjectFieldValue(session, field, object, user, caseInsensitiveKeyMap)) { - isModified = true; - } + for (EntityField field : entity.getAllFields()) { + if (setObjectFieldValue(session, field, object, user, caseInsensitiveKeyMap)) { + isModified = true; } } if (entity.hasNesteds()) { diff --git a/src/main/java/org/seed/core/form/FormServiceImpl.java b/src/main/java/org/seed/core/form/FormServiceImpl.java index d1538efb5..6ecce83b3 100644 --- a/src/main/java/org/seed/core/form/FormServiceImpl.java +++ b/src/main/java/org/seed/core/form/FormServiceImpl.java @@ -221,7 +221,7 @@ public List
findUsage(Entity entity, Session session) { return entity.isGeneric() ? Collections.emptyList() : formRepository.find(session, queryParam(C.ENTITY, entity), - queryParam("autoLayout", false)); // ignore auto layout forms + queryParam(C.AUTOLAYOUT, false)); } @Override @@ -229,20 +229,23 @@ public List findUsage(EntityField entityField, Session session) { Assert.notNull(entityField, C.ENTITYFIELD); Assert.notNull(session, C.SESSION); - return subList(getObjects(session), form -> !form.isAutoLayout() && - (form.containsEntityField(entityField) || - anyMatch(form.getFieldExtras(), extra -> entityField.equals(extra.getEntityField())) || - (form.getLayout() != null && getLayoutService().containsField(form.getLayout(), entityField)) || - anyMatch(form.getSubForms(), subForm -> subForm.containsEntityField(entityField)))); + return subList(findNonAutoLayoutForms(session), + form -> (form.containsEntityField(entityField) || + anyMatch(form.getFieldExtras(), extra -> entityField.equals(extra.getEntityField())) || + (form.getLayout() != null && getLayoutService().containsField(form.getLayout(), entityField)) || + anyMatch(form.getSubForms(), subForm -> subForm.containsEntityField(entityField)))); } + + @Override public List findUsage(EntityRelation entityRelation, Session session) { Assert.notNull(entityRelation, C.RELATION); Assert.notNull(session, C.SESSION); - return subList(getObjects(session), form -> !form.isAutoLayout() && - getLayoutService().containsRelation(form.getLayout(), entityRelation)); + return subList(findNonAutoLayoutForms(session), + form -> form.getLayout() != null && + getLayoutService().containsRelation(form.getLayout(), entityRelation)); } @Override @@ -260,9 +263,9 @@ public List findUsage(NestedEntity nestedEntity, Session session) { Assert.notNull(nestedEntity, C.NESTEDENTITY); Assert.notNull(session, C.SESSION); - return subList(getObjects(session), form -> !form.isAutoLayout() && - anyMatch(form.getSubForms(), - subForm -> nestedEntity.equals(subForm.getNestedEntity()))); + return subList(findNonAutoLayoutForms(session), + form -> anyMatch(form.getSubForms(), + subForm -> nestedEntity.equals(subForm.getNestedEntity()))); } @Override @@ -560,7 +563,7 @@ public void notifyDelete(Entity entity, Session session) { // delete auto layout forms for (Form form : formRepository.find(queryParam(C.ENTITY, entity), - queryParam("autoLayout", true))) { + queryParam(C.AUTOLAYOUT, true))) { try { deleteObject(form, session); } @@ -625,6 +628,10 @@ public void notifyChange(Entity entity, Session session) { } } + private List findNonAutoLayoutForms(Session session) { + return formRepository.find(session, queryParam(C.AUTOLAYOUT, false)); + } + private void updateFormLayout(Form form, Entity entity, Session session) { boolean layoutChanged = false; if (form.isAutoLayout()) { @@ -641,14 +648,10 @@ else if (form.getLayout() != null) { } private void updateAutoLayout(Entity entity, Form form) { - if (entity.hasAllFields()) { - for (EntityField entityField : entity.getAllFields()) { - if (!form.containsEntityField(entityField)) { - final FormField formField = createFormField(form, entityField); - form.addField(formField); - } - } - } + filterAndForEach(entity.getAllFields(), + not(form::containsEntityField), + field -> form.addField(createFormField(form, field))); + final FormMetadata formMeta = (FormMetadata) form; formMeta.setLayoutContent(getLayoutService().buildAutoLayout(entity, form)); formMeta.setOrderIndexes(); @@ -659,7 +662,7 @@ private void updateAutoLayout(Entity entity, Form form) { private List getFormActions(Form form, boolean isList) { Assert.notNull(form, C.FORM); - final List result = new ArrayList<>(); + final var result = new ArrayList(); // default actions that comes first for (FormActionType actionType : FormActionType.defaultActionTypes(isList, true)) { result.add(createAction(form, actionType)); @@ -973,7 +976,9 @@ private List getChangeAwareObjects() { } private void cleanupFieldExtras(Form form) { - final Set fieldIds = getLayoutService().getIdSet(form.getLayout()); + final Set fieldIds = form.getLayout() != null + ? getLayoutService().getIdSet(form.getLayout()) + : Collections.emptySet(); form.getFieldExtras().removeIf(extra -> !fieldIds.contains(extra.getEntityField().getUid())); } diff --git a/src/main/java/org/seed/core/form/layout/AutolayoutBuilder.java b/src/main/java/org/seed/core/form/layout/AutolayoutBuilder.java index e5c2210dc..50ac41d61 100644 --- a/src/main/java/org/seed/core/form/layout/AutolayoutBuilder.java +++ b/src/main/java/org/seed/core/form/layout/AutolayoutBuilder.java @@ -130,11 +130,9 @@ private LayoutElement buildSubForms(LayoutElement elemMainGrid) { } } // relations - if (entity.hasAllRelations()) { - for (EntityRelation relation : entity.getAllRelations()) { - elemTabs.addChild(createTab(relation.getName())); - LayoutServiceImpl.buildRelationForm(relation, elemPanels.addChild(createTabpanel(relation.getName()))); - } + for (EntityRelation relation : entity.getAllRelations()) { + elemTabs.addChild(createTab(relation.getName())); + LayoutServiceImpl.buildRelationForm(relation, elemPanels.addChild(createTabpanel(relation.getName()))); } return elemLayout; } diff --git a/src/main/java/org/seed/core/form/layout/LayoutServiceImpl.java b/src/main/java/org/seed/core/form/layout/LayoutServiceImpl.java index 3993d7624..194e6a71a 100644 --- a/src/main/java/org/seed/core/form/layout/LayoutServiceImpl.java +++ b/src/main/java/org/seed/core/form/layout/LayoutServiceImpl.java @@ -114,7 +114,10 @@ public String getLayout(String path, FormSettings settings) { } else if (path.startsWith(PATH_DETAIL)) { final Long formId = Long.parseLong(path.substring(PATH_DETAIL.length())); - content = getForm(formId).getLayout().getContent(); + final var layout = getForm(formId).getLayout(); + if (layout != null) { + content = layout.getContent(); + } } else if (path.startsWith(PATH_EDIT)) { final String editLayoutUid = path.substring(PATH_EDIT.length(), path.lastIndexOf('/')); @@ -776,13 +779,14 @@ private void addFieldLabel(EntityField entityField, LabelProperties labelPropert @Override public void rebuildLayout(Form form) { Assert.notNull(form, C.FORM); - Assert.stateAvailable(form.getLayout(), C.LAYOUT); final FormLayout formLayout = form.getLayout(); - final var layoutRoot = parseLayout(formLayout); - decorateLayout(form, layoutRoot); - undecorateLayout(form, layoutRoot); - formLayout.setContent(buildLayout(layoutRoot)); + if (formLayout != null) { + final var layoutRoot = parseLayout(formLayout); + decorateLayout(form, layoutRoot); + undecorateLayout(form, layoutRoot); + formLayout.setContent(buildLayout(layoutRoot)); + } } private void newColumn(Form form, LayoutElement layoutRoot, String contextId, boolean right) { diff --git a/src/main/java/org/seed/ui/zk/vm/admin/AdminEntityViewModel.java b/src/main/java/org/seed/ui/zk/vm/admin/AdminEntityViewModel.java index 05b133d58..94014570b 100644 --- a/src/main/java/org/seed/ui/zk/vm/admin/AdminEntityViewModel.java +++ b/src/main/java/org/seed/ui/zk/vm/admin/AdminEntityViewModel.java @@ -789,7 +789,7 @@ public void selectOption(@BindingParam("option") String option) { } break; - case "autolayout": + case C.AUTOLAYOUT: if (getOptions().isAutoLayout()) { entityMeta.setGeneric(false); entityMeta.setParentEntity(null); diff --git a/src/main/java/org/seed/ui/zk/vm/admin/AdminFormViewModel.java b/src/main/java/org/seed/ui/zk/vm/admin/AdminFormViewModel.java index 213f3e575..30d7a5adf 100644 --- a/src/main/java/org/seed/ui/zk/vm/admin/AdminFormViewModel.java +++ b/src/main/java/org/seed/ui/zk/vm/admin/AdminFormViewModel.java @@ -73,7 +73,6 @@ public class AdminFormViewModel extends AbstractAdminViewModel { private static final String LAYOUT_INCLUDE = "layoutInclude"; private static final String CONTEXT_ID = "contextid"; private static final String EDITFORM_UID = "editFormUid"; - private static final String OPTION_AUTOLAYOUT = "autolayout"; private static final String OPTION_EXPERTMODE = "expertmode"; @Wire("#newFormWin") @@ -158,7 +157,7 @@ protected void initFilters() { existFilters = true; } } - getFilter(FILTERGROUP_LIST, "autoLayout").setBooleanFilter(true); + getFilter(FILTERGROUP_LIST, C.AUTOLAYOUT).setBooleanFilter(true); } public FormField getField() { @@ -745,7 +744,7 @@ public void selectEntityFunction() { @Command public void selectOption(@BindingParam("option") String option) { switch (option) { - case OPTION_AUTOLAYOUT: + case C.AUTOLAYOUT: getOptions().setExpertMode(false); break; diff --git a/src/main/resources/metainfo/zk-label.properties b/src/main/resources/metainfo/zk-label.properties index e4aefcbb0..2e381611c 100644 --- a/src/main/resources/metainfo/zk-label.properties +++ b/src/main/resources/metainfo/zk-label.properties @@ -1162,6 +1162,7 @@ val.transfer.illegalusergroup = A user group named "{0}" already exists but is n info.dragndropinfo = Hint: Use drag&drop to select / deselect items info.expertformlayout = In expert mode, layout can only be defined via a source text entry +info.regularexpression = Please specify a regular expression warn.schemaupdate.title = Error updating database schema warn.schemaupdate.message1 = Last change of the database schema was unsuccessful and was discarded! diff --git a/src/main/resources/metainfo/zk-label_de.properties b/src/main/resources/metainfo/zk-label_de.properties index 1f3076c5e..6405de68e 100644 --- a/src/main/resources/metainfo/zk-label_de.properties +++ b/src/main/resources/metainfo/zk-label_de.properties @@ -1162,6 +1162,7 @@ val.transfer.illegalusergroup = Eine Benutzergruppe mit dem Namen "{0}" ist bere info.dragndropinfo = Hinweis: Ziehen Sie die Einträge per Drag & Drop auf die andere Seite info.expertformlayout = Im Expertenmodus kann das Layout nur über eine Quelltext-Eingabe definiert werden +info.regularexpression = Geben Sie bitte einen regulären Ausdruck an warn.schemaupdate.title = Fehler bei der Aktualisierung des Schemas warn.schemaupdate.message1 = Die letzte Änderung des Datenbank-Schemas war nicht erfolgreich und wurde verworfen! diff --git a/src/main/resources/web/zul/admin/entity/entity_fields.zul b/src/main/resources/web/zul/admin/entity/entity_fields.zul index 1e5a47643..deec62157 100644 --- a/src/main/resources/web/zul/admin/entity/entity_fields.zul +++ b/src/main/resources/web/zul/admin/entity/entity_fields.zul @@ -132,6 +132,7 @@