kzCodemirror et chemins vers les scripts

Bonjour,

en modifiant l'administration avec un plugin, je n'arrive pas a charger codemirror sur les textareas .

J'ai ajouter leurs valeur de name dans app.js a la ligne 227, mais je ne vois pas comment mettre à jour les liens sur les pages chargées depuis le répertoire d'un plugin, à moins qu'il s'agisse d'un défaut de compatibilité entre plugin ?

Un indice ou un coup de pouce serait apprécier.

Cordialement,
GC

covid-19 survivor mais récupération longue ...

Mots clés:

Réponses

  • Bonjour,

    Il faut te placer dans le dossier de kzCodemirror et exécuter le script update-codemirror.sh.
    En supposant que tu utilises Linux et en particulier Ubuntu.
    Il y a un certain nombre de pré-requis :

    • node
    • npm
    • require

    Au final main.js sera mis à jour.

  • Merci de ton retour.

    Okay, j'ai node.js et la commande npm dispo, require ? mais aussi sous win10 et laragon.

    Là ça me dépasse franchement. je vais laissé comme ça, jusqu'a ce que ça me parle un peu plus.

    Bon Week-end.
    GC

    covid-19 survivor mais récupération longue ...

  • Require.js est un auto-loader qui charge toutes les librairies Javascript nécessaires
    Doc pour les non anglophones
    Dans PluXml les <textarea> ont "content", "chapo", "backend" ou "frontend" comme valeur pour l'attribut "name".
    kzCodeMirror reconnait les <textarea> comme cela.
    Pour Windows, je compatis.

  • 29 mars modifié

    Bonjour,

    je bugue toujours sur l'idée de recompiler main.js .:)

    sur deux plugin que je viens de faire, kzcodemirror ne touche pas aux textarea . L'un des plugins a une page de configuration , au lieu de rajouter dans app.js les name de ces textarea, je les ai renommés pour matché avec ceux existant dans le script, idem cela ne fonctionne pas sur cette page.

    Pour l'autre page , qui est la page article reprise et modifier uniquement au niveau de la récupération et affichage des catégories, la structure est la même et les liens vers les script dans le source fonctionnent (tous les liens sont bons, pas de fichiers non trouvés) malgré une url differente /plugins/categories/plg_article.php

    <link rel="stylesheet" type="text/css" href="../../core/admin/theme/plucss.css?v=5.8.6" media="screen" />
    <link rel="stylesheet" type="text/css" href="../../core/admin/theme/theme.css?v=5.8.6" media="screen" />
    <link rel="stylesheet" type="text/css" href="../../core/admin/theme/fonts/fontello.css?v=5.8.6" media="screen" />
    <link rel="icon" href="../../core/admin/theme/images/favicon.png" />
    <link rel="stylesheet" type="text/css" href="../../plugins/admin.css?d=19pq5" media="screen" />
    <script src="../../core/lib/functions.js?v=5.8.6"></script>
    <script src="../../core/lib/visual.js?v=5.8.6"></script>
    <script src="../../core/lib/mediasManager.js?v=5.8.6"></script>
    <script defer src="../../core/lib/multifiles.js?v=5.8.6"></script>
        <!-- le reste jusqu'au pied -->
    
        <script src="../../core/lib/drag-and-drop.js"></script>
       <script>
    setMsg();
    mediasManager.construct({
        windowName : "Gestion des médias",
        racine: "http://baseplg.gc/",
        urlManager: "core/admin/medias.php"
    });
    
    (function(query) {
    
        'use strict';
    
        function selectChangeEvt(event) {
            var option = this.options[this.selectedIndex];
            if(option.classList.contains('folder') && option.hasAttribute('data-level')) {
                var level = option.getAttribute('data-level') + 'X';
                var visibles = this.querySelectorAll('.visible[data-level^="' + level + '"]');
                visibles.forEach(function(item) {
                    item.classList.remove('visible');
                });
                var mySibling = option.nextElementSibling;
                while((mySibling != null) && (mySibling.getAttribute('data-level') == level)) {
                    mySibling.classList.add('visible');
                    mySibling = mySibling.nextElementSibling;
                }
                event.preventDefault();
            }
        }
    
        function checkFileOnly(event) {
            if(this.filesSelect != undefined) {
                // interdire la sélection des dossiers
                var option = this.filesSelect.options[this.filesSelect.selectedIndex];
                if(option.value.length == 0 || option.hasAttribute('data-folder')) {
                    alert("Veuillez choisir un fichier");
                    event.preventDefault();
                }
            }
        }
    
        var targets = document.querySelectorAll(query);
        if(typeof targets === 'array' && targets.length > 0) {
            targets.forEach(function(element) {
                if(element.options.length > 30) { <!-- Nombre minimum d'entrées de dossiers ou fichiers pour cacher l'arborescence des dossiers
                    element.addEventListener('change', selectChangeEvt);
                } else {
                    // Pas assez de fichier, on déplie tout (unfold)
                    element.classList.remove('fold');
                }
                if(element.classList.contains('data-files')) {
                    element.form.filesSelect = element;
                    element.form.addEventListener('submit', checkFileOnly)
                }
            });
        }
    })('select.scan-folders');
       </script>
    

    J'ai même pensé une seconde a me servir de l'url rewriting pour repositionner et renommer la page là ou se trouve normalement la page article.php , car aussitôt le plugin désactivé, cela fonctionne pour article.php mais toujours pas pour la page de configuration d'un autre plugin.

    Le plugin est ici si tu veut y jeter un oeil https://github.com/gcyrillus/plx-gc-categories . La seule modification apportée par le plugin est l'ajout de 2 attributs mother et daughterOf sur la balise <categorie> à la sauvegarde des catégories. Peut-être ais-je omis un truc essentiel.

    Si malgré tout, il faut refaire le fichier main.js (au risque de perturber le script ailleurs) je laisserais coulé.

    Le principe que j'essaie de suivre est de ne pas toucher a PluXml ni aux autre plugins comme je le faisais allégrement avec les v2,3et 4 de pluxml .

    Cdt,
    GC

    covid-19 survivor mais récupération longue ...

  • Quand une categorie n'a pas d'attribut "daugherOf" tu mets une chaine vide comme valeur par défaut .
    Dans plg_article.php $catMother se retrouve avec une chaine vide comme valeur mais tu compares cette valeur à '000' pour savoir si elle est orpheline. Quand ce test ne "matche" pas tu recherches une catégorie avec un id égal à une chaine nulle alors qu'il doit être une série de 3 chiffres. D'où un bug.

    Les header('Location: '...) n'ont aucun intérêt. Pire ils font une requête supplémentaire et inutile vers le serveur.

    Créer un dossier css pour les feuilles de style et un dossier lang pour les traductions pour être conforme aux standards de PluXml.

    J'ai mis les corrections sur Github branche bazooka07 :

    git clone -b bazooka07 https://github.com/kazimentou/plx-gc-categories.git
    

    Je n'ai pas tout tester. Il peut y avoir d'autres bugs qui trainent.

  • Bonsoir,

    oh grand merci de m'allumer la lumiere !

    $plgPlugin = $plxAdmin->plxPlugins->aPlugins['<?= __CLASS__ ?>'];
    include PLX_PLUGINS . '<?= __CLASS__ ?>/plg_categories.php';
    

    Comme c'est beau :) ... si c’était dans la doc, je la recopierait plein de fois ! Sinon , j'ai pas fini de m’inquiéter de la qualité de mon code et de l'ampleur de mon ignorance :)

    Pour ce qui est des bugs, dans ma todolist qui a du mal a rétrécir il y a(vait) principalement :
    - on activate <= devenu inutile suite a ton intervention et de belles corrections, sauf si a la désactivation du plugin les 2 attributs en plus se doivent d’être retiré pour être conforme aux standard de PluXml . Alors on activate/ondeactivate sont a remettre dans la liste en se posant la question que fait t'on de ses deux attributs ?
    - prévoir un systéme de sauvegarde pour éviter de tous reconfigurer après une désactivation passagère ou malencontreuse du plugin ?
    - édition de catégorie => ne pas réinitialiser les deux champs custom .... le prochain truc que je vais surement regarder
    - regrouper tout les style dans un seul fichier css
    - créer un fichier lang au moins français/anglais ( est ce que je garde les termes mère/fille/sœur pour décrire l'idée générale ? surement c'est mon fil.)

    • ...
      Je vais décrocher quelques jours, fin de mois et les repas de pâques vont bien m’occuper jusqu'à la semaine prochaine.

    Merci encore de ton aide, d'ailleurs, je devrais plutôt poster dans la section entraide.

    Bonne soirée/journée

    GC

    covid-19 survivor mais récupération longue ...

  • @bazooka07 grâce a ton coup de pouce et conseils, j'ai modifié et avancé sur ma todo list. infos sur ce post croisé https://forum.pluxml.org/discussion/6932/plugin-categories-meres-filles-suite-dun-precedent-sujet#latest

    covid-19 survivor mais récupération longue ...

Connectez-vous ou Inscrivez-vous pour répondre.