Demande d'aide pour création d'un plugin
JulienCognito
Member
Bonjour à tous,
Suite à [topic=6048]ce message[/topic], j'imagine bien que Bronco n'est pas dispo et que détricoter un plugin n'enchante personne.
C'est pourquoi je vais prendre les choses dans l'autre sens et demander de l'aide pour construire, en s'inspirant, un plugin de galerie minimaliste.
En fait je souhaiterais pouvoir intégrer une galerie aux articles de manière simplissime.
Le code de l'affichage dans article.php pourrait être celui proposé dans le wiki:
Mais prenons du début.
CONFIG.PHP pour préciser le dossier recevant les galleries
le code ci-dessous volé à JerryWham fonctionne bien.
MINIGAL.PHP - hook=AdminArticleContent - Ajout de la liste déroulante en bas de la page d'édition d'un article
Encore volé à GalArt
MINIGAL.PHP - hook=plxAdminEditArticleXml - Ajout de l'info dossier au fichier XML de l'article
Toujours emprunté à Bronco
MINIGAL.PHP - hook= AdminArticleParseData/AdminArticleInitData - On récupère l'info dans l'article
Là je comprends déjà plus rien.
Qu'est ce qu'il manque?
Ah oui, l'appel de l'info ci dessus, et son insertion dans le code tout en haut! Là, le code de Bronco rajoute la génération de vignette, la cration d'un flux rss, et ma méconnaissance totale en prog php m’empêche d'avancer:
Bref, il y a du boulot mais les essais en php, je n'y arrive pas (une erreur de syntaxe et vlan!) donc mon tatonement habituel à base de "afficher le code source" dans firefox n'est pas efficace.
Merci d'avance aux programmeurs chevronnés que je lis ici pour leur attention;
Julien
PS: je peux héberger ça sur un dépôt Gitea, si c'est plus simple.
Suite à [topic=6048]ce message[/topic], j'imagine bien que Bronco n'est pas dispo et que détricoter un plugin n'enchante personne.
C'est pourquoi je vais prendre les choses dans l'autre sens et demander de l'aide pour construire, en s'inspirant, un plugin de galerie minimaliste.
En fait je souhaiterais pouvoir intégrer une galerie aux articles de manière simplissime.
Le code de l'affichage dans article.php pourrait être celui proposé dans le wiki:
<?php
# Récupération et affichage de la liste des images sous forme de liste
$glob = plxGlob::getInstance($dir);
if ($files = $glob->query('/[a-z0-9-_]+.tb.(jpg|gif|png)$/i')) {
echo '<ul class="galerie">';
foreach($files as $filename) {
$file = $dir.'/'.$filename;
echo '<li><a href="'.str_replace('.tb', '', $file).'"><img src="'.$file.'" alt="" /></a></li>';
}
echo '</ul>';
}
else echo "Aucune image";
?>
ou la variable $dir serait récupérée d'une sélection de dossier dans la page d'édition d'un article... comme dans GalArt de Bronco :8Mais prenons du début.
CONFIG.PHP pour préciser le dossier recevant les galleries
le code ci-dessous volé à JerryWham fonctionne bien.
<?php
if(!defined("PLX_ROOT")) exit; ?>
<?php
if(!empty($_POST)) {
$plxPlugin->setParam("rep", ($_POST["rep"] == '' ? $plxAdmin->aConf["medias"].'images/' : plxUtils::strCheck($_POST["rep"])), "string");
$plxPlugin->saveParams();
header("Location: parametres_plugin.php?p=minigal");
exit;
}
?>
<h2><?php $plxPlugin->lang("L_TITLE") ?></h2>
<p><?php $plxPlugin->lang("L_DESCRIPTION") ?></p>
<form action="parametres_plugin.php?p=minigal" method="post" >
<p>
<label>Répertoire principal des images :
<input type="text" name="rep" value="<?php echo ($plxPlugin->getParam("rep") == '' ? $plxAdmin->aConf["medias"].'images/' : $plxPlugin->getParam("rep"));?>"/>
<a class="hint"><span><?php echo L_HELP_SLASH_END ?></span></a> <strong>ex: data/medias/images/</strong>
</label>
</p>
<br />
<input type="submit" name="submit" value="Enregistrer"/>
</form>
MINIGAL.PHP - hook=AdminArticleContent - Ajout de la liste déroulante en bas de la page d'édition d'un article
Encore volé à GalArt
public function AdminArticleContent(){
$label=$this->getLang("L_ARTICLE_FOLDER");
echo '<?php
function recursiveDirContent($root=null){
if (empty($root)){return false;}
if (!is_dir($root)){return array($root);}
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST,
RecursiveIteratorIterator::CATCH_GET_CHILD # Ignore "Permission denied"
);
$paths = array($root);
foreach ($iter as $path => $dir) {
$paths[] = $path;
}
return $paths;
}
$folders=recursiveDirContent(PLX_ROOT."'.$this->getParam('rep').'");
?>';
echo '
<div class="sml-12"><label for="id_url_link">'.$label.'</label><select name="folder" id="folder_image">';
echo "<option value=''></option>\n";
echo '<?php
foreach ($folders as $item) {
if (is_dir($item)){
if (PLX_ROOT.$folder==$item){$selected="selected=\"true\"";}else{$selected="";}
echo "<option value=\'".str_replace(PLX_ROOT,\'\',$item)."\' $selected>".str_replace(PLX_ROOT.$plxAdmin->aConf[\'medias\'],\'\',$item)."</option>\n";
}
} ?>
</select></div>';
}
MINIGAL.PHP - hook=plxAdminEditArticleXml - Ajout de l'info dossier au fichier XML de l'article
Toujours emprunté à Bronco
public function plxAdminEditArticleXml(){
echo '<?php
$folder = plxUtils::getValue($content["folder"]);
$xml .= "\t<folder><![CDATA[".plxUtils::cdataCheck(trim($folder))."]]></folder>\n";
?>';
}
MINIGAL.PHP - hook= AdminArticleParseData/AdminArticleInitData - On récupère l'info dans l'article
Là je comprends déjà plus rien.
# Ajout de la variable $url_link (édition d'un article)
public function AdminArticleParseData(){
echo '<?php
if (!isset($result["folder"])){
$folder="";
}else{
$folder=$result["folder"];
}
?>';
}
# Ajout de la variable $url_link lors de l'initialisation
public function AdminArticlePostData(){
echo '<?php $folder = plxUtils::strCheck($_POST["folder"]);?>';
}
Qu'est ce qu'il manque?
Ah oui, l'appel de l'info ci dessus, et son insertion dans le code tout en haut! Là, le code de Bronco rajoute la génération de vignette, la cration d'un flux rss, et ma méconnaissance totale en prog php m’empêche d'avancer:
- Quel hook pour apparaître en fin de contenu ArtContent? plxMotorParseArticle?
- J'ai oublié des trucs?
- Comment modifier le code indiqué tout en haut issu du wiki pour afficher la gallerie.
- Comment insérer un peu de css? Dans l'idéal, il apparaîtra dans l'administration du plugin.
Bref, il y a du boulot mais les essais en php, je n'y arrive pas (une erreur de syntaxe et vlan!) donc mon tatonement habituel à base de "afficher le code source" dans firefox n'est pas efficace.
Merci d'avance aux programmeurs chevronnés que je lis ici pour leur attention;
Julien
PS: je peux héberger ça sur un dépôt Gitea, si c'est plus simple.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Non, ce n'est pas un UP, c'est un point sur mes avancés.
J'ai hébergé le code sur gitea là pour plus de facilité mais je le pose ici aussi pour l'historique.
La partie config, admin et xml semble fonctionner. Mais pour l'ajout côté public, je ne m'en sort pas (derniers paragraphe)
Bien amicalement,
Julien