mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
added dropbox in left menu
This commit is contained in:
parent
b428a8fb7d
commit
5fa83fb2b9
6 changed files with 112 additions and 0 deletions
|
@ -60,6 +60,7 @@ block content
|
||||||
include ./editor/binary-file
|
include ./editor/binary-file
|
||||||
include ./editor/track-changes
|
include ./editor/track-changes
|
||||||
include ./editor/publish-template
|
include ./editor/publish-template
|
||||||
|
include ./editor/dropbox
|
||||||
|
|
||||||
.ui-layout-east
|
.ui-layout-east
|
||||||
include ./editor/chat
|
include ./editor/chat
|
||||||
|
|
45
services/web/app/views/project/editor/dropbox.jade
Normal file
45
services/web/app/views/project/editor/dropbox.jade
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
script(type="text/ng-template", id="dropboxModalTemplate")
|
||||||
|
.modal-header
|
||||||
|
button.close(
|
||||||
|
type="button"
|
||||||
|
data-dismiss="modal"
|
||||||
|
ng-click="cancel()"
|
||||||
|
) ×
|
||||||
|
h3 Dropbox link
|
||||||
|
.modal-body.modal-body-share
|
||||||
|
|
||||||
|
div(ng-show="dbState.gotLinkStatus")
|
||||||
|
div(ng-hide="dbState.userIsLinkedToDropbox || !dbState.hasDropboxFeature")
|
||||||
|
|
||||||
|
span(ng-hide="dbState.startedLinkProcess") Your account is not linked to dropbox
|
||||||
|
|
|
||||||
|
a(ng-click="linkToDropbox()").btn.btn-info Update Dropbox Settings
|
||||||
|
|
||||||
|
p.small.text-center(ng-show="dbState.startedLinkProcess")
|
||||||
|
| Please refresh this page after starting your free trial.
|
||||||
|
|
||||||
|
|
||||||
|
div(ng-show="dbState.hasDropboxFeature && dbState.userIsLinkedToDropbox")
|
||||||
|
progressbar.progress-striped.active(value='percentageLeftTillNextPoll', type="info")
|
||||||
|
span
|
||||||
|
strong {{dbState.minsTillNextPoll}} minutes
|
||||||
|
span until dropbox is next checked for changes.
|
||||||
|
|
||||||
|
div.text-center(ng-hide="dbState.hasDropboxFeature")
|
||||||
|
p You need to upgrade your account to link to dropbox.
|
||||||
|
p
|
||||||
|
a.btn.btn-info(ng-click="startFreeTrial('dropbox')") Start Free Trial
|
||||||
|
p.small(ng-show="startedFreeTrial")
|
||||||
|
| Please refresh this page after starting your free trial.
|
||||||
|
|
||||||
|
div(ng-hide="dbState.gotLinkStatus")
|
||||||
|
span.small checking dropbox status
|
||||||
|
i.fa.fa-refresh.fa-spin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.modal-footer()
|
||||||
|
button.btn.btn-default(
|
||||||
|
ng-click="cancel()",
|
||||||
|
)
|
||||||
|
span Dismiss
|
|
@ -39,6 +39,15 @@ aside#left-menu.full-size(
|
||||||
i.fa.fa-external-link.fa-fw
|
i.fa.fa-external-link.fa-fw
|
||||||
| Publish as Template
|
| Publish as Template
|
||||||
|
|
||||||
|
|
||||||
|
span(ng-controller="DropboxController")
|
||||||
|
h4() Sync
|
||||||
|
ul.list-unstyled.nav()
|
||||||
|
li
|
||||||
|
a(ng-click="openDropboxModal()")
|
||||||
|
i.fa.fa-dropbox.fa-fw
|
||||||
|
| Dropbox
|
||||||
|
|
||||||
h4 Settings
|
h4 Settings
|
||||||
form.settings(ng-controller="SettingsController")
|
form.settings(ng-controller="SettingsController")
|
||||||
.containter-fluid
|
.containter-fluid
|
||||||
|
|
|
@ -12,6 +12,7 @@ define [
|
||||||
"ide/share/index"
|
"ide/share/index"
|
||||||
"ide/chat/index"
|
"ide/chat/index"
|
||||||
"ide/templates/index"
|
"ide/templates/index"
|
||||||
|
"ide/dropbox/index"
|
||||||
"ide/directives/layout"
|
"ide/directives/layout"
|
||||||
"ide/services/ide"
|
"ide/services/ide"
|
||||||
"directives/focus"
|
"directives/focus"
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
define [
|
||||||
|
"base"
|
||||||
|
"ide/permissions/PermissionsManager"
|
||||||
|
], (App, PermissionsManager) ->
|
||||||
|
|
||||||
|
POLLING_INTERVAL = 15
|
||||||
|
ONE_MIN_MILI = 1000 * 60
|
||||||
|
|
||||||
|
cachedState =
|
||||||
|
gotLinkStatus: false
|
||||||
|
startedLinkProcess: false
|
||||||
|
userIsLinkedToDropbox: false
|
||||||
|
hasDropboxFeature: false
|
||||||
|
|
||||||
|
|
||||||
|
App.controller "DropboxController", ($scope, $modal, ide) ->
|
||||||
|
$scope.openDropboxModal = () ->
|
||||||
|
|
||||||
|
$modal.open {
|
||||||
|
templateUrl: "dropboxModalTemplate"
|
||||||
|
controller: "DropboxModalController"
|
||||||
|
scope:$scope
|
||||||
|
}
|
||||||
|
|
||||||
|
App.controller "DropboxModalController", ($scope, $modalInstance, ide, $timeout) ->
|
||||||
|
user_id = ide.$scope.user.id
|
||||||
|
|
||||||
|
$scope.dbState = cachedState
|
||||||
|
$scope.dbState.hasDropboxFeature = $scope.project.features.dropbox
|
||||||
|
|
||||||
|
calculatePollTime = ->
|
||||||
|
ide.socket.emit "getLastTimePollHappned", (err, lastTimePollHappened)=>
|
||||||
|
milisecondsSinceLastPoll = new Date().getTime() - lastTimePollHappened
|
||||||
|
roundedMinsSinceLastPoll = Math.round(milisecondsSinceLastPoll / ONE_MIN_MILI)
|
||||||
|
|
||||||
|
$scope.dbState.minsTillNextPoll = POLLING_INTERVAL - roundedMinsSinceLastPoll
|
||||||
|
$scope.dbState.percentageLeftTillNextPoll = 100 - ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100)
|
||||||
|
$timeout calculatePollTime, 60 * 1000
|
||||||
|
|
||||||
|
ide.socket.emit "getUserDropboxLinkStatus", user_id, (err, status)=>
|
||||||
|
if status.registered
|
||||||
|
calculatePollTime()
|
||||||
|
$scope.dbState.userIsLinkedToDropbox = true
|
||||||
|
$scope.dbState.gotLinkStatus = true
|
||||||
|
cachedState = $scope.dbState
|
||||||
|
|
||||||
|
$scope.linkToDropbox = ->
|
||||||
|
window.open("/user/settings#dropboxSettings")
|
||||||
|
$scope.startedLinkProcess = true
|
||||||
|
|
||||||
|
$scope.cancel = () ->
|
||||||
|
$modalInstance.dismiss()
|
4
services/web/public/coffee/ide/dropbox/index.coffee
Normal file
4
services/web/public/coffee/ide/dropbox/index.coffee
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
define [
|
||||||
|
"ide/dropbox/controllers/DropboxController"
|
||||||
|
], () ->
|
||||||
|
|
Loading…
Reference in a new issue