From 327c88a7459b3faf66e1c074be25d50a96173e29 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Tue, 7 Dec 2021 19:54:21 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Allow=20unlinking=20of=20sites?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 4 +-- phpmon/Domain/Core/Base.lproj/Main.storyboard | 2 +- phpmon/Domain/Helpers/Alert.swift | 24 ++++++++++++++ phpmon/Domain/SiteList/SiteListVC.swift | 33 +++++++++++++++++++ phpmon/Localizable.strings | 4 +++ 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index b80917b..52de760 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -765,7 +765,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 8M54J5J787; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = phpmon/Info.plist; @@ -790,7 +790,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 8M54J5J787; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = phpmon/Info.plist; diff --git a/phpmon/Domain/Core/Base.lproj/Main.storyboard b/phpmon/Domain/Core/Base.lproj/Main.storyboard index 3eaea91..f733de3 100644 --- a/phpmon/Domain/Core/Base.lproj/Main.storyboard +++ b/phpmon/Domain/Core/Base.lproj/Main.storyboard @@ -613,7 +613,7 @@ Gw - + diff --git a/phpmon/Domain/Helpers/Alert.swift b/phpmon/Domain/Helpers/Alert.swift index afe056c..d59c2f2 100644 --- a/phpmon/Domain/Helpers/Alert.swift +++ b/phpmon/Domain/Helpers/Alert.swift @@ -27,6 +27,30 @@ class Alert { return alert.runModal() == .alertFirstButtonReturn } + public static func confirm( + onWindow window: NSWindow, + messageText: String, + informativeText: String, + buttonTitle: String = "OK", + secondButtonTitle: String = "Cancel", + style: NSAlert.Style = .warning, + onFirstButtonPressed: @escaping (() -> Void) + ) { + let alert = NSAlert.init() + alert.alertStyle = style + alert.messageText = messageText + alert.informativeText = informativeText + alert.addButton(withTitle: buttonTitle) + if (!secondButtonTitle.isEmpty) { + alert.addButton(withTitle: secondButtonTitle) + } + alert.beginSheetModal(for: window) { response in + if response == .alertFirstButtonReturn { + onFirstButtonPressed() + } + } + } + public static func notify(message: String, info: String, style: NSAlert.Style = .informational) { _ = present( messageText: message, diff --git a/phpmon/Domain/SiteList/SiteListVC.swift b/phpmon/Domain/SiteList/SiteListVC.swift index bc907dc..06801c2 100644 --- a/phpmon/Domain/SiteList/SiteListVC.swift +++ b/phpmon/Domain/SiteList/SiteListVC.swift @@ -202,6 +202,30 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { Shell.run("open \(selectedSite!.absolutePath!)") } + @objc public func unlinkSite() { + guard let site = selectedSite else { + return + } + + if site.aliasPath == nil { + return + } + + Alert.confirm( + onWindow: view.window!, + messageText: "site_list.confirm_unlink".localized + .replacingOccurrences(of: "%@", with: site.name), + informativeText: "site_link.confirm_link".localized, + buttonTitle: "site_list.unlink".localized, + secondButtonTitle: "Cancel", + style: .critical, + onFirstButtonPressed: { + Shell.run("valet unlink \(site.name!)", requiresPath: true) + self.reloadSites() + } + ) + } + // MARK: - (Search) Text Field Delegate func searchedFor(text: String) { @@ -232,6 +256,15 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { return } + if (site.aliasPath != nil) { + menu.addItem( + withTitle: "site_list.unlink".localized, + action: #selector(self.unlinkSite), + keyEquivalent: "U" + ) + menu.addItem(NSMenuItem.separator()) + } + menu.addItem( withTitle: site.secured ? "site_list.unsecure".localized diff --git a/phpmon/Localizable.strings b/phpmon/Localizable.strings index ea884af..8fd1de6 100644 --- a/phpmon/Localizable.strings +++ b/phpmon/Localizable.strings @@ -59,8 +59,12 @@ "site_list.alerts_status_changed.title" = "SSL Status Changed"; "site_list.alerts_status_changed.desc" = "The domain '{@1}' is now {@2}."; +"site_list.confirm_unlink" = "Are you sure you want to unlink '%@'?"; +"site_link.confirm_link" = "No files will be removed. If needed, the site will need to be relinked via the command line."; + // SITE LIST ACTIONS +"site_list.unlink" = "Unlink"; "site_list.secure" = "Secure"; "site_list.unsecure" = "Unsecure"; "site_list.open_in_finder" = "Open in Finder";