AllEvents - AllEvents - A Joomla Component by Christophe Avonture
Évaluer cet élément
(2 Votes)

La copie des slides de la présentation de AllEvents 3.0 est disponible en téléchargement.  Cliquez sur le bouton ci-dessous pour accéder au téléchargement.


Merci à tous ceux qui ont assisté à la présentation et à l'accueil qu'ils ont réservé à AE3; je suis heureux de voir que le développement de AE continue à répondre à vos besoins.    Merci!

dimanche, 24 mars 2013 09:53

Joomla!Day 2013, et c'est parti

Écrit par
Évaluer cet élément
(1 Vote)

Joomla!Day 2013 - Toulouse; jour  (photo Radek Suski)Une fois encore, l’AFUJ a fait fort : une organisation locale impeccable, une équipe ultra-motivée et un accueil « on ne peut pas mieux »; le Joomla!Day 2013 de Toulouse a commencé fort.

Et cela débute avant même le petit déjeuner alors que je m’apprête à prendre l’ascenseur et que j’entends une personne sortir de sa chambre; je l’attends, elle me reconnaît car on s’était croisé à Strasbourg en 2012. La conversation s’instaure immédiatement; naturellement. Nul doute : le Joomla !Day a commencé. Bienvenue dans la famille.

Et cela continue; d’autres personnes se joignent à nous, nous sommes déjà six à tables; trois Suisses, une Américaine, un Français et un Belge; une septième nous rejoins à l’heure du départ. Arrivé à l’IUT, un grand nombre de personnes attendent déjà devant l’entrée. Marc, Simon Grangé, Jean-Marie, Adrien, Yann, Eric, Nicolas, … des habitués, des organisateurs. Même si on ne se voit qu’une fois l’an, c’est un réel plaisir de les retrouver; prendre de leurs nouvelles, « as-tu fait bonne route », « as-tu réussi à trouver un nouvel appartement », « merci pour … », … Joomla, c’est aussi ça, c’est surtout ça ! Une communauté qui a réussi à fédérer des utilisateurs de tout horizon et qui partagent ensemble un moment d’ouverture, d’écoute, de partage. J’invite sincèrement à tout qui n’a pas encore participé à un Joomla!Day de venir faire l’expérience. Je décline toutefois tout sentiment de manque dès le lendemain de la clôture.

Mais avant de parler de clôture, parlons du programme de ce Samedi 23 mars, du moins à celui auquel j’ai pû prendre part. Le matin, Marc Studer et Jérome de HikaMarket relèvent le challenge de mettre le pied à l’étrier du public présent à programmer un composant, un module et un plugin en une heure trente.

Radek Suski de SobiPro explique l’évolution de son logiciel, depuis son premier site web aux gifs animés à un système de continu des plus évolué et flexible qui existe aujourd’hui dans le monde Joomla. SobiPro étant un composant de gestion de contenu dont le système de templating permet d’avoir un site attractif et professionnel pour présenter des annuaires, des restaurants, annonces, listes, …

Après la pause déjeuner, une petite nouveauté : les Lightning Talks. Il s’agit d’un format où plusieurs orateurs se succèdent au rythme d’un orateur toutes les cinq minutes; durée pendant laquelle il tente de donner des trucs et astuces parfois méconnus et qui offrent une réelle valeur ajoutée. Ainsi, Mihàly Marti nous a donné la primeur de son nouveau projet : un site web où l’on se crée une liste d’extensions favorites et qui permet alors d’installer un Joomla avec toute ces extensions installées et gérées en un seul lieu. Via son interface, toutes ces extensions s’installe à-la-queue-leu-leu et il ne faut plus aller soi-même sur le site de l’éditeur 1, télécharger et installer le composant, sur le site de l’éditeur 2, sur celui de l’éditeur 3, etc. Ce qu’on fait tous aujourd’hui lorsqu’il faut installer un nouveau Joomla. L’extension de Mihàly centralise toutes ces extensions dans une liste de favoris et l’installation se fait en chaîne; les mises à niveau sont également centralisées. Un très beau projet; excessivement utile pour tous ceux qui doivent maintenir plusieurs sites.

Ma conférence pointe le bout de son nez. J’ai l’honneur d’avoir l’amphithéâtre. Une heure durant laquelle j’ai le plaisir de montrer AllEvents 3.0 et d’expliquer les différences de concept entre les versions actuelles et le nouveau paradigme, l’approche définitivement orientée plugin. Une trentaine de personnes sont présentes, le contact se fait alors même que le lieu de ne se prête pas trop à la chose. 

A l’issue de la conférence, six ou sept personnes m’attendent pour me poser une question, m’exposer un besoin, …

Je dois bien l’avouer, c’est juste un moment de jouissance : exposer son travail, recevoir le feedback immédiat du public quant à celui-ci et ses choix; confirmer que la direction est bonne, … et recevoir des remerciements, oui, c’est jouissant, cela regonfle les batteries au maximum et cela donne envie de continuer. Une dame vient me trouver et me dit « Vous ne devez pas vous justifier de demander quelques euros pour votre travail; lorsqu’on voit le nombre de fonctionnalités additionnelles, il n’y a plus lieu de discuter de cela. »

L’AFUJ termine la journée avec son traditionnel bilan, présentation des activités de l’année écoulée, bilan, reconduction du conseil d’administration et élection d’un nouveau membre. Félicitations Pierre Sempé ! Nous comptons sur toi pour faire de l’excellent travail au sein du CA.;-)

Les conférences sont terminées; nous nous rendons au restaurant de l’université où le chef nous a préparé un repas de plusieurs services, deux entrées, plat, dessert et café et tout est excellent. Petit regret que cela se fasse sur le site même de l’université; c’eût été plus sympa d’aller en ville, se promener, prendre un verre à une terrasse. Côté pratique avant tout. Et, une fois encore, même si on ne connaît pas son voisin de gauche, celui de droite, … la discussion est naturelle et rien n’est forcé.

L’association des utilisateurs francophones de Joomla! est vraiment un monde à part; un monde où chacun se sent membre d’une même famille. C’est en tout cas mon sentiment; pour la troisième année consécutive.

jeudi, 21 mars 2013 10:11

Mise à disposition de AllEvents 3.0 - Beta 1

Écrit par

AllEvents - BetaLa version Beta 1 de AllEvents 3.0 est disponible.   Vous pouvez la télécharger dans la section beta, menu download.

Il s'agit d'une version pour Joomla 3.0; le temps me faisant défaut pour garantir aujourd'hui un compatibiltié descendante.

Pour ceux qui consultent le blog régulièrement, vous savez que AE3 est bien plus qu'un lifting ou mise-à-niveau pour Joomla 3.    AE3 a été repensé en termes d'ouverture : les contraintes que je me suis fixée sont, dans l'ordre, ouverture, ouverture et ... ouverture.

Tout ce qui n'est pas essentiel à la gestion d'évènements a été migré sous le forme de plugins.   Et donc, les notions additionnelles telles que agenda, activité, public, album photo, commentaires, ressources, ... et même formulaire d'inscription ont été retiré du code du composant.

 

Le composant est devenu ignorant

Pour simplifier les choses, on peut dire que le composant ne sait faire plus qu'une seule chose : gérer des évènements.   Ce n'est pas tout à fait exact car le composant est devenu un dispatcheur : il va recevoir toutes les requêtes et va questionner les plugins de type AllEvents : "Sais-tu gérer la tâcher ... ?"   Si le plugin réponds par l'affirmative, le contrôle lui est passé; le plugin réalisé son job et il renvoie au composant un résultat (du code html).

Le composant est donc totalement ignare des notions agendas, activités, inscriptions, ...   Il va "juste" se contenter de donner temporairement le contrôle à un plugin.   Cette ouverture a un bénéfice majeur : l'ajout de fonctionnalités pour AllEvents n'a jamais été aussi simple.   A priori, lorsque AE 3 sera en version stable, il ne devrait plus être nécessaire d'intervenir dans le code pour implémenter une nouvelle fonctionnalité.

Plugins, plugins, plugins

AE3 vient avec une autre nouveauté attendu : des "events".    C'est une des conséquences de l'ouverture aux plugins.   Le composant va maintenant générer des évènements tels que onExecuteTask, onBeforeSaveEnrolment, onAfterSaveEvent, etc.   Il y en a des dizaines.    A quoi cela sert ?    Prenons onAfterSaveEvent qui est donc généré par AE lorsqu'un évènement vient d'être sauvé.   En capturant cet "event", un plugin peut donc être notifié qu'un évènement vient d'être créé et pourra publier le titre de l'évènement sur Twitter ou envoyer un email "Un nouveau évènement vient d'être créé..." à une liste de distribution.

onBeforeSaveEnrolment pourra lui être capturé pour faire une passerelle vers une solution de ePayment et, si le paiment est réalisé, le plugin retournera la valeur True pour indiquer que l'inscription est validée.   Une valeur de retour False interdira l'inscription.

XML, XML, XML

J'aurais râté mes trois objectifs si, pour changer un petit truc dans AE, il fallait systématiquement aller dans le code et "hacker" les fichiers natifs de AllEvents.  Envie d'un bouton en plus dans une vue backend ?  Envie d'une colonne en plus dans une liste ?   Ou, souhait de supprimer une colonne ?  Ajout d'une nouvelle tâche ?  Changer le titre d'une vue ?  Le niveau de permissions requis pour afficher une page ?   Vous voulez que la colonne Truc s'affiche sur un téléphone exclusivement ?     Tout cela est possible et bien plus sans même aller dans le code.   

Chaque vue est accompagnée d'un fichier XML qui est un "bête" fichier texte.   Il suffit de l'ouvrir, de comprendre comment cela fonctionne et de faire votre petite modification.   Lire les billets concernant les fichiers "manifest".

Installation

L'installation de AE 3 peut se faire "par dessus" une installation AE 1.5.2 ou 2.5.2 mais je vous recommande toutefois de désinstaller ces versions-là car des dizaines de fichiers ont été supprimés : en installant "par-dessus", vous aurez donc des fichiers inutilisés sur votre serveur web.  Pour rappel, lors d'une désinstallation, AE ne supprime pas les données qui se trouvent en base de données; vous ne perdez donc rien !

Au risque de me répéter, la version Beta 1 est une version allégée; il manque un grand nombre de plugins que j'ajouterai au fûr et à mesure (dans les semaines à venir).

But du script : prendre un backup des fichiers de votre site depuis une simple url.

Je vous propose le petit code ci-dessous qui m'a grandement facilité la sauvegarde de sites Joomla et non Joomla.   La majeure partie du script a été développée par Archan Ghosal (http://ramui.com/articles/php-zip-files-and-directory.html).  J'ai ajouté quatre lignes de code (lignes 44 à 47) afin que le script soit autonome et que l'archive soit immédiatement proposée en download par le navigateur.

Comment cela fonctionne ?

  1. Ouvrez votre éditeur de texte préféré (Notepad++ p.ex.) et créez un nouveau document.
  2. Copiez/collez le code ci-dessous dans l'éditeur.
  3. Sauvez le fichier avec l'extension .php (p.ex. "zip.php")
  4. Ouvrez votre client FTP et connectez-vous sur votre site.
  5. Uploadez le fichier zip.php dans le dossier que vous désirez archiver (soit la racine du site pour tout archiver soit un sous-dossier).
  6. Vous pouvez fermer votre client FTP.   Ouvrez votre navigateur préféré et écrivez l'url pour qu'elle pointe vers le dossier où se trouve le fichier zip.php (p.ex. monsite.fr/zip.php)

Le script va alors créer une archive nommée backup.zip (voir ligne 45 du script) et va compresser tous les fichiers et tous les dossiers enfants.  Au final vous avez une copie parfaite du dossier.

Une fois le fichier zip achevé, votre navigateur va vous le proposer en download.

<?php
/*
Copyright (c) 2011 <a href="http://ramui.com.">http://ramui.com.</a> All right reserved.
This product is protected by copyright and distributed under licenses restricting copying, distribution. Permission is granted to the public to download and use this script provided that this Notice and any statement of authorship are reproduced in every page on all copies of the script.
*/
class recurseZip {
   private function recurse_zip($src,&$zip,$path) {
      $dir = opendir($src);
      while(false !== ( $file = readdir($dir)) ) {
         if (( $file != '.' ) && ( $file != '..' )) {
            if ( is_dir($src . '/' . $file) ) {
               $this->recurse_zip($src . '/' . $file,$zip,$path);
            } else {
               $zip->addFile($src . '/' . $file,substr($src . '/' . $file,$path));
            }
         }
      }
      closedir($dir);
   }
   public function compress($src,$dst=''){
      if(substr($src,-1)==='/'){$src=substr($src,0,-1);}
      if(substr($dst,-1)==='/'){$dst=substr($dst,0,-1);}
      $path=strlen(dirname($src).'/');
        
      @unlink($dst);
      $zip = new ZipArchive;
      $res = $zip->open($dst, ZipArchive::CREATE);
      if($res !== TRUE){ echo 'Error: Unable to create zip file'; exit;}
      if(is_file($src)) {
         $zip->addFile($src,substr($src,$path));
      } else {
         if(!is_dir($src)){
            $zip->close();
            @unlink($dst);
            echo 'Error: File not found';
            exit;
         }
         $this->recurse_zip($src,$zip,$path);
     }
     $zip->close();
     return $dst;
   }
}
$z=new recurseZip();
echo $z->compress(".","./backup.zip");
header('Location: backup.zip');
exit;
?>

Veuillez notez que le script "ne sauve que" les fichiers; pas la base de données.   Le meilleur outil pour sauvegarder complètement un site Joomla reste Akeeba Backup.

Ne laissez pas le fichier zip.php sur votre site de production car n'importe qui pourrait l'utiliser.  Sinon modifiez le code source afin p.ex. de demander un mot de passe ou tout autre mécanisme de protection.   Le code est libre; vous pouvez l'adapter en prenant juste soin de mentionner le copyright qui se trouve au début du script.

Sur certains hébergeurs (dont le mien), il est possible de rencontrer une erreur 500 "Internal Server Error" à l'installation de AllEvents 3.0.    Après une journée de recherche en tout genre; je n'ai pas trouvé d'erreur au niveau du composant mais un soucis, une spécificité au niveau de l'hébergeur.

Internal Server Error - Erreur 500

Je ne peux pas encore expliquer le problème mais j'ai une solution qui est fonctionnelle sur mon site; j'espère qu'il en sera de même chez votre hébergeur : il suffit de créer un fichier nommé php.ini dans le dossier /administrator de Joomla.

Internal Server Error - Fichier php.ini

Pour créer un tel fichier, connectez-vous sur votre site grâce à votre logiciel de FTP.  Rendez-vous dans le dossier /administrator de votre site et là, faites un clic droit dans votre logiciel pour avoir un menu contextuel qui permet de créer un nouveau fichier (ou une manipulation similaire dans votre client FTP).  Le nom du fichier doit être php.ini.

C'est très étrange mais cela fonctionne, plus d'erreur 500.   Cela démontre que l'hébergeur procède à la lecture du fichier ou, du moins, initialise certaines choses dès lors que le fichier est présent (même si vide).

En discuter sur le forum

Informations supplémentaires

  • Package Free Ce billet concerne le package Free et est donc immédiatement disponible dans la version gratuitement téléchargeable de AllEvents.
Page 3 sur 69