better try a custom .nuspec?

This commit is contained in:
2020-08-04 15:49:54 +02:00
parent 868df49f85
commit 1525765d03
9 changed files with 1169 additions and 545 deletions
+107 -545
View File
@@ -1,546 +1,108 @@
param (
# get, don't execute
[Parameter(Mandatory=$false)]
[Alias("g")]
[switch] $get = $false,
# run local, don't download, assume everything is ready
[Parameter(Mandatory=$false)]
[Alias("l")]
[Alias("loc")]
[switch] $local = $false,
# enable docfx
[Parameter(Mandatory=$false)]
[Alias("doc")]
[switch] $docfx = $false,
# keep the build directories, don't clear them
[Parameter(Mandatory=$false)]
[Alias("c")]
[Alias("cont")]
[switch] $continue = $false,
# execute a command
[Parameter(Mandatory=$false, ValueFromRemainingArguments=$true)]
[String[]]
$command
)
# ################################################################
# BOOTSTRAP
# ################################################################
# create and boot the buildsystem
$ubuild = &"$PSScriptRoot\build-bootstrap.ps1"
if (-not $?) { return }
$ubuild.Boot($PSScriptRoot,
@{ Local = $local; WithDocFx = $docfx },
@{ Continue = $continue })
if ($ubuild.OnError()) { return }
Write-Host "Umbraco Cms Build"
Write-Host "Umbraco.Build v$($ubuild.BuildVersion)"
# ################################################################
# TASKS
# ################################################################
$ubuild.DefineMethod("SetMoreUmbracoVersion",
{
param ( $semver )
$release = "" + $semver.Major + "." + $semver.Minor + "." + $semver.Patch
Write-Host "Update IIS Express port in csproj"
$updater = New-Object "Umbraco.Build.ExpressPortUpdater"
$csproj = "$($this.SolutionRoot)\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj"
$updater.Update($csproj, $release)
})
$ubuild.DefineMethod("SandboxNode",
{
$global:node_path = $env:path
$nodePath = $this.BuildEnv.NodePath
$gitExe = (Get-Command git).Source
if (-not $gitExe) { $gitExe = (Get-Command git).Path }
$gitPath = [System.IO.Path]::GetDirectoryName($gitExe)
$env:path = "$nodePath;$gitPath"
$global:node_nodepath = $this.ClearEnvVar("NODEPATH")
$global:node_npmcache = $this.ClearEnvVar("NPM_CONFIG_CACHE")
$global:node_npmprefix = $this.ClearEnvVar("NPM_CONFIG_PREFIX")
# https://github.com/gruntjs/grunt-contrib-connect/issues/235
$this.SetEnvVar("NODE_NO_HTTP2", "1")
})
$ubuild.DefineMethod("RestoreNode",
{
$env:path = $node_path
$this.SetEnvVar("NODEPATH", $node_nodepath)
$this.SetEnvVar("NPM_CONFIG_CACHE", $node_npmcache)
$this.SetEnvVar("NPM_CONFIG_PREFIX", $node_npmprefix)
$ignore = $this.ClearEnvVar("NODE_NO_HTTP2")
})
$ubuild.DefineMethod("CompileBelle",
{
$src = "$($this.SolutionRoot)\src"
$log = "$($this.BuildTemp)\belle.log"
Write-Host "Compile Belle"
Write-Host "Logging to $log"
# get a temp clean node env (will restore)
$this.SandboxNode()
# stupid PS is going to gather all "warnings" in $error
# so we have to take care of it else they'll bubble and kill the build
if ($error.Count -gt 0) { return }
try {
Push-Location "$($this.SolutionRoot)\src\Umbraco.Web.UI.Client"
Write-Output "" > $log
Write-Output "### node version is:" > $log
node -v >> $log 2>&1
if (-not $?) { throw "Failed to report node version." }
Write-Output "### npm version is:" >> $log 2>&1
npm -v >> $log 2>&1
if (-not $?) { throw "Failed to report npm version." }
Write-Output "### clean npm cache" >> $log 2>&1
npm cache clean --force >> $log 2>&1
$error.Clear() # that one can fail 'cos security bug - ignore
Write-Output "### npm install" >> $log 2>&1
npm install >> $log 2>&1
Write-Output ">> $? $($error.Count)" >> $log 2>&1
# Don't really care about the messages from npm install making us think there are errors
$error.Clear()
Write-Output "### gulp build for version $($this.Version.Release)" >> $log 2>&1
npx gulp build --buildversion=$this.Version.Release >> $log 2>&1
if (-not $?) { throw "Failed to build" } # that one is expected to work
} finally {
Pop-Location
# FIXME: should we filter the log to find errors?
#get-content .\build.tmp\belle.log | %{ if ($_ -match "build") { write $_}}
# restore
$this.RestoreNode()
}
# setting node_modules folder to hidden
# used to prevent VS13 from crashing on it while loading the websites project
# also makes sure aspnet compiler does not try to handle rogue files and chokes
# in VSO with Microsoft.VisualC.CppCodeProvider -related errors
# use get-item -force 'cos it might be hidden already
Write-Host "Set hidden attribute on node_modules"
$dir = Get-Item -force "$src\Umbraco.Web.UI.Client\node_modules"
$dir.Attributes = $dir.Attributes -bor ([System.IO.FileAttributes]::Hidden)
})
$ubuild.DefineMethod("CompileUmbraco",
{
$buildConfiguration = "Release"
$src = "$($this.SolutionRoot)\src"
$log = "$($this.BuildTemp)\msbuild.umbraco.log"
if ($this.BuildEnv.VisualStudio -eq $null)
{
throw "Build environment does not provide VisualStudio."
}
Write-Host "Compile Umbraco"
Write-Host "Logging to $log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$this.BuildEnv.VisualStudio.MsBuild "$src\Umbraco.Web.UI\Umbraco.Web.UI.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir="$($this.BuildTemp)\bin\\" `
/p:WebProjectOutputDir="$($this.BuildTemp)\WebApp\\" `
/p:Verbosity=minimal `
/t:Clean`;Rebuild `
/tv:"$($this.BuildEnv.VisualStudio.ToolsVersion)" `
/p:UmbracoBuild=True `
> $log
if (-not $?) { throw "Failed to compile Umbraco.Web.UI." }
# /p:UmbracoBuild tells the csproj that we are building from PS, not VS
})
$ubuild.DefineMethod("PrepareTests",
{
Write-Host "Prepare Tests"
# FIXME: - idea is to avoid rebuilding everything for tests
# but because of our weird assembly versioning (with .* stuff)
# everything gets rebuilt all the time...
#Copy-Files "$tmp\bin" "." "$tmp\tests"
# data
Write-Host "Copy data files"
if (-not (Test-Path -Path "$($this.BuildTemp)\tests\Packaging" ))
{
Write-Host "Create packaging directory"
mkdir "$($this.BuildTemp)\tests\Packaging" > $null
}
$this.CopyFiles("$($this.SolutionRoot)\src\Umbraco.Tests\Packaging\Packages", "*", "$($this.BuildTemp)\tests\Packaging\Packages")
# required for package install tests
if (-not (Test-Path -Path "$($this.BuildTemp)\tests\bin" ))
{
Write-Host "Create bin directory"
mkdir "$($this.BuildTemp)\tests\bin" > $null
}
})
$ubuild.DefineMethod("CompileTests",
{
$buildConfiguration = "Release"
$log = "$($this.BuildTemp)\msbuild.tests.log"
if ($this.BuildEnv.VisualStudio -eq $null)
{
throw "Build environment does not provide VisualStudio."
}
Write-Host "Compile Tests"
Write-Host "Logging to $log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$this.BuildEnv.VisualStudio.MsBuild "$($this.SolutionRoot)\src\Umbraco.Tests\Umbraco.Tests.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir="$($this.BuildTemp)\tests\\" `
/p:Verbosity=minimal `
/t:Build `
/tv:"$($this.BuildEnv.VisualStudio.ToolsVersion)" `
/p:UmbracoBuild=True `
> $log
if (-not $?) { throw "Failed to compile tests." }
# /p:UmbracoBuild tells the csproj that we are building from PS
})
$ubuild.DefineMethod("PreparePackages",
{
Write-Host "Prepare Packages"
$src = "$($this.SolutionRoot)\src"
$tmp = "$($this.BuildTemp)"
$out = "$($this.BuildOutput)"
$buildConfiguration = "Release"
# restore web.config
$this.TempRestoreFile("$src\Umbraco.Web.UI\web.config")
# cleanup build
Write-Host "Clean build"
$this.RemoveFile("$tmp\bin\*.dll.config")
$this.RemoveFile("$tmp\WebApp\bin\*.dll.config")
# cleanup presentation
Write-Host "Cleanup presentation"
$this.RemoveDirectory("$tmp\WebApp\umbraco.presentation")
# create directories
Write-Host "Create directories"
mkdir "$tmp\Configs" > $null
mkdir "$tmp\Configs\Lang" > $null
mkdir "$tmp\WebApp\App_Data" > $null
#mkdir "$tmp\WebApp\Media" > $null
#mkdir "$tmp\WebApp\Views" > $null
# copy various files
Write-Host "Copy xml documentation"
Copy-Item -force "$tmp\bin\*.xml" "$tmp\WebApp\bin"
Write-Host "Copy transformed configs and langs"
# note: exclude imageprocessor/*.config as imageprocessor pkg installs them
$this.CopyFiles("$tmp\WebApp\config", "*.config", "$tmp\Configs", `
{ -not $_.RelativeName.StartsWith("imageprocessor") })
$this.CopyFiles("$tmp\WebApp\config", "*.js", "$tmp\Configs")
$this.CopyFiles("$tmp\WebApp\config\lang", "*.xml", "$tmp\Configs\Lang")
$this.CopyFile("$tmp\WebApp\web.config", "$tmp\Configs\web.config.transform")
Write-Host "Copy transformed web.config"
$this.CopyFile("$src\Umbraco.Web.UI\web.$buildConfiguration.Config.transformed", "$tmp\WebApp\web.config")
# offset the modified timestamps on all umbraco dlls, as WebResources
# break if date is in the future, which, due to timezone offsets can happen.
Write-Host "Offset dlls timestamps"
Get-ChildItem -r "$tmp\*.dll" | ForEach-Object {
$_.CreationTime = $_.CreationTime.AddHours(-11)
$_.LastWriteTime = $_.LastWriteTime.AddHours(-11)
}
# copy libs
Write-Host "Copy SqlCE libraries"
$nugetPackages = $env:NUGET_PACKAGES
if (-not $nugetPackages)
{
$nugetPackages = [System.Environment]::ExpandEnvironmentVariables("%userprofile%\.nuget\packages")
}
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x86\native", "*.*", "$tmp\bin\x86")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x64\native", "*.*", "$tmp\bin\amd64")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x86\native", "*.*", "$tmp\WebApp\bin\x86")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x64\native", "*.*", "$tmp\WebApp\bin\amd64")
# copy Belle
Write-Host "Copy Belle"
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\assets", "*", "$tmp\WebApp\umbraco\assets")
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\js", "*", "$tmp\WebApp\umbraco\js")
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\lib", "*", "$tmp\WebApp\umbraco\lib")
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\views", "*", "$tmp\WebApp\umbraco\views")
})
$ubuild.DefineMethod("PackageZip",
{
Write-Host "Create Zip packages"
$src = "$($this.SolutionRoot)\src"
$tmp = $this.BuildTemp
$out = $this.BuildOutput
Write-Host "Zip all binaries"
&$this.BuildEnv.Zip a -r "$out\UmbracoCms.AllBinaries.$($this.Version.Semver).zip" `
"$tmp\bin\*" `
"-x!dotless.Core.*" `
> $null
if (-not $?) { throw "Failed to zip UmbracoCms.AllBinaries." }
Write-Host "Zip cms"
&$this.BuildEnv.Zip a -r "$out\UmbracoCms.$($this.Version.Semver).zip" `
"$tmp\WebApp\*" `
"-x!dotless.Core.*" "-x!Content_Types.xml" "-x!*.pdb" `
> $null
if (-not $?) { throw "Failed to zip UmbracoCms." }
})
$ubuild.DefineMethod("PrepareBuild",
{
$this.TempStoreFile("$($this.SolutionRoot)\src\Umbraco.Web.UI\web.config")
Write-Host "Create clean web.config"
$this.CopyFile("$($this.SolutionRoot)\src\Umbraco.Web.UI\web.Template.config", "$($this.SolutionRoot)\src\Umbraco.Web.UI\web.config")
Write-host "Set environment"
$env:UMBRACO_VERSION=$this.Version.Semver.ToString()
$env:UMBRACO_RELEASE=$this.Version.Release
$env:UMBRACO_COMMENT=$this.Version.Comment
$env:UMBRACO_BUILD=$this.Version.Build
if ($args -and $args[0] -eq "vso")
{
Write-host "Set VSO environment"
# set environment variable for VSO
# https://github.com/Microsoft/vsts-tasks/issues/375
# https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md
Write-Host ("##vso[task.setvariable variable=UMBRACO_VERSION;]$($this.Version.Semver.ToString())")
Write-Host ("##vso[task.setvariable variable=UMBRACO_RELEASE;]$($this.Version.Release)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_COMMENT;]$($this.Version.Comment)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_BUILD;]$($this.Version.Build)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_TMP;]$($this.SolutionRoot)\build.tmp")
}
})
$ubuild.DefineMethod("PrepareNuGet",
{
Write-Host "Prepare NuGet"
# add Web.config transform files to the NuGet package
Write-Host "Add web.config transforms to NuGet package"
mv "$($this.BuildTemp)\WebApp\Views\Web.config" "$($this.BuildTemp)\WebApp\Views\Web.config.transform"
})
$nugetsourceUmbraco = "https://api.nuget.org/v3/index.json"
$ubuild.DefineMethod("RestoreNuGet",
{
Write-Host "Restore NuGet"
Write-Host "Logging to $($this.BuildTemp)\nuget.restore.log"
$params = "-Source", $nugetsourceUmbraco
&$this.BuildEnv.NuGet restore "$($this.SolutionRoot)\src\Umbraco.sln" > "$($this.BuildTemp)\nuget.restore.log" @params
if (-not $?) { throw "Failed to restore NuGet packages." }
})
$ubuild.DefineMethod("PackageNuGet",
{
$nuspecs = "$($this.SolutionRoot)\build\NuSpecs"
Write-Host "Create NuGet packages"
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Core.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmscore.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Core." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Web.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmsweb.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Web." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cms.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms." }
# run hook
if ($this.HasMethod("PostPackageNuGet"))
{
Write-Host "Run PostPackageNuGet hook"
$this.PostPackageNuGet();
if (-not $?) { throw "Failed to run hook." }
}
})
$ubuild.DefineMethod("VerifyNuGet",
{
$this.VerifyNuGetConsistency(
("UmbracoCms", "UmbracoCms.Core", "UmbracoCms.Web"),
("Umbraco.Core", "Umbraco.Web", "Umbraco.Web.UI", "Umbraco.Examine"))
if ($this.OnError()) { return }
})
$ubuild.DefineMethod("PrepareAzureGallery",
{
Write-Host "Prepare Azure Gallery"
$this.CopyFile("$($this.SolutionRoot)\build\Azure\azuregalleryrelease.ps1", $this.BuildOutput)
})
$ubuild.DefineMethod("PrepareCSharpDocs",
{
Write-Host "Prepare C# Documentation"
$src = "$($this.SolutionRoot)\src"
$tmp = $this.BuildTemp
$out = $this.BuildOutput
$DocFxJson = Join-Path -Path $src "\ApiDocs\docfx.json"
$DocFxSiteOutput = Join-Path -Path $tmp "\_site\*.*"
#restore nuget packages
$this.RestoreNuGet()
# run DocFx
$DocFx = $this.BuildEnv.DocFx
& $DocFx metadata $DocFxJson
& $DocFx build $DocFxJson
# zip it
& $this.BuildEnv.Zip a -tzip -r "$out\csharp-docs.zip" $DocFxSiteOutput
})
$ubuild.DefineMethod("PrepareAngularDocs",
{
Write-Host "Prepare Angular Documentation"
$src = "$($this.SolutionRoot)\src"
$out = $this.BuildOutput
"Moving to Umbraco.Web.UI.Docs folder"
cd ..\src\Umbraco.Web.UI.Docs
"Generating the docs and waiting before executing the next commands"
& npm install
& npx gulp docs
# change baseUrl
$BaseUrl = "https://our.umbraco.com/apidocs/v8/ui/"
$IndexPath = "./api/index.html"
(Get-Content $IndexPath).replace('location.href.replace(rUrl, indexFile)', "`'" + $BaseUrl + "`'") | Set-Content $IndexPath
# zip it
& $this.BuildEnv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Docs\api\*.*"
})
$ubuild.DefineMethod("Build",
{
$error.Clear()
$this.PrepareBuild()
if ($this.OnError()) { return }
$this.RestoreNuGet()
if ($this.OnError()) { return }
$this.CompileBelle()
if ($this.OnError()) { return }
$this.CompileUmbraco()
if ($this.OnError()) { return }
$this.PrepareTests()
if ($this.OnError()) { return }
$this.CompileTests()
if ($this.OnError()) { return }
# not running tests
$this.PreparePackages()
if ($this.OnError()) { return }
$this.PackageZip()
if ($this.OnError()) { return }
$this.VerifyNuGet()
if ($this.OnError()) { return }
$this.PrepareNuGet()
if ($this.OnError()) { return }
$this.PackageNuGet()
if ($this.OnError()) { return }
$this.PrepareAzureGallery()
if ($this.OnError()) { return }
$this.PostPackageHook()
if ($this.OnError()) { return }
Write-Host "Done"
})
$ubuild.DefineMethod("PostPackageHook",
{
# run hook
if ($this.HasMethod("PostPackage"))
{
Write-Host "Run PostPackage hook"
$this.PostPackage();
if (-not $?) { throw "Failed to run hook." }
}
})
# ################################################################
# RUN
# ################################################################
# configure
$ubuild.ReleaseBranches = @( "master" )
# run
if (-not $get)
{
cd
if ($command.Length -eq 0)
{
$command = @( "Build" )
}
$ubuild.RunMethod($command);
if ($ubuild.OnError()) { return }
}
if ($get) { return $ubuild }
param(
# get, don't execute
[Parameter(Mandatory=$false)]
[Alias("g")]
[switch] $get = $false,
# execute a command
[Parameter(Mandatory=$false, ValueFromRemainingArguments=$true)]
[String[]]
$command
)
# ################################################################
# VARIABLES
# ################################################################
$rootPath = Join-Path $PSScriptRoot "/.."
$packagesPath = Join-Path $rootPath "/build/packages"
$zeroCore = "zero.Core"
$zeroWeb = "zero.Web"
$zeroWebUI = "zero.Web.UI"
$zeroCommerce = "zero.Commerce"
# ################################################################
# FUNCTIONS
# ################################################################
function Set-Project([String] $project)
{
cd ..
cd $project
}
function Go-Root()
{
cd ..
cd "build"
}
function New-Line()
{
Write-Host ""
}
# ################################################################
# WARMUP
# ################################################################
# output welcome message
Write-Host "zero v0.1.0" -ForegroundColor DarkCyan
New-Line
# cleanup directory
if (Test-Path -Path $packagesPath -PathType Container)
{
Write-Host "Cleanup packages directory..." -NoNewline
Remove-Item -LiteralPath $packagesPath -Force -Recurse
New-Item -Path $packagesPath -ItemType Directory
Write-Host "Done" -ForegroundColor Cyan
}
# ################################################################
# BUILD + PACK
# ################################################################
# pack zero core
Write-Host "zero.Core: building and packing..."
New-Line
Set-Project $zeroCore
dotnet pack -o $packagesPath
Go-Root
Write-Host "Done" -ForegroundColor Cyan
New-Line
# pack zero web
Write-Host "zero.Web: building and packing..."
New-Line
Set-Project $zeroWeb
dotnet pack -o $packagesPath
Go-Root
Write-Host "Done" -ForegroundColor Cyan
New-Line
# pack zero web
Write-Host "zero.XTest: building and packing..."
New-Line
Set-Project "zero.XTest"
dotnet pack -o $packagesPath
Go-Root
Write-Host "Done" -ForegroundColor Cyan
New-Line
# pack zero commerce
Write-Host "zero.Commerce: building and packing..."
New-Line
Set-Project $zeroCommerce
dotnet pack -o $packagesPath
Go-Root
Write-Host "Done" -ForegroundColor Cyan
New-Line
+6
View File
@@ -5,6 +5,12 @@
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<PackageId>zero.Core</PackageId>
<Version>0.1.0</Version>
<Description>// TODO</Description>
</PropertyGroup>
<!--<ItemGroup>
<Compile Include="..\AssemblyInfo.cs" Link="Properties\AssemblyInfo.cs" />
</ItemGroup>-->
+26
View File
@@ -6,6 +6,12 @@
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<PropertyGroup>
<PackageId>zero.Web</PackageId>
<Version>0.1.0</Version>
<Description>// TODO 2</Description>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.0-preview.7.20365.19" />
@@ -19,4 +25,24 @@
<ProjectReference Include="..\zero.Core\zero.Core.csproj" />
</ItemGroup>
<!--<ItemGroup>
<BackofficeUI Include="..\zero.Web.UI\**\*" Exclude="..\zero.Web.UI\node_modules\**\*;..\zero.Web.UI\Assets\*.js;..\zero.Web.UI\package-lock.json" />
<Content Include="@(BackofficeUI)" Link="zero\web\%(RecursiveDir)%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest">
<Pack>true</Pack>
<PackagePath>content\zero\web\</PackagePath>
</Content>
</ItemGroup>-->
<!--<Target Name="CopyBackofficeUI" BeforeTargets="BeforeBuild">
<Message Text="Copy Backoffice UI" />
<MakeDir Directories="$(OutDir)\zero\web" Condition="!Exists('$(OutDir)\zero\web')" />
<ItemGroup>
<BackofficeUI Include="..\zero.Web.UI\**\*" Exclude="..\zero.Web.UI\node_modules\**\*;..\zero.Web.UI\Assets\*.js;..\zero.Web.UI\package-lock.json" />
<Content Include="@(BackofficeUI)" Link="zero\web\%(RecursiveDir)%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest">
<Pack>true</Pack>
<PackagePath>zero\web\</PackagePath>
</Content>
</ItemGroup>
</Target>-->
</Project>
+8
View File
@@ -0,0 +1,8 @@
using System;
namespace zero.XTest
{
public class Class1
{
}
}
@@ -0,0 +1,257 @@
{
"AF": "Afghanistan",
"EG": "\u00c4gypten",
"AX": "\u00c5landinseln",
"AL": "Albanien",
"DZ": "Algerien",
"AS": "Amerikanisch-Samoa",
"VI": "Amerikanische Jungferninseln",
"UM": "Amerikanische \u00dcberseeinseln",
"AD": "Andorra",
"AO": "Angola",
"AI": "Anguilla",
"AQ": "Antarktis",
"AG": "Antigua und Barbuda",
"GQ": "\u00c4quatorialguinea",
"AR": "Argentinien",
"AM": "Armenien",
"AW": "Aruba",
"AC": "Ascension",
"AZ": "Aserbaidschan",
"ET": "\u00c4thiopien",
"AU": "Australien",
"BS": "Bahamas",
"BH": "Bahrain",
"BD": "Bangladesch",
"BB": "Barbados",
"BY": "Belarus",
"BE": "Belgien",
"BZ": "Belize",
"BJ": "Benin",
"BM": "Bermuda",
"BT": "Bhutan",
"BO": "Bolivien",
"BQ": "Bonaire, Sint Eustatius und Saba",
"BA": "Bosnien und Herzegowina",
"BW": "Botsuana",
"BR": "Brasilien",
"VG": "Britische Jungferninseln",
"IO": "Britisches Territorium im Indischen Ozean",
"BN": "Brunei Darussalam",
"BG": "Bulgarien",
"BF": "Burkina Faso",
"BI": "Burundi",
"CV": "Cabo Verde",
"EA": "Ceuta und Melilla",
"CL": "Chile",
"CN": "China",
"CK": "Cookinseln",
"CR": "Costa Rica",
"CI": "C\u00f4te d\u2019Ivoire",
"CW": "Cura\u00e7ao",
"DK": "D\u00e4nemark",
"DE": "Deutschland",
"DG": "Diego Garcia",
"DM": "Dominica",
"DO": "Dominikanische Republik",
"DJ": "Dschibuti",
"EC": "Ecuador",
"SV": "El Salvador",
"ER": "Eritrea",
"EE": "Estland",
"FK": "Falklandinseln",
"FO": "F\u00e4r\u00f6er",
"FJ": "Fidschi",
"FI": "Finnland",
"FR": "Frankreich",
"GF": "Franz\u00f6sisch-Guayana",
"PF": "Franz\u00f6sisch-Polynesien",
"TF": "Franz\u00f6sische S\u00fcd- und Antarktisgebiete",
"GA": "Gabun",
"GM": "Gambia",
"GE": "Georgien",
"GH": "Ghana",
"GI": "Gibraltar",
"GD": "Grenada",
"GR": "Griechenland",
"GL": "Gr\u00f6nland",
"GP": "Guadeloupe",
"GU": "Guam",
"GT": "Guatemala",
"GG": "Guernsey",
"GN": "Guinea",
"GW": "Guinea-Bissau",
"GY": "Guyana",
"HT": "Haiti",
"HN": "Honduras",
"IN": "Indien",
"ID": "Indonesien",
"IQ": "Irak",
"IR": "Iran",
"IE": "Irland",
"IS": "Island",
"IM": "Isle of Man",
"IL": "Israel",
"IT": "Italien",
"JM": "Jamaika",
"JP": "Japan",
"YE": "Jemen",
"JE": "Jersey",
"JO": "Jordanien",
"KY": "Kaimaninseln",
"KH": "Kambodscha",
"CM": "Kamerun",
"CA": "Kanada",
"IC": "Kanarische Inseln",
"KZ": "Kasachstan",
"QA": "Katar",
"KE": "Kenia",
"KG": "Kirgisistan",
"KI": "Kiribati",
"CC": "Kokosinseln",
"CO": "Kolumbien",
"KM": "Komoren",
"CG": "Kongo-Brazzaville",
"CD": "Kongo-Kinshasa",
"XK": "Kosovo",
"HR": "Kroatien",
"CU": "Kuba",
"KW": "Kuwait",
"LA": "Laos",
"LS": "Lesotho",
"LV": "Lettland",
"LB": "Libanon",
"LR": "Liberia",
"LY": "Libyen",
"LI": "Liechtenstein",
"LT": "Litauen",
"LU": "Luxemburg",
"MG": "Madagaskar",
"MW": "Malawi",
"MY": "Malaysia",
"MV": "Malediven",
"ML": "Mali",
"MT": "Malta",
"MA": "Marokko",
"MH": "Marshallinseln",
"MQ": "Martinique",
"MR": "Mauretanien",
"MU": "Mauritius",
"YT": "Mayotte",
"MX": "Mexiko",
"FM": "Mikronesien",
"MC": "Monaco",
"MN": "Mongolei",
"ME": "Montenegro",
"MS": "Montserrat",
"MZ": "Mosambik",
"MM": "Myanmar",
"NA": "Namibia",
"NR": "Nauru",
"NP": "Nepal",
"NC": "Neukaledonien",
"NZ": "Neuseeland",
"NI": "Nicaragua",
"NL": "Niederlande",
"NE": "Niger",
"NG": "Nigeria",
"NU": "Niue",
"KP": "Nordkorea",
"MP": "N\u00f6rdliche Marianen",
"MK": "Nordmazedonien",
"NF": "Norfolkinsel",
"NO": "Norwegen",
"OM": "Oman",
"AT": "\u00d6sterreich",
"PK": "Pakistan",
"PS": "Pal\u00e4stinensische Autonomiegebiete",
"PW": "Palau",
"PA": "Panama",
"PG": "Papua-Neuguinea",
"PY": "Paraguay",
"PE": "Peru",
"PH": "Philippinen",
"PN": "Pitcairninseln",
"PL": "Polen",
"PT": "Portugal",
"XA": "Pseudo-Accents",
"XB": "Pseudo-Bidi",
"PR": "Puerto Rico",
"MD": "Republik Moldau",
"RE": "R\u00e9union",
"RW": "Ruanda",
"RO": "Rum\u00e4nien",
"RU": "Russland",
"SB": "Salomonen",
"ZM": "Sambia",
"WS": "Samoa",
"SM": "San Marino",
"ST": "S\u00e3o Tom\u00e9 und Pr\u00edncipe",
"SA": "Saudi-Arabien",
"SE": "Schweden",
"CH": "Schweiz",
"SN": "Senegal",
"RS": "Serbien",
"SC": "Seychellen",
"SL": "Sierra Leone",
"ZW": "Simbabwe",
"SG": "Singapur",
"SX": "Sint Maarten",
"SK": "Slowakei",
"SI": "Slowenien",
"SO": "Somalia",
"HK": "Sonderverwaltungsregion Hongkong",
"MO": "Sonderverwaltungsregion Macau",
"ES": "Spanien",
"SJ": "Spitzbergen und Jan Mayen",
"LK": "Sri Lanka",
"BL": "St. Barth\u00e9lemy",
"SH": "St. Helena",
"KN": "St. Kitts und Nevis",
"LC": "St. Lucia",
"MF": "St. Martin",
"PM": "St. Pierre und Miquelon",
"VC": "St. Vincent und die Grenadinen",
"ZA": "S\u00fcdafrika",
"SD": "Sudan",
"GS": "S\u00fcdgeorgien und die S\u00fcdlichen Sandwichinseln",
"KR": "S\u00fcdkorea",
"SS": "S\u00fcdsudan",
"SR": "Suriname",
"SZ": "Swasiland",
"SY": "Syrien",
"TJ": "Tadschikistan",
"TW": "Taiwan",
"TZ": "Tansania",
"TH": "Thailand",
"TL": "Timor-Leste",
"TG": "Togo",
"TK": "Tokelau",
"TO": "Tonga",
"TT": "Trinidad und Tobago",
"TA": "Tristan da Cunha",
"TD": "Tschad",
"CZ": "Tschechien",
"TN": "Tunesien",
"TR": "T\u00fcrkei",
"TM": "Turkmenistan",
"TC": "Turks- und Caicosinseln",
"TV": "Tuvalu",
"UG": "Uganda",
"UA": "Ukraine",
"HU": "Ungarn",
"UY": "Uruguay",
"UZ": "Usbekistan",
"VU": "Vanuatu",
"VA": "Vatikanstadt",
"VE": "Venezuela",
"AE": "Vereinigte Arabische Emirate",
"US": "Vereinigte Staaten",
"GB": "Vereinigtes K\u00f6nigreich",
"VN": "Vietnam",
"WF": "Wallis und Futuna",
"CX": "Weihnachtsinsel",
"EH": "Westsahara",
"CF": "Zentralafrikanische Republik",
"CY": "Zypern"
}
@@ -0,0 +1,257 @@
{
"AF": "Afghanistan",
"AX": "\u00c5land Islands",
"AL": "Albania",
"DZ": "Algeria",
"AS": "American Samoa",
"AD": "Andorra",
"AO": "Angola",
"AI": "Anguilla",
"AQ": "Antarctica",
"AG": "Antigua & Barbuda",
"AR": "Argentina",
"AM": "Armenia",
"AW": "Aruba",
"AC": "Ascension Island",
"AU": "Australia",
"AT": "Austria",
"AZ": "Azerbaijan",
"BS": "Bahamas",
"BH": "Bahrain",
"BD": "Bangladesh",
"BB": "Barbados",
"BY": "Belarus",
"BE": "Belgium",
"BZ": "Belize",
"BJ": "Benin",
"BM": "Bermuda",
"BT": "Bhutan",
"BO": "Bolivia",
"BA": "Bosnia & Herzegovina",
"BW": "Botswana",
"BR": "Brazil",
"IO": "British Indian Ocean Territory",
"VG": "British Virgin Islands",
"BN": "Brunei",
"BG": "Bulgaria",
"BF": "Burkina Faso",
"BI": "Burundi",
"KH": "Cambodia",
"CM": "Cameroon",
"CA": "Canada",
"IC": "Canary Islands",
"CV": "Cape Verde",
"BQ": "Caribbean Netherlands",
"KY": "Cayman Islands",
"CF": "Central African Republic",
"EA": "Ceuta & Melilla",
"TD": "Chad",
"CL": "Chile",
"CN": "China",
"CX": "Christmas Island",
"CC": "Cocos (Keeling) Islands",
"CO": "Colombia",
"KM": "Comoros",
"CG": "Congo - Brazzaville",
"CD": "Congo - Kinshasa",
"CK": "Cook Islands",
"CR": "Costa Rica",
"CI": "C\u00f4te d\u2019Ivoire",
"HR": "Croatia",
"CU": "Cuba",
"CW": "Cura\u00e7ao",
"CY": "Cyprus",
"CZ": "Czechia",
"DK": "Denmark",
"DG": "Diego Garcia",
"DJ": "Djibouti",
"DM": "Dominica",
"DO": "Dominican Republic",
"EC": "Ecuador",
"EG": "Egypt",
"SV": "El Salvador",
"GQ": "Equatorial Guinea",
"ER": "Eritrea",
"EE": "Estonia",
"SZ": "Eswatini",
"ET": "Ethiopia",
"FK": "Falkland Islands",
"FO": "Faroe Islands",
"FJ": "Fiji",
"FI": "Finland",
"FR": "France",
"GF": "French Guiana",
"PF": "French Polynesia",
"TF": "French Southern Territories",
"GA": "Gabon",
"GM": "Gambia",
"GE": "Georgia",
"DE": "Germany",
"GH": "Ghana",
"GI": "Gibraltar",
"GR": "Greece",
"GL": "Greenland",
"GD": "Grenada",
"GP": "Guadeloupe",
"GU": "Guam",
"GT": "Guatemala",
"GG": "Guernsey",
"GN": "Guinea",
"GW": "Guinea-Bissau",
"GY": "Guyana",
"HT": "Haiti",
"HN": "Honduras",
"HK": "Hong Kong SAR China",
"HU": "Hungary",
"IS": "Iceland",
"IN": "India",
"ID": "Indonesia",
"IR": "Iran",
"IQ": "Iraq",
"IE": "Ireland",
"IM": "Isle of Man",
"IL": "Israel",
"IT": "Italy",
"JM": "Jamaica",
"JP": "Japan",
"JE": "Jersey",
"JO": "Jordan",
"KZ": "Kazakhstan",
"KE": "Kenya",
"KI": "Kiribati",
"XK": "Kosovo",
"KW": "Kuwait",
"KG": "Kyrgyzstan",
"LA": "Laos",
"LV": "Latvia",
"LB": "Lebanon",
"LS": "Lesotho",
"LR": "Liberia",
"LY": "Libya",
"LI": "Liechtenstein",
"LT": "Lithuania",
"LU": "Luxembourg",
"MO": "Macao SAR China",
"MG": "Madagascar",
"MW": "Malawi",
"MY": "Malaysia",
"MV": "Maldives",
"ML": "Mali",
"MT": "Malta",
"MH": "Marshall Islands",
"MQ": "Martinique",
"MR": "Mauritania",
"MU": "Mauritius",
"YT": "Mayotte",
"MX": "Mexico",
"FM": "Micronesia",
"MD": "Moldova",
"MC": "Monaco",
"MN": "Mongolia",
"ME": "Montenegro",
"MS": "Montserrat",
"MA": "Morocco",
"MZ": "Mozambique",
"MM": "Myanmar (Burma)",
"NA": "Namibia",
"NR": "Nauru",
"NP": "Nepal",
"NL": "Netherlands",
"NC": "New Caledonia",
"NZ": "New Zealand",
"NI": "Nicaragua",
"NE": "Niger",
"NG": "Nigeria",
"NU": "Niue",
"NF": "Norfolk Island",
"KP": "North Korea",
"MK": "North Macedonia",
"MP": "Northern Mariana Islands",
"NO": "Norway",
"OM": "Oman",
"PK": "Pakistan",
"PW": "Palau",
"PS": "Palestinian Territories",
"PA": "Panama",
"PG": "Papua New Guinea",
"PY": "Paraguay",
"PE": "Peru",
"PH": "Philippines",
"PN": "Pitcairn Islands",
"PL": "Poland",
"PT": "Portugal",
"XA": "Pseudo-Accents",
"XB": "Pseudo-Bidi",
"PR": "Puerto Rico",
"QA": "Qatar",
"RE": "R\u00e9union",
"RO": "Romania",
"RU": "Russia",
"RW": "Rwanda",
"WS": "Samoa",
"SM": "San Marino",
"ST": "S\u00e3o Tom\u00e9 & Pr\u00edncipe",
"SA": "Saudi Arabia",
"SN": "Senegal",
"RS": "Serbia",
"SC": "Seychelles",
"SL": "Sierra Leone",
"SG": "Singapore",
"SX": "Sint Maarten",
"SK": "Slovakia",
"SI": "Slovenia",
"SB": "Solomon Islands",
"SO": "Somalia",
"ZA": "South Africa",
"GS": "South Georgia & South Sandwich Islands",
"KR": "South Korea",
"SS": "South Sudan",
"ES": "Spain",
"LK": "Sri Lanka",
"BL": "St. Barth\u00e9lemy",
"SH": "St. Helena",
"KN": "St. Kitts & Nevis",
"LC": "St. Lucia",
"MF": "St. Martin",
"PM": "St. Pierre & Miquelon",
"VC": "St. Vincent & Grenadines",
"SD": "Sudan",
"SR": "Suriname",
"SJ": "Svalbard & Jan Mayen",
"SE": "Sweden",
"CH": "Switzerland",
"SY": "Syria",
"TW": "Taiwan",
"TJ": "Tajikistan",
"TZ": "Tanzania",
"TH": "Thailand",
"TL": "Timor-Leste",
"TG": "Togo",
"TK": "Tokelau",
"TO": "Tonga",
"TT": "Trinidad & Tobago",
"TA": "Tristan da Cunha",
"TN": "Tunisia",
"TR": "Turkey",
"TM": "Turkmenistan",
"TC": "Turks & Caicos Islands",
"TV": "Tuvalu",
"UM": "U.S. Outlying Islands",
"VI": "U.S. Virgin Islands",
"UG": "Uganda",
"UA": "Ukraine",
"AE": "United Arab Emirates",
"GB": "United Kingdom",
"US": "United States",
"UY": "Uruguay",
"UZ": "Uzbekistan",
"VU": "Vanuatu",
"VA": "Vatican City",
"VE": "Venezuela",
"VN": "Vietnam",
"WF": "Wallis & Futuna",
"EH": "Western Sahara",
"YE": "Yemen",
"ZM": "Zambia",
"ZW": "Zimbabwe"
}
@@ -0,0 +1,446 @@
{
"zero": {
"name": "zero"
},
"ui": {
"more": "More",
"add": "Add",
"actions": "Actions",
"back": "Go back",
"close": "Close",
"confirm": "Confirm",
"save": "Save",
"create": "Create",
"createdDate": "Created at",
"id": "ID",
"active": "Active",
"inactive": "Inactive",
"delete": "Delete",
"default": "Default",
"remove": "Remove",
"pagination": {
"xofy": "Page {x} of {y}",
"next": "Next page",
"previous": "Previous page"
},
"search": {
"placeholder": "Search ...",
"button": "Search"
},
"name": "Name",
"select": "Select",
"icon": "Icon",
"icon_select": "Select an icon",
"tab_general": "General",
"tab_content": "Content",
"pick": {
"title": "Choose one",
"title_multiple": "Choose",
"title_autocomplete": "Enter a value",
"max": "max. {count}"
},
"date": {
"select": "Select date...",
"xtoy": "{x} to {y}",
"x": "from {x}",
"y": "until {y}"
},
"price": {
"free": "Free",
"xtoy": "from {x} to {y}",
"x": "from {x}",
"y": "to {y}"
}
},
"gender": {
"undisclosed": "Undisclosed",
"male": "Male",
"female": "Female",
"nonbinary": "Non-binary"
},
"rte": {
"bold": "Bold",
"italic": "Italic",
"underline": "Underline",
"strikethrough": "Strike-through",
"heading1": "Heading 1",
"heading2": "Heading 2",
"paragraph": "Paragraph",
"quote": "Quote",
"olist": "Ordered list",
"ulist": "Unordered list",
"code": "Code",
"line": "Horizontal line",
"link": "Link",
"image": "Image",
"video": "Video",
"accept": "Accept",
"cancel": "Cancel",
"raw": "Edit HTML"
},
"errors": {
"onsave": {
"notallowed": "You are not allowed to edit this resource"
},
"ondelete": {
"idnotfound": "Could not find an entity for the given ID"
},
"http": {
"403": "Unauthorized",
"403_text": "You are not allowed to view this resource",
"404": "Not found",
"404_text": "The requested resource could not be found<br>({path})",
"409": "Conflict",
"409_text": "The operation could not be completed as it is not valid anymore. Please reload the page",
"4xx": "Client error",
"4xx_text": "There was an internal client error (code: {code})",
"504": "Timed out",
"504_text": "The backoffice did not receive a timely response from the server",
"5xx": "Server error",
"5xx_text": "There was an internal server error (code: {code})"
},
"role": {
"emptyclaim": "A permission needs both a key and a value",
"nosection": "You have to select at least one section to give users access to"
},
"changepassword": {
"emptyfields": "Please fill out all fields",
"nouser": "User is invalid",
"newpasswordsnotmatching": "The new password does not match the confirmation"
},
"preview": {
"notfound": "Not found",
"notfound_text": "Could not find entity with ID \"{id}\""
}
},
"unsavedchanges": {
"title": "You have unsaved changes",
"text": "Are you sure you want to navigate away from this page?",
"close": "Discard changes",
"confirm": "Stay on page"
},
"deleteoverlay": {
"close": "Cancel",
"confirm": "Delete",
"title": "Delete entity",
"text": "Are you sure you want to delete this entity?",
"success": "Deleted",
"success_text": "You have successfully deleted this entity"
},
"changepasswordoverlay": {
"title": "Change password",
"confirm": "Change password",
"fields": {
"currentPassword": "Current password",
"newPassword": "New password",
"confirmNewPassword": "Confirm new password"
}
},
"sections": {
"item": {
"dashboard": "Dashboard",
"spaces": "Spaces",
"media": "Media",
"pages": "Pages",
"settings": "Settings"
}
},
"settings": {
"groups": {
"system": "System",
"plugins": "Plugins"
},
"system": {
"updates": {
"name": "Updates",
"text": "Version {zero_version}",
"text_default": "Update current zero version"
},
"applications": {
"name": "Applications",
"text": "Edit website applications"
},
"users": {
"name": "Users & Permissions",
"text": "Administration of backoffice users"
},
"languages": {
"name": "Languages",
"text": "Frontend languages"
},
"translations": {
"name": "Translations",
"text": "Frontend texts and translations"
},
"countries": {
"name": "Countries",
"text": "Manage list of countries"
},
"logs": {
"name": "Logging",
"text": "Debug und view logs"
}
},
"plugins": {
"installed": {
"name": "Installed plugins",
"text": "{plugin_count} installed plugin(s)",
"text_default": "Manage and install plugins"
},
"create": {
"name": "Create a plugin",
"text": "Create from existing code"
}
}
},
"user": {
"name": "User",
"users": "Users",
"count_permissions": "{count} permissions",
"one_permission": "1 permission",
"tab_permissions": "Permissions",
"fields": {
"name_placeholder": "Enter your real name or a username",
"email": "Email",
"email_text": "Also used as login username",
"email_placeholder": "Enter your email address",
"avatarId": "Avatar",
"avatarId_text": "Upload a user image",
"languageId": "Language",
"languageId_text": "Set the backoffice language for this user",
"roles": "Roles",
"roles_text": "Add default permissions from roles",
"sections": "Sections",
"sections_text": "Specify access to backoffice sections",
"isActive": "Can login",
"isDisabled": "Disable",
"isLockedOut": "Locked out",
"isLockedOut_warning": "The user is locked out until",
"isDisabled_warning": "This user is disabled and cannot log into zero anymore. Status can be changed in <b>Actions</b> dropdown"
}
},
"role": {
"name": "Role",
"roles": "Roles",
"tab_permissions": "Permissions",
"fields": {
"description": "Description",
"icon": "Icon"
}
},
"permission": {
"states": {
"read": "View",
"write": "Edit",
"none": "None"
},
"collections": {
"sections": "Access to sections",
"sections_description": "Allow access to the following sections",
"settings": "Access to settings",
"settings_description": "Define read and write access for settings areas",
"spaces": "Access to spaces",
"spaces_description": "Granular control of spaces"
}
},
"login": {
"headline": "hello and welcome",
"button": "Login",
"button_forgot": "Forgot password?",
"fields": {
"email": "Email",
"email_placeholder": "Enter your email or username",
"password": "Password",
"password_placeholder": "Enter your password"
},
"errors": {
"wrongcredentials": "Email or password is wrong",
"lockedout": "The user has been locked out due to many failed password attempts",
"disabled": "The user has been deactivated",
"notallowed": "The user is not allowed to sign in",
"requirestwofactor": "Two-factor authentication is required to login"
},
"rejectReasons": {
"logout": "You have successfully logged out",
"inactive": "You have been inactive for too long. Please login again.",
"terminated": "Your session has been terminated. Please login again.",
"userchanged": "Your user data has changed. Please login again.",
"passwordchanged": "Your password was successfully changed. Please login again."
}
},
"order": {
"fields": {
"no": "Number",
"username": "Name",
"price": "Price",
"status": "Status"
}
},
"page": {
"overview": {
"actions": {
"continue": "Continue",
"continue_text": "You have last edited \"{page}\" on {date}",
"new": "New page",
"new_text": "Create a new page on root",
"history": "History",
"history_text": "View page editing history"
}
},
"recyclebin": {
"name": "Recycle bin",
"description": "View recently deleted entities"
},
"history": {
"name": "History"
}
},
"country": {
"list": "Countries",
"name": "Country",
"fields": {
"code": "Code",
"code_text": "Code in ISO 3166-1 format which is used to display the appropriate flag",
"isPreferred": "Show on top"
}
},
"language": {
"list": "Languages",
"name": "Language",
"fields": {
"name": "Name",
"locale": "Locale",
"code": "ISO Code",
"code_text": "Code in ISO 3166-1 format",
"isDefault": "Default",
"isDefault_text": "Use as default language",
"isOptional": "Optional",
"isOptional_text": "Values for an optional language must not be entered, even if the field is required",
"inheritedLanguageId": "Fallback",
"inheritedLanguageId_text": "To allow multi-lingual content to fall back to another language if not present in the requested language, select it here"
}
},
"translation": {
"list": "Translations",
"name": "Translation",
"display": {
"text": "Text",
"html": "HTML"
},
"fields": {
"key": "Key",
"value": "Value",
"display": "Display type"
}
},
"iconpicker": {
"title": "Pick an icon"
},
"mediapicker": {
"select_text": "Add media",
"select_description": "Upload or select",
"upload_text": "Upload",
"upload_description": "Upload a new file"
},
"application": {
"list": "Applications",
"name": "Application",
"tab_features": "Features",
"tab_domains": "Domains",
"fields": {
"name": "Name",
"name_text": "Short human-readable name",
"fullName": "Full name",
"fullName_text": "Full company or product name",
"imageid": "Image",
"imageid_text": "Image of the app (with transparent background), used for all mails, PDFs, ...",
"iconid": "Icon",
"iconid_text": "Icon of the app. Simplified image for minor application parts",
"email": "Email",
"email_text": "Generic contact email",
"domains": "Domains",
"domains_text": "Select domains for this application",
"domains_help": "Valid domain names are: \"example.com\", \"www.example.com\", \"example.com:8080\", or \"https://www.example.com\".",
"domains_add": "Add domain",
"features": "Features",
"features_text": "Enable additional features for this application"
}
},
"media": {
"list": "Media",
"name": "Media",
"addfolder": "Add a new folder",
"fields": {
"foldername_placeholder": "Enter a name ...",
"caption": "Caption",
"dimension": "Dimension",
"size": "Size",
"date": "Date",
"filename": "Filename",
"alternativeText": "Alternative text"
}
},
"_test": {
"fields": {
"name": "Name",
"position": "Position",
"image": "Image",
"email": "Email",
"videoUri": "Video URL",
"isvisible": "Visible",
"facebook": "Facebook",
"facebook_text": "Link to facebook page",
"youtube": "Youtube",
"youtube_text": "Link to youtube channel",
"twitter": "Twitter",
"twitter_text": "Link to twitter profile",
"xIconPicker": "Icon",
"xTextarea": "Description",
"addresses": "Addresses",
"addresses_text": "Enter as many addresses as you wish",
"xCustom": "Generate",
"xRte": "Description as HTML",
"xMedia": "Images",
"xState": "Select media type",
"address": {
"city": "City",
"street": "Street",
"no": "No",
"countries": "Country",
"name": "Name",
"iso": "ISO Code"
},
"hideInNavigation": "Hide in navigation",
"hideInTitle": "Hide in title",
"titleOverride": "Override title",
"titleOverrideAll": "Override full title",
"seoDescription": "SEO Description",
"seoImage": "Image",
"noFollow": "No follow",
"noIndex": "No index"
}
}
}
+56
View File
@@ -0,0 +1,56 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<TargetFramework>net5.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<PropertyGroup>
<PackageId>zero.XTest</PackageId>
<Version>0.1.0</Version>
<Description>// TODO 2</Description>
</PropertyGroup>
<ItemGroup>
<Content Remove="Resources/**/*" />
<Content Include="Resources/**/*">
<Pack>true</Pack>
<PackageCopyToOutput>true</PackageCopyToOutput>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.0-preview.7.20365.19" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.0-preview.7.20365.19" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="5.0.0-preview.7.20365.19" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="5.0.0-preview.7.20365.19" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\zero.Core\zero.Core.csproj" />
</ItemGroup>
<!--<ItemGroup>
<BackofficeUI Include="..\zero.Web.UI\**\*" Exclude="..\zero.Web.UI\node_modules\**\*;..\zero.Web.UI\Assets\*.js;..\zero.Web.UI\package-lock.json" />
<Content Include="@(BackofficeUI)" Link="zero\web\%(RecursiveDir)%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest">
<Pack>true</Pack>
<PackagePath>content\zero\web\</PackagePath>
</Content>
</ItemGroup>-->
<!--<Target Name="CopyBackofficeUI" BeforeTargets="BeforeBuild">
<Message Text="Copy Backoffice UI" />
<MakeDir Directories="$(OutDir)\zero\web" Condition="!Exists('$(OutDir)\zero\web')" />
<ItemGroup>
<BackofficeUI Include="..\zero.Web.UI\**\*" Exclude="..\zero.Web.UI\node_modules\**\*;..\zero.Web.UI\Assets\*.js;..\zero.Web.UI\package-lock.json" />
<Content Include="@(BackofficeUI)" Link="zero\web\%(RecursiveDir)%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest">
<Pack>true</Pack>
<PackagePath>zero\web\</PackagePath>
</Content>
</ItemGroup>
</Target>-->
</Project>
+6
View File
@@ -41,6 +41,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{1CE271AD
build\build.ps1 = build\build.ps1
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zero.XTest", "zero.XTest\zero.XTest.csproj", "{1699E34B-A9BE-411B-BA5B-E0682B8245B1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -71,6 +73,10 @@ Global
{F6ECD591-4D06-4C36-A41E-29148B9E42D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6ECD591-4D06-4C36-A41E-29148B9E42D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6ECD591-4D06-4C36-A41E-29148B9E42D7}.Release|Any CPU.Build.0 = Release|Any CPU
{1699E34B-A9BE-411B-BA5B-E0682B8245B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1699E34B-A9BE-411B-BA5B-E0682B8245B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1699E34B-A9BE-411B-BA5B-E0682B8245B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1699E34B-A9BE-411B-BA5B-E0682B8245B1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE