From ada614cc6942b803d74c8dbf91634e2f94bd0b34 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 16 May 2017 09:20:12 +0100 Subject: [PATCH 01/12] Check response exists before calling method --- .../web/public/coffee/ide/pdf/controllers/PdfController.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee b/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee index 394809d508..6c4d7973c7 100644 --- a/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee +++ b/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee @@ -341,7 +341,8 @@ define [ response = getChkTex() # display the combined result - response.finally annotateFiles + if response? + response.finally annotateFiles getRootDocOverride_id = () -> doc = ide.editorManager.getCurrentDocValue() From 5a9519d18f8f1bebc11470387115d76ebf00e722 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 17 May 2017 16:41:53 +0100 Subject: [PATCH 02/12] Add a toggler element inside the review panel. --- .../app/views/project/editor/review-panel.pug | 4 +++ .../stylesheets/app/editor/review-panel.less | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index 2035af4775..11a9699f33 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -13,6 +13,10 @@ ) i.fa.fa-comment |  #{translate("add_comment")} + a.review-panel-toggler( + href + ng-click="toggleReviewPanel();" + ) .review-panel-toolbar resolved-comments-dropdown( class="rp-flex-block" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 59f0e40566..909061de38 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -937,6 +937,41 @@ } } +.review-panel-toggler { + display: none; + position: absolute; + top: 0; + bottom: 0; + width: 10px; + opacity: 0.5; + color: @rp-highlight-blue; + z-index: 1; + cursor: e-resize; + + .rp-size-expanded & { + display: block; + } + + &:hover { + opacity: 1; + color: @rp-highlight-blue; + } + + &::after { + content: "\f105"; + font-family: FontAwesome; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; + display: block; + position: absolute; + top: 50%; + width: 100%; + text-align: center; + margin-top: -0.5em; + } +} // Helper class for elements which aren't treated as flex-items by IE10, e.g: // * inline items; // * unknown elements (elements which aren't standard DOM elements, such as custom element directives) From 7c26628ce05645d712634a2b0d305af0d50342ba Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 18 May 2017 11:02:31 +0100 Subject: [PATCH 03/12] Improve styling. --- services/web/public/stylesheets/app/editor/review-panel.less | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 909061de38..06e54e2d5c 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -952,7 +952,8 @@ display: block; } - &:hover { + &:hover, + &:focus { opacity: 1; color: @rp-highlight-blue; } From 832764dd3df5c62159fe410cff6adad1bce48436 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 18 May 2017 11:02:50 +0100 Subject: [PATCH 04/12] Add key shortcut to toggle the review panel. --- services/web/app/views/project/editor/editor.pug | 1 + .../coffee/ide/editor/directives/aceEditor.coffee | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/services/web/app/views/project/editor/editor.pug b/services/web/app/views/project/editor/editor.pug index e8217a9319..b94eedf3ed 100644 --- a/services/web/app/views/project/editor/editor.pug +++ b/services/web/app/views/project/editor/editor.pug @@ -50,6 +50,7 @@ div.full-size( read-only="!permissions.write", file-name="editor.open_doc_name", on-ctrl-enter="recompileViaKey", + on-ctrl-j="toggleReviewPanel", syntax-validation="settings.syntaxValidation", review-panel="reviewPanel", events-bridge="reviewPanelEventsBridge" diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 2a633e24f8..8ba351d775 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -51,6 +51,7 @@ define [ navigateHighlights: "=" fileName: "=" onCtrlEnter: "=" + onCtrlJ: "=" syntaxValidation: "=" reviewPanel: "=" eventsBridge: "=" @@ -162,6 +163,15 @@ define [ callback() readOnly: true + scope.$watch "onCtrlJ", (callback) -> + if callback? + editor.commands.addCommand + name: "toggle-review-panel", + bindKey: win: "Ctrl-J", mac: "Command-J" + exec: (editor) => + callback() + readOnly: true + # Make '/' work for search in vim mode. editor.showCommandLine = (arg) => if arg == "/" From 957b201fc1238f4b19ec2daaecdc67a0526a215c Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 19 May 2017 15:28:49 +0100 Subject: [PATCH 05/12] Add commenting and track-changes keyboard shortcuts. --- .../web/app/views/project/editor/editor.pug | 2 ++ .../ide/editor/directives/aceEditor.coffee | 26 +++++++++++++++++-- .../controllers/ReviewPanelController.coffee | 11 ++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/editor.pug b/services/web/app/views/project/editor/editor.pug index b94eedf3ed..96b3fd2f6d 100644 --- a/services/web/app/views/project/editor/editor.pug +++ b/services/web/app/views/project/editor/editor.pug @@ -51,6 +51,8 @@ div.full-size( file-name="editor.open_doc_name", on-ctrl-enter="recompileViaKey", on-ctrl-j="toggleReviewPanel", + on-ctrl-shift-c="addNewCommentFromKbdShortcut", + on-ctrl-shift-a="toggleTrackChangesFromKbdShortcut", syntax-validation="settings.syntaxValidation", review-panel="reviewPanel", events-bridge="reviewPanelEventsBridge" diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 8ba351d775..7290771022 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -50,8 +50,10 @@ define [ annotations: "=" navigateHighlights: "=" fileName: "=" - onCtrlEnter: "=" - onCtrlJ: "=" + onCtrlEnter: "=" # Compile + onCtrlJ: "=" # Toggle the review panel + onCtrlShiftC: "=" # Add a new comment + onCtrlShiftA: "=" # Toggle track-changes on/off syntaxValidation: "=" reviewPanel: "=" eventsBridge: "=" @@ -172,6 +174,26 @@ define [ callback() readOnly: true + scope.$watch "onCtrlShiftC", (callback) -> + if callback? + editor.commands.addCommand + name: "add-new-comment", + bindKey: win: "Ctrl-Shift-C", mac: "Command-Shift-C" + exec: (editor) => + selection = editor.getSelection() + if !selection.isEmpty() + callback() + readOnly: true + + scope.$watch "onCtrlShiftA", (callback) -> + if callback? + editor.commands.addCommand + name: "toggle-track-changes", + bindKey: win: "Ctrl-Shift-A", mac: "Command-Shift-A" + exec: (editor) => + callback() + readOnly: true + # Make '/' work for search in vim mode. editor.showCommandLine = (arg) => if arg == "/" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 46eb75aba0..e906460112 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -329,6 +329,11 @@ define [ $scope.$broadcast "comment:start_adding" $scope.toggleReviewPanel() + $scope.addNewCommentFromKbdShortcut = () -> + $scope.$broadcast "comment:start_adding" + if !$scope.ui.reviewPanelOpen + $scope.toggleReviewPanel() + $scope.startNewComment = () -> $scope.$broadcast "comment:select_line" $timeout () -> @@ -479,6 +484,12 @@ define [ event_tracking.sendMB "rp-trackchanges-toggle", { value } else $scope.openTrackChangesUpgradeModal() + + $scope.toggleTrackChangesFromKbdShortcut = () -> + if $scope.editor.wantTrackChanges + $scope.toggleTrackChanges false + else + $scope.toggleTrackChanges true ide.socket.on "toggle-track-changes", (value) -> $scope.$apply () -> From 75c5bf60a8a3576405ca9eb53a5a2b17177dd371 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 19 May 2017 15:51:32 +0100 Subject: [PATCH 06/12] Make hotkeys modal larger. --- .../coffee/ide/hotkeys/controllers/HotkeysController.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/coffee/ide/hotkeys/controllers/HotkeysController.coffee b/services/web/public/coffee/ide/hotkeys/controllers/HotkeysController.coffee index 18d075c094..0ec2c46cf1 100644 --- a/services/web/public/coffee/ide/hotkeys/controllers/HotkeysController.coffee +++ b/services/web/public/coffee/ide/hotkeys/controllers/HotkeysController.coffee @@ -9,6 +9,7 @@ define [ $modal.open { templateUrl: "hotkeysModalTemplate" controller: "HotkeysModalController" + size: "lg" } App.controller "HotkeysModalController", ($scope, $modalInstance)-> From 914e50f3f6145c389e05c0469d834dcbb75e6ca7 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 19 May 2017 15:52:04 +0100 Subject: [PATCH 07/12] Add new review-related hotkeys; re-arrange hotkeys modal. --- .../web/app/views/project/editor/hotkeys.pug | 46 ++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/services/web/app/views/project/editor/hotkeys.pug b/services/web/app/views/project/editor/hotkeys.pug index 15153cdccf..cab8ea09b3 100644 --- a/services/web/app/views/project/editor/hotkeys.pug +++ b/services/web/app/views/project/editor/hotkeys.pug @@ -9,38 +9,38 @@ script(type="text/ng-template", id="hotkeysModalTemplate") .modal-body.modal-hotkeys h3 #{translate("common")} .row - .col-xs-6 + .col-xs-4 .hotkey span.combination {{ctrl}} + F span.description Find (and replace) .hotkey span.combination {{ctrl}} + Enter span.description Compile - .col-xs-6 + .col-xs-4 .hotkey span.combination {{ctrl}} + Z span.description Undo + .col-xs-4 .hotkey span.combination {{ctrl}} + Y span.description Redo - h3 #{translate("navigation")} .row - .col-xs-6 + .col-xs-4 .hotkey span.combination {{ctrl}} + Home span.description Beginning of document + .col-xs-4 .hotkey span.combination {{ctrl}} + End span.description End of document - .col-xs-6 + .col-xs-4 .hotkey span.combination {{ctrl}} + L span.description Go To Line - h3 #{translate("editing")} .row - .col-xs-6 + .col-xs-4 .hotkey span.combination {{ctrl}} + / span.description Toggle Comment @@ -50,16 +50,17 @@ script(type="text/ng-template", id="hotkeysModalTemplate") .hotkey span.combination {{ctrl}} + A span.description Select All - .hotkey - span.combination Tab - span.description Indent Selection - .col-xs-6 + .col-xs-4 .hotkey span.combination Ctrl + U span.description To Uppercase .hotkey span.combination Ctrl + Shift + U span.description To Lowercase + .hotkey + span.combination Tab + span.description Indent Selection + .col-xs-4 .hotkey span.combination {{ctrl}} + B span.description Bold text @@ -69,27 +70,40 @@ script(type="text/ng-template", id="hotkeysModalTemplate") h3 #{translate("autocomplete")} .row - .col-xs-6 + .col-xs-4 .hotkey span.combination Ctrl + Space span.description Autocomplete Menu - - .col-xs-6 + .col-xs-4 .hotkey span.combination Tab / Up / Down span.description Select Candidate - + .col-xs-4 .hotkey span.combination Enter span.description Insert Candidate h3 !{translate("autocomplete_references")} .row - .col-xs-6 + .col-xs-4 .hotkey span.combination Ctrl + Space span.description Search References + h3 #{translate("review")} + .row + .col-xs-4 + .hotkey + span.combination {{ctrl}} + J + span.description Toggle review panel + .col-xs-4 + .hotkey + span.combination {{ctrl}} + Shift + A + span.description Toggle track changes + .col-xs-4 + .hotkey + span.combination {{ctrl}} + Shift + C + span.description Add a comment .modal-footer button.btn.btn-default( From 58ad62c4139f968e6c2fc1abd6b76dc36033a1d0 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 19 May 2017 16:57:51 +0100 Subject: [PATCH 08/12] Relayout entries when commenting. --- .../web/public/coffee/ide/editor/directives/aceEditor.coffee | 4 +--- .../review-panel/controllers/ReviewPanelController.coffee | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 7290771022..b8cfe53806 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -180,9 +180,7 @@ define [ name: "add-new-comment", bindKey: win: "Ctrl-Shift-C", mac: "Command-Shift-C" exec: (editor) => - selection = editor.getSelection() - if !selection.isEmpty() - callback() + callback() readOnly: true scope.$watch "onCtrlShiftA", (callback) -> diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index a8b48247f3..dc395bd5b6 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -380,9 +380,12 @@ define [ $scope.toggleReviewPanel() $scope.addNewCommentFromKbdShortcut = () -> - $scope.$broadcast "comment:start_adding" + $scope.$broadcast "comment:select_line" if !$scope.ui.reviewPanelOpen $scope.toggleReviewPanel() + $timeout () -> + $scope.$broadcast "review-panel:layout" + $scope.$broadcast "comment:start_adding" $scope.startNewComment = () -> $scope.$broadcast "comment:select_line" From 0c8cacc2221086b9097aafa357fdb8283921c3a0 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 19 May 2017 17:08:52 +0100 Subject: [PATCH 09/12] Highlight review panel splitter when hovered. --- services/web/public/stylesheets/app/editor/review-panel.less | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index dc436b5600..01b2066921 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -972,7 +972,8 @@ opacity: 0.5; color: @rp-highlight-blue; z-index: 1; - cursor: e-resize; + background-color: transparent; + transition: background 0.1s; .rp-size-expanded & { display: block; @@ -980,8 +981,8 @@ &:hover, &:focus { - opacity: 1; color: @rp-highlight-blue; + background-color: #FFF; } &::after { From 35c90daa8bb4027ad2676bd3e56bd7b951512c5f Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 22 May 2017 11:07:57 +0100 Subject: [PATCH 10/12] Also show the toggler when the review panel is minimized. --- .../web/public/stylesheets/app/editor/review-panel.less | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 01b2066921..a14b252c9e 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -964,7 +964,7 @@ } .review-panel-toggler { - display: none; + // display: none; position: absolute; top: 0; bottom: 0; @@ -976,7 +976,9 @@ transition: background 0.1s; .rp-size-expanded & { - display: block; + &::after { + content: "\f105"; + } } &:hover, @@ -986,7 +988,7 @@ } &::after { - content: "\f105"; + content: "\f104"; font-family: FontAwesome; line-height: 1; -webkit-font-smoothing: antialiased; From 8dfb91fa6fe09142657a0810018c34cdd2d12e93 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 22 May 2017 11:11:26 +0100 Subject: [PATCH 11/12] Blur toggler after clicking. --- services/web/app/views/project/editor/review-panel.pug | 2 +- .../ide/review-panel/controllers/ReviewPanelController.coffee | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index c1c1605254..3707af11eb 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -31,7 +31,7 @@ |  #{translate("add_comment")} a.review-panel-toggler( href - ng-click="toggleReviewPanel();" + ng-click="handleTogglerClick($event);" ) .review-panel-toolbar resolved-comments-dropdown( diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index dc395bd5b6..fe4f8871f0 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -375,6 +375,10 @@ define [ else bulkReject() + $scope.handleTogglerClick = (e) -> + e.target.blur() + $scope.toggleReviewPanel() + $scope.addNewComment = () -> $scope.$broadcast "comment:start_adding" $scope.toggleReviewPanel() From 17acede8cea780908714d0b64d40dfc8ee13c3aa Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 26 May 2017 09:58:12 +0100 Subject: [PATCH 12/12] Control visibility when there are no entries. --- .../web/public/stylesheets/app/editor/review-panel.less | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index a14b252c9e..861360b526 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -964,7 +964,7 @@ } .review-panel-toggler { - // display: none; + display: none; position: absolute; top: 0; bottom: 0; @@ -975,6 +975,11 @@ background-color: transparent; transition: background 0.1s; + .rp-size-mini &, + .rp-size-expanded & { + display: block; + } + .rp-size-expanded & { &::after { content: "\f105";