]> BookStack Code Mirror - bookstack/blobdiff - resources/assets/js/controllers.js
#47 - Fixes the issues with the test case.
[bookstack] / resources / assets / js / controllers.js
index a929f4aed2543dad113c157c6efa563f24b8070c..aebde8da4136fcd7bc2f293e7198742661fa90bd 100644 (file)
@@ -272,7 +272,6 @@ module.exports = function (ngApp, events) {
         $scope.draftsEnabled = $attrs.draftsEnabled === 'true';
         $scope.isUpdateDraft = Number($attrs.pageUpdateDraft) === 1;
         $scope.isNewPageDraft = Number($attrs.pageNewDraft) === 1;
-        $scope.commentsLoaded = false;
 
         // Set initial header draft text
         if ($scope.isUpdateDraft || $scope.isNewPageDraft) {
@@ -687,7 +686,6 @@ module.exports = function (ngApp, events) {
         const MarkdownIt = require("markdown-it");
         const md = new MarkdownIt({html: true});
         let vm = this;
-        $scope.errors = {};
 
         vm.saveComment = function () {
             let pageId = $scope.comment.pageId || $scope.pageId;
@@ -776,7 +774,7 @@ module.exports = function (ngApp, events) {
     }]);
 
     // Controller used to fetch all comments for a page
-    ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
+    ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', '$location', function ($scope, $http, $timeout, $location) {
         let vm = this;
         $scope.errors = {};
         // keep track of comment levels
@@ -808,7 +806,7 @@ module.exports = function (ngApp, events) {
             if (vm.permissions[propOwn] && comment.created_by.id === vm.current_user_id) {
                 return true;
             }
-            
+
             return false;
         };
 
@@ -816,6 +814,9 @@ module.exports = function (ngApp, events) {
             return vm.permissions.comment_create;
         };
 
+        // check if there are is any direct linking
+        let linkedCommentId = $location.search().cm;
+
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
                 if (!isCommentOpSuccess(resp)) {
@@ -829,6 +830,13 @@ module.exports = function (ngApp, events) {
                 vm.permissions = resp.data.permissions;
                 vm.current_user_id = resp.data.user_id;
                 setTotalCommentMsg();
+                if (!linkedCommentId) {
+                    return;
+                }
+                $timeout(function() {
+                    // wait for the UI to render.
+                    focusLinkedComment(linkedCommentId);
+                });
             }, checkError);
         });
 
@@ -844,6 +852,15 @@ module.exports = function (ngApp, events) {
             }
         }
 
+        function focusLinkedComment(linkedCommentId) {
+            let comment = angular.element('#' + linkedCommentId);
+            if (comment.length === 0) {
+                return;
+            }
+
+            window.setupPageShow.goToText(linkedCommentId);
+        }
+
         function checkError(response) {
             let msg = null;
             if (isCommentOpSuccess(response)) {