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~&nbsp;~;
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