From 9177544ed9f74aaa1e355854952634014d2681c7 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Thu, 6 Oct 2016 11:51:24 +0100 Subject: [PATCH] add left menu for syntax validator --- .../app/coffee/Features/Project/ProjectController.coffee | 2 ++ .../web/app/coffee/Features/User/UserController.coffee | 2 ++ services/web/app/coffee/models/User.coffee | 1 + services/web/app/views/project/editor/editor.jade | 1 + services/web/app/views/project/editor/left-menu.jade | 9 +++++++++ .../public/coffee/ide/editor/directives/aceEditor.coffee | 6 ++++++ .../ide/settings/controllers/SettingsController.coffee | 4 ++++ 7 files changed, 25 insertions(+) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index c1fb698b9d..7d6001d55f 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -262,6 +262,7 @@ module.exports = ProjectController = fontSize : user.ace.fontSize autoComplete: user.ace.autoComplete pdfViewer : user.ace.pdfViewer + syntaxValidation: user.ace.syntaxValidation } privilegeLevel: privilegeLevel chatUrl: Settings.apis.chat.url @@ -323,6 +324,7 @@ defaultSettingsForAnonymousUser = (user_id)-> autoComplete: true spellCheckLanguage: "" pdfViewer: "" + syntaxValidation: true subscription: freeTrial: allowed: true diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index 32d6fa79cb..60468eef94 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -56,6 +56,8 @@ module.exports = UserController = user.ace.spellCheckLanguage = req.body.spellCheckLanguage if req.body.pdfViewer? user.ace.pdfViewer = req.body.pdfViewer + if req.body.syntaxValidation? + user.ace.syntaxValidation = req.body.syntaxValidation user.save (err)-> newEmail = req.body.email?.trim().toLowerCase() if !newEmail? or newEmail == user.email diff --git a/services/web/app/coffee/models/User.coffee b/services/web/app/coffee/models/User.coffee index ba0a862fd2..3b29936ab2 100644 --- a/services/web/app/coffee/models/User.coffee +++ b/services/web/app/coffee/models/User.coffee @@ -26,6 +26,7 @@ UserSchema = new Schema autoComplete: {type : Boolean, default: true} spellCheckLanguage : {type : String, default: "en"} pdfViewer : {type : String, default: "pdfjs"} + syntaxValidation : {type : Boolean, default: true} } features : { collaborators: { type:Number, default: Settings.defaultFeatures.collaborators } diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index ea5efff304..07208a6642 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -36,6 +36,7 @@ div.full-size( annotations="pdf.logEntryAnnotations[editor.open_doc_id]", read-only="!permissions.write", on-ctrl-enter="recompileViaKey" + syntax-validation="settings.syntaxValidation" ) .ui-layout-east diff --git a/services/web/app/views/project/editor/left-menu.jade b/services/web/app/views/project/editor/left-menu.jade index 695e24d05a..20b0905abf 100644 --- a/services/web/app/views/project/editor/left-menu.jade +++ b/services/web/app/views/project/editor/left-menu.jade @@ -105,6 +105,15 @@ aside#left-menu.full-size( ng-options="o.v as o.n for o in [{ n: 'On', v: true }, { n: 'Off', v: false }]" ) + if (user.betaProgram) + .form-controls + label(for="syntaxValidation") #{translate("syntax_validation")} + select( + name="syntaxValidation" + ng-model="settings.syntaxValidation" + ng-options="o.v as o.n for o in [{ n: 'On', v: true }, { n: 'Off', v: false }]" + ) + .form-controls label(for="theme") #{translate("theme")} select( diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 0e8878e7b9..bf19e1b29a 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -43,6 +43,7 @@ define [ annotations: "=" navigateHighlights: "=", onCtrlEnter: "=" + syntaxValidation: "=" } link: (scope, element, attrs) -> # Don't freak out if we're already in an apply callback @@ -188,6 +189,11 @@ define [ scope.$watch "readOnly", (value) -> editor.setReadOnly !!value + scope.$watch "syntaxValidation", (value) -> + console.log "change syntaxValidation to ", value + session = editor.getSession() + session.setOption("useWorker", value); + editor.setOption("scrollPastEnd", true) resetSession = () -> diff --git a/services/web/public/coffee/ide/settings/controllers/SettingsController.coffee b/services/web/public/coffee/ide/settings/controllers/SettingsController.coffee index c032ca20ce..29bc8e979c 100644 --- a/services/web/public/coffee/ide/settings/controllers/SettingsController.coffee +++ b/services/web/public/coffee/ide/settings/controllers/SettingsController.coffee @@ -28,6 +28,10 @@ define [ if pdfViewer != oldPdfViewer settings.saveSettings({pdfViewer: pdfViewer}) + $scope.$watch "settings.syntaxValidation", (syntaxValidation, oldSyntaxValidation) => + if syntaxValidation != oldSyntaxValidation + settings.saveProjectSettings({syntaxValidation: syntaxValidation}) + $scope.$watch "project.spellCheckLanguage", (language, oldLanguage) => return if @ignoreUpdates if oldLanguage? and language != oldLanguage