PC SOFT
ONLINE REPOSITORY
FOR WINDEVWEBDEV AND WINDEV MOBILE

Home |  | Sign in | English US
TinyMCE for WINDEV
Published by Luc
in the category Productivity
New features
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.

Description
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.
http://www.dotnuts-development.com/en/products/web-page-editor/
Illustrations, screen shots
none
none
User reviews
(To evaluate this resource, click 'Write a review')
Luc
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.

Cordialement,
Luc
DrakeQC
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.

Cordialement,
Drake
Luc
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.

Cordialement,
Luc
Luc
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)

Cordialement,
Luc
DrakeQC
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 = [
<p>CONTENU</p>
]

stTemplate.sDescription = "HTML"
stTemplate.sContent = sTemplate
gtaTemplates["TEMPLATE_1"] = stTemplate
CFI_HTML.SetTemplates(gtaTemplates)

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 ?

Cordialement
Luc
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/

Cordialement,
Luc
DrakeQC
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 ?

Cordialement,
Drake
DrakeQC
Bonjour Luc,

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

Cordialement
Luc
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.

Cordialement,
Luc Rollinger
DrakeQC
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.
DrakeQC
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 ?

Cordialement
DrakeQC
Encore merci,
J'attendrais alors ta nouvelle version.
Bonne fin de journée Luc.
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 ".
DrakeQC
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

ET

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
DrakeQC
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 !
Luc
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 :
http://www.dotnuts-development.com/produits/editeur-de-page-internet/

Ou directement à cette adresse :
https://www.dotnuts-development.com/wp-content/uploads/2016/12/documentation-api-en-francais-du-composant-tinymce-pour-windev.pdf

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.
Nicolas
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
DrakeQC
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",...
"autolink","hr","advlist","lists","media","template","wordcount","noneditable","imagetools","colorpicker","searchreplace","pagebreak","directionality","table","charmap","visualblocks","visualchars"]

stMaConfig is STArray

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

stSettings.Plugins = stMaConfig

CFI_HTML.SetSettings(stSettings)

CFI_HTML.ResetTinyMCE(true)
Luc
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.

Cordialement,
Luc Rollinger
Lapalys
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
Luc
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à.

Cordialement,
Luc Rollinger
Lapalys
Bonjour

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.
Luc
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.

https://www.dotnuts-development.com/wp-content/uploads/2016/12/documentation-api-en-francais-du-composant-tinymce-pour-windev.pdf

Cordialement,
Luc Rollinger
Luc
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
ou
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.
https://www.dotnuts-development.com/wp-content/uploads/2016/12/documentation-api-en-francais-du-composant-tinymce-pour-windev.pdf

Luc Rollinger
Luc
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
Anonymous
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.
Luc
Voici un code exemple que j'utilise dans mes testes.

LOCAL
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"]
InitHasard()
sColor = tabColor[Hasard(1, tabColor..Occurrence)]

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

CFI_TINYMCE.SetContent_CSS(sCSS)

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.

Cordialement,
Luc Rollinger
Anonymous
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 !
Luc
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.
Cordialement,
Luc Rollinger
Anonymous
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 !
Luc
Bonjour,
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.

Cordialement,
Luc Rollinger
Anonymous
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>.

Cordialement,

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

JMDG
Luc
Bonjour,
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.

Cordialement,
Luc Rollinger
Anonymous
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 ????

A+
Anonymous
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

A+
Luc
Bonjour,
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.

Cordialement,
Luc Rollinger
Anonymous
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>
<head>
<style>
html, body { margin: 0 0 0 0; height: 100%; overflow: hidden }
p {margin: 0; padding: 0;}
</style>
<script src="../tinymce/jquery.js"></script>
<script src="../tinymce/tinymce.min.js"></script>
</head>
<body>
<textarea></textarea>
<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>
</body>
</html>

Courage ... on y arrivera

NB: j'ai essayé de vous envoyer ce message via votre site ..... l'envoi ne se fait pas ....
Anonymous
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.
Cordialement,
Luc Rollinger
Anonymous
Re,

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

A+

J-M des Grottes
Anonymous
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
Anonymous
Bonjour,

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
Anonymous
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.
Merci
ABOUT
RATING:
4.65(5)
DOWNLOADS:
245
UPDATED:
August 05, 2017
VERSION:
1.0 Ai
CONCERNS:
WINDEV
Minimum version: 01F210067f
SIZE:
5.3 MB
OF SAME DEVELOPER