[common] Add asc_pluginStop, getUsedBackgroundPlugins methods, fix srart/close in button menu for inside mode plugins

This commit is contained in:
Julia.Svinareva
2024-03-27 20:57:17 +03:00
parent ff3792582d
commit d9cbca0b5d
2 changed files with 33 additions and 22 deletions

View File

@ -73,11 +73,11 @@ define([
}
},
'Common.Views.Plugins': {
'plugin:select': function(guid, type) {
if (!this.viewPlugins.pluginPanels[guid]) {
me.api.asc_pluginRun(guid, type, '');
'plugin:select': function(guid, type, isRun, closePanel) {
if (!this.viewPlugins.pluginPanels[guid] || (this.viewPlugins.pluginPanels[guid] && type > 0)) {
!isRun || type > 0 ? me.api.asc_pluginRun(guid, type, '') : me.api.asc_pluginStop(guid);
} else {
me.openUIPlugin(guid);
closePanel ? me.onToolClose(this.viewPlugins.pluginPanels[guid]) : me.openUIPlugin(guid);
}
}
},
@ -306,12 +306,14 @@ define([
}
};
this.backgroundPluginsSwitchers = [];
var usedPlugins = this.api.getUsedBackgroundPlugins();
this.backgroundPlugins.forEach(function (model) {
var modes = model.get('variations'),
icons = modes[model.get('currentVariation')].get('icons'),
parsedIcons = me.viewPlugins.parseIcons(icons),
icon_url = model.get('baseUrl') + parsedIcons['normal'],
guid = model.get('guid');
guid = model.get('guid'),
isRun = _.indexOf(usedPlugins, guid) !== -1;
model.set('parsedIcons', parsedIcons);
var menuItem = new Common.UI.MenuItem({
value: guid,
@ -333,14 +335,14 @@ define([
model.set('backgroundPlugin', menuItem);
var switcher = new Common.UI.Switcher({
el: menuItem.$el.find('.plugin-toggle')[0],
value: !!model.isSystem,
value: !!model.isSystem || isRun,
disabled: !!model.isSystem,
pluginGuid: guid,
hint: me.viewPlugins.textStart
hint: isRun ? me.viewPlugins.textStop : me.viewPlugins.textStart
});
switcher.on('change', function (element, value) {
switcher.updateHint(value ? me.viewPlugins.textStop : me.viewPlugins.textStart);
me.viewPlugins.fireEvent('plugin:select', [switcher.options.pluginGuid, 0]);
me.viewPlugins.fireEvent('plugin:select', [switcher.options.pluginGuid, 0, !value]);
});
me.backgroundPluginsSwitchers.push(switcher);
var menuItems = [];
@ -367,7 +369,7 @@ define([
});
btn.menu.on('item:click', function (menu, item, e) {
Common.UI.Menu.Manager.hideAll();
me.viewPlugins.fireEvent('plugin:select', [menu.options.pluginGuid, item.value]);
me.viewPlugins.fireEvent('plugin:select', [menu.options.pluginGuid, item.value, false]);
me.clickInsideMenu = false;
});
btn.menu.on('keydown:before', function (menu, e) {
@ -694,7 +696,7 @@ define([
}
}
!variation.get_InsideMode() && this.viewPlugins.openedPluginMode(plugin.get_Guid());
this.viewPlugins.openedPluginMode(plugin.get_Guid(), variation.get_InsideMode());
},
onPluginClose: function(plugin) {
@ -713,9 +715,8 @@ define([
this.viewPlugins.fireEvent(model.get('menu') === 'right' ? 'pluginsright:close' : 'pluginsleft:close', [guid]);
}
}
if (!isIframePlugin) {
!this.turnOffBackgroundPlugin(guid) && this.viewPlugins.closedPluginMode(guid);
}
!this.turnOffBackgroundPlugin(guid) && this.viewPlugins.closedPluginMode(guid, isIframePlugin);
this.runAutoStartPlugins();
},