1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-06 11:30:08 +02:00

Allow toggling extensions via site list

This commit is contained in:
2024-01-09 20:55:16 +01:00
parent 3a2209e604
commit 8e912151fb
3 changed files with 54 additions and 0 deletions

View File

@ -110,6 +110,22 @@ extension DomainListVC {
}
}
@objc func toggleExtension(sender: ExtensionMenuItem) {
Task {
self.setUIBusy()
await sender.phpExtension?.toggle()
if Preferences.isEnabled(.autoServiceRestartAfterExtensionToggle) {
await Actions.restartPhpFpm()
}
reloadContextMenu()
self.setUINotBusy()
}
}
@objc func isolateSite(sender: PhpMenuItem) {
guard let site = selectedSite else {
return

View File

@ -42,7 +42,20 @@ extension DomainListVC {
addDisabledIsolation(to: menu)
}
addSeparator(to: menu)
if let extensions = site.isolatedPhpVersion?.extensions ?? PhpEnvironments.phpInstall?.extensions,
let version = site.isolatedPhpVersion?.versionNumber.short ?? PhpEnvironments.phpInstall?.version.short {
menu.addItem(HeaderView.asMenuItem(text: "mi_detected_extensions".localized))
addMenuItemsForExtensions(
to: menu,
for: extensions,
version: version
)
}
menu.addItem(HeaderView.asMenuItem(text: "domain_list.actions".localized))
addToggleSecure(to: menu, secured: site.secured)
addUnlink(to: menu, with: site)
@ -150,6 +163,28 @@ extension DomainListVC {
)
}
private func addMenuItemsForExtensions(to menu: NSMenu, for extensions: [PhpExtension], version: String) {
var items: [NSMenuItem] = [
NSMenuItem(title: "domain_list.applies_to".localized(version))
]
for phpExtension in extensions {
let item = ExtensionMenuItem(
title: "\(phpExtension.name) (\(phpExtension.fileNameOnly))",
action: #selector(self.toggleExtension),
keyEquivalent: ""
)
item.state = phpExtension.enabled ? .on : .off
item.phpExtension = phpExtension
items.append(item)
}
menu.addItem(NSMenuItem(title: "domain_list.extensions".localized, submenu: items))
menu.addItem(NSMenuItem.separator())
}
// MARK: - Menu Items for Proxy
private func addMenuItemsForProxy(_ proxy: ValetProxy) {

View File

@ -264,6 +264,9 @@ You may be asked for your password during the uninstallation process if file per
"domain_list.columns.kind" = "Kind";
"domain_list.columns.project_type" = "Project Type";
"domain_list.extensions" = "Toggle Extensions";
"domain_list.applies_to" = "Applies to PHP %@";
// CHOOSE WHAT TO ADD
"selection.title" = "What kind of domain would you like to set up?";