From d2502cfba2d47df8a760239fddd928afdd0d3f7c Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Mon, 5 Sep 2022 21:09:25 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Improved=20site=20isolation=20switc?= =?UTF-8?q?h=20(#191)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 4 +- .../DomainList/DomainListVC+ContextMenu.swift | 55 ++++++++++--------- phpmon/Localizable.strings | 5 +- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 7e086a2..109f7eb 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -1733,7 +1733,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 955; + CURRENT_PROJECT_VERSION = 960; DEBUG = YES; DEVELOPMENT_TEAM = 8M54J5J787; ENABLE_HARDENED_RUNTIME = YES; @@ -1760,7 +1760,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 955; + CURRENT_PROJECT_VERSION = 960; DEBUG = NO; DEVELOPMENT_TEAM = 8M54J5J787; ENABLE_HARDENED_RUNTIME = YES; diff --git a/phpmon/Domain/DomainList/DomainListVC+ContextMenu.swift b/phpmon/Domain/DomainList/DomainListVC+ContextMenu.swift index 04ebb7b..eb77a80 100644 --- a/phpmon/Domain/DomainList/DomainListVC+ContextMenu.swift +++ b/phpmon/Domain/DomainList/DomainListVC+ContextMenu.swift @@ -42,14 +42,15 @@ extension DomainListVC { addDisabledIsolation(to: menu) } - addUnlink(to: menu, with: site) + menu.addItem(HeaderView.asMenuItem(text: "domain_list.actions".localized)) addToggleSecure(to: menu, secured: site.secured) + addUnlink(to: menu, with: site) tableView.menu = menu } private func addSystemApps(to menu: NSMenu) { - menu.addItem(withTitle: "domain_list.system_apps".localized, action: nil, keyEquivalent: "") + menu.addItem(HeaderView.asMenuItem(text: "domain_list.system_apps".localized)) menu.addItem( withTitle: "domain_list.open_in_finder".localized, action: #selector(self.openInFinder), @@ -70,7 +71,7 @@ extension DomainListVC { private func addDetectedApps(to menu: NSMenu) { if !applications.isEmpty { menu.addItem(NSMenuItem.separator()) - menu.addItem(withTitle: "domain_list.detected_apps".localized, action: nil, keyEquivalent: "") + menu.addItem(HeaderView.asMenuItem(text: "domain_list.detected_apps".localized)) for editor in applications { let editorMenuItem = EditorMenuItem( @@ -96,38 +97,40 @@ extension DomainListVC { } private func addDisabledIsolation(to menu: NSMenu) { + menu.addItem(HeaderView.asMenuItem(text: "domain_list.site_isolation".localized)) menu.addItem(withTitle: "domain_list.isolation_unavailable".localized, action: nil, keyEquivalent: "") menu.addItem(NSMenuItem.separator()) } private func addIsolate(to menu: NSMenu, with site: ValetSite) { - if site.isolatedPhpVersion == nil { - // ISOLATION POSSIBLE - let isolationMenuItem = NSMenuItem(title: "domain_list.isolate".localized, action: nil, keyEquivalent: "") - let submenu = NSMenu() - submenu.addItem(withTitle: "Choose a PHP version", action: nil, keyEquivalent: "") - for version in PhpEnv.shared.availablePhpVersions.reversed() { - let item = PhpMenuItem( - title: "Always use PHP \(version)", - action: #selector(self.isolateSite), - keyEquivalent: "" - ) - item.version = version - submenu.addItem(item) - } - menu.setSubmenu(submenu, for: isolationMenuItem) + var items: [NSMenuItem] = [] - menu.addItem(isolationMenuItem) - menu.addItem(NSMenuItem.separator()) - } else { - // REMOVE ISOLATION POSSIBLE - menu.addItem( - withTitle: "domain_list.remove_isolation".localized, - action: #selector(self.removeIsolatedSite), + for version in PhpEnv.shared.availablePhpVersions.reversed() { + let item = PhpMenuItem( + title: "domain_list.always_use_php".localized(version), + action: #selector(self.isolateSite), keyEquivalent: "" ) - menu.addItem(NSMenuItem.separator()) + if site.servingPhpVersion == version && site.isolatedPhpVersion != nil { + item.state = .on + item.action = nil + } + item.version = version + items.append(item) } + + // Add the option to remove site isolation + if site.isolatedPhpVersion != nil { + items.append(NSMenuItem.separator()) + items.append(NSMenuItem( + title: "domain_list.remove_isolation".localized, + action: #selector(self.removeIsolatedSite) + )) + } + + menu.addItem(HeaderView.asMenuItem(text: "domain_list.site_isolation".localized)) + menu.addItem(NSMenuItem(title: "domain_list.isolate".localized, submenu: items)) + menu.addItem(NSMenuItem.separator()) } private func addToggleSecure(to menu: NSMenu, secured: Bool) { diff --git a/phpmon/Localizable.strings b/phpmon/Localizable.strings index bba94b1..94791b1 100644 --- a/phpmon/Localizable.strings +++ b/phpmon/Localizable.strings @@ -167,10 +167,13 @@ // SITE LIST ACTIONS -"domain_list.isolate" = "Isolate Domain"; +"domain_list.isolate" = "Switch PHP Version"; +"domain_list.site_isolation" = "Site Isolation"; "domain_list.remove_isolation" = "Remove Isolation"; +"domain_list.always_use_php" = "Always use PHP %@"; "domain_list.isolation_unavailable" = "Isolation Not Supported (in Valet 2)"; +"domain_list.actions" = "Actions"; "domain_list.unlink" = "Unlink Directory"; "domain_list.secure" = "Secure Domain"; "domain_list.unsecure" = "Unsecure Domain";