##// END OF EJS Templates
Version bump
Version bump

File last commit:

r1985:7b9ffc10 default
r2009:75a09d90 4.8.0 default
Show More
thread.js
167 lines | 4.8 KiB | application/javascript | JavascriptLexer
neko259
Added copyright to the JS code.
r332 /*
@licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (C) 2013 neko259
The JavaScript code in this page is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this page.
*/
neko259
Show id of the post you reply to in the form title
r1289 var REPLY_TO_MSG = '.reply-to-message';
var REPLY_TO_MSG_ID = '#reply-to-message-id';
neko259
Removed compact form
r970 var $html = $("html, body");
Pavel Ryapolov
Move cursor to the text area end after replying.
r106 function moveCaretToEnd(el) {
neko259
Reimplemented caret position manipulation. Move caret inside the bbcode tags if inserted
r1783 var newPos = el.val().length;
el[0].setSelectionRange(newPos, newPos);
Pavel Ryapolov
Move cursor to the text area end after replying.
r106 }
neko259
Close form by default, open it under the post that is replied
r1056 function getForm() {
return $('.post-form-w');
}
neko259
Allow resetting form manually
r1880 /**
* Clear all entered values in the form fields
*/
function resetForm() {
neko259
Close form by default, open it under the post that is replied
r1056 var form = getForm();
neko259
Allow resetting form manually
r1880
neko259
3 modes of downloading urls to a form instead of 2
r1916 form.find('input:text, input:password, input:file, textarea').val('');
neko259
Allow resetting form manually
r1880 form.find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');
neko259
Allow pasting files from clipboard. Alpha release, removing or previewing images in the form not implemented yet
r1985 pastedImages = [];
$('#pasted-images').remove();
neko259
Allow resetting form manually
r1880 $('.file_wrap').find('.file-thumb').remove();
$('#preview-text').hide();
resetFormPosition(form);
}
function resetFormPosition(form) {
neko259
Close form by default, open it under the post that is replied
r1056 form.insertAfter($('.thread'));
neko259
Second clik on the "reply" button in thread closes the form
r1108
neko259
Show id of the post you reply to in the form title
r1289 $(REPLY_TO_MSG).hide();
neko259
Second clik on the "reply" button in thread closes the form
r1108 }
function showFormAfter(blockToInsertAfter) {
var form = getForm();
form.insertAfter(blockToInsertAfter);
form.show();
neko259
Show id of the post you reply to in the form title
r1289 $(REPLY_TO_MSG_ID).text(blockToInsertAfter.attr('id'));
$(REPLY_TO_MSG).show();
neko259
Close form by default, open it under the post that is replied
r1056 }
neko259
Added links to reply a post in the thread view. Removed quote paddings in white theme.
r97 function addQuickReply(postId) {
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 var blockToInsert = null;
var textAreaJq = getPostTextarea();
var postLinkRaw = '[post]' + postId + '[/post]'
var textToAdd = '';
neko259
JS formatting panel refactoring
r1084
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 if (postId != null) {
var post = $('#' + postId);
neko259
Close form by default, open it under the post that is replied
r1056
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 // If this is not OP, add reflink to the post. If there already is
// the same reflink, don't add it again.
var postText = textAreaJq.val();
if (!post.is(':first-child') && postText.indexOf(postLinkRaw) < 0) {
// Insert line break if none is present.
if (postText.length > 0 && !postText.endsWith('\n') && !postText.endsWith('\r')) {
textToAdd += '\n';
neko259
Fixed inserting post reflink upon "reply" button
r1516 }
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 textToAdd += postLinkRaw + '\n';
}
neko259
Fixed inserting post reflink upon "reply" button
r1516
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 textAreaJq.val(textAreaJq.val()+ textToAdd);
blockToInsert = post;
} else {
blockToInsert = $('.thread');
}
showFormAfter(blockToInsert);
neko259
Move cursor to text area after replying a post
r1514
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 textAreaJq.focus();
moveCaretToEnd(textAreaJq);
neko259
Quote many lines of one post
r1513 }
neko259
Close form by default, open it under the post that is replied
r1056
neko259
Added quotation button over the selection
r1521 function addQuickQuote() {
neko259
Refactoring of the scripts accessing textarea
r1769 var textAreaJq = getPostTextarea();
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575
var quoteButton = $("#quote-button");
var postId = quoteButton.attr('data-post-id');
neko259
Do not close the form when clicking 'reply' again on the same post
r1830 if (postId != null) {
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575 addQuickReply(postId);
}
neko259
Quote many lines of one post
r1513 var textToAdd = '';
var selection = window.getSelection().toString();
neko259
Added quotation button over the selection
r1521 if (selection.length == 0) {
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575 selection = quoteButton.attr('data-text');
neko259
Added quotation button over the selection
r1521 }
neko259
Quote many lines of one post
r1513 if (selection.length > 0) {
textToAdd += '[quote]' + selection + '[/quote]\n';
}
neko259
Added links to reply a post in the thread view. Removed quote paddings in white theme.
r97
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575 textAreaJq.val(textAreaJq.val() + textToAdd);
neko259
Quote many lines of one post
r1513
textAreaJq.focus();
neko259
Move cursor to text area after replying a post
r1514
neko259
Reimplemented caret position manipulation. Move caret inside the bbcode tags if inserted
r1783 moveCaretToEnd(textAreaJq);
neko259
Added links to reply a post in the thread view. Removed quote paddings in white theme.
r97 }
neko259
Hide form by default, open it on title click
r671
neko259
Scroll to bottom when the form mode changes
r686 function scrollToBottom() {
neko259
Removed compact form
r970 $html.animate({scrollTop: $html.height()}, "fast");
neko259
Close form by default, open it under the post that is replied
r1056 }
neko259
Second clik on the "reply" button in thread closes the form
r1108
neko259
Added quotation button over the selection
r1521 function showQuoteButton() {
var selection = window.getSelection().getRangeAt(0).getBoundingClientRect();
var quoteButton = $("#quote-button");
if (selection.width > 0) {
// quoteButton.offset({ top: selection.top - selection.height, left: selection.left });
quoteButton.css({top: selection.top + $(window).scrollTop() - 30, left: selection.left});
quoteButton.show();
var text = window.getSelection().toString();
quoteButton.attr('data-text', text);
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575
var rect = window.getSelection().getRangeAt(0).getBoundingClientRect();
var element = $(document.elementFromPoint(rect.x, rect.y));
neko259
Fixed adding post id to quote in chrome
r1587 var postId = null;
if (element.hasClass('post')) {
postId = element.attr('id');
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575 } else {
neko259
Fixed adding post id to quote in chrome
r1587 var postParent = element.parents('.post');
if (postParent.length > 0) {
postId = postParent.attr('id');
}
neko259
Fixed getting sync text of broken reflinks. Reply posts when quoting them
r1575 }
neko259
Fixed adding post id to quote in chrome
r1587 quoteButton.attr('data-post-id', postId);
neko259
Added quotation button over the selection
r1521 } else {
quoteButton.hide();
}
}
$(document).ready(function() {
$('body').on('mouseup', function() {
showQuoteButton();
});
$("#quote-button").click(function() {
addQuickQuote();
})
neko259
Insert line break before post reflink when replying to a post after entering some text into the form
r1696 });