Créer un post community quasi automatiquement?

Hello tous,

combien de fois sur les sujets on voit demander la version du core utilisée, quelle version/branch du plugin est en cause, etc … car ca n’a pas été fourni de base par l’utilisateur.
combien de fois un sujet n’a pas de tag ? ou est dans la mauvaise catégorie ? …?

je me suis demandé si on pouvait pas essayer d’automatiser un peu tout ça !
et bien la réponse est « oui » en grosse partie :smiley:

J’ai donc fait le nécessaire pour le pousser sur JC, et permettre ainsi d’intégrer automatiquement toutes les infos que je ne cesse de réclamer :slight_smile:

1 seul petit clic pour avoir toute une partie de mon post sur community pré-maché, c’est plutôt sympa non !?

… et puis je me suis souvenu que certains autres dev disaient que ca aurait été bien que le core fournisse une fonctionnalité centrale pour partager toutes ces infos quelque soit le plugin.

Alors j’ai modifié un peu ma copie et suis en train de faire une PR sur le core pour que ca soit disponible à tous/ceux qui le souhaitent. (si toutefois c’est validé :slight_smile: )
ADD createCommunityPost by tomitomas · Pull Request #2256 · jeedom/core (github.com)

l’idée serait de base d’avoir :

  1. des infos standard sur son instance jeedom : version, branch, utilisation des dns, …
  2. des infos standard sur le plugin pour lequel on souhaite créer un post : beta/stable, version, démon utilisé, …
  3. (optionnel) permettre au développeur du plugin d’y insérer d’autres informations qu’il jugerait utile / dont il aurait besoin

du coup en 1 clic, l’utilisateur se retrouve sur community avec un brouillon de post créé qui :

  • contient des infos sur sa config
  • est correctement catégorisé suivant son plugin
  • a le bon tag du plugin

en démo :
community2


côté dev plugin, ca veut dire quoi ?

  1. simplement ajouter sur un nouveau bouton sur la page principale du plugin (desktop\php\pluginId.php)
<?php
// uniquement si on est en version 4.4 ou supérieur
$jeedomVersion  = jeedom::version() ?? '0';
$displayInfoValue = version_compare($jeedomVersion, '4.4.0', '>=');
if($displayInfoValue){
?>
	<legend><i class=" fas fa-comments"></i> {{Community}}</legend>
	<div class="eqLogicThumbnailContainer">
		<div class="cursor eqLogicAction logoSecondary" data-action="createCommunityPost" >
			<i class="fas fa-ambulance"></i>
			<br>
			<span style="color:var(--txt-color)">{{Créer un post Community}}</span>
		</div>
	</div>
<?php
}
?>
  1. Si vous avez besoin de compléter les infos remontées de base avec d’autres données qui vous sont nécessaire → implémenter une fonction getConfigForCommunity dans la classe principale de votre plugin (core\class\pluginId.class.php), qui retourne un texte :
public static function getConfigForCommunity(){
   return  "my custom data";
}

des avis ? commentaires ?

15 « J'aime »

Ton idée est bonne.

Reste à croire à son utilisation par les différents développeurs mais surtout par les users, quand on voit le nombre de post ou tu te fatigue encore à demander les infos pour JC, j’ai bien peur que cette éducation soit longue à mettre en place.

Mais je l’ajouterais dans JeeMate si ton PR est accepté.

1 « J'aime »

PR accepté en alpha 4.4

1 « J'aime »

Alpha installé :

Code ajouter au plugin, lors de l’appui :

https://**********.eu.jeedom.link/core/php/getResource.php?file=core/js/plugin.template.js&md5=**************&lang=fr_FR
erreur ligne 764
Uncaught TypeError: jeeFrontEnd.pluginTemplate.createCommunityPost is not a function
1 « J'aime »

pourtant promis j’avais testé ! :slight_smile:

mauvais copier/coller quand je suis passé sur un fork du core … il manque la partie la plus importante …

nouvelle PR en cours :
FIX createCommunityPost by tomitomas · Pull Request #2260 · jeedom/core (github.com)

Avec la dernière PR (intégrée à la main sans rater le copier coller :rofl:), ça fonctionne. Merci

Il manque la fermeture de la balise Texte préformaté.

$finalBody = br2nl($infoPost . $infoPlugin .'<br/>```<br/>');

L’habitude de ne pas lire ce qui est déjà écrit et d’écrire à la fin.

Excellente initiative @tomitomas :+1: :+1: :+1:

Par contre en voulant mettre à jour le core en alpha sur ma machine de dev, j’ai cette erreur à 55%:

PHP Parse error:  syntax error, unexpected 'if' (T_IF), expecting ',' or ';' in /var/www/html/install/consistency.php on line 475

J’ai pas creusé mais si d’autres ont le souci :wink:

Xav

Ça c’est ma faute refait plusieurs mise a jour ça devrait se corriger

1 « J'aime »

merci !
J ai (re)fait différement, car c etait pas tres jolie comme ca (on sait pas où ca les quotes s ouvrent)

corrigé dans une nouvelle et derniere ( :crossed_fingers: ) PR , désolé @Loic pour cette 3e manip :confused:

@sagitaz @jpty @Xav-74 vous pouvez mettre a jour tout est en principe OK ! :slight_smile:

3 « J'aime »

Ok pour moi :+1:

Ce sera intégré à JeeMate quand le PR sera dispo dans la 4.4.0 beta.

Done :white_check_mark:
Merci @Loic

Je confirme : tout est OK également ! Adopté pour myBMW :wink:
A suivre pour Verisure

Reste plus qu’à automatiser le screenshot de la page santé :rofl: :rofl: :rofl:

Merci à tous
Xav

J ai testé de remonter que les items de la page santé en KO → qu on puisse au moins demander d avoir des explications si on voit des elements KO important
→ mais ca prend trop de temps a recup.

L objectif c est que le clic sur le bouton soit rapide, l interrogation santé prend qlq seconde…
Du coup j’ai retiré !

Mais apres l objectif initiale de ma proposition c est de pouvoir en discuter tous ensemble.
Donc ya des elements commun qui semblent essentiel a mettre, parlons en tous et decidons ensemble !

(Et apres dans le pire des cas chacun peut decider d ajouter ce quil veut dans sa partie specifique au plugin)

Merci @Loic pour les appro des PR !
Je fais une PR sur le repo template demain pour integrer la fonction propre au plugin


Pour ceux qui veulent tester, c est dispo sur JC en beta, quelquz soit votre version du core :slight_smile: :slight_smile:

1 « J'aime »

Non non je veux un screenshot :stuck_out_tongue_closed_eyes:

Je te taquine. C’est top et parfait pour moi. Je vais rajouter 2-3 infos liées au plugin et feu !

Xav

Via la fonction « rapport » du core il doit y avoir moyen d’arriver à quelque chose :nerd_face:

Bonjour,

Testé sur mon Alpha :+1:, bravo @tomitomas.
La partie getConfigForCommunity pour le dev rend vraiment la fonction customisable.

Mon avis perso :wink::
Je n’en mettrai pas plus dans les infos de base étant donné que la fonction getConfigForCommunity est a dispo, ou alors faire comme le $_widgetPossibility :

public static $_getConfigForCommunity = array(
    'custom::data' => "my custom data",
    'health' => true,
    ...
)

cool !
merci pour ton retour @Phpvarious :kissing_heart:


plutôt qu’un « ou » je dirai plutôt « et » ! :slight_smile:
ca peut en effet être une bonne idée qui, pour moi, pourrait venir en complément du reste !
à creuser …!?


sur la partie santé, j’avais initié juste un truc comme ca

Code Santé
		$nbWar = 0;
		$arrWar = array();
		$nbErr = 0;
		$arrErr = array();
		foreach ((jeedom::health()) as $datas) {
			if ($datas['state'] === 2) {
				$nbWar++;
				$arrWar[] = $datas['name'];
			} else if (!$datas['state']) {
				$nbErr++;
				$arrErr[] = $datas['name'];
			}
		}
		
		$info =  'Infos Santé : <br/>';
		if ($nbWar == 0 && $nbErr == 0) $info .= '  tout OK<br/>';
		if ($nbWar > 0) $info .= ' ' . $nbWar . ' warning (' . implode(', ', $arrWar) . ') <br/>';
		if ($nbErr > 0) $info .= ' ' . $nbErr . ' erreur (' . implode(', ', $arrErr) . ') <br/>';

		return $info;

ce qui permettait d’avoir seulement une info supp :
image

mais, comme dit plus haut, chez moi ca mettait un peu trop de temps à se générer donc j’ai retiré …
à voir ce que ca donne chez d’autres !?
(et si c’est utile !?)

Je suis a distance en https sur mon alpha avec un connexion de m… :joy:, et ce code passe crème, je pense que pour certaines infos indispensable pour certains Dev, l’user peut se permettre d’attendre 1 secondes de plus, tant que ca ne génère pas de timeout :wink:.
Je mettrai quand même cette possibilité en option, au dev de décider si il veut l’afficher ou pas.

1 « J'aime »