diff --git a/app/assets/javascripts/app/services/directives/views/globalExtensionsMenu.js b/app/assets/javascripts/app/services/directives/views/globalExtensionsMenu.js index f046d48d5..c5780abfe 100644 --- a/app/assets/javascripts/app/services/directives/views/globalExtensionsMenu.js +++ b/app/assets/javascripts/app/services/directives/views/globalExtensionsMenu.js @@ -7,7 +7,7 @@ class GlobalExtensionsMenu { }; } - controller($scope, extensionManager, syncManager, modelManager, themeManager, componentManager) { + controller($scope, extensionManager, syncManager, modelManager, themeManager, componentManager, packageManager) { 'ngInject'; $scope.formData = {}; @@ -176,6 +176,8 @@ class GlobalExtensionsMenu { $scope.handleThemeLink(link, completion); } else if(type == "component") { $scope.handleComponentLink(link, completion); + } else if(type == "package") { + $scope.handlePackageLink(link, completion); } else { @@ -184,6 +186,10 @@ class GlobalExtensionsMenu { } } + $scope.handlePackageLink = function(link, completion) { + packageManager.installPackage(link, completion); + } + $scope.handleSyncAdapterLink = function(link, completion) { var params = parametersFromURL(link); params["url"] = link; diff --git a/app/assets/javascripts/app/services/directives/views/roomBar.js b/app/assets/javascripts/app/services/directives/views/roomBar.js new file mode 100644 index 000000000..27ca308cc --- /dev/null +++ b/app/assets/javascripts/app/services/directives/views/roomBar.js @@ -0,0 +1,28 @@ +class RoomBar { + + constructor() { + this.restrict = "E"; + this.templateUrl = "frontend/directives/room-bar.html"; + this.scope = { + }; + } + + controller($rootScope, $scope, extensionManager, syncManager, modelManager, componentManager, $timeout) { + 'ngInject'; + + $scope.extensionManager = extensionManager; + $scope.componentManager = componentManager; + + $rootScope.$on("initial-data-loaded", () => { + $timeout(() => { + $scope.rooms = componentManager.componentsForArea("rooms"); + console.log("Rooms:", $scope.rooms); + }) + }); + + } + + +} + +angular.module('app.frontend').directive('roomBar', () => new RoomBar); diff --git a/app/assets/javascripts/app/services/packageManager.js b/app/assets/javascripts/app/services/packageManager.js new file mode 100644 index 000000000..d3a16666f --- /dev/null +++ b/app/assets/javascripts/app/services/packageManager.js @@ -0,0 +1,35 @@ +class PackageManager { + + constructor(httpManager, modelManager, syncManager) { + this.httpManager = httpManager; + this.modelManager = modelManager; + this.syncManager = syncManager; + } + + + installPackage(url, callback) { + this.httpManager.getAbsolute(url, {}, function(aPackage){ + console.log("Got package data", aPackage); + if(typeof aPackage !== 'object') { + callback(null); + return; + } + + var assembled = this.modelManager.createItem(aPackage); + this.modelManager.addItem(assembled); + assembled.setDirty(true); + this.syncManager.sync(); + + console.log("Created assembled", assembled); + + callback && callback(assembled); + }.bind(this), function(response){ + console.error("Error retrieving package", response); + callback(null); + }) + } + + +} + +angular.module('app.frontend').service('packageManager', PackageManager); diff --git a/app/assets/stylesheets/app/_footer.scss b/app/assets/stylesheets/app/_footer.scss index ac85969c9..e3e856325 100644 --- a/app/assets/stylesheets/app/_footer.scss +++ b/app/assets/stylesheets/app/_footer.scss @@ -50,7 +50,7 @@ h2 { font-weight: bold; margin-bottom: 4px; } - + h1 { font-size: 16px; } @@ -83,6 +83,18 @@ h2 { // margin-bottom: 10px; border-radius: 0px; } + + #room-bar { + display: inline-block; + border-left: 1px solid gray; + padding-left: 10px; + padding-right: 10px; + margin-left: 5px; + + .room-item { + display: inline-block; + } + } } #footer-bar .footer-bar-link { diff --git a/app/assets/templates/frontend/directives/room-bar.html.haml b/app/assets/templates/frontend/directives/room-bar.html.haml new file mode 100644 index 000000000..2aa40b9c9 --- /dev/null +++ b/app/assets/templates/frontend/directives/room-bar.html.haml @@ -0,0 +1,2 @@ +.room-item{"ng-repeat" => "room in rooms"} + {{room.name}} diff --git a/app/assets/templates/frontend/footer.html.haml b/app/assets/templates/frontend/footer.html.haml index 1f7506f45..b0943a8f9 100644 --- a/app/assets/templates/frontend/footer.html.haml +++ b/app/assets/templates/frontend/footer.html.haml @@ -12,6 +12,8 @@ %a{"href" => "https://standardnotes.org/help", "target" => "_blank"} Help + %room-bar#room-bar + .pull-right .footer-bar-link{"ng-if" => "ctrl.newUpdateAvailable", "ng-click" => "ctrl.clickedNewUpdateAnnouncement()"}