- Improved CSRF handling
- Wordpress plugin for Evie Chat
This commit is contained in:
118
integrations/Wordpress/eveai-chat-widget/eveai-chat_plugin.php
Normal file
118
integrations/Wordpress/eveai-chat-widget/eveai-chat_plugin.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/*
|
||||
Plugin Name: EveAI Chat Widget
|
||||
Plugin URI: https://askeveai.com/
|
||||
Description: Integrates the EveAI chat interface into your WordPress site.
|
||||
Version: 1.2
|
||||
Author: Josako, Pieter Laroy
|
||||
Author URI: https://askeveai.com/about/
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
*/
|
||||
|
||||
// Enqueue necessary scripts and styles
|
||||
function eveai_chat_enqueue_scripts() {
|
||||
wp_enqueue_script('socket-io', 'https://cdn.socket.io/4.0.1/socket.io.min.js', array(), '4.0.1', true);
|
||||
wp_enqueue_script('marked', 'https://cdn.jsdelivr.net/npm/marked/marked.min.js', array(), '1.0.0', true);
|
||||
wp_enqueue_script('eveai-sdk', plugin_dir_url(__FILE__) . 'js/eveai-sdk.js', array(), '1.0.0', true);
|
||||
wp_enqueue_script('eveai-chat-widget', plugin_dir_url(__FILE__) . 'js/eveai-chat-widget.js', array('eveai-sdk'), '1.0.0', true);
|
||||
wp_enqueue_style('material-icons', 'https://fonts.googleapis.com/icon?family=Material+Icons');
|
||||
wp_enqueue_style('eveai-chat-style', plugin_dir_url(__FILE__) . 'css/eveai-chat-style.css');
|
||||
}
|
||||
add_action('wp_enqueue_scripts', 'eveai_chat_enqueue_scripts');
|
||||
|
||||
// Shortcode function
|
||||
function eveai_chat_shortcode($atts) {
|
||||
$options = get_option('eveai_chat_options');
|
||||
$tenant_id = esc_js($options['tenant_id']);
|
||||
$api_key = esc_js($options['api_key']);
|
||||
$domain = esc_js($options['domain']);
|
||||
$language = esc_js($options['language']);
|
||||
|
||||
// Generate a unique ID for this instance of the chat widget
|
||||
$chat_id = 'chat-container-' . uniqid();
|
||||
|
||||
$output = "<div id='$chat_id'></div>";
|
||||
$output .= "<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const eveAI = new EveAI(
|
||||
'$tenant_id',
|
||||
'$api_key',
|
||||
'$domain',
|
||||
'$language'
|
||||
);
|
||||
eveAI.initializeChat('$chat_id');
|
||||
});
|
||||
</script>";
|
||||
|
||||
return $output;
|
||||
}
|
||||
add_shortcode('eveai_chat', 'eveai_chat_shortcode');
|
||||
|
||||
// Add admin menu
|
||||
function eveai_chat_admin_menu() {
|
||||
add_options_page('EveAI Chat Settings', 'EveAI Chat', 'manage_options', 'eveai-chat-settings', 'eveai_chat_settings_page');
|
||||
}
|
||||
add_action('admin_menu', 'eveai_chat_admin_menu');
|
||||
|
||||
// Settings page
|
||||
function eveai_chat_settings_page() {
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h1>EveAI Chat Settings</h1>
|
||||
<form method="post" action="options.php">
|
||||
<?php
|
||||
settings_fields('eveai_chat_options');
|
||||
do_settings_sections('eveai-chat-settings');
|
||||
submit_button();
|
||||
?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
// Register settings
|
||||
function eveai_chat_register_settings() {
|
||||
register_setting('eveai_chat_options', 'eveai_chat_options', 'eveai_chat_options_validate');
|
||||
|
||||
add_settings_section('eveai_chat_main', 'Main Settings', 'eveai_chat_section_text', 'eveai-chat-settings');
|
||||
|
||||
add_settings_field('eveai_chat_tenant_id', 'Tenant ID', 'eveai_chat_tenant_id_input', 'eveai-chat-settings', 'eveai_chat_main');
|
||||
add_settings_field('eveai_chat_api_key', 'API Key', 'eveai_chat_api_key_input', 'eveai-chat-settings', 'eveai_chat_main');
|
||||
add_settings_field('eveai_chat_domain', 'Domain', 'eveai_chat_domain_input', 'eveai-chat-settings', 'eveai_chat_main');
|
||||
add_settings_field('eveai_chat_language', 'Default Language', 'eveai_chat_language_input', 'eveai-chat-settings', 'eveai_chat_main');
|
||||
}
|
||||
add_action('admin_init', 'eveai_chat_register_settings');
|
||||
|
||||
function eveai_chat_section_text() {
|
||||
echo '<p>Enter your EveAI Chat configuration details below:</p>';
|
||||
}
|
||||
|
||||
function eveai_chat_tenant_id_input() {
|
||||
$options = get_option('eveai_chat_options');
|
||||
echo "<input id='eveai_chat_tenant_id' name='eveai_chat_options[tenant_id]' type='text' value='" . esc_attr($options['tenant_id']) . "' />";
|
||||
}
|
||||
|
||||
function eveai_chat_api_key_input() {
|
||||
$options = get_option('eveai_chat_options');
|
||||
echo "<input id='eveai_chat_api_key' name='eveai_chat_options[api_key]' type='password' value='" . esc_attr($options['api_key']) . "' />";
|
||||
}
|
||||
|
||||
function eveai_chat_domain_input() {
|
||||
$options = get_option('eveai_chat_options');
|
||||
echo "<input id='eveai_chat_domain' name='eveai_chat_options[domain]' type='text' value='" . esc_attr($options['domain']) . "' />";
|
||||
}
|
||||
|
||||
function eveai_chat_language_input() {
|
||||
$options = get_option('eveai_chat_options');
|
||||
echo "<input id='eveai_chat_language' name='eveai_chat_options[language]' type='text' value='" . esc_attr($options['language']) . "' />";
|
||||
}
|
||||
|
||||
function eveai_chat_options_validate($input) {
|
||||
$new_input = array();
|
||||
$new_input['tenant_id'] = sanitize_text_field($input['tenant_id']);
|
||||
$new_input['api_key'] = sanitize_text_field($input['api_key']);
|
||||
$new_input['domain'] = esc_url_raw($input['domain']);
|
||||
$new_input['language'] = sanitize_text_field($input['language']);
|
||||
return $new_input;
|
||||
}
|
||||
Reference in New Issue
Block a user