From ed045259949aed75db2bc640553c9adfbff35661 Mon Sep 17 00:00:00 2001 From: ctrlcctrlv Date: Thu, 8 Aug 2013 19:41:21 +0000 Subject: [PATCH 01/19] Spoil files moderator action --- inc/config.php | 1 + inc/display.php | 8 ++++++++ inc/mod/pages.php | 27 +++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/inc/config.php b/inc/config.php index 8ca769bb..ea0300e0 100644 --- a/inc/config.php +++ b/inc/config.php @@ -954,6 +954,7 @@ $config['mod']['link_ban'] = '[B]'; $config['mod']['link_bandelete'] = '[B&D]'; $config['mod']['link_deletefile'] = '[F]'; + $config['mod']['link_spoilerimage'] = '[S]'; $config['mod']['link_deletebyip'] = '[D+]'; $config['mod']['link_deletebyip_global'] = '[D++]'; $config['mod']['link_sticky'] = '[Sticky]'; diff --git a/inc/display.php b/inc/display.php index 99228fc3..77df971a 100644 --- a/inc/display.php +++ b/inc/display.php @@ -345,6 +345,10 @@ class Post { if (!empty($this->file) && hasPermission($config['mod']['deletefile'], $board['uri'], $this->mod)) $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); + // Spoiler file (keep post) + if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) + $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); + // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) $built .= ' ' . $config['mod']['link_editpost'] . ''; @@ -445,6 +449,10 @@ class Thread { // Delete file (keep post) if (!empty($this->file) && $this->file != 'deleted' && hasPermission($config['mod']['deletefile'], $board['uri'], $this->mod)) $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); + + // Spoiler file (keep post) + if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) + $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); // Sticky if (hasPermission($config['mod']['sticky'], $board['uri'], $this->mod)) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 10205a11..23b90aba 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1361,6 +1361,33 @@ function mod_deletefile($board, $post) { header('Location: ?/' . sprintf($config['board_path'], $board) . $config['file_index'], true, $config['redirect_http']); } +function mod_spoiler_image($board, $post) { + global $config, $mod; + + if (!openBoard($board)) + error($config['error']['noboard']); + + if (!hasPermission($config['mod']['spoilerimage'], $board)) + error($config['error']['noaccess']); + + // Delete file + $query = prepare(sprintf("UPDATE `posts_%s` SET `thumb` = :thumb, `thumbwidth` = :thumbwidth, `thumbheight` = :thumbheight WHERE `id` = :id", $board)); + $query->bindValue(':thumb', "spoiler"); + $query->bindValue(':thumbwidth', 128, PDO::PARAM_INT); + $query->bindValue(':thumbheight', 128, PDO::PARAM_INT); + $query->bindValue(':id', $post, PDO::PARAM_INT); + $query->execute() or error(db_error($query)); + + // Record the action + modLog("Spoilered file from post #{$post}"); + + // Rebuild board + buildIndex(); + + // Redirect + header('Location: ?/' . sprintf($config['board_path'], $board) . $config['file_index'], true, $config['redirect_http']); +} + function mod_deletebyip($boardName, $post, $global = false) { global $config, $mod, $board; From 6e74f2a1a6183ccf7768e0932b30facd58d51f83 Mon Sep 17 00:00:00 2001 From: ctrlcctrlv Date: Thu, 8 Aug 2013 19:43:40 +0000 Subject: [PATCH 02/19] accidentally spaces --- inc/display.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inc/display.php b/inc/display.php index 77df971a..c9f39731 100644 --- a/inc/display.php +++ b/inc/display.php @@ -346,8 +346,8 @@ class Post { $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); // Spoiler file (keep post) - if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) - $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); + if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) + $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) @@ -451,8 +451,8 @@ class Thread { $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); // Spoiler file (keep post) - if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) - $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); + if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) + $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); // Sticky if (hasPermission($config['mod']['sticky'], $board['uri'], $this->mod)) From a12fe86f490d3963f0264607146b070d1cee842c Mon Sep 17 00:00:00 2001 From: ctrlcctrlv Date: Thu, 8 Aug 2013 19:50:11 +0000 Subject: [PATCH 03/19] mistake with spoiler commit --- mod.php | 1 + 1 file changed, 1 insertion(+) diff --git a/mod.php b/mod.php index be66db78..0e98c4eb 100644 --- a/mod.php +++ b/mod.php @@ -68,6 +68,7 @@ $pages = array( '/(\%b)/edit(_raw)?/(\d+)' => 'secure_POST edit_post', // edit post '/(\%b)/delete/(\d+)' => 'secure delete', // delete post '/(\%b)/deletefile/(\d+)' => 'secure deletefile', // delete file from post + '/(\%b+)/spoiler/(\d+)' => 'secure spoiler_image', // spoiler file '/(\%b)/deletebyip/(\d+)(/global)?' => 'secure deletebyip', // delete all posts by IP address '/(\%b)/(un)?lock/(\d+)' => 'secure lock', // lock thread '/(\%b)/(un)?sticky/(\d+)' => 'secure sticky', // sticky thread From 2018fd206bfcd69789c2f2ff7c034f7287cc3226 Mon Sep 17 00:00:00 2001 From: ctrlcctrlv Date: Sun, 11 Aug 2013 13:54:11 +0000 Subject: [PATCH 04/19] Improve spoiler action Conflicts: inc/mod/pages.php --- inc/config.php | 2 ++ inc/mod/pages.php | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/inc/config.php b/inc/config.php index ea0300e0..7bde3d6a 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1093,6 +1093,8 @@ $config['mod']['bandelete'] = MOD; // Remove bans $config['mod']['unban'] = MOD; + // Spoiler file (and keep post) + $config['mod']['deletefile'] = JANITOR; // Delete file (and keep post) $config['mod']['deletefile'] = JANITOR; // Delete all posts by IP diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 23b90aba..932b2ed6 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1371,7 +1371,15 @@ function mod_spoiler_image($board, $post) { error($config['error']['noaccess']); // Delete file - $query = prepare(sprintf("UPDATE `posts_%s` SET `thumb` = :thumb, `thumbwidth` = :thumbwidth, `thumbheight` = :thumbheight WHERE `id` = :id", $board)); + $query = prepare(sprintf("SELECT `thumb`, `thread` FROM ``posts_%s`` WHERE id = :id", $board)); + $query->bindValue(':id', $post, PDO::PARAM_INT); + $query->execute() or error(db_error($query)); + $result = $query->fetch(PDO::FETCH_ASSOC); + + file_unlink($board . '/' . $config['dir']['thumb'] . $result['thumb']); + + // Make thumbnail spoiler + $query = prepare(sprintf("UPDATE ``posts_%s`` SET `thumb` = :thumb, `thumbwidth` = :thumbwidth, `thumbheight` = :thumbheight WHERE `id` = :id", $board)); $query->bindValue(':thumb', "spoiler"); $query->bindValue(':thumbwidth', 128, PDO::PARAM_INT); $query->bindValue(':thumbheight', 128, PDO::PARAM_INT); @@ -1380,7 +1388,10 @@ function mod_spoiler_image($board, $post) { // Record the action modLog("Spoilered file from post #{$post}"); - + + // Rebuild thread + buildThread($result['thread'] ? $result['thread'] : $post); + // Rebuild board buildIndex(); From d846fe63704e63d93cb65bbecacdd25febf2b9a5 Mon Sep 17 00:00:00 2001 From: ctrlcctrlv Date: Sun, 11 Aug 2013 13:55:15 +0000 Subject: [PATCH 05/19] forgot to rename config option --- inc/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index 7bde3d6a..7c7b6241 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1094,7 +1094,7 @@ // Remove bans $config['mod']['unban'] = MOD; // Spoiler file (and keep post) - $config['mod']['deletefile'] = JANITOR; + $config['mod']['spoilerfile'] = JANITOR; // Delete file (and keep post) $config['mod']['deletefile'] = JANITOR; // Delete all posts by IP From 8c3ae439c985d7b611f3b9e4386b0a412e83a233 Mon Sep 17 00:00:00 2001 From: Vasiliy Shikhachevskiy Date: Sun, 11 Aug 2013 13:59:07 -0400 Subject: [PATCH 06/19] Added Czech translation --- inc/locale/cs_CZ/LC_MESSAGES/javascript.js | 1 + inc/locale/cs_CZ/LC_MESSAGES/javascript.po | 176 +++ inc/locale/cs_CZ/LC_MESSAGES/tinyboard.mo | Bin 0 -> 18904 bytes inc/locale/cs_CZ/LC_MESSAGES/tinyboard.po | 1330 ++++++++++++++++++++ 4 files changed, 1507 insertions(+) create mode 100644 inc/locale/cs_CZ/LC_MESSAGES/javascript.js create mode 100644 inc/locale/cs_CZ/LC_MESSAGES/javascript.po create mode 100644 inc/locale/cs_CZ/LC_MESSAGES/tinyboard.mo create mode 100644 inc/locale/cs_CZ/LC_MESSAGES/tinyboard.po diff --git a/inc/locale/cs_CZ/LC_MESSAGES/javascript.js b/inc/locale/cs_CZ/LC_MESSAGES/javascript.js new file mode 100644 index 00000000..ccf9a606 --- /dev/null +++ b/inc/locale/cs_CZ/LC_MESSAGES/javascript.js @@ -0,0 +1 @@ +l10n = {"Style: ":"Styl: ","File":"Soubor","hide":"skr\u00fdt","show":"zobrazit","Show locked threads":"Zobrazit zam\u010den\u00e1 vl\u00e1kna","Hide locked threads":"Skr\u00fdt zam\u010den\u00e1 vl\u00e1kna","hidden":"skryt\u00e9","Show images":"Zobrazit obr\u00e1zky","Hide images":"Skr\u00fdt obr\u00e1zky","Password":"Heslo","Delete file only":"Smazat pouze soubor","Delete":"Smazat","Reason":"D\u016fvod","Report":"Nahl\u00e1sit","Click reply to view.":"Klikni na odpov\u011b\u010f pro zobrazen\u00ed.","Click to expand":"Klikni pro rozbalen\u00ed","Hide expanded replies":"Skr\u00fdt rozbalen\u00e9 odpov\u011bdi","Forced anonymity":"Vynucen\u00e1 anonymita","enabled":"zapnuto","disabled":"vypnuto","Sun":"Ne","Mon":"Po","Tue":"\u00dat","Wed":"St","Thu":"\u010ct","Fri":"P\u00e1","Sat":"So","Submit":"Odeslat","Quick reply":"Rychl\u00e1 odpov\u011b\u010f","Posting mode: Replying to >>{0}<\/small>":"Re\u017eim odpov\u011bdi: Odpov\u00edd\u00e1\u0161 na >>{0}<\/small>","Return":"N\u00e1vrat","Hello!":"Nazdar!","{0} users":"{0} u\u017eivatel","(hide threads from this board)":"(skr\u00fdt vl\u00e1kna z tohoto boardu)","(show threads from this board)":"(zobrazit vl\u00e1kna z tohoto boardu)","No more threads to display":"Nejsou \u017e\u00e1dn\u00e1 dal\u0161\u00ed vl\u00e1kna k zobrazen\u00ed","Loading...":"Na\u010d\u00edt\u00e1m..."}; \ No newline at end of file diff --git a/inc/locale/cs_CZ/LC_MESSAGES/javascript.po b/inc/locale/cs_CZ/LC_MESSAGES/javascript.po new file mode 100644 index 00000000..9aa8b2c3 --- /dev/null +++ b/inc/locale/cs_CZ/LC_MESSAGES/javascript.po @@ -0,0 +1,176 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: czchan 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-08-11 11:20-0400\n" +"PO-Revision-Date: 2013-08-11 17:42+0100\n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ../../../../js/style-select.js:40 +msgid "Style: " +msgstr "Styl: " + +#: ../../../../js/hide-images.js:50 +#: ../../../../js/quick-post-controls.js:30 +msgid "File" +msgstr "Soubor" + +#: ../../../../js/hide-images.js:50 +msgid "hide" +msgstr "skrýt" + +#: ../../../../js/hide-images.js:56 +msgid "show" +msgstr "zobrazit" + +#: ../../../../js/toggle-locked-threads.js:39 +#: ../../../../js/toggle-locked-threads.js:54 +msgid "Show locked threads" +msgstr "Zobrazit zamčená vlákna" + +#: ../../../../js/toggle-locked-threads.js:39 +#: ../../../../js/toggle-locked-threads.js:54 +msgid "Hide locked threads" +msgstr "Skrýt zamčená vlákna" + +#: ../../../../js/toggle-images.js:41 +msgid "hidden" +msgstr "skryté" + +#: ../../../../js/toggle-images.js:57 +#: ../../../../js/toggle-images.js:70 +msgid "Show images" +msgstr "Zobrazit obrázky" + +#: ../../../../js/toggle-images.js:57 +#: ../../../../js/toggle-images.js:70 +msgid "Hide images" +msgstr "Skrýt obrázky" + +#: ../../../../js/quick-post-controls.js:27 +msgid "Password" +msgstr "Heslo" + +#: ../../../../js/quick-post-controls.js:29 +msgid "Delete file only" +msgstr "Smazat pouze soubor" + +#: ../../../../js/quick-post-controls.js:31 +msgid "Delete" +msgstr "Smazat" + +#: ../../../../js/quick-post-controls.js:35 +msgid "Reason" +msgstr "Důvod" + +#: ../../../../js/quick-post-controls.js:37 +msgid "Report" +msgstr "Nahlásit" + +#: ../../../../js/expand.js:20 +msgid "Click reply to view." +msgstr "Klikni na odpověď pro zobrazení." + +#: ../../../../js/expand.js:20 +msgid "Click to expand" +msgstr "Klikni pro rozbalení" + +#: ../../../../js/expand.js:43 +msgid "Hide expanded replies" +msgstr "Skrýt rozbalené odpovědi" + +#: ../../../../js/forced-anon.js:59 +#: ../../../../js/forced-anon.js:65 +#: ../../../../js/forced-anon.js:69 +msgid "Forced anonymity" +msgstr "Vynucená anonymita" + +#: ../../../../js/forced-anon.js:59 +#: ../../../../js/forced-anon.js:65 +msgid "enabled" +msgstr "zapnuto" + +#: ../../../../js/forced-anon.js:59 +#: ../../../../js/forced-anon.js:69 +msgid "disabled" +msgstr "vypnuto" + +#: ../../../../js/local-time.js:40 +msgid "Sun" +msgstr "Ne" + +#: ../../../../js/local-time.js:40 +msgid "Mon" +msgstr "Po" + +#: ../../../../js/local-time.js:40 +msgid "Tue" +msgstr "Út" + +#: ../../../../js/local-time.js:40 +msgid "Wed" +msgstr "St" + +#: ../../../../js/local-time.js:40 +msgid "Thu" +msgstr "Čt" + +#: ../../../../js/local-time.js:40 +msgid "Fri" +msgstr "Pá" + +#: ../../../../js/local-time.js:40 +msgid "Sat" +msgstr "So" + +#: ../../../../js/quick-reply.js:21 +msgid "Submit" +msgstr "Odeslat" + +#: ../../../../js/quick-reply.js:31 +msgid "Quick reply" +msgstr "Rychlá odpověď" + +#: ../../../../js/quick-reply.js:33 +msgid "Posting mode: Replying to >>{0}" +msgstr "Režim odpovědi: Odpovídáš na >>{0}" + +#: ../../../../js/quick-reply.js:33 +msgid "Return" +msgstr "Návrat" + +#: ../../../../templates/main.js:6 +msgid "Hello!" +msgstr "Nazdar!" + +#: ../../../../templates/main.js:18 +msgid "{0} users" +msgstr "{0} uživatel" + +#: ../../../../templates/themes/ukko/ukko.js:28 +#: ../../../../templates/themes/ukko/ukko.js:39 +msgid "(hide threads from this board)" +msgstr "(skrýt vlákna z tohoto boardu)" + +#: ../../../../templates/themes/ukko/ukko.js:32 +#: ../../../../templates/themes/ukko/ukko.js:44 +msgid "(show threads from this board)" +msgstr "(zobrazit vlákna z tohoto boardu)" + +#: ../../../../templates/themes/ukko/ukko.js:57 +msgid "No more threads to display" +msgstr "Nejsou žádná další vlákna k zobrazení" + +#: ../../../../templates/themes/ukko/ukko.js:79 +msgid "Loading..." +msgstr "Načítám..." + diff --git a/inc/locale/cs_CZ/LC_MESSAGES/tinyboard.mo b/inc/locale/cs_CZ/LC_MESSAGES/tinyboard.mo new file mode 100644 index 0000000000000000000000000000000000000000..57d79276ade63a0e6635513cf09ced5f4f0d1586 GIT binary patch literal 18904 zcmdU$3z!{8b?3`(BLWV7@UX#d$(AkInvrB-Fr$}88VL*QF=$2-mNC$CZ;z(u-rIfE z-SDb?13&BUABIoo{%i0x@VoFi zu*ORiX>Ny4f$xID@b}?*_+xlAe8IDgSqejV4ZIzm0Y40X0p1U3ikXG_?&mze1kdFD z8}Kan2vq&PbS$Mc<@_rhn8ejk)x9`O7#sQUi})O%m> z{1Uv3`>#Re|0z5jo`JEc-DgAT`B`ucyb7wlxA^BNlzwmXybE5({k!2}_%Pf7e*|f= z8G4?3|CLaB%Ax8t1*NZ7L)Gt%{`s5WrQE*_Zh-eg>ETCEcK$RTs^0@ByXuESa4l4O zZiCY6>!IrTCMf;B7t&Po0jTeO8d62`MX37xJ=FU@gv$RoR6m@Hvc&VDoG1nPS`eEQA){uNOAn1pKoL8$T$LFxZCe}6aBci#>fYGxX$KRylz z;phDQd4VhEa>##XIe%2%OQ6adf$HB9RC)pR{a=A9|FuwdbO)4P-wmaQ4?xxLkD>Da z2~>M#pz?je-+vwI`FEh|_bAl(KLevs`Z@56r_m=+{qo2Xr?1DL%J~tr`5BzLKL@Ix zFNFI35~y;Pd9H-2_Y2@sxB=?DGJFv{2(N}8fUDt`q3rS8E1X}u+;hF>KB(shq3rDr z7{K3!@+-4&8T>1V%FP*k6c=JHhnR|450&rbP&%4rn zX9GNw`&UAhUxv#6T7UnCP~|-YrN8e(*~8;ddb;Q;r}xX@3%P$GRQ*zTHhcq=e(r|q z|9AQO_d(V7!*B(B2+9r~hiAa^XtetC0!Wq3RZxCvhfg1aJGpPd{}9x7KLho>Z$Z6(K1$U0 zo&!;VxdN)ccEGdX%i&Yt7*xJ0RKFgAOmXHdQ04pq)O#O=$~Ox&j=$jVzX@+-Jbf3c zooo8t`ymXtpMsx&N1*KEmX&-P#&9G26np_Zo64)5>peF?>Ep%l7vL~_E4&rTPJRfV z4$o&$Dc@o^3a^GYz*j?ti1{RxzWxTP|1}A#-B&{O-zq4*ZiZ^#O;FGGLe=M0Q2L6X z^ilEm8Qj4AVW@W95B2^WJRd#;p9;SX)jy9yvhWj9WBkKhDA^)qfX3)ng4*eK)`h;1;O%-wb7+uZF76$DqFVDTqqV z*M0iau5-^Xfpnc&4ljf+gR-X@R6Fm1s^3v4Js$V>_xtB3p!(+_&#yw&>k+8@e+Tvc zV^Hn?2cLc!MxpU>6}$*u4b{#Ypz1jcWv9OerI&ZWUxXioYVQfS3H~L-G|h!5`&Kvz zRqyve*~K40)#r0i^?VqroNqwc*Y~09;cQ`rHQf{kx&^-|O!`1YgGe z3{*Rx`y$6Hp!B{1N}mIeDZ%W5s#gvd!`DI8>prOOABP$TABXzxr=aZX%l`Qz{{DOZ z`H!K>J9of+_Y%*`q4atUl%D#b%HITKH`}4UyAMhquYmgQ0jT;GQ2q4=sCL~2``}xl z;+i?A@%=5R`Dnvh_x`O=_Bjbv@7F`=?RTKY^ZTH_GXwSghoJI(1wIRY8$J{M6sn%* zuXE3z2UY*&Q0-j`1BiG`}&~t zJOpL;H$&+yg_poP;WhB6zyA_cd5^)%;3b2uytQxz_xqvrcRN)3-UFWvKMbYE&q9^= z6{!4YFlbcIRq#2m0@c3Xfc@|{AyqaXhgZX&K>67#HaolC2A|9QKB)dJpxW^|xCXux z2Jj&${XPcO-hcMIV93>L8B~4NK&ob51y$a?@C^77D7}6R;xf#qq1yL2RJqUCf-i@c z!fW9q)cfy(()V!~z|TYJ^--wzp1Rffw`W7udk{(w`=H)C2vyGAp7%mb$9x3J{vLzM zcjk*-yDo=n_x12bScMEt^HHdA{3tvP{><|fU>uX;W_XM_*A$8 zUIDL%>epML@-?CAbsJRv6Hxk@gIB_@`g^m@jpqxY%DWg!uUEp=@H(jS4?xx94ybYX zW+?re}#&^6}G z$ZZJ2-~Obd_HVX*0Y{KeBC;v{_95zD{Wdt5KZCes`%~Y3(O(O)@dVkU8-8zcFz@%g z7Z(0n`u+g28(EK}$YaQ_A#X*bk3T}%zf$|c^AUK|Umt;YA%E`gHAhS!A4Aj+Eo2-~ zAGCiz<>I~mW-t7>zn+7?jHuskK=ivDsn{#`=c53Vv%mlB`9gRC`8@JIq=tM3c>~h> zdw`p~C*i;N>+i#VLSEwUe+7O6k^TK2UAZ^w|ABhNzq6q!QWzu)EJKOsLsuJ(zqgTI5k z)Zf3|Glq8{Z$rL`Y(n0F=ywb9Ipn`04GykKaD^9KImXR1s_8G1o@vnO?W->Rph%!9hpJ&8$j-~SMJYuK%c+=?@)8x0pyj) z?;-yeS&Xbf+P|Cq#b3bX$QO`lWD*%d9!HiT|A^?f75N9`oye<@_U{aT@jqaOd=0tD zrwMOCet?{XT!ZNM732`|H^{Fde~J7Ec{Oq!5+Xa0VdOqUzfU{ZdE;GN-;Mkga;r}l zzJ#2I{62CTI(`k@jQlTTKl0DWO5}&g86$#u7EYnlb)aWx9cQ8g;!H0fV%mhDV~Bs!D_MH=K2=^-VJL}6B%2;w{_ zg?ZE$CwY|QaS=D8AWX`^7>VT|O@d0)I+SMRygwLCgIZYdPINdd6+wL>BTv2}Xyj3_ z=3X?)b*dC{PG|uWs)w8wUHXMZIGPP5qN?DrcHq%&2 zf8-ngT?PK@Z`&HkBA;B=pOXvaQcULBK)fysD$Ac)E_ull=&H#hgJk;TaY_mP2MY3}l5HG0I_B$9F(w6>qX3FT}AREfz4nxyNXp?w$W-^79I+29Nn?K z-wcKMgv&J)7NMMpv+03=M|9IrG}bua{tg6P)3(V2!S1M}7Q2D&(?(vpo&2_s9fDyw z1%Exy=C=)>BKe8N-_9s&GDC4L4;6%Ca%nh}G~)y9L`GHbgM5L}Wro^4z6CSzYOA5T;W|dkbIaUp zRde)bz-+CC2S})pBbBARe`wu(B5BU*O(U+~Y-`(UkNs~;nqf6Y-ONL{#>HfE3HF`t zt#!dF!adC+MugmJkyavx!*Df{c^z;qu>QEn@XH6nIO)D6RVHE0PHrplt?lvqByt2d zr;SXrT*mNf;gxCdScJbQTXSTVWSCg5U>j;{iKeRR9!6OyO)J*pZ;$k5J`t8Xj^AvL zk^{wr*`A_%{qdUQ`T&zTf73=`wl}g$kf&6>mZILVh?4O@SPz4)-|X17V@pu9>YDP^ zzZgXDvXK#{>3TKA43}-&vb?A3^=VtxxrED;y-dLU=aQ2yNkb9*&$Y)G_A)a zn>OaNImf1F8X)$O9m=HS+#N2=&XoT&?GvLhXY91uQWP7xcXvgVuo9bHsbkrWxG{c1Mq$~dqX*vYe8T1}(iF{MB*Eq?y&9|w z0|Jim^-GrKOEze%u3H&ykOrGEt)Vu-ctfEPZQ%3Hz%aTp-RTsfwA>75QBw}uD|S3f zYgnab03X6AL!360Gj3|uU|zLd`_e|l*i^N~vNWWPyZw}5b~B3cWV@Ldh!j2b3Fc%w zUCx^nc1PCls7GAI_$zPi5R^5?`0Im>h)LDm*pQ9uqLJxEL9H)$W-HAyE;9D`{}3Rr zTUp<*uFg1YRipJw#t94h>~OihUaYN!8IED#y87WI8c)_Cg>^z_*LkUeO7#N+i`m-- z{Dg{x+tz5Jd>~jy5R64^h|B9%`pXraMAxAUJRn@3#I^K1QE=QYOOCbk$SxFIokCxa z6^!?qDoGS7ecLM0FIj7aT^q2V;BiDfqS^)(HZYi^Nvnnhty@WwJggr1S_~{1kuw~% zvGWp}qd(Z^*B4sP*pQBZ8s9_&pR~2n-|kaCFu9Eq{#0q1_Z=fqVMctIsrj>WvrVfM zGg5@(}o+HE2mxk?Oe_cj823K@|Z~H4a~5r zMFC;eVFFn+z!0SoHjZ{3wAei9H+@#daQ7P!uThif#@bSFaePX-UEw}B!v+C(S&aAWQyo9#e-4IHL_HC8O1O8*dZbx^nH3@MJ ztH(u)cq$_awhgtfv|1#IB@6m5a$JL(lHK~c8rNccx_|3bd8rtqbbj6{VF}%+D9E}S zO;9c$#_NnSwwCQGl-HwDj1>@VQd2vfS?l53WHY0<{#ux{f>KOau+~N~z0pYbxt6JY zRuxnzsri ze&*0UNhM)X?}j7upLRpoJRw~QprKMXcPaY>aS~RE>k={*ix*0>%IXG+wFY0Xo^ENG zFY+e)DZH0A>YBCGVRjS51@t_r+X-xsLe8*c_e6|tRS}yl(pDWcTtTl9Z5^Pbat(?o%wHBwCKv9*gWA{ndjv7y}LstqTpu%t= zq7QK+40tjN>ZI z(H2O-hpY+G-3rg;+T7a3D$y#G&auU3L3f#n(^I`qN}^dTp6z_Tl+j}|P#rr#$m46b z(x+zWAq^ehxkL^4KHKu7-Y6Iktldap>d;1us@g8jzsLrP&+nF;OfR_m8%IZnF{*L& zkogxh$weqvYR9q~MOq{BTwr~zA?hXt!>nV%!i=>{Ikb`+XHy>R4rmj}uzX|w%neRK zb#EkH&x$J|R_?ct)LG-5xX(QqFg7H|pRLg7ciX&ZM{YllF@CKL?c^Nnj>h@Ogza;? zxk;zVvuP))-%P~iG9eO*%Iu%q$Qd%RS#P-3&I5QFnGgy+6c-cNoxE|sVZRlx=aHL) z6+>pwqN|~#<^3E+#HIc ziv7c7?EIo{tZ6Y7+do>CqzY&Iww3#Er*iZIL1{{h_+WMasztl){M@%AKM09 zeWU3>uxNPKXrJ8$BY&T^u?B)`SFK*tx9a-7)vJTms|T)K)wk;Tt5%V*Z#N4dmAgQ` z7Y$sy=9*Qj$+w-Y#0GI?-)I!p27=8~5nZ)z^T-X=xIfJfY*?hFeYb|Hnsy1X&c0Db z>VRFSt*lqs>Cj$fnB`Hie$VLEzU#aBGNKbqwr@*PO3Mtnf#CYFxL7n?Wvi;%x0O8# z76nP&-sbDqFeBT`^~;j=>sK!iHU_JLfnZs(Vg0qil~)GIy7kXj;%XAFUAst!56zhq zIioMC1kIk?N^Ab@+;Q%gq4yxKg;O)r$;>gfG#X=R*3gN-+=-d#ax!z2an{6qT0te4 zO2@KrDk7sY>}^f(k(ueHdv!7jrow7E_h5t}C1Fsh&K#S)Go>zQFt4&v07Et_r&7H) z_xc8JG$TBt!rJ=Gv79~r{y_C<&M&z>_jY1lTh4ekGd)E;>uF=|!FV!Q(rBhrX|vMe znB&Ig?2)N*JbPy)bVnQwx{_~9hLtp+eRfT;w@ z>=CR%uS~Udm0$|m3y{A+Z+5WtWFl=| z?Ry^i^r^6t&72^}pI5+sw(}XKOktfXI!dFOq)lOBPhWP>fzyf>78@?v9SReB1k>t0 zf@zu2*&|i9%A(rb@wo>Z0o!Cvbr_ScPOD@D0h7zjQD#+6W9pek2x(~@8)(v{at>yH zjSG5kB4Xg1n>zMmx7L|FEB0gtcZU_;w7_*^vf;jAx0#01qM2#;KCF~ttfP{JaxAp1 zQ_UotR2|Xi?44nr$PA-wD&}Mcf8uJ`dpNU`-kq7QH|$Z2&R{}WJoXz0Q(vM{Tt@k)r(&m?rjy#bnflclAgfJ*kookw1QDK>RH&t8PNlnX^#HhMA?!X~V2GNb6eSgz za|o=+P$`8vMXN{cxaSCY_Q+)HG%h2Nzh_S1vV^K8!>Lwp}{8O^Wy3$!p|oq&fs8*0&qMP%n77Qb3SGthdb z4(xCuWg5mfu`YJwIS*o3c;C%D-S%n`58Sv7?Kx3s_F6Bhe|k`z;=Do=E9;g`6Wp8;5rg(*il*w( z?45G?^ou_^+M9)QzZc}}JK|Y#CJ;`??T}PFJ0&02E#hd<(SKf{Zj-f{ql6yeN;|Pz z*Yj`79E>*Sj!$+=Wr;k&8bSV6zLa?gy%94^$-D7iZ|R*QrD2ZPi2HbjX2}&C^;1`B zhGvddDA2&N`+Br&Up z6$){rAUd$bNRtQdv7je&7jGsxWRn;O+{e#(e-{5BL|N?>zV9xv=F(Vauh zOjqqB-VXPiV`%goNrjWe+;N>r?QQ2FfH*qQo+Xu4OGfAI9-Wi!r$WARZH&obtZTkhvPza3KVuJ0% zE=D#(7$-ykhLhDaW^A$ckgKk+ z5yS#v%3I)2T7*;cYd<#~XK97%o7p?M^Sv3GJKjt=9i+IiMp@I78C5K0U9nA}8(7#b zWkI~~^ghBlB()sF#&-EofA$C-!p@!Y6*h91Hi?y851Q4~rZbM>)aCY^ncvFUqN*V;8 z3NCO^{5yyLR|k5`e5W|g+p6y{O9mnTz^r?7RsM|V33 zn6UoNMCH!!G*F4tqY|eEn0KQ;KqIz=%x~=gLd$R|qO-i#5;BzE+1qwOfpZmdGdn}J ziO?4t5iwC(f+4Y?&zN5ws{g38u>IEjiDufBGWDvC(LIjelp=&gZ=UXp~T2zcicgbC_LeZO~+*+)>R0uijjlR5nXPq*k3VH$-2G1PIiOy$=QMP1=e?d$%l1wZwKLe0z*I4S zbtl~ii*Y1WmW^JSiRKLFle>wDkK5#_yQ$VY^f+Rk+NI%qH|L!6!q4cn=|W~@El#d- zO8ZG1`Pz_oenD&mS#LSwjs!W`zEy5$pnWc86=$?=sXdi2yDX&W$Acu+mJVzZWvxB#+{y^RC~Us5m!%V@8rnZZ?eoCXCV2I{nU9oJ3iga zwyIMKG}(CJ_&=JxOQjP+PSTK$BeQei%rShr{(T^w(+>1{G^rUZWIEDBZSA3!q=aQ0 z7AnpIca0iMO)fJ=#2n6E1Ofizt;Y%sotd#M{{#0w(T7p-LgH{ zKNt+py=~^sk>S~Q?A>xxFvOwa;C7ugT2G?@-kwd-`F63y6mGxHzYu1-#BY5vtwt_D zZ!3fB?ugMxvFTVIPRPI(NDVf%s&*fN64{B(qYCqN(5O}ER<~e~&e@Yd+b4AXNF34W zZbFv9O3~n-;IXI4JiDj8zGQuKBA9tVrZF$Ez34H!>>h_(R%1Kilw$S;x4vWrKKx=m zikdm4DZ3DoNGWCaBdP^Y*n%xhu$xznt$9|W$2GO&)q#rQVP-&5)&JahN90PSWFj$%K?-Nc+ z;@@;PG6g+N|ArRrstryLMJNp79VJ>nPD3ALpTRGm+kLenh=WSGh0XCV@(CE|yoKKJ zJ=>lmPM~Er09<#g-~ATI{BuZO5DSU0%t7{QLaE__Qa59+?s5@0!(9(3Hv3rYzO?-vDC8nII&{SwY!*z@^7+OzF8*Gm&LaK4VZr31~ zy!LUA)#$0zC23ECgaK2c>YASQaRn4afM`i`ocl&pb>}p=3%3B z$y&V4F(s#5p+n2T*tw}4L#1n}f<0>~<6^Y_=AQY&A6bU($g<^Nl9-M&W6@N*CH7jc z*~qVfBD4h~<#ZO0c)gz0k_@9~+1PKI97;r!sK<6pT*n64Nt!qE8y&@4mmV7D+FPEc cm^q, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: czchan 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-08-11 11:20-0400\n" +"PO-Revision-Date: 2013-08-11 19:23+0100\n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ../../../../inc/lib/gettext/examples/pigs_dropin.php:77 +msgid "" +"This is how the story goes.\n" +"\n" +msgstr "" +"Příběh zní takhle.\n" +"\n" + +#: ../../../../inc/functions.php:578 ../../../../inc/functions.php:595 +msgid "second" +msgid_plural "seconds" +msgstr[0] "sekunda" +msgstr[1] "sekundy" +msgstr[2] "sekund" + +#: ../../../../inc/functions.php:580 ../../../../inc/functions.php:597 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuta" +msgstr[1] "minuty" +msgstr[2] "minut" + +#: ../../../../inc/functions.php:582 ../../../../inc/functions.php:599 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hodina" +msgstr[1] "hodiny" +msgstr[2] "hodin" + +#: ../../../../inc/functions.php:584 ../../../../inc/functions.php:601 +msgid "day" +msgid_plural "days" +msgstr[0] "den" +msgstr[1] "dny" +msgstr[2] "dnů" + +#: ../../../../inc/functions.php:586 ../../../../inc/functions.php:603 +msgid "week" +msgid_plural "weeks" +msgstr[0] "týden" +msgstr[1] "týdny" +msgstr[2] "týdnů" + +#: ../../../../inc/functions.php:589 ../../../../inc/functions.php:606 +msgid "year" +msgid_plural "years" +msgstr[0] "rok" +msgstr[1] "roky" +msgstr[2] "let" + +#: ../../../../inc/functions.php:623 +msgid "Banned!" +msgstr "Máš ban!" + +#. There is no previous page. +#: ../../../../inc/functions.php:1124 ../../../../inc/functions.php:1138 +msgid "Previous" +msgstr "Předchozí" + +#. There is no next page. +#: ../../../../inc/functions.php:1143 ../../../../inc/functions.php:1152 +msgid "Next" +msgstr "Další" + +#: ../../../../inc/display.php:80 +msgid "Error" +msgstr "Chyba" + +#: ../../../../inc/display.php:81 +msgid "An error has occured." +msgstr "Nastala chyba." + +#: ../../../../inc/display.php:97 ../../../../inc/mod/pages.php:62 +msgid "Login" +msgstr "Přihlášení" + +#: ../../../../inc/display.php:216 +#, php-format +msgid "Post too long. Click here to view the full text." +msgstr "" +"Příspěvek je příliš dlouhý. Klikni sem pro zobrazení " +"celého textu." + +#: ../../../../inc/display.php:340 ../../../../inc/display.php:451 +msgid "Ban" +msgstr "Zabanovat" + +#: ../../../../inc/display.php:344 ../../../../inc/display.php:455 +msgid "Ban & Delete" +msgstr "Zabanovat a smazat" + +#: ../../../../inc/display.php:348 ../../../../inc/display.php:459 +msgid "Delete file" +msgstr "Smazat soubor" + +#: ../../../../inc/display.php:348 ../../../../inc/display.php:459 +msgid "Are you sure you want to delete this file?" +msgstr "Určitě chceš smazat tento soubor?" + +#: ../../../../inc/display.php:352 ../../../../inc/display.php:463 +msgid "Spoiler File" +msgstr "Zakrýt soubor" + +#: ../../../../inc/display.php:352 ../../../../inc/display.php:463 +msgid "Are you sure you want to spoiler this file?" +msgstr "Určitě chceš zakrýt tento soubor?" + +#: ../../../../inc/display.php:356 +msgid "Move reply to another board" +msgstr "Přesunout odpověď na jiný board" + +#: ../../../../inc/display.php:360 ../../../../inc/display.php:490 +#: ../../../../inc/mod/pages.php:1417 +msgid "Edit post" +msgstr "Upravit příspěvek" + +#. line 5 +#: ../../../../inc/display.php:439 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:33 +msgid "Delete" +msgstr "Smazat" + +#: ../../../../inc/display.php:439 +msgid "Are you sure you want to delete this?" +msgstr "Určitě to chceš smazat?" + +#: ../../../../inc/display.php:443 +msgid "Delete all posts by IP" +msgstr "Smazat všechny příspěvky podle IP" + +#: ../../../../inc/display.php:443 +msgid "Are you sure you want to delete all posts by this IP address?" +msgstr "Určitě chceš smazat všechny příspěvky od této IP adresy?" + +#: ../../../../inc/display.php:447 +msgid "Delete all posts by IP across all boards" +msgstr "Smazat všechny příspěvky podle IP na všech boardech" + +#: ../../../../inc/display.php:447 +msgid "" +"Are you sure you want to delete all posts by this IP address, across all " +"boards?" +msgstr "" +"Určitě chceš smazat všechny příspěvky od této IP adresy, na všech boardech?" + +#: ../../../../inc/display.php:468 +msgid "Make thread not sticky" +msgstr "Odlepit vlákno" + +#: ../../../../inc/display.php:470 +msgid "Make thread sticky" +msgstr "Přilepit vlákno" + +#: ../../../../inc/display.php:474 +msgid "Allow thread to be bumped" +msgstr "Povolit oživování vlákna" + +#: ../../../../inc/display.php:476 +msgid "Prevent thread from being bumped" +msgstr "Zakázat oživování vlákna" + +#: ../../../../inc/display.php:481 +msgid "Unlock thread" +msgstr "Odemknout vlákno" + +#: ../../../../inc/display.php:483 +msgid "Lock thread" +msgstr "Zamknout vlákno" + +#: ../../../../inc/display.php:486 +msgid "Move thread to another board" +msgstr "Přesunout vlákno na jiný board" + +#. How long before Tinyboard forgets about a mute? +#. 2 weeks +#. If you want to alter the algorithm a bit. Default value is 2. +#. (n^x where x is the number of previous mutes) +#: ../../../../inc/config.php:342 +msgid "You have been muted for unoriginal content." +msgstr "Byl jsi umlčen za neoriginální obsah." + +#. The names on the post buttons. (On most imageboards, these are both just "Post"). +#: ../../../../inc/config.php:658 +msgid "New Topic" +msgstr "Nové téma" + +#: ../../../../inc/config.php:659 +msgid "New Reply" +msgstr "Nová odpověď" + +#. Additional lines added to the footer of all pages. +#: ../../../../inc/config.php:670 +msgid "" +"All trademarks, copyrights, comments, and images on this page are owned by " +"and are the responsibility of their respective parties." +msgstr "" +"Všechny ochranné známky, copyrighty, komentáře a obrázky na této stránce " +"jsou vlastnictvím svých autorů, kteří za ně nesou zodpovědnost." + +#. +#. * ==================== +#. * Error messages +#. * ==================== +#. +#. Error messages +#: ../../../../inc/config.php:836 +msgid "Lurk some more before posting." +msgstr "Než něco pošleš, zjisti si, jak to tu chodí." + +#: ../../../../inc/config.php:837 +msgid "You look like a bot." +msgstr "Vypadáš jako robot." + +#: ../../../../inc/config.php:838 +msgid "Your browser sent an invalid or no HTTP referer." +msgstr "Tvůj prohlížeč neposlal žádný nebo poslal neplatný HTTP referer." + +#: ../../../../inc/config.php:839 +#, php-format +msgid "The %s field was too long." +msgstr "Pole %s je příliš dlouhé." + +#: ../../../../inc/config.php:840 +msgid "The body was too long." +msgstr "Tělo je příliš dlouhé." + +#: ../../../../inc/config.php:841 +msgid "The body was too short or empty." +msgstr "Tělo je příliš krátké nebo prázdné." + +#: ../../../../inc/config.php:842 +msgid "You must upload an image." +msgstr "Musíš nahrát obrázek." + +#: ../../../../inc/config.php:843 +msgid "The server failed to handle your upload." +msgstr "Server nedokázal zpracovat tvůj upload." + +#: ../../../../inc/config.php:844 +msgid "Unsupported image format." +msgstr "Nepodporovaný formát obrázku." + +#: ../../../../inc/config.php:845 +msgid "Invalid board!" +msgstr "Neplatný board!" + +#: ../../../../inc/config.php:846 +msgid "Thread specified does not exist." +msgstr "Dané vlákno neexistuje." + +#: ../../../../inc/config.php:847 +msgid "Thread locked. You may not reply at this time." +msgstr "Vlákno bylo zamknuto. Teď na něj nemůžeš odpovídat." + +#: ../../../../inc/config.php:848 +msgid "Thread has reached its maximum reply limit." +msgstr "Vlákno dosáhlo limit na počet odpovědí." + +#: ../../../../inc/config.php:849 +msgid "Thread has reached its maximum image limit." +msgstr "Vlákno dosáhlo limit na počet obrázků." + +#: ../../../../inc/config.php:850 +msgid "You didn't make a post." +msgstr "Nic jsi neposlal." + +#: ../../../../inc/config.php:851 +msgid "Flood detected; Post discarded." +msgstr "Detekován flood; příspěvek zahozen." + +#: ../../../../inc/config.php:852 +msgid "Your request looks automated; Post discarded." +msgstr "Tvůj požadavek vypadá strojově; příspěvek zahozen." + +#: ../../../../inc/config.php:853 +msgid "Unoriginal content!" +msgstr "Neoriginální obsah!" + +#: ../../../../inc/config.php:854 +#, php-format +msgid "Unoriginal content! You have been muted for %d seconds." +msgstr "Neoriginální obsah! Byl jsi na %d sekund umlčen." + +#: ../../../../inc/config.php:855 +#, php-format +msgid "You are muted! Expires in %d seconds." +msgstr "Byl jsi umlčen! Mluvit budeš moct až za %d sekund." + +#: ../../../../inc/config.php:856 +#, php-format +msgid "Your IP address is listed in %s." +msgstr "Tvoje IP adresa figuruje v %s." + +#: ../../../../inc/config.php:857 +msgid "Too many links; flood detected." +msgstr "Příliš mnoho odkazů; detekován flood." + +#: ../../../../inc/config.php:858 +msgid "Too many cites; post discarded." +msgstr "Příliš mnoho citací; příspěvek zahozen." + +#: ../../../../inc/config.php:859 +msgid "Too many cross-board links; post discarded." +msgstr "Příliš mnoho odkazů napříč boardy; příspěvek zahozen." + +#: ../../../../inc/config.php:860 +msgid "You didn't select anything to delete." +msgstr "Nevybral jsi nic ke smazání." + +#: ../../../../inc/config.php:861 +msgid "You didn't select anything to report." +msgstr "Nevybral jsi nic k nahlášení." + +#: ../../../../inc/config.php:862 +msgid "You can't report that many posts at once." +msgstr "Nemůžeš nahlásit tolik příspěvků najednou." + +#: ../../../../inc/config.php:863 +msgid "Wrong password…" +msgstr "Špatné heslo…" + +#: ../../../../inc/config.php:864 +msgid "Invalid image." +msgstr "Neplatný obrázek." + +#: ../../../../inc/config.php:865 +msgid "Unknown file extension." +msgstr "Neznámá přípona souboru." + +#: ../../../../inc/config.php:866 +msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" +msgstr "" +"Maximální velikost souboru: %maxsz% bajtů
Velikost tvého souboru: %filesz" +"% bajtů" + +#: ../../../../inc/config.php:867 +msgid "The file was too big." +msgstr "Soubor je příliš velký." + +#: ../../../../inc/config.php:868 +msgid "Invalid archive!" +msgstr "Neplatný archiv!" + +#: ../../../../inc/config.php:869 +#, php-format +msgid "That file already exists!" +msgstr "Tenhle soubor už tu je!" + +#: ../../../../inc/config.php:870 +#, php-format +msgid "That file already exists in this thread!" +msgstr "Tenhle soubor tu už v tomhle vláknu je!" + +#: ../../../../inc/config.php:871 +#, php-format +msgid "You'll have to wait another %s before deleting that." +msgstr "Než to budeš moct smazat, budeš muset počkat ještě %s." + +#: ../../../../inc/config.php:872 +msgid "MIME type detection XSS exploit (IE) detected; post discarded." +msgstr "Detekován MIME type detection XSS exploit (IE); příspěvek zahozen." + +#: ../../../../inc/config.php:873 +msgid "Couldn't make sense of the URL of the video you tried to embed." +msgstr "Nechápu URL videa, co jsi zkusil vložit." + +#: ../../../../inc/config.php:874 +msgid "You seem to have mistyped the verification." +msgstr "Asi jsi se upsal u ověření." + +#. Moderator errors +#: ../../../../inc/config.php:877 +#, php-format +msgid "" +"You are only allowed to unban %s users at a time. You tried to unban %u " +"users." +msgstr "" +"Najednou můžeš odbanovat jen %s uživatel. Zkusil jsi jich odbanovat %u." + +#: ../../../../inc/config.php:878 +msgid "Invalid username and/or password." +msgstr "Neplatné uživatelské jméno a/nebo heslo." + +#: ../../../../inc/config.php:879 +msgid "You are not a mod…" +msgstr "Nejsi moderátor…" + +#: ../../../../inc/config.php:880 +msgid "" +"Invalid username and/or password. Your user may have been deleted or changed." +msgstr "" +"Neplatné uživatelské jméno a/nebo heslo. Tvůj uživatel mohl být smazán nebo " +"změněn." + +#: ../../../../inc/config.php:881 +msgid "Invalid/malformed cookies." +msgstr "Neplatné cookies." + +#: ../../../../inc/config.php:882 +msgid "Your browser didn't submit an input when it should have." +msgstr "Tvůj prohlížeč něco neposlal, i když by měl." + +#: ../../../../inc/config.php:883 +#, php-format +msgid "The %s field is required." +msgstr "Pole %s je povinné." + +#: ../../../../inc/config.php:884 +#, php-format +msgid "The %s field was invalid." +msgstr "Pole %s je neplatné." + +#: ../../../../inc/config.php:885 +#, php-format +msgid "There is already a %s board." +msgstr "Board %s už tu je." + +#: ../../../../inc/config.php:886 +msgid "You don't have permission to do that." +msgstr "Na to nemáš oprávnění." + +#: ../../../../inc/config.php:887 +msgid "That post doesn't exist…" +msgstr "Ten příspěvek neexistuje…" + +#: ../../../../inc/config.php:888 +msgid "Page not found." +msgstr "Stránka nenalezena." + +#: ../../../../inc/config.php:889 +#, php-format +msgid "That mod already exists!" +msgstr "Tento moderátor už existuje!" + +#: ../../../../inc/config.php:890 +msgid "That theme doesn't exist!" +msgstr "Toto téma neexistuje!" + +#: ../../../../inc/config.php:891 +msgid "Invalid security token! Please go back and try again." +msgstr "Neplatný bezpečností token! Vrať se, prosím, a zkus to znova." + +#. Default public ban message. In public ban messages, %length% is replaced with "for x days" or +#. "permanently" (with %LENGTH% being the uppercase equivalent). +#: ../../../../inc/config.php:1056 +msgid "USER WAS BANNED FOR THIS POST" +msgstr "UŽIVATEL ZA PŘÍSPĚVEK DOSTAL BAN" + +#: ../../../../inc/mod/pages.php:66 +msgid "Confirm action" +msgstr "Potvrdit akci" + +#: ../../../../inc/mod/pages.php:110 +msgid "Could not find current version! (Check .installed)" +msgstr "Nemůžu najít současnou verzi! (Prověř .installed)" + +#: ../../../../inc/mod/pages.php:162 +msgid "Dashboard" +msgstr "Panel" + +#: ../../../../inc/mod/pages.php:267 +msgid "There are no boards to search!" +msgstr "Nejsou tu žádné boardy k prohledávání!" + +#. $results now contains the search results +#: ../../../../inc/mod/pages.php:335 +msgid "Search results" +msgstr "Výsledky hledání" + +#: ../../../../inc/mod/pages.php:431 +msgid "Edit board" +msgstr "Upravit board" + +#: ../../../../inc/mod/pages.php:481 +msgid "Couldn't open board after creation." +msgstr "Nemůžu po založení otevřít board." + +#: ../../../../inc/mod/pages.php:501 +msgid "New board" +msgstr "Nový board" + +#. line 37 +#: ../../../../inc/mod/pages.php:548 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:118 +msgid "Noticeboard" +msgstr "Nástěnka" + +#: ../../../../inc/mod/pages.php:609 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:191 +msgid "News" +msgstr "Novinky" + +#: ../../../../inc/mod/pages.php:649 ../../../../inc/mod/pages.php:676 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:72 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:288 +msgid "Moderation log" +msgstr "Log moderací" + +#. line 102 +#. line 20 +#: ../../../../inc/mod/pages.php:833 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:264 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:68 +msgid "IP" +msgstr "IP" + +#. line 169 +#: ../../../../inc/mod/pages.php:843 ../../../../inc/mod/pages.php:1359 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:429 +msgid "New ban" +msgstr "Nový ban" + +#: ../../../../inc/mod/pages.php:926 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:253 +msgid "Ban list" +msgstr "Banlist" + +#: ../../../../inc/mod/pages.php:1097 +msgid "Move reply" +msgstr "Přesunout odpověď" + +#: ../../../../inc/mod/pages.php:1123 +msgid "Target and source board are the same." +msgstr "Cílový a zdrojový board se shodují." + +#: ../../../../inc/mod/pages.php:1288 +msgid "Impossible to move thread; there is only one board." +msgstr "Vlákno nelze přesunout; je tu jen jeden board." + +#. line 39 +#: ../../../../inc/mod/pages.php:1292 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:111 +msgid "Move thread" +msgstr "Přesunout vlákno" + +#: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1732 +msgid "Edit user" +msgstr "Upravit uživatele" + +#: ../../../../inc/mod/pages.php:1745 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:262 +msgid "Manage users" +msgstr "Správa uživatel" + +#. deleted? +#: ../../../../inc/mod/pages.php:1807 ../../../../inc/mod/pages.php:1880 +msgid "New PM for" +msgstr "Nová SZ pro" + +#: ../../../../inc/mod/pages.php:1811 +msgid "Private message" +msgstr "Soukromá zpráva" + +#. line 68 +#: ../../../../inc/mod/pages.php:1832 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:197 +msgid "PM inbox" +msgstr "Schránka SZ" + +#: ../../../../inc/mod/pages.php:1944 ../../../../inc/mod/pages.php:1948 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:297 +msgid "Rebuild" +msgstr "Přebudovat" + +#: ../../../../inc/mod/pages.php:2034 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:235 +msgid "Report queue" +msgstr "Fronta nahlášených příspěvků" + +#: ../../../../inc/mod/pages.php:2102 ../../../../inc/mod/pages.php:2201 +msgid "Config editor" +msgstr "Editor konfigurace" + +#: ../../../../inc/mod/pages.php:2217 +msgid "Themes directory doesn't exist!" +msgstr "Adresář s tématy neexistuje!" + +#: ../../../../inc/mod/pages.php:2219 +msgid "Cannot open themes directory; check permissions." +msgstr "Nemůžu otevřít adresář s tématy; prověř oprávnění." + +#: ../../../../inc/mod/pages.php:2233 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:279 +msgid "Manage themes" +msgstr "Správa témat" + +#: ../../../../inc/mod/pages.php:2295 +#, php-format +msgid "Installed theme: %s" +msgstr "Nainstalované téma: %s" + +#: ../../../../inc/mod/pages.php:2306 +#, php-format +msgid "Configuring theme: %s" +msgstr "Konfiguruju téma: %s" + +#: ../../../../inc/mod/pages.php:2334 +#, php-format +msgid "Rebuilt theme: %s" +msgstr "Téma přebudováno: %s" + +#: ../../../../inc/mod/pages.php:2373 +msgid "Debug: Anti-spam" +msgstr "Debug: Antispam" + +#: ../../../../inc/mod/pages.php:2397 +msgid "Debug: Recent posts" +msgstr "Debug: Poslední příspěvky" + +#: ../../../../inc/mod/pages.php:2421 +msgid "Debug: SQL" +msgstr "Debug: SQL" + +#. Print error +#: ../../../../inc/database.php:72 +msgid "Database error: " +msgstr "Chyba databáze: " + +#: ../../../../banned.php:4 +msgid "Banned?" +msgstr "Mám ban?" + +#: ../../../../banned.php:5 +msgid "You are not banned." +msgstr "Nemáš ban." + +#. line 2 +#. line 5 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:22 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:28 +msgid "Phrase:" +msgstr "Fráze:" + +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:35 +msgid "Posts" +msgstr "Příspěvky" + +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:46 +msgid "IP address notes" +msgstr "Poznámky k IP adrese" + +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:59 +msgid "Bans" +msgstr "Bany" + +#. line 16 +#. line 2 +#. line 13 +#. line 112 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:80 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:22 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:63 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:322 +#: ../../../../search.php:168 +msgid "Search" +msgstr "Hledat" + +#. line 18 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:85 +msgid "" +"(Search is case-insensitive and based on keywords. To match exact phrases, " +"use \"quotes\". Use an asterisk (*) for wildcard.)" +msgstr "" +"(Vyhledávání je založeno na klíčových slovech a nezohledňuje velikost " +"písmen. Pro vyhledávání přesných frází použij \"uvozovky\". Hvězdička (*) " +"funguje jako zástupný znak.)" + +#. line 8 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:37 +msgid "Select board" +msgstr "Vybrat board" + +#. line 17 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:70 +msgid "" +"Search is case-insensitive and based on keywords. To match exact phrases, " +"use \"quotes\". Use an asterisk (*) for wildcard.

You may apply the following filters to your searches: " +"id, thread, subject, and " +"name. To apply a filter, simply add to your query, for " +"example, name:Anonymous or subject:\"Some Thread\". " +"Wildcards cannot be used in filters." +msgstr "" +"Vyhledávání je založeno na klíčových slovech a nezohledňuje velikost písmen. " +"Pro vyhledávání přesných frází použij \"uvozovky\". Hvězdička (*) funguje " +"jako zástupný znak.

Ve vyhledávání " +"můžeš použít následující filtry: id, thread, subject a name. Filtr se aplikuje " +"přidáním např. name:Anonymous nebo subject:\"Nějaké vlákno\" na konec dotazu. Ve filtrech nelze použít zástupné znaky." + +#. line 2 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:22 +msgid "Boards" +msgstr "Boardy" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:76 +msgid "edit" +msgstr "upravit" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:94 +msgid "Create new board" +msgstr "Vytvořit nový board" + +#. line 32 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:105 +msgid "Messages" +msgstr "Zprávy" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:143 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:107 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:85 +msgid "no subject" +msgstr "bez předmětu" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:185 +msgid "View all noticeboard entries" +msgstr "Zobrazit všechny příspěvky na nástěnce" + +#. line 76 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:219 +msgid "Administration" +msgstr "Administrace" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:270 +msgid "Change password" +msgstr "Změnit heslo" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:306 +msgid "Configuration" +msgstr "Konfigurace" + +#. line 124 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:345 +msgid "Other" +msgstr "Ostatní" + +#. line 136 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:379 +msgid "Debug" +msgstr "Debug" + +#. line 138 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:384 +msgid "Anti-spam" +msgstr "Antispam" + +#. line 139 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:388 +msgid "Recent posts" +msgstr "Poslední příspěvky" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:395 +msgid "SQL" +msgstr "SQL" + +#. line 161 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:434 +msgid "User account" +msgstr "Uživatelský účet" + +#. line 164 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:440 +msgid "Logout" +msgstr "Odhlásit" + +#. line 3 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:24 +msgid "New post" +msgstr "Nový příspěvek" + +#. line 7 +#. line 14 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:31 +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:30 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:66 +msgid "Name" +msgstr "Jméno" + +#. line 11 +#. line 23 +#. line 46 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:41 +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:58 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:147 +msgid "Subject" +msgstr "Předmět" + +#. line 15 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:48 +msgid "Body" +msgstr "Tělo" + +#. line 20 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:56 +msgid "Post to noticeboard" +msgstr "Připíchnout na nástěnku" + +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:81 +msgid "delete" +msgstr "smazat" + +#. line 43 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:116 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:91 +msgid "by" +msgstr "od" + +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:129 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:120 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:394 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:493 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:244 +msgid "deleted?" +msgstr "smazáno?" + +#. line 49 +#: ../../../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:137 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:95 +msgid "at" +msgstr "v" + +#. line 24 +#. line 62 +#. line 150 +#. line 180 +#. line 14 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:78 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:179 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:380 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:453 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:60 +msgid "Staff" +msgstr "Personál" + +#. line 25 +#. line 67 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:82 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:190 +msgid "Note" +msgstr "Poznámka" + +#. line 26 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:86 +msgid "Date" +msgstr "Datum" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:93 +msgid "Actions" +msgstr "Akce" + +#. line 49 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:151 +msgid "remove" +msgstr "smazat" + +#. line 75 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:201 +msgid "New note" +msgstr "Nová poznámka" + +#. line 92 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:240 +msgid "Status" +msgstr "Stav" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:248 +msgid "Expired" +msgstr "Vypršel" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:254 +msgid "Active" +msgstr "Aktivní" + +#. line 106 +#. line 8 +#. line 5 +#. line 32 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:274 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:36 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:39 +#: ../../../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:34 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:96 +msgid "Reason" +msgstr "Důvod" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:288 +msgid "no reason" +msgstr "bez důvodu" + +#. line 116 +#. line 182 +#. line 9 +#. line 3 +#. line 65 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:298 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:461 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:40 +#: ../../../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:23 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:157 +msgid "Board" +msgstr "Board" + +#. line 71 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:312 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:126 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:74 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:166 +msgid "all boards" +msgstr "všechny boardy" + +#. line 126 +#. line 10 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:322 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:44 +msgid "Set" +msgstr "Nastavit" + +#. line 130 +#. line 12 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:332 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:52 +msgid "Expires" +msgstr "Vyprší" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:346 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:166 +msgid "never" +msgstr "nikdy" + +#. line 140 +#. line 13 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:356 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:56 +msgid "Seen" +msgstr "Naposledy viděn" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:364 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:194 +msgid "Yes" +msgstr "Ano" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:370 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:200 +msgid "No" +msgstr "Ne" + +#. line 161 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:408 +msgid "Remove ban" +msgstr "Sundat ban" + +#. line 181 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:457 +msgid "Time" +msgstr "Čas" + +#. line 183 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:465 +msgid "Action" +msgstr "Akce" + +#: ../../../../templates/cache/72/55/0d64283f30702de83ecfcb71f86a.php:28 +msgid "There are no reports." +msgstr "Nic nebylo nahlášeno." + +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:22 +msgid "There are no active bans." +msgstr "Nejsou žádné aktivní bany." + +#. line 7 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:32 +msgid "IP address/mask" +msgstr "IP adresa/maska" + +#. line 11 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:48 +msgid "Duration" +msgstr "Doba trvání" + +#. line 91 +#: ../../../../templates/cache/ab/22/de7b6303f63ea04fb419413cf04c.php:262 +msgid "Unban selected" +msgstr "Vybrán unban" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:36 +msgid "You were banned! ;_;" +msgstr "Měl jsi ban! ;_;" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:42 +msgid "You are banned! ;_;" +msgstr "Máš ban! ;_;" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:53 +msgid "You were banned from" +msgstr "Dostal jsi ban na" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:59 +msgid "You have been banned from" +msgstr "Máš ban na" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:83 +msgid "for the following reason:" +msgstr "s tímto odůvodněním:" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:89 +msgid "for an unspecified reason." +msgstr "kvůli blíže neurčenému důvodu." + +#. line 32 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:111 +msgid "Your ban was filed on" +msgstr "Tvůj ban byl zadán" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:117 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:537 +msgid "and" +msgstr "a" + +#. line 51 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:124 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:157 +msgid "has since expired. Refresh the page to continue." +msgstr "od té doby už vypršel. Pro pokračování obnov stránku." + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:130 +msgid "expires" +msgstr "vyprší za" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:134 +msgid "from now, which is on" +msgstr "což je v" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:184 +msgid "will not expire" +msgstr "nevyprší" + +#. line 78 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:193 +msgid "Your IP address is" +msgstr "Tvoje IP adresa je" + +#. line 6 +#: ../../../../templates/cache/3c/80/0ebbee302f4fad8d0d7f13e62db5.php:41 +msgid "Go back" +msgstr "Návrat" + +#. line 13 +#: ../../../../templates/cache/3c/80/0ebbee302f4fad8d0d7f13e62db5.php:56 +msgid "Error information" +msgstr "Chybová informace" + +#. line 2 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:22 +msgid "Delete Post" +msgstr "Smazat příspěvek" + +#. line 3 +#. line 84 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:26 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:250 +msgid "File" +msgstr "Soubor" + +#. line 14 +#. line 140 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:28 +#: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:45 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:372 +msgid "Password" +msgstr "Heslo" + +#. line 10 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:44 +msgid "Report" +msgstr "Nahlásit" + +#. line 6 +#: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:31 +msgid "Username" +msgstr "Uživatelské jméno" + +#. line 23 +#: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:57 +msgid "Continue" +msgstr "Pokračovat" + +#: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:149 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:134 +#: ../../../../templates/cache/62/8c/21348d46377c3e1b3f8c476ba376.php:65 +msgid "Return to dashboard" +msgstr "Zpět na panel" + +#. line 7 +#: ../../../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:41 +msgid "Report date" +msgstr "Datum nahlášení" + +#: ../../../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:51 +msgid "Reported by" +msgstr "Nahlásil" + +#: ../../../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:70 +msgid "Discard abuse report" +msgstr "Zahodit náhlášení" + +#: ../../../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:88 +msgid "Discard all abuse reports by this IP address" +msgstr "Zahodit všechna nahlášení od této IP adresy" + +#. line 6 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:33 +msgid "Thread ID" +msgstr "ID vlákna" + +#. line 14 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:48 +msgid "Leave shadow thread" +msgstr "Ponechat stínové vlákno" + +#. line 18 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:55 +msgid "locks thread; replies to it with a link." +msgstr "zamkne vlákno; odpovědi přes odkaz." + +#. line 22 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:62 +msgid "Target board" +msgstr "Cílový board" + +#. line 39 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:143 +msgid "Posting mode: Reply" +msgstr "Režim příspěvku: odpověď" + +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:147 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:200 +msgid "Return" +msgstr "Návrat" + +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:70 +msgid "(or subnet)" +msgstr "(nebo subnet)" + +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:85 +msgid "hidden" +msgstr "skryté" + +#. line 41 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:114 +msgid "Message" +msgstr "Zpráva" + +#. line 46 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:130 +msgid "public; attached to post" +msgstr "veřejné; připojeno k příspěvku" + +#. line 58 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:147 +msgid "Length" +msgstr "Délka" + +#. line 88 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:209 +msgid "New Ban" +msgstr "Nový ban" + +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:61 +msgid "(No news to show.)" +msgstr "(Žádné novinky k zobrazení.)" + +#. line 28 +#: ../../../../templates/cache/4b/3e/915cc5ac5fe144c331207c656528.php:99 +msgid "1 reply" +msgid_plural "%count% replies" +msgstr[0] "%count% odpověď" +msgstr[1] "%count% odpovědi" +msgstr[2] "%count% odpovědí" + +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:102 +msgid "File:" +msgstr "Soubor:" + +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:115 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:127 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:165 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:206 +msgid "Spoiler Image" +msgstr "Zakrýt obrázek" + +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:503 +msgid "Reply" +msgstr "Odpovědět" + +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:531 +msgid "1 post" +msgid_plural "%count% posts" +msgstr[0] "%count% příspěvek" +msgstr[1] "%count% příspěvky" +msgstr[2] "%count% příspěvků" + +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:549 +msgid "1 image reply" +msgid_plural "%count% image replies" +msgstr[0] "%count% obrázková odpověď" +msgstr[1] "%count% obrázkové odpovědi" +msgstr[2] "%count% obrázkových odpovědí" + +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:554 +msgid "omitted. Click reply to view." +msgstr "vynecháno. Klikni na Odpovědět pro zobrazení." + +#. line 15 +#. line 24 +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:44 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:88 +msgid "Email" +msgstr "Email" + +#. line 27 +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:68 +msgid "Update" +msgstr "Aktualizovat" + +#. line 32 +#. line 57 +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:76 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:178 +msgid "Comment" +msgstr "Komentář" + +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:97 +msgid "Currently editing raw HTML." +msgstr "Právě upravuješ čisté HTML." + +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:105 +msgid "Edit markup instead?" +msgstr "Nechceš raději upravovat značkovací jazyk?" + +#: ../../../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:115 +msgid "Edit raw HTML instead?" +msgstr "Nechceš raději upravovat čisté HTML?" + +#. line 73 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:226 +msgid "Verification" +msgstr "Ověření" + +#. line 94 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:269 +msgid "Oekaki" +msgstr "Oekaki" + +#. line 108 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:290 +msgid "Embed" +msgstr "Vložit" + +#. line 120 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:314 +msgid "Flags" +msgstr "Flagy" + +#. line 124 +#. line 125 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:324 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:328 +msgid "Sticky" +msgstr "Přilepené" + +#. line 128 +#. line 129 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:338 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:342 +msgid "Lock" +msgstr "Zamknout" + +#. line 132 +#. line 133 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:352 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:356 +msgid "Raw HTML" +msgstr "Čisté HTML" + +#. line 145 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:382 +msgid "(For file deletion.)" +msgstr "(Pro smazání souboru.)" + +#: ../../../../search.php:5 +msgid "Post search is disabled" +msgstr "Vyhledávání příspěvků není povolené." + +#: ../../../../search.php:25 ../../../../search.php:31 +msgid "Wait a while before searching again, please." +msgstr "Před dalším pokusem o vyhledávání chvíli počkej, prosím." + +#: ../../../../search.php:131 +msgid "Query too broad." +msgstr "Dotaz je příliš široký." + +#: ../../../../search.php:152 +#, php-format +msgid "%d result in" +msgid_plural "%d results in" +msgstr[0] "%d výsledek v" +msgstr[1] "%d výsledky v" +msgstr[2] "%d výsledků v" + +#: ../../../../search.php:163 +msgid "No results." +msgstr "Žádné výsledky." From 96122c3fc2a02f0eb957279b3887cd87b862f575 Mon Sep 17 00:00:00 2001 From: czaks Date: Sun, 11 Aug 2013 17:22:39 -0400 Subject: [PATCH 07/19] fix notice for mod spoiler image --- inc/config.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inc/config.php b/inc/config.php index 7c7b6241..2a9dbb78 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1097,6 +1097,8 @@ $config['mod']['spoilerfile'] = JANITOR; // Delete file (and keep post) $config['mod']['deletefile'] = JANITOR; + // Spoiler image + $config['mod']['spoilerimage'] = JANITOR; // Delete all posts by IP $config['mod']['deletebyip'] = MOD; // Delete all posts by IP across all boards From 3a5f25f751173d354f4a4ff4b7371ca62691d11f Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 13:00:06 +1000 Subject: [PATCH 08/19] what --- inc/config.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/inc/config.php b/inc/config.php index 2a9dbb78..049b59f0 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1093,8 +1093,6 @@ $config['mod']['bandelete'] = MOD; // Remove bans $config['mod']['unban'] = MOD; - // Spoiler file (and keep post) - $config['mod']['spoilerfile'] = JANITOR; // Delete file (and keep post) $config['mod']['deletefile'] = JANITOR; // Spoiler image From 0f5f44bc95ac48aa9466a2c77f1e9e9b059b15f2 Mon Sep 17 00:00:00 2001 From: czaks Date: Sun, 11 Aug 2013 17:34:43 -0400 Subject: [PATCH 09/19] spoilerimage config variable: this got fixed doubly, once wrong, merge both fixes Conflicts: inc/config.php --- inc/config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/config.php b/inc/config.php index 049b59f0..fd44e9a2 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1093,10 +1093,10 @@ $config['mod']['bandelete'] = MOD; // Remove bans $config['mod']['unban'] = MOD; + // Spoiler file (and keep post) + $config['mod']['spoilerimage'] = JANITOR; // Delete file (and keep post) $config['mod']['deletefile'] = JANITOR; - // Spoiler image - $config['mod']['spoilerimage'] = JANITOR; // Delete all posts by IP $config['mod']['deletebyip'] = MOD; // Delete all posts by IP across all boards From adbb0c1fdfb41d0731de9079028ca79427de61e5 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 13:01:34 +1000 Subject: [PATCH 10/19] ... --- inc/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index fd44e9a2..741db545 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1093,7 +1093,7 @@ $config['mod']['bandelete'] = MOD; // Remove bans $config['mod']['unban'] = MOD; - // Spoiler file (and keep post) + // Spoiler image $config['mod']['spoilerimage'] = JANITOR; // Delete file (and keep post) $config['mod']['deletefile'] = JANITOR; From 169c68e86221f15b85a34e09ff4c75d4feb6d983 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 21:08:40 +1000 Subject: [PATCH 11/19] use single quotes --- inc/display.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/display.php b/inc/display.php index c9f39731..af0ee89f 100644 --- a/inc/display.php +++ b/inc/display.php @@ -346,7 +346,7 @@ class Post { $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); // Spoiler file (keep post) - if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) + if (!empty($this->file) && $this->file != 'deleted' && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); // Edit post @@ -451,7 +451,7 @@ class Thread { $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); // Spoiler file (keep post) - if (!empty($this->file) && $this->file != "deleted" && $this->file != null && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) + if (!empty($this->file) && $this->file != 'deleted' && $this->thumb != 'spoiler' && hasPermission($config['mod']['spoilerimage'], $board['uri'], $this->mod) && $config['spoiler_images']) $built .= ' ' . secure_link_confirm($config['mod']['link_spoilerimage'], 'Spoiler File', 'Are you sure you want to spoiler this file?', $board['uri'] . '/spoiler/' . $this->id); // Sticky From e0a8ffcfb9246dc5fda840dc5386598730245802 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 21:14:32 +1000 Subject: [PATCH 12/19] ?/config: Link URLs in comments --- inc/mod/config-editor.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/mod/config-editor.php b/inc/mod/config-editor.php index 27740378..3f15ebe5 100644 --- a/inc/mod/config-editor.php +++ b/inc/mod/config-editor.php @@ -115,8 +115,14 @@ function config_vars() { $already_exists = true; } - if (!$already_exists && permission_to_edit_config_var($var['name'])) + if (!$already_exists && permission_to_edit_config_var($var['name'])) { + foreach ($var['comment'] as &$comment) { + $comment = preg_replace_callback( + '/((?:https?:\/\/|ftp:\/\/|irc:\/\/)[^\s<>()"]+?(?:\([^\s<>()"]*?\)[^\s<>()"]*?)*)((?:\s|<|>|"|\.||\]|!|\?|,|,|")*(?:[\s<>()"]|$))/', + 'markup_url', $comment); + } $conf[] = $var; + } } } From a7a93ece3d96acb24c589662f49d28675c83c913 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 22:14:26 +1000 Subject: [PATCH 13/19] $config['error']['invalidzip'] isn't used anywhere anymore --- inc/config.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/inc/config.php b/inc/config.php index 741db545..64fdba92 100644 --- a/inc/config.php +++ b/inc/config.php @@ -267,7 +267,8 @@ 'recaptcha_response_field', 'spoiler', 'quick-reply', - 'page' + 'page', + 'file_url', ); // Enable reCaptcha to make spam even harder. Rarely necessary. @@ -347,7 +348,10 @@ $config['markup_urls'] = true; // Optional URL prefix for links (eg. "http://anonym.to/?"). $config['link_prefix'] = ''; - + + // Allow "uploading" images via URL as well. Users can enter the URL of the image and then Tinyboard will + // download it. Not usually recommended. + $config['allow_upload_by_url'] = false; // A wordfilter (sometimes referred to as just a "filter" or "censor") automatically scans users’ posts // as they are submitted and changes or censors particular words or phrases. @@ -837,7 +841,6 @@ $config['error']['unknownext'] = _('Unknown file extension.'); $config['error']['filesize'] = _('Maximum file size: %maxsz% bytes
Your file\'s size: %filesz% bytes'); $config['error']['maxsize'] = _('The file was too big.'); - $config['error']['invalidzip'] = _('Invalid archive!'); $config['error']['fileexists'] = _('That file already exists!'); $config['error']['fileexistsinthread'] = _('That file already exists in this thread!'); $config['error']['delete_too_soon'] = _('You\'ll have to wait another %s before deleting that.'); From 0de0bc6ceb2c56256bf87724572055297dae76af Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 22:51:46 +1000 Subject: [PATCH 14/19] Optional: Allow uploading by URL --- inc/config.php | 4 ++-- post.php | 45 +++++++++++++++++++++++++++++++++++++++- templates/main.js | 2 +- templates/post_form.html | 7 +++++++ 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/inc/config.php b/inc/config.php index 64fdba92..4858274d 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1314,6 +1314,6 @@ // is the absolute maximum, because MySQL cannot handle table names greater than 64 characters. $config['board_regex'] = '[0-9a-zA-Z$_\x{0080}-\x{FFFF}]{1,58}'; - // Complex regular expression to catch URLs. - $config['url_regex'] = '/' . '(https?|ftp):\/\/' . '(([\w\-]+\.)+[a-zA-Z]{2,6}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' . '(:\d+)?' . '(\/([\w\-~.#\/?=&;:+%!*\[\]@$\'()+,|\^]+)?)?' . '/'; + // Regex for URLs. + $config['url_regex'] = '@^(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))$@'; diff --git a/post.php b/post.php index 074aa0dc..cfec5430 100644 --- a/post.php +++ b/post.php @@ -268,6 +268,46 @@ if (isset($_POST['delete'])) { $_POST['subject'] = ''; } + if ($config['allow_upload_by_url'] && isset($_POST['file_url']) && !empty($_POST['file_url'])) { + $post['file_url'] = $_POST['file_url']; + if (!preg_match($config['url_regex'], $post['file_url'])) + error($config['error']['invalidimg']); + + + $post['extension'] = strtolower(mb_substr($post['file_url'], mb_strrpos($post['file_url'], '.') + 1)); + if (!in_array($post['extension'], $config['allowed_ext']) && !in_array($post['extension'], $config['allowed_ext_files'])) + error($config['error']['unknownext']); + + $post['file_tmp'] = tempnam($config['tmp'], 'url'); + register_shutdown_function('unlink', $post['file_tmp']); + + $fp = fopen($post['file_tmp'], 'w'); + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $post['file_url']); + curl_setopt($curl, CURLOPT_FAILONERROR, true); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($curl, CURLOPT_TIMEOUT, 15); + curl_setopt($curl, CURLOPT_USERAGENT, 'Tinyboard'); + curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); + curl_setopt($curl, CURLOPT_FILE, $fp); + + if (curl_exec($curl) === false) + error($config['error']['nomove']); + + curl_close($curl); + + fclose($fp); + + $_FILES['file'] = array( + 'name' => basename($post['file_url']), + 'tmp_name' => $post['file_tmp'], + 'error' => 0, + 'size' => filesize($post['file_tmp']) + ); + } + // Check for a file if ($post['op'] && !isset($post['no_longer_require_an_image_for_op'])) { if (!isset($_FILES['file']['tmp_name']) || $_FILES['file']['tmp_name'] == '' && $config['force_image_op']) @@ -545,7 +585,10 @@ if (isset($_POST['delete'])) { } if (!isset($dont_copy_file) || !$dont_copy_file) { - if (!@move_uploaded_file($upload, $post['file'])) + if (isset($post['file_tmp'])) { + if (!@rename($upload, $post['file'])) + error($config['error']['nomove']); + } elseif (!@move_uploaded_file($upload, $post['file'])) error($config['error']['nomove']); } } diff --git a/templates/main.js b/templates/main.js index 71dcd92a..78054a3b 100644 --- a/templates/main.js +++ b/templates/main.js @@ -175,7 +175,7 @@ function dopost(form) { saved[document.location] = form.elements['body'].value; sessionStorage.body = JSON.stringify(saved); - return form.elements['body'].value != "" || form.elements['file'].value != ""; + return form.elements['body'].value != "" || form.elements['file'].value != "" || (form.elements.file_url && form.elements['file_url'].value != ""); } function citeReply(id) { diff --git a/templates/post_form.html b/templates/post_form.html index 4d7a37b7..7c8894c1 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -73,6 +73,13 @@ + {% if config.allow_upload_by_url %} +
+

+ : + +
+ {% endif %} {{ antibot.html() }} From 6a1e8e834bd1d0ea1c0f557ae0c54d8b2ae44d61 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 23:06:58 +1000 Subject: [PATCH 15/19] Fix last commit: add chmod() to fix some permissions derping --- post.php | 1 + 1 file changed, 1 insertion(+) diff --git a/post.php b/post.php index cfec5430..c55b8bc5 100644 --- a/post.php +++ b/post.php @@ -588,6 +588,7 @@ if (isset($_POST['delete'])) { if (isset($post['file_tmp'])) { if (!@rename($upload, $post['file'])) error($config['error']['nomove']); + chmod($post['file'], 0755); } elseif (!@move_uploaded_file($upload, $post['file'])) error($config['error']['nomove']); } From 6fdbe76f7b7b69ca6bfbff65af8096734e46233d Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 12 Aug 2013 23:35:27 +1000 Subject: [PATCH 16/19] bugfix: sometimes this acts weird --- post.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/post.php b/post.php index c55b8bc5..6bed96e1 100644 --- a/post.php +++ b/post.php @@ -279,7 +279,10 @@ if (isset($_POST['delete'])) { error($config['error']['unknownext']); $post['file_tmp'] = tempnam($config['tmp'], 'url'); - register_shutdown_function('unlink', $post['file_tmp']); + function unlink_tmp_file($file) { + @unlink($file); + } + register_shutdown_function('unlink_tmp_file', $post['file_tmp']); $fp = fopen($post['file_tmp'], 'w'); From 60b3cfc539392d5b760244e21b69136895e938cb Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 13 Aug 2013 00:07:23 +1000 Subject: [PATCH 17/19] Upload via URL: Make sure we're not vulnerable to this buffer overflow exploit. http://www.exploit-db.com/exploits/24487/ --- post.php | 1 + 1 file changed, 1 insertion(+) diff --git a/post.php b/post.php index 6bed96e1..8a8487e8 100644 --- a/post.php +++ b/post.php @@ -295,6 +295,7 @@ if (isset($_POST['delete'])) { curl_setopt($curl, CURLOPT_USERAGENT, 'Tinyboard'); curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); curl_setopt($curl, CURLOPT_FILE, $fp); + curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); if (curl_exec($curl) === false) error($config['error']['nomove']); From c6e629bf89b2b625f2f84ad73620f5a82b7a207e Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 13 Aug 2013 01:53:23 +1000 Subject: [PATCH 18/19] allow wordfilters to be callbacks --- inc/functions.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 74ab96e9..848d9204 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1415,7 +1415,10 @@ function wordfilters(&$body) { foreach ($config['wordfilters'] as $filter) { if (isset($filter[2]) && $filter[2]) { - $body = preg_replace($filter[0], $filter[1], $body); + if (is_callable($filter[1])) + $body = preg_replace_callback($filter[0], $filter[1], $body); + else + $body = preg_replace($filter[0], $filter[1], $body); } else { $body = str_ireplace($filter[0], $filter[1], $body); } From 07b825c6d2abd3312747fafe49c0a1d3011242ae Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 13 Aug 2013 21:53:23 +1000 Subject: [PATCH 19/19] Don't create anti-bot stuff in buildThread() when asked to return HTML as a string. --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 848d9204..085d911f 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1755,7 +1755,7 @@ function buildThread($id, $return = false, $mod = false) { 'config' => $config, 'id' => $id, 'mod' => $mod, - 'antibot' => $mod ? false : create_antibot($board['uri'], $id), + 'antibot' => $mod || $return ? false : create_antibot($board['uri'], $id), 'boardlist' => createBoardlist($mod), 'return' => ($mod ? '?' . $board['url'] . $config['file_index'] : $config['root'] . $board['dir'] . $config['file_index']) ));