Open User Map verfügt über eine optionale Benachrichtigungsfunktion, mit der Nutzer eine E-Mail erhalten können, sobald ihr übermittelter Standort genehmigt bzw. veröffentlicht wurde.
In manchen Fällen erfassen Sie den Namen und die E-Mail-Adresse des Benutzers möglicherweise bereits über benutzerdefinierte Felder. Um zu vermeiden, dass Benutzer dieselben Daten zweimal eingeben müssen, können Sie den folgenden JavaScript-Code verwenden.
Das Skript kopiert die Werte aus Ihren benutzerdefinierten Feldern in die internen Open User Map-Benachrichtigungsfelder, sobald der Benutzer das Kontrollkästchen für die Benachrichtigung aktiviert.
Um das Skript auf Open User Map anzuwenden, können Sie es kopieren und dort einfügen unter Öffnen Sie User Map > Einstellungen > Erweitert > Custom JS. Vergiss nicht, es anzupassen.
JavaScript-Schnipsel
(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);
})();Konfiguration
Nur der Konfigurationsabschnitt am Anfang des Codeausschnitts muss angepasst werden.
Ersetzen Sie diese Werte durch die IDs Ihrer eigenen benutzerdefinierten Felder:
customFieldIds: {
firstName: 'CUSTOM_FIELD_ID_FIRST_NAME',
lastName: 'CUSTOM_FIELD_ID_LAST_NAME',
email: 'CUSTOM_FIELD_ID_EMAIL',
},Zum Beispiel:
customFieldIds: {
firstName: '1782165049671',
lastName: '1782165779886',
email: '1782165793135',
},Die ID des benutzerdefinierten Feldes finden Sie im HTML-Quellcode des Formulars. Suchen Sie nach einem Eingabefeld, das so aussieht:
<input name="oum_location_custom_fields[1782165793135]">In diesem Beispiel lautet die ID des benutzerdefinierten Feldes:
1782165793135
Interne Benachrichtigungsfelder ausblenden
Standardmäßig zeigt Open User Map die eigenen Felder für Benachrichtigungsname und E-Mail-Adresse an, wenn die Benachrichtigungsoption aktiviert ist.
Falls Sie Name und E-Mail-Adresse bereits über benutzerdefinierte Felder erfassen, möchten Sie diese internen Felder möglicherweise ausblenden.
Um sie auszublenden, verwende:
hideNotificationFields: true,Damit sie sichtbar bleiben, verwende:
hideNotificationFields: false,Auch wenn die Felder ausgeblendet sind, werden sie dennoch automatisch ausgefüllt und im Hintergrund übermittelt.