1############################################################################### 2# TabMenu.pm # 3# $Date: 12.02.14 $ # 4############################################################################### 5# YaBB: Yet another Bulletin Board # 6# Open-Source Community Software for Webmasters # 7# Version: YaBB 2.6.11 # 8# Packaged: December 2, 2014 # 9# Distributed by: http://www.yabbforum.com # 10# =========================================================================== # 11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved. # 12# Software by: The YaBB Development Team # 13# with assistance from the YaBB community. # 14############################################################################### 15our $VERSION = '2.6.11'; 16 17$tabmenupmver = 'YaBB 2.6.11 $Revision: 1611 $'; 18if ( $action eq 'detailedversion' ) { return 1; } 19 20LoadLanguage('TabMenu'); 21get_micon(); 22 23$tabsep = q{}; 24$tabfill = q{}; 25 26sub mainMenu { 27 my @acting = ( 28 [ 29 'search2', 'favorites', 30 'shownotify', 'im', 31 'imdraft', 'imoutbox', 32 'imstorage', 'imsend', 33 'imsend2', 'imshow', 34 'profileCheck', 'myviewprofile', 35 'myprofile', 'myprofileContacts', 36 'myprofileOptions', 'myprofileBuddy', 37 'myprofileIM', 'myprofileAdmin', 38 'myusersrecentposts', 'messagepagetext', 39 'messagepagedrop', 'threadpagetext', 40 'threadpagedrop', 'post', 41 'notify', 'boardnotify', 42 'sendtopic', 'modify', 43 'guestpm2' 44 ], 45 [ 46 'search', 'mycenter', 'mycenter', 'mycenter', 47 'mycenter', 'mycenter', 'mycenter', 'mycenter', 48 'mycenter', 'mycenter', 'mycenter', 'mycenter', 49 'mycenter', 'mycenter', 'mycenter', 'mycenter', 50 'mycenter', 'mycenter', 'mycenter', 'home', 51 'home', 'home', 'home', 'home', 52 'home', 'home', 'home', 'home', 53 'guestpm' 54 ], 55 ); 56## Mod hook 1 ## 57 58 if ( $action eq 'addtab' && $iamadmin ) { 59 require Sources::AdvancedTabs; 60 AddNewTab(); 61 } 62 elsif ( $action eq 'edittab' && $iamadmin ) { 63 require Sources::AdvancedTabs; 64 EditTab(); 65 } 66 elsif ( $INFO{'board'} || $INFO{'num'} ) { $tmpaction = q{}; } 67 elsif ( $action ne q{} ) { 68 for my $i ( 0 .. $#{ $acting[0] } ) { 69 my $img0 = $acting[0]->[$i]; 70 my $img1 = $acting[1]->[$i]; 71 if ( $action eq $img0 ) { 72 $tmpaction = $img1; 73 } 74 else { $tmpaction = $action; } 75 } 76 } 77 else { 78 $tmpaction = 'home'; 79 } 80 81 my $tabhtml_l = q~ <li><span|><a href=~; 82 my $tabhtml_r = qq~</span></li>\n~; 83 $tab{'home'} = qq~$tabhtml_l"$scripturl" title="$img_txt{'103'}">$img_txt{'103'}</a>$tabhtml_r~; 84 $tab{'help'} = qq~$tabhtml_l"$scripturl?action=help" title="$img_txt{'119'}" class="help">$img_txt{'119'}</a>$tabhtml_r~; 85 86 if ( $maxsearchdisplay > -1 && $advsearchaccess eq 'granted' ) { 87 $tab{'search'} = qq~$tabhtml_l"$scripturl?action=search" title="$img_txt{'182'}">$img_txt{'182'}</a>$tabhtml_r~; 88 } 89 if ( $Show_EventButton == 2 || ( !$iamguest && $Show_EventButton == 1 ) ) { 90 $tab{'eventcal'} = qq~$tabhtml_l"$scripturl?action=eventcal;calshow=1" title="$img_txt{'eventcal'}">$img_txt{'eventcal'}</a>$tabhtml_r~; 91 } 92 if ( $Show_BirthdayButton == 2 93 || ( !$iamguest && $Show_BirthdayButton == 1 ) ) 94 { 95 $tab{'birthdaylist'} = qq~$tabhtml_l"$scripturl?action=birthdaylist" title="$img_txt{'birthdaylist'}">$img_txt{'birthdaylist'}</a>$tabhtml_r~; 96 } 97 if ( !$ML_Allowed 98 || ( $ML_Allowed == 1 && !$iamguest ) 99 || ( $ML_Allowed == 2 && $staff ) 100 || ( $ML_Allowed == 3 && ( $iamadmin || $iamgmod ) ) 101 || ( $ML_Allowed == 4 && ( $iamadmin || $iamgmod || $iamfmod ) ) ) 102 { 103 $tab{'ml'} = qq~$tabhtml_l"$scripturl?action=ml" title="$img_txt{'331'}">$img_txt{'331'}</a>$tabhtml_r~; 104 } 105 if ($iamadmin) { 106 if ($do_scramble_id) { $user = cloak($username); } 107 else { $user = $username; } 108 $tab{'admin'} = qq~$tabhtml_l"$boardurl/AdminIndex.$yyaext?action=admincheck;username=$user" title="$img_txt{'2'}">$img_txt{'2'}</a>$tabhtml_r~; 109 } 110 if ($iamgmod) { 111 get_gmod(); 112 if ($allow_gmod_admin) { 113 if ($do_scramble_id) { $user = cloak($username); } 114 else { $user = $username; } 115 $tab{'admin'} = qq~$tabhtml_l"$boardurl/AdminIndex.$yyaext?action=admincheck;username=$user" title="$img_txt{'2'}">$img_txt{'2'}</a>$tabhtml_r~; 116 } 117 } 118 if ( $sessionvalid == 0 && !$iamguest ) { 119 my $sesredir; 120 if ( $testenv 121 && $action ne 'revalidatesession' 122 && $action ne 'revalidatesession2' ) 123 { 124 $sesredir = $testenv; 125 $sesredir =~ s/\=/\~/gxsm; 126 $sesredir =~ s/;/x3B/gxsm; 127 $sesredir = qq~;sesredir=$sesredir~; 128 } 129 $tab{'revalidatesession'} = qq~$tabhtml_l"$scripturl?action=revalidatesession$sesredir" title="$img_txt{'34a'}">$img_txt{'34a'}</a>$tabhtml_r~; 130 } 131 if ($iamguest) { 132 my $sesredir; 133 if ($testenv) { 134 $sesredir = $testenv; 135 $sesredir =~ s/\=/\~/gxsm; 136 $sesredir =~ s/;/x3B/gxsm; 137 $sesredir = qq~;sesredir=$sesredir~; 138 } 139 $tab{'login'} = qq~$tabhtml_l"~ 140 . ( 141 $loginform 142 ? "javascript:if(jumptologin>1)alert('$maintxt{'35'}');jumptologin++;window.scrollTo(0,10000);document.loginform.username.focus();" 143 : "$scripturl?action=login$sesredir" 144 ) . qq~" title="$img_txt{'34'}">$img_txt{'34'}</a>$tabhtml_r~; 145 if ($regtype) { 146 $tab{'register'} = qq~$tabhtml_l"$scripturl?action=register" title="$img_txt{'97'}">$img_txt{'97'}</a>$tabhtml_r~; 147 } 148 if ( $PMenableGuestButton && $PM_level > 0 && $PMenableBm_level > 0 ) { 149 $tab{'guestpm'} = qq~$tabhtml_l"$scripturl?action=guestpm" title="$img_txt{'pmadmin'}">$img_txt{'pmadmin'}</a>$tabhtml_r~; 150 } 151 } 152 else { 153 $tab{'mycenter'} = qq~$tabhtml_l"$scripturl?action=mycenter" title="$img_txt{'mycenter'}">$img_txt{'mycenter'}</a>$tabhtml_r~; 154 $tab{'logout'} = qq~$tabhtml_l"$scripturl?action=logout" title="$img_txt{'108'}">$img_txt{'108'}</a>$tabhtml_r~; 155 } 156 157## Tab Mod Hook ## 158 159 $yytabmenu = qq~<ul>\n~; 160 # Advanced Tabs starts here 161 for my $i ( 0 .. $#AdvancedTabs ) { 162 if ( $AdvancedTabs[$i] =~ /[|]/xsm ) { 163 my ( 164 $tab_key, $tmptab_url, $isaction, $username_req, 165 $tab_access, $tab_newwin, $exttab_url 166 ) = split /[|]/xsm, $AdvancedTabs[$i]; 167 if ( !$tab_access 168 || ( $tab_access < 2 && !$iamguest ) 169 || ( $tab_access < 3 && $iamgmod ) 170 || $iamadmin ) 171 { 172 if ( $tmptab_url == 1 ) { $tab_url = $scripturl; } 173 elsif ( $tmptab_url == 2 ) { 174 $tab_url = qq~$boardurl/AdminIndex.$yyaext~; 175 } 176 else { $tab_url = $tmptab_url; } 177 if ($isaction) { $tab_url .= qq~?action=$tab_key~; } 178 if ($username_req) { 179 $tab_url .= qq~;username=$useraccount{$username}~; 180 } 181 if ($exttab_url) { $tab_url .= qq~;$exttab_url~; } 182 my $newwin = $tab_newwin ? q~ target="_blank"~ : q{}; 183 if ( !$tab_lang ) { GetTabtxt(); } 184 185 $yytabmenu .= q~ <li><span~ 186 . ( 187 $AdvancedTabs[$i] eq $tmpaction 188 ? q~ class="selected"~ 189 : q{} 190 ) 191 . qq~><a href="$tab_url"$newwin title="$tabtxt{$tab_key}">$tabtxt{$tab_key}</a>$tabhtml_r~; 192 } 193 } 194 elsif ( $tab{ $AdvancedTabs[$i] } ) { 195 my ( $first, $last ) = split /\|/xsm, $tab{ $AdvancedTabs[$i] }; 196 $yytabmenu .= $first 197 . ( 198 ( $AdvancedTabs[$i] eq $tmpaction && $last ) 199 ? q~ class="selected"~ 200 : q{} 201 ) . $last; 202 } 203 } 204 $yytabmenu .= q~ </ul>~; 205 206 if ( $iamadmin && $addtab_on == 1 ) { 207 my ( $seladdtab, $seledittab ); 208 if ( $action eq 'addtab' ) { $seladdtab = q~ class="selected"~; } 209 elsif ( $action eq 'edittab' ) { $seledittab = q~ class="selected"~; } 210 $yytabadd = 211qq~<ul class="advtabs"><li id="addtab"><span$seladdtab><a href="$scripturl?action=addtab" title="$tabmenu_txt{'newtab'}">$micon{'tabadd'}</a>$tabhtml_r~; 212 $yytabadd .= 213qq~<li id="edittab"><span$seledittab><a href="$scripturl?action=edittab" title="$tabmenu_txt{'edittab'}">$micon{'tabedit'}</a></span></li>\n</ul>~; 214 } 215 else { 216 $yytabadd = q~ ~; 217 } 218 return; 219} 220 221sub GetTabtxt2 { 222 $tab_lang = $language ? $language : $lang; 223 if ( -e "$langdir/$tab_lang/tabtext.txt" ) { 224 fopen( TABTXT, "$langdir/$tab_lang/tabtext.txt" ); 225 @tabtext = <TABTXT>; 226 fclose(TABTXT); 227 chomp @tabtext; 228 for ( @tabtext ) { 229 if ( $_ ne q{} ) { 230 ($key, $val ) = split /\t/xsm, $_; 231 $tabtxt{$key} = $val; 232 } 233 } 234 } 235 elsif ( -e "$langdir/English/tabtext.txt" ) { 236 fopen( TABTXT, "$langdir/English/tabtext.txt" ); 237 @tabtext = <TABTXT>; 238 fclose(TABTXT); 239 chomp @tabtext; 240 for ( @tabtext ) { 241 if ( $_ ne q{} ) { 242 ($key, $val ) = split /\t/xsm, $_; 243 $tabtxt{$key} = $val; 244 } 245 } 246 if ( -e "$langdir/$tab_lang/Main.lng" ) { 247 fopen( TABTXT, ">$langdir/$tab_lang/tabtext.txt" ); 248 print {TABTXT} map { "$_\t$tabtxt{$_}\n" } keys %tabtxt 249 or croak "$croak{'print'} TABTXT"; 250 fclose(TABTXT); 251 } 252 } 253 return; 254} 255 256sub GetTabtxt { 257 $tab_lang = $language ? $language : $lang; 258 if ( -e "$langdir/$tab_lang/tabtext.txt" ) { 259 fopen( TABTXT, "$langdir/$tab_lang/tabtext.txt" ); 260 %tabtxt = map { /(.*)\t(.*)/xsm } <TABTXT>; 261 fclose(TABTXT); 262 for (keys %tabtxt) { 263 chomp $tabtxt{$_} 264 } 265 } 266 elsif ( -e "$langdir/English/tabtext.txt" ) { 267 fopen( TABTXT, "$langdir/English/tabtext.txt" ); 268 %tabtxt = map { /(.*)\t(.*)/xsm } <TABTXT>; 269 fclose(TABTXT); 270 if ( -e "$langdir/$tab_lang/Main.lng" ) { 271 fopen( TABTXT, ">$langdir/$tab_lang/tabtext.txt" ); 272 print {TABTXT} map { "$_\t$tabtxt{$_}\n" } keys %tabtxt 273 or croak "$croak{'print'} TABTXT"; 274 fclose(TABTXT); 275 } 276 } 277 return; 278} 279 2801; 281