Plugin Directory

Changeset 3411279


Ignore:
Timestamp:
12/04/2025 06:00:10 PM (4 months ago)
Author:
maxicomdev
Message:

Release v2.14.0

Location:
andy-votre-assistant-intelligent
Files:
22 added
3 edited

Legend:

Unmodified
Added
Removed
  • andy-votre-assistant-intelligent/trunk/Andy-Wordress-Extension.php

    r3411265 r3411279  
    44 * Plugin Name: Andy, Votre Assistant Intelligent
    55 * Description: Installe Andy sur votre site WordPress.
    6  * Version: 2.13.0
     6 * Version: 2.14.0
    77 * Author: Maxime MORLET (MaxiCom)
    88 * License: GPLv2 or later
     
    264264    if (version_compare($wp_version, '6.3', '>=')) {
    265265        // Modern WordPress 6.3+ way
    266         wp_enqueue_script('andy-script', $plugin_url . 'Andy/assets/Andy-Widget/scripts/Andy.js', [], '2.13.0', [
     266        wp_enqueue_script('andy-script', $plugin_url . 'Andy/assets/Andy-Widget/scripts/Andy.js', [], '2.14.0', [
    267267            'strategy' => 'defer',
    268268        ]);
     
    272272    } else {
    273273        // Old WordPress way
    274         wp_enqueue_script('andy-script', $plugin_url . 'Andy/assets/Andy-Widget/scripts/Andy.js', [], '2.13.0', true);
     274        wp_enqueue_script('andy-script', $plugin_url . 'Andy/assets/Andy-Widget/scripts/Andy.js', [], '2.14.0', true);
    275275
    276276        // Add defer manually
     
    290290        'openChatBoxOnLoad'   => $open_chat_box,
    291291        'userId'              => get_current_user_id(),
    292         'language'            => andy_get_user_language(), // Pass language to widget
    293292    ]);
    294293}
     
    456455        <?php
    457456            // Enqueue the script to handle the notice dismissal
    458             wp_enqueue_script('andy-dismiss-notice', $plugin_url . 'Andy/assets/Wordpress/scripts/andy-dismiss-notice.js', [], '2.13.0', true);
     457            wp_enqueue_script('andy-dismiss-notice', $plugin_url . 'Andy/assets/Wordpress/scripts/andy-dismiss-notice.js', [], '2.14.0', true);
    459458
    460459            endif;
     
    512511<?php
    513512    // Enqueue the script for handling the external settings form submission
    514     wp_enqueue_script('andy-external-settings', $plugin_url . 'Andy/assets/Wordpress/scripts/andy-external-wordpress-settings.js', [], '2.13.0', true);
     513    wp_enqueue_script('andy-external-settings', $plugin_url . 'Andy/assets/Wordpress/scripts/andy-external-wordpress-settings.js', [], '2.14.0', true);
    515514}
    516515
     
    749748    }";
    750749
    751     wp_enqueue_style('andy-style', $plugin_url . 'Andy/assets/Andy-Widget/styles/Andy.css', [], '2.13.0');
     750    wp_enqueue_style('andy-style', $plugin_url . 'Andy/assets/Andy-Widget/styles/Andy.css', [], '2.14.0');
    752751    wp_add_inline_style('andy-style', $custom_css);
    753752}
  • andy-votre-assistant-intelligent/trunk/Andy/assets/Andy-Widget/scripts/Andy.js

    r3411263 r3411279  
    3030};
    3131
    32 // Get current language from andy object or default to French
    33 const currentLanguage = (typeof andy !== 'undefined' && andy.language) ? andy.language : 'fr';
    34 const t = TRANSLATIONS[currentLanguage] || TRANSLATIONS.fr;
     32// Global variables for language
     33let currentLanguage = 'fr';
     34let t = TRANSLATIONS.fr;
     35
     36// Fetch user language from API
     37async function fetchUserLanguage() {
     38    try {
     39        const hostname = window.location.hostname;
     40        const response = await fetch(`https://dashboard.essayez-andy.fr/api/public/user-language/${encodeURIComponent(hostname)}`);
     41       
     42        if (!response.ok) {
     43            console.warn('Andy Widget - Failed to fetch language, using default (fr)');
     44            return 'fr';
     45        }
     46       
     47        const data = await response.json();
     48        return data.language || 'fr';
     49    } catch (error) {
     50        console.warn('Andy Widget - Error fetching language:', error);
     51        return 'fr';
     52    }
     53}
     54
     55// Initialize language and translations
     56async function initializeLanguage() {
     57    currentLanguage = await fetchUserLanguage();
     58    t = TRANSLATIONS[currentLanguage] || TRANSLATIONS.fr;
     59    console.log('Andy Widget - Language loaded:', currentLanguage);
     60   
     61    // Apply translations to existing elements
     62    applyTranslations();
     63}
    3564
    3665// DOM Elements
     
    6695};
    6796
    68 // Labels for contact methods
    69 const CONTACT_LABELS = {
    70     'messenger_dm': 'Messenger',
    71     'tiktok_page': 'TikTok',
    72     'insta_page': 'Instagram',
    73     'whatsapp_dm': 'WhatsApp',
    74     'facebook_page': 'Facebook',
    75     'linkedin_page': 'LinkedIn',
    76     'mail': 'Email',
    77     'tel': t.telephone,
    78     'adresse': t.address,
    79     'contact_page': t.contact,
    80     'twitter': 'Twitter',
    81     'youtube': 'YouTube'
    82 };
     97// Function to get contact labels (dynamic based on language)
     98function getContactLabels() {
     99    return {
     100        'messenger_dm': 'Messenger',
     101        'tiktok_page': 'TikTok',
     102        'insta_page': 'Instagram',
     103        'whatsapp_dm': 'WhatsApp',
     104        'facebook_page': 'Facebook',
     105        'linkedin_page': 'LinkedIn',
     106        'mail': 'Email',
     107        'tel': t.telephone,
     108        'adresse': t.address,
     109        'contact_page': t.contact,
     110        'twitter': 'Twitter',
     111        'youtube': 'YouTube'
     112    };
     113}
    83114/* CONST SECTION END */
    84115
    85 // Initialize contact methods when DOM is loaded
    86 document.addEventListener('DOMContentLoaded', function() {
     116// Apply translations to DOM elements
     117function applyTranslations() {
    87118    // Set placeholder text based on language
    88119    if (chatInput) {
     
    122153    }
    123154   
     155    // Re-initialize contact methods with new language
     156    if (typeof andyContactMethods !== 'undefined') {
     157        initContactMethods();
     158    }
     159}
     160
     161// Initialize contact methods when DOM is loaded
     162document.addEventListener('DOMContentLoaded', async function() {
    124163    // Add Font Awesome if not already added
    125164    if (!document.querySelector('link[href*="font-awesome"]')) {
     
    130169    }
    131170
    132     // Initialize contact methods if they exist
    133     if (typeof andyContactMethods !== 'undefined') {
    134         initContactMethods();
    135     }
     171    // Initialize language (async - will fetch from API)
     172    await initializeLanguage();
    136173});
    137174
     
    200237        contactItem.target = key === 'mail' || key === 'tel' ? '_self' : '_blank';
    201238        contactItem.rel = 'noopener noreferrer';
    202         contactItem.title = CONTACT_LABELS[key] || key.replace('_', ' ');
     239        const contactLabels = getContactLabels();
     240        contactItem.title = contactLabels[key] || key.replace('_', ' ');
    203241       
    204242        const icon = document.createElement('i');
  • andy-votre-assistant-intelligent/trunk/readme.txt

    r3411265 r3411279  
    66Requires PHP: 7.3 
    77Donate link: https://essayez-andy.fr
    8 Stable tag: 2.13.0
     8Stable tag: 2.14.0
    99License: GPLv2 or later 
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html 
     
    6060== Changelog ==
    6161
    62 = 2.13.0 = 
     62= 2.14.0 = 
    6363* Rebranding complet orienté IA. 
    6464* Amélioration de la génération du contexte et de la FAQ. 
     
    7575== Upgrade Notice ==
    7676
    77 = 2.13.0 = 
     77= 2.14.0 = 
    7878Mise à jour recommandée : meilleure pertinence IA et branding clarifié. Aucun changement de configuration requis.
Note: See TracChangeset for help on using the changeset viewer.