Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Multiquote (TEST - A)

Ce forum est verrouillé, vous ne pouvez pas poster, ni répondre, ni éditer les sujets. Ce sujet est verrouillé, vous ne pouvez pas éditer les messages ou faire de réponses.

Rechercher dans ce sujet :
Messages
Darathor Sexe : Masculin
Site Admin
Membre

Inscrit le : 02 Nov 2003
Messages : 1101
Localisation : Strasbourg
MessagePosté le : 01 Déc 2005 15:43
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
Citation :
But : Ajoute à chaque message un bouton permettant de l'ajouter (ou le retirer s'il a déjà été ajouté) à une liste de message à citer. Au moment de répondre au topic (par le bouton "répondre" ou "citer"), si des messages ont été placés dans la liste, ils seront tous cités (de la même manière qu'avec le bouton "citer").

Prérequis :
- [Sous-MOD] Définitions CSS complémentaires (1.0) (ce MOD n'est pas absolument necessaire, il ne fait qu'améliorer quelque détails d'affichage)

Remarques :
- côté utilisateur, ce MOD necessite l'activation des javascripts et l'acceptation des cookies.
- sur Internet Explorer, le bouton d'ajout ne semble pas se remplacer par le bouton de retrait lorsque l'on clique dessus. Cependant il ne s'agit que d'un problème d'affichage, les messages étant tout de même correctement selectionnés et cités.

Auteur : Darathor (darathor@free.fr)
Version : TEST - A (01/12/2005)
Compatibilité phpBB : 2.0.18


Dans "viewtopic.php" :
Code :
#
# Trouver
#
   $quote = '<a href="' . $temp_url . '">' . $lang['Reply_with_quote'] . '</a>';

#
# Ajouter après
#
   // DEBUT MOD Multiquote
   $post_list_in_cookie = $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_multiquote_' . $topic_id];
   if(($post_list_in_cookie != '') && (strstr($post_list_in_cookie, '|' . $postrow[$i]['post_id'] . '|') != FALSE))
   {
      $quote_add_display = 'none';
      $quote_remove_display = 'inline';
   }
   else
   {
      $quote_add_display = 'inline';
      $quote_remove_display = 'none';
   }
   $quote_add_img = '<img id="quote_add_' . $postrow[$i]['post_id'] . '" src="' . $images['MuQu_icon_quote_add'] . '" alt="' . $lang['MuQu_Add_to_quote_list'] . '" title="' . $lang['MuQu_Add_to_quote_list'] . '" onclick="cookiePostAdd(' . $topic_id . ', ' . $postrow[$i]['post_id'] . ', \'' . $board_config['cookie_name'] . '\');" style="cursor: pointer; display: ' . $quote_add_display . ';" />';
   $quote_remove_img = '<img id="quote_remove_' . $postrow[$i]['post_id'] . '" src="' . $images['MuQu_icon_quote_remove'] . '" alt="' . $lang['MuQu_Remove_from_quote_list'] . '" title="' . $lang['MuQu_Remove_from_quote_list'] . '" onclick="cookiePostRemove(' . $topic_id . ', ' . $postrow[$i]['post_id'] . ', \'' . $board_config['cookie_name'] . '\');" style="cursor: pointer; display: ' . $quote_remove_display . ';" />';
   // FIN MOD Multiquote

#
# Trouver
#
      'QUOTE_IMG' => $quote_img,

#
# Ajouter après
#
      // DEBUT MOD Multiquote
      'QUOTE_ADD_IMG' => $quote_add_img,
      'QUOTE_REMOVE_IMG' => $quote_remove_img,
      // FIN MOD Multiquote


Dans "language/lang_french/lang_main.php" :
Code :
#
# Trouver
#
?>

#
# Ajouter avant
#
// DEBUT MOD Multiquote
$lang['MuQu_Add_to_quote_list'] = 'Ajouter à liste des messages à citer';
$lang['MuQu_Remove_from_quote_list'] = 'Retirer de la liste des messages à citer';
// FIN MOD Multiquote


Dans "templates/subSilver/subSilver.cfg" :
Code :
#
# Trouver
#
?>

#
# Ajouter avant
#
// DEBUT MOD Multiquote
$images['MuQu_icon_quote_add'] = "$current_template_images/{LANG}/icon_quote_add.gif";
$images['MuQu_icon_quote_remove'] = "$current_template_images/{LANG}/icon_quote_remove.gif";
// FIN MOD Multiquote


Dans "templates/subSilver/viewtopic_body.tpl" :
Code :
#
# Trouver
#
<table width="100%" cellspacing="2" cellpadding="2" border="0">

#
# Ajouter au dessus
#
<script language="Javascript" type="text/javascript" src="templates/multiquote.js"></script>

#
# Dans une ligne, trouver
#
{postrow.QUOTE_IMG}

#
# Dans la ligne, ajouter après
#
 {postrow.QUOTE_ADD_IMG} {postrow.QUOTE_REMOVE_IMG}


Dans "posting.php" :
Code :
#
# Trouver
#
//
// Signature toggle selection
//

#
# Ajouter avant
#
// DEBUT MOD Multiquote
if($mode == 'reply')
{
   // Récupération du cookie.
   $post_list_in_cookie = $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_multiquote_' . $topic_id];
   if($post_list_in_cookie != '')
   {
      // Génération de la liste des id.
      $post_list_in_cookie = str_replace('||', '|', $post_list_in_cookie);
      $posts_to_quote = explode ('|', $post_list_in_cookie);
      $sql_posts_list = '';
      foreach($posts_to_quote as $post_to_quote)
      {
         // Si on est en mode "quote", on a déjà cité le message courrant, on ne l'inèsre donc pas dans la liste.
         if($post_to_quote != '' && ($post_to_quote != $post_id))
         {
            $sql_posts_list .= ($sql_posts_list == '') ? $post_to_quote : ', ' . $post_to_quote;
         }
      }
      
      // Si l'on a des posts à citer, on les ajoute en tête de message.
      if($sql_posts_list != '')
      {
         $sql_quote = "SELECT p.post_id, p.poster_id, u.username AS post_username, t.post_text, t.bbcode_uid
            FROM " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " t, " . USERS_TABLE . " u
            WHERE p.post_id = t.post_id
               AND p.poster_id = u.user_id
               AND p.post_id IN ($sql_posts_list)
            ORDER BY p.post_id DESC";

         if (!($result_quote = $db->sql_query($sql_quote)))
         {
            message_die(GENERAL_ERROR, 'Could not obtain quotes', '', __LINE__, __FILE__, $sql_quote);
         }

         $orig_word = array();
         $replacement_word = array();
         obtain_word_list($orig_word, $replace_word);
         
         // Ajout des posts cités un à un.
         while($row_quote = $db->sql_fetchrow($result_quote))
         {
            // Nettoyage du nom d'utilisateur.
            $quote_username = trim($row_quote['post_username']);
         
            $message_quote = $row_quote['post_text'];
         
            // Nettoyage des bbcode uid.
            if($row_quote['bbcode_uid'] != '')
            {
               $message_quote = preg_replace('/\:(([a-z0-9]:)?)' . $row_quote['bbcode_uid'] . '/s', '', $message_quote);
            }
            
            // Conversions...
            $message_quote = str_replace('<', '&lt;', $message_quote);
            $message_quote = str_replace('>', '&gt;', $message_quote);
            $message_quote = str_replace('<br />', "\n", $message_quote);
            $message_quote = '[quote="' . $quote_username . '"]' . $message_quote . "[/quote]\n\n";

            // Gestion de la censure.
            if (!empty($orig_word))
            {
               $message_quote = (!empty($message_quote)) ? preg_replace($orig_word, $replace_word, $message_quote) : '';
            }
            
            // Ajout en tête de message.
            $message = $message_quote . $message;
         }
      }
   }
}
// FIN MOD Multiquote


Dans "includes/functions_post.php" :
Code :
#
# Trouver
#
   include($phpbb_root_path . 'includes/functions_search.'.$phpEx);

   $current_time = time();
   
#
# Ajouter après
#
   // DEBUT MOD Multiquote
   $cookiename = $board_config['cookie_name'];
   $cookiepath = $board_config['cookie_path'];
   $cookiedomain = $board_config['cookie_domain'];
   $cookiesecure = $board_config['cookie_secure'];
   setcookie($cookiename . '_multiquote_' . $topic_id, '', FALSE);
   // FIN MOD Multiquote


Uploader les fichiers de ce zip aux emplacement suivants :
- templates/multiquote.js
- templates/subSilver/images/lang_french/icon_quote_add.gif
- templates/subSilver/images/lang_french/icon_quote_remove.gif
Revenir en haut Aller en bas
Hors ligne | Profil | MP | E-mail | Site web
  Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum