Arrivée de la stable V4 (migration facile v3 à v4)

Développement sur V4 Jeedom

Bonjour à tous,

La V4 sortira en Stable complète (smart, pro, mise à jour des v3 par simple bouton) en Septembre 2020.

Si votre plugin est compatible V4, merci de mettre le V4 compatible dans le info.json (ajouter juste v4 dans l’information “compatibility”).

Lors de la phase de migration des V3 vers la V4, les plugins sans compatibilité v4 dans leur info.json alerteront l’utilisateur final avant la maj.

Migration des plugins

  • Nettoyer au maximum les inline style (cf plugin template).
  • span affichage de commande : class state
  • Bouton de commande : a class action
  • Sur les input-group:
    • class roundedLeft sur le premier élément (a input, button etc)
    • class roundedRight sur le dernier élément (a input, button etc)
  • Sur la div eqLogicThumbnailContainer:
    • supprimer tous les styles!
    • Sur les divs parents, ajouter une class de couleur:
      • couleurs de logo: logoPrimary et logoSecondary
      • vert : success
      • bleu: info
      • orange: warning
      • rouge : danger
  • Attention pour les plugins ayant des templates: l’icône refresh a changé (font-awesome 5) :
  • Attention aux class des boutons, input etc:
    • btn : 32px de haut
    • btn-sm / input-sm : 28px de haut
    • btn-xs : 22px de haut
  • Fichier desktop/php/pluginid.php : remplacer object::all() par jeeObject::all()

Tester les plugins sur les trois thèmes 2019 Light / Dark / Legacy.

  • Images en png avec alpha si nécessaire, afin d’éviter les carrés blancs disgracieux en thème Dark.
  • Au final les pages du plugin doivent être cohérentes avec les pages du core objets/scénarios/interactions (tailles, couleurs, dispositions etc). Pas d’effet de style, mais de la cohérence.

Remarque:

  • La sidebar n’a pas survécu à la v4 ! Pour la remplacer, un menu contextuel est disponible sur les onglets pour les scénarios, objets, interactions, plugins.

Mises à jour:

  • Une fois le github du plugin updaté, aller sur le market, mes créations, et faire un ‘Test’ sur la branche. Ce qui évite d’attendre le passage du robot, et met l’update à disposition immédiatement.

Rappel:

  • Les images affichées dans les pages de plugins ne doivent pas être chargées depuis le net, mais doivent être parmi les fichiers locaux du plugin.

Attention:

  • Sur les pages de scénario, plugins etc, le bouton ‘Supprimer’ est passé à droite ! C’est le plus dangereux donc le plus loin.

https://community.jeedom.com/t/beta-core-v4/1224

Nettoyeur de fichier

la v4 et la nouvelle V3 ont un nettoyage automatique des fichiers non présents sur votre mise à jour de plugins automatique (le core efface automatiquement les fichiers de plus de 7 jours qui n’ont pas eu de mise à jour).

  • il efface les fichiers qui sont plus vieux de 7 jours selon l’update de votre plugin.
  • il touche uniquement les dossiers > '3rdparty', '3rparty', 'desktop', 'mobile', 'core', 'docs', 'install', 'script', 'vendor', 'plugin_info'
  • ressource(s) et data ne sont pas touchés, mais nous vous invitons à utiliser data pour tout custom.
  • les fichiers dont le nom commence par custom. ne sont également pas touchés.

si vous souhaitez faire une modification avant le nettoyage vous pouvez utiliser pre_install.php (dans plugin_info) voir plugin template. https://github.com/jeedom/plugin-template/blob/master/plugin_info/pre_install.php

GitHub liaison market

Changement de nom github pour les accès à vos repos privés.

Il faut maintenant utiliser jeedom-market au lieu de celui de zoic.

La documentation

Le site de documentation a également changé d’aspect.

Désormais des liens renvoient directement vers vos documentations.

La traduction
Nous sommes en cours de développement d’un nouvel outil de traduction. Nous le testons actuellement en interne et nous reviendrons vers vous prochainement afin de vous proposer d’intégrer vos plugins dedans.

3 « J'aime »

Hello,
Je ne trouve pas l’utilisateur sur GitHub. Il est déjà en fonction ?
image
Cordialement
Thibaut

My bad > jeedom-market · GitHub

Hello
C’est jeedom-market et non comme marque dans la News jeedom_market

Bonsoir,

Je n’arrive pas à comprendre comment une fonction qui n’est pas encore installée puisqu’elle est dans le zip du plugin qui n’est pas encore téléchargé peut être exécutée.

La chronologie d’appel des fonctions dans update::doUpdate est:

  1. preInstallUpdate qui va exécuter la fonction pre_update si elle existe
  2. téléchargement et dezippage du plugin qui contient la pre_update qu’il faudrait exécuter
  3. postInstallUpdate qui fait le nettoyage des anciens fichiers

Salut @jpty,

J’ai eu l’occasion de tester sur le plugin pimp my Jeedom et la fonction pre_update() est bien appelée avant toute intervention du core sur le plugin. Par contre effectivement il faut qu’elle soit présente dans la version actuelle avant mise à jour.

Tu peux écrire un log dans ‹ update › pour vérifier qu’il est bien pris en compte :

function template_pre_update() {
  log::add('update', 'alert', __('Test de la fonction pre_update()', __FILE__));
}

Bonsoir @Salvialf

Oui c’est le seul problème. Pour moi il manque une fonction appelée après l’install du plugin et avant le nettoyage.

C’est quoi exactement le problème que tu a avec le nettoyage sur ton plugin ?

Elle est bien appelée avant nettoyage.

En gros j’ai été confronté au problème avec Pimp my Jeedom qui doit télécharger les widgets et les placer impérativement dans le dossier plugins/pimpJeedom/core/template/dashboard (ou mobile) pour être pris en compte par le core.

Fichiers qui se sont trouvés supprimés lors du nettoyage.

J’ai ajouté une intervention dans la fonction pimpJeedom_pre_update() qui prévient le nettoyage de ces fichiers.

Effectivement, la correction ne fonctionnera pas lors de la mise à jour contenant la correction mais elle sera par contre fonctionnelle dès la mise à jour suivante.

@Alexandre tu ne parle pas du fichier /plugin_info/packages.json
Faut pas encore le prendre en compte

Non pour l’instant cette partie est en pause par manque de temps

Ok, tant mieux je manque de temps aussi

Bonjour @Alexandre

Je n’ai pas de problème de suppression de fichier avec mon plugin.
Je dis juste que pre_update n’est pas la solution pour que les fichiers nécessaires à un plugin ne soient pas supprimés lors d’un update de plugin.
Comme l’a écrit @Salvialf au-dessus pre_update ne fonctionne qu’après la 1ère update d’un plugin.
A la 1ère update, il y peut y avoir suppression de fichiers utiles au plugin.

je ne vois pas vraiment beaucoup de plugin qui pourrait avoir des soucis de suppression de fichier en faite. si les fichiers sont present sur ton git ils ne seront pas supprimé. et avec le custom. et data on devrait pas vraiment avoir de souci. :wink:

qu’en est-il pour les qrcodes ? comme dans mobile, il est téléchargé du net…

Il y aura toujours des cas particuliers.

Mais un plugins de gestion de sa voiture qui télécharge chaque image de chaque modèle depuis le net à chaque fois qu’on va sur la page équipements, non … :thinking:

Sur ce cas précis je ne vois pas le problème, au contraire, c’est un peu le principe du cdn…
Pour un truc non critique comme une image de voiture, autant renvoyer le lien externe en src de l’image plutôt que de tout dupliquer en local (ce qui va augmenter considérablement la taille du backup)
ps: note que je n’ai pas fait cela sur plugin-myaudi, il télécharge l’image en local mais c’est parce qu’il faut être authentifier pour l’avoir et la récupérer via l’api)

Autant je comprend pour les images statiques du plugins: on ne doit pas créer un site ou un dépôt externe nous appartenant (le dev) sur lequel on va chercher les fichiers depuis jeedom, ca c’est logique et c’est comme ca que j’avais compris ce point.
Mais s’il y a des images fournies par un services tiers avec des url dynamiques en fonction d’un équipement, qui sera donc de toute façon dépendant du cloud, je ne comprend pas pq dupliquer en local

Bonjour Alexandre,

J’ai encore unproblème avec la publication sur le site de doc:

  • j’ai ajouté jeedom-market sur plusieurs repo (privé) malgré qu’il y avait déjà le token d’accès donc en fait je ne vois pas a quoi ca sert d’en plus donner l’accès à un utilisateur; c’est génant car:
    • on a droit qu’à 3 collaborateurs sur un repo prive avec compte gratuit
    • c’est plus de boulot pour tout le monde (alors que mettre le token dans ma config market je le fais moi même en créant le plugin sur le market):
      • passer sur tous les repos pour vous rajouter,
      • vous mettez du temps pour accepter (normal, process manuel, c’est du boulot);
  • j’ai coché partout la case pour afficher le plugin sur le site de doc

malgré cela:

  • seul mes plugins avec repo public apparaissent sur le site de doc
  • certains plugins privés dont l’ajout de collaborateur a été fait il y a des jours voir des semaines sont en attentes d’une action chez vous (donc normal qu’il n’apparaissent pas)
  • certain autres j’ai fait l’ajout aujourd’hui (donc normal aussi)
  • et les derniers, vous avez accepté l’invitation il y a plusieurs jours ou semaines et la doc n’est toujours pas visible

donc en résumé aucun de mes plugins avec repo privé ne s’affichent sur le site de doc alors qu’il y a :

  • la case cochée
  • le token d’accès
  • l’utilisateur jeedom-market ajouté (et il a accepté) (j’ai supprimé zoic21 partout)
  • toutes ces actions réalisées il y a plusieurs jours donc le robot a eu le temps de passer

Qu’est-ce que j’ai loupé? car je vois sur le site de doc d’autres plugins privés eux aussi… donc ca fonctionne…

Bonjour,
Pour la procedure il faut voir avec un de tes copain dev qui ma tanné pendant 6 mois pour qu’il ne mette pas de clef api mais que ca passe par l’utilisateur market a qui vous donnez accès (la clef api donne accès a tout les repos pas l’utilisateur market). Perso je suis absolument pas pour cette nouvelle procedure et je lui ai expliqué mais il a insisté. Je fais juste ce qu’on me demande vu que de toute facon quand je donne mon avis et que je dis non vous insistez quand meme. Donc maintenant je dis plus rien vous demandez je fais ca va pas vous vous arrangez entre vous je veux rien savoir.

Pour le soucis de donc c’est un probleme connu nous travaillons dessus.

Sinon une solution de facilité,
Tu crée une Organisation sur github, tu déplace tout tes repository dedans. Et en temps que membre de l’organisation tu rajoute le user du market.

Cela fait que ton user a accès a tout tes repo et que quand tu en crée un, tu a plus le problème de devoir invitée le compte sur chaque repo.
De plus, tu ne perd plus une place sur ton repo.

Cordialement
Thibaut

1 « J'aime »