diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..d280a2850 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,9 @@ +[submodule "vendor/extensions/extensions-manager"] + path = vendor/extensions/extensions-manager + url = https://github.com/sn-extensions/extensions-manager.git +[submodule "app/extensions/extensions-manager"] + path = app/extensions/extensions-manager + url = https://github.com/sn-extensions/extensions-manager.git +[submodule "public/extensions/extensions-manager"] + path = public/extensions/extensions-manager + url = https://github.com/sn-extensions/extensions-manager.git diff --git a/app/assets/javascripts/app/frontend/controllers/footer.js b/app/assets/javascripts/app/frontend/controllers/footer.js index 66447688a..b4d7b30bd 100644 --- a/app/assets/javascripts/app/frontend/controllers/footer.js +++ b/app/assets/javascripts/app/frontend/controllers/footer.js @@ -159,18 +159,67 @@ angular.module('app.frontend') } } + let extensionsIdentifier = "org.standardnotes.extensions-manager"; + // Handle singleton ProLink instance - singletonManager.registerSingleton({content_type: "SN|Component", package_info: {identifier: "org.standardnotes.prolink"}}, (resolvedSingleton) => { + singletonManager.registerSingleton({content_type: "SN|Component", package_info: {identifier: extensionsIdentifier}}, (resolvedSingleton) => { + // Resolved Singleton + console.log("Resolved extensions-manager", resolvedSingleton); + var needsSync = false; + if(isDesktopApplication()) { + if(!resolvedSingleton.local_url) { + resolvedSingleton.local_url = window._extensions_manager_location; + needsSync = true; + } + } else { + if(!resolvedSingleton.hosted_url) { + resolvedSingleton.hosted_url = window._extensions_manager_location; + needsSync = true; + } + } + + if(needsSync) { + resolvedSingleton.setDirty(true); + syncManager.sync(); + } }, (valueCallback) => { // Safe to create. Create and return object. - let url = window._prolink_package_url; - console.log("Installing ProLink from URL", url); + let url = window._extensions_manager_location; + console.log("Installing Extensions Manager from URL", url); if(!url) { - console.error("window._prolink_package_url must be set."); + console.error("window._extensions_manager_location must be set."); return; } - packageManager.installPackage(url, (component) => { - valueCallback(component); - }) + + var item = { + content_type: "SN|Component", + content: { + name: "Extensions", + area: "rooms", + package_info: { + identifier: extensionsIdentifier + }, + permissions: [ + { + name: "stream-items", + content_types: ["SN|Component", "SN|Theme", "SF|Extension", "Extension", "SF|MFA"] + } + ] + } + } + + if(isDesktopApplication()) { + item.content.local_url = window._extensions_manager_location; + } else { + item.content.hosted_url = window._extensions_manager_location; + } + + var component = modelManager.createItem(item); + modelManager.addItem(component); + + component.setDirty(true); + syncManager.sync(); + + valueCallback(component); }); }); diff --git a/app/assets/templates/frontend/directives/editor-menu.html.haml b/app/assets/templates/frontend/directives/editor-menu.html.haml index 5f6df4192..73fe7b68c 100644 --- a/app/assets/templates/frontend/directives/editor-menu.html.haml +++ b/app/assets/templates/frontend/directives/editor-menu.html.haml @@ -17,7 +17,7 @@ %a.no-decoration{"ng-if" => "editors.length == 0", "href" => "https://standardnotes.org/extensions", "target" => "blank"} %menu-row{"title" => "'Download More Editors'", "ng-click" => "moreEditors()"} - .section + .section{"ng-if" => "stack.length > 0"} .header %h4.title Editor Stack %menu-row{"ng-repeat" => "component in stack", "ng-click" => "selectComponent($event, component)", "title" => "component.name", diff --git a/app/extensions/extensions-manager b/app/extensions/extensions-manager new file mode 160000 index 000000000..f6fce7688 --- /dev/null +++ b/app/extensions/extensions-manager @@ -0,0 +1 @@ +Subproject commit f6fce768881c827704bb76510c0183b0cbd6f8ff diff --git a/app/views/application/frontend.html.erb b/app/views/application/frontend.html.erb index 471176b47..192df1a16 100644 --- a/app/views/application/frontend.html.erb +++ b/app/views/application/frontend.html.erb @@ -30,7 +30,7 @@ <% if Rails.env.development? %> diff --git a/public/extensions/extensions-manager b/public/extensions/extensions-manager new file mode 160000 index 000000000..f6fce7688 --- /dev/null +++ b/public/extensions/extensions-manager @@ -0,0 +1 @@ +Subproject commit f6fce768881c827704bb76510c0183b0cbd6f8ff diff --git a/vendor/extensions/extensions-manager b/vendor/extensions/extensions-manager new file mode 160000 index 000000000..f6fce7688 --- /dev/null +++ b/vendor/extensions/extensions-manager @@ -0,0 +1 @@ +Subproject commit f6fce768881c827704bb76510c0183b0cbd6f8ff