diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 2a61952..c89c547 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -90,8 +90,7 @@ C464ADAD275A7A3F003FCD53 /* SiteListWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAB275A7A3F003FCD53 /* SiteListWC.swift */; }; C464ADAF275A7A69003FCD53 /* SiteListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAE275A7A69003FCD53 /* SiteListVC.swift */; }; C464ADB0275A7A6A003FCD53 /* SiteListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAE275A7A69003FCD53 /* SiteListVC.swift */; }; - C464ADB2275A87CA003FCD53 /* SiteListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADB1275A87CA003FCD53 /* SiteListCell.swift */; }; - C464ADB3275A87CA003FCD53 /* SiteListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADB1275A87CA003FCD53 /* SiteListCell.swift */; }; + C464ADB2275A87CA003FCD53 /* SiteListCellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADB1275A87CA003FCD53 /* SiteListCellProtocol.swift */; }; C46FA23F246C358E00944F05 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46FA23E246C358E00944F05 /* StringExtension.swift */; }; C473319F2470923A009A0597 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C473319E2470923A009A0597 /* Localizable.strings */; }; C47331A2247093B7009A0597 /* StatusMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47331A1247093B7009A0597 /* StatusMenu.swift */; }; @@ -117,6 +116,7 @@ C4998F0A2617633900B2526E /* PrefsWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4998F092617633900B2526E /* PrefsWC.swift */; }; C4998F0B2617633900B2526E /* PrefsWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4998F092617633900B2526E /* PrefsWC.swift */; }; C49E171F27A5736E00787921 /* PMServicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C49E171E27A5736E00787921 /* PMServicesView.swift */; }; + C4AC51FC27E27F47008528CA /* SiteListKindCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AC51FB27E27F47008528CA /* SiteListKindCell.swift */; }; C4ACA38F25C754C100060C66 /* PhpExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4ACA38E25C754C100060C66 /* PhpExtension.swift */; }; C4AF9F71275445FF00D44ED0 /* valet-config.json in Resources */ = {isa = PBXBuildFile; fileRef = C4AF9F70275445FF00D44ED0 /* valet-config.json */; }; C4AF9F72275445FF00D44ED0 /* valet-config.json in Resources */ = {isa = PBXBuildFile; fileRef = C4AF9F70275445FF00D44ED0 /* valet-config.json */; }; @@ -280,7 +280,7 @@ C44CCD4827AFF3B700CE40E5 /* MainMenu+Async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainMenu+Async.swift"; sourceTree = ""; }; C464ADAB275A7A3F003FCD53 /* SiteListWC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteListWC.swift; sourceTree = ""; }; C464ADAE275A7A69003FCD53 /* SiteListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteListVC.swift; sourceTree = ""; }; - C464ADB1275A87CA003FCD53 /* SiteListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteListCell.swift; sourceTree = ""; }; + C464ADB1275A87CA003FCD53 /* SiteListCellProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteListCellProtocol.swift; sourceTree = ""; }; C46FA23E246C358E00944F05 /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; C473319E2470923A009A0597 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; C47331A1247093B7009A0597 /* StatusMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusMenu.swift; sourceTree = ""; }; @@ -299,6 +299,7 @@ C4930849279F331F009C240B /* AddSiteVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSiteVC.swift; sourceTree = ""; }; C4998F092617633900B2526E /* PrefsWC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefsWC.swift; sourceTree = ""; }; C49E171E27A5736E00787921 /* PMServicesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PMServicesView.swift; sourceTree = ""; }; + C4AC51FB27E27F47008528CA /* SiteListKindCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SiteListKindCell.swift; sourceTree = ""; }; C4ACA38E25C754C100060C66 /* PhpExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpExtension.swift; sourceTree = ""; }; C4AF9F70275445FF00D44ED0 /* valet-config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "valet-config.json"; sourceTree = ""; }; C4AF9F76275447F100D44ED0 /* ValetConfigParserTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ValetConfigParserTest.swift; sourceTree = ""; }; @@ -526,10 +527,12 @@ C44067F327E256560045BD4E /* Cells */ = { isa = PBXGroup; children = ( + C464ADB1275A87CA003FCD53 /* SiteListCellProtocol.swift */, C44067FA27E25FD70045BD4E /* SiteListTLSCell.swift */, C44067F427E2582B0045BD4E /* SiteListNameCell.swift */, C44067F627E258410045BD4E /* SiteListPhpCell.swift */, C44067F827E2585E0045BD4E /* SiteListTypeCell.swift */, + C4AC51FB27E27F47008528CA /* SiteListKindCell.swift */, ); path = Cells; sourceTree = ""; @@ -561,7 +564,6 @@ C41E87192763D42300161EE0 /* SiteListVC+ContextMenu.swift */, C41CA5EC2774F8EE00A2C80E /* SiteListVC+Actions.swift */, C4930849279F331F009C240B /* AddSiteVC.swift */, - C464ADB1275A87CA003FCD53 /* SiteListCell.swift */, ); path = SiteList; sourceTree = ""; @@ -946,6 +948,7 @@ C4EE55AB27708B9E001DF387 /* Preview.swift in Sources */, C44067F727E258410045BD4E /* SiteListPhpCell.swift in Sources */, C415D3B72770F294005EF286 /* Actions.swift in Sources */, + C4AC51FC27E27F47008528CA /* SiteListKindCell.swift in Sources */, C44C198D276E3A1C0072762D /* ProgressWindow.swift in Sources */, C4C3ED4327834C5200AB15D8 /* CustomPrefs.swift in Sources */, 54B48B5F275F66AE006D90C5 /* Application.swift in Sources */, @@ -997,7 +1000,7 @@ C46FA23F246C358E00944F05 /* StringExtension.swift in Sources */, C4B97B75275CF08C003F3378 /* AppDelegate+MenuOutlets.swift in Sources */, C464ADAC275A7A3F003FCD53 /* SiteListWC.swift in Sources */, - C464ADB2275A87CA003FCD53 /* SiteListCell.swift in Sources */, + C464ADB2275A87CA003FCD53 /* SiteListCellProtocol.swift in Sources */, C4EE188422D3386B00E126E5 /* Constants.swift in Sources */, C493084A279F331F009C240B /* AddSiteVC.swift in Sources */, C4DEB7D427A5D60B00834718 /* Stats.swift in Sources */, @@ -1051,7 +1054,6 @@ C40C7F3127722E8D00DDDCDC /* Logger.swift in Sources */, C4068CAB27B0890D00544CD5 /* MenuBarIcons.swift in Sources */, C4F30B09278E1A0E00755FCE /* CustomPrefs.swift in Sources */, - C464ADB3275A87CA003FCD53 /* SiteListCell.swift in Sources */, C415D3E92770F692005EF286 /* AppDelegate+InterApp.swift in Sources */, C4AF9F78275447F100D44ED0 /* ValetConfigParserTest.swift in Sources */, C4CE3BBC27B324250086CA49 /* ComposerWindow.swift in Sources */, diff --git a/assets/affinity/icons.afdesign b/assets/affinity/icons.afdesign index dd286e0..771a21a 100644 Binary files a/assets/affinity/icons.afdesign and b/assets/affinity/icons.afdesign differ diff --git a/phpmon/Assets.xcassets/Isolated.imageset/Isolated.png b/phpmon/Assets.xcassets/Isolated.imageset/Isolated.png index f945775..c5a03a3 100644 Binary files a/phpmon/Assets.xcassets/Isolated.imageset/Isolated.png and b/phpmon/Assets.xcassets/Isolated.imageset/Isolated.png differ diff --git a/phpmon/Assets.xcassets/Isolated.imageset/Isolated@2x.png b/phpmon/Assets.xcassets/Isolated.imageset/Isolated@2x.png index db23845..2c75586 100644 Binary files a/phpmon/Assets.xcassets/Isolated.imageset/Isolated@2x.png and b/phpmon/Assets.xcassets/Isolated.imageset/Isolated@2x.png differ diff --git a/phpmon/Domain/App/Base.lproj/Main.storyboard b/phpmon/Domain/App/Base.lproj/Main.storyboard index e9e522f..8aa732d 100644 --- a/phpmon/Domain/App/Base.lproj/Main.storyboard +++ b/phpmon/Domain/App/Base.lproj/Main.storyboard @@ -4,6 +4,7 @@ + @@ -386,10 +387,10 @@ - + - + @@ -436,7 +437,7 @@ - + @@ -793,28 +794,25 @@ Gw - - + + - - - - - + - + - - + + - + + - + @@ -849,7 +847,7 @@ Gw - + @@ -862,7 +860,7 @@ Gw - + @@ -883,6 +881,8 @@ Gw + + @@ -895,7 +895,7 @@ Gw - + @@ -908,27 +908,32 @@ Gw - + - + - - + + - - + + + + @@ -944,8 +949,8 @@ Gw - - + + @@ -956,8 +961,8 @@ Gw - - + + @@ -969,25 +974,61 @@ Gw - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - - + + @@ -1003,23 +1044,23 @@ Gw - + - + - + - - + + - + @@ -1051,5 +1092,8 @@ Gw + + + diff --git a/phpmon/Domain/SiteList/Cells/SiteListCellProtocol.swift b/phpmon/Domain/SiteList/Cells/SiteListCellProtocol.swift new file mode 100644 index 0000000..a75808c --- /dev/null +++ b/phpmon/Domain/SiteList/Cells/SiteListCellProtocol.swift @@ -0,0 +1,14 @@ +// +// SiteListCellProtocol.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 03/12/2021. +// Copyright © 2021 Nico Verbruggen. All rights reserved. +// + +import Cocoa +import AppKit + +protocol SiteListCellProtocol { + func populateCell(with site: ValetSite) +} diff --git a/phpmon/Domain/SiteList/Cells/SiteListKindCell.swift b/phpmon/Domain/SiteList/Cells/SiteListKindCell.swift new file mode 100644 index 0000000..b12982b --- /dev/null +++ b/phpmon/Domain/SiteList/Cells/SiteListKindCell.swift @@ -0,0 +1,27 @@ +// +// SiteListTypeCell.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 16/03/2022. +// Copyright © 2022 Nico Verbruggen. All rights reserved. +// + +import Cocoa +import AppKit + +class SiteListKindCell: NSTableCellView, SiteListCellProtocol +{ + @IBOutlet weak var imageViewType: NSImageView! + + func populateCell(with site: ValetSite) { + + // If the `aliasPath` is nil, we're dealing with a parked site (otherwise: linked). + imageViewType.image = NSImage( + named: site.aliasPath == nil + ? "IconParked" + : "IconLinked" + ) + + imageViewType.contentTintColor = NSColor.tertiaryLabelColor + } +} diff --git a/phpmon/Domain/SiteList/Cells/SiteListNameCell.swift b/phpmon/Domain/SiteList/Cells/SiteListNameCell.swift index f5e00ab..f51d851 100644 --- a/phpmon/Domain/SiteList/Cells/SiteListNameCell.swift +++ b/phpmon/Domain/SiteList/Cells/SiteListNameCell.swift @@ -11,18 +11,13 @@ import AppKit class SiteListNameCell: NSTableCellView, SiteListCellProtocol { - var site: ValetSite? = nil - @IBOutlet weak var labelSiteName: NSTextField! @IBOutlet weak var labelPathName: NSTextField! func populateCell(with site: ValetSite) { - self.site = site - - var siteName = "\(site.name).\(Valet.shared.config.tld)" + // Show the name of the site (including tld) + labelSiteName.stringValue = "\(site.name).\(Valet.shared.config.tld)" - labelSiteName.stringValue = siteName - // Show the absolute path, except make sure to replace the /Users/username segment with ~ for readability labelPathName.stringValue = site.absolutePathRelative } diff --git a/phpmon/Domain/SiteList/Cells/SiteListPhpCell.swift b/phpmon/Domain/SiteList/Cells/SiteListPhpCell.swift index 4349207..06d7403 100644 --- a/phpmon/Domain/SiteList/Cells/SiteListPhpCell.swift +++ b/phpmon/Domain/SiteList/Cells/SiteListPhpCell.swift @@ -11,10 +11,14 @@ import AppKit class SiteListPhpCell: NSTableCellView, SiteListCellProtocol { + var site: ValetSite? = nil + @IBOutlet weak var buttonPhpVersion: NSButton! @IBOutlet weak var imageViewPhpVersionOK: NSImageView! func populateCell(with site: ValetSite) { + self.site = site + let versionInUse = site.isolatedPhpVersion?.versionNumber.homebrewVersion ?? PhpEnv.phpInstall.version.short buttonPhpVersion.title = " PHP \(versionInUse)" @@ -25,8 +29,61 @@ class SiteListPhpCell: NSTableCellView, SiteListCellProtocol imageViewPhpVersionOK.isHidden = (site.composerPhp == "???" || !site.composerPhpCompatibleWithLinked) imageViewPhpVersionOK.image = NSImage(named: "Checkmark") } + } + + @IBAction func pressedPhpVersion(_ sender: Any) { + guard let site = self.site else { return } + let alert = NSAlert.init() + alert.alertStyle = .informational + var information = "" + + if (self.site?.isolatedPhpVersion != nil) { + information += "alert.composer_php_isolated.desc".localized( + self.site!.isolatedPhpVersion!.versionNumber.homebrewVersion, + PhpEnv.phpInstall.version.short + ) + information += "\n\n" + } + + information += "alert.composer_php_requirement.type.\(site.composerPhpSource.rawValue)" + .localized + + alert.messageText = "alert.composer_php_requirement.title" + .localized("\(site.name).\(Valet.shared.config.tld)", site.composerPhp) + alert.informativeText = information + + alert.addButton(withTitle: "site_link.close".localized) + + var mapIndex: Int = NSApplication.ModalResponse.alertSecondButtonReturn.rawValue + var map: [Int: String] = [:] + + if site.isolatedPhpVersion == nil { + // Determine which installed versions would be ideal to switch to, + // but make sure to exclude the currently linked version + PhpEnv.shared.validVersions(for: site.composerPhp).filter({ version in + version.homebrewVersion != PhpEnv.phpInstall.version.short + }).forEach { version in + alert.addButton(withTitle: "site_link.switch_to_php".localized(version.homebrewVersion)) + map[mapIndex] = version.homebrewVersion + mapIndex += 1 + } + + alert.beginSheetModal(for: App.shared.siteListWindowController!.window!) { response in + if response.rawValue > NSApplication.ModalResponse.alertFirstButtonReturn.rawValue { + if map.keys.contains(response.rawValue) { + let version = map[response.rawValue]! + Log.info("Pressed button to switch to \(version)") + MainMenu.shared.switchToPhpVersion(version) + } + } + } + } else { + alert.beginSheetModal(for: App.shared.siteListWindowController!.window!) { response in + // + } + } } } diff --git a/phpmon/Domain/SiteList/Cells/SiteListTLSCell.swift b/phpmon/Domain/SiteList/Cells/SiteListTLSCell.swift index 71b3571..fd2d2f5 100644 --- a/phpmon/Domain/SiteList/Cells/SiteListTLSCell.swift +++ b/phpmon/Domain/SiteList/Cells/SiteListTLSCell.swift @@ -11,13 +11,9 @@ import AppKit class SiteListTLSCell: NSTableCellView, SiteListCellProtocol { - var site: ValetSite? = nil - @IBOutlet weak var imageViewLock: NSImageView! func populateCell(with site: ValetSite) { - self.site = site - // Show the green or red lock based on whether the site was secured imageViewLock.contentTintColor = site.secured ? NSColor(named: "IconColorGreen") // green diff --git a/phpmon/Domain/SiteList/Cells/SiteListTypeCell.swift b/phpmon/Domain/SiteList/Cells/SiteListTypeCell.swift index f66296d..497bcb9 100644 --- a/phpmon/Domain/SiteList/Cells/SiteListTypeCell.swift +++ b/phpmon/Domain/SiteList/Cells/SiteListTypeCell.swift @@ -11,20 +11,10 @@ import AppKit class SiteListTypeCell: NSTableCellView, SiteListCellProtocol { - var site: ValetSite? = nil - @IBOutlet weak var labelDriver: NSTextField! - @IBOutlet weak var imageViewType: NSImageView! + @IBOutlet weak var labelPhpVersion: NSTextField! func populateCell(with site: ValetSite) { - // If the `aliasPath` is nil, we're dealing with a parked site (otherwise: linked). - imageViewType.image = NSImage( - named: site.aliasPath == nil - ? "IconParked" - : "IconLinked" - ) - imageViewType.contentTintColor = NSColor.tertiaryLabelColor - labelDriver.stringValue = site.driver ?? "driver.not_detected".localized // Determine the Laravel version @@ -33,6 +23,7 @@ class SiteListTypeCell: NSTableCellView, SiteListCellProtocol labelDriver.stringValue = "Laravel (\(constraint))" } - labelDriver.stringValue += "\nPHP \(site.composerPhp)" + // PHP version + labelPhpVersion.stringValue = site.composerPhp == "???" ? "Any PHP" : "PHP \(site.composerPhp)" } } diff --git a/phpmon/Domain/SiteList/SiteListCell.swift b/phpmon/Domain/SiteList/SiteListCell.swift deleted file mode 100644 index 2bb60c7..0000000 --- a/phpmon/Domain/SiteList/SiteListCell.swift +++ /dev/null @@ -1,63 +0,0 @@ -// -// SiteListCell.swift -// PHP Monitor -// -// Created by Nico Verbruggen on 03/12/2021. -// Copyright © 2021 Nico Verbruggen. All rights reserved. -// - -import Cocoa -import AppKit - -protocol SiteListCellProtocol { - func populateCell(with site: ValetSite) -} - -class SiteListCell: NSTableCellView -{ - override func draw(_ dirtyRect: NSRect) { - super.draw(dirtyRect) - } - - func populateCell(with site: ValetSite) { - } - - /* - @IBAction func pressedPhpVersion(_ sender: Any) { - guard let site = self.site else { return } - - let alert = NSAlert.init() - alert.alertStyle = .informational - - alert.messageText = "alert.composer_php_requirement.title" - .localized("\(site.name).\(Valet.shared.config.tld)", site.composerPhp) - alert.informativeText = "alert.composer_php_requirement.type.\(site.composerPhpSource.rawValue)" - .localized - - alert.addButton(withTitle: "site_link.close".localized) - - var mapIndex: Int = NSApplication.ModalResponse.alertSecondButtonReturn.rawValue - var map: [Int: String] = [:] - - // Determine which installed versions would be ideal to switch to, - // but make sure to exclude the currently linked version - PhpEnv.shared.validVersions(for: site.composerPhp).filter({ version in - version.homebrewVersion != PhpEnv.phpInstall.version.short - }).forEach { version in - alert.addButton(withTitle: "site_link.switch_to_php".localized(version.homebrewVersion)) - map[mapIndex] = version.homebrewVersion - mapIndex += 1 - } - - alert.beginSheetModal(for: App.shared.siteListWindowController!.window!) { response in - if response.rawValue > NSApplication.ModalResponse.alertFirstButtonReturn.rawValue { - if map.keys.contains(response.rawValue) { - let version = map[response.rawValue]! - Log.info("Pressed button to switch to \(version)") - MainMenu.shared.switchToPhpVersion(version) - } - } - } - } - */ -} diff --git a/phpmon/Domain/SiteList/SiteListVC+ContextMenu.swift b/phpmon/Domain/SiteList/SiteListVC+ContextMenu.swift index 98e08d7..70d4da0 100644 --- a/phpmon/Domain/SiteList/SiteListVC+ContextMenu.swift +++ b/phpmon/Domain/SiteList/SiteListVC+ContextMenu.swift @@ -23,6 +23,7 @@ extension SiteListVC { addDetectedApps(to: menu) addSeparator(to: menu) + addIsolate(to: menu, with: site) addUnlink(to: menu, with: site) addToggleSecure(to: menu, with: site) @@ -76,6 +77,10 @@ extension SiteListVC { } } + private func addIsolate(to menu: NSMenu, with site: ValetSite) { + // + } + private func addToggleSecure(to menu: NSMenu, with site: ValetSite) { menu.addItem( withTitle: site.secured diff --git a/phpmon/Domain/SiteList/SiteListVC.swift b/phpmon/Domain/SiteList/SiteListVC.swift index 1d13368..d668b71 100644 --- a/phpmon/Domain/SiteList/SiteListVC.swift +++ b/phpmon/Domain/SiteList/SiteListVC.swift @@ -175,10 +175,11 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { let mapping: [String: String] = [ - "AutomaticTableColumnIdentifier.0": "siteListTLSCell", - "AutomaticTableColumnIdentifier.1": "siteListNameCell", - "AutomaticTableColumnIdentifier.2": "siteListPhpCell", - "AutomaticTableColumnIdentifier.3": "siteListDriverCell", + "TLS": "siteListTLSCell", + "DOMAIN": "siteListNameCell", + "ENVIRONMENT": "siteListPhpCell", + "KIND": "siteListKindCell", + "TYPE": "siteListTypeCell", ] let columnName = tableColumn!.identifier.rawValue diff --git a/phpmon/Localizable.strings b/phpmon/Localizable.strings index 877bc2a..8804d99 100644 --- a/phpmon/Localizable.strings +++ b/phpmon/Localizable.strings @@ -117,6 +117,12 @@ "site_list.alert.invalid_folder_name" = "Invalid folder name"; "site_list.alert.invalid_folder_name_desc" = "This folder could not be resolved to a valid URL. This is usually because there’s a space in the folder name. Please rename the folder, reload the list of sites, and try again."; +"site_list.columns.tls" = "TLS"; +"site_list.columns.domain" = "Domain"; +"site_list.columns.php" = "PHP"; +"site_list.columns.type" = "Type"; +"site_list.columns.kind" = "Kind"; + // DRIVERS "driver.not_detected" = "Other"; @@ -202,8 +208,9 @@ problem manually, using your own Terminal app (this just shows you the output)." "alert.composer_success.info" = "Your global Composer dependencies have been successfully updated."; // Composer Version +"alert.composer_php_isolated.desc" = "This site has been isolated, which means that Valet serves PHP %@ for this site specifically (the global version is %@)."; "alert.composer_php_requirement.title" = "`%@` has the following PHP requirement: %@."; -"alert.composer_php_requirement.type.unknown" = "The required PHP version was determined by an unknown factor."; +"alert.composer_php_requirement.type.unknown" = "The required PHP version is a mystery."; "alert.composer_php_requirement.type.require" = "This required PHP version was determined by checking the `require` field in the `composer.json` file when the site list was last refreshed."; "alert.composer_php_requirement.type.platform" = "This required PHP version was determined by checking the `platform` field in the `composer.json` file when the site list was last refreshed."; "alert.composer_php_requirement.type.valetphprc" = "This required PHP version was determined by checking the .valetphprc file in your project's directory.";