]> git.mxchange.org Git - friendica.git/commitdiff
Move duplicated insertFormatting function to main.js
authorHypolite Petovan <hypolite@mrpetovan.com>
Fri, 11 Oct 2019 20:12:36 +0000 (16:12 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Fri, 11 Oct 2019 23:59:28 +0000 (19:59 -0400)
- Add insertBBCodeInTextarea function
- Add BBCode url exception to insertBBCodeInTextarea

view/js/main.js
view/theme/duepuntozero/theme.php
view/theme/frio/js/textedit.js
view/theme/quattro/js/quattro.js
view/theme/smoothly/templates/bottom.tpl
view/theme/smoothly/theme.php
view/theme/vier/theme.php

index 7e84a08d87b4b2e2fef0c2e3bb43546fcb1481a2..47e7b968d08637d09c459fedd1d048f92f297711 100644 (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() {
        if (!stopped) {
                var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&f=&uid=' + localUser : '');
index 015e8090fc7c655dc182590c7e0ef0028988f632..363f6dc487d7fc883776f5e37b967cb31f6a2a72 100644 (file)
@@ -28,28 +28,6 @@ Renderer::setActiveTemplateEngine('smarty3');
     }
 $a->page['htmlhead'] .= <<< EOT
 <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) {
        if ($(comment).hasClass('comment-edit-text-full')) {
                $(".comment-edit-bb-" + id).show();
index 93d7fe8cee5c0a3e81eb10246e7513ab0aea2d64..7ba6a5c0335232dd03b89334cc9febc26e69169a 100644 (file)
@@ -76,45 +76,10 @@ function commentLinkDropper(event) {
        }
 }
 
-
-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) {
+function insertFormattingToPost(BBCode) {
        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;
 }
index 5a5390737ffbed4df0cc62a210e58d8f0f348b94..89407569b7f985888eb414b02329c0c6442118a4 100644 (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) {
        $("#collapsed-comments-" + id).show()
        $("#collapsed-comments-" + id + " .collapsed-comments").show()
index 3b38eecb56156818bb5aa91bb5635fd3cc75c184..a5c13e0bf434be7b21b1fa6d31514e21ae3492b8 100644 (file)
@@ -1,41 +1,7 @@
 
 <script type="text/javascript" src="{{$baseurl}}/view/theme/smoothly/js/jquery.autogrow.textarea.js"></script>
 <script type="text/javascript">
-$(document).ready(function() {
-
-});
 function tautogrow(id) {
        $("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>
index 9dd958fff40166b8edd94d014923b650e84d09bc..e2289c87be41502af49e07c44ea6b3d24d707c21 100644 (file)
@@ -23,28 +23,6 @@ function smoothly_init(App $a) {
        $a->page['htmlhead'] .= <<< EOT
 
 <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) {
        $(".comment-edit-bb-" + id).show();
 }
index 3e4a837cd0d74e7db2f69d2443e4ae10d912aa38..afb41b29e24a204d2f641d649175521aa594a1af 100644 (file)
@@ -45,29 +45,6 @@ function vier_init(App $a)
        $a->page['htmlhead'] .= <<< EOT
 <link rel='stylesheet' type='text/css' href='view/theme/vier/narrow.css' media='screen and (max-width: 1100px)' />
 <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) {
        $("#collapsed-comments-" + id).show()
        $("#collapsed-comments-" + id + " .collapsed-comments").show()