2
0

(wordpress) Add query params exclusion support

This commit is contained in:
Baptiste Arnaud
2023-09-25 11:07:08 +02:00
parent 90cf2e9f81
commit 2307231d28
6 changed files with 82 additions and 53 deletions

View File

@@ -1,13 +1,13 @@
{
"name": "@typebot.io/wordpress",
"version": "3.2.0",
"version": "3.3.0",
"main": "index.js",
"repository": "https://github.com/baptisteArno/typebot.io",
"author": "baptisteArno",
"license": "AGPL-3.0-or-later",
"scripts": {
"deploy": "pnpm copy && pnpm commit",
"copy": "svn copy ./trunk ./tags/3.2.0",
"commit": "svn ci -m 'Update embed lib to 0.1'"
"copy": "svn copy ./trunk ./tags/3.3.0",
"commit": "svn ci -m 'Fix loading issue with Gravity Forms'"
}
}

View File

@@ -5,7 +5,7 @@ Requires at least: 5.0
Tested up to: 6.0
License: GPL 2.0
License URI: http://www.gnu.org/licenses/gpl-2.0.txt
Stable Tag: 3.2.0
Stable Tag: 3.3.0
== Description ==
Collect 4x more responses with conversational apps using Typebot.
@@ -24,6 +24,9 @@ This plugin relies on Typebot which is a tool that allows you to create conversa
3. Activate your Typebot with the "Typebot" admin button located in the sidebar
== Changelog ==
= 3.3.0 =
* Fix loading with Gravity Forms and add query params exclusion
= 3.2.0 =
* Update embed lib to 0.1

View File

@@ -16,7 +16,7 @@
<div style="display: flex; flex-direction: column; margin-top: 1rem">
<label>Excluded pages (optionnal):</label>
<p style="color: gray">Example: /app/*, /user/*, /admin/settings</p>
<p style="color: gray">Example: /app/*, /user/*, /admin/settings, /app?param=*</p>
<input name="excluded_pages" value="<?php echo esc_attr(get_option('excluded_pages')); ?>" style="padding: .5rem" />
</div>

View File

@@ -1,78 +1,92 @@
<?php
class Typebot_Public
{
public function add_head_code()
public function __construct()
{
function parse_wp_user()
{
$wp_user = wp_get_current_user();
echo '<script>
add_action('wp_head', array($this, 'parse_wp_user'));
add_action('wp_footer', array($this, 'typebot_script'));
}
public function parse_wp_user()
{
$wp_user = wp_get_current_user();
echo '<script>
if(typeof window.typebotWpUser === "undefined"){
window.typebotWpUser = {
"WP ID":"' .
$wp_user->ID .
'",
$wp_user->ID .
'",
"WP Username":"' .
$wp_user->user_login .
'",
$wp_user->user_login .
'",
"WP Email":"' .
$wp_user->user_email .
'",
$wp_user->user_email .
'",
"WP First name":"' .
$wp_user->user_firstname .
'",
$wp_user->user_firstname .
'",
"WP Last name":"' .
$wp_user->user_lastname .
'",
$wp_user->user_lastname .
'"
}
}
</script>';
}
public function add_head_code()
{
$this->parse_wp_user();
}
function typebot_script()
{
echo '<script type="module">import Typebot from "https://cdn.jsdelivr.net/npm/@typebot.io/js@0.1/dist/web.js";';
if (
get_option('excluded_pages') !== null &&
get_option('excluded_pages') !== ''
) {
$paths = explode(',', get_option('excluded_pages'));
$arr_js = 'const typebotExcludePaths = [';
foreach ($paths as $path) {
$arr_js = $arr_js . '"' . $path . '",';
}
$arr_js = substr($arr_js, 0, -1) . '];';
echo $arr_js;
} else {
echo 'const typebotExcludePaths = null;';
}
function typebot_script()
{
echo '<script type="module">
import Typebot from "https://cdn.jsdelivr.net/npm/@typebot.io/js@0.1/dist/web.js";';
if (
get_option('excluded_pages') !== null &&
get_option('excluded_pages') !== ''
) {
$paths = explode(',', get_option('excluded_pages'));
$arr_js = 'const typebotExcludePaths = [';
foreach ($paths as $path) {
$arr_js = $arr_js . '"' . $path . '",';
}
$arr_js = substr($arr_js, 0, -1) . '];';
echo $arr_js;
} else {
echo 'const typebotExcludePaths = null;';
}
if (get_option('init_snippet') && get_option('init_snippet') !== '') {
echo 'if(!typebotExcludePaths || typebotExcludePaths.every((path) => {
let excludePath = path.trim();
if (get_option('init_snippet') && get_option('init_snippet') !== '') {
echo 'if(!typebotExcludePaths || typebotExcludePaths.every((path) => {
let [excludePath, excludeSearch] = path.trim().split("?");
const excludeSearchParams = excludeSearch ? new URLSearchParams(excludeSearch) : null;
let windowPath = window.location.pathname;
let windowSearchParams = window.location.search.length > 0 ? new URLSearchParams(window.location.search) : null;
if (excludePath.endsWith("*")) {
if(excludeSearchParams){
if(!windowSearchParams) return true
return !windowPath.startsWith(excludePath.slice(0, -1)) || !Array.from(excludeSearchParams.keys()).every((key) => excludeSearchParams.get(key) === "*" || (excludeSearchParams.get(key) === windowSearchParams.get(key)));
}
return !windowPath.startsWith(excludePath.slice(0, -1));
}
if (excludePath.endsWith("/")) {
excludePath = path.slice(0, -1);
excludePath = excludePath.slice(0, -1);
}
if (windowPath.endsWith("/")) {
windowPath = windowPath.slice(0, -1);
}
return windowPath !== excludePath;
}
if(excludeSearchParams){
if(!windowSearchParams) return true
return windowPath !== excludePath || !Array.from(excludeSearchParams.keys()).every((key) => excludeSearchParams.get(key) === "*" || (excludeSearchParams.get(key) === windowSearchParams.get(key)));
} else {
return windowPath !== excludePath;
}
})) {
' . get_option('init_snippet') . '
Typebot.setPrefilledVariables({ ...typebotWpUser });
}';
}
echo '</script>';
}
add_action('wp_head', 'parse_wp_user');
add_action('wp_footer', 'typebot_script');
echo '</script>';
}
public function add_typebot_container($attributes = [])

View File

@@ -3,7 +3,7 @@
/**
* Plugin Name: Typebot
* Description: Convert more with conversational forms
* Version: 3.2.0
* Version: 3.3.0
* Author: Typebot
* Author URI: http://typebot.io/
* License: GPL-2.0+
@@ -16,7 +16,7 @@ if (!defined('WPINC')) {
die();
}
define('TYPEBOT_VERSION', '3.2.0');
define('TYPEBOT_VERSION', '3.3.0');
function activate_typebot()
{