forum.coppermine-gallery.net
Support => Français (French) => Language Specific Support => cpg1.4.x Français (French) => Topic started by: Totoro on January 14, 2005, 03:44:00 pm
-
Bonjour à tous !
Je poste ici mon 1er mod de Coppermine car je ne peux pas créer de topic dans la section "mods" ... Donc les frenchies en auront la primeur.
Si vous jugez le script interessant vous pouvez le diffuser dans la section "mods".
Ce minimod ajoute la fonctionalité de gestion de titres pour les utilisateurs qui peuvent uploader des images dans leur galerie perso. Ce mod est basé sur les Admin Tools disponibles aux admins (tuil.php). La gestion des titres consiste en la possibilité de renommer les titres en fonction des noms de fichiers, ou d'effacer les titres, le tout sur ses propres albums preso, bien entendu.
Voilà ce qu'il y a à faire (5 minutes, pas plus):
Dans Themes\YourTheme\theme.php (ici thème : basic)
On va d'abord ajouter un lien vers notre nouvel utilitaire.
Trouver
// HTML template for user admin menu
$template_user_admin_menu = <<<EOT
<div align="center">
<table cellpadding="0" cellspacing="1">
<tr>
<td class="admin_menu"><a href="albmgr.php" title="">{ALBMGR_LNK}</a></td>
<td class="admin_menu"><a href="modifyalb.php" title="">{MODIFYALB_LNK}</a></td>
<td class="admin_menu"><a href="profile.php?op=edit_profile" title="">{MY_PROF_LNK}</a></td>
</tr>
</table>
</div>
EOT;
et Remplacer par :
// HTML template for user admin menu
$template_user_admin_menu = <<<EOT
<div align="center">
<table cellpadding="0" cellspacing="1">
<tr>
<td class="admin_menu"><a href="albmgr.php" title="">{ALBMGR_LNK}</a></td>
<td class="admin_menu"><a href="modifyalb.php" title="">{MODIFYALB_LNK}</a></td>
<td class="admin_menu"><a href="profile.php?op=edit_profile" title="">{MY_PROF_LNK}</a></td>
<td class="admin_menu"><a href="util2.php" title="">{UTIL2_LNK}</a></td>
</tr>
</table>
</div>
EOT;
ensuite, on va définir l'emplacement de la traduction de ce lien
trouver
$html = template_eval($template_gallery_admin_menu, $param);
} elseif (USER_ADMIN_MODE) {
$param = array('{ALBMGR_LNK}' => $lang_user_admin_menu['albmgr_lnk'],
'{MODIFYALB_LNK}' => $lang_user_admin_menu['modifyalb_lnk'],
'{MY_PROF_LNK}' => $lang_user_admin_menu['my_prof_lnk'],
);
et remplacer par
$html = template_eval($template_gallery_admin_menu, $param);
} elseif (USER_ADMIN_MODE) {
$param = array('{ALBMGR_LNK}' => $lang_user_admin_menu['albmgr_lnk'],
'{MODIFYALB_LNK}' => $lang_user_admin_menu['modifyalb_lnk'],
'{MY_PROF_LNK}' => $lang_user_admin_menu['my_prof_lnk'],
'{UTIL2_LNK}' => $lang_user_admin_menu['util2_lnk'],
);
Maintenant, nous allons créer la traduction du lien
Dans lang/french.php
trouver :
// ------------------------------------------------------------------------- //
// File util.php
// ------------------------------------------------------------------------- //
if (defined('UTIL_PHP')) $lang_util_php = array(
'title' => 'Redimensionner les photos',
'what_it_does' => 'Fonctionnalités',
'what_update_titles' => 'Met à jour les titres à partir des noms de fichier',
'what_delete_title' => 'Supprime les titres',
'what_rebuild' => 'Regénère les vignettes et les photos redimensionnées',
'what_delete_originals' => 'Supprime les photos originales et les remplace par leur version redimensionnée',
'file' => 'Fichier',
'title_set_to' => 'titre changé en',
'submit_form' => 'valider',
'updated_succesfully' => 'modifié avec succès',
'error_create' => 'ERREUR lors de la création',
'continue' => 'Continuer avec plus d\'images',
'main_success' => 'Le fichier %s est maintenant utilisé comme image principale',
'error_rename' => 'Erreur lors du changement du nom de %s à %s',
'error_not_found' => 'Le fichier %s n\'a pas été trouvé',
'back' => 'retour à la page principale',
'thumbs_wait' => 'Mise à jour des vignettes et/ou images redimensionnées, merci de patienter...',
'thumbs_continue_wait' => 'Continuer la mise à jour des vignettes et/ou des images redimensionnées...',
'titles_wait' => 'Mise à jour des titres, merci de patienter...',
'delete_wait' => 'Suppression des titres, merci de patienter...',
'replace_wait' => 'Suppression des originaux et remplacement de ces derniers par les images redimensionnées, merci de patienter...',
'instruction' => 'Instructions rapides',
'instruction_action' => 'Selectionnez une action',
'instruction_parameter' => 'Définissez les paramètres',
'instruction_album' => 'Sélectionnez un album',
'instruction_press' => 'Appuyez sur %s',
'update' => 'Mettre à jour les vignettes et/ou les photos redimensionnées',
'update_what' => 'Ce qui doit être mis à jour',
'update_thumb' => 'Seulement les vignettes',
'update_pic' => 'Seulement les photos redimensionnées',
'update_both' => 'Les vignettes et les images redimensionnées',
'update_number' => 'Nombre d\'images traitées par clic',
'update_option' => '(essayez de réduire cette valeur si vous avez des problèmes de timeout)',
'filename_title' => 'Nom du fichier / Titre de l\'image',
'filename_how' => 'Comment le nom du fichier doit-il être modifié ?',
'filename_remove' => 'Supprimer la fin .jpg et remplacer _ (underscore) par des espaces',
'filename_euro' => 'Changer 2003_11_23_13_20_20.jpg en 23/11/2003 13:20',
'filename_us' => 'Changer 2003_11_23_13_20_20.jpg en 11/23/2003 13:20',
'filename_time' => 'Changer 2003_11_23_13_20_20.jpg en 13:20',
'delete' => 'Supprimer le titre des photos ou les photos dans leur taille d\'origine',
'delete_title' => 'Supprimer le titre des photos',
'delete_original' => 'Supprimer les photos dans leur taille d\'origine',
'delete_replace' => 'Supprime les images originales en les remplaçant par les versions redimensionnées',
'select_album' => 'Selectionner un album',
'delete_orphans' => 'Supprimer les commentaires orphelins (fonctionne pour tous les albums)', //cpg1.3.0
'orphan_comment' => 'Pas de commentaire ophelin trouvé', //cpg1.3.0
'delete' => 'Supprimer', //cpg1.3.0
'delete_all' => 'Supprimer tout', //cpg1.3.0
'comment' => 'Commentaire : ', //cpg1.3.0
'nonexist' => 'Lié au fichier non existant # ', //cpg1.3.0
'phpinfo' => 'Afficher phpinfo', //cpg1.3.0
'update_db' => 'Mise à jour de la base de données', //cpg1.3.0
'update_db_explanation' => 'Si vous avez remplacé des fichiers Coppermine, effectué des modifications ou upgradé à partir de versions précédentes de Coppermine, assurez-vous d\'exécuter la mise à jour de base de données une fois. Cela créera les tables et/ou valeurs de configuration nécessaires dans la base de données.', //cpg1.3.0
);
?>
et remplacer par :
// ------------------------------------------------------------------------- //
// File util.php
// ------------------------------------------------------------------------- //
if (defined('UTIL_PHP')) $lang_util_php = array(
'title' => 'Redimensionner les photos',
'title2' => 'Modifier les titres des photos', //### new - Totoro mod ###
'what_it_does' => 'Fonctionnalités',
'what_update_titles' => 'Met à jour les titres à partir des noms de fichier',
'what_delete_title' => 'Supprime les titres',
'what_rebuild' => 'Regénère les vignettes et les photos redimensionnées',
'what_delete_originals' => 'Supprime les photos originales et les remplace par leur version redimensionnée',
'file' => 'Fichier',
'title_set_to' => 'titre changé en',
'title_deleted' => 'titre effacé', //### new - Totoro mod ###
'submit_form' => 'valider',
'updated_succesfully' => 'modifié avec succès',
'error_create' => 'ERREUR lors de la création',
'continue' => 'Continuer avec plus d\'images',
'main_success' => 'Le fichier %s est maintenant utilisé comme image principale',
'error_rename' => 'Erreur lors du changement du nom de %s à %s',
'error_not_found' => 'Le fichier %s n\'a pas été trouvé',
'back' => 'retour à la page principale',
'thumbs_wait' => 'Mise à jour des vignettes et/ou images redimensionnées, merci de patienter...',
'thumbs_continue_wait' => 'Continuer la mise à jour des vignettes et/ou des images redimensionnées...',
'titles_wait' => 'Mise à jour des titres, merci de patienter...',
'delete_wait' => 'Suppression des titres, merci de patienter...',
'replace_wait' => 'Suppression des originaux et remplacement de ces derniers par les images redimensionnées, merci de patienter...',
'instruction' => 'Instructions rapides',
'instruction_action' => 'Selectionnez une action',
'instruction_parameter' => 'Définissez les paramètres',
'instruction_album' => 'Sélectionnez un album',
'instruction_press' => 'Appuyez sur %s',
'update' => 'Mettre à jour les vignettes et/ou les photos redimensionnées',
'update_what' => 'Ce qui doit être mis à jour',
'update_thumb' => 'Seulement les vignettes',
'update_pic' => 'Seulement les photos redimensionnées',
'update_both' => 'Les vignettes et les images redimensionnées',
'update_number' => 'Nombre d\'images traitées par clic',
'update_option' => '(essayez de réduire cette valeur si vous avez des problèmes de timeout)',
'filename_title' => 'Changer le titre de l\'image selon le nom du fichier',
'filename_how' => 'Comment le titre de l\'image doit-il être modifié ?',
'filename_remove' => 'Supprimer la fin .jpg et remplacer _ (underscore) par des espaces',
'filename_euro' => 'Changer 2003_11_23_13_20_20.jpg en 23/11/2003 13:20',
'filename_us' => 'Changer 2003_11_23_13_20_20.jpg en 11/23/2003 13:20',
'filename_time' => 'Changer 2003_11_23_13_20_20.jpg en 13:20',
'delete' => 'Supprimer le titre des photos ou les photos dans leur taille d\'origine',
'delete_title' => 'Supprimer le titre des photos',
'delete_original' => 'Supprimer les photos dans leur taille d\'origine',
'delete_replace' => 'Supprime les images originales en les remplaçant par les versions redimensionnées',
'select_album' => 'Selectionner un album',
'delete_orphans' => 'Supprimer les commentaires orphelins (fonctionne pour tous les albums)', //cpg1.3.0
'orphan_comment' => 'Pas de commentaire ophelin trouvé', //cpg1.3.0
'delete' => 'Supprimer', //cpg1.3.0
'delete_all' => 'Supprimer tout', //cpg1.3.0
'comment' => 'Commentaire : ', //cpg1.3.0
'nonexist' => 'Lié au fichier non existant # ', //cpg1.3.0
'phpinfo' => 'Afficher phpinfo', //cpg1.3.0
'update_db' => 'Mise à jour de la base de données', //cpg1.3.0
'update_db_explanation' => 'Si vous avez remplacé des fichiers Coppermine, effectué des modifications ou upgradé à partir de versions précédentes de Coppermine, assurez-vous d\'exécuter la mise à jour de base de données une fois. Cela créera les tables et/ou valeurs de configuration nécessaires dans la base de données.', //cpg1.3.0
);
?>
-
(suite)
Maintenant, dernière étape : avec le bloc note, créez un fichier appelé util2.php. Copiez le code ci-dessous. Ensuite copiez le fichier à la racine de votre répertoire coppermine.
<?php
// ------------------------------------------------------------------------- //
// Coppermine Photo Gallery 1.3.2 //
// ------------------------------------------------------------------------- //
// Copyright (C) 2002-2004 Gregory DEMAR //
// http://www.chezgreg.net/coppermine/ //
// ------------------------------------------------------------------------- //
// Updated by the Coppermine Dev Team //
// (http://coppermine.sf.net/team/) //
// see /docs/credits.html for details //
// ------------------------------------------------------------------------- //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// ------------------------------------------------------------------------- //
// CVS version: $Id: util.php,v 1.8 2004/08/08 22:11:17 caspershadow Exp $
// ------------------------------------------------------------------------- //
// USER CONFIGURATION
// Default number of pictures to process at a time when rebuilding thumbs or normals:
$defpicnum = 45;
// END USER CONFIGURATION
define('IN_COPPERMINE', true);
define('UTIL_PHP', true);
require('include/init.inc.php');
require('include/picmgmt.inc.php');
pageheader($lang_util_php['title']);
if (!(GALLERY_ADMIN_MODE || USER_CAN_UPLOAD_PICTURES)) {
cpg_die(ERROR, $lang_errors['access_denied'], __FILE__, __LINE__);
}
//if (!(GALLERY_ADMIN_MODE || ($USER_DATA['user_group'] == 5))) {
// cpg_die(ERROR, $lang_errors['access_denied'], __FILE__, __LINE__);
//}
global $albumtbl, $picturetbl, $categorytbl, $usertbl, $lang_util_php;
$albumtbl = $CONFIG['TABLE_PREFIX'] . 'albums';
$picturetbl = $CONFIG['TABLE_PREFIX'] . 'pictures';
$categorytbl = $CONFIG['TABLE_PREFIX'] . 'categories';
$usertbl = $CONFIG['TABLE_PREFIX'] . 'users';
// initialize vars
$startpic = '';
$action = "";
$action = $_POST['action'];
MYSQL_CONNECT($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']) or die("can't connect to mysql server");
MYSQL_SELECT_DB($CONFIG['dbname']);
function my_flush()
{
print str_repeat(" ", 4096); // force a flush
}
function filenametotitle($delete)
{
$albumid = $_POST['albumid'];
$parsemode = $_POST['parsemode'];
global $picturetbl, $lang_util_php;
$query = "SELECT * FROM $picturetbl WHERE aid = '$albumid'";
$result = MYSQL_QUERY($query);
$num = mysql_numrows($result);
$i = 0;
while ($i < $num) {
$filename = mysql_result($result, $i, "filename");
$pid = mysql_result($result, $i, "pid");
// //////////////////////////////////////////
// ADD YOUR OWN PARSEMODES HERE //
// /////////////////////////////////////////
$pattern = "/(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(.+)/";
if ($delete == '0') {
if ($parsemode == 0) {
// REMOVE .JPG AND REPLACE _ WITH [ ]
$filename = substr($filename, 0, -4);
$newtitle = str_replace("_", " ", $filename);
} else if ($parsemode == 1) {
// CHANGE 2003_11_23_13_20_20.jpg TO 23/11/2003 13:20
$newtitle = str_replace("%20", " ", $filename);
$replacement = "$5/$3/$1 $7:$9";
$newtitle = preg_replace($pattern, $replacement, $filename);
} else if ($parsemode == 2) {
// CHANGE 2003_11_23_13_20_20.jpg TO 11/23/2003 13:20
$newtitle = str_replace("%20", " ", $filename);
$replacement = "$3/$5/$1 $7:$9";
$newtitle = preg_replace($pattern, $replacement, $filename);
} else if ($parsemode == 3) {
// CHANGE 2003_11_23_13_20_20.jpg TO 13:20
$newtitle = str_replace("%20", " ", $filename);
$replacement = "$7:$9";
$newtitle = preg_replace($pattern, $replacement, $filename);
}
} else {
$newtitle = '';
}
if ($delete == '0') {
print $lang_util_php['file'] . ': '.$filename.' ' . $lang_util_php['title_set_to'] . ':'. $newtitle.'<br />';
my_flush();
} else {
print $lang_util_php['file'] . ': '.$filename.' ' . ' - ' . $lang_util_php['title_deleted'];
my_flush();
}
$query = "UPDATE $picturetbl SET title='$newtitle' WHERE pid='$pid' ";
MYSQL_QUERY($query);
++$i;
}
}
function filloptions()
{
global $albumtbl, $picturetbl, $categorytbl, $usertbl, $lang_util_php;
echo '<select size="1" name="albumid">';
$user_albums = mysql_query("SELECT aid, title FROM $albumtbl WHERE category='" . (FIRST_USER_CAT + USER_ID) . "' ORDER BY title");
echo '<select size="1" name="albumid">';
while ($row = mysql_fetch_array($user_albums)) {
print "<option value=\"" . $row["aid"] . "\">" . $row["title"] . "</option>\n";
}
print '</select> (3)';
print ' <input type="submit" value="'.$lang_util_php['submit_form'].'" class="submit" /> (4)';
print '</form>';
}
$phpself = $_SERVER['PHP_SELF'];
// start output
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>' . $lang_util_php['title'] . '</title>
</head>
<style type="text/css">
.labelradio { cursor : hand;}
/*.accesskey {text-decoration:underline}*/
</style>
<body>';
if ($action == 'title') {
starttable('100%');
print '<tr><td><br />';
print '<div align="center"><h2>' . $lang_util_php['titles_wait'] . '</h2></div><br />';
filenametotitle(0);
echo '<br /><div align="center"><a href="' . $phpself . '">' . $lang_util_php['back'] . '</a></div>';
} else if ($action == 'deltit') {
starttable('100%');
print '<tr><td><br />';
print '<div align="center"><h2>' . $lang_util_php['delete_wait'] . '</h2></div><br />';
filenametotitle(1);
echo '<br /><div align="center"><a href="' . $phpself . '">' . $lang_util_php['back'] . '</a></div>';
} else {
starttable('100%');
print '<tr><td>';
starttable('100%', $lang_util_php['title2'] , 2);
print '<tr><td class="tablef"><b>';
print $lang_util_php['what_it_does'] . '</b>:
<ul style="margin-top:0px;margin-bottom:0px;list-style-type:square">
<li>' . $lang_util_php['what_update_titles'] . '</li>
<li>' . $lang_util_php['what_delete_title'] . '</li>
</ul></td>
<td class="tableb"><b>
' . $lang_util_php['instruction'] . '</b>:
<br />
(1) ' . $lang_util_php['instruction_action'] . '<br />
(2) ' . $lang_util_php['instruction_parameter'] . '<br />
(3) ' . $lang_util_php['instruction_album'] . '<br />
(4) ';
printf($lang_util_php['instruction_press'], $lang_util_php['submit_form']);
print '
';
print '</td></tr>';
endtable();
print '<br />
<form action="' . $phpself . '" method="post">
';
print '<br />';
starttable('100%', '<input type="radio" name="action" checked="checked" value="title" id="title" class="nobg" /><label for="title" accesskey="F" class="labelradio">' . $lang_util_php['filename_title'] . '</label> (1)');
print '
<tr><td>
' . $lang_util_php['filename_how'] . ' (2):<br />
<input type="radio" name="parsemode" checked="checked" value="0" id="remove" class="nobg" /><label for="remove" accesskey="s" class="labelradio">' . $lang_util_php['filename_remove'] . '</label><br />
<input type="radio" name="parsemode" value="1" id="euro" class="nobg" /><label for="euro" accesskey="e" class="labelradio">' . $lang_util_php['filename_euro'] . '</label><br />
<input type="radio" name="parsemode" value="2" id="us" class="nobg" /><label for="us" accesskey="u" class="labelradio">' . $lang_util_php['filename_us'] . '</label><br />
<input type="radio" name="parsemode" value="3" id="hour" class="nobg" /><label for="hour" accesskey="h" class="labelradio">' . $lang_util_php['filename_time'] . '</label><br /><br />
</td></tr>';
endtable();
print '<br />';
starttable('100%', '<input type="radio" name="action" value="deltit" id="deltit" class="nobg" /><label for="deltit" accesskey="D" class="labelradio">' . $lang_util_php['delete_title'] . '</label> (1)');
endtable();
print '<br />';
print ' <br />';
print '<h2>'.$lang_util_php['select_album'].'</h2>';
if (defined('UDB_INTEGRATION')) {
udb_util_filloptions();
} else {
filloptions();
}
}
print '</td></tr>';
endtable();
echo 'Util.mod 1.4 - Created by David Alberg Holm';
pagefooter();
ob_end_flush();
?>
Et voilà ! ;)
Bon, il faut me pardonner s'il y a des bugs, car je n'y connais pratiquement rien en PHP. :)