Changeset 3484636
- Timestamp:
- 03/17/2026 10:05:05 AM (11 days ago)
- Location:
- faqtastic/trunk
- Files:
-
- 12 edited
-
build/chatbot/chatbot.asset.php (modified) (1 diff)
-
build/chatbot/chatbot.js (modified) (1 diff)
-
composer.json (modified) (1 diff)
-
composer.lock (modified) (1 diff)
-
faqtastic.php (modified) (1 diff)
-
package.json (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
src/chatbot/chatbot.jsx (modified) (1 diff)
-
vendor/autoload.php (modified) (1 diff)
-
vendor/composer/autoload_real.php (modified) (2 diffs)
-
vendor/composer/autoload_static.php (modified) (2 diffs)
-
vendor/composer/installed.php (modified) (2 diffs)
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().track PageView(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 1 1 { 2 "version": "1. 2.0",2 "version": "1.3.0", 3 3 "require-dev": { 4 4 "agencenous/bump-version": "^2.0", -
faqtastic/trunk/composer.lock
r3471085 r3484636 5 5 "This file is @generated automatically" 6 6 ], 7 "content-hash": " 8f1a6f3c41c2848b0ce8b3b5edc02bfd",7 "content-hash": "b965ed9745609bb42274622953e0a97e", 8 8 "packages": [ 9 9 { -
faqtastic/trunk/faqtastic.php
r3484619 r3484636 4 4 * Plugin URI: https://fr.wordpress.org/plugins/faqtastic 5 5 * Description: FAQ manager and bot to help your users find answers quickly. 6 * Version: 1. 2.06 * Version: 1.3.0 7 7 * Author: N.O.U.S. Open Useful and Simple 8 8 * Contributors: bastho, agencenous, aureliefoucher -
faqtastic/trunk/package.json
r3471085 r3484636 1 1 { 2 2 "name": "faqtastic", 3 "version": "1. 2.0",3 "version": "1.3.0", 4 4 "private": true, 5 5 "dependencies": { -
faqtastic/trunk/readme.txt
r3471085 r3484636 6 6 Requires at least: 5.9 7 7 Tested up to: 6.9 8 Stable tag: 1. 2.08 Stable tag: 1.3.0 9 9 License: GPLv2 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 56 56 ## Changelog 57 57 58 ### 1.3.0 59 60 - Add support for Matomo in chatbot 61 58 62 ### 1.2.0 59 63 -
faqtastic/trunk/src/chatbot/chatbot.jsx
r3484619 r3484636 159 159 setKeyboardSelectedIndex(-1); 160 160 if(data.url && window.Matomo) { 161 window.Matomo.getTracker().trackEvent('Chatbot', 'FAQ Clicked', faq.title, data.url); 161 162 window.Matomo.getTracker().trackPageView(data.url); 162 window.Matomo.getTracker().trackEvent('Chatbot', 'FAQ Clicked', faq.title, data.url);163 163 } 164 164 }) -
faqtastic/trunk/vendor/autoload.php
r3471085 r3484636 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd::getLoader();22 return ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e::getLoader(); -
faqtastic/trunk/vendor/composer/autoload_real.php
r3471085 r3484636 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd5 class ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInitb965ed9745609bb42274622953e0a97e', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInitb965ed9745609bb42274622953e0a97e::getInitializer($loader)); 31 31 32 32 $loader->register(true); 33 33 34 $filesToLoad = \Composer\Autoload\ComposerStaticInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd::$files;34 $filesToLoad = \Composer\Autoload\ComposerStaticInitb965ed9745609bb42274622953e0a97e::$files; 35 35 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 36 36 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
faqtastic/trunk/vendor/composer/autoload_static.php
r3471085 r3484636 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd7 class ComposerStaticInitb965ed9745609bb42274622953e0a97e 8 8 { 9 9 public static $files = array ( … … 18 18 { 19 19 return \Closure::bind(function () use ($loader) { 20 $loader->classMap = ComposerStaticInit 8f1a6f3c41c2848b0ce8b3b5edc02bfd::$classMap;20 $loader->classMap = ComposerStaticInitb965ed9745609bb42274622953e0a97e::$classMap; 21 21 22 22 }, null, ClassLoader::class); -
faqtastic/trunk/vendor/composer/installed.php
r3471085 r3484636 2 2 'root' => array( 3 3 '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', 6 6 'reference' => null, 7 7 'type' => 'library', … … 12 12 'versions' => array( 13 13 '__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', 16 16 'reference' => null, 17 17 'type' => 'library',
Note: See TracChangeset
for help on using the changeset viewer.