{% import "_includes/forms" as forms %}
{% if field is defined %} {% endif %} {{ forms.selectField({ first: true, label: "Group"|t('app'), instructions: "Which group should this field be displayed in?"|t('app'), id: 'group', name: 'group', options: groupOptions, value: groupId }) }} {{ forms.textField({ label: "Name"|t('app'), instructions: "What this field will be called in the CP."|t('app'), id: 'name', name: 'name', value: (field is not empty ? field.name : null), errors: (field is not empty ? field.getErrors('name') : null), required: true, translatable: true, autofocus: true }) }} {{ forms.textField({ label: "Handle"|t('app'), instructions: "How you’ll refer to this field in the templates."|t('app'), id: 'handle', class: 'code', name: 'handle', maxlength: 64, value: (field is not empty ? field.handle : null), errors: (field is not empty ? field.getErrors('handle') : null), required: true, }) }} {{ forms.textareaField({ label: "Instructions"|t('app'), instructions: "Helper text to guide the author."|t('app'), id: 'instructions', class: 'nicetext', name: 'instructions', value: (field is not empty ? field.instructions : null), errors: (field is not empty ? field.getErrors('instructions') : null), translatable: true }) }} {{ forms.selectField({ label: "Field Type"|t('app'), instructions: "What type of field is this?"|t('app'), warning: (fieldId is not empty and not field.hasErrors('type') ? "Changing this may result in data loss."|t('app')), id: 'type', name: 'type', options: fieldTypeOptions, value: className(field), errors: field.getErrors('type') ?? null, toggle: true }) }} {% if craft.app.getIsMultiSite() %} {% set translationMethods = field.supportedTranslationMethods %} {% if translationMethods|length > 1 %}
{{ forms.selectField({ label: "Translation Method"|t('app'), instructions: "How should this field’s values be translated?"|t('app'), id: 'translation-method', name: 'translationMethod', options: [ 'none' in translationMethods ? { value: 'none', label: "Not translatable"|t('app') }, 'language' in translationMethods ? { value: 'language', label: "Translate for each language"|t('app') }, 'site' in translationMethods ? { value: 'site', label: "Translate for each site"|t('app') }, 'custom' in translationMethods ? { value: 'custom', label: "Custom…"|t('app') } ]|filter, value: field.translationMethod, toggle: true, targetPrefix: 'translation-method-' }) }} {% if 'custom' in translationMethods %}
{{ forms.textField({ label: "Translation Key Format"|t('app'), instructions: "Template that defines the field’s custom “translation key” format. Field values will be copied to all sites that produce the same key. For example, to make the field translatable based on the first two characters of the site handle, you could enter `{site.handle[:2]}`.", id: 'translation-key-format', name: 'translationKeyFormat', value: field.translationKeyFormat, errors: field.getErrors('translationKeyFormat') }) }}
{% endif %}
{% endif %} {% endif %}
{% for type in allowedFieldTypes %} {% set isCurrent = (type == className(field)) %} {% endfor %}
{% if field is not defined or not field.handle %} {% js %} new Craft.HandleGenerator('#name', '#handle'); {% endjs %} {% endif %} {% js %} Craft.supportedTranslationMethods = {{ supportedTranslationMethods|json_encode|raw }}; Craft.updateTranslationMethodSettings = function(type, container) { var $container = $(container); if (!Craft.supportedTranslationMethods[type] || Craft.supportedTranslationMethods[type].length == 1) { $container.addClass('hidden'); } else { $container.removeClass('hidden'); // Rebuild the options based on the field type's supported translation methods $container.find('select').html( ($.inArray('none', Craft.supportedTranslationMethods[type]) != -1 ? '' : '') + ($.inArray('language', Craft.supportedTranslationMethods[type]) != -1 ? '' : '') + ($.inArray('site', Craft.supportedTranslationMethods[type]) != -1 ? '' : '') + ($.inArray('custom', Craft.supportedTranslationMethods[type]) != -1 ? '' : '') ); } } var $fieldTypeInput = $("#{{ 'type'|namespaceInputId|e('js') }}"), $translationSettings = $("#{{ 'translation-settings'|namespaceInputId|e('js') }}"); $fieldTypeInput.change(function(e) { Craft.updateTranslationMethodSettings($(this).val(), $translationSettings); }); {% endjs %}