diff --git a/onesignal.php b/onesignal.php index 7c841a5..6808b99 100644 --- a/onesignal.php +++ b/onesignal.php @@ -6,7 +6,7 @@ * Plugin Name: OneSignal Push Notifications * Plugin URI: https://onesignal.com/ * Description: Free web push notifications. - * Version: 3.0.3 + * Version: 3.0.4 * Author: OneSignal * Author URI: https://onesignal.com * License: MIT diff --git a/readme.txt b/readme.txt index 92f6ac8..70df55b 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Donate link: https://onesignal.com Tags: push notification, push notifications, desktop notifications, mobile notifications, chrome push, android, android notification, android notifications, android push, desktop notification, firefox, firefox push, mobile, mobile notification, notification, notifications, notify, onesignal, push, push messages, safari, safari push, web push, chrome Requires at least: 3.8 Tested up to: 6.7 -Stable tag: 3.0.3 +Stable tag: 3.0.4 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -64,6 +64,10 @@ OneSignal is trusted by over 1.8M+ developers and marketing strategists. We powe == Changelog == += 3.0.4 = +- Added features: auto-send on publish, UTM tags +- Bug fixes: validation issues on settings form + = 3.0.3 = - Bug fix: fix service worker registration issue. diff --git a/v3/onesignal-admin/onesignal-admin.js b/v3/onesignal-admin/onesignal-admin.js index a6c427a..874b4a6 100644 --- a/v3/onesignal-admin/onesignal-admin.js +++ b/v3/onesignal-admin/onesignal-admin.js @@ -13,9 +13,18 @@ window.addEventListener("DOMContentLoaded", () => { window.addEventListener("DOMContentLoaded", () => { const appIdInput = document.querySelector("#appid"); const apiKeyInput = document.querySelector("#apikey"); + const utmInput = document.querySelector("#utm-params"); + const autoSendCheckbox = document.querySelector("#auto-send"); + const sendToMobileCheckbox = document.querySelector("#send-to-mobile"); const saveButton = document.querySelector("#save-settings-button"); - if (appIdInput && apiKeyInput && saveButton) { + if (appIdInput && apiKeyInput && autoSendCheckbox && sendToMobileCheckbox && utmInput && saveButton) { + const initialAppId = appIdInput.value; + const initialApiKey = apiKeyInput.value; + const initialUtmInput = utmInput.value; + const initialAutoSend = autoSendCheckbox.checked; + const initialSendToMobile = sendToMobileCheckbox.checked; + function isValidUUID(uuid) { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; @@ -38,10 +47,24 @@ window.addEventListener("DOMContentLoaded", () => { } } + function hasFormChanged() { + const appIdChanged = appIdInput.value !== initialAppId; + const apiKeyChanged = apiKeyInput.value !== initialApiKey; + const utmChanged = utmInput.value !== initialUtmInput; + const autoSendChanged = autoSendCheckbox.checked !== initialAutoSend; + const sendToMobileChanged = sendToMobileCheckbox.checked !== initialSendToMobile; + + return appIdChanged || apiKeyChanged || autoSendChanged || sendToMobileChanged || utmChanged; + } + function toggleSaveButton() { const appIdValid = isValidUUID(appIdInput.value); - const apiKeyValid = isValidApiKey(apiKeyInput.value); - saveButton.disabled = !(appIdValid && apiKeyValid); // Enable button only if both are valid + const apiKeyValid = apiKeyInput.value.length == 0 || isValidApiKey(apiKeyInput.value); + const formChanged = hasFormChanged(); + + // Enable button if either text inputs are valid or toggles have changed + const enabled = formChanged && appIdValid && apiKeyValid; + saveButton.disabled = !enabled; } appIdInput.addEventListener("input", () => { @@ -56,6 +79,11 @@ window.addEventListener("DOMContentLoaded", () => { toggleSaveButton(); }); + utmInput.addEventListener("input", toggleSaveButton); + + autoSendCheckbox.addEventListener("change", toggleSaveButton); + sendToMobileCheckbox.addEventListener("change", toggleSaveButton); + // Initial state on page load toggleSaveButton(); } diff --git a/v3/onesignal-admin/onesignal-admin.php b/v3/onesignal-admin/onesignal-admin.php index 54ad89c..2009ff9 100644 --- a/v3/onesignal-admin/onesignal-admin.php +++ b/v3/onesignal-admin/onesignal-admin.php @@ -22,21 +22,29 @@ function admin_files() if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST["submit"])) { + $onesignal_settings = get_option('OneSignalWPSetting', array()); - $onesignal_settings = get_option('OneSignalWPSetting', array()); + if (isset($_POST['onesignal_app_id']) && !empty($_POST['onesignal_app_id'])) { + $onesignal_settings['app_id'] = sanitize_text_field($_POST['onesignal_app_id']); + } - if (isset($_POST['onesignal_app_id']) && !empty($_POST['onesignal_app_id'])) { - $onesignal_settings['app_id'] = sanitize_text_field($_POST['onesignal_app_id']); - } + if (isset($_POST['onesignal_rest_api_key']) && !empty($_POST['onesignal_rest_api_key'])) { + $onesignal_settings['app_rest_api_key'] = sanitize_text_field($_POST['onesignal_rest_api_key']); + } - if (isset($_POST['onesignal_rest_api_key']) && !empty($_POST['onesignal_rest_api_key'])) { - $onesignal_settings['app_rest_api_key'] = sanitize_text_field($_POST['onesignal_rest_api_key']); - } + if (isset($_POST['utm_additional_url_params'])) { + $onesignal_settings['utm_additional_url_params'] = sanitize_text_field($_POST['utm_additional_url_params']); + } + + // Save the auto send notifications setting + $auto_send = isset($_POST['onesignal_auto_send']) ? 1 : 0; + $onesignal_settings['notification_on_post'] = $auto_send; - $send_to_mobile = isset($_POST['onesignal_send_to_mobile']) ? 1 : 0; - $onesignal_settings['send_to_mobile_platforms'] = $send_to_mobile; + // Save the mobile subscribers setting + $send_to_mobile = isset($_POST['onesignal_send_to_mobile']) ? 1 : 0; + $onesignal_settings['send_to_mobile_platforms'] = $send_to_mobile; - update_option('OneSignalWPSetting', $onesignal_settings); + update_option('OneSignalWPSetting', $onesignal_settings); } } @@ -112,10 +120,28 @@ function onesignal_admin_page()
The REST API Key is hidden for security reasons. Enter a new key to update.
+