Home |  | Sign in | English US
Published by dotnuts
in the category Tools
New features
For Windows 8 workstations, there may be write rights issues on the working folder you choose. In this case, choose the "temp" subfolder of the project (executable). The one in which the file "tinymce" containing the javascript files must be deposited.
Fixed a bug when opening the parameters of the TinyMCE window by the "CFI_TinyMCE.OpenSettings ()" function. This problem seemed to occur only when using the component in a different version than the 21 of WINDEV.
1.0 Al:
Compatibility with TinyMCE 4.7.4 and JQuery 1.12.4
Improved code display with the internal method.
Fix the "file picker" to import a media in the page, with the native method.
Fixed a dialog malfunction between the component and TinyMCE when there are multiple internal windows open.
Retrieving and restoring all properties, when opening a media in the library window, internal method.
Added functionalities for reading and retrieving a (complete) internet page. Analysis of the code to separate the code body from the rest of the page, as well as the scripts, and import styles into TinyMCE to ensure the correct display of the page.
Added functionality to close a page.
1.0 Ak:
Corrected a malfunction when assigning a code containing base64 images. After version 4.4.3 of TinyMCE, when you pasted a code with base64 images, TinyMCE transformed them with a json string. A modification to version 1.0Aj has been made for base64 images to be physically created, and to assign a real access path to the image.
In some processing of your programs, you need to control the closing of the window (containing an internal TinyMCE window). When closing the window, the code for closing the internal windows is done before the window closure code itself, which causes the internal window to close without closing your window ( ReturnToCapture(MyWindow..name) ). It is now possible to lock the internal TinyMCE window(s) by a simple call to the function (CFI_TINYMCE, SetCanCloseWindow (boolean)).
You can also customize the message that will be displayed if the internal TinyMCE window is not unlocked by calling the method Tiny.SetEditorMessageWhenLocked("Message").
1.0 Aj:
Now, when assigning code to TinyMCE, the component changes the relative paths of the sources that are contained therein, by the real path (directory defined for the media, by the user) so that the display remains correct.
1.0 Ai:
Fixed a problem compressing javascript code when not in test mode.
1.0 Ah:
Visual enhancement of selections, for configuration of TinyMCE. This allows more space for future developments.
Added a callback procedure to modify the image (being modified), by another component or program of your choice.
Added a callback procedure to print the page with your own method.
Added a method to change the relative path at any time.
Deletion of the enumeration in the configuration structure, for the mode of operation of the backup. The "Save" button will appear only if the plugin "Save" is selected, and the backup callback procedure is informed.
1.0 Ag:
The component is based on the plugins installed in the subdirectories, to list / activate them, and also to build its own menus.
Improved media window.
Activate documents (pdf, flash) in the media window.
Changing the graphic appearance of images in the media window.
Activation of the "InLite" model and the "Inline" mode for the appearance of the TinyMCE.
The component is compatible with version 4.6.4 of TinyMCE.
It is possible to define a callback procedure for saving the page.
Possible to create its own code templates, and CSS code, in the configuration window.
1.0 Af:
The temporary file change is operational. The call to the function must be made in the initialization code of the project or window that contains the internal TinyMCE window (s).
It is no longer possible to do Drag & Drop since exploring it on TinyMCE.
Added the upload button, on the native dialog, to insert an image.
To add a media, by the internal mode (Librairie des Médias), the window allows to view in different tab, the images, sounds, and videos.
Fixed the problem that could return a black image, when modified by the media library.
1.0 Ae:
It is possible to change the temporary working folder of the component.
For projects that do not have a defined style, the component will create a default style for viewing error messages.
If your project uses French-Canadian, the component will download the file of the French language.
1.0 Ad:
Improved communication with TinyMCE.
The ActiveX "WebBrowser", which displays TinyMCE content, automatically switches to the current (installed) version of your IE / Edge browser.
With the passing of your current version of your browser, visual content, better meets the standard that you want to see.
1.0 Ac :
Fixed a bug on constructing properties of parameterization elements.
1.0 Ab :
Fixed problem on interpretation javascript code (compressed) generated in executable mode.

This WINDEV component allows you to edit your web pages, thanks to TinyMCE in your WINDEV applications.
It may be useful to have a back-office application in WINDEV to manage the content of your web pages, or simply to create an application that needs to have web content, for example to generate an HTML email. Or simply to replace the native field "Input in HTML", which offers very little possibility in the toolbar.

This component allows to translate all the images included in the code, in the Base64 format. This allows portability of the code anywhere.
A lot of functionality, like "preview", "code", "image and media", "color", can use windows, internal to the component, in order to have a better rendering.
This component is not yet fully finalized, but works correctly in one of my ERP projects, which I use for creating emailing templates.

The zip file contains the component, but also a folder "tinymce" with the file of TinyMCE, as well as the file "jquery.js". These files are required for the proper functioning of the component. The folder "tinymce" must be in the directory of your executable.
You can change the TinyMCE or jQuery version, but the component was developed with the versions included in the zip file.

Do not hesitate to submit your remarks or suggestions, in order to improve the product.
Illustrations, screen shots
User reviews
(To evaluate this resource, click 'Write a review')
Ouf ça y est cela marche.
Problème avec un autre composant qui ouvrait des page html ....
Même problème sur un projet tournant en 32 bits mais un PC windows 10 64 bits ....

Le plus étonnant est que le projet démo fonctionne !!!

Le projet est en ANSI mais cela n'empêche pas le chargement d'un composant UNICODE ......
merci pour ce composant, il correspond tout à fait à ce dont j'ai besoin.
Toutefois j'aimerais l'utiliser dans une application 64 bits et je n'y parviens pas, le composant TiyMCE signale toujours qu'un élément est absent. Est-ce possible ?
Une nouvelle version a été mise en place.
Elle corrige un bug sur l'ouverture des paramètres d'une fenêtre TinyMCE.
Et le composant est compatible avec les versions 8 de Windows, il faut juste faire attention avec le dossier de travail, si celui-ci a les droits suffisant en écriture (voir Nouveautés sur la version 1.0 AM).
Vous pouvez également télécharger un projet test (version 23) pour voir le fonctionnement du composant.
Bonjour et merci pour ton composant.

Il tourne bien sur les machines en windows 10 par contre j'ai un petit soucis avec les postes en windows 8 qui affichent une zone de saisie windev "standard" vide à la place du composant.
Quelqu'un a t'il déjà eu ce problème ?

Merci d'avance pour ta réponse.
Bonjour DrakeQC,

Ravi que le composant fonctionne correctement pour toi.
Effectivement, j'ai dû procéder à quelque modification pour récupérer et réaffecter les propriétés non conventionnelles.
Il en est de même pour les images apparaissant comme non affichées (carré blanc avec une croix rouge). Il m'a fallut encore rusé pour que cela fonctionne entre la version native et la communication avec le composant.

Je pense que pour le moment, le composant est plus qu'opérationnel, même s'il reste encore des ajouts à faire.
Bonjour Luc,

J'ai mis à jour ma version la librairie des médias TinyMCE semble fonctionner à merveille. Un grand merci pour ça.

Pour le second problème effectivement il ne semble plus survenir peut-être avait-je oublier de mettre à jour mon composant.

Pour les propriétés il semblerait qu'elles conservent leur intégrité même après l'édition du média.

Merci pour la nouvelle version du composant.

Bonjour Drake,

Pour le premier problème "Librairie des médias -> TinyMCE", je l'avais également constaté. Mais malheureusement, bien que le code javascript utilisé pour visualiser la boîte de dialogue (native) des médias, provienne directement des recommandations de TinyMCE, le problème est toujours là. J'ignore pour le moment ce qui est possible de faire pour y remédier.

Pour le second problème "empty_3.png", il me semble que le problème avait été réglé. Il faudrait voir si tu travailles bien avec la dernière version 1.0Ak. Il faut savoir que le système natif de TinyMCE stock les médias dans des blobs. Et pour le moment, je n'ai pas trouvé de solution (code) pour récupérer les médias dans les blobs pour les transférer sous forme Base64 ou fichier.

Si tu préfères cette solution, car "plus permissive", serait-ce parce que après validation de l'édition d'un média, certaines propriétés disparaissent ? Dans ce cas, j'y pense depuis quelques temps, mais pour le moment le temps me manque.

Bonjour Luc

J'utilise beaucoup ton composant pour faire des modèles HTML pour envoi de mails.
Cependant j'ai remarqué un petit hic qui survient par moments.

Lorsque ma configuration est réglée sur: * librairie des medias -> Tiny Mce
Quand j'ajoute une image tout d'abord il me faut cliquer sur une première image la valider et l'éditeur ne l'ajoute pas (la conversion en base64 ne se fait pas le chemin de l'image reste vide...)
Ensuite, je refais la manipulation, je sélectionne une autre image et là le chemin change bien pour l'image en base 64.
Par la suite mon image reste affichée quelques secondes puis disparaît...
Je re clique sur le lien du média pour vérifier la source et la source est maintenant un chemin qui finit par .empty__3 Png"} qui mène vers le dossier dans lequel tinymce travaille sur mon poste.

Y as t'il un moyen de remédier au problème ?
Je n'ai pas ce genre de problème lors de l’utilisation de la librairie des médias en mode interne mais j'aime mieux l'autre configuration plus permissive.

Merci encore,
Votre composant est tout à fait ce qu'il me fallait !
Cependant je ne parviens pas à le configurer correctement :
- quand je sélectionne une image à intégrer par exemple, son chemin n'apparaît aps que le champ "Source" de l'outil image ...
- je ne parviens pas à récupérer le contenu html avec les images en base64
- j'aimerai que le répertoire des média soit celui de mon site internet, sur un serveur donc ... je ne vois pas comment tinyMCE peu afficher le contenu d'un dossier spécifique de mon site web, il faut alors pouvoir uploader des images dans ce dossier
- sinon si j'utilise une image de mon pc j'aimerai qu'elle soit uploadée dans le dossier du site lors de l'enregistrment
Merci par avance pour votre aide précieuse et encore bravo, c'est top !
P.S. : si vous aviez un projet windev 22 pouvant servir de base ... ;-)
Merci pour cette nouvelle version tout est fonctionnel!
Bonne continuation Luc.
Bonjour Luc,

Effectivement mon projet est en ANSI.

J'utilise maintenant les fonctions WD suivantes:
//Pour enregistrement depuis TinyMCE
id = fOuvre("cheminFichier",foUnicode+foCreation)
//Pour charger le contenu vers TinyMCE
CFI_NomDuChamp = fChargeTexte("cheminFichier",foUnicode)
Malgré ces changements mon problème persiste.

Il semblerait que j'ai trouvé d'où viens mon problème.
j'ai créé une seconde fenêtre interne de TinyMCE et l'affichage du même contenu html se fait correctement (images visibles et bien placées).
Je pense alors que mon problème vient de la configuration de TinyMCE.
En effet lorsque je désactive le plugin "Image" de TinyMCE (dans ma première fenêtre) et que je recharge mon contenu, l'affichage des images se fait correctement.
Cependant je perds la fonctionnalité d'ajout d'image que j'utilise beaucoup avec ce composant...
Aussi j'ai remarqué lorsque l'affichage n'est pas bon, TinyMCE modifie la source de mon image pour le chemin finissant par le dossier temp que TinyMCE utilise exemple: (...\temp\empty_3.png).
Mais, lorsque je navigue jusqu'au dossier aucune image (empty_3.png) n'est existante dans ce dossier.
Mon problème viendrait-il du fait que mes images pointent sur cette source inexistante ?

Nb: Ces images sont normalement stockées en base64 graces à la fonction de conversion de TinyMCE CFI_NomDuGetPage(*,vrai)

Bonjour Drake,

J'ai pu reproduire ton problème, lors de l'affectation du code HTML dans le TinyMCE, contenant des images en Base64.
Dans la nouvelle version mise en place (1.0Ak), j'ai apporté une correction, déjà mise en place dans la version précédente (1.0Aj), qui remplaçait les chemins relatifs des sources.

Mais lorsque la source était une image en base64, le moteur natif de TinyMCE, les transformaient en une chaine étrange, contenant également une chaine jSON. Cela ce produit après la version 4.4.3 de TinyMCE.

Pour y remédier, dans cette dernière version (1.0Ak), les images en base64 sont physiquement recréées (dans le dossier temporaire définit par l'utilisateur), et c'est le chemin d'accès aux fichiers qui est remplacé dans le code.

J'y ai fait différent test, et tout semble bien fonctionner.

Le composant travail en Unicode, est-ce que ton projet, lui, est un Ansi ?
Si cela est le cas, il faut voir la différence dans les caractères de l'image en Base64, s'il n'ont pas été traduit.
Par exemple :
- Si tu utilises une variable chaîne ansi pour récupérer le contenue du tiny qui lui retourne le code en unicode.
- Si le fichier html, a été enregistré ( fSauveTexte() voir l'option du format d'enregistrement) en ansi, alors que le code était en unicode ( voir aussi fChargeTexte et son option de format).

Si toutes les images contenues dans le code, sont retournées en Base64, et seulement un certain nombre, mais pas toutes, ne sont plus visibles lors de son ré-affichage, c'est que le code Base64 de ces dernières sont corrompue, par le transfert ANSI -> UNICODE.
Cela ce produit très certainement lors de l'ouverture du fichier html pour l'affectation du contenue au TinyMCE:
Ce qui n'est pas le cas lorsque tu demandes l'ouverture directement dans le navigateur, car lui travail aussi bien au ansi qu'en unicode, et le changement est automatique.

Le composant lui, travail uniquement en unicode, et il ne peut pas savoir que le code fournit est en ansi, et encore mois savoir qu'une image est devenue non valide. Sinon il faudrait que je fasse, lors de la lecture du code pour trouver les images, les enregistrer pour les ré-affecter à une variable de type image, afin de savoir si elles sont toujours valides. Et là on perd en rapidité. Mais cela peut être une option, qui peut être activé à la demande. Faut voir.

Essaye de bien vérifier les conversions ANSI -> UNICODE, et vise-versa, afin d'éliminer les doutes.

Re Luc,

Oui je comprends bien la différence entre l'ouverture du fichier depuis le navigateur et l'affectation du code html depuis le fichier vers tinymce.
Cependant le fichier html dont je parle (qui s'affiche correctement dans le navigateur) est constitué uniquement d'image en base 64.
Ce code html est obtenu par la fonction de tinymce "CFI_NomDuChampFenêtreInterne.GetPage(*,Vrai)" que j'enregistre ensuite grace à la fonction sauvetexte() de WD.
On dirait que mon problème se trouve à la lecture d'un fichier html qui contient des images en base 64 finalement.

j'avais déjà essayé de pallier à mon problème d'affichage d'image en recopiant mes images associées au fichier html dans le dossier temporaire dans lequel tinymce travail mais sans succés pour ma part.
De plus, j'aime finalement mieux enregistrer mes images au format base 64 pour m'assurer que celle-ci ne soit pas mal affichées si j'envoi ce contenu dans un email par exemple.

Re Luc,

Non, je ne fais aucune autre affectation après celle-ci voici exactement ce que je fais:

sHTML est chaîne = fChargeTexte("cheminDuFichierHtml")

J'exécute ce code dans l'événement de sélection d'une ligne d'un combo.

Merci à toi pour le support.
Re-Bonjour Drake,

En re-lisant ton message précédent, je m'aperçois d'un truc.
Il ne faut pas confondre l'ouverture d'un fichier html (dans un navigateur) et l'affectation du contenue du dit fichier html, dans TinyMCE.
L'ouverture du fichier dans le navigateur, ce fait à l'emplacement du fichier. De ce faite, si l'accès aux sources (fichiers images, ...) est relatif à l'emplacement du fichier html, cela n'est pas du tout le cas avec TinyMCE. Le composant travail dans le répertoire temporaire (par défaut du composant, ou celui définit par l'utilisateur), de ce faite les chemins relatifs ne peuvent plus fonctionner (pour l'instant).
Il y aurait la possibilité d'affecter la variable (TinyMCE) "basepath" ou "baseurl", mais cela risque de causer des problèmes au code. Car tout ajout de source, TinyMCE changerait de lui-même les chemins d'accès, pour construire les chemins relatifs correspondant à l'emplacement du fichier (code html) avec les répertoires des sources.

De ce faite, depuis ton message de l'autre jour, j'ai commencer à apporter une fonctionnalité qui changera les chemins relatifs des sources, par le chemin réel du fichier, correspondant au répertoire (ou sous-répertoire) des médias, définit par l'utilisateur.
Si la source n'est pas trouvée dans l'un des répertoires médias, le chemin relatif n'est pas modifié.
Ce qui implique que toutes les sources doivent être stockées dans l'un des répertoires, sous-répertoires, des médias définit par l'utilisateur.

Mais le composant à ses limites. Il ne peut pas deviner si l'un des fichiers est en dehors du/des répertoires des médias.
S'il y a plusieurs lieux de stockage de médias, le composant n'en gère qu'un seule. De ce faite l'utilisateur doit de lui-même modifier les chemins relatifs des sources qui sont en dehors du répertoire des média définit par l'utilisateur, avant de faire l'affectation du code au composant.

J'espère avoir apporté plus d'explication aux éventuelles problèmes.
Bonjour Drake,

Je vais voir pour reproduire le problème, et trouver une solution.
Mais dans l'immédiat je me pose une question, est-ce lorsque tu fais l'affectation du contenue html au champ interne, est-ce la dernière instruction qui est faite au champ interne, ou y a-t'il encore une autre instruction, immédiatement après l'affectation ?
Si oui, lesquelles ?

Merci pour l'intérêt porté au composant.
Bonjour Luc,

Merci pour ces infos effectivement j'utilise souvent la fonction "CFI_NomDuChampFenêtreInterne.GetPage(*,Vrai)" elle fonctionne à merveille.
Cependant si j'enregistre mon code HTML dans un fichier texte (extension ".html") et que je recharge ce fichier depuis tinymce via l'affectation suivante: "CFI_NomDuChampFenêtreInterne = fChargeTexte("cheminDeMonFichier.html")"

Le fichier se charge pendant une fraction de seconde mes images sont affichées correctement puis,
1) les images disparaissent
2) Seules les descriptions d'images sont affichées
3) La dernière image contenue dans mon html "se clone" et s'affiche à sa taille réelle juste après la dernière image du document html.

Nb: Cependant si j'ouvre ce même document html dans le navigateur tout le contenu est affiché correctement.

J'ai essayé de charger mon HTML dans une variable de type string, buffer (avec la fonction "fChargeBuffer") mais, rien n'y fait.

Je comprends bien que le composant n'est pas encore final (bêta) mais, je trouve ce composant quand même bien plus puissant que les champs HTML que propose WD22.

Cordialement Drake
Bonjour Drake,

Il faut voir la documentation PDF du composant.

En page 3, plusieurs méthodes sont possible pour récupérer le code de la page.
Cela dépend des besoins de chacun.
Par exemple, récupérer le code avec les images en Base64 est un bon moyen pour l'emailing.

MonCodeHTML = CFI_NomDuChampFenêtreInterne // Récupération du code brute
MonCodeHTML = CFI_NomDuChampFenêtreInterne.GetPage() // Récupération du code nettoyé
MonCodeHTML = CFI_NomDuChampFenêtreInterne.GetPage(*,Vrai) // Récupération du code nettoyé. Les images sont au formats Base64.
MonCodeHTML = CFI_NomDuChampFenêtreInterne.GetPage(Vrai) // Récupération du code nettoyé. Les images sont placées à la base du répertoire.
MonTableauChaîne = CFI_NomDuChampFenêtreInterne.GetMediaFiles() // Récupération des sources (Chemin et nom des fichiers), après avoir fait une demande de récupération de la page.

Pour ce qui est de l'affectation du code au TinyMCE, il est vrai que pour l'instant, le composant ne remplace pas les chemins relatifs des sources, par le chemin d'accès au répertoire des médias.
Il ne faut pas oublier que le composant est toujours en version de test (beta).
Mais je vais y remédier au plus vite.

Bonjour Luc,

J'ai un peu de mal par moments avec les images dans tinymce.

- J'ajoute une image, tinymce la convertit en base64.
- Je sauve mon HTML dans un fichier.
- Je charge mon HTML (depuis le fichier) vers tinymce et l'image base64 ne s'affiche plus...
- Je clique droit sur l'image pour vérifier la source et la source est maintenant (.../MonRepTemp/empty__3 png)

As-tu une idée d'où pourrait venir mon problème ?

Bonjour Drake,

Désolé pour le problème Unicode, mais pour ma part je développe toujours en Unicode, car un projet est tout de même censé être utilisé pour des personnes qui n'utilise pas forcément que du texte (lettres) occidental (copie d'un text asiatique ou autre à coller dans un champ de saisie, etc...).

Pour ce qui est de l'image, il est vrai que j'ai également constaté ce problème. Mais il est plus dû à un problème de latence que je n'arrive pas à mettre la main dessus. Car il faut bien comprendre la complexité du composant.

Le composant communique avec une page internet, en surveillant le contenue d'une balise qui contient soit une demande d'instruction, soit le contenu à ajouter en retour. Et la page internet fait de même pour déposer la demande et attendre la réception pour la placer dans le contenue TinyMCE.

Il est dont extrêmement difficile de faire du débogage, puisque dans ce contexte, on ne peut pas mettre de point d'arrêt dans le code javascript et dérouler les instructions.

Je ne désespère pas de mettre la main, un jour, dessus et y remédier. Mais pour l'instant, l'essentiel fonctionne.

Bonjour Luc,

Un grand merci pour avoir résolu mon problème, cependant mon projet étant déjà bien avancé, je ne peux me permettre de le passer en Unicode pour le moment. Cependant, je le prendrais en considération pour mes futurs projets.

Aussi j'ai remarqué un petit "bug" au niveau de l'ajout d'image dans tinymce, souvent lorsque je fais l'ajout d'une image en allant sélectionner mon fichier image, celui-ci ne la prend pas en compte à la première sélection. Il me faut donc choisir une autre image et ensuite revenir sur l'image que je voulait. Je ne sais pas si ce problème apparaît aussi de ton coté mais je te fais passer l'info.
Encore merci pour le support.

Bonjour Drake,

J'ai trouvé l'origine du problème.
Ton projet doit impérativement être déclaré en Unicode (et pas seulement une éventuelle déclaration d'une chaine).
J'ai fait le test entre un projet ANSI et Unicode, et l'erreur n'apparait que dans le cas où le projet n'est pas en Unicode.

Bonjour Drake,

J'ai vérifié le problème, et directement dans mon projet, le problème ne se pose pas.
Il semblerait que cela est propre lors de la communication entre un projet hôte et le composant (bug PCSoft).
Pour contourner le problème, tu peux directement passer par la structure de configuration pour affecter ton tableau de templates.

stMaConfig est un STTinyMCE_Settings

stMaCongif.Content.taTemplates = gtaTemplates

Je ferais encore d'autres testes afin de voir pour résoudre ce problème.
Sinon, il faut passer par l'interface de configuration du TinyMCE (composant), dans l'onglet "Modèle", et là tu peux créer tes modèles, contentant un code saisie ou lié sur un fichier de type (htm, html ou tpl)

Bonjour Luc,

Voici ce que je fais:

-Dans Déclarations globales de ma FEN

gtaTemplates is associative array of STTinyMCE_Templates

-Dans le code d'un bouton (test) dans ma FEN

sTemplate est une chaîne
stTemplate est un STTinyMCE_Templates

sTemplate = [

stTemplate.sDescription = "HTML"
stTemplate.sContent = sTemplate
gtaTemplates["TEMPLATE_1"] = stTemplate

et au passage du paramètre gtaTemplates à la dernière ligne j'obtient l'erreur:
Le passage du paramètre 1 a provoqué une erreur.
Un tableau associatif ne peut être recopié que dans un tableau associatif de même description (type des éléments, type des clés, options).

J'ai pourtant l'impression de faire les étapes comme tu me la indiqué me manque t'il quelque chose ?

Bonjour Drake,

Pour les templates, il y a deux solutions.
Soit directement par l'interface graphique de la configuration du TinyMCE, voir dans les illustrations de copies d'écran (image n°10).
Soit par programmation.
Par programmation, il faut créer une variable de tableau associatif de STTinyMCE_Templates, ainsi qu'une variable de structure basé sur ce même STTinyMCE_Template.
Paramétrer la structure selon vos besoins, puis affectez la au tableau associatif. La clé du tableau représente le nom du modèle.
Une fois que votre tableau est finalisé, alors vous pouvez affecter le tableau à la procédure SetTemplate.

Pour de plus amples explications, vous pouvez voir l'exemple qu'il y a à la page 5 de la documentation du composant, disponible à l'adresse suivante : http://www.dotnuts-development.com/produits/editeur-de-page-internet/

Bonjour Luc,

J'aimerais utiliser la fonctionnalité de template de tinymce, je créer alors un taTemplate que j'associe grace a la fonction SetTemplates(taTemplate) mais windev me génère l'exception suivante:

Le passage du paramètre 1 a provoqué une erreur.
Un tableau associatif ne peut être recopié que dans un tableau associatif de même description (type des éléments, type des clés, options).

Aurais-je loupé une étape ?

Bonjour Luc,

Je te remercie pour ta rapidité ainsi que l'exactitude de tes réponses.

Bonjour DrakeQC,

La dernière version en cours, sur le dépôt, est la version 1.0 Ai.
Elle corrige le problème du code javascript, qui est compression en mode exe.
Et le problème est là. Donc cette fonctionnalité est provisoirement annulé.

Pour ce qui est du plugin "Layer", comme pour les autres. Il est de la responsabilité de chaque utilisateur, de veiller à mettre tous les plugins qu'ils souhaitent utiliser. Je conseille de télécharger une version complete de TinyMCE (contenant tous les plugins de base), et d'activer ou non dans la configuration du composant.

Le composant fait une lecture du sous-dossier "plugins" de TinyMCE pour afficher les plugins présent et donc de permettre une activation ou non.

Luc Rollinger
Aussi, il semblerait q'il manque un plugin (Failed to load plugin: layer from url file:///C:/.../temp/tinymce/plugins/layer/plugin.min.js) cependant en rajoutant ce fichier en le prenant dans une version antérieur cela fonctionne bien.
Bonjour Luc,

Il semblerait qu'il y est un petit souci d'affichage je ne sais pas si c'est seulement dans la dernière version mais, j'ai fais le test avec deux version (1.0Ah) après la génération de l'exécutable la fenetre interne ne semble plus s'afficher correctement je n'ai donc plus accès au fonctionnalité de tinymce car la zone d'affichage est tronqué en haut a gauche de la fenetre interne on dirait...
Cependant avec la version (1.0Ac) seule version antérieur que j'avais sous la main, je n'ai pas ce problème lors de l'ouverture de mon exe.
En mode test par contre tout fonctionne parfaitement au niveau de l'affichage.
Aurait-tu une solution ?

Encore merci,
J'attendrais alors ta nouvelle version.
Bonne fin de journée Luc.
Bonjour DrakeQC,

Normalement, l'erreur citée " Erreur à la ligne 10 du traitement Destructeur (Composant 'TinyMCE'). Vous avez appelé la fonction ChampSupprime. ... " est corrigée dans la version en cours de finalisation (pas mis à disposition).
Les erreurs suivantes découles de la destruction de l'objet, demandé à la suite de " ChampSupprime ".
Re bonjour Luc,

Cependant quand j'appel la fonction CFI_TINYMCE.ResetTinyMCE(Vrai),
j'ai 2 erreurs qui s'affichent.
(peut importe que je passe des paramètres à la fonction ou non)

Erreur à la ligne 10 du traitement Destructeur (Composant 'TinyMCE').
Vous avez appelé la fonction ChampSupprime.
Le passage du paramètre 1 a provoqué une erreur.
Un champ n'a pas de sous-élément. L'opérateur '.' est interdit.

Projet : RPP_ExportMail
Composant : TinyMCE

Appel WL :
Traitement de 'Destructeur' (cWebBrowser.Destructeur), ligne 10, thread 0
Fonction 'ChampSupprime', syntaxe 0


Erreur à la ligne 32 du traitement Procédure globale SetDeleteObject (Composant 'TinyMCE').
Utilisation de MaFenêtre alors qu'il n'y a pas de fenêtre courante.

Projet :
Composant : TinyMCE

Appel WL :
Traitement de 'Procédure globale SetDeleteObject' (TinyMCE.SetDeleteObject), ligne 32, thread 0
Merci Luc pour ta réponse très rapide et pertinente !

J'ai pu m'aider grace à la fonction de déserialisation.

Bonne continuation et encore merci pour ce composant !
Bonjour DrakeQC et Nicolas,

Pour configurer le composant, vous avec l'appel à l'ouverture de la fenêtre de configuration ( CFI_TINYMCE.OpenSettings() ).
Actuellement, le choix des plugins (code, paste, image, ....), n'est pas encore opérationnel. Il le sera prochainement.
Pour l'instant un certains nombres de paramètres est possible, et à la sortie tous les plugins sont (listés dans le composant) sont mis en place, selon le choix qui est fait entre, interne, tinymce ou externe (si disponible).

CFI_TINYMCE.ResetTinyMCE(), n'est à utiliser que dans le cas d'une réactualisation de l'affichage du TinyMCE, avec/sans paramètres, et avec/sans contenu.

La forme normal, est soit par :
1. CFI_TINYMCE.Navigate() // Lance l'affichage de TinyMCE dans la fenêtre interne.
CFI_TINYMCE.OpenSettings() // Ouvre la fenêtre de paramétrage de TinyMCE, pour la fenêtre interne en cours. Et ré-affiche TinyMCE avec les nouveaux paramètres appliqués à l'affichage.
stSettings = CFI_TINYMCE.GetSettings() // Uniquement dans le cas où vous voulez conserver la structure.

2. CFI_TINYMCE.Navigate() // Lance l'affichage de TinyMCE dans la fenêtre interne. (Dans tous les cas)
CFI_TINYMCE.SetSettigs(stSettings) // Affectation d'une structure, récupéré soit par GetSettings(), soit par la fonction " Désérialise ".
CFI_TINYMCE.ResetTinyMCE(Vrai) // Ré-affiche TinyMCE en conservant les paramètres.

Vous pouvez en apprendre plus, soit en visionnant la documentation PDF du composant, à l'adresse suivante :

Ou directement à cette adresse :

Pour ce qui est de la sauvegarde, cela est pour l'instant libre à l'utilisateur final.
Plusieurs solutions est possible.

1. MaVariableChaîne = CFI_TINYMCE // Renvoie le code brute, avec les fichiers au format ( file://...) dans le code
2. MaVariableChaîne = CFI_TINYMCE.GetPage() // Renvoie le code avec les fichiers au format ( file://...) convertis au format réel.
3. MaVariableChaîne = CFI_TINYMCE.GetPage(Vrai) // Renvoie le code avec les liens d'images ne contentant que leurs noms et les fichier stockés dans le dossier temporaire définit par l'utilisateur.
4. MaVariableChaîne = CFI_TINYMCE.GetPage(*, Vrai) // Renvoie le code avec les images au format base64.
5. MaVariableChaîne = CFI_TINYMCE.GetPage(Vrai, Vrai) // Cet appel n'est pas autorisé, le dernier paramètre sera automatiquement mis à faux.

Les deux paramètres attendent un booléen.
Le premier permet de définir s'il ont veut déposer les fichiers dans le dossier temporaire (définit par l'utilisateur).
Le deuxième, permet définir s'il ont veut que les fichiers soit traduit en base64.

Pour l'instant, ses méthodes ne retournent pas de tableau de chaînes, contentant les chemins et noms des fichiers de liens.

Bien évidement, la sauvegarde est une solution envisageable. Il faudra que j'analyse la meilleur solution.
Mais je pense que ça sera un appel à une procédure callback (de votre coté), avec en paramètre, le code nettoyé, et un tableau des fichiers à récupérer. Pour le nettoyage, cela impliquera qu'il faudra, coté utilisateur, définir le chemin relatif.

Merci de vos remontés d'utilisation.
Bonjour Luc et félicitations pour ton travail sur ce composant.
Y a-t-il une possibilité d'exécuter le traitement d'un bouton à la sortie du champ de saisie (enregistrement) ?
Merci d'avance
Bonjour Luc je voudrais savoir quel est la démarche pour appliquer une configuration (settings) à TinyMCE en wlangage voici ce que j'ai essayé sans résultats concluant...

tabAddOn is array of 31 strings = ["anchor","preview","Code","paste","textcolor","emoticons","textpattern","legacyoutput","image","print","nonbreaking","insertdatetime","layer","link",...

stMaConfig is STArray

FOR i=1 _TO_ tabAddOn..Occurrence
stMaConfig.Items[i] = tabAddOn[i]

stSettings.Plugins = stMaConfig


Merci à vous, Lapalys.
C'est aussi grace à des personnes comme vous, que les produits évolues. Car il n'y a jamais qu'une seule façon d'exploiter un produit, n'y un seul contexte de travail. De plus ce composant m'est très utile, puisque je m'en sert dans un ERP que je développe.

N'hésitez pas à continuer à faire remonter des problèmes rencontrés avec ce composant, et aussi à faire partager vos idées afin de l'améliorer.

Luc Rollinger
Bonjour Luc

Merci pour cette réponse rapide et les modifications. J'arrive à avoir TinyMCE dans une fenêtre interne. L'autre erreur a disparue (sans doute arrangé par l'histoire de langue).

Bonne continuation
Bonjour Lapalys,

Ce composant n'utilise pas, que TinyMCE. Mais c'est une fenêtre interne qui visualise TinyMCE au travers d'un champ internet. Mais pour divers raisons, en cas d'erreur, un champ libellé d'affichage est créé pour les afficher. Il y a donc bien une raison au style.

Normalement, le composant utilise le style du projet en cours, tout simplement pour s'identifier graphiquement à votre environnement. Comme certains champs sont créés dynamiquement, afin qu'il ne soit pas possible d'y accéder directement (par exemple : FI_TINYMCE.NomDuChamp), il faut que les champs créés aient une apparence graphique correspondante à la votre. Ce problème est réglé, puisque le changement de style est englobé dans une exception. Si l'exception est déclenchée, alors on crée un style par défaut.

TinyMCE utilise uniquement un certain nombre de langue, le Français-Canadien n'en fait pas partie. Mais je l'ai ajouté, afin que le fichier de langue française soit utilisé (et téléchargé) par le composant. (Une connexion à internet est obligatoire, afin que les différentes langues puissent être téléchargées directement sur le site de TinyMCE).

Il est possible de changer le dossier temporaire de la façon suivante : Tiny.SetTempFolder("Chemin du dossier"). (Disponible dans la nouvelle version actuellement sur le dépôt)
Si le chemin passé en paramètre est vide, au non accessible, alors le composant utilisera le dossier temporaire par défaut (sous répertoire "temp" du dossier de l'exécutable).

Pour ce qui est de l'erreur " Erreur à la ligne 22 du traitement Méthode SpyQuery (Composant 'TinyMCE'). ", il me faudra plus d'explication. Car à cette ligne de code, le programme ne fait que récupérer le texte contenue dans une balise générée par le composant, afin de faire les traitements demandés.
Code de la ligne en question : " sCommand = pautObject>>Document>>getElementById("tinyQuery_" + NumériqueVersChaîne(:m_nUniqID))>>innerText "
Quelle action faite vous lors du déclenchement de l'erreur ?
Quel text passez-vous (si c'est le cas) qui a lieu avant le déclenchement de l'erreur ?
J'ai besoin de plus de détail, comme par exemple le code que vous avez écrit, si le déclenchement a lieu à ce moment là.

Luc Rollinger

Je n'arrive pas à faire fonctionner votre composant.

J'ai d'abord eu un problème de gabarit. Erreur à la ligne 33 du traitement Procédure locale SetInit (Composant 'TinyMCE'). Vous avez appelé la fonction ChangeStyle. Aucun gabarit n'est défini pour le projet. Vous devez spécifier le 3eme paramètre de changeSyle() (= le nom du fichier .wdy à utiliser). En effet, dans les paramètres du projet, j'ai pour "gabarit du projet"="<aucun>". J'ai mis celui "System" et je passe ce message. Je ne comprend pas en quoi le gabarit du projet influence ce composant qui utilise TinyMCE uniquement.

Ensuite, un toast rouge avec "Le chemin fourni n'est pas valide". Dans la trace, je trouve ceci
Erreur à la ligne 22 du traitement Méthode SpyQuery (Composant 'TinyMCE').
Erreur à la ligne 87 du traitement Méthode _DownloadLanguage (Composant 'TinyMCE'). Vous avez appelé la fonction fSupprime. Vous ne devez pas passer une chaîne vide à la fonction.
Erreur à la ligne 70 du traitement Méthode _DownloadLanguage (Composant 'TinyMCE'). Vous avez appelé la fonction zipOuvre. Le chemin fourni n'est pas valide.

Aucune idée de quoi ça parle. Pour info, la seule langue du projet est "français canadien". Des fichiers lngxxx.tmp sont bien créés dans le répertoire temp de l'exe (est-il possible de forcer ce répertoire ailleurs ?)

Merci d'avance pour vos conseils.
Je viens de mettre en place une nouvelle version, qui corrige un bug sur la construction des éléments de propriété.
De plus à l'adresse ci-dessous, vous trouverez la nouvelle version du document PDF, contenant les explications sur la composition de la structure (STTinyMCE_Settings) de paramétrage.


Luc Rollinger
Je viens de me re-pencher sur le code, et j'avais complètement oublier que vous pouvez configurer la structure STTinyMCE_Settings.
Commencer par déclarer une variable de ce type.
Puis récupérer la configuration par défaut de la fenêtre interne :
MyVar est un STTinyMCE_Settings
MyVar = CFI_TINYMCE.GetDefaultSettings() // Renvoie le paramétrage par défaut
MyVar = CFI_TINYMCE.GetSettings() // Renvoie le paramétrage en cours

Puis paramétrer la partie " Content.taBlockFormats ", soit :
MyVar.Content.taBlockFormats = tableau associatif de chaînes (Clé = Titre, Valeur = Format)

MyVar.Content.taBlockFormat["Header 2"] = "h2"
MyVar.Content.taBlockFormat["Header 3"] = "h3"

Puis réaffecter la variable de structure : CFI_TINYMCE.SetSettings(MyVar)

Si l'affectation de la configuration est faite après l'appel à la fonction Navigate(), il vous faudra alors faire appel à la fonction ResetTinyMCE()

CFI_TINYMCE.ResetTinyMCE(Vrai, Vrai)
Le premier paramètre (valeur par défaut = Faux (Ne conserver pas la configuration en cours du TinyMCE) ).
Le deuxième paramètre (valeur par défaut = Faux (Ne conserve pas le contenue en cours du TinyMCE) ).

La structure de paramétrage contient de nombreuses possibilités, veuillez la parcourir.
Dans le document PDF, je rajouterai prochainement l'explication de la structure.

Luc Rollinger
Pour le moment, c'est la seule solution pour cacher les éléments désirés du contenu TinyMCE.
Effectivement, cela ne s'applique pas aux outils de TinyMCE. Il faudra attendre que je me penche sur l'ajout de ses fonctionnalités.
De plus, il faudra penser que le faite de ne pas donner accès au <H1> n'empêchera à l'utilisateur de l'ajouter depuis l'aperçu du code.
De ce faite, l'action de ne pas donner accès à certaines fonctionnalités, inclus le faite de vérifier la présence des tags associés dans le code, et de les supprimer.

Luc Rollinger
Ok ! Mais donc, si je comprend bien, ca ne sert a rien que j'essaye de cacher certaines toolbar si c'est appliqué sur le contenu.

Je vais donc attendre vos mise a jour futur !

Merci bien.
Voici un code exemple que j'utilise dans mes testes.

sCSS est une chaîne
sColor est une chaîne
tabColor est un tableau de chaînes

tabColor = ["red", "green", "blue", "black", "white", "grey", "yellow"]
sColor = tabColor[Hasard(1, tabColor..Occurrence)]

sCSS = ChaîneConstruit([
h1 {
color: %1;
h2 {
color: green;
img {
border: 0px none;
], sColor)


L'appel à la fonction SetContent_CSS(), peut ce faire, avant ou après l'appel à la fonction Navigate().
Il faut faire attention, à ne pas mettre les balises <style></styles> dans le code CSS, la fonction le gère de lui-même.
Tout comme il n'est pas nécessaire de faire du code CSS sur la classe " mceContentBody ". Car l'affectation du code CSS concerne directement le contenu (body) de l'objet TinyMCE.

Luc Rollinger
J'arrive pas vraiment reussi a m'en servir, vous pourriez me donner un petit exemple ?

J'ai essayé plusieurs chose, genre :

CFI_Tiny.SetContent_CSS("<style>body.mceContentBody { background-color: #AAA; }</style>")
CFI_Tiny.SetContent_CSS("body.mceContentBody { background-color: #AAA; }")

et d'autres variantes, mais je ne vois aucun changement.

J'ai essayé avant le navigate et apres.

Si vous avez un exemple, je prend, et apres j'arrete de vous embetter ;)

Merci pour vos réponses rapide en tous cas !
Il y a déjà une procédure SetContent_CSS (depuis la fenêtre interne) qui permet d'injecter le code CSS de la page TinyMCE.
Luc Rollinger
Ok, je comprend!

En attendant, il y aurait pas moyen de faire un truc un peu degeulasse, genre editer un fichier css qui est chargé par le composant, pour faire un display:none sur les elements qui posent un probleme ?

Ou pouvoir saisir du code javascript pour initialiser tinymce ?

Si y'a pas moyen de contourner alors j'attendrai ;)

Merci pour tout !
La configuration de la barre d'outils est en cours de développement. Il sera possible de choisir l'ordre des boutons et par groupe d'outils.
Je regarderai la possibilité de désactivé des éléments, comme par exemple <H1> .
Je ne peut pas vous donnez de délai, car ma priorité est le développement de mon ERP. Qui lui-même utilise le composant TinyMCE.
De ce faite, le composant TinyMCE évoluera au fur et à mesure des besoins.

Luc Rollinger
Bonjour, le composant a l'air de fonctionner nickel.
Par contre, est-ce qu'il y a un moyen de configurer les toolbar qui sont affichées dans tinymce ?
Par exemple, j'aimerai désactiver la possibilité d'ajouter un <h1>.


OK tout marche correctement ....
Je viens de déposer une mise à jour du composant, qui corrige le problème du code javascript compressé en mode exécutable.
Luc Rollinger
OK Pas de soucis

Après avoir copier votre code (ci-dessous) et télécharger une copie de TinyMCE et jQuery, j'ai pu recréer voir le problème.
Il est vrai que la différence entre les tests (en mode GO) et l'exécutable, c'est que le code du script est compressé. De ce faite, les consoles de scripts n'accepte pas qu'à la fin d'une " } " (fonction javascript), qu'il n'y ait pas de point-virgule.
Après en avoir mis ici et là, je pu vérifier que cela fonctionnait correctement.
Donc dès que reçoit mon ordinateur, je pourrai apporter les corrections nécessaires.

Luc Rollinger
Voilà en affichant dans un navigateur le fameux fichier puis en affichant la console et en rafraichissant l'affichage ... il semble manquer un ";" quelque part ....
SyntaxError: missing ; before statement[En savoir plus] tinymce_9.html:16:1544 dans firefox et chrome
Pourquoi en développement cela marche-t'il alors ????

Oups ..... chez moi, tiny est au même niveau que temp...... Je teste l'affichage dans un navigateur ....
On a le temps .... réparez votre PC .... et on verra

Effectivement vous ne pouvez pas m'envoyer un message contenant du code, sur mon site.
Le fichier html généré n'est (normalement) pas à mettre en cause, puisque le fichier généré est le même en test qu'en exécutable.
Là où il faut bien faire attention, c'est dans les deux lignes suivantes :

<script src="../tinymce/jquery.js"></script>
<script src="../tinymce/tinymce.min.js"></script>

Est-ce que "tinymce" se trouve bien à niveau supérieur du dossier "temp", et contient bien tous les fichiers nécessaire au fonctionnement de "TinyMCE", ainsi que le fichier "jquery.js". Normalement, selon vos messages précédents, cela est bien le cas.

Donc le test à faire est d'exécuter le fichier html temporaire dans votre navigateur, et de voir ce qu'il se passe.
Est-ce que votre navigateur met une alerte de fonctionnement (intranet, etc...) ?

Comme je vous l'ai dit dans mon message précédent, mon ordinateur est en réparation. Je n'ai donc plus mes projets à disposition pour aller plus en avant pour approfondir le problème. Soyez patient, et je regarderai de plus prêt dès qu'il sera de retour.

Luc Rollinger
Le répertoire "temp" se crée bien dans le répertoire de l'application exe. Quand j'ouvre ma fenêtre avec le champ fenêtre interne, un fichier HTML est créé (tinymce_9.html) dont voici le contenu:

<!DOCTYPE html>
html, body { margin: 0 0 0 0; height: 100%; overflow: hidden }
p {margin: 0; padding: 0;}
<script src="../tinymce/jquery.js"></script>
<script src="../tinymce/tinymce.min.js"></script>
<div id="tinyContent_9" style="visibility:hidden;"></div>
<div id="tinyQuery_9" style="visibility:hidden;"></div>
<div id="tinyAnswer_9" style="visibility:hidden;"></div>
<script>$( document ).ready(function() {var timer;var o;tinymce.init({setup: function(editor) {editor.on("PostProcess", function(e) {e.content = e.content.replace(/(<p>&nbsp;<\/p>)/gi, "<br />");e.content = e.content.replace(/(<div>&nbsp;<\/div>)/gi, "<br />");});editor.on("init", function(e) {editor.execCommand("mceFullScreen");});},removed_menuitems : "fullscreen",selector:"textarea",resize: false,height : "100%",wordcount_cleanregex: /[0-9.(),;:!?%#$?\x27\x22_+=\\/\-]*/g,wordcount_countregex: /[\w\u2019\x27\-\u00C0-\u1FFF]+/g,directionality: "ltr",language: "fr_FR",menubar: ["file,edit,insert,view,table,format,code,tools"],plugins: ["fullscreen"],toolbar: ["ltr,rtl,newdocument,preview,print,searchreplace,cut,copy,paste,undo,redo,removeformat,styleselect,formatselect,fontselect,fontsizeselect,code","bold,italic,underline,strikethrough,alignleft,aligncenter,alignright,alignjustify,bullist,numlist,outdent,indent,table,blockquote,subscript,superscript,hr,charmap","forecolor,backcolor,emoticons,image,insertdatetime,link,media,nonbreaking,template,visualblocks,visualchars"],statusbar: true,elementpath: true,forced_root_block: "p"});$.fn.setPage = function() {var page = $("#tinyContent_9").html();tinymce.activeEditor.setContent(page);$("#tinyContent_9").html("");};$.fn.getPage = function() {var page = tinymce.activeEditor.getContent();$("#tinyContent_9").html(page);};$.fn.insertText = function() {var text = $("#tinyContent_9").html();if (text != undefined) { tinymce.activeEditor.insertContent(text); }$("#tinyContent_9").html("");}$.fn.setCSS = function() {var text = $("#tinyContent_9").html();$("#tinyContent_9").html("");if (text != undefined) {var css = text.split(",");tinymce.activeEditor.contentCSS = css;}}$.fn.setQuery = function(query, obj) {if (obj != undefined) { o = obj; }$("#tinyQuery_9").text(query);timer = setInterval($.fn.getAnswer, 1000);};$.fn.setAnswer = function(answer) {$("#tinyAnswer_9").text(answer);};$.fn.getAnswer = function() {var answer = $("#tinyAnswer_9").text();if (answer != "") {clearInterval(timer);if (answer != "cancel") {var items = answer.split(":");var c = items[0];items.splice(0, 1);var v = items.join(":");$('#tinyAnswer_9').text("");$.fn.setCommand(c, v);}}};$.fn.setCommand = function(c, v) {if (c != "") {switch (c) {case "preview" :tinymce.execCommand("mcePreview");break;case "code" :tinymce.activeEditor.setContent(v);$("#tinyContent_9").html("");break;case "colorpicker" :if (o != undefined && v != "") { o(v); }o = null;break;case "media" :case "video" :case "audio" :case "image" :case "document" :if (o != undefined && v != "") { o.insertContent(v); }o = null;break;default :break;}}};});</script>

Courage ... on y arrivera

NB: j'ai essayé de vous envoyer ce message via votre site ..... l'envoi ne se fait pas ....
Désolé pour ce problème. Est-ce que lors du lancement de l'exécutable, un sous répertoire "temp" (à la racine de l'exe) se crée bien ? Car c'est dans ce répertoire que le fichier html temporaire est créé pour visualiser votre tinymce. Si ce fichier existe, essayé (sans fermer votre exe) d'ouvrir ce fichier avec votre navigateur, et de vois ce qu'il se passe. Si le fichier et/ou le dossier "temp" n'existe pas, vérifiez les droits. Vérifiez aussi les paramètres d'exécution des pages web en local/intranet. Normalement je ne vois pas la différence entre une lanceur (exe) de projet et l'exe lui-même pour l'ouverture d'une page web, mais sait-on jamais...
Malheureusement, dans l'état actuelle des choses, je ne peut m'avancer plus, car mon poste de travail est mort. J'en ai pour 3 semaines afin que soit réparer et de retrouver mon environnement de travail avec mes projets, et donc y voir plus claire.
Luc Rollinger

Jquery est bien là. Je peux ouvrir la page de setting mais rien n'y fait, le layout ne s'affiche pas. Très bizarre car en développement cela marche très bien.
J'ai même copié directement le répertoire tiny dans le répertoire de l’exécutable .... nada


J-M des Grottes
Pour répondre à la personne du message précédent, il faut impérativement avoir le sous dossier tinymce ainsi que le fchier jquery.js dans ce dernier, dans le répertoire de l'exécutable. Pour ce qui est de la récupération du settings, cela ce passe depuis le champ de la fenêtre intere. La récupération du settings est au format jSon. Pour de. Plus amples informations, veuillez vous reporter au document PDF accessible sur mon site, à la page du produit. http://www.dotnuts-development.com

Il y a 2 soucis:
1) En développement, mon champ est correct mais en production, le champ ne s'affiche pas. Je n'ai qu'un petit champ multiligne à la place. Les 2 tests s'effectuent sur le même PC (Windows 10)

2) Comment stocker la structure des settings ? Via threadextensions ?

A plus
Super boulot!
Moi qui combine actuellement une appli sous Webdev et sous windev et m'arrachait les cheveux avec des champs de saisie en Html et en RTF ... je suis comblé !
Je teste pour le moment mais c'est très prometteur.
November 12, 2018
1.0 AM
Minimum version: 01F210067f
5.6 MB