Collapsable YaBB Front End
1.0
Allows board members to collapse the board index to show only those categorys that they are interested in.
Settings for each member are stored in a .cat file in your /Members directory. Hence this mod does not modify any existing YaBB variable or member files.
Might not play well with other mods that effect the BoardIndex.pl file, especially those that fiddle with the display of categories and boards. No probs with advanced instant messanger.
snYpir (morpj97@hn.ozemail.com.au).
http://boardmod.xnull.com/yabb/YaBB.pl?action=viewprofile&username=snYpir
Sources\BoardIndex.pl
| $txt{'20'} |
~;
### snYpir's collapsable YaBB part 1
# expand/collapse all buttons
if ( $username ne 'Guest' ){
$yymain .= qq~
| ~;
}
else{
$yymain .= qq~$txt{'20'} | ~;
}
### end snYpir's collapsable YaBB part 1
$yymain .= qq~
foreach $curcat (@categories) {
unless( $openmemgr{$curcat} ) { next; }
### snYpir's collapsable YaBB part 2
# init catstatus counter
$catcount=0;
if ( $username ne 'Guest' ){
# load the .cat file for this user, put into array
fopen(FILE, "$memberdir/$username.cat");
@catstatus = ;
fclose(FILE);
# remove trailing newline chars
for( $catnum = 0; $catnum < @catstatus; $catnum++ ) {
chomp $catstatus[$catnum];
}
# .cat file for this user not found, or number of categories changed?
if ( @catstatus ne @categories ){
# write new .cat file for user
fopen( FILE, ">$memberdir/$username.cat", 1);
for( $catnum = 0; $catnum < @categories; $catnum++ ) {
print FILE "1\n";
}
fclose(FILE);
}
}
### end snYpir's collapsable YaBB part 2
$catname{$curcat} |
~;
### snYpir's collapsable YaBB part 3
if ( $username ne 'Guest' ) {
$yymain .= qq~
« $catname{$curcat} » | ~;
}
else{
$yymain .= qq~
« $catname{$curcat} » | ~;
}
### end snYpir's collapsable YaBB part 3
$yymain .= qq~
foreach $curboard (@{$catboards{$curcat}}) {
chomp $curboard;
fopen(FILE, "$boardsdir/$curboard.dat");
### snYpir's collapsable YaBB part 4
# if category is open, display boards (or if this user is a guest)
if( $catstatus[$catcount] || $username eq 'Guest' ){
### end snYpir's collapsable YaBB part 4
}
my $checkadded = 0;
### snYpir's collapsable YaBB part 5
#endif
}
++$catcount;
### end snYpir's collapsable YaBB part 5
sub MarkAllRead {
### snYpir's collapsable YaBB - subs
sub Collapse_Cat {
if ( $username eq 'Guest' ){
&fatal_error($exptxt{'4'});
exit;
}
# Grab the index of the category to collapse/expand
$catindex = $INFO{'cat'};
# read the current users category file
fopen(FILE, "$memberdir/$username.cat");
@catstatus = ;
fclose(FILE);
# remove trailing newline chars
for( $catnum = 0; $catnum < @catstatus; $catnum++ ) {
chomp $catstatus[$catnum];
# fix in case using older version
if ( $catstatus[$catnum] eq "true" ){ $catstatus[$catnum] = 1; }
if ( $catstatus[$catnum] eq "false" ){ $catstatus[$catnum] = 0; }
}
# does the file exist?
if ( $catstatus[0] != 1 && $catstatus[0] != 0 ){
&fatal_error($exptxt{'3'});
exit;
}
# toggle the status of the selected category
if ( $catstatus[$catindex] eq 1 ){
$catstatus[$catindex] = 0;
}
else{
$catstatus[$catindex] = 1;
}
# rewrite category file for this user
fopen( FILE, ">$memberdir/$username.cat", 1);
for( $catnum = 0; $catnum < @catstatus; $catnum++ ) {
print FILE "$catstatus[$catnum]\n";
}
fclose(FILE);
&redirectinternal;
exit;
}
sub Collapse_All {
$state = '0';
$state = $INFO{'status'};
if ( $username eq 'Guest' ){
&fatal_error($exptxt{'4'});
exit;
}
# read the current users category file
fopen(FILE, "$memberdir/$username.cat");
@catstatus = ;
fclose(FILE);
# remove trailing newline chars
for( $catnum = 0; $catnum < @catstatus; $catnum++ ) {
chomp $catstatus[$catnum];
# fix in case using older version
if ( $catstatus[$catnum] eq "true" ){ $catstatus[$catnum] = 1; }
if ( $catstatus[$catnum] eq "false" ){ $catstatus[$catnum] = 0; }
}
# does the file exist?
if ( $catstatus[0] != 1 && $catstatus[0] != 0 ){
&fatal_error($exptxt{'3'});
exit;
}
# rewrite category file for this user
fopen( FILE, ">$memberdir/$username.cat", 1);
for( $catnum = 0; $catnum < @catstatus; $catnum++ ) {
print FILE "$state\n";
}
fclose(FILE);
&redirectinternal;
exit;
}
### end snYpir's collapsable YaBB - subs
english.lng
1;
$exptxt{'1'} = "Expand";
$exptxt{'2'} = "Collapse";
$exptxt{'3'} = " User category file not found - please try refreshing the board index (back then F5).\n If you receive this message again, please inform an administrator.";
$exptxt{'4'} = " You must be a member to use the collapsable/collapsable categories!";
YaBB.pl
elsif ($action eq 'clean_log') { require "$sourcedir/Admin.pl"; &clean_log; }
elsif ($action eq 'collapse_cat') { require "$sourcedir/BoardIndex.pl"; &Collapse_Cat; }
elsif ($action eq 'collapse_all') { require "$sourcedir/BoardIndex.pl"; &Collapse_All; }