Rename extensionsManager to actionsManager

This commit is contained in:
Mo Bitar
2018-01-18 12:47:05 -06:00
parent 0cf13ad28b
commit 59fb649bd4
9 changed files with 37 additions and 37 deletions

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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"}

View File

@@ -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"}