ide.coffee 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. define [
  2. "base"
  3. "ide/file-tree/FileTreeManager"
  4. "ide/connection/ConnectionManager"
  5. "ide/editor/EditorManager"
  6. "ide/online-users/OnlineUsersManager"
  7. "ide/track-changes/TrackChangesManager"
  8. "ide/permissions/PermissionsManager"
  9. "ide/pdf/PdfManager"
  10. "ide/binary-files/BinaryFilesManager"
  11. "ide/settings/index"
  12. "ide/share/index"
  13. "ide/chat/index"
  14. "ide/clone/index"
  15. "ide/templates/index"
  16. "ide/dropbox/index"
  17. "ide/hotkeys/index"
  18. "ide/directives/layout"
  19. "ide/services/ide"
  20. "directives/focus"
  21. "directives/fineUpload"
  22. "directives/scroll"
  23. "directives/onEnter"
  24. "directives/stopPropagation"
  25. "directives/rightClick"
  26. "filters/formatDate"
  27. "main/event-tracking"
  28. ], (
  29. App
  30. FileTreeManager
  31. ConnectionManager
  32. EditorManager
  33. OnlineUsersManager
  34. TrackChangesManager
  35. PermissionsManager
  36. PdfManager
  37. BinaryFilesManager
  38. ) ->
  39. App.controller "IdeController", ["$scope", "$timeout", "ide", ($scope, $timeout, ide) ->
  40. # Don't freak out if we're already in an apply callback
  41. $scope.$originalApply = $scope.$apply
  42. $scope.$apply = (fn = () ->) ->
  43. phase = @$root.$$phase
  44. if (phase == '$apply' || phase == '$digest')
  45. fn()
  46. else
  47. this.$originalApply(fn);
  48. $scope.state = {
  49. loading: true
  50. load_progress: 40
  51. }
  52. $scope.ui = {
  53. leftMenuShown: false
  54. view: "editor"
  55. chatOpen: false
  56. pdfLayout: 'sideBySide'
  57. }
  58. $scope.user = window.user
  59. $scope.settings = window.userSettings
  60. $scope.anonymous = window.anonymous
  61. $scope.chat = {}
  62. $scope.startFreeTrial = (source) ->
  63. ga?('send', 'event', 'subscription-funnel', 'upgraded-free-trial', source)
  64. window.open("/user/subscription/new?planCode=student_free_trial")
  65. $scope.startedFreeTrial = true
  66. window._ide = ide
  67. ide.project_id = $scope.project_id = window.project_id
  68. ide.$scope = $scope
  69. ide.connectionManager = new ConnectionManager(ide, $scope)
  70. ide.fileTreeManager = new FileTreeManager(ide, $scope)
  71. ide.editorManager = new EditorManager(ide, $scope)
  72. ide.onlineUsersManager = new OnlineUsersManager(ide, $scope)
  73. ide.trackChangesManager = new TrackChangesManager(ide, $scope)
  74. ide.pdfManager = new PdfManager(ide, $scope)
  75. ide.permissionsManager = new PermissionsManager(ide, $scope)
  76. ide.binaryFilesManager = new BinaryFilesManager(ide, $scope)
  77. inited = false
  78. $scope.$on "project:joined", () ->
  79. return if inited
  80. inited = true
  81. if $scope.project.deletedByExternalDataSource
  82. ide.showGenericMessageModal("Project Renamed or Deleted", """
  83. This project has either been renamed or deleted by an external data source such as Dropbox.
  84. We don't want to delete your data on ShareLaTeX, so this project still contains your history and collaborators.
  85. If the project has been renamed please look in your project list for a new project under the new name.
  86. """)
  87. DARK_THEMES = [
  88. "ambiance", "chaos", "clouds_midnight", "cobalt", "idle_fingers",
  89. "merbivore", "merbivore_soft", "mono_industrial", "monokai",
  90. "pastel_on_dark", "solarized_dark", "terminal", "tomorrow_night",
  91. "tomorrow_night_blue", "tomorrow_night_bright", "tomorrow_night_eighties",
  92. "twilight", "vibrant_ink"
  93. ]
  94. $scope.darkTheme = false
  95. $scope.$watch "settings.theme", (theme) ->
  96. if theme in DARK_THEMES
  97. $scope.darkTheme = true
  98. else
  99. $scope.darkTheme = false
  100. ]
  101. angular.bootstrap(document.body, ["SharelatexApp"])