Plugin Directory

Changeset 3484636


Ignore:
Timestamp:
03/17/2026 10:05:05 AM (11 days ago)
Author:
bastho
Message:

event before link

Location:
faqtastic/trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • faqtastic/trunk/build/chatbot/chatbot.asset.php

    r3484619 r3484636  
    1 <?php return array('dependencies' => array('react-dom', 'react-jsx-runtime', 'wp-components', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => 'cd78f84dc260318a07c1');
     1<?php return array('dependencies' => array('react-dom', 'react-jsx-runtime', 'wp-components', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => 'a2755947f7ab7708c88c');
  • faqtastic/trunk/build/chatbot/chatbot.js

    r3484619 r3484636  
    1 (()=>{"use strict";var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.ReactDOM;var a=t.n(e);const o=window.wp.element,s=window.wp.components,c=window.wp.i18n,n=window.wp.hooks,l=window.ReactJSXRuntime,r="faqtastic-chatbot-history",i="faqtastic-chatbot-status",h=({dataset:t})=>{const[e,a]=(0,o.useState)(null),n=t.chatbotHeaderText||"Chatbot",r=t.chatbotHeaderSubtitle||"",h=t.chatbotFirstMsg||"Ask me a question",d=t.chatInputPlaceholder||"Type your question...",f=t.chatbotPosition||"bottom-right",b=t.toggleIconType||"dashicon",p=t.toggleIconDashicon||"format-chat",g=t.toggleIconSvg||"",m=t.toggleIconImageUrl||"";(0,o.useEffect)(()=>{"open"===localStorage.getItem(i)&&a(!0)},[]);const q=t=>{localStorage.setItem(i,t?"open":"closed"),a(t)};return(0,l.jsxs)("div",{className:"faqtastic-chatbot-wrapper","data-position":f,children:[e&&(0,l.jsx)(u,{onClose:()=>q(!1),chatbotHeaderText:n,chatbotHeaderSubtitle:r,chatbotFirstMsg:h,chatInputPlaceholder:d,dataset:t}),(0,l.jsx)("button",{className:"faqtastic-chatbot-toggle",onClick:()=>q(!e),"aria-label":(0,c.__)("Open chatbot","faqtastic"),children:"image"===b&&m?(0,l.jsx)("img",{src:m,alt:"",className:"faqtastic-chatbot-custom-image"}):"svg"===b&&g?(0,l.jsx)("span",{className:"faqtastic-chatbot-custom-icon",dangerouslySetInnerHTML:{__html:g}}):(0,l.jsx)(s.Dashicon,{icon:p||"format-chat"})})]})},d=t=>t&&t.$$typeof&&"Symbol(react.element)"===t.$$typeof.toString()?t:null;function u({onClose:t,chatbotHeaderText:e,chatbotHeaderSubtitle:a,chatbotFirstMsg:s,chatInputPlaceholder:i,dataset:h}){const[u,f]=(0,o.useState)(""),[b,p]=(0,o.useState)([]),[g,m]=(0,o.useState)([]),[q,w]=(0,o.useState)(-1),[x,y]=(0,o.useState)(!1),j={type:"bot",text:s};(0,o.useEffect)(()=>{(()=>{let t=JSON.parse(localStorage.getItem(r))||[j];m(t)})()},[]);const v=t=>{m(e=>{const a=[...e,t];return(t=>{let e=JSON.parse(localStorage.getItem(r))||[j];e.push(t),localStorage.setItem(r,JSON.stringify(e))})(t),a})};(0,o.useEffect)(()=>{if(!x){const t=document.querySelector(".faqtastic-chatbot-input");t&&t.focus(),y(!0)}},[x]),(0,o.useEffect)(()=>{let t;if(!(u.length<2))return t=setTimeout(()=>{fetch(`${faqtastic_ajax.ajax_url}?action=faqtastic_chatbot_suggestions&nonce=${faqtastic_ajax.nonce}&term=${encodeURIComponent(u)}`).then(t=>t.json()).then(t=>p(t)).catch(()=>p([]))},300),()=>clearTimeout(t);p([])},[u]);const S=t=>{v({type:"user",text:t.title}),p([]),f(t.title),fetch(`${faqtastic_ajax.ajax_url}?action=faqtastic_chatbot_get_answer&nonce=${faqtastic_ajax.nonce}&id=${t.id}`).then(t=>t.json()).then(e=>{v({type:"bot",text:e.content||(0,c.__)("No answer found.","faqtastic")}),f(""),w(-1),e.url&&window.Matomo&&(window.Matomo.getTracker().trackPageView(e.url),window.Matomo.getTracker().trackEvent("Chatbot","FAQ Clicked",t.title,e.url))}).catch(()=>{v({type:"bot",text:(0,c.__)("An error occurred. Please try again.","faqtastic")})})};(0,o.useEffect)(()=>{const t=document.querySelector(".faqtastic-chatbot-conversation");t&&(t.scrollTop=t.scrollHeight)},[g]),(0,o.useEffect)(()=>{const t=t=>{0!==b.length&&("ArrowDown"===t.key?(t.preventDefault(),w(t=>(t+1)%b.length)):"ArrowUp"===t.key?(t.preventDefault(),w(t=>(t-1+b.length)%b.length)):"Enter"===t.key&&(t.preventDefault(),q>=0&&q<b.length&&S(b[q])))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[b,q]);const _={term:u,setTerm:f,suggestions:b,setSuggestions:p,conversation:g,setConversation:m,addMessage:v,dataset:h};return(0,l.jsxs)("div",{className:"faqtastic-chatbot-window",children:[(0,l.jsxs)("div",{className:"faqtastic-chatbot-header",children:[(0,l.jsxs)("div",{className:"faqtastic-chatbot-header-text",children:[d((0,n.applyFilters)("faqtastic.chatbot.front.header.before",null,_)),(0,l.jsx)("span",{className:"faqtastic-chatbot-title",children:e}),a&&(0,l.jsx)("span",{className:"faqtastic-chatbot-subtitle",children:a}),d((0,n.applyFilters)("faqtastic.chatbot.front.header.after",null,_))]}),(0,l.jsx)("button",{onClick:t,className:"faqtastic-close-btn",children:"×"})]}),(0,l.jsxs)("div",{className:"faqtastic-chatbot-conversation",children:[d((0,n.applyFilters)("faqtastic.chatbot.front.conversation.before",null,_)),g.map((t,e)=>(0,l.jsx)("div",{className:`faqtastic-chatbot-bubble ${t.type}`,dangerouslySetInnerHTML:{__html:t.text}},e)),d((0,n.applyFilters)("faqtastic.chatbot.front.conversation.after",null,_))]}),(0,l.jsx)("input",{type:"text",className:"faqtastic-chatbot-input",placeholder:i,value:u,onChange:t=>f(t.target.value),autoComplete:"off",onFocus:()=>y(!0)}),d((0,n.applyFilters)("faqtastic.chatbot.front.input.after",null,_)),b.length>0&&(0,l.jsx)("ul",{className:"faqtastic-chatbot-suggestions",children:b.map(t=>(0,l.jsx)("li",{onClick:()=>S(t),className:q===b.indexOf(t)?"selected":"",children:t.title},t.id))}),d((0,n.applyFilters)("faqtastic.chatbot.front.end",null,_))]})}document.addEventListener("DOMContentLoaded",()=>{document.body.classList.contains("wp-admin")||document.querySelectorAll(".faqtastic-chatbot").forEach(t=>{a().render((0,l.jsx)(h,{dataset:t.dataset}),t)})})})();
     1(()=>{"use strict";var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.ReactDOM;var a=t.n(e);const o=window.wp.element,s=window.wp.components,c=window.wp.i18n,n=window.wp.hooks,l=window.ReactJSXRuntime,r="faqtastic-chatbot-history",i="faqtastic-chatbot-status",h=({dataset:t})=>{const[e,a]=(0,o.useState)(null),n=t.chatbotHeaderText||"Chatbot",r=t.chatbotHeaderSubtitle||"",h=t.chatbotFirstMsg||"Ask me a question",d=t.chatInputPlaceholder||"Type your question...",f=t.chatbotPosition||"bottom-right",b=t.toggleIconType||"dashicon",p=t.toggleIconDashicon||"format-chat",g=t.toggleIconSvg||"",m=t.toggleIconImageUrl||"";(0,o.useEffect)(()=>{"open"===localStorage.getItem(i)&&a(!0)},[]);const q=t=>{localStorage.setItem(i,t?"open":"closed"),a(t)};return(0,l.jsxs)("div",{className:"faqtastic-chatbot-wrapper","data-position":f,children:[e&&(0,l.jsx)(u,{onClose:()=>q(!1),chatbotHeaderText:n,chatbotHeaderSubtitle:r,chatbotFirstMsg:h,chatInputPlaceholder:d,dataset:t}),(0,l.jsx)("button",{className:"faqtastic-chatbot-toggle",onClick:()=>q(!e),"aria-label":(0,c.__)("Open chatbot","faqtastic"),children:"image"===b&&m?(0,l.jsx)("img",{src:m,alt:"",className:"faqtastic-chatbot-custom-image"}):"svg"===b&&g?(0,l.jsx)("span",{className:"faqtastic-chatbot-custom-icon",dangerouslySetInnerHTML:{__html:g}}):(0,l.jsx)(s.Dashicon,{icon:p||"format-chat"})})]})},d=t=>t&&t.$$typeof&&"Symbol(react.element)"===t.$$typeof.toString()?t:null;function u({onClose:t,chatbotHeaderText:e,chatbotHeaderSubtitle:a,chatbotFirstMsg:s,chatInputPlaceholder:i,dataset:h}){const[u,f]=(0,o.useState)(""),[b,p]=(0,o.useState)([]),[g,m]=(0,o.useState)([]),[q,w]=(0,o.useState)(-1),[x,y]=(0,o.useState)(!1),j={type:"bot",text:s};(0,o.useEffect)(()=>{(()=>{let t=JSON.parse(localStorage.getItem(r))||[j];m(t)})()},[]);const v=t=>{m(e=>{const a=[...e,t];return(t=>{let e=JSON.parse(localStorage.getItem(r))||[j];e.push(t),localStorage.setItem(r,JSON.stringify(e))})(t),a})};(0,o.useEffect)(()=>{if(!x){const t=document.querySelector(".faqtastic-chatbot-input");t&&t.focus(),y(!0)}},[x]),(0,o.useEffect)(()=>{let t;if(!(u.length<2))return t=setTimeout(()=>{fetch(`${faqtastic_ajax.ajax_url}?action=faqtastic_chatbot_suggestions&nonce=${faqtastic_ajax.nonce}&term=${encodeURIComponent(u)}`).then(t=>t.json()).then(t=>p(t)).catch(()=>p([]))},300),()=>clearTimeout(t);p([])},[u]);const S=t=>{v({type:"user",text:t.title}),p([]),f(t.title),fetch(`${faqtastic_ajax.ajax_url}?action=faqtastic_chatbot_get_answer&nonce=${faqtastic_ajax.nonce}&id=${t.id}`).then(t=>t.json()).then(e=>{v({type:"bot",text:e.content||(0,c.__)("No answer found.","faqtastic")}),f(""),w(-1),e.url&&window.Matomo&&(window.Matomo.getTracker().trackEvent("Chatbot","FAQ Clicked",t.title,e.url),window.Matomo.getTracker().trackPageView(e.url))}).catch(()=>{v({type:"bot",text:(0,c.__)("An error occurred. Please try again.","faqtastic")})})};(0,o.useEffect)(()=>{const t=document.querySelector(".faqtastic-chatbot-conversation");t&&(t.scrollTop=t.scrollHeight)},[g]),(0,o.useEffect)(()=>{const t=t=>{0!==b.length&&("ArrowDown"===t.key?(t.preventDefault(),w(t=>(t+1)%b.length)):"ArrowUp"===t.key?(t.preventDefault(),w(t=>(t-1+b.length)%b.length)):"Enter"===t.key&&(t.preventDefault(),q>=0&&q<b.length&&S(b[q])))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[b,q]);const _={term:u,setTerm:f,suggestions:b,setSuggestions:p,conversation:g,setConversation:m,addMessage:v,dataset:h};return(0,l.jsxs)("div",{className:"faqtastic-chatbot-window",children:[(0,l.jsxs)("div",{className:"faqtastic-chatbot-header",children:[(0,l.jsxs)("div",{className:"faqtastic-chatbot-header-text",children:[d((0,n.applyFilters)("faqtastic.chatbot.front.header.before",null,_)),(0,l.jsx)("span",{className:"faqtastic-chatbot-title",children:e}),a&&(0,l.jsx)("span",{className:"faqtastic-chatbot-subtitle",children:a}),d((0,n.applyFilters)("faqtastic.chatbot.front.header.after",null,_))]}),(0,l.jsx)("button",{onClick:t,className:"faqtastic-close-btn",children:"×"})]}),(0,l.jsxs)("div",{className:"faqtastic-chatbot-conversation",children:[d((0,n.applyFilters)("faqtastic.chatbot.front.conversation.before",null,_)),g.map((t,e)=>(0,l.jsx)("div",{className:`faqtastic-chatbot-bubble ${t.type}`,dangerouslySetInnerHTML:{__html:t.text}},e)),d((0,n.applyFilters)("faqtastic.chatbot.front.conversation.after",null,_))]}),(0,l.jsx)("input",{type:"text",className:"faqtastic-chatbot-input",placeholder:i,value:u,onChange:t=>f(t.target.value),autoComplete:"off",onFocus:()=>y(!0)}),d((0,n.applyFilters)("faqtastic.chatbot.front.input.after",null,_)),b.length>0&&(0,l.jsx)("ul",{className:"faqtastic-chatbot-suggestions",children:b.map(t=>(0,l.jsx)("li",{onClick:()=>S(t),className:q===b.indexOf(t)?"selected":"",children:t.title},t.id))}),d((0,n.applyFilters)("faqtastic.chatbot.front.end",null,_))]})}document.addEventListener("DOMContentLoaded",()=>{document.body.classList.contains("wp-admin")||document.querySelectorAll(".faqtastic-chatbot").forEach(t=>{a().render((0,l.jsx)(h,{dataset:t.dataset}),t)})})})();
  • faqtastic/trunk/composer.json

    r3471085 r3484636  
    11{
    2     "version": "1.2.0",
     2    "version": "1.3.0",
    33    "require-dev": {
    44        "agencenous/bump-version": "^2.0",
  • faqtastic/trunk/composer.lock

    r3471085 r3484636  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "8f1a6f3c41c2848b0ce8b3b5edc02bfd",
     7    "content-hash": "b965ed9745609bb42274622953e0a97e",
    88    "packages": [
    99        {
  • faqtastic/trunk/faqtastic.php

    r3484619 r3484636  
    44 * Plugin URI: https://fr.wordpress.org/plugins/faqtastic
    55 * Description: FAQ manager and bot to help your users find answers quickly.
    6  * Version: 1.2.0
     6 * Version: 1.3.0
    77 * Author: N.O.U.S. Open Useful and Simple
    88 * Contributors: bastho, agencenous, aureliefoucher
  • faqtastic/trunk/package.json

    r3471085 r3484636  
    11{
    22  "name": "faqtastic",
    3   "version": "1.2.0",
     3  "version": "1.3.0",
    44  "private": true,
    55  "dependencies": {
  • faqtastic/trunk/readme.txt

    r3471085 r3484636  
    66Requires at least: 5.9 
    77Tested up to: 6.9 
    8 Stable tag: 1.2.0   
     8Stable tag: 1.3.0   
    99License: GPLv2 
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    5656## Changelog
    5757
     58### 1.3.0
     59
     60- Add support for Matomo in chatbot
     61
    5862### 1.2.0
    5963
  • faqtastic/trunk/src/chatbot/chatbot.jsx

    r3484619 r3484636  
    159159                setKeyboardSelectedIndex(-1);
    160160                if(data.url && window.Matomo) {
     161                    window.Matomo.getTracker().trackEvent('Chatbot', 'FAQ Clicked', faq.title, data.url);
    161162                    window.Matomo.getTracker().trackPageView(data.url);
    162                     window.Matomo.getTracker().trackEvent('Chatbot', 'FAQ Clicked', faq.title, data.url);
    163163                }
    164164            })
  • faqtastic/trunk/vendor/autoload.php

    r3471085 r3484636  
    2020require_once __DIR__ . '/composer/autoload_real.php';
    2121
    22 return ComposerAutoloaderInit8f1a6f3c41c2848b0ce8b3b5edc02bfd::getLoader();
     22return ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e::getLoader();
  • faqtastic/trunk/vendor/composer/autoload_real.php

    r3471085 r3484636  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit8f1a6f3c41c2848b0ce8b3b5edc02bfd
     5class ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e
    66{
    77    private static $loader;
     
    2323        }
    2424
    25         spl_autoload_register(array('ComposerAutoloaderInit8f1a6f3c41c2848b0ce8b3b5edc02bfd', 'loadClassLoader'), true, true);
     25        spl_autoload_register(array('ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e', 'loadClassLoader'), true, true);
    2626        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    27         spl_autoload_unregister(array('ComposerAutoloaderInit8f1a6f3c41c2848b0ce8b3b5edc02bfd', 'loadClassLoader'));
     27        spl_autoload_unregister(array('ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e', 'loadClassLoader'));
    2828
    2929        require __DIR__ . '/autoload_static.php';
    30         call_user_func(\Composer\Autoload\ComposerStaticInit8f1a6f3c41c2848b0ce8b3b5edc02bfd::getInitializer($loader));
     30        call_user_func(\Composer\Autoload\ComposerStaticInitb965ed9745609bb42274622953e0a97e::getInitializer($loader));
    3131
    3232        $loader->register(true);
    3333
    34         $filesToLoad = \Composer\Autoload\ComposerStaticInit8f1a6f3c41c2848b0ce8b3b5edc02bfd::$files;
     34        $filesToLoad = \Composer\Autoload\ComposerStaticInitb965ed9745609bb42274622953e0a97e::$files;
    3535        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3636            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • faqtastic/trunk/vendor/composer/autoload_static.php

    r3471085 r3484636  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit8f1a6f3c41c2848b0ce8b3b5edc02bfd
     7class ComposerStaticInitb965ed9745609bb42274622953e0a97e
    88{
    99    public static $files = array (
     
    1818    {
    1919        return \Closure::bind(function () use ($loader) {
    20             $loader->classMap = ComposerStaticInit8f1a6f3c41c2848b0ce8b3b5edc02bfd::$classMap;
     20            $loader->classMap = ComposerStaticInitb965ed9745609bb42274622953e0a97e::$classMap;
    2121
    2222        }, null, ClassLoader::class);
  • faqtastic/trunk/vendor/composer/installed.php

    r3471085 r3484636  
    22    'root' => array(
    33        'name' => '__root__',
    4         'pretty_version' => '1.2.0',
    5         'version' => '1.2.0.0',
     4        'pretty_version' => '1.3.0',
     5        'version' => '1.3.0.0',
    66        'reference' => null,
    77        'type' => 'library',
     
    1212    'versions' => array(
    1313        '__root__' => array(
    14             'pretty_version' => '1.2.0',
    15             'version' => '1.2.0.0',
     14            'pretty_version' => '1.3.0',
     15            'version' => '1.3.0.0',
    1616            'reference' => null,
    1717            'type' => 'library',
Note: See TracChangeset for help on using the changeset viewer.