{% requirePermission 'multiTranslateSettings' %}
{% extends "_layouts/cp" %}
{% import '_includes/forms.twig' as forms %}

{% set title = 'Multi Translator' %}
{% set selectedSubnavItem = 'settings' %}

{% set crumbs = [
    { label: 'Multi Translator', url: url('multi-translator') },
] %}

{% set providerSettings = craft.multiTranslator.providerSettings %}
{% set apiServices = craft.multiTranslator.apiServices %}

{% block content %}
    <form method="post" data-saveshortcut>
        {% namespace "settings" %}
            <fieldset>
                <legend>
                    <h2>API Provider</h2>
                </legend>

                {{ forms.selectField({
                    label: 'Provider',
                    instructions: '',
                    name: 'translationProvider',
                    value: providerSettings.translationProvider ?? 'deepl',
                    options: apiServices|map(s => {value: s.handle, label: s.displayName})|values,
                    toggle: true,
                    targetPrefix: 'translation-provider-'
                }) }}
            </fieldset>
        {% endnamespace %}

        {% for handle, service in apiServices %}
            {% if service.settingsTemplatePath %}
                <fieldset id="settings-translation-provider-{{ handle }}"{% if providerSettings.translationProvider != handle %} class="hidden"{% endif %}>
                    <legend>
                        <h2>{{ service.displayName }}</h2>
                    </legend>

                    {% namespace "settings[providers][#{handle}]" %}
                        {{ include(service.settingsTemplatePath, service.settingsTemplateVariables) }}
                    {% endnamespace %}
                </fieldset>
            {% endif %}
        {% endfor %}

        <hr>

        {% namespace 'settings' %}
            <fieldset>
                <legend>
                    <h2>General Options</h2>
                </legend>

                {{ forms.selectField({
                    label: "Translate buttons direction",
                    instructions: "Select direction 'to target' or 'from source', in the sidebar actions of entry detail view.",
                    id: "translationDirectionButtons",
                    name: "translationDirectionButtons",
                    value: providerSettings.translationDirectionButtons,
                    options: [
                        {'label': 'From current entry to <other sites>', 'value': 'fromThis'},
                        {'label': 'From <other sites> to current entry', 'value': 'toThis'},
                        {'label': 'Both (might be confusing)', 'value': 'both'},
                    ],
                    errors: providerSettings.getErrors("translationDirectionButtons"),
                }) }}

                {{ forms.lightswitchField({
                    label: "Save as draft",
                    instructions: "Always create a new draft when translating entries.",
                    id: "saveAsDraft",
                    name: "saveAsDraft",
                    on: providerSettings.saveAsDraft,
                    errors: providerSettings.getErrors("saveAsDraft"),
                }) }}

                {{ forms.lightswitchField({
                    label: "Reset slug",
                    instructions: "Reset slug after translation, in order for a new slug to be generated from the translated title.",
                    id: "resetSlug",
                    name: "resetSlug",
                    on: providerSettings.resetSlug,
                    errors: providerSettings.getErrors("resetSlug"),
                }) }}

                {{ forms.lightswitchField({
                    label: "Detect Source Language",
                    instructions: "Don't send the source language to the API and let Deepl/Google detect the source language.",
                    id: "detectSourceLanguage",
                    name: "detectSourceLanguage",
                    on: providerSettings.detectSourceLanguage,
                    errors: providerSettings.getErrors("detectSourceLanguage"),
                }) }}

                {{ forms.lightswitchField({
                    label: "Update internal links",
                    instructions: "Update internal links in CKeditor and point them to target site element.",
                    id: "updateInternalLinks",
                    name: "updateInternalLinks",
                    on: providerSettings.updateInternalLinks,
                    errors: providerSettings.getErrors("updateInternalLinks"),
                }) }}

                {{ forms.lightswitchField({
                    label: "Translated CKeditor nested entries",
                    instructions: "Find and process nested Entries inside CKeditor value.",
                    id: "processNestedEntries",
                    name: "processNestedEntries",
                    on: providerSettings.processNestedEntries,
                    errors: providerSettings.getErrors("processNestedEntries"),
                }) }}

                {{ forms.editableTableField({
                    label: "Disabled fields",
                    instructions: 'Disable field handles and ignore them in the translation',
                    name: "disabledFields",
                    id: "disabledFields",
                    cols: {
                        'handle': {
                            type: 'singleline',
                            heading: "Field handle",
                            rows: 1
                        },
                    },
                    rows: providerSettings.disabledFields,
                    allowAdd: true,
                    allowDelete: true,
                    allowReorder: true,
                    addRowLabel: 'Add a field',
                    errors: providerSettings.getErrors('disabledFields'),
                    required: false
                })|spaceless }}

                {{ forms.lightswitchField({
                    label: "Translate disabled Commerce Variants",
                    instructions: "Query and translate disabled variants of Commerce Products.",
                    id: "translateDisabledVariants",
                    name: "translateDisabledVariants",
                    on: providerSettings.translateDisabledVariants,
                    errors: providerSettings.getErrors("translateDisabledVariants"),
                }) }}

                {{ forms.lightswitchField({
                    label: "Translate disabled Matrix Elements",
                    instructions: "Query and translate disabled Matrix Elements inside fields",
                    id: "translateDisabledMatrixElements",
                    name: "translateDisabledMatrixElements",
                    on: providerSettings.translateDisabledMatrixElements,
                    errors: providerSettings.getErrors("translateDisabledMatrixElements"),
                }) }}
            </fieldset>
        {% endnamespace %}

        <hr>

        <fieldset>
            {{ csrfInput() }}
            {{ actionInput('multi-translator/provider-settings/update') }}
            <button class="btn submit">Save</button>
        </fieldset>
    </form>
{% endblock %}
