Move duplicated insertFormatting function to main.js

- Add insertBBCodeInTextarea function
- Add BBCode url exception to insertBBCodeInTextarea
This commit is contained in:
Hypolite Petovan 2019-10-11 16:12:36 -04:00
parent 088eb3391e
commit 5fcdb5de00
7 changed files with 57 additions and 160 deletions

View file

@ -406,6 +406,61 @@ $(function() {
} }
}); });
/**
* Inserts a BBCode tag in the comment textarea identified by id
*
* @param {string} BBCode
* @param {int} id
* @returns {boolean}
*/
function insertFormatting(BBCode, id) {
let textarea = document.getElementById('comment-edit-text-' + id);
if (textarea.value === '') {
$(textarea)
.addClass("comment-edit-text-full")
.removeClass("comment-edit-text-empty");
closeMenu("comment-fake-form-" + id);
openMenu("item-comments-" + id);
}
insertBBCodeInTextarea(BBCode, textarea);
return true;
}
/**
* Inserts a BBCode tag in the provided textarea element, wrapping the currently selected text.
* For URL BBCode, it discriminates between link text and non-link text to determine where to insert the selected text.
*
* @param {string} BBCode
* @param {HTMLTextAreaElement} textarea
*/
function insertBBCodeInTextarea(BBCode, textarea) {
let selectionStart = textarea.selectionStart;
let selectionEnd = textarea.selectionEnd;
let selectedText = textarea.value.substring(selectionStart, selectionEnd);
let openingTag = '[' + BBCode + ']';
let closingTag = '[/' + BBCode + ']';
let cursorPosition = selectionStart + openingTag.length + selectedText.length;
if (BBCode === 'url') {
if (urlRegex.test(selectedText)) {
openingTag = '[' + BBCode + '=' + selectedText + ']';
selectedText = '';
cursorPosition = selectionStart + openingTag.length;
} else {
openingTag = '[' + BBCode + '=]';
cursorPosition = selectionStart + openingTag.length - 1;
}
}
textarea.value = textarea.value.substring(0, selectionStart) + openingTag + selectedText + closingTag + textarea.value.substring(selectionEnd, textarea.value.length);
textarea.setSelectionRange(cursorPosition, cursorPosition);
textarea.dispatchEvent(new Event('change'));
textarea.focus();
}
function NavUpdate() { function NavUpdate() {
if (!stopped) { if (!stopped) {
var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&f=&uid=' + localUser : ''); var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&f=&uid=' + localUser : '');

View file

@ -28,28 +28,6 @@ Renderer::setActiveTemplateEngine('smarty3');
} }
$a->page['htmlhead'] .= <<< EOT $a->page['htmlhead'] .= <<< EOT
<script> <script>
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == "") {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function cmtBbOpen(comment, id) { function cmtBbOpen(comment, id) {
if ($(comment).hasClass('comment-edit-text-full')) { if ($(comment).hasClass('comment-edit-text-full')) {
$(".comment-edit-bb-" + id).show(); $(".comment-edit-bb-" + id).show();

View file

@ -76,45 +76,10 @@ function commentLinkDropper(event) {
} }
} }
function insertFormattingToPost(BBCode) {
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == '') {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
closeMenu("comment-fake-form-" + id);
openMenu("item-comments-" + id);
}
textarea = document.getElementById("comment-edit-text-" + id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
}
$(textarea).trigger('change');
return true;
}
function insertFormattingToPost(BBcode) {
textarea = document.getElementById("profile-jot-text"); textarea = document.getElementById("profile-jot-text");
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
}
$(textarea).trigger('change'); insertBBCodeInTextarea(BBCode, textarea);
return true; return true;
} }

View file

@ -60,28 +60,6 @@ $(document).ready(function(){
}); });
}); });
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == "") {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function showThread(id) { function showThread(id) {
$("#collapsed-comments-" + id).show() $("#collapsed-comments-" + id).show()
$("#collapsed-comments-" + id + " .collapsed-comments").show() $("#collapsed-comments-" + id + " .collapsed-comments").show()

View file

@ -1,41 +1,7 @@
<script type="text/javascript" src="{{$baseurl}}/view/theme/smoothly/js/jquery.autogrow.textarea.js"></script> <script type="text/javascript" src="{{$baseurl}}/view/theme/smoothly/js/jquery.autogrow.textarea.js"></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() {
});
function tautogrow(id) { function tautogrow(id) {
$("textarea#comment-edit-text-" + id).autogrow(); $("textarea#comment-edit-text-" + id).autogrow();
};
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == "") {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" + id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start)
+ "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]"
+ textarea.value.substring(end, textarea.value.length);
}
return true;
}
function cmtBbOpen(id) {
$(".comment-edit-bb-" + id).show();
}
function cmtBbClose(id) {
$(".comment-edit-bb-" + id).hide();
} }
</script> </script>

View file

@ -23,28 +23,6 @@ function smoothly_init(App $a) {
$a->page['htmlhead'] .= <<< EOT $a->page['htmlhead'] .= <<< EOT
<script> <script>
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == "") {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function cmtBbOpen(id) { function cmtBbOpen(id) {
$(".comment-edit-bb-" + id).show(); $(".comment-edit-bb-" + id).show();
} }

View file

@ -45,29 +45,6 @@ function vier_init(App $a)
$a->page['htmlhead'] .= <<< EOT $a->page['htmlhead'] .= <<< EOT
<link rel='stylesheet' type='text/css' href='view/theme/vier/narrow.css' media='screen and (max-width: 1100px)' /> <link rel='stylesheet' type='text/css' href='view/theme/vier/narrow.css' media='screen and (max-width: 1100px)' />
<script type="text/javascript"> <script type="text/javascript">
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == "") {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function showThread(id) { function showThread(id) {
$("#collapsed-comments-" + id).show() $("#collapsed-comments-" + id).show()
$("#collapsed-comments-" + id + " .collapsed-comments").show() $("#collapsed-comments-" + id + " .collapsed-comments").show()