Search in sources :

Example 6 with FormOptionSet

use of com.enonic.xp.form.FormOptionSet in project xp by enonic.

the class XmlContentTypeParserTest method testI18n_optionSet.

@Test
public void testI18n_optionSet() throws Exception {
    parse(this.parser, "-i18n.xml");
    final ContentType result = this.builder.build();
    final FormItem item = result.getForm().getFormItem("radioOptionSet");
    assertNotNull(item);
    final FormOptionSet radioOptionSet = (FormOptionSet) item;
    assertEquals(FormItemType.FORM_OPTION_SET, radioOptionSet.getType());
    assertEquals("translated.help-text", radioOptionSet.getHelpTextI18nKey());
    assertEquals("translated.label", radioOptionSet.getLabelI18nKey());
    final Input inputInsideOption = radioOptionSet.getFormItems().getInput(FormItemPath.from("option_1.text-input"));
    assertEquals("translated.help-text", inputInsideOption.getHelpTextI18nKey());
    assertEquals("translated.label", inputInsideOption.getLabelI18nKey());
    final FormOptionSetOption radioOption = radioOptionSet.getFormItems().getItemByName("option_1").toFormOptionSetOption();
    assertEquals("translated.help-text", radioOption.getHelpTextI18nKey());
    assertEquals("translated.label", radioOption.getLabelI18nKey());
}
Also used : FormOptionSet(com.enonic.xp.form.FormOptionSet) Input(com.enonic.xp.form.Input) ContentType(com.enonic.xp.schema.content.ContentType) FormItem(com.enonic.xp.form.FormItem) FormOptionSetOption(com.enonic.xp.form.FormOptionSetOption) Test(org.junit.jupiter.api.Test)

Example 7 with FormOptionSet

use of com.enonic.xp.form.FormOptionSet in project xp by enonic.

the class XmlContentTypeParserTest method testI18nParseOmittingElementValue.

@Test
public void testI18nParseOmittingElementValue() throws Exception {
    parse(this.parser, "-i18n-only-attribute.xml");
    final ContentType result = this.builder.build();
    assertEquals("translated.display-name", result.getDisplayNameI18nKey());
    assertEquals("translated.description", result.getDescriptionI18nKey());
    // input type
    final Input input = (Input) result.getForm().getFormItem("textLine");
    assertEquals("translated.label", input.getLabelI18nKey());
    assertEquals("translated.label", input.getLabel());
    assertEquals("translated.help-text", input.getHelpTextI18nKey());
    assertEquals("translated.help-text", input.getHelpText());
    // option set
    final FormItem item = result.getForm().getFormItem("radioOptionSet");
    assertNotNull(item);
    final FormOptionSet radioOptionSet = (FormOptionSet) item;
    assertEquals(FormItemType.FORM_OPTION_SET, radioOptionSet.getType());
    assertEquals("translated.help-text", radioOptionSet.getHelpTextI18nKey());
    assertEquals("translated.help-text", radioOptionSet.getHelpText());
    assertEquals("translated.label", radioOptionSet.getLabelI18nKey());
    assertEquals("translated.label", radioOptionSet.getLabel());
    final Input inputInsideOption = radioOptionSet.getFormItems().getInput(FormItemPath.from("option_1.text-input"));
    assertEquals("translated.help-text", inputInsideOption.getHelpTextI18nKey());
    assertEquals("translated.help-text", inputInsideOption.getHelpText());
    assertEquals("translated.label", inputInsideOption.getLabelI18nKey());
    assertEquals("translated.label", inputInsideOption.getLabel());
    final FormOptionSetOption radioOption = radioOptionSet.getFormItems().getItemByName("option_1").toFormOptionSetOption();
    assertEquals("translated.help-text", radioOption.getHelpTextI18nKey());
    assertEquals("translated.help-text", radioOption.getHelpText());
    assertEquals("translated.label", radioOption.getLabelI18nKey());
    assertEquals("translated.label", radioOption.getLabel());
    // field set
    FormItem fieldSetItem = null;
    for (final FormItem next : result.getForm().getFormItems()) {
        if (next.getName().startsWith("fieldSet")) {
            fieldSetItem = next;
        }
    }
    assertNotNull(fieldSetItem);
    final FieldSet fieldSet = (FieldSet) fieldSetItem;
    assertEquals("translated.label", fieldSet.getLabelI18nKey());
    assertEquals("translated.label", fieldSet.getLabel());
    final Input inputInsideFieldSet = fieldSet.getFormItems().getInput(FormItemPath.from("textLine2"));
    assertEquals("translated.help-text", inputInsideFieldSet.getHelpTextI18nKey());
    assertEquals("translated.help-text", inputInsideFieldSet.getHelpText());
    assertEquals("translated.label", inputInsideFieldSet.getLabelI18nKey());
    assertEquals("translated.label", inputInsideFieldSet.getLabel());
    // item set
    final FormItem itemSet = result.getForm().getFormItem("item-set");
    assertNotNull(item);
    final FormItemSet formItemSet = (FormItemSet) itemSet;
    assertEquals("translated.label", formItemSet.getLabelI18nKey());
    assertEquals("translated.label", formItemSet.getLabel());
    assertEquals("translated.help-text", formItemSet.getHelpTextI18nKey());
    assertEquals("translated.help-text", formItemSet.getHelpText());
    final Input inputInsideFormItemSet = formItemSet.getFormItems().getInput(FormItemPath.from("textLine1"));
    assertEquals("translated.help-text", inputInsideFormItemSet.getHelpTextI18nKey());
    assertEquals("translated.help-text", inputInsideFormItemSet.getHelpText());
    assertEquals("translated.label", inputInsideFormItemSet.getLabelI18nKey());
    assertEquals("translated.label", inputInsideFormItemSet.getLabel());
}
Also used : FormOptionSet(com.enonic.xp.form.FormOptionSet) Input(com.enonic.xp.form.Input) FieldSet(com.enonic.xp.form.FieldSet) ContentType(com.enonic.xp.schema.content.ContentType) FormItem(com.enonic.xp.form.FormItem) FormOptionSetOption(com.enonic.xp.form.FormOptionSetOption) FormItemSet(com.enonic.xp.form.FormItemSet) Test(org.junit.jupiter.api.Test)

Example 8 with FormOptionSet

use of com.enonic.xp.form.FormOptionSet in project xp by enonic.

the class OccurrenceValidator method validate.

private static void validate(final Iterable<FormItem> formItems, final List<PropertySet> parentDataSets, final ValidationErrors.Builder validationErrorsBuilder) {
    for (FormItem formItem : formItems) {
        validateOccurrences(formItem, parentDataSets, validationErrorsBuilder);
        if (formItem instanceof FormItemSet) {
            final List<PropertySet> dataSets = getDataSets(formItem.getName(), parentDataSets);
            validate(((FormItemSet) formItem).getFormItems(), dataSets, validationErrorsBuilder);
        } else if (formItem instanceof FieldSet) {
            validate(((FieldSet) formItem).formItemIterable(), parentDataSets, validationErrorsBuilder);
        } else if (formItem instanceof FormOptionSet) {
            validateFormOptionSetSelection((FormOptionSet) formItem, parentDataSets, validationErrorsBuilder);
        }
    }
}
Also used : FormOptionSet(com.enonic.xp.form.FormOptionSet) FieldSet(com.enonic.xp.form.FieldSet) FormItem(com.enonic.xp.form.FormItem) PropertySet(com.enonic.xp.data.PropertySet) FormItemSet(com.enonic.xp.form.FormItemSet)

Example 9 with FormOptionSet

use of com.enonic.xp.form.FormOptionSet in project xp by enonic.

the class OccurrenceValidator method validateOccurrences.

private static void validateOccurrences(final FormItem formItem, final List<PropertySet> parentDataSets, final ValidationErrors.Builder validationErrorsBuilder) {
    final Occurrences occurrences;
    if (formItem instanceof Input) {
        occurrences = ((Input) formItem).getOccurrences();
    } else if (formItem instanceof FormItemSet) {
        occurrences = ((FormItemSet) formItem).getOccurrences();
    } else if (formItem instanceof FormOptionSet) {
        occurrences = ((FormOptionSet) formItem).getOccurrences();
    } else {
        return;
    }
    for (final PropertySet parentDataSet : parentDataSets) {
        final int entryCount = parentDataSet.countProperties(formItem.getName());
        final PropertyPath parentPath = Optional.ofNullable(parentDataSet.getProperty()).map(Property::getPath).orElseGet(() -> PropertyPath.from(formItem.getPath().getParent().toString()));
        final PropertyPath path = PropertyPath.from(parentPath, formItem.getName());
        final int minOccurrences = occurrences.getMinimum();
        if (occurrences.impliesRequired() && entryCount < minOccurrences) {
            validationErrorsBuilder.add(ValidationError.dataError(ValidationErrorCode.from(ApplicationKey.SYSTEM, "cms.occurrencesInvalid"), path).i18n("system.cms.validation.minOccurrencesInvalid").args(formItem.getPath(), minOccurrences, entryCount).build());
        }
        final int maxOccurrences = occurrences.getMaximum();
        if (maxOccurrences > 0 && entryCount > maxOccurrences) {
            validationErrorsBuilder.add(ValidationError.dataError(ValidationErrorCode.from(ApplicationKey.SYSTEM, "cms.occurrencesInvalid"), path).i18n("system.cms.validation.maxOccurrencesInvalid").args(formItem.getPath(), occurrences.getMaximum(), entryCount).build());
        }
    }
}
Also used : FormOptionSet(com.enonic.xp.form.FormOptionSet) Input(com.enonic.xp.form.Input) PropertyPath(com.enonic.xp.data.PropertyPath) Occurrences(com.enonic.xp.form.Occurrences) PropertySet(com.enonic.xp.data.PropertySet) FormItemSet(com.enonic.xp.form.FormItemSet)

Example 10 with FormOptionSet

use of com.enonic.xp.form.FormOptionSet in project xp by enonic.

the class FormJsonToPropertyTreeTranslatorTest method createFormForAllInputTypes.

private Form createFormForAllInputTypes() {
    final FormItemSet set = FormItemSet.create().name("set").addFormItem(Input.create().name("setString").label("String").inputType(InputTypeName.TEXT_LINE).build()).addFormItem(Input.create().name("setDouble").label("Double").inputType(InputTypeName.DOUBLE).build()).build();
    final FormOptionSet formOptionSet = FormOptionSet.create().name("myOptionSet").label("My option set").addOptionSetOption(FormOptionSetOption.create().name("myOptionSetOption1").label("option label1").addFormItem(Input.create().name("myTextLine1").label("myTextLine1").inputType(InputTypeName.TEXT_LINE).build()).build()).addOptionSetOption(FormOptionSetOption.create().name("myOptionSetOption2").label("option label2").addFormItem(Input.create().name("myTextLine2").label("myTextLine2").inputType(InputTypeName.TEXT_LINE).build()).build()).build();
    return Form.create().addFormItem(Input.create().name("textLine").label("Textline").inputType(InputTypeName.TEXT_LINE).build()).addFormItem(Input.create().name("stringArray").label("String array").inputType(InputTypeName.TEXT_LINE).build()).addFormItem(Input.create().name("double").label("Double").inputType(InputTypeName.DOUBLE).build()).addFormItem(Input.create().name("long").label("Long").inputType(InputTypeName.LONG).build()).addFormItem(Input.create().name("comboBox").label("Combobox").inputType(InputTypeName.COMBO_BOX).inputTypeProperty(InputTypeProperty.create("option", "label1").attribute("value", "value1").build()).inputTypeProperty(InputTypeProperty.create("option", "label2").attribute("value", "value2").build()).build()).addFormItem(Input.create().name("checkbox").label("Checkbox").inputType(InputTypeName.CHECK_BOX).build()).addFormItem(Input.create().name("tag").label("Tag").inputType(InputTypeName.TAG).build()).addFormItem(Input.create().name("contentSelector").label("Content selector").inputType(InputTypeName.CONTENT_SELECTOR).inputTypeProperty(InputTypeProperty.create("allowContentType", ContentTypeName.folder().toString()).build()).inputTypeProperty(InputTypeProperty.create("relationshipType", RelationshipTypeName.REFERENCE.toString()).build()).build()).addFormItem(Input.create().name("contentTypeFilter").label("Content type filter").inputType(InputTypeName.CONTENT_TYPE_FILTER).build()).addFormItem(Input.create().name("siteConfigurator").inputType(InputTypeName.SITE_CONFIGURATOR).label("Site configurator").build()).addFormItem(Input.create().name("date").label("Date").inputType(InputTypeName.DATE).build()).addFormItem(Input.create().name("time").label("Time").inputType(InputTypeName.TIME).build()).addFormItem(Input.create().name("geoPoint").label("Geo point").inputType(InputTypeName.GEO_POINT).build()).addFormItem(Input.create().name("htmlArea").label("Html area").inputType(InputTypeName.HTML_AREA).build()).addFormItem(Input.create().name("localDateTime").label("Local datetime").inputType(InputTypeName.DATE_TIME).inputTypeProperty(InputTypeProperty.create("timezone", "false").build()).build()).addFormItem(Input.create().name("dateTime").label("Datetime").inputType(InputTypeName.DATE_TIME).inputTypeProperty(InputTypeProperty.create("timezone", "true").build()).build()).addFormItem(Input.create().name("media").label("Image Uploader").inputType(InputTypeName.IMAGE_UPLOADER).build()).addFormItem(set).addFormItem(formOptionSet).build();
}
Also used : FormOptionSet(com.enonic.xp.form.FormOptionSet) FormItemSet(com.enonic.xp.form.FormItemSet)

Aggregations

FormOptionSet (com.enonic.xp.form.FormOptionSet)13 FormItemSet (com.enonic.xp.form.FormItemSet)8 Test (org.junit.jupiter.api.Test)6 Form (com.enonic.xp.form.Form)5 FormItem (com.enonic.xp.form.FormItem)5 Input (com.enonic.xp.form.Input)5 FieldSet (com.enonic.xp.form.FieldSet)4 FormOptionSetOption (com.enonic.xp.form.FormOptionSetOption)4 ContentType (com.enonic.xp.schema.content.ContentType)3 PropertySet (com.enonic.xp.data.PropertySet)2 PropertyTree (com.enonic.xp.data.PropertyTree)2 Occurrences (com.enonic.xp.form.Occurrences)2 AbstractSchemaTest (com.enonic.xp.core.impl.schema.AbstractSchemaTest)1 PropertyPath (com.enonic.xp.data.PropertyPath)1 FormItems (com.enonic.xp.form.FormItems)1 InlineMixin (com.enonic.xp.form.InlineMixin)1 PatternIndexConfigDocument (com.enonic.xp.index.PatternIndexConfigDocument)1 InputTypeProperty (com.enonic.xp.inputtype.InputTypeProperty)1 Mixin (com.enonic.xp.schema.mixin.Mixin)1 MixinName (com.enonic.xp.schema.mixin.MixinName)1