Your IP : 216.73.217.68


Current Path : /home/w/u/e/wuectly/www/03cbe/
Upload File :
Current File : /home/w/u/e/wuectly/www/03cbe/jce.zip

PK�s!]���s��0editor-toc/language/fr-FR/plg_jce_editor-toc.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_TOC="Table des matières pour JCE"
PLG_JCE_EDITOR_TOC_XML_DESC	="Plugin JCE permettant de créer une table des matières simple dans les contenus en utilisant les titres existants"
PLG_JCE_EDITOR_TOC_CLASSNAME="Classe du conteneur"
PLG_JCE_EDITOR_TOC_CLASSNAME_DESC="Nom(s) de classe alternatif(s) pour le conteneur de la table des matières. Séparez les noms de classe multiples par un espace."
PLG_JCE_EDITOR_TOC_HEADING_CLASSNAME="Classe de l'intitulé"
PLG_JCE_EDITOR_TOC_HEADING_CLASSNAME_DESC="Nom(s) de classe alternatif(s) pour l'intitulé de la table des matières. Séparez les noms de classe multiples par un espace."
PLG_JCE_EDITOR_TOC_DEPTH="Depth"
PLG_JCE_EDITOR_TOC_DEPTH_DESC="Définir la profondeur maximale jusqu'à laquelle les balises d'en-tête du contenu seront analysées pour créer la table des matières, par exemple : H1 - H3"

[toc]
WF_TOC_TITLE="Table des matières"
WF_TOC_HEADING_TITLE="Table des matières"
PK�s!]>ޤPP4editor-toc/language/fr-FR/plg_jce_editor-toc.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_TOC="Table des matières pour JCE"
PLG_JCE_EDITOR_TOC_XML_DESC	="Plugin JCE permettant de créer une table des matières simple dans les contenus en utilisant les titres existants"

[toc]
WF_TOC_TITLE="Table des matières"
WF_TOC_HEADING_TITLE="Table des matières"
PK�s!]�#o,,$editor-toc/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor-toc/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor-toc/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,filesystem-server/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,+filesystem-server/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]��%��>filesystem-server/language/fr-FR/plg_jce_filesystem-server.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_FILESYSTEM_SERVER="Système de fichiers Serveur pour JCE"
PLG_JCE_FILESYSTEM_SERVER_XML_DESC="Plugin système permettant d'accéder et de gérer des fichiers en dehors du dossier racine de Joomla avec l'éditeur JCE"

PLG_JCE_FILESYSTEM_SERVER_BASE_DIR="Répertoire de base"
PLG_JCE_FILESYSTEM_SERVER_BASE_DIR_DESC="Le chemin absolu vers le répertoire de base contenant le dossier à parcourir, par exemple : /home/user1234/public_html/"
PLG_JCE_FILESYSTEM_SERVER_ROOT_URL="URL racine"
PLG_JCE_FILESYSTEM_SERVER_ROOT_URL_DESC="L'url absolue du site, par exemple : https://docs.site.com"PK�s!]�k��Bfilesystem-server/language/fr-FR/plg_jce_filesystem-server.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_FILESYSTEM_SERVER="Système de fichiers Serveur pour JCE"
PLG_JCE_FILESYSTEM_SERVER_XML_DESC="Plugin système permettant d'accéder et de gérer des fichiers en dehors du dossier racine de Joomla avec l'éditeur JCE"PK�s!]�#o,,%filesystem-server/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]R�� ��Deditor_fontawesome/language/fr-FR/plg_jce_editor_fontawesome.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_FONTAWESOME="Font Awesome pour JCE"
PLG_JCE_EDITOR_FONTAWESOME_TITLE="Font Awesome"
PLG_JCE_EDITOR_FONTAWESOME_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_FONTAWESOME_XML_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE"PK�s!]�J���@editor_fontawesome/language/fr-FR/plg_jce_editor_fontawesome.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_FONTAWESOME="Font Awesome pour JCE"
PLG_JCE_EDITOR_FONTAWESOME_TITLE="Font Awesome"
PLG_JCE_EDITOR_FONTAWESOME_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_FONTAWESOME_XML_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE"
PLG_JCE_EDITOR_FONTAWESOME_VERSION="Version de Font Awesome"
PLG_JCE_EDITOR_FONTAWESOME_VERSION_DESC="Version de Font Awesome à utiliser, correspondant à celle chargée en frontal du site."
PLG_JCE_EDITOR_FONTAWESOME_URL="URL du fichier CSS"
PLG_JCE_EDITOR_FONTAWESOME_URL_DESC="URL optionnelle du fichier css de Font Awesome à intégrer dans l'éditeur."
PLG_JCE_EDITOR_FONTAWESOME_LOAD_ASSETS="CSS en frontal"
PLG_JCE_EDITOR_FONTAWESOME_LOAD_ASSETS_DESC="Chargement du fichier CSS FontAwesome en frontal du site."PK�s!]�#o,,,editor_fontawesome/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,&editor_fontawesome/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor_fontawesome/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]���0editor-svg/language/fr-FR/plg_jce_editor-svg.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_SVG="Graphiques SVG pour JCE"
PLG_JCE_EDITOR_SVG_TITLE="Graphiques SVG"
PLG_JCE_EDITOR_SVG_XML_DESC="Plugin activant la prise en charge des graphiques SVG dans l'éditeur JCE"
PLG_JCE_EDITOR_SVG_DESC="Activer la prise en charge des graphiques SVG dans l'éditeur JCE"
PLG_JCE_EDITOR_AMP_XML_DESC="Activer la prise en charge des éléments AMP dans l'éditeur JCE"PK�s!]����4editor-svg/language/fr-FR/plg_jce_editor-svg.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_SVG="Graphiques SVG pour JCE"
PLG_JCE_EDITOR_SVG_XML_DESC="Plugin activant la prise en charge des graphiques SVG dans l'éditeur JCE"PK�s!]�#o,,$editor-svg/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor-svg/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor-svg/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,%editor_codesample/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]`�{Beditor_codesample/language/fr-FR/plg_jce_editor_codesample.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved.
; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CODESAMPLE="Exemple de code pour JCE"
PLG_JCE_EDITOR_CODESAMPLE_TITLE="Exemple de code"
PLG_JCE_EDITOR_CODESAMPLE_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_CODESAMPLE_XML_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE"PK�s!]N���

>editor_codesample/language/fr-FR/plg_jce_editor_codesample.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CODESAMPLE="Exemple de code pour JCE"
PLG_JCE_EDITOR_CODESAMPLE_TITLE="Exemple de code"
PLG_JCE_EDITOR_CODESAMPLE_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_CODESAMPLE_XML_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE"

PLG_JCE_EDITOR_CODESAMPLE_LOAD_ASSETS="Charger Prism"
PLG_JCE_EDITOR_CODESAMPLE_LOAD_ASSETS_DESC="Charger le script et la feuille de style Prism en frontal du site."

PLG_JCE_EDITOR_CODESAMPLE_PRISM_URL="Script Prism personnalisé"
PLG_JCE_EDITOR_CODESAMPLE_PRISM_URL_DESC="Saisir l'URL du fichier script personnalisé de Prism."
PLG_JCE_EDITOR_CODESAMPLE_PRISM_CSS="CSS Prism personnalisé"
PLG_JCE_EDITOR_CODESAMPLE_PRISM_CSS_DESC="Saisir l'URL du fichier CSS personnalisé de Prism."
PLG_JCE_EDITOR_CODESAMPLE_LANGUAGES="Langages"
PLG_JCE_EDITOR_CODESAMPLE_LANGUAGES_DESC="Options de langages personnalisés pour CodeSample."PK�s!]�#o,,+editor_codesample/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor_codesample/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]r�_F��Bpopups-widgetkit2/language/fr-FR/plg_jce_popups-widgetkit2.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_POPUPS_WIDGETKIT2="Popup Lightbox WidgetKit2 de Yootheme pour JCE"
PLG_JCE_POPUPS_WIDGETKIT2_XML_DESC="Plugin permettant la prise en charge des Popup WidgetKit 2 de Yootheme avec l'éditeur JCE. Nécessite l'installation de Yootheme WidgetKit 2 - <a href='https://yootheme.com/widgetkit' title='Obtenir WidgetKit de Yootheme' target='_blank'><strong>Obtenir WidgetKit de Yootheme</strong></a>"
PK�s!]�#o,,+popups-widgetkit2/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�^[�>popups-widgetkit2/language/fr-FR/plg_jce_popups-widgetkit2.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_POPUPS_WIDGETKIT2="Popup Lightbox WidgetKit2 de Yootheme pour JCE"
PLG_JCE_POPUPS_WIDGETKIT2_XML_DESC="Plugin permettant la prise en charge des Popup WidgetKit 2 de Yootheme avec JCE. Nécessite l'installation de Yootheme WidgetKit 2 - <a href='https://yootheme.com/widgetkit' title='Obtenir WidgetKit de Yootheme' target='_blank'><strong>Obtenir WidgetKit de Yootheme</strong></a>"

WF_POPUPS_WIDGETKIT2_TITLE="Lightbox WidgetKit2"
WF_POPUPS_WIDGETKIT_BOXTITLE="Titre"
WF_POPUPS_WIDGETKIT_BOXTITLE_DESC="Titre::Titre Lightbox"

WF_POPUPS_WIDGETKIT_GROUP="Groupe"
WF_POPUPS_WIDGETKIT_GROUP_DESC="Groupe::Lightbox groupe"

WF_POPUPS_WIDGETKIT_TYPE="Type de Popup"
WF_POPUPS_WIDGETKIT_TYPE_DESC="Type de Popup::Définir la fenêtre contextuelle"
WF_POPUPS_WIDGETKIT_DETECT="Détection à partir de l'URL"
WF_POPUPS_WIDGETKIT_IMAGE="Image"
WF_POPUPS_WIDGETKIT_VIDEO="Vidéo"
WF_POPUPS_WIDGETKIT_YOUTUBE="Youtube"
WF_POPUPS_WIDGETKIT_VIMEO="Vimeo"
WF_POPUPS_WIDGETKIT_IFRAME="IFrame"
PK�s!]�#o,,%popups-widgetkit2/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,popups-widgetkit2/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor-ipa/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor-ipa/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]}�.�@@0editor-ipa/language/fr-FR/plg_jce_editor-ipa.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_IPA="Alphabet phonétique international pour JCE"
PLG_JCE_EDITOR_IPA_XML_DESC="Plugin permettant d'utiliser la carte de caractères de l'alphabet phonétique international avec l'éditeur JCE"

[ipa]
WF_IPA_TITLE="Alphabet phonétique international"
PK�s!]�#o,,$editor-ipa/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�.��4editor-ipa/language/fr-FR/plg_jce_editor-ipa.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_IPA="Alphabet phonétique international pour JCE"
PLG_JCE_EDITOR_IPA_XML_DESC	="Plugin permettant d'utiliser la carte de caractères de l'alphabet phonétique international avec l'éditeur JCE"
PK�s!]�#o,,filesystem-s3/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,!filesystem-s3/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,'filesystem-s3/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]w#?�

6filesystem-s3/language/fr-FR/plg_jce_filesystem-s3.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8
PLG_JCE_FILESYSTEM_S3="Fichiers d'Amazon S3 pour JCE"
PLG_JCE_FILESYSTEM_S3_XML_DESC="Plugin permettant d'utiliser le système de fichiers Amazon S3 dans l'éditeur JCE. <em>Amazon S3 est une marque commerciale d'Amazon.com, Inc. ou de ses filiales</em>."

PLG_JCE_FILESYSTEM_S3_ACCESSKEY="Clé d'accès"
PLG_JCE_FILESYSTEM_S3_SECRETKEY="Clé secrète"
PLG_JCE_FILESYSTEM_S3_BUCKET="Nom Bucket"
PLG_JCE_FILESYSTEM_S3_CNAME="CName"
PLG_JCE_FILESYSTEM_S3_TIMEOUT="Délai d'attente"

PLG_JCE_FILESYSTEM_S3_ACCESSKEY_DESC="ID de Clé d'accès S3"
PLG_JCE_FILESYSTEM_S3_SECRETKEY_DESC ="Clé d'accès secrète S3"
PLG_JCE_FILESYSTEM_S3_BUCKET_DESC="Nom Bucket S3"
PLG_JCE_FILESYSTEM_S3_CNAME_DESC="Bucket CNAME (enregistrement du nom canonique)"
PLG_JCE_FILESYSTEM_S3_TIMEOUT_DESC="Délai d'authentification"
PLG_JCE_FILESYSTEM_S3_ENDPOINT="Point de terminaison"
PLG_JCE_FILESYSTEM_S3_ENDPOINT_DESC="Définir le point de terminaison, par exemple: s3-eu-west-1"
PLG_JCE_FILESYSTEM_S3_ACL="Niveau d'accès"
PLG_JCE_FILESYSTEM_S3_ACL_DESC="Sélectionnez le niveau d'accès à appliquer par défaut lors de la création de dossiers et du téléchargement de fichiers."
PLG_JCE_FILESYSTEM_S3_SSL="SSL activé"
PLG_JCE_FILESYSTEM_S3_SSL_DESC="Effectuer les opérations S3 à l'aide d'une connexion SSL."
PLG_JCE_FILESYSTEM_S3_ACL_PRIVATE="Privé"
PLG_JCE_FILESYSTEM_S3_ACL_PUBLIC_READ="Lecture publique"
PLG_JCE_FILESYSTEM_S3_ACL_PUBLIC_READ_WRITE="Lecture / écriture publique"
PLG_JCE_FILESYSTEM_S3_ACL_AUTHENTICATED_READ="Lecture authentifiée"

PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PATH="Chemin du justificatif"
PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PATH_DESC="Chemin d'accès au dossier contenant le fichier .aws/credentials ou .s3/credentials."

PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PROFILE="Profil d'identification"
PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PROFILE_DESC="Nom du profil d'informations d'identification à utiliser si les informations d'identification S3 sont stockées dans un fichier .aws ou .s3."

PLG_JCE_FILESYSTEM_S3_ENDPOINT_CUSTOM="Point de terminaison personnalisé"
PLG_JCE_FILESYSTEM_S3_ENDPOINT_CUSTOM_DESC="Définissez un point de terminaison personnalisé pour le service de stockage d'objets compatible S3, par exemple : s3-eu-west-1.amazonaws.com"PK�s!]��66:filesystem-s3/language/fr-FR/plg_jce_filesystem-s3.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_FILESYSTEM_S3="Fichiers d'Amazon S3 pour JCE"
PLG_JCE_FILESYSTEM_S3_XML_DESC="Plugin permettant d'utiliser le système de fichiers Amazon S3 dans l'éditeur JCE. <em>Amazon S3 est une marque commerciale d'Amazon.com, Inc. ou de ses filiales</em>."PK�s!]�#o,,editor_chatgpt/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,"editor_chatgpt/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�-���<editor_chatgpt/language/fr-FR/plg_jce_editor_chatgpt.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CHATGPT="ChatGPT pour JCE"
PLG_JCE_EDITOR_CHATGPT_XML_DESC="Plugin permettant d'insérer du contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"PK�s!]�#o,,(editor_chatgpt/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�R���8editor_chatgpt/language/fr-FR/plg_jce_editor_chatgpt.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CHATGPT="ChatGPT pour JCE"
PLG_JCE_EDITOR_CHATGPT_XML_DESC="Plugin permettant d'insérer du contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"

PLG_JCE_EDITOR_CHATGPT_APIKEY="API Key"
PLG_JCE_EDITOR_CHATGPT_APIKEY_DESC="Votre clé API OpenAI ChatGPT vous donne un accès exclusif à l'API ChatGPT. Cette clé vous est propre et vous permet d'interagir avec le modèle ChatGPT de manière programmatique. Vous pouvez gérer et créer des clés API dans les paramètres de votre compte OpenAI en visitant la section <a href='https://platform.openai.com/account/api-keys' target='_blank'>clés API</a>."

PLG_JCE_EDITOR_CHATGPT_TOKENS="Jetons"
PLG_JCE_EDITOR_CHATGPT_TOKENS_DESC="Se réfère au nombre de jetons dans une entrée de texte ou une réponse. Les jetons sont des morceaux de texte qui peuvent représenter des caractères ou des mots individuels."

PLG_JCE_EDITOR_CHATGPT_TEMPERATURE="Température"
PLG_JCE_EDITOR_CHATGPT_TEMPERATURE_DESC="Contrôle le caractère aléatoire de la sortie du modèle. Élevé (0.8-1.0) pour des réponses diverses et créatives. Faible (0.2-0.5) pour des résultats déterministes et ciblés."

PLG_JCE_EDITOR_CHATGPT_MODEL="Modèle"
PLG_JCE_EDITOR_CHATGPT_MODEL_DESC="<ul><li><strong>GPT-4-Turbo :</strong> Version améliorée du GPT-4, ce modèle associe des fonctionnalités sophistiquées à une rapidité et une efficacité accrues. Il permet de générer des textes rentables et de haute qualité à des taux de réponse proches du temps réel. Il est idéal pour les tâches de traitement linguistique exigeantes qui requièrent à la fois rapidité et profondeur.</li><li><strong>GPT-4 :</strong> Modèle linguistique avancé et puissant, GPT-4 excelle dans la génération de textes hautement cohérents et nuancés sur le plan contextuel. Idéal pour les tâches de génération de textes complexes et créatifs, il offre des performances supérieures et une compréhension approfondie d'un large éventail de sujets. Bien qu'il offre une qualité de premier ordre, il est plus coûteux et peut avoir des temps de réponse plus lents que les modèles plus petits. Parfait pour les applications exigeant un traitement linguistique de haut niveau.</li><li><strong>gpt-3.5-turbo :</strong> Un modèle linguistique avancé qui offre un équilibre entre les capacités, le coût et la vitesse. Il offre des performances similaires à celles du modèle text-davinci-003, mais à un prix inférieur par jeton, ce qui en fait un choix rentable pour diverses tâches de génération de texte. Les temps de réponse sont généralement plus rapides que ceux de text-davinci-003.</li><li><strong>text-davinci-003 :</strong> Le modèle avancé pour une génération de texte de haute qualité, semblable à celle d'un être humain. Idéal pour un large éventail d'applications conversationnelles. Offre d'excellentes performances, mais à un coût plus élevé et avec des temps de réponse légèrement plus lents. </li><li><strong>code-davinci-002 :</strong> Modèle spécialisé pour les questions relatives à la programmation et au code. Aide aux extraits de code, au débogage et à la programmation. Il comprend et génère du code. Coût plus élevé et temps de réponse légèrement plus lent en raison des capacités de programmation spécialisées. </li><li><strong>text-curie-001 :</strong> Modèle équilibré en termes de rentabilité et de performance. Génère des réponses cohérentes et adaptées au contexte sur différents sujets. Offre un bon compromis entre la capacité et le coût. Les temps de réponse sont modérés. </li><li><strong>text-babbage-001 :</strong> Modèle économique pour l'IA conversationnelle de base. Convient aux applications les plus simples. Génération de textes décents à moindre coût. Temps de réponse plus rapide que les modèles plus complets. </li><li><strong>text-ada-001 :</strong> Modèle axé sur le respect des instructions et du contexte. Donne de bons résultats lorsque des instructions précises sont essentielles pour obtenir des réponses exactes. Offre de bonnes performances pour un coût légèrement plus élevé et des temps de réponse modérés. </li></ul>"

PLG_JCE_EDITOR_CHATGPT_TEXTPATTERN_TEXT_PREFIX="Préfixe de modèle de texte"
PLG_JCE_EDITOR_CHATGPT_TEXTPATTERN_TEXT_PREFIX_DESC="Le préfixe de modèle de texte qui déclenche une requête ChatGPT sur Entrée en utilisant le texte qui le suit. La valeur par défaut est <em>:ai</em>"

PLG_JCE_EDITOR_CHATGPT_PROMPTS="Invites personnalisées"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_NAME="Nom"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_PROMPT="Invite"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_SELECTION="Exiger une sélection"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_DESC="Créez une invite personnalisée pour la sélection dans le menu du bouton ChatGPT. Définissez un nom pour identifier l'invite et la valeur de l'invite comme requête à envoyer à ChatGPT. Si 'Exiger une sélection' est activé, une sélection de contenu sera envoyée avec la requête d'invite."

PLG_JCE_EDITOR_CHATGPT_SPELLCHECK="Vérification orthographique"
PLG_JCE_EDITOR_CHATGPT_SPELLCHECK_DESC="Activer ou désactiver la vérification de l'orthographe dans ChatGPT. Lorsque cette option est activée, ChatGPT effectue une vérification du contenu de l'éditeur lorsque l'on clique sur le bouton 'Vérification orthographique'. Cette fonction remplace la fonction de vérification orthographique par défaut."

[chatgpt]
WF_CHATGPT_TITLE="ChatGPT"
WF_CHATGPT_DESC="ChatGPT"
WF_CHATGPT_PROMPT="Rapide"
WF_CHATGPT_RESPONSE="Réponse"
WF_CHATGPT_SEND="Envoyer une requête..."
WF_CHATGPT_SHOW_DIFFERENCES="Afficher les différences"
WF_CHATGPT_ACCEPT="Accepter"
WF_CHATGPT_REJECT="Rejeter"
WF_CHATGPT_ACCEPT_ALL="Tout accepter"
WF_CHATGPT_REJECT_ALL="Tout rejeter"PK�s!]�#o,,editor_aia/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]��		��4editor_aia/language/fr-FR/plg_jce_editor_aia.sys.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_AIA="Aia de ChatGPT pour JCE"
PLG_JCE_EDITOR_AIA_XML_DESC="Plugin intégrant un assistant à l'insertion de contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"PK�s!]١n���0editor_aia/language/fr-FR/plg_jce_editor_aia.ininu&1i�; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_AIA="Aia de ChatGPT pour JCE"
PLG_JCE_EDITOR_AIA_XML_DESC="Plugin intégrant un assistant à l'insertion de contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"

PLG_JCE_EDITOR_AIA_APIKEY="API Key"
PLG_JCE_EDITOR_AIA_APIKEY_DESC="Votre clé API OpenAI vous accorde un accès exclusif à l'API OpenAI ChatGPT. Cette clé est unique et vous permet d'interagir avec le modèle ChatGPT par programmation. Vous pouvez gérer et créer des clés API dans les paramètres de votre compte OpenAI en visitant la <a href='https://platform.openai.com/account/api-keys' target='_blank'>section Clés API</a>.."

PLG_JCE_EDITOR_AIA_GPT_TOKENS="Tokens"
PLG_JCE_EDITOR_AIA_GPT_TOKENS_DESC="Fait référence au nombre de jetons dans une saisie de texte ou une réponse. Les jetons sont des morceaux de texte qui peuvent représenter des caractères ou des mots individuels."

PLG_JCE_EDITOR_AIA_GPT_TEMPERATURE="Température"
PLG_JCE_EDITOR_AIA_GPT_TEMPERATURE_DESC="Contrôle le caractère aléatoire de la sortie du modèle. Élevé (0.8-1.0) pour des réponses diverses et créatives. Faible (0.2-0.5) pour une sortie ciblée et déterministe."

PLG_JCE_EDITOR_AIA_GPT_MODEL="Modèle "
PLG_JCE_EDITOR_AIA_GPT_MODEL_DESC="<ul><li><strong>GPT4o :</strong>Version avancée du GPT-4, ce modèle offre des performances supérieures avec une vitesse et une précision accrues. Idéal pour les tâches linguistiques exigeantes, il garantit une génération de texte de haute qualité et rentable.</li><li><strong>GPT-4-Turbo :</strong> Version améliorée du GPT-4, ce modèle associe des fonctionnalités sophistiquées à une rapidité et une efficacité accrues. Il permet de générer des textes rentables et de haute qualité à des taux de réponse proches du temps réel. Il est idéal pour les tâches de traitement linguistique exigeantes qui requièrent à la fois rapidité et profondeur.</li><li><strong>GPT-4 :</strong> Modèle linguistique avancé et puissant, GPT-4 excelle dans la génération de textes hautement cohérents et nuancés sur le plan contextuel. Idéal pour les tâches de génération de textes complexes et créatifs, il offre des performances supérieures et une compréhension approfondie d'un large éventail de sujets. Bien qu'il offre une qualité de premier ordre, il est plus coûteux et peut avoir des temps de réponse plus lents que les modèles plus petits. Parfait pour les applications exigeant un traitement linguistique de haut niveau.</li><li><strong>gpt-3.5-turbo :</strong> Un modèle linguistique avancé qui offre un équilibre entre les capacités, le coût et la vitesse. Il offre des performances similaires à celles du modèle text-davinci-003, mais à un prix inférieur par jeton, ce qui en fait un choix rentable pour diverses tâches de génération de texte. Les temps de réponse sont généralement plus rapides que ceux de text-davinci-003.</li><li><strong>davinci-002 :</strong> Un modèle très avancé pour générer un texte cohérent de premier ordre. Idéal pour la résolution de problèmes complexes et la création de contenus nuancés, il offre d'excellentes performances pour un coût et un temps de réponse plus élevés.</li><li><strong>babbage-002 :</strong> Un modèle économique qui permet de générer des textes de manière fiable et efficace. Adapté aux tâches linguistiques générales, il permet d'équilibrer les capacités et les performances tout en réduisant les coûts d'exploitation.</li></ul>"

PLG_JCE_EDITOR_AIA_TEXTPATTERN_TEXT_PREFIX="Préfixe de modèle de texte"
PLG_JCE_EDITOR_AIA_TEXTPATTERN_TEXT_PREFIX_DESC="Le préfixe de modèle de texte qui déclenche une requête ChatGPT sur Entrée en utilisant le texte qui le suit. La valeur par défaut est <em>:ai</em>"

PLG_JCE_EDITOR_AIA_PROMPTS="Invites personnalisées"
PLG_JCE_EDITOR_AIA_PROMPTS_NAME="Nom"
PLG_JCE_EDITOR_AIA_PROMPTS_PROMPT="Invite"
PLG_JCE_EDITOR_AIA_PROMPTS_SELECTION="Exiger une sélection"
PLG_JCE_EDITOR_AIA_PROMPTS_DESC="Créez une invite personnalisée pour la sélection dans le menu du bouton ChatGPT. Définissez un nom pour identifier l'invite et la valeur de l'invite comme requête à envoyer à ChatGPT. Si 'Exiger une sélection' est activé, une sélection de contenu sera envoyée avec la requête d'invite."

PLG_JCE_EDITOR_AIA_SPELLCHECK="Vérification orthographique"
PLG_JCE_EDITOR_AIA_SPELLCHECK_DESC="Activer ou désactiver la vérification de l'orthographe dans ChatGPT. Lorsque cette option est activée, ChatGPT effectue une vérification du contenu de l'éditeur lorsque l'on clique sur le bouton 'Vérification orthographique'. Cette fonction remplace la fonction de vérification orthographique par défaut."

[aia]
WF_AIA_TITLE="Aia"
WF_AIA_DESC="Aia - Assistant Ai"
WF_AIA_PROMPT="Invite"
WF_AIA_RESPONSE="Réponse"
WF_AIA_SEND="Envoyer une requête..."
WF_AIA_SHOW_DIFFERENCES="Afficher les différences"
WF_AIA_ACCEPT="Accepter"
WF_AIA_REJECT="Rejeter"
WF_AIA_ACCEPT_ALL="Tout accepter"
WF_AIA_REJECT_ALL="Tout rejeter"PK�s!]�#o,,$editor_aia/language/fr-FR/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�s!]�#o,,editor_aia/language/index.htmlnu&1i�<html><body bgcolor="#FFFFFF"></body></html>PK�t!],�z���jce.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2015 - 2023 Ryan Demmer. All rights reserved
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved
 * @license     GNU General Public License version 2 or later
 */

defined('JPATH_BASE') or die;

JLoader::registerNamespace('Joomla\\Plugin\\Editors\\Jce', JPATH_PLUGINS . '/editors/jce/src', false, false, 'psr4');
JLoader::register('WfBrowserHelper', JPATH_ADMINISTRATOR . '/components/com_jce/helpers/browser.php');

use Joomla\CMS\Factory;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Plugin\CMSPlugin;

/**
 * JCE.
 *
 * @since       2.5.5
 */
class PlgSystemJce extends CMSPlugin
{
    public function onAfterDispatch()
    {
        $app = Factory::getApplication();

        // only in "site"
        if ($app->getClientId() !== 0) {
            return;
        }

        $document = Factory::getDocument();

        // must be an html doctype
        if ($document->getType() !== 'html') {
            return true;
        }

        $app->triggerEvent('onWfPluginAfterDispatch');
    }

    /**
     * adds additional fields to the user editing form.
     *
     * @param Form $form The form to be altered
     * @param mixed $data The associated data for the form
     *
     * @return bool
     *
     * @since   2.6.64
     */
    public function onContentPrepareForm(Form $form, $data = [])
    {
        $app = Factory::getApplication();

        // Only for admin
        if (!$app->isClient('administrator')) {
            return true;
        }

        $formName = $form->getName();

        // profile form data
        if ($form->getName() == 'com_config.component') {

            // only for JCE component
            if ($app->input->getCmd('component') !== 'com_jce') {
                return true;
            }

            Form::addFormPath(__DIR__ . '/forms');
            $form->loadFile('updates', false, '/config');
        }
    }
}
PK�t!]�V2��jce.xmlnu&1i�<?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="system" method="upgrade">
  <name>plg_system_jce</name>
  <version>2.9.99.2</version>
  <creationDate>22-04-2026</creationDate>
  <author>Ryan Demmer</author>
  <authorEmail>info@joomlacontenteditor.net</authorEmail>
  <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
  <copyright>Copyright (C) 2006 - 2026 Ryan Demmer. All rights reserved</copyright>
  <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
  <description>PLG_SYSTEM_JCE_XML_DESCRIPTION</description>
  <files folder="plugins/system/jce">
    <file plugin="jce">jce.php</file>
    <folder>forms</folder>
    <folder>services</folder>
    <folder>src</folder>
    <folder>templates</folder>
  </files>

  <namespace path="src">Joomla\Plugin\System\Jce</namespace>

  <languages folder="administrator/language/en-GB">
    <language tag="en-GB">en-GB.plg_system_jce.ini</language>
    <language tag="en-GB">en-GB.plg_system_jce.sys.ini</language>
  </languages>

  <config>
    <fields name="params">
      <fieldset name="options">
        <field name="column_styles" type="radio" default="1" label="PLG_SYSTEM_JCE_COLUMN_STYLES_LABEL" description="PLG_SYSTEM_JCE_COLUMN_STYLES_DESC" class="btn-group btn-group-yesno">
          <option value="1">JYES</option>
          <option value="0">JNO</option>
        </field>
      </fieldset>
    </fields>
  </config>

</extension>
PK�|!]��Q�$`$`install.pkg.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Admin
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
\defined('_JEXEC') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\Filesystem\File;
use Joomla\Filesystem\Folder;
use Joomla\CMS\Installer\Installer;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Table\Table;

class pkg_jceInstallerScript
{
    /**
     * The current installed version
     * @var string
     */
    private static $current_version;

    /**
     * The current installed variant, eg: core, pro
     *
     * @var string
     */
    private static $current_variant = 'core';
    
    private function addIndexfiles($paths)
    {
        // get the base file
        $file = JPATH_ADMINISTRATOR . '/components/com_jce/index.html';

        if (is_file($file)) {
            foreach ((array) $paths as $path) {
                if (is_dir($path)) {
                    // admin component
                    $folders = Folder::folders($path, '.', true, true);

                    foreach ($folders as $folder) {
                        File::copy($file, $folder . '/' . basename($file));
                    }
                }
            }
        }
    }

    private function installProfiles()
    {
        include_once JPATH_ADMINISTRATOR . '/components/com_jce/helpers/profiles.php';
        return JceProfilesHelper::installProfiles();
    }

    public function install($installer)
    {
        // enable plugins
        $plugin = Table::getInstance('extension');

        $plugins = array(
            'jce' => array('content', 'system', 'quickicon', 'extension', 'installer'),
            'jcepro' => array('system'),
            'mediajce' => array('fields')
        );

        $parent = $installer->getParent();

        foreach ($plugins as $element => $folders) {
            foreach ($folders as $folder) {
                $id = $plugin->find(array('type' => 'plugin', 'folder' => $folder, 'element' => $element));

                if ($id) {
                    $plugin->load($id);
                    $plugin->enabled = 1;
                    $plugin->store();
                }
            }
        }

        // install profiles
        $this->installProfiles();

        $language = Factory::getLanguage();
        $language->load('com_jce', JPATH_ADMINISTRATOR, null, true);
        $language->load('com_jce.sys', JPATH_ADMINISTRATOR, null, true);

        // set layout base path
        LayoutHelper::$defaultBasePath = JPATH_ADMINISTRATOR . '/components/com_jce/layouts';

        // override existing message
        $message = '';
        $message .= '<div id="jce" class="mt-4 mb-4 p-4 border-dark well text-start" role="alert">';
        $message .= '   <h1>' . Text::_('COM_JCE') . ' ' . $parent->manifest->version . '</h1>';
        $message .= '   <div>';

        // variant messates
        if ((string) $parent->manifest->variant != 'pro') {
            $message .= LayoutHelper::render('message.upgrade');
        } else {
            // show core to pro upgrade message
            if ($parent->isUpgrade()) {
                $variant = (string) self::$current_variant; //$parent->get('current_variant', 'core');

                if ($variant == 'core') {
                    $message .= LayoutHelper::render('message.welcome');
                }
            }
        }

        $message .= Text::_('COM_JCE_XML_DESCRIPTION');

        $message .= '   </div>';
        $message .= '</div>';

        $parent->set('message', $message);

        // add index files to each folder
        $this->addIndexfiles(array(
            __DIR__,
            JPATH_SITE . '/components/com_jce',
            JPATH_PLUGINS . '/jce',
        ));

        return true;
    }

    private function checkTable()
    {
        $db = Factory::getDBO();

        $tables = $db->getTableList();

        if (!empty($tables)) {
            // swap array values with keys, convert to lowercase and return array keys as values
            $tables = array_keys(array_change_key_case(array_flip($tables)));
            $app = Factory::getApplication();
            $match = str_replace('#__', strtolower($app->getCfg('dbprefix', '')), '#__wf_profiles');

            return in_array($match, $tables);
        }

        // try with query
        $query = $db->getQuery(true);

        $query->select('COUNT(id)')->from('#__wf_profiles');
        $db->setQuery($query);

        return $db->execute();
    }

    public function uninstall()
    {
        $db = Factory::getDBO();

        if ($this->checkTable() === false) {
            return true;
        }

        $query = $db->getQuery(true);
        $query->select('COUNT(id)')->from('#__wf_profiles');
        $db->setQuery($query);

        // profiles table is empty, remove...
        if ($db->loadResult() === 0) {
            $db->dropTable('#__wf_profiles', true);
            $db->execute();
        }
    }

    public function update($installer)
    {
        return $this->install($installer);
    }

    protected function getCurrentVersion()
    {
        // get current package version
        $manifest = JPATH_ADMINISTRATOR . '/manifests/packages/pkg_jce.xml';
        $version = 0;
        $variant = "core";

        if (is_file($manifest)) {
            if ($xml = @simplexml_load_file($manifest)) {
                $version = (string) $xml->version;
                $variant = (string) $xml->variant;
            }
        }

        return array($version, $variant);
    }

    public function preflight($route, $installer)
    {        
        // skip on uninstall etc.
        if ($route == 'remove' || $route == 'uninstall') {
            return true;
        }

        $parent = $installer->getParent();

        $requirements = '<a href="https://www.joomlacontenteditor.net/support/documentation/editor/requirements" title="Editor Requirements" target="_blank" rel="noopener">https://www.joomlacontenteditor.net/support/documentation/editor/requirements</a>';

        // php version check
        if (version_compare(PHP_VERSION, '7.4', 'lt')) {
            throw new RuntimeException('JCE requires PHP 7.4 or later - ' . $requirements);
        }

        // joomla version check
        if (version_compare(JVERSION, '3.10', 'lt')) {
            throw new RuntimeException('JCE requires Joomla 3.10 or later - ' . $requirements);
        }

        // set current package version and variant
        list($version, $variant) = $this->getCurrentVersion();

        // set current version
        self::$current_version = $version;

        // set current variant
        self::$current_variant = $variant;

        // core cannot be installed over pro
        if ($variant === "pro" && (string) $parent->manifest->variant === "core") {
            throw new RuntimeException('JCE Core cannot be installed over JCE Pro. Please install JCE Pro. To downgrade, please first uninstall JCE Pro.');
        }

        // end here if not an upgrade
        if ($route != 'update') {
            return true;
        }

        $extension = Table::getInstance('extension');

        // disable content, system and quickicon plugins. This is to prevent errors if the install fails and some core files are missing
        foreach (array('system', 'quickicon') as $folder) {
            $plugin = $extension->find(array(
                'type' => 'plugin',
                'element' => 'jce',
                'folder' => $folder,
            ));

            if ($plugin) {
                $extension->publish(null, 0);
            }
        }

        // disable legacy jcefilebrowser quickicon to remove when the install is finished
        $plugin = $extension->find(array(
            'type' => 'plugin',
            'element' => 'jcefilebrowser',
            'folder' => 'quickicon',
        ));

        if ($plugin) {
            $extension->publish(null, 0);
        }

        // clean up fields in JCE Pro before install
        $files = array(
            JPATH_PLUGINS . '/system/jcepro/fields/ExtendedMedia.php',
            JPATH_PLUGINS . '/system/jcepro/fields/EditorPlugins.php'
        );

        foreach ($files as $file) {
            if (is_file($file)) {
                @unlink($file);
            }
        }
    }

    private function checkTableUpdate()
    {
        $db = Factory::getDBO();

        $state = true;

        // only for mysql / mysqli
        if (strpos($db->getName(), 'mysql') === false) {
            return $state;
        }

        $query = "DESCRIBE #__wf_profiles";
        $db->setQuery($query);
        $items = $db->loadObjectList();

        foreach ($items as $item) {
            if ($item->Field == 'checked_out') {
                if (strpos($item->Type, 'unsigned') === false) {
                    $state = false;
                }

                if (strpos($item->Type, 'unsigned') === false) {
                    $state = false;
                }
            }

            if ($item->Field == 'checked_out_time') {
                $item = (array) $item;

                if (strtolower($item['Null']) == 'no') {
                    $state = false;
                }
            }
        }

        return $state;
    }

    public function postflight($route, $installer)
    {
        // Do not run on uninstallation.
		if ($route === 'uninstall')
		{
			return true;
		}
        
        $app = Factory::getApplication();
        $extension = Table::getInstance('extension');
        $parent = $installer->getParent();

        $db = Factory::getDBO();

        Table::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_jce/tables');

        // remove legacy jcefilebrowser quickicon and jce content plugins
        $plugins = [
            'jcefilebrowser' => 'quickicon',
            'jce' => 'content'
        ];

        foreach ($plugins as $element => $folder) {
            $plugin = PluginHelper::getPlugin($folder, $element);

            if ($plugin) {
                $inst = Installer::getInstance();

                // try uninstall
                if (!$inst->uninstall('plugin', $plugin->id)) {
                    if ($extension->load($plugin->id)) {
                        $extension->publish(null, 0);
                    }
                }
            }
        }

        if ($route == 'update') {
            $version = (string) $parent->manifest->version;
            $current_version = (string) self::$current_version; //$parent->get('current_version');

            // process core to pro upgrade - remove branding plugin
            if ((string) $parent->manifest->variant === "pro") {
                // remove branding plugin
                $branding = JPATH_SITE . '/media/com_jce/editor/tinymce/plugins/branding';

                if (is_dir($branding)) {
                    Folder::delete($branding);
                }

                // clean up updates sites
                $query = $db->getQuery(true);

                $query->select('update_site_id')->from('#__update_sites');
                $query->where($db->qn('location') . ' = ' . $db->q('https://cdn.joomlacontenteditor.net/updates/xml/editor/pkg_jce.xml'));
                $db->setQuery($query);
                $id = $db->loadResult();

                if ($id) {
                    BaseDatabaseModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_installer/models');
                    $model = BaseDatabaseModel::getInstance('Updatesites', 'InstallerModel');

                    if ($model) {
                        $model->delete(array($id));
                    }
                }
            }

            $theme = '';

            // update toolbar_theme for 2.8.0 and 2.8.1 beta
            if (version_compare($current_version, '2.8.0', 'ge') && version_compare($current_version, '2.8.1', 'lt')) {
                $theme = 'modern';
            }

            // update toolbar_theme for 2.7.x
            if (version_compare($current_version, '2.8', 'lt')) {
                $theme = 'default';
            }

            // update toolbar_theme if one has been set
            if ($theme) {
                $table = Table::getInstance('Profiles', 'JceTable');

                $query = $db->getQuery(true);

                $query->select('*')->from('#__wf_profiles');
                $db->setQuery($query);
                $profiles = $db->loadObjectList();

                foreach ($profiles as $profile) {
                    if (empty($profile->params)) {
                        $profile->params = '{}';
                    }

                    $data = json_decode($profile->params, true);

                    if (false !== $data) {
                        if (empty($data)) {
                            $data = array();
                        }

                        // no editor parameters set at all!
                        if (!isset($data['editor'])) {
                            $data['editor'] = array();
                        }

                        $param = array(
                            'toolbar_theme' => $theme,
                        );

                        // add variant for "mobile" profile
                        if ($profile->name === "Mobile") {
                            $param['toolbar_theme'] .= '.touch';
                        }

                        if (empty($data['editor']['toolbar_theme'])) {
                            $data['editor']['toolbar_theme'] = $param['toolbar_theme'];

                            if (!$table->load($profile->id)) {
                                throw new Exception('Unable to update profile - ' . $profile->name);
                            }

                            $table->params = json_encode($data);

                            if (!$table->store()) {
                                throw new Exception('Unable to update profile - ' . $profile->name);
                            }
                        }
                    }
                }
            }

            // enable content, system and quickicon plugins
            foreach (array('content', 'system', 'quickicon') as $folder) {
                $plugin = $extension->find(array(
                    'type' => 'plugin',
                    'element' => 'jce',
                    'folder' => $folder,
                ));

                if ($plugin) {
                    $extension->publish(null, 1);
                }
            }

            // check for "unsigend" in "checked_out" and default value in "checked_out_time" fields and update if necessary
            if (false == $this->checkTableUpdate()) {
                // fix checked_out table
                $query = "ALTER TABLE #__wf_profiles CHANGE COLUMN " . $db->qn('checked_out') . " " . $db->qn('checked_out') . " INT UNSIGNED NULL";
                $db->setQuery($query);
                $db->execute();

                // fix checked_out_time default value
                $query = "ALTER TABLE #__wf_profiles CHANGE COLUMN " . $db->qn('checked_out_time') . " " . $db->qn('checked_out_time') . " DATETIME NULL DEFAULT NULL";
                $db->setQuery($query);
                $db->execute();
            }

            $this->cleanupInstall($installer);
        }

        // Borrowed from the script.ats.php file from Akeeba Ticket System
		// Forcibly create the autoload_psr4.php file afresh.
		if (class_exists(JNamespacePsr4Map::class))
		{
			try
			{
				$nsMap = new JNamespacePsr4Map();

				@clearstatcache(JPATH_CACHE . '/autoload_psr4.php');

				if (function_exists('opcache_invalidate'))
				{
					@opcache_invalidate(JPATH_CACHE . '/autoload_psr4.php');
				}

				@clearstatcache(JPATH_CACHE . '/autoload_psr4.php');
				$nsMap->create();

				if (function_exists('opcache_invalidate'))
				{
					@opcache_invalidate(JPATH_CACHE . '/autoload_psr4.php');
				}

				$nsMap->load();
			}
			catch (\Throwable $e)
			{
				// In case of failure, just try to delete the old autoload_psr4.php file
				if (function_exists('opcache_invalidate'))
				{
					@opcache_invalidate(JPATH_CACHE . '/autoload_psr4.php');
				}

				@unlink(JPATH_CACHE . '/autoload_psr4.php');
				@clearstatcache(JPATH_CACHE . '/autoload_psr4.php');

                Factory::getApplication()->createExtensionNamespaceMap();
			}
		}
    }

    protected static function cleanupInstall($installer)
    {
        $app = Factory::getApplication();
        
        $parent = $installer->getParent();
        $current_version = self::$current_version; //$parent->get('current_version');

        $admin = JPATH_ADMINISTRATOR . '/components/com_jce';
        $site = JPATH_SITE . '/components/com_jce';
        $media = JPATH_SITE . '/media/com_jce';

        $folders = array();
        $files = array();

        $folders['2.6.38'] = array(
            // admin
            $admin . '/classes',
            $admin . '/elements',
            $admin . '/media/fonts',
            $admin . '/img/menu',
            $admin . '/views/preferences',
            $admin . '/views/users',
            // site
            $site . '/editor/elements',
            $site . '/editor/extensions/aggregator/vine',
            $site . '/editor/extensions/popups/window'
        );

        // remove flexicontent
        if (!ComponentHelper::isInstalled('com_flexicontent')) {
            $files['2.7.0'] = array(
                $site . '/editor/extensions/links/flexicontentlinks.php',
                $site . '/editor/extensions/links/flexicontentlinks.xml',
            );

            $folders['2.7.0'] = array(
                $site . '/editor/extensions/links/flexicontentlinks',
            );
        }

        // remove help files
        $folders['2.8.6'] = array(
            $admin . '/views/help',
        );

        // remove mediaplayer
        $folders['2.8.11'] = array(
            $site . '/editor/libraries/mediaplayer',
        );

        // remove fields folder
        $folders['2.9.7'] = array(
            JPATH_PLUGINS . '/system/jce/fields',
        );

        // remove media folder
        $folders['2.9.17'] = array(
            $admin . '/media',
        );

        // remove folders moved to media/com_jce
        $folders['2.9.50'] = array(
            $site . '/editor/tiny_mce',
            $site . '/editor/libraries/css',
            $site . '/editor/libraries/fonts',
            $site . '/editor/libraries/img',
            $site . '/editor/libraries/js',
            $site . '/editor/libraries/vendor',
            $site . '/editor/libraries/pro/css',
            $site . '/editor/libraries/pro/fonts',
            $site . '/editor/libraries/pro/img',
            $site . '/editor/libraries/pro/js',
            $media . '/css',
            $media . '/img',
            $media . '/js'
        );

        // clean up editor folder
        $folders['2.9.60'] = array(
            JPATH_PLUGINS . '/editors/jce/src/Provider'
        );

        // remove old layout file
        $files['2.9.60'] = array(
            JPATH_PLUGINS . '/editors/jce/layouts/editor/textarea.php'
        );

        // remove pro plugins
        $folders['2.9.70'] = array(
            $site . '/editor/plugins/caption',
            $site . '/editor/plugins/columns',
            $site . '/editor/plugins/iframe',
            $site . '/editor/plugins/imgmanager_ext',
            $site . '/editor/plugins/mediamanager',
            $site . '/editor/plugins/microdata',
            $site . '/editor/plugins/source/tmpl',
            $site . '/editor/plugins/templatemanager',
            $site . '/editor/plugins/textpattern'
        );

        // clean up editor vendor libraries
        $folders['2.9.96'] = array(
            $site . '/editor/libraries/vendor',
            $site . '/editor/libraries/pro'
        );

        // remove jQuery UI Touch
        $files['2.9.96'] = array(
            $media . '/editor/vendor/jquery/js/jquery-ui.touch.min.js'
        );

        // remove MobileDetect
        $folders['2.9.98'] = array(
            $site . '/editor/libraries/classes/vendor/MobileDetect'
        );

        // remove pro source plugin
        $files['2.9.70'] = array(
            $site . '/editor/plugins/source/config.php',
            $site . '/editor/plugins/source/source.php',
            // mediafield files
            JPATH_PLUGINS . '/fields/mediajce/fields/extendedmedia.php'
        );

        $files['2.6.38'] = array(
            $admin . '/install.php',
            $admin . '/install.script.php',
            // controller
            $admin . '/controller/preferences.php',
            $admin . '/controller/popups.php',
            $admin . '/controller/updates.php',
            // helpers
            $admin . '/helpers/cacert.pem',
            $admin . '/helpers/editor.php',
            $admin . '/helpers/toolbar.php',
            $admin . '/helpers/updates.php',
            $admin . '/helpers/xml.php',
            // includes
            $admin . '/includes/loader.php',
            // models
            $admin . '/models/commands.json',
            $admin . '/models/config.xml',
            $admin . '/models/cpanel.xml',
            $admin . '/models/model.php',
            $admin . '/models/plugins.json',
            $admin . '/models/plugins.php',
            $admin . '/models/preferences.php',
            $admin . '/models/preferences.xml',
            $admin . '/models/pro.json',
            $admin . '/models/updates.php',
            $admin . '/models/users.php',
            // views
            $admin . '/views/cpanel/tmpl/default_pro_footer.php',
            $admin . '/views/profiles/tmpl/form_editor.php',
            $admin . '/views/profiles/tmpl/form_features.php',
            $admin . '/views/profiles/tmpl/form_plugin.php',
            $admin . '/views/profiles/tmpl/form_setup.php',
            $admin . '/views/profiles/tmpl/form.php',
            // site - extensions
            $site . '/editor/extensions/aggregator/vine.php',
            $site . '/editor/extensions/aggregator/vine.xml',
            $site . '/editor/extensions/popups/window.php',
            $site . '/editor/extensions/popups/window.xml',
            // site - libraries
            $site . '/editor/libraries/classes/token.php'
        );

        // remove help files
        $files['2.8.6'] = array(
            $admin . '/controller/help.php',
            $admin . '/models/help.php',
        );

        $files['2.8.11'] = array(
            $admin . '/views/cpanel/default_pro.php',
        );

        foreach ($folders as $version => $list) {
            // version check
            if (version_compare($version, $current_version, 'lt')) {
                continue;
            }

            foreach ($list as $folder) {
                if (!@is_dir($folder)) {
                    continue;
                }

                $items = Folder::files($folder, '.', false, true, array(), array());

                foreach ($items as $file) {
                    if (!@unlink($file)) {
                        try {
                            File::delete($file);
                        } catch (Exception $e) {}
                    }
                }

                $items = Folder::folders($folder, '.', false, true, array(), array());

                foreach ($items as $dir) {
                    if (!@rmdir($dir)) {
                        try {
                            Folder::delete($dir);
                        } catch (Exception $e) {}
                    }
                }

                if (!@rmdir($folder)) {
                    try {
                        Folder::delete($folder);
                    } catch (Exception $e) {}
                }
            }
        }

        foreach ($files as $version => $list) {
            // version check
            if (version_compare($version, $current_version, 'lt')) {
                continue;
            }

            foreach ($list as $file) {
                if (!@file_exists($file)) {
                    continue;
                }

                if (@unlink($file)) {
                    continue;
                }

                try {
                    File::delete($file);
                } catch (Exception $e) {}
            }
        }
    }
}
PKg}!]]3K�!src/PluginTraits/DisplayTrait.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Editors.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Plugin\Editors\Jce\PluginTraits;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Plugin\PluginHelper;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * Handles the onDisplay event for the JCE editor.
 *
 * @since  3.9.59
 */
trait DisplayTrait
{
    protected static $instances = array();

    protected function getEditorInstance()
    {
        // pass config to WFEditor
        $config = array(
            'profile_id' => $this->params->get('profile_id', 0),
            'plugin' => $this->params->get('plugin', ''),
        );

        $signature = md5(serialize($config));

        if (empty(self::$instances[$signature])) {
            // load base file
            require_once JPATH_ADMINISTRATOR . '/components/com_jce/includes/base.php';

            // create editor
            self::$instances[$signature] = new \WFEditor($config);
        }

        return self::$instances[$signature];
    }

    /**
     * Check that the editor is enabled and has a valid profile
     *
     * @return boolean
     */
    private function isEditorEnabled()
    {
        if (!ComponentHelper::isEnabled('com_jce')) {
            return false;
        }

        $instance = $this->getEditorInstance();

        if ($instance->hasProfile()) {
            return true;
        }

        return false;
    }

    /**
     * Find a fallback editor to load based on the Editor Global Configuration settings.
     * The fallback editor must be enabled.
     * If no editor is available or set, default to "read only" JCE.
     *
     * @return mixed Joomla\CMS\Editor\Editor or boolean false
     */
    private function getFallbackEditor()
    {
        $name = $this->params->get('editor_fallback', '');

        if ($name == '' || $name == 'jce') {
            return false;
        }

        if (!PluginHelper::isEnabled('editors', $name)) {
            return false;
        }

        $ed = Editor::getInstance($name);

        return $ed;
    }

    /**
     * Method to handle the onInit event.
     *  - Initializes the JCE WYSIWYG Editor.

     * @return void
     *
     * @since   1.5
     */
    public function onInit()
    {
        if ($this->isEditorEnabled() === false) {

            $ed = $this->getFallbackEditor();

            if ($ed !== false) {
                $ed->initialise();
                return;
            }
        }

        $language = Factory::getLanguage();
        $document = Factory::getDocument();

        $language->load('com_jce', JPATH_ADMINISTRATOR);

        $editor = $this->getEditorInstance();

        // setup editor without initializing
        $editor->setup(false);

        foreach ($editor->getScripts() as $script => $type) {
            $document->addScript($script, array(), array('type' => $type));
        }

        foreach ($editor->getStyleSheets() as $style) {
            $document->addStylesheet($style);
        }

        $document->addScriptOptions('plg_editor_jce',
            array(
                'editor' => $editor->getScriptOptions(),
            )
        );
    }

    /**
     * JCE WYSIWYG Editor - Display the editor area.
     *
     * @param   string   $name     The name of the editor area.
     * @param   string   $content  The content of the field.
     * @param   string   $width    The width of the editor area.
     * @param   string   $height   The height of the editor area.
     * @param   int      $col      The number of columns for the editor area.
     * @param   int      $row      The number of rows for the editor area.
     * @param   boolean  $buttons  True and the editor buttons will be displayed.
     * @param   string   $id       An optional ID for the textarea. If not supplied the name is used.
     * @param   string   $asset    The object asset
     * @param   object   $author   The author.
     * @param   array    $params   Associative array of editor parameters.
     *
     * @return  string
     */
    public function onDisplay($name, $content, $width = '100%', $height = '500', $col = 20, $row = 4, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
    {
        if ($this->isEditorEnabled() === false) {

            $ed = $this->getFallbackEditor();

            if ($ed !== false) {
                return $ed->display($name, $content, $width, $height, $col, $row, $buttons, $id, $asset, $author, $params);
            }
        }

        if (empty($id)) {
            $id = $name;
        }

        // Only add "px" to width and height if they are not given as a percentage
        if (is_numeric($width)) {
            $width .= 'px';
        }

        // default height value is no longer available in Joomla 6.1
        if (empty($height)) {
            $height = '500';
        }

        if (is_numeric($height)) {
            $height .= 'px';
        }

        if (empty($id)) {
            $id = $name;
        }

        $editor = $this->getEditorInstance();

        // Remove inavlid characters from the ID
        $id = preg_replace('/[^A-Za-z0-9\-_:.]/', '_', $id);

        $buttonsStr = '';

        if ($editor->hasProfile()) {
            if (!$editor->hasPlugin('joomla')) {
                if ((bool) $editor->getParam('editor.xtd_buttons', 1)) {
                    $buttonsStr = $this->displayXtdButtons($id, $buttons, $asset, $author);
                }
            } else {
                $list = $this->getXtdButtonsList($id, $buttons, $asset, $author);

                if (!empty($list)) {
                    $options = array(
                        'joomla_xtd_buttons' => $list,
                    );

                    Factory::getDocument()->addScriptOptions('plg_editor_jce', $options, true);
                }

                $buttonsStr = $this->displayXtdButtons($id, $buttons, $asset, $author, true);
            }
        }

        $displayData = [
            'name' => $name,
            'id' => $id,
            'class' => 'mce_editable wf-editor',
            'cols' => $col,
            'rows' => $row,
            'width' => $width,
            'height' => $height,
            'content' => $content,
            'buttons' => $buttonsStr,
        ];

        // Render Editor markup
        return LayoutHelper::render('editor.jce', $displayData, JPATH_PLUGINS . '/editors/jce/layouts');
    }
}
PKg}!]\u�{II$src/PluginTraits/XTDButtonsTrait.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Editors.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Plugin\Editors\Jce\PluginTraits;

use Joomla\CMS\Factory;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Uri\Uri;
use Joomla\Event\Event;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

trait XTDButtonsTrait
{
    private function getXtdButtonsList($name, $buttons, $asset, $author)
    {
        $app = Factory::getApplication();
        
        $list = array();

        $excluded = array('readmore', 'pagebreak');

        if (!is_array($buttons)) {
            $buttons = !$buttons ? false : $excluded;
        } else {
            $buttons = array_merge($buttons, $excluded);
        }

        // easiest way to get buttons across versions
        $buttons = Editor::getInstance('jce')->getButtons($name, $buttons);

        if (!empty($buttons)) {
            $list[$name] = array();
            
            foreach ($buttons as $i => $button) {
                if ($button->get('name')) {
                    $id = $name . '_' . $button->name;

                    if (version_compare(JVERSION, '4', 'ge')) {
                        $button->id = $id . '_modal';
                        echo LayoutHelper::render('joomla.editors.buttons.modal', $button);
                    }

                    // create icon class
                    $icon = 'none icon-' . $button->get('icon', $button->get('name'));

                    $options = (array) $button->get('options', array());

                    // set href value
                    if ($button->get('link', '#') == '#') {
                        $link = isset($options['src']) ? $options['src'] : '';
                    } else {
                        $link = Uri::base() . $button->get('link');
                    }

                    // Joomla 5 modal requirements
                    if ($button->get('action', '')) {
                        $options['src']         = $link;
                        $options['textHeader']  = $button->get('text');
                        $options['iconHeader']  = 'icon-' . $icon;
                        $options['popupType']   = $options['popupType'] ?? 'iframe';
                    }

                    $args = array(
                        'name' => $button->get('text'),
                        'id' => $id,
                        'title' => $button->get('text'),
                        'icon' => $icon,
                        'href' => $link,
                        'onclick' => $button->get('onclick', ''),
                        'svg' => $button->get('iconSVG'),
                        'options' => $options,
                        'action' => $button->get('action', '')
                    );

                    $list[$name][] = $args;
                }
            }
        }

        return $list;
    }

    protected function displayXtdButtons($name, $buttons, $asset, $author, $hidden = false)
    {
        // easiest way to get buttons across versions
        $buttons = Editor::getInstance('jce')->getButtons($name, $buttons);

        if (!empty($buttons)) {
            // fix some buttons attributes
            foreach ($buttons as $button) {
                $cls = $button->get('class', '');

                if (empty($cls) || strpos($cls, 'btn') === false) {
                    $cls .= ' btn';
                    $button->set('class', trim($cls));
                }
                
                // set the editor name (Joomla 5) so each modal is unique
                $button->set('editor', $name);

                // hide buttons if required
                if ($hidden) {
                    $button->set('class', 'd-none hidden');
                }
            }

            return LayoutHelper::render('joomla.editors.buttons', $buttons);
        }
    }
}PKg}!]��[k	k	src/Extension/Jce.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Editors.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Plugin\System\Jce\Extension;

use JLoader;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Plugin\System\Jce\PluginTraits\EventTrait;
use Joomla\Plugin\System\Jce\PluginTraits\FormTrait;

JLoader::register('WfBrowserHelper', JPATH_ADMINISTRATOR . '/components/com_jce/helpers/browser.php');

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * JCE WYSIWYG Editor Plugin.
 *
 * @since 1.5
 */
final class Jce extends CMSPlugin
{
    use FormTrait;
    use EventTrait;

    /**
     * Affects constructor behavior. If true, language files will be loaded automatically.
     *
     * @var    boolean
     */
    protected $autoloadLanguage = true;

    private $booted = false;

    private function bootEditorPlugins()
    {
        if ($this->booted) {
            return;
        }

        $app = Factory::getApplication();

        // only in "site"
        if ($app->getClientId() !== 0) {
            return;
        }

        $plugins = PluginHelper::getPlugin('jce');

        foreach ($plugins as $plugin) {
            if (!preg_match('/^editor[-_]/', $plugin->name)) {
                continue;
            }

            $path = JPATH_PLUGINS . '/jce/' . $plugin->name;

            // only modern plugins
            if (!is_dir($path . '/src')) {
                continue;
            }

            $plugin = $app->bootPlugin($plugin->name, $plugin->type);
            $plugin->setDispatcher($app->getDispatcher());

            $plugin->registerListeners();
        }

        $this->booted = true;
    }

    public function onAfterDispatch()
    {
        $app = Factory::getApplication();

        // only in "site"
        if ($app->getClientId() !== 0) {
            return;
        }

        $document = Factory::getDocument();

        // must be an html doctype
        if ($document->getType() !== 'html') {
            return true;
        }

        $this->bootEditorPlugins();

        $app->triggerEvent('onWfPluginAfterDispatch');
    }
}
PKg}!]�(�XXservices/provider.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  System.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2023 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Extension\PluginInterface;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Event\DispatcherInterface;
use Joomla\Plugin\System\Jce\Extension\Jce;

return new class() implements ServiceProviderInterface
{
    /**
     * Registers the service provider with a DI container.
     *
     * @param   Container  $container  The DI container.
     *
     * @return  void
     *
     * @since   3.0.0
     */
    public function register(Container $container)
    {
        $container->set(
            PluginInterface::class,
            function (Container $container) {
                $dispatcher = $container->get(DispatcherInterface::class);

                $plugin = new Jce(
                    $dispatcher,
                    (array) PluginHelper::getPlugin('system', 'Jce')
                );

                $plugin->setApplication(Factory::getApplication());

                return $plugin;
            }
        );
    }
};
PKg}!]q��}uulayouts/editor/jce.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Editors.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_BASE') or die;

extract($displayData);

$classes = version_compare(JVERSION, '4', 'lt') ? 'joomla3' : 'mb-2';

?>
<div class="editor wf-editor-container <?php echo $classes; ?>">
	<div class="wf-editor-header"></div>
	<textarea
		spellcheck="false"
		autocomplete="off"
		name="<?php echo $name; ?>"
		id="<?php echo $id; ?>"
		cols="<?php echo $cols; ?>"
		rows="<?php echo $rows; ?>"
		style="width: <?php echo $width; ?>; height: <?php echo $height; ?>;"
		class="<?php echo $class; ?>"
	><?php echo $content; ?></textarea>
</div>
<?php echo $buttons ?? ''; ?>PK~!](�x���templates/wright.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Registry\Registry;

class WfTemplateWright extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        $path = JPATH_SITE . '/templates/' . $template->name;

        // not a wright template
        if (!is_dir($path . '/wright')) {
            return false;
        }

        // add bootstrap
        $files[] = 'templates/' . $template->name . '/wright/css/bootstrap.min.css';

        $params = new Registry($template->params);
        $style = $params->get('style', 'default');

        // check style-custom.css file
        $file = $path . '/css/style-' . $style . '.css';

        // add base theme.css file
        if (is_file($file)) {
            $files[] = 'templates/' . $template->name . '/css/style-' . $style . '.css';
        }
    }
}
PK~!]<&�templates/joomlart.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class WfTemplateJoomlart extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        $path = JPATH_SITE . '/templates/' . $template->name;

        if (!is_file($path . '/templateInfo.php')) {
            return false;
        }

        // add base template.css file
        $files[] = 'templates/' . $template->name . '/css/template.css';

        // add custom.css
        if (is_file($path . '/css/custom.css')) {
            $files[] = 'templates/' . $template->name . '/css/custom.css';
        }

        $items = array();

        $list = glob(JPATH_SITE . '/media/t4/css/*.css');

        foreach ($list as $file) {
            $items[filemtime($file)] = $file;
        }

        // sort by modified time key
        ksort($items, SORT_NUMERIC);

        // get the last item in the array
        $item = end($items);

        // add compiled css file
        $files[] = 'media/t4/css/' . basename($item);
    }
}
PK~!]�>..templates/helix.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Registry\Registry;

class WfTemplateHelix extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        $path = JPATH_SITE . '/templates/' . $template->name;

        if (!is_file($path . '/comingsoon.php')) {
            return false;
        }

        // add bootstrap
        $files[] = 'templates/' . $template->name . '/css/bootstrap.min.css';

        // add font-awesome
        $files[] = 'templates/' . $template->name . '/css/font-awesome.min.css';

        // add base template.css file
        $files[] = 'templates/' . $template->name . '/css/template.css';

        $params = new Registry($template->params);
        $preset = $params->get('preset', '');

        $data = json_decode($preset);

        if ($data) {
            if (isset($data->preset)) {
                $files[] = 'templates/' . $template->name . '/css/presets/' . $data->preset . '.css';
            }
        }

        // add custom.css
        if (is_file($path . '/css/custom.css')) {
            $files[] = 'templates/' . $template->name . '/css/custom.css';
        }
    }
}
PK~!]7EԌ^	^	templates/astroid.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class WfTemplateAstroid extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        // Joomla 4
        $path = JPATH_SITE . '/media/templates/site/' . $template->name;

        if (is_dir($path . '/astroid')) {
            $items = glob($path . '/css/compiled-*.css');

            // add template css file (bootstrap)
            if (is_file($path . '/css/template.css')) {
                $files[] = 'media/templates/site/' . $template->name . '/css/template.css';
            }

            if (!empty($items)) {
                // order by modified time from newest to oldest
                usort($items, function ($a, $b) {
                    return filemtime($b) - filemtime($a);
                });

                // get the first item
                $item = array_shift($items);

                $files[] = 'media/templates/site/' . $template->name . '/css/' . basename($item);
            }

            // add custom css file
            if (is_file($path . '/css/custom.css')) {
                $files[] = 'media/templates/site/' . $template->name . '/css/custom.css';
            }

            return true;
        }

        // Joomla 3
        $path = JPATH_SITE . '/templates/' . $template->name;

        if (is_dir($path . '/astroid')) {
            $items = glob($path . '/css/compiled-*.css');

            // add template css file (bootstrap)
            if (is_file($path . '/css/template.css')) {
                $files[] = 'templates/' . $template->name . '/css/template.css';
            }

            if (!empty($items)) {
                // order by modified time from newest to oldest
                usort($items, function ($a, $b) {
                    return filemtime($b) - filemtime($a);
                });

                // get the first item
                $item = array_shift($items);

                $files[] = 'templates/' . $template->name . '/css/' . basename($item);
            }
            
            // add custom css file
            if (is_file($path . '/css/custom.css')) {
                $files[] = 'templates/' . $template->name . '/css/custom.css';
            }
        }
    }
}
PK~!]����templates/sun.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Registry\Registry;

class WfTemplateSun extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        $path = JPATH_SITE . '/templates/' . $template->name;

        if (!is_file($path . '/template.defines.php')) {
            return false;
        }

        // add bootstrap
        $files[] = 'plugins/system/jsntplframework/assets/3rd-party/bootstrap/css/bootstrap-frontend.min.css';

        // add base template.css file
        $files[] = 'templates/' . $template->name . '/css/template.css';

        $params = new Registry($template->params);
        $preset = $params->get('preset', '');

        $data = json_decode($preset);

        if ($data) {
            if (isset($data->templateColor)) {
                $files[] = 'templates/' . $template->name . '/css/color/' . $data->templateColor . '.css';
            }

            if (isset($data->fontStyle) && isset($data->fontStyle->style)) {
                $files[] = 'templates/' . $template->name . '/css/styles/' . $data->fontStyle->style . '.css';
            }
        }
    }
}
PK~!]�_4_��templates/core.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\Filesystem\Path;
use Joomla\CMS\Plugin\CMSPlugin;

class WfTemplateCore extends CMSPlugin
{
    private function findFile($template, $name)
    {
        // template.css
        $file = Path::find(array(
            JPATH_SITE . '/templates/' . $template . '/css',
            JPATH_SITE . '/media/templates/site/' . $template . '/css',
        ), $name);

        if ($file) {
            // make relative
            $file = str_replace(JPATH_SITE, '', $file);

            // remove leading slash
            $file = trim($file, '/');

            return $file;
        }

        return false;
    }

    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        // already processed by a framework
        if (!empty($files)) {
            return false;
        }

        if ($template->parent) {
            foreach (array('template.css', 'user.css') as $name) {
                $file = $this->findFile($template->parent, $name);

                if ($file) {
                    $files[] = $file;
                }
            }
        }

        foreach (array('template.css', 'user.css') as $name) {
            $file = $this->findFile($template->name, $name);

            if ($file) {
                $files[] = $file;
            }
        }
    }
}
PK~!]�b

templates/gantry.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class WfTemplateGantry extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        $path = JPATH_SITE . '/templates/' . $template->name;

        // not a gantry template
        if (!is_dir($path . '/gantry') && !is_file($path . '/gantry.config.php')) {
            return false;
        }

        $name = substr($template->name, strpos($template->name, '_') + 1);

        // try Gantry5 templates
        $gantry5 = $path . '/custom/css-compiled';
        $gantry4 = $path . '/css-compiled';

        if (is_dir($gantry5)) {
            // update url
            $url = 'templates/' . $template->name . '/custom/css-compiled';

            // editor.css file
            $editor_css = $gantry5 . '/editor.css';

            // check for editor.css file
            if (is_file($editor_css) && filesize($editor_css) > 0) {
                $files[] = $url . '/' . basename($editor_css);
                return true;
            }

            // load gantry base files
            $files[] = 'media/gantry5/assets/css/bootstrap-gantry.css';
            $files[] = 'media/gantry5/engines/nucleus/css-compiled/nucleus.css';

            $items = array();
            $custom = array();

            $list = glob($gantry5 . '/*_[0-9]*.css');

            foreach ($list as $file) {
                if (strpos(basename($file), 'custom_') !== false) {
                    $custom[filemtime($file)] = $file;
                } else {
                    $items[filemtime($file)] = $file;
                }
            }

            if (!empty($items)) {
                // sort items by modified time key
                ksort($items, SORT_NUMERIC);

                // get the last item in the array
                $item = end($items);

                $path = dirname($item);
                $file = basename($item);

                // load css files
                $files[] = $url . '/' . $file;
            }

            // load custom css file if it exists
            if (!empty($custom)) {
                // sort custom by modified time key
                ksort($custom, SORT_NUMERIC);

                // get the last custom file in the array
                $custom_file = end($custom);
                // create custom file url
                $files[] = $url . '/' . basename($custom_file);
            }
        }

        if (is_dir($gantry4)) {
            // update url
            $url = 'templates/' . $template->name . '/css-compiled';
            // load gantry bootstrap files
            $files[] = $url . '/bootstrap.css';

            $items = array();

            $list = glob($gantry4 . '/master-*.css');

            if (!empty($list)) {
                foreach ($list as $file) {
                    $items[filemtime($file)] = $file;
                }

                // sort by modified time key
                ksort($items, SORT_NUMERIC);

                // get the last item in the array
                $item = end($items);

                // load css files
                $files[] = $url . '/' . basename($item);
            }
        }
    }
}
PK~!]O��X��templates/yootheme.phpnu&1i�<?php

/**
 * @copyright   Copyright (C) 2021 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class WfTemplateYootheme extends CMSPlugin
{
    public function onWfGetTemplateStylesheets(&$files, $template)
    {
        $path = JPATH_SITE . '/templates/' . $template->name;

        // not a yootheme template
        if ($template->name != 'yootheme') {
            // not a warp template
            if (!is_dir($path . '/warp')) {
                return false;
            }
        }

        // legacy "warp" templates
        if (is_dir($path . '/warp')) {
            $file = 'css/theme.css';

            $config = $path . '/config.json';

            if (is_file($config)) {
                $data = file_get_contents($config);
                $json = json_decode($data);

                $style = '';

                if ($json) {
                    if (!empty($json->layouts->default->style)) {
                        $style = $json->layouts->default->style;
                    }
                }

                if ($style && $style !== 'default') {
                    $file = 'styles/' . $style . '/css/theme.css';
                }
            }

            // add base theme.css file
            if (is_file($path . '/' . $file)) {
                $files[] = 'templates/' . $template->name . '/' . $file;
            }

            // add custom css file
            if (is_file($path . '/css/custom.css')) {
                $files[] = 'templates/' . $template->name . '/css/custom.css';
            }
        }

        // youtheme pagebuilder
        if ($template->name == 'yootheme') {
            $files[] = 'templates/' . $template->name . '/css/theme.css';

            // add custom css file
            if (is_file($path . '/css/custom.css')) {
                $files[] = 'templates/' . $template->name . '/css/custom.css';
            }
        }
    }
}
PK~!]�2:�src/PluginTraits/FormTrait.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Editors.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Plugin\System\Jce\PluginTraits;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Form;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Uri\Uri;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * Handles the onDisplay event for the JCE editor.
 *
 * @since  2.9.70
 */
trait FormTrait
{
    /**
     * Transforms the field into a DOM XML element and appends it as a child on the given parent.
     *
     * @param   stdClass    $field   The field.
     * @param   DOMElement  $parent  The field node parent.
     * @param   Form        $form    The form.
     *
     * @return  DOMElement
     *
     * @since   3.7.0
     */
    public function onCustomFieldsPrepareDom($field, \DOMElement $parent, Form $form)
    {
        if ($field->type !== 'mediajce') {
            return;
        }

        // media will be loaded by JCE Pro
        if (PluginHelper::isEnabled('system', 'jcepro')) {
            return;
        }

        $document = Factory::getDocument();

        // load scripts and styles for core JCE Media field
        HTMLHelper::_('jquery.framework');

        $option = Factory::getApplication()->input->getCmd('option');
        $component = ComponentHelper::getComponent($option);

        $document->addScriptOptions('plg_system_jce', array(
            'context' => (int) $component->id,
        ), true);

        $document->addScript(Uri::root(true) . '/media/com_jce/site/js/media.min.js', array('version' => 'auto'));
        $document->addStyleSheet(Uri::root(true) . '/media/com_jce/site/css/media.min.css', array('version' => 'auto'));
    }
}
PK~!]���k��src/PluginTraits/EventTrait.phpnu&1i�<?php
/**
 * @package     JCE
 * @subpackage  Editors.Jce
 *
 * @copyright   Copyright (C) 2005 - 2023 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (c) 2009-2024 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Plugin\System\Jce\PluginTraits;

use Joomla\CMS\Factory;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * Handles the onDisplay event for the JCE editor.
 *
 * @since  2.9.70
 */
trait EventTrait
{
    private function getDummyDispatcher()
    {
        $app = Factory::getApplication();

        if (method_exists($app, 'getDispatcher')) {
            $dispatcher = Factory::getApplication()->getDispatcher();
        } else {
            $dispatcher = JEventDispatcher::getInstance();
        }

        return $dispatcher;
    }

    private function bootCustomPlugin($className, $config = array())
    {
        if (class_exists($className)) {
            $dispatcher = $this->getDummyDispatcher();

            // Instantiate and register the event
            $plugin = new $className($dispatcher, $config);

            if ($plugin instanceof \Joomla\CMS\Extension\PluginInterface) {
                $plugin->registerListeners();
            }
        }
    }

    public function onBeforeWfEditorLoad()
    {
        $path = JPATH_PLUGINS . '/system/jce';

        $items = glob($path . '/templates/*.php');

        foreach ($items as $item) {
            $name = basename($item, '.php');

            $className = 'WfTemplate' . ucfirst($name);

            require_once $item;

            $this->bootCustomPlugin($className);
        }
    }
}
PK~!]�D�		forms/updates.xmlnu&1i�<?xml version="1.0" encoding="utf-8"?>
<config>
    <fieldset name="updates" label="WF_PREFERENCES_UPDATES">
        <field name="updates_key" type="password" size="50" default="" label="WF_UPDATES_KEY" description="WF_UPDATES_KEY_DESC" />
    </fieldset>
</config>PK�s!]���s��0editor-toc/language/fr-FR/plg_jce_editor-toc.ininu&1i�PK�s!]>ޤPP4Reditor-toc/language/fr-FR/plg_jce_editor-toc.sys.ininu&1i�PK�s!]�#o,,$editor-toc/language/fr-FR/index.htmlnu&1i�PK�s!]�#o,,�editor-toc/language/index.htmlnu&1i�PK�s!]�#o,,	editor-toc/index.htmlnu&1i�PK�s!]�#o,,q	filesystem-server/index.htmlnu&1i�PK�s!]�#o,,+�	filesystem-server/language/fr-FR/index.htmlnu&1i�PK�s!]��%��>p
filesystem-server/language/fr-FR/plg_jce_filesystem-server.ininu&1i�PK�s!]�k��Bhfilesystem-server/language/fr-FR/plg_jce_filesystem-server.sys.ininu&1i�PK�s!]�#o,,%�filesystem-server/language/index.htmlnu&1i�PK�s!]R�� ��Dreditor_fontawesome/language/fr-FR/plg_jce_editor_fontawesome.sys.ininu&1i�PK�s!]�J���@{editor_fontawesome/language/fr-FR/plg_jce_editor_fontawesome.ininu&1i�PK�s!]�#o,,,�editor_fontawesome/language/fr-FR/index.htmlnu&1i�PK�s!]�#o,,&editor_fontawesome/language/index.htmlnu&1i�PK�s!]�#o,,�editor_fontawesome/index.htmlnu&1i�PK�s!]���0
editor-svg/language/fr-FR/plg_jce_editor-svg.ininu&1i�PK�s!]����4editor-svg/language/fr-FR/plg_jce_editor-svg.sys.ininu&1i�PK�s!]�#o,,$J editor-svg/language/fr-FR/index.htmlnu&1i�PK�s!]�#o,,� editor-svg/language/index.htmlnu&1i�PK�s!]�#o,,D!editor-svg/index.htmlnu&1i�PK�s!]�#o,,%�!editor_codesample/language/index.htmlnu&1i�PK�s!]`�{B6"editor_codesample/language/fr-FR/plg_jce_editor_codesample.sys.ininu&1i�PK�s!]N���

>�$editor_codesample/language/fr-FR/plg_jce_editor_codesample.ininu&1i�PK�s!]�#o,,+6*editor_codesample/language/fr-FR/index.htmlnu&1i�PK�s!]�#o,,�*editor_codesample/index.htmlnu&1i�PK�s!]r�_F��B5+popups-widgetkit2/language/fr-FR/plg_jce_popups-widgetkit2.sys.ininu&1i�PK�s!]�#o,,+m.popups-widgetkit2/language/fr-FR/index.htmlnu&1i�PK�s!]�^[�>�.popups-widgetkit2/language/fr-FR/plg_jce_popups-widgetkit2.ininu&1i�PK�s!]�#o,,%r4popups-widgetkit2/language/index.htmlnu&1i�PK�s!]�#o,,�4popups-widgetkit2/index.htmlnu&1i�PK�s!]�#o,,k5editor-ipa/index.htmlnu&1i�PK�s!]�#o,,�5editor-ipa/language/index.htmlnu&1i�PK�s!]}�.�@@0V6editor-ipa/language/fr-FR/plg_jce_editor-ipa.ininu&1i�PK�s!]�#o,,$�8editor-ipa/language/fr-FR/index.htmlnu&1i�PK�s!]�.��4v9editor-ipa/language/fr-FR/plg_jce_editor-ipa.sys.ininu&1i�PK�s!]�#o,,�;filesystem-s3/index.htmlnu&1i�PK�s!]�#o,,!V<filesystem-s3/language/index.htmlnu&1i�PK�s!]�#o,,'�<filesystem-s3/language/fr-FR/index.htmlnu&1i�PK�s!]w#?�

6V=filesystem-s3/language/fr-FR/plg_jce_filesystem-s3.ininu&1i�PK�s!]��66:�Gfilesystem-s3/language/fr-FR/plg_jce_filesystem-s3.sys.ininu&1i�PK�s!]�#o,,bJeditor_chatgpt/index.htmlnu&1i�PK�s!]�#o,,"�Jeditor_chatgpt/language/index.htmlnu&1i�PK�s!]�-���<UKeditor_chatgpt/language/fr-FR/plg_jce_editor_chatgpt.sys.ininu&1i�PK�s!]�#o,,(�Meditor_chatgpt/language/fr-FR/index.htmlnu&1i�PK�s!]�R���8"Neditor_chatgpt/language/fr-FR/plg_jce_editor_chatgpt.ininu&1i�PK�s!]�#o,,pfeditor_aia/index.htmlnu&1i�PK�s!]��		��4�feditor_aia/language/fr-FR/plg_jce_editor_aia.sys.ininu&1i�PK�s!]١n���02ieditor_aia/language/fr-FR/plg_jce_editor_aia.ininu&1i�PK�s!]�#o,,$m~editor_aia/language/fr-FR/index.htmlnu&1i�PK�s!]�#o,,�~editor_aia/language/index.htmlnu&1i�PK�t!],�z���gjce.phpnu&1i�PK�t!]�V2��/�jce.xmlnu&1i�PK�|!]��Q�$`$`%�install.pkg.phpnu&1i�PKg}!]]3KΩ�!��src/PluginTraits/DisplayTrait.phpnu&1i�PKg}!]\u�{II$�src/PluginTraits/XTDButtonsTrait.phpnu&1i�PKg}!]��[k	k	src/Extension/Jce.phpnu&1i�PKg}!]�(�XX�"services/provider.phpnu&1i�PKg}!]q��}uul(layouts/editor/jce.phpnu&1i�PK~!](�x���',templates/wright.phpnu&1i�PK~!]<&×�a0templates/joomlart.phpnu&1i�PK~!]�>..>5templates/helix.phpnu&1i�PK~!]7EԌ^	^	�:templates/astroid.phpnu&1i�PK~!]����RDtemplates/sun.phpnu&1i�PK~!]�_4_���Itemplates/core.phpnu&1i�PK~!]�b

�Otemplates/gantry.phpnu&1i�PK~!]O��X���\templates/yootheme.phpnu&1i�PK~!]�2:�esrc/PluginTraits/FormTrait.phpnu&1i�PK~!]���k��rmsrc/PluginTraits/EventTrait.phpnu&1i�PK~!]�D�		�tforms/updates.xmlnu&1i�PKEE�u