From 8772c31ce13e65b379be7b74154dd077cbd68ecb Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 20 Jul 2013 22:45:21 -0400 Subject: [PATCH 001/289] post search: missed default config --- inc/config.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/inc/config.php b/inc/config.php index bbc899ef..74794645 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1084,6 +1084,28 @@ // Execute un-filtered SQL queries on the database (?/debug/sql) $config['mod']['debug_sql'] = DISABLED; +/* + * ==================== + * Public post search + * ==================== + */ + $config['search'] = array(); + + // Enable the search form + $config['search']['enable'] = false; + + // Maximal number of queries per IP address per minutes + $config['search']['queries_per_minutes'] = Array(15, 2); + + // Global maximal number of queries per minutes + $config['search']['queries_per_minutes_all'] = Array(50, 2); + + // Limit of search results + $config['search']['search_limit'] = 100; + + // Boards for searching + //$config['search']['boards'] = array('a', 'b', 'c', 'd', 'e'); + /* * ==================== * Events (PHP 5.3.0+) From 97a22e57c1ef3c3e41ed5666255c1e941df21f3e Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 20 Jul 2013 22:47:26 -0400 Subject: [PATCH 002/289] Remove imgcaptcha, this code is unused in any of our forks and needs work to get here back. Revert "Merge branch 'imgcaptcha' of https://github.com/asiekierka/Tinyboard" This reverts commit 49afb685c8e658c0f36b8171e176363538eb9419, reversing changes made to 2451a0f29c08e23ff36ef113082c112224f7e576. Conflicts: js/imgcaptcha.js --- imgcaptcha_im.php | 7 -- imgcaptcha_p.php | 5 -- inc/config.php | 15 ----- inc/ic-encrypt.php | 37 ----------- inc/imgcaptcha.php | 136 --------------------------------------- js/imgcaptcha.js | 12 ---- post.php | 8 +-- templates/post_form.html | 15 ----- 8 files changed, 1 insertion(+), 234 deletions(-) delete mode 100644 imgcaptcha_im.php delete mode 100644 imgcaptcha_p.php delete mode 100644 inc/ic-encrypt.php delete mode 100644 inc/imgcaptcha.php delete mode 100644 js/imgcaptcha.js diff --git a/imgcaptcha_im.php b/imgcaptcha_im.php deleted file mode 100644 index 152d92ad..00000000 --- a/imgcaptcha_im.php +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/imgcaptcha_p.php b/imgcaptcha_p.php deleted file mode 100644 index 9543dc6c..00000000 --- a/imgcaptcha_p.php +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/inc/config.php b/inc/config.php index 74794645..04ed6812 100644 --- a/inc/config.php +++ b/inc/config.php @@ -233,8 +233,6 @@ 'embed', 'recaptcha_challenge_field', 'recaptcha_response_field', - 'imgcaptcha_hash', - 'imgcaptcha_verify', 'spoiler', 'quick-reply' ); @@ -270,19 +268,6 @@ $config['recaptcha_public'] = '6LcXTcUSAAAAAKBxyFWIt2SO8jwx4W7wcSMRoN3f'; $config['recaptcha_private'] = '6LcXTcUSAAAAAOGVbVdhmEM1_SyRF4xTKe8jbzf_'; - $config['imgcaptcha'] = false; - $config['imgcaptcha_key'] = "cos losowego"; // max 32 znaki - $config['imgcaptcha_list'] = "/sciezka/do/pliku.txt"; - $config['imgcaptcha_images'] = "/sciezka/do/obrazkow"; // without a slash at the end - $config['imgcaptcha_question'] = "Was ist das?"; - $config['imgcaptcha_time_limit'] = 90; // Kapcza wazna przez 90 sekund po wejsciu - $config['imgcaptcha_filler'] = "/plik/kliknijmie.png"; - $config['imgcaptcha_width'] = 128; - $config['imgcaptcha_height'] = 96; - - // JESLI DODAJESZ IMGKAPCZE, NIE ZAPOMNIJ O TYM - // Wymagane tez jQuery - o tam, nizej. - //$config['additional_javascript'][] = 'js/imgcaptcha.js'; /* * ==================== * Post settings diff --git a/inc/ic-encrypt.php b/inc/ic-encrypt.php deleted file mode 100644 index 5d73126b..00000000 --- a/inc/ic-encrypt.php +++ /dev/null @@ -1,37 +0,0 @@ -safe_b64encode($crypttext)); - } - - public function decode($key, $value){ - if(!$value){return false;} - $crypttext = $this->safe_b64decode($value); - $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); - $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); - $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv); - return trim($decrypttext); - } -} -?> diff --git a/inc/imgcaptcha.php b/inc/imgcaptcha.php deleted file mode 100644 index ab6db68f..00000000 --- a/inc/imgcaptcha.php +++ /dev/null @@ -1,136 +0,0 @@ -255) { return 255; } - if($a<0) { return 0; } - return $a; - } - function randString($length, $charset='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+=') - { - $str = ''; - $count = strlen($charset); - while ($length--) { - $str .= $charset[rand(0, $count-1)]; - } - return $str; - } - function generateCaptchaHash() { - global $config; - $lines = getImages(); - $pick = pickImage($lines); - $enctext = $pick . ",," . time() . ",," . $_SERVER["REMOTE_ADDR"] . ",," . randString(12); - $converter = new Encryption; - return $converter->encode($config["imgcaptcha_key"],$enctext); - } - function ic_verifyHash($enctext, $output) { - global $config; - //print "VERIFY: " . $enctext . " " . $output . "
"; - $converter = new Encryption; - $dectext = explode(",,",$converter->decode($config["imgcaptcha_key"],$enctext)); - if(count($dectext)<4) return true; - $lines = getImages(); - $pick = $dectext[0]; - $time = time()-$dectext[1]; - if($time>$config["imgcaptcha_time_limit"]) return true; - $lp = $lines[$pick]; - for($i=1;$idecode($config["imgcaptcha_key"],$enctext)); - if(count($dectext)<=1) return; //SC - $lines = getImages(); - return $dectext[0]; - } - function generateImage($enctext) - { - global $config; - $lines = getImages(); - $pick = getPick($enctext); - if(!isset($lines[$pick])) return; //SC - $src = imagecreatefrompng(getIPath($lines[$pick][0])); - if($src == FALSE) return; //SC - $maxc = 8; - $icw = $config["imgcaptcha_width"]; - $ich = $config["imgcaptcha_height"]; - $dst = imagecreatetruecolor($icw,$ich); - $srcxm = imagesx($src)-$icw; - $srcym = imagesy($src)-$ich; - $srcx = rand(0,$srcxm-1); - $srcy = rand(0,$srcym-1); - imagecopy($dst,$src,0,0,$srcx,$srcy,$icw,$ich); - - // Obfuscation step 1 - imagecopymergegray($dst,$dst,0,0,0,0,$icw,$ich,rand(20,45)); - // Obfuscation step 1.5 - for($i=0;$i<8;$i++) { - $w = rand(5,10); $h = rand(5,10); - $x = rand(0,$icw-1-$w); $y = rand(0,$ich-1-$h); - $x2 = rand(0,$icw-1); $y2 = rand(0,$ich-1); - imagefilledrectangle($dst,$x,$y,$x+$w,$y+$h,imagecolorat($dst,$x2,$y2)); - } - for($i=0;$i<5;$i++) { - $w = rand(20,40); $h = rand(20,40); - $x = rand(0,$icw-1-$w); $y = rand(0,$ich-1-$h); - imagecopymergegray($dst,$dst,$x,$y,$x,$y,$w,$h,0); - } - // Obfuscation step 2 - for($i=0;$i<$icw*$ich;$i++) { - $x = $i%$icw; $y = $i/$icw; - $c = imagecolorat($dst,$x,$y); - if(rand(0,4) == 2) { $nc = $c ^ rand(0,16777215); } - else { $nc = imagecolorat($dst,rand(0,$icw-1),rand(0,$ich-1)); } - if(rand(18,24)!=21 and $c != 0 and $c != 0xFF00FF) - { - $nc = ncfix(($c&0xFF) + rand(-16,16)) | ncfix((($c>>8)&0xFF) + rand(-8,8))<<8 | ncfix((($c>>16)&0xFF) + rand(-32,32))<<16; - $nc1 = $nc&0xFF ^ ($nc>>8)&0xFF ^ ($nc>>16)&0xFF; - } else { - $nc1 = $nc&0xFF; - if($nc1>($maxc*25)) $nc1 = $nc % ($maxc*25); - } - $nc2 = $nc1 | $nc1<<8 | $nc1<<16; - if(rand(0,1)==0) $nc2=$nc; - imagesetpixel($dst,$x,$y,$nc2); - } - // Obfuscation step 3 - for($i=0;$i diff --git a/js/imgcaptcha.js b/js/imgcaptcha.js deleted file mode 100644 index 99aad414..00000000 --- a/js/imgcaptcha.js +++ /dev/null @@ -1,12 +0,0 @@ -function ic_odswiezKapcze() { - $.get(configRoot + "imgcaptcha_p.php", function(data) { - $("#imgcaptcha_hash").val(data); - $("#imgcaptcha_img").prop("src",configRoot + "imgcaptcha_im.php?cr=" + data); - }); -} -//function resetujKapcze() { -// $("#imgcaptcha_img").prop("src",configRoot + "zakrytek.png"); -//} -//$(document).ready(function(){ -// //resetujKapcze(); - to nie powinno byc na razie potrzebne -//}); diff --git a/post.php b/post.php index 4ded8622..91d5a2f5 100644 --- a/post.php +++ b/post.php @@ -6,7 +6,6 @@ require 'inc/functions.php'; require 'inc/anti-bot.php'; -require 'inc/imgcaptcha.php'; // Fix for magic quotes if (get_magic_quotes_gpc()) { @@ -198,12 +197,7 @@ if (isset($_POST['delete'])) { error($config['error']['captcha']); } } - if ($config['imgcaptcha']) { - if (!isset($_POST['imgcaptcha_verify']) || !isset($_POST['imgcaptcha_hash'])) - error($config['error']['bot']); - if (ic_verifyHash($_POST['imgcaptcha_hash'],$_POST['imgcaptcha_verify'])) - error($config['error']['captcha']); - } + if ($post['mod'] = isset($_POST['mod']) && $_POST['mod']) { require 'inc/mod.php'; if (!$mod) { diff --git a/templates/post_form.html b/templates/post_form.html index 07b53a9f..0ea2b999 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -67,21 +67,6 @@ {% endif %} - {% if config.imgcaptcha %} - - - {% trans %}Verification{% endtrans %} - {{ antibot.html() }} - - - -
- {{ config.imgcaptcha_question }}
- Odswiez - {{ antibot.html() }} - - - {% endif %} {% trans %}File{% endtrans %} From 308f557fd503898406d7cb54ef7e6e6efb0f84ae Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 21 Jul 2013 15:50:45 -0400 Subject: [PATCH 003/289] Option to automatically strip EXIF metadata from JPEGs --- inc/config.php | 3 +++ inc/image.php | 12 ++++++++++-- post.php | 11 ++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/inc/config.php b/inc/config.php index 424d07d6..c2a68e6c 100644 --- a/inc/config.php +++ b/inc/config.php @@ -418,6 +418,9 @@ // - 'convert' The command line version of ImageMagick (`convert`). Fixes most of the bugs in PHP Imagick. $config['thumb_method'] = 'gd'; + // Strip EXIF metadata from JPEG files + $config['strip_exif'] = false; + // Regular expression to check for IE MIME type detection XSS exploit. To disable, comment the line out // https://github.com/savetheinternet/Tinyboard/issues/20 $config['ie_mime_type_detection'] = '/<(?:body|head|html|img|plaintext|pre|script|table|title|a href|channel|scriptlet)/i'; diff --git a/inc/image.php b/inc/image.php index abe27bcb..eb98ceda 100644 --- a/inc/image.php +++ b/inc/image.php @@ -166,6 +166,9 @@ class ImageImagick extends ImageBase { } } public function to($src) { + if ($config['strip_exif']) { + $this->image->stripImage(); + } if (preg_match('/\.gif$/i', $src)) $this->image->writeImages($src, true); else @@ -236,9 +239,14 @@ class ImageConvert extends ImageBase { } } public function to($src) { + global $config; + if (!$this->temp) { - // $config['redraw_image'] - shell_exec('convert ' . escapeshellarg($this->src) . ' ' . escapeshellarg($src)); + if ($config['strip_exif']) { + shell_exec('convert ' . escapeshellarg($this->src) . ' -strip ' . escapeshellarg($src)); + } else { + shell_exec('convert ' . escapeshellarg($this->src) . ' ' . escapeshellarg($src)); + } } else { rename($this->temp, $src); chmod($src, 0664); diff --git a/post.php b/post.php index 4e10c0cf..4e3a1a9f 100644 --- a/post.php +++ b/post.php @@ -420,10 +420,11 @@ if (isset($_POST['delete'])) { error($config['error']['maxsize']); } - // The following code corrects the image orientation based on EXIF. - // Currently only works with the 'convert' option selected but it could easily be expanded to work with the rest if you can be bothered. - if ($config['thumb_method'] == 'convert') { - if ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg') { + + if ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg') { + // The following code corrects the image orientation. + // Currently only works with the 'convert' option selected but it could easily be expanded to work with the rest if you can be bothered. + if ($config['thumb_method'] == 'convert') { $exif = exif_read_data($upload); if (isset($exif['Orientation']) && $exif['Orientation'] != 1) { shell_exec('convert ' . escapeshellarg($upload) . ' -auto-orient ' . escapeshellarg($upload)); @@ -473,7 +474,7 @@ if (isset($_POST['delete'])) { $thumb->_destroy(); } - if ($config['redraw_image']) { + if ($config['redraw_image'] || ($config['strip_exif'] && ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg'))) { $image->to($post['file']); $dont_copy_file = true; } From 9123161870f0bf935624f7668d28fd62d2a60f8e Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 21 Jul 2013 21:12:30 -0400 Subject: [PATCH 004/289] js/hide-threads.js: Simple thread-minimizing script --- js/hide-threads.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 js/hide-threads.js diff --git a/js/hide-threads.js b/js/hide-threads.js new file mode 100644 index 00000000..42475d2a --- /dev/null +++ b/js/hide-threads.js @@ -0,0 +1,74 @@ +/* + * hide-threads.js + * https://github.com/savetheinternet/Tinyboard/blob/master/js/hide-threads.js + * + * Released under the MIT license + * Copyright (c) 2013 Michael Save + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/hide-threads.js'; + * + */ + +$(document).ready(function(){ + if($('div.banner').length != 0) + return; // not index + + var board = $('form input[name="board"]').val().toString(); + + if (!localStorage.hiddenthreads) + localStorage.hiddenthreads = '{}'; + + // Load data from HTML5 localStorage + var hidden_data = JSON.parse(localStorage.hiddenthreads); + + var store_data = function() { + localStorage.hiddenthreads = JSON.stringify(hidden_data); + }; + + // Delete old hidden threads (7+ days old) + for (var key in hidden_data) { + for (var id in hidden_data[key]) { + if (hidden_data[key][id] < Math.round(Date.now() / 1000) - 60 * 60 * 24 * 7) { + delete hidden_data[key][id]; + store_data(); + } + } + } + + if (!hidden_data[board]) { + hidden_data[board] = {}; // id : timestamp + } + + $('div.post.op').each(function() { + var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); + var thread_container = $(this).parent(); + $('[-] ') + .insertBefore(thread_container.find('p.fileinfo')) + .click(function() { + hidden_data[board][id] = Math.round(Date.now() / 1000); + store_data(); + + thread_container.find('div.post,img,p.fileinfo,a.hide-thread-link,br').hide(); + + var hidden_div = thread_container.find('div.post.op > p.intro').clone(); + hidden_div.addClass('thread-hidden'); + hidden_div.find('a[href],input').remove(); + + $('[+] ') + .insertAfter(thread_container.find('a.hide-thread-link')) + .click(function() { + delete hidden_data[board][id]; + store_data(); + thread_container.find('div.post,img,p.fileinfo,a.hide-thread-link,br').show(); + $(this).remove(); + hidden_div.remove(); + }); + + hidden_div.insertAfter(thread_container.find('p.fileinfo')); + }); + if (hidden_data[board][id]) + thread_container.find('.hide-thread-link').click(); + }); +}); From 51361d02fb4b66a198dcdb5cd6350e6dada0aac9 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 21 Jul 2013 21:18:57 -0400 Subject: [PATCH 005/289] Strange bug in last commit --- js/hide-threads.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 42475d2a..135fbf51 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -45,7 +45,7 @@ $(document).ready(function(){ var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); $('[-] ') - .insertBefore(thread_container.find('p.fileinfo')) + .insertBefore(thread_container.find('p.fileinfo:first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); @@ -66,7 +66,7 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find('p.fileinfo')); + hidden_div.insertAfter(thread_container.find('p.fileinfo:first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); From e5663953b534f8098acff8f2942fdb81c2942acf Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 22 Jul 2013 10:14:08 -0400 Subject: [PATCH 006/289] Remove our post-hider script in favour of STI's one, leave symlink for compatibility --- js/post-hider.js | 54 +----------------------------------------------- 1 file changed, 1 insertion(+), 53 deletions(-) mode change 100644 => 120000 js/post-hider.js diff --git a/js/post-hider.js b/js/post-hider.js deleted file mode 100644 index f4cde66a..00000000 --- a/js/post-hider.js +++ /dev/null @@ -1,53 +0,0 @@ -function phGetCookieName(board, id) { - return "ph_hide_" + board + "_" + id; -} -function phPostHidden(board, id) { - return (localStorage.getItem(phGetCookieName(board, id)) != null); -} -function phPostToggle(board, id) { - if(phPostHidden(board, id)) { localStorage.removeItem(phGetCookieName(board, id)); } - else { localStorage.setItem(phGetCookieName(board, id),"yes"); } -} -function phGetInnerText(board, id) { - if(phPostHidden(board, id)) { return "[+]"; } - else { return "[–]"; } -} -function phGetOpID(element) { - return Number(element.children("div.post.op").children("p.intro").children("a.post_no:eq(1)").text()); -} -function phGetOpBoard(element) { - return element.data("board"); -} -function phPostHandle(element) { - var id = phGetOpID(element); - var board = phGetOpBoard(element); - var preplies = element.children("div.post.reply"); - var pbody = element.children("div.post.op").children("div.body"); - var pimage = element.children("a:first").children("img"); - var pbutton = element.children("div.post.op").children("p.intro").children("a.posthider"); - var pomitted = element.children("div.post.op").children("span.omitted"); - if(phPostHidden(board, id)) { element.addClass("thread-hidden"); pomitted.hide(); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } - else { element.removeClass("thread-hidden"); pomitted.show(); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[–]"); } -} - -function phHandleThread(index, element) { - // Get thread ID. - var pin = $(this).children("div.post.op").children("p.intro"); - var tid = phGetOpID($(this)); - if(tid != NaN) { - $("[?]").insertAfter(pin.children('a:last')).click(function(e) { - var eO = $(e.target); - var par = eO.parent().parent().parent(); - phPostToggle(phGetOpBoard(par), phGetOpID(par)); - phPostHandle(par); - return false; - }); - phPostHandle($(this)); - } -} - -$(document).ready(function(){ - if (active_page != "thread") { - $('form[name="postcontrols"] > div[id^="thread"]').each(phHandleThread); - } -}); diff --git a/js/post-hider.js b/js/post-hider.js new file mode 120000 index 00000000..693c14d6 --- /dev/null +++ b/js/post-hider.js @@ -0,0 +1 @@ +hide-threads.js \ No newline at end of file From d111c6ab8c9ef12440c52974fc12ea61aa5c6ca1 Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 22 Jul 2013 10:26:14 -0400 Subject: [PATCH 007/289] hide-threads.js: a bigger minus character --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 135fbf51..5a9908f1 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -44,7 +44,7 @@ $(document).ready(function(){ $('div.post.op').each(function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); - $('[-] ') + $('[–] ') .insertBefore(thread_container.find('p.fileinfo:first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); From ed8fe6c27a39222604e65acdb09de27fd85fb0a2 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 22 Jul 2013 17:51:13 -0400 Subject: [PATCH 008/289] Option to check public ban message by default --- inc/config.php | 4 +++- templates/mod/ban_form.html | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/inc/config.php b/inc/config.php index c2a68e6c..721cff41 100644 --- a/inc/config.php +++ b/inc/config.php @@ -860,7 +860,7 @@ // Number of news entries to display per page $config['mod']['news_page'] = 40; - // Number of results to dispaly per page + // Number of results to display per page $config['mod']['search_page'] = 200; // How many entries to show per page in the moderator noticeboard @@ -868,6 +868,8 @@ // Number of entries to summarize and display on the dashboard $config['mod']['noticeboard_dashboard'] = 5; + // Check public ban message by default + $config['mod']['check_ban_message'] = false; // Default public ban message $config['mod']['default_ban_message'] = 'USER WAS BANNED FOR THIS POST'; // What to append to the post for public bans ("%s" is the message) diff --git a/templates/mod/ban_form.html b/templates/mod/ban_form.html index edc1ab3b..6c7560ad 100644 --- a/templates/mod/ban_form.html +++ b/templates/mod/ban_form.html @@ -41,11 +41,11 @@ - + ({% trans 'public; attached to post' %}) {% if config.quick_reply %} diff --git a/templates/post_thread.html b/templates/post_thread.html index d7a62d4f..b702712e 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -88,14 +88,26 @@ {% endif %}"> {{ post.id }} - {% if post.sticky %} - Sticky + {% if post.sticky %} + {% if config.font_awesome %} + + {% else %} + Sticky + {% endif %} {% endif %} - {% if post.locked %} - Locked + {% if post.locked %} + {% if config.font_awesome %} + + {% else %} + Locked + {% endif %} {% endif %} - {% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bumplock, board.uri))) %} - Bumplocked + {% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bumplock, board.uri))) %} + {% if config.font_awesome %} + + {% else %} + Bumplocked + {% endif %} {% endif %} {% if index %} [{% trans %}Reply{% endtrans %}] diff --git a/templates/thread.html b/templates/thread.html index aea8abb5..3d2b51de 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -7,7 +7,8 @@ {{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %} {% if config.meta_keywords %}{% endif %} - {% if config.default_stylesheet.1 != '' %}{% endif %} + {% if config.default_stylesheet.1 != '' %}{% endif %} + {% if config.font_awesome %}{% endif %} {% if not nojavascript %} {% if not config.additional_javascript_compile %} From 46edec0f2d8c31b55e36e160c7d9bac8bf4d3aa4 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 23 Jul 2013 09:46:29 -0400 Subject: [PATCH 022/289] Bug with last commit --- templates/index.html | 2 +- templates/thread.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/index.html b/templates/index.html index 9515d50a..430e2eab 100644 --- a/templates/index.html +++ b/templates/index.html @@ -8,7 +8,7 @@ {% if config.meta_keywords %}{% endif %} {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if config.font_awesome %}{% endif %} + {% if config.font_awesome %}{% endif %} {% if not nojavascript %} {% if config.quick_reply %} diff --git a/templates/thread.html b/templates/thread.html index 3d2b51de..53c784b4 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -8,7 +8,7 @@ {% if config.meta_keywords %}{% endif %} {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if config.font_awesome %}{% endif %} + {% if config.font_awesome %}{% endif %} {% if not nojavascript %} {% if not config.additional_javascript_compile %} From 4e609da2b75f5fe6d694617735cad77014a504f1 Mon Sep 17 00:00:00 2001 From: czaks Date: Tue, 23 Jul 2013 10:34:23 -0400 Subject: [PATCH 023/289] fix merge --- templates/post_thread.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/post_thread.html b/templates/post_thread.html index 6ec45482..cbd37229 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -113,7 +113,7 @@ Locked {% endif %} {% endif %} - {% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bump$ + {% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bumplock, board.uri))) %} {% if config.font_awesome %} {% else %} From 31f657e550ab8b1ea00953cc3a26f4661ee4458c Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 24 Jul 2013 11:15:55 -0400 Subject: [PATCH 024/289] Long overdue: Salted password hashes --- inc/mod/auth.php | 34 +++++++++++++++++++++------------- inc/mod/pages.php | 24 ++++++++++++++++++------ install.php | 21 ++++++++++++++++++++- install.sql | 7 ++++--- 4 files changed, 63 insertions(+), 23 deletions(-) diff --git a/inc/mod/auth.php b/inc/mod/auth.php index 173190ab..1bc27dff 100644 --- a/inc/mod/auth.php +++ b/inc/mod/auth.php @@ -29,6 +29,11 @@ function mkhash($username, $password, $salt = false) { return $hash; } +function generate_salt() { + mt_srand(microtime(true) * 100000 + memory_get_usage(true)); + return md5(uniqid(mt_rand(), true)); +} + function login($username, $password, $makehash=true) { global $mod; @@ -37,20 +42,23 @@ function login($username, $password, $makehash=true) { $password = sha1($password); } - $query = prepare("SELECT `id`,`type`,`boards` FROM `mods` WHERE `username` = :username AND `password` = :password LIMIT 1"); + $query = prepare("SELECT `id`, `type`, `boards`, `password`, `salt` FROM `mods` WHERE `username` = :username"); $query->bindValue(':username', $username); - $query->bindValue(':password', $password); $query->execute() or error(db_error($query)); - if ($user = $query->fetch()) { - return $mod = array( - 'id' => $user['id'], - 'type' => $user['type'], - 'username' => $username, - 'hash' => mkhash($username, $password), - 'boards' => explode(',', $user['boards']) - ); - } else return false; + if ($user = $query->fetch(PDO::FETCH_ASSOC)) { + if ($user['password'] === hash('sha256', $user['salt'] . $password)) { + return $mod = array( + 'id' => $user['id'], + 'type' => $user['type'], + 'username' => $username, + 'hash' => mkhash($username, $user['password']), + 'boards' => explode(',', $user['boards']) + ); + } + } + + return false; } function setCookies() { @@ -104,10 +112,10 @@ if (isset($_COOKIE[$config['cookies']['mod']])) { exit; } - $query = prepare("SELECT `id`, `type`, `boards`, `password` FROM `mods` WHERE `username` = :username LIMIT 1"); + $query = prepare("SELECT `id`, `type`, `boards`, `password` FROM `mods` WHERE `username` = :username"); $query->bindValue(':username', $cookie[0]); $query->execute() or error(db_error($query)); - $user = $query->fetch(); + $user = $query->fetch(PDO::FETCH_ASSOC); // validate password hash if ($cookie[1] !== mkhash($cookie[0], $user['password'], $cookie[2])) { diff --git a/inc/mod/pages.php b/inc/mod/pages.php index cddecad0..1ed9a94b 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1407,9 +1407,13 @@ function mod_user($uid) { } if ($_POST['password'] != '') { - $query = prepare('UPDATE `mods` SET `password` = SHA1(:password) WHERE `id` = :id'); + $salt = generate_salt(); + $password = hash('sha256', $salt . sha1($_POST['password'])); + + $query = prepare('UPDATE `mods` SET `password` = :password, `salt` = :salt WHERE `id` = :id'); $query->bindValue(':id', $uid); - $query->bindValue(':password', $_POST['password']); + $query->bindValue(':password', $password); + $query->bindValue(':salt', $salt); $query->execute() or error(db_error($query)); modLog('Changed password for ' . utf8tohtml($_POST['username']) . ' (#' . $user['id'] . ')'); @@ -1430,9 +1434,13 @@ function mod_user($uid) { if (hasPermission($config['mod']['change_password']) && $uid == $mod['id'] && isset($_POST['password'])) { if ($_POST['password'] != '') { - $query = prepare('UPDATE `mods` SET `password` = SHA1(:password) WHERE `id` = :id'); + $salt = generate_salt(); + $password = hash('sha256', $salt . sha1($_POST['password'])); + + $query = prepare('UPDATE `mods` SET `password` = :password, `salt` = :salt WHERE `id` = :id'); $query->bindValue(':id', $uid); - $query->bindValue(':password', $_POST['password']); + $query->bindValue(':password', $password); + $query->bindValue(':salt', $salt); $query->execute() or error(db_error($query)); modLog('Changed own password'); @@ -1494,9 +1502,13 @@ function mod_user_new() { if ($_POST['type'] !== JANITOR && $_POST['type'] !== MOD && $_POST['type'] !== ADMIN) error(sprintf($config['error']['invalidfield'], 'type')); - $query = prepare('INSERT INTO `mods` VALUES (NULL, :username, SHA1(:password), :type, :boards)'); + $salt = generate_salt(); + $password = hash('sha256', $salt . sha1($_POST['password'])); + + $query = prepare('INSERT INTO `mods` VALUES (NULL, :username, :password, :salt, :type, :boards)'); $query->bindValue(':username', $_POST['username']); - $query->bindValue(':password', $_POST['password']); + $query->bindValue(':password', $password); + $query->bindValue(':salt', $salt); $query->bindValue(':type', $_POST['type']); $query->bindValue(':boards', implode(',', $boards)); $query->execute() or error(db_error($query)); diff --git a/install.php b/install.php index 71d1c910..3c65a4b8 100644 --- a/install.php +++ b/install.php @@ -1,7 +1,7 @@ fetch(PDO::FETCH_ASSOC)) { + if (strlen($user['password']) == 40) { + mt_srand(microtime(true) * 100000 + memory_get_usage(true)); + $salt = md5(uniqid(mt_rand(), true)); + + $user['salt'] = $salt; + $user['password'] = hash('sha256', $user['salt'] . $user['password']); + + $_query = prepare("UPDATE `mods` SET `password` = :password, `salt` = :salt WHERE `id` = :id"); + $_query->bindValue(':username', $user['id']); + $_query->bindValue(':password', $user['password']); + $_query->bindValue(':salt', $user['salt']); + $_query->execute() or error(db_error($_query)); + } + } case false: // Update version number file_write($config['has_installed'], VERSION); diff --git a/install.sql b/install.sql index 04896681..d32c3e3e 100644 --- a/install.sql +++ b/install.sql @@ -129,9 +129,10 @@ CREATE TABLE IF NOT EXISTS `modlogs` ( -- CREATE TABLE IF NOT EXISTS `mods` ( - `id` smallint(6) UNSIGNED NOT NULL AUTO_INCREMENT, + `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL, - `password` char(40) NOT NULL COMMENT 'SHA1', + `password` char(64) NOT NULL COMMENT 'SHA256', + `salt` char(32) NOT NULL, `type` smallint(1) NOT NULL COMMENT '0: janitor, 1: mod, 2: admin', `boards` text NOT NULL, PRIMARY KEY (`id`), @@ -143,7 +144,7 @@ CREATE TABLE IF NOT EXISTS `mods` ( -- INSERT INTO `mods` (`id`, `username`, `password`, `type`, `boards`) VALUES -(1, 'admin', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 2, '*'); +(1, 'admin', 'cedad442efeef7112fed0f50b011b2b9bf83f6898082f995f69dd7865ca19fb7', '4a44c6c55df862ae901b413feecb0d49', 2, '*'); -- -------------------------------------------------------- From 6c2c18514ee49d4d9e20c8d8ed7f3e0fa3c61307 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 24 Jul 2013 11:17:09 -0400 Subject: [PATCH 025/289] Small mistake with last commit --- install.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.php b/install.php index 3c65a4b8..08e8046a 100644 --- a/install.php +++ b/install.php @@ -242,7 +242,7 @@ if (file_exists($config['has_installed'])) { $user['password'] = hash('sha256', $user['salt'] . $user['password']); $_query = prepare("UPDATE `mods` SET `password` = :password, `salt` = :salt WHERE `id` = :id"); - $_query->bindValue(':username', $user['id']); + $_query->bindValue(':id', $user['id']); $_query->bindValue(':password', $user['password']); $_query->bindValue(':salt', $user['salt']); $_query->execute() or error(db_error($_query)); From 33a1c00bd51618a4b54fd6fdab721aaaa03bfd33 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 24 Jul 2013 11:30:01 -0400 Subject: [PATCH 026/289] %length% in public ban messages --- inc/config.php | 4 +++- inc/mod/pages.php | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index b32f4266..98e127b3 100644 --- a/inc/config.php +++ b/inc/config.php @@ -879,8 +879,10 @@ // Check public ban message by default $config['mod']['check_ban_message'] = false; - // Default public ban message + // Default public ban message. + // In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). $config['mod']['default_ban_message'] = 'USER WAS BANNED FOR THIS POST'; + // $config['mod']['default_ban_message'] = 'USER WAS BANNED %LENGTH% FOR THIS POST'; // Include length in ban message // What to append to the post for public bans ("%s" is the message) $config['mod']['ban_message'] = '(%s)'; diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 1ed9a94b..01794d2e 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1152,6 +1152,9 @@ function mod_ban_post($board, $delete, $post, $token = false) { if (isset($_POST['public_message'], $_POST['message'])) { // public ban message + $length_english = parse_time($_POST['length']) ? 'for ' . until(parse_time($_POST['length'])) : 'permanently'; + $_POST['message'] = str_replace('%length%', $length_english, $_POST['message']); + $_POST['message'] = str_replace('%LENGTH%', strtoupper($length_english), $_POST['message']); $query = prepare(sprintf('UPDATE `posts_%s` SET `body` = CONCAT(`body`, :body) WHERE `id` = :id', $board)); $query->bindValue(':id', $post); $query->bindValue(':body', sprintf($config['mod']['ban_message'], utf8tohtml($_POST['message']))); From 37d5846e4ecf61a534ba19ecbd3f66388233e5d4 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Fri, 26 Jul 2013 11:01:13 -0400 Subject: [PATCH 027/289] Fix markup overlapping. Issue #124 --- inc/functions.php | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index af810f31..b5660664 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1437,13 +1437,15 @@ function markup(&$body, $track_cites = false) { $tracked_cites = array(); // Cites - if (isset($board) && preg_match_all('/(^|\s)>>(\d+?)([\s,.)?]|$)/m', $body, $cites)) { + if (isset($board) && preg_match_all('/(^|\s)>>(\d+?)([\s,.)?]|$)/m', $body, $cites, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { if (count($cites[0]) > $config['max_cites']) { error($config['error']['toomanycites']); } - for ($index=0;$indexbindValue(':id', $cite); $query->execute() or error(db_error($query)); @@ -1453,23 +1455,26 @@ function markup(&$body, $track_cites = false) { $config['root'] . $board['dir'] . $config['dir']['res'] . ($post['thread']?$post['thread']:$post['id']) . '.html#' . $cite . '">' . '>>' . $cite . ''; - $body = str_replace($cites[0][$index], $cites[1][$index] . $replacement . $cites[3][$index], $body); + $body = substr_replace($body, $matches[1][0] . $replacement . $matches[3][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); + $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[3][0]) - mb_strlen($matches[0][0]); if ($track_cites && $config['track_cites']) $tracked_cites[] = array($board['uri'], $post['id']); } } } - + // Cross-board linking - if (preg_match_all('/(^|\s)>>>\/(\w+?)\/(\d+)?([\s,.)?]|$)/m', $body, $cites)) { + if (preg_match_all('/(^|\s)>>>\/(\w+?)\/(\d+)?([\s,.)?]|$)/m', $body, $cites, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { if (count($cites[0]) > $config['max_cites']) { error($config['error']['toomanycross']); } - for ($index=0;$index' . '>>>/' . $_board . '/' . $cite . ''; - $body = str_replace($cites[0][$index], $cites[1][$index] . $replacement . $cites[4][$index], $body); + $body = substr_replace($body, $matches[1][0] . $replacement . $matches[4][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); + $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[4][0]) - mb_strlen($matches[0][0]); if ($track_cites && $config['track_cites']) $tracked_cites[] = array($board['uri'], $post['id']); @@ -1496,7 +1502,8 @@ function markup(&$body, $track_cites = false) { $config['root'] . $board['dir'] . $config['file_index'] . '">' . '>>>/' . $_board . '/' . ''; - $body = str_replace($cites[0][$index], $cites[1][$index] . $replacement . $cites[4][$index], $body); + $body = substr_replace($body, $matches[1][0] . $replacement . $matches[4][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); + $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[4][0]) - mb_strlen($matches[0][0]); } } From c217069f2bc7f9b38a4ddbe3d1043fe3b06ecf17 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 14:27:38 -0400 Subject: [PATCH 028/289] hide-threads.js: show post hider even in posts without an image --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 75339455..cc06ad0b 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -46,7 +46,7 @@ $(document).ready(function(){ } $('[–] ') - .insertBefore(thread_container.find('p.fileinfo:first')) + .insertBefore(thread_container.find(':first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); From 95c50ae778d4e47b2076a6af0df61a05180c3dd1 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 14:57:08 -0400 Subject: [PATCH 029/289] hide-threads.js: fix previous commit --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index cc06ad0b..00ddbc48 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -68,7 +68,7 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find('p.fileinfo:first')); + hidden_div.insertAfter(thread_container.find(':first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); From 1a43b8731525e7268b1c4e167b8116fdf97b28c4 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 15:31:20 -0400 Subject: [PATCH 030/289] hide-threads.js: further fixes and customisations, mainly due to unexpanding previously not working here, but working on another boards (4chon, etc.) --- js/hide-threads.js | 7 ++++--- stylesheets/style.css | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 00ddbc48..abaa700f 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -55,11 +55,12 @@ $(document).ready(function(){ var hidden_div = thread_container.find('div.post.op > p.intro').clone(); hidden_div.addClass('thread-hidden'); - hidden_div.find('a[href],input').remove(); + hidden_div.find('a[href]:not([href$=".html"]),input').remove(); + hidden_div.html(hidden_div.html().replace(' [] ', ' ')); hidden_div.html(hidden_div.html().replace(' [] ', ' ')); - $('[+] ') - .insertAfter(thread_container.find('a.hide-thread-link')) + $('[+] ') + .insertBefore(hidden_div.find(':first')) .click(function() { delete hidden_data[board][id]; store_data(); diff --git a/stylesheets/style.css b/stylesheets/style.css index 0339864b..393f9faa 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -458,6 +458,7 @@ table.mod.config-editor input[type="text"] { background-color: #fff; opacity: 0.8; } -.thread-hidden { - opacity: 0.5; +p.intro.thread-hidden { + margin: 0px; + padding: 0px; } From 595a165fa317c5fa967345dd6fdb10bd2a585a2a Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Fri, 26 Jul 2013 18:22:48 -0400 Subject: [PATCH 031/289] install.sql mistake --- install.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sql b/install.sql index d32c3e3e..ee2ca8a9 100644 --- a/install.sql +++ b/install.sql @@ -143,7 +143,7 @@ CREATE TABLE IF NOT EXISTS `mods` ( -- Dumping data for table `mods` -- -INSERT INTO `mods` (`id`, `username`, `password`, `type`, `boards`) VALUES +INSERT INTO `mods` (`id`, `username`, `password`, `salt`, `type`, `boards`) VALUES (1, 'admin', 'cedad442efeef7112fed0f50b011b2b9bf83f6898082f995f69dd7865ca19fb7', '4a44c6c55df862ae901b413feecb0d49', 2, '*'); -- -------------------------------------------------------- From baa6793516242890222d3b4c94cac3f31649bd3b Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Fri, 26 Jul 2013 19:39:11 -0400 Subject: [PATCH 032/289] toggle-images.js (this was written last year, but I never pushed it to git) --- js/toggle-images.js | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 js/toggle-images.js diff --git a/js/toggle-images.js b/js/toggle-images.js new file mode 100644 index 00000000..006b3622 --- /dev/null +++ b/js/toggle-images.js @@ -0,0 +1,50 @@ +/* + * toggle-images.js + * + * Released under the MIT license + * Copyright (c) 2012 Michael Save + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/toggle-images.js'; + * + */ + +$(document).ready(function(){ + var hide_images = localStorage['hideimages'] ? true : false; + + $('').appendTo($('head')); + + var hideImage = function() { + $(this) + .attr('data-orig', this.src) + .attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') + .addClass('hidden'); + }; + + var restoreImage = function() { + $(this) + .attr('src', $(this).attr('data-orig')) + .removeClass('hidden'); + }; + + $('hr:first').before(''); + $('div#toggle-images a') + .text((hide_images ? 'Show' : 'Hide') + ' images') + .click(function() { + hide_images = !hide_images; + if (hide_images) { + $('div > a > img').each(hideImage); + localStorage.hideimages = true; + } else { + $('div > a > img').each(restoreImage); + delete localStorage.hideimages; + } + + $(this).text((hide_images ? 'Show' : 'Hide') + ' images') + }); + + if (hide_images) { + $('div > a > img').each(hideImage); + } +}); From a11c8981fe87f58d7205fc478c8ba68dca9aa3c2 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Fri, 26 Jul 2013 19:55:28 -0400 Subject: [PATCH 033/289] js/hide-images.js: Hide individual images --- js/hide-images.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 js/hide-images.js diff --git a/js/hide-images.js b/js/hide-images.js new file mode 100644 index 00000000..75dc07c2 --- /dev/null +++ b/js/hide-images.js @@ -0,0 +1,81 @@ +/* + * hide-images.js + * https://github.com/savetheinternet/Tinyboard/blob/master/js/hide-images.js + * + * Hide individual images. + * + * Released under the MIT license + * Copyright (c) 2013 Michael Save + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/hide-images.js'; + * + */ + +$(document).ready(function(){ + $('').appendTo($('head')); + + var board = $('form input[name="board"]').val().toString(); + + if (!localStorage.hiddenimages) + localStorage.hiddenimages = '{}'; + + // Load data from HTML5 localStorage + var hidden_data = JSON.parse(localStorage.hiddenimages); + + var store_data = function() { + localStorage.hiddenimages = JSON.stringify(hidden_data); + }; + + // Delete old hidden images (30+ days old) + for (var key in hidden_data) { + for (var id in hidden_data[key]) { + if (hidden_data[key][id] < Math.round(Date.now() / 1000) - 60 * 60 * 24 * 30) { + delete hidden_data[key][id]; + store_data(); + } + } + } + + if (!hidden_data[board]) { + hidden_data[board] = {}; // id : timestamp + } + + $('div.post > a > img, div > a > img').each(function() { + var img = this; + var fileinfo = $(this).parent().prev(); + var id = $(this).parent().parent().find('>p.intro>a.post_no:eq(1),>div.post.op>p.intro>a.post_no:eq(1)').text(); + + var replacement = $('File (hide): '); + + replacement.find('a').click(function() { + hidden_data[board][id] = Math.round(Date.now() / 1000); + store_data(); + + var show_link = $('show').click(function() { + delete hidden_data[board][id]; + store_data(); + + $(img) + .removeClass('hidden') + .attr('src', $(img).data('orig')); + $(this).prev().show(); + $(this).remove(); + }); + + $(this).hide().after(show_link); + + $(img) + .data('orig', img.src) + .attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') + .addClass('hidden'); + }); + + $(this).parent().prev().contents().first().replaceWith(replacement); + + if (hidden_data[board][id]) + $(this).parent().prev().find('.hide-image-link').click(); + + }); +}); From a28b5fc3a1975af863d348d3851b90b3c398baaf Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 22:34:06 -0400 Subject: [PATCH 034/289] expand.js: fix a weird bug - thread expand not always worked due to post being loaded in DOM, but not put in a right place in a thread, or so, so check if it has been loaded in a thread instead of if it exists in DOM --- js/expand.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/expand.js b/js/expand.js index 0e3537a8..1a719fad 100644 --- a/js/expand.js +++ b/js/expand.js @@ -27,7 +27,7 @@ $(document).ready(function(){ success: function(data) { var last_expanded = false; $(data).find('div.post.reply').each(function() { - if($('#' + $(this).attr('id')).length == 0) { + if(thread.find('#' + $(this).attr('id')).length == 0) { if(last_expanded) { $(this).addClass('expanded').insertAfter(last_expanded).before('
'); } else { From e5bdf63692487e07833bbc4197ae7cd98e5af7e4 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 22:39:00 -0400 Subject: [PATCH 035/289] expand.js: fix post order when new posts appear between loading index and expanding --- js/expand.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/expand.js b/js/expand.js index 1a719fad..a737ee7f 100644 --- a/js/expand.js +++ b/js/expand.js @@ -27,7 +27,8 @@ $(document).ready(function(){ success: function(data) { var last_expanded = false; $(data).find('div.post.reply').each(function() { - if(thread.find('#' + $(this).attr('id')).length == 0) { + var post_in_doc = thread.find('#' + $(this).attr('id')); + if(post_in_doc.length == 0) { if(last_expanded) { $(this).addClass('expanded').insertAfter(last_expanded).before('
'); } else { @@ -37,6 +38,9 @@ $(document).ready(function(){ $(document).trigger('new_post', this); } + else { + last_expanded = post_in_doc; + } }); $('' + _('Hide expanded replies') + '.') .insertAfter(thread.find('span.omitted').css('display', 'none')) From 35f8730f40d745b93cefbca92d5e83a18599f70c Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 00:13:54 -0400 Subject: [PATCH 036/289] ukko: fix top boardlist losing its fixed status --- templates/themes/ukko/ukko.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/themes/ukko/ukko.js b/templates/themes/ukko/ukko.js index baf0f78d..dc8ed382 100644 --- a/templates/themes/ukko/ukko.js +++ b/templates/themes/ukko/ukko.js @@ -18,7 +18,7 @@ $(document).ready(function() { cache.push(page); $(data).find('div[id*="thread_"]').each(function() { - $('body').prepend($(this).css('display', 'none').attr('data-board', overflow[0].board)); + $('form[name="postcontrols"]').prepend($(this).css('display', 'none').attr('data-board', overflow[0].board)); }); thread = $('div#thread_' + overflow[0].id + '[data-board="' + overflow[0].board + '"]'); @@ -34,4 +34,4 @@ $(document).ready(function() { } }); -}); \ No newline at end of file +}); From c0a45ba1237fd54c0d5050d3a70abdea022ff6c3 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sat, 27 Jul 2013 00:14:43 -0400 Subject: [PATCH 037/289] Allow hide-images.js, toggle-images.js and inline-expanding.js to work together --- js/hide-images.js | 5 ++++- js/inline-expanding.js | 33 ++++++++++++++++++++------------- js/toggle-images.js | 29 ++++++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 15 deletions(-) diff --git a/js/hide-images.js b/js/hide-images.js index 75dc07c2..7344cd8f 100644 --- a/js/hide-images.js +++ b/js/hide-images.js @@ -53,7 +53,7 @@ $(document).ready(function(){ hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); - var show_link = $('show').click(function() { + var show_link = $('show').click(function() { delete hidden_data[board][id]; store_data(); @@ -66,6 +66,9 @@ $(document).ready(function(){ $(this).hide().after(show_link); + if ($(img).parent()[0].dataset.expanded == 'true') { + $(img).parent().click(); + } $(img) .data('orig', img.src) .attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') diff --git a/js/inline-expanding.js b/js/inline-expanding.js index f6714d7f..2e924f05 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -3,7 +3,7 @@ * https://github.com/savetheinternet/Tinyboard/blob/master/js/inline-expanding.js * * Released under the MIT license - * Copyright (c) 2012 Michael Save + * Copyright (c) 2012-2013 Michael Save * * Usage: * $config['additional_javascript'][] = 'js/inline-expanding.js'; @@ -13,30 +13,37 @@ onready(function(){ var link = document.getElementsByTagName('a'); - for(var i = 0; i < link.length; i++) { - if(typeof link[i] == "object" && link[i].childNodes[0].src && link[i].className != 'file') { + for (var i = 0; i < link.length; i++) { + if (typeof link[i] == "object" && link[i].childNodes && link[i].childNodes[0].src && link[i].className != 'file') { link[i].childNodes[0].style.maxWidth = '95%'; link[i].childNodes[0].style.maxHeight = '95%'; link[i].onclick = function(e) { - if(e.which == 2) { + if (this.childNodes[0].className == 'hidden') + return false; + if (e.which == 2) return true; - } - if(!this.tag) { - this.tag = this.childNodes[0].src; + if (!this.dataset.src) { + this.dataset.expanded = 'true'; + this.dataset.src= this.childNodes[0].src; + this.dataset.width = this.childNodes[0].style.width; + this.dataset.height = this.childNodes[0].style.height; this.childNodes[0].src = this.href; this.childNodes[0].style.width = 'auto'; this.childNodes[0].style.height = 'auto'; this.childNodes[0].style.opacity = '0.4'; this.childNodes[0].style.filter = 'alpha(opacity=40)'; this.childNodes[0].onload = function() { - this.style.opacity = '1'; - this.style.filter = ''; + this.style.opacity = ''; + delete this.style.filter; } } else { - this.childNodes[0].src = this.tag; - this.childNodes[0].style.width = 'auto'; - this.childNodes[0].style.height = 'auto'; - this.tag = ''; + this.childNodes[0].src = this.dataset.src; + this.childNodes[0].style.width = this.dataset.width; + this.childNodes[0].style.height = this.dataset.height; + delete this.dataset.expanded; + delete this.dataset.src; + delete this.childNodes[0].style.opacity; + delete this.childNodes[0].style.filter; } return false; } diff --git a/js/toggle-images.js b/js/toggle-images.js index 006b3622..74f2fab4 100644 --- a/js/toggle-images.js +++ b/js/toggle-images.js @@ -16,6 +16,9 @@ $(document).ready(function(){ $('').appendTo($('head')); var hideImage = function() { + if ($(this).parent()[0].dataset.expanded == 'true') { + $(this).parent().click(); + } $(this) .attr('data-orig', this.src) .attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') @@ -28,6 +31,27 @@ $(document).ready(function(){ .removeClass('hidden'); }; + // Fix for hide-images.js + var show_hide_hide_images_buttons = function() { + if (hide_images) { + $('a.hide-image-link').each(function() { + if ($(this).next().hasClass('show-image-link')) { + $(this).next().hide(); + } + $(this).hide().after('hidden'); + }); + } else { + $('span.toggle-images-placeholder').remove(); + $('a.hide-image-link').each(function() { + if ($(this).next().hasClass('show-image-link')) { + $(this).next().show(); + } else { + $(this).show(); + } + }); + } + }; + $('hr:first').before(''); $('div#toggle-images a') .text((hide_images ? 'Show' : 'Hide') + ' images') @@ -40,11 +64,14 @@ $(document).ready(function(){ $('div > a > img').each(restoreImage); delete localStorage.hideimages; } - + + show_hide_hide_images_buttons(); + $(this).text((hide_images ? 'Show' : 'Hide') + ' images') }); if (hide_images) { $('div > a > img').each(hideImage); + show_hide_hide_images_buttons(); } }); From 6bf217941a3342cdcf7768ab5269f7d35b050984 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 22:34:06 -0400 Subject: [PATCH 038/289] expand.js: fix a weird bug - thread expand not always worked due to post being loaded in DOM, but not put in a right place in a thread, or so, so check if it has been loaded in a thread instead of if it exists in DOM --- js/expand.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/expand.js b/js/expand.js index 05aece95..d0b4583c 100644 --- a/js/expand.js +++ b/js/expand.js @@ -27,7 +27,7 @@ $(document).ready(function(){ success: function(data) { var last_expanded = false; $(data).find('div.post.reply').each(function() { - if($('#' + $(this).attr('id')).length == 0) { + if(thread.find('#' + $(this).attr('id')).length == 0) { if(last_expanded) { $(this).addClass('expanded').insertAfter(last_expanded).before('
'); } else { From d82cd9b7bd03708f4940b4508acd0394713b8869 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 22:39:00 -0400 Subject: [PATCH 039/289] expand.js: fix post order when new posts appear between loading index and expanding --- js/expand.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/expand.js b/js/expand.js index d0b4583c..16a0efb2 100644 --- a/js/expand.js +++ b/js/expand.js @@ -27,7 +27,8 @@ $(document).ready(function(){ success: function(data) { var last_expanded = false; $(data).find('div.post.reply').each(function() { - if(thread.find('#' + $(this).attr('id')).length == 0) { + var post_in_doc = thread.find('#' + $(this).attr('id')); + if(post_in_doc.length == 0) { if(last_expanded) { $(this).addClass('expanded').insertAfter(last_expanded).before('
'); } else { @@ -36,6 +37,9 @@ $(document).ready(function(){ last_expanded = $(this); } + else { + last_expanded = post_in_doc; + } }); $('Hide expanded replies.') .insertAfter(thread.find('span.omitted').css('display', 'none')) From c51dc146e2248a09d97941a73ac5ef65ee4e1085 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 14:27:38 -0400 Subject: [PATCH 040/289] hide-threads.js: show post hider even in posts without an image --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 734dfe78..03c33a3f 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -45,7 +45,7 @@ $(document).ready(function(){ var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); $('[–] ') - .insertBefore(thread_container.find('p.fileinfo:first')) + .insertBefore(thread_container.find(':first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); From 4b50f1475e5cdf6afa2db0aef0345ad00a9d6a7f Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 14:57:08 -0400 Subject: [PATCH 041/289] hide-threads.js: fix previous commit --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 03c33a3f..14893e05 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -67,7 +67,7 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find('p.fileinfo:first')); + hidden_div.insertAfter(thread_container.find(':first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); From 1c33285c81efe174f09e99b15be81f527c0f8ae0 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 15:31:20 -0400 Subject: [PATCH 042/289] hide-threads.js: further fixes and customisations, mainly due to unexpanding previously not working here, but working on another boards (4chon, etc.) Conflicts: stylesheets/style.css --- js/hide-threads.js | 7 ++++--- stylesheets/style.css | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/js/hide-threads.js b/js/hide-threads.js index 14893e05..faa1289c 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -54,11 +54,12 @@ $(document).ready(function(){ var hidden_div = thread_container.find('div.post.op > p.intro').clone(); hidden_div.addClass('thread-hidden'); - hidden_div.find('a[href],input').remove(); + hidden_div.find('a[href]:not([href$=".html"]),input').remove(); + hidden_div.html(hidden_div.html().replace(' [] ', ' ')); hidden_div.html(hidden_div.html().replace(' [] ', ' ')); - $('[+] ') - .insertAfter(thread_container.find('a.hide-thread-link')) + $('[+] ') + .insertBefore(hidden_div.find(':first')) .click(function() { delete hidden_data[board][id]; store_data(); diff --git a/stylesheets/style.css b/stylesheets/style.css index 12cc54d5..c0430b7c 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -404,3 +404,8 @@ table.mod.config-editor td { table.mod.config-editor input[type="text"] { width: 98%; } +p.intro.thread-hidden { + margin: 0px; + padding: 0px; +} + From e3cb427feefbbb4fd6a5e76ce77ef80a240941f1 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 00:57:12 -0400 Subject: [PATCH 043/289] ukko: fix javascript interoperation --- js/expand.js | 10 +++++++++- js/hide-threads.js | 12 +++++++++--- js/show-backlinks.js | 7 ++++++- templates/themes/ukko/ukko.js | 3 ++- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/js/expand.js b/js/expand.js index a737ee7f..06151627 100644 --- a/js/expand.js +++ b/js/expand.js @@ -15,7 +15,7 @@ $(document).ready(function(){ if($('div.banner').length != 0) return; // not index - $('div.post.op span.omitted').each(function() { + var do_expand = function() { $(this) .html($(this).text().replace(_("Click reply to view."), ''+_("Click to expand")+'.')) .find('a').click(function() { @@ -52,5 +52,13 @@ $(document).ready(function(){ } }); }); + } + + $('div.post.op span.omitted').each(do_expand); + + $(document).bind("new_post", function(e, post) { + if (!$(post).hasClass("reply")) { + $(post).find('div.post.op span.omitted').each(do_expand); + } }); }); diff --git a/js/hide-threads.js b/js/hide-threads.js index abaa700f..44bd829b 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -35,7 +35,7 @@ $(document).ready(function(){ } } - $('div.post.op').each(function() { + var do_hide_threads = function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); @@ -46,7 +46,7 @@ $(document).ready(function(){ } $('[–] ') - .insertBefore(thread_container.find(':first')) + .insertBefore(thread_container.find(':not(h2,h2 *):first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); @@ -69,9 +69,15 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find(':first')); + hidden_div.insertAfter(thread_container.find(':not(h2,h2 *):first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); + } + + $('div.post.op').each(do_hide_threads); + + $(document).bind('new_post', function(e, post) { + do_hide_threads.call($(post).find('div.post.op')[0]); }); }); diff --git a/js/show-backlinks.js b/js/show-backlinks.js index 4ead494b..f23cfc38 100644 --- a/js/show-backlinks.js +++ b/js/show-backlinks.js @@ -48,7 +48,12 @@ onready(function(){ $('div.post.reply').each(showBackLinks); $(document).bind('new_post', function(e, post) { - showBackLinks.call(post); + if ($(post).hasClass("reply")) { + showBackLinks.call(post); + } + else { + $(post).find('div.post.reply').each(showBackLinks); + } }); }); diff --git a/templates/themes/ukko/ukko.js b/templates/themes/ukko/ukko.js index dc8ed382..6566335e 100644 --- a/templates/themes/ukko/ukko.js +++ b/templates/themes/ukko/ukko.js @@ -10,6 +10,7 @@ $(document).ready(function() { if(thread.length > 0) { thread.prepend('

/' + overflow[0].board + '/

'); $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).css('display', 'block')); + $(document).trigger('new_post', thread); overflow.shift(); } } else { @@ -25,6 +26,7 @@ $(document).ready(function() { if(thread.length > 0) { thread.prepend('

/' + overflow[0].board + '/

'); $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).css('display', 'block')); + $(document).trigger('new_post', thread); overflow.shift(); } @@ -33,5 +35,4 @@ $(document).ready(function() { } } }); - }); From 880cf25366797affa6279508f3ba8779e3b6da46 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:08:26 -0400 Subject: [PATCH 044/289] fix merge --- js/expand.js | 3 --- js/inline-expanding.js | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/js/expand.js b/js/expand.js index 6b8657bd..06151627 100644 --- a/js/expand.js +++ b/js/expand.js @@ -41,9 +41,6 @@ $(document).ready(function(){ else { last_expanded = post_in_doc; } - else { - last_expanded = post_in_doc; - } }); $('' + _('Hide expanded replies') + '.') .insertAfter(thread.find('span.omitted').css('display', 'none')) diff --git a/js/inline-expanding.js b/js/inline-expanding.js index fb78c222..1849b078 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -16,9 +16,8 @@ onready(function(){ var link = this.getElementsByTagName('a'); for (var i = 0; i < link.length; i++) { - if (typeof link[i] == "object" && link[i].childNodes && link[i].childNodes[0].src && link[i].className != 'file') { + if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') { link[i].childNodes[0].style.maxWidth = '95%'; - link[i].childNodes[0].style.maxHeight = '95%'; link[i].onclick = function(e) { if (this.childNodes[0].className == 'hidden') return false; From d09ef2215433892dbd6e79fe41084dedd0e47931 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:12:22 -0400 Subject: [PATCH 045/289] hide-images.js: javascript i18n --- js/hide-images.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/hide-images.js b/js/hide-images.js index 7344cd8f..365ebac6 100644 --- a/js/hide-images.js +++ b/js/hide-images.js @@ -47,13 +47,13 @@ $(document).ready(function(){ var fileinfo = $(this).parent().prev(); var id = $(this).parent().parent().find('>p.intro>a.post_no:eq(1),>div.post.op>p.intro>a.post_no:eq(1)').text(); - var replacement = $('File (hide): '); + var replacement = $(''+_('File')+' ('+_('hide')+'): '); replacement.find('a').click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); - var show_link = $('show').click(function() { + var show_link = $(''+_('show')+'').click(function() { delete hidden_data[board][id]; store_data(); From 3e5234e54e3052cbdc6e17691182766e17824fe7 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:16:12 -0400 Subject: [PATCH 046/289] toggle-images.js: javascript i18n --- js/toggle-images.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/toggle-images.js b/js/toggle-images.js index 74f2fab4..de1d47b3 100644 --- a/js/toggle-images.js +++ b/js/toggle-images.js @@ -38,7 +38,7 @@ $(document).ready(function(){ if ($(this).next().hasClass('show-image-link')) { $(this).next().hide(); } - $(this).hide().after('hidden'); + $(this).hide().after(''+_('hidden')+''); }); } else { $('span.toggle-images-placeholder').remove(); @@ -54,7 +54,7 @@ $(document).ready(function(){ $('hr:first').before(''); $('div#toggle-images a') - .text((hide_images ? 'Show' : 'Hide') + ' images') + .text(hide_images ? _('Show images') : _('Hide images')) .click(function() { hide_images = !hide_images; if (hide_images) { @@ -67,7 +67,7 @@ $(document).ready(function(){ show_hide_hide_images_buttons(); - $(this).text((hide_images ? 'Show' : 'Hide') + ' images') + $(this).text(hide_images ? _('Show images') : _('Hide images')) }); if (hide_images) { From 1157864612957cbb23a19655315abab9b197e203 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:19:30 -0400 Subject: [PATCH 047/289] banned.php: remove polish strings; html5; needs further work --- banned.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/banned.php b/banned.php index 5ab85312..57e4a9bc 100644 --- a/banned.php +++ b/banned.php @@ -1,7 +1,7 @@ Banned?"; - print "

Nie jestes zbanowany.

"; + print ""._("Banned?").""; + print "

"._("You are not banned.")."

"; print ""; ?> From ae99c6dd0d8e2b523adfa279e8590c34f93eea13 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:21:30 -0400 Subject: [PATCH 048/289] i18n one more string in inc/functions.php --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index cd5cb75b..371a01f1 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -591,7 +591,7 @@ function displayBan($ban) { // Show banned page and exit die( Element('page.html', array( - 'title' => 'Banned!', + 'title' => _('Banned!'), 'config' => $config, 'body' => Element('banned.html', array( 'config' => $config, From 3f2ea6b936d5cb2153f50e51c9a15cf883f6529a Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:33:21 -0400 Subject: [PATCH 049/289] i18n some strings in 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 adfaa5e8..f046392b 100644 --- a/inc/config.php +++ b/inc/config.php @@ -327,7 +327,7 @@ $config['robot_mute_hour'] = 336; // 2 weeks // If you want to alter the algorithm a bit. Default value is 2. n^x $config['robot_mute_multiplier'] = 2; - $config['robot_mute_descritpion'] = 'You have been muted for unoriginal content.'; + $config['robot_mute_descritpion'] = _('You have been muted for unoriginal content.'); // Automatically convert things like "..." to Unicode characters ("…") $config['auto_unicode'] = true; @@ -908,7 +908,7 @@ $config['mod']['check_ban_message'] = false; // Default public ban message. // In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). - $config['mod']['default_ban_message'] = 'USER WAS BANNED FOR THIS POST'; + $config['mod']['default_ban_message'] = _('USER WAS BANNED FOR THIS POST'); // $config['mod']['default_ban_message'] = 'USER WAS BANNED %LENGTH% FOR THIS POST'; // Include length in ban message // What to append to the post for public bans ("%s" is the message) $config['mod']['ban_message'] = '(%s)'; From e2b1034f091313e89143d40503d51d67e00f2f98 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:38:03 -0400 Subject: [PATCH 050/289] categories theme: fix title displaying twice, put boardlist there instead --- templates/themes/categories/news.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html index 9c7d8340..93eb5b72 100644 --- a/templates/themes/categories/news.html +++ b/templates/themes/categories/news.html @@ -7,7 +7,7 @@ -

{{ settings.title }}

+ {{ boardlist.top }}

{{ settings.title }}

{{ settings.subtitle }}
From b31487b53d4ec715616d40a3aadf6f3fc345d697 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:43:09 -0400 Subject: [PATCH 051/289] categories theme: i18n some strings --- templates/themes/categories/news.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html index 93eb5b72..b3bea2b1 100644 --- a/templates/themes/categories/news.html +++ b/templates/themes/categories/news.html @@ -15,16 +15,16 @@
{% if news|count == 0 %} -

(No news to show.)

+

{% trans %}(No news to show.){% endtrans %}

{% else %} {% for entry in news %}

{% if entry.subject %} {{ entry.subject }} {% else %} - no subject + {% trans %}no subject{% endtrans %} {% endif %} - — by {{ entry.name }} at {{ entry.time|date(config.post_date) }} + — {% trans %}by{% endtrans %} {{ entry.name }} {% trans %}at{% endtrans %} {{ entry.time|date(config.post_date) }}

{{ entry.body }}

{% endfor %} From 065a6f97c813da1ecc6cf4d431aba9a418092acf Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:50:38 -0400 Subject: [PATCH 052/289] localise time values --- inc/functions.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 371a01f1..180c74d5 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -546,35 +546,35 @@ function checkFlood($post) { function until($timestamp) { $difference = $timestamp - time(); if ($difference < 60) { - return $difference . ' second' . ($difference != 1 ? 's' : ''); + return $difference . ' ' . ngettext('second', 'seconds', $difference); } elseif ($difference < 60*60) { - return ($num = round($difference/(60))) . ' minute' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60))) . ' ' . ngettext('minute', 'minutes', $num); } elseif ($difference < 60*60*24) { - return ($num = round($difference/(60*60))) . ' hour' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60))) . ' ' . ngettext('hour', 'hours', $num); } elseif ($difference < 60*60*24*7) { - return ($num = round($difference/(60*60*24))) . ' day' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24))) . ' ' . ngettext('day', 'days', $num); } elseif ($difference < 60*60*24*365) { - return ($num = round($difference/(60*60*24*7))) . ' week' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*7))) . ' ' . ngettext('week', 'weeks', $num); } - return ($num = round($difference/(60*60*24*365))) . ' year' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*365))) . ' ' . ngettext('year', 'years', $num); } function ago($timestamp) { $difference = time() - $timestamp; if ($difference < 60) { - return $difference . ' second' . ($difference != 1 ? 's' : ''); + return $difference . ' ' . ngettext('second', 'seconds', $difference); } elseif ($difference < 60*60) { - return ($num = round($difference/(60))) . ' minute' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60))) . ' ' . ngettext('minute', 'minutes', $num); } elseif ($difference < 60*60*24) { - return ($num = round($difference/(60*60))) . ' hour' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60))) . ' ' . ngettext('hour', 'hours', $num); } elseif ($difference < 60*60*24*7) { - return ($num = round($difference/(60*60*24))) . ' day' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24))) . ' ' . ngettext('day', 'days', $num); } elseif ($difference < 60*60*24*365) { - return ($num = round($difference/(60*60*24*7))) . ' week' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*7))) . ' ' . ngettext('week', 'weeks', $num); } - return ($num = round($difference/(60*60*24*365))) . ' year' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*365))) . ' ' . ngettext('year', 'years', $num); } function displayBan($ban) { From 396492aad6b7271752214d4806b0aba3a4048cb1 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:01:42 -0400 Subject: [PATCH 053/289] Update Polish locale --- inc/locale/pl_PL/LC_MESSAGES/javascript.js | 2 +- inc/locale/pl_PL/LC_MESSAGES/javascript.po | 26 +- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 18730 -> 19790 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 338 +++++++++++++++++++-- 4 files changed, 342 insertions(+), 24 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.js b/inc/locale/pl_PL/LC_MESSAGES/javascript.js index 44857b98..caf4a66c 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.js +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.js @@ -1 +1 @@ -l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie"}; \ No newline at end of file +l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie","hide":"ukryj","show":"poka\u017c","hidden":"ukryte","Show images":"Poka\u017c obrazki","Hide images":"Ukryj obrazki"}; \ No newline at end of file diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.po b/inc/locale/pl_PL/LC_MESSAGES/javascript.po index 3c16c8d7..482ec45f 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.po +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-18 16:31-0400\n" +"POT-Creation-Date: 2013-07-27 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,7 +41,7 @@ msgstr "Kliknij Odpowiedź aby zobaczyć." msgid "Click to expand" msgstr "Kliknij aby rozwinąć" -#: ../../../../js/expand.js:41 +#: ../../../../js/expand.js:41 ../../../../js/expand.js:45 msgid "Hide expanded replies" msgstr "Schowaj rozwinięte odpowiedzi" @@ -104,7 +104,7 @@ msgstr "Hasło" msgid "Delete file only" msgstr "Usuń tylko plik" -#: ../../../../js/quick-post-controls.js:30 +#: ../../../../js/quick-post-controls.js:30 ../../../../js/hide-images.js:50 msgid "File" msgstr "Plik" @@ -119,3 +119,23 @@ msgstr "Powód" #: ../../../../js/quick-post-controls.js:37 msgid "Report" msgstr "Zgłoszenie" + +#: ../../../../js/hide-images.js:50 +msgid "hide" +msgstr "ukryj" + +#: ../../../../js/hide-images.js:56 +msgid "show" +msgstr "pokaż" + +#: ../../../../js/toggle-images.js:41 +msgid "hidden" +msgstr "ukryte" + +#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70 +msgid "Show images" +msgstr "Pokaż obrazki" + +#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70 +msgid "Hide images" +msgstr "Ukryj obrazki" diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index b1ccc28dccca8e142bb299e8262d99d762ed7270..2a31d64e2b739bc537600e64426544aa1e58a4fe 100644 GIT binary patch delta 6892 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 delta 5888 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 diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 8af9b27b..ca4f7ea4 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-20 20:07-0400\n" +"POT-Creation-Date: 2013-07-27 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -52,10 +52,11 @@ msgstr "Stwórz nowy board" #: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:75 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:150 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:207 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:155 msgid "all boards" msgstr "wszystkie boardy" -#: /var/www/html/Tinyboard/inc/config.php:305 +#: /var/www/html/Tinyboard/inc/config.php:305 ../../../../inc/config.php:330 msgid "You have been muted for unoriginal content." msgstr "Zostałeś zagłuszony za nieoryginalną treść." @@ -83,16 +84,19 @@ msgstr "Szybka odpowiedź" #. Error messages #: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 #: ../../../../inc/config.php:692 ../../../../inc/config.php:698 +#: ../../../../inc/config.php:695 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." #: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 #: ../../../../inc/config.php:693 ../../../../inc/config.php:699 +#: ../../../../inc/config.php:696 msgid "You look like a bot." msgstr "Wyglądasz jak bot." #: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 #: ../../../../inc/config.php:694 ../../../../inc/config.php:700 +#: ../../../../inc/config.php:697 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " @@ -100,135 +104,161 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 #: ../../../../inc/config.php:695 ../../../../inc/config.php:701 +#: ../../../../inc/config.php:698 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" #: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 #: ../../../../inc/config.php:696 ../../../../inc/config.php:702 +#: ../../../../inc/config.php:699 msgid "The body was too long." msgstr "Zawartość jest za długa." #: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 #: ../../../../inc/config.php:697 ../../../../inc/config.php:703 +#: ../../../../inc/config.php:700 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." #: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 #: ../../../../inc/config.php:698 ../../../../inc/config.php:704 +#: ../../../../inc/config.php:701 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." #: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 #: ../../../../inc/config.php:699 ../../../../inc/config.php:705 +#: ../../../../inc/config.php:702 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." #: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 #: ../../../../inc/config.php:700 ../../../../inc/config.php:706 +#: ../../../../inc/config.php:703 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." #: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 #: ../../../../inc/config.php:701 ../../../../inc/config.php:707 +#: ../../../../inc/config.php:704 msgid "Invalid board!" msgstr "Niepoprawny board!" #: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 #: ../../../../inc/config.php:702 ../../../../inc/config.php:708 +#: ../../../../inc/config.php:705 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." #: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 #: ../../../../inc/config.php:703 ../../../../inc/config.php:709 +#: ../../../../inc/config.php:706 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." #: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 #: ../../../../inc/config.php:706 ../../../../inc/config.php:712 +#: ../../../../inc/config.php:709 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." #: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 #: ../../../../inc/config.php:707 ../../../../inc/config.php:713 +#: ../../../../inc/config.php:710 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 #: ../../../../inc/config.php:708 ../../../../inc/config.php:714 +#: ../../../../inc/config.php:711 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 #: ../../../../inc/config.php:709 ../../../../inc/config.php:715 +#: ../../../../inc/config.php:712 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" #: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 #: ../../../../inc/config.php:710 ../../../../inc/config.php:716 +#: ../../../../inc/config.php:713 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #: ../../../../inc/config.php:711 ../../../../inc/config.php:717 +#: ../../../../inc/config.php:714 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #: ../../../../inc/config.php:712 ../../../../inc/config.php:718 +#: ../../../../inc/config.php:715 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." #: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 #: ../../../../inc/config.php:713 ../../../../inc/config.php:719 +#: ../../../../inc/config.php:716 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." #: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 #: ../../../../inc/config.php:714 ../../../../inc/config.php:720 +#: ../../../../inc/config.php:717 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 #: ../../../../inc/config.php:715 ../../../../inc/config.php:721 +#: ../../../../inc/config.php:718 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 #: ../../../../inc/config.php:716 ../../../../inc/config.php:722 +#: ../../../../inc/config.php:719 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." #: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 #: ../../../../inc/config.php:717 ../../../../inc/config.php:723 +#: ../../../../inc/config.php:720 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." #: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 #: ../../../../inc/config.php:718 ../../../../inc/config.php:724 +#: ../../../../inc/config.php:721 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." #: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 #: ../../../../inc/config.php:719 ../../../../inc/config.php:725 +#: ../../../../inc/config.php:722 msgid "Wrong password…" msgstr "Niepoprawne hasło" #: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 #: ../../../../inc/config.php:720 ../../../../inc/config.php:726 +#: ../../../../inc/config.php:723 msgid "Invalid image." msgstr "Niepoprawny obrazek." #: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 #: ../../../../inc/config.php:721 ../../../../inc/config.php:727 +#: ../../../../inc/config.php:724 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." #: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 #: ../../../../inc/config.php:722 ../../../../inc/config.php:728 +#: ../../../../inc/config.php:725 msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
Rozmiar twojego pliku: %filesz% " @@ -236,28 +266,33 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 #: ../../../../inc/config.php:723 ../../../../inc/config.php:729 +#: ../../../../inc/config.php:726 msgid "The file was too big." msgstr "Plik jest za duży." #: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 #: ../../../../inc/config.php:724 ../../../../inc/config.php:730 +#: ../../../../inc/config.php:727 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" #: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 #: ../../../../inc/config.php:725 ../../../../inc/config.php:731 +#: ../../../../inc/config.php:728 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 #: ../../../../inc/config.php:727 ../../../../inc/config.php:733 +#: ../../../../inc/config.php:730 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." #: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 #: ../../../../inc/config.php:728 ../../../../inc/config.php:734 +#: ../../../../inc/config.php:731 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " @@ -265,26 +300,31 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 #: ../../../../inc/config.php:729 ../../../../inc/config.php:735 +#: ../../../../inc/config.php:732 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." #: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 #: ../../../../inc/config.php:730 ../../../../inc/config.php:736 +#: ../../../../inc/config.php:733 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." #: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 #: ../../../../inc/config.php:734 ../../../../inc/config.php:740 +#: ../../../../inc/config.php:737 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" #: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 #: ../../../../inc/config.php:735 ../../../../inc/config.php:741 +#: ../../../../inc/config.php:738 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" #: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 #: ../../../../inc/config.php:736 ../../../../inc/config.php:742 +#: ../../../../inc/config.php:739 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" @@ -293,55 +333,65 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 #: ../../../../inc/config.php:737 ../../../../inc/config.php:743 +#: ../../../../inc/config.php:740 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." #: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 #: ../../../../inc/config.php:738 ../../../../inc/config.php:744 +#: ../../../../inc/config.php:741 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." #: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 #: ../../../../inc/config.php:739 ../../../../inc/config.php:745 +#: ../../../../inc/config.php:742 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." #: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 #: ../../../../inc/config.php:740 ../../../../inc/config.php:746 +#: ../../../../inc/config.php:743 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." #: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 #: ../../../../inc/config.php:741 ../../../../inc/config.php:747 +#: ../../../../inc/config.php:744 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" #: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 #: ../../../../inc/config.php:742 ../../../../inc/config.php:748 +#: ../../../../inc/config.php:745 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." #: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 #: ../../../../inc/config.php:743 ../../../../inc/config.php:749 +#: ../../../../inc/config.php:746 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." #: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 #: ../../../../inc/config.php:744 ../../../../inc/config.php:750 +#: ../../../../inc/config.php:747 msgid "Page not found." msgstr "Strona nie znaleziona." #: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 #: ../../../../inc/config.php:745 ../../../../inc/config.php:751 +#: ../../../../inc/config.php:748 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 #: ../../../../inc/config.php:746 ../../../../inc/config.php:752 +#: ../../../../inc/config.php:749 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -377,7 +427,9 @@ msgstr "[Edytuj]" msgid "[Move]" msgstr "[Przenieś]" -#: /var/www/html/Tinyboard/inc/config.php:801 +#. Default public ban message. +#. In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). +#: /var/www/html/Tinyboard/inc/config.php:801 ../../../../inc/config.php:911 msgid "USER WAS BANNED FOR THIS POST" msgstr "UŻYTKOWNIK ZOSTAŁ ZBANOWANY ZA TEGO POSTA" @@ -453,7 +505,7 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:292 #: /var/www/html/Tinyboard/inc/display.php:408 #: ../../../../inc/mod/pages.php:1080 ../../../../inc/mod/pages.php:1105 -#: ../../../../inc/mod/pages.php:1239 +#: ../../../../inc/mod/pages.php:1239 ../../../../inc/mod/pages.php:1242 msgid "Edit post" msgstr "Edytuj post" @@ -485,12 +537,17 @@ msgstr "Zablokuj wątek" msgid "Move thread to another board" msgstr "Przenieś wątek na inny board" +#. line 11 +#. line 7 #. line 11 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:48 #: /var/www/html/Tinyboard/mod.php:667 /var/www/html/Tinyboard/mod.php:750 #: /var/www/html/Tinyboard/mod.php:833 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:55 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:55 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:31 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:36 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:33 msgid "Name" msgstr "Nazwa" @@ -501,11 +558,14 @@ msgstr "Nazwa" msgid "Email" msgstr "E-mail" +#. line 34 +#. line 23 #. line 34 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:96 #: /var/www/html/Tinyboard/mod.php:753 /var/www/html/Tinyboard/mod.php:839 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:95 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:116 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:63 msgid "Subject" msgstr "Temat" @@ -579,6 +639,7 @@ msgstr "Komentarz" #. line 73 #. line 61 #. line 73 +#. line 61 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:133 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:142 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:191 @@ -638,26 +699,35 @@ msgstr "Weryfikacja" #. line 87 #. line 3 #. line 87 +#. line 3 +#. line 72 +#. line 3 +#. line 72 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:22 #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:22 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:250 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:214 msgid "File" msgstr "Plik" #. line 97 +#. line 82 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:163 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:183 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:268 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:232 msgid "Embed" msgstr "Osadź" #. line 109 +#. line 94 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:179 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:206 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:291 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:255 msgid "Flags" msgstr "Flagi" @@ -713,12 +783,18 @@ msgstr "Flagi" #. line 114 #. line 113 #. line 114 +#. line 98 +#. line 99 +#. line 98 +#. line 99 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:218 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:300 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:303 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:264 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:267 msgid "Sticky" msgstr "Przyklejony" @@ -774,12 +850,18 @@ msgstr "Przyklejony" #. line 118 #. line 117 #. line 118 +#. line 102 +#. line 103 +#. line 102 +#. line 103 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:230 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:312 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:315 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:276 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:279 msgid "Lock" msgstr "Zablokowany" @@ -835,18 +917,25 @@ msgstr "Zablokowany" #. line 122 #. line 121 #. line 122 +#. line 106 +#. line 107 +#. line 106 +#. line 107 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:242 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:324 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:327 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:288 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:291 msgid "Raw HTML" msgstr "Czysty HTML" #. line 129 #. line 14 #. line 129 +#. line 114 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:230 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:23 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:257 @@ -854,13 +943,16 @@ msgstr "Czysty HTML" #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:23 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:342 #: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:41 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:306 msgid "Password" msgstr "Hasło" #. line 134 +#. line 119 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:236 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:266 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:351 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:315 msgid "(For file deletion.)" msgstr "(do usuwania postów)" @@ -887,6 +979,7 @@ msgstr "Odśwież" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:415 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:461 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:472 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:506 msgid "Reply" msgstr "Odpowiedź" @@ -894,6 +987,7 @@ msgstr "Odpowiedź" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:442 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:488 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:499 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:533 msgid "1 post" msgid_plural "%count% posts" msgstr[0] "1 post" @@ -905,6 +999,7 @@ msgstr[2] "%count% postów" #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:494 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 #: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:114 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:539 msgid "and" msgstr "oraz" @@ -912,6 +1007,7 @@ msgstr "oraz" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:459 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:516 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:550 msgid "1 image reply" msgid_plural "%count% image replies" msgstr[0] "1 obrazek" @@ -922,6 +1018,7 @@ msgstr[2] "%count% obrazków" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:464 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:510 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:521 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:555 msgid "omitted. Click reply to view." msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." @@ -935,15 +1032,19 @@ msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." #: ../../../../templates/cache/62/8c/21348d46377c3e1b3f8c476ba376.php:62 #: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:131 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:115 +#: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:132 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:116 msgid "Return to dashboard" msgstr "Powróć na tablicę" #. line 27 #. line 31 +#. line 32 #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:165 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:177 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:106 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:123 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:124 msgid "Posting mode: Reply" msgstr "Tryb postowania: Odpowiedź" @@ -955,6 +1056,8 @@ msgstr "Tryb postowania: Odpowiedź" #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:155 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:126 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:172 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:127 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:173 msgid "Return" msgstr "Powrót" @@ -970,6 +1073,12 @@ msgstr "Usuń post" #. line 8 #. line 32 #. line 48 +#. line 106 +#. line 8 +#. line 32 +#. line 106 +#. line 8 +#. line 32 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 @@ -990,6 +1099,8 @@ msgstr "Zgłoszenie" #: /var/www/html/Tinyboard/mod.php:104 /var/www/html/Tinyboard/mod.php:776 #: /var/www/html/Tinyboard/mod.php:862 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:120 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:125 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:89 msgid "no subject" msgstr "brak tematu" @@ -1012,6 +1123,7 @@ msgstr "Aktualności" #: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 #: ../../../../inc/mod/pages.php:1682 ../../../../inc/mod/pages.php:1816 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:207 +#: ../../../../inc/mod/pages.php:1831 msgid "Report queue" msgstr "Kolejka zgłoszeń" @@ -1026,6 +1138,7 @@ msgstr "Lista banów" #: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 #: ../../../../inc/mod/pages.php:1394 ../../../../inc/mod/pages.php:1528 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:232 +#: ../../../../inc/mod/pages.php:1543 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -1059,11 +1172,13 @@ msgstr "Pokaż konfigurację" #: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 #: ../../../../inc/mod/pages.php:1830 ../../../../inc/mod/pages.php:1964 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:247 +#: ../../../../inc/mod/pages.php:1979 msgid "Manage themes" msgstr "Zarządzaj dodatkami" #. line 2 #. line 5 +#. line 2 #: /var/www/html/Tinyboard/mod.php:170 #: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:19 #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:24 @@ -1074,11 +1189,14 @@ msgstr "Wyrażenie:" #. line 2 #. line 106 #. line 2 +#. line 16 +#. line 106 #: /var/www/html/Tinyboard/mod.php:172 #: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:72 #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:19 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:286 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:19 +#: ../../../../search.php:165 msgid "Search" msgstr "Szukaj" @@ -1097,8 +1215,10 @@ msgid "Could not find current version! (Check .installed)" msgstr "Nie można znaleźć obecnej wersji! (Sprawdź .installed)" #. line 146 +#. line 158 #: /var/www/html/Tinyboard/mod.php:233 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:364 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:397 msgid "Logout" msgstr "Wyloguj" @@ -1128,17 +1248,25 @@ msgstr "temu" #. line 65 #. line 49 #. line 136 +#. line 116 +#. line 182 +#. line 65 +#. line 116 +#. line 182 +#. line 65 #: /var/www/html/Tinyboard/mod.php:405 /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:278 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:427 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:142 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:131 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:355 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:147 msgid "Board" msgstr "Board" #. line 183 #. line 137 +#. line 183 #: /var/www/html/Tinyboard/mod.php:406 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:430 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:358 @@ -1147,42 +1275,54 @@ msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 #: ../../../../inc/mod/pages.php:1789 ../../../../inc/mod/pages.php:1814 -#: ../../../../inc/mod/pages.php:1948 +#: ../../../../inc/mod/pages.php:1948 ../../../../inc/mod/pages.php:1963 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 #: ../../../../inc/mod/pages.php:1791 ../../../../inc/mod/pages.php:1816 -#: ../../../../inc/mod/pages.php:1950 +#: ../../../../inc/mod/pages.php:1950 ../../../../inc/mod/pages.php:1965 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." +#. line 11 #: /var/www/html/Tinyboard/mod.php:671 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:42 msgid "Version" msgstr "Wersja" +#. line 15 #: /var/www/html/Tinyboard/mod.php:675 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:51 msgid "Description" msgstr "Opis" +#. line 19 #: /var/www/html/Tinyboard/mod.php:679 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:60 msgid "Thumbnail" msgstr "Miniatura" +#. line 25 #: /var/www/html/Tinyboard/mod.php:687 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:86 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:77 msgid "Actions" msgstr "Akcje" +#. line 27 #: /var/www/html/Tinyboard/mod.php:689 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:81 msgid "Use theme" msgstr "Użyj dodatku" #: /var/www/html/Tinyboard/mod.php:690 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:87 msgid "Reconfigure" msgstr "Rekonfiguruj" #: /var/www/html/Tinyboard/mod.php:690 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:88 msgid "Install" msgstr "Instaluj" @@ -1192,10 +1332,13 @@ msgstr "Instaluj" #: ../../../../inc/mod/pages.php:1596 ../../../../inc/mod/pages.php:1726 #: ../../../../inc/mod/pages.php:1730 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:263 +#: ../../../../inc/mod/pages.php:1741 ../../../../inc/mod/pages.php:1745 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:98 msgid "Rebuild" msgstr "Przebuduj" #: /var/www/html/Tinyboard/mod.php:694 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:103 msgid "Uninstall" msgstr "Odinstaluj" @@ -1203,7 +1346,9 @@ msgstr "Odinstaluj" msgid "Uninstall all themes." msgstr "Odinstaluj wszystkie dodatki" +#. line 27 #: /var/www/html/Tinyboard/mod.php:756 /var/www/html/Tinyboard/mod.php:842 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:69 msgid "Body" msgstr "Zawartość" @@ -1269,6 +1414,7 @@ msgstr "Nie można się ponownie zalogować po zmianie hasła. (?)" #. line 126 #. line 50 +#. line 126 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:300 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:134 @@ -1277,6 +1423,7 @@ msgstr "Ustawione" #. line 130 #. line 52 +#. line 130 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:309 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:140 @@ -1290,6 +1437,14 @@ msgstr "Wygasa" #. line 17 #. line 54 #. line 133 +#. line 24 +#. line 62 +#. line 150 +#. line 180 +#. line 24 +#. line 62 +#. line 150 +#. line 180 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:74 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:169 @@ -1328,7 +1483,7 @@ msgid "No board to move to; there is only one." msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." #: ../../../../inc/config.php:689 ../../../../inc/config.php:747 -#: ../../../../inc/config.php:753 +#: ../../../../inc/config.php:753 ../../../../inc/config.php:750 msgid "Invalid security token! Please go back and try again." msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." @@ -1346,6 +1501,10 @@ msgstr "Edytuj board" msgid "New board" msgstr "Nowy board" +#. line 102 +#. line 20 +#. line 102 +#. line 20 #. line 102 #. line 20 #: ../../../../inc/mod/pages.php:586 ../../../../inc/mod/pages.php:612 @@ -1361,6 +1520,7 @@ msgstr "adres IP" #: ../../../../inc/mod/pages.php:638 ../../../../inc/mod/pages.php:1053 #: ../../../../inc/mod/pages.php:772 ../../../../inc/mod/pages.php:1187 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:398 +#: ../../../../inc/mod/pages.php:1190 msgid "New ban" msgstr "Nowy ban" @@ -1380,6 +1540,7 @@ msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1307 ../../../../inc/mod/pages.php:1356 #: ../../../../inc/mod/pages.php:1332 ../../../../inc/mod/pages.php:1381 #: ../../../../inc/mod/pages.php:1466 ../../../../inc/mod/pages.php:1515 +#: ../../../../inc/mod/pages.php:1477 ../../../../inc/mod/pages.php:1530 msgid "Edit user" msgstr "Edytuj użytkownika" @@ -1388,11 +1549,13 @@ msgstr "Edytuj użytkownika" #: ../../../../inc/mod/pages.php:1431 ../../../../inc/mod/pages.php:1503 #: ../../../../inc/mod/pages.php:1456 ../../../../inc/mod/pages.php:1528 #: ../../../../inc/mod/pages.php:1590 ../../../../inc/mod/pages.php:1662 +#: ../../../../inc/mod/pages.php:1605 ../../../../inc/mod/pages.php:1677 msgid "New PM for" msgstr "Nowe PW dla" #: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 #: ../../../../inc/mod/pages.php:1460 ../../../../inc/mod/pages.php:1594 +#: ../../../../inc/mod/pages.php:1609 msgid "Private message" msgstr "Prywatna wiadomość" @@ -1400,33 +1563,39 @@ msgstr "Prywatna wiadomość" #: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 #: ../../../../inc/mod/pages.php:1481 ../../../../inc/mod/pages.php:1615 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:171 +#: ../../../../inc/mod/pages.php:1630 msgid "PM inbox" msgstr "Odebrane PW" #: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 #: ../../../../inc/mod/pages.php:1804 ../../../../inc/mod/pages.php:1938 +#: ../../../../inc/mod/pages.php:1953 msgid "Config editor" msgstr "Edytor konfiguracji" #: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 #: ../../../../inc/mod/pages.php:1970 ../../../../inc/mod/pages.php:2104 +#: ../../../../inc/mod/pages.php:2119 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" #: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 #: ../../../../inc/mod/pages.php:1892 ../../../../inc/mod/pages.php:2026 +#: ../../../../inc/mod/pages.php:2041 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" #: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 #: ../../../../inc/mod/pages.php:1903 ../../../../inc/mod/pages.php:2037 +#: ../../../../inc/mod/pages.php:2052 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" #: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 #: ../../../../inc/mod/pages.php:1931 ../../../../inc/mod/pages.php:2065 +#: ../../../../inc/mod/pages.php:2080 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" @@ -1438,20 +1607,24 @@ msgid "" msgstr "" #: ../../../../inc/config.php:704 ../../../../inc/config.php:710 +#: ../../../../inc/config.php:707 msgid "Thread has reached its maximum reply limit." msgstr "Ten temat osiągnął swój maksymalny limit odpowiedzi." #: ../../../../inc/config.php:705 ../../../../inc/config.php:711 +#: ../../../../inc/config.php:708 msgid "Thread has reached its maximum image limit." msgstr "Ten temat osiągnął swój maksymalny limit obrazków." #: ../../../../inc/config.php:726 ../../../../inc/config.php:732 +#: ../../../../inc/config.php:729 #, php-format msgid "That file already exists in this thread!" msgstr "Ten plik już istnieje w tym temacie!" #. Moderator errors #: ../../../../inc/config.php:733 ../../../../inc/config.php:739 +#: ../../../../inc/config.php:736 #, php-format msgid "" "You are only allowed to unban %s users at a time. You tried to unban %u " @@ -1460,12 +1633,12 @@ msgstr "" "Możesz odbanować tylko %s użytkowników na raz. Próbowałeś odbanować %u users." #: ../../../../inc/mod/pages.php:1969 ../../../../inc/mod/pages.php:1994 -#: ../../../../inc/mod/pages.php:2128 +#: ../../../../inc/mod/pages.php:2128 ../../../../inc/mod/pages.php:2143 msgid "Debug: Recent posts" msgstr "Debug: Ostatnie posty" #: ../../../../inc/mod/pages.php:1993 ../../../../inc/mod/pages.php:2018 -#: ../../../../inc/mod/pages.php:2152 +#: ../../../../inc/mod/pages.php:2152 ../../../../inc/mod/pages.php:2167 msgid "Debug: SQL" msgstr "Debug: SQL" @@ -1500,9 +1673,9 @@ msgid "" "(Search is case-insensitive and based on keywords. To match exact phrases, " "use \"quotes\". Use an asterisk (*) for wildcard.)" msgstr "" -"(Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach kluczowych. " -"Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki (*) jako symbolu " -"wieloznacznego.)" +"(Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach " +"kluczowych. Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki " +"(*) jako symbolu wieloznacznego.)" #. line 8 #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:32 @@ -1520,14 +1693,14 @@ msgid "" "example, name:Anonymous or subject:\"Some Thread\". " "Wildcards cannot be used in filters." msgstr "" -"Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach kluczowych. " -"Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki (*) jako symbolu " -"wieloznacznego.

Możesz zastosować poniższe " -"filtry do swojego wyszukiwania: id, thread, " -"subject, i name. Aby wykorzystać filtr, " -"po prostu dodaj do swojego zapytania, na przykład: name:Anonymous " -"albo subject:\"Jakiś temat\". Symbole wieloznaczne nie mogą być " -"wykorzystane w filtrach." +"Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach " +"kluczowych. Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki " +"(*) jako symbolu wieloznacznego.

Możesz zastosować poniższe filtry do swojego wyszukiwania: id, thread, subject, i name. Aby wykorzystać filtr, po prostu dodaj do swojego zapytania, na " +"przykład: name:Anonymous albo subject:\"Jakiś temat\". " +"Symbole wieloznaczne nie mogą być wykorzystane w filtrach." #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:57 msgid "edit" @@ -1552,32 +1725,45 @@ msgid "Change password" msgstr "Zmień hasło" #. line 118 +#. line 130 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:308 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:341 msgid "Debug" msgstr "Debug" #. line 120 +#. line 132 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:312 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:345 msgid "Anti-spam" msgstr "Antyspam" #. line 121 +#. line 133 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:315 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:348 msgid "Recent posts" msgstr "Ostatnie posty" #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:321 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:354 msgid "SQL" msgstr "SQL" #. line 143 +#. line 155 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:359 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:392 msgid "User account" msgstr "Konto użytkownika" #. line 25 #. line 67 #. line 18 +#. line 25 +#. line 67 +#. line 25 +#. line 67 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:77 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:179 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:54 @@ -1586,6 +1772,7 @@ msgstr "Notka" #. line 26 #. line 19 +#. line 26 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:80 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:57 msgid "Date" @@ -1634,6 +1821,7 @@ msgstr "nigdy" #. line 140 #. line 53 +#. line 140 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:331 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:143 msgid "Seen" @@ -1656,6 +1844,7 @@ msgstr "Usuń ban" #. line 181 #. line 135 +#. line 181 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:424 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:352 msgid "Time" @@ -1753,16 +1942,19 @@ msgstr "Wiadomość" #. line 46 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:117 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:122 msgid "public; attached to post" msgstr "publiczny; dołączony do posta" #. line 58 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:133 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:138 msgid "Length" msgstr "Długość" #. line 88 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:192 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:197 msgid "New Ban" msgstr "Nowy ban" @@ -1799,3 +1991,109 @@ msgstr[2] "%d wyników na" #: ../../../../search.php:160 msgid "No results." msgstr "Brak wyników." + +#: ../../../../inc/functions.php:594 +msgid "Banned!" +msgstr "Zbanowany!" + +#: ../../../../banned.php:4 +msgid "Banned?" +msgstr "Zbanowany?" + +#: ../../../../banned.php:5 +msgid "You are not banned." +msgstr "Nie jesteś zbanowany." + +#: ../../../../inc/functions.php:549 ../../../../inc/functions.php:566 +msgid "second" +msgid_plural "seconds" +msgstr[0] "sekunda" +msgstr[1] "sekundy" +msgstr[2] "sekund" + +#: ../../../../inc/functions.php:551 ../../../../inc/functions.php:568 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuta" +msgstr[1] "minuty" +msgstr[2] "minut" + +#: ../../../../inc/functions.php:553 ../../../../inc/functions.php:570 +msgid "hour" +msgid_plural "hours" +msgstr[0] "godzina" +msgstr[1] "godziny" +msgstr[2] "godzin" + +#: ../../../../inc/functions.php:555 ../../../../inc/functions.php:572 +msgid "day" +msgid_plural "days" +msgstr[0] "dzień" +msgstr[1] "dni" +msgstr[2] "dni" + +#: ../../../../inc/functions.php:557 ../../../../inc/functions.php:574 +msgid "week" +msgid_plural "weeks" +msgstr[0] "tydzień" +msgstr[1] "tygodnie" +msgstr[2] "tygodni" + +#: ../../../../inc/functions.php:560 ../../../../inc/functions.php:577 +msgid "year" +msgid_plural "years" +msgstr[0] "rok" +msgstr[1] "lata" +msgstr[2] "lat" + +#. line 118 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:308 +msgid "Other" +msgstr "Inne" + +#: ../../../../templates/cache/b7/7d/de31d12a1684acbc7c0d7ee71653.php:30 +msgid "Successfully installed and built theme." +msgstr "Pomyślnie zainstalowano i zbudowano dodatek." + +#. line 9 +#: ../../../../templates/cache/b7/7d/de31d12a1684acbc7c0d7ee71653.php:37 +msgid "Go back to themes" +msgstr "Wróć do dodatków" + +#. line 3 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:21 +msgid "New post" +msgstr "Nowy post" + +#. line 32 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:76 +msgid "Post news entry" +msgstr "Zapostuj newsa" + +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:100 +msgid "delete" +msgstr "usuń" + +#. line 55 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:133 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:94 +msgid "by" +msgstr "przez" + +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:136 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:97 +msgid "at" +msgstr "dnia" + +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:66 +msgid "(No news to show.)" +msgstr "(Nie ma newsów do wyświetlenia.)" + +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:19 +msgid "There are no themes available." +msgstr "Nie ma dostępnych dodatków." + +#. line 25 +#: ../../../../templates/cache/d1/99/467985632043e204070d354b8290.php:91 +msgid "Install theme" +msgstr "Zainstaluj dodatek" From 7af28a6e14a87cbd73bf0bc9b9fafecfdf5719f7 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:06:50 -0400 Subject: [PATCH 054/289] Tag as vichan-devel-4.0.4-gold --- install.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.php b/install.php index 7c095c53..458344a0 100644 --- a/install.php +++ b/install.php @@ -1,7 +1,7 @@ vichan-devel-4.0.3'); +define('VERSION', 'v0.9.6-dev-9 + vichan-devel-4.0.4-gold'); require 'inc/functions.php'; @@ -253,6 +253,7 @@ if (file_exists($config['has_installed'])) { } } case 'v0.9.6-dev-9': + case 'v0.9.6-dev-9 + vichan-devel-4.0.3': case false: // Update version number file_write($config['has_installed'], VERSION); From 07ea457aa53729212e345eb0907b932f3939a3d9 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:19:58 -0400 Subject: [PATCH 055/289] inline-expanding.js: missed preventing default action; shouldn't open new window when unwanted anymore --- js/inline-expanding.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/inline-expanding.js b/js/inline-expanding.js index 1849b078..0f7b7229 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -46,6 +46,7 @@ onready(function(){ delete this.childNodes[0].style.opacity; delete this.childNodes[0].style.filter; } + return false; } } } From 4ffbbe7a23f04855a72082cdedecc9d6b919afff Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:21:08 -0400 Subject: [PATCH 056/289] Tag for vichan-devel-4.0.5-gold after bugfix --- install.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.php b/install.php index 458344a0..20a51775 100644 --- a/install.php +++ b/install.php @@ -1,7 +1,7 @@ vichan-devel-4.0.4-gold'); +define('VERSION', 'v0.9.6-dev-9 + vichan-devel-4.0.5-gold'); require 'inc/functions.php'; @@ -254,6 +254,7 @@ if (file_exists($config['has_installed'])) { } case 'v0.9.6-dev-9': case 'v0.9.6-dev-9 + vichan-devel-4.0.3': + case 'v0.9.6-dev-9 + vichan-devel-4.0.4-gold': case false: // Update version number file_write($config['has_installed'], VERSION); From 26b6dfb126fd3522cac3594fc7064b899465b856 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:34:15 -0400 Subject: [PATCH 057/289] dark.css stylesheet fixes --- stylesheets/dark.css | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/stylesheets/dark.css b/stylesheets/dark.css index 920debe8..bb342e05 100644 --- a/stylesheets/dark.css +++ b/stylesheets/dark.css @@ -25,13 +25,13 @@ div.title p { } a:link, a:visited, p.intro a.email span.name { color: #CCCCCC; - text-decoration: underline; + text-decoration: none; font-family: sans-serif; } a:link:hover, a:visited:hover { color: #fff; font-family: sans-serif; - text-decoration: underline overline; + text-decoration: none; } a.post_no { @@ -45,9 +45,14 @@ a.post_no:hover { div.post.reply { background: #333333; border: #555555 1px solid; + -webkit-border-radius: 10px; + -khtml-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + } div.post.reply.highlighted { - background: transparent; + background: #555; border: transparent 1px solid; } div.post.reply div.body a:link, div.post.reply div.body a:visited { From 98187303d77c41fa94430fa1302f071041c58bfc Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:38:03 -0400 Subject: [PATCH 058/289] categories theme: fix title displaying twice, put boardlist there instead --- templates/themes/categories/news.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html index 9c7d8340..93eb5b72 100644 --- a/templates/themes/categories/news.html +++ b/templates/themes/categories/news.html @@ -7,7 +7,7 @@ -

{{ settings.title }}

+ {{ boardlist.top }}

{{ settings.title }}

{{ settings.subtitle }}
From cea7881749e85b4ba5c8444e738d42a27d91244f Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:43:09 -0400 Subject: [PATCH 059/289] categories theme: i18n some strings --- templates/themes/categories/news.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html index 93eb5b72..b3bea2b1 100644 --- a/templates/themes/categories/news.html +++ b/templates/themes/categories/news.html @@ -15,16 +15,16 @@
{% if news|count == 0 %} -

(No news to show.)

+

{% trans %}(No news to show.){% endtrans %}

{% else %} {% for entry in news %}

{% if entry.subject %} {{ entry.subject }} {% else %} - no subject + {% trans %}no subject{% endtrans %} {% endif %} - — by {{ entry.name }} at {{ entry.time|date(config.post_date) }} + — {% trans %}by{% endtrans %} {{ entry.name }} {% trans %}at{% endtrans %} {{ entry.time|date(config.post_date) }}

{{ entry.body }}

{% endfor %} From 57c8e4ee7cea126e68ade4913c57a46f06d1a2b0 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 28 Jul 2013 20:33:26 -0400 Subject: [PATCH 060/289] Strip combining characters from Unicode strings (eg. Zalgo) --- inc/config.php | 2 ++ inc/functions.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++- post.php | 9 ++++++++- 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/inc/config.php b/inc/config.php index 98e127b3..d7580a8b 100644 --- a/inc/config.php +++ b/inc/config.php @@ -282,6 +282,8 @@ $config['strip_superfluous_returns'] = true; // Require an image for threads? $config['force_image_op'] = true; + // Strip combining characters from Unicode strings (eg. "Zalgo") + $config['strip_combining_chars'] = true; // Max body length $config['max_body'] = 1800; diff --git a/inc/functions.php b/inc/functions.php index b5660664..9d398002 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1526,7 +1526,53 @@ function utf8tohtml($utf8) { return htmlspecialchars($utf8, ENT_NOQUOTES, 'UTF-8'); } -function buildThread($id, $return=false, $mod=false) { +function ordutf8($string, &$offset) { + $code = ord(substr($string, $offset,1)); + if ($code >= 128) { // otherwise 0xxxxxxx + if ($code < 224) + $bytesnumber = 2; // 110xxxxx + else if ($code < 240) + $bytesnumber = 3; // 1110xxxx + else if ($code < 248) + $bytesnumber = 4; // 11110xxx + $codetemp = $code - 192 - ($bytesnumber > 2 ? 32 : 0) - ($bytesnumber > 3 ? 16 : 0); + for ($i = 2; $i <= $bytesnumber; $i++) { + $offset ++; + $code2 = ord(substr($string, $offset, 1)) - 128; //10xxxxxx + $codetemp = $codetemp*64 + $code2; + } + $code = $codetemp; + } + $offset += 1; + if ($offset >= strlen($string)) + $offset = -1; + return $code; +} + +function strip_combining_chars($str) { + $chars = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY); + $str = ''; + foreach ($chars as $char) { + $ord = ordutf8($char, $o = 0); + + if ($ord >= 768 && $ord <= 879) + continue; + + if ($ord >= 7616 && $ord <= 7679) + continue; + + if ($ord >= 8400 && $ord <= 8447) + continue; + + if ($ord >= 65056 && $ord <= 65071) + continue; + + $str .= $char; + } + return $str; +} + +function buildThread($id, $return = false, $mod = false) { global $board, $config; $id = round($id); diff --git a/post.php b/post.php index 4e3a1a9f..6855fe14 100644 --- a/post.php +++ b/post.php @@ -357,6 +357,13 @@ if (isset($_POST['delete'])) { $post['thumb'] = $board['dir'] . $config['dir']['thumb'] . $post['file_id'] . '.' . ($config['thumb_ext'] ? $config['thumb_ext'] : $post['extension']); } + if ($config['strip_combining_chars']) { + $post['name'] = strip_combining_chars($post['name']); + $post['email'] = strip_combining_chars($post['email']); + $post['subject'] = strip_combining_chars($post['name']); + $post['body'] = strip_combining_chars($post['body']); + } + // Check string lengths if (mb_strlen($post['name']) > 35) error(sprintf($config['error']['toolong'], 'name')); @@ -368,7 +375,7 @@ if (isset($_POST['delete'])) { error($config['error']['toolong_body']); if (mb_strlen($post['password']) > 20) error(sprintf($config['error']['toolong'], 'password')); - + wordfilters($post['body']); $post['body_nomarkup'] = $post['body']; From bd8bd3c02e6cb8e130058649e646a8c8071d3386 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 28 Jul 2013 20:46:00 -0400 Subject: [PATCH 061/289] Fix for last commit --- inc/functions.php | 5 +++-- post.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 9d398002..2915e1b6 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1552,8 +1552,9 @@ function ordutf8($string, &$offset) { function strip_combining_chars($str) { $chars = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY); $str = ''; - foreach ($chars as $char) { - $ord = ordutf8($char, $o = 0); + foreach ($chars as $char) { + $o = 0; + $ord = ordutf8($char, $o); if ($ord >= 768 && $ord <= 879) continue; diff --git a/post.php b/post.php index 6855fe14..ad045b66 100644 --- a/post.php +++ b/post.php @@ -360,7 +360,7 @@ if (isset($_POST['delete'])) { if ($config['strip_combining_chars']) { $post['name'] = strip_combining_chars($post['name']); $post['email'] = strip_combining_chars($post['email']); - $post['subject'] = strip_combining_chars($post['name']); + $post['subject'] = strip_combining_chars($post['subject']); $post['body'] = strip_combining_chars($post['body']); } From 5bab0418142fb2b9d37389f68733faa76c381ffe Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 12:27:10 -0400 Subject: [PATCH 062/289] Make font-awesome enabled by default --- inc/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index d7580a8b..7dda86ab 100644 --- a/inc/config.php +++ b/inc/config.php @@ -568,7 +568,7 @@ // Use Font-Awesome for displaying lock and pin icons, instead of the images in static/. // http://fortawesome.github.io/Font-Awesome/icon/pushpin/ // http://fortawesome.github.io/Font-Awesome/icon/lock/ - $config['font_awesome'] = false; + $config['font_awesome'] = true; $config['font_awesome_css'] = 'stylesheets/font-awesome/css/font-awesome.min.css'; // Boardlinks From c0e0a5db7d566aed16d5d9d9036a1f46f658e9eb Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 13:14:21 -0400 Subject: [PATCH 063/289] Error in news template --- templates/mod/news.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/mod/news.html b/templates/mod/news.html index b6c35798..b0335e0a 100644 --- a/templates/mod/news.html +++ b/templates/mod/news.html @@ -52,7 +52,7 @@ {% trans 'no subject' %} {% endif %} - — {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ notice.time|date(config.post_date) }} + — {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ post.time|date(config.post_date) }}

From 58306bdc63b7dcaf964ab3541fe4b5a8e0c813b0 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 16:18:06 -0400 Subject: [PATCH 064/289] Search posts --- inc/config.php | 2 + inc/mod/pages.php | 41 +++++++++++-- templates/mod/search_results.html | 97 ++++++++++++++++++++++++++++++- 3 files changed, 132 insertions(+), 8 deletions(-) diff --git a/inc/config.php b/inc/config.php index 7dda86ab..582c3145 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1035,6 +1035,8 @@ $config['mod']['rebuild'] = ADMIN; // Search through posts, IP address notes and bans $config['mod']['search'] = JANITOR; + // Allow searching posts (can be used with board configuration file to disallow searching through a certain board) + $config['mod']['search_posts'] = JANITOR; // Read the moderator noticeboard $config['mod']['noticeboard'] = JANITOR; // Post to the moderator noticeboard diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 01794d2e..8289d0b0 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -225,7 +225,7 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { // Which `field` to search? if ($type == 'posts') - $sql_field = 'body'; + $sql_field = 'body_nomarkup'; if ($type == 'IP_notes') $sql_field = 'body'; if ($type == 'bans') @@ -246,7 +246,27 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { // Compile SQL query if ($type == 'posts') { - error('Searching posts is under development. Sorry.'); + $query = ''; + + $boards = listBoards(); + if (empty($boards)) + error(_('There are no boards to search!')); + + foreach ($boards as $board) { + openBoard($board['uri']); + if (!hasPermission($config['mod']['search_posts'], $board['uri'])) + continue; + + if (!empty($query)) + $query .= ' UNION ALL '; + $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE %s", $board['uri'], $board['uri'], $sql_like); + } + + // You weren't allowed to search any boards + if (empty($query)) + error($config['error']['noaccess']); + + $query .= ' ORDER BY `sticky` DESC, `id` DESC'; } if ($type == 'IP_notes') { @@ -273,10 +293,15 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { // Execute SQL query (with pages) $q = query($query . ' LIMIT ' . (($page_no - 1) * $config['mod']['search_page']) . ', ' . $config['mod']['search_page']) or error(db_error()); $results = $q->fetchAll(PDO::FETCH_ASSOC); - + // Get total result count - $q = query('SELECT COUNT(*) FROM `' . $sql_table . '` WHERE ' . $sql_like) or error(db_error()); - $result_count = $q->fetchColumn(); + if ($type == 'posts') { + $q = query("SELECT COUNT(*) FROM ($query) AS `tmp_table`") or error(db_error()); + $result_count = $q->fetchColumn(); + } else { + $q = query('SELECT COUNT(*) FROM `' . $sql_table . '` WHERE ' . $sql_like) or error(db_error()); + $result_count = $q->fetchColumn(); + } if ($type == 'bans') { foreach ($results as &$ban) { @@ -285,6 +310,12 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { } } + if ($type == 'posts') { + foreach ($results as &$post) { + $post['snippet'] = pm_snippet($post['body']); + } + } + // $results now contains the search results mod_page(_('Search results'), 'mod/search_results.html', array( diff --git a/templates/mod/search_results.html b/templates/mod/search_results.html index b441a28f..035773fb 100644 --- a/templates/mod/search_results.html +++ b/templates/mod/search_results.html @@ -39,7 +39,7 @@ {% endfor %} -{% endif %} +{% endif %} {% if search_type == 'bans' %} @@ -125,7 +125,7 @@ {% endfor %}
-{% endif %} +{% endif %} {% if search_type == 'log' %} @@ -166,7 +166,98 @@ {% endfor %}
-{% endif %} +{% endif %} + +{% if search_type == 'posts' %} + + + + + + + + + + + + + {% for post in results %} + + + + + + + + + + + + {% endfor %} +
TimeBoardIDThreadIPNameSubjectFileBody (snippet)
+ {{ post.time | ago }} ago + + {{ config.board_abbreviation|sprintf(post.board) }} + + {% if post.thread %} + {% set thread = post.thread %} + {% else %} + {% set thread = post.id %} + {% endif %} + + {{ post.id }} + + + + {% if post.thread %} + {{ post.thread }} + {% else %} + (OP) + {% endif %} + + + {% if mod|hasPermission(config.mod.show_ip, post.board) %} + + {{ post.ip }} + + {% else %} + hidden + {% endif %} + + + {% if post.email|length > 0 %} + {# start email #} + + {% endif %} + {% if capcode %} + {{ capcode.cap }} + {% endif %} + + + {% if post.subject %} + {{ post.subject }} + {% else %} + – + {% endif %} + + {% if post.file %} + {{ post.file }} ({{ post.filesize | filesize }}) + {% else %} + – + {% endif %} + + {{ post.snippet }} +
+{% endif %} {% if result_count > results|count %}

From c8e93f04d2522224dd84b7d93e526b918a105451 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 16:24:11 -0400 Subject: [PATCH 065/289] Update search results template --- templates/mod/search_results.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/mod/search_results.html b/templates/mod/search_results.html index 035773fb..aeaf57b0 100644 --- a/templates/mod/search_results.html +++ b/templates/mod/search_results.html @@ -189,7 +189,7 @@ {{ config.board_abbreviation|sprintf(post.board) }} - + {% if post.thread %} {% set thread = post.thread %} {% else %} @@ -217,7 +217,7 @@ hidden {% endif %} - + {% if post.email|length > 0 %} {# start email #} @@ -237,14 +237,14 @@ {% endif %} - + {% if post.subject %} {{ post.subject }} {% else %} – {% endif %} - + {% if post.file %} {{ post.file }} ({{ post.filesize | filesize }}) {% else %} From e0bc0a622de2e4b9a8e02f9b48979d14dba04c94 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 16:26:32 -0400 Subject: [PATCH 066/289] Post serach results: link to posts with ?/ --- templates/mod/debug/recent_posts.html | 2 +- templates/mod/search_results.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/mod/debug/recent_posts.html b/templates/mod/debug/recent_posts.html index 740ed21e..13eb4d5a 100644 --- a/templates/mod/debug/recent_posts.html +++ b/templates/mod/debug/recent_posts.html @@ -24,7 +24,7 @@ {% else %} {% set thread = post.id %} {% endif %} - + {{ post.id }} diff --git a/templates/mod/search_results.html b/templates/mod/search_results.html index aeaf57b0..de753198 100644 --- a/templates/mod/search_results.html +++ b/templates/mod/search_results.html @@ -195,7 +195,7 @@ {% else %} {% set thread = post.id %} {% endif %} - + {{ post.id }} From d44b4f19a8760699a8895cbf9856a4cc0a0f5a65 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 16:31:36 -0400 Subject: [PATCH 067/289] See last commit --- templates/mod/debug/recent_posts.html | 2 +- templates/mod/search_results.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/mod/debug/recent_posts.html b/templates/mod/debug/recent_posts.html index 13eb4d5a..b84d24ab 100644 --- a/templates/mod/debug/recent_posts.html +++ b/templates/mod/debug/recent_posts.html @@ -1,4 +1,4 @@ - +
diff --git a/templates/mod/search_results.html b/templates/mod/search_results.html index de753198..fbad0381 100644 --- a/templates/mod/search_results.html +++ b/templates/mod/search_results.html @@ -169,7 +169,7 @@ {% endif %} {% if search_type == 'posts' %} -
Time Board
+
From 1759ac2ea30d3c374beb6b5b6fa76bfa5501da9f Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Mon, 29 Jul 2013 20:20:07 -0400 Subject: [PATCH 068/289] Post search: Search other fields too --- inc/mod/pages.php | 16 ++++++++++++++-- templates/mod/search_results.html | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 8289d0b0..d447fa51 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -174,6 +174,11 @@ function mod_search_redirect() { $query = str_replace('_', '%5F', $query); $query = str_replace('+', '_', $query); + if ($query === '') { + header('Location: ?/', true, $config['redirect_http']); + return; + } + header('Location: ?/search/' . $_POST['type'] . '/' . $query, true, $config['redirect_http']); } else { header('Location: ?/', true, $config['redirect_http']); @@ -225,7 +230,7 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { // Which `field` to search? if ($type == 'posts') - $sql_field = 'body_nomarkup'; + $sql_field = array('body_nomarkup', 'filename', 'subject', 'filehash', 'ip', 'name', 'trip'); if ($type == 'IP_notes') $sql_field = 'body'; if ($type == 'bans') @@ -239,7 +244,14 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { if (!empty($sql_like)) $sql_like .= ' AND '; $phrase = preg_replace('/^\'(.+)\'$/', '\'%$1%\'', $phrase); - $sql_like .= '`' . $sql_field . '` LIKE ' . $phrase . ' ESCAPE \'!\''; + if (is_array($sql_field)) { + foreach ($sql_field as $field) { + $sql_like .= '`' . $field . '` LIKE ' . $phrase . ' ESCAPE \'!\' OR'; + } + $sql_like = preg_replace('/ OR$/', '', $sql_like); + } else { + $sql_like .= '`' . $sql_field . '` LIKE ' . $phrase . ' ESCAPE \'!\''; + } } diff --git a/templates/mod/search_results.html b/templates/mod/search_results.html index fbad0381..0c87f75f 100644 --- a/templates/mod/search_results.html +++ b/templates/mod/search_results.html @@ -246,7 +246,7 @@ {% endif %} - {% if mod %} + {% if mod and ((not id and post.mod|hasPermission(config.mod.sticky, board.uri)) or (not id and post.mod|hasPermission(config.mod.lock, board.uri)) or post.mod|hasPermission(config.mod.rawhtml, board.uri)) %} From 7c8bbe8527be504804893672cc26430d11c272f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Sun, 23 Dec 2012 04:38:20 +0100 Subject: [PATCH 097/289] Implement image identification buttons using regex.info/exif, google images and tineye --- inc/config.php | 8 ++++++++ templates/post_reply.html | 11 +++++++++++ templates/post_thread.html | 10 ++++++++++ 3 files changed, 29 insertions(+) diff --git a/inc/config.php b/inc/config.php index 35b31b86..55c49045 100644 --- a/inc/config.php +++ b/inc/config.php @@ -485,6 +485,9 @@ $config['show_ratio'] = false; // Display the file's original filename $config['show_filename']= true; + + // Image identification buttons using regex.info/exif, tineye and google images + $config['image_identification'] = false; // Redraw the image using GD functions to strip any excess data (commonly ZIP archives) // WARNING: Currently strips animated GIFs too @@ -753,6 +756,11 @@ $config['root'] = (str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) == '/' ? '/' : str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) . '/'); else $config['root'] = '/'; // CLI mode + + // The scheme and domain. This is needed to get absolute URL of some page (for instance image + // identification buttons). If you use the CLI tools, it would be wise to override this setting. + $config['domain'] = (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? "https://" : "http://"; + $config['domain'] .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'; // If for some reason the folders and static HTML index files aren't in the current working direcotry, // enter the directory path here. Otherwise, keep it false. diff --git a/templates/post_reply.html b/templates/post_reply.html index c5735a0e..5f7c2619 100644 --- a/templates/post_reply.html +++ b/templates/post_reply.html @@ -71,6 +71,17 @@ {{ post.filename|bidi_cleanup }} {% endif %} {% endif %} + {% if post.thumb != 'file' and config.image_identification %} + , + + {% if post.file|extension == 'jpg' %} + e + {% endif %} + g + t + + {% endif %} + )

diff --git a/templates/post_thread.html b/templates/post_thread.html index b702712e..0ada3e70 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -28,6 +28,16 @@ {{ post.filename|bidi_cleanup }} {% endif %} {% endif %} + {% if post.thumb != 'file' and config.image_identification %} + , + + {% if post.file|extension == 'jpg' %} + e + {% endif %} + g + t + + {% endif %} )

From daca11113e5c96e11c9c5518fa55bae0b27054a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Fri, 28 Dec 2012 19:08:25 +0100 Subject: [PATCH 098/289] image identification: add imgops.com button --- templates/post_reply.html | 1 + templates/post_thread.html | 1 + 2 files changed, 2 insertions(+) diff --git a/templates/post_reply.html b/templates/post_reply.html index 5f7c2619..450f8246 100644 --- a/templates/post_reply.html +++ b/templates/post_reply.html @@ -74,6 +74,7 @@ {% if post.thumb != 'file' and config.image_identification %} , + io {% if post.file|extension == 'jpg' %} e {% endif %} diff --git a/templates/post_thread.html b/templates/post_thread.html index 0ada3e70..72c841be 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -31,6 +31,7 @@ {% if post.thumb != 'file' and config.image_identification %} , + io {% if post.file|extension == 'jpg' %} e {% endif %} From 64bc410484d9c161275f8a47e212bef345433fb1 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 04:02:40 -0400 Subject: [PATCH 099/289] Small comment change --- inc/config.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inc/config.php b/inc/config.php index 55c49045..0ff0600b 100644 --- a/inc/config.php +++ b/inc/config.php @@ -486,7 +486,7 @@ // Display the file's original filename $config['show_filename']= true; - // Image identification buttons using regex.info/exif, tineye and google images + // Image identification links using regex.info/exif, TinEye and Google Images $config['image_identification'] = false; // Redraw the image using GD functions to strip any excess data (commonly ZIP archives) @@ -757,9 +757,9 @@ else $config['root'] = '/'; // CLI mode - // The scheme and domain. This is needed to get absolute URL of some page (for instance image - // identification buttons). If you use the CLI tools, it would be wise to override this setting. - $config['domain'] = (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? "https://" : "http://"; + // The scheme and domain. This is used to get the site's absolute URL (eg. for image identification links). + // If you use the CLI tools, it would be wise to override this setting. + $config['domain'] = (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? "https://" : "http://"; $config['domain'] .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'; // If for some reason the folders and static HTML index files aren't in the current working direcotry, From cbab1f9ac219b7b01a59e09ee59b95087b23b860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Tue, 18 Dec 2012 04:53:24 +0100 Subject: [PATCH 100/289] Updated Polish translation --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 12437 -> 13437 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 256 ++++++++++++++++------ 2 files changed, 186 insertions(+), 70 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 53bc309ac3f56b48ac595c2e38f35167828648b6..f1f40e8e210ecc7f8e3129089a569a5d70cdf3bf 100644 GIT binary patch delta 5284 zcmZYC33OD|9mnwtvV|a#5O$Hr5+H`K2E_!C2m?g2j3FwE+e_vpOfs1nW+uc$?WjOe zgjOAwBGg&|E43;RYE=-eg0@G+V?9{vY3XvP^@u%4729gjet$DJaC-U<|M}c|XWm`@ z_r4c>$UU<%c`UcbLx$@$;zD9lFJpRlGiG)_wHmYZ0%P)U8Qz9r9E&Gxd(Hr3xW$aa z-dKp|;S3yxm*OD28ndtwFUM7wZ%ooWM?p6nL5=x4?1LX+Pdtel;57EY|DZbTmTSyZ z9D)OJ5oY7{sEMq^^D%1u4(h&**dL$3>5Ol7QBbtsld_)IUMpciQ?bYGGNVwI}1792Ia7s>2be6^ucx_+tD06zfbJ zMSCggcPp?v)>|7;0|#*iCQ!e73K`q%LM`kdCY6dK6y$N7iJ#+WEFfQ%xEP1yX4Fde zq9*pLtsg=y;62m=ev233F`R>EP??#{2T3+dP+QY5nEY$c6Ew`nJ5dvP12xbQ)S>({ z>UZCu2F@OmS>Xk!)Q+&`qgFb_)-OfNh@w{A-~5XwaeCYTbd_^Ji`S z0IK6RQ4@I=mCE1aBK*wOFB@u%L%kB!Ul`R-8!AKVQR8j0-)~M*P|BV_4X_i*zS)f& zbn^!4hNJfT6Sw?*9fgv7S70s^_96ILy|IP)}JgY71tewjjBff;w7;y74B| zL>e$3!+0@1h|};D)LA%%{4@Qi$nn;>sPC8a!ETvWbZ{eb49qh)5no3RangKBL3`0} zgfWw`03BS4+S_*2XUBv)}tn{$$r1X`j+(+ z7BapW!n2|q=b=)$6t&VA7UN^+;QKfWzd*hDibzWl-iVsmM(cy9g=|G_>66xHtb48d zFsT*3MnNx(w@`=V1Js%L(6;{xnXEa1>M+aU(dkAOP^n%!+L#ydQPjk1$ME+6??Cml z!}>HTv%8TsnCHikf1So7G-$>j;~e}4s-tPVhc%%aQ11m7wG~lR$G4*$JIqMn8_He3@AA?MB{ zQCqMD^}KJxp4f@X?29-a4`L5If$1})8#VJYs2OGPE3Igxb)2;jHNbRRFF|!whCOkC zwF0%$8tjFuushy@+Ui@aYf%eKZn6!(LLI*MPp(qz zccWIi8I`#gP?>leHG$t?79O+pkFgK+FHl=@2K(vx@56F*;~<=mBTy^48I^&%Q4`vN z>UbCG&9)zV;rq7zL)-ol@`^BLa0w1C%&a(!n(zkHeLFFa@y#yVa0qqy-o|V^X4^l( zEb6CF8TlG{-J3y^GKXj~>ibgci$1F#v#GB@Eu;~(1s$jb-Gxcbd+Y z8I_rLP#wK*>wiT4nZNSEE}2~3LNl=xHL+EwiEcn;YP+rPLp`2HP-o!pMdY6>nJixX z+QVX0eG#hTII4rKSc;vf)Sg65xZjk_i)JtuQ!hnc9VUwBVG2o>c?6Z2*HQN$ww{i57_#9s7(F=)z5MJ{nyA?rvJ3e%IBam zcP;8ETa%=aKE*hSh8K`~%u(c@$(o+YOere0)u{HBI0GL=t@torf~RmLPUOqkct2{- z4_iM#E#MgHX-IxTK{Nl{e({y9_adK4+4*<@4n@6i3Q%WaGOD9uWIN4V?2lpOPlNd$ zQ9-;ybP{1gnTQa-Aarfg^WSx?qR?h5E$9+j@w3G3gbvsq;%9`eyNLzqQs#ds^ysc9 z_#0$?O6(+FA{vOr#H+*_Lffe8h4d%m7p4oDbhg{_K2%mx#M8vpghxC`@VCU25laZY z0d zL;8qLw`FmSE$eY>CRW(`4Y-$BMBGg1x|6syUCR7Nr;2sNE@A+&l=0Jlhp)u0D?nk4 zt^62&KwM$#gE2<*wDn?qgqTPyC$fpIYaRt3F^7l~{fMsXA`15q$=zKoxSeRS^%3|T zVk&WqZ4@{&gB<3`9p6oxQ`z4MS2qq#i zGcOWu2sXCH+(a-EK3fZh8=b^Tuf;2I^5dD-Sc~JLP9|V0?7xL?iJ;rqmkuVyP=~Z(d=_{f-+5#JqUil(+DMc(5+yIf;nV5?PHa zW1br*)qpY23C5jBIMmLE=cK!xY|6v&gc}NV=>^WsE%jXPtVwaNzBLw1w9{j=7ar~S zL!KM=oW_V#=hinnZkQWl?T*{%2E(aubI0x(_;9z>hP>iQ{z|8T98`I2PK_50wWmw9 zk!Y|!U8-}#8MV69J9!P~RXV{`(V)XQ{#bCeoA8_#mgF{isjmiINm_!T#Mzm3&Kg|R zJI7x(Z*kc|pL4CRW=VN4e;+SI9i{nbS^-s)hS4JevV zuO-ehUs+92Wp&Z~GG|eBNo9HA^6DyI-wHRLD5{OQ;dsbp>q?vj*HlzERb`bvXST1h zth{1w+5Gu6z9mcM@Y8T(D-$cK_1u;cr=qNC;We7a?23wkb3?(&kyzuoAC)+%z(uj) zskFTd*~wI^Dey3SI% z+r%j89WY*v{r`JI5(MUArwsA1sSbgf(W2ano zuFW1kr_Sq$2EFrEgA`HO!P1t{&rb?i)rHcgu`(_}hroTfF}NgI+(W2WEV-KKGe=RUi8 z@4N5w?(X|?H#&}Zg6||xI$|gz#C+npSYxhZegYqqzt1ox1>eU3{2ViIcVeXfI8LU0 z4&(4;jKSA%F8&5*;a_kHevFkEm1InoF+sDOicV<9Y1oPJxD(061W^}w1SjDWr~wb6 z3!lfC_!cVXtEfai!RcsjF{T)1;2l_l%kdkS!S&4u6^=D;BFUL6s7xnN7dFX}f#Wch z=1kkpMIE;Um1woK&f0)Fe;q2Jdr&vvvEOf%T;KSp+>Sk{0}o*|9>b~ljO`ynC3*%~ z1@o$P9MfpOi;Wn?bli$-P&2X(b>W@1y&IMAAO@A;lT>cQ!&rr*s5|`-8PiN*186Ge zqn0QaYjG(mkpa}+*>AreLS69Zs2Liw{@V7xZha$#`CrHZZ_%Lvw6Mx}0csEApq8ZA zwpXBL=x$UZZX`$3imR~KwttBZ?cbrs`4Dx-|3!@-#oeiYdMfj;8Azo=11~^wF`>ZGI_vevQ%%9M~YsgKT#5u++!YtHYYeLO<&`+h1%6@ck47Fx& zqYiuz^DvgHs$GOy+qJj=H=vI1MP2A2P}CiW@HSP;_JwtnamEwpmC^ZfO6Ep zwWzgOjhfnZsF~S}+WlVS$utk3X6kX&lAXaEynssJy8S+GUgWp}s~dGg{iywCPEt`u zWA=+b;9}aE9|uZt8E!xq9>4;81(nz}>jdgXK1VHSJkui+t*O=ps2j}0sa)R_P|+q? zhT0Sr`T|!Vf2NTS4YVE4MDd6K{7S+PbYNJJ$#AC*u#CSVR~%1d!2Hlo)22#`6B zQ8PM>O7vGjDtg0RLQT;-T75qhw)jF$LU_w@tvp(^`kcLQ`mw-sK@RG>IM>+ z9xX*K#$pxfI<=?-f=yJkCY$U5UaY0P1C{Yv)SX>MUGM|c3nrQ`C*xeyKn|)uA9(=G zUFgPE)Qy}&B{YsY?|Q_bnV_QQ`37pBL|#)mU>+*dbkrT@qY|yN{chA#a-X#Wb$$Sq za1i705GwIwsBwo;HHqA7h7HAU~C2KuLMe~kIGZyQ}F?624dL|+7oGfXh|B>=K7|UiU!_~8sHq>iN8fnWn5k)<4j~bm_l5P zZsdV5`!EJyK>o}yA5-yd)cIGeG2Df2)InXxg+X0tB^71(FzSTks7-Vp6YvshO8;ov z@1v&jBh)~j+3#oaTD*gHHtNndAYU0j>M3~|wFgF!ca<40;Q7}p^INn-9;3OK5>G(&C%c$`b=*dWrYsAS z(1nw*2DK;ZP$x7XxtfhQ10TgG)D!bX`2iK3yMy3G7cN`*RD# z94FWVL9>R6m*^#aL>whrh&{vzq4FT{ZK9A^PpGUS`ocAS58`3shqnC?4%zz6@RK0? z+yBcx=3oDSGKdCZCGj-z9pb0NQbOhHL?$tf2obG>%8!ZNgij4yx~$*AuM&H0Tci@Z z2t5tqqV@lxoUxSwyq7pc{KWPx#3_UxpBaRn|7t>;caSI}^b%6pL`)~vszHe%9w5F? zoFZ<%=Kt%_d~uRcsU%hqRccU@2t9t!659xsya?udm_p1Z0>m>!J&{bPpL;g*3&V|)|)Y& z=qH9XHxG}lPfCl9>Fe=?PA7jFdTD0ar0%XjZzw*cHOcX8+0xS<2$Fw$%cN#rC zZJmB6z3oBI_CUIGVXxwnBe@A2~hsC3iaAKBmA|>94FTa+W(Tr`+*p z6}hS^i=FK3aJ8axv8s#I?W!npIRgXXejVe=;hZAQDIVRMb~bw2-Ch2zon8iP+vXYF zlbI0}8qKPW% +# 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. # +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: 0.9.5\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-15 09:39+0100\n" -"PO-Revision-Date: 2012-03-15 09:39+0100\n" -"Last-Translator: Marcin \"czaks\" Łabanowski \n" -"Language-Team: POLISH \n" -"Language: Polish\n" +"POT-Creation-Date: 2012-12-18 04:43+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \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%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: /var/www/html/Tinyboard/inc/functions.php:958 #: /var/www/html/Tinyboard/inc/functions.php:972 +#: ../../../../inc/functions.php:1041 ../../../../inc/functions.php:1055 msgid "Previous" msgstr "Wstecz" #: /var/www/html/Tinyboard/inc/functions.php:977 #: /var/www/html/Tinyboard/inc/functions.php:986 +#: ../../../../inc/functions.php:1060 ../../../../inc/functions.php:1069 msgid "Next" msgstr "Dalej" @@ -61,218 +63,218 @@ msgstr "Odpowiedz" msgid "Quick Reply" msgstr "Szybka odpowiedź" -#: /var/www/html/Tinyboard/inc/config.php:600 +#: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." -#: /var/www/html/Tinyboard/inc/config.php:601 +#: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 msgid "You look like a bot." msgstr "Wyglądasz jak bot." -#: /var/www/html/Tinyboard/inc/config.php:602 +#: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " "odsyłaczu w nagłówku" -#: /var/www/html/Tinyboard/inc/config.php:603 +#: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" -#: /var/www/html/Tinyboard/inc/config.php:604 +#: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 msgid "The body was too long." msgstr "Zawartość jest za długa." -#: /var/www/html/Tinyboard/inc/config.php:605 +#: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." -#: /var/www/html/Tinyboard/inc/config.php:606 +#: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." -#: /var/www/html/Tinyboard/inc/config.php:607 +#: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." -#: /var/www/html/Tinyboard/inc/config.php:608 +#: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." -#: /var/www/html/Tinyboard/inc/config.php:609 +#: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 msgid "Invalid board!" msgstr "Niepoprawny board!" -#: /var/www/html/Tinyboard/inc/config.php:610 +#: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." -#: /var/www/html/Tinyboard/inc/config.php:611 +#: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." -#: /var/www/html/Tinyboard/inc/config.php:612 +#: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." -#: /var/www/html/Tinyboard/inc/config.php:613 +#: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." -#: /var/www/html/Tinyboard/inc/config.php:614 +#: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." -#: /var/www/html/Tinyboard/inc/config.php:615 +#: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" -#: /var/www/html/Tinyboard/inc/config.php:616 +#: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." -#: /var/www/html/Tinyboard/inc/config.php:617 +#: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." -#: /var/www/html/Tinyboard/inc/config.php:618 +#: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." -#: /var/www/html/Tinyboard/inc/config.php:619 +#: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." -#: /var/www/html/Tinyboard/inc/config.php:620 +#: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." -#: /var/www/html/Tinyboard/inc/config.php:621 +#: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." -#: /var/www/html/Tinyboard/inc/config.php:622 +#: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." -#: /var/www/html/Tinyboard/inc/config.php:623 +#: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." -#: /var/www/html/Tinyboard/inc/config.php:624 +#: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." -#: /var/www/html/Tinyboard/inc/config.php:625 +#: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 msgid "Wrong password…" msgstr "Niepoprawne hasło" -#: /var/www/html/Tinyboard/inc/config.php:626 +#: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 msgid "Invalid image." msgstr "Niepoprawny obrazek." -#: /var/www/html/Tinyboard/inc/config.php:627 +#: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." -#: /var/www/html/Tinyboard/inc/config.php:628 +#: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
Rozmiar twojego pliku: %filesz% " "bajtów" -#: /var/www/html/Tinyboard/inc/config.php:629 +#: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 msgid "The file was too big." msgstr "Plik jest za duży." -#: /var/www/html/Tinyboard/inc/config.php:630 +#: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" -#: /var/www/html/Tinyboard/inc/config.php:631 +#: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" -#: /var/www/html/Tinyboard/inc/config.php:632 +#: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." -#: /var/www/html/Tinyboard/inc/config.php:633 +#: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " "odrzucony" -#: /var/www/html/Tinyboard/inc/config.php:634 +#: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." -#: /var/www/html/Tinyboard/inc/config.php:635 +#: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." -#: /var/www/html/Tinyboard/inc/config.php:638 +#: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" -#: /var/www/html/Tinyboard/inc/config.php:639 +#: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" -#: /var/www/html/Tinyboard/inc/config.php:640 +#: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" "Niepoprawna nazwa użytkownika, bądź hasło. Twoje konto mogło zostać usunięte " "albo zmienione." -#: /var/www/html/Tinyboard/inc/config.php:641 +#: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." -#: /var/www/html/Tinyboard/inc/config.php:642 +#: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." -#: /var/www/html/Tinyboard/inc/config.php:643 +#: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." -#: /var/www/html/Tinyboard/inc/config.php:644 +#: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." -#: /var/www/html/Tinyboard/inc/config.php:645 +#: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" -#: /var/www/html/Tinyboard/inc/config.php:646 +#: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." -#: /var/www/html/Tinyboard/inc/config.php:647 +#: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." -#: /var/www/html/Tinyboard/inc/config.php:648 +#: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 msgid "Page not found." msgstr "Strona nie znaleziona." -#: /var/www/html/Tinyboard/inc/config.php:649 +#: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" -#: /var/www/html/Tinyboard/inc/config.php:650 +#: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -329,7 +331,8 @@ msgstr "Wystąpił błąd." msgid "Go back" msgstr "Wróć" -#: /var/www/html/Tinyboard/inc/display.php:97 +#: /var/www/html/Tinyboard/inc/display.php:97 ../../../../inc/display.php:91 +#: ../../../../inc/mod/pages.php:59 msgid "Login" msgstr "Logowanie" @@ -344,6 +347,7 @@ msgstr "" #: /var/www/html/Tinyboard/inc/display.php:272 #: /var/www/html/Tinyboard/inc/display.php:365 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:27 +#: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:27 msgid "Delete" msgstr "Usuń" @@ -413,69 +417,90 @@ msgstr "Przenieś wątek na inny board" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:48 #: /var/www/html/Tinyboard/mod.php:667 /var/www/html/Tinyboard/mod.php:750 #: /var/www/html/Tinyboard/mod.php:833 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:55 msgid "Name" msgstr "Nazwa" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:62 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:76 msgid "Email" msgstr "E-mail" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:96 #: /var/www/html/Tinyboard/mod.php:753 /var/www/html/Tinyboard/mod.php:839 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:95 msgid "Subject" msgstr "Temat" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:110 #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:119 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:112 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:117 msgid "Spoiler Image" msgstr "Spoiler obrazek" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:119 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:121 msgid "Comment" msgstr "Komentarz" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:133 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:142 msgid "Verification" msgstr "Weryfikacja" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 +#: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:22 msgid "File" msgstr "Plik" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:163 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:183 msgid "Embed" msgstr "Osadź" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:179 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:206 msgid "Flags" msgstr "Flagi" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:218 msgid "Sticky" msgstr "Przyklejony" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:230 msgid "Lock" msgstr "Zablokowany" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:242 msgid "Raw HTML" msgstr "Czysty HTML" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:230 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:23 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:257 +#: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:23 msgid "Password" msgstr "Hasło" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:236 +#: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:266 msgid "(For file deletion.)" msgstr "(do usuwania postów)" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:107 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:105 msgid "File:" msgstr "Plik:" @@ -493,10 +518,12 @@ msgid "Refresh" msgstr "Odśwież" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:478 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:415 msgid "Reply" msgstr "Odpowiedź" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:511 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:442 msgid "1 post" msgid_plural "%count% posts" msgstr[0] "1 post" @@ -504,10 +531,12 @@ msgstr[1] "%count% posty" msgstr[2] "%count% postów" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:517 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:448 msgid "and" msgstr "oraz" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:528 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:459 msgid "1 image reply" msgid_plural "%count% image replies" msgstr[0] "1 obrazek" @@ -515,34 +544,43 @@ msgstr[1] "%count% obrazki" msgstr[2] "%count% obrazków" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:533 +#: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:464 msgid "omitted. Click reply to view." msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." #: /var/www/html/Tinyboard/templates/cache/c9/45/de4b7a1b91ef4b1ce35c7a930347.php:82 #: /var/www/html/Tinyboard/templates/cache/56/25/feb68d2e52b15e0d38ae0093f0f4.php:158 #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:159 +#: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:169 +#: ../../../../templates/cache/7a/d3/9236b821893e6bc57b16919988fd.php:169 msgid "Return to dashboard" msgstr "Powróć na tablicę" #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:165 +#: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:177 msgid "Posting mode: Reply" msgstr "Tryb postowania: Odpowiedź" #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:168 #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:210 +#: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:180 +#: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:222 msgid "Return" msgstr "Powrót" #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:19 +#: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:19 msgid "Delete Post" msgstr "Usuń post" #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 +#: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 msgid "Reason" msgstr "Powód" #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:36 +#: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:36 msgid "Report" msgstr "Zgłoszenie" @@ -560,18 +598,22 @@ msgid "PM Inbox" msgstr "Wiadomości prywatne" #: /var/www/html/Tinyboard/mod.php:136 /var/www/html/Tinyboard/mod.php:874 +#: ../../../../inc/mod/pages.php:376 msgid "News" msgstr "Aktualności" #: /var/www/html/Tinyboard/mod.php:141 /var/www/html/Tinyboard/mod.php:1614 +#: ../../../../inc/mod/pages.php:1557 msgid "Report queue" msgstr "Kolejna zgłoszeń" #: /var/www/html/Tinyboard/mod.php:144 /var/www/html/Tinyboard/mod.php:1882 +#: ../../../../inc/mod/pages.php:664 msgid "Ban list" msgstr "Lista banów" #: /var/www/html/Tinyboard/mod.php:147 /var/www/html/Tinyboard/mod.php:1288 +#: ../../../../inc/mod/pages.php:1271 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -580,6 +622,7 @@ msgid "Change own password" msgstr "Zmień swoje hasło" #: /var/www/html/Tinyboard/mod.php:152 /var/www/html/Tinyboard/mod.php:477 +#: ../../../../inc/mod/pages.php:416 ../../../../inc/mod/pages.php:443 msgid "Moderation log" msgstr "Log moderacji" @@ -596,6 +639,7 @@ msgid "Show configuration" msgstr "Pokaż konfigurację" #: /var/www/html/Tinyboard/mod.php:165 /var/www/html/Tinyboard/mod.php:709 +#: ../../../../inc/mod/pages.php:1739 msgid "Manage themes" msgstr "Zarządzaj dodatkami" @@ -616,7 +660,7 @@ msgstr "" "kluczowych. Aby dopasować dokładne frazy użyj \"cudzysłowi\". Używaj " "gwiazdki (*) jako znak wieloznaczny." -#: /var/www/html/Tinyboard/mod.php:180 +#: /var/www/html/Tinyboard/mod.php:180 ../../../../inc/mod/pages.php:106 msgid "Could not find current version! (Check .installed)" msgstr "Nie można znaleźć obecnej wersji! (Sprawdź .installed)" @@ -624,7 +668,7 @@ msgstr "Nie można znaleźć obecnej wersji! (Sprawdź .installed)" msgid "Logout" msgstr "Wyloguj" -#: /var/www/html/Tinyboard/mod.php:245 +#: /var/www/html/Tinyboard/mod.php:245 ../../../../inc/mod/pages.php:147 msgid "Dashboard" msgstr "Tablica" @@ -648,11 +692,11 @@ msgstr "Board" msgid "Action" msgstr "Akcja" -#: /var/www/html/Tinyboard/mod.php:528 +#: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" -#: /var/www/html/Tinyboard/mod.php:530 +#: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." @@ -684,7 +728,8 @@ msgstr "Rekonfiguruj" msgid "Install" msgstr "Instaluj" -#: /var/www/html/Tinyboard/mod.php:693 +#: /var/www/html/Tinyboard/mod.php:693 ../../../../inc/mod/pages.php:1467 +#: ../../../../inc/mod/pages.php:1471 msgid "Rebuild" msgstr "Przebuduj" @@ -704,7 +749,7 @@ msgstr "Zawartość" msgid "Post to noticeboard" msgstr "Postuj na tablicy ogłoszeń" -#: /var/www/html/Tinyboard/mod.php:792 +#: /var/www/html/Tinyboard/mod.php:792 ../../../../inc/mod/pages.php:316 msgid "Noticeboard" msgstr "Tablica ogłoszeń" @@ -773,14 +818,85 @@ msgstr "Cache jest wyłączone." msgid "Configuration" msgstr "Konfiguracja" -#: /var/www/html/Tinyboard/mod.php:2174 +#: /var/www/html/Tinyboard/mod.php:2174 ../../../../inc/mod/pages.php:255 msgid "Couldn't open board after creation." msgstr "Nie można otworzyć boardu po utworzeniu." -#: /var/www/html/Tinyboard/mod.php:2678 +#: /var/www/html/Tinyboard/mod.php:2678 ../../../../inc/mod/pages.php:759 msgid "Target and source board are the same." msgstr "Docelowy i źródłowy board są takie same." #: /var/www/html/Tinyboard/mod.php:2795 msgid "No board to move to; there is only one." msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." + +#: ../../../../inc/config.php:689 +msgid "Invalid security token! Please go back and try again." +msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." + +#: ../../../../inc/mod/pages.php:63 +msgid "Confirm action" +msgstr "Potwierdź akcję" + +#: ../../../../inc/mod/pages.php:222 +msgid "Edit board" +msgstr "Edytuj board" + +#: ../../../../inc/mod/pages.php:270 +msgid "New board" +msgstr "Nowy board" + +#: ../../../../inc/mod/pages.php:586 +msgid "IP" +msgstr "adres IP" + +#: ../../../../inc/mod/pages.php:596 ../../../../inc/mod/pages.php:985 +msgid "New ban" +msgstr "Nowy ban" + +#: ../../../../inc/mod/pages.php:919 +msgid "Impossible to move thread; there is only one board." +msgstr "Nie można przenieść wątku; istnieje tylko jeden board." + +#: ../../../../inc/mod/pages.php:923 +msgid "Move thread" +msgstr "Przenieś wątek" + +#: ../../../../inc/mod/pages.php:1209 ../../../../inc/mod/pages.php:1258 +msgid "Edit user" +msgstr "Edytuj użytkownika" + +#: ../../../../inc/mod/pages.php:1333 ../../../../inc/mod/pages.php:1405 +msgid "New PM for" +msgstr "Nowe PW dla" + +#: ../../../../inc/mod/pages.php:1337 +msgid "Private message" +msgstr "Prywatna wiadomość" + +#: ../../../../inc/mod/pages.php:1358 +msgid "PM inbox" +msgstr "Odebrane PW" + +#: ../../../../inc/mod/pages.php:1679 +msgid "Config editor" +msgstr "Edytor konfiguracji" + +#: ../../../../inc/mod/pages.php:1713 +msgid "Debug: Anti-spam" +msgstr "Debug: Antyspam" + +#: ../../../../inc/mod/pages.php:1801 +#, php-format +msgid "Installed theme: %s" +msgstr "Zainstalowano dodatek: %s" + +#: ../../../../inc/mod/pages.php:1811 +#, php-format +msgid "Configuring theme: %s" +msgstr "Konfigurowanie dodatku: %s" + +#: ../../../../inc/mod/pages.php:1839 +#, php-format +msgid "Rebuilt theme: %s" +msgstr "Przebudowano dodatek: %s" From 4266c412b55b5d5b4c2a76578561340ccf993b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Tue, 18 Dec 2012 04:58:53 +0100 Subject: [PATCH 101/289] Updated Polish translation (2) --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 13437 -> 13437 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index f1f40e8e210ecc7f8e3129089a569a5d70cdf3bf..592ca18d0fe7e35dc265dcf3d28b6322a15f021c 100644 GIT binary patch delta 19 bcmeyH@i$|`J{`8?jQsM%tj$MscCrHiW=;u8 delta 19 bcmeyH@i$|`J{`7#{LGxxqRmHicCrHiX5k50 diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 3d70a91b..d24cbd8e 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -437,7 +437,7 @@ msgstr "Temat" #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:112 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:117 msgid "Spoiler Image" -msgstr "Spoiler obrazek" +msgstr "Schowaj obrazek" #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:119 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:121 From 39cf9e7de560d0b09e1d13a040727eb031bbc0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Tue, 18 Dec 2012 06:42:20 +0100 Subject: [PATCH 102/289] Updated Polish translation (3) --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 13437 -> 13500 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 21 ++++++++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 592ca18d0fe7e35dc265dcf3d28b6322a15f021c..4a0e0f221160a0e575b184a63e55f50ce5569416 100644 GIT binary patch delta 1748 zcmXZcZ)j6j7{~E5TT@LNjkQ`k|6Nzp+S;Tytqn9LwM<9?*w`3uf;gtazQ5c9rJwUWx%WBe zJm=o~G<`WU*XApof5w=gW6UaJ%=Jyi%;PQGinGrdvl+j}#rUiB53D5q8#mxXti`%U zW0qnw_FxoMXBsQ;Q(T58um;aHno_y&WfDFT*RUEFupWQJKKu(;Vi&8?gafFF(x`kM zRqz--i?g@_zrZ+Nu|CED;#kO-Ry-0ac`H9dVl9cUunKSEa=eR+@d5hrUu?n({#9Zt zYT|a(!V{65+KM`wUaZ4m+>L2e2TB(ij4`-_{F$9wyfb1gc}F za36ky0jzKFt`DIm>_RPQ5Jzwvb=^D$ncv)Cpq>7NYTYALC#qSV7O(=B;(8l5;}YUd z^kV{b1bwLcMsOFtirUa;s1DpfE$B9??tNU%{N^zOABozn-VY79nmB~(FoDDP3Tnq^ zQ43x`-S<1H@O>Lsws{XE!P>rjOn zQ7w-nbDKS=oxg?Z+{dWb>>8FIV%$jl2q|gmJNOD>KdLiDRA)c1`OixXI!W9@?KnUX zLl@JS!UTSgI`aVSk*l!$aG~CY7SuD)Ve{QKegW07Aq?Vv)b}QhdIlOM8K_VJIaX7` zWq9^Ncg>$Gqi&=-5(|${91O?&`zEHR@(03u3aQL^`1zSsAv`h_cP2;kW0_oUER!FL zz3EBq E|3mZ8H2?qr delta 1666 zcmXZcdq|X77{~Fa)XDLlrJ3Ev%r;kd>|#MqNkdJOIGBu=4I`#?Lr~- zM+ik1BFJEuAS@w@EP@L9qlAh=g4}<$h$O1rrG-l9`|~|8`Z>>e-}jv7dCogC+%eHU zSm{gdnqrn0Fe@;#LnUT6@eEdA^Fp&lxF6H-lJhdA5?{sncpdZcIr{M}*5W^?b(WQy zrQkNq!31Vucc~>O7v9H&kBNhriG4T=Phu3W;0*kX+AxExv{5-~eg$g5C>CQgPRAWs zgTFh6v5xqE{1L-tNiXxxGP5~MByk#^#az6IX*h%#coP@neN4r1)W#oCiBF&s@^h04 zn&({PtU#^5+{HCX23jbLX}HlDLsc3_AMV7dxEs@Puk#S9!s9M}h_i{GppJALbu?3c zFq?@pu^!7&9Z2>v_?5v0u#Vr@d%Z`Q}pAQi{D~8@qefznLr&uI_2oO0^ERe zPzC*h>cCM{LT6Fy4q_qu+b{zk6VKd*my;K$0OvA4flXLk;Z@v)O1Ka8+@Gk02VMLC z_3}N!OdNCb@6b>D3DuFWSj7HTQ0Y|=MBNa=42(D%F_U;Js**O;5$r*2d;pcmDb(}l z-TWV@qqvRg%wyC#&s_W$Ci%11{NtD`|0lDR7{VgliORGO3vs~3w@_ct=csq!J<=re z2fZV#M#Y;@>+V85e-1-9gzD^vApKXySykQ-O(9kjhmhY6>&6u9N4jOFP@TDlT42OE zj=99?OTCSXP#aaD68sHy{}If_0aPchEp^}jJ8t3$s+F%$8UKxH`B!8Q%UR}CUW@8n zE9z@@5GP+^TtIvSdBjGMkNKB-oe7~jyBRg#o@B6s!5LJ=Be)7bVLLA2;u<`GI`a|d z3sePTsBgnNRO0`-`7bW^(N1+N8}qOT^?Or}dM9QF8EBzua6h@xsBoV z_2FnF&>D$1)opI*uL{iSZwVY*5DPa%TXbPfEViz*Be, YEAR. -# -#, fuzzy +# Polish Tinyboard Translation +# Copyright (C) 2011 Marcin Łabanowski +# Ten plik jest wydany na takiej samej licencji co paczka PACKAGE. +# Marcin Łabanowski (2011) msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" +"Project-Id-Version: 0.9.6-dev-6\n" +"Report-Msgid-Bugs-To: marcin@6irc.net\n" "POT-Creation-Date: 2012-12-18 04:43+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"Language-Team: POLISH \n" +"Language: Polish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" #: /var/www/html/Tinyboard/inc/functions.php:958 #: /var/www/html/Tinyboard/inc/functions.php:972 From 5ea2f02e7de1bdde17d0b8f0bc729a2c8e11767c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Tue, 18 Dec 2012 08:07:26 +0100 Subject: [PATCH 103/289] Fixed typo in Polish translation --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 13500 -> 13500 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 4a0e0f221160a0e575b184a63e55f50ce5569416..98f2ab5c05cbb3c3da101717c85ffd25cf98f1b0 100644 GIT binary patch delta 14 Vcmdm!xhHeOY8}Sx&1-Z7H~=)I1>pby delta 14 Vcmdm!xhHeOY8}SB&1-Z7H~=)a1>^t# diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index ea0469e9..374278df 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -604,7 +604,7 @@ msgstr "Aktualności" #: /var/www/html/Tinyboard/mod.php:141 /var/www/html/Tinyboard/mod.php:1614 #: ../../../../inc/mod/pages.php:1557 msgid "Report queue" -msgstr "Kolejna zgłoszeń" +msgstr "Kolejka zgłoszeń" #: /var/www/html/Tinyboard/mod.php:144 /var/www/html/Tinyboard/mod.php:1882 #: ../../../../inc/mod/pages.php:664 From dd01c8308defcb25e7e129724281906b8b6b3e08 Mon Sep 17 00:00:00 2001 From: 55ch Date: Sat, 15 Jun 2013 07:07:16 -0400 Subject: [PATCH 104/289] Brazilian Portuguese translation for Tinyboard --- inc/locale/pt_BR/LC_MESSAGES/tinyboard.mo | Bin 0 -> 12327 bytes inc/locale/pt_BR/LC_MESSAGES/tinyboard.po | 844 ++++++++++++++++++++++ 2 files changed, 844 insertions(+) create mode 100644 inc/locale/pt_BR/LC_MESSAGES/tinyboard.mo create mode 100644 inc/locale/pt_BR/LC_MESSAGES/tinyboard.po diff --git a/inc/locale/pt_BR/LC_MESSAGES/tinyboard.mo b/inc/locale/pt_BR/LC_MESSAGES/tinyboard.mo new file mode 100644 index 0000000000000000000000000000000000000000..3bb6778be52ae4702ed016b249c024d500b0f3f2 GIT binary patch literal 12327 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 literal 0 HcmV?d00001 diff --git a/inc/locale/pt_BR/LC_MESSAGES/tinyboard.po b/inc/locale/pt_BR/LC_MESSAGES/tinyboard.po new file mode 100644 index 00000000..c2ad38a2 --- /dev/null +++ b/inc/locale/pt_BR/LC_MESSAGES/tinyboard.po @@ -0,0 +1,844 @@ +# 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. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-04-21 11:29-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural==(n != 1);n" + +#: ../../inc/lib/gettext/examples/pigs_dropin.php:77 +msgid "" +"This is how the story goes.\n" +"\n" +msgstr "Era uma vez\n\n" + +#: ../../inc/functions.php:1046 ../../inc/functions.php:1060 +msgid "Previous" +msgstr "Anterior" + +#: ../../inc/functions.php:1065 ../../inc/functions.php:1074 +msgid "Next" +msgstr "Proximo" + +#: ../../inc/display.php:91 ../../inc/mod/pages.php:62 +msgid "Login" +msgstr "Login" + +#: ../../inc/config.php:687 +msgid "Lurk some more before posting." +msgstr "Lurke mais antes de postar." + +#: ../../inc/config.php:688 +msgid "You look like a bot." +msgstr "Você não parece humano." + +#: ../../inc/config.php:689 +msgid "Your browser sent an invalid or no HTTP referer." +msgstr "Seu browser enviou um referial HTTP inválido ou não enviou o referencial." + +#: ../../inc/config.php:690 +#, php-format +msgid "The %s field was too long." +msgstr "O campo %s é longo demais." + +#: ../../inc/config.php:691 +msgid "The body was too long." +msgstr "O corpo do texto é longo demais." + +#: ../../inc/config.php:692 +msgid "The body was too short or empty." +msgstr "O corpo do texto é pequeno demais ou inexistente." + +#: ../../inc/config.php:693 +msgid "You must upload an image." +msgstr "Você deve fazer upload de uma imagem." + +#: ../../inc/config.php:694 +msgid "The server failed to handle your upload." +msgstr "O servidor não conseguiu lidar com seu upload." + +#: ../../inc/config.php:695 +msgid "Unsupported image format." +msgstr "Tipo de imagem não aceito." + +#: ../../inc/config.php:696 +msgid "Invalid board!" +msgstr "Board inválida!" + +#: ../../inc/config.php:697 +msgid "Thread specified does not exist." +msgstr "O tópico especificado não existe.." + +#: ../../inc/config.php:698 +msgid "Thread locked. You may not reply at this time." +msgstr "Tópico trancado, você não pode postar." + +#: ../../inc/config.php:699 +msgid "You didn't make a post." +msgstr "Você não escreveu uma mensagem." + +#: ../../inc/config.php:700 +msgid "Flood detected; Post discarded." +msgstr "Flood detectado; Sua mensagem foi descartada." + +#: ../../inc/config.php:701 +msgid "Your request looks automated; Post discarded." +msgstr "Sua requisição parece automatizada; Mensagem descartada." + +#: ../../inc/config.php:702 +msgid "Unoriginal content!" +msgstr "Conteudo não original!" + +#: ../../inc/config.php:703 +#, php-format +msgid "Unoriginal content! You have been muted for %d seconds." +msgstr "Conteudo não original! Você está impedido de postar por %d segundos." + +#: ../../inc/config.php:704 +#, php-format +msgid "You are muted! Expires in %d seconds." +msgstr "Você está impedido de postar! Expira em %d segundos." + +#: ../../inc/config.php:705 +#, php-format +msgid "Your IP address is listed in %s." +msgstr "Seu IP está listado em %s." + +#: ../../inc/config.php:706 +msgid "Too many links; flood detected." +msgstr "Links demais; Flood detectado." + +#: ../../inc/config.php:707 +msgid "Too many cites; post discarded." +msgstr "Citações demais; Post descartado." + +#: ../../inc/config.php:708 +msgid "Too many cross-board links; post discarded." +msgstr "Links entre boards demais; Post descartado." + +#: ../../inc/config.php:709 +msgid "You didn't select anything to delete." +msgstr "Você não selecionou nada para deletar." + +#: ../../inc/config.php:710 +msgid "You didn't select anything to report." +msgstr "Você não selecionou nada para denunciar." + +#: ../../inc/config.php:711 +msgid "You can't report that many posts at once." +msgstr "Você não pode denunciar tantas mensagens ao mesmo tempo." + +#: ../../inc/config.php:712 +msgid "Wrong password…" +msgstr "Senha incorreta…" + +#: ../../inc/config.php:713 +msgid "Invalid image." +msgstr "Imagem inválida." + +#: ../../inc/config.php:714 +msgid "Unknown file extension." +msgstr "Extenção de arquivo desconhecida." + +#: ../../inc/config.php:715 +msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" +msgstr "Tamanho maximo de arquivos: %maxsz% bytes
O tamanho do seu arquivo: %filesz% bytes" + +#: ../../inc/config.php:716 +msgid "The file was too big." +msgstr "Seu arquivo é grande demais." + +#: ../../inc/config.php:717 +msgid "Invalid archive!" +msgstr "Arquivo inválido!" + +#: ../../inc/config.php:718 +#, php-format +msgid "That file already exists!" +msgstr "O arquivo já existe!" + +#: ../../inc/config.php:719 +#, php-format +msgid "That file already exists in this thread!" +msgstr "O arquivo já existe neste tópico!" + +#: ../../inc/config.php:720 +#, php-format +msgid "You'll have to wait another %s before deleting that." +msgstr "Você terá que esperar %s segundos antes de deletar isso." + +#: ../../inc/config.php:721 +msgid "MIME type detection XSS exploit (IE) detected; post discarded." +msgstr "Exploit XSS do tipo MIME (IE) detectado; mensagem descartada." + +#: ../../inc/config.php:722 +msgid "Couldn't make sense of the URL of the video you tried to embed." +msgstr "Não consegui processar a URL do video que você tentou integrar" + +#: ../../inc/config.php:723 +msgid "You seem to have mistyped the verification." +msgstr "Você errou o codigo de verificação." + +#: ../../inc/config.php:726 +msgid "Invalid username and/or password." +msgstr "Login e/ou senha inválido(s)." + +#: ../../inc/config.php:727 +msgid "You are not a mod…" +msgstr "Você não é mod…" + +#: ../../inc/config.php:728 +msgid "" +"Invalid username and/or password. Your user may have been deleted or changed." +msgstr "Login e/ou senha inválido(s). Seu login deve ter sido mudado ou removido." + +#: ../../inc/config.php:729 +msgid "Invalid/malformed cookies." +msgstr "Cookies inválidos ou mal formados." + +#: ../../inc/config.php:730 +msgid "Your browser didn't submit an input when it should have." +msgstr "Seu browser não enviou uma entrada quando ele deveria." + +#: ../../inc/config.php:731 +#, php-format +msgid "The %s field is required." +msgstr "O campo %s é necessário." + +#: ../../inc/config.php:732 +#, php-format +msgid "The %s field was invalid." +msgstr "O campo %s é inválido." + +#: ../../inc/config.php:733 +#, php-format +msgid "There is already a %s board." +msgstr "A board %s já existe." + +#: ../../inc/config.php:734 +msgid "You don't have permission to do that." +msgstr "Você não tem permissão para fazer isso." + +#: ../../inc/config.php:735 +msgid "That post doesn't exist…" +msgstr "Este post já existe…" + +#: ../../inc/config.php:736 +msgid "Page not found." +msgstr "Pagina não encontrada." + +#: ../../inc/config.php:737 +#, php-format +msgid "That mod already exists!" +msgstr "Este mod já existe!" + +#: ../../inc/config.php:738 +msgid "That theme doesn't exist!" +msgstr "Este tema não existe!" + +#: ../../inc/config.php:739 +msgid "Invalid security token! Please go back and try again." +msgstr "Token de segurança inválido! Retorne e tente de novo." + +#: ../../inc/mod/pages.php:66 +msgid "Confirm action" +msgstr "Confirmar ação" + +#: ../../inc/mod/pages.php:110 +msgid "Could not find current version! (Check .installed)" +msgstr "Não foi possivel encontrar a versão atual! (Cheque o .installed)" + +#: ../../inc/mod/pages.php:151 +msgid "Dashboard" +msgstr "Dashboard" + +#: ../../inc/mod/pages.php:228 +msgid "Edit board" +msgstr "Editar board" + +#: ../../inc/mod/pages.php:261 +msgid "Couldn't open board after creation." +msgstr "Não foi possivel abrir a board após a criação." + +#: ../../inc/mod/pages.php:276 +msgid "New board" +msgstr "Nova board" + +#: ../../inc/mod/pages.php:322 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:96 +msgid "Noticeboard" +msgstr "Quadro de noticias" + +#: ../../inc/mod/pages.php:382 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:166 +msgid "News" +msgstr "Noticias" + +#: ../../inc/mod/pages.php:422 ../../inc/mod/pages.php:449 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:255 +msgid "Moderation log" +msgstr "Log da moderação" + +#: ../../inc/mod/pages.php:592 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:247 +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:65 +msgid "IP" +msgstr "IP" + +#: ../../inc/mod/pages.php:602 ../../inc/mod/pages.php:993 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:377 +msgid "New ban" +msgstr "Nova expulsão" + +#: ../../inc/mod/pages.php:670 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:224 +msgid "Ban list" +msgstr "Lista de expulsões" + +#: ../../inc/mod/pages.php:765 +msgid "Target and source board are the same." +msgstr "Board alvo e fonte são as mesmas." + +#: ../../inc/mod/pages.php:927 +msgid "Impossible to move thread; there is only one board." +msgstr "Impossivel de mover o tópico; Só existe uma board." + +#: ../../inc/mod/pages.php:931 +msgid "Move thread" +msgstr "Mover tópico" + +#: ../../inc/mod/pages.php:1045 +msgid "Edit post" +msgstr "Editar mensagem" + +#: ../../inc/mod/pages.php:1271 ../../inc/mod/pages.php:1320 +msgid "Edit user" +msgstr "Editar usuário" + +#: ../../inc/mod/pages.php:1333 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:232 +msgid "Manage users" +msgstr "Administrar usuários" + +#: ../../inc/mod/pages.php:1395 ../../inc/mod/pages.php:1467 +msgid "New PM for" +msgstr "Nova MP para" + +#: ../../inc/mod/pages.php:1399 +msgid "Private message" +msgstr "Mensagem pessoal" + +#: ../../inc/mod/pages.php:1420 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:171 +msgid "PM inbox" +msgstr "Entrada de MP" + +#: ../../inc/mod/pages.php:1531 ../../inc/mod/pages.php:1535 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:263 +msgid "Rebuild" +msgstr "Reconstruir" + +#: ../../inc/mod/pages.php:1621 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:207 +msgid "Report queue" +msgstr "Fila de denuncias" + +#: ../../inc/mod/pages.php:1743 +msgid "Config editor" +msgstr "Editor de configurações" + +#: ../../inc/mod/pages.php:1753 +msgid "Themes directory doesn't exist!" +msgstr "Diretório de temas não existe!" + +#: ../../inc/mod/pages.php:1755 +msgid "Cannot open themes directory; check permissions." +msgstr "Não é possivel abrir diretorio de temas; reveja suas permissões." + +#: ../../inc/mod/pages.php:1769 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:247 +msgid "Manage themes" +msgstr "Administrar temas" + +#: ../../inc/mod/pages.php:1831 +#, php-format +msgid "Installed theme: %s" +msgstr "Tema instalado: %s" + +#: ../../inc/mod/pages.php:1841 +#, php-format +msgid "Configuring theme: %s" +msgstr "Configurando tema: %s" + +#: ../../inc/mod/pages.php:1869 +#, php-format +msgid "Rebuilt theme: %s" +msgstr "Reconstruir tema: %s" + +#: ../../inc/mod/pages.php:1908 +msgid "Debug: Anti-spam" +msgstr "Debug: Anti-spam" + +#: ../../inc/mod/pages.php:1932 +msgid "Debug: Recent posts" +msgstr "Debug: Mensagens recentes" + +#: ../../inc/mod/pages.php:1956 +msgid "Debug: SQL" +msgstr "" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:19 +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:29 +msgid "Boards" +msgstr "Boards" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:57 +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:183 +msgid "edit" +msgstr "editar" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:74 +msgid "Create new board" +msgstr "Criar nova board" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:84 +msgid "Messages" +msgstr "Mensagens" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:120 +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:98 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:125 +msgid "no subject" +msgstr "sem assunto" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:161 +msgid "View all noticeboard entries" +msgstr "Ver todas as noticias do quadro de noticias" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:192 +msgid "Administration" +msgstr "Administração" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:239 +msgid "Change password" +msgstr "Mudar senha" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:271 +msgid "Configuration" +msgstr "Configuração" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:282 +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:293 +msgid "Search" +msgstr "Procurar" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:289 +msgid "Phrase:" +msgstr "Frase:" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:297 +msgid "" +"(Search is case-insensitive, and based on keywords. To match exact phrases, " +"use \"quotes\". Use an asterisk (*) for wildcard.)" +msgstr "" +"(A procura não diferencia maiúsculas de minusculas, e baseia-se em palavras chave. para procurar por frases exatas, " +"use \"quotes\". Utilize um asterisco (*) como coringa.)" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:309 +msgid "Debug" +msgstr "Debug" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:313 +msgid "Anti-spam" +msgstr "Anti-spam" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:316 +msgid "Recent posts" +msgstr "Mensagens recentes" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:322 +msgid "SQL" +msgstr "SQL" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:360 +msgid "User account" +msgstr "Conta de usuário" + +#: ../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:365 +msgid "Logout" +msgstr "Sair" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:21 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:21 +msgid "New post" +msgstr "Nova mensagem" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:27 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:31 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:36 +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:27 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:55 +msgid "Name" +msgstr "Nome" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:36 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:63 +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:53 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:98 +msgid "Subject" +msgstr "Assunto" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:42 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:69 +msgid "Body" +msgstr "Mensagem" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:49 +msgid "Post to noticeboard" +msgstr "Postar no quadro de notícias" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:73 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:100 +msgid "delete" +msgstr "deletar" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:106 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:133 +msgid "by" +msgstr "por" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:118 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:112 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:344 +msgid "deleted?" +msgstr "deletado?" + +#: ../../templates/cache/26/6f/05ca0da8ac09e2c2216cba2b6f95.php:125 +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:136 +msgid "at" +msgstr "em" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:74 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:169 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:331 +msgid "Staff" +msgstr "Equipe" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:77 +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:179 +msgid "Note" +msgstr "Nota" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:80 +msgid "Date" +msgstr "Data" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:86 +msgid "Actions" +msgstr "Ações" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:142 +msgid "remove" +msgstr "remover" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:189 +msgid "New note" +msgstr "Nova nota" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:226 +msgid "Status" +msgstr "Situação" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:233 +msgid "Expired" +msgstr "Expirado" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:238 +msgid "Active" +msgstr "Ativo" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:256 +#: ../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:32 +#: ../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:30 +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:90 +msgid "Reason" +msgstr "Razão" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:269 +msgid "no reason" +msgstr "sem razão especificada" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:278 +#: ../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:20 +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:142 +msgid "Board" +msgstr "Board" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:291 +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:150 +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:83 +msgid "all boards" +msgstr "todas as boards" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:300 +msgid "Set" +msgstr "Configurar" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:309 +msgid "Expires" +msgstr "Expira em" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:322 +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:137 +msgid "never" +msgstr "nunca" + +#: ../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:357 +msgid "Remove ban" +msgstr "Remover expulsão" + +#: ../../templates/cache/72/55/0d64283f30702de83ecfcb71f86a.php:25 +msgid "There are no reports." +msgstr "Não há denúncias no momento." + +#: ../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:19 +msgid "Delete Post" +msgstr "Deletar Mensagem" + +#: ../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:22 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:218 +msgid "File" +msgstr "Arquivo" + +#: ../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:23 +#: ../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:41 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:310 +msgid "Password" +msgstr "Senha" + +#: ../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:27 +msgid "Delete" +msgstr "Deletar" + +#: ../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:36 +msgid "Report" +msgstr "Denunciar" + +#: ../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:28 +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:23 +msgid "Username" +msgstr "Usuário" + +#: ../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:52 +msgid "Continue" +msgstr "Prosseguir" + +#: ../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:94 +#: ../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:175 +#: ../../templates/cache/62/8c/21348d46377c3e1b3f8c476ba376.php:63 +msgid "Return to dashboard" +msgstr "Voltar à dashboard" + +#: ../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:36 +msgid "Report date" +msgstr "Data da denúncia" + +#: ../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:45 +msgid "Reported by" +msgstr "Denunciado por" + +#: ../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:63 +msgid "Discard abuse report" +msgstr "Descartar denúncia desnecessária" + +#: ../../templates/cache/9c/7b/891291bc84f8844c30cefdb949cf.php:80 +msgid "Discard all abuse reports by this IP address" +msgstr "Descartar todas denúncias desnecessárias deste IP" + +#: ../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:183 +msgid "Posting mode: Reply" +msgstr "Modo de postagem: Resposta" + +#: ../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:186 +#: ../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:232 +msgid "Return" +msgstr "Voltar" + +#: ../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:76 +msgid "Post news entry" +msgstr "Postar nova notícia" + +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:66 +msgid "(or subnet)" +msgstr "(ou subnet)" + +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:80 +msgid "hidden" +msgstr "oculto" + +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:107 +msgid "Message" +msgstr "Mensagem" + +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:117 +msgid "public; attached to post" +msgstr "público; anexado à mensagem" + +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:133 +msgid "Length" +msgstr "Tamanho" + +#: ../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:192 +msgid "New Ban" +msgstr "Nova Expulsão" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:20 +msgid "ID" +msgstr "ID" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:26 +msgid "Type" +msgstr "Tipo" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:35 +msgid "Last action" +msgstr "Ultima ação" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:61 +msgid "Janitor" +msgstr "Faxineiro" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:64 +msgid "Mod" +msgstr "Moderador" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:67 +msgid "Admin" +msgstr "Administrador" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:78 +msgid "none" +msgstr "nenhum" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:153 +msgid "Promote" +msgstr "Promover" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:163 +msgid "Demote" +msgstr "Rebaixar" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:173 +msgid "log" +msgstr "registro" + +#: ../../templates/cache/c5/a7/fac83da087ee6e24edaf09e01122.php:193 +msgid "PM" +msgstr "MP" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:105 +msgid "File:" +msgstr "Arquivo:" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:117 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:129 +msgid "Spoiler Image" +msgstr "Imagem Spoiler" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:463 +msgid "Reply" +msgstr "Responder" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:490 +msgid "1 post" +msgid_plural "%count% posts" +msgstr[0] "1 mensagem" +msgstr[1] "%count% mensagens" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:496 +msgid "and" +msgstr "e" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:507 +msgid "1 image reply" +msgid_plural "%count% image replies" +msgstr[0] "1 resposta com imagem" +msgstr[1] "%count% respostas com imagem" + +#: ../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:512 +msgid "omitted. Click reply to view." +msgstr "omitidas. Clique em responder para visualizar." + +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:40 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:76 +msgid "Email" +msgstr "E-mail" + +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:62 +msgid "Update" +msgstr "Atualizar" + +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:69 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:138 +msgid "Comment" +msgstr "Comentar" + +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:89 +msgid "Currently editing raw HTML." +msgstr "Editando em HTML puro." + +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:96 +msgid "Edit markup instead?" +msgstr "Editar markup em vez disso?" + +#: ../../templates/cache/39/42/cbc36382096edfa72a8bc26e4514.php:105 +msgid "Edit raw HTML instead?" +msgstr "Editar em HTML puro em vez disso?" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:111 +msgid "Submit" +msgstr "Enviar" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:159 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:185 +msgid "Verification" +msgstr "Verification" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:236 +msgid "Embed" +msgstr "Inserir" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:259 +msgid "Flags" +msgstr "Sinalizações" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:268 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:271 +msgid "Sticky" +msgstr "Fixar" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:280 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:283 +msgid "Lock" +msgstr "Trancar" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:292 +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:295 +msgid "Raw HTML" +msgstr "HTML Puro" + +#: ../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:319 +msgid "(For file deletion.)" +msgstr "(Para excluir arquivos)" From 0ffa0b3adfc5c99dec57e7f2416337a0fc155132 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:59:36 -0400 Subject: [PATCH 105/289] Update Polish translation; javascript l10n --- inc/locale/pl_PL/LC_MESSAGES/javascript.js | 1 + inc/locale/pl_PL/LC_MESSAGES/javascript.po | 121 ++++++ inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 13500 -> 14100 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 456 +++++++++++++++++++-- 4 files changed, 546 insertions(+), 32 deletions(-) create mode 100644 inc/locale/pl_PL/LC_MESSAGES/javascript.js create mode 100644 inc/locale/pl_PL/LC_MESSAGES/javascript.po diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.js b/inc/locale/pl_PL/LC_MESSAGES/javascript.js new file mode 100644 index 00000000..e1df81c7 --- /dev/null +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.js @@ -0,0 +1 @@ +l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144 to","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie"}; \ No newline at end of file diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.po b/inc/locale/pl_PL/LC_MESSAGES/javascript.po new file mode 100644 index 00000000..2b4fa223 --- /dev/null +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.po @@ -0,0 +1,121 @@ +# 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. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-07-03 01:52-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../../js/quick-reply.js:20 +msgid "Submit" +msgstr "Wyślij" + +#: ../../../../js/quick-reply.js:30 +msgid "Quick reply" +msgstr "Szybka odpowiedź" + +#: ../../../../js/quick-reply.js:32 +msgid "Posting mode: Replying to >>{0}" +msgstr "Tryb postowania: Odpowiedź na >>{0}" + +#: ../../../../js/quick-reply.js:32 +msgid "Return" +msgstr "Powrót" + +#: ../../../../js/expand.js:20 +msgid "Click reply to view." +msgstr "Kliknij Odpowiedź aby zobaczyć." + +#: ../../../../js/expand.js:20 +msgid "Click to expand" +msgstr "Kliknij aby rozwinąć" + +#: ../../../../js/expand.js:41 +msgid "Hide expanded replies" +msgstr "Schowaj rozwinięte odpowiedzi" + +#: ../../../../js/local-time.js:40 +msgid "Mon" +msgstr "pon" + +#: ../../../../js/local-time.js:40 +msgid "Tue" +msgstr "wto" + +#: ../../../../js/local-time.js:40 +msgid "Wed" +msgstr "śro" + +#: ../../../../js/local-time.js:40 +msgid "Thu" +msgstr "czw" + +#: ../../../../js/local-time.js:40 +msgid "Fri" +msgstr "pią" + +#: ../../../../js/local-time.js:40 +msgid "Sat" +msgstr "sob" + +#: ../../../../js/local-time.js:40 +msgid "Sun" +msgstr "nie" + +#: ../../../../js/toggle-locked-threads.js:39 +#: ../../../../js/toggle-locked-threads.js:54 +msgid "Show locked threads" +msgstr "Pokaż zablokowane tematy" + +#: ../../../../js/toggle-locked-threads.js:39 +#: ../../../../js/toggle-locked-threads.js:54 +msgid "Hide locked threads" +msgstr "Schowaj zablokowane tematy" + +#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65 +#: ../../../../js/forced-anon.js:69 +msgid "Forced anonymity" +msgstr "Wymuszona anonimowość" + +#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65 +msgid "enabled" +msgstr "włączona" + +#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:69 +msgid "disabled" +msgstr "wyłączona" + +#: ../../../../js/quick-post-controls.js:27 +msgid "Password" +msgstr "Hasło" + +#: ../../../../js/quick-post-controls.js:29 +msgid "Delete file only" +msgstr "Usuń tylko plik" + +#: ../../../../js/quick-post-controls.js:30 +msgid "File" +msgstr "Plik" + +#: ../../../../js/quick-post-controls.js:31 +msgid "Delete" +msgstr "Usuń to" + +#: ../../../../js/quick-post-controls.js:35 +msgid "Reason" +msgstr "Powód" + +#: ../../../../js/quick-post-controls.js:37 +msgid "Report" +msgstr "Zgłoszenie" diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 98f2ab5c05cbb3c3da101717c85ffd25cf98f1b0..b23e55a827144eac782f6a378efd2f1abf66094c 100644 GIT binary patch delta 4996 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%0DrnFicBASWP#qsc zb?|4Lg`cCAHYYc5!Ij99X>P|t>_fg=%svdkKO&23&Z1T(n6FKpA7jmOvHr0%ETBOH zEk_OHMqS~n_Jb!ehWdx7mAHyp(i^rO$4{eHG6~hs6x91A$k?VDHS-5hE4Kyplnr?) z`0rwzM8g+IpC&Os@N-*%TA4o7(mr9^U&aFJ=TS3`p;C-4Y{eEV#owd$Jci|wV^9-F zMm-JQObWX4eEY^sTfY^xWK|f4%TZrAt*CpT1JzMCvaQC8qi_KEX)sTaDsqhYh?{67 zI?3xq$0j}h!^dh0_t{DZHW1BtFL{9I20KW8Np$>}%=ec9|Dn*MyMgcKDFdt(nDS(>xhm=$R2+w@bW9*w()O+ zTD1S)C3>WF^pU&#rNGa$ij&A%;@zm4J@n|^Nm_;*@aMLyACaeRS$FPsl0&wUG@|3D zWEZ)KRFk9RWwMMcA$kIIw38u!iTyu9VLW+;ybx&gzy6HZF4AV(M&TmjAU`6*$8KBL zfx2OJv&P%DH*qT2N@B^QWcXN4Awu`xPblb_pGHDSJ<+i^fd3ZFw`Fm=E$eZ+humT7 z-@`#tLB3CPJVbuzF9rV5sp1dFelnWWF~0wI_!b;KR#8Z?m0#d zWRMjkiVPofDcnkClWr1ChL4F99wXiZ!!7s{x!cw!;Df|P?ze5?Es|vGnO0FsMv#3Z znd~Gw7LYBZm;9Q1dt}V-^f;P*@5L<-@l_{8g!dmGAK}|FzCFlSpENz#_x{8;gX>&5 zGjocatD5e07Dp~?>gx3LIIFu`+EzJl>22wD)^?USIvPBUZSL~oHcw-YyQwE~$>Lh) zTu)O&Pg|$kIj^Cosl<`*%FB1^Z-&EFSW;M!?aJ%_*W{)tOBPoxtf_F6cD0wcx8-zt zT4qO9HMm=P8(KJNNoRXocWZw~if2*5EJs&+ucx8C%w1NN=a}PgIZ7Pv)I8VhvV2Ec zn!i|DR;Xfznq8%NF2~xn{&s!FmB~4IoRjbSPfC8MuPS|gME{)Ja9?b0Pmu4LYiF?U Jvx4-H{{yZi$p`=d diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 374278df..edbb5212 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -1,31 +1,36 @@ -# Polish Tinyboard Translation -# Copyright (C) 2011 Marcin Łabanowski -# Ten plik jest wydany na takiej samej licencji co paczka PACKAGE. -# Marcin Łabanowski (2011) +# 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. +# +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: 0.9.6-dev-6\n" -"Report-Msgid-Bugs-To: marcin@6irc.net\n" -"POT-Creation-Date: 2012-12-18 04:43+0100\n" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-07-03 01:52-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" -"Language-Team: POLISH \n" -"Language: Polish\n" +"Language-Team: LANGUAGE \n" +"Language: \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%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +#. There is no previous page. #: /var/www/html/Tinyboard/inc/functions.php:958 #: /var/www/html/Tinyboard/inc/functions.php:972 #: ../../../../inc/functions.php:1041 ../../../../inc/functions.php:1055 +#: ../../../../inc/functions.php:1039 ../../../../inc/functions.php:1053 msgid "Previous" msgstr "Wstecz" +#. There is no next page. #: /var/www/html/Tinyboard/inc/functions.php:977 #: /var/www/html/Tinyboard/inc/functions.php:986 #: ../../../../inc/functions.php:1060 ../../../../inc/functions.php:1069 +#: ../../../../inc/functions.php:1058 ../../../../inc/functions.php:1067 msgid "Next" msgstr "Dalej" @@ -62,171 +67,216 @@ msgstr "Odpowiedz" msgid "Quick Reply" msgstr "Szybka odpowiedź" +#. +#. * ==================== +#. * Error messages +#. * ==================== +#. +#. Error messages #: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 +#: ../../../../inc/config.php:692 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." #: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 +#: ../../../../inc/config.php:693 msgid "You look like a bot." msgstr "Wyglądasz jak bot." #: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 +#: ../../../../inc/config.php:694 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " "odsyłaczu w nagłówku" #: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 +#: ../../../../inc/config.php:695 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" #: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 +#: ../../../../inc/config.php:696 msgid "The body was too long." msgstr "Zawartość jest za długa." #: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 +#: ../../../../inc/config.php:697 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." #: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 +#: ../../../../inc/config.php:698 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." #: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 +#: ../../../../inc/config.php:699 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." #: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 +#: ../../../../inc/config.php:700 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." #: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 +#: ../../../../inc/config.php:701 msgid "Invalid board!" msgstr "Niepoprawny board!" #: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 +#: ../../../../inc/config.php:702 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." #: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 +#: ../../../../inc/config.php:703 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." #: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 +#: ../../../../inc/config.php:706 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." #: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 +#: ../../../../inc/config.php:707 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 +#: ../../../../inc/config.php:708 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 +#: ../../../../inc/config.php:709 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" #: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 +#: ../../../../inc/config.php:710 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 +#: ../../../../inc/config.php:711 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 +#: ../../../../inc/config.php:712 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." #: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 +#: ../../../../inc/config.php:713 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." #: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 +#: ../../../../inc/config.php:714 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 +#: ../../../../inc/config.php:715 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 +#: ../../../../inc/config.php:716 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." #: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 +#: ../../../../inc/config.php:717 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." #: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 +#: ../../../../inc/config.php:718 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." #: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 +#: ../../../../inc/config.php:719 msgid "Wrong password…" msgstr "Niepoprawne hasło" #: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 +#: ../../../../inc/config.php:720 msgid "Invalid image." msgstr "Niepoprawny obrazek." #: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 +#: ../../../../inc/config.php:721 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." #: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 +#: ../../../../inc/config.php:722 msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
Rozmiar twojego pliku: %filesz% " "bajtów" #: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 +#: ../../../../inc/config.php:723 msgid "The file was too big." msgstr "Plik jest za duży." #: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 +#: ../../../../inc/config.php:724 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" #: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 +#: ../../../../inc/config.php:725 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 +#: ../../../../inc/config.php:727 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." #: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 +#: ../../../../inc/config.php:728 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " "odrzucony" #: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 +#: ../../../../inc/config.php:729 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." #: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 +#: ../../../../inc/config.php:730 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." #: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 +#: ../../../../inc/config.php:734 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" #: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 +#: ../../../../inc/config.php:735 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" #: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 +#: ../../../../inc/config.php:736 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" @@ -234,46 +284,56 @@ msgstr "" "albo zmienione." #: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 +#: ../../../../inc/config.php:737 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." #: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 +#: ../../../../inc/config.php:738 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." #: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 +#: ../../../../inc/config.php:739 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." #: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 +#: ../../../../inc/config.php:740 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." #: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 +#: ../../../../inc/config.php:741 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" #: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 +#: ../../../../inc/config.php:742 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." #: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 +#: ../../../../inc/config.php:743 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." #: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 +#: ../../../../inc/config.php:744 msgid "Page not found." msgstr "Strona nie znaleziona." #: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 +#: ../../../../inc/config.php:745 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 +#: ../../../../inc/config.php:746 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -331,7 +391,7 @@ msgid "Go back" msgstr "Wróć" #: /var/www/html/Tinyboard/inc/display.php:97 ../../../../inc/display.php:91 -#: ../../../../inc/mod/pages.php:59 +#: ../../../../inc/mod/pages.php:59 ../../../../inc/mod/pages.php:62 msgid "Login" msgstr "Logowanie" @@ -343,10 +403,12 @@ msgstr "" "Post za długi. Kliknij tutaj aby zobaczyć pełnego posta." +#. line 5 #: /var/www/html/Tinyboard/inc/display.php:272 #: /var/www/html/Tinyboard/inc/display.php:365 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:27 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:27 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:27 msgid "Delete" msgstr "Usuń" @@ -382,6 +444,7 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:292 #: /var/www/html/Tinyboard/inc/display.php:408 +#: ../../../../inc/mod/pages.php:1080 msgid "Edit post" msgstr "Edytuj post" @@ -413,21 +476,27 @@ msgstr "Zablokuj wątek" msgid "Move thread to another board" msgstr "Przenieś wątek na inny board" +#. line 11 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:48 #: /var/www/html/Tinyboard/mod.php:667 /var/www/html/Tinyboard/mod.php:750 #: /var/www/html/Tinyboard/mod.php:833 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:55 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:55 msgid "Name" msgstr "Nazwa" +#. line 21 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:62 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:76 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:76 msgid "Email" msgstr "E-mail" +#. line 34 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:96 #: /var/www/html/Tinyboard/mod.php:753 /var/www/html/Tinyboard/mod.php:839 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:95 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:116 msgid "Subject" msgstr "Temat" @@ -435,71 +504,327 @@ msgstr "Temat" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:119 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:112 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:117 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:119 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:100 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:133 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:172 msgid "Spoiler Image" msgstr "Schowaj obrazek" +#. line 45 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:119 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:121 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:145 msgid "Comment" msgstr "Komentarz" +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:133 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:142 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:191 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:217 msgid "Verification" msgstr "Weryfikacja" +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:22 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:22 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:250 msgid "File" msgstr "Plik" +#. line 97 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:163 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:183 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:268 msgid "Embed" msgstr "Osadź" +#. line 109 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:179 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:206 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:291 msgid "Flags" msgstr "Flagi" +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:218 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:300 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:303 msgid "Sticky" msgstr "Przyklejony" +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:230 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:312 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:315 msgid "Lock" msgstr "Zablokowany" +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:242 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:324 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:327 msgid "Raw HTML" msgstr "Czysty HTML" +#. line 129 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:230 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:23 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:257 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:23 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:23 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:342 msgid "Password" msgstr "Hasło" +#. line 134 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:236 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:266 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:351 msgid "(For file deletion.)" msgstr "(do usuwania postów)" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:107 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:105 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:107 msgid "File:" msgstr "Plik:" @@ -518,11 +843,13 @@ msgstr "Odśwież" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:478 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:415 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:461 msgid "Reply" msgstr "Odpowiedź" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:511 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:442 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:488 msgid "1 post" msgid_plural "%count% posts" msgstr[0] "1 post" @@ -531,11 +858,13 @@ msgstr[2] "%count% postów" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:517 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:448 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:494 msgid "and" msgstr "oraz" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:528 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:459 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 msgid "1 image reply" msgid_plural "%count% image replies" msgstr[0] "1 obrazek" @@ -544,6 +873,7 @@ msgstr[2] "%count% obrazków" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:533 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:464 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:510 msgid "omitted. Click reply to view." msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." @@ -552,11 +882,16 @@ msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:159 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:169 #: ../../../../templates/cache/7a/d3/9236b821893e6bc57b16919988fd.php:169 +#: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:121 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:98 +#: ../../../../templates/cache/62/8c/21348d46377c3e1b3f8c476ba376.php:62 msgid "Return to dashboard" msgstr "Powróć na tablicę" +#. line 27 #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:165 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:177 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:106 msgid "Posting mode: Reply" msgstr "Tryb postowania: Odpowiedź" @@ -564,22 +899,30 @@ msgstr "Tryb postowania: Odpowiedź" #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:210 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:180 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:222 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:109 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:155 msgid "Return" msgstr "Powrót" +#. line 2 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:19 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:19 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:19 msgid "Delete Post" msgstr "Usuń post" +#. line 8 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:32 msgid "Reason" msgstr "Powód" +#. line 10 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:36 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:36 +#: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:36 msgid "Report" msgstr "Zgłoszenie" @@ -597,22 +940,22 @@ msgid "PM Inbox" msgstr "Wiadomości prywatne" #: /var/www/html/Tinyboard/mod.php:136 /var/www/html/Tinyboard/mod.php:874 -#: ../../../../inc/mod/pages.php:376 +#: ../../../../inc/mod/pages.php:376 ../../../../inc/mod/pages.php:393 msgid "News" msgstr "Aktualności" #: /var/www/html/Tinyboard/mod.php:141 /var/www/html/Tinyboard/mod.php:1614 -#: ../../../../inc/mod/pages.php:1557 +#: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 msgid "Report queue" msgstr "Kolejka zgłoszeń" #: /var/www/html/Tinyboard/mod.php:144 /var/www/html/Tinyboard/mod.php:1882 -#: ../../../../inc/mod/pages.php:664 +#: ../../../../inc/mod/pages.php:664 ../../../../inc/mod/pages.php:705 msgid "Ban list" msgstr "Lista banów" #: /var/www/html/Tinyboard/mod.php:147 /var/www/html/Tinyboard/mod.php:1288 -#: ../../../../inc/mod/pages.php:1271 +#: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -622,6 +965,7 @@ msgstr "Zmień swoje hasło" #: /var/www/html/Tinyboard/mod.php:152 /var/www/html/Tinyboard/mod.php:477 #: ../../../../inc/mod/pages.php:416 ../../../../inc/mod/pages.php:443 +#: ../../../../inc/mod/pages.php:433 ../../../../inc/mod/pages.php:460 msgid "Moderation log" msgstr "Log moderacji" @@ -638,7 +982,7 @@ msgid "Show configuration" msgstr "Pokaż konfigurację" #: /var/www/html/Tinyboard/mod.php:165 /var/www/html/Tinyboard/mod.php:709 -#: ../../../../inc/mod/pages.php:1739 +#: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 msgid "Manage themes" msgstr "Zarządzaj dodatkami" @@ -660,6 +1004,7 @@ msgstr "" "gwiazdki (*) jako znak wieloznaczny." #: /var/www/html/Tinyboard/mod.php:180 ../../../../inc/mod/pages.php:106 +#: ../../../../inc/mod/pages.php:110 msgid "Could not find current version! (Check .installed)" msgstr "Nie można znaleźć obecnej wersji! (Sprawdź .installed)" @@ -668,6 +1013,7 @@ msgid "Logout" msgstr "Wyloguj" #: /var/www/html/Tinyboard/mod.php:245 ../../../../inc/mod/pages.php:147 +#: ../../../../inc/mod/pages.php:162 msgid "Dashboard" msgstr "Tablica" @@ -692,10 +1038,12 @@ msgid "Action" msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 +#: ../../../../inc/mod/pages.php:1789 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 +#: ../../../../inc/mod/pages.php:1791 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." @@ -728,7 +1076,8 @@ msgid "Install" msgstr "Instaluj" #: /var/www/html/Tinyboard/mod.php:693 ../../../../inc/mod/pages.php:1467 -#: ../../../../inc/mod/pages.php:1471 +#: ../../../../inc/mod/pages.php:1471 ../../../../inc/mod/pages.php:1567 +#: ../../../../inc/mod/pages.php:1571 msgid "Rebuild" msgstr "Przebuduj" @@ -749,6 +1098,7 @@ msgid "Post to noticeboard" msgstr "Postuj na tablicy ogłoszeń" #: /var/www/html/Tinyboard/mod.php:792 ../../../../inc/mod/pages.php:316 +#: ../../../../inc/mod/pages.php:333 msgid "Noticeboard" msgstr "Tablica ogłoszeń" @@ -818,10 +1168,12 @@ msgid "Configuration" msgstr "Konfiguracja" #: /var/www/html/Tinyboard/mod.php:2174 ../../../../inc/mod/pages.php:255 +#: ../../../../inc/mod/pages.php:272 msgid "Couldn't open board after creation." msgstr "Nie można otworzyć boardu po utworzeniu." #: /var/www/html/Tinyboard/mod.php:2678 ../../../../inc/mod/pages.php:759 +#: ../../../../inc/mod/pages.php:800 msgid "Target and source board are the same." msgstr "Docelowy i źródłowy board są takie same." @@ -829,73 +1181,113 @@ msgstr "Docelowy i źródłowy board są takie same." msgid "No board to move to; there is only one." msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." -#: ../../../../inc/config.php:689 +#: ../../../../inc/config.php:689 ../../../../inc/config.php:747 msgid "Invalid security token! Please go back and try again." msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." -#: ../../../../inc/mod/pages.php:63 +#: ../../../../inc/mod/pages.php:63 ../../../../inc/mod/pages.php:66 msgid "Confirm action" msgstr "Potwierdź akcję" -#: ../../../../inc/mod/pages.php:222 +#: ../../../../inc/mod/pages.php:222 ../../../../inc/mod/pages.php:239 msgid "Edit board" msgstr "Edytuj board" -#: ../../../../inc/mod/pages.php:270 +#: ../../../../inc/mod/pages.php:270 ../../../../inc/mod/pages.php:287 msgid "New board" msgstr "Nowy board" -#: ../../../../inc/mod/pages.php:586 +#: ../../../../inc/mod/pages.php:586 ../../../../inc/mod/pages.php:612 msgid "IP" msgstr "adres IP" #: ../../../../inc/mod/pages.php:596 ../../../../inc/mod/pages.php:985 +#: ../../../../inc/mod/pages.php:622 ../../../../inc/mod/pages.php:1028 msgid "New ban" msgstr "Nowy ban" -#: ../../../../inc/mod/pages.php:919 +#: ../../../../inc/mod/pages.php:919 ../../../../inc/mod/pages.php:962 msgid "Impossible to move thread; there is only one board." msgstr "Nie można przenieść wątku; istnieje tylko jeden board." -#: ../../../../inc/mod/pages.php:923 +#: ../../../../inc/mod/pages.php:923 ../../../../inc/mod/pages.php:966 msgid "Move thread" msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1209 ../../../../inc/mod/pages.php:1258 +#: ../../../../inc/mod/pages.php:1307 ../../../../inc/mod/pages.php:1356 msgid "Edit user" msgstr "Edytuj użytkownika" +#. deleted? #: ../../../../inc/mod/pages.php:1333 ../../../../inc/mod/pages.php:1405 +#: ../../../../inc/mod/pages.php:1431 ../../../../inc/mod/pages.php:1503 msgid "New PM for" msgstr "Nowe PW dla" -#: ../../../../inc/mod/pages.php:1337 +#: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 msgid "Private message" msgstr "Prywatna wiadomość" -#: ../../../../inc/mod/pages.php:1358 +#: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 msgid "PM inbox" msgstr "Odebrane PW" -#: ../../../../inc/mod/pages.php:1679 +#: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 msgid "Config editor" msgstr "Edytor konfiguracji" -#: ../../../../inc/mod/pages.php:1713 +#: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" -#: ../../../../inc/mod/pages.php:1801 +#: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" -#: ../../../../inc/mod/pages.php:1811 +#: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" -#: ../../../../inc/mod/pages.php:1839 +#: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" + +#: ../../../../inc/lib/gettext/examples/pigs_dropin.php:77 +msgid "" +"This is how the story goes.\n" +"\n" +msgstr "" + +#: ../../../../inc/config.php:704 +msgid "Thread has reached its maximum reply limit." +msgstr "Ten temat osiągnął swój maksymalny limit odpowiedzi." + +#: ../../../../inc/config.php:705 +msgid "Thread has reached its maximum image limit." +msgstr "Ten temat osiągnął swój maksymalny limit obrazków." + +#: ../../../../inc/config.php:726 +#, php-format +msgid "That file already exists in this thread!" +msgstr "Ten plik już istnieje w tym temacie!" + +#. Moderator errors +#: ../../../../inc/config.php:733 +#, php-format +msgid "" +"You are only allowed to unban %s users at a time. You tried to unban %u " +"users." +msgstr "" +"Możesz odbanować tylko %s użytkowników na raz. Próbowałeś odbanować %u users." + +#: ../../../../inc/mod/pages.php:1969 +msgid "Debug: Recent posts" +msgstr "Debug: Ostatnie posty" + +#: ../../../../inc/mod/pages.php:1993 +msgid "Debug: SQL" +msgstr "Debug: SQL" From ba270168134b50b955cd99925c899ee8c4096677 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 18 Jul 2013 16:34:22 -0400 Subject: [PATCH 106/289] locale: update polish translation --- inc/locale/pl_PL/LC_MESSAGES/javascript.js | 2 +- inc/locale/pl_PL/LC_MESSAGES/javascript.po | 12 +- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 14100 -> 14191 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 190 ++++++++++++++------- 4 files changed, 134 insertions(+), 70 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.js b/inc/locale/pl_PL/LC_MESSAGES/javascript.js index e1df81c7..44857b98 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.js +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.js @@ -1 +1 @@ -l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144 to","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie"}; \ No newline at end of file +l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie"}; \ No newline at end of file diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.po b/inc/locale/pl_PL/LC_MESSAGES/javascript.po index 2b4fa223..3c16c8d7 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.po +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-03 01:52-0400\n" +"POT-Creation-Date: 2013-07-18 16:31-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,19 +17,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../../js/quick-reply.js:20 +#: ../../../../js/quick-reply.js:20 ../../../../js/quick-reply.js:21 msgid "Submit" msgstr "Wyślij" -#: ../../../../js/quick-reply.js:30 +#: ../../../../js/quick-reply.js:30 ../../../../js/quick-reply.js:31 msgid "Quick reply" msgstr "Szybka odpowiedź" -#: ../../../../js/quick-reply.js:32 +#: ../../../../js/quick-reply.js:32 ../../../../js/quick-reply.js:33 msgid "Posting mode: Replying to >>{0}" msgstr "Tryb postowania: Odpowiedź na >>{0}" -#: ../../../../js/quick-reply.js:32 +#: ../../../../js/quick-reply.js:32 ../../../../js/quick-reply.js:33 msgid "Return" msgstr "Powrót" @@ -110,7 +110,7 @@ msgstr "Plik" #: ../../../../js/quick-post-controls.js:31 msgid "Delete" -msgstr "Usuń to" +msgstr "Usuń" #: ../../../../js/quick-post-controls.js:35 msgid "Reason" diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index b23e55a827144eac782f6a378efd2f1abf66094c..ac57873e8d6086164123d2fe16def54f5eae177f 100644 GIT binary patch delta 4431 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 WiuHHx-Mw3RXzQLq<@4KKj`$A}JdF4N diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index edbb5212..9bc9eece 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-03 01:52-0400\n" +"POT-Creation-Date: 2013-07-18 16:31-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,6 +23,7 @@ msgstr "" #: /var/www/html/Tinyboard/inc/functions.php:972 #: ../../../../inc/functions.php:1041 ../../../../inc/functions.php:1055 #: ../../../../inc/functions.php:1039 ../../../../inc/functions.php:1053 +#: ../../../../inc/functions.php:1068 ../../../../inc/functions.php:1082 msgid "Previous" msgstr "Wstecz" @@ -31,6 +32,7 @@ msgstr "Wstecz" #: /var/www/html/Tinyboard/inc/functions.php:986 #: ../../../../inc/functions.php:1060 ../../../../inc/functions.php:1069 #: ../../../../inc/functions.php:1058 ../../../../inc/functions.php:1067 +#: ../../../../inc/functions.php:1087 ../../../../inc/functions.php:1096 msgid "Next" msgstr "Dalej" @@ -74,209 +76,209 @@ msgstr "Szybka odpowiedź" #. #. Error messages #: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 -#: ../../../../inc/config.php:692 +#: ../../../../inc/config.php:692 ../../../../inc/config.php:698 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." #: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 -#: ../../../../inc/config.php:693 +#: ../../../../inc/config.php:693 ../../../../inc/config.php:699 msgid "You look like a bot." msgstr "Wyglądasz jak bot." #: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 -#: ../../../../inc/config.php:694 +#: ../../../../inc/config.php:694 ../../../../inc/config.php:700 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " "odsyłaczu w nagłówku" #: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 -#: ../../../../inc/config.php:695 +#: ../../../../inc/config.php:695 ../../../../inc/config.php:701 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" #: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 -#: ../../../../inc/config.php:696 +#: ../../../../inc/config.php:696 ../../../../inc/config.php:702 msgid "The body was too long." msgstr "Zawartość jest za długa." #: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 -#: ../../../../inc/config.php:697 +#: ../../../../inc/config.php:697 ../../../../inc/config.php:703 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." #: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 -#: ../../../../inc/config.php:698 +#: ../../../../inc/config.php:698 ../../../../inc/config.php:704 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." #: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 -#: ../../../../inc/config.php:699 +#: ../../../../inc/config.php:699 ../../../../inc/config.php:705 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." #: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 -#: ../../../../inc/config.php:700 +#: ../../../../inc/config.php:700 ../../../../inc/config.php:706 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." #: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 -#: ../../../../inc/config.php:701 +#: ../../../../inc/config.php:701 ../../../../inc/config.php:707 msgid "Invalid board!" msgstr "Niepoprawny board!" #: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 -#: ../../../../inc/config.php:702 +#: ../../../../inc/config.php:702 ../../../../inc/config.php:708 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." #: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 -#: ../../../../inc/config.php:703 +#: ../../../../inc/config.php:703 ../../../../inc/config.php:709 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." #: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 -#: ../../../../inc/config.php:706 +#: ../../../../inc/config.php:706 ../../../../inc/config.php:712 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." #: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 -#: ../../../../inc/config.php:707 +#: ../../../../inc/config.php:707 ../../../../inc/config.php:713 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 -#: ../../../../inc/config.php:708 +#: ../../../../inc/config.php:708 ../../../../inc/config.php:714 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 -#: ../../../../inc/config.php:709 +#: ../../../../inc/config.php:709 ../../../../inc/config.php:715 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" #: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 -#: ../../../../inc/config.php:710 +#: ../../../../inc/config.php:710 ../../../../inc/config.php:716 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 -#: ../../../../inc/config.php:711 +#: ../../../../inc/config.php:711 ../../../../inc/config.php:717 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 -#: ../../../../inc/config.php:712 +#: ../../../../inc/config.php:712 ../../../../inc/config.php:718 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." #: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 -#: ../../../../inc/config.php:713 +#: ../../../../inc/config.php:713 ../../../../inc/config.php:719 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." #: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 -#: ../../../../inc/config.php:714 +#: ../../../../inc/config.php:714 ../../../../inc/config.php:720 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 -#: ../../../../inc/config.php:715 +#: ../../../../inc/config.php:715 ../../../../inc/config.php:721 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 -#: ../../../../inc/config.php:716 +#: ../../../../inc/config.php:716 ../../../../inc/config.php:722 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." #: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 -#: ../../../../inc/config.php:717 +#: ../../../../inc/config.php:717 ../../../../inc/config.php:723 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." #: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 -#: ../../../../inc/config.php:718 +#: ../../../../inc/config.php:718 ../../../../inc/config.php:724 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." #: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 -#: ../../../../inc/config.php:719 +#: ../../../../inc/config.php:719 ../../../../inc/config.php:725 msgid "Wrong password…" msgstr "Niepoprawne hasło" #: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 -#: ../../../../inc/config.php:720 +#: ../../../../inc/config.php:720 ../../../../inc/config.php:726 msgid "Invalid image." msgstr "Niepoprawny obrazek." #: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 -#: ../../../../inc/config.php:721 +#: ../../../../inc/config.php:721 ../../../../inc/config.php:727 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." #: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 -#: ../../../../inc/config.php:722 +#: ../../../../inc/config.php:722 ../../../../inc/config.php:728 msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
Rozmiar twojego pliku: %filesz% " "bajtów" #: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 -#: ../../../../inc/config.php:723 +#: ../../../../inc/config.php:723 ../../../../inc/config.php:729 msgid "The file was too big." msgstr "Plik jest za duży." #: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 -#: ../../../../inc/config.php:724 +#: ../../../../inc/config.php:724 ../../../../inc/config.php:730 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" #: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 -#: ../../../../inc/config.php:725 +#: ../../../../inc/config.php:725 ../../../../inc/config.php:731 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 -#: ../../../../inc/config.php:727 +#: ../../../../inc/config.php:727 ../../../../inc/config.php:733 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." #: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 -#: ../../../../inc/config.php:728 +#: ../../../../inc/config.php:728 ../../../../inc/config.php:734 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " "odrzucony" #: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 -#: ../../../../inc/config.php:729 +#: ../../../../inc/config.php:729 ../../../../inc/config.php:735 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." #: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 -#: ../../../../inc/config.php:730 +#: ../../../../inc/config.php:730 ../../../../inc/config.php:736 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." #: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 -#: ../../../../inc/config.php:734 +#: ../../../../inc/config.php:734 ../../../../inc/config.php:740 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" #: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 -#: ../../../../inc/config.php:735 +#: ../../../../inc/config.php:735 ../../../../inc/config.php:741 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" #: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 -#: ../../../../inc/config.php:736 +#: ../../../../inc/config.php:736 ../../../../inc/config.php:742 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" @@ -284,56 +286,56 @@ msgstr "" "albo zmienione." #: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 -#: ../../../../inc/config.php:737 +#: ../../../../inc/config.php:737 ../../../../inc/config.php:743 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." #: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 -#: ../../../../inc/config.php:738 +#: ../../../../inc/config.php:738 ../../../../inc/config.php:744 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." #: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 -#: ../../../../inc/config.php:739 +#: ../../../../inc/config.php:739 ../../../../inc/config.php:745 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." #: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 -#: ../../../../inc/config.php:740 +#: ../../../../inc/config.php:740 ../../../../inc/config.php:746 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." #: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 -#: ../../../../inc/config.php:741 +#: ../../../../inc/config.php:741 ../../../../inc/config.php:747 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" #: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 -#: ../../../../inc/config.php:742 +#: ../../../../inc/config.php:742 ../../../../inc/config.php:748 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." #: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 -#: ../../../../inc/config.php:743 +#: ../../../../inc/config.php:743 ../../../../inc/config.php:749 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." #: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 -#: ../../../../inc/config.php:744 +#: ../../../../inc/config.php:744 ../../../../inc/config.php:750 msgid "Page not found." msgstr "Strona nie znaleziona." #: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 -#: ../../../../inc/config.php:745 +#: ../../../../inc/config.php:745 ../../../../inc/config.php:751 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 -#: ../../../../inc/config.php:746 +#: ../../../../inc/config.php:746 ../../../../inc/config.php:752 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -444,7 +446,7 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:292 #: /var/www/html/Tinyboard/inc/display.php:408 -#: ../../../../inc/mod/pages.php:1080 +#: ../../../../inc/mod/pages.php:1080 ../../../../inc/mod/pages.php:1105 msgid "Edit post" msgstr "Edytuj post" @@ -564,6 +566,10 @@ msgstr "Komentarz" #. line 73 #. line 61 #. line 73 +#. line 61 +#. line 73 +#. line 61 +#. line 73 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:133 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:142 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:191 @@ -617,6 +623,10 @@ msgstr "Weryfikacja" #. line 87 #. line 3 #. line 87 +#. line 3 +#. line 87 +#. line 3 +#. line 87 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 @@ -686,6 +696,10 @@ msgstr "Flagi" #. line 114 #. line 113 #. line 114 +#. line 113 +#. line 114 +#. line 113 +#. line 114 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 @@ -741,6 +755,10 @@ msgstr "Przyklejony" #. line 118 #. line 117 #. line 118 +#. line 117 +#. line 118 +#. line 117 +#. line 118 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 @@ -796,6 +814,10 @@ msgstr "Zablokowany" #. line 122 #. line 121 #. line 122 +#. line 121 +#. line 122 +#. line 121 +#. line 122 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 @@ -844,12 +866,14 @@ msgstr "Odśwież" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:478 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:415 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:461 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:472 msgid "Reply" msgstr "Odpowiedź" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:511 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:442 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:488 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:499 msgid "1 post" msgid_plural "%count% posts" msgstr[0] "1 post" @@ -859,12 +883,14 @@ msgstr[2] "%count% postów" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:517 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:448 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:494 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 msgid "and" msgstr "oraz" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:528 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:459 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:516 msgid "1 image reply" msgid_plural "%count% image replies" msgstr[0] "1 obrazek" @@ -874,6 +900,7 @@ msgstr[2] "%count% obrazków" #: /var/www/html/Tinyboard/templates/cache/96/13/d13c7abb8d82989e547dc9be1787.php:533 #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:464 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:510 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:521 msgid "omitted. Click reply to view." msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." @@ -885,13 +912,17 @@ msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." #: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:121 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:98 #: ../../../../templates/cache/62/8c/21348d46377c3e1b3f8c476ba376.php:62 +#: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:131 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:115 msgid "Return to dashboard" msgstr "Powróć na tablicę" #. line 27 +#. line 31 #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:165 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:177 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:106 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:123 msgid "Posting mode: Reply" msgstr "Tryb postowania: Odpowiedź" @@ -901,6 +932,8 @@ msgstr "Tryb postowania: Odpowiedź" #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:222 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:109 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:155 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:126 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:172 msgid "Return" msgstr "Powrót" @@ -941,21 +974,25 @@ msgstr "Wiadomości prywatne" #: /var/www/html/Tinyboard/mod.php:136 /var/www/html/Tinyboard/mod.php:874 #: ../../../../inc/mod/pages.php:376 ../../../../inc/mod/pages.php:393 +#: ../../../../inc/mod/pages.php:406 msgid "News" msgstr "Aktualności" #: /var/www/html/Tinyboard/mod.php:141 /var/www/html/Tinyboard/mod.php:1614 #: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 +#: ../../../../inc/mod/pages.php:1682 msgid "Report queue" msgstr "Kolejka zgłoszeń" #: /var/www/html/Tinyboard/mod.php:144 /var/www/html/Tinyboard/mod.php:1882 #: ../../../../inc/mod/pages.php:664 ../../../../inc/mod/pages.php:705 +#: ../../../../inc/mod/pages.php:721 msgid "Ban list" msgstr "Lista banów" #: /var/www/html/Tinyboard/mod.php:147 /var/www/html/Tinyboard/mod.php:1288 #: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 +#: ../../../../inc/mod/pages.php:1394 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -966,6 +1003,7 @@ msgstr "Zmień swoje hasło" #: /var/www/html/Tinyboard/mod.php:152 /var/www/html/Tinyboard/mod.php:477 #: ../../../../inc/mod/pages.php:416 ../../../../inc/mod/pages.php:443 #: ../../../../inc/mod/pages.php:433 ../../../../inc/mod/pages.php:460 +#: ../../../../inc/mod/pages.php:446 ../../../../inc/mod/pages.php:473 msgid "Moderation log" msgstr "Log moderacji" @@ -983,6 +1021,7 @@ msgstr "Pokaż konfigurację" #: /var/www/html/Tinyboard/mod.php:165 /var/www/html/Tinyboard/mod.php:709 #: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 +#: ../../../../inc/mod/pages.php:1830 msgid "Manage themes" msgstr "Zarządzaj dodatkami" @@ -1038,12 +1077,12 @@ msgid "Action" msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 -#: ../../../../inc/mod/pages.php:1789 +#: ../../../../inc/mod/pages.php:1789 ../../../../inc/mod/pages.php:1814 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 -#: ../../../../inc/mod/pages.php:1791 +#: ../../../../inc/mod/pages.php:1791 ../../../../inc/mod/pages.php:1816 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." @@ -1077,7 +1116,8 @@ msgstr "Instaluj" #: /var/www/html/Tinyboard/mod.php:693 ../../../../inc/mod/pages.php:1467 #: ../../../../inc/mod/pages.php:1471 ../../../../inc/mod/pages.php:1567 -#: ../../../../inc/mod/pages.php:1571 +#: ../../../../inc/mod/pages.php:1571 ../../../../inc/mod/pages.php:1592 +#: ../../../../inc/mod/pages.php:1596 msgid "Rebuild" msgstr "Przebuduj" @@ -1098,7 +1138,7 @@ msgid "Post to noticeboard" msgstr "Postuj na tablicy ogłoszeń" #: /var/www/html/Tinyboard/mod.php:792 ../../../../inc/mod/pages.php:316 -#: ../../../../inc/mod/pages.php:333 +#: ../../../../inc/mod/pages.php:333 ../../../../inc/mod/pages.php:346 msgid "Noticeboard" msgstr "Tablica ogłoszeń" @@ -1168,12 +1208,12 @@ msgid "Configuration" msgstr "Konfiguracja" #: /var/www/html/Tinyboard/mod.php:2174 ../../../../inc/mod/pages.php:255 -#: ../../../../inc/mod/pages.php:272 +#: ../../../../inc/mod/pages.php:272 ../../../../inc/mod/pages.php:285 msgid "Couldn't open board after creation." msgstr "Nie można otworzyć boardu po utworzeniu." #: /var/www/html/Tinyboard/mod.php:2678 ../../../../inc/mod/pages.php:759 -#: ../../../../inc/mod/pages.php:800 +#: ../../../../inc/mod/pages.php:800 ../../../../inc/mod/pages.php:823 msgid "Target and source board are the same." msgstr "Docelowy i źródłowy board są takie same." @@ -1182,6 +1222,7 @@ msgid "No board to move to; there is only one." msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." #: ../../../../inc/config.php:689 ../../../../inc/config.php:747 +#: ../../../../inc/config.php:753 msgid "Invalid security token! Please go back and try again." msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." @@ -1190,68 +1231,83 @@ msgid "Confirm action" msgstr "Potwierdź akcję" #: ../../../../inc/mod/pages.php:222 ../../../../inc/mod/pages.php:239 +#: ../../../../inc/mod/pages.php:252 msgid "Edit board" msgstr "Edytuj board" #: ../../../../inc/mod/pages.php:270 ../../../../inc/mod/pages.php:287 +#: ../../../../inc/mod/pages.php:300 msgid "New board" msgstr "Nowy board" #: ../../../../inc/mod/pages.php:586 ../../../../inc/mod/pages.php:612 +#: ../../../../inc/mod/pages.php:628 msgid "IP" msgstr "adres IP" #: ../../../../inc/mod/pages.php:596 ../../../../inc/mod/pages.php:985 #: ../../../../inc/mod/pages.php:622 ../../../../inc/mod/pages.php:1028 +#: ../../../../inc/mod/pages.php:638 ../../../../inc/mod/pages.php:1053 msgid "New ban" msgstr "Nowy ban" #: ../../../../inc/mod/pages.php:919 ../../../../inc/mod/pages.php:962 +#: ../../../../inc/mod/pages.php:987 msgid "Impossible to move thread; there is only one board." msgstr "Nie można przenieść wątku; istnieje tylko jeden board." #: ../../../../inc/mod/pages.php:923 ../../../../inc/mod/pages.php:966 +#: ../../../../inc/mod/pages.php:991 msgid "Move thread" msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1209 ../../../../inc/mod/pages.php:1258 #: ../../../../inc/mod/pages.php:1307 ../../../../inc/mod/pages.php:1356 +#: ../../../../inc/mod/pages.php:1332 ../../../../inc/mod/pages.php:1381 msgid "Edit user" msgstr "Edytuj użytkownika" #. deleted? #: ../../../../inc/mod/pages.php:1333 ../../../../inc/mod/pages.php:1405 #: ../../../../inc/mod/pages.php:1431 ../../../../inc/mod/pages.php:1503 +#: ../../../../inc/mod/pages.php:1456 ../../../../inc/mod/pages.php:1528 msgid "New PM for" msgstr "Nowe PW dla" #: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 +#: ../../../../inc/mod/pages.php:1460 msgid "Private message" msgstr "Prywatna wiadomość" #: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 +#: ../../../../inc/mod/pages.php:1481 msgid "PM inbox" msgstr "Odebrane PW" #: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 +#: ../../../../inc/mod/pages.php:1804 msgid "Config editor" msgstr "Edytor konfiguracji" #: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 +#: ../../../../inc/mod/pages.php:1970 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" #: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 +#: ../../../../inc/mod/pages.php:1892 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" #: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 +#: ../../../../inc/mod/pages.php:1903 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" #: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 +#: ../../../../inc/mod/pages.php:1931 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" @@ -1262,21 +1318,21 @@ msgid "" "\n" msgstr "" -#: ../../../../inc/config.php:704 +#: ../../../../inc/config.php:704 ../../../../inc/config.php:710 msgid "Thread has reached its maximum reply limit." msgstr "Ten temat osiągnął swój maksymalny limit odpowiedzi." -#: ../../../../inc/config.php:705 +#: ../../../../inc/config.php:705 ../../../../inc/config.php:711 msgid "Thread has reached its maximum image limit." msgstr "Ten temat osiągnął swój maksymalny limit obrazków." -#: ../../../../inc/config.php:726 +#: ../../../../inc/config.php:726 ../../../../inc/config.php:732 #, php-format msgid "That file already exists in this thread!" msgstr "Ten plik już istnieje w tym temacie!" #. Moderator errors -#: ../../../../inc/config.php:733 +#: ../../../../inc/config.php:733 ../../../../inc/config.php:739 #, php-format msgid "" "You are only allowed to unban %s users at a time. You tried to unban %u " @@ -1284,10 +1340,18 @@ msgid "" msgstr "" "Możesz odbanować tylko %s użytkowników na raz. Próbowałeś odbanować %u users." -#: ../../../../inc/mod/pages.php:1969 +#: ../../../../inc/mod/pages.php:1969 ../../../../inc/mod/pages.php:1994 msgid "Debug: Recent posts" msgstr "Debug: Ostatnie posty" -#: ../../../../inc/mod/pages.php:1993 +#: ../../../../inc/mod/pages.php:1993 ../../../../inc/mod/pages.php:2018 msgid "Debug: SQL" msgstr "Debug: SQL" + +#. line 28 +#: ../../../../templates/cache/4b/3e/915cc5ac5fe144c331207c656528.php:104 +msgid "1 reply" +msgid_plural "%count% replies" +msgstr[0] "1 odpowiedź" +msgstr[1] "%count% odpowiedzi" +msgstr[2] "%count% odpowiedzi" From b772be7c5b37d5bbfb117e6417bd61847a645eba Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 20 Jul 2013 20:23:55 -0400 Subject: [PATCH 107/289] Update Polish translation --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 14191 -> 18730 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 482 +++++++++++++++++++++- 2 files changed, 463 insertions(+), 19 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index ac57873e8d6086164123d2fe16def54f5eae177f..b1ccc28dccca8e142bb299e8262d99d762ed7270 100644 GIT binary patch literal 18730 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 delta 4800 zcmYk-33OD|0mkt=H4B7IVhABfG7v)u30X*tStKlhh+-0DFDc7FMhK8enn{49=&-8= z1-U3%z@<_IgbEA_C|Il_i>)iCSdMk6+M^zimR2pN*xLV>xmfPWm*2f_-n@6W_h$D- z&)0#_`|(i^8p>&MEvbt!rklr@JzaIwm=CWuCILUfrT87DVX$Z9_-5=)dk^we^9sh| zYj_pDgMIKE_QDI;8Dry(8D>n#^rVu`fg02oT2c3I!%nycqj5dz1`lEsZbe=23CzPo zcnyArUGRHUM>=t^8(!^9L47Y9yK{dtipo$9+>W`p3WwuC)JVTU25pjzV1AWy5M=#h(1Eiz~}Ds zubkgtD#!ngIxm@F{sad&(@{4bgaufDA)Ppvibl|g8qrGZj+>lM;`Ou-V1N7!t1ymX zCF4}oNQ0=3gcT@&H>yEx!dhn? zY7aEH_MNB;uR(R>e$-5E!Lj&^YhOe!?XEluy511fb&5h%G)0xD8{X%AO5}bg8@jlGQ!^ofcf`44fME8xD>MTKhJ^@+vkO@%na$q&Gugne{ zghx@k`BT)AMDs5T2RN%Shju%9aTjXM&!E0{7IpqNuI=p?S?UqUpBcly&U*gmP|=MW zkbPlRqGn(VYN~eO4R{PSqHmo&*vh(LCTb5Apw_k+HRU5wGgggyswShBZZ2vD+c1Iq zo5!eB<3Y^CtLVNuG6Z$v80P}#1E`T5LhXrmhADWqMF{FxyCig6R>;U94b z{ueu*|Lp#eo))4;bR%lbE1gx&iOyQoNN1xSw*{y@vg(|)T#niUr%^Zj3+hJSyW=qfBNt3Y?dlBF z8jr$KoakJSH`6|YdRh`PA{`$dqQV9@<1rQks29T`)D*2jP4QNY#;06+FLEt&7^Cn5 z)W|+T4deo<oS-S%{sm(YXXQ z;^nS=6tyW&pa${*YN@_OZQ4$m#*EYR-;au>q#ozsCZyBmB5KXNe5euSqGqNHJL5Ri z2qvLsa5|31Hq_($2h{oJQ8)Yo)uA77BKFDBd8~hcik{Dnz}uxnK+JJ@Kw}} z-*)ZyuoLaiFb*%Emf(BT_c~`se!P011~d^h14~gIT8~}0zu8Vjzk>TvQ+!e%;Op-A zdE_N#F5m?0&cmw_&qj6lF4Xt7p)S1LwU3}S<8jpW-gd{|M-Ajt)bEe^nhHNqrZex; zt~da7LN01#CC<^P3)P@TQj1!G0P4nzP#sx|`u;|Dd@E`x_M>LzCDe6J<}m*{@D2wU zocS{rVN7o1H((fEPx}s32e+a+{48q5-f-=|p&nbk-ZV2w$TFKk)KboL?I5!M%%iC9 zpUh+a^=^Nk1A0X!@)K5uHK-|HiyFyJ_&S8YKp2c9;dl>18R!fP#0R}KHrQ?g4vCliSsxK z|ACs>vGiJxVJm9Sti@Ce?WV%u%^74+<`Q0mLzs6>`AF39X~?zAI@HLIV-bFg^Dvpl zjkprECyqN$p$76M>S=ioHGoee$3x~zciVCkhF^+Z73#l(^k9biR8i?#yGZeey zEaW%E%p^Z2&k~gfh?YRhrlLVDC+b8S*-38G^Zz21o5>xdf@l=C5Z&Yu8A&XuCBGwD zj`8GGa=BEy%6jyYL^6v!O;ofr^t0nP<#ALQPMWyCc||RXHiTZSDksQxGENQ3T=EMt zk^GXVyiA@Xv&pZ>Gvp<*k_;v)yGR;2NVI$^Q^-9XHNAgb`L$DPbDI2&j3JuhJw%V4 z3aeu_kvcUf<>Y8b?f(}`pgn<1C#_@^Q8^i*LJe7SCmG~^(oFOSZzgMr%B>O1G-v24S1HE3U0wW^Y#=<|KbGgI?Q^XsFi2v_ zRHTfIs4VQ*Qq-`6~6o_%XTj*Uqxw9C^5g&WiMdhEdTJ>hfdb3Jxk zMpn-$&5eP%-X>o#xVW*o?yt*sgg?)y^4Qxlm)h?#N875wz3h^~A4dBdnp)ayZua1q z)WOw#=zFqkRkg^KG~|V2es-*yl^O+q%*+d$_dT=9TrcQ_8BM+glg-=G&C= zB3oNN+k;59&F%g\n" "Language-Team: LANGUAGE \n" @@ -41,11 +41,17 @@ msgid "Unsupported file format: " msgstr "Niewspierany format pliku: " #: /var/www/html/Tinyboard/inc/mod.php:129 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:74 msgid "Create new board" msgstr "Stwórz nowy board" +#. line 71 #: /var/www/html/Tinyboard/inc/mod.php:138 #: /var/www/html/Tinyboard/mod.php:1833 /var/www/html/Tinyboard/mod.php:3036 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:291 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:75 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:150 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:207 msgid "all boards" msgstr "wszystkie boardy" @@ -447,6 +453,7 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:292 #: /var/www/html/Tinyboard/inc/display.php:408 #: ../../../../inc/mod/pages.php:1080 ../../../../inc/mod/pages.php:1105 +#: ../../../../inc/mod/pages.php:1239 msgid "Edit post" msgstr "Edytuj post" @@ -570,6 +577,8 @@ msgstr "Komentarz" #. line 73 #. line 61 #. line 73 +#. line 61 +#. line 73 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:133 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:142 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:191 @@ -627,6 +636,8 @@ msgstr "Weryfikacja" #. line 87 #. line 3 #. line 87 +#. line 3 +#. line 87 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 @@ -700,6 +711,8 @@ msgstr "Flagi" #. line 114 #. line 113 #. line 114 +#. line 113 +#. line 114 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 @@ -759,6 +772,8 @@ msgstr "Przyklejony" #. line 118 #. line 117 #. line 118 +#. line 117 +#. line 118 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 @@ -818,6 +833,8 @@ msgstr "Zablokowany" #. line 122 #. line 121 #. line 122 +#. line 121 +#. line 122 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 @@ -827,6 +844,8 @@ msgstr "Zablokowany" msgid "Raw HTML" msgstr "Czysty HTML" +#. line 129 +#. line 14 #. line 129 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:230 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:23 @@ -834,6 +853,7 @@ msgstr "Czysty HTML" #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:23 #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:23 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:342 +#: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:41 msgid "Password" msgstr "Hasło" @@ -884,6 +904,7 @@ msgstr[2] "%count% postów" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:448 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:494 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:114 msgid "and" msgstr "oraz" @@ -945,10 +966,17 @@ msgid "Delete Post" msgstr "Usuń post" #. line 8 +#. line 106 +#. line 8 +#. line 32 +#. line 48 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:32 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:256 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:90 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:128 msgid "Reason" msgstr "Powód" @@ -961,6 +989,7 @@ msgstr "Zgłoszenie" #: /var/www/html/Tinyboard/mod.php:104 /var/www/html/Tinyboard/mod.php:776 #: /var/www/html/Tinyboard/mod.php:862 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:120 msgid "no subject" msgstr "brak tematu" @@ -974,25 +1003,29 @@ msgstr "Wiadomości prywatne" #: /var/www/html/Tinyboard/mod.php:136 /var/www/html/Tinyboard/mod.php:874 #: ../../../../inc/mod/pages.php:376 ../../../../inc/mod/pages.php:393 -#: ../../../../inc/mod/pages.php:406 +#: ../../../../inc/mod/pages.php:406 ../../../../inc/mod/pages.php:540 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:166 msgid "News" msgstr "Aktualności" #: /var/www/html/Tinyboard/mod.php:141 /var/www/html/Tinyboard/mod.php:1614 #: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 -#: ../../../../inc/mod/pages.php:1682 +#: ../../../../inc/mod/pages.php:1682 ../../../../inc/mod/pages.php:1816 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:207 msgid "Report queue" msgstr "Kolejka zgłoszeń" #: /var/www/html/Tinyboard/mod.php:144 /var/www/html/Tinyboard/mod.php:1882 #: ../../../../inc/mod/pages.php:664 ../../../../inc/mod/pages.php:705 -#: ../../../../inc/mod/pages.php:721 +#: ../../../../inc/mod/pages.php:721 ../../../../inc/mod/pages.php:855 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:224 msgid "Ban list" msgstr "Lista banów" #: /var/www/html/Tinyboard/mod.php:147 /var/www/html/Tinyboard/mod.php:1288 #: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 -#: ../../../../inc/mod/pages.php:1394 +#: ../../../../inc/mod/pages.php:1394 ../../../../inc/mod/pages.php:1528 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:232 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -1004,6 +1037,9 @@ msgstr "Zmień swoje hasło" #: ../../../../inc/mod/pages.php:416 ../../../../inc/mod/pages.php:443 #: ../../../../inc/mod/pages.php:433 ../../../../inc/mod/pages.php:460 #: ../../../../inc/mod/pages.php:446 ../../../../inc/mod/pages.php:473 +#: ../../../../inc/mod/pages.php:580 ../../../../inc/mod/pages.php:607 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:65 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:255 msgid "Moderation log" msgstr "Log moderacji" @@ -1021,15 +1057,28 @@ msgstr "Pokaż konfigurację" #: /var/www/html/Tinyboard/mod.php:165 /var/www/html/Tinyboard/mod.php:709 #: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 -#: ../../../../inc/mod/pages.php:1830 +#: ../../../../inc/mod/pages.php:1830 ../../../../inc/mod/pages.php:1964 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:247 msgid "Manage themes" msgstr "Zarządzaj dodatkami" +#. line 2 +#. line 5 #: /var/www/html/Tinyboard/mod.php:170 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:19 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:24 msgid "Phrase:" msgstr "Wyrażenie:" +#. line 16 +#. line 2 +#. line 106 +#. line 2 #: /var/www/html/Tinyboard/mod.php:172 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:72 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:19 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:286 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:19 msgid "Search" msgstr "Szukaj" @@ -1047,7 +1096,9 @@ msgstr "" msgid "Could not find current version! (Check .installed)" msgstr "Nie można znaleźć obecnej wersji! (Sprawdź .installed)" +#. line 146 #: /var/www/html/Tinyboard/mod.php:233 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:364 msgid "Logout" msgstr "Wyloguj" @@ -1060,7 +1111,11 @@ msgstr "Tablica" msgid "User" msgstr "Użytkownik" +#. line 16 +#. line 134 #: /var/www/html/Tinyboard/mod.php:403 /var/www/html/Tinyboard/mod.php:1801 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:48 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:349 msgid "IP address" msgstr "Adres IP" @@ -1068,21 +1123,37 @@ msgstr "Adres IP" msgid "Ago" msgstr "temu" +#. line 116 +#. line 182 +#. line 65 +#. line 49 +#. line 136 #: /var/www/html/Tinyboard/mod.php:405 /var/www/html/Tinyboard/mod.php:1801 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:278 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:427 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:142 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:131 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:355 msgid "Board" msgstr "Board" +#. line 183 +#. line 137 #: /var/www/html/Tinyboard/mod.php:406 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:430 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:358 msgid "Action" msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 #: ../../../../inc/mod/pages.php:1789 ../../../../inc/mod/pages.php:1814 +#: ../../../../inc/mod/pages.php:1948 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 #: ../../../../inc/mod/pages.php:1791 ../../../../inc/mod/pages.php:1816 +#: ../../../../inc/mod/pages.php:1950 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." @@ -1099,6 +1170,7 @@ msgid "Thumbnail" msgstr "Miniatura" #: /var/www/html/Tinyboard/mod.php:687 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:86 msgid "Actions" msgstr "Akcje" @@ -1117,7 +1189,9 @@ msgstr "Instaluj" #: /var/www/html/Tinyboard/mod.php:693 ../../../../inc/mod/pages.php:1467 #: ../../../../inc/mod/pages.php:1471 ../../../../inc/mod/pages.php:1567 #: ../../../../inc/mod/pages.php:1571 ../../../../inc/mod/pages.php:1592 -#: ../../../../inc/mod/pages.php:1596 +#: ../../../../inc/mod/pages.php:1596 ../../../../inc/mod/pages.php:1726 +#: ../../../../inc/mod/pages.php:1730 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:263 msgid "Rebuild" msgstr "Przebuduj" @@ -1137,8 +1211,11 @@ msgstr "Zawartość" msgid "Post to noticeboard" msgstr "Postuj na tablicy ogłoszeń" +#. line 31 #: /var/www/html/Tinyboard/mod.php:792 ../../../../inc/mod/pages.php:316 #: ../../../../inc/mod/pages.php:333 ../../../../inc/mod/pages.php:346 +#: ../../../../inc/mod/pages.php:480 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:96 msgid "Noticeboard" msgstr "Tablica ogłoszeń" @@ -1162,7 +1239,9 @@ msgstr "nieprzeczytane" msgid "ID" msgstr "ID" +#. line 6 #: /var/www/html/Tinyboard/mod.php:1221 +#: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:28 msgid "Username" msgstr "Nazwa użytkownika" @@ -1170,7 +1249,9 @@ msgstr "Nazwa użytkownika" msgid "Type" msgstr "Typ" +#. line 2 #: /var/www/html/Tinyboard/mod.php:1221 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:19 msgid "Boards" msgstr "Boardy" @@ -1186,15 +1267,37 @@ msgstr "Stwórz nowego użytkownika" msgid "Could not re-login after changing password. (?)" msgstr "Nie można się ponownie zalogować po zmianie hasła. (?)" +#. line 126 +#. line 50 #: /var/www/html/Tinyboard/mod.php:1801 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:300 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:134 msgid "Set" msgstr "Ustawione" +#. line 130 +#. line 52 #: /var/www/html/Tinyboard/mod.php:1801 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:309 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:140 msgid "Expires" msgstr "Wygasa" +#. line 24 +#. line 62 +#. line 150 +#. line 180 +#. line 17 +#. line 54 +#. line 133 #: /var/www/html/Tinyboard/mod.php:1801 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:74 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:169 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:352 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:421 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:51 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:146 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:346 msgid "Staff" msgstr "Ekipa" @@ -1204,16 +1307,19 @@ msgstr "Cache jest wyłączone." #: /var/www/html/Tinyboard/mod.php:1966 /var/www/html/Tinyboard/mod.php:2057 #: /var/www/html/Tinyboard/mod.php:2106 /var/www/html/Tinyboard/mod.php:2110 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:271 msgid "Configuration" msgstr "Konfiguracja" #: /var/www/html/Tinyboard/mod.php:2174 ../../../../inc/mod/pages.php:255 #: ../../../../inc/mod/pages.php:272 ../../../../inc/mod/pages.php:285 +#: ../../../../inc/mod/pages.php:419 msgid "Couldn't open board after creation." msgstr "Nie można otworzyć boardu po utworzeniu." #: /var/www/html/Tinyboard/mod.php:2678 ../../../../inc/mod/pages.php:759 #: ../../../../inc/mod/pages.php:800 ../../../../inc/mod/pages.php:823 +#: ../../../../inc/mod/pages.php:957 msgid "Target and source board are the same." msgstr "Docelowy i źródłowy board są takie same." @@ -1231,39 +1337,49 @@ msgid "Confirm action" msgstr "Potwierdź akcję" #: ../../../../inc/mod/pages.php:222 ../../../../inc/mod/pages.php:239 -#: ../../../../inc/mod/pages.php:252 +#: ../../../../inc/mod/pages.php:252 ../../../../inc/mod/pages.php:386 msgid "Edit board" msgstr "Edytuj board" #: ../../../../inc/mod/pages.php:270 ../../../../inc/mod/pages.php:287 -#: ../../../../inc/mod/pages.php:300 +#: ../../../../inc/mod/pages.php:300 ../../../../inc/mod/pages.php:434 msgid "New board" msgstr "Nowy board" +#. line 102 +#. line 20 #: ../../../../inc/mod/pages.php:586 ../../../../inc/mod/pages.php:612 -#: ../../../../inc/mod/pages.php:628 +#: ../../../../inc/mod/pages.php:628 ../../../../inc/mod/pages.php:762 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:247 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:65 msgid "IP" msgstr "adres IP" +#. line 169 #: ../../../../inc/mod/pages.php:596 ../../../../inc/mod/pages.php:985 #: ../../../../inc/mod/pages.php:622 ../../../../inc/mod/pages.php:1028 #: ../../../../inc/mod/pages.php:638 ../../../../inc/mod/pages.php:1053 +#: ../../../../inc/mod/pages.php:772 ../../../../inc/mod/pages.php:1187 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:398 msgid "New ban" msgstr "Nowy ban" #: ../../../../inc/mod/pages.php:919 ../../../../inc/mod/pages.php:962 -#: ../../../../inc/mod/pages.php:987 +#: ../../../../inc/mod/pages.php:987 ../../../../inc/mod/pages.php:1121 msgid "Impossible to move thread; there is only one board." msgstr "Nie można przenieść wątku; istnieje tylko jeden board." +#. line 39 #: ../../../../inc/mod/pages.php:923 ../../../../inc/mod/pages.php:966 -#: ../../../../inc/mod/pages.php:991 +#: ../../../../inc/mod/pages.php:991 ../../../../inc/mod/pages.php:1125 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:106 msgid "Move thread" msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1209 ../../../../inc/mod/pages.php:1258 #: ../../../../inc/mod/pages.php:1307 ../../../../inc/mod/pages.php:1356 #: ../../../../inc/mod/pages.php:1332 ../../../../inc/mod/pages.php:1381 +#: ../../../../inc/mod/pages.php:1466 ../../../../inc/mod/pages.php:1515 msgid "Edit user" msgstr "Edytuj użytkownika" @@ -1271,43 +1387,46 @@ msgstr "Edytuj użytkownika" #: ../../../../inc/mod/pages.php:1333 ../../../../inc/mod/pages.php:1405 #: ../../../../inc/mod/pages.php:1431 ../../../../inc/mod/pages.php:1503 #: ../../../../inc/mod/pages.php:1456 ../../../../inc/mod/pages.php:1528 +#: ../../../../inc/mod/pages.php:1590 ../../../../inc/mod/pages.php:1662 msgid "New PM for" msgstr "Nowe PW dla" #: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 -#: ../../../../inc/mod/pages.php:1460 +#: ../../../../inc/mod/pages.php:1460 ../../../../inc/mod/pages.php:1594 msgid "Private message" msgstr "Prywatna wiadomość" +#. line 62 #: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 -#: ../../../../inc/mod/pages.php:1481 +#: ../../../../inc/mod/pages.php:1481 ../../../../inc/mod/pages.php:1615 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:171 msgid "PM inbox" msgstr "Odebrane PW" #: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 -#: ../../../../inc/mod/pages.php:1804 +#: ../../../../inc/mod/pages.php:1804 ../../../../inc/mod/pages.php:1938 msgid "Config editor" msgstr "Edytor konfiguracji" #: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 -#: ../../../../inc/mod/pages.php:1970 +#: ../../../../inc/mod/pages.php:1970 ../../../../inc/mod/pages.php:2104 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" #: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 -#: ../../../../inc/mod/pages.php:1892 +#: ../../../../inc/mod/pages.php:1892 ../../../../inc/mod/pages.php:2026 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" #: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 -#: ../../../../inc/mod/pages.php:1903 +#: ../../../../inc/mod/pages.php:1903 ../../../../inc/mod/pages.php:2037 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" #: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 -#: ../../../../inc/mod/pages.php:1931 +#: ../../../../inc/mod/pages.php:1931 ../../../../inc/mod/pages.php:2065 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" @@ -1341,10 +1460,12 @@ msgstr "" "Możesz odbanować tylko %s użytkowników na raz. Próbowałeś odbanować %u users." #: ../../../../inc/mod/pages.php:1969 ../../../../inc/mod/pages.php:1994 +#: ../../../../inc/mod/pages.php:2128 msgid "Debug: Recent posts" msgstr "Debug: Ostatnie posty" #: ../../../../inc/mod/pages.php:1993 ../../../../inc/mod/pages.php:2018 +#: ../../../../inc/mod/pages.php:2152 msgid "Debug: SQL" msgstr "Debug: SQL" @@ -1355,3 +1476,326 @@ msgid_plural "%count% replies" msgstr[0] "1 odpowiedź" msgstr[1] "%count% odpowiedzi" msgstr[2] "%count% odpowiedzi" + +#. $results now contains the search results +#: ../../../../inc/mod/pages.php:290 +msgid "Search results" +msgstr "Wyniki wyszukiwania" + +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:31 +msgid "Posts" +msgstr "Posty" + +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:41 +msgid "IP address notes" +msgstr "Notatki adresu IP" + +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:53 +msgid "Bans" +msgstr "Bany" + +#. line 18 +#: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:76 +msgid "" +"(Search is case-insensitive and based on keywords. To match exact phrases, " +"use \"quotes\". Use an asterisk (*) for wildcard.)" +msgstr "" +"(Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach kluczowych. " +"Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki (*) jako symbolu " +"wieloznacznego.)" + +#. line 8 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:32 +msgid "Select board" +msgstr "Wybierz board" + +#. line 17 +#: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:61 +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 "" +"Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach kluczowych. " +"Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki (*) jako symbolu " +"wieloznacznego.

Możesz zastosować poniższe " +"filtry do swojego wyszukiwania: id, thread, " +"subject, i name. Aby wykorzystać filtr, " +"po prostu dodaj do swojego zapytania, na przykład: name:Anonymous " +"albo subject:\"Jakiś temat\". Symbole wieloznaczne nie mogą być " +"wykorzystane w filtrach." + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:57 +msgid "edit" +msgstr "edytuj" + +#. line 26 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:84 +msgid "Messages" +msgstr "Wiadomości" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:161 +msgid "View all noticeboard entries" +msgstr "Pokaż wszystkie wpisy na tablicy ogłoszeń" + +#. line 70 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:192 +msgid "Administration" +msgstr "Administracja" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:239 +msgid "Change password" +msgstr "Zmień hasło" + +#. line 118 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:308 +msgid "Debug" +msgstr "Debug" + +#. line 120 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:312 +msgid "Anti-spam" +msgstr "Antyspam" + +#. line 121 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:315 +msgid "Recent posts" +msgstr "Ostatnie posty" + +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:321 +msgid "SQL" +msgstr "SQL" + +#. line 143 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:359 +msgid "User account" +msgstr "Konto użytkownika" + +#. line 25 +#. line 67 +#. line 18 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:77 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:179 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:54 +msgid "Note" +msgstr "Notka" + +#. line 26 +#. line 19 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:80 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:57 +msgid "Date" +msgstr "Data" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:112 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:365 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:457 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:88 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:321 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:385 +msgid "deleted?" +msgstr "usunięty?" + +#. line 49 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:142 +msgid "remove" +msgstr "usuń" + +#. line 75 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:189 +msgid "New note" +msgstr "Nowa notka" + +#. line 92 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:226 +msgid "Status" +msgstr "Status" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:233 +msgid "Expired" +msgstr "Wygasły" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:238 +msgid "Active" +msgstr "Aktywny" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:269 +msgid "no reason" +msgstr "brak powodu" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:322 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:246 +msgid "never" +msgstr "nigdy" + +#. line 140 +#. line 53 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:331 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:143 +msgid "Seen" +msgstr "Widziano" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:338 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:273 +msgid "Yes" +msgstr "Tak" + +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:343 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:278 +msgid "No" +msgstr "Nie" + +#. line 161 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:378 +msgid "Remove ban" +msgstr "Usuń ban" + +#. line 181 +#. line 135 +#: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:424 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:352 +msgid "Time" +msgstr "Czas" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:41 +msgid "You were banned! ;_;" +msgstr "Byłeś zbanowany! ;_;" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:46 +msgid "You are banned! ;_;" +msgstr "Jesteś zbanowany! ;_;" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:56 +msgid "You were banned from" +msgstr "Byłeś zbanowany na" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:61 +msgid "You have been banned from" +msgstr "Zostałeś zbanowany na" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:83 +msgid "for the following reason:" +msgstr "z następującego powodu:" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:88 +msgid "for an unspecified reason." +msgstr "z nieokreślonego powodu." + +#. line 32 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:109 +msgid "Your ban was filed on" +msgstr "Twój ban został nałożony" + +#. line 51 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:120 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:150 +msgid "has since expired. Refresh the page to continue." +msgstr "już wygasł. Odśwież stronę, aby kontynuować." + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:125 +msgid "expires" +msgstr "wygasa" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:128 +msgid "from now, which is on" +msgstr "od teraz, czyli" + +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:176 +msgid "will not expire" +msgstr "nie wygaśnie" + +#. line 78 +#: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:184 +msgid "Your IP address is" +msgstr "Twój adres IP to" + +#. line 23 +#: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:52 +msgid "Continue" +msgstr "Kontynuuj" + +#. line 6 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:30 +msgid "Thread ID" +msgstr "ID wątku" + +#. line 14 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:44 +msgid "Leave shadow thread" +msgstr "Pozostaw wątek-cień" + +#. line 18 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:50 +msgid "locks thread; replies to it with a link." +msgstr "blokuje wątek; umieszcza link do nowego." + +#. line 22 +#: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:56 +msgid "Target board" +msgstr "Board docelowy" + +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:66 +msgid "(or subnet)" +msgstr "(lub podsieć)" + +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:80 +msgid "hidden" +msgstr "ukryty" + +#. line 41 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:107 +msgid "Message" +msgstr "Wiadomość" + +#. line 46 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:117 +msgid "public; attached to post" +msgstr "publiczny; dołączony do posta" + +#. line 58 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:133 +msgid "Length" +msgstr "Długość" + +#. line 88 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:192 +msgid "New Ban" +msgstr "Nowy ban" + +#. line 47 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:125 +msgid "IP address/mask" +msgstr "Adres IP lub maska" + +#. line 51 +#: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:137 +msgid "Duration" +msgstr "Czas trwania" + +#: ../../../../search.php:5 +msgid "Post search is disabled" +msgstr "Wyszukiwanie postów jest wyłączone" + +#: ../../../../search.php:25 ../../../../search.php:31 +msgid "Wait a while before searching again, please." +msgstr "Proszę poczekać chwilę przed ponownym szukaniem." + +#: ../../../../search.php:128 +msgid "Query too broad." +msgstr "Zapytanie zbyt szerokie." + +#: ../../../../search.php:149 +#, php-format +msgid "%d result in" +msgid_plural "%d results in" +msgstr[0] "%d wynik na" +msgstr[1] "%d wyniki na" +msgstr[2] "%d wyników na" + +#: ../../../../search.php:160 +msgid "No results." +msgstr "Brak wyników." From 22556f43f5fd845e3d0536b79c263290a70f3672 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:01:42 -0400 Subject: [PATCH 108/289] Update Polish locale --- inc/locale/pl_PL/LC_MESSAGES/javascript.js | 2 +- inc/locale/pl_PL/LC_MESSAGES/javascript.po | 26 +- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 18730 -> 19790 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 338 +++++++++++++++++++-- 4 files changed, 342 insertions(+), 24 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.js b/inc/locale/pl_PL/LC_MESSAGES/javascript.js index 44857b98..caf4a66c 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.js +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.js @@ -1 +1 @@ -l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie"}; \ No newline at end of file +l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to >>{0}<\/small>":"Tryb postowania: Odpowied\u017a na >>{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie","hide":"ukryj","show":"poka\u017c","hidden":"ukryte","Show images":"Poka\u017c obrazki","Hide images":"Ukryj obrazki"}; \ No newline at end of file diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.po b/inc/locale/pl_PL/LC_MESSAGES/javascript.po index 3c16c8d7..482ec45f 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.po +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-18 16:31-0400\n" +"POT-Creation-Date: 2013-07-27 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,7 +41,7 @@ msgstr "Kliknij Odpowiedź aby zobaczyć." msgid "Click to expand" msgstr "Kliknij aby rozwinąć" -#: ../../../../js/expand.js:41 +#: ../../../../js/expand.js:41 ../../../../js/expand.js:45 msgid "Hide expanded replies" msgstr "Schowaj rozwinięte odpowiedzi" @@ -104,7 +104,7 @@ msgstr "Hasło" msgid "Delete file only" msgstr "Usuń tylko plik" -#: ../../../../js/quick-post-controls.js:30 +#: ../../../../js/quick-post-controls.js:30 ../../../../js/hide-images.js:50 msgid "File" msgstr "Plik" @@ -119,3 +119,23 @@ msgstr "Powód" #: ../../../../js/quick-post-controls.js:37 msgid "Report" msgstr "Zgłoszenie" + +#: ../../../../js/hide-images.js:50 +msgid "hide" +msgstr "ukryj" + +#: ../../../../js/hide-images.js:56 +msgid "show" +msgstr "pokaż" + +#: ../../../../js/toggle-images.js:41 +msgid "hidden" +msgstr "ukryte" + +#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70 +msgid "Show images" +msgstr "Pokaż obrazki" + +#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70 +msgid "Hide images" +msgstr "Ukryj obrazki" diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index b1ccc28dccca8e142bb299e8262d99d762ed7270..2a31d64e2b739bc537600e64426544aa1e58a4fe 100644 GIT binary patch delta 6892 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 delta 5888 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 diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 8af9b27b..ca4f7ea4 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-20 20:07-0400\n" +"POT-Creation-Date: 2013-07-27 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -52,10 +52,11 @@ msgstr "Stwórz nowy board" #: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:75 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:150 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:207 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:155 msgid "all boards" msgstr "wszystkie boardy" -#: /var/www/html/Tinyboard/inc/config.php:305 +#: /var/www/html/Tinyboard/inc/config.php:305 ../../../../inc/config.php:330 msgid "You have been muted for unoriginal content." msgstr "Zostałeś zagłuszony za nieoryginalną treść." @@ -83,16 +84,19 @@ msgstr "Szybka odpowiedź" #. Error messages #: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 #: ../../../../inc/config.php:692 ../../../../inc/config.php:698 +#: ../../../../inc/config.php:695 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." #: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 #: ../../../../inc/config.php:693 ../../../../inc/config.php:699 +#: ../../../../inc/config.php:696 msgid "You look like a bot." msgstr "Wyglądasz jak bot." #: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 #: ../../../../inc/config.php:694 ../../../../inc/config.php:700 +#: ../../../../inc/config.php:697 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " @@ -100,135 +104,161 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 #: ../../../../inc/config.php:695 ../../../../inc/config.php:701 +#: ../../../../inc/config.php:698 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" #: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 #: ../../../../inc/config.php:696 ../../../../inc/config.php:702 +#: ../../../../inc/config.php:699 msgid "The body was too long." msgstr "Zawartość jest za długa." #: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 #: ../../../../inc/config.php:697 ../../../../inc/config.php:703 +#: ../../../../inc/config.php:700 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." #: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 #: ../../../../inc/config.php:698 ../../../../inc/config.php:704 +#: ../../../../inc/config.php:701 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." #: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 #: ../../../../inc/config.php:699 ../../../../inc/config.php:705 +#: ../../../../inc/config.php:702 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." #: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 #: ../../../../inc/config.php:700 ../../../../inc/config.php:706 +#: ../../../../inc/config.php:703 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." #: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 #: ../../../../inc/config.php:701 ../../../../inc/config.php:707 +#: ../../../../inc/config.php:704 msgid "Invalid board!" msgstr "Niepoprawny board!" #: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 #: ../../../../inc/config.php:702 ../../../../inc/config.php:708 +#: ../../../../inc/config.php:705 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." #: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 #: ../../../../inc/config.php:703 ../../../../inc/config.php:709 +#: ../../../../inc/config.php:706 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." #: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 #: ../../../../inc/config.php:706 ../../../../inc/config.php:712 +#: ../../../../inc/config.php:709 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." #: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 #: ../../../../inc/config.php:707 ../../../../inc/config.php:713 +#: ../../../../inc/config.php:710 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 #: ../../../../inc/config.php:708 ../../../../inc/config.php:714 +#: ../../../../inc/config.php:711 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 #: ../../../../inc/config.php:709 ../../../../inc/config.php:715 +#: ../../../../inc/config.php:712 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" #: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 #: ../../../../inc/config.php:710 ../../../../inc/config.php:716 +#: ../../../../inc/config.php:713 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #: ../../../../inc/config.php:711 ../../../../inc/config.php:717 +#: ../../../../inc/config.php:714 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #: ../../../../inc/config.php:712 ../../../../inc/config.php:718 +#: ../../../../inc/config.php:715 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." #: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 #: ../../../../inc/config.php:713 ../../../../inc/config.php:719 +#: ../../../../inc/config.php:716 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." #: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 #: ../../../../inc/config.php:714 ../../../../inc/config.php:720 +#: ../../../../inc/config.php:717 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 #: ../../../../inc/config.php:715 ../../../../inc/config.php:721 +#: ../../../../inc/config.php:718 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 #: ../../../../inc/config.php:716 ../../../../inc/config.php:722 +#: ../../../../inc/config.php:719 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." #: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 #: ../../../../inc/config.php:717 ../../../../inc/config.php:723 +#: ../../../../inc/config.php:720 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." #: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 #: ../../../../inc/config.php:718 ../../../../inc/config.php:724 +#: ../../../../inc/config.php:721 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." #: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 #: ../../../../inc/config.php:719 ../../../../inc/config.php:725 +#: ../../../../inc/config.php:722 msgid "Wrong password…" msgstr "Niepoprawne hasło" #: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 #: ../../../../inc/config.php:720 ../../../../inc/config.php:726 +#: ../../../../inc/config.php:723 msgid "Invalid image." msgstr "Niepoprawny obrazek." #: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 #: ../../../../inc/config.php:721 ../../../../inc/config.php:727 +#: ../../../../inc/config.php:724 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." #: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 #: ../../../../inc/config.php:722 ../../../../inc/config.php:728 +#: ../../../../inc/config.php:725 msgid "Maximum file size: %maxsz% bytes
Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
Rozmiar twojego pliku: %filesz% " @@ -236,28 +266,33 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 #: ../../../../inc/config.php:723 ../../../../inc/config.php:729 +#: ../../../../inc/config.php:726 msgid "The file was too big." msgstr "Plik jest za duży." #: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 #: ../../../../inc/config.php:724 ../../../../inc/config.php:730 +#: ../../../../inc/config.php:727 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" #: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 #: ../../../../inc/config.php:725 ../../../../inc/config.php:731 +#: ../../../../inc/config.php:728 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 #: ../../../../inc/config.php:727 ../../../../inc/config.php:733 +#: ../../../../inc/config.php:730 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." #: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 #: ../../../../inc/config.php:728 ../../../../inc/config.php:734 +#: ../../../../inc/config.php:731 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " @@ -265,26 +300,31 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 #: ../../../../inc/config.php:729 ../../../../inc/config.php:735 +#: ../../../../inc/config.php:732 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." #: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 #: ../../../../inc/config.php:730 ../../../../inc/config.php:736 +#: ../../../../inc/config.php:733 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." #: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 #: ../../../../inc/config.php:734 ../../../../inc/config.php:740 +#: ../../../../inc/config.php:737 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" #: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 #: ../../../../inc/config.php:735 ../../../../inc/config.php:741 +#: ../../../../inc/config.php:738 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" #: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 #: ../../../../inc/config.php:736 ../../../../inc/config.php:742 +#: ../../../../inc/config.php:739 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" @@ -293,55 +333,65 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 #: ../../../../inc/config.php:737 ../../../../inc/config.php:743 +#: ../../../../inc/config.php:740 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." #: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 #: ../../../../inc/config.php:738 ../../../../inc/config.php:744 +#: ../../../../inc/config.php:741 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." #: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 #: ../../../../inc/config.php:739 ../../../../inc/config.php:745 +#: ../../../../inc/config.php:742 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." #: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 #: ../../../../inc/config.php:740 ../../../../inc/config.php:746 +#: ../../../../inc/config.php:743 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." #: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 #: ../../../../inc/config.php:741 ../../../../inc/config.php:747 +#: ../../../../inc/config.php:744 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" #: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 #: ../../../../inc/config.php:742 ../../../../inc/config.php:748 +#: ../../../../inc/config.php:745 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." #: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 #: ../../../../inc/config.php:743 ../../../../inc/config.php:749 +#: ../../../../inc/config.php:746 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." #: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 #: ../../../../inc/config.php:744 ../../../../inc/config.php:750 +#: ../../../../inc/config.php:747 msgid "Page not found." msgstr "Strona nie znaleziona." #: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 #: ../../../../inc/config.php:745 ../../../../inc/config.php:751 +#: ../../../../inc/config.php:748 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 #: ../../../../inc/config.php:746 ../../../../inc/config.php:752 +#: ../../../../inc/config.php:749 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -377,7 +427,9 @@ msgstr "[Edytuj]" msgid "[Move]" msgstr "[Przenieś]" -#: /var/www/html/Tinyboard/inc/config.php:801 +#. Default public ban message. +#. In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). +#: /var/www/html/Tinyboard/inc/config.php:801 ../../../../inc/config.php:911 msgid "USER WAS BANNED FOR THIS POST" msgstr "UŻYTKOWNIK ZOSTAŁ ZBANOWANY ZA TEGO POSTA" @@ -453,7 +505,7 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:292 #: /var/www/html/Tinyboard/inc/display.php:408 #: ../../../../inc/mod/pages.php:1080 ../../../../inc/mod/pages.php:1105 -#: ../../../../inc/mod/pages.php:1239 +#: ../../../../inc/mod/pages.php:1239 ../../../../inc/mod/pages.php:1242 msgid "Edit post" msgstr "Edytuj post" @@ -485,12 +537,17 @@ msgstr "Zablokuj wątek" msgid "Move thread to another board" msgstr "Przenieś wątek na inny board" +#. line 11 +#. line 7 #. line 11 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:48 #: /var/www/html/Tinyboard/mod.php:667 /var/www/html/Tinyboard/mod.php:750 #: /var/www/html/Tinyboard/mod.php:833 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:55 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:55 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:31 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:36 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:33 msgid "Name" msgstr "Nazwa" @@ -501,11 +558,14 @@ msgstr "Nazwa" msgid "Email" msgstr "E-mail" +#. line 34 +#. line 23 #. line 34 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:96 #: /var/www/html/Tinyboard/mod.php:753 /var/www/html/Tinyboard/mod.php:839 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:95 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:116 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:63 msgid "Subject" msgstr "Temat" @@ -579,6 +639,7 @@ msgstr "Komentarz" #. line 73 #. line 61 #. line 73 +#. line 61 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:133 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:142 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:191 @@ -638,26 +699,35 @@ msgstr "Weryfikacja" #. line 87 #. line 3 #. line 87 +#. line 3 +#. line 72 +#. line 3 +#. line 72 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:22 #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:22 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:250 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:214 msgid "File" msgstr "Plik" #. line 97 +#. line 82 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:163 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:183 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:268 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:232 msgid "Embed" msgstr "Osadź" #. line 109 +#. line 94 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:179 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:206 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:291 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:255 msgid "Flags" msgstr "Flagi" @@ -713,12 +783,18 @@ msgstr "Flagi" #. line 114 #. line 113 #. line 114 +#. line 98 +#. line 99 +#. line 98 +#. line 99 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:218 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:300 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:303 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:264 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:267 msgid "Sticky" msgstr "Przyklejony" @@ -774,12 +850,18 @@ msgstr "Przyklejony" #. line 118 #. line 117 #. line 118 +#. line 102 +#. line 103 +#. line 102 +#. line 103 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:230 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:312 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:315 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:276 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:279 msgid "Lock" msgstr "Zablokowany" @@ -835,18 +917,25 @@ msgstr "Zablokowany" #. line 122 #. line 121 #. line 122 +#. line 106 +#. line 107 +#. line 106 +#. line 107 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:242 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:324 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:327 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:288 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:291 msgid "Raw HTML" msgstr "Czysty HTML" #. line 129 #. line 14 #. line 129 +#. line 114 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:230 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:23 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:257 @@ -854,13 +943,16 @@ msgstr "Czysty HTML" #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:23 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:342 #: ../../../../templates/cache/04/54/656aa217f895c90eae78024fa060.php:41 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:306 msgid "Password" msgstr "Hasło" #. line 134 +#. line 119 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:236 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:266 #: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:351 +#: ../../../../templates/cache/0c/37/9331df01df7c2986d77a02d3beb0.php:315 msgid "(For file deletion.)" msgstr "(do usuwania postów)" @@ -887,6 +979,7 @@ msgstr "Odśwież" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:415 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:461 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:472 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:506 msgid "Reply" msgstr "Odpowiedź" @@ -894,6 +987,7 @@ msgstr "Odpowiedź" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:442 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:488 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:499 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:533 msgid "1 post" msgid_plural "%count% posts" msgstr[0] "1 post" @@ -905,6 +999,7 @@ msgstr[2] "%count% postów" #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:494 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 #: ../../../../templates/cache/e5/22/4711dd22e4c786b4de405db7a449.php:114 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:539 msgid "and" msgstr "oraz" @@ -912,6 +1007,7 @@ msgstr "oraz" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:459 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:505 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:516 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:550 msgid "1 image reply" msgid_plural "%count% image replies" msgstr[0] "1 obrazek" @@ -922,6 +1018,7 @@ msgstr[2] "%count% obrazków" #: ../../../../templates/cache/cf/0c/61af144f478f5c035cb3a2799e48.php:464 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:510 #: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:521 +#: ../../../../templates/cache/d8/f2/7780eb1adcdbda7e332659e3fb4f.php:555 msgid "omitted. Click reply to view." msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." @@ -935,15 +1032,19 @@ msgstr "pominięte. Kliknij Odpowiedź aby zobaczyć." #: ../../../../templates/cache/62/8c/21348d46377c3e1b3f8c476ba376.php:62 #: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:131 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:115 +#: ../../../../templates/cache/f5/e3/343716327c6183713f70a3fb57f1.php:132 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:116 msgid "Return to dashboard" msgstr "Powróć na tablicę" #. line 27 #. line 31 +#. line 32 #: /var/www/html/Tinyboard/templates/cache/0b/22/d0c24fb343dd5fe77600d77dcc1b.php:165 #: ../../../../templates/cache/82/20/1c3352a2eb8f4503c0f7634bca15.php:177 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:106 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:123 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:124 msgid "Posting mode: Reply" msgstr "Tryb postowania: Odpowiedź" @@ -955,6 +1056,8 @@ msgstr "Tryb postowania: Odpowiedź" #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:155 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:126 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:172 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:127 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:173 msgid "Return" msgstr "Powrót" @@ -970,6 +1073,12 @@ msgstr "Usuń post" #. line 8 #. line 32 #. line 48 +#. line 106 +#. line 8 +#. line 32 +#. line 106 +#. line 8 +#. line 32 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 @@ -990,6 +1099,8 @@ msgstr "Zgłoszenie" #: /var/www/html/Tinyboard/mod.php:104 /var/www/html/Tinyboard/mod.php:776 #: /var/www/html/Tinyboard/mod.php:862 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:120 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:125 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:89 msgid "no subject" msgstr "brak tematu" @@ -1012,6 +1123,7 @@ msgstr "Aktualności" #: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 #: ../../../../inc/mod/pages.php:1682 ../../../../inc/mod/pages.php:1816 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:207 +#: ../../../../inc/mod/pages.php:1831 msgid "Report queue" msgstr "Kolejka zgłoszeń" @@ -1026,6 +1138,7 @@ msgstr "Lista banów" #: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 #: ../../../../inc/mod/pages.php:1394 ../../../../inc/mod/pages.php:1528 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:232 +#: ../../../../inc/mod/pages.php:1543 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -1059,11 +1172,13 @@ msgstr "Pokaż konfigurację" #: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 #: ../../../../inc/mod/pages.php:1830 ../../../../inc/mod/pages.php:1964 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:247 +#: ../../../../inc/mod/pages.php:1979 msgid "Manage themes" msgstr "Zarządzaj dodatkami" #. line 2 #. line 5 +#. line 2 #: /var/www/html/Tinyboard/mod.php:170 #: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:19 #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:24 @@ -1074,11 +1189,14 @@ msgstr "Wyrażenie:" #. line 2 #. line 106 #. line 2 +#. line 16 +#. line 106 #: /var/www/html/Tinyboard/mod.php:172 #: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:72 #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:19 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:286 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:19 +#: ../../../../search.php:165 msgid "Search" msgstr "Szukaj" @@ -1097,8 +1215,10 @@ msgid "Could not find current version! (Check .installed)" msgstr "Nie można znaleźć obecnej wersji! (Sprawdź .installed)" #. line 146 +#. line 158 #: /var/www/html/Tinyboard/mod.php:233 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:364 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:397 msgid "Logout" msgstr "Wyloguj" @@ -1128,17 +1248,25 @@ msgstr "temu" #. line 65 #. line 49 #. line 136 +#. line 116 +#. line 182 +#. line 65 +#. line 116 +#. line 182 +#. line 65 #: /var/www/html/Tinyboard/mod.php:405 /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:278 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:427 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:142 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:131 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:355 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:147 msgid "Board" msgstr "Board" #. line 183 #. line 137 +#. line 183 #: /var/www/html/Tinyboard/mod.php:406 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:430 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:358 @@ -1147,42 +1275,54 @@ msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 #: ../../../../inc/mod/pages.php:1789 ../../../../inc/mod/pages.php:1814 -#: ../../../../inc/mod/pages.php:1948 +#: ../../../../inc/mod/pages.php:1948 ../../../../inc/mod/pages.php:1963 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 #: ../../../../inc/mod/pages.php:1791 ../../../../inc/mod/pages.php:1816 -#: ../../../../inc/mod/pages.php:1950 +#: ../../../../inc/mod/pages.php:1950 ../../../../inc/mod/pages.php:1965 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." +#. line 11 #: /var/www/html/Tinyboard/mod.php:671 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:42 msgid "Version" msgstr "Wersja" +#. line 15 #: /var/www/html/Tinyboard/mod.php:675 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:51 msgid "Description" msgstr "Opis" +#. line 19 #: /var/www/html/Tinyboard/mod.php:679 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:60 msgid "Thumbnail" msgstr "Miniatura" +#. line 25 #: /var/www/html/Tinyboard/mod.php:687 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:86 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:77 msgid "Actions" msgstr "Akcje" +#. line 27 #: /var/www/html/Tinyboard/mod.php:689 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:81 msgid "Use theme" msgstr "Użyj dodatku" #: /var/www/html/Tinyboard/mod.php:690 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:87 msgid "Reconfigure" msgstr "Rekonfiguruj" #: /var/www/html/Tinyboard/mod.php:690 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:88 msgid "Install" msgstr "Instaluj" @@ -1192,10 +1332,13 @@ msgstr "Instaluj" #: ../../../../inc/mod/pages.php:1596 ../../../../inc/mod/pages.php:1726 #: ../../../../inc/mod/pages.php:1730 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:263 +#: ../../../../inc/mod/pages.php:1741 ../../../../inc/mod/pages.php:1745 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:98 msgid "Rebuild" msgstr "Przebuduj" #: /var/www/html/Tinyboard/mod.php:694 +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:103 msgid "Uninstall" msgstr "Odinstaluj" @@ -1203,7 +1346,9 @@ msgstr "Odinstaluj" msgid "Uninstall all themes." msgstr "Odinstaluj wszystkie dodatki" +#. line 27 #: /var/www/html/Tinyboard/mod.php:756 /var/www/html/Tinyboard/mod.php:842 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:69 msgid "Body" msgstr "Zawartość" @@ -1269,6 +1414,7 @@ msgstr "Nie można się ponownie zalogować po zmianie hasła. (?)" #. line 126 #. line 50 +#. line 126 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:300 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:134 @@ -1277,6 +1423,7 @@ msgstr "Ustawione" #. line 130 #. line 52 +#. line 130 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:309 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:140 @@ -1290,6 +1437,14 @@ msgstr "Wygasa" #. line 17 #. line 54 #. line 133 +#. line 24 +#. line 62 +#. line 150 +#. line 180 +#. line 24 +#. line 62 +#. line 150 +#. line 180 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:74 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:169 @@ -1328,7 +1483,7 @@ msgid "No board to move to; there is only one." msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." #: ../../../../inc/config.php:689 ../../../../inc/config.php:747 -#: ../../../../inc/config.php:753 +#: ../../../../inc/config.php:753 ../../../../inc/config.php:750 msgid "Invalid security token! Please go back and try again." msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." @@ -1346,6 +1501,10 @@ msgstr "Edytuj board" msgid "New board" msgstr "Nowy board" +#. line 102 +#. line 20 +#. line 102 +#. line 20 #. line 102 #. line 20 #: ../../../../inc/mod/pages.php:586 ../../../../inc/mod/pages.php:612 @@ -1361,6 +1520,7 @@ msgstr "adres IP" #: ../../../../inc/mod/pages.php:638 ../../../../inc/mod/pages.php:1053 #: ../../../../inc/mod/pages.php:772 ../../../../inc/mod/pages.php:1187 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:398 +#: ../../../../inc/mod/pages.php:1190 msgid "New ban" msgstr "Nowy ban" @@ -1380,6 +1540,7 @@ msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1307 ../../../../inc/mod/pages.php:1356 #: ../../../../inc/mod/pages.php:1332 ../../../../inc/mod/pages.php:1381 #: ../../../../inc/mod/pages.php:1466 ../../../../inc/mod/pages.php:1515 +#: ../../../../inc/mod/pages.php:1477 ../../../../inc/mod/pages.php:1530 msgid "Edit user" msgstr "Edytuj użytkownika" @@ -1388,11 +1549,13 @@ msgstr "Edytuj użytkownika" #: ../../../../inc/mod/pages.php:1431 ../../../../inc/mod/pages.php:1503 #: ../../../../inc/mod/pages.php:1456 ../../../../inc/mod/pages.php:1528 #: ../../../../inc/mod/pages.php:1590 ../../../../inc/mod/pages.php:1662 +#: ../../../../inc/mod/pages.php:1605 ../../../../inc/mod/pages.php:1677 msgid "New PM for" msgstr "Nowe PW dla" #: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 #: ../../../../inc/mod/pages.php:1460 ../../../../inc/mod/pages.php:1594 +#: ../../../../inc/mod/pages.php:1609 msgid "Private message" msgstr "Prywatna wiadomość" @@ -1400,33 +1563,39 @@ msgstr "Prywatna wiadomość" #: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 #: ../../../../inc/mod/pages.php:1481 ../../../../inc/mod/pages.php:1615 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:171 +#: ../../../../inc/mod/pages.php:1630 msgid "PM inbox" msgstr "Odebrane PW" #: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 #: ../../../../inc/mod/pages.php:1804 ../../../../inc/mod/pages.php:1938 +#: ../../../../inc/mod/pages.php:1953 msgid "Config editor" msgstr "Edytor konfiguracji" #: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 #: ../../../../inc/mod/pages.php:1970 ../../../../inc/mod/pages.php:2104 +#: ../../../../inc/mod/pages.php:2119 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" #: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 #: ../../../../inc/mod/pages.php:1892 ../../../../inc/mod/pages.php:2026 +#: ../../../../inc/mod/pages.php:2041 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" #: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 #: ../../../../inc/mod/pages.php:1903 ../../../../inc/mod/pages.php:2037 +#: ../../../../inc/mod/pages.php:2052 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" #: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 #: ../../../../inc/mod/pages.php:1931 ../../../../inc/mod/pages.php:2065 +#: ../../../../inc/mod/pages.php:2080 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" @@ -1438,20 +1607,24 @@ msgid "" msgstr "" #: ../../../../inc/config.php:704 ../../../../inc/config.php:710 +#: ../../../../inc/config.php:707 msgid "Thread has reached its maximum reply limit." msgstr "Ten temat osiągnął swój maksymalny limit odpowiedzi." #: ../../../../inc/config.php:705 ../../../../inc/config.php:711 +#: ../../../../inc/config.php:708 msgid "Thread has reached its maximum image limit." msgstr "Ten temat osiągnął swój maksymalny limit obrazków." #: ../../../../inc/config.php:726 ../../../../inc/config.php:732 +#: ../../../../inc/config.php:729 #, php-format msgid "That file already exists in this thread!" msgstr "Ten plik już istnieje w tym temacie!" #. Moderator errors #: ../../../../inc/config.php:733 ../../../../inc/config.php:739 +#: ../../../../inc/config.php:736 #, php-format msgid "" "You are only allowed to unban %s users at a time. You tried to unban %u " @@ -1460,12 +1633,12 @@ msgstr "" "Możesz odbanować tylko %s użytkowników na raz. Próbowałeś odbanować %u users." #: ../../../../inc/mod/pages.php:1969 ../../../../inc/mod/pages.php:1994 -#: ../../../../inc/mod/pages.php:2128 +#: ../../../../inc/mod/pages.php:2128 ../../../../inc/mod/pages.php:2143 msgid "Debug: Recent posts" msgstr "Debug: Ostatnie posty" #: ../../../../inc/mod/pages.php:1993 ../../../../inc/mod/pages.php:2018 -#: ../../../../inc/mod/pages.php:2152 +#: ../../../../inc/mod/pages.php:2152 ../../../../inc/mod/pages.php:2167 msgid "Debug: SQL" msgstr "Debug: SQL" @@ -1500,9 +1673,9 @@ msgid "" "(Search is case-insensitive and based on keywords. To match exact phrases, " "use \"quotes\". Use an asterisk (*) for wildcard.)" msgstr "" -"(Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach kluczowych. " -"Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki (*) jako symbolu " -"wieloznacznego.)" +"(Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach " +"kluczowych. Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki " +"(*) jako symbolu wieloznacznego.)" #. line 8 #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:32 @@ -1520,14 +1693,14 @@ msgid "" "example, name:Anonymous or subject:\"Some Thread\". " "Wildcards cannot be used in filters." msgstr "" -"Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach kluczowych. " -"Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki (*) jako symbolu " -"wieloznacznego.

Możesz zastosować poniższe " -"filtry do swojego wyszukiwania: id, thread, " -"subject, i name. Aby wykorzystać filtr, " -"po prostu dodaj do swojego zapytania, na przykład: name:Anonymous " -"albo subject:\"Jakiś temat\". Symbole wieloznaczne nie mogą być " -"wykorzystane w filtrach." +"Wyszukiwanie jest niezależne od wielkości znaków i bazowane na słowach " +"kluczowych. Aby dopasować pełne frazy, użyj \"cudzysłowi\". Użyj gwiazdki " +"(*) jako symbolu wieloznacznego.

Możesz zastosować poniższe filtry do swojego wyszukiwania: id, thread, subject, i name. Aby wykorzystać filtr, po prostu dodaj do swojego zapytania, na " +"przykład: name:Anonymous albo subject:\"Jakiś temat\". " +"Symbole wieloznaczne nie mogą być wykorzystane w filtrach." #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:57 msgid "edit" @@ -1552,32 +1725,45 @@ msgid "Change password" msgstr "Zmień hasło" #. line 118 +#. line 130 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:308 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:341 msgid "Debug" msgstr "Debug" #. line 120 +#. line 132 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:312 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:345 msgid "Anti-spam" msgstr "Antyspam" #. line 121 +#. line 133 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:315 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:348 msgid "Recent posts" msgstr "Ostatnie posty" #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:321 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:354 msgid "SQL" msgstr "SQL" #. line 143 +#. line 155 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:359 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:392 msgid "User account" msgstr "Konto użytkownika" #. line 25 #. line 67 #. line 18 +#. line 25 +#. line 67 +#. line 25 +#. line 67 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:77 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:179 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:54 @@ -1586,6 +1772,7 @@ msgstr "Notka" #. line 26 #. line 19 +#. line 26 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:80 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:57 msgid "Date" @@ -1634,6 +1821,7 @@ msgstr "nigdy" #. line 140 #. line 53 +#. line 140 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:331 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:143 msgid "Seen" @@ -1656,6 +1844,7 @@ msgstr "Usuń ban" #. line 181 #. line 135 +#. line 181 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:424 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:352 msgid "Time" @@ -1753,16 +1942,19 @@ msgstr "Wiadomość" #. line 46 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:117 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:122 msgid "public; attached to post" msgstr "publiczny; dołączony do posta" #. line 58 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:133 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:138 msgid "Length" msgstr "Długość" #. line 88 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:192 +#: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:197 msgid "New Ban" msgstr "Nowy ban" @@ -1799,3 +1991,109 @@ msgstr[2] "%d wyników na" #: ../../../../search.php:160 msgid "No results." msgstr "Brak wyników." + +#: ../../../../inc/functions.php:594 +msgid "Banned!" +msgstr "Zbanowany!" + +#: ../../../../banned.php:4 +msgid "Banned?" +msgstr "Zbanowany?" + +#: ../../../../banned.php:5 +msgid "You are not banned." +msgstr "Nie jesteś zbanowany." + +#: ../../../../inc/functions.php:549 ../../../../inc/functions.php:566 +msgid "second" +msgid_plural "seconds" +msgstr[0] "sekunda" +msgstr[1] "sekundy" +msgstr[2] "sekund" + +#: ../../../../inc/functions.php:551 ../../../../inc/functions.php:568 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuta" +msgstr[1] "minuty" +msgstr[2] "minut" + +#: ../../../../inc/functions.php:553 ../../../../inc/functions.php:570 +msgid "hour" +msgid_plural "hours" +msgstr[0] "godzina" +msgstr[1] "godziny" +msgstr[2] "godzin" + +#: ../../../../inc/functions.php:555 ../../../../inc/functions.php:572 +msgid "day" +msgid_plural "days" +msgstr[0] "dzień" +msgstr[1] "dni" +msgstr[2] "dni" + +#: ../../../../inc/functions.php:557 ../../../../inc/functions.php:574 +msgid "week" +msgid_plural "weeks" +msgstr[0] "tydzień" +msgstr[1] "tygodnie" +msgstr[2] "tygodni" + +#: ../../../../inc/functions.php:560 ../../../../inc/functions.php:577 +msgid "year" +msgid_plural "years" +msgstr[0] "rok" +msgstr[1] "lata" +msgstr[2] "lat" + +#. line 118 +#: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:308 +msgid "Other" +msgstr "Inne" + +#: ../../../../templates/cache/b7/7d/de31d12a1684acbc7c0d7ee71653.php:30 +msgid "Successfully installed and built theme." +msgstr "Pomyślnie zainstalowano i zbudowano dodatek." + +#. line 9 +#: ../../../../templates/cache/b7/7d/de31d12a1684acbc7c0d7ee71653.php:37 +msgid "Go back to themes" +msgstr "Wróć do dodatków" + +#. line 3 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:21 +msgid "New post" +msgstr "Nowy post" + +#. line 32 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:76 +msgid "Post news entry" +msgstr "Zapostuj newsa" + +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:100 +msgid "delete" +msgstr "usuń" + +#. line 55 +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:133 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:94 +msgid "by" +msgstr "przez" + +#: ../../../../templates/cache/c8/8b/242bf87b3b6a29a67cdd09a3afeb.php:136 +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:97 +msgid "at" +msgstr "dnia" + +#: ../../../../templates/cache/f3/ad/68dee281a64ebad9a5c774b53279.php:66 +msgid "(No news to show.)" +msgstr "(Nie ma newsów do wyświetlenia.)" + +#: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:19 +msgid "There are no themes available." +msgstr "Nie ma dostępnych dodatków." + +#. line 25 +#: ../../../../templates/cache/d1/99/467985632043e204070d354b8290.php:91 +msgid "Install theme" +msgstr "Zainstaluj dodatek" From 7e0cec3d9dc0fbf3a1e13909de116ba12594302a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Sat, 22 Dec 2012 20:14:43 +0100 Subject: [PATCH 109/289] Facilitate styling of subboard listings --- inc/display.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/display.php b/inc/display.php index 0992166d..a2d50f74 100644 --- a/inc/display.php +++ b/inc/display.php @@ -25,7 +25,7 @@ function doBoardListPart($list, $root) { $body = ''; foreach ($list as $board) { if (is_array($board)) - $body .= ' [' . doBoardListPart($board, $root) . '] '; + $body .= ' [' . doBoardListPart($board, $root) . '] '; else { if (($key = array_search($board, $list)) && gettype($key) == 'string') { $body .= ' ' . $key . ' /'; From 701cf42eef17963fc57159e5383c020e76c0181f Mon Sep 17 00:00:00 2001 From: czaks Date: Tue, 2 Jul 2013 23:10:00 -0400 Subject: [PATCH 110/289] main.js: added preliminary translation functions for javascript --- templates/main.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/templates/main.js b/templates/main.js index b3219b3c..78e7cbf1 100644 --- a/templates/main.js +++ b/templates/main.js @@ -1,5 +1,27 @@ {% raw %} +/* gettext-compatible _ function, example of usage: + * + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) + * > alert(_("Hello!")); + * Witaj! + */ +function _(s) { + return (typeof tb_l10n != 'undefined' && typeof tb_l10n[s] != 'undefined') ? tb_l10n[s] : s; +} + +/* printf-like formatting function, example of usage: + * + * > alert(fmt("There are {0} birds on {1} trees", [3,4])); + * There are 3 birds on 4 trees + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) + * > alert(fmt(_("{0} users"), [3])); + * 3 uzytkownikow + */ +function fmt(s,a) { + return s.replace(/\{([0-9]+)\}/g, function(x) { return a[x[1]]; }); +} + var saved = {}; From 61a305a1a27d414072b0de24441c07b1630c3075 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:04:08 -0400 Subject: [PATCH 111/289] js i18n: misc fixes; quick-reply.js i18n Conflicts: tools/i18n_compile.php --- js/quick-reply.js | 6 +++--- templates/main.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/js/quick-reply.js b/js/quick-reply.js index bc36ca48..ea504b48 100644 --- a/js/quick-reply.js +++ b/js/quick-reply.js @@ -17,7 +17,7 @@ $(document).ready(function(){ return; // not index txt_new_topic = $('form[name=post] input[type=submit]').val(); - txt_new_reply = txt_new_topic == 'Submit' ? txt_new_topic : new_reply_string; + txt_new_reply = txt_new_topic == _('Submit') ? txt_new_topic : new_reply_string; undo_quick_reply = function() { $('div.banner').remove(); @@ -27,9 +27,9 @@ $(document).ready(function(){ $('div.post.op').each(function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); - $('[Quick reply]').insertAfter($(this).children('p.intro').children('a:last')).click(function() { + $('['+_("Quick reply")+']').insertAfter($(this).children('p.intro').children('a:last')).click(function() { $('div.banner').remove(); - $('

') + $('') .insertBefore('form[name=post]'); $('form[name=post] input[type=submit]').val(txt_new_reply); diff --git a/templates/main.js b/templates/main.js index 78e7cbf1..401d3504 100644 --- a/templates/main.js +++ b/templates/main.js @@ -2,12 +2,12 @@ /* gettext-compatible _ function, example of usage: * - * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/i18n_compile.php) * > alert(_("Hello!")); * Witaj! */ function _(s) { - return (typeof tb_l10n != 'undefined' && typeof tb_l10n[s] != 'undefined') ? tb_l10n[s] : s; + return (typeof l10n != 'undefined' && typeof l10n[s] != 'undefined') ? l10n[s] : s; } /* printf-like formatting function, example of usage: From 123a72d7de692c8f33f6df39d0a8a7a267fe8b0b Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 04:28:26 -0400 Subject: [PATCH 112/289] Convert to UNIX line endings --- inc/template.php | 144 ++++++------ templates/main.js | 460 ++++++++++++++++++------------------- templates/mod/login.html | 52 ++--- templates/post_reply.html | 222 +++++++++--------- templates/post_thread.html | 296 ++++++++++++------------ templates/posts.sql | 2 +- templates/thread.html | 140 +++++------ 7 files changed, 658 insertions(+), 658 deletions(-) diff --git a/inc/template.php b/inc/template.php index 071fa761..09e27c26 100644 --- a/inc/template.php +++ b/inc/template.php @@ -1,72 +1,72 @@ -setPaths($config['dir']['template']); - $twig = new Twig_Environment($loader, array( - 'autoescape' => false, - 'cache' => "{$config['dir']['template']}/cache", - 'debug' => $config['debug'] - )); - $twig->addExtension(new Twig_Extensions_Extension_Tinyboard()); - $twig->addExtension(new Twig_Extensions_Extension_I18n()); -} - -function Element($templateFile, array $options) { - global $config, $debug, $twig; - - if (!$twig) - load_twig(); - - if (function_exists('create_pm_header') && ((isset($options['mod']) && $options['mod']) || isset($options['__mod'])) && !preg_match('!^mod/!', $templateFile)) { - $options['pm'] = create_pm_header(); - } - - if (isset($options['body']) && $config['debug']) { - if (isset($debug['start'])) { - $debug['time'] = '~' . round((microtime(true) - $debug['start']) * 1000, 2) . 'ms'; - unset($debug['start']); - } - $debug['included'] = get_included_files(); - $debug['memory'] = round(memory_get_usage(true) / (1024 * 1024), 2) . ' MiB'; - $options['body'] .= - '

Debug

' .
-				str_replace("\n", '
', utf8tohtml(print_r($debug, true))) . - '
'; - } - - // Read the template file - if (@file_get_contents("{$config['dir']['template']}/${templateFile}")) { - $body = $twig->render($templateFile, $options); - - if ($config['minify_html'] && preg_match('/\.html$/', $templateFile)) { - $body = trim(preg_replace("/[\t\r\n]/", '', $body)); - } - - return $body; - } else { - throw new Exception("Template file '${templateFile}' does not exist or is empty in '{$config['dir']['template']}'!"); - } -} - +setPaths($config['dir']['template']); + $twig = new Twig_Environment($loader, array( + 'autoescape' => false, + 'cache' => "{$config['dir']['template']}/cache", + 'debug' => $config['debug'] + )); + $twig->addExtension(new Twig_Extensions_Extension_Tinyboard()); + $twig->addExtension(new Twig_Extensions_Extension_I18n()); +} + +function Element($templateFile, array $options) { + global $config, $debug, $twig; + + if (!$twig) + load_twig(); + + if (function_exists('create_pm_header') && ((isset($options['mod']) && $options['mod']) || isset($options['__mod'])) && !preg_match('!^mod/!', $templateFile)) { + $options['pm'] = create_pm_header(); + } + + if (isset($options['body']) && $config['debug']) { + if (isset($debug['start'])) { + $debug['time'] = '~' . round((microtime(true) - $debug['start']) * 1000, 2) . 'ms'; + unset($debug['start']); + } + $debug['included'] = get_included_files(); + $debug['memory'] = round(memory_get_usage(true) / (1024 * 1024), 2) . ' MiB'; + $options['body'] .= + '

Debug

' .
+				str_replace("\n", '
', utf8tohtml(print_r($debug, true))) . + '
'; + } + + // Read the template file + if (@file_get_contents("{$config['dir']['template']}/${templateFile}")) { + $body = $twig->render($templateFile, $options); + + if ($config['minify_html'] && preg_match('/\.html$/', $templateFile)) { + $body = trim(preg_replace("/[\t\r\n]/", '', $body)); + } + + return $body; + } else { + throw new Exception("Template file '${templateFile}' does not exist or is empty in '{$config['dir']['template']}'!"); + } +} + diff --git a/templates/main.js b/templates/main.js index 401d3504..71dcd92a 100644 --- a/templates/main.js +++ b/templates/main.js @@ -1,38 +1,38 @@ -{% raw %} - -/* gettext-compatible _ function, example of usage: - * - * > // Loading pl_PL.json here (containing polish translation strings generated by tools/i18n_compile.php) - * > alert(_("Hello!")); - * Witaj! - */ -function _(s) { - return (typeof l10n != 'undefined' && typeof l10n[s] != 'undefined') ? l10n[s] : s; -} - -/* printf-like formatting function, example of usage: - * - * > alert(fmt("There are {0} birds on {1} trees", [3,4])); - * There are 3 birds on 4 trees - * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) - * > alert(fmt(_("{0} users"), [3])); - * 3 uzytkownikow - */ -function fmt(s,a) { - return s.replace(/\{([0-9]+)\}/g, function(x) { return a[x[1]]; }); -} - -var saved = {}; - - -var selectedstyle = '{% endraw %}{{ config.default_stylesheet.0|addslashes }}{% raw %}'; -var styles = { - {% endraw %} - {% for stylesheet in stylesheets %}{% raw %}'{% endraw %}{{ stylesheet.name|addslashes }}{% raw %}' : '{% endraw %}{{ stylesheet.uri|addslashes }}{% raw %}', - {% endraw %}{% endfor %}{% raw %} -}; +{% raw %} + +/* gettext-compatible _ function, example of usage: + * + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/i18n_compile.php) + * > alert(_("Hello!")); + * Witaj! + */ +function _(s) { + return (typeof l10n != 'undefined' && typeof l10n[s] != 'undefined') ? l10n[s] : s; +} + +/* printf-like formatting function, example of usage: + * + * > alert(fmt("There are {0} birds on {1} trees", [3,4])); + * There are 3 birds on 4 trees + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) + * > alert(fmt(_("{0} users"), [3])); + * 3 uzytkownikow + */ +function fmt(s,a) { + return s.replace(/\{([0-9]+)\}/g, function(x) { return a[x[1]]; }); +} + +var saved = {}; + + +var selectedstyle = '{% endraw %}{{ config.default_stylesheet.0|addslashes }}{% raw %}'; +var styles = { + {% endraw %} + {% for stylesheet in stylesheets %}{% raw %}'{% endraw %}{{ stylesheet.name|addslashes }}{% raw %}' : '{% endraw %}{{ stylesheet.uri|addslashes }}{% raw %}', + {% endraw %}{% endfor %}{% raw %} +}; var board_name = false; - + function changeStyle(styleName, link) { {% endraw %} {% if config.stylesheets_board %}{% raw %} @@ -43,31 +43,31 @@ function changeStyle(styleName, link) { {% endraw %}{% else %} localStorage.stylesheet = styleName; {% endif %} - {% raw %} - - if (!document.getElementById('stylesheet')) { - var s = document.createElement('link'); - s.rel = 'stylesheet'; - s.type = 'text/css'; - s.id = 'stylesheet'; - var x = document.getElementsByTagName('head')[0]; - x.appendChild(s); - } - - document.getElementById('stylesheet').href = styles[styleName]; - selectedstyle = styleName; - - if (document.getElementsByClassName('styles').length != 0) { - var styleLinks = document.getElementsByClassName('styles')[0].childNodes; - for (var i = 0; i < styleLinks.length; i++) { - styleLinks[i].className = ''; - } - } - - if (link) { - link.className = 'selected'; - } -} + {% raw %} + + if (!document.getElementById('stylesheet')) { + var s = document.createElement('link'); + s.rel = 'stylesheet'; + s.type = 'text/css'; + s.id = 'stylesheet'; + var x = document.getElementsByTagName('head')[0]; + x.appendChild(s); + } + + document.getElementById('stylesheet').href = styles[styleName]; + selectedstyle = styleName; + + if (document.getElementsByClassName('styles').length != 0) { + var styleLinks = document.getElementsByClassName('styles')[0].childNodes; + for (var i = 0; i < styleLinks.length; i++) { + styleLinks[i].className = ''; + } + } + + if (link) { + link.className = 'selected'; + } +} {% endraw %} @@ -95,177 +95,177 @@ function changeStyle(styleName, link) { {% endraw%} {% else %} {% raw %} - if (localStorage.stylesheet) { - for (var styleName in styles) { - if (styleName == localStorage.stylesheet) { - changeStyle(styleName); - break; - } - } + if (localStorage.stylesheet) { + for (var styleName in styles) { + if (styleName == localStorage.stylesheet) { + changeStyle(styleName); + break; + } + } } - {% endraw %} + {% endraw %} {% endif %} {% raw %} - -function init_stylechooser() { - var newElement = document.createElement('div'); - newElement.className = 'styles'; - - for (styleName in styles) { - var style = document.createElement('a'); - style.innerHTML = '[' + styleName + ']'; - style.onclick = function() { - changeStyle(this.innerHTML.substring(1, this.innerHTML.length - 1), this); - }; - if (styleName == selectedstyle) { - style.className = 'selected'; - } - style.href = 'javascript:void(0);'; - newElement.appendChild(style); - } - - document.getElementsByTagName('body')[0].insertBefore(newElement, document.getElementsByTagName('body')[0].lastChild.nextSibling); -} - -function get_cookie(cookie_name) { - var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); - if (results) - return (unescape(results[2])); - else - return null; -} - -function highlightReply(id) { - if (typeof window.event != "undefined" && event.which == 2) { - // don't highlight on middle click - return true; - } - - var divs = document.getElementsByTagName('div'); - for (var i = 0; i < divs.length; i++) - { - if (divs[i].className.indexOf('post') != -1) - divs[i].className = divs[i].className.replace(/highlighted/, ''); - } - if (id) { - var post = document.getElementById('reply_'+id); - if (post) - post.className += ' highlighted'; - } -} - -function generatePassword() { - var pass = ''; - var chars = '{% endraw %}{{ config.genpassword_chars }}{% raw %}'; - for (var i = 0; i < 8; i++) { - var rnd = Math.floor(Math.random() * chars.length); - pass += chars.substring(rnd, rnd + 1); - } - return pass; -} - -function dopost(form) { - if (form.elements['name']) { - localStorage.name = form.elements['name'].value.replace(/( |^)## .+$/, ''); - } - if (form.elements['email'] && form.elements['email'].value != 'sage') { - localStorage.email = form.elements['email'].value; - } - - saved[document.location] = form.elements['body'].value; - sessionStorage.body = JSON.stringify(saved); - - return form.elements['body'].value != "" || form.elements['file'].value != ""; -} - -function citeReply(id) { - var body = document.getElementById('body'); - - if (document.selection) { - // IE - body.focus(); - var sel = document.selection.createRange(); - sel.text = '>>' + id + '\n'; - } else if (body.selectionStart || body.selectionStart == '0') { - // Mozilla - var start = body.selectionStart; - var end = body.selectionEnd; - body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); - } else { - // ??? - body.value += '>>' + id + '\n'; - } -} - -function rememberStuff() { - if (document.forms.post) { - if (document.forms.post.password) { - if (!localStorage.password) - localStorage.password = generatePassword(); - document.forms.post.password.value = localStorage.password; - } - - if (localStorage.name && document.forms.post.elements['name']) - document.forms.post.elements['name'].value = localStorage.name; - if (localStorage.email && document.forms.post.elements['email']) - document.forms.post.elements['email'].value = localStorage.email; - - if (window.location.hash.indexOf('q') == 1) - citeReply(window.location.hash.substring(2)); - - if (sessionStorage.body) { - var saved = JSON.parse(sessionStorage.body); - if (get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')) { - // Remove successful posts - var successful = JSON.parse(get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')); - for (var url in successful) { - saved[url] = null; - } - sessionStorage.body = JSON.stringify(saved); - - document.cookie = '{% endraw %}{{ config.cookies.js }}{% raw %}={};expires=0;path=/;'; - } - if (saved[document.location]) { - document.forms.post.body.value = saved[document.location]; - } - } - - if (localStorage.body) { - document.forms.post.body.value = localStorage.body; - localStorage.body = ''; - } - } -} - -function init() { - init_stylechooser(); - - if (document.forms.postcontrols) { - document.forms.postcontrols.password.value = localStorage.password; - } - - if (window.location.hash.indexOf('q') != 1 && window.location.hash.substring(1)) - highlightReply(window.location.hash.substring(1)); -} - -var RecaptchaOptions = { - theme : 'clean' -}; - -onready_callbacks = []; -function onready(fnc) { - onready_callbacks.push(fnc); -} - -function ready() { - for (var i = 0; i < onready_callbacks.length; i++) { - onready_callbacks[i](); - } -} - -onready(init); - -{% endraw %}{% if config.google_analytics %}{% raw %} - -var _gaq = _gaq || [];_gaq.push(['_setAccount', '{% endraw %}{{ config.google_analytics }}{% raw %}']);{% endraw %}{% if config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', '{% endraw %}{{ config.google_analytics_domain }}{% raw %}']){% endraw %}{% endif %}{% if not config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', 'none']){% endraw %}{% endif %}{% raw %};_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();{% endraw %}{% endif %} - + +function init_stylechooser() { + var newElement = document.createElement('div'); + newElement.className = 'styles'; + + for (styleName in styles) { + var style = document.createElement('a'); + style.innerHTML = '[' + styleName + ']'; + style.onclick = function() { + changeStyle(this.innerHTML.substring(1, this.innerHTML.length - 1), this); + }; + if (styleName == selectedstyle) { + style.className = 'selected'; + } + style.href = 'javascript:void(0);'; + newElement.appendChild(style); + } + + document.getElementsByTagName('body')[0].insertBefore(newElement, document.getElementsByTagName('body')[0].lastChild.nextSibling); +} + +function get_cookie(cookie_name) { + var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); + if (results) + return (unescape(results[2])); + else + return null; +} + +function highlightReply(id) { + if (typeof window.event != "undefined" && event.which == 2) { + // don't highlight on middle click + return true; + } + + var divs = document.getElementsByTagName('div'); + for (var i = 0; i < divs.length; i++) + { + if (divs[i].className.indexOf('post') != -1) + divs[i].className = divs[i].className.replace(/highlighted/, ''); + } + if (id) { + var post = document.getElementById('reply_'+id); + if (post) + post.className += ' highlighted'; + } +} + +function generatePassword() { + var pass = ''; + var chars = '{% endraw %}{{ config.genpassword_chars }}{% raw %}'; + for (var i = 0; i < 8; i++) { + var rnd = Math.floor(Math.random() * chars.length); + pass += chars.substring(rnd, rnd + 1); + } + return pass; +} + +function dopost(form) { + if (form.elements['name']) { + localStorage.name = form.elements['name'].value.replace(/( |^)## .+$/, ''); + } + if (form.elements['email'] && form.elements['email'].value != 'sage') { + localStorage.email = form.elements['email'].value; + } + + saved[document.location] = form.elements['body'].value; + sessionStorage.body = JSON.stringify(saved); + + return form.elements['body'].value != "" || form.elements['file'].value != ""; +} + +function citeReply(id) { + var body = document.getElementById('body'); + + if (document.selection) { + // IE + body.focus(); + var sel = document.selection.createRange(); + sel.text = '>>' + id + '\n'; + } else if (body.selectionStart || body.selectionStart == '0') { + // Mozilla + var start = body.selectionStart; + var end = body.selectionEnd; + body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); + } else { + // ??? + body.value += '>>' + id + '\n'; + } +} + +function rememberStuff() { + if (document.forms.post) { + if (document.forms.post.password) { + if (!localStorage.password) + localStorage.password = generatePassword(); + document.forms.post.password.value = localStorage.password; + } + + if (localStorage.name && document.forms.post.elements['name']) + document.forms.post.elements['name'].value = localStorage.name; + if (localStorage.email && document.forms.post.elements['email']) + document.forms.post.elements['email'].value = localStorage.email; + + if (window.location.hash.indexOf('q') == 1) + citeReply(window.location.hash.substring(2)); + + if (sessionStorage.body) { + var saved = JSON.parse(sessionStorage.body); + if (get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')) { + // Remove successful posts + var successful = JSON.parse(get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')); + for (var url in successful) { + saved[url] = null; + } + sessionStorage.body = JSON.stringify(saved); + + document.cookie = '{% endraw %}{{ config.cookies.js }}{% raw %}={};expires=0;path=/;'; + } + if (saved[document.location]) { + document.forms.post.body.value = saved[document.location]; + } + } + + if (localStorage.body) { + document.forms.post.body.value = localStorage.body; + localStorage.body = ''; + } + } +} + +function init() { + init_stylechooser(); + + if (document.forms.postcontrols) { + document.forms.postcontrols.password.value = localStorage.password; + } + + if (window.location.hash.indexOf('q') != 1 && window.location.hash.substring(1)) + highlightReply(window.location.hash.substring(1)); +} + +var RecaptchaOptions = { + theme : 'clean' +}; + +onready_callbacks = []; +function onready(fnc) { + onready_callbacks.push(fnc); +} + +function ready() { + for (var i = 0; i < onready_callbacks.length; i++) { + onready_callbacks[i](); + } +} + +onready(init); + +{% endraw %}{% if config.google_analytics %}{% raw %} + +var _gaq = _gaq || [];_gaq.push(['_setAccount', '{% endraw %}{{ config.google_analytics }}{% raw %}']);{% endraw %}{% if config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', '{% endraw %}{{ config.google_analytics_domain }}{% raw %}']){% endraw %}{% endif %}{% if not config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', 'none']){% endraw %}{% endif %}{% raw %};_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();{% endraw %}{% endif %} + diff --git a/templates/mod/login.html b/templates/mod/login.html index 43a28d56..476897a6 100644 --- a/templates/mod/login.html +++ b/templates/mod/login.html @@ -1,26 +1,26 @@ -{% if error %}

{{ error }}

{% endif %} -
-
Time Board {% if post.file %} - {{ post.file }} ({{ post.filesize | filesize }}) + {{ post.filename }} ({{ post.filesize | filesize }}) {% else %} – {% endif %} From 54714595f7ce2cdbd88de1c536e0ddc97ca71529 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 02:19:58 -0400 Subject: [PATCH 069/289] js/inline-expanding.js: Allow to work with auto-reload.js, etc. (jQuery is still optional) Conflicts: js/inline-expanding.js --- js/inline-expanding.js | 79 ++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 33 deletions(-) diff --git a/js/inline-expanding.js b/js/inline-expanding.js index 2e924f05..06d3f76f 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -6,49 +6,62 @@ * Copyright (c) 2012-2013 Michael Save * * Usage: + * // $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/inline-expanding.js'; * */ onready(function(){ - var link = document.getElementsByTagName('a'); + var inline_expand_post = function() { + var link = this.getElementsByTagName('a'); - for (var i = 0; i < link.length; i++) { - if (typeof link[i] == "object" && link[i].childNodes && link[i].childNodes[0].src && link[i].className != 'file') { - link[i].childNodes[0].style.maxWidth = '95%'; - link[i].childNodes[0].style.maxHeight = '95%'; - link[i].onclick = function(e) { - if (this.childNodes[0].className == 'hidden') - return false; - if (e.which == 2) - return true; - if (!this.dataset.src) { - this.dataset.expanded = 'true'; - this.dataset.src= this.childNodes[0].src; - this.dataset.width = this.childNodes[0].style.width; - this.dataset.height = this.childNodes[0].style.height; - this.childNodes[0].src = this.href; - this.childNodes[0].style.width = 'auto'; - this.childNodes[0].style.height = 'auto'; - this.childNodes[0].style.opacity = '0.4'; - this.childNodes[0].style.filter = 'alpha(opacity=40)'; - this.childNodes[0].onload = function() { - this.style.opacity = ''; - delete this.style.filter; + for (var i = 0; i < link.length; i++) { + if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') { + link[i].childNodes[0].style.maxWidth = '95%'; + link[i].onclick = function(e) { + if (this.childNodes[0].className == 'hidden') + return false; + if (e.which == 2) + return true; + if (!this.dataset.src) { + this.dataset.expanded = 'true'; + this.dataset.src= this.childNodes[0].src; + this.dataset.width = this.childNodes[0].style.width; + this.dataset.height = this.childNodes[0].style.height; + this.childNodes[0].src = this.href; + this.childNodes[0].style.width = 'auto'; + this.childNodes[0].style.height = 'auto'; + this.childNodes[0].style.opacity = '0.4'; + this.childNodes[0].style.filter = 'alpha(opacity=40)'; + this.childNodes[0].onload = function() { + this.style.opacity = ''; + delete this.style.filter; + } + } else { + this.childNodes[0].src = this.dataset.src; + this.childNodes[0].style.width = this.dataset.width; + this.childNodes[0].style.height = this.dataset.height; + delete this.dataset.expanded; + delete this.dataset.src; + delete this.childNodes[0].style.opacity; + delete this.childNodes[0].style.filter; } - } else { - this.childNodes[0].src = this.dataset.src; - this.childNodes[0].style.width = this.dataset.width; - this.childNodes[0].style.height = this.dataset.height; - delete this.dataset.expanded; - delete this.dataset.src; - delete this.childNodes[0].style.opacity; - delete this.childNodes[0].style.filter; + return false; } - return false; } - } } + + if (window.jQuery) { + $('div[id^="thread_"]').each(inline_expand_post); + + // allow to work with auto-reload.js, etc. + $(document).bind('new_post', function(e, post) { + inline_expand_post.call(post); + }); + } else { + inline_expand_post.call(document); + } + }); From 461084d400620c32ef262aab1f837573f47b0951 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 30 Jul 2013 16:41:10 -0400 Subject: [PATCH 070/289] MySQL's utf8 charset only supports up to 3-byte symbols. Insterting four byte symbols (U+010000 to U+10FFFF) can be done maliciously to break HTML mark-up. The ideal solution was to convert to MySQL's utf8mb4 charset, but then we would lose support for MySQL < 5.5.3. In this fix, incompatible characters are encoded as HTML numeric character references (eg. #65536) and just stripped from body_nommarkup. --- inc/functions.php | 2 +- post.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 2915e1b6..4af7891a 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1523,7 +1523,7 @@ function markup(&$body, $track_cites = false) { } function utf8tohtml($utf8) { - return htmlspecialchars($utf8, ENT_NOQUOTES, 'UTF-8'); + return mb_encode_numericentity(htmlspecialchars($utf8, ENT_NOQUOTES, 'UTF-8'), array(0x010000, 0xffffff, 0, 0xffffff), 'UTF-8'); } function ordutf8($string, &$offset) { diff --git a/post.php b/post.php index ad045b66..e9041ce8 100644 --- a/post.php +++ b/post.php @@ -378,7 +378,7 @@ if (isset($_POST['delete'])) { wordfilters($post['body']); - $post['body_nomarkup'] = $post['body']; + $post['body_nomarkup'] = preg_replace('/[\x{010000}-\x{ffffff}]/u', '', $post['body']); if (!($mod && isset($post['raw']) && $post['raw'])) $post['tracked_cites'] = markup($post['body'], true); From 91bb3182da63e64d45ab8ac26735e090db928f15 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 30 Jul 2013 19:07:28 -0400 Subject: [PATCH 071/289] =?UTF-8?q?=E2=8C=98+click=20should=20open=20image?= =?UTF-8?q?=20in=20new=20tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/inline-expanding.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/inline-expanding.js b/js/inline-expanding.js index 06d3f76f..20383f04 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -21,7 +21,7 @@ onready(function(){ link[i].onclick = function(e) { if (this.childNodes[0].className == 'hidden') return false; - if (e.which == 2) + if (e.which == 2 || e.metaKey) return true; if (!this.dataset.src) { this.dataset.expanded = 'true'; From 8efab06616bfcdab49fb9e996cdc7ddfe79426bb Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 30 Jul 2013 22:08:56 -0400 Subject: [PATCH 072/289] Upgrade to utf8mb4 charset for MySQL server versions above 5.5.3. Keep support for older versions. Fix charsets for multiple columns and tables. --- inc/database.php | 21 ++++++++-- inc/functions.php | 5 ++- install.php | 100 +++++++++++++++++++++++++++++++++++++++++++- install.sql | 95 ++++++++++++++++++++--------------------- post.php | 5 ++- templates/posts.sql | 63 ++++++++++++++-------------- 6 files changed, 202 insertions(+), 87 deletions(-) diff --git a/inc/database.php b/inc/database.php index a0edd1fb..3dc0f0ce 100644 --- a/inc/database.php +++ b/inc/database.php @@ -51,12 +51,16 @@ function sql_open() { try { $options = array( PDO::ATTR_TIMEOUT => $config['db']['timeout'], - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true ); if ($config['db']['persistent']) $options[PDO::ATTR_PERSISTENT] = true; - return $pdo = new PDO($dsn, $config['db']['user'], $config['db']['password'], $options); + $pdo = new PDO($dsn, $config['db']['user'], $config['db']['password'], $options); + if (mysql_version() >= 50503) + query('SET NAMES utf8mb4') or error(db_error()); + else + query('SET NAMES utf8') or error(db_error()); + return $pdo; } catch(PDOException $e) { $message = $e->getMessage(); @@ -65,10 +69,21 @@ function sql_open() { $message = str_replace($config['db']['password'], 'hidden', $message); // Print error - error('Database error: ' . $message); + error(_('Database error: ') . $message); } } +// 5.6.10 becomes 50610 +function mysql_version() { + global $pdo; + + $version = $pdo->getAttribute(PDO::ATTR_SERVER_VERSION); + $v = explode('.', $version); + if (count($v) != 3) + return false; + return (int) sprintf("%02d%02d%02d", $v[0], $v[1], $v[2]); +} + function prepare($query) { global $pdo, $debug, $config; diff --git a/inc/functions.php b/inc/functions.php index 4af7891a..d5692be5 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1399,6 +1399,9 @@ function markup(&$body, $track_cites = false) { $body = str_replace("\r", '', $body); $body = utf8tohtml($body); + if (mysql_version() < 50503) + $body = mb_encode_numericentity($body, array(0x010000, 0xffffff, 0, 0xffffff), 'UTF-8'); + foreach ($config['markup'] as $markup) { if (is_string($markup[1])) { $body = preg_replace($markup[0], $markup[1], $body); @@ -1523,7 +1526,7 @@ function markup(&$body, $track_cites = false) { } function utf8tohtml($utf8) { - return mb_encode_numericentity(htmlspecialchars($utf8, ENT_NOQUOTES, 'UTF-8'), array(0x010000, 0xffffff, 0, 0xffffff), 'UTF-8'); + return htmlspecialchars($utf8, ENT_NOQUOTES, 'UTF-8'); } function ordutf8($string, &$offset) { diff --git a/install.php b/install.php index 08e8046a..c2fe1a55 100644 --- a/install.php +++ b/install.php @@ -1,7 +1,7 @@ execute() or error(db_error($_query)); } } + case 'v0.9.6-dev-9': + function __query($sql) { + if (mysql_version() >= 50503) + return query($sql); + else + return query(str_replace('utf8mb4', 'utf8', $sql)); + } + + foreach ($boards as &$board) { + __query(sprintf("ALTER TABLE `posts_%s` + CHANGE `subject` `subject` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `email` `email` VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `name` `name` VARCHAR(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `trip` `trip` VARCHAR(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `capcode` `capcode` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `body` `body` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + CHANGE `body_nomarkup` `body_nomarkup` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `thumb` `thumb` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `thumbwidth` `thumbwidth` INT(11) NULL DEFAULT NULL, + CHANGE `thumbheight` `thumbheight` INT(11) NULL DEFAULT NULL, + CHANGE `file` `file` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `filename` `filename` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `filehash` `filehash` TEXT CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL, + CHANGE `password` `password` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + CHANGE `ip` `ip` VARCHAR(39) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL, + CHANGE `embed` `embed` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;", $board['uri'])) or error(db_error()); + } + + __query("ALTER TABLE `antispam` + CHANGE `board` `board` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `hash` `hash` CHAR( 40 ) CHARACTER SET ASCII COLLATE ascii_bin NOT NULL , + DEFAULT CHARACTER SET ASCII COLLATE ascii_bin;") or error(db_error()); + __query("ALTER TABLE `bans` + CHANGE `ip` `ip` VARCHAR( 39 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `reason` `reason` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL , + CHANGE `board` `board` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NULL DEFAULT NULL, + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `boards` + CHANGE `uri` `uri` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `title` `title` TINYTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + CHANGE `subtitle` `subtitle` TINYTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `cites` + CHANGE `board` `board` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `target_board` `target_board` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + DEFAULT CHARACTER SET ASCII COLLATE ascii_general_ci;") or error(db_error()); + __query("ALTER TABLE `ip_notes` + CHANGE `ip` `ip` VARCHAR( 39 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `body` `body` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `ip_notes` + CHANGE `ip` `ip` VARCHAR( 39 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `body` `body` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `modlogs` + CHANGE `ip` `ip` VARCHAR( 39 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `board` `board` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NULL DEFAULT NULL , + CHANGE `text` `text` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `mods` + CHANGE `username` `username` VARCHAR( 30 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + CHANGE `password` `password` CHAR( 64 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL COMMENT 'SHA256', + CHANGE `salt` `salt` CHAR( 32 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `boards` `boards` TEXT CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `mutes` + CHANGE `ip` `ip` VARCHAR( 39 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + DEFAULT CHARACTER SET ASCII COLLATE ascii_general_ci;") or error(db_error()); + __query("ALTER TABLE `news` + CHANGE `name` `name` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + CHANGE `subject` `subject` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + CHANGE `body` `body` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `noticeboard` + CHANGE `subject` `subject` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + CHANGE `body` `body` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `pms` + CHANGE `message` `message` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `reports` + CHANGE `ip` `ip` VARCHAR( 39 ) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL , + CHANGE `board` `board` VARCHAR( 120 ) CHARACTER SET ASCII COLLATE ascii_general_ci NULL DEFAULT NULL , + CHANGE `reason` `reason` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or error(db_error()); + __query("ALTER TABLE `robot` + CHANGE `hash` `hash` VARCHAR( 40 ) CHARACTER SET ASCII COLLATE ascii_bin NOT NULL COMMENT 'SHA1', + DEFAULT CHARACTER SET ASCII COLLATE ascii_bin;") or error(db_error()); + __query("ALTER TABLE `theme_settings` + CHANGE `theme` `theme` VARCHAR( 40 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL , + CHANGE `name` `name` VARCHAR( 40 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL , + CHANGE `value` `value` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL , + DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") or eror(db_error()); case false: // Update version number file_write($config['has_installed'], VERSION); @@ -547,6 +641,10 @@ if ($step == 0) { $sql = @file_get_contents('install.sql') or error("Couldn't load install.sql."); + sql_open(); + if (mysql_version() < 50503) + $sql = str_replace('utf8', 'utf8mb4', $sql); + // This code is probably horrible, but what I'm trying // to do is find all of the SQL queires and put them // in an array. diff --git a/install.sql b/install.sql index ee2ca8a9..c4e82820 100644 --- a/install.sql +++ b/install.sql @@ -1,25 +1,20 @@ -- phpMyAdmin SQL Dump --- version 3.4.2 +-- version 4.0.4.1 -- http://www.phpmyadmin.net -- -- Host: localhost --- Generation Time: Apr 12, 2012 at 11:22 PM --- Server version: 5.1.61 --- PHP Version: 5.3.3-7+squeeze8 +-- Generation Time: Jul 30, 2013 at 09:45 PM +-- Server version: 5.6.10 +-- PHP Version: 5.3.15 -SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; - /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; --- --- Database: `tinyboard` --- - -- -------------------------------------------------------- -- @@ -27,15 +22,15 @@ SET time_zone = "+00:00"; -- CREATE TABLE IF NOT EXISTS `antispam` ( - `board` varchar(255) NOT NULL, + `board` varchar(120) CHARACTER SET ascii NOT NULL, `thread` int(11) DEFAULT NULL, - `hash` char(40) NOT NULL, + `hash` char(40) COLLATE ascii_bin NOT NULL, `created` int(11) NOT NULL, `expires` int(11) DEFAULT NULL, `passed` smallint(6) NOT NULL, PRIMARY KEY (`hash`), KEY `board` (`board`,`thread`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=ascii COLLATE=ascii_bin; -- -------------------------------------------------------- @@ -44,17 +39,17 @@ CREATE TABLE IF NOT EXISTS `antispam` ( -- CREATE TABLE IF NOT EXISTS `bans` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `ip` varchar(45) NOT NULL, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, `mod` int(11) NOT NULL COMMENT 'which mod made the ban', `set` int(11) NOT NULL, `expires` int(11) DEFAULT NULL, `reason` text, - `board` varchar(120) DEFAULT NULL, + `board` varchar(120) CHARACTER SET ascii DEFAULT NULL, `seen` tinyint(1) NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `ip` (`ip`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -63,18 +58,18 @@ CREATE TABLE IF NOT EXISTS `bans` ( -- CREATE TABLE IF NOT EXISTS `boards` ( - `uri` varchar(120) NOT NULL, + `uri` varchar(120) CHARACTER SET ascii NOT NULL, `title` tinytext NOT NULL, `subtitle` tinytext, PRIMARY KEY (`uri`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -- -- Dumping data for table `boards` -- -INSERT INTO `boards` (`uri`, `title`, `subtitle`) VALUES -('b', 'Beta', 'In development.'); +INSERT INTO `boards` VALUES +('b', 'Random', NULL); -- -------------------------------------------------------- @@ -83,13 +78,13 @@ INSERT INTO `boards` (`uri`, `title`, `subtitle`) VALUES -- CREATE TABLE IF NOT EXISTS `cites` ( - `board` varchar(8) NOT NULL, + `board` varchar(120) NOT NULL, `post` int(11) NOT NULL, - `target_board` varchar(8) NOT NULL, + `target_board` varchar(120) NOT NULL, `target` int(11) NOT NULL, KEY `target` (`target_board`,`target`), KEY `post` (`board`,`post`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=ascii; -- -------------------------------------------------------- @@ -98,14 +93,14 @@ CREATE TABLE IF NOT EXISTS `cites` ( -- CREATE TABLE IF NOT EXISTS `ip_notes` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `ip` varchar(45) NOT NULL, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, `mod` int(11) DEFAULT NULL, `time` int(11) NOT NULL, `body` text NOT NULL, UNIQUE KEY `id` (`id`), KEY `ip` (`ip`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -115,12 +110,12 @@ CREATE TABLE IF NOT EXISTS `ip_notes` ( CREATE TABLE IF NOT EXISTS `modlogs` ( `mod` int(11) NOT NULL, - `ip` varchar(45) NOT NULL, - `board` varchar(120) DEFAULT NULL, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, + `board` varchar(120) CHARACTER SET ascii DEFAULT NULL, `time` int(11) NOT NULL, `text` text NOT NULL, KEY `time` (`time`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- @@ -131,19 +126,19 @@ CREATE TABLE IF NOT EXISTS `modlogs` ( CREATE TABLE IF NOT EXISTS `mods` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL, - `password` char(64) NOT NULL COMMENT 'SHA256', - `salt` char(32) NOT NULL, + `password` char(64) CHARACTER SET ascii NOT NULL COMMENT 'SHA256', + `salt` char(32) CHARACTER SET ascii NOT NULL, `type` smallint(1) NOT NULL COMMENT '0: janitor, 1: mod, 2: admin', - `boards` text NOT NULL, + `boards` text CHARACTER SET ascii NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`,`username`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=4 ; -- -- Dumping data for table `mods` -- -INSERT INTO `mods` (`id`, `username`, `password`, `salt`, `type`, `boards`) VALUES +INSERT INTO `mods` VALUES (1, 'admin', 'cedad442efeef7112fed0f50b011b2b9bf83f6898082f995f69dd7865ca19fb7', '4a44c6c55df862ae901b413feecb0d49', 2, '*'); -- -------------------------------------------------------- @@ -153,10 +148,10 @@ INSERT INTO `mods` (`id`, `username`, `password`, `salt`, `type`, `boards`) VALU -- CREATE TABLE IF NOT EXISTS `mutes` ( - `ip` varchar(45) NOT NULL, + `ip` varchar(39) NOT NULL, `time` int(11) NOT NULL, KEY `ip` (`ip`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=ascii; -- -------------------------------------------------------- @@ -165,14 +160,14 @@ CREATE TABLE IF NOT EXISTS `mutes` ( -- CREATE TABLE IF NOT EXISTS `news` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `time` int(11) NOT NULL, `subject` text NOT NULL, `body` text NOT NULL, UNIQUE KEY `id` (`id`), KEY `time` (`time`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -181,13 +176,13 @@ CREATE TABLE IF NOT EXISTS `news` ( -- CREATE TABLE IF NOT EXISTS `noticeboard` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `mod` int(11) NOT NULL, `time` int(11) NOT NULL, `subject` text NOT NULL, `body` text NOT NULL, UNIQUE KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -196,14 +191,14 @@ CREATE TABLE IF NOT EXISTS `noticeboard` ( -- CREATE TABLE IF NOT EXISTS `pms` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `sender` int(11) NOT NULL, `to` int(11) NOT NULL, `message` text NOT NULL, `time` int(11) NOT NULL, `unread` tinyint(1) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -212,14 +207,14 @@ CREATE TABLE IF NOT EXISTS `pms` ( -- CREATE TABLE IF NOT EXISTS `reports` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, - `ip` varchar(45) NOT NULL, - `board` varchar(120) DEFAULT NULL, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, + `board` varchar(120) CHARACTER SET ascii DEFAULT NULL, `post` int(11) NOT NULL, `reason` text NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=3 ; -- -------------------------------------------------------- @@ -228,9 +223,9 @@ CREATE TABLE IF NOT EXISTS `reports` ( -- CREATE TABLE IF NOT EXISTS `robot` ( - `hash` varchar(40) NOT NULL COMMENT 'SHA1', + `hash` varchar(40) COLLATE ascii_bin NOT NULL COMMENT 'SHA1', PRIMARY KEY (`hash`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=ascii COLLATE=ascii_bin; -- -------------------------------------------------------- @@ -243,7 +238,7 @@ CREATE TABLE IF NOT EXISTS `theme_settings` ( `name` varchar(40) DEFAULT NULL, `value` text, KEY `theme` (`theme`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; diff --git a/post.php b/post.php index e9041ce8..d1749fd1 100644 --- a/post.php +++ b/post.php @@ -378,7 +378,10 @@ if (isset($_POST['delete'])) { wordfilters($post['body']); - $post['body_nomarkup'] = preg_replace('/[\x{010000}-\x{ffffff}]/u', '', $post['body']); + if (mysql_version() >= 50503) + $post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset + else + $post['body_nomarkup'] = preg_replace('/[\x{010000}-\x{ffffff}]/u', '', $post['body']); // MySQL's `utf8` charset only supports up to 3-byte symbols if (!($mod && isset($post['raw']) && $post['raw'])) $post['tracked_cites'] = markup($post['body'], true); diff --git a/templates/posts.sql b/templates/posts.sql index c766d38e..0a1dc92a 100644 --- a/templates/posts.sql +++ b/templates/posts.sql @@ -1,32 +1,33 @@ CREATE TABLE IF NOT EXISTS `posts_{{ board }}` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `thread` int(11) DEFAULT NULL, - `subject` varchar(100) DEFAULT NULL, - `email` varchar(30) DEFAULT NULL, - `name` varchar(35) DEFAULT NULL, - `trip` varchar(15) DEFAULT NULL, - `capcode` varchar(50) DEFAULT NULL, - `body` text NOT NULL, - `body_nomarkup` text DEFAULT NULL, - `time` int(11) NOT NULL, - `bump` int(11) DEFAULT NULL, - `thumb` varchar(50) DEFAULT NULL, - `thumbwidth` int(11) DEFAULT NULL, - `thumbheight` int(11) DEFAULT NULL, - `file` varchar(50) DEFAULT NULL, - `filewidth` int(11) DEFAULT NULL, - `fileheight` int(11) DEFAULT NULL, - `filesize` int(11) DEFAULT NULL, - `filename` text DEFAULT NULL, - `filehash` text DEFAULT NULL, - `password` varchar(20) DEFAULT NULL, - `ip` varchar(45) NOT NULL, - `sticky` int(1) NOT NULL, - `locked` int(1) NOT NULL, - `sage` int(1) NOT NULL, - `embed` text, - UNIQUE KEY `id` (`id`), - KEY `thread_id` (`thread`, `id`), - KEY `time` (`time`), - FULLTEXT KEY `body` (`body`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `thread` int(11) DEFAULT NULL, + `subject` varchar(100) DEFAULT NULL, + `email` varchar(30) DEFAULT NULL, + `name` varchar(35) DEFAULT NULL, + `trip` varchar(15) DEFAULT NULL, + `capcode` varchar(50) DEFAULT NULL, + `body` text NOT NULL, + `body_nomarkup` text, + `time` int(11) NOT NULL, + `bump` int(11) DEFAULT NULL, + `thumb` varchar(50) DEFAULT NULL, + `thumbwidth` int(11) DEFAULT NULL, + `thumbheight` int(11) DEFAULT NULL, + `file` varchar(50) DEFAULT NULL, + `filewidth` int(11) DEFAULT NULL, + `fileheight` int(11) DEFAULT NULL, + `filesize` int(11) DEFAULT NULL, + `filename` text, + `filehash` text CHARACTER SET ascii, + `password` varchar(20) DEFAULT NULL, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, + `sticky` int(1) NOT NULL, + `locked` int(1) NOT NULL, + `sage` int(1) NOT NULL, + `embed` text, + UNIQUE KEY `id` (`id`), + KEY `thread_id` (`thread`,`id`), + KEY `time` (`time`), + FULLTEXT KEY `body` (`body`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; + \ No newline at end of file From fbc78f76323528cab0d23fa259de984b8b9db457 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 30 Jul 2013 22:13:05 -0400 Subject: [PATCH 073/289] Fix last commit (mysql_version() doesn't work if connection is not yet established) --- install.php | 1 + 1 file changed, 1 insertion(+) diff --git a/install.php b/install.php index c2fe1a55..1f148e92 100644 --- a/install.php +++ b/install.php @@ -249,6 +249,7 @@ if (file_exists($config['has_installed'])) { } } case 'v0.9.6-dev-9': + sql_open(); function __query($sql) { if (mysql_version() >= 50503) return query($sql); From 343397d561183a72ed3a6351175b0d34ebe9ffc3 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 30 Jul 2013 23:30:49 -0400 Subject: [PATCH 074/289] ?/IP/: Don't show posts for board user doesn't have access to --- inc/mod/pages.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index d447fa51..fdf9d8e9 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -744,6 +744,8 @@ function mod_page_ip($ip) { $boards = listBoards(); foreach ($boards as $board) { openBoard($board['uri']); + if (!hasPermission($config['mod']['show_ip'], $board['uri'])) + continue; $query = prepare(sprintf('SELECT * FROM `posts_%s` WHERE `ip` = :ip ORDER BY `sticky` DESC, `id` DESC LIMIT :limit', $board['uri'])); $query->bindValue(':ip', $ip); From 889945f50cd0c2cd1b8f39d7b380133196a93a74 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 30 Jul 2013 23:36:46 -0400 Subject: [PATCH 075/289] Hide "flags" section in posting form if user doesn't have permission to do anything special --- templates/post_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/post_form.html b/templates/post_form.html index aa051f5f..a112e2ab 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -85,7 +85,7 @@
{% trans %}Flags{% endtrans %} From bb2868896c2f383a913e8e5929627660cc754b14 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 00:04:57 -0400 Subject: [PATCH 076/289] Ability to hide IP addresses from mod log --- inc/config.php | 2 ++ templates/mod/log.html | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index 582c3145..28a7a4db 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1024,6 +1024,8 @@ $config['mod']['createusers'] = ADMIN; // View the moderation log $config['mod']['modlog'] = ADMIN; + // View IP addresses of other mods in ?/log + $config['mod']['show_ip_modlog'] = ADMIN; // View relevant moderation log entries on IP address pages (ie. ban history, etc.) // Warning: Can be pretty resource exhaustive if your mod logs are huge. $config['mod']['modlog_ip'] = MOD; diff --git a/templates/mod/log.html b/templates/mod/log.html index e75330b5..0aa3f110 100644 --- a/templates/mod/log.html +++ b/templates/mod/log.html @@ -18,7 +18,11 @@ {% endif %} - {{ log.ip }} + {% if mod|hasPermission(config.mod.show_ip_modlog) %} + {{ log.ip }} + {% else %} + hidden + {% endif %} {{ log.time|ago }} From 42d29657a4fd9cba4ce3db6912dd3696b4a5f83e Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 00:29:49 -0400 Subject: [PATCH 077/289] README update --- README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 50dcc621..7bd6f461 100644 --- a/README.md +++ b/README.md @@ -10,16 +10,21 @@ license. It is written in PHP and has few dependencies. Requirements ------------ 1. PHP >= 5.2.5 -2. [mbstring](http://www.php.net/manual/en/mbstring.installation.php) - (--enable-mbstring) -3. [PHP-GD](http://php.net/manual/en/book.image.php) -4. [PHP-PDO](http://php.net/manual/en/book.pdo.php) - (only MySQL is supported at the moment) +2. MySQL server +3. [mbstring](http://www.php.net/manual/en/mbstring.installation.php) +4. [PHP GD](http://www.php.net/manual/en/intro.image.php) +5. [PHP PDO](http://www.php.net/manual/en/intro.pdo.php) We try to make sure Tinyboard is compatible with all major web servers and operating systems. Tinyboard does not include an Apache ```.htaccess``` file nor does it need one. +### Recommended +1. PHP >= 5.3 +2. MySQL server >= 5.5.3 +3. ImageMagick or command-line version (```convert``` and ```identify```) +4. [APC (Alternative PHP Cache)](http://php.net/manual/en/book.apc.php), [XCache](http://xcache.lighttpd.net/) or [Memcached](http://www.php.net/manual/en/intro.memcached.php) + Contributing ------------ You can contribute to Tinyboard by: @@ -58,7 +63,7 @@ find support from a variety of sources: * Documentation can be found [here](http://tinyboard.org/docs/). * You can join Tinyboard's IRC channel for support and general queries: [irc.datnode.net #tinyboard](irc://irc.datnode.net/tinyboard). -* You can find enterprise-grade support at [tinyboard.org](http://tinyboard.org/#support). +* You may find help at [tinyboard.org](http://tinyboard.org/#help). License -------- From 3bee1ba4fd16263ac4eefdf0bc8c7a3d11d8cccb Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 00:39:00 -0400 Subject: [PATCH 078/289] Issue #61 --- js/expand.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/js/expand.js b/js/expand.js index 16a0efb2..6e5fa659 100644 --- a/js/expand.js +++ b/js/expand.js @@ -1,9 +1,9 @@ /* - *expand.js + * expand.js * https://github.com/savetheinternet/Tinyboard/blob/master/js/expand.js * * Released under the MIT license - * Copyright (c) 2012 Michael Save + * Copyright (c) 2012-2013 Michael Save * * Usage: * $config['additional_javascript'][] = 'js/jquery.min.js'; @@ -35,9 +35,8 @@ $(document).ready(function(){ $(this).addClass('expanded').insertAfter(thread.find('div.post:first')).after('
'); } last_expanded = $(this); - - } - else { + $(document).trigger('new_post', this); + } else { last_expanded = post_in_doc; } }); From 42cba538878cb695ba8b3093f72bc66ccd2fa074 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 02:08:55 -0400 Subject: [PATCH 079/289] Allow Unicode in board URIs. --- inc/config.php | 3 +++ inc/display.php | 6 +++--- inc/functions.php | 8 ++++---- inc/mod/pages.php | 9 ++++----- install.php | 23 ++++++++++++++++++----- install.sql | 22 +++++++++++----------- mod.php | 33 +++++++++++++++++---------------- post.php | 6 +++--- 8 files changed, 63 insertions(+), 47 deletions(-) diff --git a/inc/config.php b/inc/config.php index 28a7a4db..36518028 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1130,6 +1130,9 @@ // 'type' => 'scp' //); + // Regex for board URIs + $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\-~.#\/?=&;:+%!*\[\]@$\'()+,|\^]+)?)?' . '/'; diff --git a/inc/display.php b/inc/display.php index a7e4826e..0992166d 100644 --- a/inc/display.php +++ b/inc/display.php @@ -235,7 +235,7 @@ function bidi_cleanup($str){ function secure_link_confirm($text, $title, $confirm_message, $href) { global $config; - return '' . $text . ''; + return '' . $text . ''; } function secure_link($href) { return $href . '/' . make_secure_link_token($href); @@ -299,7 +299,7 @@ class Post { // Fix internal links // Very complicated regex $this->body = preg_replace( - '/ ':?/', // redirect to dashboard @@ -45,7 +45,7 @@ $pages = array( '/news/(\d+)' => 'news', // view news '/news/delete/(\d+)' => 'news_delete', // delete from news - '/edit/(\w+)' => 'edit_board', // edit board details + '/edit/(\%b)' => 'edit_board', // edit board details '/new-board' => 'new_board', // create a new board '/rebuild' => 'rebuild', // rebuild static files @@ -63,15 +63,15 @@ $pages = array( // CSRF-protected moderator actions '/ban' => 'secure_POST ban', // new ban - '/(\w+)/ban(&delete)?/(\d+)' => 'secure_POST ban_post', // ban poster - '/(\w+)/move/(\d+)' => 'secure_POST move', // move thread - '/(\w+)/edit(_raw)?/(\d+)' => 'secure_POST edit_post', // edit post - '/(\w+)/delete/(\d+)' => 'secure delete', // delete post - '/(\w+)/deletefile/(\d+)' => 'secure deletefile', // delete file from post - '/(\w+)/deletebyip/(\d+)(/global)?' => 'secure deletebyip', // delete all posts by IP address - '/(\w+)/(un)?lock/(\d+)' => 'secure lock', // lock thread - '/(\w+)/(un)?sticky/(\d+)' => 'secure sticky', // sticky thread - '/(\w+)/bump(un)?lock/(\d+)' => 'secure bumplock', // "bumplock" thread + '/(\%b)/ban(&delete)?/(\d+)' => 'secure_POST ban_post', // ban poster + '/(\%b)/move/(\d+)' => 'secure_POST move', // move thread + '/(\%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)/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 + '/(\%b)/bump(un)?lock/(\d+)' => 'secure bumplock', // "bumplock" thread '/themes' => 'themes_list', // manage themes '/themes/(\w+)' => 'theme_configure', // configure/reconfigure theme @@ -86,10 +86,10 @@ $pages = array( '/debug/sql' => 'secure_POST debug_sql', // This should always be at the end: - '/(\w+)/' => 'view_board', - '/(\w+)/' . preg_quote($config['file_index'], '!') => 'view_board', - '/(\w+)/' . str_replace('%d', '(\d+)', preg_quote($config['file_page'], '!')) => 'view_board', - '/(\w+)/' . preg_quote($config['dir']['res'], '!') . + '/(\%b)/' => 'view_board', + '/(\%b)/' . preg_quote($config['file_index'], '!') => 'view_board', + '/(\%b)/' . str_replace('%d', '(\d+)', preg_quote($config['file_page'], '!')) => 'view_board', + '/(\%b)/' . preg_quote($config['dir']['res'], '!') . str_replace('%d', '(\d+)', preg_quote($config['file_page'], '!')) => 'view_thread', ); @@ -109,7 +109,8 @@ $new_pages = array(); foreach ($pages as $key => $callback) { if (is_string($callback) && preg_match('/^secure /', $callback)) $key .= '(/(?P[a-f0-9]{8}))?'; - $new_pages[@$key[0] == '!' ? $key : '!^' . $key . '(?:&[^&=]+=[^&]*)*$!'] = $callback; + $key = str_replace('\%b', $config['board_regex'], $key); + $new_pages[@$key[0] == '!' ? $key : '!^' . $key . '(?:&[^&=]+=[^&]*)*$!u'] = $callback; } $pages = $new_pages; diff --git a/post.php b/post.php index d1749fd1..85dc2d05 100644 --- a/post.php +++ b/post.php @@ -170,7 +170,7 @@ if (isset($_POST['delete'])) { error($config['error']['bot']); // Check the referrer - if (!isset($_SERVER['HTTP_REFERER']) || !preg_match($config['referer_match'], $_SERVER['HTTP_REFERER'])) + if (!isset($_SERVER['HTTP_REFERER']) || !preg_match($config['referer_match'], urldecode($_SERVER['HTTP_REFERER']))) error($config['error']['referer']); checkDNSBL(); @@ -547,9 +547,9 @@ if (isset($_POST['delete'])) { // Remove board directories before inserting them into the database. if ($post['has_file']) { $post['file_path'] = $post['file']; - $post['file'] = substr_replace($post['file'], '', 0, mb_strlen($board['dir'] . $config['dir']['img'])); + $post['file'] = mb_substr($post['file'], mb_strlen($board['dir'] . $config['dir']['img'])); if ($is_an_image && $post['thumb'] != 'spoiler') - $post['thumb'] = substr_replace($post['thumb'], '', 0, mb_strlen($board['dir'] . $config['dir']['thumb'])); + $post['thumb'] = mb_substr($post['thumb'], mb_strlen($board['dir'] . $config['dir']['thumb'])); } $post = (object)$post; From b22bcdecf9cce8b08c48283290173996b6c8abf2 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 02:19:58 -0400 Subject: [PATCH 080/289] Fix last commit: purge() issue --- inc/functions.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/inc/functions.php b/inc/functions.php index 6db21c54..773f8eb6 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -366,6 +366,11 @@ function boardTitle($uri) { function purge($uri) { global $config, $debug; + // Fix for Unicode + $uri = urlencode($uri); + $uri = str_replace("%2F", "/", $uri); + $uri = str_replace("%3A", ":", $uri); + if (preg_match($config['referer_match'], $config['root']) && isset($_SERVER['REQUEST_URI'])) { $uri = (str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) == '/' ? '/' : str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) . '/') . $uri; } else { From 90b82b1a0635d78d536bc92decbdc273d8f7e323 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 02:38:40 -0400 Subject: [PATCH 081/289] Disable autocomplete --- templates/post_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/post_form.html b/templates/post_form.html index a112e2ab..03b9961f 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -1,4 +1,4 @@ -
+ {{ antibot.html() }} {% if id %}{% endif %} {{ antibot.html() }} From 37d769646b7754f37928f9ceb8b0a2a9eea58c6b Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 03:12:06 -0400 Subject: [PATCH 082/289] Markup/quote fix for multibyte --- inc/functions.php | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 773f8eb6..2d648df8 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -297,6 +297,10 @@ function sprintf3($str, $vars, $delim = '%') { array_values($replaces), $str); } +function mb_substr_replace($string, $replacement, $start, $length) { + return mb_substr($string, 0, $start) . $replacement . mb_substr($string, $start + $length); +} + function setupBoard($array) { global $board, $config; @@ -1451,6 +1455,7 @@ function markup(&$body, $track_cites = false) { } $skip_chars = 0; + $body_tmp = $body; foreach ($cites as $matches) { $cite = $matches[2][0]; @@ -1458,20 +1463,26 @@ function markup(&$body, $track_cites = false) { $query->bindValue(':id', $cite); $query->execute() or error(db_error($query)); + // preg_replace is not multibyte-safe + foreach ($matches as &$match) { + $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); + } + if ($post = $query->fetch()) { $replacement = '' . '>>' . $cite . ''; - $body = substr_replace($body, $matches[1][0] . $replacement . $matches[3][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); - $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[3][0]) - mb_strlen($matches[0][0]); + $body = mb_substr_replace($body, $matches[1][0] . $replacement . $matches[3][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); + $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[3][0]) - mb_strlen($matches[0][0]); + if ($track_cites && $config['track_cites']) $tracked_cites[] = array($board['uri'], $post['id']); } } } - + // Cross-board linking if (preg_match_all('/(^|\s)>>>\/(' . $config['board_regex'] . 'f?)\/(\d+)?([\s,.)?]|$)/um', $body, $cites, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { if (count($cites[0]) > $config['max_cites']) { @@ -1479,11 +1490,17 @@ function markup(&$body, $track_cites = false) { } $skip_chars = 0; + $body_tmp = $body; foreach ($cites as $matches) { $_board = $matches[2][0]; $cite = @$matches[3][0]; + // preg_replace is not multibyte-safe + foreach ($matches as &$match) { + $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); + } + // Temporarily store board information because it will be overwritten $tmp_board = $board['uri']; @@ -1499,7 +1516,8 @@ function markup(&$body, $track_cites = false) { $config['root'] . $board['dir'] . $config['dir']['res'] . ($post['thread']?$post['thread']:$post['id']) . '.html#' . $cite . '">' . '>>>/' . $_board . '/' . $cite . ''; - $body = substr_replace($body, $matches[1][0] . $replacement . $matches[4][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); + + $body = mb_substr_replace($body, $matches[1][0] . $replacement . $matches[4][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[4][0]) - mb_strlen($matches[0][0]); if ($track_cites && $config['track_cites']) @@ -1510,7 +1528,7 @@ function markup(&$body, $track_cites = false) { $config['root'] . $board['dir'] . $config['file_index'] . '">' . '>>>/' . $_board . '/' . ''; - $body = substr_replace($body, $matches[1][0] . $replacement . $matches[4][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); + $body = mb_substr_replace($body, $matches[1][0] . $replacement . $matches[4][0], $matches[0][1] + $skip_chars, mb_strlen($matches[0][0])); $skip_chars += mb_strlen($matches[1][0] . $replacement . $matches[4][0]) - mb_strlen($matches[0][0]); } } From a2d8e4cf3efd97765405e4d51ecdc279b227072b Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 03:13:51 -0400 Subject: [PATCH 083/289] Previous commit comment fix --- inc/functions.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 2d648df8..15037847 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1463,7 +1463,7 @@ function markup(&$body, $track_cites = false) { $query->bindValue(':id', $cite); $query->execute() or error(db_error($query)); - // preg_replace is not multibyte-safe + // preg_match_all is not multibyte-safe foreach ($matches as &$match) { $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); } @@ -1496,7 +1496,7 @@ function markup(&$body, $track_cites = false) { $_board = $matches[2][0]; $cite = @$matches[3][0]; - // preg_replace is not multibyte-safe + // preg_match_all is not multibyte-safe foreach ($matches as &$match) { $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); } From f9cdf31ede3bab1aff1ffa5a043bfd9a6eceb6d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Sat, 22 Dec 2012 20:16:31 +0100 Subject: [PATCH 084/289] Fix animated .gif conversion when $config['thumb_ext'] == '' --- inc/image.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/image.php b/inc/image.php index eb98ceda..f0909b8c 100644 --- a/inc/image.php +++ b/inc/image.php @@ -186,7 +186,7 @@ class ImageImagick extends ImageBase { public function resize() { global $config; - if ($this->format == 'gif' && $config['thumb_ext'] == 'gif') { + if ($this->format == 'gif' && ($config['thumb_ext'] == 'gif' || $config['thumb_ext'] == '')) { $this->image = new Imagick(); $this->image->setFormat('gif'); @@ -274,7 +274,7 @@ class ImageConvert extends ImageBase { $quality = $config['thumb_quality'] * 10; - if ($this->format == 'gif' && $config['thumb_ext'] == 'gif' && $config['thumb_keep_animation_frames'] > 1) { + if ($this->format == 'gif' && ($config['thumb_ext'] == 'gif' || $config['thumb_ext'] == '') && $config['thumb_keep_animation_frames'] > 1) { if (shell_exec("convert -background transparent -filter Point -sample {$this->width}x{$this->height} +antialias -quality {$quality} " . escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) error('Failed to resize image!'); From b7e725bf3e0394193dee9373c18dec7f727ea6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Mon, 24 Dec 2012 05:34:06 +0100 Subject: [PATCH 085/289] Support for resizing gifs using gifsicle with resizing the rest using ImageMagick --- inc/config.php | 15 ++++++++++----- inc/image.php | 28 ++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/inc/config.php b/inc/config.php index 36518028..863b9043 100644 --- a/inc/config.php +++ b/inc/config.php @@ -413,11 +413,16 @@ $config['thumb_keep_animation_frames'] = 1; // Thumbnailing method: - // - 'gd' PHP GD (default). Only handles the most basic image formats (GIF, JPEG, PNG). This is a prerequisite - // for Tinyboard no matter what method you choose. - // - 'imagick' PHP's ImageMagick bindings. Fast and efficient, supporting many image formats. A few minor bugs. - // http://pecl.php.net/package/imagick - // - 'convert' The command line version of ImageMagick (`convert`). Fixes most of the bugs in PHP Imagick. + // - 'gd' PHP GD (default). Only handles the most basic image formats (GIF, JPEG, PNG). + // This is a prerequisite for Tinyboard no matter what method you choose. + // - 'imagick' PHP's ImageMagick bindings. Fast and efficient, supporting many image formats. + // A few minor bugs. http://pecl.php.net/package/imagick + // - 'convert' The command line version of ImageMagick (`convert`). Fixes most of the bugs in + // PHP Imagick. + // - 'convert+gifsicle' Same as above, with the exception of using `gifsicle` (command line application) + // instead of `convert` for resizing gifs. It's faster and resulting animated gifs + // have less artifacts than if resized with ImageMagick. + $config['thumb_method'] = 'gd'; // Strip EXIF metadata from JPEG files diff --git a/inc/image.php b/inc/image.php index f0909b8c..e4738953 100644 --- a/inc/image.php +++ b/inc/image.php @@ -16,10 +16,10 @@ class Image { $this->src = $src; $this->format = $format; - + if ($config['thumb_method'] == 'imagick') { $classname = 'ImageImagick'; - } elseif ($config['thumb_method'] == 'convert') { + } elseif ($config['thumb_method'] == 'convert' || $config['thumb_method'] == 'convert+gifsicle') { $classname = 'ImageConvert'; } else { $classname = 'Image' . strtoupper($this->format); @@ -29,6 +29,7 @@ class Image { } $this->image = new $classname($this); + if (!$this->image->valid()) { $this->delete(); error($config['error']['invalidimg']); @@ -44,10 +45,15 @@ class Image { public function resize($extension, $max_width, $max_height) { global $config; + $gifsicle = false; + if ($config['thumb_method'] == 'imagick') { $classname = 'ImageImagick'; } elseif ($config['thumb_method'] == 'convert') { $classname = 'ImageConvert'; + } elseif ($config['thumb_method'] == 'convert+gifsicle') { + $classname = 'ImageConvert'; + $gifsicle = true; } else { $classname = 'Image' . strtoupper($extension); if (!class_exists($classname)) { @@ -75,6 +81,9 @@ class Image { $height = $max_height; } + if ($gifsicle) { + $thumb->gifsicle = 1; + } $thumb->_resize($this->image->image, $width, $height); return $thumb; @@ -219,7 +228,7 @@ class ImageImagick extends ImageBase { class ImageConvert extends ImageBase { - public $width, $height, $temp; + public $width, $height, $temp, $gifsicle; public function init() { global $config; @@ -275,9 +284,16 @@ class ImageConvert extends ImageBase { $quality = $config['thumb_quality'] * 10; if ($this->format == 'gif' && ($config['thumb_ext'] == 'gif' || $config['thumb_ext'] == '') && $config['thumb_keep_animation_frames'] > 1) { - if (shell_exec("convert -background transparent -filter Point -sample {$this->width}x{$this->height} +antialias -quality {$quality} " . - escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) - error('Failed to resize image!'); + if ($this->gifsicle) { + if (shell_exec("gifsicle --unoptimize -O2 --resize {$this->width}x{$this->height} " . + escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) + error('Failed to resize image!'); + } + else { + if (shell_exec("convert -background transparent -filter Point -sample {$this->width}x{$this->height} +antialias -quality {$quality} " . + escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) + error('Failed to resize image!'); + } } else { if (shell_exec("convert -background transparent -flatten -filter Point -scale {$this->width}x{$this->height} +antialias -quality {$quality} " . escapeshellarg($this->src . '[0]') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) From 73cb2bdf2c429fc302156b5853a409ff3cdc09b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Mon, 24 Dec 2012 05:42:53 +0100 Subject: [PATCH 086/289] convert+gifsicle: fix previous commit --- inc/image.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/image.php b/inc/image.php index e4738953..7aea9bfe 100644 --- a/inc/image.php +++ b/inc/image.php @@ -285,8 +285,8 @@ class ImageConvert extends ImageBase { if ($this->format == 'gif' && ($config['thumb_ext'] == 'gif' || $config['thumb_ext'] == '') && $config['thumb_keep_animation_frames'] > 1) { if ($this->gifsicle) { - if (shell_exec("gifsicle --unoptimize -O2 --resize {$this->width}x{$this->height} " . - escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) + if (shell_exec("gifsicle --unoptimize -O2 --resize {$this->width}x{$this->height} < " . + escapeshellarg($this->src . '') . " > " . escapeshellarg($this->temp)) || !file_exists($this->temp)) error('Failed to resize image!'); } else { From 573f86ccaee3b206ebacdb4c695ea2841d68f8f9 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 03:35:07 -0400 Subject: [PATCH 087/289] Tiny code clean-up --- inc/image.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/inc/image.php b/inc/image.php index 7aea9bfe..99c10252 100644 --- a/inc/image.php +++ b/inc/image.php @@ -81,9 +81,7 @@ class Image { $height = $max_height; } - if ($gifsicle) { - $thumb->gifsicle = 1; - } + $thumb->gifsicle = $gifsicle; $thumb->_resize($this->image->image, $width, $height); return $thumb; @@ -288,8 +286,7 @@ class ImageConvert extends ImageBase { if (shell_exec("gifsicle --unoptimize -O2 --resize {$this->width}x{$this->height} < " . escapeshellarg($this->src . '') . " > " . escapeshellarg($this->temp)) || !file_exists($this->temp)) error('Failed to resize image!'); - } - else { + } else { if (shell_exec("convert -background transparent -filter Point -sample {$this->width}x{$this->height} +antialias -quality {$quality} " . escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) error('Failed to resize image!'); From 44d3b12cefce4e6e2e5c6e367e8443790f38bf57 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Sat, 5 Jan 2013 13:45:21 +0100 Subject: [PATCH 088/289] Embedding: added vocaroo support --- inc/config.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inc/config.php b/inc/config.php index 863b9043..e2cd79f1 100644 --- a/inc/config.php +++ b/inc/config.php @@ -663,6 +663,10 @@ array( '/^https?:\/\/video\.google\.com\/videoplay\?docid=(\d+)([&#](.+)?)?$/i', '' + ), + array( + '/^https?:\/\/(\w+\.)?vocaroo\.com\/i\/([a-zA-Z0-9]{2,15})$/i', + '' ) ); From 220609999a78fedce1459df5e89c40b2bd1f7d90 Mon Sep 17 00:00:00 2001 From: szalej Date: Wed, 16 Jan 2013 10:50:20 +0100 Subject: [PATCH 089/289] Update inc/functions.php Hide Referrer (nullrefer.com) --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 15037847..bc58b117 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1385,7 +1385,7 @@ function markup_url($matches) { $markup_urls[] = $url; - return '' . $url . '' . $after; + return '' . $url . '' . $after; } function unicodify($body) { From 5bf53cb581e8e9598405cd1d8531c2672417d32e Mon Sep 17 00:00:00 2001 From: szalej Date: Wed, 16 Jan 2013 11:34:31 +0100 Subject: [PATCH 090/289] Update inc/functions.php url ads --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index bc58b117..8bae66d3 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1385,7 +1385,7 @@ function markup_url($matches) { $markup_urls[] = $url; - return '' . $url . '' . $after; + return '' . $url . '' . $after; } function unicodify($body) { From 3ef2c05bb20d5fc7de528676e8a7c02bfd9135fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 16 Jan 2013 19:49:26 +0100 Subject: [PATCH 091/289] url_ads: fix it not working --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 8bae66d3..5d3a5757 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1378,7 +1378,7 @@ function quote($body, $quote=true) { } function markup_url($matches) { - global $markup_urls; + global $config, $markup_urls; $url = $matches[1]; $after = $matches[2]; From 51efd817c8e82a498dbdd603d1194a0dd43f7192 Mon Sep 17 00:00:00 2001 From: szalej Date: Wed, 16 Jan 2013 11:32:15 +0100 Subject: [PATCH 092/289] Update inc/config.php hide referrer option --- inc/config.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/inc/config.php b/inc/config.php index e2cd79f1..cf55d149 100644 --- a/inc/config.php +++ b/inc/config.php @@ -335,6 +335,11 @@ $config['auto_unicode'] = true; // Whether to turn URLs into functional links $config['markup_urls'] = true; + $config['url_ads'] = ''; + // Use it if you want to add something before URL + //for example hide referrer 'http://www.nullrefer.com/?' 'http://anonym.to/?' + //or add some sort of ads + // Wordfilters are used to automatically replace certain words/phrases with something else. // For a normal string replacement: From 18516ff8289cc4e0c147f185d29824643b1f960d Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 03:43:01 -0400 Subject: [PATCH 093/289] Rename $config['url_ads'] to $config['link_prefix'] --- inc/config.php | 6 ++---- inc/functions.php | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/inc/config.php b/inc/config.php index cf55d149..35b31b86 100644 --- a/inc/config.php +++ b/inc/config.php @@ -335,10 +335,8 @@ $config['auto_unicode'] = true; // Whether to turn URLs into functional links $config['markup_urls'] = true; - $config['url_ads'] = ''; - // Use it if you want to add something before URL - //for example hide referrer 'http://www.nullrefer.com/?' 'http://anonym.to/?' - //or add some sort of ads + // Optional URL prefix for links (eg. "http://anonym.to/?") + $config['link_prefix'] = ''; // Wordfilters are used to automatically replace certain words/phrases with something else. diff --git a/inc/functions.php b/inc/functions.php index 5d3a5757..a261e350 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1385,7 +1385,7 @@ function markup_url($matches) { $markup_urls[] = $url; - return '' . $url . '' . $after; + return '' . $url . '' . $after; } function unicodify($body) { From a9f3f44c5ffc355df7831eed29b08e0dd2b398fc Mon Sep 17 00:00:00 2001 From: asiekierka Date: Sun, 6 Jan 2013 09:41:00 +0100 Subject: [PATCH 094/289] refactored head away from templates Conflicts: templates/generic_page.html templates/index.html templates/page.html --- templates/generic_page.html | 30 +-------- templates/header.html | 28 +++++++++ templates/index.html | 120 ++++++++++++++---------------------- templates/page.html | 59 ++++++++---------- 4 files changed, 100 insertions(+), 137 deletions(-) create mode 100644 templates/header.html diff --git a/templates/generic_page.html b/templates/generic_page.html index dc9e185a..0c8f9867 100644 --- a/templates/generic_page.html +++ b/templates/generic_page.html @@ -2,34 +2,8 @@ {% block head %} - - {% if config.url_favicon %}{% endif %} - {{ board.url }} - {{ board.name }} - - - {% if config.meta_keywords %}{% endif %} - {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if not nojavascript %} - - {% if not config.additional_javascript_compile %} - {% for javascript in config.additional_javascript %}{% endfor %} - {% endif %} - {% endif %} - {% if config.recaptcha %}{% endif %} + {% include 'header.html' %} + {{ board.url }} - {{ board.name }} {% endblock %} diff --git a/templates/header.html b/templates/header.html new file mode 100644 index 00000000..95e0bc09 --- /dev/null +++ b/templates/header.html @@ -0,0 +1,28 @@ + + {% if config.url_favicon %}{% endif %} + + + {% if config.meta_keywords %}{% endif %} + {% if config.default_stylesheet.1 != '' %}{% endif %} + + {% if not nojavascript %} + + {% if not config.additional_javascript_compile %} + {% for javascript in config.additional_javascript %}{% endfor %} + {% endif %} + {% endif %} + {% if config.recaptcha %}{% endif %} diff --git a/templates/index.html b/templates/index.html index 430e2eab..da6101ee 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,75 +1,45 @@ - - - - - - {% if config.url_favicon %}{% endif %} - {{ board.url }} - {{ board.title|e }} - - {% if config.meta_keywords %}{% endif %} - {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if config.font_awesome %}{% endif %} - {% if not nojavascript %} - - {% if config.quick_reply %} - - {% endif %} - {% if not config.additional_javascript_compile %} - {% for javascript in config.additional_javascript %}{% endfor %} - {% endif %} - {% endif %} - {% if config.recaptcha %}{% endif %} - - - {{ boardlist.top }} - {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} - {% if config.url_banner %}{% endif %} -
-

{{ board.url }} - {{ board.title|e }}

-
- {% if board.subtitle %} - {{ board.subtitle|e }} - {% endif %} - {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} -
-
- - {% include 'post_form.html' %} - - {% if config.blotter %}
{{ config.blotter }}
{% endif %} -
- - - {% if mod %}{% endif %} - {{ body }} - {% include 'report_delete.html' %} - -
{{ btn.prev }} {% for page in pages %} - [{{ page.num }}]{% if loop.last %} {% endif %} - {% endfor %} {{ btn.next }}
- {{ boardlist.bottom }} -
-

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

- {% for footer in config.footer %}

{{ footer }}

{% endfor %} -
- - - + + + + {% include 'header.html' %} + + {% include 'header.html' %} + {{ board.url }} - {{ board.title|e }} + + + {{ boardlist.top }} + {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} + {% if config.url_banner %}{% endif %} +
+

{{ board.url }} - {{ board.title|e }}

+
+ {% if board.subtitle %} + {{ board.subtitle|e }} + {% endif %} + {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} +
+
+ + {% include 'post_form.html' %} + + {% if config.blotter %}
{{ config.blotter }}
{% endif %} +
+
+ + {% if mod %}{% endif %} + {{ body }} + {% include 'report_delete.html' %} +
+
{{ btn.prev }} {% for page in pages %} + [{{ page.num }}]{% if loop.last %} {% endif %} + {% endfor %} {{ btn.next }}
+ {{ boardlist.bottom }} +
+

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

+ {% for footer in config.footer %}

{{ footer }}

{% endfor %} +
+ + + diff --git a/templates/page.html b/templates/page.html index 2f3de358..a7c6a300 100644 --- a/templates/page.html +++ b/templates/page.html @@ -1,34 +1,25 @@ - - - - - - {% if config.url_favicon %}{% endif %} - {{ title }} - - {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if not nojavascript %} - - {% if not config.additional_javascript_compile %} - {% for javascript in config.additional_javascript %}{% endfor %} - {% endif %} - {% endif %} - - - {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} -
-

{{ title }}

-
- {% if subtitle %} - {{ subtitle }} - {% endif %} - {% if mod and not hide_dashboard_link %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} -
-
- {{ body }} -
-
-

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

-
- - + + + + + {% include 'header.html' %} + {{ title }} + + + {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} +
+

{{ title }}

+
+ {% if subtitle %} + {{ subtitle }} + {% endif %} + {% if mod and not hide_dashboard_link %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} +
+
+ {{ body }} +
+
+

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

+
+ + From 1ffabe2b930a72995be9c4b1699ebd0dab22827d Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 03:55:55 -0400 Subject: [PATCH 095/289] fix header.html merge --- templates/header.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/header.html b/templates/header.html index 95e0bc09..3791296f 100644 --- a/templates/header.html +++ b/templates/header.html @@ -4,6 +4,7 @@ {% if config.meta_keywords %}{% endif %} {% if config.default_stylesheet.1 != '' %}{% endif %} + {% if config.font_awesome %}{% endif %} {% if not nojavascript %} @@ -25,4 +26,4 @@ .recaptchatable a { display: block; } - {% endraw %}{% endif %} + {% endraw %}{% endif %} \ No newline at end of file From b7d884ef45c271a0081a61b396cddb9aaf9a55ef Mon Sep 17 00:00:00 2001 From: czaks Date: Tue, 16 Jul 2013 13:18:55 -0400 Subject: [PATCH 096/289] recaptcha: fix for https --- templates/post_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/post_form.html b/templates/post_form.html index 03b9961f..599ae754 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -59,7 +59,7 @@ {{ antibot.html() }}
- + {{ antibot.html() }}
- - - - - - - - - - - -
- {% trans 'Username' %} - - -
- {% trans 'Password' %} - - -
- -
- +{% if error %}

{{ error }}

{% endif %} +
+ + + + + + + + + + + + +
+ {% trans 'Username' %} + + +
+ {% trans 'Password' %} + + +
+ +
+
diff --git a/templates/post_reply.html b/templates/post_reply.html index 450f8246..bc96e74c 100644 --- a/templates/post_reply.html +++ b/templates/post_reply.html @@ -1,111 +1,111 @@ -{% filter remove_whitespace %} -{# tabs and new lines will be ignored #} -
- -

- - - {% if config.poster_ids %} - ID: {{ post.ip|poster_id(post.thread) }} - {% endif %} - No. - - {{ post.id }} - -

- {% if post.embed %} - {{ post.embed }} - {% elseif post.file == 'deleted' %} - - {% elseif post.file and post.file %} -

File: {{ post.file }} - ( - {% if post.thumb == 'spoiler' %} - Spoiler Image, - {% endif %} - {{ post.filesize|filesize }} - {% if post.filex and post.filey %} - , {{ post.filex}}x{{ post.filey }} - {% if config.show_ratio %} - , {{ post.ratio }} - {% endif %} - {% endif %} - {% if config.show_filename and post.filename %} - , - {% if post.filename|length > config.max_filename_display %} - {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} - {% else %} - {{ post.filename|bidi_cleanup }} - {% endif %} - {% endif %} - {% if post.thumb != 'file' and config.image_identification %} - , - - io - {% if post.file|extension == 'jpg' %} - e - {% endif %} - g - t - - {% endif %} - - ) - -

- - - - {% endif %} - {{ post.postControls }} -
- {% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} -
-
-
-{% endfilter %} +{% filter remove_whitespace %} +{# tabs and new lines will be ignored #} +
+ +

+ + + {% if config.poster_ids %} + ID: {{ post.ip|poster_id(post.thread) }} + {% endif %} + No. + + {{ post.id }} + +

+ {% if post.embed %} + {{ post.embed }} + {% elseif post.file == 'deleted' %} + + {% elseif post.file and post.file %} +

File: {{ post.file }} + ( + {% if post.thumb == 'spoiler' %} + Spoiler Image, + {% endif %} + {{ post.filesize|filesize }} + {% if post.filex and post.filey %} + , {{ post.filex}}x{{ post.filey }} + {% if config.show_ratio %} + , {{ post.ratio }} + {% endif %} + {% endif %} + {% if config.show_filename and post.filename %} + , + {% if post.filename|length > config.max_filename_display %} + {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} + {% else %} + {{ post.filename|bidi_cleanup }} + {% endif %} + {% endif %} + {% if post.thumb != 'file' and config.image_identification %} + , + + io + {% if post.file|extension == 'jpg' %} + e + {% endif %} + g + t + + {% endif %} + + ) + +

+ + + + {% endif %} + {{ post.postControls }} +
+ {% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} +
+
+
+{% endfilter %} diff --git a/templates/post_thread.html b/templates/post_thread.html index 72c841be..6d14f207 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -1,160 +1,160 @@ -{% filter remove_whitespace %} -{# tabs and new lines will be ignored #} - -
- -{% if post.embed %} - {{ post.embed }} -{% elseif post.file == 'deleted' %} - -{% elseif post.file and post.file %} -

{% trans %}File:{% endtrans %} {{ post.file }} - ( - {% if post.thumb == 'spoiler' %} - {% trans %}Spoiler Image{% endtrans %}, - {% endif %} - {{ post.filesize|filesize }} - {% if post.filex and post.filey %} - , {{ post.filex}}x{{ post.filey }} - {% if config.show_ratio %} - , {{ post.ratio }} - {% endif %} - {% endif %} - {% if config.show_filename and post.filename %} - , - {% if post.filename|length > config.max_filename_display %} - {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} - {% else %} - {{ post.filename|bidi_cleanup }} - {% endif %} - {% endif %} - {% if post.thumb != 'file' and config.image_identification %} - , - - io - {% if post.file|extension == 'jpg' %} - e - {% endif %} - g - t - - {% endif %} - ) -

- - -{% endif %} -

- - - {% if config.poster_ids %} - ID: {{ post.ip|poster_id(post.id) }} - {% endif %} - No. - - {{ post.id }} - +{% filter remove_whitespace %} +{# tabs and new lines will be ignored #} + +

+ +{% if post.embed %} + {{ post.embed }} +{% elseif post.file == 'deleted' %} + +{% elseif post.file and post.file %} +

{% trans %}File:{% endtrans %} {{ post.file }} + ( + {% if post.thumb == 'spoiler' %} + {% trans %}Spoiler Image{% endtrans %}, + {% endif %} + {{ post.filesize|filesize }} + {% if post.filex and post.filey %} + , {{ post.filex}}x{{ post.filey }} + {% if config.show_ratio %} + , {{ post.ratio }} + {% endif %} + {% endif %} + {% if config.show_filename and post.filename %} + , + {% if post.filename|length > config.max_filename_display %} + {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} + {% else %} + {{ post.filename|bidi_cleanup }} + {% endif %} + {% endif %} + {% if post.thumb != 'file' and config.image_identification %} + , + + io + {% if post.file|extension == 'jpg' %} + e + {% endif %} + g + t + + {% endif %} + ) +

+ + +{% endif %} +

+ + + {% if config.poster_ids %} + ID: {{ post.ip|poster_id(post.id) }} + {% endif %} + No. + + {{ post.id }} + {% if post.sticky %} {% if config.font_awesome %} - {% else %} + {% else %} Sticky - {% endif %} - {% endif %} + {% endif %} + {% endif %} {% if post.locked %} {% if config.font_awesome %} - {% else %} + {% else %} Locked - {% endif %} - {% endif %} + {% endif %} + {% endif %} {% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bumplock, board.uri))) %} {% if config.font_awesome %} - {% else %} + {% else %} Bumplocked - {% endif %} - {% endif %} - {% if index %} - [{% trans %}Reply{% endtrans %}] - {% endif %} - {{ post.postControls }} -

-
- {% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} -
- {% if post.omitted or post.omitted_images %} - - {% if post.omitted %} - {% trans %} - 1 post - {% plural post.omitted %} - {{ count }} posts - {% endtrans %} - {% if post.omitted_images %} - {% trans %}and{% endtrans %} - {% endif %} - {% endif %} - {% if post.omitted_images %} - {% trans %} - 1 image reply - {% plural post.omitted_images %} - {{ count }} image replies - {% endtrans %} - {% endif %} {% trans %}omitted. Click reply to view.{% endtrans %} - - {% endif %} -{% if not index %} -{% endif %} -
{% endfilter %} -{% set hr = post.hr %} -{% for post in post.posts %} - {% include 'post_reply.html' %} -{% endfor %} -
{% if hr %}
{% endif %} -
+ {% endif %} + {% endif %} + {% if index %} + [{% trans %}Reply{% endtrans %}] + {% endif %} + {{ post.postControls }} +

+
+ {% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} +
+ {% if post.omitted or post.omitted_images %} + + {% if post.omitted %} + {% trans %} + 1 post + {% plural post.omitted %} + {{ count }} posts + {% endtrans %} + {% if post.omitted_images %} + {% trans %}and{% endtrans %} + {% endif %} + {% endif %} + {% if post.omitted_images %} + {% trans %} + 1 image reply + {% plural post.omitted_images %} + {{ count }} image replies + {% endtrans %} + {% endif %} {% trans %}omitted. Click reply to view.{% endtrans %} + + {% endif %} +{% if not index %} +{% endif %} +
{% endfilter %} +{% set hr = post.hr %} +{% for post in post.posts %} + {% include 'post_reply.html' %} +{% endfor %} +
{% if hr %}
{% endif %} +
diff --git a/templates/posts.sql b/templates/posts.sql index 0a1dc92a..698fad77 100644 --- a/templates/posts.sql +++ b/templates/posts.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS `posts_{{ board }}` ( +CREATE TABLE IF NOT EXISTS `posts_{{ board }}` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `thread` int(11) DEFAULT NULL, `subject` varchar(100) DEFAULT NULL, diff --git a/templates/thread.html b/templates/thread.html index 53c784b4..5882d9b6 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -1,71 +1,71 @@ - - - - - - {% if config.url_favicon %}{% endif %} - {{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %} - - {% if config.meta_keywords %}{% endif %} + + + + + + {% if config.url_favicon %}{% endif %} + {{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %} + + {% if config.meta_keywords %}{% endif %} {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if config.font_awesome %}{% endif %} - {% if not nojavascript %} - - {% if not config.additional_javascript_compile %} - {% for javascript in config.additional_javascript %}{% endfor %} - {% endif %} - {% endif %} - {% if config.recaptcha %}{% endif %} - - - {{ boardlist.top }} - {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} - {% if config.url_banner %}{% endif %} -
-

{{ board.url }} - {{ board.title|e }}

-
- {% if board.subtitle %} - {{ board.subtitle|e }} - {% endif %} - {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} -
-
- - - - {% include 'post_form.html' %} - - {% if config.blotter %}
{{ config.blotter }}
{% endif %} -
-
- - {% if mod %}{% endif %} - {{ body }} - {% include 'report_delete.html' %} -
- [{% trans %}Return{% endtrans %}] - - {{ boardlist.bottom }} -
-

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

- {% for footer in config.footer %}

{{ footer }}

{% endfor %} -
- - - + {% if config.font_awesome %}{% endif %} + {% if not nojavascript %} + + {% if not config.additional_javascript_compile %} + {% for javascript in config.additional_javascript %}{% endfor %} + {% endif %} + {% endif %} + {% if config.recaptcha %}{% endif %} + + + {{ boardlist.top }} + {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} + {% if config.url_banner %}{% endif %} +
+

{{ board.url }} - {{ board.title|e }}

+
+ {% if board.subtitle %} + {{ board.subtitle|e }} + {% endif %} + {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} +
+
+ + + + {% include 'post_form.html' %} + + {% if config.blotter %}
{{ config.blotter }}
{% endif %} +
+
+ + {% if mod %}{% endif %} + {{ body }} + {% include 'report_delete.html' %} +
+ [{% trans %}Return{% endtrans %}] + + {{ boardlist.bottom }} +
+

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

+ {% for footer in config.footer %}

{{ footer }}

{% endfor %} +
+ + + From 15d2c3e28a4f1590a0a42387dd198eb433ff8580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 2 Jan 2013 05:49:04 +0100 Subject: [PATCH 113/289] Added recent_dark stylesheet for recent template, need to be changed currently in style.php though --- templates/themes/recent/recent_dark.css | 73 +++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 templates/themes/recent/recent_dark.css diff --git a/templates/themes/recent/recent_dark.css b/templates/themes/recent/recent_dark.css new file mode 100644 index 00000000..c59214ac --- /dev/null +++ b/templates/themes/recent/recent_dark.css @@ -0,0 +1,73 @@ +body { + color: #CCCCCC; + background: #1E1E1E; +} + +header div.subtitle, h1 { + color: #CCCCCC; +} + +a:link, a:visited, p.intro a.email span.name { + color: #CCCCCC; + text-decoration: underline; + font-family: sans-serif; +} +a:link:hover, a:visited:hover { + color: #FF0000; + font-family: sans-serif; + text-decoration: underline overline; +} + +.box-wrap { + max-width: 670px; + min-width: 332px; + margin: 30px auto; + overflow: auto; + padding: 0; +} +.box { + background: white; + border: 1px solid #98E; + width: 330px; + margin: 8px 0; + padding: 0; +} +.box ul { + padding: 2px 15px; +} +.box ul li { + list-style: none; + margin: 0; +} +.box.left { + background: #333333; + color: #CCCCCC; + border: #555555 1px solid; + float: left; +} +.box.right { + background: #333333; + color: #CCCCCC; + border: #555555 1px solid; + float: right; +} + +.box h2 { + padding: 3px 7px; + font-size: 12pt; + border: #555555 1px solid; +} +.box.left h2 { + background: #333333; + color: #CCCCCC; + border: #555555 1px solid; +} +.box.right h2 { + background: #333333; + color: #CCCCCC; + border: #555555 1px solid; +} +.box img { + float: none; + margin: 10px auto; +} From b01417be444bd3217ae09067c039cc14f3a5593b Mon Sep 17 00:00:00 2001 From: asiekierka Date: Sun, 6 Jan 2013 13:40:33 +0100 Subject: [PATCH 114/289] added Fluttershy recent theme and theme picker --- templates/themes/recent/info.php | 8 ++++ templates/themes/recent/recent_fs.css | 57 +++++++++++++++++++++++++++ templates/themes/recent/theme.php | 2 +- 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 templates/themes/recent/recent_fs.css diff --git a/templates/themes/recent/info.php b/templates/themes/recent/info.php index d4cf1029..58448b3d 100644 --- a/templates/themes/recent/info.php +++ b/templates/themes/recent/info.php @@ -55,6 +55,14 @@ 'default' => 'recent.css', 'comment' => '(eg. "recent.css")' ); + + $theme['config'][] = Array( + 'title' => 'CSS stylesheet name', + 'name' => 'basecss', + 'type' => 'text', + 'default' => 'recent.css', + 'comment' => '(eg. "recent.css" - see templates/themes/recent for details)' + ); // Unique function name for building everything $theme['build_function'] = 'recentposts_build'; diff --git a/templates/themes/recent/recent_fs.css b/templates/themes/recent/recent_fs.css new file mode 100644 index 00000000..26aed668 --- /dev/null +++ b/templates/themes/recent/recent_fs.css @@ -0,0 +1,57 @@ +.box-wrap { + max-width: 670px; + min-width: 332px; + margin: 30px auto; + overflow: auto; + padding: 0; +} +.box { + background: white; + border: 1px solid #98E; + width: 330px; + margin: 8px 0; + padding: 0; +} +.box ul { + padding: 2px 15px; +} +.box ul li { + list-style: none; + margin: 0; +} +.box.left { + background: #FDF6AF; + color: #9E914F; + border: 1px solid #9E914F; + float: left; +} +.box.right { + background: #F2DCE5; + color: #525; + border: 1px solid #CA759E; + float: right; +} + +.box h2 { + padding: 3px 7px; + font-size: 12pt; +} +.box img { + float: none; + margin: 10px auto; +} +.box.left h2 { + background: #FEE78F; + color: #9E914F; +} +.box.right h2 { + background: #EB81B4; + color: #F8F8F8; +} + +body { + background: #F7F8F9; +} +header div.subtitle, h1 { + color: #888A8C; +} diff --git a/templates/themes/recent/theme.php b/templates/themes/recent/theme.php index 1ebe58f6..75907e77 100644 --- a/templates/themes/recent/theme.php +++ b/templates/themes/recent/theme.php @@ -19,7 +19,7 @@ global $config, $_theme; if ($action == 'all') { - copy('templates/themes/recent/recent.css', $config['dir']['home'] . $settings['css']); + copy('templates/themes/recent/' . $settings['basecss'], $config['dir']['home'] . $settings['css']); } $this->excluded = explode(' ', $settings['exclude']); From f98d5bdd180d7452e82d7e35dcd7e3372ccd2aab Mon Sep 17 00:00:00 2001 From: czaks Date: Tue, 2 Jul 2013 20:58:16 -0400 Subject: [PATCH 115/289] local-time.js: make it work in localised environments --- js/local-time.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/local-time.js b/js/local-time.js index b92cc5be..bb81c83a 100644 --- a/js/local-time.js +++ b/js/local-time.js @@ -25,13 +25,13 @@ onready(function(){ var times = document.getElementsByTagName('time'); for(var i = 0; i < times.length; i++) { - if(!times[i].innerHTML.match(/^\d+\/\d+\/\d+ \(\w+\) \d+:\d+:\d+$/)) + if(typeof times[i].getAttribute('data-local') == 'undefined') continue; var t = iso8601(times[i].getAttribute('datetime')); - + times[i].setAttribute('data-local', 'true'); times[i].innerHTML = // date zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) + From 46ebcbf51d99cd439906cf63a5bf4cefe5ddce45 Mon Sep 17 00:00:00 2001 From: czaks Date: Tue, 2 Jul 2013 21:09:05 -0400 Subject: [PATCH 116/289] local-time.js: make it work with thread expand etc; BEWARE IT NOW NEEDS JQUERY TO BE LOADED BEFORE --- js/local-time.js | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/js/local-time.js b/js/local-time.js index bb81c83a..aee26ed2 100644 --- a/js/local-time.js +++ b/js/local-time.js @@ -6,6 +6,7 @@ * Copyright (c) 2012 Michael Save * * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/local-time.js'; * */ @@ -21,23 +22,32 @@ onready(function(){ var zeropad = function(num, count) { return [Math.pow(10, count - num.toString().length), num].join('').substr(1); }; + + var do_localtime = function(elem) { + var times = elem.getElementsByTagName('time'); - var times = document.getElementsByTagName('time'); - - for(var i = 0; i < times.length; i++) { - if(typeof times[i].getAttribute('data-local') == 'undefined') - continue; + for(var i = 0; i < times.length; i++) { + if(typeof times[i].getAttribute('data-local') == 'undefined') + continue; - var t = iso8601(times[i].getAttribute('datetime')); + var t = iso8601(times[i].getAttribute('datetime')); - times[i].setAttribute('data-local', 'true'); - times[i].innerHTML = - // date - zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) + - " (" + ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][t.getDay()] + ") " + - // time - zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2); + times[i].setAttribute('data-local', 'true'); + times[i].innerHTML = + // date + zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) + + " (" + ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][t.getDay()] + ") " + + // time + zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2); + }; }; + + do_localtime(document); + + // allow to work with auto-reload.js, etc. + $(document).bind('new_post', function(e, post) { + do_localtime(post); + }); }); From 0a97cf721584e352806354e2c5c6392175d89d7c Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 04:37:07 -0400 Subject: [PATCH 117/289] js/local-time.js: Make jQuery optional --- js/local-time.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/js/local-time.js b/js/local-time.js index aee26ed2..40869c3a 100644 --- a/js/local-time.js +++ b/js/local-time.js @@ -6,7 +6,7 @@ * Copyright (c) 2012 Michael Save * * Usage: - * $config['additional_javascript'][] = 'js/jquery.min.js'; + * // $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/local-time.js'; * */ @@ -44,10 +44,12 @@ onready(function(){ }; do_localtime(document); - - // allow to work with auto-reload.js, etc. - $(document).bind('new_post', function(e, post) { - do_localtime(post); - }); + + if (window.jQuery) { + // allow to work with auto-reload.js, etc. + $(document).bind('new_post', function(e, post) { + do_localtime(post); + }); + } }); From 4922828e35eca8b28135a681a6f5d0e9a93641fd Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:17:56 -0400 Subject: [PATCH 118/289] js i18n: expand.js --- js/expand.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/expand.js b/js/expand.js index 6e5fa659..d5706643 100644 --- a/js/expand.js +++ b/js/expand.js @@ -17,7 +17,7 @@ $(document).ready(function(){ $('div.post.op span.omitted').each(function() { $(this) - .html($(this).text().replace(/Click reply to view\./, 'Click to expand.')) + .html($(this).text().replace(_("Click reply to view."), ''+_("Click to expand")+'.')) .find('a').click(function() { var thread = $(this).parent().parent().parent(); var id = thread.attr('id').replace(/^thread_/, ''); @@ -40,7 +40,7 @@ $(document).ready(function(){ last_expanded = post_in_doc; } }); - $('Hide expanded replies.') + $('' + _('Hide expanded replies') + '.') .insertAfter(thread.find('span.omitted').css('display', 'none')) .click(function() { thread.find('.expanded').remove(); From 2779db56cb080d1837d216d3c1f9b8c6aa013f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Sat, 29 Dec 2012 16:30:46 +0100 Subject: [PATCH 119/289] smartphone-spoiler.js: add windows phone/tablet user agents --- js/smartphone-spoiler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/smartphone-spoiler.js b/js/smartphone-spoiler.js index ede273e4..54c7a9a1 100644 --- a/js/smartphone-spoiler.js +++ b/js/smartphone-spoiler.js @@ -11,7 +11,7 @@ */ onready(function(){ - if(navigator.userAgent.match(/iPhone|iPod|iPad|Android|Opera Mini|Blackberry|PlayBook/i)) { + if(navigator.userAgent.match(/iPhone|iPod|iPad|Android|Opera Mini|Blackberry|PlayBook|Windows Phone|Tablet PC|Windows CE|IEMobile/i)) { var spoilers = document.getElementsByClassName('spoiler'); for(var i = 0; i < spoilers.length; i++) { spoilers[i].onmousedown = function() { From fee73c2087dcac126c430bae905ed4ff24784c35 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:27:09 -0400 Subject: [PATCH 120/289] js i18n: local-time.js --- js/local-time.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/local-time.js b/js/local-time.js index 40869c3a..d581e304 100644 --- a/js/local-time.js +++ b/js/local-time.js @@ -37,7 +37,7 @@ onready(function(){ times[i].innerHTML = // date zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) + - " (" + ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][t.getDay()] + ") " + + " (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()] + ") " + // time zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2); }; From bf4eca82b60f8ecd30f529164eb9f65872746608 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:40:23 -0400 Subject: [PATCH 121/289] js i18n: hide-locked-threads.js i18n --- js/toggle-locked-threads.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/toggle-locked-threads.js b/js/toggle-locked-threads.js index 50c44eda..1d517a4d 100644 --- a/js/toggle-locked-threads.js +++ b/js/toggle-locked-threads.js @@ -36,7 +36,7 @@ $(document).ready(function(){ $('hr:first').before(''); $('div#toggle-locked-threads a') - .text((hide_locked_threads ? 'Show' : 'Hide') + ' locked threads') + .text(hide_locked_threads ? _('Show locked threads') : _('Hide locked threads')) .click(function() { hide_locked_threads = !hide_locked_threads; if (hide_locked_threads) { @@ -51,7 +51,7 @@ $(document).ready(function(){ delete localStorage.hidelockedthreads; } - $(this).text((hide_locked_threads ? 'Show' : 'Hide') + ' locked threads') + $(this).text(hide_locked_threads ? _('Show locked threads') : _('Hide locked threads')) }); if (hide_locked_threads) { From 223624892a8cf9cb6f41f6b83927f2d12f00246c Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:48:24 -0400 Subject: [PATCH 122/289] js i18n: forced-anon.js --- js/forced-anon.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/forced-anon.js b/js/forced-anon.js index 3dbf0dfc..6ae43882 100644 --- a/js/forced-anon.js +++ b/js/forced-anon.js @@ -56,17 +56,17 @@ $(document).ready(function() { forced_anon = localStorage['forcedanon'] ? true : false; $('hr:first').before(''); - $('div#forced-anon a').text('Forced anonymity (' + (forced_anon ? 'enabled' : 'disabled') + ')'); + $('div#forced-anon a').text(_('Forced anonymity')+' (' + (forced_anon ? _('enabled') : _('disabled')) + ')'); $('div#forced-anon a').click(function() { forced_anon = !forced_anon; if(forced_anon) { - $('div#forced-anon a').text('Forced anonymity (enabled)'); + $('div#forced-anon a').text(_('Forced anonymity')+' ('+_('enabled')+')'); localStorage.forcedanon = true; enable_fa(); } else { - $('div#forced-anon a').text('Forced anonymity (disabled)'); + $('div#forced-anon a').text(_('Forced anonymity')+' ('+_('disabled')+')'); delete localStorage.forcedanon; disable_fa(); } From a1b739b818eef2aa17846cd171f04e21dc7d34e4 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 01:55:43 -0400 Subject: [PATCH 123/289] js i18n: quick-post-controls.js --- js/quick-post-controls.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/js/quick-post-controls.js b/js/quick-post-controls.js index 0c164bbb..c28f874f 100644 --- a/js/quick-post-controls.js +++ b/js/quick-post-controls.js @@ -24,17 +24,17 @@ $(document).ready(function(){ '' + - ': ' + + ': ' + '' + - '' + - '' + - ' ' + + '' + + '' + + ' ' + '
' + - ': ' + + ': ' + '' + - ' ' + + ' ' + '
' + ''); post_form From e648121e4ad07aadec7579d62a56190ca19d3fe5 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:12:22 -0400 Subject: [PATCH 124/289] hide-images.js: javascript i18n --- js/hide-images.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/hide-images.js b/js/hide-images.js index 7344cd8f..365ebac6 100644 --- a/js/hide-images.js +++ b/js/hide-images.js @@ -47,13 +47,13 @@ $(document).ready(function(){ var fileinfo = $(this).parent().prev(); var id = $(this).parent().parent().find('>p.intro>a.post_no:eq(1),>div.post.op>p.intro>a.post_no:eq(1)').text(); - var replacement = $('File (hide): '); + var replacement = $(''+_('File')+' ('+_('hide')+'): '); replacement.find('a').click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); - var show_link = $('show').click(function() { + var show_link = $(''+_('show')+'').click(function() { delete hidden_data[board][id]; store_data(); From 2868dd7886082cfb11fcbe8f8bee1108a48c81a3 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 15 Jun 2013 01:39:39 -0400 Subject: [PATCH 125/289] javascripts: fixed interactions (BEWARE, inline-expanding.js now requires jquery! fix your configs) Conflicts: js/expand.js js/inline-expanding.js --- js/expand.js | 4 ++-- js/inline-expanding.js | 5 ++--- js/show-backlinks.js | 4 ++++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/js/expand.js b/js/expand.js index d5706643..f2cfdc5e 100644 --- a/js/expand.js +++ b/js/expand.js @@ -14,7 +14,7 @@ $(document).ready(function(){ if($('div.banner').length != 0) return; // not index - + $('div.post.op span.omitted').each(function() { $(this) .html($(this).text().replace(_("Click reply to view."), ''+_("Click to expand")+'.')) @@ -51,4 +51,4 @@ $(document).ready(function(){ }); }); }); -}); +}); \ No newline at end of file diff --git a/js/inline-expanding.js b/js/inline-expanding.js index 20383f04..e529a395 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -14,7 +14,7 @@ onready(function(){ var inline_expand_post = function() { var link = this.getElementsByTagName('a'); - + for (var i = 0; i < link.length; i++) { if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') { link[i].childNodes[0].style.maxWidth = '95%'; @@ -54,7 +54,7 @@ onready(function(){ if (window.jQuery) { $('div[id^="thread_"]').each(inline_expand_post); - + // allow to work with auto-reload.js, etc. $(document).bind('new_post', function(e, post) { inline_expand_post.call(post); @@ -64,4 +64,3 @@ onready(function(){ } }); - diff --git a/js/show-backlinks.js b/js/show-backlinks.js index e6e17e4f..4ead494b 100644 --- a/js/show-backlinks.js +++ b/js/show-backlinks.js @@ -46,5 +46,9 @@ onready(function(){ }; $('div.post.reply').each(showBackLinks); + + $(document).bind('new_post', function(e, post) { + showBackLinks.call(post); + }); }); From 45ead9803f01c2cb84b11b3747e432737af27595 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 00:57:12 -0400 Subject: [PATCH 126/289] ukko: fix javascript interoperation Conflicts: js/expand.js js/hide-threads.js templates/themes/ukko/ukko.js --- js/expand.js | 13 +++++++++++-- js/hide-threads.js | 12 +++++++++--- js/show-backlinks.js | 7 ++++++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/js/expand.js b/js/expand.js index f2cfdc5e..07ce9e43 100644 --- a/js/expand.js +++ b/js/expand.js @@ -14,8 +14,9 @@ $(document).ready(function(){ if($('div.banner').length != 0) return; // not index - $('div.post.op span.omitted').each(function() { + + var do_expand = function() { $(this) .html($(this).text().replace(_("Click reply to view."), ''+_("Click to expand")+'.')) .find('a').click(function() { @@ -50,5 +51,13 @@ $(document).ready(function(){ } }); }); + } + + $('div.post.op span.omitted').each(do_expand); + + $(document).bind("new_post", function(e, post) { + if (!$(post).hasClass("reply")) { + $(post).find('div.post.op span.omitted').each(do_expand); + } }); -}); \ No newline at end of file +}); diff --git a/js/hide-threads.js b/js/hide-threads.js index faa1289c..575804b6 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -41,11 +41,11 @@ $(document).ready(function(){ hidden_data[board] = {}; // id : timestamp } - $('div.post.op').each(function() { + var do_hide_threads = function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); $('[–] ') - .insertBefore(thread_container.find(':first')) + .insertBefore(thread_container.find(':not(h2,h2 *):first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); @@ -68,9 +68,15 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find(':first')); + hidden_div.insertAfter(thread_container.find(':not(h2,h2 *):first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); + } + + $('div.post.op').each(do_hide_threads); + + $(document).bind('new_post', function(e, post) { + do_hide_threads.call($(post).find('div.post.op')[0]); }); }); diff --git a/js/show-backlinks.js b/js/show-backlinks.js index 4ead494b..f23cfc38 100644 --- a/js/show-backlinks.js +++ b/js/show-backlinks.js @@ -48,7 +48,12 @@ onready(function(){ $('div.post.reply').each(showBackLinks); $(document).bind('new_post', function(e, post) { - showBackLinks.call(post); + if ($(post).hasClass("reply")) { + showBackLinks.call(post); + } + else { + $(post).find('div.post.reply').each(showBackLinks); + } }); }); From be2e7d9782ebccc6a952468da5fbf94dd9a9d6c0 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:33:21 -0400 Subject: [PATCH 127/289] i18n some strings in 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 0ff0600b..8184f236 100644 --- a/inc/config.php +++ b/inc/config.php @@ -329,7 +329,7 @@ $config['robot_mute_hour'] = 336; // 2 weeks // If you want to alter the algorithm a bit. Default value is 2. n^x $config['robot_mute_multiplier'] = 2; - $config['robot_mute_descritpion'] = 'You have been muted for unoriginal content.'; + $config['robot_mute_descritpion'] = _('You have been muted for unoriginal content.'); // Automatically convert things like "..." to Unicode characters ("…") $config['auto_unicode'] = true; @@ -903,7 +903,7 @@ $config['mod']['check_ban_message'] = false; // Default public ban message. // In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). - $config['mod']['default_ban_message'] = 'USER WAS BANNED FOR THIS POST'; + $config['mod']['default_ban_message'] = _('USER WAS BANNED FOR THIS POST'); // $config['mod']['default_ban_message'] = 'USER WAS BANNED %LENGTH% FOR THIS POST'; // Include length in ban message // What to append to the post for public bans ("%s" is the message) $config['mod']['ban_message'] = '(%s)'; From babeec8bb9f54eece943b74628c95f976f5ee814 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:50:38 -0400 Subject: [PATCH 128/289] localise time values --- inc/functions.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index a261e350..8fdd8927 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -554,35 +554,35 @@ function checkFlood($post) { function until($timestamp) { $difference = $timestamp - time(); if ($difference < 60) { - return $difference . ' second' . ($difference != 1 ? 's' : ''); + return $difference . ' ' . ngettext('second', 'seconds', $difference); } elseif ($difference < 60*60) { - return ($num = round($difference/(60))) . ' minute' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60))) . ' ' . ngettext('minute', 'minutes', $num); } elseif ($difference < 60*60*24) { - return ($num = round($difference/(60*60))) . ' hour' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60))) . ' ' . ngettext('hour', 'hours', $num); } elseif ($difference < 60*60*24*7) { - return ($num = round($difference/(60*60*24))) . ' day' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24))) . ' ' . ngettext('day', 'days', $num); } elseif ($difference < 60*60*24*365) { - return ($num = round($difference/(60*60*24*7))) . ' week' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*7))) . ' ' . ngettext('week', 'weeks', $num); } - return ($num = round($difference/(60*60*24*365))) . ' year' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*365))) . ' ' . ngettext('year', 'years', $num); } function ago($timestamp) { $difference = time() - $timestamp; if ($difference < 60) { - return $difference . ' second' . ($difference != 1 ? 's' : ''); + return $difference . ' ' . ngettext('second', 'seconds', $difference); } elseif ($difference < 60*60) { - return ($num = round($difference/(60))) . ' minute' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60))) . ' ' . ngettext('minute', 'minutes', $num); } elseif ($difference < 60*60*24) { - return ($num = round($difference/(60*60))) . ' hour' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60))) . ' ' . ngettext('hour', 'hours', $num); } elseif ($difference < 60*60*24*7) { - return ($num = round($difference/(60*60*24))) . ' day' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24))) . ' ' . ngettext('day', 'days', $num); } elseif ($difference < 60*60*24*365) { - return ($num = round($difference/(60*60*24*7))) . ' week' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*7))) . ' ' . ngettext('week', 'weeks', $num); } - return ($num = round($difference/(60*60*24*365))) . ' year' . ($num != 1 ? 's' : ''); + return ($num = round($difference/(60*60*24*365))) . ' ' . ngettext('year', 'years', $num); } function displayBan($ban) { From 3f98522ff2cb6cc90b6f7e1285b27b4ba374eb9c Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:21:30 -0400 Subject: [PATCH 129/289] i18n one more string in inc/functions.php --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 8fdd8927..783663e7 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -599,7 +599,7 @@ function displayBan($ban) { // Show banned page and exit die( Element('page.html', array( - 'title' => 'Banned!', + 'title' => _('Banned!'), 'config' => $config, 'body' => Element('banned.html', array( 'config' => $config, From 67db0a878a033d98a7daab578a7be8b70dc85b64 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 3 Jul 2013 00:25:32 -0400 Subject: [PATCH 130/289] js i18n: finish implementation with addition of the compiled locale strings file to additional javascripts --- inc/functions.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/inc/functions.php b/inc/functions.php index 783663e7..d904e1a2 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1277,6 +1277,12 @@ function buildJavascript() { 'uri' => addslashes((!empty($uri) ? $config['uri_stylesheets'] : '') . $uri)); } + // Check if we have translation for the javascripts; if yes, we add it to additional javascripts + list($pure_locale) = explode(".", $config['locale']); + if (file_exists ($jsloc = "inc/locale/".$pure_locale."/LC_MESSAGES/javascript.js")) { + array_unshift($config['additional_javascript'], $jsloc); + } + $script = Element('main.js', array( 'config' => $config, 'stylesheets' => $stylesheets From 81da2fea040b76c564c063ab88a3ef2a809dfc5f Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 05:03:50 -0400 Subject: [PATCH 131/289] Undo 7e0cec for now. Will restore later once I resolve issues --- inc/display.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/display.php b/inc/display.php index a2d50f74..94f8e8cd 100644 --- a/inc/display.php +++ b/inc/display.php @@ -25,7 +25,8 @@ function doBoardListPart($list, $root) { $body = ''; foreach ($list as $board) { if (is_array($board)) - $body .= ' [' . doBoardListPart($board, $root) . '] '; + $body .= ' [' . doBoardListPart($board, $root) . '] '; + // $body .= ' [' . doBoardListPart($board, $root) . '] '; else { if (($key = array_search($board, $list)) && gettype($key) == 'string') { $body .= ' ' . $key . ' /'; From 317f616e822c4519c78ac068bb69d285955bb39e Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 05:06:29 -0400 Subject: [PATCH 132/289] Accidentally included header.html twice --- templates/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/index.html b/templates/index.html index da6101ee..1cde9882 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,7 +1,6 @@ - {% include 'header.html' %} {% include 'header.html' %} {{ board.url }} - {{ board.title|e }} From 439795e63b1468000992275320b6c7e3f43fa9c0 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 06:40:57 -0400 Subject: [PATCH 133/289] Disallow board names which are too large for the filesytem to handle --- inc/mod/pages.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index ab4cdaaf..08604039 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -446,6 +446,23 @@ function mod_new_board() { if (!preg_match('/^' . $config['board_regex'] . '$/u', $_POST['uri'])) error(sprintf($config['error']['invalidfield'], 'URI')); + $bytes = 0; + $chars = preg_split('//u', $_POST['uri'], -1, PREG_SPLIT_NO_EMPTY); + foreach ($chars as $char) { + $o = 0; + $ord = ordutf8($char, $o); + if ($ord > 0x0080) + $bytes += 5; // @01ff + else + $bytes ++; + } + $bytes + strlen('posts_.frm'); + + if ($bytes > 255) { + error('Your filesystem cannot handle a board URI of that length (' . $bytes . '/255 bytes)'); + exit; + } + if (openBoard($_POST['uri'])) { error(sprintf($config['error']['boardexists'], $board['url'])); } From 42e16e233a53e73d8d8796814a588d5df1091f7b Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 06:54:53 -0400 Subject: [PATCH 134/289] Javascript l10n: Work without $config['additional_javascript_compile'] --- inc/functions.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index d904e1a2..1ffa32df 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1277,16 +1277,17 @@ function buildJavascript() { 'uri' => addslashes((!empty($uri) ? $config['uri_stylesheets'] : '') . $uri)); } - // Check if we have translation for the javascripts; if yes, we add it to additional javascripts - list($pure_locale) = explode(".", $config['locale']); - if (file_exists ($jsloc = "inc/locale/".$pure_locale."/LC_MESSAGES/javascript.js")) { - array_unshift($config['additional_javascript'], $jsloc); - } - $script = Element('main.js', array( 'config' => $config, 'stylesheets' => $stylesheets )); + + // Check if we have translation for the javascripts; if yes, we add it to additional javascripts + list($pure_locale) = explode(".", $config['locale']); + if (file_exists ($jsloc = "inc/locale/$pure_locale/LC_MESSAGES/javascript.js")) { + $script = file_get_contents($jsloc) . "\n\n" . $script; + } + if ($config['additional_javascript_compile']) { foreach ($config['additional_javascript'] as $file) { $script .= file_get_contents($file); From 659310663e9e7c2163234fbbc9ce922147328aa1 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 06:56:57 -0400 Subject: [PATCH 135/289] i18n some more strings in inc/config.php --- inc/config.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/config.php b/inc/config.php index 8184f236..1fd00a3d 100644 --- a/inc/config.php +++ b/inc/config.php @@ -538,8 +538,8 @@ $config['ban_date'] = '%A %e %B, %Y'; // The names on the post buttons. (On most imageboards, these are both "Post") - $config['button_newtopic'] = 'New Topic'; - $config['button_reply'] = 'New Reply'; + $config['button_newtopic'] = _('New Topic'); + $config['button_reply'] = _('New Reply'); // Assign each poster in a thread a unique ID, shown by "ID: {id}" before the post number. $config['poster_ids'] = false; @@ -550,7 +550,7 @@ $config['thread_subject_in_title'] = false; // Page footer - $config['footer'][] = 'All trademarks, copyrights, comments, and images on this page are owned by and are the responsibility of their respective parties.'; + $config['footer'][] = _('All trademarks, copyrights, comments, and images on this page are owned by and are the responsibility of their respective parties.'); // Characters used to generate a random password (with Javascript) $config['genpassword_chars'] = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+'; From 8e4c493a4c5bbff07483fd4a11c44c687c99e441 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 12:05:19 -0400 Subject: [PATCH 136/289] Issue #126 --- post.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/post.php b/post.php index 85dc2d05..a82b56ad 100644 --- a/post.php +++ b/post.php @@ -378,10 +378,22 @@ if (isset($_POST['delete'])) { wordfilters($post['body']); - if (mysql_version() >= 50503) + if (mysql_version() >= 50503) { $post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset - else - $post['body_nomarkup'] = preg_replace('/[\x{010000}-\x{ffffff}]/u', '', $post['body']); // MySQL's `utf8` charset only supports up to 3-byte symbols + } else { + // MySQL's `utf8` charset only supports up to 3-byte symbols + // Remove anything >= 0x010000 + + $chars = preg_split('//u', $post['body'], -1, PREG_SPLIT_NO_EMPTY); + $post['body_nomarkup'] = ''; + foreach ($chars as $char) { + $o = 0; + $ord = ordutf8($char, $o); + if ($ord >= 0x010000) + continue; + $post['body_nomarkup'] .= $char; + } + } if (!($mod && isset($post['raw']) && $post['raw'])) $post['tracked_cites'] = markup($post['body'], true); From 3d979750b1be802549e4e18662c7e642f466daaa Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 15:01:44 -0400 Subject: [PATCH 137/289] fix merge --- inc/image.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/inc/image.php b/inc/image.php index 8cc9d69b..99c10252 100644 --- a/inc/image.php +++ b/inc/image.php @@ -286,12 +286,7 @@ class ImageConvert extends ImageBase { if (shell_exec("gifsicle --unoptimize -O2 --resize {$this->width}x{$this->height} < " . escapeshellarg($this->src . '') . " > " . escapeshellarg($this->temp)) || !file_exists($this->temp)) error('Failed to resize image!'); -<<<<<<< HEAD - } - else { -======= } else { ->>>>>>> 8e4c493a4c5bbff07483fd4a11c44c687c99e441 if (shell_exec("convert -background transparent -filter Point -sample {$this->width}x{$this->height} +antialias -quality {$quality} " . escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) error('Failed to resize image!'); From dc1d1a3fcd0e6a9e4f1ba791e15765d68b09e6dc Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 16:22:27 -0400 Subject: [PATCH 138/289] Issue #125 --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 19790 -> 19840 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 2a31d64e2b739bc537600e64426544aa1e58a4fe..bc603e6776603e1b1c86a613577a3c9ddc23aad2 100644 GIT binary patch delta 2375 zcmXZeeN5F=9LMo53dqC7f&@_!uk3=56&JW=aUU3&T@fmkEL&x32DN-j%q7$IW0f|g z`o~%cZj7x5TFw=?CQ*)DXtib|bEqrlR&Kdgvc;Oqp5CAPJAb{-IluGpJ>PTAg;PCg zUA<`^PGx!Tq?xU#Hd|z7lVP($EUqyt!&~qZT!q6Js5P63CvY*I!4Rg^nNhR~%)p17 zkKqjJZJ39fFdcVdDR$MFX9X1cXvoGv%)(DGfn%tJ(j#WmF^mczf&pBLIk?jKFlvEz zR3IBL6Srb6?!ejj5+?Cr#522r!p}4)!mFsrGH>+*Do1^<#?*p1m-{+&#|SRM zw@`Ou6gB=^ROT+BGBJtD?BA#(3lPN&?w=J=(3zCtYOF`yg;!AndQky+m&d2dAAEQ2j2WF5@4l z2`%Qoj!e9ZY7QzR_n|WK9ID?QRHk1+9c>?a+S%I_wD2$%;TY;{e{k(Tp(eV5<@hhE zUnp)?f>CV6wKxwCp%(lSm4Q>J`F=yKH-*KRogn}EP?qp7Nfj!PD5^b)+VQ=p)UQPi z>_7$7jmkt1s^5Fgk5HK#ah^cUJC4f0kElyOnIQj)=qe5Rfyry|7tY6JT<2oc*{y5z z&#VJ=#ye39?nRB?kGd-ZsGT20ZQvMc;W5`fjyF@Ez?(3`yVKuEE%KDD5i4;A^4nqk zs2xwBGBAlsea=$9z7S_qkD^lFih3PeP=WWj`eD?(=Wsqw$n;j=g$-^9h(i#m#vsCm9~UO_VES>SFzk`mN{ zb*PKiU)839!36e+F8{2>?Sk*VA?{|5wxO?@JZL+g}O6? zSj75vl7b?D1jE7l;O6q0a3WqCtf)v8WATWJm1+*hYQn)?yHf4y S6Ru)R4P$DnhDO5sOa2E15E6j^ delta 2325 zcmXZde@vBC9LMo5D8dDas4j%!MGYYZr*f|);YH9cw<~%xz$w)~=2CDnnk6mg_K<5b z%aQA9Yo;S}q$}rAHl3Dix#prD)XWW{wp=yWD$}7`|3vHk;W-=Qbt*j#b!agfphU+yoe=B%r4*<-h&6L%qs9Wmg2X_pWWqO z29}3?7h)#$Fy>+nPQ?UD_v+0ziV=K)Mm{|Xmi@DZC_XdTX^-i*pjr$<2%zl@4_H|F6U4B}g;6`pj@2VDIEmeKw> zs{fy;0B<`dP%F-U)L%dWDiaHwOPt;^3W{U}D)n*qU>$1U4XD7Lbv}p6P#bE%9#n>U zF&*DWjnnTujmp${)K(9nGWC=H+_S=E{)5?A#Dg$usFaT2W=ya4 z5APP#+2}>}KZ?rS04fuMsLXze+Ojds{iifE4-aKC%u9n=brIZvV9JCEAy z&rkynqi)AFd>luy9A_=}GZI6+*Mi!Dr%_wmfu2^jgMudR!2(R7_Vz>9eg>7=OE?d| zM!h$V#TbaPIxNGPxC=Gm+o%j2L5=qbYQD?(AdW=IzaHGCL5JiYR3L#`ze5nU;$l?l z%TOKbPyw}~GSP;5Z>Q5kWp1DIAZpw`R0cjm9s0pq@~?=l(4Z9lhzjUujB%WAp!Tk^ z-ruu2)Y(X&CftDPzX^3#x=<_MiyCJ?YT}e@@56=E`>_(g_b6y3w$h9%YkBxEHXz>) z>qM=%AC-YYRO&}v{T3Ed53KT2KL>R?qNu>zTzxlc+!HtpzeA1V{Y^nD$>8L0B`puR zSr$jmk#(c?_*2w-Kj2jS6-)7Vj9_le|IJv5Q>Z_W71)m2ibJSz-g90;GUnMB1x4}) zYQnSzes1#qvFy_Yne)XsTTd+X)eazc^z@}_rJz0C=Iq1_>Mx-V=Pp;@hwAtyYT(1J{g|ttKpoQ4&M#26;uoyKaa6x~ zYy2&$Tw_~oJ`JmAP^vmm6TgZ%*yBv0u1y~*<=>#*yNTNCJE%aj*ZKhzq0USgr(^xV pQ2uCWMk3h~i^rO3X1}m~=Z;O=qp^+anqtk(i6@f-Hy5Xh{|DN>1YiIF diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index ca4f7ea4..20802b7d 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. There is no previous page. #: /var/www/html/Tinyboard/inc/functions.php:958 From d692bce68674934a4af2e9cba79d65e72279b0a9 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 16:34:50 -0400 Subject: [PATCH 139/289] Fix issue #74. Note: This bug may break the display of certain filenames prior to upgrade. --- post.php | 6 +++--- templates/post_reply.html | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/post.php b/post.php index a82b56ad..8820db2d 100644 --- a/post.php +++ b/post.php @@ -284,7 +284,7 @@ if (isset($_POST['delete'])) { $post['has_file'] = !isset($post['embed']) && (($post['op'] && !isset($post['no_longer_require_an_image_for_op']) && $config['force_image_op']) || (isset($_FILES['file']) && $_FILES['file']['tmp_name'] != '')); if ($post['has_file']) - $post['filename'] = utf8tohtml(get_magic_quotes_gpc() ? stripslashes($_FILES['file']['name']) : $_FILES['file']['name']); + $post['filename'] = urldecode(get_magic_quotes_gpc() ? stripslashes($_FILES['file']['name']) : $_FILES['file']['name']); if (!($post['has_file'] || isset($post['embed'])) || (($post['op'] && $config['force_body_op']) || (!$post['op'] && $config['force_body']))) { $stripped_whitespace = preg_replace('/[\s]/u', '', $post['body']); @@ -347,7 +347,7 @@ if (isset($_POST['delete'])) { } else $noko = false; if ($post['has_file']) { - $post['extension'] = strtolower(substr($post['filename'], strrpos($post['filename'], '.') + 1)); + $post['extension'] = strtolower(mb_substr($post['filename'], mb_strrpos($post['filename'], '.') + 1)); if (isset($config['filename_func'])) $post['file_id'] = $config['filename_func']($post); else @@ -414,7 +414,7 @@ if (isset($_POST['delete'])) { $is_an_image = !in_array($post['extension'], $config['allowed_ext_files']); // Truncate filename if it is too long - $post['filename'] = substr($post['filename'], 0, $config['max_filename_len']); + $post['filename'] = mb_substr($post['filename'], 0, $config['max_filename_len']); $upload = $_FILES['file']['tmp_name']; diff --git a/templates/post_reply.html b/templates/post_reply.html index bc96e74c..b0391f19 100644 --- a/templates/post_reply.html +++ b/templates/post_reply.html @@ -66,9 +66,9 @@ {% if config.show_filename and post.filename %} , {% if post.filename|length > config.max_filename_display %} - {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} + {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} {% else %} - {{ post.filename|bidi_cleanup }} + {{ post.filename|e|bidi_cleanup }} {% endif %} {% endif %} {% if post.thumb != 'file' and config.image_identification %} From 6cdf6038754f18af4509ecf078f51894f63c5853 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 16:38:09 -0400 Subject: [PATCH 140/289] Fix last commit; Make Tinyboard Twig extension more mb-safe --- inc/lib/Twig/Extensions/Extension/Tinyboard.php | 8 ++++---- templates/post_thread.html | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/inc/lib/Twig/Extensions/Extension/Tinyboard.php b/inc/lib/Twig/Extensions/Extension/Tinyboard.php index 61cf9fc9..58a98c40 100644 --- a/inc/lib/Twig/Extensions/Extension/Tinyboard.php +++ b/inc/lib/Twig/Extensions/Extension/Tinyboard.php @@ -83,9 +83,9 @@ function twig_hasPermission_filter($mod, $permission, $board = null) { } function twig_extension_filter($value, $case_insensitive = true) { - $ext = substr($value, strrpos($value, '.') + 1); + $ext = mb_substr($value, mb_strrpos($value, '.') + 1); if($case_insensitive) - $ext = strtolower($ext); + $ext = mb_strtolower($ext); return $ext; } @@ -96,11 +96,11 @@ function twig_sprintf_filter( $value, $var) { function twig_truncate_filter($value, $length = 30, $preserve = false, $separator = '…') { if (mb_strlen($value) > $length) { if ($preserve) { - if (false !== ($breakpoint = strpos($value, ' ', $length))) { + if (false !== ($breakpoint = mb_strpos($value, ' ', $length))) { $length = $breakpoint; } } - return substr($value, 0, $length) . $separator; + return mb_substr($value, 0, $length) . $separator; } return $value; } diff --git a/templates/post_thread.html b/templates/post_thread.html index 6d14f207..21add308 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -23,9 +23,9 @@ {% if config.show_filename and post.filename %} , {% if post.filename|length > config.max_filename_display %} - {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} + {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} {% else %} - {{ post.filename|bidi_cleanup }} + {{ post.filename|e|bidi_cleanup }} {% endif %} {% endif %} {% if post.thumb != 'file' and config.image_identification %} From c2a287cd142b4ba0940c3026af98d4ff949469de Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 17:02:42 -0400 Subject: [PATCH 141/289] Only run SQL query to count threads if we really need to --- inc/functions.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 1ffa32df..95487529 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -995,7 +995,10 @@ function index($page, $mod=false) { $query->bindValue(':threads_per_page', $config['threads_per_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ($query->rowcount() < 1 && $page > 1) + if ($page == 1 && $query->rowCount() <= $config['threads_per_page']) + $board['thread_count'] = $query->rowCount(); + + if ($query->rowCount() < 1 && $page > 1) return false; while ($th = $query->fetch()) { $thread = new Thread( @@ -1108,10 +1111,13 @@ function getPageButtons($pages, $mod=false) { function getPages($mod=false) { global $board, $config; - // Count threads - $query = query(sprintf("SELECT COUNT(`id`) as `num` FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); - - $count = current($query->fetch()); + if (isset($board['thread_count'])) { + $count = $board['thread_count']; + } else { + // Count threads + $query = query(sprintf("SELECT COUNT(`id`) FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); + $count = $query->fetchColumn(); + } $count = floor(($config['threads_per_page'] + $count - 1) / $config['threads_per_page']); if ($count < 1) $count = 1; From 3a8736cdc0a047e19eaffb4eb82bbf560906ea7f Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 17:04:36 -0400 Subject: [PATCH 142/289] Fix last commit --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 95487529..7826d41b 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -995,7 +995,7 @@ function index($page, $mod=false) { $query->bindValue(':threads_per_page', $config['threads_per_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ($page == 1 && $query->rowCount() <= $config['threads_per_page']) + if ($page == 1 && $query->rowCount() < $config['threads_per_page']) $board['thread_count'] = $query->rowCount(); if ($query->rowCount() < 1 && $page > 1) From 6317a7015272d770770c000c69271ff73cf55007 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 15 Jun 2013 00:22:13 -0400 Subject: [PATCH 143/289] header abstraction: abstracted also in thread.html Conflicts: templates/page.html templates/thread.html --- templates/page.html | 2 +- templates/thread.html | 36 +++++------------------------------- 2 files changed, 6 insertions(+), 32 deletions(-) diff --git a/templates/page.html b/templates/page.html index a7c6a300..0d33c16f 100644 --- a/templates/page.html +++ b/templates/page.html @@ -22,4 +22,4 @@

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

- + \ No newline at end of file diff --git a/templates/thread.html b/templates/thread.html index 5882d9b6..a6b8793f 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -2,34 +2,8 @@ - - {% if config.url_favicon %}{% endif %} + {% include 'header.html' %} {{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %} - - {% if config.meta_keywords %}{% endif %} - {% if config.default_stylesheet.1 != '' %}{% endif %} - {% if config.font_awesome %}{% endif %} - {% if not nojavascript %} - - {% if not config.additional_javascript_compile %} - {% for javascript in config.additional_javascript %}{% endfor %} - {% endif %} - {% endif %} - {% if config.recaptcha %}{% endif %} {{ boardlist.top }} @@ -44,11 +18,11 @@ {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %}
- + - + {% include 'post_form.html' %} - + {% if config.blotter %}
{{ config.blotter }}
{% endif %}
@@ -68,4 +42,4 @@ ready(); {% endraw %} - + \ No newline at end of file From 4891735c49ee7879d0f299d03ebfbe361f3cc73d Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 18:29:09 -0400 Subject: [PATCH 144/289] Fix issue #72 --- inc/config.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inc/config.php b/inc/config.php index 1fd00a3d..6f2371ec 100644 --- a/inc/config.php +++ b/inc/config.php @@ -381,10 +381,10 @@ */ // "Wiki" markup syntax ($config['wiki_markup'] in pervious versions): - $config['markup'][] = array("/'''(.+?)'''/", "\$1"); - $config['markup'][] = array("/''(.+?)''/", "\$1"); - $config['markup'][] = array("/\*\*(.+?)\*\*/", "\$1"); - $config['markup'][] = array("/^[ |\t]*==(.+?)==[ |\t]*$/m", "\$1"); + $config['markup'][] = array("/'''([^<]+?)'''/", "\$1"); + $config['markup'][] = array("/''([^<]+?)''/", "\$1"); + $config['markup'][] = array("/\*\*([^<]+?)\*\*/", "\$1"); + $config['markup'][] = array("/^[ |\t]*==([^<]+?)==[ |\t]*$/m", "\$1"); // Highlight PHP code wrapped in tags (PHP 5.3.0+) // $config['markup'][] = array( From 6d52c8b42813722c49890b6e4f776dc0dabf382c Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 18:59:54 -0400 Subject: [PATCH 145/289] Markup modifiers. Fix issue #66 (public ban message lost when rebuilding post body) --- inc/functions.php | 36 +++++++++++++++++++++++++++++++++++- inc/mod/pages.php | 10 ++++++++-- post.php | 3 ++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 7826d41b..e638f016 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1456,13 +1456,43 @@ function markup(&$body, $track_cites = false) { } } + if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { + $skip_chars = 0; + $body_tmp = $body; + + foreach ($modifiers as $modifier) { + // preg_match_all is not multibyte-safe + foreach ($modifier as &$match) { + $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); + } + + $modifier['type'] = $modifier[1][0]; + $modifier['content'] = $modifier[2][0]; + + if ($modifier['type'] == 'ban message') { + // Public ban message + $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); + } elseif (preg_match('/^escape /', $modifier['type'])) { + // Escaped (not a real modifier) + $replacement = '<tinyboard ' . substr($modifier['type'], strlen('escape ')) . '>' . $modifier['content'] . '</tinyboard>'; + } else { + // Unknown + $replacement = ''; + } + + $body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0])); + $skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]); + + } + } + // replace tabs with 8 spaces $body = str_replace("\t", ' ', $body); $tracked_cites = array(); // Cites - if (isset($board) && preg_match_all('/(^|\s)>>(\d+?)([\s,.)?]|$)/m', $body, $cites, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { + if (isset($board) && preg_match_all('/(^|\s)>>(\d+?)([\s,.)?]|$)/m', $body, $cites, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { if (count($cites[0]) > $config['max_cites']) { error($config['error']['toomanycites']); } @@ -1561,6 +1591,10 @@ function markup(&$body, $track_cites = false) { return $tracked_cites; } +function escape_markup_modifiers($string) { + return preg_replace('@(.+)@', '$2', $string); +} + function utf8tohtml($utf8) { return htmlspecialchars($utf8, ENT_NOQUOTES, 'UTF-8'); } diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 08604039..351d3203 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -507,6 +507,7 @@ function mod_noticeboard($page_no = 1) { if (!hasPermission($config['mod']['noticeboard_post'])) error($config['error']['noaccess']); + $_POST['body'] = escape_markup_modifiers($_POST['body']); markup($_POST['body']); $query = prepare('INSERT INTO `noticeboard` VALUES (NULL, :mod, :time, :subject, :body)'); @@ -568,6 +569,7 @@ function mod_news($page_no = 1) { if (!hasPermission($config['mod']['news'])) error($config['error']['noaccess']); + $_POST['body'] = escape_markup_modifiers($_POST['body']); markup($_POST['body']); $query = prepare('INSERT INTO `news` VALUES (NULL, :name, :time, :subject, :body)'); @@ -737,6 +739,7 @@ function mod_page_ip($ip) { if (!hasPermission($config['mod']['create_notes'])) error($config['error']['noaccess']); + $_POST['note'] = escape_markup_modifiers($_POST['note']); markup($_POST['note']); $query = prepare('INSERT INTO `ip_notes` VALUES (NULL, :ip, :mod, :time, :body)'); $query->bindValue(':ip', $ip); @@ -1214,12 +1217,14 @@ function mod_ban_post($board, $delete, $post, $token = false) { if (isset($_POST['public_message'], $_POST['message'])) { // public ban message $length_english = parse_time($_POST['length']) ? 'for ' . until(parse_time($_POST['length'])) : 'permanently'; + $_POST['message'] = preg_replace('/[\r\n]/', '', $_POST['message']); $_POST['message'] = str_replace('%length%', $length_english, $_POST['message']); $_POST['message'] = str_replace('%LENGTH%', strtoupper($length_english), $_POST['message']); - $query = prepare(sprintf('UPDATE `posts_%s` SET `body` = CONCAT(`body`, :body) WHERE `id` = :id', $board)); + $query = prepare(sprintf('UPDATE `posts_%s` SET `body_nomarkup` = CONCAT(`body_nomarkup`, :body_nomarkup) WHERE `id` = :id', $board)); $query->bindValue(':id', $post); - $query->bindValue(':body', sprintf($config['mod']['ban_message'], utf8tohtml($_POST['message']))); + $query->bindValue(':body_nomarkup', sprintf('%s', $_POST['message'])); $query->execute() or error(db_error($query)); + rebuildPost($post); modLog("Attached a public ban message to post #{$post}: " . utf8tohtml($_POST['message'])); buildThread($thread ? $thread : $post); @@ -1713,6 +1718,7 @@ function mod_new_pm($username) { } if (isset($_POST['message'])) { + $_POST['message'] = escape_markup_modifiers($_POST['message']); markup($_POST['message']); $query = prepare("INSERT INTO `pms` VALUES (NULL, :me, :id, :message, :time, 1)"); diff --git a/post.php b/post.php index 8820db2d..adb44b58 100644 --- a/post.php +++ b/post.php @@ -107,7 +107,7 @@ if (isset($_POST['delete'])) { if (count($report) > $config['report_limit']) error($config['error']['toomanyreports']); - $reason = &$_POST['reason']; + $reason = escape_markup_modifiers($_POST['reason']); markup($reason); foreach ($report as &$id) { @@ -377,6 +377,7 @@ if (isset($_POST['delete'])) { error(sprintf($config['error']['toolong'], 'password')); wordfilters($post['body']); + $post['body'] = escape_markup_modifiers($post['body']); if (mysql_version() >= 50503) { $post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset From 6bbe407e18681f2812db4345036bb5ae639f5973 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 19:18:55 -0400 Subject: [PATCH 146/289] Markup modifiers: raw HTML --- inc/functions.php | 65 +++++++++++++++++++++++++---------------------- post.php | 7 +++-- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index e638f016..7cde156b 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1421,6 +1421,39 @@ function markup(&$body, $track_cites = false) { $body = str_replace("\r", '', $body); $body = utf8tohtml($body); + if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { + $skip_chars = 0; + $body_tmp = $body; + + foreach ($modifiers as $modifier) { + // preg_match_all is not multibyte-safe + foreach ($modifier as &$match) { + $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); + } + + $modifier['type'] = $modifier[1][0]; + $modifier['content'] = $modifier[2][0]; + + if ($modifier['type'] == 'ban message') { + // Public ban message + $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); + } elseif ($modifier['type'] == 'raw html') { + $body = html_entity_decode($modifier['content']); + return array(); + } elseif (preg_match('/^escape /', $modifier['type'])) { + // Escaped (not a real modifier) + $replacement = '<tinyboard ' . substr($modifier['type'], strlen('escape ')) . '>' . $modifier['content'] . '</tinyboard>'; + } else { + // Unknown + $replacement = ''; + } + + $body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0])); + $skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]); + + } + } + if (mysql_version() < 50503) $body = mb_encode_numericentity($body, array(0x010000, 0xffffff, 0, 0xffffff), 'UTF-8'); @@ -1456,36 +1489,6 @@ function markup(&$body, $track_cites = false) { } } - if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { - $skip_chars = 0; - $body_tmp = $body; - - foreach ($modifiers as $modifier) { - // preg_match_all is not multibyte-safe - foreach ($modifier as &$match) { - $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); - } - - $modifier['type'] = $modifier[1][0]; - $modifier['content'] = $modifier[2][0]; - - if ($modifier['type'] == 'ban message') { - // Public ban message - $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); - } elseif (preg_match('/^escape /', $modifier['type'])) { - // Escaped (not a real modifier) - $replacement = '<tinyboard ' . substr($modifier['type'], strlen('escape ')) . '>' . $modifier['content'] . '</tinyboard>'; - } else { - // Unknown - $replacement = ''; - } - - $body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0])); - $skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]); - - } - } - // replace tabs with 8 spaces $body = str_replace("\t", ' ', $body); @@ -1592,7 +1595,7 @@ function markup(&$body, $track_cites = false) { } function escape_markup_modifiers($string) { - return preg_replace('@(.+)@', '$2', $string); + return preg_replace('@(.+)@m', '$2', $string); } function utf8tohtml($utf8) { diff --git a/post.php b/post.php index adb44b58..db077866 100644 --- a/post.php +++ b/post.php @@ -379,6 +379,10 @@ if (isset($_POST['delete'])) { wordfilters($post['body']); $post['body'] = escape_markup_modifiers($post['body']); + if ($mod && isset($post['raw']) && $post['raw']) { + $post['body'] = '' . $post['body'] . ''; + } + if (mysql_version() >= 50503) { $post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset } else { @@ -396,8 +400,7 @@ if (isset($_POST['delete'])) { } } - if (!($mod && isset($post['raw']) && $post['raw'])) - $post['tracked_cites'] = markup($post['body'], true); + $post['tracked_cites'] = markup($post['body'], true); // Check for a flood if (!hasPermission($config['mod']['flood'], $board['uri']) && checkFlood($post)) { From fa5922b45efec1c0e334706ab5bccedb1856572b Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 19:50:25 -0400 Subject: [PATCH 147/289] fix post editing for tinyboard markup --- inc/mod/pages.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 351d3203..0eadd6ad 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1276,7 +1276,7 @@ function mod_edit_post($board, $edit_raw_html, $postID) { if (isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['body'])) { if ($edit_raw_html) - $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body` = :body WHERE `id` = :id', $board)); + $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body` = :body, `body_nomarkup` = :body_nomarkup WHERE `id` = :id', $board)); else $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body_nomarkup` = :body WHERE `id` = :id', $board)); $query->bindValue(':id', $postID); @@ -1284,6 +1284,10 @@ function mod_edit_post($board, $edit_raw_html, $postID) { $query->bindValue(':email', $_POST['email']); $query->bindValue(':subject', $_POST['subject']); $query->bindValue(':body', $_POST['body']); + if ($edit_raw_html) { + $body_nomarkup = '' . $_POST['body'] . ''; + $query->bindValue(':body_nomarkup', $body_nomarkup); + } $query->execute() or error(db_error($query)); if ($edit_raw_html) { From e7dd0bbc4a4a17a4f7e5f6750b48ee3c0946c40e Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:11:11 -0400 Subject: [PATCH 148/289] facilitate using markup modifiers multiple times; make raw html not consume the whole post --- inc/functions.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 1f702ba0..5dace908 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1451,7 +1451,7 @@ function markup(&$body, $track_cites = false) { $body = str_replace("\r", '', $body); $body = utf8tohtml($body); - if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { + if (preg_match_all('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { $skip_chars = 0; $body_tmp = $body; @@ -1468,8 +1468,7 @@ function markup(&$body, $track_cites = false) { // Public ban message $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); } elseif ($modifier['type'] == 'raw html') { - $body = html_entity_decode($modifier['content']); - return array(); + $replacement = html_entity_decode($modifier['content']); } elseif (preg_match('/^escape /', $modifier['type'])) { // Escaped (not a real modifier) $replacement = '<tinyboard ' . substr($modifier['type'], strlen('escape ')) . '>' . $modifier['content'] . '</tinyboard>'; From d7ea47a91f63382f7a4e002086e415550e342a11 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:13:19 -0400 Subject: [PATCH 149/289] markup modifiers: make it even harder to escape --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 5dace908..b52c58fb 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1624,7 +1624,7 @@ function markup(&$body, $track_cites = false) { } function escape_markup_modifiers($string) { - return preg_replace('@(.+)@m', '$2', $string); + return preg_replace('@@m', '', $string); } function utf8tohtml($utf8) { From ce2af291b084f7f6f36a0718fbf4d84a832aef12 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:33:27 -0400 Subject: [PATCH 150/289] markup modifiers: there was a plan for adding markup to ban reasons, but assignment was missing; escape markup there too --- inc/mod/ban.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/mod/ban.php b/inc/mod/ban.php index cfc2636f..99dfd196 100644 --- a/inc/mod/ban.php +++ b/inc/mod/ban.php @@ -61,7 +61,8 @@ function ban($mask, $reason, $length, $board) { $query->bindValue(':mod', $mod['id']); $query->bindValue(':time', time()); if ($reason !== '') { - markup($reason); + $reason = escape_markup_modifiers($reason); + $reason = markup($reason); $query->bindValue(':reason', $reason); } else $query->bindValue(':reason', null, PDO::PARAM_NULL); From 03d91df1d8af49aa1fd9e87fa8e9643b52fd52d9 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:41:56 -0400 Subject: [PATCH 151/289] fix previous commit; markup is called via reference --- inc/mod/ban.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/mod/ban.php b/inc/mod/ban.php index 99dfd196..3f30db8f 100644 --- a/inc/mod/ban.php +++ b/inc/mod/ban.php @@ -62,7 +62,7 @@ function ban($mask, $reason, $length, $board) { $query->bindValue(':time', time()); if ($reason !== '') { $reason = escape_markup_modifiers($reason); - $reason = markup($reason); + markup($reason); $query->bindValue(':reason', $reason); } else $query->bindValue(':reason', null, PDO::PARAM_NULL); From 328484bee7cab9ce354121413cc8d96c3e227aea Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 20:51:43 -0400 Subject: [PATCH 152/289] SQL cleanup --- inc/functions.php | 63 +++++++++++++++--------------- inc/mod/auth.php | 2 +- inc/mod/pages.php | 32 +++++++-------- post.php | 10 ++--- templates/themes/catalog/theme.php | 2 +- templates/themes/recent/theme.php | 19 ++++----- templates/themes/rrdtool/theme.php | 5 +-- 7 files changed, 64 insertions(+), 69 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 7cde156b..0b4ac211 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -243,7 +243,7 @@ function rebuildThemes($action, $board = false) { // List themes $query = query("SELECT `theme` FROM `theme_settings` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error()); - while ($theme = $query->fetch()) { + while ($theme = $query->fetch(PDO::FETCH_ASSOC)) { rebuildTheme($theme['theme'], $action, $board); } } @@ -281,7 +281,7 @@ function themeSettings($theme) { $query->execute() or error(db_error($query)); $settings = array(); - while ($s = $query->fetch()) { + while ($s = $query->fetch(PDO::FETCH_ASSOC)) { $settings[$s['name']] = $s['value']; } @@ -351,7 +351,7 @@ function getBoardInfo($uri) { $query->bindValue(':uri', $uri); $query->execute() or error(db_error($query)); - if ($board = $query->fetch()) { + if ($board = $query->fetch(PDO::FETCH_ASSOC)) { if ($config['cache']['enabled']) cache::set('board_' . $uri, $board); return $board; @@ -543,7 +543,7 @@ function checkFlood($post) { $query->bindValue(':floodsametime', time()-$config['flood_time_same'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - $flood = (bool)$query->fetch(); + $flood = (bool) $query->fetch(PDO::FETCH_ASSOC); if (event('check-flood', $post)) return true; @@ -647,7 +647,7 @@ function checkBan($board = 0) { $query->execute() or error(db_error($query)); } - if ($ban = $query->fetch()) { + if ($ban = $query->fetch(PDO::FETCH_ASSOC)) { if ($ban['expires'] && $ban['expires'] < time()) { // Ban expired $query = prepare("DELETE FROM `bans` WHERE `id` = :id"); @@ -685,12 +685,12 @@ function threadLocked($id) { $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error()); - if (!$post = $query->fetch()) { + if (($locked = $query->fetchColumn()) === false) { // Non-existant, so it can't be locked... return false; } - return (bool)$post['locked']; + return (bool)$locked; } function threadSageLocked($id) { @@ -703,12 +703,12 @@ function threadSageLocked($id) { $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error()); - if (!$post = $query->fetch()) { + if (($sagelocked = $query->fetchColumn()) === false) { // Non-existant, so it can't be locked... return false; } - return (bool) $post['sage']; + return (bool)$sagelocked; } function threadExists($id) { @@ -842,7 +842,7 @@ function deleteFile($id, $remove_entirely_if_already=true) { $query = prepare(sprintf("SELECT `thread`,`thumb`,`file` FROM `posts_%s` WHERE `id` = :id LIMIT 1", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if (!$post = $query->fetch()) + if (!$post = $query->fetch(PDO::FETCH_ASSOC)) error($config['error']['invalidpost']); if ($post['file'] == 'deleted' && !$post['thread']) @@ -880,7 +880,7 @@ function rebuildPost($id) { $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ((!$post = $query->fetch()) || !$post['body_nomarkup']) + if ((!$post = $query->fetch(PDO::FETCH_ASSOC)) || !$post['body_nomarkup']) return false; markup($body = &$post['body_nomarkup']); @@ -913,7 +913,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { $ids = array(); // Delete posts and maybe replies - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { if (!$post['thread']) { // Delete thread HTML page file_unlink($board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $post['id'])); @@ -946,7 +946,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { $query = prepare("SELECT `board`, `post` FROM `cites` WHERE `target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")"); $query->bindValue(':board', $board['uri']); $query->execute() or error(db_error($query)); - while ($cite = $query->fetch()) { + while ($cite = $query->fetch(PDO::FETCH_ASSOC)) { if ($board['uri'] != $cite['board']) { if (!isset($tmp_board)) $tmp_board = $board['uri']; @@ -979,7 +979,7 @@ function clean() { $query->bindValue(':offset', $offset, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { deletePost($post['id']); } } @@ -1000,7 +1000,7 @@ function index($page, $mod=false) { if ($query->rowCount() < 1 && $page > 1) return false; - while ($th = $query->fetch()) { + while ($th = $query->fetch(PDO::FETCH_ASSOC)) { $thread = new Thread( $th['id'], $th['subject'], $th['email'], $th['name'], $th['trip'], $th['capcode'], $th['body'], $th['time'], $th['thumb'], $th['thumbwidth'], $th['thumbheight'], $th['file'], $th['filewidth'], $th['fileheight'], $th['filesize'], $th['filename'], $th['ip'], @@ -1115,7 +1115,7 @@ function getPages($mod=false) { $count = $board['thread_count']; } else { // Count threads - $query = query(sprintf("SELECT COUNT(`id`) FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); + $query = query(sprintf("SELECT COUNT(*) FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); $count = $query->fetchColumn(); } $count = floor(($config['threads_per_page'] + $count - 1) / $config['threads_per_page']); @@ -1155,7 +1155,7 @@ function checkRobot($body) { $query->bindValue(':hash', $body); $query->execute() or error(db_error($query)); - if ($query->fetch()) { + if ($query->fetchColumn()) { return true; } @@ -1163,20 +1163,19 @@ function checkRobot($body) { $query = prepare("INSERT INTO `robot` VALUES (:hash)"); $query->bindValue(':hash', $body); $query->execute() or error(db_error($query)); + return false; } // Returns an associative array with 'replies' and 'images' keys function numPosts($id) { global $board; - $query = prepare(sprintf("SELECT COUNT(*) as `num` FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(*) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $board['uri'], $board['uri'])); + $query = prepare(sprintf("SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(*) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $board['uri'], $board['uri'])); $query->bindValue(':thread', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - $num_posts = $query->fetch(); - $num_posts = $num_posts['num']; - $num_images = $query->fetch(); - $num_images = $num_images['num']; + $num_posts = $query->fetchColumn(); + $num_images = $query->fetchColumn(); return array('replies' => $num_posts, 'images' => $num_images); } @@ -1188,14 +1187,14 @@ function muteTime() { return $time; // Find number of mutes in the past X hours - $query = prepare("SELECT COUNT(*) as `count` FROM `mutes` WHERE `time` >= :time AND `ip` = :ip"); + $query = prepare("SELECT COUNT(*) FROM `mutes` WHERE `time` >= :time AND `ip` = :ip"); $query->bindValue(':time', time()-($config['robot_mute_hour']*3600), PDO::PARAM_INT); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->execute() or error(db_error($query)); - $result = $query->fetch(); - if ($result['count'] == 0) return 0; - return pow($config['robot_mute_multiplier'], $result['count']); + if (!$result = $query->fetchColumn()) + return 0; + return pow($config['robot_mute_multiplier'], $result); } function mute() { @@ -1225,7 +1224,7 @@ function checkMute() { $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->execute() or error(db_error($query)); - if (!$mute = $query->fetch()) { + if (!$mute = $query->fetch(PDO::FETCH_ASSOC)) { // What!? He's muted but he's not muted... return; } @@ -1514,7 +1513,7 @@ function markup(&$body, $track_cites = false) { $match[1] = mb_strlen(substr($body_tmp, 0, $match[1])); } - if ($post = $query->fetch()) { + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { $replacement = '' . '>>' . $cite . @@ -1557,7 +1556,7 @@ function markup(&$body, $track_cites = false) { $query->bindValue(':id', $cite); $query->execute() or error(db_error($query)); - if ($post = $query->fetch()) { + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { $replacement = '' . '>>>/' . $_board . '/' . $cite . @@ -1666,7 +1665,7 @@ function buildThread($id, $return = false, $mod = false) { $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { if (!isset($thread)) { $thread = new Thread( $post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'], $post['time'], @@ -1801,7 +1800,7 @@ function getPostByHash($hash) { $query->bindValue(':hash', $hash, PDO::PARAM_STR); $query->execute() or error(db_error($query)); - if ($post = $query->fetch()) { + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { return $post; } @@ -1815,7 +1814,7 @@ function getPostByHashInThread($hash, $thread) { $query->bindValue(':thread', $thread, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ($post = $query->fetch()) { + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { return $post; } diff --git a/inc/mod/auth.php b/inc/mod/auth.php index 1bc27dff..a0986a1f 100644 --- a/inc/mod/auth.php +++ b/inc/mod/auth.php @@ -147,7 +147,7 @@ function create_pm_header() { $query->bindValue(':id', $mod['id'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ($pm = $query->fetch()) + if ($pm = $query->fetch(PDO::FETCH_ASSOC)) $header = array('id' => $pm['id'], 'waiting' => $query->rowCount() - 1); else $header = true; diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 351d3203..f5b1101d 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -96,14 +96,14 @@ function mod_dashboard() { $query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :id AND `unread` = 1'); $query->bindValue(':id', $mod['id']); $query->execute() or error(db_error($query)); - $args['unread_pms'] = $query->fetchColumn(0); + $args['unread_pms'] = $query->fetchColumn(); if ($config['cache']['enabled']) cache::set('pm_unreadcount_' . $mod['id'], $args['unread_pms']); } $query = query('SELECT COUNT(*) FROM `reports`') or error(db_error($query)); - $args['reports'] = $query->fetchColumn(0); + $args['reports'] = $query->fetchColumn(); if ($mod['type'] >= ADMIN && $config['check_updates']) { if (!$config['version']) @@ -536,7 +536,7 @@ function mod_noticeboard($page_no = 1) { $query = prepare("SELECT COUNT(*) FROM `noticeboard`"); $query->execute() or error(db_error($query)); - $count = $query->fetchColumn(0); + $count = $query->fetchColumn(); mod_page(_('Noticeboard'), 'mod/noticeboard.html', array('noticeboard' => $noticeboard, 'count' => $count)); } @@ -597,7 +597,7 @@ function mod_news($page_no = 1) { $query = prepare("SELECT COUNT(*) FROM `news`"); $query->execute() or error(db_error($query)); - $count = $query->fetchColumn(0); + $count = $query->fetchColumn(); mod_page(_('News'), 'mod/news.html', array('news' => $news, 'count' => $count)); } @@ -637,7 +637,7 @@ function mod_log($page_no = 1) { $query = prepare("SELECT COUNT(*) FROM `modlogs`"); $query->execute() or error(db_error($query)); - $count = $query->fetchColumn(0); + $count = $query->fetchColumn(); mod_page(_('Moderation log'), 'mod/log.html', array('logs' => $logs, 'count' => $count)); } @@ -664,7 +664,7 @@ function mod_user_log($username, $page_no = 1) { $query = prepare("SELECT COUNT(*) FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `username` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); - $count = $query->fetchColumn(0); + $count = $query->fetchColumn(); mod_page(_('Moderation log'), 'mod/log.html', array('logs' => $logs, 'count' => $count, 'username' => $username)); } @@ -906,7 +906,7 @@ function mod_bans($page_no = 1) { $query = prepare("SELECT COUNT(*) FROM `bans`"); $query->execute() or error(db_error($query)); - $count = $query->fetchColumn(0); + $count = $query->fetchColumn(); foreach ($bans as &$ban) { if (filter_var($ban['ip'], FILTER_VALIDATE_IP) !== false) @@ -1058,7 +1058,7 @@ function mod_move($originBoard, $postID) { $replies = array(); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $post['mod'] = true; $post['thread'] = $newID; @@ -1365,7 +1365,7 @@ function mod_deletebyip($boardName, $post, $global = false) { $query = prepare(sprintf('SELECT `ip` FROM `posts_%s` WHERE `id` = :id', $boardName)); $query->bindValue(':id', $post); $query->execute() or error(db_error($query)); - if (!$ip = $query->fetchColumn(0)) + if (!$ip = $query->fetchColumn()) error($config['error']['invalidpost']); $boards = $global ? listBoards() : array(array('uri' => $boardName)); @@ -1387,7 +1387,7 @@ function mod_deletebyip($boardName, $post, $global = false) { $threads_to_rebuild = array(); $threads_deleted = array(); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { openBoard($post['board']); deletePost($post['id'], false, false); @@ -1684,7 +1684,7 @@ function mod_inbox() { $query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :mod AND `unread` = 1'); $query->bindValue(':mod', $mod['id']); $query->execute() or error(db_error($query)); - $unread = $query->fetchColumn(0); + $unread = $query->fetchColumn(); foreach ($messages as &$message) { $message['snippet'] = pm_snippet($message['message']); @@ -1706,12 +1706,12 @@ function mod_new_pm($username) { $query = prepare("SELECT `id` FROM `mods` WHERE `username` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); - if (!$id = $query->fetchColumn(0)) { + if (!$id = $query->fetchColumn()) { // Old style ?/PM: by user ID $query = prepare("SELECT `username` FROM `mods` WHERE `id` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); - if ($username = $query->fetchColumn(0)) + if ($username = $query->fetchColumn()) header('Location: ?/new_PM/' . $username, true, $config['redirect_http']); else error($config['error']['404']); @@ -1832,7 +1832,7 @@ function mod_reports() { $report_posts[$board] = array(); $query = query(sprintf('SELECT * FROM `posts_%s` WHERE `id` = ' . implode(' OR `id` = ', $posts), $board)) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $report_posts[$board][$post['id']] = $post; } } @@ -2169,10 +2169,10 @@ function mod_debug_antispam() { } $query = query('SELECT COUNT(*) FROM `antispam`' . ($where ? " WHERE $where" : '')) or error(db_error()); - $args['total'] = number_format($query->fetchColumn(0)); + $args['total'] = number_format($query->fetchColumn()); $query = query('SELECT COUNT(*) FROM `antispam` WHERE `expires` IS NOT NULL' . ($where ? " AND $where" : '')) or error(db_error()); - $args['expiring'] = number_format($query->fetchColumn(0)); + $args['expiring'] = number_format($query->fetchColumn()); $query = query('SELECT * FROM `antispam` ' . ($where ? "WHERE $where" : '') . ' ORDER BY `passed` DESC LIMIT 40') or error(db_error()); $args['top'] = $query->fetchAll(PDO::FETCH_ASSOC); diff --git a/post.php b/post.php index db077866..f4499845 100644 --- a/post.php +++ b/post.php @@ -52,7 +52,7 @@ if (isset($_POST['delete'])) { $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ($post = $query->fetch()) { + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { if ($password != '' && $post['password'] != $password) error($config['error']['invalidpassword']); @@ -115,12 +115,12 @@ if (isset($_POST['delete'])) { $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - $post = $query->fetch(); + $thread = $query->fetchColumn(); - if ($post) { + if ($thread) { if ($config['syslog']) _syslog(LOG_INFO, 'Reported post: ' . - '/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $post['thread'] ? $post['thread'] : $id) . ($post['thread'] ? '#' . $id : '') . + '/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $thread ? $thread : $id) . ($thread ? '#' . $id : '') . ' for "' . $reason . '"' ); $query = prepare("INSERT INTO `reports` VALUES (NULL, :time, :ip, :board, :post, :reason)"); @@ -231,7 +231,7 @@ if (isset($_POST['delete'])) { $query->bindValue(':id', $post['thread'], PDO::PARAM_INT); $query->execute() or error(db_error()); - if (!$thread = $query->fetch()) { + if (!$thread = $query->fetch(PDO::FETCH_ASSOC)) { // Non-existant error($config['error']['nonexistant']); } diff --git a/templates/themes/catalog/theme.php b/templates/themes/catalog/theme.php index e585cf17..5c9f6769 100644 --- a/templates/themes/catalog/theme.php +++ b/templates/themes/catalog/theme.php @@ -39,7 +39,7 @@ $query = query(sprintf("SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM `posts_%s` WHERE `thread` IS NULL ORDER BY `bump` DESC", $board_name, $board_name, $board_name)) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])); $post['board_name'] = $board['name']; $post['file'] = $config['uri_thumb'] . $post['thumb']; diff --git a/templates/themes/recent/theme.php b/templates/themes/recent/theme.php index 75907e77..98fabfa1 100644 --- a/templates/themes/recent/theme.php +++ b/templates/themes/recent/theme.php @@ -47,7 +47,7 @@ $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_images'], $query); $query = query($query) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { openBoard($post['board']); // board settings won't be available in the template file, so generate links now @@ -67,7 +67,7 @@ $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_posts'], $query); $query = query($query) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { openBoard($post['board']); $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])) . '#' . $post['id']; @@ -78,7 +78,7 @@ } // Total posts - $query = 'SELECT SUM(`top`) AS `count` FROM ('; + $query = 'SELECT SUM(`top`) FROM ('; foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; @@ -86,11 +86,10 @@ } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); - $res = $query->fetch(); - $stats['total_posts'] = number_format($res['count']); + $stats['total_posts'] = number_format($query->fetchColumn()); // Unique IPs - $query = 'SELECT COUNT(DISTINCT(`ip`)) AS `count` FROM ('; + $query = 'SELECT COUNT(DISTINCT(`ip`)) FROM ('; foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; @@ -98,11 +97,10 @@ } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); - $res = $query->fetch(); - $stats['unique_posters'] = number_format($res['count']); + $stats['unique_posters'] = number_format($query->fetchColumn()); // Active content - $query = 'SELECT SUM(`filesize`) AS `count` FROM ('; + $query = 'SELECT SUM(`filesize`) FROM ('; foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; @@ -110,8 +108,7 @@ } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); - $res = $query->fetch(); - $stats['active_content'] = $res['count']; + $stats['active_content'] = $query->fetchColumn(); return Element('themes/recent/recent.html', Array( 'settings' => $settings, diff --git a/templates/themes/rrdtool/theme.php b/templates/themes/rrdtool/theme.php index 68fc1850..0e0a2f15 100644 --- a/templates/themes/rrdtool/theme.php +++ b/templates/themes/rrdtool/theme.php @@ -61,9 +61,8 @@ // debug just the graphing (not updating) with the --debug switch if (!isset($argv[1]) || $argv[1] != '--debug') { // Update graph - $query = query(sprintf("SELECT MAX(`id`) AS `count` FROM `posts_%s`", $board)); - $count = $query->fetch(); - $count = $count['count']; + $query = query(sprintf("SELECT MAX(`id`) FROM `posts_%s`", $board)); + $count = $query->fetchColumn(); if (!rrd_update($file, Array( '-t', From 0f9df0ac6608d3398cd480465dcab1b0227ec9c0 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 20:54:20 -0400 Subject: [PATCH 153/289] Newline before --- inc/mod/pages.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index f5b1101d..7edc0ee6 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1222,7 +1222,7 @@ function mod_ban_post($board, $delete, $post, $token = false) { $_POST['message'] = str_replace('%LENGTH%', strtoupper($length_english), $_POST['message']); $query = prepare(sprintf('UPDATE `posts_%s` SET `body_nomarkup` = CONCAT(`body_nomarkup`, :body_nomarkup) WHERE `id` = :id', $board)); $query->bindValue(':id', $post); - $query->bindValue(':body_nomarkup', sprintf('%s', $_POST['message'])); + $query->bindValue(':body_nomarkup', sprintf("\n%s", $_POST['message'])); $query->execute() or error(db_error($query)); rebuildPost($post); From a5312ebe897036e89db57480abb0ae617a2bcb38 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 21:02:26 -0400 Subject: [PATCH 154/289] Allow public ban messages on raw HTML posts --- inc/functions.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 0b4ac211..b40b40d2 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1423,6 +1423,7 @@ function markup(&$body, $track_cites = false) { if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { $skip_chars = 0; $body_tmp = $body; + $end_markup = false; foreach ($modifiers as $modifier) { // preg_match_all is not multibyte-safe @@ -1436,9 +1437,13 @@ function markup(&$body, $track_cites = false) { if ($modifier['type'] == 'ban message') { // Public ban message $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); + if ($end_markup) { + $body .= $replacement; + } } elseif ($modifier['type'] == 'raw html') { $body = html_entity_decode($modifier['content']); - return array(); + $replacement = ''; + $end_markup = true; } elseif (preg_match('/^escape /', $modifier['type'])) { // Escaped (not a real modifier) $replacement = '<tinyboard ' . substr($modifier['type'], strlen('escape ')) . '>' . $modifier['content'] . '</tinyboard>'; @@ -1447,9 +1452,14 @@ function markup(&$body, $track_cites = false) { $replacement = ''; } - $body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0])); - $skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]); - + if (!$end_markup) { + $body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0])); + $skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]); + } + } + + if ($end_markup) { + return array(); } } From 055c3a73820dd949ab8bf71012fac66cac9daebd Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 21:22:32 -0400 Subject: [PATCH 155/289] Revert "facilitate using markup modifiers multiple times; make raw html not consume the whole post" This reverts commit e7dd0bbc4a4a17a4f7e5f6750b48ee3c0946c40e. --- inc/functions.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 2cbf3e6b..a6fd35c7 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1449,7 +1449,7 @@ function markup(&$body, $track_cites = false) { $body = str_replace("\r", '', $body); $body = utf8tohtml($body); - if (preg_match_all('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { + if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { $skip_chars = 0; $body_tmp = $body; @@ -1466,7 +1466,8 @@ function markup(&$body, $track_cites = false) { // Public ban message $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); } elseif ($modifier['type'] == 'raw html') { - $replacement = html_entity_decode($modifier['content']); + $body = html_entity_decode($modifier['content']); + return array(); } elseif (preg_match('/^escape /', $modifier['type'])) { // Escaped (not a real modifier) $replacement = '<tinyboard ' . substr($modifier['type'], strlen('escape ')) . '>' . $modifier['content'] . '</tinyboard>'; From e93d5b2f8e033735ca40a9d3a44771be9f3842c8 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 21:22:57 -0400 Subject: [PATCH 156/289] Revert "markup modifiers: make it even harder to escape" This reverts commit d7ea47a91f63382f7a4e002086e415550e342a11. --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index a6fd35c7..e57fd32a 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1623,7 +1623,7 @@ function markup(&$body, $track_cites = false) { } function escape_markup_modifiers($string) { - return preg_replace('@@m', '', $string); + return preg_replace('@(.+)@m', '$2', $string); } function utf8tohtml($utf8) { From ea2b8cce077a092e0cbf136f9a45158668cc5ecf Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 21:24:17 -0400 Subject: [PATCH 157/289] Bugfix: HTML injection in post editing (introduces and fixes yet another bug) --- inc/functions.php | 4 ++-- inc/mod/pages.php | 9 ++++++--- templates/mod/edit_post_form.html | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index b40b40d2..9e1ce1fa 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1420,7 +1420,7 @@ function markup(&$body, $track_cites = false) { $body = str_replace("\r", '', $body); $body = utf8tohtml($body); - if (preg_match_all('@<tinyboard ([\w\s]+)>(.+)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { + if (preg_match_all('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@um', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { $skip_chars = 0; $body_tmp = $body; $end_markup = false; @@ -1436,7 +1436,7 @@ function markup(&$body, $track_cites = false) { if ($modifier['type'] == 'ban message') { // Public ban message - $replacement = sprintf($config['mod']['ban_message'], $modifier['content']); + $replacement = sprintf($config['mod']['ban_message'], html_entity_decode($modifier['content'])); if ($end_markup) { $body .= $replacement; } diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 7edc0ee6..2808dc56 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1222,7 +1222,7 @@ function mod_ban_post($board, $delete, $post, $token = false) { $_POST['message'] = str_replace('%LENGTH%', strtoupper($length_english), $_POST['message']); $query = prepare(sprintf('UPDATE `posts_%s` SET `body_nomarkup` = CONCAT(`body_nomarkup`, :body_nomarkup) WHERE `id` = :id', $board)); $query->bindValue(':id', $post); - $query->bindValue(':body_nomarkup', sprintf("\n%s", $_POST['message'])); + $query->bindValue(':body_nomarkup', sprintf("\n%s", utf8tohtml($_POST['message']))); $query->execute() or error(db_error($query)); rebuildPost($post); @@ -1298,10 +1298,13 @@ function mod_edit_post($board, $edit_raw_html, $postID) { header('Location: ?/' . sprintf($config['board_path'], $board) . $config['dir']['res'] . sprintf($config['file_page'], $post['thread'] ? $post['thread'] : $postID) . '#' . $postID, true, $config['redirect_http']); } else { if ($config['minify_html']) { - $post['body_nomarkup'] = str_replace("\n", ' ', $post['body_nomarkup']); - $post['body'] = str_replace("\n", ' ', $post['body']); + // $post['body_nomarkup'] = str_replace("\n", ' ', $post['body_nomarkup']); + // $post['body'] = str_replace("\n", ' ', $post['body']); } + // Minifying this page causes an issue with newlines in the textarea. This is a temporary solution. + $config['minify_html'] = false; + mod_page(_('Edit post'), 'mod/edit_post_form.html', array('token' => $security_token, 'board' => $board, 'raw' => $edit_raw_html, 'post' => $post)); } } diff --git a/templates/mod/edit_post_form.html b/templates/mod/edit_post_form.html index 146e725b..b9359c68 100644 --- a/templates/mod/edit_post_form.html +++ b/templates/mod/edit_post_form.html @@ -32,7 +32,7 @@ {% trans %}Comment{% endtrans %} - + From ab364525433a7194d050e4ec13ae08d603fdad43 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 19:50:25 -0400 Subject: [PATCH 158/289] fix post editing for tinyboard markup --- inc/mod/pages.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 2808dc56..3ff6a9b1 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -1276,7 +1276,7 @@ function mod_edit_post($board, $edit_raw_html, $postID) { if (isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['body'])) { if ($edit_raw_html) - $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body` = :body WHERE `id` = :id', $board)); + $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body` = :body, `body_nomarkup` = :body_nomarkup WHERE `id` = :id', $board)); else $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body_nomarkup` = :body WHERE `id` = :id', $board)); $query->bindValue(':id', $postID); @@ -1284,6 +1284,10 @@ function mod_edit_post($board, $edit_raw_html, $postID) { $query->bindValue(':email', $_POST['email']); $query->bindValue(':subject', $_POST['subject']); $query->bindValue(':body', $_POST['body']); + if ($edit_raw_html) { + $body_nomarkup = '' . $_POST['body'] . ''; + $query->bindValue(':body_nomarkup', $body_nomarkup); + } $query->execute() or error(db_error($query)); if ($edit_raw_html) { From 232f4ff8680e81dbee3902c01af6c702555fbc0f Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:13:19 -0400 Subject: [PATCH 159/289] markup modifiers: make it even harder to escape --- inc/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/functions.php b/inc/functions.php index 9e1ce1fa..403f6112 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1604,7 +1604,7 @@ function markup(&$body, $track_cites = false) { } function escape_markup_modifiers($string) { - return preg_replace('@(.+)@m', '$2', $string); + return preg_replace('@@m', '', $string); } function utf8tohtml($utf8) { From a052a791b553c770ef407f91b697bef7a62df5b1 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 31 Jul 2013 22:14:26 -0400 Subject: [PATCH 160/289] Add optional database table prefix (issue #118; see issue comments for details) --- inc/anti-bot.php | 12 +- inc/config.php | 2 + inc/database.php | 4 + inc/filters.php | 2 +- inc/functions.php | 80 +++++------ inc/mod/auth.php | 8 +- inc/mod/ban.php | 6 +- inc/mod/pages.php | 188 +++++++++++++------------- install.php | 6 +- post.php | 10 +- templates/posts.sql | 2 +- templates/themes/basic/theme.php | 2 +- templates/themes/catalog/theme.php | 2 +- templates/themes/categories/theme.php | 2 +- templates/themes/frameset/theme.php | 2 +- templates/themes/recent/theme.php | 10 +- templates/themes/rrdtool/theme.php | 2 +- templates/themes/sitemap/theme.php | 2 +- 18 files changed, 177 insertions(+), 165 deletions(-) diff --git a/inc/anti-bot.php b/inc/anti-bot.php index bf29b3cb..fde97096 100644 --- a/inc/anti-bot.php +++ b/inc/anti-bot.php @@ -182,12 +182,12 @@ function _create_antibot($board, $thread) { $antibot = new AntiBot(array($board, $thread)); - query('DELETE FROM `antispam` WHERE `expires` < UNIX_TIMESTAMP()') or error(db_error()); + query('DELETE FROM ``antispam`` WHERE `expires` < UNIX_TIMESTAMP()') or error(db_error()); if ($thread) - $query = prepare('UPDATE `antispam` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` = :thread AND `expires` IS NULL'); + $query = prepare('UPDATE ``antispam`` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` = :thread AND `expires` IS NULL'); else - $query = prepare('UPDATE `antispam` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` IS NULL AND `expires` IS NULL'); + $query = prepare('UPDATE ``antispam`` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` IS NULL AND `expires` IS NULL'); $query->bindValue(':board', $board); if ($thread) @@ -195,7 +195,7 @@ function _create_antibot($board, $thread) { $query->bindValue(':expires', $config['spam']['hidden_inputs_expire']); $query->execute() or error(db_error($query)); - $query = prepare('INSERT INTO `antispam` VALUES (:board, :thread, :hash, UNIX_TIMESTAMP(), NULL, 0)'); + $query = prepare('INSERT INTO ``antispam`` VALUES (:board, :thread, :hash, UNIX_TIMESTAMP(), NULL, 0)'); $query->bindValue(':board', $board); $query->bindValue(':thread', $thread); $query->bindValue(':hash', $antibot->hash()); @@ -248,7 +248,7 @@ function checkSpam(array $extra_salt = array()) { if ($hash != $_hash) return true; - $query = prepare('SELECT `passed` FROM `antispam` WHERE `hash` = :hash'); + $query = prepare('SELECT `passed` FROM ``antispam`` WHERE `hash` = :hash'); $query->bindValue(':hash', $hash); $query->execute() or error(db_error($query)); if ((($passed = $query->fetchColumn(0)) === false) || ($passed > $config['spam']['hidden_inputs_max_pass'])) { @@ -260,7 +260,7 @@ function checkSpam(array $extra_salt = array()) { } function incrementSpamHash($hash) { - $query = prepare('UPDATE `antispam` SET `passed` = `passed` + 1 WHERE `hash` = :hash'); + $query = prepare('UPDATE ``antispam`` SET `passed` = `passed` + 1 WHERE `hash` = :hash'); $query->bindValue(':hash', $hash); $query->execute() or error(db_error($query)); } diff --git a/inc/config.php b/inc/config.php index 6f2371ec..75384d3f 100644 --- a/inc/config.php +++ b/inc/config.php @@ -76,6 +76,8 @@ $config['db']['password'] = ''; // Tinyboard database $config['db']['database'] = ''; + // Table prefix + $config['db']['prefix'] = ''; // Use a persistent connection (experimental) $config['db']['persistent'] = false; // Anything more to add to the DSN string (eg. port=xxx;foo=bar) diff --git a/inc/database.php b/inc/database.php index 3dc0f0ce..7be001ea 100644 --- a/inc/database.php +++ b/inc/database.php @@ -87,6 +87,8 @@ function mysql_version() { function prepare($query) { global $pdo, $debug, $config; + $query = preg_replace('/``([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)``/u', '`' . $config['db']['prefix'] . '$1`', $query); + sql_open(); if ($config['debug']) @@ -98,6 +100,8 @@ function prepare($query) { function query($query) { global $pdo, $debug, $config; + $query = preg_replace('/``([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)``/u', '`' . $config['db']['prefix'] . '$1`', $query); + sql_open(); if ($config['debug']) { diff --git a/inc/filters.php b/inc/filters.php index 524d37cf..9f03154d 100644 --- a/inc/filters.php +++ b/inc/filters.php @@ -81,7 +81,7 @@ class Filter { else $all_boards = false; - $query = prepare("INSERT INTO `bans` VALUES (NULL, :ip, :mod, :set, :expires, :reason, :board, 0)"); + $query = prepare("INSERT INTO ``bans`` VALUES (NULL, :ip, :mod, :set, :expires, :reason, :board, 0)"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':mod', -1); $query->bindValue(':set', time()); diff --git a/inc/functions.php b/inc/functions.php index 403f6112..e871fee0 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -241,7 +241,7 @@ function create_antibot($board, $thread = null) { function rebuildThemes($action, $board = false) { // List themes - $query = query("SELECT `theme` FROM `theme_settings` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error()); + $query = query("SELECT `theme` FROM ``theme_settings`` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error()); while ($theme = $query->fetch(PDO::FETCH_ASSOC)) { rebuildTheme($theme['theme'], $action, $board); @@ -276,7 +276,7 @@ function rebuildTheme($theme, $action, $board = false) { function themeSettings($theme) { - $query = prepare("SELECT `name`, `value` FROM `theme_settings` WHERE `theme` = :theme AND `name` IS NOT NULL"); + $query = prepare("SELECT `name`, `value` FROM ``theme_settings`` WHERE `theme` = :theme AND `name` IS NOT NULL"); $query->bindValue(':theme', $theme); $query->execute() or error(db_error($query)); @@ -347,7 +347,7 @@ function getBoardInfo($uri) { return $board; } - $query = prepare("SELECT * FROM `boards` WHERE `uri` = :uri LIMIT 1"); + $query = prepare("SELECT * FROM ``boards`` WHERE `uri` = :uri LIMIT 1"); $query->bindValue(':uri', $uri); $query->execute() or error(db_error($query)); @@ -523,7 +523,7 @@ function listBoards() { if ($config['cache']['enabled'] && ($boards = cache::get('all_boards'))) return $boards; - $query = query("SELECT * FROM `boards` ORDER BY `uri`") or error(db_error()); + $query = query("SELECT * FROM ``boards`` ORDER BY `uri`") or error(db_error()); $boards = $query->fetchAll(); if ($config['cache']['enabled']) @@ -535,7 +535,7 @@ function listBoards() { function checkFlood($post) { global $board, $config; - $query = prepare(sprintf("SELECT * FROM `posts_%s` WHERE (`ip` = :ip AND `time` >= :floodtime) OR (`ip` = :ip AND `body` != '' AND `body` = :body AND `time` >= :floodsameiptime) OR (`body` != '' AND `body` = :body AND `time` >= :floodsametime) LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE (`ip` = :ip AND `time` >= :floodtime) OR (`ip` = :ip AND `body` != '' AND `body` = :body AND `time` >= :floodsameiptime) OR (`body` != '' AND `body` = :body AND `time` >= :floodsametime) LIMIT 1", $board['uri'])); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':body', $post['body']); $query->bindValue(':floodtime', time()-$config['flood_time'], PDO::PARAM_INT); @@ -589,7 +589,7 @@ function displayBan($ban) { global $config; if (!$ban['seen']) { - $query = prepare("UPDATE `bans` SET `seen` = 1 WHERE `id` = :id"); + $query = prepare("UPDATE ``bans`` SET `seen` = 1 WHERE `id` = :id"); $query->bindValue(':id', $ban['id'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); } @@ -620,12 +620,12 @@ function checkBan($board = 0) { if (event('check-ban', $board)) return true; - $query = prepare("SELECT `set`, `expires`, `reason`, `board`, `seen`, `bans`.`id` FROM `bans` WHERE (`board` IS NULL OR `board` = :board) AND `ip` = :ip ORDER BY `expires` IS NULL DESC, `expires` DESC, `expires` DESC LIMIT 1"); + $query = prepare("SELECT `set`, `expires`, `reason`, `board`, `seen`, ``bans``.`id` FROM ``bans`` WHERE (`board` IS NULL OR `board` = :board) AND `ip` = :ip ORDER BY `expires` IS NULL DESC, `expires` DESC, `expires` DESC LIMIT 1"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':board', $board); $query->execute() or error(db_error($query)); if ($query->rowCount() < 1 && $config['ban_range']) { - $query = prepare("SELECT `set`, `expires`, `reason`, `board`, `seen`, `bans`.`id` FROM `bans` WHERE (`board` IS NULL OR `board` = :board) AND :ip LIKE REPLACE(REPLACE(`ip`, '%', '!%'), '*', '%') ESCAPE '!' ORDER BY `expires` IS NULL DESC, `expires` DESC LIMIT 1"); + $query = prepare("SELECT `set`, `expires`, `reason`, `board`, `seen`, ``bans``.`id` FROM ``bans`` WHERE (`board` IS NULL OR `board` = :board) AND :ip LIKE REPLACE(REPLACE(`ip`, '%', '!%'), '*', '%') ESCAPE '!' ORDER BY `expires` IS NULL DESC, `expires` DESC LIMIT 1"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':board', $board); $query->execute() or error(db_error($query)); @@ -633,7 +633,7 @@ function checkBan($board = 0) { if ($query->rowCount() < 1 && $config['ban_cidr'] && !isIPv6()) { // my most insane SQL query yet - $query = prepare("SELECT `set`, `expires`, `reason`, `board`, `seen`, `bans`.`id` FROM `bans` WHERE (`board` IS NULL OR `board` = :board) + $query = prepare("SELECT `set`, `expires`, `reason`, `board`, `seen`, ``bans``.`id` FROM ``bans`` WHERE (`board` IS NULL OR `board` = :board) AND ( `ip` REGEXP '^(\[0-9]+\.\[0-9]+\.\[0-9]+\.\[0-9]+\)\/(\[0-9]+)$' AND @@ -650,7 +650,7 @@ function checkBan($board = 0) { if ($ban = $query->fetch(PDO::FETCH_ASSOC)) { if ($ban['expires'] && $ban['expires'] < time()) { // Ban expired - $query = prepare("DELETE FROM `bans` WHERE `id` = :id"); + $query = prepare("DELETE FROM ``bans`` WHERE `id` = :id"); $query->bindValue(':id', $ban['id'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -670,7 +670,7 @@ function checkBan($board = 0) { // No reason to keep expired bans in the database (except those that haven't been viewed yet) function purge_bans() { - $query = prepare("DELETE FROM `bans` WHERE `expires` IS NOT NULL AND `expires` < :time AND `seen` = 1"); + $query = prepare("DELETE FROM ``bans`` WHERE `expires` IS NOT NULL AND `expires` < :time AND `seen` = 1"); $query->bindValue(':time', time()); $query->execute() or error(db_error($query)); } @@ -681,7 +681,7 @@ function threadLocked($id) { if (event('check-locked', $id)) return true; - $query = prepare(sprintf("SELECT `locked` FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `locked` FROM ``posts_%s`` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error()); @@ -699,7 +699,7 @@ function threadSageLocked($id) { if (event('check-sage-locked', $id)) return true; - $query = prepare(sprintf("SELECT `sage` FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `sage` FROM ``posts_%s`` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error()); @@ -714,7 +714,7 @@ function threadSageLocked($id) { function threadExists($id) { global $board; - $query = prepare(sprintf("SELECT 1 FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT 1 FROM ``posts_%s`` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error()); @@ -727,7 +727,7 @@ function threadExists($id) { function post(array $post) { global $pdo, $board; - $query = prepare(sprintf("INSERT INTO `posts_%s` (`id`, `thread`, `subject`, `email`, `name`, `trip`, `capcode`, `body`, `body_nomarkup`, `time`, `bump`, `thumb`, `thumbwidth`, `thumbheight`, `file`, `filewidth`, `fileheight`, `filesize`, `filename`, `filehash`, `password`, `ip`, `sticky`, `locked`, `sage`, `embed`) VALUES ( NULL, :thread, :subject, :email, :name, :trip, :capcode, :body, :body_nomarkup, :time, :time, :thumb, :thumbwidth, :thumbheight, :file, :width, :height, :filesize, :filename, :filehash, :password, :ip, :sticky, :locked, 0, :embed)", $board['uri'])); + $query = prepare(sprintf("INSERT INTO ``posts_%s`` VALUES ( NULL, :thread, :subject, :email, :name, :trip, :capcode, :body, :body_nomarkup, :time, :time, :thumb, :thumbwidth, :thumbheight, :file, :width, :height, :filesize, :filename, :filehash, :password, :ip, :sticky, :locked, 0, :embed)", $board['uri'])); // Basic stuff if (!empty($post['subject'])) { @@ -829,7 +829,7 @@ function bumpThread($id) { if (event('bump', $id)) return true; - $query = prepare(sprintf("UPDATE `posts_%s` SET `bump` = :time WHERE `id` = :id AND `thread` IS NULL", $board['uri'])); + $query = prepare(sprintf("UPDATE ``posts_%s`` SET `bump` = :time WHERE `id` = :id AND `thread` IS NULL", $board['uri'])); $query->bindValue(':time', time(), PDO::PARAM_INT); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -839,7 +839,7 @@ function bumpThread($id) { function deleteFile($id, $remove_entirely_if_already=true) { global $board, $config; - $query = prepare(sprintf("SELECT `thread`,`thumb`,`file` FROM `posts_%s` WHERE `id` = :id LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `thread`,`thumb`,`file` FROM ``posts_%s`` WHERE `id` = :id LIMIT 1", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); if (!$post = $query->fetch(PDO::FETCH_ASSOC)) @@ -848,7 +848,7 @@ function deleteFile($id, $remove_entirely_if_already=true) { if ($post['file'] == 'deleted' && !$post['thread']) return; // Can't delete OP's image completely. - $query = prepare(sprintf("UPDATE `posts_%s` SET `thumb` = NULL, `thumbwidth` = NULL, `thumbheight` = NULL, `filewidth` = NULL, `fileheight` = NULL, `filesize` = NULL, `filename` = NULL, `filehash` = NULL, `file` = :file WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("UPDATE ``posts_%s`` SET `thumb` = NULL, `thumbwidth` = NULL, `thumbheight` = NULL, `filewidth` = NULL, `fileheight` = NULL, `filesize` = NULL, `filename` = NULL, `filehash` = NULL, `file` = :file WHERE `id` = :id", $board['uri'])); if ($post['file'] == 'deleted' && $remove_entirely_if_already) { // Already deleted; remove file fully $query->bindValue(':file', null, PDO::PARAM_NULL); @@ -876,7 +876,7 @@ function deleteFile($id, $remove_entirely_if_already=true) { function rebuildPost($id) { global $board; - $query = prepare(sprintf("SELECT `body_nomarkup`, `thread` FROM `posts_%s` WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("SELECT `body_nomarkup`, `thread` FROM ``posts_%s`` WHERE `id` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -885,7 +885,7 @@ function rebuildPost($id) { markup($body = &$post['body_nomarkup']); - $query = prepare(sprintf("UPDATE `posts_%s` SET `body` = :body WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("UPDATE ``posts_%s`` SET `body` = :body WHERE `id` = :id", $board['uri'])); $query->bindValue(':body', $body); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -900,7 +900,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { global $board, $config; // Select post and replies (if thread) in one query - $query = prepare(sprintf("SELECT `id`,`thread`,`thumb`,`file` FROM `posts_%s` WHERE `id` = :id OR `thread` = :id", $board['uri'])); + $query = prepare(sprintf("SELECT `id`,`thread`,`thumb`,`file` FROM ``posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -918,7 +918,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { // Delete thread HTML page file_unlink($board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $post['id'])); - $antispam_query = prepare('DELETE FROM `antispam` WHERE `board` = :board AND `thread` = :thread'); + $antispam_query = prepare('DELETE FROM ``antispam`` WHERE `board` = :board AND `thread` = :thread'); $antispam_query->bindValue(':board', $board['uri']); $antispam_query->bindValue(':thread', $post['id']); $antispam_query->execute() or error(db_error($antispam_query)); @@ -939,11 +939,11 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { } - $query = prepare(sprintf("DELETE FROM `posts_%s` WHERE `id` = :id OR `thread` = :id", $board['uri'])); + $query = prepare(sprintf("DELETE FROM ``posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - $query = prepare("SELECT `board`, `post` FROM `cites` WHERE `target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")"); + $query = prepare("SELECT `board`, `post` FROM ``cites`` WHERE `target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")"); $query->bindValue(':board', $board['uri']); $query->execute() or error(db_error($query)); while ($cite = $query->fetch(PDO::FETCH_ASSOC)) { @@ -958,7 +958,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { if (isset($tmp_board)) openBoard($tmp_board); - $query = prepare("DELETE FROM `cites` WHERE (`target_board` = :board AND `target` = :id) OR (`board` = :board AND `post` = :id)"); + $query = prepare("DELETE FROM ``cites`` WHERE (`target_board` = :board AND `target` = :id) OR (`board` = :board AND `post` = :id)"); $query->bindValue(':board', $board['uri']); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -975,7 +975,7 @@ function clean() { $offset = round($config['max_pages']*$config['threads_per_page']); // I too wish there was an easier way of doing this... - $query = prepare(sprintf("SELECT `id` FROM `posts_%s` WHERE `thread` IS NULL ORDER BY `sticky` DESC, `bump` DESC LIMIT :offset, 9001", $board['uri'])); + $query = prepare(sprintf("SELECT `id` FROM ``posts_%s`` WHERE `thread` IS NULL ORDER BY `sticky` DESC, `bump` DESC LIMIT :offset, 9001", $board['uri'])); $query->bindValue(':offset', $offset, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -990,7 +990,7 @@ function index($page, $mod=false) { $body = ''; $offset = round($page*$config['threads_per_page']-$config['threads_per_page']); - $query = prepare(sprintf("SELECT * FROM `posts_%s` WHERE `thread` IS NULL ORDER BY `sticky` DESC, `bump` DESC LIMIT :offset,:threads_per_page", $board['uri'])); + $query = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE `thread` IS NULL ORDER BY `sticky` DESC, `bump` DESC LIMIT :offset,:threads_per_page", $board['uri'])); $query->bindValue(':offset', $offset, PDO::PARAM_INT); $query->bindValue(':threads_per_page', $config['threads_per_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -1011,7 +1011,7 @@ function index($page, $mod=false) { $replies = $cached['replies']; $omitted = $cached['omitted']; } else { - $posts = prepare(sprintf("SELECT * FROM `posts_%s` WHERE `thread` = :id ORDER BY `id` DESC LIMIT :limit", $board['uri'])); + $posts = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE `thread` = :id ORDER BY `id` DESC LIMIT :limit", $board['uri'])); $posts->bindValue(':id', $th['id']); $posts->bindValue(':limit', ($th['sticky'] ? $config['threads_preview_sticky'] : $config['threads_preview']), PDO::PARAM_INT); $posts->execute() or error(db_error($posts)); @@ -1115,7 +1115,7 @@ function getPages($mod=false) { $count = $board['thread_count']; } else { // Count threads - $query = query(sprintf("SELECT COUNT(*) FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); + $query = query(sprintf("SELECT COUNT(*) FROM ``posts_%s`` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); $count = $query->fetchColumn(); } $count = floor(($config['threads_per_page'] + $count - 1) / $config['threads_per_page']); @@ -1151,7 +1151,7 @@ function checkRobot($body) { return true; $body = makerobot($body); - $query = prepare("SELECT 1 FROM `robot` WHERE `hash` = :hash LIMIT 1"); + $query = prepare("SELECT 1 FROM ``robot`` WHERE `hash` = :hash LIMIT 1"); $query->bindValue(':hash', $body); $query->execute() or error(db_error($query)); @@ -1160,7 +1160,7 @@ function checkRobot($body) { } // Insert new hash - $query = prepare("INSERT INTO `robot` VALUES (:hash)"); + $query = prepare("INSERT INTO ``robot`` VALUES (:hash)"); $query->bindValue(':hash', $body); $query->execute() or error(db_error($query)); @@ -1170,7 +1170,7 @@ function checkRobot($body) { // Returns an associative array with 'replies' and 'images' keys function numPosts($id) { global $board; - $query = prepare(sprintf("SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(*) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $board['uri'], $board['uri'])); + $query = prepare(sprintf("SELECT COUNT(*) FROM ``posts_%s`` WHERE `thread` = :thread UNION ALL SELECT COUNT(*) FROM ``posts_%s`` WHERE `file` IS NOT NULL AND `thread` = :thread", $board['uri'], $board['uri'])); $query->bindValue(':thread', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -1187,7 +1187,7 @@ function muteTime() { return $time; // Find number of mutes in the past X hours - $query = prepare("SELECT COUNT(*) FROM `mutes` WHERE `time` >= :time AND `ip` = :ip"); + $query = prepare("SELECT COUNT(*) FROM ``mutes`` WHERE `time` >= :time AND `ip` = :ip"); $query->bindValue(':time', time()-($config['robot_mute_hour']*3600), PDO::PARAM_INT); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->execute() or error(db_error($query)); @@ -1199,7 +1199,7 @@ function muteTime() { function mute() { // Insert mute - $query = prepare("INSERT INTO `mutes` VALUES (:ip, :time)"); + $query = prepare("INSERT INTO ``mutes`` VALUES (:ip, :time)"); $query->bindValue(':time', time(), PDO::PARAM_INT); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->execute() or error(db_error($query)); @@ -1220,7 +1220,7 @@ function checkMute() { $mutetime = muteTime(); if ($mutetime > 0) { // Find last mute time - $query = prepare("SELECT `time` FROM `mutes` WHERE `ip` = :ip ORDER BY `time` DESC LIMIT 1"); + $query = prepare("SELECT `time` FROM ``mutes`` WHERE `ip` = :ip ORDER BY `time` DESC LIMIT 1"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->execute() or error(db_error($query)); @@ -1514,7 +1514,7 @@ function markup(&$body, $track_cites = false) { foreach ($cites as $matches) { $cite = $matches[2][0]; - $query = prepare(sprintf("SELECT `thread`,`id` FROM `posts_%s` WHERE `id` = :id LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `thread`,`id` FROM ``posts_%s`` WHERE `id` = :id LIMIT 1", $board['uri'])); $query->bindValue(':id', $cite); $query->execute() or error(db_error($query)); @@ -1562,7 +1562,7 @@ function markup(&$body, $track_cites = false) { // Check if the board exists, and load settings if (openBoard($_board)) { if ($cite) { - $query = prepare(sprintf("SELECT `thread`,`id` FROM `posts_%s` WHERE `id` = :id LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `thread`,`id` FROM ``posts_%s`` WHERE `id` = :id LIMIT 1", $board['uri'])); $query->bindValue(':id', $cite); $query->execute() or error(db_error($query)); @@ -1671,7 +1671,7 @@ function buildThread($id, $return = false, $mod = false) { cache::delete("thread_{$board['uri']}_{$id}"); } - $query = prepare(sprintf("SELECT * FROM `posts_%s` WHERE (`thread` IS NULL AND `id` = :id) OR `thread` = :id ORDER BY `thread`,`id`", $board['uri'])); + $query = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE (`thread` IS NULL AND `id` = :id) OR `thread` = :id ORDER BY `thread`,`id`", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -1806,7 +1806,7 @@ function fraction($numerator, $denominator, $sep) { function getPostByHash($hash) { global $board; - $query = prepare(sprintf("SELECT `id`,`thread` FROM `posts_%s` WHERE `filehash` = :hash", $board['uri'])); + $query = prepare(sprintf("SELECT `id`,`thread` FROM ``posts_%s`` WHERE `filehash` = :hash", $board['uri'])); $query->bindValue(':hash', $hash, PDO::PARAM_STR); $query->execute() or error(db_error($query)); @@ -1819,7 +1819,7 @@ function getPostByHash($hash) { function getPostByHashInThread($hash, $thread) { global $board; - $query = prepare(sprintf("SELECT `id`,`thread` FROM `posts_%s` WHERE `filehash` = :hash AND ( `thread` = :thread OR `id` = :thread )", $board['uri'])); + $query = prepare(sprintf("SELECT `id`,`thread` FROM ``posts_%s`` WHERE `filehash` = :hash AND ( `thread` = :thread OR `id` = :thread )", $board['uri'])); $query->bindValue(':hash', $hash, PDO::PARAM_STR); $query->bindValue(':thread', $thread, PDO::PARAM_INT); $query->execute() or error(db_error($query)); diff --git a/inc/mod/auth.php b/inc/mod/auth.php index a0986a1f..bfab0f7e 100644 --- a/inc/mod/auth.php +++ b/inc/mod/auth.php @@ -42,7 +42,7 @@ function login($username, $password, $makehash=true) { $password = sha1($password); } - $query = prepare("SELECT `id`, `type`, `boards`, `password`, `salt` FROM `mods` WHERE `username` = :username"); + $query = prepare("SELECT `id`, `type`, `boards`, `password`, `salt` FROM ``mods`` WHERE `username` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); @@ -83,7 +83,7 @@ function destroyCookies() { function modLog($action, $_board=null) { global $mod, $board, $config; - $query = prepare("INSERT INTO `modlogs` VALUES (:id, :ip, :board, :time, :text)"); + $query = prepare("INSERT INTO ``modlogs`` VALUES (:id, :ip, :board, :time, :text)"); $query->bindValue(':id', $mod['id'], PDO::PARAM_INT); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':time', time(), PDO::PARAM_INT); @@ -112,7 +112,7 @@ if (isset($_COOKIE[$config['cookies']['mod']])) { exit; } - $query = prepare("SELECT `id`, `type`, `boards`, `password` FROM `mods` WHERE `username` = :username"); + $query = prepare("SELECT `id`, `type`, `boards`, `password` FROM ``mods`` WHERE `username` = :username"); $query->bindValue(':username', $cookie[0]); $query->execute() or error(db_error($query)); $user = $query->fetch(PDO::FETCH_ASSOC); @@ -143,7 +143,7 @@ function create_pm_header() { return $header; } - $query = prepare("SELECT `id` FROM `pms` WHERE `to` = :id AND `unread` = 1"); + $query = prepare("SELECT `id` FROM ``pms`` WHERE `to` = :id AND `unread` = 1"); $query->bindValue(':id', $mod['id'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); diff --git a/inc/mod/ban.php b/inc/mod/ban.php index cfc2636f..9166223f 100644 --- a/inc/mod/ban.php +++ b/inc/mod/ban.php @@ -56,7 +56,7 @@ function parse_time($str) { function ban($mask, $reason, $length, $board) { global $mod, $pdo; - $query = prepare("INSERT INTO `bans` VALUES (NULL, :ip, :mod, :time, :expires, :reason, :board, 0)"); + $query = prepare("INSERT INTO ``bans`` VALUES (NULL, :ip, :mod, :time, :expires, :reason, :board, 0)"); $query->bindValue(':ip', $mask); $query->bindValue(':mod', $mod['id']); $query->bindValue(':time', time()); @@ -89,12 +89,12 @@ function ban($mask, $reason, $length, $board) { } function unban($id) { - $query = prepare("SELECT `ip` FROM `bans` WHERE `id` = :id"); + $query = prepare("SELECT `ip` FROM ``bans`` WHERE `id` = :id"); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); $mask = $query->fetchColumn(); - $query = prepare("DELETE FROM `bans` WHERE `id` = :id"); + $query = prepare("DELETE FROM ``bans`` WHERE `id` = :id"); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 3ff6a9b1..1e0dc7c9 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -82,7 +82,7 @@ function mod_dashboard() { if (hasPermission($config['mod']['noticeboard'])) { if (!$config['cache']['enabled'] || !$args['noticeboard'] = cache::get('noticeboard_preview')) { - $query = prepare("SELECT `noticeboard`.*, `username` FROM `noticeboard` LEFT JOIN `mods` ON `mods`.`id` = `mod` ORDER BY `id` DESC LIMIT :limit"); + $query = prepare("SELECT ``noticeboard``.*, `username` FROM ``noticeboard`` LEFT JOIN ``mods`` ON ``mods``.`id` = `mod` ORDER BY `id` DESC LIMIT :limit"); $query->bindValue(':limit', $config['mod']['noticeboard_dashboard'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); $args['noticeboard'] = $query->fetchAll(PDO::FETCH_ASSOC); @@ -93,7 +93,7 @@ function mod_dashboard() { } if (!$config['cache']['enabled'] || ($args['unread_pms'] = cache::get('pm_unreadcount_' . $mod['id'])) == false) { - $query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :id AND `unread` = 1'); + $query = prepare('SELECT COUNT(*) FROM ``pms`` WHERE `to` = :id AND `unread` = 1'); $query->bindValue(':id', $mod['id']); $query->execute() or error(db_error($query)); $args['unread_pms'] = $query->fetchColumn(); @@ -102,7 +102,7 @@ function mod_dashboard() { cache::set('pm_unreadcount_' . $mod['id'], $args['unread_pms']); } - $query = query('SELECT COUNT(*) FROM `reports`') or error(db_error($query)); + $query = query('SELECT COUNT(*) FROM ``reports``') or error(db_error($query)); $args['reports'] = $query->fetchColumn(); if ($mod['type'] >= ADMIN && $config['check_updates']) { @@ -208,6 +208,8 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { // Use asterisk as wildcard instead $query = str_replace('*', '%', $query); + $query = str_replace('`', '!`', $query); + // Array of phrases to match $match = array(); @@ -271,7 +273,7 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { if (!empty($query)) $query .= ' UNION ALL '; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE %s", $board['uri'], $board['uri'], $sql_like); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` WHERE %s", $board['uri'], $board['uri'], $sql_like); } // You weren't allowed to search any boards @@ -282,21 +284,21 @@ function mod_search($type, $search_query_escaped, $page_no = 1) { } if ($type == 'IP_notes') { - $query = 'SELECT * FROM `ip_notes` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE ' . $sql_like . ' ORDER BY `time` DESC'; + $query = 'SELECT * FROM ``ip_notes`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE ' . $sql_like . ' ORDER BY `time` DESC'; $sql_table = 'ip_notes'; if (!hasPermission($config['mod']['view_notes']) || !hasPermission($config['mod']['show_ip'])) error($config['error']['noaccess']); } if ($type == 'bans') { - $query = 'SELECT `bans`.*, `username` FROM `bans` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE ' . $sql_like . ' ORDER BY (`expires` IS NOT NULL AND `expires` < UNIX_TIMESTAMP()), `set` DESC'; + $query = 'SELECT ``bans``.*, `username` FROM ``bans`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE ' . $sql_like . ' ORDER BY (`expires` IS NOT NULL AND `expires` < UNIX_TIMESTAMP()), `set` DESC'; $sql_table = 'bans'; if (!hasPermission($config['mod']['view_banlist'])) error($config['error']['noaccess']); } if ($type == 'log') { - $query = 'SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE ' . $sql_like . ' ORDER BY `time` DESC'; + $query = 'SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM ``modlogs`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE ' . $sql_like . ' ORDER BY `time` DESC'; $sql_table = 'modlogs'; if (!hasPermission($config['mod']['modlog'])) error($config['error']['noaccess']); @@ -353,7 +355,7 @@ function mod_edit_board($boardName) { if (!hasPermission($config['mod']['manageboards'], $board['uri'])) error($config['error']['deleteboard']); - $query = prepare('DELETE FROM `boards` WHERE `uri` = :uri'); + $query = prepare('DELETE FROM ``boards`` WHERE `uri` = :uri'); $query->bindValue(':uri', $board['uri']); $query->execute() or error(db_error($query)); @@ -363,19 +365,19 @@ function mod_edit_board($boardName) { rrmdir($board['uri'] . '/'); // Delete posting table - $query = query(sprintf('DROP TABLE IF EXISTS `posts_%s`', $board['uri'])) or error(db_error()); + $query = query(sprintf('DROP TABLE IF EXISTS ``posts_%s``', $board['uri'])) or error(db_error()); // Clear reports - $query = prepare('DELETE FROM `reports` WHERE `board` = :id'); + $query = prepare('DELETE FROM ``reports`` WHERE `board` = :id'); $query->bindValue(':id', $board['uri'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); // Delete from table - $query = prepare('DELETE FROM `boards` WHERE `uri` = :uri'); + $query = prepare('DELETE FROM ``boards`` WHERE `uri` = :uri'); $query->bindValue(':uri', $board['uri'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - $query = prepare("SELECT `board`, `post` FROM `cites` WHERE `target_board` = :board"); + $query = prepare("SELECT `board`, `post` FROM ``cites`` WHERE `target_board` = :board"); $query->bindValue(':board', $board['uri']); $query->execute() or error(db_error($query)); while ($cite = $query->fetch(PDO::FETCH_ASSOC)) { @@ -387,28 +389,28 @@ function mod_edit_board($boardName) { } } - $query = prepare('DELETE FROM `cites` WHERE `board` = :board OR `target_board` = :board'); + $query = prepare('DELETE FROM ``cites`` WHERE `board` = :board OR `target_board` = :board'); $query->bindValue(':board', $board['uri']); $query->execute() or error(db_error($query)); - $query = prepare('DELETE FROM `antispam` WHERE `board` = :board'); + $query = prepare('DELETE FROM ``antispam`` WHERE `board` = :board'); $query->bindValue(':board', $board['uri']); $query->execute() or error(db_error($query)); // Remove board from users/permissions table - $query = query('SELECT `id`,`boards` FROM `mods`') or error(db_error()); + $query = query('SELECT `id`,`boards` FROM ``mods``') or error(db_error()); while ($user = $query->fetch(PDO::FETCH_ASSOC)) { $user_boards = explode(',', $user['boards']); if (in_array($board['uri'], $user_boards)) { unset($user_boards[array_search($board['uri'], $user_boards)]); - $_query = prepare('UPDATE `mods` SET `boards` = :boards WHERE `id` = :id'); + $_query = prepare('UPDATE ``mods`` SET `boards` = :boards WHERE `id` = :id'); $_query->bindValue(':boards', implode(',', $user_boards)); $_query->bindValue(':id', $user['id']); $_query->execute() or error(db_error($_query)); } } } else { - $query = prepare('UPDATE `boards` SET `title` = :title, `subtitle` = :subtitle WHERE `uri` = :uri'); + $query = prepare('UPDATE ``boards`` SET `title` = :title, `subtitle` = :subtitle WHERE `uri` = :uri'); $query->bindValue(':uri', $board['uri']); $query->bindValue(':title', $_POST['title']); $query->bindValue(':subtitle', $_POST['subtitle']); @@ -467,7 +469,7 @@ function mod_new_board() { error(sprintf($config['error']['boardexists'], $board['url'])); } - $query = prepare('INSERT INTO `boards` VALUES (:uri, :title, :subtitle)'); + $query = prepare('INSERT INTO ``boards`` VALUES (:uri, :title, :subtitle)'); $query->bindValue(':uri', $_POST['uri']); $query->bindValue(':title', $_POST['title']); $query->bindValue(':subtitle', $_POST['subtitle']); @@ -510,7 +512,7 @@ function mod_noticeboard($page_no = 1) { $_POST['body'] = escape_markup_modifiers($_POST['body']); markup($_POST['body']); - $query = prepare('INSERT INTO `noticeboard` VALUES (NULL, :mod, :time, :subject, :body)'); + $query = prepare('INSERT INTO ``noticeboard`` VALUES (NULL, :mod, :time, :subject, :body)'); $query->bindValue(':mod', $mod['id']); $query->bindvalue(':time', time()); $query->bindValue(':subject', $_POST['subject']); @@ -525,7 +527,7 @@ function mod_noticeboard($page_no = 1) { header('Location: ?/noticeboard#' . $pdo->lastInsertId(), true, $config['redirect_http']); } - $query = prepare("SELECT `noticeboard`.*, `username` FROM `noticeboard` LEFT JOIN `mods` ON `mods`.`id` = `mod` ORDER BY `id` DESC LIMIT :offset, :limit"); + $query = prepare("SELECT ``noticeboard``.*, `username` FROM ``noticeboard`` LEFT JOIN ``mods`` ON ``mods``.`id` = `mod` ORDER BY `id` DESC LIMIT :offset, :limit"); $query->bindValue(':limit', $config['mod']['noticeboard_page'], PDO::PARAM_INT); $query->bindValue(':offset', ($page_no - 1) * $config['mod']['noticeboard_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -534,7 +536,7 @@ function mod_noticeboard($page_no = 1) { if (empty($noticeboard) && $page_no > 1) error($config['error']['404']); - $query = prepare("SELECT COUNT(*) FROM `noticeboard`"); + $query = prepare("SELECT COUNT(*) FROM ``noticeboard``"); $query->execute() or error(db_error($query)); $count = $query->fetchColumn(); @@ -547,7 +549,7 @@ function mod_noticeboard_delete($id) { if (!hasPermission($config['mod']['noticeboard_delete'])) error($config['error']['noaccess']); - $query = prepare('DELETE FROM `noticeboard` WHERE `id` = :id'); + $query = prepare('DELETE FROM ``noticeboard`` WHERE `id` = :id'); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); @@ -572,7 +574,7 @@ function mod_news($page_no = 1) { $_POST['body'] = escape_markup_modifiers($_POST['body']); markup($_POST['body']); - $query = prepare('INSERT INTO `news` VALUES (NULL, :name, :time, :subject, :body)'); + $query = prepare('INSERT INTO ``news`` VALUES (NULL, :name, :time, :subject, :body)'); $query->bindValue(':name', isset($_POST['name']) && hasPermission($config['mod']['news_custom']) ? $_POST['name'] : $mod['username']); $query->bindvalue(':time', time()); $query->bindValue(':subject', $_POST['subject']); @@ -586,7 +588,7 @@ function mod_news($page_no = 1) { header('Location: ?/news#' . $pdo->lastInsertId(), true, $config['redirect_http']); } - $query = prepare("SELECT * FROM `news` ORDER BY `id` DESC LIMIT :offset, :limit"); + $query = prepare("SELECT * FROM ``news`` ORDER BY `id` DESC LIMIT :offset, :limit"); $query->bindValue(':limit', $config['mod']['news_page'], PDO::PARAM_INT); $query->bindValue(':offset', ($page_no - 1) * $config['mod']['news_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -595,7 +597,7 @@ function mod_news($page_no = 1) { if (empty($news) && $page_no > 1) error($config['error']['404']); - $query = prepare("SELECT COUNT(*) FROM `news`"); + $query = prepare("SELECT COUNT(*) FROM ``news``"); $query->execute() or error(db_error($query)); $count = $query->fetchColumn(); @@ -608,7 +610,7 @@ function mod_news_delete($id) { if (!hasPermission($config['mod']['news_delete'])) error($config['error']['noaccess']); - $query = prepare('DELETE FROM `news` WHERE `id` = :id'); + $query = prepare('DELETE FROM ``news`` WHERE `id` = :id'); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); @@ -626,7 +628,7 @@ function mod_log($page_no = 1) { if (!hasPermission($config['mod']['modlog'])) error($config['error']['noaccess']); - $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` ORDER BY `time` DESC LIMIT :offset, :limit"); + $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM ``modlogs`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` ORDER BY `time` DESC LIMIT :offset, :limit"); $query->bindValue(':limit', $config['mod']['modlog_page'], PDO::PARAM_INT); $query->bindValue(':offset', ($page_no - 1) * $config['mod']['modlog_page'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -635,7 +637,7 @@ function mod_log($page_no = 1) { if (empty($logs) && $page_no > 1) error($config['error']['404']); - $query = prepare("SELECT COUNT(*) FROM `modlogs`"); + $query = prepare("SELECT COUNT(*) FROM ``modlogs``"); $query->execute() or error(db_error($query)); $count = $query->fetchColumn(); @@ -651,7 +653,7 @@ function mod_user_log($username, $page_no = 1) { if (!hasPermission($config['mod']['modlog'])) error($config['error']['noaccess']); - $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `username` = :username ORDER BY `time` DESC LIMIT :offset, :limit"); + $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM ``modlogs`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `username` = :username ORDER BY `time` DESC LIMIT :offset, :limit"); $query->bindValue(':username', $username); $query->bindValue(':limit', $config['mod']['modlog_page'], PDO::PARAM_INT); $query->bindValue(':offset', ($page_no - 1) * $config['mod']['modlog_page'], PDO::PARAM_INT); @@ -661,7 +663,7 @@ function mod_user_log($username, $page_no = 1) { if (empty($logs) && $page_no > 1) error($config['error']['404']); - $query = prepare("SELECT COUNT(*) FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `username` = :username"); + $query = prepare("SELECT COUNT(*) FROM ``modlogs`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `username` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); $count = $query->fetchColumn(); @@ -707,7 +709,7 @@ function mod_ip_remove_note($ip, $id) { if (filter_var($ip, FILTER_VALIDATE_IP) === false) error("Invalid IP address."); - $query = prepare('DELETE FROM `ip_notes` WHERE `ip` = :ip AND `id` = :id'); + $query = prepare('DELETE FROM ``ip_notes`` WHERE `ip` = :ip AND `id` = :id'); $query->bindValue(':ip', $ip); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); @@ -741,7 +743,7 @@ function mod_page_ip($ip) { $_POST['note'] = escape_markup_modifiers($_POST['note']); markup($_POST['note']); - $query = prepare('INSERT INTO `ip_notes` VALUES (NULL, :ip, :mod, :time, :body)'); + $query = prepare('INSERT INTO ``ip_notes`` VALUES (NULL, :ip, :mod, :time, :body)'); $query->bindValue(':ip', $ip); $query->bindValue(':mod', $mod['id']); $query->bindValue(':time', time()); @@ -766,7 +768,7 @@ function mod_page_ip($ip) { openBoard($board['uri']); if (!hasPermission($config['mod']['show_ip'], $board['uri'])) continue; - $query = prepare(sprintf('SELECT * FROM `posts_%s` WHERE `ip` = :ip ORDER BY `sticky` DESC, `id` DESC LIMIT :limit', $board['uri'])); + $query = prepare(sprintf('SELECT * FROM ``posts_%s`` WHERE `ip` = :ip ORDER BY `sticky` DESC, `id` DESC LIMIT :limit', $board['uri'])); $query->bindValue(':ip', $ip); $query->bindValue(':limit', $config['mod']['ip_recentposts'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -798,21 +800,21 @@ function mod_page_ip($ip) { $args['token'] = make_secure_link_token('ban'); if (hasPermission($config['mod']['view_ban'])) { - $query = prepare("SELECT `bans`.*, `username` FROM `bans` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `ip` = :ip"); + $query = prepare("SELECT ``bans``.*, `username` FROM ``bans`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `ip` = :ip"); $query->bindValue(':ip', $ip); $query->execute() or error(db_error($query)); $args['bans'] = $query->fetchAll(PDO::FETCH_ASSOC); } if (hasPermission($config['mod']['view_notes'])) { - $query = prepare("SELECT `ip_notes`.*, `username` FROM `ip_notes` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `ip` = :ip"); + $query = prepare("SELECT ``ip_notes``.*, `username` FROM ``ip_notes`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `ip` = :ip"); $query->bindValue(':ip', $ip); $query->execute() or error(db_error($query)); $args['notes'] = $query->fetchAll(PDO::FETCH_ASSOC); } if (hasPermission($config['mod']['modlog_ip'])) { - $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `text` LIKE :search ORDER BY `time` DESC LIMIT 20"); + $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM ``modlogs`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `text` LIKE :search ORDER BY `time` DESC LIMIT 20"); $query->bindValue(':search', '%' . $ip . '%'); $query->execute() or error(db_error($query)); $args['logs'] = $query->fetchAll(PDO::FETCH_ASSOC); @@ -865,7 +867,7 @@ function mod_bans($page_no = 1) { if (isset($config['mod']['unban_limit'])){ if (count($unban) <= $config['mod']['unban_limit'] || $config['mod']['unban_limit'] == -1){ if (!empty($unban)) { - query('DELETE FROM `bans` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error()); + query('DELETE FROM ``bans`` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error()); foreach ($unban as $id) { modLog("Removed ban #{$id}"); @@ -878,7 +880,7 @@ function mod_bans($page_no = 1) { } else { if (!empty($unban)) { - query('DELETE FROM `bans` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error()); + query('DELETE FROM ``bans`` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error()); foreach ($unban as $id) { modLog("Removed ban #{$id}"); @@ -890,10 +892,10 @@ function mod_bans($page_no = 1) { } if ($config['mod']['view_banexpired']) { - $query = prepare("SELECT `bans`.*, `username` FROM `bans` LEFT JOIN `mods` ON `mod` = `mods`.`id` ORDER BY (`expires` IS NOT NULL AND `expires` < :time), `set` DESC LIMIT :offset, :limit"); + $query = prepare("SELECT ``bans``.*, `username` FROM ``bans`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` ORDER BY (`expires` IS NOT NULL AND `expires` < :time), `set` DESC LIMIT :offset, :limit"); } else { // Filter out expired bans - $query = prepare("SELECT `bans`.*, `username` FROM `bans` INNER JOIN `mods` ON `mod` = `mods`.`id` WHERE `expires` = 0 OR `expires` > :time ORDER BY `set` DESC LIMIT :offset, :limit"); + $query = prepare("SELECT ``bans``.*, `username` FROM ``bans`` INNER JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `expires` = 0 OR `expires` > :time ORDER BY `set` DESC LIMIT :offset, :limit"); } $query->bindValue(':time', time(), PDO::PARAM_INT); $query->bindValue(':limit', $config['mod']['banlist_page'], PDO::PARAM_INT); @@ -904,7 +906,7 @@ function mod_bans($page_no = 1) { if (empty($bans) && $page_no > 1) error($config['error']['404']); - $query = prepare("SELECT COUNT(*) FROM `bans`"); + $query = prepare("SELECT COUNT(*) FROM ``bans``"); $query->execute() or error(db_error($query)); $count = $query->fetchColumn(); @@ -926,7 +928,7 @@ function mod_lock($board, $unlock, $post) { if (!hasPermission($config['mod']['lock'], $board)) error($config['error']['noaccess']); - $query = prepare(sprintf('UPDATE `posts_%s` SET `locked` = :locked WHERE `id` = :id AND `thread` IS NULL', $board)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `locked` = :locked WHERE `id` = :id AND `thread` IS NULL', $board)); $query->bindValue(':id', $post); $query->bindValue(':locked', $unlock ? 0 : 1); $query->execute() or error(db_error($query)); @@ -937,7 +939,7 @@ function mod_lock($board, $unlock, $post) { } if ($config['mod']['dismiss_reports_on_lock']) { - $query = prepare('DELETE FROM `reports` WHERE `board` = :board AND `post` = :id'); + $query = prepare('DELETE FROM ``reports`` WHERE `board` = :board AND `post` = :id'); $query->bindValue(':board', $board); $query->bindValue(':id', $post); $query->execute() or error(db_error($query)); @@ -960,7 +962,7 @@ function mod_sticky($board, $unsticky, $post) { if (!hasPermission($config['mod']['sticky'], $board)) error($config['error']['noaccess']); - $query = prepare(sprintf('UPDATE `posts_%s` SET `sticky` = :sticky WHERE `id` = :id AND `thread` IS NULL', $board)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `sticky` = :sticky WHERE `id` = :id AND `thread` IS NULL', $board)); $query->bindValue(':id', $post); $query->bindValue(':sticky', $unsticky ? 0 : 1); $query->execute() or error(db_error($query)); @@ -982,7 +984,7 @@ function mod_bumplock($board, $unbumplock, $post) { if (!hasPermission($config['mod']['bumplock'], $board)) error($config['error']['noaccess']); - $query = prepare(sprintf('UPDATE `posts_%s` SET `sage` = :bumplock WHERE `id` = :id AND `thread` IS NULL', $board)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `sage` = :bumplock WHERE `id` = :id AND `thread` IS NULL', $board)); $query->bindValue(':id', $post); $query->bindValue(':bumplock', $unbumplock ? 0 : 1); $query->execute() or error(db_error($query)); @@ -1004,7 +1006,7 @@ function mod_move($originBoard, $postID) { if (!hasPermission($config['mod']['move'], $originBoard)) error($config['error']['noaccess']); - $query = prepare(sprintf('SELECT * FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL', $originBoard)); + $query = prepare(sprintf('SELECT * FROM ``posts_%s`` WHERE `id` = :id AND `thread` IS NULL', $originBoard)); $query->bindValue(':id', $postID); $query->execute() or error(db_error($query)); if (!$post = $query->fetch(PDO::FETCH_ASSOC)) @@ -1052,7 +1054,7 @@ function mod_move($originBoard, $postID) { // go back to the original board to fetch replies openBoard($originBoard); - $query = prepare(sprintf('SELECT * FROM `posts_%s` WHERE `thread` = :id ORDER BY `id`', $originBoard)); + $query = prepare(sprintf('SELECT * FROM ``posts_%s`` WHERE `thread` = :id ORDER BY `id`', $originBoard)); $query->bindValue(':id', $postID, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -1081,7 +1083,7 @@ function mod_move($originBoard, $postID) { openBoard($targetBoard); foreach ($replies as &$post) { - $query = prepare('SELECT `target` FROM `cites` WHERE `target_board` = :board AND `board` = :board AND `post` = :post'); + $query = prepare('SELECT `target` FROM ``cites`` WHERE `target_board` = :board AND `board` = :board AND `post` = :post'); $query->bindValue(':board', $originBoard); $query->bindValue(':post', $post['id'], PDO::PARAM_INT); $query->execute() or error(db_error($qurey)); @@ -1113,7 +1115,7 @@ function mod_move($originBoard, $postID) { } foreach ($post['tracked_cites'] as $cite) { - $query = prepare('INSERT INTO `cites` VALUES (:board, :post, :target_board, :target)'); + $query = prepare('INSERT INTO ``cites`` VALUES (:board, :post, :target_board, :target)'); $query->bindValue(':board', $board['uri']); $query->bindValue(':post', $newPostID, PDO::PARAM_INT); $query->bindValue(':target_board',$cite[0]); @@ -1138,7 +1140,7 @@ function mod_move($originBoard, $postID) { if ($shadow) { // lock old thread - $query = prepare(sprintf('UPDATE `posts_%s` SET `locked` = 1 WHERE `id` = :id', $originBoard)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `locked` = 1 WHERE `id` = :id', $originBoard)); $query->bindValue(':id', $postID, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -1197,7 +1199,7 @@ function mod_ban_post($board, $delete, $post, $token = false) { $security_token = make_secure_link_token($board . '/ban/' . $post); - $query = prepare(sprintf('SELECT `ip`, `thread` FROM `posts_%s` WHERE `id` = :id', $board)); + $query = prepare(sprintf('SELECT `ip`, `thread` FROM ``posts_%s`` WHERE `id` = :id', $board)); $query->bindValue(':id', $post); $query->execute() or error(db_error($query)); if (!$_post = $query->fetch(PDO::FETCH_ASSOC)) @@ -1220,7 +1222,7 @@ function mod_ban_post($board, $delete, $post, $token = false) { $_POST['message'] = preg_replace('/[\r\n]/', '', $_POST['message']); $_POST['message'] = str_replace('%length%', $length_english, $_POST['message']); $_POST['message'] = str_replace('%LENGTH%', strtoupper($length_english), $_POST['message']); - $query = prepare(sprintf('UPDATE `posts_%s` SET `body_nomarkup` = CONCAT(`body_nomarkup`, :body_nomarkup) WHERE `id` = :id', $board)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `body_nomarkup` = CONCAT(`body_nomarkup`, :body_nomarkup) WHERE `id` = :id', $board)); $query->bindValue(':id', $post); $query->bindValue(':body_nomarkup', sprintf("\n%s", utf8tohtml($_POST['message']))); $query->execute() or error(db_error($query)); @@ -1267,7 +1269,7 @@ function mod_edit_post($board, $edit_raw_html, $postID) { $security_token = make_secure_link_token($board . '/edit' . ($edit_raw_html ? '_raw' : '') . '/' . $postID); - $query = prepare(sprintf('SELECT * FROM `posts_%s` WHERE `id` = :id', $board)); + $query = prepare(sprintf('SELECT * FROM ``posts_%s`` WHERE `id` = :id', $board)); $query->bindValue(':id', $postID); $query->execute() or error(db_error($query)); @@ -1276,9 +1278,9 @@ function mod_edit_post($board, $edit_raw_html, $postID) { if (isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['body'])) { if ($edit_raw_html) - $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body` = :body, `body_nomarkup` = :body_nomarkup WHERE `id` = :id', $board)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `name` = :name, `email` = :email, `subject` = :subject, `body` = :body, `body_nomarkup` = :body_nomarkup WHERE `id` = :id', $board)); else - $query = prepare(sprintf('UPDATE `posts_%s` SET `name` = :name, `email` = :email, `subject` = :subject, `body_nomarkup` = :body WHERE `id` = :id', $board)); + $query = prepare(sprintf('UPDATE ``posts_%s`` SET `name` = :name, `email` = :email, `subject` = :subject, `body_nomarkup` = :body WHERE `id` = :id', $board)); $query->bindValue(':id', $postID); $query->bindValue('name', $_POST['name']); $query->bindValue(':email', $_POST['email']); @@ -1369,7 +1371,7 @@ function mod_deletebyip($boardName, $post, $global = false) { error($config['error']['noaccess']); // Find IP address - $query = prepare(sprintf('SELECT `ip` FROM `posts_%s` WHERE `id` = :id', $boardName)); + $query = prepare(sprintf('SELECT `ip` FROM ``posts_%s`` WHERE `id` = :id', $boardName)); $query->bindValue(':id', $post); $query->execute() or error(db_error($query)); if (!$ip = $query->fetchColumn()) @@ -1379,7 +1381,7 @@ function mod_deletebyip($boardName, $post, $global = false) { $query = ''; foreach ($boards as $_board) { - $query .= sprintf("SELECT `thread`, `id`, '%s' AS `board` FROM `posts_%s` WHERE `ip` = :ip UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT `thread`, `id`, '%s' AS `board` FROM ``posts_%s`` WHERE `ip` = :ip UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', '', $query); @@ -1431,7 +1433,7 @@ function mod_user($uid) { if (!hasPermission($config['mod']['editusers']) && !(hasPermission($config['mod']['change_password']) && $uid == $mod['id'])) error($config['error']['noaccess']); - $query = prepare('SELECT * FROM `mods` WHERE `id` = :id'); + $query = prepare('SELECT * FROM ``mods`` WHERE `id` = :id'); $query->bindValue(':id', $uid); $query->execute() or error(db_error($query)); if (!$user = $query->fetch(PDO::FETCH_ASSOC)) @@ -1457,7 +1459,7 @@ function mod_user($uid) { if (!hasPermission($config['mod']['deleteusers'])) error($config['error']['noaccess']); - $query = prepare('DELETE FROM `mods` WHERE `id` = :id'); + $query = prepare('DELETE FROM ``mods`` WHERE `id` = :id'); $query->bindValue(':id', $uid); $query->execute() or error(db_error($query)); @@ -1471,7 +1473,7 @@ function mod_user($uid) { if ($_POST['username'] == '') error(sprintf($config['error']['required'], 'username')); - $query = prepare('UPDATE `mods` SET `username` = :username, `boards` = :boards WHERE `id` = :id'); + $query = prepare('UPDATE ``mods`` SET `username` = :username, `boards` = :boards WHERE `id` = :id'); $query->bindValue(':id', $uid); $query->bindValue(':username', $_POST['username']); $query->bindValue(':boards', implode(',', $boards)); @@ -1486,7 +1488,7 @@ function mod_user($uid) { $salt = generate_salt(); $password = hash('sha256', $salt . sha1($_POST['password'])); - $query = prepare('UPDATE `mods` SET `password` = :password, `salt` = :salt WHERE `id` = :id'); + $query = prepare('UPDATE ``mods`` SET `password` = :password, `salt` = :salt WHERE `id` = :id'); $query->bindValue(':id', $uid); $query->bindValue(':password', $password); $query->bindValue(':salt', $salt); @@ -1513,7 +1515,7 @@ function mod_user($uid) { $salt = generate_salt(); $password = hash('sha256', $salt . sha1($_POST['password'])); - $query = prepare('UPDATE `mods` SET `password` = :password, `salt` = :salt WHERE `id` = :id'); + $query = prepare('UPDATE ``mods`` SET `password` = :password, `salt` = :salt WHERE `id` = :id'); $query->bindValue(':id', $uid); $query->bindValue(':password', $password); $query->bindValue(':salt', $salt); @@ -1534,7 +1536,7 @@ function mod_user($uid) { } if (hasPermission($config['mod']['modlog'])) { - $query = prepare('SELECT * FROM `modlogs` WHERE `mod` = :id ORDER BY `time` DESC LIMIT 5'); + $query = prepare('SELECT * FROM ``modlogs`` WHERE `mod` = :id ORDER BY `time` DESC LIMIT 5'); $query->bindValue(':id', $uid); $query->execute() or error(db_error($query)); $log = $query->fetchAll(PDO::FETCH_ASSOC); @@ -1581,7 +1583,7 @@ function mod_user_new() { $salt = generate_salt(); $password = hash('sha256', $salt . sha1($_POST['password'])); - $query = prepare('INSERT INTO `mods` VALUES (NULL, :username, :password, :salt, :type, :boards)'); + $query = prepare('INSERT INTO ``mods`` VALUES (NULL, :username, :password, :salt, :type, :boards)'); $query->bindValue(':username', $_POST['username']); $query->bindValue(':password', $password); $query->bindValue(':salt', $salt); @@ -1607,7 +1609,7 @@ function mod_users() { if (!hasPermission($config['mod']['manageusers'])) error($config['error']['noaccess']); - $query = query("SELECT *, (SELECT `time` FROM `modlogs` WHERE `mod` = `id` ORDER BY `time` DESC LIMIT 1) AS `last`, (SELECT `text` FROM `modlogs` WHERE `mod` = `id` ORDER BY `time` DESC LIMIT 1) AS `action` FROM `mods` ORDER BY `type` DESC,`id`") or error(db_error()); + $query = query("SELECT *, (SELECT `time` FROM ``modlogs`` WHERE `mod` = `id` ORDER BY `time` DESC LIMIT 1) AS `last`, (SELECT `text` FROM ``modlogs`` WHERE `mod` = `id` ORDER BY `time` DESC LIMIT 1) AS `action` FROM ``mods`` ORDER BY `type` DESC,`id`") or error(db_error()); $users = $query->fetchAll(PDO::FETCH_ASSOC); mod_page(sprintf('%s (%d)', _('Manage users'), count($users)), 'mod/users.html', array('users' => $users)); @@ -1619,7 +1621,7 @@ function mod_user_promote($uid, $action) { if (!hasPermission($config['mod']['promoteusers'])) error($config['error']['noaccess']); - $query = prepare("UPDATE `mods` SET `type` = `type` " . ($action == 'promote' ? "+1 WHERE `type` < " . (int)ADMIN : "-1 WHERE `type` > " . (int)JANITOR) . " AND `id` = :id"); + $query = prepare("UPDATE ``mods`` SET `type` = `type` " . ($action == 'promote' ? "+1 WHERE `type` < " . (int)ADMIN : "-1 WHERE `type` > " . (int)JANITOR) . " AND `id` = :id"); $query->bindValue(':id', $uid); $query->execute() or error(db_error($query)); @@ -1634,7 +1636,7 @@ function mod_pm($id, $reply = false) { if ($reply && !hasPermission($config['mod']['create_pm'])) error($config['error']['noaccess']); - $query = prepare("SELECT `mods`.`username`, `mods_to`.`username` AS `to_username`, `pms`.* FROM `pms` LEFT JOIN `mods` ON `mods`.`id` = `sender` LEFT JOIN `mods` AS `mods_to` ON `mods_to`.`id` = `to` WHERE `pms`.`id` = :id"); + $query = prepare("SELECT ``mods``.`username`, `mods_to`.`username` AS `to_username`, ``pms``.* FROM ``pms`` LEFT JOIN ``mods`` ON ``mods``.`id` = `sender` LEFT JOIN ``mods`` AS `mods_to` ON `mods_to`.`id` = `to` WHERE ``pms``.`id` = :id"); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); @@ -1642,7 +1644,7 @@ function mod_pm($id, $reply = false) { error($config['error']['404']); if (isset($_POST['delete'])) { - $query = prepare("DELETE FROM `pms` WHERE `id` = :id"); + $query = prepare("DELETE FROM ``pms`` WHERE `id` = :id"); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); @@ -1656,7 +1658,7 @@ function mod_pm($id, $reply = false) { } if ($pm['unread'] && $pm['to'] == $mod['id']) { - $query = prepare("UPDATE `pms` SET `unread` = 0 WHERE `id` = :id"); + $query = prepare("UPDATE ``pms`` SET `unread` = 0 WHERE `id` = :id"); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); @@ -1683,12 +1685,12 @@ function mod_pm($id, $reply = false) { function mod_inbox() { global $config, $mod; - $query = prepare('SELECT `unread`,`pms`.`id`, `time`, `sender`, `to`, `message`, `username` FROM `pms` LEFT JOIN `mods` ON `mods`.`id` = `sender` WHERE `to` = :mod ORDER BY `unread` DESC, `time` DESC'); + $query = prepare('SELECT `unread`,``pms``.`id`, `time`, `sender`, `to`, `message`, `username` FROM ``pms`` LEFT JOIN ``mods`` ON ``mods``.`id` = `sender` WHERE `to` = :mod ORDER BY `unread` DESC, `time` DESC'); $query->bindValue(':mod', $mod['id']); $query->execute() or error(db_error($query)); $messages = $query->fetchAll(PDO::FETCH_ASSOC); - $query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :mod AND `unread` = 1'); + $query = prepare('SELECT COUNT(*) FROM ``pms`` WHERE `to` = :mod AND `unread` = 1'); $query->bindValue(':mod', $mod['id']); $query->execute() or error(db_error($query)); $unread = $query->fetchColumn(); @@ -1710,12 +1712,12 @@ function mod_new_pm($username) { if (!hasPermission($config['mod']['create_pm'])) error($config['error']['noaccess']); - $query = prepare("SELECT `id` FROM `mods` WHERE `username` = :username"); + $query = prepare("SELECT `id` FROM ``mods`` WHERE `username` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); if (!$id = $query->fetchColumn()) { // Old style ?/PM: by user ID - $query = prepare("SELECT `username` FROM `mods` WHERE `id` = :username"); + $query = prepare("SELECT `username` FROM ``mods`` WHERE `id` = :username"); $query->bindValue(':username', $username); $query->execute() or error(db_error($query)); if ($username = $query->fetchColumn()) @@ -1728,7 +1730,7 @@ function mod_new_pm($username) { $_POST['message'] = escape_markup_modifiers($_POST['message']); markup($_POST['message']); - $query = prepare("INSERT INTO `pms` VALUES (NULL, :me, :id, :message, :time, 1)"); + $query = prepare("INSERT INTO ``pms`` VALUES (NULL, :me, :id, :message, :time, 1)"); $query->bindValue(':me', $mod['id']); $query->bindValue(':id', $id); $query->bindValue(':message', $_POST['message']); @@ -1801,7 +1803,7 @@ function mod_rebuild() { } if (isset($_POST['rebuild_thread'])) { - $query = query(sprintf("SELECT `id` FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); + $query = query(sprintf("SELECT `id` FROM ``posts_%s`` WHERE `thread` IS NULL", $board['uri'])) or error(db_error()); while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $log[] = '' . sprintf($config['board_abbreviation'], $board['uri']) . ': Rebuilding thread #' . $post['id']; buildThread($post['id']); @@ -1822,7 +1824,7 @@ function mod_reports() { if (!hasPermission($config['mod']['reports'])) error($config['error']['noaccess']); - $query = prepare("SELECT * FROM `reports` ORDER BY `time` DESC LIMIT :limit"); + $query = prepare("SELECT * FROM ``reports`` ORDER BY `time` DESC LIMIT :limit"); $query->bindValue(':limit', $config['mod']['recent_reports'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); $reports = $query->fetchAll(PDO::FETCH_ASSOC); @@ -1838,7 +1840,7 @@ function mod_reports() { foreach ($report_queries as $board => $posts) { $report_posts[$board] = array(); - $query = query(sprintf('SELECT * FROM `posts_%s` WHERE `id` = ' . implode(' OR `id` = ', $posts), $board)) or error(db_error()); + $query = query(sprintf('SELECT * FROM ``posts_%s`` WHERE `id` = ' . implode(' OR `id` = ', $posts), $board)) or error(db_error()); while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $report_posts[$board][$post['id']] = $post; } @@ -1849,7 +1851,7 @@ function mod_reports() { foreach ($reports as $report) { if (!isset($report_posts[$report['board']][$report['post']])) { // // Invalid report (post has since been deleted) - $query = prepare("DELETE FROM `reports` WHERE `post` = :id AND `board` = :board"); + $query = prepare("DELETE FROM ``reports`` WHERE `post` = :id AND `board` = :board"); $query->bindValue(':id', $report['post'], PDO::PARAM_INT); $query->bindValue(':board', $report['board']); $query->execute() or error(db_error($query)); @@ -1905,7 +1907,7 @@ function mod_reports() { function mod_report_dismiss($id, $all = false) { global $config; - $query = prepare("SELECT `post`, `board`, `ip` FROM `reports` WHERE `id` = :id"); + $query = prepare("SELECT `post`, `board`, `ip` FROM ``reports`` WHERE `id` = :id"); $query->bindValue(':id', $id); $query->execute() or error(db_error($query)); if ($report = $query->fetch(PDO::FETCH_ASSOC)) { @@ -1922,10 +1924,10 @@ function mod_report_dismiss($id, $all = false) { error($config['error']['noaccess']); if ($all) { - $query = prepare("DELETE FROM `reports` WHERE `ip` = :ip"); + $query = prepare("DELETE FROM ``reports`` WHERE `ip` = :ip"); $query->bindValue(':ip', $ip); } else { - $query = prepare("DELETE FROM `reports` WHERE `id` = :id"); + $query = prepare("DELETE FROM ``reports`` WHERE `id` = :id"); $query->bindValue(':id', $id); } $query->execute() or error(db_error($query)); @@ -2035,7 +2037,7 @@ function mod_themes_list() { if (!$dir = opendir($config['dir']['themes'])) error(_('Cannot open themes directory; check permissions.')); - $query = query('SELECT `theme` FROM `theme_settings` WHERE `name` IS NULL AND `value` IS NULL') or error(db_error()); + $query = query('SELECT `theme` FROM ``theme_settings`` WHERE `name` IS NULL AND `value` IS NULL') or error(db_error()); $themes_in_use = $query->fetchAll(PDO::FETCH_COLUMN); // Scan directory for themes @@ -2071,19 +2073,19 @@ function mod_theme_configure($theme_name) { } // Clear previous settings - $query = prepare("DELETE FROM `theme_settings` WHERE `theme` = :theme"); + $query = prepare("DELETE FROM ``theme_settings`` WHERE `theme` = :theme"); $query->bindValue(':theme', $theme_name); $query->execute() or error(db_error($query)); foreach ($theme['config'] as &$conf) { - $query = prepare("INSERT INTO `theme_settings` VALUES(:theme, :name, :value)"); + $query = prepare("INSERT INTO ``theme_settings`` VALUES(:theme, :name, :value)"); $query->bindValue(':theme', $theme_name); $query->bindValue(':name', $conf['name']); $query->bindValue(':value', $_POST[$conf['name']]); $query->execute() or error(db_error($query)); } - $query = prepare("INSERT INTO `theme_settings` VALUES(:theme, NULL, NULL)"); + $query = prepare("INSERT INTO ``theme_settings`` VALUES(:theme, NULL, NULL)"); $query->bindValue(':theme', $theme_name); $query->execute() or error(db_error($query)); @@ -2101,7 +2103,7 @@ function mod_theme_configure($theme_name) { if (!$result) { // Install failed - $query = prepare("DELETE FROM `theme_settings` WHERE `theme` = :theme"); + $query = prepare("DELETE FROM ``theme_settings`` WHERE `theme` = :theme"); $query->bindValue(':theme', $theme_name); $query->execute() or error(db_error($query)); } @@ -2133,7 +2135,7 @@ function mod_theme_uninstall($theme_name) { if (!hasPermission($config['mod']['themes'])) error($config['error']['noaccess']); - $query = prepare("DELETE FROM `theme_settings` WHERE `theme` = :theme"); + $query = prepare("DELETE FROM ``theme_settings`` WHERE `theme` = :theme"); $query->bindValue(':theme', $theme_name); $query->execute() or error(db_error($query)); @@ -2164,7 +2166,7 @@ function mod_debug_antispam() { $where .= ' AND `thread` = ' . $pdo->quote($_POST['thread']); if (isset($_POST['purge'])) { - $query = prepare(', DATE `antispam` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE' . $where); + $query = prepare(', DATE ``antispam`` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE' . $where); $query->bindValue(':expires', $config['spam']['hidden_inputs_expire']); $query->execute() or error(db_error()); } @@ -2175,16 +2177,16 @@ function mod_debug_antispam() { $where = ''; } - $query = query('SELECT COUNT(*) FROM `antispam`' . ($where ? " WHERE $where" : '')) or error(db_error()); + $query = query('SELECT COUNT(*) FROM ``antispam``' . ($where ? " WHERE $where" : '')) or error(db_error()); $args['total'] = number_format($query->fetchColumn()); - $query = query('SELECT COUNT(*) FROM `antispam` WHERE `expires` IS NOT NULL' . ($where ? " AND $where" : '')) or error(db_error()); + $query = query('SELECT COUNT(*) FROM ``antispam`` WHERE `expires` IS NOT NULL' . ($where ? " AND $where" : '')) or error(db_error()); $args['expiring'] = number_format($query->fetchColumn()); - $query = query('SELECT * FROM `antispam` ' . ($where ? "WHERE $where" : '') . ' ORDER BY `passed` DESC LIMIT 40') or error(db_error()); + $query = query('SELECT * FROM ``antispam`` ' . ($where ? "WHERE $where" : '') . ' ORDER BY `passed` DESC LIMIT 40') or error(db_error()); $args['top'] = $query->fetchAll(PDO::FETCH_ASSOC); - $query = query('SELECT * FROM `antispam` ' . ($where ? "WHERE $where" : '') . ' ORDER BY `created` DESC LIMIT 20') or error(db_error()); + $query = query('SELECT * FROM ``antispam`` ' . ($where ? "WHERE $where" : '') . ' ORDER BY `created` DESC LIMIT 20') or error(db_error()); $args['recent'] = $query->fetchAll(PDO::FETCH_ASSOC); mod_page(_('Debug: Anti-spam'), 'mod/debug/antispam.html', $args); @@ -2200,7 +2202,7 @@ function mod_debug_recent_posts() { // Manually build an SQL query $query = 'SELECT * FROM ('; foreach ($boards as $board) { - $query .= sprintf('SELECT *, %s AS `board` FROM `posts_%s` UNION ALL ', $pdo->quote($board['uri']), $board['uri']); + $query .= sprintf('SELECT *, %s AS `board` FROM ``posts_%s`` UNION ALL ', $pdo->quote($board['uri']), $board['uri']); } // Remove the last "UNION ALL" seperator and complete the query $query = preg_replace('/UNION ALL $/', ') AS `all_posts` ORDER BY `time` DESC LIMIT ' . $limit, $query); diff --git a/install.php b/install.php index 847876ab..2f51b22f 100644 --- a/install.php +++ b/install.php @@ -501,6 +501,9 @@ if ($step == 0) { + + + @@ -668,7 +671,8 @@ if ($step == 0) { $queries[] = Element('posts.sql', array('board' => 'b')); $sql_errors = ''; - foreach ($queries as &$query) { + foreach ($queries as $query) { + $query = preg_replace('/^([\w\s]*)`([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)`/u', '$1``$2``', $query); if (!query($query)) $sql_errors .= '
  • ' . db_error() . '
  • '; } diff --git a/post.php b/post.php index f4499845..22782ca7 100644 --- a/post.php +++ b/post.php @@ -48,7 +48,7 @@ if (isset($_POST['delete'])) { error($config['error']['nodelete']); foreach ($delete as &$id) { - $query = prepare(sprintf("SELECT `thread`, `time`,`password` FROM `posts_%s` WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("SELECT `thread`, `time`,`password` FROM ``posts_%s`` WHERE `id` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -111,7 +111,7 @@ if (isset($_POST['delete'])) { markup($reason); foreach ($report as &$id) { - $query = prepare(sprintf("SELECT `thread` FROM `posts_%s` WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("SELECT `thread` FROM ``posts_%s`` WHERE `id` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); @@ -123,7 +123,7 @@ if (isset($_POST['delete'])) { '/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $thread ? $thread : $id) . ($thread ? '#' . $id : '') . ' for "' . $reason . '"' ); - $query = prepare("INSERT INTO `reports` VALUES (NULL, :time, :ip, :board, :post, :reason)"); + $query = prepare("INSERT INTO ``reports`` VALUES (NULL, :time, :ip, :board, :post, :reason)"); $query->bindValue(':time', time(), PDO::PARAM_INT); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR); $query->bindValue(':board', $board['uri'], PDO::PARAM_INT); @@ -227,7 +227,7 @@ if (isset($_POST['delete'])) { //Check if thread exists if (!$post['op']) { - $query = prepare(sprintf("SELECT `sticky`,`locked`,`sage` FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `sticky`,`locked`,`sage` FROM ``posts_%s`` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); $query->bindValue(':id', $post['thread'], PDO::PARAM_INT); $query->execute() or error(db_error()); @@ -583,7 +583,7 @@ if (isset($_POST['delete'])) { if (isset($post['tracked_cites'])) { foreach ($post['tracked_cites'] as $cite) { - $query = prepare('INSERT INTO `cites` VALUES (:board, :post, :target_board, :target)'); + $query = prepare('INSERT INTO ``cites`` VALUES (:board, :post, :target_board, :target)'); $query->bindValue(':board', $board['uri']); $query->bindValue(':post', $id, PDO::PARAM_INT); $query->bindValue(':target_board',$cite[0]); diff --git a/templates/posts.sql b/templates/posts.sql index 698fad77..ca2ec304 100644 --- a/templates/posts.sql +++ b/templates/posts.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS `posts_{{ board }}` ( +CREATE TABLE IF NOT EXISTS ``posts_{{ board }}`` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `thread` int(11) DEFAULT NULL, `subject` varchar(100) DEFAULT NULL, diff --git a/templates/themes/basic/theme.php b/templates/themes/basic/theme.php index 7ba0d1e7..6ba09ce6 100644 --- a/templates/themes/basic/theme.php +++ b/templates/themes/basic/theme.php @@ -25,7 +25,7 @@ $settings['no_recent'] = (int) $settings['no_recent']; - $query = query("SELECT * FROM `news` ORDER BY `time` DESC" . ($settings['no_recent'] ? ' LIMIT ' . $settings['no_recent'] : '')) or error(db_error()); + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC" . ($settings['no_recent'] ? ' LIMIT ' . $settings['no_recent'] : '')) or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/basic/index.html', Array( diff --git a/templates/themes/catalog/theme.php b/templates/themes/catalog/theme.php index 5c9f6769..4e2d40db 100644 --- a/templates/themes/catalog/theme.php +++ b/templates/themes/catalog/theme.php @@ -37,7 +37,7 @@ $recent_posts = array(); $stats = array(); - $query = query(sprintf("SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM `posts_%s` WHERE `thread` IS NULL ORDER BY `bump` DESC", $board_name, $board_name, $board_name)) or error(db_error()); + $query = query(sprintf("SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM ``posts_%s`` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM ``posts_%s`` WHERE `thread` IS NULL ORDER BY `bump` DESC", $board_name, $board_name, $board_name)) or error(db_error()); while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])); diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index 7d468d0d..74ed61ed 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -36,7 +36,7 @@ public static function news($settings) { global $config; - $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/categories/news.html', Array( diff --git a/templates/themes/frameset/theme.php b/templates/themes/frameset/theme.php index 5fd9d29e..ffab0538 100644 --- a/templates/themes/frameset/theme.php +++ b/templates/themes/frameset/theme.php @@ -36,7 +36,7 @@ public static function news($settings) { global $config; - $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/frameset/news.html', Array( diff --git a/templates/themes/recent/theme.php b/templates/themes/recent/theme.php index 98fabfa1..08d910f8 100644 --- a/templates/themes/recent/theme.php +++ b/templates/themes/recent/theme.php @@ -42,7 +42,7 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE `file` IS NOT NULL AND `file` != 'deleted' AND `thumb` != 'spoiler' UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` WHERE `file` IS NOT NULL AND `file` != 'deleted' AND `thumb` != 'spoiler' UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_images'], $query); $query = query($query) or error(db_error()); @@ -62,7 +62,7 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_posts'], $query); $query = query($query) or error(db_error()); @@ -82,7 +82,7 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT MAX(`id`) AS `top` FROM `posts_%s` UNION ALL ", $_board['uri']); + $query .= sprintf("SELECT MAX(`id`) AS `top` FROM ``posts_%s`` UNION ALL ", $_board['uri']); } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); @@ -93,7 +93,7 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT `ip` FROM `posts_%s` UNION ALL ", $_board['uri']); + $query .= sprintf("SELECT `ip` FROM ``posts_%s`` UNION ALL ", $_board['uri']); } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); @@ -104,7 +104,7 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT `filesize` FROM `posts_%s` UNION ALL ", $_board['uri']); + $query .= sprintf("SELECT `filesize` FROM ``posts_%s`` UNION ALL ", $_board['uri']); } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); diff --git a/templates/themes/rrdtool/theme.php b/templates/themes/rrdtool/theme.php index 0e0a2f15..a14169a3 100644 --- a/templates/themes/rrdtool/theme.php +++ b/templates/themes/rrdtool/theme.php @@ -61,7 +61,7 @@ // debug just the graphing (not updating) with the --debug switch if (!isset($argv[1]) || $argv[1] != '--debug') { // Update graph - $query = query(sprintf("SELECT MAX(`id`) FROM `posts_%s`", $board)); + $query = query(sprintf("SELECT MAX(`id`) FROM ``posts_%s``", $board)); $count = $query->fetchColumn(); if (!rrd_update($file, Array( diff --git a/templates/themes/sitemap/theme.php b/templates/themes/sitemap/theme.php index e210316b..226f8357 100644 --- a/templates/themes/sitemap/theme.php +++ b/templates/themes/sitemap/theme.php @@ -19,7 +19,7 @@ $threads = array(); foreach ($boards as $board) { - $query = query(sprintf("SELECT `id` AS `thread_id`, (SELECT `time` FROM `posts_%s` WHERE `thread` = `thread_id` OR `id` = `thread_id` ORDER BY `time` DESC LIMIT 1) AS `lastmod` FROM `posts_%s` WHERE `thread` IS NULL", $board, $board)) or error(db_error()); + $query = query(sprintf("SELECT `id` AS `thread_id`, (SELECT `time` FROM ``posts_%s`` WHERE `thread` = `thread_id` OR `id` = `thread_id` ORDER BY `time` DESC LIMIT 1) AS `lastmod` FROM ``posts_%s`` WHERE `thread` IS NULL", $board, $board)) or error(db_error()); $threads[$board] = $query->fetchAll(PDO::FETCH_ASSOC); } From 5bf0e7f7e76cd3610e0aa692e0c433aca594ee51 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Thu, 1 Aug 2013 00:27:54 -0400 Subject: [PATCH 161/289] Better/fixed jQuery styling and slightly improved js/inline-expanding.js accuracy (when jQuery is enabled) --- js/inline-expanding.js | 3 +++ templates/header.html | 30 ++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/js/inline-expanding.js b/js/inline-expanding.js index e529a395..61085b0d 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -17,6 +17,9 @@ onready(function(){ for (var i = 0; i < link.length; i++) { if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') { + if (window.jQuery && !$(link).prev().hasClass('fileinfo')) { + continue; + } link[i].childNodes[0].style.maxWidth = '95%'; link[i].onclick = function(e) { if (this.childNodes[0].className == 'hidden') diff --git a/templates/header.html b/templates/header.html index 3791296f..c1230f0e 100644 --- a/templates/header.html +++ b/templates/header.html @@ -13,17 +13,31 @@ {% endif %} {% endif %} {% if config.recaptcha %}{% endif %} \ No newline at end of file From 94468c430cf4c3edc93b265eeb900a0afa8f75a2 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Thu, 1 Aug 2013 00:52:49 -0400 Subject: [PATCH 162/289] Small install fix --- install.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.php b/install.php index 2f51b22f..6bb161dc 100644 --- a/install.php +++ b/install.php @@ -501,8 +501,8 @@ if ($step == 0) { - - + + From 38cc2d77f8cb68973ca52a1ce7d619ded64e83c5 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 01:16:12 -0400 Subject: [PATCH 163/289] toggle-images.js: javascript i18n --- js/toggle-images.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/toggle-images.js b/js/toggle-images.js index 74f2fab4..de1d47b3 100644 --- a/js/toggle-images.js +++ b/js/toggle-images.js @@ -38,7 +38,7 @@ $(document).ready(function(){ if ($(this).next().hasClass('show-image-link')) { $(this).next().hide(); } - $(this).hide().after('hidden'); + $(this).hide().after(''+_('hidden')+''); }); } else { $('span.toggle-images-placeholder').remove(); @@ -54,7 +54,7 @@ $(document).ready(function(){ $('hr:first').before('
    '); $('div#toggle-images a') - .text((hide_images ? 'Show' : 'Hide') + ' images') + .text(hide_images ? _('Show images') : _('Hide images')) .click(function() { hide_images = !hide_images; if (hide_images) { @@ -67,7 +67,7 @@ $(document).ready(function(){ show_hide_hide_images_buttons(); - $(this).text((hide_images ? 'Show' : 'Hide') + ' images') + $(this).text(hide_images ? _('Show images') : _('Hide images')) }); if (hide_images) { From 235ee484fd1b2f665da2b1402d7393033056a3f7 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:04:09 -0400 Subject: [PATCH 164/289] removed a relict from older post hider --- inc/config.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/inc/config.php b/inc/config.php index ec5d71d4..cb3f528b 100644 --- a/inc/config.php +++ b/inc/config.php @@ -636,9 +636,6 @@ // $config['additional_javascript'][] = 'js/jquery.min.js'; // $config['additional_javascript'][] = 'js/auto-reload.js'; - // Enable hiding posts. Remember to put this AFTER jQuery. - // $config['additional_javascript'][] = 'js/post-hider.js'; - // Where these script files are located on the web (defaults to $config['root']). // $config['additional_javascript_url'] = '/js/'; From 05fb4cbca4f93ea55d55da3b2e3a7f2f5a174b21 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:33:27 -0400 Subject: [PATCH 165/289] markup modifiers: there was a plan for adding markup to ban reasons, but assignment was missing; escape markup there too --- inc/mod/ban.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/mod/ban.php b/inc/mod/ban.php index 9166223f..45973ae6 100644 --- a/inc/mod/ban.php +++ b/inc/mod/ban.php @@ -61,7 +61,8 @@ function ban($mask, $reason, $length, $board) { $query->bindValue(':mod', $mod['id']); $query->bindValue(':time', time()); if ($reason !== '') { - markup($reason); + $reason = escape_markup_modifiers($reason); + $reason = markup($reason); $query->bindValue(':reason', $reason); } else $query->bindValue(':reason', null, PDO::PARAM_NULL); From bc76d934fe30c9a6fcea27678dc155e903eb88c3 Mon Sep 17 00:00:00 2001 From: czaks Date: Wed, 31 Jul 2013 20:41:56 -0400 Subject: [PATCH 166/289] fix previous commit; markup is called via reference --- inc/mod/ban.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/mod/ban.php b/inc/mod/ban.php index 45973ae6..71173326 100644 --- a/inc/mod/ban.php +++ b/inc/mod/ban.php @@ -62,7 +62,7 @@ function ban($mask, $reason, $length, $board) { $query->bindValue(':time', time()); if ($reason !== '') { $reason = escape_markup_modifiers($reason); - $reason = markup($reason); + markup($reason); $query->bindValue(':reason', $reason); } else $query->bindValue(':reason', null, PDO::PARAM_NULL); From 9343651d90113f68b83f214c20a32975d18217e7 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:16:20 -0400 Subject: [PATCH 167/289] Add optional database table prefix (issue #118; see issue comments for details) --- search.php | 13 ++++++++----- templates/themes/ukko/theme.php | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/search.php b/search.php index 27ddbe15..a40c4701 100644 --- a/search.php +++ b/search.php @@ -17,21 +17,21 @@ $phrase = $_GET['search']; $_body = ''; - $query = prepare("SELECT COUNT(*) FROM `search_queries` WHERE `ip` = :ip AND `time` > :time"); + $query = prepare("SELECT COUNT(*) FROM ``search_queries`` WHERE `ip` = :ip AND `time` > :time"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':time', time() - ($queries_per_minutes[1] * 60)); $query->execute() or error(db_error($query)); if($query->fetchColumn() > $queries_per_minutes[0]) error(_('Wait a while before searching again, please.')); - $query = prepare("SELECT COUNT(*) FROM `search_queries` WHERE `time` > :time"); + $query = prepare("SELECT COUNT(*) FROM ``search_queries`` WHERE `time` > :time"); $query->bindValue(':time', time() - ($queries_per_minutes_all[1] * 60)); $query->execute() or error(db_error($query)); if($query->fetchColumn() > $queries_per_minutes_all[0]) error(_('Wait a while before searching again, please.')); - $query = prepare("INSERT INTO `search_queries` VALUES (:ip, :time, :query)"); + $query = prepare("INSERT INTO ``search_queries`` VALUES (:ip, :time, :query)"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':time', time()); $query->bindValue(':query', $phrase); @@ -40,7 +40,7 @@ _syslog(LOG_NOTICE, 'Searched /' . $_GET['board'] . '/ for "' . $phrase . '"'); // Cleanup search queries table - $query = prepare("DELETE FROM `search_queries` WHERE `time` <= :time"); + $query = prepare("DELETE FROM ``search_queries`` WHERE `time` <= :time"); $query->bindValue(':time', time() - ($queries_per_minutes_all[1] * 60)); $query->execute() or error(db_error($query)); @@ -85,6 +85,9 @@ // Use asterisk as wildcard to suit convention $phrase = str_replace('*', '%', $phrase); + // Remove `, it's used by table prefix magic + $phrase = str_replace('`', '!`', $phrase); + $like = ''; $match = Array(); @@ -119,7 +122,7 @@ $like = str_replace('%', '%%', $like); - $query = prepare(sprintf("SELECT * FROM `posts_%s` WHERE " . $like . " ORDER BY `time` DESC LIMIT :limit", $board['uri'])); + $query = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE " . $like . " ORDER BY `time` DESC LIMIT :limit", $board['uri'])); $query->bindValue(':limit', $search_limit, PDO::PARAM_INT); $query->execute() or error(db_error($query)); diff --git a/templates/themes/ukko/theme.php b/templates/themes/ukko/theme.php index 6fa5fa7e..1682b4ec 100644 --- a/templates/themes/ukko/theme.php +++ b/templates/themes/ukko/theme.php @@ -25,7 +25,7 @@ foreach($boards as &$_board) { if(in_array($_board['uri'], explode(' ', $this->settings['exclude']))) continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE `thread` IS NULL UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` WHERE `thread` IS NULL UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', 'ORDER BY `bump` DESC', $query); $query = query($query) or error(db_error()); @@ -48,7 +48,7 @@ $post['filename'], $post['ip'], $post['sticky'], $post['locked'], $post['sage'], $post['embed'], $mod ? '?/' : $config['root'], $mod ); - $posts = prepare(sprintf("SELECT * FROM `posts_%s` WHERE `thread` = :id ORDER BY `id` DESC LIMIT :limit", $post['board'])); + $posts = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE `thread` = :id ORDER BY `id` DESC LIMIT :limit", $post['board'])); $posts->bindValue(':id', $post['id']); $posts->bindValue(':limit', ($post['sticky'] ? $config['threads_preview_sticky'] : $config['threads_preview']), PDO::PARAM_INT); $posts->execute() or error(db_error($posts)); @@ -66,7 +66,7 @@ } if ($posts->rowCount() == ($post['sticky'] ? $config['threads_preview_sticky'] : $config['threads_preview'])) { - $ct = prepare(sprintf("SELECT COUNT(`id`) as `num` FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(`id`) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $post['board'], $post['board'])); + $ct = prepare(sprintf("SELECT COUNT(`id`) as `num` FROM ``posts_%s`` WHERE `thread` = :thread UNION ALL SELECT COUNT(`id`) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $post['board'], $post['board'])); $ct->bindValue(':thread', $post['id'], PDO::PARAM_INT); $ct->execute() or error(db_error($count)); From 47647648852af9ab5d7541589e2ad08a57e13059 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:43:33 -0400 Subject: [PATCH 168/289] the prefix work: fix it to be dependent on a board_regex config value --- inc/database.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/database.php b/inc/database.php index 7be001ea..95dfc775 100644 --- a/inc/database.php +++ b/inc/database.php @@ -87,7 +87,7 @@ function mysql_version() { function prepare($query) { global $pdo, $debug, $config; - $query = preg_replace('/``([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)``/u', '`' . $config['db']['prefix'] . '$1`', $query); + $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query); sql_open(); @@ -100,7 +100,7 @@ function prepare($query) { function query($query) { global $pdo, $debug, $config; - $query = preg_replace('/``([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)``/u', '`' . $config['db']['prefix'] . '$1`', $query); + $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query); sql_open(); From a1e105a470d3f049b666abaf5cf3ccaef48d6bc8 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:47:15 -0400 Subject: [PATCH 169/289] i18n strings in inc/display.php --- inc/display.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/display.php b/inc/display.php index 3ce8eced..1dcb60fb 100644 --- a/inc/display.php +++ b/inc/display.php @@ -72,14 +72,14 @@ function error($message, $priority = true) { die(Element('page.html', array( 'config'=>$config, - 'title'=>'Error', - 'subtitle'=>'An error has occured.', + 'title'=>_('Error'), + 'subtitle'=>_('An error has occured.'), 'body'=>'
    ' . '

    ' . _($message) . '

    ' . (isset($board) ? "

    Go back.

    " : '') . + $board['dir'] . $config['file_index'] . "\">"._("Go back").".

    " : '') . '
    ' ))); } From e109d8179fa0e4e34d0191b287b31cbb40414e02 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:43:33 -0400 Subject: [PATCH 170/289] the prefix work: fix it to be dependent on a board_regex config value --- inc/database.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/database.php b/inc/database.php index 7be001ea..95dfc775 100644 --- a/inc/database.php +++ b/inc/database.php @@ -87,7 +87,7 @@ function mysql_version() { function prepare($query) { global $pdo, $debug, $config; - $query = preg_replace('/``([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)``/u', '`' . $config['db']['prefix'] . '$1`', $query); + $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query); sql_open(); @@ -100,7 +100,7 @@ function prepare($query) { function query($query) { global $pdo, $debug, $config; - $query = preg_replace('/``([0-9a-zA-Z$_\x{0080}-\x{FFFF}]+)``/u', '`' . $config['db']['prefix'] . '$1`', $query); + $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query); sql_open(); From b9769d0cea205e4ddf831f374901ec8d220ecc7a Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:47:15 -0400 Subject: [PATCH 171/289] i18n strings in inc/display.php --- inc/display.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/display.php b/inc/display.php index 94f8e8cd..c68af9d6 100644 --- a/inc/display.php +++ b/inc/display.php @@ -72,14 +72,14 @@ function error($message, $priority = true) { die(Element('page.html', array( 'config'=>$config, - 'title'=>'Error', - 'subtitle'=>'An error has occured.', + 'title'=>_('Error'), + 'subtitle'=>_('An error has occured.'), 'body'=>'
    ' . '

    ' . _($message) . '

    ' . (isset($board) ? "

    Go back.

    " : '') . + $board['dir'] . $config['file_index'] . "\">"._("Go back").".

    " : '') . '
    ' ))); } From 3b03e18d68de3d56930956ac0d61d934d82d4f49 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:56:04 -0400 Subject: [PATCH 172/289] i18n even more strings in inc/display.php --- inc/display.php | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/inc/display.php b/inc/display.php index 1dcb60fb..fd21e83c 100644 --- a/inc/display.php +++ b/inc/display.php @@ -208,7 +208,7 @@ function truncate($body, $url, $max_lines = false, $max_chars = false) { $body = preg_replace('/&[^;]*$/', '', $body); } - $body .= 'Post too long. Click here to view the full text.'; + $body .= ''.sprintf(_('Post too long. Click here to view the full text.'), $url).''; } return $body; @@ -331,19 +331,19 @@ class Post { // Ban if (hasPermission($config['mod']['ban'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_ban'] . ''; + $built .= ' ' . $config['mod']['link_ban'] . ''; // Ban & Delete if (hasPermission($config['mod']['bandelete'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_bandelete'] . ''; + $built .= ' ' . $config['mod']['link_bandelete'] . ''; // Delete file (keep 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['uri'] . '/deletefile/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['uri'] . '/deletefile/' . $this->id); // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_editpost'] . ''; + $built .= ' ' . $config['mod']['link_editpost'] . ''; if (!empty($built)) $built = '' . $built . ''; @@ -420,54 +420,54 @@ class Thread { // Mod controls (on posts) // Delete if (hasPermission($config['mod']['delete'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_delete'], 'Delete', 'Are you sure you want to delete this?', $board['uri'] . '/delete/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_delete'], _('Delete'), _('Are you sure you want to delete this?'), $board['uri'] . '/delete/' . $this->id); // Delete all posts by IP if (hasPermission($config['mod']['deletebyip'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip'], 'Delete all posts by IP', 'Are you sure you want to delete all posts by this IP address?', $board['uri'] . '/deletebyip/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip'], _('Delete all posts by IP'), _('Are you sure you want to delete all posts by this IP address?'), $board['uri'] . '/deletebyip/' . $this->id); // Delete all posts by IP (global) if (hasPermission($config['mod']['deletebyip_global'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip_global'], 'Delete all posts by IP across all boards', 'Are you sure you want to delete all posts by this IP address, across all boards?', $board['uri'] . '/deletebyip/' . $this->id . '/global'); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip_global'], _('Delete all posts by IP across all boards'), _('Are you sure you want to delete all posts by this IP address, across all boards?'), $board['uri'] . '/deletebyip/' . $this->id . '/global'); // Ban if (hasPermission($config['mod']['ban'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_ban'] . ''; + $built .= ' ' . $config['mod']['link_ban'] . ''; // Ban & Delete if (hasPermission($config['mod']['bandelete'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_bandelete'] . ''; + $built .= ' ' . $config['mod']['link_bandelete'] . ''; // 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['uri'] . '/deletefile/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['uri'] . '/deletefile/' . $this->id); // Sticky if (hasPermission($config['mod']['sticky'], $board['uri'], $this->mod)) if ($this->sticky) - $built .= ' ' . $config['mod']['link_desticky'] . ''; + $built .= ' ' . $config['mod']['link_desticky'] . ''; else - $built .= ' ' . $config['mod']['link_sticky'] . ''; + $built .= ' ' . $config['mod']['link_sticky'] . ''; if (hasPermission($config['mod']['bumplock'], $board['uri'], $this->mod)) if ($this->bumplocked) - $built .= ' ' . $config['mod']['link_bumpunlock'] . ''; + $built .= ' ' . $config['mod']['link_bumpunlock'] . ''; else - $built .= ' ' . $config['mod']['link_bumplock'] . ''; + $built .= ' ' . $config['mod']['link_bumplock'] . ''; // Lock if (hasPermission($config['mod']['lock'], $board['uri'], $this->mod)) if ($this->locked) - $built .= ' ' . $config['mod']['link_unlock'] . ''; + $built .= ' ' . $config['mod']['link_unlock'] . ''; else - $built .= ' ' . $config['mod']['link_lock'] . ''; + $built .= ' ' . $config['mod']['link_lock'] . ''; if (hasPermission($config['mod']['move'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_move'] . ''; + $built .= ' ' . $config['mod']['link_move'] . ''; // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_editpost'] . ''; + $built .= ' ' . $config['mod']['link_editpost'] . ''; if (!empty($built)) $built = '' . $built . ''; From bea5509d63426824993b0d15d6c5b06d1cae7c66 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 02:06:34 -0400 Subject: [PATCH 173/289] Update Polish locale --- inc/locale/pl_PL/LC_MESSAGES/javascript.po | 3 +- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 19840 -> 20956 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 269 ++++++++++++++------- 3 files changed, 181 insertions(+), 91 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.po b/inc/locale/pl_PL/LC_MESSAGES/javascript.po index 482ec45f..ae1bb5c9 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.po +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-27 01:54-0400\n" +"POT-Creation-Date: 2013-08-01 01:58-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,6 +42,7 @@ msgid "Click to expand" msgstr "Kliknij aby rozwinąć" #: ../../../../js/expand.js:41 ../../../../js/expand.js:45 +#: ../../../../js/expand.js:43 msgid "Hide expanded replies" msgstr "Schowaj rozwinięte odpowiedzi" diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index bc603e6776603e1b1c86a613577a3c9ddc23aad2..73f434f793e0925bd7bd1f91516ca303002df41a 100644 GIT binary patch delta 6994 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 diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 20802b7d..8a46fda9 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-27 01:54-0400\n" +"POT-Creation-Date: 2013-08-01 01:58-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,7 @@ msgstr "" #: ../../../../inc/functions.php:1041 ../../../../inc/functions.php:1055 #: ../../../../inc/functions.php:1039 ../../../../inc/functions.php:1053 #: ../../../../inc/functions.php:1068 ../../../../inc/functions.php:1082 +#: ../../../../inc/functions.php:1079 ../../../../inc/functions.php:1093 msgid "Previous" msgstr "Wstecz" @@ -33,6 +34,7 @@ msgstr "Wstecz" #: ../../../../inc/functions.php:1060 ../../../../inc/functions.php:1069 #: ../../../../inc/functions.php:1058 ../../../../inc/functions.php:1067 #: ../../../../inc/functions.php:1087 ../../../../inc/functions.php:1096 +#: ../../../../inc/functions.php:1098 ../../../../inc/functions.php:1107 msgid "Next" msgstr "Dalej" @@ -57,6 +59,7 @@ msgid "all boards" msgstr "wszystkie boardy" #: /var/www/html/Tinyboard/inc/config.php:305 ../../../../inc/config.php:330 +#: ../../../../inc/config.php:334 msgid "You have been muted for unoriginal content." msgstr "Zostałeś zagłuszony za nieoryginalną treść." @@ -64,11 +67,12 @@ msgstr "Zostałeś zagłuszony za nieoryginalną treść." msgid "Anonymous" msgstr "Anonimowy" -#: /var/www/html/Tinyboard/inc/config.php:481 +#. The names on the post buttons. (On most imageboards, these are both "Post") +#: /var/www/html/Tinyboard/inc/config.php:481 ../../../../inc/config.php:552 msgid "New Topic" msgstr "Nowy wątek" -#: /var/www/html/Tinyboard/inc/config.php:482 +#: /var/www/html/Tinyboard/inc/config.php:482 ../../../../inc/config.php:553 msgid "New Reply" msgstr "Odpowiedz" @@ -84,19 +88,19 @@ msgstr "Szybka odpowiedź" #. Error messages #: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 #: ../../../../inc/config.php:692 ../../../../inc/config.php:698 -#: ../../../../inc/config.php:695 +#: ../../../../inc/config.php:695 ../../../../inc/config.php:701 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." #: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 #: ../../../../inc/config.php:693 ../../../../inc/config.php:699 -#: ../../../../inc/config.php:696 +#: ../../../../inc/config.php:696 ../../../../inc/config.php:702 msgid "You look like a bot." msgstr "Wyglądasz jak bot." #: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 #: ../../../../inc/config.php:694 ../../../../inc/config.php:700 -#: ../../../../inc/config.php:697 +#: ../../../../inc/config.php:697 ../../../../inc/config.php:703 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " @@ -104,161 +108,161 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 #: ../../../../inc/config.php:695 ../../../../inc/config.php:701 -#: ../../../../inc/config.php:698 +#: ../../../../inc/config.php:698 ../../../../inc/config.php:704 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" #: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 #: ../../../../inc/config.php:696 ../../../../inc/config.php:702 -#: ../../../../inc/config.php:699 +#: ../../../../inc/config.php:699 ../../../../inc/config.php:705 msgid "The body was too long." msgstr "Zawartość jest za długa." #: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 #: ../../../../inc/config.php:697 ../../../../inc/config.php:703 -#: ../../../../inc/config.php:700 +#: ../../../../inc/config.php:700 ../../../../inc/config.php:706 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." #: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 #: ../../../../inc/config.php:698 ../../../../inc/config.php:704 -#: ../../../../inc/config.php:701 +#: ../../../../inc/config.php:701 ../../../../inc/config.php:707 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." #: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 #: ../../../../inc/config.php:699 ../../../../inc/config.php:705 -#: ../../../../inc/config.php:702 +#: ../../../../inc/config.php:702 ../../../../inc/config.php:708 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." #: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 #: ../../../../inc/config.php:700 ../../../../inc/config.php:706 -#: ../../../../inc/config.php:703 +#: ../../../../inc/config.php:703 ../../../../inc/config.php:709 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." #: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 #: ../../../../inc/config.php:701 ../../../../inc/config.php:707 -#: ../../../../inc/config.php:704 +#: ../../../../inc/config.php:704 ../../../../inc/config.php:710 msgid "Invalid board!" msgstr "Niepoprawny board!" #: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 #: ../../../../inc/config.php:702 ../../../../inc/config.php:708 -#: ../../../../inc/config.php:705 +#: ../../../../inc/config.php:705 ../../../../inc/config.php:711 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." #: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 #: ../../../../inc/config.php:703 ../../../../inc/config.php:709 -#: ../../../../inc/config.php:706 +#: ../../../../inc/config.php:706 ../../../../inc/config.php:712 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." #: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 #: ../../../../inc/config.php:706 ../../../../inc/config.php:712 -#: ../../../../inc/config.php:709 +#: ../../../../inc/config.php:709 ../../../../inc/config.php:715 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." #: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 #: ../../../../inc/config.php:707 ../../../../inc/config.php:713 -#: ../../../../inc/config.php:710 +#: ../../../../inc/config.php:710 ../../../../inc/config.php:716 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 #: ../../../../inc/config.php:708 ../../../../inc/config.php:714 -#: ../../../../inc/config.php:711 +#: ../../../../inc/config.php:711 ../../../../inc/config.php:717 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 #: ../../../../inc/config.php:709 ../../../../inc/config.php:715 -#: ../../../../inc/config.php:712 +#: ../../../../inc/config.php:712 ../../../../inc/config.php:718 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" #: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 #: ../../../../inc/config.php:710 ../../../../inc/config.php:716 -#: ../../../../inc/config.php:713 +#: ../../../../inc/config.php:713 ../../../../inc/config.php:719 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #: ../../../../inc/config.php:711 ../../../../inc/config.php:717 -#: ../../../../inc/config.php:714 +#: ../../../../inc/config.php:714 ../../../../inc/config.php:720 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #: ../../../../inc/config.php:712 ../../../../inc/config.php:718 -#: ../../../../inc/config.php:715 +#: ../../../../inc/config.php:715 ../../../../inc/config.php:721 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." #: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 #: ../../../../inc/config.php:713 ../../../../inc/config.php:719 -#: ../../../../inc/config.php:716 +#: ../../../../inc/config.php:716 ../../../../inc/config.php:722 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." #: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 #: ../../../../inc/config.php:714 ../../../../inc/config.php:720 -#: ../../../../inc/config.php:717 +#: ../../../../inc/config.php:717 ../../../../inc/config.php:723 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 #: ../../../../inc/config.php:715 ../../../../inc/config.php:721 -#: ../../../../inc/config.php:718 +#: ../../../../inc/config.php:718 ../../../../inc/config.php:724 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 #: ../../../../inc/config.php:716 ../../../../inc/config.php:722 -#: ../../../../inc/config.php:719 +#: ../../../../inc/config.php:719 ../../../../inc/config.php:725 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." #: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 #: ../../../../inc/config.php:717 ../../../../inc/config.php:723 -#: ../../../../inc/config.php:720 +#: ../../../../inc/config.php:720 ../../../../inc/config.php:726 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." #: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 #: ../../../../inc/config.php:718 ../../../../inc/config.php:724 -#: ../../../../inc/config.php:721 +#: ../../../../inc/config.php:721 ../../../../inc/config.php:727 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." #: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 #: ../../../../inc/config.php:719 ../../../../inc/config.php:725 -#: ../../../../inc/config.php:722 +#: ../../../../inc/config.php:722 ../../../../inc/config.php:728 msgid "Wrong password…" msgstr "Niepoprawne hasło" #: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 #: ../../../../inc/config.php:720 ../../../../inc/config.php:726 -#: ../../../../inc/config.php:723 +#: ../../../../inc/config.php:723 ../../../../inc/config.php:729 msgid "Invalid image." msgstr "Niepoprawny obrazek." #: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 #: ../../../../inc/config.php:721 ../../../../inc/config.php:727 -#: ../../../../inc/config.php:724 +#: ../../../../inc/config.php:724 ../../../../inc/config.php:730 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." #: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 #: ../../../../inc/config.php:722 ../../../../inc/config.php:728 -#: ../../../../inc/config.php:725 +#: ../../../../inc/config.php:725 ../../../../inc/config.php:731 msgid "Maximum file size: %maxsz% bytes
    Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
    Rozmiar twojego pliku: %filesz% " @@ -266,33 +270,33 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 #: ../../../../inc/config.php:723 ../../../../inc/config.php:729 -#: ../../../../inc/config.php:726 +#: ../../../../inc/config.php:726 ../../../../inc/config.php:732 msgid "The file was too big." msgstr "Plik jest za duży." #: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 #: ../../../../inc/config.php:724 ../../../../inc/config.php:730 -#: ../../../../inc/config.php:727 +#: ../../../../inc/config.php:727 ../../../../inc/config.php:733 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" #: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 #: ../../../../inc/config.php:725 ../../../../inc/config.php:731 -#: ../../../../inc/config.php:728 +#: ../../../../inc/config.php:728 ../../../../inc/config.php:734 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 #: ../../../../inc/config.php:727 ../../../../inc/config.php:733 -#: ../../../../inc/config.php:730 +#: ../../../../inc/config.php:730 ../../../../inc/config.php:736 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." #: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 #: ../../../../inc/config.php:728 ../../../../inc/config.php:734 -#: ../../../../inc/config.php:731 +#: ../../../../inc/config.php:731 ../../../../inc/config.php:737 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " @@ -300,31 +304,31 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 #: ../../../../inc/config.php:729 ../../../../inc/config.php:735 -#: ../../../../inc/config.php:732 +#: ../../../../inc/config.php:732 ../../../../inc/config.php:738 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." #: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 #: ../../../../inc/config.php:730 ../../../../inc/config.php:736 -#: ../../../../inc/config.php:733 +#: ../../../../inc/config.php:733 ../../../../inc/config.php:739 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." #: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 #: ../../../../inc/config.php:734 ../../../../inc/config.php:740 -#: ../../../../inc/config.php:737 +#: ../../../../inc/config.php:737 ../../../../inc/config.php:743 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" #: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 #: ../../../../inc/config.php:735 ../../../../inc/config.php:741 -#: ../../../../inc/config.php:738 +#: ../../../../inc/config.php:738 ../../../../inc/config.php:744 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" #: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 #: ../../../../inc/config.php:736 ../../../../inc/config.php:742 -#: ../../../../inc/config.php:739 +#: ../../../../inc/config.php:739 ../../../../inc/config.php:745 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" @@ -333,65 +337,65 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 #: ../../../../inc/config.php:737 ../../../../inc/config.php:743 -#: ../../../../inc/config.php:740 +#: ../../../../inc/config.php:740 ../../../../inc/config.php:746 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." #: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 #: ../../../../inc/config.php:738 ../../../../inc/config.php:744 -#: ../../../../inc/config.php:741 +#: ../../../../inc/config.php:741 ../../../../inc/config.php:747 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." #: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 #: ../../../../inc/config.php:739 ../../../../inc/config.php:745 -#: ../../../../inc/config.php:742 +#: ../../../../inc/config.php:742 ../../../../inc/config.php:748 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." #: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 #: ../../../../inc/config.php:740 ../../../../inc/config.php:746 -#: ../../../../inc/config.php:743 +#: ../../../../inc/config.php:743 ../../../../inc/config.php:749 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." #: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 #: ../../../../inc/config.php:741 ../../../../inc/config.php:747 -#: ../../../../inc/config.php:744 +#: ../../../../inc/config.php:744 ../../../../inc/config.php:750 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" #: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 #: ../../../../inc/config.php:742 ../../../../inc/config.php:748 -#: ../../../../inc/config.php:745 +#: ../../../../inc/config.php:745 ../../../../inc/config.php:751 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." #: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 #: ../../../../inc/config.php:743 ../../../../inc/config.php:749 -#: ../../../../inc/config.php:746 +#: ../../../../inc/config.php:746 ../../../../inc/config.php:752 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." #: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 #: ../../../../inc/config.php:744 ../../../../inc/config.php:750 -#: ../../../../inc/config.php:747 +#: ../../../../inc/config.php:747 ../../../../inc/config.php:753 msgid "Page not found." msgstr "Strona nie znaleziona." #: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 #: ../../../../inc/config.php:745 ../../../../inc/config.php:751 -#: ../../../../inc/config.php:748 +#: ../../../../inc/config.php:748 ../../../../inc/config.php:754 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 #: ../../../../inc/config.php:746 ../../../../inc/config.php:752 -#: ../../../../inc/config.php:749 +#: ../../../../inc/config.php:749 ../../../../inc/config.php:755 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -430,6 +434,7 @@ msgstr "[Przenieś]" #. Default public ban message. #. In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). #: /var/www/html/Tinyboard/inc/config.php:801 ../../../../inc/config.php:911 +#: ../../../../inc/config.php:917 msgid "USER WAS BANNED FOR THIS POST" msgstr "UŻYTKOWNIK ZOSTAŁ ZBANOWANY ZA TEGO POSTA" @@ -438,20 +443,21 @@ msgstr "UŻYTKOWNIK ZOSTAŁ ZBANOWANY ZA TEGO POSTA" msgid "Moved to %s." msgstr "Przeniesiono do %s." -#: /var/www/html/Tinyboard/inc/display.php:80 +#: /var/www/html/Tinyboard/inc/display.php:80 ../../../../inc/display.php:75 msgid "Error" msgstr "Błąd" -#: /var/www/html/Tinyboard/inc/display.php:81 +#: /var/www/html/Tinyboard/inc/display.php:81 ../../../../inc/display.php:76 msgid "An error has occured." msgstr "Wystąpił błąd." -#: /var/www/html/Tinyboard/inc/display.php:87 +#: /var/www/html/Tinyboard/inc/display.php:87 ../../../../inc/display.php:82 msgid "Go back" msgstr "Wróć" #: /var/www/html/Tinyboard/inc/display.php:97 ../../../../inc/display.php:91 #: ../../../../inc/mod/pages.php:59 ../../../../inc/mod/pages.php:62 +#: ../../../../inc/display.php:92 msgid "Login" msgstr "Logowanie" @@ -469,31 +475,34 @@ msgstr "" #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:27 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:27 #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:27 +#: ../../../../inc/display.php:423 msgid "Delete" msgstr "Usuń" #: /var/www/html/Tinyboard/inc/display.php:272 -#: /var/www/html/Tinyboard/inc/display.php:365 +#: /var/www/html/Tinyboard/inc/display.php:365 ../../../../inc/display.php:423 msgid "Are you sure you want to delete this?" msgstr "Czy jesteś pewien, że chcesz to usunąć?" #: /var/www/html/Tinyboard/inc/display.php:276 -#: /var/www/html/Tinyboard/inc/display.php:369 +#: /var/www/html/Tinyboard/inc/display.php:369 ../../../../inc/display.php:427 msgid "Delete all posts by IP" msgstr "Usuń wszystkie posty z tego adresu IP" #: /var/www/html/Tinyboard/inc/display.php:276 -#: /var/www/html/Tinyboard/inc/display.php:369 +#: /var/www/html/Tinyboard/inc/display.php:369 ../../../../inc/display.php:427 msgid "Are you sure you want to delete all posts by this IP address?" msgstr "Czy na pewno chcesz usunąć wszystkie posty z tego adresu IP?" #: /var/www/html/Tinyboard/inc/display.php:280 -#: /var/www/html/Tinyboard/inc/display.php:373 +#: /var/www/html/Tinyboard/inc/display.php:373 ../../../../inc/display.php:334 +#: ../../../../inc/display.php:435 msgid "Ban" msgstr "Ban" #: /var/www/html/Tinyboard/inc/display.php:284 -#: /var/www/html/Tinyboard/inc/display.php:377 +#: /var/www/html/Tinyboard/inc/display.php:377 ../../../../inc/display.php:338 +#: ../../../../inc/display.php:439 msgid "Ban & Delete" msgstr "Usuń i zbanuj" @@ -506,34 +515,36 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:408 #: ../../../../inc/mod/pages.php:1080 ../../../../inc/mod/pages.php:1105 #: ../../../../inc/mod/pages.php:1239 ../../../../inc/mod/pages.php:1242 +#: ../../../../inc/display.php:346 ../../../../inc/display.php:470 +#: ../../../../inc/mod/pages.php:1314 msgid "Edit post" msgstr "Edytuj post" -#: /var/www/html/Tinyboard/inc/display.php:386 +#: /var/www/html/Tinyboard/inc/display.php:386 ../../../../inc/display.php:448 msgid "Make thread not sticky" msgstr "Odklej wątek" -#: /var/www/html/Tinyboard/inc/display.php:388 +#: /var/www/html/Tinyboard/inc/display.php:388 ../../../../inc/display.php:450 msgid "Make thread sticky" msgstr "Przyklej wątek" -#: /var/www/html/Tinyboard/inc/display.php:392 +#: /var/www/html/Tinyboard/inc/display.php:392 ../../../../inc/display.php:454 msgid "Allow thread to be bumped" msgstr "Zezwól wątkowi na bumpowanie" -#: /var/www/html/Tinyboard/inc/display.php:394 +#: /var/www/html/Tinyboard/inc/display.php:394 ../../../../inc/display.php:456 msgid "Prevent thread from being bumped" msgstr "Zabroń wątkowi na bumpowanie" -#: /var/www/html/Tinyboard/inc/display.php:399 +#: /var/www/html/Tinyboard/inc/display.php:399 ../../../../inc/display.php:461 msgid "Unlock thread" msgstr "Odblokuj wątek" -#: /var/www/html/Tinyboard/inc/display.php:401 +#: /var/www/html/Tinyboard/inc/display.php:401 ../../../../inc/display.php:463 msgid "Lock thread" msgstr "Zablokuj wątek" -#: /var/www/html/Tinyboard/inc/display.php:404 +#: /var/www/html/Tinyboard/inc/display.php:404 ../../../../inc/display.php:466 msgid "Move thread to another board" msgstr "Przenieś wątek na inny board" @@ -703,6 +714,8 @@ msgstr "Weryfikacja" #. line 72 #. line 3 #. line 72 +#. line 3 +#. line 72 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 @@ -787,6 +800,8 @@ msgstr "Flagi" #. line 99 #. line 98 #. line 99 +#. line 98 +#. line 99 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 @@ -854,6 +869,8 @@ msgstr "Przyklejony" #. line 103 #. line 102 #. line 103 +#. line 102 +#. line 103 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 @@ -921,6 +938,8 @@ msgstr "Zablokowany" #. line 107 #. line 106 #. line 107 +#. line 106 +#. line 107 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 @@ -1058,6 +1077,7 @@ msgstr "Tryb postowania: Odpowiedź" #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:172 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:127 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:173 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:174 msgid "Return" msgstr "Powrót" @@ -1079,6 +1099,7 @@ msgstr "Usuń post" #. line 106 #. line 8 #. line 32 +#. line 8 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 @@ -1116,6 +1137,7 @@ msgstr "Wiadomości prywatne" #: ../../../../inc/mod/pages.php:376 ../../../../inc/mod/pages.php:393 #: ../../../../inc/mod/pages.php:406 ../../../../inc/mod/pages.php:540 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:166 +#: ../../../../inc/mod/pages.php:604 msgid "News" msgstr "Aktualności" @@ -1123,7 +1145,7 @@ msgstr "Aktualności" #: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 #: ../../../../inc/mod/pages.php:1682 ../../../../inc/mod/pages.php:1816 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:207 -#: ../../../../inc/mod/pages.php:1831 +#: ../../../../inc/mod/pages.php:1831 ../../../../inc/mod/pages.php:1904 msgid "Report queue" msgstr "Kolejka zgłoszeń" @@ -1131,6 +1153,7 @@ msgstr "Kolejka zgłoszeń" #: ../../../../inc/mod/pages.php:664 ../../../../inc/mod/pages.php:705 #: ../../../../inc/mod/pages.php:721 ../../../../inc/mod/pages.php:855 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:224 +#: ../../../../inc/mod/pages.php:918 msgid "Ban list" msgstr "Lista banów" @@ -1138,7 +1161,7 @@ msgstr "Lista banów" #: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 #: ../../../../inc/mod/pages.php:1394 ../../../../inc/mod/pages.php:1528 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:232 -#: ../../../../inc/mod/pages.php:1543 +#: ../../../../inc/mod/pages.php:1543 ../../../../inc/mod/pages.php:1615 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -1153,6 +1176,7 @@ msgstr "Zmień swoje hasło" #: ../../../../inc/mod/pages.php:580 ../../../../inc/mod/pages.php:607 #: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:65 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:255 +#: ../../../../inc/mod/pages.php:644 ../../../../inc/mod/pages.php:671 msgid "Moderation log" msgstr "Log moderacji" @@ -1172,7 +1196,7 @@ msgstr "Pokaż konfigurację" #: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 #: ../../../../inc/mod/pages.php:1830 ../../../../inc/mod/pages.php:1964 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:247 -#: ../../../../inc/mod/pages.php:1979 +#: ../../../../inc/mod/pages.php:1979 ../../../../inc/mod/pages.php:2052 msgid "Manage themes" msgstr "Zarządzaj dodatkami" @@ -1196,7 +1220,7 @@ msgstr "Wyrażenie:" #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:19 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:286 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:19 -#: ../../../../search.php:165 +#: ../../../../search.php:165 ../../../../search.php:168 msgid "Search" msgstr "Szukaj" @@ -1276,12 +1300,14 @@ msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 #: ../../../../inc/mod/pages.php:1789 ../../../../inc/mod/pages.php:1814 #: ../../../../inc/mod/pages.php:1948 ../../../../inc/mod/pages.php:1963 +#: ../../../../inc/mod/pages.php:2036 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 #: ../../../../inc/mod/pages.php:1791 ../../../../inc/mod/pages.php:1816 #: ../../../../inc/mod/pages.php:1950 ../../../../inc/mod/pages.php:1965 +#: ../../../../inc/mod/pages.php:2038 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." @@ -1334,6 +1360,7 @@ msgstr "Instaluj" #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:263 #: ../../../../inc/mod/pages.php:1741 ../../../../inc/mod/pages.php:1745 #: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:98 +#: ../../../../inc/mod/pages.php:1814 ../../../../inc/mod/pages.php:1818 msgid "Rebuild" msgstr "Przebuduj" @@ -1361,6 +1388,7 @@ msgstr "Postuj na tablicy ogłoszeń" #: ../../../../inc/mod/pages.php:333 ../../../../inc/mod/pages.php:346 #: ../../../../inc/mod/pages.php:480 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:96 +#: ../../../../inc/mod/pages.php:543 msgid "Noticeboard" msgstr "Tablica ogłoszeń" @@ -1468,13 +1496,13 @@ msgstr "Konfiguracja" #: /var/www/html/Tinyboard/mod.php:2174 ../../../../inc/mod/pages.php:255 #: ../../../../inc/mod/pages.php:272 ../../../../inc/mod/pages.php:285 -#: ../../../../inc/mod/pages.php:419 +#: ../../../../inc/mod/pages.php:419 ../../../../inc/mod/pages.php:481 msgid "Couldn't open board after creation." msgstr "Nie można otworzyć boardu po utworzeniu." #: /var/www/html/Tinyboard/mod.php:2678 ../../../../inc/mod/pages.php:759 #: ../../../../inc/mod/pages.php:800 ../../../../inc/mod/pages.php:823 -#: ../../../../inc/mod/pages.php:957 +#: ../../../../inc/mod/pages.php:957 ../../../../inc/mod/pages.php:1020 msgid "Target and source board are the same." msgstr "Docelowy i źródłowy board są takie same." @@ -1484,6 +1512,7 @@ msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." #: ../../../../inc/config.php:689 ../../../../inc/config.php:747 #: ../../../../inc/config.php:753 ../../../../inc/config.php:750 +#: ../../../../inc/config.php:756 msgid "Invalid security token! Please go back and try again." msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." @@ -1493,11 +1522,13 @@ msgstr "Potwierdź akcję" #: ../../../../inc/mod/pages.php:222 ../../../../inc/mod/pages.php:239 #: ../../../../inc/mod/pages.php:252 ../../../../inc/mod/pages.php:386 +#: ../../../../inc/mod/pages.php:431 msgid "Edit board" msgstr "Edytuj board" #: ../../../../inc/mod/pages.php:270 ../../../../inc/mod/pages.php:287 #: ../../../../inc/mod/pages.php:300 ../../../../inc/mod/pages.php:434 +#: ../../../../inc/mod/pages.php:496 msgid "New board" msgstr "Nowy board" @@ -1511,6 +1542,7 @@ msgstr "Nowy board" #: ../../../../inc/mod/pages.php:628 ../../../../inc/mod/pages.php:762 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:247 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:65 +#: ../../../../inc/mod/pages.php:825 msgid "IP" msgstr "adres IP" @@ -1520,12 +1552,14 @@ msgstr "adres IP" #: ../../../../inc/mod/pages.php:638 ../../../../inc/mod/pages.php:1053 #: ../../../../inc/mod/pages.php:772 ../../../../inc/mod/pages.php:1187 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:398 -#: ../../../../inc/mod/pages.php:1190 +#: ../../../../inc/mod/pages.php:1190 ../../../../inc/mod/pages.php:835 +#: ../../../../inc/mod/pages.php:1255 msgid "New ban" msgstr "Nowy ban" #: ../../../../inc/mod/pages.php:919 ../../../../inc/mod/pages.php:962 #: ../../../../inc/mod/pages.php:987 ../../../../inc/mod/pages.php:1121 +#: ../../../../inc/mod/pages.php:1184 msgid "Impossible to move thread; there is only one board." msgstr "Nie można przenieść wątku; istnieje tylko jeden board." @@ -1533,6 +1567,7 @@ msgstr "Nie można przenieść wątku; istnieje tylko jeden board." #: ../../../../inc/mod/pages.php:923 ../../../../inc/mod/pages.php:966 #: ../../../../inc/mod/pages.php:991 ../../../../inc/mod/pages.php:1125 #: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:106 +#: ../../../../inc/mod/pages.php:1188 msgid "Move thread" msgstr "Przenieś wątek" @@ -1541,6 +1576,7 @@ msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1332 ../../../../inc/mod/pages.php:1381 #: ../../../../inc/mod/pages.php:1466 ../../../../inc/mod/pages.php:1515 #: ../../../../inc/mod/pages.php:1477 ../../../../inc/mod/pages.php:1530 +#: ../../../../inc/mod/pages.php:1549 ../../../../inc/mod/pages.php:1602 msgid "Edit user" msgstr "Edytuj użytkownika" @@ -1550,12 +1586,13 @@ msgstr "Edytuj użytkownika" #: ../../../../inc/mod/pages.php:1456 ../../../../inc/mod/pages.php:1528 #: ../../../../inc/mod/pages.php:1590 ../../../../inc/mod/pages.php:1662 #: ../../../../inc/mod/pages.php:1605 ../../../../inc/mod/pages.php:1677 +#: ../../../../inc/mod/pages.php:1750 msgid "New PM for" msgstr "Nowe PW dla" #: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 #: ../../../../inc/mod/pages.php:1460 ../../../../inc/mod/pages.php:1594 -#: ../../../../inc/mod/pages.php:1609 +#: ../../../../inc/mod/pages.php:1609 ../../../../inc/mod/pages.php:1681 msgid "Private message" msgstr "Prywatna wiadomość" @@ -1563,39 +1600,39 @@ msgstr "Prywatna wiadomość" #: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 #: ../../../../inc/mod/pages.php:1481 ../../../../inc/mod/pages.php:1615 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:171 -#: ../../../../inc/mod/pages.php:1630 +#: ../../../../inc/mod/pages.php:1630 ../../../../inc/mod/pages.php:1702 msgid "PM inbox" msgstr "Odebrane PW" #: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 #: ../../../../inc/mod/pages.php:1804 ../../../../inc/mod/pages.php:1938 -#: ../../../../inc/mod/pages.php:1953 +#: ../../../../inc/mod/pages.php:1953 ../../../../inc/mod/pages.php:2026 msgid "Config editor" msgstr "Edytor konfiguracji" #: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 #: ../../../../inc/mod/pages.php:1970 ../../../../inc/mod/pages.php:2104 -#: ../../../../inc/mod/pages.php:2119 +#: ../../../../inc/mod/pages.php:2119 ../../../../inc/mod/pages.php:2192 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" #: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 #: ../../../../inc/mod/pages.php:1892 ../../../../inc/mod/pages.php:2026 -#: ../../../../inc/mod/pages.php:2041 +#: ../../../../inc/mod/pages.php:2041 ../../../../inc/mod/pages.php:2114 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" #: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 #: ../../../../inc/mod/pages.php:1903 ../../../../inc/mod/pages.php:2037 -#: ../../../../inc/mod/pages.php:2052 +#: ../../../../inc/mod/pages.php:2052 ../../../../inc/mod/pages.php:2125 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" #: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 #: ../../../../inc/mod/pages.php:1931 ../../../../inc/mod/pages.php:2065 -#: ../../../../inc/mod/pages.php:2080 +#: ../../../../inc/mod/pages.php:2080 ../../../../inc/mod/pages.php:2153 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" @@ -1607,24 +1644,24 @@ msgid "" msgstr "" #: ../../../../inc/config.php:704 ../../../../inc/config.php:710 -#: ../../../../inc/config.php:707 +#: ../../../../inc/config.php:707 ../../../../inc/config.php:713 msgid "Thread has reached its maximum reply limit." msgstr "Ten temat osiągnął swój maksymalny limit odpowiedzi." #: ../../../../inc/config.php:705 ../../../../inc/config.php:711 -#: ../../../../inc/config.php:708 +#: ../../../../inc/config.php:708 ../../../../inc/config.php:714 msgid "Thread has reached its maximum image limit." msgstr "Ten temat osiągnął swój maksymalny limit obrazków." #: ../../../../inc/config.php:726 ../../../../inc/config.php:732 -#: ../../../../inc/config.php:729 +#: ../../../../inc/config.php:729 ../../../../inc/config.php:735 #, php-format msgid "That file already exists in this thread!" msgstr "Ten plik już istnieje w tym temacie!" #. Moderator errors #: ../../../../inc/config.php:733 ../../../../inc/config.php:739 -#: ../../../../inc/config.php:736 +#: ../../../../inc/config.php:736 ../../../../inc/config.php:742 #, php-format msgid "" "You are only allowed to unban %s users at a time. You tried to unban %u " @@ -1634,11 +1671,13 @@ msgstr "" #: ../../../../inc/mod/pages.php:1969 ../../../../inc/mod/pages.php:1994 #: ../../../../inc/mod/pages.php:2128 ../../../../inc/mod/pages.php:2143 +#: ../../../../inc/mod/pages.php:2216 msgid "Debug: Recent posts" msgstr "Debug: Ostatnie posty" #: ../../../../inc/mod/pages.php:1993 ../../../../inc/mod/pages.php:2018 #: ../../../../inc/mod/pages.php:2152 ../../../../inc/mod/pages.php:2167 +#: ../../../../inc/mod/pages.php:2240 msgid "Debug: SQL" msgstr "Debug: SQL" @@ -1651,7 +1690,7 @@ msgstr[1] "%count% odpowiedzi" msgstr[2] "%count% odpowiedzi" #. $results now contains the search results -#: ../../../../inc/mod/pages.php:290 +#: ../../../../inc/mod/pages.php:290 ../../../../inc/mod/pages.php:335 msgid "Search results" msgstr "Wyniki wyszukiwania" @@ -1976,11 +2015,11 @@ msgstr "Wyszukiwanie postów jest wyłączone" msgid "Wait a while before searching again, please." msgstr "Proszę poczekać chwilę przed ponownym szukaniem." -#: ../../../../search.php:128 +#: ../../../../search.php:128 ../../../../search.php:131 msgid "Query too broad." msgstr "Zapytanie zbyt szerokie." -#: ../../../../search.php:149 +#: ../../../../search.php:149 ../../../../search.php:152 #, php-format msgid "%d result in" msgid_plural "%d results in" @@ -1988,11 +2027,11 @@ msgstr[0] "%d wynik na" msgstr[1] "%d wyniki na" msgstr[2] "%d wyników na" -#: ../../../../search.php:160 +#: ../../../../search.php:160 ../../../../search.php:163 msgid "No results." msgstr "Brak wyników." -#: ../../../../inc/functions.php:594 +#: ../../../../inc/functions.php:594 ../../../../inc/functions.php:603 msgid "Banned!" msgstr "Zbanowany!" @@ -2005,6 +2044,7 @@ msgid "You are not banned." msgstr "Nie jesteś zbanowany." #: ../../../../inc/functions.php:549 ../../../../inc/functions.php:566 +#: ../../../../inc/functions.php:558 ../../../../inc/functions.php:575 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" @@ -2012,6 +2052,7 @@ msgstr[1] "sekundy" msgstr[2] "sekund" #: ../../../../inc/functions.php:551 ../../../../inc/functions.php:568 +#: ../../../../inc/functions.php:560 ../../../../inc/functions.php:577 msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" @@ -2019,6 +2060,7 @@ msgstr[1] "minuty" msgstr[2] "minut" #: ../../../../inc/functions.php:553 ../../../../inc/functions.php:570 +#: ../../../../inc/functions.php:562 ../../../../inc/functions.php:579 msgid "hour" msgid_plural "hours" msgstr[0] "godzina" @@ -2026,6 +2068,7 @@ msgstr[1] "godziny" msgstr[2] "godzin" #: ../../../../inc/functions.php:555 ../../../../inc/functions.php:572 +#: ../../../../inc/functions.php:564 ../../../../inc/functions.php:581 msgid "day" msgid_plural "days" msgstr[0] "dzień" @@ -2033,6 +2076,7 @@ msgstr[1] "dni" msgstr[2] "dni" #: ../../../../inc/functions.php:557 ../../../../inc/functions.php:574 +#: ../../../../inc/functions.php:566 ../../../../inc/functions.php:583 msgid "week" msgid_plural "weeks" msgstr[0] "tydzień" @@ -2040,6 +2084,7 @@ msgstr[1] "tygodnie" msgstr[2] "tygodni" #: ../../../../inc/functions.php:560 ../../../../inc/functions.php:577 +#: ../../../../inc/functions.php:569 ../../../../inc/functions.php:586 msgid "year" msgid_plural "years" msgstr[0] "rok" @@ -2097,3 +2142,47 @@ msgstr "Nie ma dostępnych dodatków." #: ../../../../templates/cache/d1/99/467985632043e204070d354b8290.php:91 msgid "Install theme" msgstr "Zainstaluj dodatek" + +#: ../../../../inc/display.php:211 +#, php-format +msgid "Post too long. Click here to view the full text." +msgstr "Post za długi. Kliknij tutaj, aby zobaczyć jego pełną treść." + +#: ../../../../inc/display.php:342 ../../../../inc/display.php:443 +msgid "Delete file" +msgstr "Usuń plik" + +#: ../../../../inc/display.php:342 ../../../../inc/display.php:443 +msgid "Are you sure you want to delete this file?" +msgstr "Czy jesteś pewien, że chcesz usunąć ten plik?" + +#: ../../../../inc/display.php:431 +msgid "Delete all posts by IP across all boards" +msgstr "Usuń wszystkie posty z tego IP ze wszystkich boardów" + +#: ../../../../inc/display.php:431 +msgid "" +"Are you sure you want to delete all posts by this IP address, across all " +"boards?" +msgstr "" +"Czy jesteś pewien, że chcesz usunąć wszystkie posty z tego adresu IP, ze " +"wszystkich boardów?" + +#. Page footer +#: ../../../../inc/config.php:564 +msgid "" +"All trademarks, copyrights, comments, and images on this page are owned by " +"and are the responsibility of their respective parties." +msgstr "" +"Wszystkie znaki towarowe, prawa autorskie, komentarze oraz obrazki na tej " +"stronie są własnością i odpowiedzialność za nie spoczywa na ich odpowiednich " +"właścicielach." + +#: ../../../../inc/mod/pages.php:267 +msgid "There are no boards to search!" +msgstr "Nie ma boardów do przeszukania!" + +#. Print error +#: ../../../../inc/database.php:72 +msgid "Database error: " +msgstr "Błąd bazy danych: " From 9769e1f964eee89c2dcf1f585d665bd5e8d77357 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 01:56:04 -0400 Subject: [PATCH 174/289] i18n even more strings in inc/display.php --- inc/display.php | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/inc/display.php b/inc/display.php index c68af9d6..5da2f302 100644 --- a/inc/display.php +++ b/inc/display.php @@ -208,7 +208,7 @@ function truncate($body, $url, $max_lines = false, $max_chars = false) { $body = preg_replace('/&[^;]*$/', '', $body); } - $body .= 'Post too long. Click here to view the full text.'; + $body .= ''.sprintf(_('Post too long. Click here to view the full text.'), $url).''; } return $body; @@ -331,19 +331,19 @@ class Post { // Ban if (hasPermission($config['mod']['ban'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_ban'] . ''; + $built .= ' ' . $config['mod']['link_ban'] . ''; // Ban & Delete if (hasPermission($config['mod']['bandelete'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_bandelete'] . ''; + $built .= ' ' . $config['mod']['link_bandelete'] . ''; // Delete file (keep 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['uri'] . '/deletefile/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['uri'] . '/deletefile/' . $this->id); // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_editpost'] . ''; + $built .= ' ' . $config['mod']['link_editpost'] . ''; if (!empty($built)) $built = '' . $built . ''; @@ -420,54 +420,54 @@ class Thread { // Mod controls (on posts) // Delete if (hasPermission($config['mod']['delete'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_delete'], 'Delete', 'Are you sure you want to delete this?', $board['uri'] . '/delete/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_delete'], _('Delete'), _('Are you sure you want to delete this?'), $board['uri'] . '/delete/' . $this->id); // Delete all posts by IP if (hasPermission($config['mod']['deletebyip'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip'], 'Delete all posts by IP', 'Are you sure you want to delete all posts by this IP address?', $board['uri'] . '/deletebyip/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip'], _('Delete all posts by IP'), _('Are you sure you want to delete all posts by this IP address?'), $board['uri'] . '/deletebyip/' . $this->id); // Delete all posts by IP (global) if (hasPermission($config['mod']['deletebyip_global'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip_global'], 'Delete all posts by IP across all boards', 'Are you sure you want to delete all posts by this IP address, across all boards?', $board['uri'] . '/deletebyip/' . $this->id . '/global'); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletebyip_global'], _('Delete all posts by IP across all boards'), _('Are you sure you want to delete all posts by this IP address, across all boards?'), $board['uri'] . '/deletebyip/' . $this->id . '/global'); // Ban if (hasPermission($config['mod']['ban'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_ban'] . ''; + $built .= ' ' . $config['mod']['link_ban'] . ''; // Ban & Delete if (hasPermission($config['mod']['bandelete'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_bandelete'] . ''; + $built .= ' ' . $config['mod']['link_bandelete'] . ''; // 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['uri'] . '/deletefile/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['uri'] . '/deletefile/' . $this->id); // Sticky if (hasPermission($config['mod']['sticky'], $board['uri'], $this->mod)) if ($this->sticky) - $built .= ' ' . $config['mod']['link_desticky'] . ''; + $built .= ' ' . $config['mod']['link_desticky'] . ''; else - $built .= ' ' . $config['mod']['link_sticky'] . ''; + $built .= ' ' . $config['mod']['link_sticky'] . ''; if (hasPermission($config['mod']['bumplock'], $board['uri'], $this->mod)) if ($this->bumplocked) - $built .= ' ' . $config['mod']['link_bumpunlock'] . ''; + $built .= ' ' . $config['mod']['link_bumpunlock'] . ''; else - $built .= ' ' . $config['mod']['link_bumplock'] . ''; + $built .= ' ' . $config['mod']['link_bumplock'] . ''; // Lock if (hasPermission($config['mod']['lock'], $board['uri'], $this->mod)) if ($this->locked) - $built .= ' ' . $config['mod']['link_unlock'] . ''; + $built .= ' ' . $config['mod']['link_unlock'] . ''; else - $built .= ' ' . $config['mod']['link_lock'] . ''; + $built .= ' ' . $config['mod']['link_lock'] . ''; if (hasPermission($config['mod']['move'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_move'] . ''; + $built .= ' ' . $config['mod']['link_move'] . ''; // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_editpost'] . ''; + $built .= ' ' . $config['mod']['link_editpost'] . ''; if (!empty($built)) $built = '' . $built . ''; From 6c2887ba9f3d20f23015e1a34e5170d219d5e648 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 02:06:34 -0400 Subject: [PATCH 175/289] Update Polish locale --- inc/locale/pl_PL/LC_MESSAGES/javascript.po | 3 +- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 19840 -> 20956 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 269 ++++++++++++++------- 3 files changed, 181 insertions(+), 91 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/javascript.po b/inc/locale/pl_PL/LC_MESSAGES/javascript.po index 482ec45f..ae1bb5c9 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/javascript.po +++ b/inc/locale/pl_PL/LC_MESSAGES/javascript.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-27 01:54-0400\n" +"POT-Creation-Date: 2013-08-01 01:58-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,6 +42,7 @@ msgid "Click to expand" msgstr "Kliknij aby rozwinąć" #: ../../../../js/expand.js:41 ../../../../js/expand.js:45 +#: ../../../../js/expand.js:43 msgid "Hide expanded replies" msgstr "Schowaj rozwinięte odpowiedzi" diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index bc603e6776603e1b1c86a613577a3c9ddc23aad2..73f434f793e0925bd7bd1f91516ca303002df41a 100644 GIT binary patch delta 6994 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 diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 20802b7d..8a46fda9 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-27 01:54-0400\n" +"POT-Creation-Date: 2013-08-01 01:58-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,7 @@ msgstr "" #: ../../../../inc/functions.php:1041 ../../../../inc/functions.php:1055 #: ../../../../inc/functions.php:1039 ../../../../inc/functions.php:1053 #: ../../../../inc/functions.php:1068 ../../../../inc/functions.php:1082 +#: ../../../../inc/functions.php:1079 ../../../../inc/functions.php:1093 msgid "Previous" msgstr "Wstecz" @@ -33,6 +34,7 @@ msgstr "Wstecz" #: ../../../../inc/functions.php:1060 ../../../../inc/functions.php:1069 #: ../../../../inc/functions.php:1058 ../../../../inc/functions.php:1067 #: ../../../../inc/functions.php:1087 ../../../../inc/functions.php:1096 +#: ../../../../inc/functions.php:1098 ../../../../inc/functions.php:1107 msgid "Next" msgstr "Dalej" @@ -57,6 +59,7 @@ msgid "all boards" msgstr "wszystkie boardy" #: /var/www/html/Tinyboard/inc/config.php:305 ../../../../inc/config.php:330 +#: ../../../../inc/config.php:334 msgid "You have been muted for unoriginal content." msgstr "Zostałeś zagłuszony za nieoryginalną treść." @@ -64,11 +67,12 @@ msgstr "Zostałeś zagłuszony za nieoryginalną treść." msgid "Anonymous" msgstr "Anonimowy" -#: /var/www/html/Tinyboard/inc/config.php:481 +#. The names on the post buttons. (On most imageboards, these are both "Post") +#: /var/www/html/Tinyboard/inc/config.php:481 ../../../../inc/config.php:552 msgid "New Topic" msgstr "Nowy wątek" -#: /var/www/html/Tinyboard/inc/config.php:482 +#: /var/www/html/Tinyboard/inc/config.php:482 ../../../../inc/config.php:553 msgid "New Reply" msgstr "Odpowiedz" @@ -84,19 +88,19 @@ msgstr "Szybka odpowiedź" #. Error messages #: /var/www/html/Tinyboard/inc/config.php:600 ../../../../inc/config.php:638 #: ../../../../inc/config.php:692 ../../../../inc/config.php:698 -#: ../../../../inc/config.php:695 +#: ../../../../inc/config.php:695 ../../../../inc/config.php:701 msgid "Lurk some more before posting." msgstr "Nie postuj pierwszego dnia." #: /var/www/html/Tinyboard/inc/config.php:601 ../../../../inc/config.php:639 #: ../../../../inc/config.php:693 ../../../../inc/config.php:699 -#: ../../../../inc/config.php:696 +#: ../../../../inc/config.php:696 ../../../../inc/config.php:702 msgid "You look like a bot." msgstr "Wyglądasz jak bot." #: /var/www/html/Tinyboard/inc/config.php:602 ../../../../inc/config.php:640 #: ../../../../inc/config.php:694 ../../../../inc/config.php:700 -#: ../../../../inc/config.php:697 +#: ../../../../inc/config.php:697 ../../../../inc/config.php:703 msgid "Your browser sent an invalid or no HTTP referer." msgstr "" "Twoja przeglądarka przesłała niepoprawny, bądź nie przesłała informacji o " @@ -104,161 +108,161 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:603 ../../../../inc/config.php:641 #: ../../../../inc/config.php:695 ../../../../inc/config.php:701 -#: ../../../../inc/config.php:698 +#: ../../../../inc/config.php:698 ../../../../inc/config.php:704 #, php-format msgid "The %s field was too long." msgstr "Pole %s jest za długie" #: /var/www/html/Tinyboard/inc/config.php:604 ../../../../inc/config.php:642 #: ../../../../inc/config.php:696 ../../../../inc/config.php:702 -#: ../../../../inc/config.php:699 +#: ../../../../inc/config.php:699 ../../../../inc/config.php:705 msgid "The body was too long." msgstr "Zawartość jest za długa." #: /var/www/html/Tinyboard/inc/config.php:605 ../../../../inc/config.php:643 #: ../../../../inc/config.php:697 ../../../../inc/config.php:703 -#: ../../../../inc/config.php:700 +#: ../../../../inc/config.php:700 ../../../../inc/config.php:706 msgid "The body was too short or empty." msgstr "Zawartość jest za krótka, bądź pusta." #: /var/www/html/Tinyboard/inc/config.php:606 ../../../../inc/config.php:644 #: ../../../../inc/config.php:698 ../../../../inc/config.php:704 -#: ../../../../inc/config.php:701 +#: ../../../../inc/config.php:701 ../../../../inc/config.php:707 msgid "You must upload an image." msgstr "Musisz wysłać obrazek." #: /var/www/html/Tinyboard/inc/config.php:607 ../../../../inc/config.php:645 #: ../../../../inc/config.php:699 ../../../../inc/config.php:705 -#: ../../../../inc/config.php:702 +#: ../../../../inc/config.php:702 ../../../../inc/config.php:708 msgid "The server failed to handle your upload." msgstr "Nie udało się obsłużyć twojego pliku." #: /var/www/html/Tinyboard/inc/config.php:608 ../../../../inc/config.php:646 #: ../../../../inc/config.php:700 ../../../../inc/config.php:706 -#: ../../../../inc/config.php:703 +#: ../../../../inc/config.php:703 ../../../../inc/config.php:709 msgid "Unsupported image format." msgstr "Niewspierany format obrazka." #: /var/www/html/Tinyboard/inc/config.php:609 ../../../../inc/config.php:647 #: ../../../../inc/config.php:701 ../../../../inc/config.php:707 -#: ../../../../inc/config.php:704 +#: ../../../../inc/config.php:704 ../../../../inc/config.php:710 msgid "Invalid board!" msgstr "Niepoprawny board!" #: /var/www/html/Tinyboard/inc/config.php:610 ../../../../inc/config.php:648 #: ../../../../inc/config.php:702 ../../../../inc/config.php:708 -#: ../../../../inc/config.php:705 +#: ../../../../inc/config.php:705 ../../../../inc/config.php:711 msgid "Thread specified does not exist." msgstr "Wybrany wątek nie istnieje." #: /var/www/html/Tinyboard/inc/config.php:611 ../../../../inc/config.php:649 #: ../../../../inc/config.php:703 ../../../../inc/config.php:709 -#: ../../../../inc/config.php:706 +#: ../../../../inc/config.php:706 ../../../../inc/config.php:712 msgid "Thread locked. You may not reply at this time." msgstr "Wątek jest zablokowany. Nie możesz w nim teraz postować." #: /var/www/html/Tinyboard/inc/config.php:612 ../../../../inc/config.php:650 #: ../../../../inc/config.php:706 ../../../../inc/config.php:712 -#: ../../../../inc/config.php:709 +#: ../../../../inc/config.php:709 ../../../../inc/config.php:715 msgid "You didn't make a post." msgstr "Nie zrobiłeś posta." #: /var/www/html/Tinyboard/inc/config.php:613 ../../../../inc/config.php:651 #: ../../../../inc/config.php:707 ../../../../inc/config.php:713 -#: ../../../../inc/config.php:710 +#: ../../../../inc/config.php:710 ../../../../inc/config.php:716 msgid "Flood detected; Post discarded." msgstr "Wykryto flood; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:614 ../../../../inc/config.php:652 #: ../../../../inc/config.php:708 ../../../../inc/config.php:714 -#: ../../../../inc/config.php:711 +#: ../../../../inc/config.php:711 ../../../../inc/config.php:717 msgid "Your request looks automated; Post discarded." msgstr "Twoje żądanie wygląda na zautomatyzowane; Post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:615 ../../../../inc/config.php:653 #: ../../../../inc/config.php:709 ../../../../inc/config.php:715 -#: ../../../../inc/config.php:712 +#: ../../../../inc/config.php:712 ../../../../inc/config.php:718 msgid "Unoriginal content!" msgstr "Nieoryginalna treść!" #: /var/www/html/Tinyboard/inc/config.php:616 ../../../../inc/config.php:654 #: ../../../../inc/config.php:710 ../../../../inc/config.php:716 -#: ../../../../inc/config.php:713 +#: ../../../../inc/config.php:713 ../../../../inc/config.php:719 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #: ../../../../inc/config.php:711 ../../../../inc/config.php:717 -#: ../../../../inc/config.php:714 +#: ../../../../inc/config.php:714 ../../../../inc/config.php:720 #, php-format msgid "You are muted! Expires in %d seconds." msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #: ../../../../inc/config.php:712 ../../../../inc/config.php:718 -#: ../../../../inc/config.php:715 +#: ../../../../inc/config.php:715 ../../../../inc/config.php:721 #, php-format msgid "Your IP address is listed in %s." msgstr "Twój adres IP jest na liście %s." #: /var/www/html/Tinyboard/inc/config.php:619 ../../../../inc/config.php:657 #: ../../../../inc/config.php:713 ../../../../inc/config.php:719 -#: ../../../../inc/config.php:716 +#: ../../../../inc/config.php:716 ../../../../inc/config.php:722 msgid "Too many links; flood detected." msgstr "Zbyt dużo linków; wykryto flood." #: /var/www/html/Tinyboard/inc/config.php:620 ../../../../inc/config.php:658 #: ../../../../inc/config.php:714 ../../../../inc/config.php:720 -#: ../../../../inc/config.php:717 +#: ../../../../inc/config.php:717 ../../../../inc/config.php:723 msgid "Too many cites; post discarded." msgstr "Zbyt dużo cytatów; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:621 ../../../../inc/config.php:659 #: ../../../../inc/config.php:715 ../../../../inc/config.php:721 -#: ../../../../inc/config.php:718 +#: ../../../../inc/config.php:718 ../../../../inc/config.php:724 msgid "Too many cross-board links; post discarded." msgstr "Zbyt dużo linków między boardami; post odrzucony." #: /var/www/html/Tinyboard/inc/config.php:622 ../../../../inc/config.php:660 #: ../../../../inc/config.php:716 ../../../../inc/config.php:722 -#: ../../../../inc/config.php:719 +#: ../../../../inc/config.php:719 ../../../../inc/config.php:725 msgid "You didn't select anything to delete." msgstr "Nie wybrano nic do usunięcia." #: /var/www/html/Tinyboard/inc/config.php:623 ../../../../inc/config.php:661 #: ../../../../inc/config.php:717 ../../../../inc/config.php:723 -#: ../../../../inc/config.php:720 +#: ../../../../inc/config.php:720 ../../../../inc/config.php:726 msgid "You didn't select anything to report." msgstr "Nie wybrano nic do zgłoszenia." #: /var/www/html/Tinyboard/inc/config.php:624 ../../../../inc/config.php:662 #: ../../../../inc/config.php:718 ../../../../inc/config.php:724 -#: ../../../../inc/config.php:721 +#: ../../../../inc/config.php:721 ../../../../inc/config.php:727 msgid "You can't report that many posts at once." msgstr "Nie możesz raportować tyle postów na raz." #: /var/www/html/Tinyboard/inc/config.php:625 ../../../../inc/config.php:663 #: ../../../../inc/config.php:719 ../../../../inc/config.php:725 -#: ../../../../inc/config.php:722 +#: ../../../../inc/config.php:722 ../../../../inc/config.php:728 msgid "Wrong password…" msgstr "Niepoprawne hasło" #: /var/www/html/Tinyboard/inc/config.php:626 ../../../../inc/config.php:664 #: ../../../../inc/config.php:720 ../../../../inc/config.php:726 -#: ../../../../inc/config.php:723 +#: ../../../../inc/config.php:723 ../../../../inc/config.php:729 msgid "Invalid image." msgstr "Niepoprawny obrazek." #: /var/www/html/Tinyboard/inc/config.php:627 ../../../../inc/config.php:665 #: ../../../../inc/config.php:721 ../../../../inc/config.php:727 -#: ../../../../inc/config.php:724 +#: ../../../../inc/config.php:724 ../../../../inc/config.php:730 msgid "Unknown file extension." msgstr "Nieznane rozszerzenie pliku." #: /var/www/html/Tinyboard/inc/config.php:628 ../../../../inc/config.php:666 #: ../../../../inc/config.php:722 ../../../../inc/config.php:728 -#: ../../../../inc/config.php:725 +#: ../../../../inc/config.php:725 ../../../../inc/config.php:731 msgid "Maximum file size: %maxsz% bytes
    Your file's size: %filesz% bytes" msgstr "" "Maksymalny rozmiar pliku: %maxsz% bajtów
    Rozmiar twojego pliku: %filesz% " @@ -266,33 +270,33 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:629 ../../../../inc/config.php:667 #: ../../../../inc/config.php:723 ../../../../inc/config.php:729 -#: ../../../../inc/config.php:726 +#: ../../../../inc/config.php:726 ../../../../inc/config.php:732 msgid "The file was too big." msgstr "Plik jest za duży." #: /var/www/html/Tinyboard/inc/config.php:630 ../../../../inc/config.php:668 #: ../../../../inc/config.php:724 ../../../../inc/config.php:730 -#: ../../../../inc/config.php:727 +#: ../../../../inc/config.php:727 ../../../../inc/config.php:733 msgid "Invalid archive!" msgstr "Niepoprawne archiwum!" #: /var/www/html/Tinyboard/inc/config.php:631 ../../../../inc/config.php:669 #: ../../../../inc/config.php:725 ../../../../inc/config.php:731 -#: ../../../../inc/config.php:728 +#: ../../../../inc/config.php:728 ../../../../inc/config.php:734 #, php-format msgid "That file already exists!" msgstr "Ten plik już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:632 ../../../../inc/config.php:670 #: ../../../../inc/config.php:727 ../../../../inc/config.php:733 -#: ../../../../inc/config.php:730 +#: ../../../../inc/config.php:730 ../../../../inc/config.php:736 #, php-format msgid "You'll have to wait another %s before deleting that." msgstr "Musisz poczekać kolejne %s przed usunięciem tego." #: /var/www/html/Tinyboard/inc/config.php:633 ../../../../inc/config.php:671 #: ../../../../inc/config.php:728 ../../../../inc/config.php:734 -#: ../../../../inc/config.php:731 +#: ../../../../inc/config.php:731 ../../../../inc/config.php:737 msgid "MIME type detection XSS exploit (IE) detected; post discarded." msgstr "" "Wykryto próbę wykorzystania luki wykrywania typu MIME (XSS w IE); post " @@ -300,31 +304,31 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:634 ../../../../inc/config.php:672 #: ../../../../inc/config.php:729 ../../../../inc/config.php:735 -#: ../../../../inc/config.php:732 +#: ../../../../inc/config.php:732 ../../../../inc/config.php:738 msgid "Couldn't make sense of the URL of the video you tried to embed." msgstr "Nie można było zrozumieć URL-a wideo, którego próbowano zapostować." #: /var/www/html/Tinyboard/inc/config.php:635 ../../../../inc/config.php:673 #: ../../../../inc/config.php:730 ../../../../inc/config.php:736 -#: ../../../../inc/config.php:733 +#: ../../../../inc/config.php:733 ../../../../inc/config.php:739 msgid "You seem to have mistyped the verification." msgstr "Wygląda na to, że przepisano źle weryfikację." #: /var/www/html/Tinyboard/inc/config.php:638 ../../../../inc/config.php:676 #: ../../../../inc/config.php:734 ../../../../inc/config.php:740 -#: ../../../../inc/config.php:737 +#: ../../../../inc/config.php:737 ../../../../inc/config.php:743 msgid "Invalid username and/or password." msgstr "Błędna nazwa użytkownika, bądź hasło" #: /var/www/html/Tinyboard/inc/config.php:639 ../../../../inc/config.php:677 #: ../../../../inc/config.php:735 ../../../../inc/config.php:741 -#: ../../../../inc/config.php:738 +#: ../../../../inc/config.php:738 ../../../../inc/config.php:744 msgid "You are not a mod…" msgstr "Nie jesteś moderatorem" #: /var/www/html/Tinyboard/inc/config.php:640 ../../../../inc/config.php:678 #: ../../../../inc/config.php:736 ../../../../inc/config.php:742 -#: ../../../../inc/config.php:739 +#: ../../../../inc/config.php:739 ../../../../inc/config.php:745 msgid "" "Invalid username and/or password. Your user may have been deleted or changed." msgstr "" @@ -333,65 +337,65 @@ msgstr "" #: /var/www/html/Tinyboard/inc/config.php:641 ../../../../inc/config.php:679 #: ../../../../inc/config.php:737 ../../../../inc/config.php:743 -#: ../../../../inc/config.php:740 +#: ../../../../inc/config.php:740 ../../../../inc/config.php:746 msgid "Invalid/malformed cookies." msgstr "Niepoprawne/zmodyfikowane pliki cookie." #: /var/www/html/Tinyboard/inc/config.php:642 ../../../../inc/config.php:680 #: ../../../../inc/config.php:738 ../../../../inc/config.php:744 -#: ../../../../inc/config.php:741 +#: ../../../../inc/config.php:741 ../../../../inc/config.php:747 msgid "Your browser didn't submit an input when it should have." msgstr "Twoja przeglądarka nie wysłała pola, kiedy powinna." #: /var/www/html/Tinyboard/inc/config.php:643 ../../../../inc/config.php:681 #: ../../../../inc/config.php:739 ../../../../inc/config.php:745 -#: ../../../../inc/config.php:742 +#: ../../../../inc/config.php:742 ../../../../inc/config.php:748 #, php-format msgid "The %s field is required." msgstr "Pole %s jest wymagane." #: /var/www/html/Tinyboard/inc/config.php:644 ../../../../inc/config.php:682 #: ../../../../inc/config.php:740 ../../../../inc/config.php:746 -#: ../../../../inc/config.php:743 +#: ../../../../inc/config.php:743 ../../../../inc/config.php:749 #, php-format msgid "The %s field was invalid." msgstr "Pole %s jest niepoprawne." #: /var/www/html/Tinyboard/inc/config.php:645 ../../../../inc/config.php:683 #: ../../../../inc/config.php:741 ../../../../inc/config.php:747 -#: ../../../../inc/config.php:744 +#: ../../../../inc/config.php:744 ../../../../inc/config.php:750 #, php-format msgid "There is already a %s board." msgstr "Już istnieje board %s" #: /var/www/html/Tinyboard/inc/config.php:646 ../../../../inc/config.php:684 #: ../../../../inc/config.php:742 ../../../../inc/config.php:748 -#: ../../../../inc/config.php:745 +#: ../../../../inc/config.php:745 ../../../../inc/config.php:751 msgid "You don't have permission to do that." msgstr "Nie masz uprawnień do wykonania tej czynności." #: /var/www/html/Tinyboard/inc/config.php:647 ../../../../inc/config.php:685 #: ../../../../inc/config.php:743 ../../../../inc/config.php:749 -#: ../../../../inc/config.php:746 +#: ../../../../inc/config.php:746 ../../../../inc/config.php:752 msgid "That post doesn't exist…" msgstr "Ten post nie istnieje..." #: /var/www/html/Tinyboard/inc/config.php:648 ../../../../inc/config.php:686 #: ../../../../inc/config.php:744 ../../../../inc/config.php:750 -#: ../../../../inc/config.php:747 +#: ../../../../inc/config.php:747 ../../../../inc/config.php:753 msgid "Page not found." msgstr "Strona nie znaleziona." #: /var/www/html/Tinyboard/inc/config.php:649 ../../../../inc/config.php:687 #: ../../../../inc/config.php:745 ../../../../inc/config.php:751 -#: ../../../../inc/config.php:748 +#: ../../../../inc/config.php:748 ../../../../inc/config.php:754 #, php-format msgid "That mod already exists!" msgstr "Ten moderator już istnieje!" #: /var/www/html/Tinyboard/inc/config.php:650 ../../../../inc/config.php:688 #: ../../../../inc/config.php:746 ../../../../inc/config.php:752 -#: ../../../../inc/config.php:749 +#: ../../../../inc/config.php:749 ../../../../inc/config.php:755 msgid "That theme doesn't exist!" msgstr "Ten dodatek nie istnieje!" @@ -430,6 +434,7 @@ msgstr "[Przenieś]" #. Default public ban message. #. In public ban messages, %length% is replaced with "for x days" or "permanently" (with %LENGTH% being the uppercase equivalent). #: /var/www/html/Tinyboard/inc/config.php:801 ../../../../inc/config.php:911 +#: ../../../../inc/config.php:917 msgid "USER WAS BANNED FOR THIS POST" msgstr "UŻYTKOWNIK ZOSTAŁ ZBANOWANY ZA TEGO POSTA" @@ -438,20 +443,21 @@ msgstr "UŻYTKOWNIK ZOSTAŁ ZBANOWANY ZA TEGO POSTA" msgid "Moved to %s." msgstr "Przeniesiono do %s." -#: /var/www/html/Tinyboard/inc/display.php:80 +#: /var/www/html/Tinyboard/inc/display.php:80 ../../../../inc/display.php:75 msgid "Error" msgstr "Błąd" -#: /var/www/html/Tinyboard/inc/display.php:81 +#: /var/www/html/Tinyboard/inc/display.php:81 ../../../../inc/display.php:76 msgid "An error has occured." msgstr "Wystąpił błąd." -#: /var/www/html/Tinyboard/inc/display.php:87 +#: /var/www/html/Tinyboard/inc/display.php:87 ../../../../inc/display.php:82 msgid "Go back" msgstr "Wróć" #: /var/www/html/Tinyboard/inc/display.php:97 ../../../../inc/display.php:91 #: ../../../../inc/mod/pages.php:59 ../../../../inc/mod/pages.php:62 +#: ../../../../inc/display.php:92 msgid "Login" msgstr "Logowanie" @@ -469,31 +475,34 @@ msgstr "" #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:27 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:27 #: ../../../../templates/cache/82/40/4c4a4b82f787181e6500ce83494d.php:27 +#: ../../../../inc/display.php:423 msgid "Delete" msgstr "Usuń" #: /var/www/html/Tinyboard/inc/display.php:272 -#: /var/www/html/Tinyboard/inc/display.php:365 +#: /var/www/html/Tinyboard/inc/display.php:365 ../../../../inc/display.php:423 msgid "Are you sure you want to delete this?" msgstr "Czy jesteś pewien, że chcesz to usunąć?" #: /var/www/html/Tinyboard/inc/display.php:276 -#: /var/www/html/Tinyboard/inc/display.php:369 +#: /var/www/html/Tinyboard/inc/display.php:369 ../../../../inc/display.php:427 msgid "Delete all posts by IP" msgstr "Usuń wszystkie posty z tego adresu IP" #: /var/www/html/Tinyboard/inc/display.php:276 -#: /var/www/html/Tinyboard/inc/display.php:369 +#: /var/www/html/Tinyboard/inc/display.php:369 ../../../../inc/display.php:427 msgid "Are you sure you want to delete all posts by this IP address?" msgstr "Czy na pewno chcesz usunąć wszystkie posty z tego adresu IP?" #: /var/www/html/Tinyboard/inc/display.php:280 -#: /var/www/html/Tinyboard/inc/display.php:373 +#: /var/www/html/Tinyboard/inc/display.php:373 ../../../../inc/display.php:334 +#: ../../../../inc/display.php:435 msgid "Ban" msgstr "Ban" #: /var/www/html/Tinyboard/inc/display.php:284 -#: /var/www/html/Tinyboard/inc/display.php:377 +#: /var/www/html/Tinyboard/inc/display.php:377 ../../../../inc/display.php:338 +#: ../../../../inc/display.php:439 msgid "Ban & Delete" msgstr "Usuń i zbanuj" @@ -506,34 +515,36 @@ msgstr "Usuń plik" #: /var/www/html/Tinyboard/inc/display.php:408 #: ../../../../inc/mod/pages.php:1080 ../../../../inc/mod/pages.php:1105 #: ../../../../inc/mod/pages.php:1239 ../../../../inc/mod/pages.php:1242 +#: ../../../../inc/display.php:346 ../../../../inc/display.php:470 +#: ../../../../inc/mod/pages.php:1314 msgid "Edit post" msgstr "Edytuj post" -#: /var/www/html/Tinyboard/inc/display.php:386 +#: /var/www/html/Tinyboard/inc/display.php:386 ../../../../inc/display.php:448 msgid "Make thread not sticky" msgstr "Odklej wątek" -#: /var/www/html/Tinyboard/inc/display.php:388 +#: /var/www/html/Tinyboard/inc/display.php:388 ../../../../inc/display.php:450 msgid "Make thread sticky" msgstr "Przyklej wątek" -#: /var/www/html/Tinyboard/inc/display.php:392 +#: /var/www/html/Tinyboard/inc/display.php:392 ../../../../inc/display.php:454 msgid "Allow thread to be bumped" msgstr "Zezwól wątkowi na bumpowanie" -#: /var/www/html/Tinyboard/inc/display.php:394 +#: /var/www/html/Tinyboard/inc/display.php:394 ../../../../inc/display.php:456 msgid "Prevent thread from being bumped" msgstr "Zabroń wątkowi na bumpowanie" -#: /var/www/html/Tinyboard/inc/display.php:399 +#: /var/www/html/Tinyboard/inc/display.php:399 ../../../../inc/display.php:461 msgid "Unlock thread" msgstr "Odblokuj wątek" -#: /var/www/html/Tinyboard/inc/display.php:401 +#: /var/www/html/Tinyboard/inc/display.php:401 ../../../../inc/display.php:463 msgid "Lock thread" msgstr "Zablokuj wątek" -#: /var/www/html/Tinyboard/inc/display.php:404 +#: /var/www/html/Tinyboard/inc/display.php:404 ../../../../inc/display.php:466 msgid "Move thread to another board" msgstr "Przenieś wątek na inny board" @@ -703,6 +714,8 @@ msgstr "Weryfikacja" #. line 72 #. line 3 #. line 72 +#. line 3 +#. line 72 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:149 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:22 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:165 @@ -787,6 +800,8 @@ msgstr "Flagi" #. line 99 #. line 98 #. line 99 +#. line 98 +#. line 99 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:188 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:191 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:215 @@ -854,6 +869,8 @@ msgstr "Przyklejony" #. line 103 #. line 102 #. line 103 +#. line 102 +#. line 103 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:200 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:203 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:227 @@ -921,6 +938,8 @@ msgstr "Zablokowany" #. line 107 #. line 106 #. line 107 +#. line 106 +#. line 107 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:212 #: /var/www/html/Tinyboard/templates/cache/1d/5e/91ec2bc929b77377b8b877d82db4.php:215 #: ../../../../templates/cache/d1/2d/eda9403e966240c642b13ca43eb6.php:239 @@ -1058,6 +1077,7 @@ msgstr "Tryb postowania: Odpowiedź" #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:172 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:127 #: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:173 +#: ../../../../templates/cache/aa/f6/f10fd83961bcd8c947af6ddf919d.php:174 msgid "Return" msgstr "Powrót" @@ -1079,6 +1099,7 @@ msgstr "Usuń post" #. line 106 #. line 8 #. line 32 +#. line 8 #: /var/www/html/Tinyboard/templates/cache/dd/1a/77e08f0c1b4ecf707c5a3e5a70be.php:32 #: /var/www/html/Tinyboard/mod.php:1801 #: ../../../../templates/cache/a8/a6/1022091d3402e085395b12e6279a.php:32 @@ -1116,6 +1137,7 @@ msgstr "Wiadomości prywatne" #: ../../../../inc/mod/pages.php:376 ../../../../inc/mod/pages.php:393 #: ../../../../inc/mod/pages.php:406 ../../../../inc/mod/pages.php:540 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:166 +#: ../../../../inc/mod/pages.php:604 msgid "News" msgstr "Aktualności" @@ -1123,7 +1145,7 @@ msgstr "Aktualności" #: ../../../../inc/mod/pages.php:1557 ../../../../inc/mod/pages.php:1657 #: ../../../../inc/mod/pages.php:1682 ../../../../inc/mod/pages.php:1816 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:207 -#: ../../../../inc/mod/pages.php:1831 +#: ../../../../inc/mod/pages.php:1831 ../../../../inc/mod/pages.php:1904 msgid "Report queue" msgstr "Kolejka zgłoszeń" @@ -1131,6 +1153,7 @@ msgstr "Kolejka zgłoszeń" #: ../../../../inc/mod/pages.php:664 ../../../../inc/mod/pages.php:705 #: ../../../../inc/mod/pages.php:721 ../../../../inc/mod/pages.php:855 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:224 +#: ../../../../inc/mod/pages.php:918 msgid "Ban list" msgstr "Lista banów" @@ -1138,7 +1161,7 @@ msgstr "Lista banów" #: ../../../../inc/mod/pages.php:1271 ../../../../inc/mod/pages.php:1369 #: ../../../../inc/mod/pages.php:1394 ../../../../inc/mod/pages.php:1528 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:232 -#: ../../../../inc/mod/pages.php:1543 +#: ../../../../inc/mod/pages.php:1543 ../../../../inc/mod/pages.php:1615 msgid "Manage users" msgstr "Zarządzaj użytkownikami" @@ -1153,6 +1176,7 @@ msgstr "Zmień swoje hasło" #: ../../../../inc/mod/pages.php:580 ../../../../inc/mod/pages.php:607 #: ../../../../templates/cache/55/dd/8ffe738533bd12359200e5745905.php:65 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:255 +#: ../../../../inc/mod/pages.php:644 ../../../../inc/mod/pages.php:671 msgid "Moderation log" msgstr "Log moderacji" @@ -1172,7 +1196,7 @@ msgstr "Pokaż konfigurację" #: ../../../../inc/mod/pages.php:1739 ../../../../inc/mod/pages.php:1805 #: ../../../../inc/mod/pages.php:1830 ../../../../inc/mod/pages.php:1964 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:247 -#: ../../../../inc/mod/pages.php:1979 +#: ../../../../inc/mod/pages.php:1979 ../../../../inc/mod/pages.php:2052 msgid "Manage themes" msgstr "Zarządzaj dodatkami" @@ -1196,7 +1220,7 @@ msgstr "Wyrażenie:" #: ../../../../templates/cache/c3/de/6ff26042c5b94cc80055e6f209d2.php:19 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:286 #: ../../../../templates/cache/4c/fb/a3bf13b0badfc09442bd42da1cce.php:19 -#: ../../../../search.php:165 +#: ../../../../search.php:165 ../../../../search.php:168 msgid "Search" msgstr "Szukaj" @@ -1276,12 +1300,14 @@ msgstr "Akcja" #: /var/www/html/Tinyboard/mod.php:528 ../../../../inc/mod/pages.php:1723 #: ../../../../inc/mod/pages.php:1789 ../../../../inc/mod/pages.php:1814 #: ../../../../inc/mod/pages.php:1948 ../../../../inc/mod/pages.php:1963 +#: ../../../../inc/mod/pages.php:2036 msgid "Themes directory doesn't exist!" msgstr "Katalog dodatków (themes) nie istnieje!" #: /var/www/html/Tinyboard/mod.php:530 ../../../../inc/mod/pages.php:1725 #: ../../../../inc/mod/pages.php:1791 ../../../../inc/mod/pages.php:1816 #: ../../../../inc/mod/pages.php:1950 ../../../../inc/mod/pages.php:1965 +#: ../../../../inc/mod/pages.php:2038 msgid "Cannot open themes directory; check permissions." msgstr "Nie można otworzyć katalogu dodatków (themes); sprawdź uprawnienia." @@ -1334,6 +1360,7 @@ msgstr "Instaluj" #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:263 #: ../../../../inc/mod/pages.php:1741 ../../../../inc/mod/pages.php:1745 #: ../../../../templates/cache/86/31/3f70fa8521e56d617b21133af4d8.php:98 +#: ../../../../inc/mod/pages.php:1814 ../../../../inc/mod/pages.php:1818 msgid "Rebuild" msgstr "Przebuduj" @@ -1361,6 +1388,7 @@ msgstr "Postuj na tablicy ogłoszeń" #: ../../../../inc/mod/pages.php:333 ../../../../inc/mod/pages.php:346 #: ../../../../inc/mod/pages.php:480 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:96 +#: ../../../../inc/mod/pages.php:543 msgid "Noticeboard" msgstr "Tablica ogłoszeń" @@ -1468,13 +1496,13 @@ msgstr "Konfiguracja" #: /var/www/html/Tinyboard/mod.php:2174 ../../../../inc/mod/pages.php:255 #: ../../../../inc/mod/pages.php:272 ../../../../inc/mod/pages.php:285 -#: ../../../../inc/mod/pages.php:419 +#: ../../../../inc/mod/pages.php:419 ../../../../inc/mod/pages.php:481 msgid "Couldn't open board after creation." msgstr "Nie można otworzyć boardu po utworzeniu." #: /var/www/html/Tinyboard/mod.php:2678 ../../../../inc/mod/pages.php:759 #: ../../../../inc/mod/pages.php:800 ../../../../inc/mod/pages.php:823 -#: ../../../../inc/mod/pages.php:957 +#: ../../../../inc/mod/pages.php:957 ../../../../inc/mod/pages.php:1020 msgid "Target and source board are the same." msgstr "Docelowy i źródłowy board są takie same." @@ -1484,6 +1512,7 @@ msgstr "Nie ma boardu na który można to przenieść; istnieje tylko jeden." #: ../../../../inc/config.php:689 ../../../../inc/config.php:747 #: ../../../../inc/config.php:753 ../../../../inc/config.php:750 +#: ../../../../inc/config.php:756 msgid "Invalid security token! Please go back and try again." msgstr "Niepoprawny token bezpieczeństwa! Proszę cofnąć i spróbować ponownie." @@ -1493,11 +1522,13 @@ msgstr "Potwierdź akcję" #: ../../../../inc/mod/pages.php:222 ../../../../inc/mod/pages.php:239 #: ../../../../inc/mod/pages.php:252 ../../../../inc/mod/pages.php:386 +#: ../../../../inc/mod/pages.php:431 msgid "Edit board" msgstr "Edytuj board" #: ../../../../inc/mod/pages.php:270 ../../../../inc/mod/pages.php:287 #: ../../../../inc/mod/pages.php:300 ../../../../inc/mod/pages.php:434 +#: ../../../../inc/mod/pages.php:496 msgid "New board" msgstr "Nowy board" @@ -1511,6 +1542,7 @@ msgstr "Nowy board" #: ../../../../inc/mod/pages.php:628 ../../../../inc/mod/pages.php:762 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:247 #: ../../../../templates/cache/18/9c/c365d711719f494c684aab98a4ae.php:65 +#: ../../../../inc/mod/pages.php:825 msgid "IP" msgstr "adres IP" @@ -1520,12 +1552,14 @@ msgstr "adres IP" #: ../../../../inc/mod/pages.php:638 ../../../../inc/mod/pages.php:1053 #: ../../../../inc/mod/pages.php:772 ../../../../inc/mod/pages.php:1187 #: ../../../../templates/cache/24/a0/f1ddafed7a8f9625e747a5ca33f5.php:398 -#: ../../../../inc/mod/pages.php:1190 +#: ../../../../inc/mod/pages.php:1190 ../../../../inc/mod/pages.php:835 +#: ../../../../inc/mod/pages.php:1255 msgid "New ban" msgstr "Nowy ban" #: ../../../../inc/mod/pages.php:919 ../../../../inc/mod/pages.php:962 #: ../../../../inc/mod/pages.php:987 ../../../../inc/mod/pages.php:1121 +#: ../../../../inc/mod/pages.php:1184 msgid "Impossible to move thread; there is only one board." msgstr "Nie można przenieść wątku; istnieje tylko jeden board." @@ -1533,6 +1567,7 @@ msgstr "Nie można przenieść wątku; istnieje tylko jeden board." #: ../../../../inc/mod/pages.php:923 ../../../../inc/mod/pages.php:966 #: ../../../../inc/mod/pages.php:991 ../../../../inc/mod/pages.php:1125 #: ../../../../templates/cache/dd/1a/7d548894242b9d7bff167de40716.php:106 +#: ../../../../inc/mod/pages.php:1188 msgid "Move thread" msgstr "Przenieś wątek" @@ -1541,6 +1576,7 @@ msgstr "Przenieś wątek" #: ../../../../inc/mod/pages.php:1332 ../../../../inc/mod/pages.php:1381 #: ../../../../inc/mod/pages.php:1466 ../../../../inc/mod/pages.php:1515 #: ../../../../inc/mod/pages.php:1477 ../../../../inc/mod/pages.php:1530 +#: ../../../../inc/mod/pages.php:1549 ../../../../inc/mod/pages.php:1602 msgid "Edit user" msgstr "Edytuj użytkownika" @@ -1550,12 +1586,13 @@ msgstr "Edytuj użytkownika" #: ../../../../inc/mod/pages.php:1456 ../../../../inc/mod/pages.php:1528 #: ../../../../inc/mod/pages.php:1590 ../../../../inc/mod/pages.php:1662 #: ../../../../inc/mod/pages.php:1605 ../../../../inc/mod/pages.php:1677 +#: ../../../../inc/mod/pages.php:1750 msgid "New PM for" msgstr "Nowe PW dla" #: ../../../../inc/mod/pages.php:1337 ../../../../inc/mod/pages.php:1435 #: ../../../../inc/mod/pages.php:1460 ../../../../inc/mod/pages.php:1594 -#: ../../../../inc/mod/pages.php:1609 +#: ../../../../inc/mod/pages.php:1609 ../../../../inc/mod/pages.php:1681 msgid "Private message" msgstr "Prywatna wiadomość" @@ -1563,39 +1600,39 @@ msgstr "Prywatna wiadomość" #: ../../../../inc/mod/pages.php:1358 ../../../../inc/mod/pages.php:1456 #: ../../../../inc/mod/pages.php:1481 ../../../../inc/mod/pages.php:1615 #: ../../../../templates/cache/3a/df/ab38a77244cb9c729b4c6f99759a.php:171 -#: ../../../../inc/mod/pages.php:1630 +#: ../../../../inc/mod/pages.php:1630 ../../../../inc/mod/pages.php:1702 msgid "PM inbox" msgstr "Odebrane PW" #: ../../../../inc/mod/pages.php:1679 ../../../../inc/mod/pages.php:1779 #: ../../../../inc/mod/pages.php:1804 ../../../../inc/mod/pages.php:1938 -#: ../../../../inc/mod/pages.php:1953 +#: ../../../../inc/mod/pages.php:1953 ../../../../inc/mod/pages.php:2026 msgid "Config editor" msgstr "Edytor konfiguracji" #: ../../../../inc/mod/pages.php:1713 ../../../../inc/mod/pages.php:1945 #: ../../../../inc/mod/pages.php:1970 ../../../../inc/mod/pages.php:2104 -#: ../../../../inc/mod/pages.php:2119 +#: ../../../../inc/mod/pages.php:2119 ../../../../inc/mod/pages.php:2192 msgid "Debug: Anti-spam" msgstr "Debug: Antyspam" #: ../../../../inc/mod/pages.php:1801 ../../../../inc/mod/pages.php:1867 #: ../../../../inc/mod/pages.php:1892 ../../../../inc/mod/pages.php:2026 -#: ../../../../inc/mod/pages.php:2041 +#: ../../../../inc/mod/pages.php:2041 ../../../../inc/mod/pages.php:2114 #, php-format msgid "Installed theme: %s" msgstr "Zainstalowano dodatek: %s" #: ../../../../inc/mod/pages.php:1811 ../../../../inc/mod/pages.php:1878 #: ../../../../inc/mod/pages.php:1903 ../../../../inc/mod/pages.php:2037 -#: ../../../../inc/mod/pages.php:2052 +#: ../../../../inc/mod/pages.php:2052 ../../../../inc/mod/pages.php:2125 #, php-format msgid "Configuring theme: %s" msgstr "Konfigurowanie dodatku: %s" #: ../../../../inc/mod/pages.php:1839 ../../../../inc/mod/pages.php:1906 #: ../../../../inc/mod/pages.php:1931 ../../../../inc/mod/pages.php:2065 -#: ../../../../inc/mod/pages.php:2080 +#: ../../../../inc/mod/pages.php:2080 ../../../../inc/mod/pages.php:2153 #, php-format msgid "Rebuilt theme: %s" msgstr "Przebudowano dodatek: %s" @@ -1607,24 +1644,24 @@ msgid "" msgstr "" #: ../../../../inc/config.php:704 ../../../../inc/config.php:710 -#: ../../../../inc/config.php:707 +#: ../../../../inc/config.php:707 ../../../../inc/config.php:713 msgid "Thread has reached its maximum reply limit." msgstr "Ten temat osiągnął swój maksymalny limit odpowiedzi." #: ../../../../inc/config.php:705 ../../../../inc/config.php:711 -#: ../../../../inc/config.php:708 +#: ../../../../inc/config.php:708 ../../../../inc/config.php:714 msgid "Thread has reached its maximum image limit." msgstr "Ten temat osiągnął swój maksymalny limit obrazków." #: ../../../../inc/config.php:726 ../../../../inc/config.php:732 -#: ../../../../inc/config.php:729 +#: ../../../../inc/config.php:729 ../../../../inc/config.php:735 #, php-format msgid "That file already exists in this thread!" msgstr "Ten plik już istnieje w tym temacie!" #. Moderator errors #: ../../../../inc/config.php:733 ../../../../inc/config.php:739 -#: ../../../../inc/config.php:736 +#: ../../../../inc/config.php:736 ../../../../inc/config.php:742 #, php-format msgid "" "You are only allowed to unban %s users at a time. You tried to unban %u " @@ -1634,11 +1671,13 @@ msgstr "" #: ../../../../inc/mod/pages.php:1969 ../../../../inc/mod/pages.php:1994 #: ../../../../inc/mod/pages.php:2128 ../../../../inc/mod/pages.php:2143 +#: ../../../../inc/mod/pages.php:2216 msgid "Debug: Recent posts" msgstr "Debug: Ostatnie posty" #: ../../../../inc/mod/pages.php:1993 ../../../../inc/mod/pages.php:2018 #: ../../../../inc/mod/pages.php:2152 ../../../../inc/mod/pages.php:2167 +#: ../../../../inc/mod/pages.php:2240 msgid "Debug: SQL" msgstr "Debug: SQL" @@ -1651,7 +1690,7 @@ msgstr[1] "%count% odpowiedzi" msgstr[2] "%count% odpowiedzi" #. $results now contains the search results -#: ../../../../inc/mod/pages.php:290 +#: ../../../../inc/mod/pages.php:290 ../../../../inc/mod/pages.php:335 msgid "Search results" msgstr "Wyniki wyszukiwania" @@ -1976,11 +2015,11 @@ msgstr "Wyszukiwanie postów jest wyłączone" msgid "Wait a while before searching again, please." msgstr "Proszę poczekać chwilę przed ponownym szukaniem." -#: ../../../../search.php:128 +#: ../../../../search.php:128 ../../../../search.php:131 msgid "Query too broad." msgstr "Zapytanie zbyt szerokie." -#: ../../../../search.php:149 +#: ../../../../search.php:149 ../../../../search.php:152 #, php-format msgid "%d result in" msgid_plural "%d results in" @@ -1988,11 +2027,11 @@ msgstr[0] "%d wynik na" msgstr[1] "%d wyniki na" msgstr[2] "%d wyników na" -#: ../../../../search.php:160 +#: ../../../../search.php:160 ../../../../search.php:163 msgid "No results." msgstr "Brak wyników." -#: ../../../../inc/functions.php:594 +#: ../../../../inc/functions.php:594 ../../../../inc/functions.php:603 msgid "Banned!" msgstr "Zbanowany!" @@ -2005,6 +2044,7 @@ msgid "You are not banned." msgstr "Nie jesteś zbanowany." #: ../../../../inc/functions.php:549 ../../../../inc/functions.php:566 +#: ../../../../inc/functions.php:558 ../../../../inc/functions.php:575 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" @@ -2012,6 +2052,7 @@ msgstr[1] "sekundy" msgstr[2] "sekund" #: ../../../../inc/functions.php:551 ../../../../inc/functions.php:568 +#: ../../../../inc/functions.php:560 ../../../../inc/functions.php:577 msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" @@ -2019,6 +2060,7 @@ msgstr[1] "minuty" msgstr[2] "minut" #: ../../../../inc/functions.php:553 ../../../../inc/functions.php:570 +#: ../../../../inc/functions.php:562 ../../../../inc/functions.php:579 msgid "hour" msgid_plural "hours" msgstr[0] "godzina" @@ -2026,6 +2068,7 @@ msgstr[1] "godziny" msgstr[2] "godzin" #: ../../../../inc/functions.php:555 ../../../../inc/functions.php:572 +#: ../../../../inc/functions.php:564 ../../../../inc/functions.php:581 msgid "day" msgid_plural "days" msgstr[0] "dzień" @@ -2033,6 +2076,7 @@ msgstr[1] "dni" msgstr[2] "dni" #: ../../../../inc/functions.php:557 ../../../../inc/functions.php:574 +#: ../../../../inc/functions.php:566 ../../../../inc/functions.php:583 msgid "week" msgid_plural "weeks" msgstr[0] "tydzień" @@ -2040,6 +2084,7 @@ msgstr[1] "tygodnie" msgstr[2] "tygodni" #: ../../../../inc/functions.php:560 ../../../../inc/functions.php:577 +#: ../../../../inc/functions.php:569 ../../../../inc/functions.php:586 msgid "year" msgid_plural "years" msgstr[0] "rok" @@ -2097,3 +2142,47 @@ msgstr "Nie ma dostępnych dodatków." #: ../../../../templates/cache/d1/99/467985632043e204070d354b8290.php:91 msgid "Install theme" msgstr "Zainstaluj dodatek" + +#: ../../../../inc/display.php:211 +#, php-format +msgid "Post too long. Click here to view the full text." +msgstr "Post za długi. Kliknij tutaj, aby zobaczyć jego pełną treść." + +#: ../../../../inc/display.php:342 ../../../../inc/display.php:443 +msgid "Delete file" +msgstr "Usuń plik" + +#: ../../../../inc/display.php:342 ../../../../inc/display.php:443 +msgid "Are you sure you want to delete this file?" +msgstr "Czy jesteś pewien, że chcesz usunąć ten plik?" + +#: ../../../../inc/display.php:431 +msgid "Delete all posts by IP across all boards" +msgstr "Usuń wszystkie posty z tego IP ze wszystkich boardów" + +#: ../../../../inc/display.php:431 +msgid "" +"Are you sure you want to delete all posts by this IP address, across all " +"boards?" +msgstr "" +"Czy jesteś pewien, że chcesz usunąć wszystkie posty z tego adresu IP, ze " +"wszystkich boardów?" + +#. Page footer +#: ../../../../inc/config.php:564 +msgid "" +"All trademarks, copyrights, comments, and images on this page are owned by " +"and are the responsibility of their respective parties." +msgstr "" +"Wszystkie znaki towarowe, prawa autorskie, komentarze oraz obrazki na tej " +"stronie są własnością i odpowiedzialność za nie spoczywa na ich odpowiednich " +"właścicielach." + +#: ../../../../inc/mod/pages.php:267 +msgid "There are no boards to search!" +msgstr "Nie ma boardów do przeszukania!" + +#. Print error +#: ../../../../inc/database.php:72 +msgid "Database error: " +msgstr "Błąd bazy danych: " From 0aac198c42dde176b22bba43b8b33460e6c9fda8 Mon Sep 17 00:00:00 2001 From: Jakub Skrzypnik Date: Thu, 1 Aug 2013 08:46:24 +0200 Subject: [PATCH 176/289] Correcting polish locale a bit --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 8a46fda9..e8caf477 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -61,7 +61,7 @@ msgstr "wszystkie boardy" #: /var/www/html/Tinyboard/inc/config.php:305 ../../../../inc/config.php:330 #: ../../../../inc/config.php:334 msgid "You have been muted for unoriginal content." -msgstr "Zostałeś zagłuszony za nieoryginalną treść." +msgstr "Zostałeś wyciszony za nieoryginalną treść." #: /var/www/html/Tinyboard/inc/config.php:447 msgid "Anonymous" @@ -197,7 +197,7 @@ msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: ../../../../inc/config.php:714 ../../../../inc/config.php:720 #, php-format msgid "You are muted! Expires in %d seconds." -msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." +msgstr "Jesteś wyciszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #: ../../../../inc/config.php:712 ../../../../inc/config.php:718 From 731905ed05eb7b2d516253594bc328a9a8475a69 Mon Sep 17 00:00:00 2001 From: Jakub Skrzypnik Date: Thu, 1 Aug 2013 08:49:14 +0200 Subject: [PATCH 177/289] Correcting polish locale a bit --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index e8caf477..a5a58616 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -190,7 +190,7 @@ msgstr "Nieoryginalna treść!" #: ../../../../inc/config.php:713 ../../../../inc/config.php:719 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." -msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." +msgstr "Nieoryginalna treść! Zostałeś wyciszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #: ../../../../inc/config.php:711 ../../../../inc/config.php:717 From 7dd57432a22e95397b509cba3c319cca1d5e364f Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 02:52:35 -0400 Subject: [PATCH 178/289] Compile Polish locale --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 20956 -> 20950 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 73f434f793e0925bd7bd1f91516ca303002df41a..d2807a3794a0d8d95da8d8effc6553a03cfc3c5d 100644 GIT binary patch delta 646 zcmXZYJ1>KA6vy#Xic-~!OG%5Qi!{-+E@?Gz>O|Xfj#46H?Jnw+SA_fuZAO<3- zMB*};8WCF;1`=KXAqEEDljlEu&iOt6+jE{vu4>73{^hqvMPw%<62S^a@g03wGbQ51 z0ERGXOqzTG>&Y$bz#R7D8V=z;>b?i8#TV3dZ|9`&FzY{w_; z!4K@kz>G)=Q>gowFo^|h#S`qrTO7bDwxP#z?&(H-;IL(j1S#?aF)X4^-~iKjg?aqI zFA$sYL(Sv2wiQJg{&h(GiL|(-JzM>mHZBzVU9l;;AU`^KPgQy$Bs0YVP z9yfgwyU5eVEc)qJaS)5B`%Y0ue}QqlN1fEdH-%o@IOqI{-x$FJc^~S?bExaqQ4iWg nedsRg1CG##*Vv4e@?Y z-RMTYHl*_jtR_!j6V78Frf?7sQ1<1q65mkPy<-qdQDrJ0MIcuGFp0DDODG4OqZeP% zkDu6qp14x|IE1o)6+@WDMm)u4ywiCBJ@j=(`JQf+2aXx0QVkR-f-cOUOdyLRc#TQ? z!Z0pRD`mq&?GZZYPtcB+C=)v)rT3w1Y)3h` zN9RG^4`T~?SUZO<`gI(@49dP7%IL4K7oSijweUkB7rAE2f8y14Vt_n=GV(=~bz3M0 sZKFJNALRkZ=)@bW#e8ncogA&+Tv@x{*~nc)49j0_i>3eT-MC@>1&Cr=mH+?% From 0a026c8f3fd62de31e3e7a0c091f0aed4fa5164c Mon Sep 17 00:00:00 2001 From: Jakub Skrzypnik Date: Thu, 1 Aug 2013 08:46:24 +0200 Subject: [PATCH 179/289] Correcting polish locale a bit --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index 8a46fda9..e8caf477 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -61,7 +61,7 @@ msgstr "wszystkie boardy" #: /var/www/html/Tinyboard/inc/config.php:305 ../../../../inc/config.php:330 #: ../../../../inc/config.php:334 msgid "You have been muted for unoriginal content." -msgstr "Zostałeś zagłuszony za nieoryginalną treść." +msgstr "Zostałeś wyciszony za nieoryginalną treść." #: /var/www/html/Tinyboard/inc/config.php:447 msgid "Anonymous" @@ -197,7 +197,7 @@ msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." #: ../../../../inc/config.php:714 ../../../../inc/config.php:720 #, php-format msgid "You are muted! Expires in %d seconds." -msgstr "Jesteś zagłuszony! Wygasa w ciągu %d sekund." +msgstr "Jesteś wyciszony! Wygasa w ciągu %d sekund." #: /var/www/html/Tinyboard/inc/config.php:618 ../../../../inc/config.php:656 #: ../../../../inc/config.php:712 ../../../../inc/config.php:718 From 00600f241ff0357f57abdcd3a9f4c88cbfc1f5bd Mon Sep 17 00:00:00 2001 From: Jakub Skrzypnik Date: Thu, 1 Aug 2013 08:49:14 +0200 Subject: [PATCH 180/289] Correcting polish locale a bit --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index e8caf477..a5a58616 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -190,7 +190,7 @@ msgstr "Nieoryginalna treść!" #: ../../../../inc/config.php:713 ../../../../inc/config.php:719 #, php-format msgid "Unoriginal content! You have been muted for %d seconds." -msgstr "Nieoryginalna treść! Zostałeś zagłuszony na %d sekund." +msgstr "Nieoryginalna treść! Zostałeś wyciszony na %d sekund." #: /var/www/html/Tinyboard/inc/config.php:617 ../../../../inc/config.php:655 #: ../../../../inc/config.php:711 ../../../../inc/config.php:717 From 9487eb4ac74afabe08b4c6a582bf385bda224aa3 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 1 Aug 2013 02:52:35 -0400 Subject: [PATCH 181/289] Compile Polish locale --- inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 20956 -> 20950 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index 73f434f793e0925bd7bd1f91516ca303002df41a..d2807a3794a0d8d95da8d8effc6553a03cfc3c5d 100644 GIT binary patch delta 646 zcmXZYJ1>KA6vy#Xic-~!OG%5Qi!{-+E@?Gz>O|Xfj#46H?Jnw+SA_fuZAO<3- zMB*};8WCF;1`=KXAqEEDljlEu&iOt6+jE{vu4>73{^hqvMPw%<62S^a@g03wGbQ51 z0ERGXOqzTG>&Y$bz#R7D8V=z;>b?i8#TV3dZ|9`&FzY{w_; z!4K@kz>G)=Q>gowFo^|h#S`qrTO7bDwxP#z?&(H-;IL(j1S#?aF)X4^-~iKjg?aqI zFA$sYL(Sv2wiQJg{&h(GiL|(-JzM>mHZBzVU9l;;AU`^KPgQy$Bs0YVP z9yfgwyU5eVEc)qJaS)5B`%Y0ue}QqlN1fEdH-%o@IOqI{-x$FJc^~S?bExaqQ4iWg nedsRg1CG##*Vv4e@?Y z-RMTYHl*_jtR_!j6V78Frf?7sQ1<1q65mkPy<-qdQDrJ0MIcuGFp0DDODG4OqZeP% zkDu6qp14x|IE1o)6+@WDMm)u4ywiCBJ@j=(`JQf+2aXx0QVkR-f-cOUOdyLRc#TQ? z!Z0pRD`mq&?GZZYPtcB+C=)v)rT3w1Y)3h` zN9RG^4`T~?SUZO<`gI(@49dP7%IL4K7oSijweUkB7rAE2f8y14Vt_n=GV(=~bz3M0 sZKFJNALRkZ=)@bW#e8ncogA&+Tv@x{*~nc)49j0_i>3eT-MC@>1&Cr=mH+?% From c1912b2a90c15eb46196abe60cd4ed0c324ec634 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Thu, 1 Aug 2013 03:30:45 -0400 Subject: [PATCH 182/289] Move stylesheets from Tinyboard-Tools here --- stylesheets/dark.css | 150 ++++++++ stylesheets/futaba+vichan.css | 88 +++++ stylesheets/img/fade-miku.png | Bin 0 -> 234 bytes stylesheets/img/fade-yellow.png | Bin 0 -> 47975 bytes stylesheets/img/testorange_bg.gif | Bin 0 -> 2618 bytes stylesheets/img/testorange_f_bg.gif | Bin 0 -> 143 bytes stylesheets/img/testorange_testo.png | Bin 0 -> 20588 bytes stylesheets/img/testorange_textarea_bg.gif | Bin 0 -> 292 bytes stylesheets/img/testorange_top_bg.gif | Bin 0 -> 6551 bytes stylesheets/miku.css | 87 +++++ stylesheets/testorange.css | 208 +++++++++++ stylesheets/wasabi.css | 391 +++++++++++++++++++++ 12 files changed, 924 insertions(+) create mode 100644 stylesheets/dark.css create mode 100644 stylesheets/futaba+vichan.css create mode 100644 stylesheets/img/fade-miku.png create mode 100644 stylesheets/img/fade-yellow.png create mode 100644 stylesheets/img/testorange_bg.gif create mode 100644 stylesheets/img/testorange_f_bg.gif create mode 100644 stylesheets/img/testorange_testo.png create mode 100644 stylesheets/img/testorange_textarea_bg.gif create mode 100644 stylesheets/img/testorange_top_bg.gif create mode 100644 stylesheets/miku.css create mode 100644 stylesheets/testorange.css create mode 100644 stylesheets/wasabi.css diff --git a/stylesheets/dark.css b/stylesheets/dark.css new file mode 100644 index 00000000..2248c9d3 --- /dev/null +++ b/stylesheets/dark.css @@ -0,0 +1,150 @@ +/** + * dark.css + * For AwsumChan by Circlepuller + */ +body { + background: #1E1E1E; + color: #999999; + font-family: sans-serif; + font-size: 12px; +} +h1 { + font-size: 20pt; + text-align: center; + letter-spacing: 0px; +} +div.title, h1 { + color: lime; + font-family: Arial, Helvetica, sans-serif; +} +div.title p { + font-size: 10px; +} +a:link, a:visited, p.intro a.email span.name { + color: #CCCCCC; + text-decoration: underline; + font-family: sans-serif; +} +a:link:hover, a:visited:hover { + color: #FF0000; + font-family: sans-serif; + text-decoration: underline overline; +} +a.post_no { + color: #AAAAAA; + text-decoration: none; +} +a.post_no:hover { + color: maroon; + text-decoration: underline overline; +} +div.post.reply { + background: #333333; + border: #555555 1px solid; +} +div.post.reply.highlighted { + background: transparent; + border: transparent 1px solid; +} +div.post.reply div.body a:link, div.post.reply div.body a:visited { + color: #CCCCCC; +} +div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { + color: #FF0000; +} +p.intro span.subject { + font-size: 12px; + font-family: sans-serif; + color: #446655; + font-weight: 800; +} +p.intro span.name { + color: #00CC00; + font-weight: 800; +} +p.intro a.capcode, p.intro a.nametag { + color: magenta; + margin-left: 0; +} +p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { + color: #00CCCC; +} +input[type="text"], textarea, select { + background: #333333; + color: #CCCCCC; + border: #666666 1px solid; + padding-left: 5px; + padding-right: -5px; + font-family: sans-serif; + font-size: 10pt; +} +input[type="password"] { + background: #333333; + color: #CCCCCC; + border: #666666 1px solid; +} +form table tr th { + background: #333333; + color: #AAAAAA; + font-weight: 800; + text-align: left; + padding: 0; +} +div.banner { + background: #00AA00; + color: #FFFFFF; + text-align: center; + width: 250px; + padding: 4px; + padding-left: 12px; + padding-right: 12px; + margin-left: auto; + margin-right: auto; + font-size: 12px; +} +input[type="submit"] { + background: #333333; + border: #888888 1px solid; + color: #CCCCCC; +} +input[type="submit"]:hover { + background: #555555; + border: #888888 1px solid; + color: #FF0000; +} +p.fileinfo a:hover { + text-decoration: underline; +} +span.trip { + color: #AAAAAA; +} +div.pages { + color: #AAAAAA; + background: #333333; + border: #666666 1px solid; + font-family: sans-serif; + font-size: 10pt; +} +div.pages a.selected { + color: #CCCCCC; +} +hr { + height: 1px; + border: #333333 1px solid; +} +div.boardlist { + color: #999999; +} +div.ban { + background-color: transparent; + border: transparent 0px solid; +} +div.ban h2 { + background: transparent; + color: lime; + font-size: 12px; +} +table.modlog tr th { + background: #333333; + color: #AAAAAA; +} diff --git a/stylesheets/futaba+vichan.css b/stylesheets/futaba+vichan.css new file mode 100644 index 00000000..be0ab672 --- /dev/null +++ b/stylesheets/futaba+vichan.css @@ -0,0 +1,88 @@ +/* +piwnichan style, based on futaba.css of Tinyboard */ + +body { + background: #ffe; + color: #800000; + font-family: sans-serif; + font-size: 13px; +} +div.title h1 { + font-size: 24px; +} +div.title p { + font-size: 10px; +} +div.pages { + font-size: 13px !important; +} +a:link, a:visited, p.intro a.email span.name { + color: #0000ff; + font-size: inherit; + text-decoration: inherit; +} +a:link:hover { + color: #d00; + text-decoration: inherit; +} +span.omitted { + color: gray; +} +a.post_no { + color: #800000; +} +div.post.reply { + border: 0px; + background: #f0e0d6; +} +div.post.reply.highlighted { + background: #f0c0b0; + border-color: #d9bfb7; +} +div.post.reply div.body a { + color: navy; +} +p.intro span.subject { + color: #d00; +} +form table tr th { + background: #EA8; +} +div.ban h2 { + background: #FCA; + color: inherit; +} +div.ban { + border-color: #800; +} +div.ban p { + color: black; +} +div.pages { + padding: 7px 5px; + color: maroon; + font-size: 12pt; + + background: none; + border-width: 1px; + border-style: inset; + +} +div.pages a.selected { + color: #800; +} +hr { + border-width: 1px; + border-style: inset; +} +div.boardlist { + color: #B86; +} +div.boardlist a { + color: #800; +} +unimportant, .unimportant * { + font-size: 13px; +} +table.modlog tr th { + background: #EA8; +} diff --git a/stylesheets/img/fade-miku.png b/stylesheets/img/fade-miku.png new file mode 100644 index 0000000000000000000000000000000000000000..a231913f1e4f1e4959ba1143d571682735e77dba GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^j6i&XgAGV(e(L@Tq*#ibJVQ8upoSx*1IXtr@Q5sC zVBi)4Va7{$>;3=*WlCHlN`mv#O3D+9QW+dm@{>{(+%k(&%kzt}ixr%MP1rVFUI0{= z;_2cTqA~I9rGuOe1|rQ5?Ki%A>~`*{-@6e0Us{VoSXuew?1U=Lt}HoxL;3_;h05O= z-nAWX!nkY>|K71-rDx#e*4%={9`hzEc}6Vi5?c@!y6n+=xy^H4{CRRHB=_mF7j>(C aB{A*hNzRkn9xM;EkHOQ`&t;ucLK6Tp!c@%w literal 0 HcmV?d00001 diff --git a/stylesheets/img/fade-yellow.png b/stylesheets/img/fade-yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..bd071754ad88bf493995e635fd058fafab11e68b GIT binary patch literal 47975 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 JI~5!Z)&K)-KUn|( literal 0 HcmV?d00001 diff --git a/stylesheets/img/testorange_testo.png b/stylesheets/img/testorange_testo.png new file mode 100644 index 0000000000000000000000000000000000000000..3d91c159125e9a61b00a1ec27c641b67362b61af GIT binary patch literal 20588 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 literal 0 HcmV?d00001 diff --git a/stylesheets/img/testorange_top_bg.gif b/stylesheets/img/testorange_top_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1d1828294769df41824d63387a4e3c94cbae35f GIT binary patch literal 6551 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 Mw+@X&!eHnB59N(})c^nh literal 0 HcmV?d00001 diff --git a/stylesheets/miku.css b/stylesheets/miku.css new file mode 100644 index 00000000..23fb1d9d --- /dev/null +++ b/stylesheets/miku.css @@ -0,0 +1,87 @@ +/** + * miku.css + * For AwsumChan by Circlepuller + */ +body { + background: #D2FFEE url('img/fade-miku.png') top repeat-x; +} + +a:link, a:visited { + text-decoration: none; + color: #0093AB; +} + +a:link:hover, a:visited:hover { + color: #DD0000; +} + +a.post_no { + color: #000033; +} + +p.intro a.email span.name { + color: #0093AB; +} + +p.intro a.email:hover span.name { + color: #DD0000; +} + +h2, div.title, h1 { + color: #800000; +} + +form table tr th { + background: #95D2D3; +} + +div.banner { + background-color: #E04000; +} + +div.post.op hr { + border-color: #B7C9D5; +} + +p.intro span.subject { + color: #117743; + font-weight: 800; +} + +p.intro span.name { + color: #117743; + font-weight: 800; +} + +div.post.reply.highlighted { + background: #9988EE; +} + +div.post.reply { + background: #B6DDDE; + border-color: #8FCCCD; +} + +div.ban { + border: 1px solid #0093AB; +} + +div.ban h2 { + background: #B6DDDE; + color: #0093AB; +} + +div.pages { + color: #8899AA; + background: #B6DDDE; + border-right: 1px solid #8FCCCD; + border-bottom: 1px solid #8FCCCD; +} + +hr { + border-color: #B7D9C5; +} + +div.boardlist { + color: #0093AB; +} diff --git a/stylesheets/testorange.css b/stylesheets/testorange.css new file mode 100644 index 00000000..7b1ce0a6 --- /dev/null +++ b/stylesheets/testorange.css @@ -0,0 +1,208 @@ +/* +piwnichan style, based on testorange.css from Karachan */ + +body { + font-family: sans-serif; + font-size: 12px; + color:#bebebe; + + background-color: #1e1e1e; + background-image: url('img/testorange_testo.png'), url('img/testorange_top_bg.gif'), url('img/testorange_bg.gif'); + background-repeat: no-repeat, repeat-x, repeat; + background-attachment: fixed, scroll, scroll; + background-position: right bottom, 0% 0%, 0% 0%; +} + +a:link, a:visited, div.post.reply div.body a { + color:#ff9100; + text-decoration: none; +} +a:link:hover, a:visited:hover, div.post.reply div.body a:hover { + color:#ffff00; +} + +a.email span.name { + color:#ff9100 !important; + +} + +input { + color: #000; + background: #fff; +} +textarea { + background: #dedede url('img/testorange_textarea_bg.gif') repeat-x; +} +input, textarea { + border: 1px #fff solid; +} + +hr { + width: 100%; + height: 1px; + border: none; + background: #707070; + overflow: hidden; +} + +.reflink a:hover{ + font-weight: bold; +} +.adminbar { + text-align:right; + clear:both; + float:right; +} +h1 { + clear:both; + text-align:center; + font-size: 2.5em; + color:#ff9100; + width:100%; +} +div.title { + color:#ff9100; +} +div.banner, .replymode, .catalogmode { + text-align:center; + margin: 5px 0 5px 0; + padding: 5px 2px 5px 2px; + color:#000; + font-weight: bold; + width:100%; +} +.postblock, form table th { + color: #000; + font-size: 11px; + font-weight: bold; + text-align: center !important; +} + +.postarea { +} +.rules { + width: 468px; + font-size: 10px; +} +.rules li { + margin-left: 1em; +} +.footer { + text-align:center; + font-size:12px; +} +.passvalid { + text-align:center; + width:100%; + color:#ffffff; +} +.dellist { + font-weight: bold; + text-align:center; +} +.delbuttons { + text-align:center; + padding-bottom:4px; + +} +.managehead { + background-color: #1e1e1e; + color: #bebebe; + padding:0px; +} +.postlists { + background: #000; + width:100%; + padding:0px; + color: #bebebe; +} +.row1 { + background-color: #1e1e1e; + color: #bebebe; +} +.row2 { + background: #1e1e1e; + color: #bebebe; +} +.unkfunc { + background:inherit; + color:#789922; +} +.filesize { + text-decoration:none; +} +.filetitle { + background:inherit; + font-size:1.2em; + color: #bebebe; + font-weight:800; +} +span.name, .postername { + color:#fff !important; + font-weight:bold; +} +span.trip, .postertrip { + color:#707070; +} +.oldpost { + color:#CC1105; + font-weight:800; +} +.omittedposts { + color:#707070; +} +.reply { + padding: 5px; + border: 1px #707070 solid !important; + background: #282828 !important; + + -webkit-border-radius: 10px; + -khtml-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} +.replyhl { + background-color: #1e1e1e; + color: #bebebe; +} +.doubledash { + vertical-align:top; + clear:both; + float:left; +} +.replytitle { + font-size: 1.2em; + color:#fff; + font-weight:800; +} +.commentpostername { + color: #fff; + font-weight:800; +} +.thumbnailmsg { + font-size: small; + color: #bebebe; +} +form table th, div.banner, div.pages, .replymode, .postblock, .passvalid, .catalogmode { + background: #ff9100 url('img/testorange_f_bg.gif') repeat-x !important; +} +div.pages { + color: black; + border: 0; +} + +.abbrev { + color:#707070; +} +.highlight { + background:#000; + border: 1px dashed #ff9100; +} + +#watchedthreads { + background-color: #282828 !important; +} + +.reflinkpreview { + background-color: #282828 !important; +} + diff --git a/stylesheets/wasabi.css b/stylesheets/wasabi.css new file mode 100644 index 00000000..a080a12a --- /dev/null +++ b/stylesheets/wasabi.css @@ -0,0 +1,391 @@ +/** + * wasabi.css + * For AwsumChan by Circlepuller + */ +body { + background: #F7F9B0 url('img/fade-yellow.png') repeat-x 50% 0%; + color: black; + font-family: arial, helvetica, sans-serif; + font-size: 10pt; + margin: 0 8px; + padding-left: 5px; + padding-right: 5px; +} +table * { + margin: 0; +} +a:link, a:visited { + text-decoration: underline; + color: #400040; +} +a:link:hover, a:visited:hover { + color: limegreen; +} +a.post_no { + color: black; + text-decoration: none; + margin: 0; + padding: 0; +} +p.intro a.post_no, p.intro a.email { + margin: 0; +} +p.intro a.email span.name { + color: #34345C; +} +p.intro a.email:hover span.name { + color: #ff0000; +} +p.intro label { + display: inline; +} +h2 { + color: #AF0A0F; + font-size: 11pt; + margin: 0px; + padding: 0px; +} +h1 { + font-family: tahoma; + letter-spacing: -2px; + font-size: 20pt; + margin-bottom: 0; +} +h1.logo img { + display: inline; + float: none; + background-image: url('/static/logo_bg.gif'); + background-repeat: no-repeat; + background-position: center; +} +div.title, h1 { + color: #AF0A0F; + text-align: center; +} +div.title { + font-size: 8pt; + margin-bottom: 2em; +} +form { + margin-bottom: 4em; +} +form table { + margin: auto; +} +form table input { + height: auto; +} +input[type="text"], input[type="password"], textarea { + border: 1px solid #a9a9a9; + text-indent: 0px; + text-shadow: none; + text-transform: none; + word-spacing: normal; +} +form table tr td { + text-align: left; + margin: 0px; + padding: 0px; +} +form table tr th { + text-align: left; + padding: 4px; +} +form table tr th { + background: #D7FE85; +} +form table tr td div { + text-align: center; + float: left; + padding-left: 3px; +} +form table tr td div input { + display: block; + margin: 2px auto 0 auto; +} +form table tr td div label { + font-size: 10px; +} +.unimportant, .unimportant * { + font-size: 10px; +} +p.fileinfo { + display: block; + margin: 0px; + padding-right: 7em; +} +div.banner { + background-color: #400040; + font-size: 12pt; + font-weight: bold; + text-align: center; + margin: 1em 0; +} +div.banner, div.banner a { + color: white; +} +div.banner a:hover { + color: #EEF2FF; + text-decoration: none; +} +img.banner { + float: none; + margin: 4px auto 0 auto; +} +img { + display: block; + float: left; + margin: 10px 20px; + border: none; +} +div.post img { + padding: 5px; + margin: 5px 20px 0 0; +} +div.post img.icon { + display: inline; + float: none; + margin: 0 5px; + padding: 0; +} +div.post.op { + margin-right: 20px; + margin-bottom: 5px; +} +div.post.op hr { + border-color: #D9BFB7; +} +p.intro { + margin: 0.5em 0; + padding: 0; + padding-bottom: 0.2em; +} +input.delete { + float: left; + margin: 1px 6px 0 0; +} +p.intro span.subject { + color: #0F0C5D; + font-weight: bold; +} +p.intro span.name { + color: #117743; + font-weight: bold; +} +p.intro a.capcode, p.intro a.nametag { + color: #F00000; + margin-left: 0; +} +p.intro a { + margin-left: 8px; +} +div.delete { + float: right; +} +div.post.reply p { + margin: 0.3em 0 0 0; +} +div.post.reply div.body { + margin-left: 1.8em; + margin-top: 0.8em; + padding-right: 3em; + padding-bottom: 0.3em; +} +div.post.reply.highlighted { + background-color: #FFF; + border-color: #CCC; +} +div.post.reply div.body a { + color: #D00; +} +div.post { + max-width: 97%; +} +div.post div.body { + word-wrap: break-word; +} +div.post.reply { + background: #D7FE85; + margin: 0.2em 16px; + padding: 0.2em 0.3em 0.5em 0.6em; + border-width: 1px; + border-style: none solid solid none; + border-color: lightgreen; + display: inline-block; +} +span.trip { + color: #228854; +} +span.quote { + color: #3C6D8A; +} +span.omitted { + display: block; + margin-top: 1em; +} +br.clear { + clear: left; +} +span.controls { + float: right; + margin: 0; + padding: 0; + font-size: 80%; +} +span.controls.op { + float: none; + margin-left: 10px; +} +span.controls a { + margin: 0; +} +div#wrap { + width: 900px; + margin:0 auto; +} +div.ban { + background-color: white; + border: 1px solid #400040; + max-width: 700px; + margin: 30px auto; +} +div.ban p, div.ban h2 { + padding: 3px 7px; +} +div.ban h2 { + background: #D7FE85; + color: #400040; + font-size: 12pt; +} +div.ban p { + font-size: 12px; + margin-bottom: 12px; +} +div.ban p.reason { + font-weight: bold; +} +span.heading { + color: #AF0A0F; + font-size: 11pt; + font-weight: bold; + display: block; +} +span.spoiler { + background: black; + color: black; +} +div.post.reply div.body span.spoiler a { + color: black; +} +span.spoiler:hover, div.post.reply div.body span.spoiler:hover a { + color: white; +} +div.styles { + float: right; + padding-bottom: 20px; +} +div.styles a { + margin: 0 10px; +} +div.styles a.selected { + text-decoration: none; +} +table.test { + width: 100%; +} +table.test td, table.test th { + text-align: left; + padding: 5px; +} +table.test tr.h th { + background: #98E; +} +table.test td img { + margin: 0; +} +fieldset label { + display: block; +} +div.pages { + color: limegreen; + background: #D7FE85; + display: inline; + padding: 8px; + border-right: 1px solid limegreen; + border-bottom: 1px solid limegreen; +} +div.pages a.selected { + color: black; + font-weight: bolder; +} +div.pages a:link { + text-decoration: none; +} +div.pages form { + margin: 0; + padding: 0; + display: inline; +} +div.pages form input { + margin: 0 5px; + display: inline; +} +hr { + border: none; + border-top: 1px solid limegreen; + height: 0px; +} +div.boardlist { + color: limegreen; + font-size: 9pt; + margin-top: 3px; +} +div.boardlist.bottom { + margin-top: 20px; +} +div.boardlist a { + text-decoration: none; +} +div.report { + color: #333; +} +table.modlog { + margin: auto; + width: 100%; +} +table.modlog tr td { + text-align: left; + margin: 0px; + padding: 4px 15px 0 0; +} +table.modlog tr th { + text-align: left; + padding: 4px 15px 5px 5px; + white-space: nowrap; +} +table.modlog tr th { + background: #D7FE85; +} +td.minimal, th.minimal { + width: 1%; + white-space: nowrap; +} +div.top_notice { + text-align: center; + margin: 5px auto; +} +span.public_ban { + display: block; + color: red; + font-weight: bold; + margin-top: 15px; +} +span.toolong { + display: block; + margin-top: 15px; +} +div.blotter { + color: red; + font-weight: bold; + text-align: center; +} From 6df1a179ed3554faf1945a366ae87992dfe23e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 2 Jan 2013 07:53:00 +0100 Subject: [PATCH 183/289] Add szalet.css style by Kurwancka from http://lepszy.vichan.net/ --- stylesheets/img/szalet_bg.png | Bin 0 -> 54946 bytes stylesheets/img/szalet_hr.png | Bin 0 -> 1023 bytes stylesheets/szalet.css | 210 ++++++++++++++++++++++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 stylesheets/img/szalet_bg.png create mode 100644 stylesheets/img/szalet_hr.png create mode 100644 stylesheets/szalet.css diff --git a/stylesheets/img/szalet_bg.png b/stylesheets/img/szalet_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4dccae338953cf0cf433ffc8d8667cbad7a15 GIT binary patch literal 54946 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 Hu0mjfn0TQ? literal 0 HcmV?d00001 diff --git a/stylesheets/img/szalet_hr.png b/stylesheets/img/szalet_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..97414ce5ac2d2b7f32af05ba131e4412c8959c2c GIT binary patch literal 1023 zcmV4d%0 zLDx;)@F=1y0-l`B>j*lHx@C+uE4WS3KngmyS$+}AIjk?|*KGYKih0y>h}d*()_1lj zeO9I2=DAP#av5uq_E?wAfhem(mGz}-+o#|Ubqum6p|%)Dkq0{TVi@>!xkm5_oXm&o zH9uuO-Vf*&KCSQTndVJ3Q|L>Hg|6k3;%YIYKk~=>0}(skOO@FL4`f`BY#&-Of-fTW zo{UsQzUjWpd(3Kvs;!sZi^MfPdr?OjUvk-+E46cuf-7QEoI0?sYSzNylSIWfzB5$W zM{OTH0_Q4uGd$0^f}7&t&vkQ+0IbHlZ6XW>uCaD2UshAzFRk-T(=%J+%;TXYvQ@M6 zwRqV*P)Ge~T?Yy?9l5q@(5b0(rgFuxh4}BpiFKJCxvFuZ7U|=>)%ES(Gw)g}-RqtF z7g@#?u?8vgL8EpNALHUny2|5Td5Wmkuk z-}XCv=XBIXtUnMi9FJq1E;ZJ zaE2B7W6*anXJLf1u#@JjjBr+lIYT3yp%Kp52xn|3e|-Du Date: Wed, 2 Jan 2013 07:53:50 +0100 Subject: [PATCH 184/289] Add luna.css style by klaczy, ported by asiekierka --- stylesheets/img/luna_bg1.png | Bin 0 -> 27337 bytes stylesheets/img/luna_bg2.png | Bin 0 -> 803 bytes stylesheets/luna.css | 447 +++++++++++++++++++++++++++++++++++ 3 files changed, 447 insertions(+) create mode 100644 stylesheets/img/luna_bg1.png create mode 100644 stylesheets/img/luna_bg2.png create mode 100644 stylesheets/luna.css diff --git a/stylesheets/img/luna_bg1.png b/stylesheets/img/luna_bg1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe72c24e84b73b6b83f578bd5d973a663774d656 GIT binary patch literal 27337 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 aaU8mClIfXyih%zN0Mby=MN}(Wh5ZlmlkRo^ literal 0 HcmV?d00001 diff --git a/stylesheets/img/luna_bg2.png b/stylesheets/img/luna_bg2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4688ad7b656482c7e297d0c70d7b0a2f88f043 GIT binary patch literal 803 zcmV+;1Kj+HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0=P*;K~y+Ty^-fu z+%OPEXIN&nF`H%phLXzVKjvF#g2vM%9#1*-25+k_N;P)ZgMRFz~2 zse=$w`C&yt2x%m1NE0XsC!`IO5VjO56GkRbCWs6LY7j<(8enG_Mne^Gl8Qz%D2&HI z#UmAuNyU?nXhKmu2b3gs=A#5M&k`jIDuFKm$YPW(iY#^#CrdF)x*VrV7K+nPZ!A-s zt;8981yGW$3M)uT^crrlUQIO1dXla4l3t@!ZzOsH30Rn%mnh9YGkOyV+01fOV2iSR z3#9qBNPl|<G)b*g@)I7qXiPy3g`;2Ib{9U35V9bg`$Ad}u}w&G4Su(I3!oK2SS;WLO@pJR!~aiQ36C zZf5-4j-Sblr)B~mQ!(Nx7isxPB-Xmh_^4b4eW2(eUIFxW^Rha_lQhH?5|_J`yPlqCd=>t5?ggU|Fo7@ hp#eW&d$QOA$iHVqod1I67E1sC002ovPDHLkV1hbTS&aYy literal 0 HcmV?d00001 diff --git a/stylesheets/luna.css b/stylesheets/luna.css new file mode 100644 index 00000000..2256f8c2 --- /dev/null +++ b/stylesheets/luna.css @@ -0,0 +1,447 @@ +body { + background-color: #171C4E; + background-image: url('img/luna_bg1.png'), url('img/luna_bg2.png'); + background-repeat: no-repeat, repeat-x; + background-attachment: fixed, scroll; + background-position: right bottom, 0% 0%; + font-family: sans-serif; + font-size: 12px; + color:#ffffff; + margin: 0 8px; + padding-left: 5px; + padding-right: 5px; +} +table * { + margin: 0; +} +a, a:visited { + text-decoration: none; + color: #0091ff;; +} +a, a:selected { + text-decoration: bold; + color: #ffffff; +} +a:hover, p.intro a.post_no:hover { + color: #ffffff; +} +a.post_no { + text-decoration: none; + margin: 0; + padding: 0; +} +p.intro a.post_no { + color: inherit; +} +p.intro a.post_no, p.intro a.email { + margin: 0; +} +p.intro a.email span.name { + color: #0091ff; +} +p.intro a.email:hover span.name { + color: #ffffff; +} +p.intro label { + display: inline; +} +h2 { + color: #0091ff; + font-size: 11pt; + margin: 0; + padding: 0; +} +header { + margin: 1em 0; +} +h1 { + color: #0091ff; + letter-spacing: -2px; + font-size: 20pt; + margin: 0; +} +header div.subtitle, h1 { + color: #FFFFFF; + text-align: center; +} +header div.subtitle { + font-size: 8pt; +} +form { + margin-bottom: 4em; +} +form table { + margin: auto; +} +form table input { + height: auto; +} +input[type="text"], input[type="password"], textarea { + border: 1px solid #a9a9a9; + text-indent: 0; + text-shadow: none; + text-transform: none; + word-spacing: normal; + box-shadow: 3px 3px 3px #111; + border-radius: 10px; +} +form table tr td { + text-align: left; + margin: 0; + padding: 0; +} +form table.mod tr td { + padding: 2px; +} +form table tr th { + text-align: left; + padding: 4px; +} +form table tr th { + background: #000000; +} +form table tr td div { + text-align: center; + float: left; + padding-left: 3px; +} +form table tr td div input { + display: block; + margin: 2px auto 0 auto; + border-radius: 10px; +} +form table tr td div label { + font-size: 10px; +} +.unimportant, .unimportant * { + font-size: 10px; +} +p.fileinfo { + display: block; + margin: 0; + padding-right: 7em; + border-radius: 10px; +} +div.banner { + background-color: #000000; + font-size: 12pt; + font-weight: bold; + text-align: center; + margin: 1em 0; +} +div.banner, div.banner a { + color: #aaa; +} +div.banner a:hover { + color: #000000; + text-decoration: none; +} +img.banner { + float: none; + border: 1px solid #a9a9a9; + margin: 12px auto 0 auto; +} +img { + display: block; + float: left; + margin: 10px 20px; + border: none; +} +div.post img { + padding: 5px; + margin: 5px 20px 0 0; +} +div.post img.icon { + display: inline; + float: none; + margin: 0 5px; + padding: 0; +} +div.post.op { + margin-right: 20px; + margin-bottom: 5px; + border-radius: 10px; +} +div.post.op hr { + border-color: #040934; +} +p.intro { + margin: 0.5em 0; + padding: 0; + padding-bottom: 0.2em; +} +input.delete { + float: left; + margin: 1px 6px 0 0; +} +p.intro span.subject { + color: #CCCCEE; + font-weight: bold; +} +p.intro span.name { + color: #BBBBDD; + font-weight: bold; +} +p.intro span.capcode, p.intro a.capcode, p.intro a.nametag { + color: #CCCCEE; + margin-left: 0; +} +p.intro a { + margin-left: 8px; +} +div.delete { + float: right; +} +div.post.reply p { + margin: 0.3em 0 0 0; +} +div.post.reply div.body { + margin-left: 1.8em; + margin-top: 0.8em; + padding-right: 3em; + padding-bottom: 0.3em; +} +div.post.reply.highlighted { + background: #000000; +} +div.post.reply div.body a { + color: #0091FF; +} +div.post { + max-width: 97%; +} +div.post div.body { + word-wrap: break-word; + white-space: pre-wrap; +} +div.post.reply { + margin-right: 20px; + margin-bottom: 5px; + padding: 5px; + border: 1px #353868 solid; + background: rgba(53, 56, 104, 0.6) !important; + box-shadow: 2px 2px 2px #353868; + display: inline-block; + border-radius: 10px; +} +span.trip { + color: #DDDDDD; +} +span.quote { + color: #FFFF55; +} +span.omitted { + display: block; + margin-top: 1em; +} +br.clear { + clear: left; + display: block; +} +span.controls { + float: right; + margin: 0; + padding: 0; + font-size: 80%; +} +span.controls.op { + float: none; + margin-left: 10px; +} +span.controls a { + margin: 0; +} +div#wrap { + width: 900px; + margin:0 auto; +} +div.ban { + background: #070C3E; + border: 1px solid #00; + max-width: 700px; + margin: 30px auto; +} +div.ban p, div.ban h2 { + padding: 3px 7px; +} +div.ban h2 { + background: #000; + color: #FFF; + font-size: 12pt; +} +div.ban p { + font-size: 12px; + margin-bottom: 12px; +} +div.ban p.reason { + font-weight: bold; +} +span.heading { + color: #000; + font-size: 11pt; + font-weight: bold; +} +span.spoiler { + background: black; + color: black; + padding: 0px 1px; +} +div.post.reply div.body span.spoiler a { + color: black; +} +span.spoiler:hover, div.post.reply div.body span.spoiler:hover a { + color: white; +} +div.styles { + color: #B7C5D9; + background: #353868; + display: inline; + padding: 8px; + border-right: 1px solid #000000; + border-bottom: 1px solid #000000; + float: right; +} +div.styles a { + text-decoration: none; +} +div.styles a.selected { + color: #FFF; + font-weight: bolder; +} +div.styles form { + margin: 0; + padding: 0; + display: inline; +} +table.test { + width: 100%; +} +table.test td, table.test th { + text-align: left; + padding: 5px; +} +table.test tr.h th { + background: #000; +} +table.test td img { + margin: 0; +} +fieldset label { + display: block; +} +fieldset legend { + background: black; + color: white; + border: 1px solid #000 +} +div.pages { + color: #B7C5D9; + background: #353868; + display: inline; + padding: 8px; + border-right: 1px solid #000000; + border-bottom: 1px solid #000000; +} +div.pages a.selected { + color: #FFF; + font-weight: bolder; +} +div.pages a { + text-decoration: none; +} +div.pages form { + margin: 0; + padding: 0; + display: inline; +} +div.pages form input { + margin: 0 5px; + display: inline; +} +hr { + border: none; + border-top: 1px solid #000000; + height: 0; + clear: left; +} +div.boardlist { + color: #B7C5D9; + background: #353868; + display: inline; + padding: 8px; + border-right: 1px solid #000000; + border-bottom: 1px solid #000000; +} +div.boardlist.bottom { + margin-top: 20px; +} +div.boardlist a { + text-decoration: none; +} +div.boardlist a.selected { + color: #FFF; + font-weight: bolder; +} +div.report { + color: #333; +} +table.modlog { + margin: auto; + width: 100%; +} +table.modlog tr td { + text-align: left; + margin: 0; + padding: 4px 15px 0 0; +} +table.modlog tr th { + text-align: left; + padding: 4px 15px 5px 5px; + white-space: nowrap; +} +table.modlog tr th { + background: #000; +} +td.minimal, th.minimal { + width: 1%; + white-space: nowrap; +} +div.top_notice { + text-align: center; + margin: 5px auto; +} +span.public_ban { + display: block; + color: red; + font-weight: bold; + margin-top: 15px; +} +span.toolong { + display: block; + margin-top: 15px; +} +div.blotter { + color: red; + font-weight: bold; + text-align: center; +} +table.mod.config-editor { + font-size: 9pt; + width: 100%; +} +table.mod.config-editor td { + text-align: left; + padding: 5px; + border-bottom: 1px solid #000; +} +table.mod.config-editor input[type="text"] { + width: 98%; +} + +.desktop-style div.boardlist:nth-child(1):hover { + background-color: inherit; +} + +.desktop-style .sub { + background: none; +} From 5174bf23ebb3d2f7b20d1bbdca8197a1273ee9e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 2 Jan 2013 07:54:44 +0100 Subject: [PATCH 185/289] Add Terminal-2 style by spider --- stylesheets/terminal2.css | 170 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 stylesheets/terminal2.css diff --git a/stylesheets/terminal2.css b/stylesheets/terminal2.css new file mode 100644 index 00000000..f08d0b3a --- /dev/null +++ b/stylesheets/terminal2.css @@ -0,0 +1,170 @@ +body { + background: #000000; + color: #00FF00; + font-family: sans-serif; + font-size: 12px; +} +h1 { + font-size: 20pt; + text-align: center; + letter-spacing: 0px; +} +div.title, h1 { + color: lime; + font-family: sans-serif; +} +div.title p { + font-size: 10px; +} +a:link, a:visited, p.intro a.email span.name { + color: #00FF00; + text-decoration: underline; + font-family: sans-serif; +} +a:link:hover, a:visited:hover { + color: #00FF00; + font-family: sans-serif; + text-decoration: underline overline; +} +a.post_no { + color: #00FF00; + text-decoration: none; +} +a.post_no:hover { + color: #00FF00; + text-decoration: underline overline; +} +div.post.reply { + background: #000000; + border: 1px dashed; + border-color:#00FF00; +} +div.post.reply.highlighted { + background: transparent; + border: transparent 1px dashed; + border-color:#00FF00; +} +div.post.reply div.body a:link, div.post.reply div.body a:visited { + color: #00FF00; +} +div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { + color: #00FF00; +} +p.intro span.subject { + font-size: 12px; + font-family: sans-serif; + color: #446655; + font-weight: 800; +} +p.intro span.name { + color: #00FF00; + font-weight: 800; +} +p.intro a.capcode, p.intro a.nametag { + color: #00FF00; + margin-left: 0; +} +p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { + color: #00FF00; +} +input[type="text"], textarea, select { + background: #000000; + color: #00FF00; + border: 1px dashed; + border-color:#00FF00; + padding-left: 5px; + padding-right: -5px; + font-family: sans-serif; + font-size: 10pt; +} +input[type="password"] { + background: #000000; + color: #00FF00; + border: 1px dashed; + border-color:#00FF00; +} + +form table tr th { + background: #000000; + color: #00FF00; + font-weight: 800; + text-align: left; + padding: 0; + border: #00FF00 1px dashed; + border-color:#00FF00; +} +div.banner { + background: #00AA00; + color: #FFFFFF; + text-align: center; + width: 250px; + padding: 4px; + padding-left: 12px; + padding-right: 12px; + margin-left: auto; + margin-right: auto; + font-size: 12px; +} +input[type="submit"] { + background: #000000; + border: 1px dashed; + border-color:#00FF00; + color: #00FF00; +} +input[type="submit"]:hover { + background: #000000; + border: 1px dashed; + border-color:#00FF00; + color: #00FF00; +} +p.fileinfo a:hover { + text-decoration: underline; +} +span.trip { + color: #00FF00; +} +div.pages { + color: #00FF00; + background: #000000; + border: 1px dashed; + border-color:#00FF00; + font-family: sans-serif; + font-size: 10pt; +} +div.pages a.selected { + color: #00FF00; +} +hr { + height: 1px; + border: 1px dashed; + border-color:#00FF00; +} +div.boardlist { + color: #00FF00; +} +div.ban { + border: transparent 0px dashed; + border-color:#00FF00; +} +div.ban h2 { + background: transparent; + color: lime; + font-size: 12px; +} +table.modlog tr th { + background: #000000; + color: #00FF00; +} + +.desktop-style div.boardlist:nth-child(1) { + background-color: black; + border-bottom: #00FF00 1px dashed; +} +.desktop-style div.boardlist:nth-child(1):hover { + background-color: black; +} + +.desktop-style .sub { + background: none; +} + From fc455f8d8f63b011c002647810ba0093707ee372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 2 Jan 2013 07:55:13 +0100 Subject: [PATCH 186/289] Add futaba-light.css by Kurwancka --- stylesheets/futaba-light.css | 98 ++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 stylesheets/futaba-light.css diff --git a/stylesheets/futaba-light.css b/stylesheets/futaba-light.css new file mode 100644 index 00000000..76a82f58 --- /dev/null +++ b/stylesheets/futaba-light.css @@ -0,0 +1,98 @@ +/* +piwnichan style, based on futaba.css of Tinyboard */ + +body { + background: #FFF0DF; + color: #800000; + font-family: sans-serif; + font-size: 13px; +} +div.title h1 { + font-size: 24px; +} +div.title p { + font-size: 10px; +} +div.pages { + font-size: 13px !important; +} +a:link, a:visited, p.intro a.email span.name { + color: #A32615; + font-size: inherit; + text-decoration: inherit; +} +a:link:hover { + color: #d00; + text-decoration: inherit; +} +span.omitted { + color: gray; +} +a.post_no { + color: #800000; +} +div.post.reply { + border: 0px; + background: #FAE8D4; + border: 1px solid #E2C5B1; +} +div.post.reply.highlighted { + background: #f0c0b0; + border-color: #d9bfb7; +} +div.post.reply div.body a { + color: rgb(190, 79, 43); +} +p.intro span.subject { + color: #AA4848; +} +form table tr th { + background: #EED1C2; +} +div.ban h2 { + background: #FCA; + color: inherit; +} +div.ban { + border-color: #800; +} +div.ban p { + color: black; +} +div.pages { + padding: 7px 5px; + color: maroon; + font-size: 12pt; + + background: none; + border-width: 1px; + border-style: inset; + +} +div.pages a.selected { + color: #800; +} +hr { + border-width: 1px; + border-style: inset; +} +div.boardlist { + color: #B86; +} +div.boardlist a { + color: #800; +} +unimportant, .unimportant * { + font-size: 13px; +} +table.modlog tr th { + background: #EA8; +} + +.desktop-style div.boardlist:nth-child(1) { + text-shadow: #fff 1px 1px 1px, #fff -1px -1px 1px; +} + + +.desktop-style div.boardlist:nth-child(1):hover { + background-color: rgba(90%, 90%, 90%, 0.55); +} From 32dd6cc34f49fedc3b7bc61d15f5dea28d713cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 2 Jan 2013 08:08:14 +0100 Subject: [PATCH 187/289] Add stripes.css by klaczy --- stylesheets/img/stripes_bg.png | Bin 0 -> 19901 bytes stylesheets/img/stripes_submit.png | Bin 0 -> 163 bytes stylesheets/img/stripes_textarea.png | Bin 0 -> 2816 bytes stylesheets/stripes.css | 67 +++++++++++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 stylesheets/img/stripes_bg.png create mode 100644 stylesheets/img/stripes_submit.png create mode 100644 stylesheets/img/stripes_textarea.png create mode 100644 stylesheets/stripes.css diff --git a/stylesheets/img/stripes_bg.png b/stylesheets/img/stripes_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..17a4d6b42defcc8ebbad993bc91a2030f6c690ed GIT binary patch literal 19901 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 AbN~PV literal 0 HcmV?d00001 diff --git a/stylesheets/img/stripes_submit.png b/stylesheets/img/stripes_submit.png new file mode 100644 index 0000000000000000000000000000000000000000..31eabaf0a969c5df7d5f7e9d61758daf55dc0dce GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{U!3HGNPA*RZQk(@Ik;M!Q+`=Ht$S`Y;1W-^R z*(1o8fuTy3fuW(9f#K(WApMeoq11qZ;Z*_ygVhWM2J!q!@kiZ&YBfDw978H@CH?sS z|9}0m{QLV14Gax{;P3zc@~4~xGLks-L{&F*FtRZ$HdOg5$df(~sENVT)z4*}Q$iB} Dkrylb literal 0 HcmV?d00001 diff --git a/stylesheets/img/stripes_textarea.png b/stylesheets/img/stripes_textarea.png new file mode 100644 index 0000000000000000000000000000000000000000..b6401acd17e632f9429ade10229e962ad3b67331 GIT binary patch literal 2816 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 Date: Sat, 19 Jan 2013 02:38:01 +0100 Subject: [PATCH 188/289] Update stylesheets/szalet.css --- stylesheets/szalet.css | 75 +++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 41 deletions(-) diff --git a/stylesheets/szalet.css b/stylesheets/szalet.css index 1bdc212a..e4deb8ee 100644 --- a/stylesheets/szalet.css +++ b/stylesheets/szalet.css @@ -1,14 +1,27 @@ -/* nowy styl */ +/* szalet 1.2 */ body { font-family: sans-serif; font-size: 12px; - color: #C4C4C4; + color: #99938D; background-color: #1e1e1e; background-image: url('img/szalet_bg.png'); background-repeat: repeat; - +} + +.desktop-style .bl-menu{ +background-image: url('img/szalet_bg.png'); +background-repeat: repeat; +/*background-color: #200000;*/ +} + +.boardlist .board a { +background-color: #200000; +} + +p.intro span.capcode, p.intro a.capcode, p.intro a.nametag { +color: #26899C; } div.pages a.selected { @@ -16,15 +29,15 @@ color: #FFFCFC !important;} a:link, a:visited, div.post.reply p.body a { - color: #86472F; + color: #7A422C!important; text-decoration: none; } a:link:hover, a:visited:hover, div.post.reply p.body a:hover { - color: rgb(138, 138, 35); + color: #8A8A23!important; } a.email span.name { - color: #ECDDCA !important; + color: #4B4B4B !important; } @@ -36,6 +49,8 @@ textarea { background: #dedede url('img/testorange_textarea_bg.gif') repeat-x; } input, textarea { +background: #200000; +color: #99938D; } hr { @@ -58,7 +73,7 @@ h1 { clear:both; text-align:center; font-size: 2.5em; - color: sandybrown; + color: #583E28; width:100%; } div.title { @@ -68,12 +83,12 @@ div.banner, .replymode, .catalogmode { text-align:center; margin: 5px 0 5px 0; padding: 5px 2px 5px 2px; - color: sandybrown; + color: #583E28; font-weight: bold; width:100%; } .postblock, form table th { - color: sandybrown; + color: #583E28; font-size: 11px; font-weight: bold; text-align: center !important; @@ -140,13 +155,13 @@ div.banner, .replymode, .catalogmode { } p.intro span.subject { -color: #D11C2A; +color: #771018; font-weight: bold; } span.name, .postername { - color: #DAAD66 !important; + color: #8A775B !important; font-weight:bold; } span.trip, .postertrip { @@ -159,52 +174,30 @@ span.trip, .postertrip { span.omitted, .omittedposts { color: #A39E96; } -.reply { +div.post.reply { padding: 5px; - border: 1px sandyBrown solid !important; - background: #200000 !important; + border: 1px #583E28 solid !important; + background: #200000; -webkit-border-radius: 10px; -khtml-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; } +div.post.reply.highlighted { +background: #583E28; +} + .replyhl { background-color: #1e1e1e; color: #bebebe; } -.doubledash { - vertical-align:top; - clear:both; - float:left; -} -.replytitle { - font-size: 1.2em; - color:#fff; - font-weight:800; -} -.commentpostername { - color: #fff; - font-weight:800; -} -.thumbnailmsg { - font-size: small; - color: #bebebe; -} form table th, div.banner, div.pages, .replymode, .postblock, .passvalid, .catalogmode { background: #200000!important; - border: 1px solid sandyBrown; + border: 1px solid #583E28; } div.pages { color: rgb(143, 139, 139); border: 0; background: none !important; } - -.abbrev { - color:#707070; -} -.highlight { - background:#000; - border: 1px dashed #ff9100; -} From d1e05f7a2f266f47aaff3d2195515b2f1234439f Mon Sep 17 00:00:00 2001 From: cccxd Date: Sat, 19 Jan 2013 21:22:40 +0100 Subject: [PATCH 189/289] style --- stylesheets/img/jungle_bg.png | Bin 0 -> 97254 bytes stylesheets/img/jungle_bg1.png | Bin 0 -> 100273 bytes stylesheets/img/jungle_td.png | Bin 0 -> 147347 bytes stylesheets/img/jungle_td2.png | Bin 0 -> 129711 bytes stylesheets/img/rect820.png | Bin 0 -> 38261 bytes stylesheets/img/rect821.png | Bin 0 -> 38762 bytes stylesheets/jungle.css | 135 +++++++++++++++++++++ stylesheets/piwnichan.css | 206 +++++++++++++++++++++++++++++++++ 8 files changed, 341 insertions(+) create mode 100644 stylesheets/img/jungle_bg.png create mode 100644 stylesheets/img/jungle_bg1.png create mode 100644 stylesheets/img/jungle_td.png create mode 100644 stylesheets/img/jungle_td2.png create mode 100755 stylesheets/img/rect820.png create mode 100755 stylesheets/img/rect821.png create mode 100644 stylesheets/jungle.css create mode 100644 stylesheets/piwnichan.css diff --git a/stylesheets/img/jungle_bg.png b/stylesheets/img/jungle_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..649bafe7b7520bcbc7e6b85f93a1a8f32c9eee98 GIT binary patch literal 97254 zcmV)WK(4=uP)00Hy}0ssI2M6^iV00009a7bBm001r{ z001r{0eGc9b^rhhPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00D6kNkl#vnf-5Jb~HYeDk`+2=U7(gaBGhQ)xFD!rn0-zLX!uh96 z1`xd9*Yl|k-bEaF03w`D@CZ%LXiBU zq+-f-ec#(Id%`$dAk%-HFQLhWA})W}J1-(c)Mz#T_QltTh;jy=;uKRjEk0Lt&z(gk;8t?hb`2w^2V&xF(%BO=yWtq2k0jZcOzq8rBlzd#Zc*?1n=;={=TMx~TzPs^v7 z-Z%f>fSM(IPnU>Ae4p(!8PKQOoz7zCo%1eiz>1VsS}8?Dm=DGNv*zXeT0wT$LiWO{ z0!{%IE!H2FzJ>@Jqnzj0>*ch5wC$s5*@*YvdFPyW&LakV2j^I+9b~UrcdOfeX}0Vl zdkQOI*lmfzGpzcGePmxk(hNid5CIX5HouDO008CLylyl|~G5izs(-U~Y?fYdZ5fP}Cx0J98(Pz;Dx@f|=Gpj$jzgNjQHYWm7Qf) zf$y*ajF?7X_-72j1rSMV^2~9^O(;K1PG)9i>ntJ?k_s;xfPM?TGHAmJNZk14e69@Z zD8TXR4lw;UL@-(@LhJmW@9(y40!V44qyZmZ%)-)`rfr%^AfGLZd_aiEd0+;@`C&?S zkiGEoEX?uCM1Tmwy-V>(AUlDe)I^JmIDv>1kc>R7r#%mQd()} z-83*S3}peMaC{ivOWQO?8_6&M@xTH3mLrV!E?a6izaJc*BhFw6cgBto`o7mnQ3W}} z!Xki)j}m}S;yVB!5djcUgMdg9UyP(4k4M*cUGKCat*HdC3G`P2*R>D|LqI*_XIM<5 zMFc1FNMwtAtBT(xJXD$NEV$gr0ST#XTceGLcy`Wt=N${n5Zz-o{YAWZ&mJrcK;Jek ztuPYHxD~fyd^MKGBB8YVnEwk0AEQA%m04$aB<5XM+~ z{%V>A0Iao)qNw)FJ*>U_2{VKD@dm>es(|cr>_ETqp5aV~vWVysA%lpGG2;PucULJ< zYlwI~wAFRDiN)Z(Z5sdMcbPIOOXF5Z~`i2x`BC(`x(?in@^l$c_zPa-?!yfc!BX9gk(b5sO?Su3rc%39l7>pQO$ zDn&StPPg%Wm7kftH_QO7bZ>3kQKj_G0Y9+ zgoO+{xu5mJyNDunF^<<49*hvFrfIsa14>8LIO;j!Uf8n{z8)F`An-A9zM`4yA zdN<6mh-a4UZ_;P0d~*DfPlmCLLqLxcZKN} z00bg@wAxx8LwF=PGUITSy~uwqAu;Q`@B7}eCxjW3R2soN{gsla7~e@Mf{~n}+PAir z(kU!_H6d!H16#EbcNg>aGTD3>MDpF_z2LsGoTM=(%N8kuZZW zq9Q_O0bxWEm_WRBuJ1h&C<+YukdI8H{4&xBvHmJY6X;?wT8W4-$C)tZDYO5X4nZ+! z-{FEL6)u2?N~y*)TIrNkSq@bEAt91Bfl*}dT>$zloCg4<^x7rJ=5wn8`E{C>ITG$; zqD(j5w6TB1#J06Jw3gn5Hqtd2g+C&I14`RIyrar+%gwzvD391Qk&T zhv{6q&Hl%fZrwf_6{8dh%o`VtWofko~ijQ`K;CCmXFl~P6Ole% zhs$_@ke+S({dx%t63U`fCJ*VIX8?RW9!Bd8LJW@+?&o%b0MXw2Md9<}OeEt%%Mbg7 zNm~rw5fp)SE`%piAY^_aiMqqj5XEgLob*#>ESuGW09q-n6te^-y0?rNOMMB)kVm8h zxuwU<5;z%(^#)kn1*E{g&&l_Zk6%OUu%RkaS}COn0Gat{rBaUac{mRPQLx6X?$kcw zW(>bZ8zLvheLPFy?#6)YzlfV(+h`*0ZI1}8Y2}Wo%FNz7h4Ehi5Q&shM(MA|(>iCJ zjSxRAXh?q^lc+-kJy7js>g7aoRd)CsrH}|8ZA+x&p5=Q_A<0hUPNXCz)I?+`t{So~ z7#68g`q@5yx);m*BpU-g0cK$lBK2rnMQXX$1hUWnWEG$Y3$L7;OOZHEjv6A10{E3F zLI{k~^}Wi=-a{=49^TKE2gKX?_mEr#@DMkjc@jCl03vLtX^ipA&N=VBvm8EvQeEea zrCEbq5ipwK(MVFg%q;ULJNUl2ZUb78BGOuCEoQ?U^pNsMry>j)x3tZPxBrCkAR&Y4 zAedLv7As^b2pO3Eu>crD&Y>I`l(4(3?JwSY03aGdI}!2DdS`n?Qc4-Eo%hU)2s4te zoJ3t+28c)iEX9tw^*ri)GU0@LCqhJOn^r3=cdb9X2mf@%vq`ksK$=Yd8Au|f=+QK< zzRw?g_(Si7MG!DFIu`RBX~ZG}^vPNgj=`za@1N7iJ(gtQ#(t17@6LPYy-C4)I)CBO zex<6i-0Q)6O0Ev5xmE@+1oDbVH7&%d5{}76&ycd~Bl(25+!jM(G8}F~Of8aG?XI!Yflft2w1w4b%T2JL1-UQ9};X49R2%Uzr#@bdi+&_k5c~W4s2(U0S zhX$BfSRw#3_)UMTwGJirg!FtohtpNW;Bb^oC(32za4J8KRV#!E({YGpaj3tDqy^%z zhan&m#SMiSj;FW}4KP*^GL=cxf#42njOH1fqxJLiY6wK|o&kZ5$Z22+u`q4q%p5*U zN+FcOl!wDP*FGju1G3Y&>z5ao2mm7z5`vHn9Y!0?sKpYWw0RIA617cZw7zlq=I4@) zddi!@eHZJOXKbaY(MF~Io$bwS$;o^qeh^GW(En{K&n+dNzv>QE=yVluf*;Ni8-PB8U&vpWX5UinMfT&9GozYm?e@u zJ4r2N<@qzlO_QvAOrj=C89Gs6t!-#T7zqVYKIt>;gjO?r$NZE)A!gqQSn)za^%Jzr zK)7%7mth>dOnREM(psxnaY3|p>C>|m;(A5ty`z)D2VRM`w`fGnlnS!W^-{x^fEPfd z=c6@Bhg5BdJe~Ifpok(B@X;g7fe{W0Dyhc`U`?E*;#)9gq$91!%rM6w$vgBG%W8aZ z2!;Py`QECuSvaEzGc!}l=*9-!yF1Hds=u@m@m7ZI0}_WKNSY^ww`w0t<2MIzOdNM( z)QNErfknZLIPY;aIG$I?458teL=DJ3?N{2)ql&OF5kg~(b&lD`x}psnSxCnaArU>A zpbI8{=b3vS+?jbV?K76CvItLQWr(P@_xC1FX7M=o2={o#UyIvUs@4-h*nBJ8WYz0=Y#jk-EkfBe3!eOgm?{R_d#aMbLi3*#9%p7Uhc|gQR+xC6$z!mn{MZi8BScym}dbAH!Q5$nU zJPqmv*8;wpgeoA?<}`~3clML^4MJ3@XJ>c$#b&+F*2xUJmuyYPa*h;}|j+aYlHh?vNT@0j8UtW3@imZv?4OOs* z5@sQO2W9~dgiN^WoT8EAV>r}YNZ258oe|$`M%@kDW5f`;PNti%bBq*|5GyRrDj@>^ z)_NTjC+>hM&z?mz)zqJlo$q-Pbu5ordB$s;iwIk10pa<0bba4joA$&Ne2?T05u(<* zJ>IE%j%>Kt#iVN=&VJ;8o;kmoFc$TT6Q`WaTX}{dc1ULpIWb?CDiOIDl?WQGgIMnO z>&JT^(h@|I)@lSX3a$6Ob&WAY@Q!EW)9XDH``pC^CXpkwO?I(_buljffPVdUr!FE& zXwXggj)*aSudAXdBYU>15h7$nWf4`Y37I_3C`*cltMy*QOTfgaPh1(uBYMxC`Rmc1 zOb5&X6Ng;arugE7knsuG!>0@_ti?jc&4fRQh_wy@!;!kTc8K$$5WI{Z8%7L~k`NZ& zT^sY3Ij`^fdIa&F^YE33YDNJETE8Sb{Z_g;mDovntK8f-18F?y&Szb&gD z*DI)_5CT#mN)iA>(S$)WwlPMk514P7A9DA%ETL@~up=V=O$}T_gRTJ6Bz_+#n%e4B z9O~zjZ z-Vg49S>6@46#!iuoj8XH9J*dZV=9*ZJpWK4 zQGmU*ib!dF9p-)=C~@jZG%)Oli-W)-clwvS#)N7XzatPsYU_iYJt^PSVnYOCsvJvM zvkOU6R|dj;&)I)Zf+uc|_|xv;6aHu8ikEaz?^^EUw*P zQKEW<^P|Q9%rpi{h8nW1+%xpl09zOE-B3%twbnU~Jzy{t(S}NHygOjuS)}-WaIbxG zGEX}bQEhXt%zS?ST}@OgCbT>d_}+_o$a4QGjqW+#R-2w@VgtZ z&vK`@+AnhdwN+k!CcwamDqJ&V6wT0-C8bpvrM=hNh%SMnfuR0*UZw$W@2alVdHT*;qTF=(nrfqR4gZ!7h zYD!RIz%E6GeIBsO*3efedEL7c#IH{H9_k~9z-8F9Vi`p?-DQlTWe|f!EFc*nIc9+s zx5|we4h!*0#>s5uOGSbligu2zb6Tlq+lokUZPz!J$vAt? z#kP)QQ$@1E=TAV=Ak>9e)O5w=NwUPu&mwy;DUA=QkYpoRi-LNhzQ)I?P z%(R{cpD8>dQ|z486>OEf=Vl?*fadr<$+ALZ;bEc7G4L?OSKBnugZG|8d_z-l_stct zJQngG7Pj;=nf-?Z3Z8mvk-o63Lk5TcWC|R;}P1~oC|isL%9p!79}$;rSYDJ zLToAT4uxh^73?@1zg{n^)w6v(9}i}B&ROsK-iIr^ov~wP+~!RH^TNlZ};& z-8kVp|VO{10x!gZbG&rQE; z-&7a5?={y1Ip6&LRjss8G^u!ZolFirm@6Mi?QpM`E997y`|4uH@Yh}6^|sF>ywQ30dVL7rXM;QlWTvL(IqF?;G{y{T0@WLmLY~=s z=RAAn0k{jPEF1~O32Qowt|A3_A&I9+vBX zIHTQ1-hNtAdF?z!Xgxdcj5Z$wGF+k2cWwM|JzyU!`|7)s!Uw#%&N{nz7&qfP9(1P) z;$o28Wv^pjEJMg@tuSk(A|%pAt1+B+AjG0H%~WHC;_N~2qiDoYR{G6;(l$yfdUfv4 z_xJPhIHdkqIpj0`s)(H43-g5bRBDdwhgy~<+Er1TA?rx`%j9A1s-)OYsBSyn#hPyR zlc+U0H*S{zOX6f^{=lboLN?qoVL`}jqk0MCrKGMj3GQ-bf85+FmXSgBU*RIfIu|O{ zJ_G2oPG@cZIj;xoaIiaR6WK?6@48oVufC0bIe_oMB1%$mcW>lxr{i5NAhprReKvUN8IedVM{gw+HVdwy!Xq&T}k$gmQTd)U_-XH-l)rrBs_b zl8SbZa+ev>ufBBkirYX{nWaalwiY58hpul{cm!*8pAt z^Yjsl(0TUW>x_B-dy26#nu`nSYAeN#b!<#;on7i_I2SjAZBCl<8L3 z?mdkal874 ztqYFXFck#Y^QBZ;UR#7rVu3=|r!l5!noQTVu(t3H3)6oExbKI4KFg-cM6{@ilX(aF z%<14%gisNiRR?hk-|(q|*d^E@1O##3tBiU7O9Ue!G3>E5sURm1&u#}JAna}5+aCA* z(XqDQFVGLx$hmFqbNFLTZJ4dH=o-i=&2#T0vI}!M2F*V%b|)dqL6|}S5$?L~P_!Z(*3l2&4+{n zm>IGnp1_;2cWD+?!-gRrt|L26_|+tufcc?q_9;galHn?8R1udP*)drz5rHDyL-wsa zY7~Z1)HcoY`D{!B2W55Tz2N^wx}r96k6O&@zh}?0Z0d&afJ~^pMK4B(Xo8|p=w-_S zq!VDol~j98QQ&3_bw06|1%2|{K#vM8VlD|nN#?qjH83)<_AF+{3{hdIP89kNU~8;O6)AbZtA zJ@%$%VS6b?o|oATEnryIiW(xMum{L!cwBqmaUC)TTdZSSaD74KFvDeBw6wH*-l&;b z|9Au>L_Z2w5&Xt0<%-J;`%yW8;x|}lop;MrVMRoU&N;1=R(h<4y44SFesGa{w5erQ zHdNLBwS$?UEE9r3~aX*MdZ- zl{UtxP3z|ABw1Q)-KHmV-7V*LXqjSfYDL@bSSM3>K53j&M`Kie5cavCKGxt7?Al0e z9V=J!^2Pa`SG(6g<{~pADPKDNkE@b1}br9>DGV#?_wSwm4;;;kX@_ABU`O< z90mxHNUNZ>r&5jMEsy<79_J<_Ik`T`bnVnG-{`zI74}MH294jf3gsAcAqtShIE+V& zg8}6^reljJA2 zgauX-rvt+-m)S<=y>m7u>@Hlj^Uhk^G|lK|osungovc%V5Z(grG9JW^BvDIc=`gx; z$TlHUM*c+~3$w65kVvcv{tid(fGqs|^TW)TM3o>YKJFuX%yWfjt4M`cf*lDm+jtpm z&(*o(t%hjV=9%ad*PQ={PekYNtEB`Fmc-j;djKxP86!W#ocAA%Wp)|L2e%eUicML0 z%zm8PHcb$0l7ZugT((s>8mnc}mBP!BFB*3gqG2i7?5&H42?!xN4kJMK3OTJJ`Bt}Ju2w)8ccbiN!p;M@%YN9t zS`az;h4&oVINyXtEd0Me-@y=LfKjb=$RDiVaIDKDB1M#WN6pQH1*V!cRnu#}uJHVW z-ADY7h*x8ELNznn%g+u*X{U|zZoo>VXhZfPaWYtT*jk40nWQSS4-q3|I!&Y6Y8F2n zT7>x|4n+bCf#T=E!xyG?iYqi?yZ{zZGU+kF^B55Cl0_)veBUHop8Mfdmc(2Nx1IIu zYfN1#W8px~KoSW^ju}3r`QcP*3r1wW&Er=>fQd%}y@hplh!_;7?urJ_duW+-@{-vRP5_ATpXbAKY{gcD6~v{CHj8Dh6B$H8wcJv0 zHH+mV*;0=PL0**uo(rdKLgw8OGDchl?~Z9sW*g9};XeAXBLXv%)_zOkU?)<5I;+pJ zA08YC*s;2nsqcFPoG1-kir~?C=bSUzNK99Zet4%T8XmQL=^YK}wY85c*9K$FxNIOh zR=TnRG7Gb`jXqe*TKoF*{p|v>C(`Blcr>N~kVG!+)SZ{md_?s;LzosOLXBamlqd$g zL1g&1UI*j{1Pa+piBt>%sG9qiX;*4Zxo953$69OVCG~lf4E4-i*Rc$XcP=rVA9G78 z*fMjlMA#6S*)nV06cLLtS`vMYr2bJU;3_{n5h%CO98-y@TL5TX&&;GI`_6TCrtAA4 z*f4DK68mXKiUw+}LLeC}?PuoS2=^sIW=6OV>3pnV944PKXIumFZgVoTzo{RX|NZ&X zJ4d4fr99fUF-C;Ll+HaX=V-Hr=83YI#%wSi@GqQne+A9u8Z~qMC%HHWui7edrecQIvsFhNMdZcJ74PZZw>=hLJ+A%p8-qW2;KMw{DX))=!>~!(Y9ZYM<7l@o8DAfeHG1TcNL?PV<*8{jsFOLayL>5h;??TLdW}j#fGi4xAw6Jx2F`1 zhXrcqDhpwC(Hni+i^1Za;QDk9iwG&gHPfI~UVZhNtn*qaqT0Bj@@+XA6CP08Heb(x z?4jn}7fonk)3z|Tt{oJ8m)6L|OT~jaGrvU4d|% zO*xma z1*?-_)lkf`&ZwB%svb8^!n1BS+{R&?z7vC$Hsv)pxCq*%l8}ickN5n1w1@VkO`D7< zvO^FUkk*)gp3lj?i`}<&QNTT0rTvRZ1%Fp4aaf7m!|hE)W{xp4F}Ma`FG1v^ZH+M|oHz!u{17vPQxSG7 zi=dSm_PdZh1Xb2r1bj2sA=WxYs<=oNSyqH(zLAdh@26t&6D-ar;}#(^g@7QRQm%d6 z3EgEGwi79(l*pEtq!i6_r2NkR{rO{^i;V^dEYfKG&(~LJyTcmP8$)$iWnfO@Z0V$Z z02e;&`*r6>LPU(#|M$;7 zXBVvGA?*eOb9N3RTvFG+5w&lS9X&$JT+6A-V#b|Dc1fDR7f#JMt(XNo^(5!C`(V~C z6Ru|Qh*!lNSb`1|Ad=R~XrmO(qNNa2O5(^WXBDrzCcUX7W}Ve_@gTT1>u9L{y4y2|~wCrNpx{h*9eQ zzP^q<-l#KDW?EIm zo(Z?*xkB*HN~w*kdtl+;t?RH15pzlnD{CJy542fCf@x}9)Ls-7mSLZ8j*Zea0-rUH z`_IqM(1RLycCFO^{qqkUArg7ae-vQ--lvsLQS(5oTf=bk7rixzP4Ee_8SnjR$6OCD%@Xh`w`GZLM#!` zSz&5`7wo-%b+6~+vBqlbRXUCvhRWibQ}rZnH7CHHs5^_qO3$p zSPDF5=q{sP*gmvxi(ZR}wcZ#*q>d`(t|9yL@$lYz&w!wa{_meJbp+XADBME&nEUyS zeM~1d0GV_G;iqXCJWacc917dZjgfPm9 z1XT#$y=s&kk4xSdw{OTF?GQ5YKcdLeLdtOFqAL5V0Gwlh5Vqe2p_=Ib_0K=AuJfM% z`Fbj)P8fO&GDq(*v8z3i%k5vWM=IPkN%cugtp4=?aK}^%Wl5rx! z3{!mH_;csn$wr4u3@e6BC6qt@J;8fQ=fccDsYc){v_352J46KM*n1`l4p}(VNv=H{ z5wXr2)6l`ldhv<4+`ayJJ`2(T2M>t5k4$cTDpK;c-EH`|E~qyii0>l_>EOLbtBqrR z;TJCUmcqxC4^EEmN1~nmqN}JwFs{SJd0YquQ3!-k6oH}`rx!nQt&Ug`AWGMDkQEWh zx?vzDXuq;fMv*cIWm>pTcFSHpI>A9mNvHs8w36mCNHvEd#;z1Y0+ zOW;04Y)4n+uNFQQE(h_@<2|u&L|7mFzS93-`oHmk9$Y`ezZr#|eQ)g`uThTr0b?MS zzV6~W#+0HBBK9*A-Qtiq@59^V;9R*yI6egLe-E?|EqHt^gEs7`AxnvKRZ;+B)T7nm zQ3qd9=i%q&zJF}jIp+r7G(rIjvLlz9Ah7RX0M(qt}2{-}`%HT}Y(dH>mpf zh_CWc_luB3b>HiSkIN5V)XK{ApGRC(^R()qLl8wrWvMWBUuOh@BJBHK(MoyY+iKVm zNyHEFdr+|2Fa{6KIU!R#Zx`RC?Jtj)fH?29*6`b}p)!?-lv2UvW=$O$p-jPZDu*p1 zlGdaYS?8T&W;WVTL(J@)>v|91iBKt2M9woIUSZp#S%$n36L;6kfhPHr`2PvX8M%Sx zxCZXw+eHN5`aCma2e`i%T(S`qoNCL+ZP!117sHHp-H&M}DL$#tDLD8=u7XZhGghdH4okB!+Gw%XceW!(P1AfmpCSJ z;O?}LJ_U;-(A+B=m}{;E_oX+5S~ys=3>>7?6^m4W^yJ@4)$Y-SruZjYaE6785Kssn z#ChKk#ef~(-gKH&@JYZAS0}>33S%-WB(t*|dztXM zZ$3=L%!)^2IV>qKLmV*Lh=y(l7Y!`IXr-cSRgiI~7(VRHNg`|;Z8Y`P|8zfORcMzR zru*H8)pzg}GL!_%Z#=(QOUJS=u~OVdrgT>J1#)9~`xRPd=w_O`hTewk%<^XYn|vJ0 zg@FfY_vOuO=n$OU4W%d&AA)!1oY4wN;bobJBkUFkkc>9=GLT;3UVCeMYavrdp1t>8Ds$>fLJH9m$zg-T)j1msz^LM}%aQ zn$K{N#q1_5V)>nSW1ZV}2YnkAQ#eZvyPCDVb8c!37HJu!kh1Os$b3_a`yOs8h$%%+ zMX%2Gwl~_`v%=(!@SZU<2L!IKn#`>CF-;mOvjHyHbMH^xNoM8tu>Cx^-=zhXPe4vp zj~`IeMnJ+;C|snL@DlSoiioYA+60eHu=y`%#{fm>yl?hC_V(y3BWI$4Vh~A3BI_)G zXhoSI!_dx_Leyb$%Z}&6Esx!K$86r`!cj){m1-qP&IDcG5n&jpESp+T`a-~1DpOlO zHYa<-!Pw~Lq8!LPMt$dk4KZ^4S6r>Hm%1`Q9B=&{(0u(xr-wk~a3%)Vw^?Qmr~6M? zRtEX1^^NwJ5Jq7V#9D9}#59ZZP~jyl)|#6#aZ1Z)~}o%q82@4Y8@{{a89 zGZZo%$3gK%MxlA$Xd(P}f&0h}UJC%1x-p;G0CP_Na7R}4RLe|r3WrzO{W#e<1seb|LF)q@|F`2A_PF^91BkfnW`~<)4@X!L2Lc>e5!Yc?P;9{WZyrW2V-^Kw86+q zjzk2h5GQ7F{^}Td&(3q(wz#Gbc?1FF%$fEiGgH&ebZQ;f9vo&vO+-j4VMtU|WaiK= z_m=>@zA)l&u>^H0ON*a5ERWk7A|Z0YIPn}+Ql{O?3xF@gEs zcn1lm32GDt{u<_0DLcmA-g@k;(dn_d62eY27#3pK^;I@0mJ`=b*uQO(MX z=1R|A>}J|XbnNIC=Qi^nLH4Ol7ZMQ^c?`@1#VYl}){Q=79&pzJc5znW%D4&u5jZEF zeW)e>1#$)mqM?X*W~J^4n~ob~0U|2WTI*E)KZ<6&v6U(7KCR6DNdkB4d^y}K2*8P6 zL>X1lp!4&W*Ei!2Q+PtD)rJu5%Cff^o-Ngab3n4utXsCi8tb0zGCB56Q`U z0D1VJ#*w}<;=9}FhJqTWjPvKHn5hFYB^C%bygcz3?#$)gvyyGu?S!fqo-B4VMTuYW zp7lrSK}vOF7-q4xHt{oOKkN9h8q?XGpKC}|%M ze5{oe8C+liCY>mMFSsXsKVZaxnb+;dZgO0Gp}j%YXr)j~f#BH>vB!HUh|<*r%^BxC;ka+&-TDV*^iOAG=e)IUu&r9Y-7`DyjMj4J z+}e-X*8)!>l7(AYp;RVOh*);v+n`UN?_A)froP-a+&FwB$&(knAHDb`vVZ@4J8y$E zSlc{|*0|^WT`!S6jp&294#wRnVLg9@h^C7p9xk!Vw&h4bAz+@$gEdNaQ=j9QVL_!RA`YW%Y8;6B6cTYSKiB~qq;q+t{n_b!S(0M%3 zxgD>_dUxX>g|Dk&V~Rw1Y&T`Wb!1P1tT2~^tsrE2>sX*|Ti9gf&+YDrpO8|_3*N7s z?EtXrJLhevc=62NukY{I4>RNO+mOv^nJcgk$4VsnnDQiD9`TV2TRkj~gd_*4DI)r0 z`gB&8hKNWC011$g;!={e&G+c@oX(OP#>I`8fhGQ&q;kavHyEg{{wpW&&a>~$J&`P7a@ z@gmmQyha@nt+W68`P22U;qX-al0$7SYZDcxk@4RP?&-L+%30;G&SSu?KAAfnr1%gi zH^IheSF^(l$yy?1E21yOs<yN@Zb`ikE`(x4oRZ%FN8_*{{45DM=-DOF|}hg$%u^6|8$`S@Hn* z$OxHtVD87zJ(QyCZYj7)8@A13CkINvx|%Z!}!&iY5&;tC;y zm)F;)pV??Kc;5G|G0p!y|7lFKyoC^lS!cgrKZ(7mu;@N>-1)>}xWStSiI9C>M?4JL zhwEV$Yi}FbK>!F*5i$F%m2ypIW>OF-+j71upD!D2(I^1S;8_GvDg87?uWMu7YDrRf zdGB#8nv>mef)DF8dhgHG%p`?79Js!#K^7trG0W`H;ez5LEEz{6nr5SA z>BME@G$s3)2y_--Uoi^`tB{DE?bB$}^<6Td>6-1^p&DylwgYX3%&4SFr z0*IuwHrgmf+w1my=otxjW~7z-!ek$u+*S~x;eZzd5z4t%<#~9P-X8UxuK=W9) z$ue|U42`RjpAv=um=N<&_?95-E^sHr!9?cw1=8}u$K405l_Elspkur~oj2Cy`2U95 z(DBb?oRh(jAyfGDzM(Y#gdjB<}_x@~s zOE`-~Er2_&QwG|PEY-|x)_KQYb-fdT=kxK#?ffdhUJ2ges0i>{2#)|p8?ANU z_nqwqrQ00hduyHdt!Wz5E)^s5xz6D*7}JbA0DA46rQ4&#W2=;;JZFV?n`Q8aGo^dT zUM1Uv>BOh?E`&Ggty2_TV zmw>LFd-#WAz$Nu(lp)GfKoR+(exw4>JAVsw(4wx>0NJ=ZCwNj~^H0fA~2urNpR-|Sf z>YrJ3(a`+dQ62aC|K1YGi}(JVkQO2W5CAjt(2sYiv>#C`<-Idn73rRm_U(j!M?mMf z>s{NnYd1A`V&MYok4Ely0P81$cdRkJi$wgF(XQ)X&if@xW1V&0J({*LO+Z-ZY%qM6 ziI{X@9?LqyPh9*Ea28dHIM2?z0Q5?cQd%pO>9GF)2e?b@>zx-q?lUu5lkJzx%$PMw z#gtLKgcJa9(r^|LDD(|YEmCo82^eFJJxdM|V2Rt0)>>{;=2zEgrL-~XblVpo*U9nJKM{!}t=7+fI@@=BHwbQgksb@)w9?^R?7es1OUjlMUFZjU%*msQt*R2zylbx6BEZ3%o~Y4rqh{g0 zx6GcSkckW|j6y^jJ6n3kUEe?2_G9HInAYvQ2;krn`?v!#4kX?cLNadh%s^L)XF_2v zde20ax{u>*6_Kv9L^Q|@ltkN8wMi(b=O|T^z5s`5EES9G+@QU>&a?OIduO%MjWLQ2 zx6Td~db`2y_ z(n>EYNB(2r4mG`k#b;o&an2FR*meYnghZrCky3=nEY{henJ!bu%atcHfjUC)SwUp! zxuO7wV2JdUB1B~NFYhGK+2L~l27!wFONNip3azuo=o8E4!uSJ=gbO=;WS8HVHlEpR zx@M=6b^s{Hsu{j}z>_J~5Fr??t+U1)N&_GObe$8xug3#71Y{5p2}B^tqvmvG3{Iz6 zq>YDi6xrb

    18`BWcp~Cq*c*n~|W(!ylLV5%uzVAI3SeiBEWGMR| z;}Ou`si`1LRE~i2&UuH}hdyMb)IiGrN5DN#qV9@5mya+?g)YG$ET%|>7a;{biq2Wi zq+^%oukGD8T4oQl{)$5MC>|x^y$>ym7|31yxMr zM8qF`kq239i8~qQr_y;Z-jPS`+4t7Ys3ZaCt+md#O>?L$H3aXon)mA|;_P}E02HaO z$J097+n(ps8wVvCse$B85@}5`etpG9GZ2Lc04!jgwazIbqqWwW2z5yJ&sOP3$DJy{ z`6XnBf%KH)&lLe4ZR@=c1xTUf!+ZbgU(UM`)sLj;^Jg>GCj{L@5LJ3`LmqUXT+W^A zv_k7#V+^ea?|66T9qbC8l)iG&lk;hACKfrYY*(2vEQTUiW*IW-vq+Xw3C+0_YjA(m zN?GTJmW55=iZQ$Q^7VKUQO#-{w3Q;12Z7X>Ps04h2Rk9jY$jrb$w9(h0A78!GJ{b> zUfs(%{b*aNKKCF}phn?#pH<8?q|j)imFjG70~@nE!i?JOMb3Q;-cPm$tmp*htU#o5 znO}W}wr_N!|NQ*?^L!5Y-u1n;78bRZc)1why#XV@py)Azmieq((gp!4qghac;uKFg0C8dh)W zHYfsokn|vjd*V~?w6qs}2 zP7o0lkxrStzY67dH3lkiZKzXs)>&s`d6NJS`O*_%*kY?53nEu(ci3)sU8iK`6u%;L z&WUM0Q#K<~;$g3r2fnE>dmbM!b6)M9X+6fWs{vUtfg&bnFJwQ7;zLK@kYcSX+{(vE zDW#O|t$!+9nYQug1G1m1=A1$N;E;yX7i7MmLx0(!u$`H^IU!R*cR&{Ye!U(|(->1# zx|21mz7>}QAat>Al{LmEEtAAcnc5?SGq)fh&Tm`OA6V_q}JI3`M3P@$NyOf|;2WMAA0PR=?So=sF^BE?5qk z4{XOW7c{%V0_Aquc!SF8-nBDxz{lLzcNTZgvXq!Z{341^{EPs2fCChKxYM?2zJI=* zW24oyqi+0+i^yJrcoa~;^C%uN>$r0pbZ2|1(^(A5q>uRF#4!uW=3PhnDSmxj6Whk6VJ&L+6Dm#!8uoxr@9>VB!2cN zrMZ2w`qUxOGY?9pkoo$`?#f$6@d@Hb23~lV*qkwhij>i&?_H>vS~f1dUe2?8J)Vcy zn0<&3Tzr^O!ZV0JJ+{`m`rSE{;rF%|kw-;EKmvCbP(x$iT~MXoWe=a15YsWz?V z*jqEbIW%xeWci#DQG~&BZdYFY@?yX@OO3o2A`yZ?(yMz_2k#TV&+8L$LlZ71}?YaL#z<8OEoh}%FIRv@yrq8ll9o>E>Ib; zAwAmGJGRyj6V!YD`LTfX^?a(j+L#mgKI9m#L%e5p&YgI4VL4jsYVe(gN=}g*V*yTmV9h7g-4q0&jGB+SwoS@yi2iZ&rT_{d%9bP7gmn-f zSeZ!AucO9vG({`jwr$rt=R6|x*1uj>DfRVy()q^yV<-;;#3QB}BCh|g`mlWlkMRIa z0pGit=v`oL33n9|N*?92WBg!G1ZyGuygx;@dpTqcv#W!57SUQ0DeAg@MhDhPflJ8R zVPnV`5|*Ez*U#$}YQWwavnOe=+rB280wOVr^Q{@LkOZ>ztcxa;CwlEA>;&&s--^G$$_zk;N6*B?XMqKXPjcZUeBW5sw5^nXOo{vW~hr92zdgylY_Qrd|_Klbz;CpZT-r8+?A?c*v=ns#x{R2uT?Zrub zJA@w@dpQ!k*ByU=MT{|s_|v^~vC`z&(I(VxB4|a5&^dl}opbKdwo0j+*UZ>4NGHK{ z^^-ZtNv^E(z4DHY{#_tCQB%$z(OG~9>mFjY?+8-gI{2g$Cgz>p+tj6rPZZj${3?OX4w$09+f zwtDpMa;+N=#irh?0Wbk`HaEOJkRnq_7m^L_}CvidbbrVw~v7!k)D5V0}l z=k;O{ePE1t4JJSk(HKRZo%er!e%hvKjJb6Ma(#tN&Au!{8=eS8KUD@0!R&~Rh1%Dn zy=Hm$!n9RYCj9A2-IMI;*rbOOu6t5Gg$UkzF!H{_LIKc9tB3OJCECzL1!m^KuRb#v z8{xlz^=0Jwtf$+JV>N~NB;JjbJjVd zNgrJ`vc^GYUmHY*LkRD^KcpA26$_-6CAj=)IB-hQ(k1>#DRO?QYq%0{qSW>-mA6Nn z@LDT>wkc~+^CZHINA%3^t5h72NJIz$lrpGCxsUYXSVunUIdJHEPjNjGW_a`IK4_Ve zT5>CHW*X?QEKZQM>ydbnL3+!RJLJfCh?5ZzdyQ>hErlMLW#KRhw_y7EK`j+Tvaqni1I!H8E&gFJ^UCfC z%{U|e!m&A2U3l-j_sror&{TvLKKsH6A9^!x9;&KM@{FA3E8f+6c@FXMASZ(W);X?g zNj>y{h=e`Ay6*XSY`kqWEWUQcU;eF93Y`lHCajhb9`x6);f8F4l(8jMQSTgJw7S$A zU$Fi`rLLvPPows@)gS~>cxaD4Dl zA#z27Z1pH6d#8sn3O}c{K`!o;ba8Bx;IosM@Se|z@ZArbKyJ@26?OPqgYtNkv6>P>k&~$CBAv+g{32Xx$$YG*GY=KqKp47bw)x~ zXd(&R<#ZS#_23d_tWwxCiiN*lKhC>Kd>@<6>MdH*Kr^#QGOOEefJmMs0HPFWtq>Re zGqU-g6{9hGq%?|%RWuowiUZfXnF=8x?=_A~1*{L+4+9_~pmPpDw4!m$F7m`5h?BF? zGFl^`oV|+M?oT+?!Osf^Du}?U%a()Nk{sk@y!SO7bH&lC((S;wa0oFt>TJMBYFiD4 zQ&p-Dg*PnVRcjqSd4L)$Nx3e)_heR0E&CH}UrH=yj-yvd{$ARd_3OcVMNnV(4@R;=?7LLki|^Slm1WG!5k zTXbfk;{u4jLdd*Tp6Ljh2plVKcPCS+ThfZf3q$}?C?KzXM^=mmZ@Fq! z&MgWKqb5XH*SHdHOBU4Qb_KO;1?BrgvHoAQ^X855#+s`w^TmkRn1t_}8?R)}8L|mO zId8B5>)}!c(GM&EbO;Wbrcp$MI494t=ZR955kf*DQV9o#iB*_+I60tf5N*d+smN@4 zV9cpjokkO^Cwg5%I)aMTO3W-EM7SCT;*mR9mlBhEKui#^G0oTG>(M-hYLvBP%4g#F z(WN&XQ-9sb62~5#T5xyXv+((E#LWP8@oW%)2)*;YwcA%nvFb>MC2(=?L_`w{yAc*5 zkq7rt*#`1+T5n}qrYhlkb@I!A??12CMy79<@0(`%c&s#7<(Uv^!o#fH6(KcE6F3`z zs)BHgpG{ip#x%iTKDa=v5o$wF&y~jYXTuJR%>ItkM@DM-!Rsp0>sZ#q3zEV_f2D!? zbeRxQ+qC~YzaDK%io%Rw7Cs)+-Ac#+2&W2}^Yy-O+H)!g1_Ax~^7d2JEK!blaNphp zV8oP1y4TMA( z%AzsrR-eo6;%Y1?qqvgn&C*n~mqN7~8w{hh_olZN2cw~>ip1cvI=GQ(rNWjT?O0iM zD;jY^!xy&o?E7E?w9`PKHmGx8um|S45iALsr0$ zuJ1S6R?}TjO2+ZbAh$SHTV{_Uh}1OA&+COq;R!CqsLH%WT38}7Kd-M09s^*>a(Vl2 z_40Rk=$WiNXPl@Jl&%AvWAC|b+Mx>V)pgc6MbsD*>W$(9$6^yrg7v*6pG>p~kLbrH ztKv3fY@)IajGaf2`f)n>& z{(il*)~zu^y^$1QeRn&ONW&bhkWW$&{^<~7x6Jv{3@JS?u}BkGC6`&erzbAA;Lo_eKf$2q217aTT`$fs(O$F zr0YB8nRG&7hwS=JJr!1aX;W@Y!#b{yCXsqP9>L3T?6yZ#AtqERkfgn}UEc>qtfNg6Gp6VrIx1OvXsQ6pWL}0N z$e}U~gw*)DNfXa(zObTGcG1X%SrJ_AVUn4B3<9tsVnJr^ZQq*qGueY-^il*`E`R*I zm<%55N`=_FH5w(o2qFyM`AH7OJ=6@PCO$bmJ$ULm0W~{6(r62$teWSsR<SA>$Yiw9 zsNGE+;I-g=p8QD2u1JOK$4~dN)*7R zgcyYAaEeCWyI0?P?`P?eJwdmTX_+%Kxbgnlz+P6mU2-`!&)J1C!1mIJOg`pUYMYK`}bO{j%lXxUV z@%NRnUBk8^;KH_PzF)6cO+RJWLxGmjy6d~H?hv*p4$9 znWH}4@3=NPk|e*%$(#)=go6|!J)6cHR}?3ruy#Q>y0zk>`yW@jPR9i=N-3k2bwg$~ zc+a3QrfnKTe05#0rjng!TYmU!p(+DVV*i)RL)TzK6@cs|VnxJSCQ@I|Co_M)ULevo z8WCml_|+H%Ng=vznw75&S!g_27*M^01`>^hyRLKI1yQn9YNE(^EfUc=GZP54Iycs> zUlg<5Gc%1_7Fe-V2Db#z&QmTQV8Vl9Z77<2N3c9EY+va5{$jU43frTfaQzSQ7Hr_J>hhSPO-8PL<3PfJr ztG9MQcC4Y9V6$dAKkkU&z$;BZS08}#&CqniA_Nn%BjP{Lr}zH*^&$k*s4~+vPy0&K zM0^kSuao@T6xL67a~)X#=)HS&osSg9j(jiF^~<4qh>-NEbiBv>bS*Ku3;apzM0u>RHqH3C>?yRMs1F)LGGXLDWz@53Hi{PXRsY;Ei-cS`5RBg=+B#%a1| zbKKs|nRw=XT{M_jN|*nUI+*)!iF;Epr4qp}K7%$_+&QF4sF z#}D(~6H=wYXN=%S?-dM(oICxqZ-Y#v#>NtXYO2Ua)U8;1_1=U3oqm130AnO#;b5$=7|lKjN)_u?2D z3I<)@oARjlctQyuDw2tN;kyZU89*N!traN&d39ZCn@WP<7&XE|<(CLL$FIKo=c%fB zq0l(WsW`$1^$i4=8&Je2=%egX8nL|UCP((Q$F$C6uUEiL6)15^!Gj2;2%dKL`dZyl z8J@!A6_EY;c!ZQfW0X<^n-oe>$R*%i(`W$bY`;OT@3xQQ4QpVY3pmDCp?p1ae` z%?1FR^FLiT;3gp`BCSY8a~Qx>(@O|SQHaKlHJu>QMDovz6uVDlhV1!k7PBveOE!vO z2FY33#0nss!*`(IeU$pkek;`zzkZkkvbRn1>N@A0(Q2N8mje?xITI0DB`(JpA@^Syh1w+p2?m(m;9)aTg-K zL#YPO{^8)Rb#x9e^IcB|5oRMlBuUe0M+kw4lp;mZC;?^#a;dON5h#V$S?m2l>$lL} ztSD%otW1U)WIy$cq!N#ovStGXFCsMe04jN)$r1b;?#DSsKx0hT_bl8PMN}7XZk`Ub zCauX@yQ>Aih8}Wh<)Bh39Q|b4%`Qi4v6ses7#q*#^6t2gg0<*>cZ9npRlgsu%Tajz z=<616pKE*%$PN=%v|DcV%Jd#Gl4n|!y_cJdi6+5K%x)4OrIvG=nxw5rv4nppLI4a& zvJ=;WL`15H;CTsR{_6U^m_eOAsfsiq)}Z468nbI-7GloRVs+C)WcN+Zvj8ZidfNkt znWRrATdd%LNH;9G#;9PzG8}noknW}lC_3d#W=s$Ypq$V-l-YDi%#6tDo*)M)Gsv5x z?!wCu-rkG8_|CogIJo1zh&8q2Al&3tj`D|c;o3rCFmTpK|J>io$!rDzc!;7(3JRzd zdgk8tc=mw?9VwCh2*7(k)Uy}q7pZ-|vQLv_zogQ=1&+-90e@?j_udC!Pb*UzuP*Mc7;C zygNToiwB0qI&|5xv&Ti)jt56$`wC~DM&TQRKf}D*=R{f+fIWoA?U|KArSM#EvF)|3 z6$PEoAk>v=RJXRodi%ERxfP_{aM>@8t7-2Es7F&HLZTul4jO?I#tg5HTQ)~;i+y8{ zCGG{=C(v2W{n=gjb&{4@+meJiKS(c?OtADP!d_C*wqy+M4Ct}$N>*={`2-;|Jf<57 z_aa1=r#2o7Ba}h_>H7Yi+YkhUBNQ`t4UIJK*NY?)C)G4HJ?xaB>6$0@3O&u_+dBGgKq_##ON6QQA0QVvMXum{gE_SEV?ARtf{gWE2sR|*Nyd*2w7 ziIR^Rwjek$lEK5Iv&=(p8NyYqw6K+-rEWVQ#$3%T>CvyI;72Kf#gLpqH!r{p0uls@ zZ;o5AaLhl!4AlK}9E$h!F$p3X-56sA*Ocqpxsp+A8~vy_oo`5lX;x>GSJGBJ{18)5 z1j0h~U-pnaNCOd_tWV{e+Lz$$B&zuCh$M=T5&OP3N}ssi;=x8rs)s(O~oVA)->~Llx?9 z)Rkd14UWSiBepLS(2Kj2m1EO1MmAb|?*(L1EFi@>5yjs_^|bJ+LsJF;BQv8GU1PGi z=t6sx1gb4|%4n^O*6LnlU#azfJ7@A1O9((Dqm9vqh=xgULt9WJJE;j*~ePK<1haP!X0mU#EUh97|J5KcYSMGd5=zh zU}hANXW3?#aN*`rLizoUMOopf2tgx&LSz`ln8QT$9O_Byr1}Ne3jinrB21zgwIc5; z!Rco39__U#XpLskIS#S<4BTf?)F!Vn-S;tDI_ZCjux;C)*NcdmITG+#a8(Vc>YR)A zD>F=#nE^}0?%>)g45HSCZbhjHd(^Km~s(s9wPu(=7CX~o2KhK0E)qrWUi`+TI?(K7B^W$SI>GoRw7!lun{+m?he* zBFLxMXYz@2uQIM ze0^PB=dW)h*0nOh_BMx5oD!i|ol7%922U9+twr<$T@y%o&SV3k=WzB+B#WdCTE%dHJm|Kb=P;7Typ_!S#rKez)6d$Yb7e zO!Df9$}$A?Mu2S8kT;6 z7xg2E$mm9E9rwR5Gzq7M(ISl6c5?bYGD0R;Z61;#tMu!LV%HKB&LvqM&JDJvq~(2& z3-Q@Ltg|5mTxo5@)3e}^Kw&+)gy7vedzN{hvqwv2MgX+d+Ud|mzckg8Y5p8*1qU{~ z98d%iWW}r_{q2mR30$9NP!yy4+Dzy=ZJzznj)!;g=ZI*n@2!8djnVq3AKUG(#x#l) z0H}bl0)5|iwhuMRr;%{TwC4( zfLdvzjn)bfMI?&EW_5)!Edp*#(>BfN;vboI&<_^P&1R{YFTo+=8Z{_ z;3Ygn@jO%vXGkA)+U=)-}30G>wj)cG{-#FP|TsB#X^uDLu66 z;~}HMN%;b(xRWky_M)I#q-cihUZiLcR8h#_pbqdF^S*}kv!6#~Z<^LLIZNf4t+SrF zHBF_6^Nq87II9NPAZA%gAR#~{?Vif!;`*S)2qVh)R*7CtITMe#OdiB;wO>2tRAAf2 zTh2f&qEcZSx8(@7Q>NHPo1*)xW+F~2YPGrqID7MdxmfkV+Qcc&q?WxA*83ih5 zY(iRqQ=g${pPSq7cDAhZn3q>8p>=G%YqXJbeveansyMugRAZX1?+__3kSiY0XH}AG zwJ4>Z$LY0Hx6*6y5-1waGYXysP|-o5(mQIJhPw)E%%g2vV}_amW`6a(buQfJw|_m_ zwwVU?A9#t#Pxo@pi^weZa+HF~A3W!$qp@gpntdsibmm%$VQOG%Jh@}Fmobdb96 z#}TRt!-*>R+)kYwcIPGbwpU8!mQ1^`Cr(?IhMu&~SPtZ=R~Q2Mn0I{(#B=H%oWEfF zf7|(k+R*#f3nzu>(OPRRA7ODT87Yl1-ur=^nepthV%f3Y=Pn?aG4BWfS}A5`;MmuL z8{j_u4n-KtvIh#D1%#EV#`hXu#ER`HRF7EeJACvO*QjfV7 zTI<}RN$|j{?|b!Bc!VdJ6EZ6mDentA3e`0nsutynCeqq$7dS?>SGLZE^?o8?ulb8m z^X@%+?+-16Wx>quJw4j?`^6mE2sfws(nl8yLpsUAHl|750|oy!+PJ##LxmF+0YqdG z=Xqi%A##{LTxa2yG;HAg``&Rt_GEM3JNv)y@6PsG)8k=`CIBG9N2|4_SKq%uO=9)s zy>~t#J5ECD)0Apduu1rSR77k|&6$~Rh}#3z`$5>M`Hoz{BdbF@cf07>yVz}5w_P#M z${)|M_P31CfQ>|WyP2PeBxHw$LdWGhnD!e=c^21CyTzXf1jiuj93G$cOImuPz?u-B z?IWF=5K6+3xKc2)a^vy$kESI=>)hlWQ*D|3ic&(1zId^e3Pm8o*kV2%SdMj09bvcZ zIuC$f&!^Tpq!7P^pSyKkf2-|biX2Gl$HvewRZsY@4=IT_^}Gk(CaeS3V~^n64RhYP1? zDn#e~p|x;AG*|!>sb~AZEF-&?fT?L{3LV9d_CZR$`hJGH`Q4P9m`VtNfI;qTD3uie zH^_t`ZU^sj^uc6E={BaBOcRt zh43HCFk$RXmA8Jy3L|hrAGM&qiU_2TnZ5VN+)2u9;oAoX(MmnqHts3Y%ff|PcoeoaaDVur^S`ouQ~>g2L5n-B)UQ=3ITK)wehUtF?i#ha}5ydFZBVv<4@C%pY4Vuah|Q!v&5oKMr0 z3I+Z)TaIve-!K!L5i;=R>hiwG^ng z=KpeU-VAo6bJ9b<>;GPs8F(dkId%m%p25v;uNup8#wVQt)t zX#Gn8@kXFDBV#7A1;aBBr!hWBJ_0p9zo1ezSU0Il`c<4Mu$ zn_#8d9Y%pzRHQ=2(RtT(J=A&p(&~uGJ}4+ff%VP~uW3Kl}!S>LrCHTtleAlDAQg8aZNyL`+wTgnVsp&+svxyxo&H!MyGw=J%!S*$a}U5N^4zJ1DxZ_~D6VhREp zFyQ%kG^SZn@Hw&@ZJv)uXg7X!UDjxgy9nPxgPG{xXuqG>7-jTAhKSkDDw4$GC%&PxdQ3BhPGI@0S^ zMDsrPh4*n0J5Stbz0;n$dmANYCUm#$es49czzmvlVmbK7)6g_gsHV{Gte|r@ZlWcJbSL~F(U-6(U@RH234po`|uumc3v;1lxmXJ z*!x~eDMf0qEUrZP-J8X+%H;sfwR%vvX_<%mtVCB}&FACEi@=rh@F$rW9x2gaaX#&M zTpH#r9rf<((BGdpfJ_Efo0FjHTunA|$S=UMU39v=sa=FvU~DYO%PJsyoQ z;hVhoUEfJrnr4+2m6C8+wZMAm&lDjdB`rw=0Ovgbsi9kMbP$@*#EKBrx=+y&H&&UJ zi#jJ=ZxyNM^O?7Vy{T9Y0gcwq`&a^wYZ}cv3cy7Xv7$3T_I|uF{Z9w)%>EZbY56om zBP_yv)^UEkxHoLau`e3m|9l6>nv%Vp9C5(en8S#UC0L$S zj=)+@^~yLm#%QIS_qpk@2>f)fz*HZc8lu;RKsKc+wshkO5izzk;qdPe@~)NPM!k{t z_6J$VeeblgwU(rweI%7o;g&3<50@AImk(b*Oi*Meq%eioo!Fs+=tNp{wXCh`LMKk0C>-!FJ7A5 za)HBHy|cY_PIglqpinPACJZu&)oNYZyh2ujnayeYJ#`cxgXb>JC)xB#2C{%D}s@y-Sx!8{a=ha1X&c1 zhd&dNF3>#-UJ((ZXV#!@T(aX^{-!{lnI$WT6agff@dX=6EFuyC0UiRJxHpV-uA?zs z2mkb)euy#Cq01ifE0tlNDxWi+P{gt9s9U?*Z|juO}hB`o8ab zNLC)h&=X;+v{tIO?$!5>`PsI2d2JJ-(T2HC;w!N%^}qxzQSy;?Upa{-C+(e&lv@`( z0%)y!+cQga-(AE+2$QPZ-0Av=>ov}$cRwDw4>?sBS2eT<G1gfT9GG`JG=W#9RG~L;Jv|~T5O5<2 z8>&BhYhRrYQEaH%T;YmJTTN|f{}%-CS=A9@xk9Gq(7ob>7rUS$2S2Q_4C{mWbz*(9 zw@uTtBO!BlO6kMT0`Z0>4jiD1VZ?L{p6Oa;*~>e&y&EET1n8ah>|up#FKN#fP(W`3 z>xA}|(WP%P8e0e~f=Gx)k@L*y&aL+XvX){!>a{(*tYznYV;ZCNPuE%Jw5EqPN=-`U zmrQ?S6e4!L{eHc^Zo+p$8iMzI3vk#+XUXlyuIv$K9fDTxl<4d6aL%y^OM;*EZrajp zp87&!%=pTi3D~2HZj@S(SUDiqpfSe&0s-b(1pM6ZbOY;$xE^wOeMAt(_Yg9_FzA>% zAD5xZel!Fizyd5GD=CPmlrl{g7e}B{W9Uv7(RSuab(Sh_p>BB7c5<5aBT>1Iy0VCxFHfqIq@hE_@I6 zxG^8Xa!bwDsKc;AyRSWz2`!kKk8XSgBk56rd1ypl{ELW)Fh+maft(O#4i+L3x1ZX& zwBLf9dSu^kvc|NXO#}G^{8%Gqt+ch4MU0{1$F6^*h@e*VXm!B%e;yCIjPHchX#EOh zGqUF5vOAEI8qwfzU4PgqGBfms)4ELL_z^<)^Yn{EgxNDwh*X(*_-E3E9~qBY=)_;3 zfQO(DkL$Q?(KTt$Kp9`NK)%G(O@s9Jry@Qy;8Smng7`}5y@65}j(R#1OiwblGU}}0 zNmX_ z#Ro3~y#lxd_xUkj5CI=;Yn@~Ev{A9Q$-D|)q-kZj7#}m4C?L;{~!h z$%NK0PEd|1-9#!x<>jZkVCA!yc&~&iP)o5i?iWNkx3oTBx^E44ez*=TzBvgvDN+kzyfCF1edqk))MzKh5 zts<)4$ye{RZ5sb#qOucVA|;TbIjsZ%%en4g`ZPpfsq-XHx@95$4}^$T>PD<|-v4x+ zB2)^AqNrVwpPg6F$PV~z&EVbgf%g#2N+~Q|7v3sDyQH~N6%1wwAL)2{SFz*2=|w|3 zNjg&zQUvb&pUeJ$>^}(sGmSR<1d_jNqgDK(`#1__MufJd zOzKF=X#TGx2F9>YD{Zv-SOtCnBhTJi+ceEEyhHV5tUG0o`1!&Z{ODIn77(oX-VjdO znsBi_j?F#`DrRW7BLc0+I%l-k_brnvFRfH#OmBP4GOH7unnT3cTUr3xKqbEf_lWEO z@bh|&RuKn}PTS1Pc=ejlgYz7YN!EE#5IL4&ZL0tgHjSF*v`%FgOKH{oPTEGlUiPQ! z{&`+auC`6%d^jzRXX+u9FCx9QF0?|6z-Br*wKC1OERn1j43P+lh=>$XC>3~vQb#K1 zNOMXA@8?xMO3IAYiHN~ii{k6n6Hg6x_O|c)o<&&r`FQ3<*%XxqWn36~08_nw9& zRzrr)RYZ&}PFgLBl<++3cV-I^McB0Z^|G(7dp;gl?vjXFV_w2R09h%ewbn!|(%Zhb zF2Z`90`RQCC**RXE0$79DHYH>)yW0Wl{d`1@g%Ys-^y>q12rep-`_J2b2P`e6(TM> ziSUDP#v-q-^WKFW+dKbyy`GQ9to{-aMR1^KJ_a}+J}6)z^>pdkZ~QS4C`HaY@BQC^ z?_qs4#=Lq?M-9QPyBL|98MvcT>d`(3@#po5RqY3g&*sc~WgVypsF>Z3B{ach+bFe` z5nf}QS9KzHv>C8uW)X`c8>4#bl(lWsoEDT25n~JzQ3wcwx|y{>m1Qa+vOi?SoNAC9 z^xlt#kb|u>A|W=$yn`jgw^J1RY}y$#52b~uh)5|#7`j^!1Vnt+bhTO`^Nynh0($nZ z*NY=H7eCnfnBJey)c1>={Br0HqlElB(7eQip!d*Q`}{p{&#QY7K`GTX?W^l%`Xk%A z-#YL6(n>$t2NL#u@4VY`L6O??(zIZGH3=9T!4c6qAMo9K1_7ft8x_}1Uxh-U?Qml& zyVo?zvvhs0>(c1k3|d&g&ik(GJp0(eGoa+oG?W3bMP@fWoXBuS%Y~jNCjbD?wv{&` zth|{+kus821pE;=A#yDtJP%b9A%E@INyvAEj$#-O!2+O_S_13s8yW&S?_S+Y#`+J8 zvsb`6OGJ%nO69cju@aV4S^l@yVxEZU^LSK%2o#a?o|%6uUma_pQ`sv57;Qk{)pv*l z!cwN)r)ZO=1!`>`ZHtJ`xvuXQleR_`<!b;%~7hm4U~v6MnJm0ufcZ#(4pteX!B@W0A%J@*A3Qu2Q#S^ z#P&*BHIJ|J5=qZ2PMY94y>n#P3wmoeg95H9qQ>a1cfIXf(_UO!&biQ&Qd5M#5`%6? zOq3e4C9cWaK?&hZvnx*AjCXrcPclVI;SVpxwSYC(%j}6v!N2^bt;@6j={fjem zAA-EP?&}dv5%O*8!?etY=%6iz;DEW$(JxgB6rpvlG3G!>ltv^QnR(?{*c5XS&+UGN zsq>mNrU8H)-#4Z&0YGD#(5fRKukIzn8>i1&A%?SMZ~@;Nt%KKgY+-e7RzkA!$+B{x z!)LGJ{^E1yH)@R1in=~Xab9}0O|vDmjitLQLW*oXjYVS+j^)7jLDJULKLnw;`7>M# zsaI#89Qvk;muG(Cp+w@+!_87l5fq(79}C`*KJewTwItsArAi?)JMT9&%?HUl z_TKx{ojolP2%UU{M2G~j4{qSKqC!XYg-L>IL?m4ILPbPso3?FY6K2I^m z^jwT>HHVQC&pn%8;{uja5O*Ov0KB@6nQI=YfOsE>Qye;cKVRjpe!qF@y>{?H@5(wW zb2uNse4=C;DrZB@ERq^4ktrs4C?I_N7YeB#Bz5Qv6!6_>^L#v#_CGD>Wx#!EOgL$x zb7^FmFdl~xJgMLO$P_}T-#(uyQXQDe08-dcMtG?2!aV9$L3;+E>> za^U9Q)U94neEW~S!ra6A@d>-$I`1}+9T)MUwbrx8fs*+wEi-uMei+5&>YA4NHzI;k z_e1O?847487rgO*!`XKd9@QWbh*tXR`BX|HLTC&hi610He6)|K zYU|l|eYZkX9vH6b3zSNH*J{Lf5$Ua;;rkX zCnCQkju~1hKK~Hv@fo*6&#Du4kVSDrGe-){Gc3=tnls?8j*YPdKv=W%z8;UZX;V=z zh0b>(dOn^?sc77uO_W^(uOU@xDWsbBX{C%-6MSc`*-=)R_X`n3*tzu`1+awlXc|0d zs&I}p4+b6YSc_qLGiRElXIah@kLQEu1Qd|lGZq5!>U$_9QFm@s#Ix_M{cL|#e(`9O zhTm|?zV=RB34@9o7$BkdexO{2)9)ITpB%~+3GSLX(U|7z@ny6LU3gmS=i?bjGXlWA z@7MhLss?l;R+f7ftyUE9J*c1d&NDN9cF7}vXa0FvrPM{K$N{Fc){W7p9Zk1-JLX!X z?-Ds8q(GV-jn>!RhF3o5-MDgd=#G8gGkZEdV?#Z@b(Wcb1>A#X;X5QP-h}mM4=BhI za-^eN*P&Ut{eH=8Z%>>>0!2fFkG6e2pU?LBd^`pjA_~exm7iV{yi4WDXOo$keS-*S zMNKMr5BTnx5i1_D)J_PIRkT6C0olJEk3@;wFtysIok@&trB$VX?%Qt}n7CVvVT&`4 z5T}&Ie^Y8)0Qf#|54DfIwWkLwRMT4LerrGoG1X#x2;Z*^znuEDA_M{FeNnGZZn}m_ zJlPJu6_M5|e;YBgWM>Px$e|pH>kmFxrN|^tkBIM{5f1_Q-Xtm0IOsh8yqqEx?3ujx zKd;xH@9)&dd+GIP+mJc0yrP-yR?X0bO#Pb5Z*s~2M53lr^?0XlU6z~ z@!MD-+rj&}G`3V1Ru1@1*sS5Ztbd5q?o~2BErq^8esxySsHgVl=ZD1uLf7}#Cz2xd zXxbCPtrPxlXO7bQ@Gn%XmaD+4is11&K;y^Y_Tkk5=Jqg;-ZO{f^*Ws=1$_ z_uCph*y;7oJI{z0uBjZ=$If==`PEsi^z-px=086_z3m&Lo{y$6%6qofB3!mw)uuHj z>GEDpDlQL?N)f&X0441l$%h1wIkp`6?O6Hujv%d$3AqJE1SAnMmG;`J+lmN#_SU&y zD)^4W34mpLr|=hz*4FtTyJf8d(0cA3Csj&ZTX8X1$KA^s zV;*hWTif-$B5c}55ek6Tq%3yUYOOCNwL}<1Ywg)P@gse`E~+`GpVo+s0iYuFJ~fh1 zNZ>sey@e;|K|GcnfxpFIF9&y7hwR#!Wo^IiNSq=@$z?-Ua_1ORtG(?_wX^f>d|0;s z#C9GXe5RA77&H6aTX!Z*UJEgW|H3KERQL(wQFKnsjBnpL6X){>QCM(Y)mJK3Pn-~K z+p>uF4r7Pa2C{gc@+RQAb_b#xyKlw7Z}7Zs6JBdWR$Sa;&scy^V67 zvxYl4KfzajJE~UwLXkIC7TB)InS~Z499(kO_ql8(%EtHv^t9Gq^n*P2>Yep|y#*i{ z+r?UJA^~9^@_aQy5~V#PQ>8c#CWmJXA}T`X*)yv*ILnV;gHWl$pV>>~*KBG0Fx6T8AbzTG-qbm22%_~CdeAm0iG=%i$=bI3o50eT` z#NgL=W2+xfYF03KgiI}&3n zHOcb+`%I~6jP6|_tx+Awd*?a&5>IbwB@&aJ|6a}|vCe)brz!x>yUzntkB8Bw_z9;Pn)U{IGk6d2xbt&i%;o!yR&Ao-tqaOZ zf;(3)fT5nuhfjDsjMkI{B&$*aMyo*M?79c90Xj_;#6+YuX2kc^Q_Z$;Bx$AOQ_Ig7 z!(P0X%A*4A&Qd(J{@;9~L5Vx4gr)_F(RE=ZkPrW!*mgK+D!v~pM0@lP3`Hh>`^!Yk z2QDHQs}kV}+WqhZmJH|53KA4(nc3ew+V;^raGD9J`qVNrbN(rK56(+rGL?*im7=!M zp=il@e)ZPNno7a=If&R8^=Ngdw+V@jdWKCYB0{@yP@MxhEdhP`7p+P0`|8_P*=+$Z zTG0o6lS5k7xuAQ#a%8@ekoqe`YecfA7?kY7{l><+l|bGHTOYjpu#5A!!M>k)N5CL8 z2!HKM?)?)9Ay(pA-xXT~dC0q%{hhK+V@yi1!fuvK4vt`D@a|bW3xsY0#NE#eQYx*9 z6b-XrfQcGj9BdTj9@QHJo__ z&U=2FBjE5o>>2(IuN&t-DGZ5?H+~W3X+pgCv3hS%L=k;GzPi4%&Q4O4+YL?UjjSgx z=YtD42#cZ>UkfZO48$0>_Ra?i-b*stUUBQgYja2|vWU)k)u=$uq=5UPI03Y#L4;S= z1Mt!}6-#3+fJSTjpcfi5gNV__dG323yH{`m?rAU42hc|ky9OyBn#1cprNT`|XZrPPD4x85^5=Y^$7 zMU$16zdq2jK@cL;ik$cD-Qwv2(&z>OUwy|cF!vfQ~dyf>{&XlB=R?0c?BA9y5FhAPK_I=g) z>W;y?6KLN3#6P)AQKWoSb{f# zXU|DT7(rB^q<&jy23Lw1vcxK3jMxRyM+;+&W+_JNpwJum8XQhBa&GaKe-q9N&N-va z`zmMTgS+Y|k|ei8?09O12Nn)I^Iehk+8i6nyi@GcFi!f=<0QoA<6)ia`<{h^$VcUH zPqxeLJyXDY2BfdY(>m+fYfafl6lG!x!F&E{v{ppDbAf_qEsfSt=OdGzCGIMSD20m9 zIromJIl1D}&+FyA7aXz_lT9fQzwJ9u8ZRIsLUavBnDRFVk5a!1Jz+qCE=5Se#q>*7 z_@opOQ2=_0f&9rVB~FhKBH-CG^Cy!oAEd$VJrPt!{{n!77~+tlA~OeWCdCHV$sT=b zK!OBHqu5*PJbRFd4*8V>oA&}p&&QJx|GZvdsbAuKaB`3gfNrhhK+$NWGcCzsGgt}U z_rFFd0tDxrZrb<3>ocZ6I$+AgIS>GiHb!gtob%a8$Sg-BNR3AP%3F4G9LGHQIx;xr zYM|qy!SADG_Ld1c?|W;Bg0*__GVy}1`1+|_gjwD}5B?>wyU4E?#|GLRZYf5R9niml z_0ne!ed%izk$ya!_r2|zxiI5v{6J|-#hPyBKo_`yAKgEI3Z-lVY1G3T^GP5 zRl%hL=+alt6!l{M?6RrfYWHBwYJt;Ygrhoq*MxJ zGu{gYWlBZXIcxi}RPDMt@G7e^Lwi94Y#XgSS?jF#%-l3uD+TK+;dQ}#te5Y5=e<`- zy%XPsh@Ov!wYIaCnU$jF)eW~T= zoMmB6XTyZ~9K=Ja$08Dhy_9+jGxIx&V^Ywf-ra>eTVA*bTnl_9IcrQfi`FxU6!qRmeZg@J&g>lPxNv-J78lx49ygJ)k z7o-TFRQ_RR0KGG+Ep}KdC>27 znmiJ$B0>d=5;ek{rOLMMm2?r*R6}kRCde%Y?teG9%g1IyIN1{-7nON$yq^U%eD2HW z%0)=Fj6<%kZQ6gH&$el4fcUab0d+&FQ z^y=0{_&IMxI%@@$yET!;Gl)|3R84Q4b^iO+ zw~Z+}_N_BBGY1b;3a#Z&mMi>*C($YiJv5SG&AAdUJA!{Ea7WrLh8?nD(MWG62Y}oD zc}EWMV=)d9DpFdh_mx71s_4Ilh}mh4ypN)fLmW~XZ>`P3Q;GK31?l$;yC6a++i>1n z=e&0ui|*?$ulGecKqqlSvIl z)Qb-Vk^jkJg<{x__1w$xnR;?3xbHYO6^M&q$Zcs!MkKiC*z7zM31&{-uKphzxuY(W_qw) z3Et-~LEM-B_y66h9dE;2a58#qejJ2Z} z_M1VDE)++5_RhP|JrMp8f~R+k#AWXGtl&YQs(fYt>B_iIj1iO3N-OHE zdv(@nei$>!j7!mrVs2#~)Sv&uVLPrLYvexOu=we}0q=ojmWq`r&O54f(LTQR5DBwd z=pfaQT9wCy)-dv(yw>_1Ep3V_d$x1Y8n2j^=YHAJ366Q*&KhGa_jPFxCi0jfzCbz&zdw0x`u$u+GdBYa(UgpTHv4F^Dvc zMx0NawlSgI^!wF?e=nVLS08~=)Z71Fm*Bn)7~U+R^!|XXiUX|`gA1oqO@|h8`EJXV zy~1Oy22cCFN(H8f=)Kc)e@mStwn}MZv|-^8%`gimMSHo~263~+=Z<->_ZcCq0a+*A z@vqUj*J~i2N97V@0m&CQ;#$ z;oCxTt^7_*(uG0cy?LjwzeJ;8q|mFTgTOs-<`AFvCtt_+jh0l_nyzi2PN0o`G{Q*#Ei6^M+Zg6iKpP(-wQae<8WYj#WLS_OCW z6BT0?w0v%_ZwWj7^gx3m5*0iVLP6%RB@I|Vh{SD(MI9N9JEK9Y_&o-y;kb(Ir@?(t z+@2FGFyWJHdQN2$k;kb-B`DA5dU!HT({x?unF$f8`pC7W6S+R{;fKBR0H_E#WhAs~YrEXMnJ8KqPWj)o|8jg#4} z2fcT5!)O&L!ouDwt?&BqL8Lz1a;(o0ne_4rOf86!kSNN#j#xjF#ylZ{a`7yGsBSXi z3JyudzXIG>>ib0pXHvxK&1>d|l9jKg9uF)QByFgi34m5wJ*n$^>nwOA%ER46mpp9=z@5S7uv_ajL9l`2HWJ&Oq6Z+P}$PNq6+heSap^Ws*UF2lY-=E;Ag5L1vq#M{lgd@%7mr+bp%#UEgtNS{g7bTMJrUr7yZrfp9WnS!Aq#hX@7XWD7%Og7&S2a2u5rbU zy=p&@Iv(R)P`=8XryX_hNkE)c%Sirc#_)TCS~&~ltDm5iR!`MiYi;j2IJf1cih%Xc zWYNavS)B8YX%wkf*BPzy8(wX6n#P`CNY__84#STWz0Cg`;2uf^>f`XJ!(WQrFY^x{ zb?*qA%r?Ci?ZcQav@UHgmV>uAsho*y_m#q}5SWLmp){YR>pRc>4os~bjbo!wWvF-P z+HrD>z2|tg59KrFTuRpS`KA+ot|y<2gI^`C^?J!=x8gl15jqjav&U!DQ3Lcj+bEHmoav|0+5j`G{ z(8X6&k6C%TYjyU;`xTjg&Aeo@L)+FFI=`8<7f zDo(#wEIgpbxqj)urRM?r5Di;vKRW{_ZkKXIUgiXfSIq9pAisc?YdD@qLa-8*&&OnZ zCl03@0t7&v%dyHE#^7A!k#>}*DaOV)XRURf8CXJd|EwHyTWZES27%|}fq;GABch@M z)i-Ob&op?SA8ByhbpH#l$~u{>{x#T={au^X!Rd_Ec}Qg8zm|PFN4qB~W(?T#UwQB0 zZ>a^`;cf8(oK61%*MJh&7>@OLe95k?7ST#(5uP^+tyGqWpXk30cw+RM;>00}Z%k`U zZu5D`o5YG&FELDtq5;`Tx$?8v;q#uQkrjk!I>c=R7(NZTHJOT!7lyNXj(Vxs1mVU{;q{bRwFf_Xy&HP}~y7 zrF7=Qp^51OlH5lRgCGzbHf0bK2GCk*tysi+@0|0@F1ZgA%G|^a0Rem}kI_nlh_yBb zB2pW*Pex%Y-MTJ+`!C1#UBbPXBu79(a^4^1<>~{q-T5l>hzo;oA`&5>j0GS=zekq5 zLJT%_Qg=DReBMe#?nJ#Tz8J&EkXF?d3h#-E36WEgQj=+g%&#BA?%ZZ}ZL;HH2#JXN z`Q^=?dAe_f_g+NqDMXz?*m{-V_Vl?Fx#QhUcTqdlqWjY1J&(1L9e{W9J$EGPlXo zk^8y7qgXH_tLf*pX|dg;idRlUC;-C3Y^}41NI1Z}s`gqc9d1DAFlb}7E6~~dm60^q zc6J`CVkqh@t(H+R3;$;nHTGzkEYS9zy%%ON8j}n9T+XP_`9oV>LDxb2Jh<1N#BYr5 z!+;?I2n()OEanXjgh)z33QQy&nu6GA(4kREeLbE&H9dP4Ncf8wdZuvTcJkiaLYrEC z+7By7gjv|LXAu!X3U(z#^dHEno^wG6IT6pWZx#Lv%vH>Yc=4V+*yv$oj8PRzGKKw5 zj@nk@>0cfgKOFIW1Cj%2GgQTF-+M9<{e`F{nEl8cnDN}875@n5M;Txi&#^NX5slV? zuNxvaoN@4o8;|i`CHRerx)1Ibiy-CF6{Cm%Gg5tPNIcskqROI=fdo@ZDW$Pi*;--+&c*bWa76j7bF3F!$S{8rgOwGt-^}-kRl4#`Lk_ z=+6RSLqwvmsI^ivINBz}-=~X;d;7%S>Jx;Cgi6}Ui0AF57N?%H0T2=>MKl)Yh(v*m zK`BFq)9MVhBK`-5v*3jjqMjkP_zyXCoCYpbN;&UX=1TpQeoViH97n?xfw>pln<5{n z{`+aM#1Mzf%RHEQlVo3h*Khab9aQJRt+VKmkdP>67K%BdCnyoAM#Uuj!e{XumvVi2 zZ-4Lb`5HccW!1Ac;wOuM@E~S$NW`nfy;f z?>>7WjdOZxbvmBQIZE?)L5sF7nIA*JKRbQ&+yrxhPB{BLf$#+*nC{}<`1 z5aAK2m~5w*d%!G%FMsoW%^u(JjiE`sEE0^pxiM8xdaj|^ipJH&EHEs{YxPp zw)N5$FGZw?JhKM;HURy6B6c!OLNSTFa#U=`XfKlml!OXnxaCqe-2=RDuEJiDl z#>J9cK#;JPAwrd0^#Q%p^S3EkdB<+a;|~AyFACHJI7^Q~bfP6a#^*HFHYOQ*nVs1) z$@#%~D)wOiWg%FS&@DyopFapgu`UiH3BC;8&%%0WI|x$LcrVZM-+mzyP)t4mW8U?= zc974RVXah`n3)4Og%`9&FHF`@zFFsmoq;f7+q4acuz2r$O4)E^LWVs549So6oSvHZ zdFoAuqR4n`B|2QZ5h3z7N@b1&m$4q-=SFgt|DTc<2u>m8g{9%6Ze_ubLOeh9U8PtEBb-NTg z9JV^jGmEGAijQC#htKwn)bF1iya@BQ|3Nd|I=0pttxjV;q`>%36MlJ zH`uD*!f^=u2HcE?ccLLE^vvwN^PUq$GD_f0b!6&ge74&_rl&OeS~j zKp)(4hN~U3MHqe+tKEiznE}6X693MefH4;pV1dBH5$zvI@xW8MjO+kdjNIYxkwU>( z2^p3LdmrcJTr*@SJ)g9baR%#SAL^%&{rl%<5s$@+oKQ3w;@Qw+_3r}u;}9=eYa()9 z=E3{QwEL|Y7@o~JqQHCa*$t&6qhL*9ZL@_pM2LbHR{5Td?<%g~@h+{uEBq@vFD_Jn z5s(&5p|e*1Qc`4Q&V%FTF!1dHf?A<-?Aa5UjS5-`Z2?!u{O}|Cdn0!#^lXg5`|!X* z3d?9cHjYck<|o6?&%*lnL`ytj;PSi-x=Toip)(>-f&U`*W&!aanG*AYQ$b_QtLwb4 z3f@m-?Pguz=bjsp##1)UUElY%hfKsGfACb?4Q4l5l>U-yvoQacq!D`u8}sYo-$c#7 z#$6*9854vcL>MyPvUpwIi4`5fYf88C`-&dtI> zj5gL<=f^YbP9IbH2;6|byI-m2e&qP%qCHF6Ri1t|jPlMgnuZ(k_ z2-$ntWLpNkFv<>`XnImqlOU_x!hv1` z;rQ?6@b|t)S5LU-nkLp-1W|;A!bjO{3&7=nIN=QNYC|XQs%8*Tg%jEih#U^aZ8NH|`6$)7nrF36ZZ3%scgc=e-9+5g?+*m?2H{ zuY2LBwE)7>ao=03wGJXyzaJZ=&VZ~sY*1hr1*o$qK5CT=Tzm@NwN=VFCW8ZuA}I?w z^p!|fdln|@fG0{7ckFwDH$o&*^;2}{b9Uax^rYMf9hcYq)MhWJW7OZ^VgjUN)UTfP z?|IU4Sn+!emWcqIurPsway?ho^L@vV>eGYu4q=dGwL8w8O#qQZ*n9Wty5Wt_$Mf&0 zHr7 z@8eFE^TAnTNIZK1vaoZ`3nM@(O|F`;$0>LrQn|0fZm(uu=4hx+iN3V0=ax`-dgVYN z(UD9?LR5rW>5vLM^xWfzQ7qFJ{M*ods~WP*q~EhYfJn$p12aQWC_i@RTvqEp9xRH0 zhSRMqL(VnZWbB&iI8|)N+ROCbKYsC1H}K< z4UHaG3BluqX4XZa_!B0MU>K|K(xFNzdbE#Vzd6XI4qD5@<^X`syWUyvJpvE`;W71s z6XZdV!Ko2_OUTXu=$R4Zm|{UO9XKf+z{7VSpnM_F`%O{f@!)Uy>6!NA+frbqxgMoXL3DOhf)jD`iYWNQX9z%%QJZM4?%m&w%C%>K>i z9icLC83E%W#Q*r<6`(!^@k8~|8g({{^YWlR{`s`BIPmWxAmWFKC?d{#=UoW@i7=Ih z)=}9~@?1DDKoW?cN@Nd!9{gQAvqC%;E*=uE!HU1j+&D2xr=U{GC>@kGhSqMp!HEI? z4n?Nr@#jLsUJ_}m`vXJ-mbpdb-%u<1-a7Xi!~X$dx~_B11&dWh>e)WzuM{A~bL7l& zTBTV;h^R1>PCDm|F|9H95#1t0fC~RPDeZ6r+YZx~n&^R!D8knH5ULZRR)NRF%us%h zVZGxRu1IZ{W@nIRYr4$*Zwbq2l!rrrh7l|h!W6X8j z`RjC<=7m{rKWpbJ7a___F7+uzBv}@I9A_|8%N(@AxP5EdPhQ1?4>0pj*9{Z?`FtSZ zUkL7qC*^HrQb{@Kdl*i{s8Cq?zIVWegGV&5^oNm_36k*-gA8gd8n-X z?&tOL%whVrP1F2+giIbwRnZBRP4gxZsGO6zugM}7Ru2EJ zH7S*P1%Kmt5|Ub}5zLgLS!5LOFbS?RvN|k;q`b7OpKDYZaI+?2mi$IVS?D{?sGKBQ?c>K+c zwTV|aOum=NnFZt{f>J1m-n&0P{_F90Q!P!-$=vYJqp#Kw0}>%Iiz3{ZA#Y|dMJ;Ls zCpMKq$r0uT00Q90Z0g&Nyo>BB4vMt^sV#uLn=6m!kTPsh%+g!?XxnR%J0an^+xBmS z?()e7|7F}?Ce+@SoTy+sfB-)fDq(ftKM<}#BQ=#Vz)#Af0>Ia!{mTVQuRPajclxMK zx_lE6C`Dld#LDqK7-GkS=RL?iGw})aFlvxy#nZ<`xpe&1O0Qlpvj}4{$X$#NPk(rk zzN-CYP&-Xs!=9OC(LEdj49uvWa0qtJd1k!!C>5#SO&QK8lnZ6#a*>)?cW8R!_|$wf z&0I%*YoD3DlSM)c``|j=^}S7bRHJp%H1c;FIUY-+$j%Se@I8oDDlbrWWy)u(RO&fDP@d-v<0%T z(xeDP(6jWmx6ZY(JMl2OBc2TXXN)-qxi?%;S40S?mFlhkc%w(W2&HIL!Z~8G8~PG) zPNUtlgl^9>q^&yaT%NrG$i;t-PS>_+`@WYxZ9Aa%0%K((hMJd1drlm?W3wC!Jy>;TnnZIF9O z%W{gqG=Vqed|3dbZJKbn`F_1bSSvz`P6b+_5PC1KuIrt9G);ZdHPY?JSN{C$942~c zk|n}NwAQ_~!KZ0wj^p-e_;6IDl+sF%lJpYmO?Mw(sCl1}@HKstc*!_bF0T9BCO#fM zYVEY<*P)ft&*xw&T{?N;e6@o}uE`S|?{eF_3QQjsMX4I{&OWA^UuJS@i=h2lsB*oU zK&P$qb5T?NpoeG5%+@*2KE!ufQ;0Y(LmA-n(f(d((ZP9wSYIxNQQ#IyR-2e+KM?^I zG1_RYopV3kO9XW2>P!O`a7t?o8|3%v$7s_wO^s!H@`=CttYZ>&xoHs%{Y{EU5qah< zpQioAf93#cv>_r9OqGrYcIDhR=3dgJUiJ6PzMIw_649vd1~Q0G*L|!E*EzV3PMpwU z7f&!mr83>2^`h6&56d2}I{WPKRIF5?2cg`5| zcSu{*;5)KEAf6ZTU2u0+gu#5akHE%2LiR}#XJRY{0HL#=oRgo|%b2YYep@W89!673 z=YoxyN5`U-?x1G|QkSOMA&Ar3AktYCc1gkmw;;*N)fZbI@1Wx+a=sIYPd4;Z|7cks zb?aPj`;vc5SdLcm6Az!hJ#OW+- z3_35?TJQa%Z8v1sE~bOZNz@P{FT@FmP%Gux=fUt>`q3IQJRx;^wrBdG5=`* z{$Jw%DCb;n zqH&ijdD1xEL1qyVgIx(J#2rR(@;L&a6`F>EzGkSKTnX#&T!b@pqAs%qf&C~}q=ju} zt#tgdmf`%3Mr%4NfE8~L{(t2C>zbpw(lh{OrX;X?e{=s=`j!Dn8S_Jc1&EW4UA1Ov z_p^3)mCFZ^La9(>#MLTyyirf`v2XGr*ct?&oGccgF>S)InD3t~%@0=ZGYGw|2*6Ik zK1?VK*D9l`rmbzS>CO4|wR@=Ci@&=eTb!-oPn)N_LQfT%aNY!y3ihULRil-SOUVkT zA{`qtlgMDN!W1>qf8h(gVCI#9pYUB~^*e?=7W%z#ig3)S&ou>DcEZ}1^TO;LhoFzP zjjD@&^nwWT#NjYX{YoI>4RIl?vCI+`P8hFNE{7k+&Q@-ZjJ6CZ`w+Sp#3 z{TQjYjm_DtkWU;Nb2>d_`g`2yev@jMk;g%)`x?XpBy&gQqJuEXOwwhWu`(^gs^A4N zv(y3POXJhQ0{QZk*wk`YW7lDEgP40i?$Q;Hf8;T0g1Z8JhDUY78@r5ApvVkK{h~JRW%s*?T+R#l;ZW zL#AHv9+ixlgwefBOBR81VB6oiw>f?EUOpz)x|hy{4e`1@w8!+m+F)jDOjWrT#`6^A ziB$1t3V2|(Dt+-i?({LG3(#ky>=pgLun5|57VF?8gfg$y*C-+*@*KTlA%;iW64c6k zye_DARv;=y7DDnJ`p^oenr8o>2lvFx#MghFn36h>%QWMPSZk$tUo)^4!xbAJG~v65 z&`Ywub!0zkP?Jn@VvG}$$h|(MgBUx$&C1pCsz@fQa=`DF(_g?lj1_ij2e!sKYu_{w z9Z{ajV*hX8c=0tcL{og?4HX(r09EibkE54|ak1t6t3#!)+(l$8%4J##zHsOA50Lt6 z3{!HETSxXDaAKxHn9Oj@4x{I5| z)@MsV|F_DC58AdJRa8~gIZ9wf9+S#E9AznBj1e(W^+P=%bydAz7l7!*QA!by*WUz> zM{nm@o@bCp@~&es#-vicFBCqqru`;0!&6&Oe$xe&PvC#rrlxIB=Ic-(+|wOV)zp~% z!nXJ{+jnh;st=*{9vYeHCxp7LE9C=s3H3a77^bm z5_){c(~N9}?o<12N9FA5=h&wV-aWF5gXl2c}#(h+?`yNb4}X}pZB<* z)GlblS?4luK-#no5hZ*-P{yvwV`NQJyXA>tt#}ioihaelZ0%%GSn4y|k)2Ns9Iv6S z=Mb@|on=bDh$QtvjB#{y87IG_r0lEu7Jpe4S?FXs-gbWwPvMsW|+sAq&w5J?frJU zq;fx}+WhE@J4w4EQw~h5Qxwn?371M@Vis$}7?TpluefNOgY@(iXL>+8Ux;|RoRk+S z`|2p>ByeO>_bkW@{%=+&1pff)s(Lg!-M{x4(#iTUy~`&dQ%IgeU)Pn$&cDpeyidDl z!wJNt3J?{Lofn6wXB+dFsH&<*^U%n~ z9Awyer9_4`wyLTRAUhvKYTjxAe`zESd;bIrLE{J!Q(f8f)pB;1St-g$(DJ?rU@Azv2q{EZ&V=<(klw?<2m?L)c4@zcWF~ znKa1xnWnkl@41EKb_B<=u6d!9wZ=N@eDEyAgVjS%2|&c$>)VF`=0a-WSecJR70@g{ z9g8L4sg#|zyrl}i^ZtPO^MRs+nV{b!XRzWqS(LhO96@PsIuB%kZU>HQ3FzNm!``@} z_J!B#yl>jp8W`q0WUGkml;OLo5DQ4TKgOe|6bJ3&Xb)K|zVg=)=Kqdfh5#5bMB%!9 zKrfy#L+!@AH;xBZZ{k9;H+1^?-AUKQrfu%G`?#9)_TQy+ge1?n;`X4fst{w0u!c8r zomY{a<=^f03Cvlg+D?Zty=*5it^9e2z@9y@WJWe7fJfFCqkUUJB*IaDb90RONZ$fV z?YV9m0sVPsVN&)%&otpz0R1B1u_rGgcfmJp>kRdE+yP{#-bE{&9dIxG8X`c`k7tAo zj&W8031m-sssO4$Rlg#f962s2So->X5Wl}jzEh#(pLvI;QxGE@W8&5a@3K{wV7Y4H zO_T0c*N^5Abt<5uLX#>MSDsl$!<S#JWCa%kaI7@5~exQQ@o`n;X*^Q^C$x z*6e&={-m(RR<3Hhj%lKp-_F=f$o}tkGoKkMX?;~XFY{cjCvjxOdVc$?wIGVm0f1wS z`ksXVekt0#c&VPQw9^5v`ZTOHqy0D$5k=LIgxGz1Bu2$L@-vKSyh-(1==>MI?D2~i zVr-hm=E%NW(bkbY{cF4lsTnnGVa+HEEh76&^pqcI~qqm zWvu-Eb|BRUs;VzDGr45@%W%GSF$!x<)|;D>&7dhnHhwzEGdKKiyP{bsYzrE&+X?%^&{tM$XQ3xWEKtW zM$)l{pi$NQVK_Sa&K^y}q*f-#ek43McaIst`q_-i6D}3&Y|MB|jF|tBR%WEa2Mr0X zeey(==#XCoY;2q6jpw@^mLX_V+^X6blO&kwgP^a2##LhCF@TG}r$4q;RaGLo-)iSv zh#KQOrz&v_stQn5RrlMCKa1={L@Zq9On5&>iq8Q5`K996?~Kbl5cPDr835Hdtn^?e z{zck-A;vAP1T4ftB7K{r@bJ&UHM38R<<$tJzIA{g!UWP7`42bD+auSl={nWuEMpyY z_k6)9M|K^xk7l#IZvjk9Z2lvJd$wI2uC*~C#!Fvy7!7Np5;$1-b(a4OEwen2c#WCaHjqpB z&h!+|EHWiah0RgFj+HFn;sYI>2j>w?6(uH~YJvXO+D!1@$IYUivm zkG9R1NoKxPm2>W!3fX>1``A$;f8x2YT7?{>-P2=>pZXV#e`zj2J-5c3SC{ph=6Hz! z?zdiR`P{&ZG7*Z${lYgUzddP7b<%zhFkufIEQ38=Qrm8CXZV@HSEP|ERs@KQp<)a%@!ORrKM*Ebg`z=U1P-MlMEiAtq zmAzUUUVS;oLQ_Wx&VLcy+pc5Mp$(Ob$Weyo5~2iMQ0;s2nAvJ+&7UOPG2&9x0iH@F zHoHUJfDmRQlD3J5)f1x|(Vk=aY|bxO#Sp2U+jZWHP*urz2dw3~GA#6H znx<`D*pLszdUEhkRiy;$$-862(R_A!uN7b(pFDDSANCz4oew-63dKR6ZnhzB28t#^ z&qadSTFZYga__C{x%r#I{bl*H#irdDCq9G_d{4E53f5#hS8#fWnrR>VnY$)wU#U8o z#e9WPJzJ+gO`M02geAl#{7JC2vYA7oZk(+M@F5(p31;Lw5lc=hu8}jPw~)@d>#8y= z0DS1W&V%4=59^rp zgY#C8E!+6{PkCCimzf#DdI>t>{_^JZK0<>!Swv!tzeT&_@b#oOj3YRwp@^cY{i~6m zvP~>u7L>iYs%;#i0;EgrWAVw>)E!KzlkBgc`cS9$QZNw~!-+{Kj_R#ivd|CXQst_>Q}0(s&Xzl^0#eAOwLKZWtu&^vs_gsYW#UT zVvK8U);ax>QVWJHPP%M|3Aesye7bUey>thWv6hHKOpWYw0N~}u>Qy?1Prk7&euhi8 zgh)${{A0nsw!TUV+3R)TocZ5=y*ytN%zUoXfm70+(jWa=*bh8g%!#Zqbyc@r>rC0W z2}?GnRI?K%zK>EOWUz+p!{3G28v6_8bEQ&!3?5GBeKc>`FP%6sC%K-rw)6g3kTF~1 zoVC{47~@a#P<_>a38{0nCps3#)x1%;a60RbsGO^-DumFqtwN0vV|Y7s7$9S)X4857 zX&$$_cGmGiX_?pQG-zO6J3(1WA%CYbVy>&odmm!2k(-&v=AAvftTZS7FcbeT-o)#p z395%n)NxSrH0T*n!fL@TEVD87ZP7Px73Q-a;7o$YVQ^>tyJxC{{XjBjZ@VtUAS_i? zrM*V&T=I!_W{*Ib=-qwVvYG-Wbf;A>U(x5%R-#>@9;81Q6zOh zi?B5&#wf<5DEgGo(spgz`FBQNZaV{z5}E0!->}M4P*io+-s-yTy0+_x$POLaK%p|4 zoUwyMsIGboNz~}iJO|Ed3^gY{lxeVwMm(?Ff5%I%axU$1QhQe(c!b=gJ3Hg!48qqH z)mtBa`=ic&%1dS@Q&{FMpa2HLsQ!a6m+yOVRZgtqCD8>JmGyiQ%?~|vq8MiS%Ll4G zxOcv5ea8eRtcXqXFvi{LibZZ!l^*ca%xvjf=Io75sdnMR@|gT@%$FGCzgMv9=u}P{ z5x1$sX91##k|d2Ox`Z+Zv>3JNnt`n3_eXRRT;{P&*>;M!q?*tO5viPeG>s2Ig!=%N zO;52IzB4C$N7J^dTJ-|?K6p$na(qL{DCL*Q&AtP2%E)B%e#H7jbLf+n8lPd8P(Mm9 z?~0OnC8;%uT(P$GTrJr1MV7CME_eZrb2a2MlIe<2rj7d^6afCFgwFzaw5`Tq4JZAw zVHT#K{{J4Ka#iKrt*)7<9q@e{nr9|HQ9(mzyb(SjkIAZeX0q1)N^O=09*R6o)Nzb4 z=nJ&*fRiO1PxT8G(1nn~2(OwC6XiQVVBwwF5fw?M z`aCPe$AJ~%@EjZ-n5rLzS~h>JfM+86e~*WdR(9G<#IS}{(RFQz@m5v0x+dnfYpv`c z`x@15glVr?X}SS;{=|r}zoC=qTiSbiUAAHU+2zH{F`wa3Pn&?5o38D=f4^Wa)f5By zu3+JUA@DFjN9zI~0;f}JevaUs{*IMqC}){TIv<$n_JN=b6gf5kI{{RzxYBRiD zvaCJR5O473X!o}3LI~Cf6_I`Xju8UTb!`aYR^M**t!Z1sn6l1TR5TRziR=rX@7`|e z38YhA5YyrEe$3-}WFHvz!^SD-wMO%`ePY#^74I>AFqUjazGDG3&y+G|W~}nzC44_N z^x=$fMQs)ZEh(Snun{+vIVN7J7kJ2N{PcjxmG4?KfgIHFJR%78 zC&qS~X_n80)WsS?cr?wWmHQg)^+iGkV47q@V(PwxFJReKzs?IgOAx(eugyfi)zrgV z?A@m}JM_mY_k`@uGV{O{A%ont*(*#U=(^U&V2uU%d4iNf0-l-IqpH0~wF9c?n}BNP z>bkbZ@^lX<%$0Rto4aFE60ze{G#t`E%r>zSn>d=fg^w^{rZ|JCf+(Dd$ zdpkfZtG}CQcWdpn4)4XuJ=)F`mG5OVFR5ha@|j)oJ&S{|mWib80=I3F`Co{t--mas zg8R{W0LKeQtn36<#@6h6lD2O-ls}^>ScC@$f%IcDgbnrO+iNAfwF%t6TBh`AJtl51GZTCcW8Y}nl5EXj^Ww=;L$JMt9=6mo_)t;mmz=;v801#rM&f2<4@w4s= zeAak;nyUgp?GSO4q(oswb$e?JZZ$km`%Kv-*Rfm zSz|@ybt8@UHg;=la)@{S~6CpD$iLPyZGVHNSRk9 z^_d@2?TF(0 z5(rxH7y!{=Ad`ldkr~y#xhGisOcg+Eph4rkk7oWLvX8y-L=0%#wZo3Gf8EY^BI2xD z549%^|n)rbov4+Q|(*7PGvP_R8WZO z^h3R=OJol*v~8)>utTj!9J#UmcUDPh+Ws26_;_LgRyzVG8`ii zk9U-0etZm^LiTB;DW8eMo+7(|sOg$V^C%&E|M;eBX;rgUupB7POD+{z&e|_X$1oZZ zKDS3(_2P_$!^XmoeZkf2t9C4gA8i{n^7(uBwX!{plNjS*+sz^(#=K%y%&$$}-4$o* zM5zmB%HGa*VcrTx_}Eaz#GL7zqT*~LIcwF{G32!l2Y zkMjOtOn!RV@B0+8YYGD0@p$1FLvjniE={nGIFp)U2tFO+_r7p+JRFB4e1FPwHv?I= zJ_rs~*Rz2G5OZA#Gd-H-RIB>f`}XO&DWUoh8JfaaBxs>?MYc!a-kE5xYNtGfV>!oH z!j(2hKc_zC>*Iol*u#YEKKP&JaZInmUDquc7!(4^j`x7{Q>k+9YsB#=r~qi%wu&-x zV|&YmT{K?~oxXFe5gRkcY-pNNBD>E~9&KAtYn7&|3 z#Khk(-g&?Dy0UT~(~W-XOPK!+_&z)0m5mFrl*i1bcLdUYj>kjP$&>AbEA6bmeS`kR z$eyz9Qm01SwN2Xq`x7(OI||KPGX}B~%f9U+oa-1oPk`{|f$itW8Q{=PYX#qT_I!Kz zF2Z$XLX1t@p1O$>Uht}^)iW@CNVkaLDW=aJ&CLBKlgrnOPZr?Um?-cjzp@PLC~5X_ z(OQ*`Rli)k6YuUKFL*ncZ_|In0AuJfGh%vtkH{yU(B^c_03Mi5am9F?)AzU+1bW}0a_z!zAqHOuJjEX^x}uO- zC?=kUnJ?kHn5g<<@s3jEjsw{9+6pqBu77)L0&3d!=kfTz$HRvJf-&ab?FJg~eFE;- zb{gU3mb@oqO8rW^$d2MFGD+v)l+JPOLf0cZ@uPX1YL6b8wo~yQMxuAg(mY$dPZk+p zE8d5fE0Qzih4}zEvod-1=o$i9E6z&Wb|Hq{Ygee#`OWMqXpBS3c@OJHJcUw!C%!<- z@M#KxH@<~oK662-%>zrr*L@UgZ7CG~#XZT9B6(?mdihPs`f`r+uwRMnQSpDxBS!Bm z3B{&u9!(QtG{*e9--#q>4(|KH$N9|8srKn1>Lwd=?4%~q_t)C|YM);!0R1$NA=B=a z%j<&&Wx1GBPKIB&)k8bUH;ea8at240GbQXlN4}>che|}~(d$rm26tUmG#mmFAg|V# z>GVZaiMe+G0-y~-WD7-%V z3gisVku#L=9nf9!9YmFL|L^|qR@XOI{qKISUh=3IjGd8=Oh*S$96uQ%HpT#@HjVXW z=64`_R}!=OQ_iWyJ$?;(6(=)3rx8hky2p!TX0pcARb9D?nK8tIAL;$wI8)uWK7FZ3 zV*ZR=yHvBspQbUacG`ky4Ov0gwg2~csOrD_U5p6|8%Ep2ai zrb>aZCT6ajyK1YGg6WxAl^$&aT+j>ZLoz+aqIqY(;+cFdp7r~na?XdK_>w7yFzG0E z?hU4<>?O)=O*`>>`&8(pK@eaOt}4^E!FXR+)iz#RBi7W#O~#S&uuNikZE721P%>^f z*u=!A?8Ek+Vt+%tp-Rp@B0!hN-h!yEsu1IPUDa!Yhb{t>O7##!2;p49Fy2h<;A3OD zFNuWtJC%C`60#e^%R-rntf8p!=kchj>R)|teP^AkyzfLt&FdD)l&JRfceAj&T-}l5 zD6)e{n4Ptk9i;+*re?yXZQn=s{+_#*kW^G*`6B2 z7234jYsg;YVHFx;u*S|Gd1h7=wGjZEb3TNRT1C$Bou2q^XsgQJuHR=R{~X`9(-OeU z$Y#)Rk%_{^ekl9Rb~6!bR*<-w5H%a4pSA}eyMs-|nX zzX`?|G5sNSzt*a1)3zam*I=D8eiPV~M*!9e^ zKb7#0rm^04NhF}EQmorCRy`TjK98$jucfwYk#P?-h>EPctZYv@P*rWZ4i^#~OazWm zt(l?Z%ctgZZC_ngKh1-_^(9O?9R1J88H{R8-v0#P9dagrKz|xNA!iaJCrumMuDezB zRdZ%muwRu(%0$*$AHve=_#~%t(Wu}cZtM=?19S_Y8&n`7`EXb!6E$6zticv2yW%X3G=(8499308G_*Js_$nO? zWJ-sqC*5OEXb?vK%u>5+Y<>rOTW!1U9A|f+xMHTLGwazmHnWR$(ir2uc(O`Ilry_+ ztIHdX^DX#*G3=al-pBK{Guy~M9-LlRAH#?d=BSrI-zUF#Ls5y|-g9qtzNV6xbo}^f>v7qbB`r#wP7n zFqV2ef0lI1S-zcp>VyBkpP#mS71r0T!>)bU+o`FlBp;4Jj;c-9S~GDieztnM#rsi#AP(s#w^sUroCz`d5MG`-$TaN7&rZ)HGMu#_j>8z}4;&ch{RGy9 zFL=A$=js2WIN-mI?A|}xMsdB1IhnSy2tFovz+uIpY*Yf{w%RLmu0iikLCLqHedBSJ(}()4GO8(A$L*6L7xcie7s zQr~Z*SJlgI!*a(n9o|^Ex-X0k=9Co8)|d|+r80Bpy~bdL3)5*iI~O%JK(g)jn)fTo zbdn4;dq0JqBWGxAIn*LOjH=4Ht3o*dBpubodZuKZ{U#@~J;H8v%`6w<`^G`l zCOK2^n!!8d3>_e6oTNjxv&GSbWIuE5UcSn8Ro`wmXDbm)Y(Nqr5ga4?NIp^+|0pS* zf9MqDf&-6vbyUdL2^kPs=RP3`1JTmU3pn0Xz>67Ad0&?*#Ry~Ma~Cbf*md2kS!v^z z7bny+AbZ(qIQA>`rjHXlay&0t3iS~tC=_c|JD1*0>X>lW)>VBCva5RUll{x3+qyyt zrb?>XpZ$*G=--j*^Lu%KDKwu-rLK1mI)n!WGG0+k`s?c!wH#?@)z#qstNmXRKCL+jZwZ6q2AA1z-K0 z;(bJ+ER8Q~JlbtrJR}v;{${Q8RDn`T_8z{{2ec7v?BYRcZi{wNx z#;)_1jEW6TCi{QxKj~*#T~w}8#W5SpelQx5)H@fW;*7i1ysb&W(>ScM@xThcPyTkK zZI$N5yBO|5*v)(xkeyREIIh17hcF~p@sAmJ3C5?fcRfweo4znHZSB8-lUs>1g>Jgt z{2MuQ$up9@#|Qk^wl}OgnA&FOo!SsnrtY~|cF$gZ*NI=q)(j-vP1N)?|>#6HK# zXb@8;;O4n(Oy3yyI z>fjeh_G@vUiK1!CX6Xzr3yQ zZR&}TqQwUkO3nvn(90IPpz^B)jZm=2FHH45_mS*-Or&8%L(lS#5z3*3AW}+T(%S`fyx~lH=t!dk+y%v0C zHo#2A$gQrgx;$;yU1P?wcgLo6JrAcWyjm5V-!yN0RaIq->AX*Hmcpt=YYqTS*Im-U z-TVAd?^ix}itSytOFYHUUt}f%=vn`>$o`yefHN%o+(mDneXTD1SY+eT6{o|C zfW09v`!_?LMZ_8j@e^iBa}xq&eTbZ?412mP#`rutVHQpiy2hA<^dqUpA2@;rQQLJQ z{R%WGUC-6*{im||pvezWr}CJUbe__vOCA5Wy83s&Kbj__Mtyqb{xFj<=3d{7T%ZzV zqAmn~)wYgzdzU7q0TI%fYAJr|BXo^1<~|@D4@)J0uIoDQhrP=+!>-@M_Eygj8k>Ro z!N*4`@)G&Jw5VG?O^DQWYK=*h)CRIAMcVHodp-v-I69rZ-q@aCOdkl0ONG1q?$tBK zhNu@KCC?`yN?OwK0DO2fXOb8M4HStwO2e#jF1I<|EBBdl8Ry6Av(bow z!hZYWQjv*52-(Kvx{QVKWOdk#X3EF{`93S&w|7K4R6A3Q)cGhz?zda;EK0pWBz#MAYF`~TzTb_}G75Mw&f z`Vc+Ub)AvLUgKC($h2Ll|A!sQjOQV$;mIND+1NaO;(Ni*HTKKM5PT?kB6RnCa{YJTOhy8Fa&^I6P)vvNm~{So;C;Lgm>+L!dc$Et^CLBPU0s#ea< zFncMHP$Y^G{27B^CicOrMrU~&*=ZlypC3cgRfs@;h&q?YoJ01JuS)p-Xj>n`t-jrF zw{#wTtLv-eF-+Wc-G!Z~IB%-W%uwBqFr$?N!S~;E+7(?}urJ^Gv^THRwz|7-q(e#B z{Z42=_WON;>>7ZVy&p6ZR4YP z`ASQpb{y_!F3!}XLyEDl-;-AF!kgwV?R^-P0~5lo%*V`1HGHB4<49TZ9Zn+2S4QD2 zk}1ko3BFPmE!(Ft$(W0Z&MPzhyWK~dY#;ppJszF+#>%Z0YlR3#xUP*to2J2c(q<1( zA@7fa@0HN}9PlFM7n!Z6I}^cK`+D(?Lzfgd=(&j!ca)gP{jR0>0zfavfuQv`vf`HyJx?uhhRS2=|SVlBv`fpp8kr zED$*R^XAvrHq^U@@2ieNhbNCJyjN!Vce^LyBY>uDf0~8}b!{rgW2P90jN!U6F~+88 zz6y(%qBMUD-g%oJ91V&;95-=faPhObU#z{>26cX#uxDYhK8BI@IYZ;Bj9-SuuuO!K zr@mBGV|-@Yp=gu3@m8n)G1>PeZTN&~!#!s9R7d@o#!eqlj2hnX<}Pfspdxa=-LEpm z-7WxmiR@2T%bu9wDRA>*e>_gBQE2trXc*TO5%bMiDA^HcRA601h0V#cw7W>iE-e3U zH)9NdE`hRVfMq< zCKm|ii#DyZwpAihl$4RP#d23U!xR-EXgWbPBC6VUt@nY2tE%r_T3AMMDjJ*<1$A9# zjJZl&`zj5v$OGY5r0&P|#o2>j*t_zW#KuORRT#*r$5>$pKL6;wxV( zP9atUU2}ZB1R;cAgx0`zlk+Up>=Ct{;sN(UTFK)##}V*y>6DtJ z^;?Yp%u@`2>NBZjRp(whYaK784#@uReisq%ebaSNHC9r(7|J0F!>fTRC#q=L_TODT zcer{0LQ5SVS24#MqZ;Qw2A-&AJ{C9eLLrrgiL=f>+wrcyd%OAvl$d(jJTDzQsrW3o z#~4964)jBr!>=t^*z|ocCD(uurl*<3Jg_+9k*eF4k!hZrDg{a8BB@#H<@nj7k0bC zY>d&*n=Z}B8O_>Ob6bMdYP~cSdSs71vNLm1cCxUm#0YQCxp4|HQC-QSiEZ27Z?_K} zF&}ab8YE7z#493j1@Tq&MK{*wM1HHPV{71%350u52pLa<~ z6*YDfc9j#pbiV7nH%6Rw_xk2T$oy4~-nI^x5f-jOy4cu>8XsI*%BOTYa&vm5Y>pe-)^bpEvj0>#>!Z*Gw;+>=`M(H)k2u6ZL2d|0zM#hCk)7btLx7DuIrfDxuIak%J0r6Wf~5g4p(F3w(Bkj ztTRZ>L<|huKwPwo;Jyi-i=6vQb!aM=-Df)KPZ921>M~;Ds;W*0kny2!BS-gx&egyX zdo}bOA)I89yF@gID(6%+1aHk2rH67YJt^>~qIROuTc&6Qud2#gRTa86#)u71ER^QI zNPUshK#Ge^*t&ghQz8EhZNOohMlKJ9ELDdF2`W@$jDdXW0qHH&W$@_$4R&5M2JehR znX+Jj3$UJvD(jl-TR(R1$Qt>+)6Ue_7ZFB`v-Z(8F=~p#PM2&h$lcHP=%2c((-3MK1awr(VZEjbhdy$w3P7Cr^KNNm29H_hzN4|qco?&nN+p4f_%9-zD6(Z*|=eh2V|!W;nZ!k0s$_?+iA!D;WUt(IM2x4I5o$Pn;qUA6vv*LiC9R4jbUrW8et~Y*mmvD<0nSV zcth$FUF1pU40@@)-$7MXqpAY>vLG_qVT;JMTmzOD#6E8hDHMYpFfT5jEev%t&Sn}Py3QW{{wEHn!9N;eOKf*C_2 zy0i8dn*$ai$in(oyZT%<`ksU92JO!4&zUMSIo2^a*x&XLwDvGnZMrs53(S10Yv-z< zg~ML#;QUh_qmy)ZIV{X?Vduj%2yRHutK97Be z@5k~!mkJByGntHGYuQ=>kZ&w7mDlu&*fb9pSg)z+P2+1FZcJRc_s^?A1Q9kO%=<{x zbK=?6(P#4?Xhp&Wkj8#L6QhcdwJb92oxm|0yu}7TDI;09_q+cttoNJuCAqf+GKUvr zY?R>R;1bg(3Yj5uf=4~}z#a}|hY@#?#nUC1juuKP5Q#|TsuNWUj>0}R4y`f&r8FKz z#aKTX?u-#s3WN7IBDnfO-MbyWwQw12Pqf=xFUsz@S|lns>!WN&>)5Gl0j z+W+1E-RfJ@HhsR*%7qnSW8_xf+!Z`~0=ua3O(XvUalyR0fMYsKOFBPcV&*kTB1$td z{r5@WJoybhs~H8sSsQ}gqpeooT{@^RVifAbiDbSR`5vd_`*OQGN^AQPgO_#1F~j#2 zs+5_Wldg?E1ZVAcJR^H;)nI!1UL!Wn06&A2G;N?#rNGAa;Vl>%;b%575z(=KtA7mEY)j#(Qy6SrNf8l52!qK3yK8e{6J zs;f$vo3>?!6cSo^DQRb-sJ-Xo%*~gQMj%sF-}7Xd}a`$M&Z7Mch)A&u4)7zA_?M|Sbo`ZASY+~=Ah+9Cp%efE`Hri zN_%9Sr%+KDl( z+_CaZs_48=uT4a4*QWaYS-x@FL%F)DFPSzNbof5TYx48fC&zQMT+CoPU<{d_K^OfC zIEJzr(DTb4lSWKk)lJ)MP~|k37FcVnv8lvMGDII-$O?Um*pOnaDY5+Zdx7V=(N5aB?$uoQmlQLr&)q!!bTzw}5P~^;vw0_O&^pM)u6o zpPGuW6~iLG<8Ze^CyfPsPiG~ndTiw%Mus)Ea<21lIZQ13RI#C(TwqbsXKY{oS-R0! zyw5c6ZPzhROF$;W1Rw+-VyIkouj{t!BBHEp=|*G^nkb{Wn{S#vB`G8qNYAL+cHRAU ztE-Bcnl>4!_gc4pn9bv;VNEZ%(+c1z}TBLbDvK3I)vD0+>@BZZmQw zMmJ3y#8^id>5KGa@tRDynzr@c52J-&ynsZKu~Jh{;8N;M_N}czk5z_jrJV0Y!)y$T zu#dr7n@%(2GYP9tWFNkfrUOVXcs1TF@8^B>L;opA2@Hy?sv(4g@*7dKzXI;5Ei<#v zeUg(j9!sX4Cg(zo`a+S1S&|wyX!r6y5(JP8B>F~uR%Bm?tx{hH`ru;>)|8WVjSvW3 z*RqHaqY+9fCHI(I(k?<~Y92G^+^6kJ<#Fsoa3MJ7D(i%$?K%L)h&47vPvOEjLnIh|T%U!3@##Fo~>hnT;=l%d$=OwnVF(&vpblBpZ3yb~5 zZfi&l`dctqRYMH_Zg>03^2b5}pKbJ>;GScB!uPg4-OZ6*x!e_L1nvFVmL|2B(@~CN ziuOo7fzS@tzH1x_6B!|ehM<%r^Cd63QPM8O1dcpI6?@}_hh(MJcL~RhG5_xOYw62@ z0@9Hm^x>0kf4r8Oy7EolS_(KDov*M%XL`tY@cniRA;@4#I^Qi4M~!WlTpZ|{?Abn~ z=4nfiZAJ@itFxJh4RYoP`CjUDGKN{;Ll6;S9uBJcs!`Kh3C(FDPPHmy~bM|aF53e^`0*7cwC=tjQ^Fq!_?lvRLT?o)<%x)?` z($@h~0y9709DUjsLwY=>W+IXum-ZZTKrzJ5cT9XOeK{S4NL#k<(kzbRMa(vUrK!k= zW@YXL_GX$ZZ*LfneF<~zDrfDCYv!KvYkwY(L05BSnl?>)vJ@px;N1a(&A%P`C#SA% zYf@*m(skw!$6Hc98)+^}C&@QF8D48mp^-r;}c>#6Y+5$4KO zyZ+wmB3djbxYEA)Z-1J)(nqr29XTZGDBvfF9EGxdHV~K~3o+#^TZxw+7d=7A%$8Z8 zO1%DFGk8#-^WItaAj9(ec5`{Rjbi!wEOy)Atnl{ZQBl~ z(;v97L&)TWeCKHae!z2P{_T>@BzU8oPeUKZun!s)&ax_)iTd)LUvq2Bg)uxmM&Qg9 zotdpMA*hizitRTm{>2ZN=y$E#^DCf*o|UC*G?vpYHR~%*Iq=L$@DlW|7w*72i()D? z2;@UhjT5$grxUfn%a4-w5!tas_I?6DIIW4oDCQS0#z*Qs@xk*4&|y$m3K4g{`}D~^ z%A^sJ``F0*%W0qe;^5)D9H{$`JV}Kh$-|; z;GUW5s(STPaG9CG&gR}2^O9%&xZ7hQ3Lyv|-+)f>7*8+XsLvje4LThPBC^S40*E_c z%A;cp8@b*CIwxe(;m_yIQnDsXesSJSn0V&Wiu?Oto%cif!H3hdx5)QmmAx#~XSMm! zwx)upp2-^Sd`$KFsB8h0sE6Y-T-i(*Gmz{B9S)2!A|`6I2h&Mk9VJ^i8;d}gKO~h& z(H7gMSSw#vq$XOE{B9g|EUkHZS4v(VnAjrR58hH{icwYdX$^MD%Qu(D#0=SI;6E?< z0YFq?tu;A+gL$!lsTY|2z$i)eR4UsC!`{zvc{JK=@|oGi>qUEhpn3&};=&92rbhTR zwlu5Mp5*&#wZ3%;4m0}v!OooR&m%(X!rsX1Z``Q+%~^W$>IKnd18n8}kx5v+X$ppl4=c91g}ta{PqRzxK`@v+__j zwexV+GIMba;W7_+{qmj*<;~w9+%fPCyr5u~e=l+uy?sLEUNG*@azV;NXv)Ho0;e3L zmmE(oJC0#g#?A=vQhXPd&zT$_jgS0lWENSLy-q|Nq}FJX73?T1o%Kt zQ$HD1fw|CPJel0;gJE&j#X(lHp=AV~q4UX$?+nZz+;aXE!o3i}@|qnI(XFoS5q!t2 zcIRp7v-$+-N7mXm=XZ<|s?3KL1eCs?93MqUgt56{opn?t>j`vSXN{TQJ2Hb%k-GXE zvL~@xns4}YuF%NI(7|Nt^Tgnvk`nW)0o?EJj3jS3O4d7lNp#{eVY7IrWgRpnRaFax z(ylzY7slv97(>i##^clNH(og>EFn@<3QAEaDuvkpJ@nsX1uF?i09NqaSrQiv_<>va z3!F@0DuG^{Vz;`s)*hd5%ek<&twpLh*}yYF;#+fgu-tiy&lKR{ysNBzJkr**ql29M%X@^Vx2h_2@$C*v&2R4d@##kK z&UIaPU6)^ta@T`74d78vz}sTR@rUUf&*Qw)7XgLx2@z z$AgEvvo2>B&-NUrYIOwnz1Y06drVY}`5Q-S_I$T%$4}V#;B2^6H36;fh$v;{IOjeW zv^Y9{rjPGK_zLulNxW|mnI&YGgV?dRbG;njHR`t~@!%;odIF~nX72RM$CNYso?@jg z))3%>R?byt!r8ebjG>dr{+wOLnA;7|zKH{HKmMR&O~G zFc~rY7dDimJcX}vR3j$3-)@h#Jhj$_-3!v- zP9+|`u!)%`IUY7)AV0v%J=o?Fxpl|t}1By zFv$q-)f#iZ-E*()T}N~jko|dl`X=>0lIr>A|w{oXV2C9D2l;$#kQLtdXY zAXsDn-ToOd$aOHh+&Pp>kX|H1TvzoA?{(QVJ;StVDZ^{xnVxEwxyjh7`OKnhM-J|z zNmKr#^BW@k?|x5_ z@q;D&>}vB`E0ad3qN=K~n-?zvOh4c&=OVJq>mt=ZrN1?&+Si|b1KG!?mwYHx&YG{7 zf(|+}<_SsjB~GS1z<7UltsSL~w}JVO_A?2yGxoO>6XTuDi}$RvX~hrk3^@}O!K)Z^ zzukHdXX2>wr)hqgheAcD?b`gzZ57!?K9Jl5Bf>1pLC%*FcC#YYTJuMSWIn;)(v2UR z<8@X4yWdj@ugH%yh!>`6sc%-5qQW^_IrsLKDPxN2J4mAD{T-_dN17BO^QddQ)X66O zQI)VYrgGJ{%JxYIBVA{fyIl$ooD3ICeo^LR4vw<)#0S%U__DctVpVg_{bDce3cf>+ zk?-5XJSsv^G3MXxHujDt=lU3fvr<=5S7L;lwhb}x;Lkh}v!|kNulw{hav{+?Mnn%i zcK$(M2whA(khSiwrE~DxBl*~4U_}1i@3-nE%zZms+AMN`c8>~GwZ`148y!A`Kkz2u zoc-VZZj6m6W%6N8$nZQ|30sG#Sl|4DWbl2LTU~$W;0666&R^EvqRh!`^(<|Ck4r2Q zA3L$Yk#~7{@h)QDZMVB-m7Unmta#rXU}JhNKSl(vA_>`rh(nA&k4M{eB2-t#4e0|_ zCBoD+jcOzy=R*gQ-5i%Zp1+Q4jKOhbG2VbiPDiO?{!lu{@uu)=R?~F-oOA!~|LUq9 zARbyu>r;ghbGzNvPFY?sd`lU{P1`DPzuj*24I~PlRqzY#BNvzY+2>jvBbe;hdu0Dw zxZwde9B{MHB{|jq*h|zoRefN0${5&22-RjyH3-Az{ zoz?On)rmT`P}uKYj_GDkM5L~(>RaciO9kXuS33JKQh1`1;erR`TSuuqe2B=KULd$+ zSgu&ZrBM3OysP))%C5eD_6~`$+e0YZ!9)3 zYSKpu6A;_3Y1)>Em_-*3aZxc#yFMk4DU2H?xz$zu04G7%zAdVq7L7~!+q%{D3pSqT z>h_CtDATUg{&T$5DTk7y`7odqp#eQJV|52{rI+uI&DRKC1M= z-hE3OE8`J}PjzJF?940+m$t_zNKlQ>I8TCMFvS?dkOjsQ?IV#0F9tpzME3mYh65fW z)fbVShFua(?Rdt2q(${we9s-(xKy>TvF?1hG)Sj{YbmKGe9h^nf({3V!AL|SF!%;dwS&L&>FFO$46HDcECf zgoBL**n3!1&EjFVK6F%w(8M158FYqiug4 zKmYf5G+h%_iO4y3zuko|=$N0GZSwN4iic%3LKRUFy5X_{29TgQDb>7JM}CowB0AT(`5 z1pYk4jJ2yZMzu&RzXD0I_I25)i>6qS!dH^eof20WY?Ge*?A9wwKBBnJRf>6jgOfV`QCQj7ZXj8 z!hP@&*kdNHoRdGKfZSs6zDWtq>bn$RGP?_x(C!1_t{d(#IirwkA7_&GWO>9y&RP+n zm0fKTiVVnpA9au4vm6120FdE>J(?zJel;0HA@~r2wIHzc3<31c&GCwCxLSze_oB&U*qQOI>0< zFzuKuF~CV06=L8{tTEPFV+^PJ-al17^+1Qm*7i90ntTmJbzKLIhjR@<#FeWm=VFXa z+g@w*CQLE!P6Bv5{vK;{c`B_Yc=1{q-|(HvN!!M*>*}ih3NXT2+xc!8y`61gac(=u zM8wwE?->6v@d^j_A~e5Fvz(q~d6mE-k~@v7YE-r6T~bS-yM5?7A!N3^d_hEtwrl_0 z?*H!hNApP01Br4lMs8K@O85Os+#H^DJBJYbQKp4K)cLMy+hktKuMUD!n8{3H*jlzm znBjweG|kWB(fKa#UB(bodr7(X{jD?;-Rc`3@?wHD_J8;Lt*%1|kG54@qsParTRQuG z)RoR2Y?!*!7WuyNPa|Zlblyjee9?v7zM8^pjnz$SdYl>MOf16nnLxpJ25QqakM_}p z?&QF~l9u6je-TVHYs<$qv^!5MHHu|BazbXOS&0Tm^hetYb7Iv+ScILk|894;;vn=r zaHrl`8?A3&xL7`TRXtwW4t?jnJ$gaIzTK39bVfneNae&DCTQEW|M&QLG))KrD_PdB z#j-xF5%{Yy*4CK1-Y!=mBKP|C?{*iFrfHh4y?Sh9YwDu2>FC0Vg5mp4ynHtCoMk3z zyY3S900;2MT8q^a_;X6&v>~otWyE}8BLCmx=g~E-@BZ)c({|lKAu02L1cfUu@~K5( zM!Pdnh~fQxMGD1TL-twr12#WlF7in`W@F61`@M4RR@Z4(uI-<`M$05$E$X~K%md8t zicXRGL=5?+PKNi#02@Qb^xkq&V`zeiIOm*on*oU@hU(V{_t{*ntc6x>VJ`({u56Wb z@v6Ew0RO;dVjj2(1}!_q^EAHsVJYorXBWsBCg-^Af)C*%ZPJUeVU01yXbeRTV0#zG z^Vn3j)_y_$$izWI)HsUh506+(tyfQj@%3$uL?AMzK)Wj-d+}SmW$ebe-eQ@gl%9W5 zZ)^}UdA+aj!FS$P&fRafeX8?IoD7JW0rK9zi4Hit+Lw+}UtHqH#nu?EoH!@MXxsMZ z@e@_~nvwQ9cJQgKY1$av%N+lA|5sNvGlvj<9*@r<`;45)U*nnCbk0-kJUL_781A|b zACtXLae*u6P>}ZU$@-K<YCJ~QM1;d$>NfEe|Z&3EAOt*)vuS}f7)_qt|gB6Pm{X_`;xWKFbxQ-N6AxH>rSJrFj@89duoC91w( ze;mUFSYwQsMc+(80l#hy$;^Da-M*HR`V`^;DLnkpcH!^Zm$8*O?VfU^cUR~sphHu` z3*rdwg>i`9f|N?WV6!1Q`-u^@*8T5(Ps!a!zP?1uB=w~a{zIGG%>w_VQ~LpAPSute zl9wh zavEdUPkui75MZ4ndTOGxyS3$vhUYY=5@oYdvoo`Z)Xr7aIi0I~emL|Vze#5Fg}a;| zrBcyy;0U>RfmQAqlkTYwx1l9_mKKSo^ z>ZG!bIPdezLQJ=+a`t;p1IR1)M4SRadV1vWHAwhVXg9{cki_@wl3&J)#lGduWnFq{;j_Fj|&oCF8i& zF3#M^P^5Atv4QNVtreYKY-?Y(Ht8!{mWzh z%Oc3#uT;6rxbNTCNz4NckPH=9PFA;xJK#+5?tQYTx2|M!vo*s18;WQKdN8kiUDi}XaQ^u@Ut5m}>Bd1TqJFUMUj3Bqiw zz16q>-TyiJdj0){${j?k_%bI`AY_h@gKbXc6TH>mLH1;y1CTMMa#h>4U*2rx#ruqW zC!#n;kO=1jM` z+>!W|v60gn~>d&dExCl)5i(f0dKDsxbLeoJ>0OPfQ;(JLme|v0udZsqIW^H87i7 zig(DF^wQRF=QTnN450LC2;U)hdsPB%RYgR}!Fb|zhq1a~fW*kXz8Mkx((phwRzKlA z`O)egMF^&Tv`@N9fe@p!24nU_|DPkrV_a-d+Cp~jPfZ6{XS{0d@a4+AU*vD~t!bN& z;`_Q&*bbWW`ri(@u4vjT&wmAb!#DH2`F(I7ko_4b%EWb5KVCPFylU`}E<2lq*NXQQ ztY3Ll>9^8`J4SWJM%9#*b2;vCCO1gBm(=CQ1E@b)GGZcj&fevYk%?d3g~i@bVZI>Rj?V)xBo4%l!NaFB}eh z57~QOa*%U;|Lks#@A-RBMSlvtTfZM6XE47B#&C!lLa3^WD776%B6A78bCw}9gUHHN z0EO@~9?IS7x^nLKbtX)sYaae1I!IpVj!@pv!7OO^B#3;00b_!&2#X?SM&ZK`nV49N zSYxd*qu%BdXXEy>m@%Ytj7P`9{O@*apRF-hax#-VJlezMQeA&M;eG@K5f&COGUZdQ znkvA3wu=9L@6sBwKc@goT_()0@;pv2YCyGi|4#*;l|HRgk3iSD|J_P41Gc$=o zp^=8{O}vLVPz4|&8}B1E3b|eh_xoSDROa}&y~=3wDki#0*~vY!nJrRsF;PhW+Tw%3{dXFbl5oy&n!6Ab+$RWN`Y`%Xw@uBcwhfg3OV?%I1aMl@*t5+R0~UfVOl zS{p)OW)>DPM#P9=;S32A=fm_?sqlN1d)hdwLJ_4O%YEVEtP_!@ZS_Jss*R)6LvaUd zG;J9VMovWmf)3RTFUL(`qE3YezcpR4kL)8kQ%6<(uq)&dawaF=i?)$OhsgJ3@jiQq z2!+@$eyOlZ{QHRS=Qr#wY#4e0nGAu@O{#rD#CP}Oz6#?ilo*H=y@#`ru%M; z=|bQ+GlSR4FJsKV`#+up`%EKMhwM`V<1>0_`Si?8)`^ei@$>k3G>s2_5X``c`FFe9 zD;!oQPGRN3>@ZzJC3<{?d2f;l;o38c2r%?(}h@oklpU0!^+Nhcs=X+fb zeuVEzn@Zcj6CBINy(^03`?W;+t=F*2hN^0eM^XN_s<1vT^3WtrA2)?!(=T*I&hw&$ z58yjC00vLp@+Q)-q`<#aTTSr2Hv&8;k2{R)PZyoy5&SQL`}87<$S)oQeBy;?wlE+{ zeW=^@!4~;;z^^!|EvO%07k{jefIAbZYTI^;{ufS}8=dbSk4Mv{Bvq=b>fh}q{NixQ zwFfk}95||aJbRQ%lSCEppl@X{>6C0N`Na#KN%H$o!E!1shyH-C^%$y4SgKNYs1dQojyhX>{EdC&SoI^|{%8;8u`v;a7($E*;_tUx=Y5K@JWB|Umx<3f ze@!2S=XKtHI2Vt_rivX#AD4>(QhOrjx3ulKJmxiRSt8#b&EwmEvy3bfhE5Mx^~uN| zQ_k=P+()Glz`dH6SOgmL6Sjo!g9Ltl#G3V~DL@A`Hu?6P{|@KQa}Cd_H`dPufVU;6 zU$h@6^BBzaGt&yiZmG+SC_Z%#BB4MAtI97L-9gAXD*=kBuH!_8lz@}`zyXW!P$8sugCeU}?q z59Jyta$MdidgP6Lg1M4w-(u9*b+2_NF%icYewv5(-Z}R|lzZ8M^eCHtu8S2!ibHb` zV{DD^cmT65L>91l_7n?)cv>!z`*zku(czSU?0->Hc26I-SN_WOX&tBASZ@77pk zyOy46pGApg5*lRI0zi^cn&ahIzjBO0t0KSNzm$&9qCPFV&1Ub_%G{IzzQA8j_PVsp z|JdDlvp4R;v;^*)({j-MsISd^p&V;!Ao__J_%fcNYaNn9R^j5dEsiO z+P^;#IDhDUEe!hLe;$vv>s0m0T{4Fle;$v)7Vt3EjOr}l8B>>qP4m|W&(}uoF{6fy znVHMLJ+1K9-XLrx(k#$(a!C2AQ&?$dP(t@~l*h-_zMv($mv&;`D9zA!3-1#$eCF;j z(d`Wl>xG5<%;8;ojpD(bH3JAiebCfc=&Tz{mf6{NM!rwZ80ooY8)M9iRv~~Y#@+ev z%Bz~L8%f zo%hRH=30m^BQG*eW_gGB+|5011+2*rlKK6S0elu4hu)b(yM(jiNMX6%Zv6GA)#a{s z<8XDmtw|L=K#}?_?jtU%!Ux}WZ4bE9m*W!o{{B$U6o=s7lewpC^aQy@pG}a)sE?*O zEz=zI1tVwGqdX#pVt$G8eAS@k{oniep>FB#pXg?~hI5aq-uqv04aB5!KUlUO`_vG5qbvSuISAU-i_lX&J<-`l)y={!SC9e+}8a_p722j293w#z))EF3w?)=Mmfo z>r{-MOXC&(@+G+H7+`ISywU7>`4-+@aydHhul094yV)rV#}7nvoT#>WvWo}En4Qzq zw?@I&37L2B-5Ptl-5yQz>4}F8d?ykn%x!_6hpRcU!UHuAP+e73RRL(buE%r&GaJJq z45biboLYNx4sqA6#97DduYh~gww?Dw!BIrI@$!O*LJXbvwX0s92n&>_@xRO|F@a}l z3A_&(SL|FbpV_0-;*wi`0k}ui5W<&{ooSDg*=60&Kt50Dpj6Vyd9mh~u|2aH`0Qr0 z$M?E!+V%_k*%?yjUu9chGmr65kVX(w<(!B#O%q~FOo$QAbM0Y>qJ|JmChZ^W1TJ=L z2B4Jtx9}|6^V4&x^_>qBWT$fQ!SlWosOviW@-f2-%F{CmVd(xtp`6E`ns4tf5`3i~ z(!M_+eE5yBo%c8y&~EG@Ps{t`6irey8#6gbd~euXe*tqs<|~6A&N>1$UGufUP)Oup z5?a^-51p%n2%WS~w`U(hIxCW7{>IOtFfzYJ*oRQL>e-K;SvXvXt%(TY->BS~$j8`r zejvS{o%d_gXk0)QXu9^_?S5!PPN8gCkWD`Ltej71zgEuUv!MIU_29DN{atWZz<<4L zKgG!$`sYceMm3$L%4Ngm1B+wdEwZq+`_SM|G=+1H=z4rlYVR_MSxP_^;an{<&s=>L zBVZ;YG62Q+<6&pW#6)5^dJQo+>zI&qGDj@H&VERY@*5@s$>+Nt@`>EEEuc9YgT47M zUa=UX523PdgPhUDQQ_>Li-h?J%I8fZYvug@=;c3+??W;=E)@f=B!!1U*1U5|iUk|@3ZQS6%t5<>W$EzCA2bHE0YcNdS+ zLwn}{pc1*L4B$^*CCum2W%b1#KSOjyj3R`kvaa>rsihGh5rR$#>pXLnd1}hP_LO)Q z?;&W2QJ8nLPv5y;1R}}Yr11qb;kN5S3^b@7XFb3(^&pooIFxkbWHsFgUIt)t!SQAM z*g&c2sFZmzHek!PDh%%r@6X?li)i<^_I)wNsQMQxI zf}$JEJRf++qx+Jx?tT3`GvDf4h;iR=s`PU+w|z&@O!AJhr&!T*CNVeOdm?%>Lv`ab zIOkGo;|PUcaIlIoj*|8naP!eC-Q%I}RddC%ebR7?l{gC?471ah3}4*;G0bN8yY!Qv zc}%$E6LbIi3CV9iIHTP!XjOf^a!&!WM1O~qVLGUjSsbMvzC}E2@cW3Ci|XJ{RRDwG zxNfJUerENBHTHhHH%+tY?7wwg?zcNs51NdY$@l5u>N8V&b7o`eOw*^P8BW2z<O#Y`6MC6-znS6oXiSJzj>58;bcHW8ey)i-S9bpf4Ueh>i19IwsZn2 z{JQ_l?RFE9_C=G?C%(^}3AAtVKVS$vnTSRRgc##TqwkzC|ND3U-@kviy8d{bMC?PD z5i%vJiucFxFdc?i&B=yorrLVv(7yO*hM0T;aR1`z>YDxU+zDg&y1sHB{7rx1>jh5c zwM4z8IlL+qaK>EFzVrdC%?-jvr9rWNe`oKBV~-hw5T`YsknO<@_w^6)|dR_{zs5 zjWN*Q#fSgw*RymS+nR>N&diA?JJDihVya!0@AmA=GdybiElvh2I+<5MlTVEq9u)4E zTOnR#)`;GhHHY{d-{}f|X8Re&V7VkTBm%R!)z%o(cI^Re73!*X&V?Amc~6UF+bS2u zGZAbGkrSn}#OL?Ka0oHR_#MLJ(`9?>yErIh4l*#MES#Bh20{q7s&eD~#EO5Yl6Y$o z;ICb6IukkD+y90bHO8RHVp)grO|y)V@h^tO8iPwJ_unboF~|DJs5=^}w8GhJ=wuS% z9x+Qv|NSwV-I3HYnXmSPxA0~7zRQXN1jJ$TjP7c1))|qeYd3wNQCD^4DgwH$yQDd; zXUq%Y8D$yNh9z^XNf6)DU7b?!?|;2Kj2eA!Gw>9^tjQk>b1$<1o;@nW0ID+T;Pq3A z&+ISpC2I1O;*Jyb7ea_JCKox*S6?n(oL$#L zH{a)E{$}Nl9h_kzBp;U$!hq={JAS6m=SXm*Lo-3Y(R>F@eyMU_<}RJky=++$?A__8 zM8wwEQA&65PUP*&!rb?xrYDsw;WJh7!<36>lNNTb(;l)vM`Y!yf46_u*x9zSa#e~a z2BGu*!izfItwpQ{VyQ;S13fT(4iN@4#`xcbb|#83`VdD#hNrvxV-5XSXGIaRV`n}x zwXUWz@%fjyxxJ&Ub(clQ5Eeqby@8eO&b8S;zPMI=CD23+av}PKIB; zQ9DPe3!O|1nw+RVuqom9F3VW9&%rb~kEc+P7~|k~#+U{=zgdQisiFNn8iE5?Dh`P7 z{dT+GZo^8MkUfR6viDx~T_F}q!@nq=dEz_vo@x+l`w;%SvU{U}cs$xijDZ;grepQBu`;%Y0xxIFU+3KGs%DlU zqvPXs%$$>1@-PR=_ibyiZIWij$y`HXlu651z@3M(ofd`Iz|t5R>i0hFEb;GG&H1+dHeQvT3VB$mPy;mp`4W^}p1MhV!V2meC zi*MNvIBShaN;c51Ks@ri)T3vovwxn~P7)DOh#+EXEq#QnzOrn`3eXMVLE7`({KR*> zF=UYx7iriI&$gR`LDGI||z3|ephSwr?`Aw)4oJ6O%UFTnjfOCw5`>)^VQtpn8%V%i0;aP@?Exg6qWoDA&_yOW7}%sXQ@Mv4k&EfMdgXPq4_?<`b9i`r3j z;55FE$EQPw9P_D2khEZ?Dm{DYG;W-$?!7O~2hd@}_eDTcP;9Fc#{URY z(jNb}z+F|lzHBeZV`feKs{xY7L zJ*yXAr)Ao%^T9K-cyElc#)^@;sw(F??|twCwSU<)%=|x@_fVW)|Mh8F36*7h!9x zHKuZ|a?Xd~y^k8-g?L`$WC|`}F$L8pv+iL#w6u#k6HUabh!J&NFn z;^q*4Jjspwq6~m?MzX&$vzS#e_S1^Y@!g2I-|tP^#CU;nhD-lsW+ODi_o!so4p)cc z)%1yDjP5_xsv4e?5ywdO!hUNP*$2Z0C@>4O`BMZ9&Hxi1u=+~Tyd&;0la=SVYP&Xs zP}g-`*GV;CcmV-x$d0}an&*pRF{-n^g%`m+^|sA=9aOc`uJbI+)>>=r{dP}{a4Dej zwJEwBcI!H8dUj=uX*x{ltZW18*Z;{x%w!CY;4=oHscKLp6AYFC=w;vWf|+7Oh`80&JLcM0U5fAyviBmHx2Yl=oGQsN zX6!jUwqw{j9brj_d#QC+RcB!fX{_Apda#GYn+}o1FA;{)Ogux>$7;`4hoL}XVU7Ct z1(7^Ctd@WGd)sxL_X!7v_^C;yhV}Ys@0*-gW2&G(ys-g>w&QpA0Guq?d5ml7fMKUt7~gb+jddo=t8+$qaPq-csXW%^Rw?0u9vVoZl4>>ZUE-r z;WF5dD7q8s{S`;&cv3zC&c9C?|et35IH$sXIcA~l(Y#<^`9wt{s?;PNBZwI*Ko}!1J^m?H_?Qxg zuUGE=ibU+$IrTOMO>&p0tVk~lBZo+I!)&DY59oZ?d7lb-Yb*;J7$cH`+efVL{cT=(X3x~l*BU> zBCO$J1_&|zT42pyQQ7&<2S1%X{gjB2V$`H#He!r1&RCx$NzkG|m(LI~PoKk2wluy) z)L;>7bQ0Np@J-t?!%frjx_dMZY^*Rg!cM=6mr zs%#8R)1#L7P6T7@zq@I>_7WGGoP1A?XSxu-JHsGT=zep-Xjcqs2yq@||B}Fu= zst-Z9w^(Hs#lCi#%Xq$cP%<2v9y;UXP{b#w8-DBe+OF+KzYKF>hJZjN}aB$hL2%i-5o>oz&}+& zYliRXZ-$we6pQ92J8x!UA|?8Rf|;gkH4D#M%3x+duSl|yvEhMVN6INdk)AO5Ofb)n z1!q<*YvbxTzQ5e?ar|>OZR>+KLS{B8aIAy0B?6N~G)}%9=gV0FgYA8lT)h4teVy(5t^lA+t|IY~bc%uFMWpM!Uc`UtOFWX;i zTsnp9dFv@1iPn2#>$W6k4&Xa6k+aSk`$7p{Xj{$xF2bY}eAl6Qbpbqo%|3-&-^KX! zYM(g`P$^2VFYtlV_1Gt5)*HZ+MRLCr>U|=oD1Xq7>itxljZMIDMen0+L-1Bec;Ds) zB{FE&Lq-#_3kgknKDLm3A|`z4KvjWw9Vhd`y1JHuS1#3$Sq?Chb8Nw?2oas{yk~1| zqHA&rWf=Ov=-$A+*Zyv4KSL#CTZ0$CoeuZd^2x$v%u^r3S8>>~=7m+HOwK@=&G?-p zp}`_O>M1#6s;f#wlGEN5LU^Rc+nM;iZ*DTVH^HCNdMHNs7*NURipzO|OICTE!#Kl< zGLf*b^d1-ERLW6)cQ^bISm6_+cdXe%@K#tDI6VPSEbf=c9+gB$_Id-?MJO+E?on00 z&&gz4OJ1k^j+E`ZIjfCfV_20!gb&__;H<5jn*`UbVEq$uF-m#Lr9Cb3@Lm|0Dd`*s z;2X!Vm50TfhVAo*b_V4&drHngV=jecW)cAuh^aFnn=9i|L`ekYz3;p~n7q2Koayi3 zES4|rmx))JSN}xWPHoqz>M{dzk@~%MbD1{#dYD&=_!VwulnwA;6_=Ms>E01>Kc=~W z@>h*RyoE)ac86=oexPh$d=xAfW{OI}Gh|;kv&%`|Cvknga%ZA=g-+%)C$kordH~fo zU3|;mA0VDXK(bhcx;xBAc0+jpj)seIZC=dro>}UDejw&UZtG9KS=pGqI86Ypyxre;?bqP= zG|5-WFLDt&-yzrcLWqGWbCsCYp@DO(<}oU=mgW2DesZ7*)ubDz-hUrW862)|)NJ;@4F zZdFahPto4ERL{!!(F$spv^huF^VYHC^5-D(-lq*D9fNjk<2;v;y|gJj=q`@gyN=k{+5(~=qHX7bBk8Nz!N$mG?LvMc~32_Uod$w3(pFyed>oo2Q9IK!|0cG%FDK<8NRR7+shr8xf>H=?E2Hi_0fS15*kPrL?wJrtg-n; z*TX4rM%Az=+p&V?E1DQyqwE%s=FQo3uA&-e#FUoDc&cAi+PqWFPwqKrnLIpup1Q7^ zril^D_~c{fsGDyKlv<;WtgJf+2$|^|>7V8hxTm=EcWj$p8oHEa>P_)*-_>URpToON zCVFlqjqniooEY_<5qJ(h<|AO8GYoIeao)zS>g8BReUh0lBV z3OHk|xreypOS++)*~E8cBJ<(HiCJZ^2JOu3!&cdTj9A8+V12KMFVDQQWcQP_DVOu3 zQ0-aHzjWYq=#J$Ji8c0iyESbCo!~q6w-Sr))CD33Or6~$AQ-883V&)v>pdsl|9?-o){=!LqkdxVm+L4OM3ii+OFfTkC zvk<@Qx!7+`jj_f=RquU>p(y2^}I=Tu#@Fr~V(fRzs5f%ft8Cda6p1&+6(cO=bz+z@Z%N1S_B|S>@x^NfbLFZObrxb6LV!miZs(4P z5T@eDp!$DJ^S|3IFS?f-_7R}4@Vum_IyQR))6R(^dS;jeA3Ua8l4T$&wwV?_g6>BY zGK*Z4e(Aynk1-vKyaxLHoC5G{rUg;zn&*5a#4!+9Y->2i&~%+@G(t`YK-aaM_bDMy zMDF){61>mw9VZDH1)>r&nZ-=(aeb`ha44-QEfV>6?17oaLz%;0MfXXSa#$@sfG4WA1q%r7fi^-Yq>JCe!SKqlpo2H2xtqhJE*%~8EY)Dm`w(;K7RaMuuh%{|0 z$(()rPA+~tQth%(&X4yo(WlIkq9%xJItExHw^A{5u5u@u>jb`0xGy-F*W~RxoXmpS zqoJF?8YAbSZKIISo0!I7GeI#>)3zW;a_3`O6n#At*BkK?C=A}E&nN~XBDs`cq>6ZG z-{01UjrqFEP}3{6VVmgRAMJdkU_W@*j4?Jv!)2C_%T|SZT|e43pJYD9N8A0o)wF3b zG&W()x^Vd=i_bJNMg`=iV1G-H&3nbxhKCH7j{!z#AGzRT3;d!mFJ2lhHh?mn?Y~PO zFvQTbEkT{(B2r@@C$0r03HKd3l5jMtJV~jC0wK_O-+{6OJ zo*=%oe%~zEpG%+!f7!pN40u@FwCr%tSxd}6k4OGNy5PB`dtLJ;i^41=a)tr$d5{0p zxJxA*$AJ#gW766q_P)=^ZOx7Y6X+Z~!a34q%0&oxofTy7ee1n&@A`>s&J``j43jX$ z=zo5KbM9W(t?x8O;pI-L@UF%~RI{+`UUQ2?f_SJvoV8VbQ>YIi#+brH(=8O1bCo+2 zX+OljSxN11G6&1{9rC>(ZwE1l02Z-_Ihk=^krFjyPv0i?79&s7A9rL2WlXF<2%7Gn z4?f8*P-IqCV=|Zt&x7y0r^;28b6JqkYFy0B0HD{JvGiwEZ1^P`?t>3|Iv;$u zU|-)gV&WLYV+YM-ZFR=pZ?{L&c+@ba)@{QHcB&}iKz452XBO}9MZask1;|3yzfE~Yb}9P zRR*gOtj#Y_GP78v+G(|W7K(_ds$OE{+`YaLkqP21)lt?4=fat`hD=fETH+>==c!h#DQsTyRg1h-F$V-$P$1EPrD=| zM*2e^5oTc-?Miybl+{PrHz zzVV9aMc1Lx=)I|&t6Wt(imFl7OgWh&;EwNrdy$iw7`UJ1WKQfXc{FMF0YvPqT`IE{ z^M_TV4%(4xq^^{a7uxc6R0!!9lsT8wgx%dk7Zym@Ur5RR&k=CL@1 z$aCa$Y$MF%k)yl3FfqbbO=8-Cl<3Lq_Y7jE=1Wo5+7|5|6b?S`r5BRwPVsxvG;*Th>xmW z@U^RwKl$>Q)$U$I#aAo$na=D5@xY<)a(TxP0<1B!HE`K08#Q)a7h_~$>m(gw(j>nD zD?@DZ4}e4@8Rfg7Y-d^+wvPB-LU=AQe4G(*ZPyVnS}D+kRRokUsG*pcWk7izSBPH0 zB5#oIWmp&fWge#YgL}gI8m3dJCkRALxK$N^w(IiG(sV5|RjyjC-%G_i&^xIdL@`Bb zKmn~AK$g%Muk40P5J&>SbN|o#T^2_cf@5?3>KSQ+5F~^Mx#zL+0 z3Pn}B^)seeRDfx2bl#xJdyizziR}2;Zvu94(_ze8Jhf z%*hZlZF4e3-n>w&9N=qI5j<=bz_fhw5PZ{h%(&gG>FeT^M#@qv5o31K`>?&v=SQi$ z=`qdBg#kDtXFz1dBmqX(b;7*$tWzrJS)Bt4)}TIkW)>D>j7!`T@piskUPU6e(&V1& z|9x1;;0N~>$(!$qiI-W{;K zUOW}&7)pJmX>kB0?&y~zt9oQ_nixZ6nV0u)osik%-?vhhFjDQwW&lgR;8lbl&)k@e z6i{oQmieadz;t*quldyNRq1@98tF5Xd;o~5s-hKt=b;PPIA_+^>%8<{{D9}&855_j znM%x(x*4r&w!pZE?_g^TF{R`=W4OqWtPPcc*&!Y@ZApq1HTvL<7;CLHwvX0X!E~CG z#{5T=FsTo|uhwY->+ckaX_WrE-T$w7gc$SB`O`H2ZX5V6M6nly4_MEG1LEG0f1Zae zNp@OqS>hwJj}IXGw(oCNkEGsT`HZIape~DunuP3T*~hnK{dU0Ackz7F^sY4CMAn6y zn^_##s40dBdt=PDEpah^HhNf+P z9zSi@MpdTgsW*lu&lHtMee#L?1!PYx2ctz#IzQg->N>eaCT99~yP3tw^H0-+X+@v^ zO7b#NfX-wO5s?l7GRu{fR|_6K+RIJnJTvAj=e+v4-YMwp+iTi3#4z{@tOy(m!)6zb zF*t8!V^KYNQ;m7g*SyRmTPjtyK;Q658fFbn!yVYencU2{4i!9Wctf1 z!rLHzXsMZgd*l_ZvBfL94epFDGG$8<P#4l zWl79@07&^+e2u;^yW86%3rCvs))>|Pm}R9%=ap4swl(6-#RMP?!9SYj(Kb=FuZP9_ z5fWys*?U+YR6zL5Zj^@;@_+aHQoa7uJc{-EXf`ogMjunN@US;p+lDP6ZmT*v;up3_ z)I9Bpd1asRTZOw1zVn?;$d2-7I``&QD!g%EAtPjn3eBkVhpxQDuETrcWUMLk4f4B% zJFf_3nCD|ufvAWIjfjPFUS1p5dn7D6uhv@U?B>OUF=9k~&{CcBJf})t1NnR5RWgK) zu(h&T5^dRGF7Z8`5?W(A-w`4Aqd&0NZ5pwyiqX@7S$wo@=RG!e6~Fd1O^7lj7tkdKxZ;3~LjN56i2pd^;oS@9S3_sk%*41-Vp7}m5UIhD3ypzh%)4uDR%nrEYi?j?jYlqA-kQ4;4 zDnif@5CdYQ-W3l;nPd5R(-rBwGV!ghX;bN%z}q<&QYcn=rXVSNRN+HteefZs?4F?! zbn+`kxT>to=%HmoM|!m=e5;AMBk_(ilPHP!*ZNm6_`k&kG2tp z6)K)*Z)hLO=cva-ml(_zSI$vU{FPJmMiSLCvs>Y0b}RR9Zk}ney_>#K=5dK)W@lYp z)z(^OQ6L0(uRf>`8sl)#v?qw{yvB&SeiAaUH6BeJxgo* z;&6tu_TTNc+zbCSkEocJ%tP@`y|vH&0UI=|BQqM~w5jh(>v9BqP{sb<7GIP^)AgZgXxCVTNSYHiNdWLacl@fLAM<6)s?lm5n z`3w=Mst#tx42Z=!tW+t`coc_?O9n3-1$bx+|-k-M#21<<2wd3WZfD32Z(uu+ia z{YutYYpgRXRMmIN3_LzZme5VxM>86+Tuq5=D(|*I6kZqGIbD6}yB? zIb~@^$RwoV`44%wW~U9^PWAv{7UAu}^!LD>%g9d0w2XtZ8YhC=hiHv)&Y4sgL#(ms ziFNuF`u0RvV{Y}04hl=N;=QiwNBeMgG;b-_Sa}cA=xtqztz7TX7-DQfWM(6MIp1r9 zvcbb8lbW^W)nwYjfL*e1(~hb&eBWC|))$FI#h)jBJ=!+LK#@F!Bt^8=I&05%wPfz< zIUJ1@I}{LT%B`6d?-Q-z2g>&K0fV}#Ku>eA#FLgSzf($F9|^j5q&B>xG@_j~m2&_^ z&1(7ee6I4~p8k+m2$}t|ebsdv-@%o(>zHAt-Z9UI;8lx(dAryuAtOvev*FE$tRFW^ zb{ZNRQ&GF^rE32Gw$BXQSCY!O@QH<448uT`VvHdKG2*PV)(ZD=lt#peJTo+Ue|i`( z$77&#_Z4f63AXFv?IzpzWzDiVy(MSOSj&ePlEtnadVVm}+|va(0j zR{Is=M|14vEvmhIvsaE`%8cbFnX&ZqV@?=w5G z4R7INk52tdX?N_s&(UMJ5m4n;y$``TS2-slDEMwXePC#6#!E8?o8f#Z?a!7%``(w~ zbQ;DLlp_%n-Re4}AQ~|*u+M1>G-(f%*T&DZ58`LM?j(6pRipMvt35BkW&I!XnTgB1 zPsq@d8GHxWPsG0fZPytYvkYdG_<0YR4MJvm%kr{)HGJW{T44}fONv_CeunMJ{Zk%K zYc`NHq;t^8>@N(!Ey4hzk`La8khmIaOfTnn@4}A1X~a~{wOu!eOpBW}Y}N1m8|tgz zlzy5_n&a>%F&M@?Efj$*e4ly96fYO{@qL$kU*UkWiJXii(==1)lFS(<8x-7jT?irN z$}cf}fb)sLI+glMkyYqR5N8(Vc-67$YxrJSH)~Zt^G>+!n#mq$Qlao#7~|6`ewqY1 z!ZWfPFI=kFd6kV>M|Pg=2Vby7Tf@Pbv#H z`Dt#J;J`VzJ9xIi9rF1y2S+w}haE8zwJk!{n5c*$h7gP~RaIGI=xvLr@m*I{6=H0= zaI4(}vgXghgSf3&PEX_w%afF(3p>LHN+qAo_(=) zW8x5l4`EgdW!gtffh1qs(udBg{Q2g0a8fIgNZccx=mv-Aa~7eMFzq~bdE_K#>E zX?Z?6E!)$ZSe&Dl6*6>ykjYmL9wuHdA=xY2X}5`qKc7}SH47_-FBLeMjUen%VQMYc zwYW+Y`e+`VKOw%}2NB|1UB?I?B5(BoVq<;c6%PRsshqvnuCA;xq6!~k+lAJL5S99= z%PS=58sk~m%x@8LJIg4qy;#cn0MPnw=FqSPi0O#i`|xO*7-N6#kl7eu-3n$oNHVt; zE#S+6MBvv({3pWX(mPR&ZPy~}%jS*W;I;b;;zY<`L2XV*QO=+06d_Y`NCFNAald`R zLJWW!p|fTCk$bywGPHS)I!uAwf$!jW!sI?AKo;hu#_u$^6VcT8A9 z^Z^l(HC$K1%ppX&a;1V1Q&&~jg&1`+l$bMleevCv6E2z98gp~*Ry$`6F~z8z4{aBG zh?7RyHFGgOgzsE#S>?SZm$Ji1YW3>8k5Lz|Gx^&zSpq~FRoku$G4^&V2c`i^^;Ptd5`BCCq;GPaOLW$mqUm9r_9&xhFh;6q4qaz2zt za=3oq=sRCGC&-$IZB*@iH;!{&x1h!J@5x)TX`9Y>^r~*LXLx%Gt5Cdu*?;!zYvr(> z)Lm&UKXh8abg+crC9%Vc+Wo|MEh}+2zayVK=|~_ORhLaz1+3ZQU#P&gm-+IEu$`Bh zzTwGK(@fkoG6&#al>ihY zmfnBsx4I_cwhfD21B%2WFI38^SmS5%QNm2tm|JBNS3^W0YU@MiV^l3-D6j8^i}ibP z-8^6(nU(Fvib&gaz*;?2u7L6q9zff*@8J8e>11HiPBq8}LBOXg$=3?@Ui7J&_8mm* zL%?t-jRTeV0c0=Og$?B-cHAg7&QW=bFJ}2X=g$2}8*qY_oOh3Ln{#G)z7IawY-`NA8|3+#FiDO zFdb4OR-#GY!gpr5*SDYMAwE{lU~2)JM=q+OX@UsXwJii-Pm=kbl~y`jO&a;Ah^kR_ zJak1#^+ktcpx6r)}3Vv2*r?TQ;bt z`oqRLrm__gCAq4q=IUQORr4au zx2oE23ONPtJ@Tf$8)70Ph)J*Gc_A70>A*JIZ^nMn+epJImXxpF)W28@FS{u`o zCe^tZON1*is**Zg6F(bRtxTSF1K(*{yl>$9_9O&RWnGLh#IR=HJ>WZb>-SBT^e8T@ zDBpReiTtgvY#W}p0`S<^0D=#GT!*$k?oq@3`O9OowBjSh*9xOJE);;KcJZ^b?+D4> zv`vU1HT4W9ja<3Ph-uo!N42stcCm})tTp-Ce=)cx^EnK*=})gFyvkxNqnCE=h`2-v?{YFv!kynrT-g+=CJPZ&ZJKbu zyXo;!;dR?Cs)CuVof9d%gvK>|AL*lD>Z0;})Xd-m;J!P^a%u$tL7!pA1Fk2nZOBA2 zw0TT_tjL)|{j>&?t(yIKGwPDm2Z@nWv+v+Fe6&rBp|VUsh(3g1jIAnX#29P-$-QY? zAA=PVK4jstziqZ(CkxySPUhHI#@VCPK8=icyXX5F@}1~*yFDI{N8|6e9N#gmQn~XnMi^rNwN?s; z7e#M@wfcRWoh+3T9h?k+M9L?K=fU#(5Wdrj$-t_U7|0kCV~iSek<3>8o*J04an6ek zlNnlzdHOzZhWLKE=??Y#RaP@El$<=7&pI_#dPV@I*)^0?+q+3@<>&Esbu@UX@p?Yq z#?&htb1xPM(AgCln>1-3c-{2Ko<6-Z3{X)2cm!i@<(x6*e!F+RYr9Su`92mn^1{3k z%{Cs=FA13=DNAc7E-{j7j8TIRiKt13w9if6nX?Ny2E-V|O#E_!>0Bi;eF{ENwx4=s zL`CkO{&9S-D<*DQKkbzn|IQ(*_px#=syb)ZW(}`rB+cjP^oFDcsLI(yRVRq=d{5f& zO5@a<%}pQ@5%2xMbn*?Sk!K0dY^_ZTLDXI!*(Y1k31QtJ5SC;&pF6*QSreIyVN&5Y zu$;m}xa*Tk1fs^-Wh?}7&_V5Ep(e+q8s&3@3?JGt^k#M?ZB&E`W`KU@k`SZg;F?#EY+UF1u+ajReV?UCPz7QZ7TPSv&s<3kF?8Nr!$#(kK@c&+8ny;8`k%+o zqiLAwfA_m{RZxz)3vGCk=F9IAsixqBo{-_zIUhc}bXRC742{UY`yHUBnd5uY1|!xQ6GEt**_k{m%}uM(^CgI{ zot;9wCWzN`oX9(O>tHfp5-srN$=cb`o|a@HZo4+dm;!WDj8W6JKaZcLZIgG+!G^Iu zBO4f$?>ro4exqPlRUi@u>o!ilaBC-x$Q6)y3wC*@5TJP?<8)N^Re|&P{(MC5DY$7)u&LGK zMe{0~lrjT!T{jwL%>rJM1UJOcw9Vu3@WInwfN~<=d9WoIWi$L9h*QZAi3eCuJj_6V zFpJ?uGyd#pweMEnI9XhsG<<9$gG`aS7FxW{y&T$5rgd1}E3I-~LRCBOtxTx)vY2pXL!`+%Dmh1wl!5-A&^O{rCmF>X?!IHEz^A!J4u*-ZbxUvup%F`r{6UD)e{YTWsb z2}X+QludIKkPsOmChfX5gkVI7M3tw6SzzH;# zV`KGt`l1L%8_;$l!+k*47-5Z>wgsQ~sAKV!O52^i!jSTlFSdzU{dd0`F}K^zTI;>n zULK5o>HJ z(2$Pn$hzxe9W5(lS9|#$K7bYI@Aa_ zpdi!gdH$BH;OJab1t)u~x1l7J?LGu!CUw!wcyI$o$12_kr9M#f25nD|4=kP+IUz$m zvafl_45}x2&YI)CrVGCx=I3GI;jEI$mpyV_-&uAG8w=fot-YahWN^huP`Jt+>8>mm zP#|iWrt?0b_P_hxS&P*T7uG%tGyl8YFeC{$mm*TJ`i}Te$VNZUCgwB9`KV0&S+)@n zVG*N1kLUnEA!<@w%V7761N}&Q$xV~L7C(Ic-mEb!+_s%+T)G}Cr^ATv2^c%?qsF?b z$B^{p7MoazG?`if#4EiaeA2I?KcOAhmj2-MDPTWF@6n(;I^hmhT!`0K=1k#UkWIeU zj5`000!9q4nJb+H5+6Dum@?CiQ?b{=L<|LnJsb;9ac+9!pM(t2qF9`SqcSteaPu># zpnV&?DfIMKQSW&j9;n=}?(vw%VedwBY@Z-<`OSu?B4X^0PG*auRWxmw?9(KJ{Y z$La3zx(6c$A~nXyDXC@K#&5+Vcdvf$f6WK=L5sZ2@|9(Xe=>urA#GMd)RC*wV#4d^E{7cvS+JC$Zyo`;iRG20cuVGfX`X zbFw@F09`+QJLDm=itL>6(*1t)aP-+)M@I2wQtxf*41aT1lx}MX!AuDel#u<1LD(Rg zBq0c+u=M7HOzKHkC1mm&H(J8<0oIkPoO8XQ-{|`|v?I-be@J-kecP?$_YMo~!NGPR zC$kZUy@}oBu8E=pfhuW4T~{k*;-T5g!p2Ba_z^f2x8;PkQfOykAr*1XwXG*uXAKIL z=KD3{hB-l+1D#imYMtSuHefx(i#5p!F6y)907cfZir>)M@`1vsWE-}4goqI%P1EEj ziZh;?7ocC5n9#OsRkf~bUI|q{nq^0d_pbH|*>k48{p|v;^f2{QJH~2y-P9L(O$Y+_ zY7S$Zb#*1Fu!}J&R24~ImTxxl79|leVyv_DV%+WtaKDmqFUMgYr}_6Rl=`wgD2q6| zbCk+Eb}=L@k>ZFJP>|sz1vWcM-T3M)>)KWoRb_W~*(-F&V#VT~6YySDAx3(w*cp89 zA>J4x$wv6Or3?`xS2M?WUQYtw;AbX;Qhqf#nFcSzS9y`_L2K<#BTEBHtlI5%TgP{k zHF%#W*q>FHDgl#Nif4<|Ta$#34SlB5M^YH7g!!OdQML17_I+Z-D$E3pkr(f>G-2jd zdA?kP7&-Oc7uoi+vDdVeKbEKF|zTzCTQRl(l6twow3X^W7L58_F?h97ySp!F-FO3TyTh3 zJyPM9?b>JBN22xE>y51ghHzkLh(W|SYZJ<+V-<}Wbu{=LOC9YJ)zWDDQ?$%ADlw*9T%3;* zUS;pjybn(G0)>cMUAIu?~CH|xl z5@%!rChbMT02U@TtQdmChYPBaB9xefiG_!SjB|I{n!r92DMipk zUU+12K1RqC2I7!;jbS%-ijbL<|Ff?c(VISoV6Cm36EW25)~qEndslDbmpwG3UpnsI z_LHF_7KCRk2hzWSS0m!q%l0!f5Yh{xpK^%VQ|Zv?_}bOK-)^1vZP!KBy0XIvC@ zgiK+ga84gh-0Y_|7kvjNNI@8UvPN(H^kxDyeQxQ2e!{TE2xlFyg|-}nkFgU$kpa0Ss0pZYcX2rk)|zWD&%{8W6oB2@3K-owe3(WytawEkuf@jT#fcDpY~d;|{6-z3CJWf{6U@es8<3?RtE6|YgKA%0BzoUR?VrBXj9Mt$53V=Um9@9dh!H?++VU00FY9)BVO{` z>;Ku-Q(1hjciq!t&JHb;Cardb%PMl(8`c4&IN{YG#&0Mww_qD{oI`-BQIEwio5&=| zk#QIkrJ9*zjD=yN`M%>RDkHjfeHNpMPWq!EG?W?KAqF2jAvx!qwc{`>8)Qj9K{A|b@Lb63(wPr( za-Ss}E39UbtkI0oY~`u+0J@_9v|Gp9lMS2syB;Q+4yM~^$e3d71U)XDElNx_{kSSe z-fQrzRl?-wJUZ9nkuSlX67Q1GS_=v+%pzKdtB88sMr9@gFC=BE{fpO$e1a8b?`Q9= zG0xhQuv1CY3us4(2z}~%c=!vf8mo`ldmp?ZF!VOmez-H$pUGlrVaW6h=JlrSxcOdn z>AIja*T#O^3-h_)jxX|Mnp2}^ssnk}S|RN^q=aPlwo(y+8DfyZx!b9wHy%YjF^l4e zNT~?rgK2wx3r9CNYkdgb2Orp3GA8Tvrqz}r`|~kcYk#H*QJuALGQ3)a(aq8cQB=VY ziEuK6f^%|Y6Q9{=iWg=y8I*MJDU>3oO!{P?X2qPE;xiY+t9laOuN#SrY2V<6^j%VF ziI*5qgA#L>uUG@4ZIRu-XgRh64+EqX^a-|WcGz*ik8Z3k>k*t49n5P^X5Xt#u-dTLV1lCG($=KAa z4l&O2Y^`m|65wv=bk+KxHxTwW()JKS)*d)h8o=i0kLr5Vo~Fr*rP^ZtiEVVG&xoVw z3K>JjP@;f@5PS%Ov*R%C_Un6KhN#9Ej7gr0>Z~(lrg;t=E!_vZV;{B2kVzIxh!yv- zBeK6B>Wi1P9zsWB{^je}g}HD0d#~l~cRp?a2*zM4D9ONce27X2flH&$5T1omRq#O& z@i{*J3Iio1BIboKlT2I^+Wvn;nJ4?o3J@L`Zv6pa( zh#^XXuzU!FQ2qMl?C5R&uDa_A8bnf*MR=tQyDI=IAShO1;@Y7c2^%HKtALJMWCjrj z=KwK;FwIkv=Tz0lIPP%goUqsMQ6=m6#}AAgGT*UF9c(kySv9c~Pk`)YCJN8(F7Dp9 zNy*U!zK}D{LS*qFSnKeWKzDZ9{Y;YxBcdVWoU_J|p#sqagPMzkdxp&6oohg5aqhq) z_wg4=V|mRZAhU?a=Z4B3xW#=wb4R!b+>g45h7b`V$E5W1_55Pt5MzunltkVnspRUn zycbn?KE|w1^lGBi_q41qlWVu!yQ06h?t|4~!`K~DDy4X;&e@jJVoQ8R0T5!880G8n z6cuJ3T2f3{mg5ytc^Thp(1b9BaTVQ{mI8{a(;HqAd(MDNJ?mQ4@yJ?dtc@{F^PCW) zBugNwk8#XRlw6Q$1sEo8XWShX2NFHtCrIu98e+(h%9%tL-oe$oKk<;cZ#!OHP&-~n zc3AnCi9l&6CL_BOl5oG_$iM?88bL%jTy($7&FbYB#5RNk1rUHCs4b= zMy%^0wqK9cV37$!-QLYSCwNcedUX;WdL(}{@9XUa+ydO28u5f+Eh*^F&(G{H`Na=}xGE_aX|<@nH`-3?C_(m-~`?ssI3(g8MJI?Qci<=0-i?|2MWM zvxF$m$Abvxd3KIk%8~d+_vO~vBZQAR(|`<|%$&iBj~Qd| z53E3Y*)o~#eS240!d^|ly`2CcSc}5wy=UfhI9srWC}}UG@KpRh@G*||#U?7g$c6;i zB?#U$luqwINa^Eof4aK4gh|psYvP8pG`z`nx?@yYi&yZ zv;&GcvUEOx$;1eyL2*|R;~i*%?Mt;@-Y!%fUScQLi($FV?_Q1B`xt{WX($R8N zyS&eF{GNU&qO<0>krsRg5t+pY9)}?{X@z+lO%s&gFQ+#CzELd`1!i3bOwQtaMYTuF zCOA@Y)v?-gSREG4>89;_HOMn5Z8v1BwbL|-upTvc@(q{ZzSa0xbmZmE~A0X4L#1Kz@vovExg??%lQmut43QzT_J{udkr1(spYkusLmx`st+C@U&hv}_ z)|&mwD|VaAGJ77J9fv_g=6SZ33IzyHL2c=w5q>??(l_wR>!>_1;I0x_uIEa(o39AH1rL!_e(?`bm&2jdwN^=uUMoy!-jG zS*TO9y$@7m+ zd#@@hX?l1Z_L`~O^peni9o}3fSV!Eo`Ure!bgDkyFB6QaMQ7+L7w$QsR z#4Eu4GAl^m*BEq`Sa=Shi_^L-^YQffe&L`^)qS00!T-`@9EQi^5rX_oky+{_T14kL zB{d@eBwoDR%Oc`={)X4_T_kH>)7Ihs);zKK%td05PU^B|lrLH&y8FOsxw7!KDrkJX zO?(f2_8vahChbcg^enhva32pr9506cR+E!M2JkM_-a`5j(|qzv!MzR-A;!otL43EL zrCtn%fJkEukplvVqG;=GYsURV)*%Md;;I})3l^pvA{a`{`&LYGH}RnCW!Pr57pfcwefNv}*u*HKtSYP?bxiSccz@P^`c8m}+BRAdn! zqqFw+K3Jcs@tw5@;6s?^U<^5Hj6r6d=V+~cj6?eNJ_c(rD@SfV{RPMT)R|8;LzXGy z)~3pVo)-vOAwP#&6%-UtZK986s=B&+tbsl&^qwe#wm|%(4D8d9`Puk>)tgo2vy1^> ziMOXf4Q3sMmbYD}C(bq0zGlQMWGej^ec^+v%Iy83EP3n2aeM_sP^hk`0HTN}yXP-Z zds^p&XHfeII-;Cd>4uCU!y+P_jSdu6O0OPP>UKyqr|r(cB@TdFaiot1_lgG5NtoHK zk3HayCn90z>g^#aVRBZw|FBD^GhOaN*eF>^}LBEuRy2cTOpK0<$S#JLmt{}g8 zq=J!%9^)vgK7?tGM4$rJxyO(rd*rC1ZnQN5{&IZZ6tiwy)b^%P1 zkJY}3|E+{U^4Hduh}cCCTjG0?D}aCH&a#L$RO|u!oXGGNf=}{iN5CC>N0xf(xpGSB z=vEN`Vq@n-+WGj+TmPg;O0P9P!(2CQDcm=7Qj|g%qL%YXPAgU zh-upPK6+$HxR-$w+n;V2V?qqC*PME_TJIi_HMO~}iqxNoEL}3Ai!$rHY_FnClL_!EQ4;E;fhkF~@tJ59Z z=ja}4KOJJ z?duu8Ucmi`a|4JfvshzqmF%+$Hd1m_SRkt9NGPQ0{MQ=8ssWtiN1FZYV?f;BCIm2; zI{Oo|du*kK|Bc9=Jat!zz`S@8h-Ajca_FZkDJss`_NCSn<;attYvw-M$egr-vt>8j zixZqsD`Ed`htp*leY>G5wB~Df4bo%xr9nYfnf&}kMD*9R*95qCXG?eT9>*;v6@BR1 zkRGx3ZJKaSjAD#=#ZP#B_z)6JuE~Au0l028WU?)4*~x~Q!>IQoOLca|tRkLc9ERaJ zK3Uj@z+BlJKqbPQIhUA>QhN=U-W>|-OF6UuHzA>l-0^TLq;LDt2`@pt!=j5(u@8`0 zE;}JA8jxfSq*y(c>$ArALsDPGdO$?)y$=DGLT_bus{u^kNC83&BJzAZ=-=YMm)<=T zljtVSb zMFna>G6fZp$`Q{MtP~h)Y6CxM{7XJSEVUfS)wqI{8a20Zf5ic+)r#WMp z&oLwpgZ$nR-|?7(-$nWC1%n3{h(<MpNq?b*Jrm+B(@p zATC)=hT01qXZxGj56Cq4j);ng58*#a9m|;K^ZE6Bj^kjhF$RgqS^Madu*EvG8TyU1a>rJ-jDCFvyR)JB6o@W z66I?Znv*dIO^v=ki|w0kYU|8x6WiMXx^+dtn$Adu~rg+Y!+@*N`Z^*$&9e zqCy03Fl6onFapa4OU^O_9aTY7Lh|DG((#nc#AiQ$e}9J%44KF9_ZnEACE`# z-EsRL6g9oyczM!&RM>##37OF@Oy+XWU!(^~_i-$e1GhEFwFbxrsG&8)pUomAG1w3T z?rv^@dhv)j>GCchB0ux=7a+T&sf=7$yewIz07T~bd{9*?1!+Ule85$1sKv zaUs>646pW)rvWPp)m@R#weJ1n&;0(_S`<*LNTuoWT{EuRMNQ_q_sfc%hc=M{NsF!&v;`w`ZM0wmIHixc%_AmZ?(w+>sOOo-T zI@k>cbp+g#&hIXgM^@$q)$QQQwC+NT0*Hfiuhy)KVj8`bz8$0=_mO>>vx5T27;FME zZ;ATq0W98XwWn{d&{O zwThq$F{&|UEDHr&4YA*Z__EN6hyYPlIbGB8c0Pn;w{$#~Ym4XoS6Pi*z#xPeLJ0VY zY_BH9)R7(Eya;NDzMfA+`k4Z=AR@N#_Z=h?Srl*_NAJTT_;nNC`@orV7$URQb`7PM z#^tfb(e!dwtspjVz~xnSvEur4;tpC%@pfd;&1pY8PsntqqP*P^%o{Po>S$V2d>v9a}LCdsT!nz;Bwt0%8_4f43@=m;Cejbat41^gb%+aVmW~ysk0I zIEIr+eRv120QO%>o0~7!gs~gz_boTxol2G^bA)0om6>q&nw9jBuEn(zfV8 zwUM<_MBD$CG6QqAJrm*dD({(4_nWNe%AlA>gy=;Ujd93w2Aj`ZN-V`n?I16K#c6>M zRP|?`|9L(?p0ocx*+}2zF%H(6X`XqC&KYB{QGEdbXozf$bjQk2MFOPvcB3~Dho#rhHMW5La6ancsWL9k+0|1eKvHy$WzhYM%5cXY^3*k2*a!@ zvP67Mf^>Sc@PMYN>Qz|RcGXay8+mLy5krZn?BXTOzz=~DH@noHD-&)rc&*pl-suUO8*_D**X!KnoI#YFnvu|wwZmzj)kYE@nvP5PJ@O(T~#fK1?B{|d^BC6du z^1Fy=h&m3VHAeL!i?||eswTgL_E>5;!fN&1CXaU`WRo&uTD(CKZEJoKOG4JH%#WbO x_VS*rmGXOJ$dDO_aT_9f*33uTy%Yiee*n&o+IldXqnrQ$002ovPDHLkV1m-3-dO+u literal 0 HcmV?d00001 diff --git a/stylesheets/img/jungle_bg1.png b/stylesheets/img/jungle_bg1.png new file mode 100644 index 0000000000000000000000000000000000000000..4d25c184379f8c9ebe69f76704f25d503ec301ba GIT binary patch literal 100273 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

    5?am{*06~aP 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%0Aby!OAwObV^v*p8Fs_%|J~y3vh)f-#ss8Y* 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