Traduction et chargement de code html à inclure dynamiquement dans une page de configuration

Bonjour,
J’aimerai charger dynamiquement du code html dans la page de configuration des équipements de mon plugin. Ce code html contient du texte à traduire sous la forme {{texte}}.

Ce code sera chargé depuis divers fichiers en fonction du genre d’équipement en cours de configuration.

J’ai tenté de le faire via un load() jquery:

$(selector).load('mon_fichier.html')

Mais le texte n’est pas traduit.

J’envisage de créer un script php qui prendra un paramètre, fourni via l’URL, qui lui indiquera le nom du fichier demandé. Ce script passera le fichier désiré dans un traitement du genre de ce qui est fait dans la fonction include_file(...) qui se trouve dans core/php/utils.inc.php

Le chargement se ferais alors via

$(selector).load('monscript.php?mon_fichier.html')

Je pense que ça fonctionnera mais, j’aimerai être sûr de ne pas être passé à coté d’une fonction existante dans le core et de ne pas réinventer la roue

Hello,

Ton code html a besoin d’être chargé en JS ?
Le souci en js c’est que c’est le client qui va le charger donc tu passeras pas dans la traduction à moins de le faire en Ajax de façon à passer par un php qui retournera une version « traduite »

J’ai finalement opté pour un php qui traduit le html avant de l’envoyer. Accessoirement, ça me permet aussi d’importer le résultat de fichiers php.

Voici le code qui me pourni le html en fonction du type de chargeur que je configure:

<?php
require_once __DIR__ . '/../../../../core/php/core.inc.php';
$type = $_GET['type'];
$file = realpath(__DIR__ . '/../../core/config/' . $type . '/chargeur_params.php');
if (file_exists($file)) {
	ob_start();
	require_once $file;
	echo translate::exec(ob_get_clean(), $file);
}
?>

Le nom du script est chargeurParams.php. le code html peut donc être installé via la commande jquery

function printEqLogic(data) {
    $(selecteur).empty().load('/plugins/mon_plugin/desktop/php/chargeurParams.php?type=' + data.configuration.type, function(){
        $(selecteur).setValues(data, '.eqLogicAttr');
    });
}

Salut,

Une question, p-e bête car je ne suis pas encore bien réveillé: quel est l’avantage par rapport à simplement générer ton dom html en js dans le printEqlogic ?

Divers type de chargeurs seront ajoutés dans le futur et je préfère le faire le plus possible sans modifier le code existant. Je passe donc par des fichiers html (et autre fichiers de config pour d’autres composant de plugin) qui seront simplement déposés dans l’arborescence du plugin.

De plus, je ne peux pas jouer simplement en rendant des éléments du DOM visibles ou non car ils resteraient présents et serait donc pris en compte par les procédures de sauvegardes.

Pour rester sécurisé et authentifié, tu peux charger la page depuis un appel ajax dans la fonction printEqLogic.

$.ajax({
      type: "POST",
      url: "plugins/pluginX/core/ajax/pluginX.ajax.php",
      data: {
         action: "getTranslate",
         type: mon_type
      },
      dataType: 'json',
      ...
});
    if (init('action') == 'getTranslate') {
        $file = realpath(__DIR__ . '/../../core/config/' . init('type'). '/chargeur_params.php');
        if (file_exists($file)) {
            $template = file_get_contents($file);
            $trans= translate::exec($template , $file);
            ajax::success($trans);
        }
        ajax::success();
    }

Merci pour le conseil

J’ai légèrement adapté le code que tu proposes pour permettre l’import de code html résultant d’un php:

...
if (file_exists($file)) {
    ob_start();
    require_once $file;
    $content = translate::exec(ob_get_clean(), $file);
    ajax::success($content);
}
ajax::success();
...

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.