From d06848d109da95f1f389d6a84cee8bb6abec9a0e Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Thu, 17 Jul 2014 12:02:56 +0100 Subject: [PATCH 1/4] fixed null on description in client --- .../coffee/ide/templates/controllers/TemplatesController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee b/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee index de133da39f..9975f8c16e 100644 --- a/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee +++ b/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee @@ -39,7 +39,7 @@ define [ $scope.$watch $scope.problemTalkingToTemplateApi, refreshPublishedStatus $scope.updateProjectDescription = -> - description = $scope.template.description + description = $scope.templateDetails.description if description? ide.socket.emit 'updateProjectDescription', description, (err) => if err? then return problemTalkingToTemplateApi() From 5fa83fb2b928e5813756f7f9ea3cc7ee735d95a4 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Thu, 17 Jul 2014 14:20:29 +0100 Subject: [PATCH 2/4] added dropbox in left menu --- services/web/app/views/project/editor.jade | 1 + .../web/app/views/project/editor/dropbox.jade | 45 ++++++++++++++++ .../app/views/project/editor/left-menu.jade | 9 ++++ services/web/public/coffee/ide.coffee | 1 + .../controllers/DropboxController.coffee | 52 +++++++++++++++++++ .../public/coffee/ide/dropbox/index.coffee | 4 ++ 6 files changed, 112 insertions(+) create mode 100644 services/web/app/views/project/editor/dropbox.jade create mode 100644 services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee create mode 100644 services/web/public/coffee/ide/dropbox/index.coffee diff --git a/services/web/app/views/project/editor.jade b/services/web/app/views/project/editor.jade index 8396d4ddd8..7801af262b 100644 --- a/services/web/app/views/project/editor.jade +++ b/services/web/app/views/project/editor.jade @@ -60,6 +60,7 @@ block content include ./editor/binary-file include ./editor/track-changes include ./editor/publish-template + include ./editor/dropbox .ui-layout-east include ./editor/chat diff --git a/services/web/app/views/project/editor/dropbox.jade b/services/web/app/views/project/editor/dropbox.jade new file mode 100644 index 0000000000..1f3153d929 --- /dev/null +++ b/services/web/app/views/project/editor/dropbox.jade @@ -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 diff --git a/services/web/app/views/project/editor/left-menu.jade b/services/web/app/views/project/editor/left-menu.jade index 9aa630cd3f..ce06f82dcc 100644 --- a/services/web/app/views/project/editor/left-menu.jade +++ b/services/web/app/views/project/editor/left-menu.jade @@ -39,6 +39,15 @@ aside#left-menu.full-size( i.fa.fa-external-link.fa-fw |   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 form.settings(ng-controller="SettingsController") .containter-fluid diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index aedac82ec6..7e311119a7 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -12,6 +12,7 @@ define [ "ide/share/index" "ide/chat/index" "ide/templates/index" + "ide/dropbox/index" "ide/directives/layout" "ide/services/ide" "directives/focus" diff --git a/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee b/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee new file mode 100644 index 0000000000..444aa3eaf2 --- /dev/null +++ b/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee @@ -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() diff --git a/services/web/public/coffee/ide/dropbox/index.coffee b/services/web/public/coffee/ide/dropbox/index.coffee new file mode 100644 index 0000000000..6041320724 --- /dev/null +++ b/services/web/public/coffee/ide/dropbox/index.coffee @@ -0,0 +1,4 @@ +define [ + "ide/dropbox/controllers/DropboxController" +], () -> + From c429bd1f447161ffd1edae013778746cf7a2429a Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Thu, 17 Jul 2014 15:08:12 +0100 Subject: [PATCH 3/4] improved the dropbox progress bar --- services/web/app/views/project/editor/dropbox.jade | 2 +- .../coffee/ide/dropbox/controllers/DropboxController.coffee | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/dropbox.jade b/services/web/app/views/project/editor/dropbox.jade index 1f3153d929..40d2cce851 100644 --- a/services/web/app/views/project/editor/dropbox.jade +++ b/services/web/app/views/project/editor/dropbox.jade @@ -20,7 +20,7 @@ script(type="text/ng-template", id="dropboxModalTemplate") div(ng-show="dbState.hasDropboxFeature && dbState.userIsLinkedToDropbox") - progressbar.progress-striped.active(value='percentageLeftTillNextPoll', type="info") + progressbar.progress-striped.active(value='dbState.percentageLeftTillNextPoll', type="info") span strong {{dbState.minsTillNextPoll}} minutes span until dropbox is next checked for changes. diff --git a/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee b/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee index 444aa3eaf2..e3f3d5aa47 100644 --- a/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee +++ b/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee @@ -35,6 +35,7 @@ define [ $scope.dbState.minsTillNextPoll = POLLING_INTERVAL - roundedMinsSinceLastPoll $scope.dbState.percentageLeftTillNextPoll = 100 - ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100) + console.log $scope.dbState.percentageLeftTillNextPoll $timeout calculatePollTime, 60 * 1000 ide.socket.emit "getUserDropboxLinkStatus", user_id, (err, status)=> From fc02f996599124af81e9c19b0012a0c499c0331c Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Thu, 17 Jul 2014 15:26:31 +0100 Subject: [PATCH 4/4] made restricted page like 404, also got dropbox progress bar going the other way --- services/web/app/views/user/restricted.jade | 17 ++++++++++------- .../controllers/DropboxController.coffee | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/services/web/app/views/user/restricted.jade b/services/web/app/views/user/restricted.jade index 3ce1b5a0ff..4c4ebcd52a 100644 --- a/services/web/app/views/user/restricted.jade +++ b/services/web/app/views/user/restricted.jade @@ -1,10 +1,13 @@ extends ../layout block content - - .container#loginBox - .row - .box.span3.offset4 - .page-header - h1 Restricted - + .content + .container + .row + .col-md-8.col-md-offset-2.text-center + .page-header + h2 Restricted, sorry you don't have permission to load this page. + p + a(href="/") + i.fa.fa-arrow-circle-o-left + | Take me home! \ No newline at end of file diff --git a/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee b/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee index e3f3d5aa47..671206d77b 100644 --- a/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee +++ b/services/web/public/coffee/ide/dropbox/controllers/DropboxController.coffee @@ -34,7 +34,7 @@ define [ roundedMinsSinceLastPoll = Math.round(milisecondsSinceLastPoll / ONE_MIN_MILI) $scope.dbState.minsTillNextPoll = POLLING_INTERVAL - roundedMinsSinceLastPoll - $scope.dbState.percentageLeftTillNextPoll = 100 - ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100) + $scope.dbState.percentageLeftTillNextPoll = ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100) console.log $scope.dbState.percentageLeftTillNextPoll $timeout calculatePollTime, 60 * 1000