Open User Map incluye una función de notificación opcional que permite a los usuarios recibir un correo electrónico cuando la ubicación que han enviado haya sido aprobada o publicada.
En algunos casos, es posible que ya recopiles el nombre y la dirección de correo electrónico del usuario a través de campos personalizados. Para evitar que los usuarios tengan que introducir los mismos datos dos veces, puedes utilizar el siguiente fragmento de código JavaScript.
El script copia los valores de tus campos personalizados a los campos internos de notificación de Open User Map cuando el usuario marca la casilla de notificación.
Para aplicar el script a Open User Map, puedes copiarlo y pegarlo en Abrir Mapa de Usuario > Configuración > Avanzado > JS Personalizado. No te olvides de personalizarlo.
Fragmento de código JavaScript
(function () {
'use strict';
/**
* OUM Notification Autofill
*
* This script copies name and email values from custom fields
* into the internal Open User Map notification fields.
*/
const config = {
/**
* Set your custom field IDs here.
*
* You can find these IDs in the HTML source of the form.
* Example:
* name="oum_location_custom_fields[1234567890]"
*/
customFieldIds: {
firstName: 'CUSTOM_FIELD_ID_FIRST_NAME',
lastName: 'CUSTOM_FIELD_ID_LAST_NAME',
email: 'CUSTOM_FIELD_ID_EMAIL',
},
/**
* Set this to true if you want to hide the internal
* notification name and email fields from the form.
*
* The fields will still be filled and submitted in the background.
*/
hideNotificationFields: true,
};
const form = document.querySelector('#oum_add_location');
if (!form) {
return;
}
const notificationToggle = form.querySelector('#oum_location_notification');
const notificationName = form.querySelector('#oum_location_author_name');
const notificationEmail = form.querySelector('#oum_location_author_email');
const notificationWrapper = form.querySelector('#oum_author');
const firstNameField = form.querySelector(
'[name="oum_location_custom_fields[' + config.customFieldIds.firstName + ']"]'
);
const lastNameField = form.querySelector(
'[name="oum_location_custom_fields[' + config.customFieldIds.lastName + ']"]'
);
const emailField = form.querySelector(
'[name="oum_location_custom_fields[' + config.customFieldIds.email + ']"]'
);
if (
!notificationToggle ||
!notificationName ||
!notificationEmail ||
!firstNameField ||
!lastNameField ||
!emailField
) {
return;
}
if (config.hideNotificationFields && notificationWrapper) {
notificationWrapper.style.display = 'none';
}
notificationName.readOnly = true;
notificationEmail.readOnly = true;
function getValue(field) {
return field && field.value ? field.value.trim() : '';
}
function updateNotificationFields() {
if (!notificationToggle.checked) {
return;
}
const fullName = [getValue(firstNameField), getValue(lastNameField)]
.filter(Boolean)
.join(' ');
notificationName.value = fullName;
notificationEmail.value = getValue(emailField);
}
notificationToggle.addEventListener('change', updateNotificationFields);
firstNameField.addEventListener('input', updateNotificationFields);
lastNameField.addEventListener('input', updateNotificationFields);
emailField.addEventListener('input', updateNotificationFields);
form.addEventListener('submit', updateNotificationFields);
})();Configuración
Solo hay que modificar la sección de configuración que aparece al principio del fragmento de código.
Sustituye estos valores por los ID de tus propios campos personalizados:
customFieldIds: {
firstName: 'CUSTOM_FIELD_ID_FIRST_NAME',
lastName: 'CUSTOM_FIELD_ID_LAST_NAME',
email: 'CUSTOM_FIELD_ID_EMAIL',
},Por ejemplo:
customFieldIds: {
firstName: '1782165049671',
lastName: '1782165779886',
email: '1782165793135',
},Puedes encontrar el ID del campo personalizado en el código fuente HTML del formulario. Busca un campo de entrada como este:
<input name="oum_location_custom_fields[1782165793135]">En este ejemplo, el ID del campo personalizado es:
1782165793135
Ocultar los campos de notificación internos
De forma predeterminada, Open User Map muestra sus propios campos de nombre y correo electrónico de notificación cuando la opción de notificación está activada.
Si ya recopilas el nombre y el correo electrónico a través de campos personalizados, quizá te interese ocultar estos campos internos.
Para ocultarlas, utiliza:
hideNotificationFields: true,Para que sigan siendo visibles, utiliza:
hideNotificationFields: false,Aunque los campos estén ocultos, se rellenan automáticamente y se envían en segundo plano.