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 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, 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']) ));