PDA

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


Christounet
16/11/2006, 12h52
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, 13h28
Pas mal, merci Christounet ;)

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

Christounet
16/11/2006, 14h21
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, 08h41
merci beaucoup, christounet. Nikel ! :)

0a$!s
17/01/2007, 17h44
Très pratique, merci !

Kamatcho
17/01/2007, 18h46
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, 21h03
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, 07h13
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, 21h30
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

0a$!s
28/01/2007, 21h55
Au contraire, il est loin d'être con et inutile . Tu as très bien compris le principe de ce BBCode ;) .

Kamatcho
28/01/2007, 22h00
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, 05h29
Yep un gros merci pour les explications. :)

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

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

Ombre
10/12/2007, 15h13
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, 08h14
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 :)