mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-21 02:55:37 -08:00
feat(segment): umbraco segment to display modern or legacy version
This commit is contained in:
parent
46c6275630
commit
30e4a591d7
|
@ -232,6 +232,8 @@ const (
|
|||
TIME SegmentType = "time"
|
||||
// UI5 Tooling segment
|
||||
UI5TOOLING SegmentType = "ui5tooling"
|
||||
// UMBRACO writes the Umbraco version if Umbraco is present
|
||||
UMBRACO SegmentType = "umbraco"
|
||||
// UNITY writes which Unity version is currently active
|
||||
UNITY SegmentType = "unity"
|
||||
// UPGRADE lets you know if you can upgrade Oh My Posh
|
||||
|
@ -323,6 +325,7 @@ var Segments = map[SegmentType]func() SegmentWriter{
|
|||
TEXT: func() SegmentWriter { return &segments.Text{} },
|
||||
TIME: func() SegmentWriter { return &segments.Time{} },
|
||||
UI5TOOLING: func() SegmentWriter { return &segments.UI5Tooling{} },
|
||||
UMBRACO: func() SegmentWriter { return &segments.Umbraco{} },
|
||||
UNITY: func() SegmentWriter { return &segments.Unity{} },
|
||||
UPGRADE: func() SegmentWriter { return &segments.Upgrade{} },
|
||||
VALA: func() SegmentWriter { return &segments.Vala{} },
|
||||
|
|
159
src/segments/umbraco.go
Normal file
159
src/segments/umbraco.go
Normal file
|
@ -0,0 +1,159 @@
|
|||
package segments
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
||||
"github.com/jandedobbeleer/oh-my-posh/src/properties"
|
||||
)
|
||||
|
||||
type Umbraco struct {
|
||||
props properties.Properties
|
||||
env platform.Environment
|
||||
|
||||
Modern bool
|
||||
Version string
|
||||
}
|
||||
|
||||
type CSProj struct {
|
||||
PackageReferences []struct {
|
||||
Name string `xml:"include,attr"`
|
||||
Version string `xml:"version,attr"`
|
||||
} `xml:"ItemGroup>PackageReference"`
|
||||
}
|
||||
|
||||
type WebConfig struct {
|
||||
AppSettings []struct {
|
||||
Key string `xml:"key,attr"`
|
||||
Value string `xml:"value,attr"`
|
||||
} `xml:"appSettings>add"`
|
||||
}
|
||||
|
||||
func (u *Umbraco) Enabled() bool {
|
||||
var location string
|
||||
|
||||
// Check if we have a folder called Umbraco or umbraco in the current directory or a parent directory
|
||||
folders := []string{"umbraco", "Umbraco"}
|
||||
for _, folder := range folders {
|
||||
if file, err := u.env.HasParentFilePath(folder); err == nil {
|
||||
location = file.ParentFolder
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if len(location) == 0 {
|
||||
u.env.Debug("No umbraco folder found in parent directories")
|
||||
return false
|
||||
}
|
||||
|
||||
files := u.env.LsDir(location)
|
||||
|
||||
// Loop over files where we found the Umbraco folder
|
||||
// To see if we can find a web.config or *.csproj file
|
||||
// If we do then we can scan the file to see if Umbraco has been installed
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
if strings.EqualFold(file.Name(), "web.config") {
|
||||
return u.TryFindLegacyUmbraco(filepath.Join(location, file.Name()))
|
||||
}
|
||||
|
||||
if strings.EqualFold(filepath.Ext(file.Name()), ".csproj") {
|
||||
return u.TryFindModernUmbraco(filepath.Join(location, file.Name()))
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (u *Umbraco) Template() string {
|
||||
return "{{.Version}} "
|
||||
}
|
||||
|
||||
func (u *Umbraco) Init(props properties.Properties, env platform.Environment) {
|
||||
u.props = props
|
||||
u.env = env
|
||||
}
|
||||
|
||||
func (u *Umbraco) TryFindModernUmbraco(configPath string) bool {
|
||||
// Check the passed in filepath is not empty
|
||||
if len(configPath) == 0 {
|
||||
u.env.Debug("UMBRACO: No .CSProj file path passed in")
|
||||
return false
|
||||
}
|
||||
|
||||
// Read the file contents of the csproj file
|
||||
contents := u.env.FileContent(configPath)
|
||||
|
||||
// As XML unmarshal does not support case insenstivity attributes
|
||||
// this is just a simple string replace to lowercase the attribute
|
||||
contents = strings.ReplaceAll(contents, "Include=", "include=")
|
||||
contents = strings.ReplaceAll(contents, "Version=", "version=")
|
||||
|
||||
// XML Unmarshal - map the contents of the file to the CSProj struct
|
||||
csProjPackages := CSProj{}
|
||||
err := xml.Unmarshal([]byte(contents), &csProjPackages)
|
||||
|
||||
if err != nil {
|
||||
u.env.Debug("UMBRACO: Error while trying to parse XML of .csproj file")
|
||||
u.env.Debug(err.Error())
|
||||
}
|
||||
|
||||
// Loop over all the package references
|
||||
for _, packageReference := range csProjPackages.PackageReferences {
|
||||
if strings.EqualFold(packageReference.Name, "umbraco.cms") {
|
||||
u.Modern = true
|
||||
u.Version = packageReference.Version
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (u *Umbraco) TryFindLegacyUmbraco(configPath string) bool {
|
||||
// Check the passed in filepath is not empty
|
||||
if len(configPath) == 0 {
|
||||
u.env.Debug("UMBRACO: No web.config file path passed in")
|
||||
return false
|
||||
}
|
||||
|
||||
// Read the file contents of the web.config
|
||||
contents := u.env.FileContent(configPath)
|
||||
|
||||
// As XML unmarshal does not support case insenstivity attributes
|
||||
// this is just a simple string replace to lowercase the attribute
|
||||
contents = strings.ReplaceAll(contents, "Key=", "key=")
|
||||
contents = strings.ReplaceAll(contents, "Value=", "value=")
|
||||
|
||||
// XML Unmarshal - web.config all AppSettings keys
|
||||
webConfigAppSettings := WebConfig{}
|
||||
err := xml.Unmarshal([]byte(contents), &webConfigAppSettings)
|
||||
|
||||
if err != nil {
|
||||
u.env.Debug("UMBRACO: Error while trying to parse XML of web.config file")
|
||||
u.env.Debug(err.Error())
|
||||
}
|
||||
|
||||
// Loop over all the package references
|
||||
for _, appSetting := range webConfigAppSettings.AppSettings {
|
||||
if strings.EqualFold(appSetting.Key, "umbraco.core.configurationstatus") {
|
||||
u.Modern = false
|
||||
|
||||
if len(appSetting.Value) == 0 {
|
||||
u.Version = "Unknown"
|
||||
} else {
|
||||
u.Version = appSetting.Value
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
128
src/segments/umbraco_test.go
Normal file
128
src/segments/umbraco_test.go
Normal file
|
@ -0,0 +1,128 @@
|
|||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io/fs"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/jandedobbeleer/oh-my-posh/src/mock"
|
||||
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
mock2 "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
func TestUmbracoSegment(t *testing.T) {
|
||||
cases := []struct {
|
||||
Case string
|
||||
ExpectedEnabled bool
|
||||
ExpectedString string
|
||||
Template string
|
||||
HasUmbracoFolder bool
|
||||
HasCsproj bool
|
||||
HasWebConfig bool
|
||||
}{
|
||||
{
|
||||
Case: "No Umbraco folder found",
|
||||
HasUmbracoFolder: false,
|
||||
ExpectedEnabled: false, // Segment should not be enabled
|
||||
},
|
||||
{
|
||||
Case: "Umbraco Folder but NO web.config or .csproj",
|
||||
HasUmbracoFolder: true,
|
||||
HasCsproj: false,
|
||||
HasWebConfig: false,
|
||||
ExpectedEnabled: false, // Segment should not be enabled
|
||||
},
|
||||
{
|
||||
Case: "Umbraco Folder and web.config but NO .csproj",
|
||||
HasUmbracoFolder: true,
|
||||
HasCsproj: false,
|
||||
HasWebConfig: true,
|
||||
ExpectedEnabled: true, // Segment should be enabled and visible
|
||||
Template: "{{ .Version }}",
|
||||
ExpectedString: "8.18.9",
|
||||
},
|
||||
{
|
||||
Case: "Umbraco Folder and .csproj but NO web.config",
|
||||
HasUmbracoFolder: true,
|
||||
HasCsproj: true,
|
||||
HasWebConfig: false,
|
||||
ExpectedEnabled: true, // Segment should be enabled and visible
|
||||
Template: "{{ .Version }}",
|
||||
ExpectedString: "12.1.2",
|
||||
},
|
||||
{
|
||||
Case: "Umbraco Folder and .csproj with custom template",
|
||||
HasUmbracoFolder: true,
|
||||
HasCsproj: true,
|
||||
ExpectedEnabled: true,
|
||||
Template: "Version:{{ .Version }} ModernUmbraco:{{ .Modern }}",
|
||||
ExpectedString: "Version:12.1.2 ModernUmbraco:true",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
// Prepare/arrange the test
|
||||
env := new(mock.MockedEnvironment)
|
||||
var sampleCSProj, sampleWebConfig string
|
||||
|
||||
if tc.HasCsproj {
|
||||
content, _ := os.ReadFile("../test/umbraco/MyProject.csproj")
|
||||
sampleCSProj = string(content)
|
||||
}
|
||||
if tc.HasWebConfig {
|
||||
content, _ := os.ReadFile("../test/umbraco/web.config")
|
||||
sampleWebConfig = string(content)
|
||||
}
|
||||
|
||||
const umbracoProjectDirectory = "/workspace/MyProject"
|
||||
env.On("Pwd").Return(umbracoProjectDirectory)
|
||||
env.On("FileContent", filepath.Join(umbracoProjectDirectory, "MyProject.csproj")).Return(sampleCSProj)
|
||||
env.On("FileContent", filepath.Join(umbracoProjectDirectory, "web.config")).Return(sampleWebConfig)
|
||||
env.On("Debug", mock2.Anything)
|
||||
|
||||
if tc.HasUmbracoFolder {
|
||||
fileInfo := &platform.FileInfo{
|
||||
Path: "/workspace/MyProject/Umbraco",
|
||||
ParentFolder: "/workspace/MyProject",
|
||||
IsDir: true,
|
||||
}
|
||||
|
||||
env.On("HasParentFilePath", "umbraco").Return(fileInfo, nil)
|
||||
} else {
|
||||
env.On("HasParentFilePath", "Umbraco").Return(&platform.FileInfo{}, errors.New("no such file or directory"))
|
||||
env.On("HasParentFilePath", "umbraco").Return(&platform.FileInfo{}, errors.New("no such file or directory"))
|
||||
}
|
||||
|
||||
dirEntries := []fs.DirEntry{}
|
||||
if tc.HasCsproj {
|
||||
dirEntries = append(dirEntries, &MockDirEntry{
|
||||
name: "MyProject.csproj",
|
||||
isDir: false,
|
||||
})
|
||||
}
|
||||
|
||||
if tc.HasWebConfig {
|
||||
dirEntries = append(dirEntries, &MockDirEntry{
|
||||
name: "web.config",
|
||||
isDir: false,
|
||||
})
|
||||
}
|
||||
|
||||
env.On("LsDir", umbracoProjectDirectory).Return(dirEntries)
|
||||
|
||||
// Setup the Umbraco segment with the mocked environment & properties
|
||||
umb := &Umbraco{
|
||||
env: env,
|
||||
}
|
||||
|
||||
// Assert the test results
|
||||
// Check if the segment should be enabled and
|
||||
// the rendered string matches what we expect when specifying a template for the segment
|
||||
assert.Equal(t, tc.ExpectedEnabled, umb.Enabled(), tc.Case)
|
||||
assert.Equal(t, tc.ExpectedString, renderTemplate(env, tc.Template, umb), tc.Case)
|
||||
}
|
||||
}
|
35
src/test/umbraco/MyProject.csproj
Normal file
35
src/test/umbraco/MyProject.csproj
Normal file
|
@ -0,0 +1,35 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="uMarketingSuite" Version="1.23.0" />
|
||||
<PackageReference Include="Umbraco.TheStarterKit" Version="11.0.0" />
|
||||
<PackageReference Include="Umbraco.Cms" Version="12.1.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Opt-in to app-local ICU to ensure consistent globalization APIs across different platforms -->
|
||||
<PackageReference Include="Microsoft.ICU.ICU4C.Runtime" Version="68.2.0.9"/>
|
||||
<RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" Condition="$(RuntimeIdentifier.StartsWith('linux')) or $(RuntimeIdentifier.StartsWith('win')) or ('$(RuntimeIdentifier)' == '' and !$([MSBuild]::IsOSPlatform('osx')))"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\uMarketingSuite.StarterKit\uMarketingSuite.StarterKit.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Razor files are needed for the backoffice to work correctly -->
|
||||
<CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Remove RazorCompileOnBuild and RazorCompileOnPublish when not using ModelsMode InMemoryAuto -->
|
||||
<RazorCompileOnBuild>false</RazorCompileOnBuild>
|
||||
<RazorCompileOnPublish>false</RazorCompileOnPublish>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
325
src/test/umbraco/web.config
Normal file
325
src/test/umbraco/web.config
Normal file
|
@ -0,0 +1,325 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<!--
|
||||
Define the Web.config template, which is used when creating the initial Web.config,
|
||||
and then transforms from web.Template.[Debug|Release].config are applied.
|
||||
Documentation for Web.config at: https://our.umbraco.com/documentation/Reference/Config/webconfig/
|
||||
-->
|
||||
|
||||
<configSections>
|
||||
<section name="clientDependency" type="ClientDependency.Core.Config.ClientDependencySection, ClientDependency.Core" requirePermission="false"/>
|
||||
|
||||
<sectionGroup name="umbracoConfiguration">
|
||||
<section name="settings" type="Umbraco.Core.Configuration.UmbracoSettings.UmbracoSettingsSection, Umbraco.Core" requirePermission="false"/>
|
||||
<section name="HealthChecks" type="Umbraco.Core.Configuration.HealthChecks.HealthChecksSection, Umbraco.Core" requirePermission="false"/>
|
||||
</sectionGroup>
|
||||
|
||||
<sectionGroup name="imageProcessor">
|
||||
<section name="security" requirePermission="false" type="ImageProcessor.Web.Configuration.ImageSecuritySection, ImageProcessor.Web"/>
|
||||
<section name="processing" requirePermission="false" type="ImageProcessor.Web.Configuration.ImageProcessingSection, ImageProcessor.Web"/>
|
||||
<section name="caching" requirePermission="false" type="ImageProcessor.Web.Configuration.ImageCacheSection, ImageProcessor.Web"/>
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<umbracoConfiguration>
|
||||
<settings configSource="config\umbracoSettings.config"/>
|
||||
<HealthChecks configSource="config\HealthChecks.config"/>
|
||||
</umbracoConfiguration>
|
||||
|
||||
<clientDependency configSource="config\ClientDependency.config"/>
|
||||
|
||||
<appSettings>
|
||||
<add key="Umbraco.Core.ConfigurationStatus" value="8.18.9"/>
|
||||
<add key="Umbraco.Core.ReservedUrls" value=""/>
|
||||
<add key="Umbraco.Core.ReservedPaths" value=""/>
|
||||
<add key="Umbraco.Core.Path" value="~/umbraco"/>
|
||||
<add key="Umbraco.Core.HideTopLevelNodeFromPath" value="true"/>
|
||||
<add key="Umbraco.Core.TimeOutInMinutes" value="20"/>
|
||||
<add key="Umbraco.Core.DefaultUILanguage" value="en-US"/>
|
||||
<add key="Umbraco.Core.UseHttps" value="false"/>
|
||||
<add key="Umbraco.Core.AllowContentDashboardAccessToAllUsers" value="true"/>
|
||||
<add key="Umbraco.Core.ContentDashboardUrl-Allowlist" value=""/>
|
||||
<add key="Umbraco.Core.HelpPage-Allowlist" value=""/>
|
||||
|
||||
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
|
||||
<add key="webpages:Enabled" value="false"/>
|
||||
<add key="enableSimpleMembership" value="false"/>
|
||||
<add key="autoFormsAuthentication" value="false"/>
|
||||
<add key="dataAnnotations:dataTypeAttribute:disableRegEx" value="false"/>
|
||||
|
||||
<add key="owin:appStartup" value="UmbracoDefaultOwinStartup"/>
|
||||
|
||||
<add key="Umbraco.ModelsBuilder.Enable" value="true"/>
|
||||
<add key="Umbraco.ModelsBuilder.ModelsMode" value="PureLive"/>
|
||||
<add key="Umbraco.Web.PublishedCache.NuCache.Serializer" value="MsgPack"/>
|
||||
<add key="Umbraco.Web.SanitizeTinyMce" value="true"/>
|
||||
</appSettings>
|
||||
|
||||
<!--
|
||||
Important: if you're upgrading Umbraco, do not clear the connectionString/providerName during your Web.config merge.
|
||||
-->
|
||||
<connectionStrings>
|
||||
<remove name="umbracoDbDSN"/>
|
||||
<add name="umbracoDbDSN" connectionString="" providerName=""/>
|
||||
</connectionStrings>
|
||||
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="System.Data.SqlServerCe.4.0"/>
|
||||
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0"
|
||||
description=".NET Framework Data Provider for Microsoft SQL Server Compact"
|
||||
type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe"/>
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
|
||||
<system.net>
|
||||
<mailSettings>
|
||||
<!--
|
||||
If you need Umbraco to send out system mails (like reset password and invite user),
|
||||
you must configure your SMTP settings here - for example:
|
||||
-->
|
||||
<!--
|
||||
<smtp from="noreply@example.com" deliveryMethod="Network">
|
||||
<network host="localhost" port="25" enableSsl="false" userName="" password="" />
|
||||
</smtp>
|
||||
-->
|
||||
</mailSettings>
|
||||
</system.net>
|
||||
|
||||
<system.web>
|
||||
<customErrors mode="RemoteOnly"/>
|
||||
|
||||
<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
|
||||
|
||||
<httpRuntime requestValidationMode="2.0" enableVersionHeader="false" targetFramework="4.7.2" maxRequestLength="51200" fcnMode="Single"/>
|
||||
|
||||
<httpModules>
|
||||
<add name="ScriptModule"
|
||||
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
|
||||
<add name="UmbracoModule" type="Umbraco.Web.UmbracoModule,Umbraco.Web"/>
|
||||
<add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core"/>
|
||||
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web"/>
|
||||
</httpModules>
|
||||
|
||||
<httpHandlers>
|
||||
<remove verb="*" path="*.asmx"/>
|
||||
<add verb="*" path="*.asmx"
|
||||
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
validate="false"/>
|
||||
<add verb="*" path="*_AppService.axd"
|
||||
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
validate="false"/>
|
||||
<add verb="GET,HEAD" path="ScriptResource.axd"
|
||||
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
validate="false"/>
|
||||
<add verb="*" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core "/>
|
||||
</httpHandlers>
|
||||
|
||||
<compilation defaultLanguage="c#" debug="false" batch="true" targetFramework="4.7.2" numRecompilesBeforeAppRestart="50"/>
|
||||
|
||||
<authentication mode="Forms">
|
||||
<forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/"/>
|
||||
</authentication>
|
||||
|
||||
<authorization>
|
||||
<allow users="?"/>
|
||||
</authorization>
|
||||
|
||||
<!-- Membership Provider -->
|
||||
<membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15">
|
||||
<providers>
|
||||
<clear/>
|
||||
<add name="UmbracoMembershipProvider" type="Umbraco.Web.Security.Providers.MembersMembershipProvider, Umbraco.Web"
|
||||
minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="10" useLegacyEncoding="false" enablePasswordRetrieval="false"
|
||||
enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Member" passwordFormat="Hashed"
|
||||
allowManuallyChangingPassword="false"/>
|
||||
<add name="UsersMembershipProvider" type="Umbraco.Web.Security.Providers.UsersMembershipProvider, Umbraco.Web"/>
|
||||
</providers>
|
||||
</membership>
|
||||
|
||||
<!-- Role Provider -->
|
||||
<roleManager enabled="true" defaultProvider="UmbracoRoleProvider">
|
||||
<providers>
|
||||
<clear/>
|
||||
<add name="UmbracoRoleProvider" type="Umbraco.Web.Security.Providers.MembersRoleProvider"/>
|
||||
</providers>
|
||||
</roleManager>
|
||||
|
||||
</system.web>
|
||||
|
||||
<system.webServer>
|
||||
<validation validateIntegratedModeConfiguration="false"/>
|
||||
|
||||
<modules runAllManagedModulesForAllRequests="true">
|
||||
<remove name="WebDAVModule"/>
|
||||
<remove name="UmbracoModule"/>
|
||||
<remove name="ScriptModule"/>
|
||||
<remove name="ClientDependencyModule"/>
|
||||
<remove name="FormsAuthentication"/>
|
||||
<remove name="ImageProcessorModule"/>
|
||||
|
||||
<add name="UmbracoModule" type="Umbraco.Web.UmbracoModule,Umbraco.Web"/>
|
||||
<add name="ScriptModule" preCondition="managedHandler"
|
||||
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
|
||||
<add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core"/>
|
||||
<!-- FormsAuthentication is needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) -->
|
||||
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/>
|
||||
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web"/>
|
||||
</modules>
|
||||
|
||||
<handlers accessPolicy="Read, Write, Script, Execute">
|
||||
<remove name="WebServiceHandlerFactory-Integrated"/>
|
||||
<remove name="ScriptHandlerFactory"/>
|
||||
<remove name="ScriptHandlerFactoryAppServices"/>
|
||||
<remove name="ScriptResource"/>
|
||||
<remove name="ClientDependency"/>
|
||||
<remove name="MiniProfiler"/>
|
||||
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
|
||||
<remove name="OPTIONSVerbHandler"/>
|
||||
<remove name="TRACEVerbHandler"/>
|
||||
|
||||
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
|
||||
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
|
||||
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
|
||||
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
|
||||
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode"
|
||||
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
|
||||
<add verb="*" name="ClientDependency" preCondition="integratedMode" path="DependencyHandler.axd"
|
||||
type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core"/>
|
||||
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified"
|
||||
preCondition="integratedMode"/>
|
||||
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler"
|
||||
preCondition="integratedMode,runtimeVersionv4.0"/>
|
||||
</handlers>
|
||||
|
||||
<staticContent>
|
||||
<remove fileExtension=".air"/>
|
||||
<mimeMap fileExtension=".air" mimeType="application/vnd.adobe.air-application-installer-package+zip"/>
|
||||
<remove fileExtension=".svg"/>
|
||||
<mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
|
||||
<remove fileExtension=".woff"/>
|
||||
<mimeMap fileExtension=".woff" mimeType="font/woff"/>
|
||||
<remove fileExtension=".woff2"/>
|
||||
<mimeMap fileExtension=".woff2" mimeType="font/woff2"/>
|
||||
<remove fileExtension=".less"/>
|
||||
<mimeMap fileExtension=".less" mimeType="text/css"/>
|
||||
<remove fileExtension=".mp4"/>
|
||||
<mimeMap fileExtension=".mp4" mimeType="video/mp4"/>
|
||||
<remove fileExtension=".json"/>
|
||||
<mimeMap fileExtension=".json" mimeType="application/json"/>
|
||||
</staticContent>
|
||||
|
||||
<!-- Ensure the powered by header is not returned -->
|
||||
<httpProtocol>
|
||||
<customHeaders>
|
||||
<remove name="X-Powered-By"/>
|
||||
</customHeaders>
|
||||
</httpProtocol>
|
||||
|
||||
<!-- Increase the default upload file size limit -->
|
||||
<security>
|
||||
<requestFiltering>
|
||||
<requestLimits maxAllowedContentLength="52428800"/>
|
||||
</requestFiltering>
|
||||
</security>
|
||||
|
||||
<!--
|
||||
If you wish to use IIS rewrite rules, see the documentation here: https://our.umbraco.com/documentation/Reference/Routing/IISRewriteRules
|
||||
-->
|
||||
<!--
|
||||
<rewrite>
|
||||
<rules></rules>
|
||||
</rewrite>
|
||||
-->
|
||||
</system.webServer>
|
||||
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.2.5.0" newVersion="1.2.5.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="4.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="4.0.0.0-4.0.1.1" newVersion="4.0.1.1"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="4.0.0.0-4.1.4.0" newVersion="4.1.4.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
<location path="umbraco">
|
||||
<system.webServer>
|
||||
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false"/>
|
||||
</system.webServer>
|
||||
</location>
|
||||
<location path="App_Plugins">
|
||||
<system.webServer>
|
||||
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false"/>
|
||||
</system.webServer>
|
||||
</location>
|
||||
|
||||
<imageProcessor>
|
||||
<security configSource="config\imageprocessor\security.config"/>
|
||||
<caching configSource="config\imageprocessor\cache.config"/>
|
||||
<processing configSource="config\imageprocessor\processing.config"/>
|
||||
</imageProcessor>
|
||||
|
||||
<system.codedom>
|
||||
<compilers>
|
||||
<compiler language="c#;cs;csharp" extension=".cs"
|
||||
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
|
||||
warningLevel="4" compilerOptions="/langversion:7 /nowarn:1659;1699;1701"/>
|
||||
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
|
||||
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
|
||||
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
|
||||
</compilers>
|
||||
</system.codedom>
|
||||
|
||||
</configuration>
|
|
@ -310,6 +310,7 @@
|
|||
"text",
|
||||
"terraform",
|
||||
"ui5tooling",
|
||||
"umbraco",
|
||||
"unity",
|
||||
"upgrade",
|
||||
"wakatime",
|
||||
|
@ -3284,6 +3285,29 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"type": { "const": "umbraco" }
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"title": "Display something umbraco",
|
||||
"description": "https://ohmyposh.dev/docs/segments/umbraco",
|
||||
"properties": {
|
||||
"properties": {
|
||||
"properties": {
|
||||
"newprop": {
|
||||
"type": "string",
|
||||
"title": "New Property",
|
||||
"description": "the default text to display",
|
||||
"default": "Hello"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
56
website/docs/segments/umbraco.mdx
Normal file
56
website/docs/segments/umbraco.mdx
Normal file
|
@ -0,0 +1,56 @@
|
|||
---
|
||||
id: umbraco
|
||||
title: Umbraco
|
||||
sidebar_label: Umbraco
|
||||
---
|
||||
|
||||
## What
|
||||
|
||||
Display current Umbraco Version if found inside the current working directory.
|
||||
The segment will only show based on the following logic
|
||||
|
||||
* The current folder contains the folder named umbraco
|
||||
* Modern Umbraco (.NET Core)
|
||||
* Check to see if current folder contains one or more .csproj files
|
||||
* Open .csproj XML files and check to see if Umbraco is installed as a PackageReference
|
||||
* Read the installed version
|
||||
* Legacy Umbraco (.NET Framework)
|
||||
* Check to see if the current folder contains a web.config
|
||||
* Open the XML and look for AppSettings keys
|
||||
* If umbraco is installed it has a setting called umbraco.core.configurationstatus
|
||||
* Read the value inside this AppSetting to get its version
|
||||
|
||||
## Sample Configuration
|
||||
|
||||
import Config from '@site/src/components/Config.js';
|
||||
|
||||
<Config data={{
|
||||
"type": "umbraco",
|
||||
"background": "#ffffff",
|
||||
"foreground": "#d886f1",
|
||||
"style": "diamond",
|
||||
"leading_diamond": "\ue0b6",
|
||||
"trailing_diamond": "\ue0b4",
|
||||
"template": "\udb81\udd49 {{ .Version }}",
|
||||
"background_templates": [
|
||||
"{{ if (.Modern) }}#3544B1{{ end }}",
|
||||
"{{ if not (.Modern) }}#F79C37{{ end }}"
|
||||
]
|
||||
}}/>
|
||||
|
||||
## Template ([info][templates])
|
||||
|
||||
:::note default template
|
||||
|
||||
```template
|
||||
{{ .Version }}
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## Properties
|
||||
|
||||
| Name | Type | Description |
|
||||
| -------------- | --------- | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `.Modern` | `boolean` | a boolean to detemine if this is modern Umbraco V9+ using modern .NET or if its legacy Umbraco using .NET Framework |
|
||||
| `.Version` | `string` | the version of umbraco found |
|
|
@ -120,6 +120,7 @@ module.exports = {
|
|||
"segments/text",
|
||||
"segments/time",
|
||||
"segments/ui5tooling",
|
||||
"segments/umbraco",
|
||||
"segments/unity",
|
||||
"segments/upgrade",
|
||||
"segments/vala",
|
||||
|
|
Loading…
Reference in a new issue