diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index 54f2911bc7..34bfcbbadb 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -162,6 +162,8 @@ module.exports = (grunt) -> moduleCompileServerTasks = [] moduleCompileUnitTestTasks = [] moduleUnitTestTasks = [] + moduleCompileClientTasks = [] + moduleIdeClientSideIncludes = [] if fs.existsSync "./modules" for module in fs.readdirSync "./modules" if fs.existsSync "./modules/#{module}/index.coffee" @@ -198,6 +200,17 @@ module.exports = (grunt) -> moduleCompileUnitTestTasks.push "coffee:module_#{module}_unit_tests" moduleUnitTestTasks.push "mochaTest:module_#{module}_unit" + + config.coffee["module_#{module}_client_ide"] = { + expand: true, + flatten: false, + cwd: "modules/#{module}/public/coffee/ide", + src: ['**/*.coffee'], + dest: "public/js/ide/#{module}", + ext: '.js' + } + moduleCompileClientTasks.push "coffee:module_#{module}_client_ide" + moduleIdeClientSideIncludes.push "ide/#{module}/index" grunt.initConfig config @@ -214,8 +227,14 @@ module.exports = (grunt) -> grunt.registerTask 'compile:modules:server', 'Compile all the modules', moduleCompileServerTasks grunt.registerTask 'compile:modules:unit_tests', 'Compile all the modules unit tests', moduleCompileUnitTestTasks + grunt.registerTask 'compile:modules:client', 'Compile all the module client side code', moduleCompileClientTasks + grunt.registerTask 'compile:modules:inject_clientside_includes', () -> + content = fs.readFileSync("public/js/ide.js").toString() + content = content.replace(/"__IDE_CLIENTSIDE_INCLUDES__"/g, moduleIdeClientSideIncludes.map((i) -> "\"#{i}\"").join(", ")) + fs.writeFileSync "public/js/ide.js", content + grunt.registerTask 'compile:server', 'Compile the server side coffee script', ['clean:app', 'coffee:app', 'coffee:app_dir', 'compile:modules:server'] - grunt.registerTask 'compile:client', 'Compile the client side coffee script', ['coffee:client', 'coffee:sharejs', 'wrap_sharejs'] + grunt.registerTask 'compile:client', 'Compile the client side coffee script', ['coffee:client', 'coffee:sharejs', 'wrap_sharejs', "compile:modules:client", 'compile:modules:inject_clientside_includes'] grunt.registerTask 'compile:css', 'Compile the less files to css', ['less'] grunt.registerTask 'compile:minify', 'Concat and minify the client side js', ['requirejs'] grunt.registerTask 'compile:unit_tests', 'Compile the unit tests', ['clean:unit_tests', 'coffee:unit_tests'] diff --git a/services/web/app/views/project/editor/left-menu.jade b/services/web/app/views/project/editor/left-menu.jade index 8b4d46fc4e..d2c2fd4687 100644 --- a/services/web/app/views/project/editor/left-menu.jade +++ b/services/web/app/views/project/editor/left-menu.jade @@ -46,14 +46,15 @@ aside#left-menu.full-size( i.fa.fa-external-link.fa-fw |    #{translate("publish_as_template")} - + h4() #{translate("sync")} span(ng-controller="DropboxController", ng-show="permissions.admin") - h4() #{translate("sync")} ul.list-unstyled.nav() li a(ng-click="openDropboxModal()") i.fa.fa-dropbox.fa-fw |    Dropbox + + !{moduleIncludes("editorLeftMenu", locals)} h4(ng-show="!anonymous") #{translate("settings")} form.settings(ng-controller="SettingsController", ng-show="!anonymous") diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index fedf63c4b7..0e9aa7ff0f 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -17,6 +17,7 @@ define [ "ide/hotkeys/index" "ide/directives/layout" "ide/services/ide" + "__IDE_CLIENTSIDE_INCLUDES__" "analytics/AbTestingManager" "directives/focus" "directives/fineUpload"