{% extends "freeform/_layouts/settings" %}

{% import "_includes/forms" as forms %}

{% set title = "Template Manager"|t("freeform") %}

{% block content %}

    <input type="hidden" name="action" value="freeform/settings/save-settings">
    {{ redirectInput('freeform/settings/template-manager') }}
    {{ csrfInput() }}

    <h2 class="first">{{ "Formatting Templates"|t('freeform') }}</h2>

    {% set suggestionsData = [] %}
    {% for directory in craft.freeform.getAllSiteTemplatesDirectories() %}
        {% set suggestionsData = suggestionsData|merge([{
            "name": directory
        }]) %}
    {% endfor %}

    {{ forms.autosuggestField({
        label: "Directory Path"|t('freeform'),
        id: "formTemplateDirectory",
        class: "code",
        suggestEnvVars: false,
        suggestAliases: false,
        suggestions:[{
            "label":"Existing Directories",
            "data": suggestionsData
        }],
        tip: null,
        limit: 10,
        name: "settings[formTemplateDirectory]",
        value: settings.formTemplateDirectory,
        errors: settings.getErrors("formTemplateDirectory"),
        instructions: "Provide a relative path to the Craft Templates folder where your custom formatting templates directory is. If you have not yet created the directory, please do that before filling in this setting. This allows you to use Twig template files for your form formatting and allows Freeform to locate these files when assigning to a form."|t('freeform'),
        placeholder: "e.g. _freeform/formatting",
    }) }}

    {% if settings.absoluteFormTemplateDirectory %}

        {% set templateFiles = craft.freeform.settings.listTemplatesInFormTemplateDirectory() %}


        <div id="components-wrapper">
            <div>
                <button type="button" class="btn submit small icon add add-sample-template" id="add-formatting-template">
                    {{ "Add Sample"|t('freeform') }}
                </button>

                <ul class="directory-structure">
                    <li class="dir">
                        <span>{{ settings.formTemplateDirectory }}</span>
                        <ul>
                            {% for file in templateFiles %}
                                <li class="file">
                                    <span>{{ file }}</span>
                                </li>
                            {% endfor %}
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    {% endif %}

    <hr />

    <h2>{{ "Email Notification Templates"|t('freeform') }}</h2>

    {{ forms.selectField({
        label: "Template Storage Type"|t('freeform'),
        id: 'storage-type',
        instructions: "Choose whether you want to enable email notification templates stored as files, in the database, or have both options available."|t('freeform'),
        name: "settings[emailTemplateStorageType]",
        value: settings.emailTemplateStorageType,
        errors: settings.errors("emailTemplateStorageType"),
        options: {
            "files": "File" | t('freeform'),
            "database": "Database" | t('freeform'),
            "files_database": "File & Database" | t('freeform'),
        },
    }) }}

    <div id="template-default" class="field {{ settings.emailTemplateStorageType != "files_database" ? "hidden" }}">
        {{ forms.selectField({
            label: "Default Email Template Creation Method"|t('freeform'),
            instructions: "Select which storage method to use when creating new email notifications with 'Add New Template' option in the form builder."|t('freeform'),
            name: "settings[emailTemplateDefault]",
            value: settings.emailTemplateDefault,
            errors: settings.errors("emailTemplateDefault"),
            options: {
                "files": "File" | t('freeform'),
                "database": "Database" | t('freeform'),
            },
        }) }}
    </div>

    <div id="files-directory" class="field {{ settings.emailTemplateStorageType not in ["files", "files_database"] ? "hidden" }}">

        {{ forms.lightswitchField({
            label: "Allow File-based Email Templates to be created inside the Control Panel"|t('freeform'),
            instructions: "Allowing users to generate template files from inside the CP can potentially cause issues with certain workflows."|t('freeform'),
            name: "settings[allowFileTemplateEdit]",
            on: settings.allowFileTemplateEdit,
            errors: settings.errors("allowFileTemplateEdit"),
        }) }}

        {% set suggestionsData = [] %}
        {% for directory in craft.freeform.getAllSiteTemplatesDirectories() %}
            {% set suggestionsData = suggestionsData|merge([{
                "name": directory
            }]) %}
        {% endfor %}

        {{ forms.autosuggestField({
            label: "File Directory Path"|t('freeform'),
            id: "emailTemplateDirectory",
            class: "code",
            suggestEnvVars: false,
            suggestAliases: false,
            suggestions:[{
                "label":"Existing Directories",
                "data": suggestionsData
            }],
            tip: null,
            limit: 10,
            name: "settings[emailTemplateDirectory]",
            value: settings.emailTemplateDirectory,
            errors: settings.getErrors("emailTemplateDirectory"),
            instructions: "Provide a relative path to the Craft Templates folder where your email templates directory is. If you have not yet created the directory, please do that before filling in this setting. This allows you to use Twig template files for your email formatting and allows Freeform to locate these files when setting up notifications."|t('freeform'),
            placeholder: "e.g. _freeform/notifications",
        }) }}

        {% if settings.absoluteEmailTemplateDirectory %}
            {% set templateFiles = craft.freeform.settings.listTemplatesInEmailTemplateDirectory() %}

            <div id="components-wrapper">
                <div style="margin: 0;">
                    <button type="button" class="btn submit small icon add add-sample-template" id="add-email-template">
                        {{ "Add Sample"|t('freeform') }}
                    </button>

                    <ul class="directory-structure">
                        <li class="dir">
                            <span>{{ settings.emailTemplateDirectory }}</span>
                            <ul>
                                {% for file in templateFiles %}
                                    <li class="file">
                                        <span>{{ file }}</span>
                                    </li>
                                {% endfor %}
                            </ul>
                        </li>
                    </ul>
                </div>
            </div>
        {% endif %}

        {% if craft.freeform.notifications.databaseNotificationCount > 0 and settings.emailTemplateStorageType in ['files', 'files_database'] %}

            <hr>

            <h3>{{ "Migration Utility"|t('freeform') }}</h3>

            <div class="field" id="notifications-migrator">
                <div class="heading">
                    <label>
                        {{ 'Convert Database email templates to File email templates'|t('freeform') }}
                    </label>
                </div>
                <div class="instructions">
                    <p>
                        {{ 'This is a utility that allows you to migrate your existing database email templates over to file-based email templates (you can continue to edit these from the CP). The utility will also update all existing forms to use the new file version of the email template. If you wish to have Freeform clean up and remove the old database email templates after, check the checkbox as well.'|t('freeform') }}
                    </p>
                </div>
                <div class="input">
                    <div style="margin-bottom: 10px;">
                        <input
                                type="checkbox"
                                class="checkbox"
                                name="removeFiles"
                                value="1"
                                id="remove-files"
                                checked
                        />
                        <label for="remove-files">
                            {{ "Remove database files after migration" }}
                        </label>
                    </div>

                    <button class="btn" id="migrate">
                        {{ "Migrate"|t('freeform') }}
                    </button>
                </div>
            </div>
        {% endif %}

    </div>

    <hr />

    <h2>{{ "Success Templates"|t('freeform') }}</h2>

    {% set suggestionsData = [] %}
    {% for directory in craft.freeform.getAllSiteTemplatesDirectories() %}
        {% set suggestionsData = suggestionsData|merge([{
            "name": directory
        }]) %}
    {% endfor %}

    {{ forms.autosuggestField({
        label: "Directory Path"|t('freeform'),
        id: "successTemplateDirectory",
        class: "code",
        suggestEnvVars: false,
        suggestAliases: false,
        suggestions:[{
            "label":"Existing Directories",
            "data": suggestionsData
        }],
        tip: null,
        limit: 10,
        name: "settings[successTemplateDirectory]",
        value: settings.successTemplateDirectory,
        errors: settings.getErrors("successTemplateDirectory"),
        instructions: "Provide a relative path to the Craft Templates folder where your success templates directory is. If you have not yet created the directory, please do that before filling in this setting. This allows you to use Twig template files for your success formatting and allows Freeform to locate these files when assigning to a form."|t('freeform'),
        placeholder: "e.g. _freeform/success",
    }) }}

    {% if settings.absoluteSuccessTemplateDirectory %}

        {% set templateFiles = craft.freeform.settings.listTemplatesInSuccessTemplateDirectory() %}

        <div id="components-wrapper">
            <div>
                <button type="button" class="btn submit small icon add add-sample-template" id="add-success-template">
                    {{ "Add Sample"|t('freeform') }}
                </button>

                <ul class="directory-structure">
                    <li class="dir">
                        <span>{{ settings.successTemplateDirectory }}</span>
                        <ul>
                            {% for file in templateFiles %}
                                <li class="file">
                                    <span>{{ file }}</span>
                                </li>
                            {% endfor %}
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    {% endif %}

{% endblock %}

{% js %}
    var dataFormatting = {
        templateName: "formattingsample",
    };

    dataFormatting["{{ craft.app.config.general.csrfTokenName }}"] = "{{ craft.app.request.csrfToken }}";

    $("#add-formatting-template").on({
        click: function() {
            $.ajax({
                url: "{{ url("freeform/settings/add-demo-template") }}",
                type: "post",
                dataType: "json",
                data: dataFormatting,
                success: function(response) {
                    if (!response.errors.length) {
                        window.location.reload();
                    } else {
                        for (var i = 0; i < response.errors.length; i++ ) {
                            var message = response.errors[i];
                            Craft.cp.displayNotification("error", message);
                        }
                    }
                }
            });
        }
    });

    var dataEmail = {
        templateName: "emailsample",
    };

    dataEmail["{{ craft.app.config.general.csrfTokenName }}"] = "{{ craft.app.request.csrfToken }}";

    $("#add-email-template").on({
        click: function() {
            $.ajax({
                url: "{{ url("freeform/settings/add-email-template") }}",
                type: "post",
                dataType: "json",
                data: dataEmail,
                success: function(response) {
                    if (!response.errors.length) {
                        window.location.reload();
                    } else {
                        for (var i = 0; i < response.errors.length; i++ ) {
                            var message = response.errors[i];
                            Craft.cp.displayNotification("error", message);
                        }
                    }
                }
            });
        }
    });

    var dataSuccess = {
        templateName: "successsample",
    };

    dataSuccess["{{ craft.app.config.general.csrfTokenName }}"] = "{{ craft.app.request.csrfToken }}";

    $("#add-success-template").on({
        click: function() {
            $.ajax({
                url: "{{ url("freeform/settings/add-success-template") }}",
                type: "post",
                dataType: "json",
                data: dataSuccess,
                success: function(response) {
                    if (!response.errors.length) {
                        window.location.reload();
                    } else {
                        for (var i = 0; i < response.errors.length; i++ ) {
                            var message = response.errors[i];
                            Craft.cp.displayNotification("error", message);ō
                        }
                    }
                }
            });
        }
    });
{% endjs %}
