Rename extensionsManager to actionsManager
This commit is contained in:
@@ -23,7 +23,7 @@ angular.module('app.frontend')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.controller('EditorCtrl', function ($sce, $timeout, authManager, $rootScope, extensionManager, syncManager, modelManager, themeManager, componentManager, storageManager) {
|
.controller('EditorCtrl', function ($sce, $timeout, authManager, $rootScope, actionsManager, syncManager, modelManager, themeManager, componentManager, storageManager) {
|
||||||
|
|
||||||
this.componentManager = componentManager;
|
this.componentManager = componentManager;
|
||||||
this.componentStack = [];
|
this.componentStack = [];
|
||||||
@@ -146,7 +146,7 @@ angular.module('app.frontend')
|
|||||||
}.bind(this)
|
}.bind(this)
|
||||||
|
|
||||||
this.hasAvailableExtensions = function() {
|
this.hasAvailableExtensions = function() {
|
||||||
return extensionManager.extensionsInContextOfItem(this.note).length > 0;
|
return actionsManager.extensionsInContextOfItem(this.note).length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.focusEditor = function(delay) {
|
this.focusEditor = function(delay) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
class ExtensionManager {
|
class ActionsManager {
|
||||||
|
|
||||||
constructor(httpManager, modelManager, authManager, syncManager, storageManager) {
|
constructor(httpManager, modelManager, authManager, syncManager, storageManager) {
|
||||||
this.httpManager = httpManager;
|
this.httpManager = httpManager;
|
||||||
@@ -8,7 +8,7 @@ class ExtensionManager {
|
|||||||
this.syncManager = syncManager;
|
this.syncManager = syncManager;
|
||||||
this.storageManager = storageManager;
|
this.storageManager = storageManager;
|
||||||
|
|
||||||
modelManager.addItemSyncObserver("extensionManager", "Extension", function(allItems, validItems, deletedItems){
|
modelManager.addItemSyncObserver("actionsManager", "Extension", function(allItems, validItems, deletedItems){
|
||||||
for (var ext of validItems) {
|
for (var ext of validItems) {
|
||||||
for (var action of ext.actions) {
|
for (var action of ext.actions) {
|
||||||
if(_.includes(this.enabledRepeatActionUrls, action.url)) {
|
if(_.includes(this.enabledRepeatActionUrls, action.url)) {
|
||||||
@@ -334,4 +334,4 @@ class ExtensionManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
angular.module('app.frontend').service('extensionManager', ExtensionManager);
|
angular.module('app.frontend').service('actionsManager', ActionsManager);
|
||||||
@@ -1,27 +1,23 @@
|
|||||||
class ContextualExtensionsMenu {
|
class ActionsMenu {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.restrict = "E";
|
this.restrict = "E";
|
||||||
this.templateUrl = "frontend/directives/contextual-menu.html";
|
this.templateUrl = "frontend/directives/actions-menu.html";
|
||||||
this.scope = {
|
this.scope = {
|
||||||
item: "="
|
item: "="
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
controller($scope, modelManager, extensionManager) {
|
controller($scope, modelManager, actionsManager) {
|
||||||
'ngInject';
|
'ngInject';
|
||||||
|
|
||||||
$scope.renderData = {};
|
$scope.renderData = {};
|
||||||
|
|
||||||
$scope.extensions = _.map(extensionManager.extensionsInContextOfItem($scope.item), function(ext){
|
$scope.extensions = actionsManager.extensions;
|
||||||
// why are we cloning deep? commenting out because we want original reference so that extension.hide is saved between menu opens
|
|
||||||
// return _.cloneDeep(ext);
|
|
||||||
return ext;
|
|
||||||
});
|
|
||||||
|
|
||||||
for(let ext of $scope.extensions) {
|
for(let ext of $scope.extensions) {
|
||||||
ext.loading = true;
|
ext.loading = true;
|
||||||
extensionManager.loadExtensionInContextOfItem(ext, $scope.item, function(scopedExtension) {
|
actionsManager.loadExtensionInContextOfItem(ext, $scope.item, function(scopedExtension) {
|
||||||
ext.loading = false;
|
ext.loading = false;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -36,12 +32,12 @@ class ContextualExtensionsMenu {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
action.running = true;
|
action.running = true;
|
||||||
extensionManager.executeAction(action, extension, $scope.item, function(response){
|
actionsManager.executeAction(action, extension, $scope.item, function(response){
|
||||||
action.running = false;
|
action.running = false;
|
||||||
$scope.handleActionResponse(action, response);
|
$scope.handleActionResponse(action, response);
|
||||||
|
|
||||||
// reload extension actions
|
// reload extension actions
|
||||||
extensionManager.loadExtensionInContextOfItem(extension, $scope.item, function(ext){
|
actionsManager.loadExtensionInContextOfItem(extension, $scope.item, function(ext){
|
||||||
// keep nested state
|
// keep nested state
|
||||||
if(parentAction) {
|
if(parentAction) {
|
||||||
var matchingAction = _.find(ext.actions, {label: parentAction.label});
|
var matchingAction = _.find(ext.actions, {label: parentAction.label});
|
||||||
@@ -83,4 +79,4 @@ class ContextualExtensionsMenu {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
angular.module('app.frontend').directive('contextualExtensionsMenu', () => new ContextualExtensionsMenu);
|
angular.module('app.frontend').directive('actionsMenu', () => new ActionsMenu);
|
||||||
@@ -7,19 +7,19 @@ class GlobalExtensionsMenu {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
controller($scope, extensionManager, syncManager, modelManager, themeManager, componentManager, packageManager) {
|
controller($scope, actionsManager, syncManager, modelManager, themeManager, componentManager, packageManager) {
|
||||||
'ngInject';
|
'ngInject';
|
||||||
|
|
||||||
$scope.formData = {};
|
$scope.formData = {};
|
||||||
|
|
||||||
$scope.extensionManager = extensionManager;
|
$scope.actionsManager = actionsManager;
|
||||||
$scope.themeManager = themeManager;
|
$scope.themeManager = themeManager;
|
||||||
$scope.componentManager = componentManager;
|
$scope.componentManager = componentManager;
|
||||||
|
|
||||||
$scope.serverExtensions = modelManager.itemsForContentType("SF|Extension");
|
$scope.serverExtensions = modelManager.itemsForContentType("SF|Extension");
|
||||||
|
|
||||||
$scope.selectedAction = function(action, extension) {
|
$scope.selectedAction = function(action, extension) {
|
||||||
extensionManager.executeAction(action, extension, null, function(response){
|
actionsManager.executeAction(action, extension, null, function(response){
|
||||||
if(response && response.error) {
|
if(response && response.error) {
|
||||||
action.error = true;
|
action.error = true;
|
||||||
alert("There was an error performing this action. Please try again.");
|
alert("There was an error performing this action. Please try again.");
|
||||||
@@ -38,13 +38,13 @@ class GlobalExtensionsMenu {
|
|||||||
|
|
||||||
$scope.deleteActionExtension = function(extension) {
|
$scope.deleteActionExtension = function(extension) {
|
||||||
if(confirm("Are you sure you want to delete this extension?")) {
|
if(confirm("Are you sure you want to delete this extension?")) {
|
||||||
extensionManager.deleteExtension(extension);
|
actionsManager.deleteExtension(extension);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.reloadExtensionsPressed = function() {
|
$scope.reloadExtensionsPressed = function() {
|
||||||
if(confirm("For your security, reloading extensions will disable any currently enabled repeat actions.")) {
|
if(confirm("For your security, reloading extensions will disable any currently enabled repeat actions.")) {
|
||||||
extensionManager.refreshExtensionsFromServer();
|
actionsManager.refreshExtensionsFromServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ class GlobalExtensionsMenu {
|
|||||||
|
|
||||||
$scope.handleActionLink = function(link, completion) {
|
$scope.handleActionLink = function(link, completion) {
|
||||||
if(link) {
|
if(link) {
|
||||||
extensionManager.addExtension(link, function(response){
|
actionsManager.addExtension(link, function(response){
|
||||||
if(!response) {
|
if(!response) {
|
||||||
alert("Unable to register this extension. Make sure the link is valid and try again.");
|
alert("Unable to register this extension. Make sure the link is valid and try again.");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class PanelResizer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
controller($scope, $element, modelManager, extensionManager) {
|
controller($scope, $element, modelManager, actionsManager) {
|
||||||
'ngInject';
|
'ngInject';
|
||||||
|
|
||||||
let panel = document.getElementById($scope.panelId);
|
let panel = document.getElementById($scope.panelId);
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
.sn-component
|
.sn-component
|
||||||
.menu-panel.dropdown-menu
|
.menu-panel.dropdown-menu
|
||||||
|
|
||||||
|
%a.no-decoration{"ng-if" => "extensions.length == 0", "href" => "https://standardnotes.org/extensions", "target" => "blank"}
|
||||||
|
%menu-row{"title" => "'Download Actions'"}
|
||||||
|
|
||||||
.section{"ng-repeat" => "extension in extensions"}
|
.section{"ng-repeat" => "extension in extensions"}
|
||||||
.header{"ng-click" => "extension.hide = !extension.hide"}
|
.header{"ng-click" => "extension.hide = !extension.hide; $event.stopPropagation();"}
|
||||||
.column
|
.column
|
||||||
%h4.title {{extension.name}}
|
%h4.title {{extension.name}}
|
||||||
.subtitle
|
.subtitle
|
||||||
Will submit your note
|
Will submit your note
|
||||||
%strong {{accessTypeForExtension(extension)}}
|
%strong {{accessTypeForExtension(extension)}}
|
||||||
.spinner.loading{"ng-if" => "extension.loading"}
|
.spinner.small.loading{"ng-if" => "extension.loading"}
|
||||||
%div{"ng-if" => "extension.hide"} …
|
%div{"ng-if" => "extension.hide"} …
|
||||||
|
|
||||||
%menu-row{"ng-if" => "!extension.hide", "ng-repeat" => "action in extension.actionsWithContextForItem(item)", "ng-click" => "executeAction(action, extension);",
|
%menu-row{"ng-if" => "!extension.hide", "ng-repeat" => "action in extension.actionsWithContextForItem(item)", "ng-click" => "executeAction(action, extension); $event.stopPropagation();",
|
||||||
"ng-class" => "{'faded' : !isActionEnabled(action, extension)}", "title" => "action.label", "subtitle" => "action.desc"}
|
"ng-class" => "{'faded' : !isActionEnabled(action, extension)}", "title" => "action.label", "subtitle" => "action.desc"}
|
||||||
.small.normal{"ng-if" => "!isActionEnabled(action, extension)"}
|
.small.normal{"ng-if" => "!isActionEnabled(action, extension)"}
|
||||||
Requires {{action.access_type}} access to this note.
|
Requires {{action.access_type}} access to this note.
|
||||||
@@ -21,10 +25,10 @@
|
|||||||
%label.menu-item-title {{subaction.label}}
|
%label.menu-item-title {{subaction.label}}
|
||||||
.menu-item-subtitle {{subaction.desc}}
|
.menu-item-subtitle {{subaction.desc}}
|
||||||
%span{"ng-if" => "subaction.running"}
|
%span{"ng-if" => "subaction.running"}
|
||||||
.spinner{"style" => "margin-top: 3px;"}
|
.spinner.small{"style" => "margin-top: 3px;"}
|
||||||
|
|
||||||
%span{"ng-if" => "action.running"}
|
%span{"ng-if" => "action.running"}
|
||||||
.spinner{"style" => "margin-top: 3px;"}
|
.spinner.small{"style" => "margin-top: 3px;"}
|
||||||
|
|
||||||
.extension-render-modal{"ng-if" => "renderData.showRenderModal", "ng-click" => "renderData.showRenderModal = false"}
|
.extension-render-modal{"ng-if" => "renderData.showRenderModal", "ng-click" => "renderData.showRenderModal = false"}
|
||||||
.content
|
.content
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
Available Offline
|
Available Offline
|
||||||
|
|
||||||
%a.no-decoration{"ng-if" => "editors.length == 0", "href" => "https://standardnotes.org/extensions", "target" => "blank"}
|
%a.no-decoration{"ng-if" => "editors.length == 0", "href" => "https://standardnotes.org/extensions", "target" => "blank"}
|
||||||
%menu-row{"title" => "'Download More Editors'", "ng-click" => "moreEditors()"}
|
%menu-row{"title" => "'Download More Editors'"}
|
||||||
.section{"ng-if" => "stack.length > 0"}
|
.section{"ng-if" => "stack.length > 0"}
|
||||||
.header
|
.header
|
||||||
%h4.title Editor Stack
|
%h4.title Editor Stack
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
.float-group.h20
|
.float-group.h20
|
||||||
%h1.tinted.pull-left Extensions
|
%h1.tinted.pull-left Extensions
|
||||||
%a.block.pull-right.dashboard-link{"href" => "https://dashboard.standardnotes.org", "target" => "_blank"} Open Dashboard
|
%a.block.pull-right.dashboard-link{"href" => "https://dashboard.standardnotes.org", "target" => "_blank"} Open Dashboard
|
||||||
%div.clear{"ng-if" => "!extensionManager.extensions.length && !themeManager.themes.length && !componentManager.components.length"}
|
%div.clear{"ng-if" => "!actionsManager.extensions.length && !themeManager.themes.length && !componentManager.components.length"}
|
||||||
%p Customize your experience with editors, themes, and actions.
|
%p Customize your experience with editors, themes, and actions.
|
||||||
.tinted-box.mt-10
|
.tinted-box.mt-10
|
||||||
%h3 Available as part of the Extended subscription.
|
%h3 Available as part of the Extended subscription.
|
||||||
@@ -35,13 +35,13 @@
|
|||||||
{{theme.url}}
|
{{theme.url}}
|
||||||
|
|
||||||
|
|
||||||
%div{"ng-if" => "extensionManager.extensions.length"}
|
%div{"ng-if" => "actionsManager.extensions.length"}
|
||||||
.header.container.section-margin
|
.header.container.section-margin
|
||||||
%h2 Actions
|
%h2 Actions
|
||||||
%p{"style" => "margin-top: 3px;"} Choose "Actions" in the note editor to use installed actions.
|
%p{"style" => "margin-top: 3px;"} Choose "Actions" in the note editor to use installed actions.
|
||||||
|
|
||||||
%ul
|
%ul
|
||||||
%li{"ng-repeat" => "extension in extensionManager.extensions | orderBy: 'name'", "ng-init" => "extension.formData = {}", "ng-click" => "clickedExtension(extension)"}
|
%li{"ng-repeat" => "extension in actionsManager.extensions | orderBy: 'name'", "ng-init" => "extension.formData = {}", "ng-click" => "clickedExtension(extension)"}
|
||||||
.container
|
.container
|
||||||
%h3
|
%h3
|
||||||
%input.bold{"ng-if" => "extension.rename", "ng-model" => "extension.tempName", "ng-keyup" => "$event.keyCode == 13 && submitExtensionRename(extension);", "sn-autofocus" => "true", "should-focus" => "true"}
|
%input.bold{"ng-if" => "extension.rename", "ng-model" => "extension.tempName", "ng-keyup" => "$event.keyCode == 13 && submitExtensionRename(extension);", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||||
@@ -75,8 +75,8 @@
|
|||||||
|
|
||||||
%div
|
%div
|
||||||
.mt-5{"ng-if" => "action.repeat_mode"}
|
.mt-5{"ng-if" => "action.repeat_mode"}
|
||||||
%button.light.tinted{"ng-if" => "extensionManager.isRepeatActionEnabled(action)", "ng-click" => "extensionManager.disableRepeatAction(action, extension); $event.stopPropagation();"} Disable
|
%button.light.tinted{"ng-if" => "actionsManager.isRepeatActionEnabled(action)", "ng-click" => "actionsManager.disableRepeatAction(action, extension); $event.stopPropagation();"} Disable
|
||||||
%button.light.tinted{"ng-if" => "!extensionManager.isRepeatActionEnabled(action)", "ng-click" => "extensionManager.enableRepeatAction(action, extension); $event.stopPropagation();"} Enable
|
%button.light.tinted{"ng-if" => "!actionsManager.isRepeatActionEnabled(action)", "ng-click" => "actionsManager.enableRepeatAction(action, extension); $event.stopPropagation();"} Enable
|
||||||
%button.light.mt-10{"ng-if" => "!action.running && !action.repeat_mode", "ng-click" => "selectedAction(action, extension); $event.stopPropagation();"}
|
%button.light.mt-10{"ng-if" => "!action.running && !action.repeat_mode", "ng-click" => "selectedAction(action, extension); $event.stopPropagation();"}
|
||||||
Perform Action
|
Perform Action
|
||||||
.spinner.mb-5.block{"ng-if" => "action.running"}
|
.spinner.mb-5.block{"ng-if" => "action.running"}
|
||||||
|
|||||||
@@ -35,9 +35,9 @@
|
|||||||
.label Editor
|
.label Editor
|
||||||
%editor-menu{"ng-if" => "ctrl.showEditorMenu", "callback" => "ctrl.editorMenuOnSelect", "selected-editor" => "ctrl.selectedEditor"}
|
%editor-menu{"ng-if" => "ctrl.showEditorMenu", "callback" => "ctrl.editorMenuOnSelect", "selected-editor" => "ctrl.selectedEditor"}
|
||||||
|
|
||||||
.item{"ng-click" => "ctrl.showExtensions = !ctrl.showExtensions; ctrl.showMenu = false; ctrl.showEditorMenu = false;", "ng-class" => "{'selected' : ctrl.showExtensions}", "ng-if" => "ctrl.hasAvailableExtensions()", "click-outside" => "ctrl.showExtensions = false;", "is-open" => "ctrl.showExtensions"}
|
.item{"ng-click" => "ctrl.showExtensions = !ctrl.showExtensions; ctrl.showMenu = false; ctrl.showEditorMenu = false;", "ng-class" => "{'selected' : ctrl.showExtensions}", "click-outside" => "ctrl.showExtensions = false;", "is-open" => "ctrl.showExtensions"}
|
||||||
.label Actions
|
.label Actions
|
||||||
%contextual-extensions-menu{"ng-if" => "ctrl.showExtensions", "item" => "ctrl.note"}
|
%actions-menu{"ng-if" => "ctrl.showExtensions", "item" => "ctrl.note"}
|
||||||
|
|
||||||
.editor-content#editor-content{"ng-if" => "ctrl.noteReady && !ctrl.note.errorDecrypting"}
|
.editor-content#editor-content{"ng-if" => "ctrl.noteReady && !ctrl.note.errorDecrypting"}
|
||||||
%panel-resizer.left{"panel-id" => "'editor-content'", "on-resize-finish" => "ctrl.onPanelResizeFinish","control" => "ctrl.resizeControl", "min-width" => 300, "property" => "'left'", "hoverable" => "true"}
|
%panel-resizer.left{"panel-id" => "'editor-content'", "on-resize-finish" => "ctrl.onPanelResizeFinish","control" => "ctrl.resizeControl", "min-width" => 300, "property" => "'left'", "hoverable" => "true"}
|
||||||
|
|||||||
Reference in New Issue
Block a user