##// END OF EJS Templates
Reimplemented caret position manipulation. Move caret inside the bbcode tags if inserted
Reimplemented caret position manipulation. Move caret inside the bbcode tags if inserted

File last commit:

r1783:43080135 default
r1783:43080135 default
Show More
thread.js
160 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
Second clik on the "reply" button in thread closes the form
r1108 var CLOSE_BUTTON = '#form-close-button';
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
Changed closeForm to resetFormPosition in JS because the form isn't closed any...
r1059 function resetFormPosition() {
neko259
Close form by default, open it under the post that is replied
r1056 var form = getForm();
form.insertAfter($('.thread'));
neko259
Second clik on the "reply" button in thread closes the form
r1108
$(CLOSE_BUTTON).hide();
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);
$(CLOSE_BUTTON).show();
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
Second clik on the "reply" button in thread closes the form
r1108 // If we click "reply" on the same post, it means "cancel"
if (getForm().prev().attr('id') == postId) {
resetFormPosition();
} else {
var blockToInsert = null;
neko259
Refactoring of the scripts accessing textarea
r1769 var textAreaJq = getPostTextarea();
neko259
Fixed inserting post reflink upon "reply" button
r1516 var postLinkRaw = '[post]' + postId + '[/post]'
var textToAdd = '';
neko259
JS formatting panel refactoring
r1084
neko259
Second clik on the "reply" button in thread closes the form
r1108 if (postId != null) {
var post = $('#' + postId);
neko259
Close form by default, open it under the post that is replied
r1056
neko259
Fixed inserting post reflink upon "reply" button
r1516 // If this is not OP, add reflink to the post. If there already is
// the same reflink, don't add it again.
neko259
Insert line break before post reflink when replying to a post after entering some text into the form
r1696 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 textToAdd += postLinkRaw + '\n';
}
textAreaJq.val(textAreaJq.val()+ textToAdd);
neko259
Second clik on the "reply" button in thread closes the form
r1108 blockToInsert = post;
} else {
blockToInsert = $('.thread');
neko259
Close form by default, open it under the post that is replied
r1056 }
neko259
Quote many lines of one post
r1513 showFormAfter(blockToInsert);
neko259
One more fix
r1517
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
One more fix
r1517 }
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');
if (postId != null && getForm().prev().attr('id') != postId) {
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 });