Community « Calendrier des évènements «
Approfondir - Yacs pour les développeurs
Une soirée orientée développement, pour ceux qui mettent les mains dans le code. Adapter, interfacer, intégrer... découvrez comment tirer le meilleur parti de la structure de Yacs.
Rendez-vous ici, de 21h à 23h, heure de Paris.
Rendez-vous ici, de 21h à 23h, heure de Paris.
Oct. 30 2008

ci-après diverses pistes pour le clavardage de jeudi. Certains points ne demandent que des réponses courtes d'autres sont peut-être hors sujet. En tout cas ce sont des questions que je me pose.
- synthèse des "outils" mis à disposition des développeurs - le fichier template - le fichier skin-skeleton.php - l'overlay - le layout - le comportement - la table - le formulaire ... j'en oublie ?
- les variables à notre disposition Principales variables utilisées pour construire une page à l'écran
- l'overlay mutable par l'exemple
- Intégrer une application tierse dans yacs : le necessaire pour garder sa session, ses droits yacs et autres choses vitales
- Les limites des layouts
- les traitements automatiques L'overlay mutable par l'exemple
- overlay : gerer le mutli-ligne dans un overlay (plusieurs articles)
- modifier la mise en page des flux RSS
- Personnaliser le vocabulaire autrement que par un overlay ?
- personnaliser l'enregistrement, la connexion
- supprimer l'affichage de certains onglets lors de l'edition des pages pour certaines catégories d'utilisateur
- ajouter un champ d'overlay (ou pas) dans manage it
- ajouter des fonctions dans la boite à outils
- ajouter des fonctions aux articles, sections ou catégories sans perdre son code à chaque mise à jour.
on Oct. 27Quel programme ! on Oct. 30
Salut, Denis, content de te "voir", j'ai toujours un ENOOORME pb avec 1and1. Il semble que tu n'aies pas de soucis. on Oct. 30
..les hooks par exemple
Peux-tu également préciser de quelle version nous parlons ? on Oct. 30
(structurant = juste mettre des titres) on Oct. 30
Si vous le voulez bien entrons directement dans le vif du sujet, et je vous laisserai autant de temps que possible pour vos questions additionnelles. on Oct. 30
Salut Toff on Oct. 30
Denis :la fonction setup est aussi appelée lors de l'opération "maintenance de la bdd" dans le panneau de controle
on Oct. 30Ce soir, nous nous concentrerons tout particulièrement sur tous les endroits où PHP peut intervenir, et il y en a pas mal. on Oct. 30
On avance page par page ?
...pour les remarques.. on Oct. 30
en tous cas sur le qui-fait-quoi on Oct. 30
Mon rôle est plutôt celui d'un éditeur de logiciel libre, mais il vous revient, en plus du développement, de "packager" l'ensemble pour vos clients. on Oct. 30
je l'avais entendu comme ça, mais ce n'est pas le cas de tous le utilisateurs/clients. Ce qui m'interpelle plus précisemment, c'est "animation de communauté", ce n'est pas une compétence de SSxx... mais plutôt d'une Sté de Conseil en orga ou mngt.
on Oct. 30Ce qui renvoie que les Stés de Conseils sont des clients potentiels, yacs, un de leurs outils ad-hoc
Bernard, globalement d'accord... mais de mon expérience, c'est plus à anticiper qu'à acquérir. on Oct. 30
quelqu'un a dit CMS... comme Community Management System ?
on Oct. 30L'architecture d'exécution de yacs est à la page 3. on Oct. 30
Pour Ajax, il s'agit de bibliothèques javascript également exécutées côté navigateur.
En résumé, lorsqu'il reçoit une requête web, Apache lance directement le script concerné en fonction de l'objet cible et de l'action à effectuer. Par exemple,
articles/view.phppour l'affichage d'un article.Pour un développeur PHP, il est donc assez facile d'identifier le point d'entrée dans yacs à partir de l'adresse web, surtout lorsque l'on n'utilise pas l'option de ré-écriture de lien.
Ensuite, des librairies sont chargées, la plupart à travers
shared/global.php. Beaucoup des librairies PHP sont placées dans le répertoiresharedd'ailleurs.Généralement le traitement d'un script consiste à positionner des variables dans le tableau
$context, à partir du contenu de la base ou des fichiers. on Oct. 30render_skin(), qui transforme le contenu de$contexten balises compréhensibles pour le navigateur. on Oct. 30Pour repérer un script de référence, c'est facile, puisqu'ils ont tous, dans l'en-tête, le mot-clé
@reference.Et la plupart des scripts de yacs sont des scripts de référence, donc intouchables, sauf à demander à appliquer des modifications sur yacs lui-même, ce qui arrive, mais assez rarement. on Oct. 30
Les skins, ou plus exactement, les thèmes, sont caractéristiques de l'identité visuelle du site.
Yacs délègue au thème la plupart des traitements liés à l'aspect visuel, à travers deux scripts différents :
skin.phpettemplate.php.Le premier à la charge de construire les éléments de page, telles que listes, tableaux, liens, etc.
Le second est appelé pour générer tout le HTML à partir de
$context.En tant que développeur PHP, vous avez vraiment beaucoup de possibilité avec cette architecture, même si ce n'est pas forcément simple de 'rentrer dedans'.
Pour
skin.php, le plus simple est de laisserskin_skeleton.phpfaire le gros du boulot, et d'intervenir au maximum par CSS plutôt que par PHP.Mais sachez qu'en cas de besoin 'lourd', vous pouvez même redéfinir la façon dont yacs construit les boîtes, les liens, les listes, etc. on Oct. 30
skins/index.phples variables de$contextutilisées par yacs, et reproduites en partie dans Principales variables utilisées pour construire une page à l'écran.Pour vous aider, le script
page.phpregroupe logiquement les fonctionsecholes plus courantes.Mais, là encore, libre à vous de repartit de zéro et de tout refaire à votre manière pour les clients riches qui ont des besoins spécifiques
Dans yacs, cette fonction de transformation d'informations retournées par la base de données est structurée sous le nom 'layout'.
En gros, le layout reçoit un pointeur sur des résultats de requête, et il doit construire du HTML avec ça.
Il y a pas mal de script
layout_xxxx.phpdans yacs, où lexxxxdécrit les objets manipulés, et comment ils sont mis en forme.En tant que développeur, vous pouvez ajouter un script de layout où vous le souhaitez, popur les articles, les sections, etc. L'activation se fait par configuration des sections cibles, en indiquant la terminaison du nom du script. Vous taperez 'trucs' pour changer l'apparence des articles telle que construite par
layout_articles_as_trucs.php.Christian, de qulle main parles-tu ? on Oct. 30
dans skins/index.php on Oct. 30
Cette image n'est pas dans le corps de la page, elle peut être gérée complètement séparément si besoin. on Oct. 30
Si le nom de ce script, comme dans mon exemple, se termine par 'trucs', c'est ce que tu dois taper. on Oct. 30
layout_articles_as_gabuzomeu.php, alors pour l'activer le mot-clé sera 'gabuzomeu', etc.La page 5 de la présentation, intitulée 'Création d'une identité visuelle', reprend l'ensemble des éléments à maitriser, y compris les scripts PHP associés. on Oct. 30
mais ca on s'en rend vite compte aussi on Oct. 30
Comme l'a indiqué Christian, les scripts de layout doivent respecter un certain formalisme, afin que yacs sache comment les appeler, et ceci s'effectue par spécialisation du script
skins/layout.php.Que peux-t-on faire avec ce genre d'extension ? on Oct. 30
view_as_foo_barest activée pour un article, yacs charge le scriptarticles/view.php, mais passe aussitôt la main àarticles/view_as_foo_bar.php.Ainsi, vu de l'extérieur on appelle une page comme d'habitude. Mais dans l'arrière-boutique, yacs délègue le traitement à un autre script.
C'est comme cela qu'a été construite l'extension qui nous permet de clavarder ce soir. on Oct. 30
articles/view_as_chat.phpa été ajouté à la distribution standard, plutôt que de faire gonfler le scriptarticles/view.phpdéjà existant. on Oct. 30salut thierry on Oct. 30
articles/view.php, le mieux est de dupliquer l'un des scripts de référence et de le modifier progressivement.Coucou Thierry on Oct. 30
Question d'ergonomie dans la création de sections. on Oct. 30
Quelques exemples :
- 'tick' pour lancer des traitements en tâche de fond, de temps en temps (toutes les 5 minutes environ)
on Oct. 30control/scan.hpque je vous laisserair regarder par vous-mêmes.Tof, oui, c'est même fait pour ça ...
Yacs consolide l'ensemble des prises d'extension actives dans le script
parameters/hooks.php, c'est donc assez facile de vérifier qui est qui et qui fait quoi.Pour écrire une extension, vous pouvez vous inspirer de celles qui sont fournies avec yacs, notamment dans le répertoire
agents.Je ne m'étendrai pas plus ce soir sur les prises d'extension, pour passer aux overlays. ok ? on Oct. 30
yanys, oui, je me suis trompé, il s'agit bien de
hooks.include.phpethooks.xml. Les deux ont le même contenu, mais sous des formes différentes.Les overlays ? on Oct. 30
control/scan.php. Bon courage ...Les overlays, à quoi ça sert ? on Oct. 30
Un article d'introduction aux overlays est Un overlay ? c'est quoi ? Comment on s'en sert ? et je ne reviendrai pas sur les bases.
La mécanique mise en place par yacs pour gérer ces surcharges (la traduction du terme overlay) est assez sophistiquée, mais relativement légère pour le développeur.
Ca se rapproche des beans Java, pour ceux qui connaissent.
Lorsqu'une page surchargée est affichée, yacs appelle plusieurs fonctions membres de l'overlay, comme suit :
Lorsqu'une page est modifiée, yacs appelle les fonctions membres suivantes :
- get_tabs(), pour ajouter des onglets au formulaire si besoin
on Oct. 30Christian, pour en enlever ?
Thierry, il n'y aurait pas moyen de remettre des puces aux listes dans le nouveau thème ? Elles me manquent, ces petites bêtes ...
Christian, je dirais que, pour en enlever, il suffit de ne pas en mettre ? on Oct. 30
get_tabs()en lecture et en modification, voici un bout de code qui devrait aider : on Oct. 30enfin editeur mais pas des options...
Et voilà ... on Oct. 30
overlays/issue.phpva évoluer pour utiliser les onglets, ce sera donc le meilleur exemple à regarder en priorité.Pour le lien avec la base de données, le mieux est d'ajouter une fonction membre
setup()décrivant le nom de la ou des tables associées, ainsi que leur structure. on Oct. 30setup()d'un overlay, et pour qu'il l'intègre dans les opérations de maintenance de la base, le mieux est d'utiliser une prise d'extension. Créez un répertoire du même nom que votre overlay, et ajoutez-y un script d'extension qui liera l'événementcontrol/setup.phpavec la fonction de votre overlay, par exemplemon_overlay::setupLa aussi, je me dis qu'il faudrait créer un exemple de prise d'extension pour l'overlay issue, ça vous servirait... on Oct. 30
Christian avait des questions sur l'overlay 'mutable', ça vous tente ?
Allo ? on Oct. 30
mais allons-y on Oct. 30
Le problème que l'on cherche à résoudre est celui des pages 'qui changent toutes seules', ou plutôt sans intervention humaine, ou en complément d'une intervention humaine.
Pour moi, le problème s'est posé avec les rallyes de voiture sur www.zaniroli.com il y a quelques mois.
Chaque conducteur de véhicule a sa propre page perso, avec les photos des sponsors, les commentaires des copains, etc. Rien que du très classique jusque là.
Mais il a fallu, en plus, incruster les résultats de chaque concurrent dans sa page perso et ce, de la façon la plus automatique possible. Comment faire ?
C'est là que l'overlay 'mutable' entre en jeu.
Nous avons ajouté un overlay à chaque page concurrent, en spécifiant, comme identifiant d'overlay, le nom de la course et le numéro du concurrent. on Oct. 30
Vous pouvez faire manuellement cette opération en lançant
overlays/mutables/edit.php.Le script pour l'incrustation des résultats zaniroli fait la même chose, mais en prenant en entrée un fichier texte à la place.
Questions ? on Oct. 30
Christian, parce que je n'ai pas la table des classements, et parce que l'opération doit être faite sur chaque page concurrent. 100 voitures = 100 pages à modifier chaque jour.
Tof, mutable, en anglais, c'est la notion d'évolutif. Une variable qui ne change jamais, en java, est réputée immutable, ou constante, c'est selon. on Oct. 30
merci, je n'arrivais pas à me rappeler ce que ça signifiait; ça me permet de mémoriser son champ d'application - évolutif ici.
on Oct. 30overlays/mutables/edit.php, quelque soient leur emplacement dans l'arbre de contenu, les droits d'accès, etc. on Oct. 30Si vous savez capturer l'état de chaque machine d'une manière ou d'une autre, alors avec un peu de programmation, et en vous inspirant de l'overlay mutable, vous pouvez mettre à jour la page de chaque machine sans aucune intervention humaine.
Bref, l'overlay 'mutable' est une première incursion dans la notion de CMS mis à jour par flot de données externes, et non par édition de page faite par un surfeur humain.
On va tout droit vers le Process 2.0 là ... on Oct. 30
ceci parce que le script overlays/mutable/edit.php est lançable "à volonté", c'est ça ?
on Oct. 30et je le regarderai de près on Oct. 30
Merci Denis, à bientôt ? on Oct. 30
Un autre usage est l'ajout de boutons en bas de page pour construire des workflows élémentaires. on Oct. 30
Voir
behaviors/index.phppour plus d'info. on Oct. 30Chers développeurs, êtes-vous satisfaits ? on Oct. 30
très statisfait
et FirebugFinalement, une fois que l'on a
dépassé un stade avec CSS, on est moins lié au WYSIWYG on Oct. 30
Tu utilises toujours "commander" ? on Oct. 30
tools/embed.phpqui montre comment mettre yacs "autour" d'une application existante, par ajout de code avant et après. on Oct. 30J'ai oublié de mentionner un point très important pour les développeurs PHP, qui est la disponibilité de l'ensemble de yacs sur le serveur Google Code, par accès SVN. on Oct. 30
Et je vais te laisser conclure en te remerçiant de cet exposé si clair. J'aime lire ça ! on Oct. 30
Allez, c'est tout pour ce soir, alors dormez bien et à bientôt. on Oct. 30