<h3>But de ce Document</h3>
<p class="spip">Ce document me sert de mémo pour installer le CMS joomla sur une kubuntu. L’installation sur une autre distribution ne devrait pas poser de problème majeur.</p>

<h3>Situation initiale</h3>
<p class="spip">Une machine sous kubuntu avec apache2, php5 et mysql5 opérationnels. Voilà pour la partie technique. Et pour la partie humaine, un utilisateur qui ne connaît pas spécialement les CMS hormis l’installation de 2 sites avec SPIP en utilisant le script standard à peine modifié pour l’un et l’installation d’un script tout fait pour l’autre. Sinon je pratique régulièrement l’interface d’administration de SPIP, et l’utilise (quel merveilleux éditeur...) en ce moment même pour rédiger cet article.</p>

<h3>Installation</h3>
<p class="spip">Récupération de la version Française <a href="http://www.joomla.fr/" class="spip_out">ici.</a></p>

<p class="spip">Il suffit de décompresser l’archive sur le serveur (<strong class="spip">/var/www/joomla</strong> dans mon cas)</p>

<p class="spip">Le paramétrage se fait ici : http://localhost/joomla/installation</p>

<p class="spip">L’écran des vérifications de pré-installation pour Joomla indique que le fichier de configuration ne peut pas être écrit. J’ajoute le droit qui va bien.</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>jeb@ubuntu:/var/www$ ls -ld joomla/<br />
drwxr-xr-x 17 jeb www-data 4096 2007-09-21 20:00 joomla/<br />
jeb@ubuntu:/var/www$ chmod g+w joomla/<br />
</code></div>
<p class="spip">Il arrive parfois que <strong class="spip">MySQL Support</strong> indique no alors que tout est correct et que phpmyadmin fonctionne parfaitement. Pour corriger ceci, il suffit d’ajouter <strong class="spip">3306</strong> au bout de <strong class="spip">mysql.default_port =</strong> dans le fichier /etc/php5/apache2. Et après le redémarrage d’apache joomla indique maintenant qu’il trouve le support MySQL.</p>

<p class="spip">Une nouvelle vérification, et tout est maintenant vert.</p>

<p class="spip">Pour la configuration de la base de données mysql, il faut créer une nouvelle base de données dans mysql ainsi qu’un nouvel utilisateur qui aura tous les droits sur celle-ci.</p>

<p class="spip">Configuration du compte admin, installation des exemples et on arrive sur la console d’administration.
Il ne reste plus qu’à se ’loger’ (admin + le mot de passe qu’on vient de saisir).</p>

<p class="spip">On commence par renommer le compte admin en autre chose avec le <strong class="spip">user manager</strong>, on en profite également pour passer la langue par défaut du front-end et du back-end au Français. Il suffit de se ’reloger’ avec ce nouveau nom pour pouvoir utiliser joomla en Français. On va même l’indiquer comme langue par défaut dans la <strong class="spip">Gestion des langues</strong>.</p>

<p class="spip"><strong class="spip">Aide / Infos système / Permissions des dossiers</strong> permet de connaître les dossiers dans lesquels joomla peut écrire. Pour l’instant tout est unwritable,  voici les commandes à lancer pour autoriser joomla à y écrire.</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>sudo chown www-data\: administrator/backups/ administrator/components/ administrator/modules/ administrator/templates/ administrator/cache/<br />
sudo chown www-data\: components/ cache/ modules/ tmp/<br />
sudo chown -R www-data\: images/ plugins/ administrator/language/ templates/ language/</code></div>
<h3>L’environnement de développement de joomla</h3>
<p class="spip">Faire un site avec joomla va consister à assembler et paramétrer un certain nombres d’items. Il y a :
<br /></p>
<li> les composants : Il s’agit de minis applications. Ils sont appelés par joomla pour fabriquer les pages HTML. Les composants sont découpés en 2 parties. Une qui permet de le paramétrer depuis le back-end et l’autre qui permet de l’afficher dans le front-end.
<br /><li> Les modules : Il s’agit de petites extensions.
<br /><li> Les plugins : Ils permettent d’exécuter du code en fonction de certains évènements.
<h3>Comment ...</h3>
<p class="spip">Cette rubrique va contenir un mini mémo pour des opérations basiques.</p>

<li> <strong class="spip"> <i class="spip">Installer une extension</i> </strong>
<p class="spip">On en trouve plein <a href="http://extensions.joomla.org/" class="spip_out">ici.</a>
On va télécharger <a href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1776/Itemid,35/#action" class="spip_out">celle-ci</a>
et l’installer à l’aide du menu <strong class="spip">Extensions / Installer/Désinstaller</strong>.</p>

<li> <strong class="spip"> <i class="spip">Installer un template</i> </strong>
<p class="spip">On va télécharger <a href="http://www.lavinya.net/blog/2007/07/31/lavinya-v6-free-joomla-template-for-joomla-15-released/" class="spip_out">celui-ci</a> et l’installer à l’aide du menu <strong class="spip">Extensions / Installer/Désinstaller</strong>.</p>

<p class="spip">Pour visualiser le résultat, dans le menu <strong class="spip">Extensions / Gestion des templates</strong>, on définit le template par défaut, et il ne reste plus qu’à se connecter sur le site pour admirer le résultat. Visiblement sur celui-ci, il manque quelque chose car le menu <i class="spip">topmenu</i> n’apparaît pas.</p>

<p class="spip">Un template que je trouve vraiment bien :<br>
Demo : <a href="http://www.redevo.net/joomla15/index.php" class="spip_out">http://www.redevo.net/joomla15/index.php</a><br>
Download : <a href="http://www.redevo.net/libaidocuments/RedEvo_Aphelion.zip" class="spip_out">http://www.redevo.net/libaidocuments/RedEvo_Aphelion.zip</a></p>

<li> <strong class="spip"> <i class="spip">Créer un composant</i> </strong>
<p class="spip">Ceci est un résumé des explications données <a href="http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,components:hello_world/" class="spip_out">ici.</a></p>

<p class="spip">joomla utilise le modèle MVC qui sépare donc le Modèle, la Vue et le Contrôleur.
Pour l’exemple classique "Hello world", voici ce que cela donne ( dans un MVC simplifié ) :
<br /></p>
<li> le contrôleur :
<div style='text-align: left;' class='spip_code' dir='ltr'><code><?php<br />
// Program : hello.php<br />
<br />
// no direct access<br />
defined( '_JEXEC' ) or die( 'Restricted access' );<br />
<br />
// require the html view class<br />
jimport( 'joomla.application.helper' );<br />
require_once( JApplicationHelper::getPath( 'front_html', 'com_hello' ) );<br />
<br />
$task = JRequest::getVar( 'task' );<br />
$name = JRequest::getVar( 'name', 'John' );<br />
<br />
switch ($task) {<br />
        case 'show':<br />
        default:<br />
                hello_HTML::show( $name );<br />
                break;<br />
}<br />
?></code></div>
<li> La vue :
<div style='text-align: left;' class='spip_code' dir='ltr'><code><?php<br />
// Program : hello.html.php<br />
<br />
// no direct access<br />
defined( '_JEXEC' ) or die( 'Restricted access' );<br />
<br />
class hello_HTML {<br />
<br />
        function show( $name ) {<br />
                echo 'Hello ' . $name . ' in our World!';<br />
        }<br />
<br />
}<br />
?></code></div>
<p class="spip">Ces 2 fichiers sont copiés dans le dossier <strong class="spip">/components/com_hello</strong>.</p>

<p class="spip">Le résultat est visible à cette adresse : http://localhost/joomla/index.php ?option=com_hello&name=Jibux</p>

<p class="spip">Pour faire du "vrai" MVC dans joomla, c’est un peu plus compliqué et c’est expliqué <a href="http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,tutorials:components/" class="spip_out">ici (MVC1 .. MVC4).</a></p>

<li> <strong class="spip"> <i class="spip">Créer un module</i> </strong>
Ceci est un résumé des explications données <a href="http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,modules:hello_world/" class="spip_out">ici.</a>
<li> <strong class="spip"> <i class="spip">Installer une nouvelle langue</i> </strong>
<li> <strong class="spip"> <i class="spip">Installer un template "à l’arrache"</i> </strong>
<p class="spip">décompresser en local le template</p>

<p class="spip">copier les dossiers/fichiers dans le répertoire <strong class="spip">templates</strong> du serveur</p>

<p class="spip">ajouter une entrée dans la table <strong class="spip">templates_menu</strong> avec :
<br /></p>
<li> template = le nom du template (donc du répertoire dans le dossier templates)
<br /><li> champ menuid = 0
<br /><li> champ client_id = 0
<h3>Les liens utiles</h3>
<li> La référence pour développer sous joomla <a href="http://dev.joomla.org/" class="spip_out">http://dev.joomla.org/</a>
<br /><li> <a href="http://dev.joomla.org/images/stories/Diagrams/j11layerdiagram.png" class="spip_out">L’architecture du framework</a>
<br /><li> <a href="http://extensions.joomla.org/" class="spip_out">Toutes les extensions</a>
<h3>Historique des modifications</h3>
<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Version</strong></th><th scope='col'><strong class="spip">Date</strong></th><th scope='col'><strong class="spip">Commentaire</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>0.1</td><td>22/09/2007</td><td>Création par Jibux</td></tr>
</tbody>
</table>