소스 검색

fix(discussionViewer): fix "Open comment" button

rugk 4 달 전
부모
커밋
a96508afa5
3개의 변경된 파일29개의 추가작업 그리고 18개의 파일을 삭제
  1. 27 17
      js/privatebin.js
  2. 1 0
      js/test/DiscussionViewer.js
  3. 1 1
      lib/Configuration.php

+ 27 - 17
js/privatebin.js

@@ -3446,6 +3446,8 @@ window.PrivateBin = (function () {
 
 
             // cache elements
             // cache elements
             commentTail = Model.getTemplate('commenttail');
             commentTail = Model.getTemplate('commenttail');
+
+            addEventListeners();
         }
         }
 
 
         /**
         /**
@@ -3607,7 +3609,9 @@ window.PrivateBin = (function () {
          */
          */
         me.finishDiscussion = function () {
         me.finishDiscussion = function () {
             // add 'add new comment' area
             // add 'add new comment' area
-            commentContainer.appendChild(commentTail);
+            commentContainer.appendChild(commentTail.cloneNode(true));
+
+            addEventListeners();
 
 
             // show discussions
             // show discussions
             discussion.classList.remove('hidden');
             discussion.classList.remove('hidden');
@@ -3692,6 +3696,21 @@ window.PrivateBin = (function () {
             UiHelper.scrollTo(comment, 100, 'swing', highlightComment);
             UiHelper.scrollTo(comment, 100, 'swing', highlightComment);
         };
         };
 
 
+        /**
+         * Binds events to templates (**and** all )
+         */
+        function addEventListeners() {
+            //
+            document.querySelectorAll('#commenttail button')
+                .forEach(btn => btn.addEventListener('click', openReply));
+
+            document.querySelectorAll('#comment button')
+                .forEach(btn => btn.addEventListener('click', openReply));
+
+            document.querySelectorAll('#reply button, #reply #replybutton')
+                .forEach(btn => btn.addEventListener('click', PasteEncrypter.sendComment));
+        }
+
         /**
         /**
          * initiate
          * initiate
          *
          *
@@ -3701,19 +3720,8 @@ window.PrivateBin = (function () {
          * @function
          * @function
          */
          */
         me.init = function () {
         me.init = function () {
-            // bind events to templates (so they are later cloned)
-            const commentTailTemplate = document.getElementById('commenttailtemplate');
-            if (commentTailTemplate) {
-                commentTailTemplate.querySelectorAll('button').forEach(btn => btn.addEventListener('click', openReply));
-            }
-            const commentTemplate = document.getElementById('commenttemplate');
-            if (commentTemplate) {
-                commentTemplate.querySelectorAll('button').forEach(btn => btn.addEventListener('click', openReply));
-            }
-            const replyTemplate = document.getElementById('replytemplate');
-            if (replyTemplate) {
-                replyTemplate.querySelectorAll('button').forEach(btn => btn.addEventListener('click', PasteEncrypter.sendComment));
-            }
+           // todo: remove
+            addEventListeners();
 
 
             commentContainer = document.getElementById('commentcontainer');
             commentContainer = document.getElementById('commentcontainer');
             discussion = document.getElementById('discussion');
             discussion = document.getElementById('discussion');
@@ -5433,12 +5441,12 @@ window.PrivateBin = (function () {
                 }
                 }
 
 
                 document.addEventListener(I18n.languageLoadedEvent, function () {
                 document.addEventListener(I18n.languageLoadedEvent, function () {
-                    const comentContainer = document.getElementById('commentcontainer');
-                    if (!comentContainer) {
+                    const commentContainer = document.getElementById('commentcontainer');
+                    if (!commentContainer) {
                         return;
                         return;
                     }
                     }
 
 
-                    comentContainer.querySelectorAll('img.vizhash')
+                    commentContainer.querySelectorAll('img.vizhash')
                         .forEach(img => img.setAttribute('title', I18n._('Avatar generated from IP address')));
                         .forEach(img => img.setAttribute('title', I18n._('Avatar generated from IP address')));
                 });
                 });
             });
             });
@@ -6088,3 +6096,5 @@ window.addEventListener('DOMContentLoaded', function () {
     // run main controller
     // run main controller
     window.PrivateBin.Controller.init();
     window.PrivateBin.Controller.init();
 });
 });
+
+

+ 1 - 0
js/test/DiscussionViewer.js

@@ -89,6 +89,7 @@ describe('DiscussionViewer', function () {
                         document.getElementById('comment_' + comments[commentKey].id).classList.contains('highlight')
                         document.getElementById('comment_' + comments[commentKey].id).classList.contains('highlight')
                     );
                     );
                 }
                 }
+                // clicking "Add comment" button should open the reply form
                 document.getElementById('commentcontainer').querySelector('button').click();
                 document.getElementById('commentcontainer').querySelector('button').click();
                 results.push(
                 results.push(
                     !document.getElementById('reply').classList.contains('hidden')
                     !document.getElementById('reply').classList.contains('hidden')

+ 1 - 1
lib/Configuration.php

@@ -122,7 +122,7 @@ class Configuration
             'js/kjua-0.10.0.js'      => 'sha512-BYj4xggowR7QD150VLSTRlzH62YPfhpIM+b/1EUEr7RQpdWAGKulxWnOvjFx1FUlba4m6ihpNYuQab51H6XlYg==',
             'js/kjua-0.10.0.js'      => 'sha512-BYj4xggowR7QD150VLSTRlzH62YPfhpIM+b/1EUEr7RQpdWAGKulxWnOvjFx1FUlba4m6ihpNYuQab51H6XlYg==',
             'js/legacy.js'           => 'sha512-RQEo1hxpNc37i+jz/D9/JiAZhG8GFx3+SNxjYnI7jUgirDIqrCSj6QPAAZeaidditcWzsJ3jxfEj5lVm7ZwTRQ==',
             'js/legacy.js'           => 'sha512-RQEo1hxpNc37i+jz/D9/JiAZhG8GFx3+SNxjYnI7jUgirDIqrCSj6QPAAZeaidditcWzsJ3jxfEj5lVm7ZwTRQ==',
             'js/prettify.js'         => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==',
             'js/prettify.js'         => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==',
-            'js/privatebin.js'       => 'sha512-qZHJMvlH8sHYVUAUGflUwg+tUOSfl747IoW8ZaCk7DgLZd9QqUYsGoqhu3IZqoooPiRnPd/L7Alr8afksVdl6w==',
+            'js/privatebin.js'       => 'sha512-1nnRQdjFEp16n/ogNB9UcDmHrLwn+tvu+X1aA6nDDadOFAfujyhg+8qAdZqdZRocSTWY844Wk6FCpv7FnZUrgg==',
             'js/purify-3.3.0.js'     => 'sha512-lsHD5zxs4lu/NDzaaibe27Vd2t7Cy9JQ3qDHUvDfb4oZvKoWDNEhwUY+4bT3R68cGgpgCYp8U1x2ifeVxqurdQ==',
             'js/purify-3.3.0.js'     => 'sha512-lsHD5zxs4lu/NDzaaibe27Vd2t7Cy9JQ3qDHUvDfb4oZvKoWDNEhwUY+4bT3R68cGgpgCYp8U1x2ifeVxqurdQ==',
             'js/showdown-2.1.0.js'   => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==',
             'js/showdown-2.1.0.js'   => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==',
             'js/zlib-1.3.1-2.js'     => 'sha512-4gT+v+BkBqdVBbKOO4qKGOAzuay+v1FmOLksS+bMgQ08Oo4xEb3X48Xq1Kv2b4HtiCQA7xq9dFRzxal7jmQI7w==',
             'js/zlib-1.3.1-2.js'     => 'sha512-4gT+v+BkBqdVBbKOO4qKGOAzuay+v1FmOLksS+bMgQ08Oo4xEb3X48Xq1Kv2b4HtiCQA7xq9dFRzxal7jmQI7w==',