/* * quick-reply.js * https://github.com/savetheinternet/Tinyboard/blob/master/js/quick-reply.js * * Released under the MIT license * Copyright (c) 2013 Michael Save * * Usage: * $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/quick-reply.js'; * */ var show_quick_reply = function(){ if($('div.banner').length == 0) return; if($('#quick-reply').length != 0) return; $('').appendTo($('head')); var $postForm = $('form[name="post"]').clone(); $postForm.clone(); $dummyStuff = $('
').appendTo($postForm); $postForm.find('table tr').each(function() { var $th = $(this).children('th'); var $td = $(this).children('td'); if ($th.length && $td.length) { $td.attr('colspan', 2); if ($td.find('input[type="text"]').length) { // Replace with input placeholders $td.find('input[type="text"]') .removeAttr('size') .attr('placeholder', $th.clone().children().remove().end().text()); } // Move anti-spam nonsense and remove $th.contents().appendTo($dummyStuff); $th.remove(); if ($td.find('input[name="password"]').length) { // Hide password field $(this).hide(); } // Fix submit button if ($td.find('input[type="submit"]').length) { $td.removeAttr('colspan'); $('').append($td.find('input[type="submit"]')).insertAfter($td); } if ($td.find('input[type="file"]').length) { if ($td.find('input[name="file_url"]').length) { $file_url = $td.find('input[name="file_url"]'); // Make a new row for it $newRow = $(''); $file_url.clone().attr('placeholder', _('Upload URL')).appendTo($newRow.find('td')); $file_url.parent().remove(); $newRow.insertBefore(this); $td.find('label').remove(); $td.contents().filter(function() { return this.nodeType == 3; // Node.TEXT_NODE }).remove(); $td.find('input[name="file_url"]').removeAttr('id'); } } // Remove mod controls, because it looks shit. if ($td.find('input[type="checkbox"]').length) { $(this).remove(); } } }); $postForm.find('textarea[name="body"]').removeAttr('id').removeAttr('cols').attr('placeholder', _('Comment')); $postForm.find('br').remove(); $postForm.find('table').prepend('' + _('Quick Reply') + ''); $postForm.attr('id', 'quick-reply'); $postForm.appendTo($('body')); // Synchronise body text with original post form $('#body').bind('change input propertychange', function() { $postForm.find('textarea[name="body"]').val($(this).val()); }); $postForm.find('textarea[name="body"]').bind('change input propertychange', function() { $('#body').val($(this).val()); }); // Synchronise other inputs $('form[name="post"] input[type="text"],select').bind('change input propertychange', function() { $postForm.find('[name="' + $(this).attr('name') + '"]').val($(this).val()); }); $postForm.find('input[type="text"],select').bind('change input propertychange', function() { $('form[name="post"] [name="' + $(this).attr('name') + '"]').val($(this).val()); }); }; $(window).on('cite', function(e, id, with_link) { show_quick_reply(); $('#quick-reply textarea').focus(); if (with_link) { console.log(id, with_link); setTimeout(function() { highlightReply(id); $(window).scrollTop($('#' + id).offset().top); }, 10); } });