PDA

Afficher la version complète : [BBCode] BBCode à paramètres multiples



Christounet
16/11/2006, 14h52
Description
Ce hack permet de créer des BBCodes à plusieurs paramètres (jusqu'a 9)

Conception

Auteur du Hack / Author Of Hack : Christounet

Version vBulletin Requise / Version vBulletin Required : vB 3.5.4

Testé / Tested: OuiUtilisation

créer votre balise en utilisant {option1}...{option9}
ensuite specifier les paramètres séparés par des virgules (voir l'exemple attaché)Edition


editer admincp/bbcode.php
chercher:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
else
{
remplacer par:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
if (strpos($vbulletin->GPC['bbcodereplacement'], '{option1}')) {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option1}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option2}', '%3$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option3}', '%4$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option4}', '%5$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option5}', '%6$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option6}', '%7$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option7}', '%8$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option8}', '%9$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option9}', '%10$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['twoparams'] = 2;
} else {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
}
else
{
chercher:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
else
{
remplacer par:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
if (strpos($vbulletin->GPC['bbcodereplacement'], '{option1}')) {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option1}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option2}', '%3$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option3}', '%4$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option4}', '%5$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option5}', '%6$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option6}', '%7$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option7}', '%8$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option8}', '%9$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option9}', '%10$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['twoparams'] = 2;
} else {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
}
else
{
chercher:

if($_bbcode['twoparams'])
{
$_bbcode['bbcodereplacement'] = str_replace('%1$s', '{param}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%2$s', '{option}', $_bbcode['bbcodereplacement']);
}
else
{
remplacer par:

if($_bbcode['twoparams'])
{
$_bbcode['bbcodereplacement'] = str_replace('%1$s', '{param}', $_bbcode['bbcodereplacement']);
if ($_bbcode['twoparams'] > 1) {
$_bbcode['bbcodereplacement'] = str_replace('%2$s', '{option1}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%3$s', '{option2}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%4$s', '{option3}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%5$s', '{option4}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%6$s', '{option5}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%7$s', '{option6}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%8$s', '{option7}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%9$s', '{option8}', $_bbcode['bbcodereplacement']);
$_bbcode['bbcodereplacement'] = str_replace('%10$s', '{option9}', $_bbcode['bbcodereplacement']);
} else {
$_bbcode['bbcodereplacement'] = str_replace('%2$s', '{option}', $_bbcode['bbcodereplacement']);
}
}
else
{
chercher:

print_textarea_row($vbphrase['replacement'], 'bbcodereplacement', $_bbcode['bbcodereplacement'], 5, 60);
print_input_row($vbphrase['example'], 'bbcodeexample', $_bbcode['bbcodeexample']);
print_textarea_row($vbphrase['description'], 'bbcodeexplanation', $_bbcode['bbcodeexplanation'], 10, 60);
print_yes_no_row($vbphrase['use_option'], 'twoparams', $_bbcode['twoparams']);
print_input_row($vbphrase['button_image_desc'], 'buttonimage', $_bbcode['buttonimage']);
print_submit_row($vbphrase['save']);
remplacer par:

print_textarea_row($vbphrase['replacement'], 'bbcodereplacement', $_bbcode['bbcodereplacement'], 5, 60);
print_input_row($vbphrase['example'], 'bbcodeexample', $_bbcode['bbcodeexample']);
print_textarea_row($vbphrase['description'], 'bbcodeexplanation', $_bbcode['bbcodeexplanation'], 10, 60);
print_yes_no_row($vbphrase['use_option'], 'twoparams', $_bbcode['twoparams'] ? 1 : 0);
print_input_row($vbphrase['button_image_desc'], 'buttonimage', $_bbcode['buttonimage']);
print_submit_row($vbphrase['save']);
chercher:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
else
{
remplacer par:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
if (strpos($vbulletin->GPC['bbcodereplacement'], '{option1}')) {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option1}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option2}', '%3$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option3}', '%4$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option4}', '%5$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option5}', '%6$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option6}', '%7$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option7}', '%8$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option8}', '%9$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option9}', '%10$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['twoparams'] = 2;
} else {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
}
else
{


editer includes/class_bbcode.phpchercher:

// now do the actual replacement
if (isset($tag_info['html']))
{
// this is a simple HTML replacement
$pending_text = sprintf($tag_info['html'], $open['data'], $open['option']);
}
else if (isset($tag_info['callback']))
{
remplacer par:

// now do the actual replacement
if (isset($tag_info['html']))
{
if (strpos($open['option'], ',')) {
$pending_text = @vsprintf($tag_info['html'], array_merge(array($open['data']), explode(',', $open['option'])));
} else {
// this is a simple HTML replacement
$pending_text = sprintf($tag_info['html'], $open['data'], $open['option']);
}
}
else if (isset($tag_info['callback']))
{


editer includes/functions_editor.php
chercher:

$tag = strtoupper($bbcode['bbcodetag']);

$alt = construct_phrase($vbphrase['wrap_x_tags'], $tag);

$extrabuttons .= "<td><div class=\"imagebutton\" id=\"{$editorid}_cmd_wrap$bbcode[twoparams]_$bbcode[bbcodetag]\"><img src=\"$bbcode[buttonimage]\" alt=\"$alt\" width=\"21\" height=\"20\" border=\"0\" /></div></td>\n";
}
}
remplacer par:

$tag = strtoupper($bbcode['bbcodetag']);

$alt = construct_phrase($vbphrase['wrap_x_tags'], $tag);
$bbcode['twoparams'] = $bbcode['twoparams'] ? 1 : 0;
$extrabuttons .= "<td><div class=\"imagebutton\" id=\"{$editorid}_cmd_wrap$bbcode[twoparams]_$bbcode[bbcodetag]\"><img src=\"$bbcode[buttonimage]\" alt=\"$alt\" width=\"21\" height=\"20\" border=\"0\" /></div></td>\n";
}
}

Allan
16/11/2006, 15h28
Pas mal, merci Christounet ;)

BiOMECHANiK
16/11/2006, 15h47
Merci beaucoup Christounet.

Christounet
16/11/2006, 16h21
on ne peut presque rien faire avec un seul paramètre :ranting:
c'est pour ça que j'ai été jusqu'a modifier le code ! meoui

comme je suis toujours de tout coeur avec la team je vous en fait profiter

je reviendrai bientôt avec de nouveaux trucs :yahoo:

PS: si vous voulez l'adapter pour vB 3.6 pas de problème vous avez mon accord

Sofia
17/11/2006, 10h41
merci beaucoup, christounet. Nikel ! :)

Raphaël
17/01/2007, 19h44
Très pratique, merci !

Kamatcho
17/01/2007, 20h46
Je voudrais savoir qu'est ce qu'on pourrais faire avec bcp de parametres ... Quelle pourrait etre un bon but ...

En gros a quoi servent, et que sont les parametre :D

Dsl mais voila ...

Netsurfer
23/01/2007, 23h03
Même question. S'agirait-il de faire faire plusieurs actions en même temps en cliquant sur un seul BB code particulier?

Exemple: Tu veux mettre un texte en gras, italique et en rouge d'un seul clic...

Sinon je ne sais pas et comment les définir ces paramêtres une fois ces modifications effectuées?

Christounet
24/01/2007, 09h13
les paramètres c'est ce qu'il faut mettre après le = dans la balise
ex: lalala

donc ici {option1} = 20 et {option2} = 30, et {param} = lalala

le code de remplacement est du code html ou chaque option sera remplacée par sa valeur donnée dans la balise

de nombreuses balises html ont besoin de plusieurs paramètres
largeur (width), hauteur(height) par exemple:


<img src="{param}" width="{option1}" height="{option2}" />

Kamatcho
28/01/2007, 23h30
Ah d'accord ...

Par exemple avec un seul BBCODE tu pourrais afficher une image ...
Avec plusieurs paramètres tu choisi :

- largeur
- hauteur
- lien
- etc.

Suis-je certain ???
Même si mon exemple est un peu con et pas très utile :D

Raphaël
28/01/2007, 23h55
Au contraire, il est loin d'être con et inutile . Tu as très bien compris le principe de ce BBCode ;) .

Kamatcho
29/01/2007, 00h00
D'accord alors j'ai compris ...
Pour ce qui était con et inutile je parlait de mon exemple ;) Car 1 BBODE pour une image d'une certaine taille, largeur et avec 1 certain lien c quand même assez exceptionnel ...

Merci à tous pour vos explications ;)

Netsurfer
29/01/2007, 07h29
Yep un gros merci pour les explications. :)

Subbaz
07/06/2007, 22h02
exactement ce que je cherchais !!
Merci beaucoup man :yahoo:

saidou061
10/12/2007, 15h30
comment télechargé se hack ?
ya rien merci

Ombre
10/12/2007, 17h13
Slt :) ce n'est pas un hack purement parler, mais plutot une modification de templates..., avec des modifications, donc a toi de mettre le bbcode en place et a faire les modifications templates :)

Christounet
12/12/2007, 10h14
merci d'avoir répondu Ombre ;)
oui c'est une modification de code pas un simple hook
donc il faut modifier à la main les fichier comme c'est expliqué :fool:
à noter qu'il marche aussi avec vb 3.6.8 :)

Ombre
22/11/2008, 06h58
Merci Christounet pour ce magnifique mod :)

Pour répondre à GxiGlon, ce mod ets totalement fonctionnel, je viens de le tester sur mon forum de test 3.7.1 il suffit de ne pas appliquer la 5eme modification dans le dossier admincp/bbcode.php, c'est à dire celle là:

chercher:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
else
{
remplacer par:

if ($vbulletin->GPC['twoparams'])
{
$vbulletin->GPC['bbcodereplacement'] = str_replace('{param}', '%1$s', $vbulletin->GPC['bbcodereplacement']);
if (strpos($vbulletin->GPC['bbcodereplacement'], '{option1}')) {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option1}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option2}', '%3$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option3}', '%4$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option4}', '%5$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option5}', '%6$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option6}', '%7$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option7}', '%8$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option8}', '%9$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option9}', '%10$s', $vbulletin->GPC['bbcodereplacement']);
$vbulletin->GPC['twoparams'] = 2;
} else {
$vbulletin->GPC['bbcodereplacement'] = str_replace('{option}', '%2$s', $vbulletin->GPC['bbcodereplacement']);
}
}
else
{

Christounet
22/11/2008, 09h50
oui ça marche toujours ;) je l'utilise encore sur mon forum en 3.7 !

merci Ombre

GxiGloN
22/11/2008, 16h30
Génial, merci beaucoup à vous deux ! :p

[EDIT] Ca fonctionne parfaitement, merci beaucoup !

Ombre
22/11/2008, 16h34
Préviens nous si cela est correct sur ton forum :)

Tu avais essayer de l'installer au moins?