ManageBoards.pm, Load.pm and PostBox.pm have been refactored to add 'hooks' specifically for BoardMod additions.
When adding additional buttons to the UBBC array, you don't need to recalculate the div widths or positioning. The new mod buttons will automatically go into a div between the UBBC array and the Googiespell link. Those buttons will auto position themselves into two rows. (Note that the buttons must be uploaded into yabbfiles/ModImages to be found.)
For instance SpoilerTag_260_01.mod now looks like:
<id>
Spoiler Tag for YaBB 2.6.0
</id>
<version>
2.1
</version>
Files to edit
Admin/ModList.pm
Languages/English/InstantMessage.lng
Languages/English/Main.lng
Languages/English/Post.lng
Sources/InstantMessage.pm
Sources/MyCenter.pm
Sources/PostBox.pm
Sources/Printpage.pm
Sources/YaBBC.pm
ubbc.js
default.css
</mod info>
<author>
Derek Barnstorm, updated for 2.6.0 by Dandello
</author>
<homepage>
http://yabbforumsoftware.com
</homepage>
<edit file>
Admin/ModList.pm
</edit file>
<search for>
### END BOARDMOD ANCHOR ###
</search for>
<add before>
$spoiler_mod = "Spoiler Tag|Derek Barnstorm, updated for 2.6.0 by Dandello|Adds Spoiler Tag to YaBB|2.1|29th June 2014";
push (@installed_mods, "$spoiler_mod");
</add before>
<edit file>
Languages/English/ContextHelp.lng
</edit file>
<search for>
'noparse' => "No Parse:<br /><br />Select the YaBBC Code:<br />[SELECT]
This table will not be parsed |
[/SELECT]<br /><br />Click on the \"[TITLE]\" button: [BUTTON]<br /><br /><b>YaBBC Code:</b><br />[table][tr][td]This table will not be parsed[/td][/tr][/table]<br /><br /><b>Result:</b><br />
This table will not be parsed |
");
</search for>
<add before>
'spoiler' => "Hide spoilers or warnings:<br /><br />Select the text: bla bla [SELECT]Hello World[/SELECT] bla bla<br /><br />Click on the \"[TITLE]\" button: [BUTTON]<br /><br /><b>YaBBC Code:</b> bla bla
bla bla<br /><br /><b>Result:</b> bla bla
bla bla",
</add before>
<search for>
'right', '$contextxt{'right'}',
</search for>
<add after>
'spoiler', '$contextxt{'spoiler'}',
</add after>
<search for>
1;
</search for>
<add before>
## spoiler text
%spoiler_txt =(
'01' => 'Spoiler',
'02' => 'Show',
'03' => 'Hide',
'04' => 'for',
'05' => 'Insert Spoiler',
);
</add before>
<edit file>
Languages/English/InstantMessage.lng
</edit file>
<search for>
'84' => 'Code Ripped out',
</search for>
<add after>
'85' => 'Spoiler Ripped out',
</add after>
<edit file>
Languages/English/Main.lng
</edit file>
<search for>
1;
</search for>
<add before>
## spoiler text
%spoiler_txt =(
'01' => 'Spoiler',
'02' => 'Show',
'03' => 'Hide',
'04' => 'for',
);
</add before>
<edit file>
Languages/English/Post.lng
</edit file>
<search for>
1;
</search for>
<add before>
## spoiler text
%spoiler_txt =(
'01' => 'Spoiler',
'02' => 'Show',
'03' => 'Hide',
'04' => 'for',
'05' => 'Insert Spoiler',
);
</add before>
<edit file>
Sources/ContextHelp.pm
</edit file>
<search for>
LoadLanguage('ContextHelp');
</search for>
<add after>
my $spoil1 = $spoiler_txt{'01'};
my $spoil2 = $spoiler_txt{'02'};
my $spoil3 = $spoiler_txt{'03'};
</add after>
<search for>
document.getElementById("contexttitle").innerHTML = contextimage + ' ' + contitle;
</search for>
<add before>
contexthelp = contexthelp.replace(/\\[SPOILER\\](.*?)\\[\\/SPOILER\\]/g, '<div class=\"message\"><div style=\"padding-bottom: 1px;\"><b> $spoil1</b>: <input type=\"button\" class=\"button\" value=\"$spoil3\"></div><div class=\"spoiler\"><div> \$1</div></div></div><br /><div class=\"message\"><div style=\"padding-bottom: 1px;\"><b> $spoil1</b>: <input type=\"button\" class=\"button\" value=\"$spoil2\"></div><div class=\"spoiler\"><div style=\"display:none\"> \$1</div></div></div>');
</add before>
<edit file>
Sources/PostBox.pm
</edit file>
<search for>
);
## Mod Hook for UBBC ##
</search for>
<add before>
'spoiler' => "spoiler.gif|spoiler()|$spoiler_txt{'05'}",
</add before>
<edit file>
Sources/MyCenter.pm
</edit file>
<search for>
undef $quotecount;
undef $codecount;
</search for>
<add after>
undef $spoilercount;
</add after>
<search for>
$quoteimg = q{};
$codeimg = q{};
</search for>
<add after>
$spoilerimg = q{};
</add after>
<search for>
if ( $immessage =~ /\[code\s*(.*?)\]/isgm ) {
$codeimg =
qq~<img src="$imagesdir/$IM_code1" alt="$inmes_imtxt{'84'}" title="$inmes_imtxt{'84'}" /> ~;
$immessage =~ s/\[code\s*(.*?)\](.+?)\[\/code\]//igsm;
}
</search for>
<add after>
if ( $immessage =~ /\[spoiler\]/isgm ) {
$spoilerimg = qq~<img src="$imagesdir\/spoiler1.gif" alt="$inmes_imtxt{'85'}" title="$inmes_imtxt{'85'}" \/> ~;
$immessage =~ s/\[spoiler\](.+?)\[\/spoiler\]//igsm;
}
if ($immessage =~ /\[spoiler=([A-Za-z0-9# -,.]+)\]/isgm) {
$spoilerimg = qq~<img src="$imagesdir\/spoiler1.gif" alt="$inmes_imtxt{'85'}" title="$inmes_imtxt{'85'}" \/> ~;
$immessage =~ s/\[spoiler=([A-Za-z0-9# -,.]+)\](.+?)\[\/spoiler\]//igsm;
}
</add after>
<search for>
$immessage = qq~$quoteimg$codeimg $immessage~;
</search for>
<replace>
$immessage = qq~$quoteimg$codeimg$spoilerimg $immessage~;
</replace>
<edit file>
Sources/Printpage.pm
</edit file>
<search for>
$threadpost =~ s/\[move\](.*?)\[\/move\]/$1/isgxm;
</search for>
<add after>
$threadpost =~ s~\[spoiler\](.+?)\[/spoiler\]~<div class="message"><div style="padding-bottom: 1px;"><b>$spoiler_txt{'01'}:</b> <input type="button" class="button" value="$spoiler_txt{'02'}" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.value = '$spoiler_txt{'03'}'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = '$spoiler_txt{'02'}'; }"></div><div class="spoiler"><div style="display: none;">$1</div></div></div>~isgm;
$threadpost =~ s~\[spoiler=([A-Za-z0-9# -,.]+)\](.+?)\[/spoiler\]~<div class="message"><div style="padding-bottom: 1px;"><b>$spoiler_txt{'01'}</b> $spoiler_txt{'04'} <i>$1</i>: <input type="button" class="button" value="$spoiler_txt{'02'}" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.value = '$spoiler_txt{'03'}'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = '$spoiler_txt{'02'}'; }"></div><div class="spoiler"><div style="display: none;">$2</div></div></div>~isgm;
</add after>
<edit file>
Sources/YaBBC.pm
</edit file>
<search for>
$message =~
s/( | )*\[move\](.*?)\[\/move\]/<marquee>$2<\/marquee>/isgm;
</search for>
<add after>
$message =~ s~\[spoiler\](.+?)\[/spoiler\]~<div class="message"><div style="padding-bottom: 1px;"><b>$spoiler_txt{'01'}:</b> <input type="button" class="button" value="$spoiler_txt{'02'}" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.value = '$spoiler_txt{'03'}'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = '$spoiler_txt{'02'}'; }"></div><div class="spoiler"><div style="display: none;">$1</div></div></div>~isgm;
$message =~ s~\[spoiler=([A-Za-z0-9# -,.]+)\](.+?)\[/spoiler\]~<div class="message"><div style="padding-bottom: 1px;"><b>$spoiler_txt{'01'}</b> $spoiler_txt{'04'} <i>$1</i>: <input type="button" class="button" value="$spoiler_txt{'02'}" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.value = '$spoiler_txt{'03'}'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = '$spoiler_txt{'02'}'; }"></div><div class="spoiler"><div style="display: none;">$2</div></div></div>~isgm;
</add after>
<edit file>
..\..\public_html\yabbfiles\ubbc.js
</edit file>
<search for>
function move() {
AddSelText("
","
");
}
</search for>
<add after>
function spoiler() {
AddSelText("
");
}
</add after>
<edit file>
..\..\public_html\yabbfiles\Templates\Forum\default.css
</edit file>
<search for>
.editbg {
background-color: #fffedf;
border: 1px #c00 solid;
color: #000;
font-family: Verdana, Helvetica, Arial, Sans-Serif;
font-size: 11px;
font-style: normal;
font-weight: 400;
padding: 4px;
width: 90%;
}
</search for>
<add after>
.spoiler {
font-size: 12px;
font-weight: normal;
font-style: normal;
font-family: Verdana, Helvetica, Arial, Sans-Serif;
color: #304B58;
border: 1px inset;
width: 90%;
padding: 4px;
}
</add after>