Christophe

Christophe

Christophe -Développeur de :

  • aeSecure; logiciel de protection de sites web Apache (Joomla, WP, Drupal, ...) http://aesecure.com
  • AllEvents; gestionnaire d'évènements pour Joomla

 

Si vous êtes utilisateur de Aptana Studio, lorsque vous créer un nouveau projet afin de programmer votre composant, il est bien utile de pouvoir faire un clic sur le nom d'une fonction/méthode et d'immédiatement arriver dans le code source de la fonction/méthode.

Auto-complétion pour Aptana Studio

Pour ce faire, il faut activer l'auto-complétion Joomla :

  1. Dans Aptana, ouvrez votre projet puis cliquez sur le menu "Project"
  2. Sélectionnez l'option "Properties"
  3. Dans la liste de gauche, cliquez sur "PHP Buildpath"
  4. Dans la section de droite, cliquez sur l'onglet "External Directories" pour définir les librairies PHP
  5. Cliquez sur le bouton "Add" et sélectionnez le dossier nommé "Joomla".  Ce dossier se trouve dans le dossier librairies de votre site (p.ex. c:\mes_sites\un_site\librairies\joomla).
  6. Cliquez sur le bouton "Ok" deux fois afin de confirmer l'ajout.

merci thankyousocrates

Jacky (alias "socrates"), un professeur à la retraite, s'est spontanément proposé pour corriger la version anglophone des textes de AllEvents.  

Après un travail que j'imagine aisément gigantesque, Jacky m'a envoyé un fichier de plus de 500 traductions corrigées; des fautes de frappes corrigées, des mots qui étaient restés en Français dans le texte, des phrases remaniées, plus simples, moins scolaires.

Preuve s'il en est que tout le monde peut contribuer et m'aider.  Il ne faut pas être informaticien ni graphiste que pour apporter sa pière à l'édifice.   Merci !

mercredi, 04 avril 2012 08:48

Publication de la beta 2d

Mise à disposition de la beta 2d que vous trouverez dans la section download du site.

Nouveauté :

  • Module Liste / Calendrier :  Nouveau background CSS3 : stitched_red

Changement :

  • Désactivation (temporaire ?) du module noobSlide étant donné que le code Mootools n’était fonctionnel que sous Joomla 1.5 et qu’il nécessite d’être réécrit pour Mootools 1.2 jusqu’à 1.4.   Le soucis étant que la librairie Mootools a évolué en même temps que Joomla, passant de Mootools 1.1 (Joomla 1.5) à Mootools 1.4 (Joomla 2.5) et une partie du code de Mootools concernant les animations n'est plus fonctionnel.   Je devrais dès lors avoir plusieurs codes javascript selon la version de Mootools si je souhaite proposer le module noobSlide pour les quatre versions supportées de Joomla.   Oups!    Dans l'entretemps, j'ai donc désactiver noobSlide qui ne fonctionnait que sous J1.5.
  • Implémentation des corrections concernant les fichiers de langues fr-FR pour l'administration.   Un énorme merci à lesergeï.
  • Implémentation des corrections (nombreuses!!!) concernant les fichiers de langues en-GB pour le site et l'administration.   A very big applause to Jacky.

Corrrection de bugs :

  • Lors de l’ajout d’un nouveau formulaire, groupe d’utilisateurs, … AE affichait le message suivant : "Le champ ID contient une valeur incorrecte". 
  • plug-in AllEvents - Recherche : le plug-in était non fonctionnel sous J1.6, J1.7 et J2.5.  Il a été réécrit pour ces versions de Joomla.
  • Module Calendrier : Lors du changement de mois, une erreur fatale s'affichait (Fatal error: Call to undefined function DrawTooltips_default() in xxxxxx/modules/mod_allevents/tmpl/calendar/default/default.php on line 287) suite au non chargement du fichier déclarant les tooltips.
  • Listes d’évènements : Lorsque le paramètre « Afficher les indicateurs visuels sur les inscriptions » était activé, une information relative aux inscriptions (p.ex. « Les inscriptions à cet évènement sont clôturées. ») était affichée pour tous les évènements.  Ceci alors même que certains évènements étaient en « Autoriser les inscriptions : Non »; la mention affichée étant dès lors inutile et incorrecte.
  • Backend – Écran « Liste des inscriptions » : Ajout d’une colonne « Date de début de l’évènement » qui permet plus facilement de trier les "anciennes" inscriptions sur base de la date de l'évènement auxquelles elles se réfèrenet.
  • Backend – Écran d’édition d’un évènement – Bouton Inscription : Lorsqu’on édite un évènement depuis le backend et qu’on clique sur le bouton Inscription, AE n’affichera plus que les inscriptions pour cet évènement-là.

La liste des bugs restant étant toujours publiée dans mes todos.

mardi, 25 janvier 2011 23:56

Editer n'importe quel site web

Parfois, il est intéressant d'éditer directement dans le browser le contenu d'une page web : supprimer une image, insérer un nouveau paragraphe, ...

Une fois installé, le bookmarklet "Edit current website" va donc vous permettre d'interagir avec le site que vous consultez; n'importe quel site.   Vous activez le bookmarklet et il ne restera plus qu'à modifier la page comme si vous étiez dans un éditeur.  Un exemple concret serait par exemple de supprimer toute pollution visuelle telle que de la pub avant de faire une capture d'écran, une impression, ...

Bien évidemment, la page n'est éditée que sur votre écran et aucunement sauvée.   C'est juste pour faire des essais visuels.

http://www.labnol.org/internet/design/edit-web-pages-like-wiki/3832/

mardi, 01 février 2011 10:36

DryIcons

Le site DryIcons propose plus de 3.000 icônes gratuites.   Les icônes proposées sont d'une qualité époustouflante et différentes tailles sont disponibles.

L'énorme majorité des icônes utilisées dans AllEvents ainsi que celle sur ce site sont des icônes qui proviennent de DryIcons.

http://dryicons.com/free-icons/

DryIcons

lundi, 02 mai 2011 09:21

Holmes.css

Holmes est un bookmarklet que l'on positionne via un drag&drop dans sa barre de favoris et qui permet de mettre en évidence les erreurs de codage dans la page HTML :

  • Code CSS qui est hardcodé (c'est-à-dire "inline") : idéalement le code CSS devrait être externalisé et présent dans des fichiers .css
  • Tags HTML incomplets; attributs obligatoires manquants
  • Tags obsolètes ou non compatibles W3C

"Inline Code Finder" pour Firebug est un outil similaire de ce type existe pour Firebug.

Holmes.css

mardi, 25 janvier 2011 21:35

Trousse de secours Joomla 1.5

L'astuce ci-dessous fonctionne à merveille pour Joomla 1.5.   Si vous voulez réinitialiser votre mot de passe Joomla 2.5, je vous invite à lire le tutoriel écrit par SimonG à l'adresse suivante : http://www.kiwik.net/component/k2/item/68-joomla-2-5-réinitialiser-le-mot-de-passe-administrateur

Créer un nouvel utilisateur Super Admin

Lorsque vous n'avez plus accès à votre interface d'administration Joomla mais bien à votre interface phpMyAdmin, vous pouvez créer un nouvel utilisateur de type Super Admin afin de pouvoir à nouveau vous connecter dans le backend.

INSERT INTO `jos_users`
 (`id`, `name`, `username`, `email`, `password`, `usertype`, `block`, `sendEmail`,
 `gid`, `registerDate`, `lastvisitDate`)
 VALUES (NULL, 'Administrator2', 'admin2', %27your-email@yourdomain.com%27" >'your-email@yourdomain.com',
 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199',
 'Super Administrator', 0, 1, 25, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
INSERT INTO `jos_core_acl_aro` VALUES (NULL, 'users', LAST_INSERT_ID(), 0, 'Administrator2', 0);
INSERT INTO `jos_core_acl_groups_aro_map` VALUES (25, '', LAST_INSERT_ID());

Il y a trois requêtes SQL qu'il faut copier/coller dans un écran de type SQL dans phpMyAdmin. 

Ces requêtes vont créer un nouvel utilisateur avec un login admin2 de type Super Admin.  Le mot de passe est secret.

Veuillez remplacer le préfixe jos_ par celui qui est utilisé sur votre site.

Source : http://docs.joomla.org/How_do_you_recover_your_admin_password%3F

Réinitaliser son mot de passe

Lorsque vous avez perdu votre mot de passe, vous pouvez utiliser le script fourni à l'URL ci-dessous.   A titre personnel, je n'aime pas beaucoup; par principe de sécurité : la page vous affiche un formulaire dans lequel vous pouvez introduire votre mot de passe et vous recevez une belle instruction SQL pour faire la mise-à-jour; votre mot de passe ayant été encrypté.    Fort bien; fort simple mais entretemps vous avez peut-être alimenté une base de données qui pourrait être utilisée par des logiciels de brute-force.   Par principe de sécurité donc, évitez de taper "votre" mot de passe préféré; optez plutôt pour un mot de passe bidon que vous modifierez immédiatement dans votre backend Joomla; une fois connecté.

Lien : How to change or recover Joomla Administrator password

Imaginons le scénario suivant : vous avez un site www.monsite.be en production et vous êtes occupé à concevoir une nouvelle version dans le sous-dossier /nouveau du site.   Vous avez donc deux URLs : http://www.monsite.be pour la production et http://www.monsite.be/nouveau pour votre nouvelle version.

Comment faire pour, une fois votre développement achevé, rediriger toutes les requêtes vers le nouveau site ?

1. A la racine de votre ancien site, placez un fichier .htaccess avec les lignes suivantes

RewriteEngine on
# Adaptez monsite.be avec votre nom de domaine
RewriteCond %{HTTP_HOST} ^(www.)?monsite.be$ [NC]
# Changer 'nouveau' vers le nom du dossier qui sera utilisé pour la redirection. 
# Dans l'exemple, c'était le sous-dossier nouveau
RewriteCond %{REQUEST_URI} !^/nouveau/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Changer 'nouveau' vers le nom du dossier qui sera utilisé pour la redirection. 
# Dans l'exemple, c'était le sous-dossier nouveau
RewriteRule ^(.*)$ /nouveau/$1 [L]
# Adaptez monsite.be avec votre nom de domain
# Changer 'nouveau' vers le dossier pour votre redirection
RewriteCond %{HTTP_HOST} ^(www.)?monsite.be$ [NC]
RewriteRule ^(/)?$ nouveau/index.php [L]

2. Au besoin, activez la réécriture des URLs sur votre actuel site de production.  Ceci afin d'indiquer à Joomla de prendre connaissance du fichier .htaccess.

3. Avec votre programme FTP, ouvrez le fichier configuration.php qui se trouve à la racine de votre actuel site de production et éditez la variable $live_site

var $live_site = 'http://www.monsite.be';

Cette troisième étape est nécessaire afin que la barre d'adresse n'indique pas le nom du dossier "nouveau" et fait "comme si" le site était à la racine du domaine.

Source : http://hostmonsterforum.com/showthread.php?4533-Joomla-1.5-in-a-subfolder-using-htaccess-redirect

mercredi, 01 juin 2011 11:26

Activer le mode rewrite en local

Après avoir tenté plusieurs tests pour activer le mode SEF sur ma machine Windows 7 et pour EasyPhp 2.0.0, j'ai enfin trouvé la façon de le faire.

Fichier httpd.conf

Le fichier httpd.conf se trouve dans le dossier EasyPHPxxxx\conf_files de votre PC.   Lorsque la fenêtre de EasyPHP est affichée (double-clic sur l'icône depuis le traypanel), il faut cliquer sur le menu Configuration puis sur Apache afin d'ouvrir l'éditeur.

1. Recherchez la ligne ci-dessous afin de retirer le # qui s'y trouve comme premier caractère afin d'activer le chargement du module mod_rewrite.

LoadModule rewrite_module modules/mod_rewrite.so

2. Activez le chargement du fichier .htaccess

Si vous n'avez qu'un seul site en local, faites une recherche sur

<Directory />

Ceci fait, modifiez la valeur AllowOverride qui est à None pour y écrire All

AllowOverride All

Si vous avez plusieurs sites et donc défini des alias, procédez comme suit

Allez au bas de votre fichier.   Vous trouverez la section des alias.   

Repérez l'alias du site (p.e. MonSite) pour lequel vous souhaitez activer le mode rewrite et modifiez AllowOverride comme ci-dessous :

AllowOverride All

Fichier .htaccess

Avec l'explorateur Windows, rendez-vous dans le dossier de votre site.   P.e. C:\Sites\MonSite.

Si ce n'est déjà fait, renommez le fichier htaccess.txt en .htaccess.

Editez ce fichier.   Certains éditeurs comme le simple Notepad n'autorisent pas d'éditer un fichier n'ayant pas de nom (.htaccess étant une extension), vous pouvez utiliser Notepad++ qui le fait très bien.

Cherchez la ligne RewriteEngine On pour en retirer le diése qui se trouve comme premier caractère

RewriteEngine On

Retrouvez la ligne RewriteBase et retirez le dièse et indiquer le nom de l'alias comme ci-dessous :

RewriteBase /monsite

Joomla

Connectez-vous dans l'interface d'administration de Joomla et allez dans l'écran de configuration générale.  Dans l'onglet "Site", section SEO, activez les URLs explicites et le support de mod_rewrite soit les deux premières options.

Version adaptée 13/04/2012 : intégration avec Joomla, récupération des données de connexion depuis le fichier configuration.php

Dans votre vie de Joomleur aguéri, il arrivera vite le moment où vous auriez envie de faire un peu de ménage dans une base de données de votre serveur MySQL.   

Les situations peuvent être multiples : vous avez installés plusieurs extensions qui, une fois désinstallées, gardent toujours des tables dans votre base de données.  Ou, comme moi à cet instant, vous faites des essais de migration de votre site vers une version plus récente de Joomla; tests effectués avec la petite nommée jUpgrade.  jUpgrade migre votre site et duplique les tables.   Vos tables j15_ p.e. seront dupliquées en j25_.

Une fois la migration effectuée, vous voudrez supprimez les tables de l'ancienne version de Joomla et donc supprimer toutes les tables commençant par j15_xxx ou, au contraire, si la migration a échouée, supprimer toutes les tables j25_xxx.     

Ce ne seront pas les situations qui manqueront.

J'ai trouvé le petit script suivant sur internet (source : http://forums.devshed.com/showpost.php?p=1849712&postcount=4).

Copiez/collez ce code dans un nouveau fichier texte et modifiez, au début du script, les credentials pour se connecter sur votre base de données.   Sauvez ensuite le fichier dans un répertoire de votre site Joomla; par exemple : /administrator/drop.php.

Attention !  Ce petit script est prévu pour un usage ultra-temporaire : une fois votre travail achevé, supprimer le fichier car il peut se réveler dramatique si quelqu'un l'utiliserait à votre insu.

<?php
// Ce script va afficher la liste des tables de votre base de données.  
// Le paramètre "prefix" dans le querystring va vous permettre d'indiquer 
// un préfixe (p.e. "tmp_"). Toutes les tables dont le nom commencera 
// par ce préfixe seront supprimées dans votre base de données
//
// Exemple : http://localhost/drop.php?prefix=tmp_
//
// Script php créé par Paul Ellis en se basant sur du code trouvé sur www.php.net. 
// http://www.ellisfoundation.com/freemusic/
// Modifié par Brian Simecek pour l'ajout de quelques messages d'erreurs
// Modifié par Christophe Avonture pour un affichage plus efficace, un code plus compact et une intégration avec le CMS Joomla
   
   if (file_exists('configuration.php')) {
       
      require_once('configuration.php');
      $config = new JConfig();   
      $con = mysql_connect($config->host, $config->user, $config->password);   
	  
	  if ($con==false) { print 'Could not connect to mysql'; die(); }
   
      // Variables
      $tablesucess=false;

      $result = mysql_list_tables($config->db);
      if (!$result) { print "DB Error, could not list tables\nMySQL Error: " . mysql_error();exit; }
   
      echo '<h3>TABLE LIST (database='.$config->db.'):</h3>';
      echo '<h5>Syntax to drop multiple tables by prefix is "'.basename(__FILE__).'?prefix=prefix_that_the_tables_have"</h5>';
      echo '<ol>';
   
      if (!(isset($_GET['prefix'])) || (empty($_GET['prefix'])) ) {
         while ($row = mysql_fetch_row($result)) echo '<li>'.$row[0].'</li>';
         $tablesucess=true;   
      } else {
         echo '<ol>';
         while ($row = mysql_fetch_row($result)) {
            if (substr($row[0], 0, strlen($_GET['prefix'])) == $_GET['prefix']) {
               $tablesucess = true;
               $query = "DROP TABLE `".$row[0]."`";
               $status = mysql_query("$query");			
               if ($status) {
	              echo '<li>'.$row[0].' has been dropped</li>';
               } else {
                  echo '<li>Failure when dropping '.$row[0].'</li>';
	              die(mysql_error());
               }
            }
         } 
      }
	  
      echo '</ol>';

      if (!$tablesucess) { echo  '<h5>Prefix Does Not Match Any Tables Within database '.$config->db.'</h5>'; die(); }

      mysql_free_result($result);
   
   } else {
   
      print 'configuration.php file of Joomla not found.';
	  
   } // if (file_exists('configuration.php'))
   
?>  

 

Page 8 sur 35