{% extends '_layouts/cp' %} {% import '_includes/forms' as forms %} {% import 'verbb-base/_macros' as macros %} {% do view.registerAssetBundle('verbb\\formie\\web\\assets\\cp\\CpAsset') -%} {% set jsFile = view.getAssetManager().getPublishedUrl('@verbb/formie/web/assets/frontend/dist/', true, 'js/formie.js') %} {% do view.registerJsFile(jsFile) %} {% set isNew = submission.id ? false : true %} {% set form = submission.getForm() %} {% set crumbs = [ { label: craft.formie.getPluginName() | t('formie'), url: url('formie') }, { label: 'Submissions' | t('formie'), url: url('formie/submissions') }, ] %} {% if craft.app.getIsMultiSite() %} {% set crumbs = crumbs | unshift({ id: 'site-crumb', icon: 'world', label: requestedSite.name | t('site'), menu: { items: siteMenuItems(null, requestedSite), label: 'Select site' | t('site') }, }) %} {% endif %} {% if submission.canSave(currentUser) %} {% set fullPageForm = true %} {% endif %} {% set bodyClass = 'fui-body fui-submission' %} {% set selectedSubnavItem = 'submissions' %} {% set saveShortcutRedirect = '{cpEditUrl}' %} {% hook 'formie.cp.submissions.edit' %} {% block actionButton %} {% if submission.canSave(currentUser) %}
{% endif %} {% endblock %} {% block content %} {% set attributes = { id: form.formId, 'data-fui-form': formConfigJson, } %}
{{ redirectInput('formie/submissions') }} {{ csrfInput() }} {% if not isNew %} {% endif %} {% if craft.app.getIsMultiSite() %} {% endif %}
{% for page in submission.getPages() %} {% endfor %}
{% hook 'formie.cp.submissions.edit.content' %} {% endblock %} {% block details %}
{{ forms.textField({ label: 'Title' | t('formie'), id: 'title', name: 'title', value: submission.title, placeholder: 'Enter title' | t('formie'), }) }}
{% if submission.hasStatuses() %} {% set statuses = craft.formie.plugin.statuses.getAllStatuses() %} {{ forms.hidden({ id: 'statusId', name: 'statusId', value: submission.getStatusModel(true).id, }) }} {% set statusField %}
{{ submission.getStatusModel(true).name }}
{% endset %} {{ forms.field({ label: 'Status' | t('formie'), }, statusField) }} {% endif %} {% if form.settings.collectUser %} {% set user = submission.getUser() %} {{ forms.elementSelectField({ status: submission.getAttributeStatus('userId'), label: 'User' | t('app'), id: 'user', name: 'user', elementType: 'craft\\elements\\User', selectionLabel: 'Choose' | t('app'), limit: 1, elements: user ? [user] : [], }) }} {% endif %}
{% if submission.isSpam %}
{% set captcha = submission.getSpamCaptcha() %} {% if captcha %} {{ captcha.displayName() }} {% else %} {% endif %} {{ 'Spam' | t('formie') }} {% if submission.spamReason %}{{ submission.spamReason }}{% endif %}
{% endif %}
{{ forms.lightswitchField({ label: 'Mark as Spam' | t('formie'), id: 'isSpam', name: 'isSpam', on: submission.isSpam, reverseToggle: '.send-notifications', }) }} {% if submission.isSpam %} {{ forms.lightswitchField({ label: 'Send Notifications' | t('formie'), instructions: 'Whether any Email Notifications should be sent.' | t('formie'), id: 'sendNotifications', name: 'sendNotifications', fieldClass: 'send-notifications', }) }} {{ forms.lightswitchField({ label: 'Trigger Integrations' | t('formie'), instructions: 'Whether any Integrations should be triggered.' | t('formie'), id: 'triggerIntegrations', name: 'triggerIntegrations', fieldClass: 'send-notifications', }) }} {% endif %}
{% set notifications = form.getNotifications() %} {% if notifications and not isNew and not submission.isSpam %}
{% endif %} {% set integrations = [] %} {% for integration in craft.formie.plugin.integrations.getAllEnabledIntegrationsForForm(form) %} {% if integration.supportsPayloadSending() %} {% set integrations = integrations | merge([integration]) %} {% endif %} {% endfor %} {% if integrations and not isNew and not submission.isSpam %}
{% set integrationsField %}
{{ 'Select an option' | t('formie') }}
{% endset %} {{ forms.field({ label: 'Integrations' | t('formie'), }, integrationsField) }}
{% endif %} {% set paymentSummary = submission.getPaymentSummaryHtml() %} {% if paymentSummary %}
{{ 'Payments' | t('formie') }} {{ paymentSummary | raw }}
{% endif %} {% if not isNew %}
{% block meta %} {% if not isNew %}
{{ 'Submission ID' | t('formie') }}
{{ submission.id }}
{% endif %} {% if submission.isIncomplete %}
{{ 'Status' | t('app') }}
{{ 'Incomplete' | t('formie') }}
{% endif %}
{{ 'Created at' | t('app') }}
{{ submission.dateCreated | datetime('short') }}
{{ 'Updated at' | t('app') }}
{{ submission.dateUpdated | datetime('short') }}
{% if form.settings.collectIp %}
{{ 'IP Address' | t('app') }}
{{ submission.ipAddress ?: 'None provided' | t('formie') }}
{% endif %} {% endblock %}
{% endif %} {% hook 'formie.cp.submissions.edit.details' %} {% endblock %} {% css %} #integrations-menu-btn { overflow: hidden; max-width: 100%; justify-content: flex-start; } {% endcss %} {% js %} $(function () { $statusSelect = $('#status-menu-btn'); new Garnish.MenuBtn($statusSelect, { onOptionSelect: function(data) { var val = $(data).data('val'); var label = $(data).data('label'); var color = $(data).data('color'); $('#statusId').val(val); var html = '' + label; $statusSelect.html(html); } }); $integrationsSelect = $('#integrations-menu-btn'); new Garnish.MenuBtn($integrationsSelect, { onOptionSelect: function(data) { var integrationId = $(data).data('integration-id'); var submissionId = $(data).data('submission-id'); var label = $(data).data('label'); var $spinner = $('.integrations-menu-spinner'); var data = { submissionId: submissionId, integrationId: integrationId }; if (window.confirm(Craft.t('formie', 'Are you sure you want to trigger the {name} integration?', { name: label }))) { $spinner.removeClass('hidden'); Craft.sendActionRequest('POST', 'formie/submissions/run-integration', { data }) .then((response) => { window.location.reload(); }) .catch(({response}) => { if (response && response.data && response.data.message) { Craft.cp.displayError(response.data.message); } else { Craft.cp.displayError(); } }) .finally(() => { $spinner.addClass('hidden'); }); } } }); }); {% endjs %}