2.9) Modification de phpbb3
Il y a 1 fichier a ajouter et 2 à modifier.
Tout d'abord allez coller le fichier functions_rift.php dans [Racine_phpbb3]\includes
Ensuite ouvrez le fichier [Racine_phpbb3]\styles\[Votre_template_actif]\template\overall_header.html
A l'intérieur de la balise <head> (par exemple juste avant la balise <script>, collez le code suivant
Code:
<!-- RiftMod par Pumbaa - début -->
<style type="text/css" media="all">
.infobulle
{
position : absolute;
visibility : hidden;
border : 0px solid Black;
padding : 10px;
font-family : Verdana, Arial;
font-size : 10px;
}
.riftTable
{
border : 3px solid Black;
border-collapse : collapse;
padding : 0px;
background-color : #000000;
}
.riftTd
{
border : 0px solid Black;
height : 10px;
padding : 0px;
vertical-align : middle;
text-align : left;
color : #FFFFFF;
}
</style>
<!-- RiftMod par Pumbaa - fin --> Ce code configure une partie du style d'affichage de l'info-bulle, si vous voulez faire des ajustement, c'est ici.
Toujours dans ce fichier, insérez le code suivant à l'interieur de la balise script
Code:
<!-- RiftMod par Pumbaa - début -->
<!--
var visible=false; // La variable i nous dit si la bulle est visible ou non
var pined=false; // Fige la bulle si on clique sur le lien
var recipeFocus=false;
function GetId(id)
{
return document.getElementById(id);
}
function move(e)
{
var divWrapper = GetId("wrapper");
var divRecipe = GetId("recipe");
if(visible && !pined) // Si la bulle est visible, on calcul en temps reel sa position ideale
{
var recipePadding = 0;
if(divRecipe != null)
recipePadding = divRecipe.clientHeight + 13;
GetId("curseur").style.left= (e.pageX - divWrapper.offsetLeft + 1 + 25) + "px";
GetId("curseur").style.top= (e.pageY - divWrapper.offsetTop + 1 - recipePadding) + "px";
}
}
function montre(text)
{
if(visible==false && navigator.appName!="Microsoft Internet Explorer") // Si on est pas sous IE
{
GetId("curseur").style.visibility="visible"; // Si il est caché (la verif n'est qu'une securité) on le rend visible.
GetId("curseur").innerHTML = text; // Cette fonction est a améliorer, il parait qu'elle n'est pas valide (mais elle marche)
visible=true;
}
}
function cache()
{
if(!visible || pined)
return;
GetId("curseur").style.visibility="hidden"; // Si la bulle etais visible on la cache
visible=false;
}
function pin() // Épingle la bulle.
{
pined = !pined;
}
document.onmousemove=move; // dès que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
//-->
<!-- RiftMod par Pumbaa - fin --> Ensuite ouvrez le fichier [Racine_phpbb3]\viewtopic.php
Trouvez le code (tout en haut)
Code:
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
et à la ligne d'après ajouter la ligne
Code:
// RiftMod par Pumbaa - début
include($phpbb_root_path . 'includes/functions_rift.php');
// RiftMod par Pumbaa - fin
Trouvez ensuite
Code:
// Highlight active words (primarily for search)
if ($highlight_match)
{
$message = preg_replace('#(?!<.*)(?<!\w)(' . $highlight_match . ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span class="posthilit">\1</span>', $message);
$row['post_subject'] = preg_replace('#(?!<.*)(?<!\w)(' . $highlight_match . ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span class="posthilit">\1</span>', $row['post_subject']);
} Et ajouter juste après
Code:
// RiftMod par Pumbaa - début
$message = explodeRiftMessage($message, "item", getItemByName);
$message = explodeRiftMessage($message, "recette", getRecipeByName);
// RiftMod par Pumbaa - fin C'est ici que phpbb va intercepter la balise [item] et modifier l'affichage des messages.
Si tout d'un coup ça plante, supprimez ou commentez ce bout de code et votre forum sera comme neuf.
D'ailleurs si le nom de la balise ne vous plait pas, vous pouvez le changer là.
Si vous voulez voir l'info-bulle aussi dans la prévisualisation d'un message, ouvrez le fichier [Racine_phpbb3]\posting.php
cherchez Code:
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
et ajoutez après Code:
// RiftMod par Pumbaa - début
include($phpbb_root_path . 'includes/functions_rift.php');
// RiftMod par Pumbaa - fin
Cherchez ensuite Code:
$preview_message = $message_parser->format_display($post_data['enable_bbcode'], $post_data['enable_urls'],
$post_data['enable_smilies'], false);
et ajoutez après Code:
// RiftMod par Pumbaa - début
$preview_message = explodeRiftMessage($preview_message, "item", getItemByName);
$preview_message = explodeRiftMessage($preview_message, "recette", getRecipeByName);
// RiftMod par Pumbaa - fin
2.10) Création du BBCode [item]
Cette partie est optionnelle, car mon mode n'utilise pas réellement la balise BBCode du forum, elle intercepte la chaine de caractère "[item]" dans tout message.
Mais si vous voulez que vos utilisateurs voient la balise lors de la création d'un message, suivez ces instructions.
Dans la console d'admin de phpbb, allez dans Publication, puis dans le menu BBCode et cliquez sur Ajouter un nouveau BBCode.
Dans Utilisation du BBCode, mettez [item]{SIMPLETEXT}[/item]
N'inscrivez rien dans Remplacement de l'HTML.
Choisissez la ligne d'aide.
Cochez Afficher sur la page de rédaction.
2.11) Tester
Allez mettre un message, par exemple "[item]Barre de carmintium[/item]", validez et admirez.
Attention ! Le nom de l'objet doit être absolument identique à celui dans la base de donnée. Accents, espaces et majuscules compris, sinon le script ne le trouvera pas.
Si vous avez des questions, ou si vous trouvez un bug, n'hésitez pas à me demander de l'aide ici.
Si vous améliorez mes scripts, hésitez encore moins à nous faire part de vos modifications ;-)
TODO
- Ajouter un petit mod qui permette de rechercher l'id d'un objet.
- Puis sélectionner un item selon son id plutôt que son nom.
- Prendre en charge les autres entités (exploits, artefacts, pnj, quêtes)
- Mettre à jour à chaque nouvelles MAJ de Rift