Доброго времени суток!
Хотелось бы создать скрипт, представляющий из себя несколько новых бб-кодов.
На платформе ПунББ через PHP это можно выполнить так:
$pattern[] = '#\[skill=(.*?)](.*?)\[/skill\]#ms';
$pattern[] = '#\[skillcont](.*?)\[/skillcont\]#ms';
$pattern[] = '#\[level lvl=([0-9]*) hplv=([0-9]*) mplv=([0-9]*) cdlv=([0-9]*)](.*?)\[/level\]#ms';
$pattern[] = '#\[level lvl=([0-9]*) heallv=([0-9]*) mplv=([0-9]*) cdlv=([0-9]*)](.*?)\[/level\]#ms';
$pattern[] = '#\[level](.*?)\[/level\]#ms';
$replace[] = '</p><div id=\"skill_table\" class=\"$matches[1]\">$matches[2]</div><p>';
$replace[] = '</p><div id=\"skill_cont_table\">$matches[1]</div><p>';
$replace[] = '<div id=\"table_level\"><div id=\"table_lvl\">$matches[1]</div><div id=\"table_cont\">$matches[5]</div><div id=\"table_cd\">$matches[4]</div><div id=\"table_mp\">$matches[3]</div><div id=\"table_hp\">$matches[2]</div></div>';
$replace[] = '<div id=\"table_level\"><div id=\"table_lvl\">$matches[1]</div><div id=\"table_cont\">$matches[5]</div><div id=\"table_cd\">$matches[4]</div><div id=\"table_mp\">$matches[3]</div><div id=\"table_heal\">$matches[2]</div></div>';
$replace[] = '<div id=\"table_level_cont\"><p>$matches[1]</p></div>';
При этом на самом форуме это выглядит так:
[skill=active_skill][align=center][/align]
[align=center][b]Физическая атака[/b][/align]
Наносит 20 очков урона.
[skillcont][level]Умение не развивается.[/level][/skillcont][/skill]
Или с полным контентом:
[skill=active_skill][align=center][/align]
[align=center][b]Мощный удар[/b]
0/6[/align]
Мощный удар. Используется только с булавой или мечом.
[skillcont]
[level lvl=0 hplv=25 mplv=20 cdlv=0]Наносит физический урон.[/level]
[level lvl=1 hplv=35 mplv=25 cdlv=0]Наносит физический урон.[/level]
[level lvl=2 hplv=45 mplv=30 cdlv=0]Наносит физический урон.[/level]
[level lvl=3 hplv=55 mplv=35 cdlv=0]Наносит физический урон.[/level]
[level lvl=3 hplv=65 mplv=40 cdlv=0]Наносит физический урон.[/level]
[level lvl=4 hplv=75 mplv=45 cdlv=0]Наносит физический урон.[/level]
[level lvl=5 hplv=85 mplv=50 cdlv=0]Наносит физический урон.[/level]
[/skillcont][/skill]
И немного побаловшись с оформлением, в конечном итоге выглядит всё так:
На всякий случай текстовое объяснение каждого нужного BB-кода:
[skill=active_skill/passive_skill] * [/skill] - создаёт div у которого "class" - прописанное после = (равенства) слово.
[skillcont] * [/skillcont] - создаёт div. По оформлению он скрыт и показывается только при наведении на блок, который создаётся при помощи [skill=active_skill/passive_skill] * [/skill].
[level] * [/level], у которого есть несколько дополнительных тегов, таких как:
lvl= / hplv= / heallv= / mplv= / cdlv=
При этом желательно чтобы они могли существовать как отдельно друг от друга:
[level lvl=0] * [/level] / [level mplv=0] * [/level]
Так и все вместе:
[level lvl=0 hplv=0 mplv=0 cdlv=0] * [/level]
Сам [level] создаёт div, внутри которого есть ещё один див с текстом, однако в зависимости от количества тегов внутри этого дива могут создаваться ещё дополнительные дивы, каждая с определённым классом.
То есть [level lvl=0 mplv=0]Text[/level] создаст структуру вида <div id="table_level"> <div class="lvl_table">0</div> <div class="mplv_table">0</div> <div class="content_table">Text</div></div>
Посмотреть в рабочем режиме можно здесь.
И всё бы ничего, на наш основной форум находится на платформе MyBB, а переезжать на свой хостинг ещё долгое время не планируем.
Возможно ли создать точный аналог подобных ББ-кодов при помощи JavaScript/jQuery? (Чтобы при этом работало не только при просмотре самой темы, но и при поиске сообщений, предпросмотра и на мобильных устройствах).