1############################################################################### 2# BookmarkSettings.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-2010 YaBB (www.yabbforum.com) - All Rights Reserved. # 12# Software by: The YaBB Development Team # 13# with assistance from the YaBB community. # 14############################################################################### 15use CGI::Carp qw(fatalsToBrowser); 16our $VERSION = '2.6.11'; 17 18$settings_bookmarkspmver = 'YaBB 2.6.11 $Revision: 1611 $'; 19if ( $action eq 'detailedversion' ) { return 1; } 20 21LoadLanguage('Bookmarks'); 22 23sub Bookmarks { 24 25 is_admin_or_gmod(); 26 27 if ($en_bookmarks) { $chk_bookmarks = q~ checked="checked"~; } 28 get_forum_master(); 29 30 *get_subboards = sub { 31 my @x = @_; 32 $indent += 2; 33 foreach my $board (@x) { 34 my $dash; 35 if ( $indent > 2 ) { $dash = q{-}; } 36 37 ( $boardname, $boardperms, $boardview ) = 38 split /\|/xsm, $board{"$board"}; 39 if ( ${ $uid . $board }{'rbin'} == 1 40 || $boardname =~ m/http:\/\//xsm ) 41 { 42 next; 43 } 44 ToChars($boardname); 45 $sel_board = q{}; 46 foreach ( split /\,\ /sm, $bm_boards ) { 47 if ( $_ eq $board ) { $sel_board = q~ selected="selected"~; } 48 } 49 $board_list .= 50 qq~<option value="$board"$sel_board>~ 51 . ( ' ' x $indent ) 52 . ( $dash x ( $indent / 2 ) ) 53 . qq~$boardname</option>\n~; 54 if ( $subboard{$board} ) { 55 get_subboards( split /\|/xsm, $subboard{$board} ); 56 } 57 } 58 $indent -= 2; 59 }; 60 61 foreach my $catid (@categoryorder) { 62 @bdlist = split /,/xsm, $cat{$catid}; 63 ( $catname, undef, undef, undef ) = split /\|/xsm, $catinfo{"$catid"}; 64 ToChars($catname); 65 $board_list .= qq~<option disabled="disabled">$catname</option>\n~; 66 foreach my $board (@bdlist) { 67 ( $boardname, undef, undef ) = split /\|/xsm, $board{"$board"}; 68 if ( ${ $uid . $board }{'ann'} == 1 69 || ${ $uid . $board }{'rbin'} == 1 70 || $boardname =~ m/http:\/\//xsm ) 71 { 72 next; 73 } 74 ToChars($boardname); 75 $sel_board = q{}; 76 } 77 my $indent = -2; 78 get_subboards(@bdlist); 79 } 80 81 fopen( BMARKS, "<$vardir/Bookmarks.txt" ) 82 || fatal_error( 'cannot_open', "$vardir/Bookmarks.txt", 1 ); 83 @bookmarks = <BMARKS>; 84 fclose(BMARKS); 85 chomp @bookmarks; 86 87 $total_bookmarks = @bookmarks || 0; 88 89 if (@bookmarks) { 90 $show_bookmarks = qq~ 91 <tr class="catbg" style="font-weight: bold; font-size: 11px; text-align: center;"> 92 <td>$bookmark_txt{'01'}</td> 93 <td>$bookmark_txt{'02'}</td> 94 <td>$bookmark_txt{'03'}</td> 95 <td>$admin_txt{'edit'}</td> 96 <td>$admin_txt{'delete'}</td> 97 </tr>~; 98 foreach my $bookmark ( sort { $a <=> $b } @bookmarks ) { 99 ( $bm_order, $bm_title, $bm_image, $bm_url, $bm_id ) = 100 split /\|/xsm, $bookmark; 101 $show_bookmarks .= qq~<tr class="windowbg2"> 102 <td><img src="$yyhtml_root/Bookmarks/$bm_image" alt="$bm_title" title="$bm_title" /></td> 103 <td>$bm_title</td> 104 <td>$bm_order</td> 105 <td> 106 <form action="$adminurl?action=bookmarks_edit" method="post"> 107 <input type="hidden" name="bookmark_id" value="$bm_id" /> 108 <input class="button" type="submit" value="$admin_txt{'edit'}" /> 109 </form> 110 </td> 111 <td> 112 <form action="$adminurl?action=bookmarks_delete" method="post"> 113 <input type="hidden" name="bookmark_id" value="$bm_id" /> 114 <input class="button" type="submit" value="$admin_txt{'delete'}" onclick="return confirm('$bookmark_txt{'05'}');"/> 115 </form> 116 </td> 117 </tr>~; 118 } 119 } 120 else { 121 $show_bookmarks = qq~ 122 <tr class="windowbg"> 123 <td>$bookmark_txt{'08'}</td> 124 </tr>~; 125 } 126 127 $yymain .= qq~ 128<form action="$adminurl?action=bookmarks2" method="post"> 129<div class="bordercolor rightboxdiv"> 130 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 131 <colgroup> 132 <col style="width:50%" /> 133 <col style="width:50%" /> 134 </colgroup> 135 <tr> 136 <th class="titlebg" colspan="2">$admin_img{'prefimg'} $bookmark_txt{'09'}</th> 137 </tr><tr class="windowbg2 vtop"> 138 <td><label for="en_bookmarks">$bookmark_txt{'10'}</label></td> 139 <td><input type="checkbox" name="en_bookmarks" id="en_bookmarks" value="1"$chk_bookmarks /></td> 140 </tr><tr class="windowbg2 vtop"> 141 <td><label for="bm_subcut">$bookmark_txt{'22'}:</label></td> 142 <td><input type="text" name="bm_subcut" id="bm_subcut" size="3" value="$bm_subcut" /></td> 143 </tr><tr class="windowbg2 vtop"> 144 <td><label for="bm_boards">$bookmark_txt{'11'}</label></td> 145 <td> 146 <select multiple="multiple" name="bm_boards" id="bm_boards" size="8"> 147 $board_list 148 </select> 149 </td> 150 </tr> 151 </table> 152</div> 153<div class="bordercolor rightboxdiv"> 154 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 155 <tr> 156 <th class="titlebg" style="text-align: left; vertical-align: middle;" colspan="2">$admin_img{'prefimg'} $admin_txt{'10'}</th> 157 </tr><tr> 158 <td class="catbg" style="text-align: center; vertical-align: middle;" colspan="2"><input class="button" type="submit" value="$admin_txt{'10'}" /></td> 159 </tr> 160 </table> 161</div> 162</form> 163<div class="bordercolor rightboxdiv"> 164 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 165 <colgroup> 166 <col style="width:10%" /> 167 <col style="width:auto" /> 168 <col style="width:10%" /> 169 <col style="width:7%" span="2" /> 170 </colgroup> 171 <tr> 172 <th class="titlebg" colspan="5">$admin_img{'prefimg'} $bookmark_txt{'12'} ($total_bookmarks)</th> 173 </tr> 174 $show_bookmarks 175 </table> 176</div> 177<form action="$adminurl?action=bookmarks_add" method="post" enctype="multipart/form-data"> 178<div class="bordercolor rightboxdiv"> 179 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 180 <colgroup> 181 <col style="width:50%" /> 182 <col style="width:50%" /> 183 </colgroup> 184 <tr> 185 <th class="titlebg" colspan="2">$admin_img{'prefimg'} $bookmark_txt{'13'}</th> 186 </tr><tr class="windowbg2 vtop"> 187 <td><label for="bm_title"><span style="font-weight: bold;">$bookmark_txt{'02'}:</span><br /><span class="small">$bookmark_txt{'18'}</span></label></td> 188 <td><input type="text" name="bm_title" id="bm_title" size="35" /></td> 189 </tr><tr class="windowbg2 vtop"> 190 <td><label for="bm_image"><span style="font-weight: bold;">$bookmark_txt{'01'}:</span><br /><span class="small">$bookmark_txt{'19'}</span></label></td> 191 <td><input type="file" name="bm_image" id="bm_image" size="35" /></td> 192 </tr><tr class="windowbg2 vtop"> 193 <td><label for="bm_url"><span style="font-weight: bold;">$bookmark_txt{'14'}:</span><br /><span class="small">$bookmark_txt{'20'}</span></label></td> 194 <td><input type="text" name="bm_url" id="bm_url" size="70" /></td> 195 </tr><tr class="windowbg2 vtop"> 196 <td><label for="bm_order"><span style="font-weight: bold;">$bookmark_txt{'03'}:</span><br /><span class="small">$bookmark_txt{'21'}</span></label></td> 197 <td><input type="text" name="bm_order" id="bm_order" size="3" /></td> 198 </tr> 199 </table> 200</div> 201<div class="bordercolor rightboxdiv"> 202 <table class="border-space pad-cell"> 203 <tr> 204 <th class="titlebg" colspan="2">$admin_img{'prefimg'} $admin_txt{'10'}</th> 205 </tr><tr> 206 <td class="catbg center" colspan="2"><input class="button" type="submit" value="$bookmark_txt{'15'}" /></td> 207 </tr> 208 </table> 209</div> 210</form>~; 211 212 $yytitle = $admintxt{'bookmarks1'}; 213 $action_area = 'bookmarks'; 214 AdminTemplate(); 215 exit; 216} 217 218sub Bookmarks2 { 219 220 is_admin_or_gmod(); 221 222 $en_bookmarks = $FORM{'en_bookmarks'} || '0'; 223 $bm_subcut = $FORM{'bm_subcut'} || '50'; 224 $bm_boards = $FORM{'bm_boards'}; 225 226 require Admin::NewSettings; 227 SaveSettingsTo('Settings.pm'); 228 229 if ( $action eq 'bookmarks2' ) { 230 $yySetLocation = qq~$adminurl?action=bookmarks~; 231 redirectexit(); 232 } 233 return; 234} 235 236sub AddBookmark { 237 238 is_admin_or_gmod(); 239 240 $bm_order = $FORM{'bm_order'}; 241 $bm_title = $FORM{'bm_title'}; 242 $bm_image = $FORM{'bm_image'}; 243 $bm_url = $FORM{'bm_url'}; 244 245 if ( $bm_title eq q{} ) { 246 fatal_error( 'invalid_value', "$bookmark_txt{'02'}" ); 247 } 248 if ( $bm_image eq q{} ) { 249 fatal_error( 'invalid_value', "$bookmark_txt{'01'}" ); 250 } 251 if ( $bm_url eq q{} ) { fatal_error( 'no_value', "$bookmark_txt{'14'}" ); } 252 if ( $bm_order eq q{} ) { 253 fatal_error( 'invalid_value', "$bookmark_txt{'03'}" ); 254 } 255 256 $bm_image = UploadFile('bm_image', 'Bookmarks', 'png jpg jpeg gif', '250', '0'); 257 258 fopen( BMARKS, ">>$vardir/Bookmarks.txt" ) 259 || fatal_error( 'cannot_open', "$vardir/Bookmarks.txt", 1 ); 260 print {BMARKS} "$bm_order|$bm_title|$bm_image|$bm_url|$date\n" 261 or croak "$croak{'print'} BookMark"; 262 fclose(BMARKS); 263 264 if ( $action eq 'bookmarks_add' ) { 265 $yySetLocation = qq~$adminurl?action=bookmarks~; 266 redirectexit(); 267 } 268 return; 269} 270 271sub DeleteBookmark { 272 273 is_admin_or_gmod(); 274 275 fopen( BMARKS, "<$vardir/Bookmarks.txt" ) 276 || fatal_error( 'cannot_open', "$vardir/Bookmarks.txt", 1 ); 277 @bookmarks = <BMARKS>; 278 fclose(BMARKS); 279 280 fopen( BMARKS, ">$vardir/Bookmarks.txt" ) 281 || fatal_error( 'cannot_open', "$vardir/Bookmarks.txt", 1 ); 282 print {BMARKS} grep { !/$FORM{'bookmark_id'}/xsm } @bookmarks 283 or croak "$croak{'print'} BookMark"; 284 fclose(BMARKS); 285 286 foreach my $bookmark (@bookmarks) { 287 chomp $bookmark; 288 if ( $bookmark =~ /$FORM{'bookmark_id'}/xsm ) { 289 $bm_delete = $bookmark; 290 last; 291 } 292 } 293 ( undef, undef, $bm_image, undef, undef ) = split /\|/xsm, 294 $bm_delete; 295 296 unlink "$htmldir/Bookmarks/$bm_image"; 297 298 if ( $action eq 'bookmarks_delete' ) { 299 $yySetLocation = qq~$adminurl?action=bookmarks~; 300 redirectexit(); 301 } 302 return; 303} 304 305sub EditBookmark { 306 307 is_admin_or_gmod(); 308 309 $id = $FORM{'bookmark_id'}; 310 my $bm_edit = {}; 311 312 fopen( BMARKS, "<$vardir/Bookmarks.txt" ) 313 || fatal_error( 'cannot_open', "$vardir/Bookmarks.txt", 1 ); 314 @bookmarks = <BMARKS>; 315 fclose(BMARKS); 316 317 foreach my $bookmark (@bookmarks) { 318 chomp $bookmark; 319 if ( $bookmark =~ /$id/xsm ) { 320 $bm_edit = $bookmark; 321 last; 322 } 323 } 324 ( $bm_order, $bm_title, $bm_image, $bm_url, $bm_id ) = split /\|/xsm, 325 $bm_edit; 326 327 $yymain .= qq~ 328<form action="$adminurl?action=bookmarks_edit2" method="post" enctype="multipart/form-data"> 329<div class="bordercolor rightboxdiv"> 330 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 331 <colgroup> 332 <col style="width:50%" /> 333 <col style="width:50%" /> 334 </colgroup> 335 <tr> 336 <th class="titlebg"colspan="2">$admin_img{'prefimg'} $bookmark_txt{'16'}</th> 337 </tr><tr class="windowbg2 vtop"> 338 <td><label for="bm_title"><span style="font-weight: bold;">$bookmark_txt{'02'}:</span><br /><span class="small">$bookmark_txt{'18'}</span></label></td> 339 <td><input type="text" name="bm_title" id="bm_title" size="35" value="$bm_title" /></td> 340 </tr><tr class="windowbg2 vtop"> 341 <td><label for="bm_image"><span style="font-weight: bold;">$bookmark_txt{'01'}:</span><br /><span class="small">$bookmark_txt{'19'}</span></label></td> 342 <td> 343 <input type="file" name="bm_image" id="bm_image" size="35" /> 344 <input type="hidden" name="bm_cur_image" value="$bm_image" /> <span class="cursor small bold" title="$admin_txt{'remove_file'}" onclick="document.getElementById('bm_image').value='';">X</span> 345 <div class="small bold">$admin_txt{'current_img'}: <a href="$yyhtml_root/Bookmarks/$bm_image" target="_blank">$bm_image</a></div> 346 </td> 347 </tr><tr class="windowbg2 vtop"> 348 <td><label for="bm_url"><span style="font-weight: bold;">$bookmark_txt{'14'}:</span><br /><span class="small">$bookmark_txt{'20'}</span></label></td> 349 <td><input type="text" name="bm_url" id="bm_url" size="70" value="$bm_url" /></td> 350 </tr><tr class="windowbg2 vtop"> 351 <td><label for="bm_order"><span style="font-weight: bold;">$bookmark_txt{'03'}:</span><br /><span class="small">$bookmark_txt{'21'}</span></label></td> 352 <td><input type="text" name="bm_order" id="bm_order" size="3" value="$bm_order" /><input type="hidden" name="bm_id" value="$bm_id" /></td> 353 </tr> 354 </table> 355</div> 356<div class="bordercolor rightboxdiv"> 357 <table class="border-space pad-cell"> 358 <tr> 359 <th class="titlebg" colspan="2">$admin_img{'prefimg'} $admin_txt{'10'}</th> 360 </tr><tr> 361 <td class="catbg center" colspan="2"><input class="button" type="submit" value="$admin_txt{'10'}" /> <input type="button" class="button" value="$bookmark_txt{'17'}" onclick="location.href='$adminurl?action=bookmarks';" /></td> 362 </tr> 363 </table> 364</div> 365</form>~; 366 367 $yytitle = $admintxt{'bookmarks1'}; 368 AdminTemplate(); 369 exit; 370} 371 372sub EditBookmark2 { 373 374 is_admin_or_gmod(); 375 376 $bm_order = $FORM{'bm_order'}; 377 $bm_title = $FORM{'bm_title'}; 378 $bm_image = $FORM{'bm_image'}; 379 $bm_url = $FORM{'bm_url'}; 380 $bm_id = $FORM{'bm_id'}; 381 $bm_cur_image = $FORM{'bm_cur_image'}; 382 383 if ( $bm_title eq q{} ) { 384 fatal_error( 'invalid_value', "$bookmark_txt{'02'}" ); 385 } 386 if ( $bm_url eq q{} ) { fatal_error( 'invalid_value', "$bookmark_txt{'14'}" ); } 387 if ( $bm_order eq q{} ) { 388 fatal_error( 'invalid_value', "$bookmark_txt{'03'}" ); 389 } 390 391 if ( $bm_image ne q{} ) { 392 $bm_image = UploadFile('bm_image', 'Bookmarks', 'png jpg jpeg gif', '250', '0'); 393 unlink "$htmldir/Bookmarks/$bm_cur_image"; 394 } 395 else { 396 $bm_image = $bm_cur_image; 397 } 398 399 fopen( BMARKS, "<$vardir/Bookmarks.txt" ) 400 || fatal_error( 'cannot_open', "$vardir/bookmarks.txt", 1 ); 401 @bookmarks = <BMARKS>; 402 fclose(BMARKS); 403 404 @bookmark = grep { !/$bm_id/xsm } @bookmarks; 405 push @bookmark, "$bm_order|$bm_title|$bm_image|$bm_url|$bm_id"; 406 $bookmark = join q{}, @bookmark; 407 408 fopen( BMARKS, ">$vardir/Bookmarks.txt" ) 409 || fatal_error( 'cannot_open', "$vardir/bookmarks.txt", 1 ); 410 print {BMARKS} "$bookmark\n" or croak "$croak{'print'} BookMark"; 411 fclose(BMARKS); 412 413 if ( $action eq 'bookmarks_edit2' ) { 414 $yySetLocation = qq~$adminurl?action=bookmarks~; 415 redirectexit(); 416 } 417 return; 418} 419 4201; 421