From 4202b9c7176a2dc8bfd542fc7dcee6a13044d601 Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Mon, 16 Jul 2018 13:55:07 +0100 Subject: [PATCH 1/7] Use hard-coded feature flag for rich text --- .../web/app/coffee/Features/Project/ProjectController.coffee | 3 ++- services/web/app/coffee/infrastructure/Features.coffee | 4 ++++ services/web/app/views/project/editor.pug | 1 + services/web/app/views/project/editor/editor.pug | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index e2c71a956e..026f55156b 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -28,6 +28,7 @@ Modules = require '../../infrastructure/Modules' ProjectEntityHandler = require './ProjectEntityHandler' crypto = require 'crypto' { V1ConnectionError } = require '../Errors/Errors' +Features = require('../../Infrastructure/Features') module.exports = ProjectController = @@ -344,7 +345,7 @@ module.exports = ProjectController = themes: THEME_LIST maxDocLength: Settings.max_doc_length useV2History: !!project.overleaf?.history?.display - showRichText: req.query?.rt == 'true' + richTextEnabled: Features.richTextEnabled() showTestControls: req.query?.tc == 'true' || user.isAdmin showPublishModal: req.query?.pm == 'true' timer.done() diff --git a/services/web/app/coffee/infrastructure/Features.coffee b/services/web/app/coffee/infrastructure/Features.coffee index 311d8943c9..52b27a73fd 100644 --- a/services/web/app/coffee/infrastructure/Features.coffee +++ b/services/web/app/coffee/infrastructure/Features.coffee @@ -4,6 +4,10 @@ module.exports = Features = externalAuthenticationSystemUsed: -> Settings.ldap? or Settings.saml? or Settings.overleaf?.oauth? + richTextEnabled: -> + isEnabled = true # Switch to false to disable + Settings.overleaf? and isEnabled + hasFeature: (feature) -> switch feature when 'homepage' diff --git a/services/web/app/views/project/editor.pug b/services/web/app/views/project/editor.pug index 190ba57cf6..6d7d18687d 100644 --- a/services/web/app/views/project/editor.pug +++ b/services/web/app/views/project/editor.pug @@ -133,6 +133,7 @@ block requirejs window.maxDocLength = #{maxDocLength}; window.trackChangesState = data.trackChangesState; window.wikiEnabled = #{!!(settings.apis.wiki && settings.apis.wiki.url)}; + window.richTextEnabled = #{richTextEnabled} window.requirejs = { "paths" : { "moment": "libs/#{lib('moment')}", diff --git a/services/web/app/views/project/editor/editor.pug b/services/web/app/views/project/editor/editor.pug index 63f3e78c5b..69a874cc05 100644 --- a/services/web/app/views/project/editor/editor.pug +++ b/services/web/app/views/project/editor/editor.pug @@ -43,7 +43,7 @@ div.full-size( ace-editor="editor", ng-if="!editor.showRichText", ng-show="!!editor.sharejs_doc && !editor.opening", - style=showRichText ? "top: 32px" : "", + style=richTextEnabled ? "top: 32px" : "", theme="settings.theme", keybindings="settings.mode", font-size="settings.fontSize", From 85313f1b5a696b88ac9be6538c33201cc2c109a2 Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Mon, 16 Jul 2018 13:55:44 +0100 Subject: [PATCH 2/7] Check if rich text is enabled before using stored mode --- .../web/public/coffee/ide/editor/EditorManager.coffee | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 26ddc7dd33..5130e4796d 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -6,7 +6,7 @@ define [ "ide/editor/controllers/SavingNotificationController" ], (Document) -> class EditorManager - constructor: (@ide, @$scope, localStorage) -> + constructor: (@ide, @$scope, @localStorage) -> @$scope.editor = { sharejs_doc: null open_doc_id: null @@ -14,7 +14,7 @@ define [ opening: true trackChanges: false wantTrackChanges: false - showRichText: localStorage("editor.mode.#{@$scope.project_id}") == 'rich-text' + showRichText: @showRichText() } @$scope.$on "entity:selected", (event, entity) => @@ -41,6 +41,11 @@ define [ return if !value? @_syncTrackChangesState(@$scope.editor.sharejs_doc) + showRichText: () -> + if !window.richTextEnabled + return false + @localStorage("editor.mode.#{@$scope.project_id}") == 'rich-text' + autoOpenDoc: () -> open_doc_id = @ide.localStorage("doc.open_id.#{@$scope.project_id}") or From 9cd3f32365950f210a4ec8c2c7935e09a9538cb4 Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Mon, 16 Jul 2018 14:20:53 +0100 Subject: [PATCH 3/7] Use hasFeature function instead of new standalone function --- .../app/coffee/Features/Project/ProjectController.coffee | 2 +- services/web/app/coffee/infrastructure/Features.coffee | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 026f55156b..301a1ed916 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -345,7 +345,7 @@ module.exports = ProjectController = themes: THEME_LIST maxDocLength: Settings.max_doc_length useV2History: !!project.overleaf?.history?.display - richTextEnabled: Features.richTextEnabled() + richTextEnabled: Features.hasFeature('rich-text') showTestControls: req.query?.tc == 'true' || user.isAdmin showPublishModal: req.query?.pm == 'true' timer.done() diff --git a/services/web/app/coffee/infrastructure/Features.coffee b/services/web/app/coffee/infrastructure/Features.coffee index 52b27a73fd..bdb68b9480 100644 --- a/services/web/app/coffee/infrastructure/Features.coffee +++ b/services/web/app/coffee/infrastructure/Features.coffee @@ -4,10 +4,6 @@ module.exports = Features = externalAuthenticationSystemUsed: -> Settings.ldap? or Settings.saml? or Settings.overleaf?.oauth? - richTextEnabled: -> - isEnabled = true # Switch to false to disable - Settings.overleaf? and isEnabled - hasFeature: (feature) -> switch feature when 'homepage' @@ -26,5 +22,8 @@ module.exports = Features = return !Settings.overleaf? when 'affiliations' return Settings?.apis?.v1?.url? + when 'rich-text' + isEnabled = false # Switch to false to disable + Settings.overleaf? and isEnabled else throw new Error("unknown feature: #{feature}") From 823e12e4a874da73616c803f9a58b9869e298702 Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Mon, 16 Jul 2018 14:21:10 +0100 Subject: [PATCH 4/7] Fix tests to add new Features dependency --- .../web/test/unit/coffee/Project/ProjectControllerTests.coffee | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee b/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee index bfd67e42d2..3f81c9d62c 100644 --- a/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee +++ b/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee @@ -72,6 +72,8 @@ describe "ProjectController", -> @Modules = hooks: fire: sinon.stub() + @Features = + hasFeature: sinon.stub() @ProjectController = SandboxedModule.require modulePath, requires: "settings-sharelatex":@settings "logger-sharelatex": @@ -102,6 +104,7 @@ describe "ProjectController", -> "../../infrastructure/Modules": @Modules "./ProjectEntityHandler": @ProjectEntityHandler "../Errors/Errors": Errors + "../../Infrastructure/Features": @Features @projectName = "£12321jkj9ujkljds" @req = From 62f69a4bcd5ff7c18d1528b03aabe420b8d09916 Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Mon, 16 Jul 2018 15:53:28 +0100 Subject: [PATCH 5/7] Fix case sensitivity --- .../web/app/coffee/Features/Project/ProjectController.coffee | 2 +- .../web/test/unit/coffee/Project/ProjectControllerTests.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 301a1ed916..8efdf9f218 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -28,7 +28,7 @@ Modules = require '../../infrastructure/Modules' ProjectEntityHandler = require './ProjectEntityHandler' crypto = require 'crypto' { V1ConnectionError } = require '../Errors/Errors' -Features = require('../../Infrastructure/Features') +Features = require('../../infrastructure/Features') module.exports = ProjectController = diff --git a/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee b/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee index 3f81c9d62c..1acd1c8128 100644 --- a/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee +++ b/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee @@ -104,7 +104,7 @@ describe "ProjectController", -> "../../infrastructure/Modules": @Modules "./ProjectEntityHandler": @ProjectEntityHandler "../Errors/Errors": Errors - "../../Infrastructure/Features": @Features + "../../infrastructure/Features": @Features @projectName = "£12321jkj9ujkljds" @req = From ffe3bc297713713d560ede4852ff6359dd81e881 Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Tue, 17 Jul 2018 17:19:42 +0100 Subject: [PATCH 6/7] Switch review panel to use richTextEnabled variable --- services/web/app/views/project/editor/review-panel.pug | 2 +- 1 file changed, 1 insertion(+), 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 f7650a2328..8328d313e5 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -1,4 +1,4 @@ -#review-panel(style=showRichText ? "top: 32px" : "") +#review-panel(style=richTextEnabled ? "top: 32px" : "") .rp-in-editor-widgets a.rp-track-changes-indicator( href From d36d3f2a0eaaf05612c187cecfbb3c5696c570df Mon Sep 17 00:00:00 2001 From: Alasdair Smith <ali@alasdairsmith.co.uk> Date: Tue, 17 Jul 2018 17:33:41 +0100 Subject: [PATCH 7/7] Actually enable rich text --- services/web/app/coffee/infrastructure/Features.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/infrastructure/Features.coffee b/services/web/app/coffee/infrastructure/Features.coffee index bdb68b9480..ffc60604e6 100644 --- a/services/web/app/coffee/infrastructure/Features.coffee +++ b/services/web/app/coffee/infrastructure/Features.coffee @@ -23,7 +23,7 @@ module.exports = Features = when 'affiliations' return Settings?.apis?.v1?.url? when 'rich-text' - isEnabled = false # Switch to false to disable + isEnabled = true # Switch to false to disable Settings.overleaf? and isEnabled else throw new Error("unknown feature: #{feature}")