Table des matières

Version de SMF: (toutes)

Intégration de Coppermine à SMF

adapté du tutoriel de Dominic Filteau

La procédure qui suit permet d'intégrer Coppermine et SMF de façon transparente. Ce n'est pas si compliqué, même si cela n'en a pas l'air à la vue de la longueur de cet article. Je n'ai rien inventé: cet article se veut être un regroupement des informations trouvées sur ce message et celui-ci, postés sur le forum de Simple Machines. J'ai aussi ajouté quelques infos supplémentaires.

Ce tutoriel a été conçu à l'aide de SMF 1.0.5, installé par le panneau de gestion Fantastico, et Coppermine 1.3.5. Il devrait toutefois fonctionner avec les autres versions de SMF.

Premièrement, installez SMF

Assurez-vous d'abord qu'il roule seul. Puis, dans le Centre d'administration → Paramètres du serveur, changez le nom du témoin par quelque chose d'unique à votre site, afin d'éviter que les autres forums SMF que vous pourriez visiter et n'ayant pas changé le nom de leur cookie ne vous déconnectent !

Dans ce tutoriel, j'assumerai que SMF est installé dans le repertoire /smf de votre compte d'hébergement.

Seconde étape: télécharger Coppermine et préparer l'intégration

<span style="color: red; font-style: italic;">NB: N'installez pas Coppermine à l'aide de Fantastico! Cela créerait une base de données MySQL pour Coppermine indépendante de celle de votre forum; or, les deux scripts doivent partager la même base de données afin que l'intégration fonctionne!</span>

Commencez par télécharger Coppermine sur votre ordinateur. Décompressez ensuite le contenu de cette archive sur votre disque dur.

Renommez le dossier de Coppermine ainsi décompressé: de cpg135, transformez-le en gallery (ou un autre nom de votre choix – rappelez-vous de ce nom!).

Et suivez ces instructions:

Dans /include/init.inc.php, cherchez:

// define('UDB_INTEGRATION', 'smf');

Remplacez par:

define('UDB_INTEGRATION', 'smf');

Dans /bridge/smf.inc.php, cherchez:

$path = '../smf';

Remplacez /smf par le nom du répertoire dans lequel vous avez installé SMF, sans préfixe (du style public_html ou www, si c'est votre cas).

Quand les changements sont effectués, chargez Coppermine dans son propre répertoire (exemple: /public_html/gallery).

Troisièmement, on récupère les informations de connexion à la base de données

Si vous avez installé manuellement SMF, vous vous souviendrez certainement des informations de connexion à la base de données que vous avez dû fournir afin de procéder à l'installation du forum. Ces informations exactes vous seront utiles pour la suite de l'installation de Coppermine. Si vous ne vous en souvenez plus ou si, comme pour mon cas, SMF a été installé à l'aide d'un panneau de gestion comme Fantastico, vous devrez récupérer les informations de connexion à votre base de données depuis les fichiers de configuration de SMF.

Ouvrez le fichier Settings.php de votre forum SMF. Cherchez quelque chose ressemblant à:

########## Database Info ##########
$db_server = 'localhost';
$db_name = 'identifiant_smf';
$db_user = 'identifiant';
$db_passwd = 'motdepasse';

Notez ces informations, vous en aurez besoin bientôt!

Quatrième étape: installation de Coppermine

Maintenant, dans votre navigateur web, exécutez le processus d'installation de Coppermine. Rendez-vous sur http://VotreSite.com/gallery/install.php et suivez les indications à l'écran. (N'oubliez pas de remplacer VotreSite.com par l'adresse de votre site et gallery par le répertoire de Coppermine, si vous l'avez modifié!)

Lorsque l'installateur vous demande les informations concernant la base de donée, assurez-vous de donner les mêmes informations que celles de votre forum SMF (vous venez de les recueillir à l'étape précédente). Une fois installé, Coppermine va fonctionner et les groupes de membres et les utilisateurs seront communs à votre gallerie d'images et à votre forum SMF :-).

Aller plus loin: créer des boutons de navigation pour accéder à la gallerie à partir du forum

À l'aide de votre logiciel de traitement d'image préféré (MS Paint, The Gimp, Adobe Photoshop, …) ou à l'aide d'un générateur de boutons comme celui-ci, créez un bouton pour votre gallerie photo. Enregistrez-le sous le nom gallery.gif et placez-le dans le dossier des images de langue du ou des thèmes que vous utilisez sur votre forum.

Ouvrir la gallerie dans une nouvelle fenêtre ou dans le corps du forum?

Vous disposez de deux choix.

Si vous choisissez d'ouvrir Coppermine dans une nouvelle fenêtre:
Ouvrez le fichier /Themes/votre_thème/index.template.php (où votre_thème est le répertoire de votre thème) avec un logiciel de traitement de texte simple (ex: Bloc-Notes sous Windows, BBEdit sous MacOS X, gEdit ou Kwrite sous Linux, …). Cherchez les lignes suivantes (habituellement, à la fin du fichier):

// Otherwise, they might want to [logout]...
else {
echo '<a href="', $scripturl, '?action=logout;sesc=', $context['session_id'],
    '">', ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url']
    . '/' . $context['user']['language'] . '/logout.gif" alt="' . $txt[108]
    . '" style="margin: 2px 0;" border="0" />' : $txt[108]),'</a>';

Insérez ce qui suit entre le else{ et le echo '<a href=“', $scripturl, '?action=logout;sesc=', $context['session_id'],

   echo '<a href="../gallery" >',
    ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url']
    . '/' . $context['user']['language'] . '/gallery.gif" alt="Photo Gallery" style="margin: 2px 0;"
    border="0" />' : "Photo Gallery"),'</a>', $context['menu_separator'];

NB: changez le ”../gallery“ sur la premiere ligne pour mettre le dossier de Coppermine, si vous l'avez changé.

Placer le code à cet endroit va faire apparaître le bouton de la gallerie uniquement si l'utilisateur est authentifié sur le forum, à la fin de la série de boutons, juste avant le bouton de déconnexion.

Si vous préférez ouvrir la gallerie photo au lieu du corps votre forum:

  1. Ouvrez le fichier index.php se trouvant à la racine de votre forum.
  2. Trouvez cette ligne:
    'boardrecount' => array('Admin.php', 'AdminBoardRecount'),

    À la suite de ce code, insérez ceci, sur une nouvelle ligne:

    'coppermine' => array('Coppermine.php', 'Coppermine'),
  3. Créez un fichier nommé Coppermine.php à l'aide de votre logiciel de traitement de texte simple (Bloc-Notes, BBEdit, gEdit, Kwrite, …), ayant pour contenu ce code:
    <?php
    if (!defined('SMF'))
    	die('Hacking attempt...');
    
    function Coppermine() {
    	// This is gonna be needed...
    	loadTemplate('Coppermine');
    }
    ?>
  4. Sauvez le fichier dans le répertoire /Sources de votre forum.
  5. Créez un fichier nommé Coppermine.template.php, toujours à l'aide de votre logiciel de traitement de texte simple, et insérez-y ce code:
    <?php
    
    function template_main()
    {
         global $context, $settings, $options, $txt, $scripturl;
    
            echo '
            <script language="JavaScript" type="text/javascript"><!--
                    function checkAll(onOff)
                    {
                            for (var i = 0; i < document.searchform.elements.length; i++)
                            {
                                    if (document.searchform.elements[i].name.substr(0, 3) == "brd")
                                            document.searchform.elements[i].checked = onOff;
                            }
                    }
            // --></script>
            <form action="', $scripturl, '?action=search2" method="post" name="searchform" id="searchform">
                    <table width="80%" border="0" cellspacing="0" cellpadding="3" align="center">
                            <tr>
                                    <td>', theme_linktree(), '</td>
                            </tr>
                    </table>
    
                    <table width="100%"  border="0" cellspacing="0" cellpadding="4" align="center" class="tborder">
                            <tr class="titlebg">
                                    <td>Galerie photo Coppermine</td>
                            </tr><tr>
                                    <td class="windowbg">';
    
                                            // load coppermine
            echo '<iframe width="100%" height="450"
    src="http://YourSite.com/gallery"></iframe>';
    
            echo '
                                    </td>
                            </tr>
                    </table>
            </form>';
    }
    
    ?>

    Notez l'adresse dans le code ci-haut, changez-la pour réfléter le nom du dossier de Coppermine et assurez-vous d'enlever le www pour assurer la compatibilité avec Firefox et IE. De plus, l'aide originale que j'ai trouvée adjoint /index.php à la fin de l'URL: ne le mettez pas, car cela désactive la lecture du cookie automatiquement et fait apparaître la galerie comme membre non-enregistré.

  6. Sauvez le fichier dans /Themes/default/
  7. Dans ce même dossier, ouvrez index.template.php (ou /Themes/ThemeName/index.template.php si vous utilisez un thème personnalisé) et cherchez ce code (vers la fin du fichier):
    // Otherwise, they might want to [logout]...
    else {
    echo '<a href="', $scripturl, '?action=logout;sesc=', $context['session_id'],
        '">', ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url']
        . '/' . $context['user']['language'] . '/logout.gif" alt="' . $txt[108]
        . '" style="margin: 2px 0;" border="0" />' : $txt[108]),'</a>';
  8. Insérez ce code entre else{ et echo '<a href=”', $scripturl, '?action=logout;sesc=', $context['session_id'],:
    //begin gallery code
                    echo '
                                    <a href="', $scripturl, '?action=coppermine"><img src="' . $settings['images_url'] . '/' . $context['user']['language'] . '/gallery.gif" alt="' . "Gallery" . '" style="margin: 2px 0;" border="0" /></a>', $context['menu_separator'];
    //end gallery code

Prévenir les erreurs à la navigation

Faites ceci, peu importe le type d'affichage choisi à l'étape précédente!

Afin de prévenir les erreurs de déconexion de la galerie ou de voir le forum s'afficher en boucle dans le cadre imbriqué dans lequel devrait s'afficher la gallerie, il faut modifier le fichier du thème de Coppermine que vous utilisez.

Si la gallerie ouvre dans une nouvelle page, faites ceci:
Ouvrez le fichier theme.php que vous utilisez du dossier de thème de Coppermine (ex:/gallery/theme/classic/theme.php) et remplacez tout ce qui se trouve entre les balises <!– BEGIN logout –> et <!– END logout –> pour que cela ait l'air de ceci:

<!-- BEGIN logout -->
                                               <a href="../forum/index.php">Retour au forum</a> |
<!-- END logout -->

Ceci va fermer la gallerie et rediriger l'utilisateur vers l'accueil du forum, en se servant du cookie pour se souvenir de votre profil.

Si vous insérez la galerie dans le corps du forum, faites ceci:
Il est mieux de désactiver les boutons Profil et Déconexion de Coppermine, ainsi que le bouton S'enregistrer (vu que les enregistrements sont gérés par le forum). Pour ce faire, ouvrez le fichier theme.php du dossier de thème de Coppermine que vous utilisez (ex:/gallery/theme/classic/theme.php) et effacez les lignes entre les balises register, login et logout, afin qu'il ressemble à ceci:

define('THEME_HAS_RATING_GRAPHICS', 1);
// HTML template for main menu
$template_main_menu1 = <<<EOT
                                                |
<!-- BEGIN my_gallery -->
                                                <a href="{MY_GAL_TGT}" title="{MY_GAL_TITLE}">{MY_GAL_LNK}</a> |
<!-- END my_gallery -->
<!-- BEGIN allow_memberlist -->
                                                <a href="{MEMBERLIST_TGT}" title="{MEMBERLIST_TITLE}">{MEMBERLIST_LNK}</a> |
<!-- END allow_memberlist -->
<!-- BEGIN my_profile -->
                                          
<!-- END my_profile -->
<!-- BEGIN faq -->
                        <a href="{FAQ_TGT}" title="{FAQ_TITLE}">{FAQ_LNK}</a> |
<!-- END faq -->
<!-- BEGIN enter_admin_mode -->
                                                <a href="{ADM_MODE_TGT}" title="{ADM_MODE_TITLE}">{ADM_MODE_LNK}</a> |
<!-- END enter_admin_mode -->
<!-- BEGIN leave_admin_mode -->
                                                <a href="{USR_MODE_TGT}" title="{USR_MODE_TITLE}">{USR_MODE_LNK}</a> |
<!-- END leave_admin_mode -->
<!-- BEGIN upload_pic -->
                                                <a href="{UPL_PIC_TGT}" title="{UPL_PIC_TITLE}">{UPL_PIC_LNK}</a> |
<!-- END upload_pic -->
<!-- BEGIN register -->
                                               
<!-- END register -->
<!-- BEGIN login -->
                                              
<!-- END login -->

<!-- BEGIN logout -->
                                              
<!-- END logout -->
EOT;

Et voilà ! ;-)

L'intégration de Coppermine à votre forum SMF est maintenant complète :-)