Compare commits
312 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7393d9c372 | |||
| 79c4d7797c | |||
| 01a895bbf7 | |||
| 4fa523db43 | |||
| 186460ac08 | |||
| 686f6752f3 | |||
| 23ccdeb2cf | |||
| 6148ce4e52 | |||
| 06850ed25c | |||
| 0320a56cb5 | |||
| cd27bb210f | |||
| 67f680a675 | |||
| 47c3e3a79f | |||
| f3bfc1ffb2 | |||
| 89cd655df2 | |||
| 14c4c4815d | |||
| bfb69a34ef | |||
| d52420183e | |||
| 2aaca865e7 | |||
| 2ec8281163 | |||
| 2ac5e61e44 | |||
| c47a08b553 | |||
| de9241bcf5 | |||
| 7c03fe3c1f | |||
| 82eb241119 | |||
| 1073e6257c | |||
| 59bf24c461 | |||
| 2748c3635d | |||
| d31e71a838 | |||
| 2252db0d55 | |||
| df896af476 | |||
| 4b605b2580 | |||
| 80d7f1b2c9 | |||
| 5ada85df29 | |||
| 5b7ae7150f | |||
| 5bf29a907a | |||
| 2a9bcf0e98 | |||
| 3c0565e516 | |||
| fa4acb255b | |||
| a018ed9e52 | |||
| fad33a97b2 | |||
| ac586c5207 | |||
| 8033931e31 | |||
| 8e29810598 | |||
| be96e2cf08 | |||
| 534ee67ad2 | |||
| 571a3bc257 | |||
| e7a30d0a5d | |||
| a55323176f | |||
| 1b83e0a87d | |||
| ca15f340b0 | |||
| 23b8e1cce8 | |||
| cf53ba363d | |||
| 2f309a2fd6 | |||
| 9f45d41a4a | |||
| 1994194656 | |||
| 36559b8761 | |||
| 8fe7c5599a | |||
| 4dd325cec9 | |||
| d558646d75 | |||
| afac4bb918 | |||
| 0869bf27c7 | |||
| 383a8617ce | |||
| 3865f4fb50 | |||
| 3e74bbfb45 | |||
| 966b07ba1c | |||
| d4311fe4ab | |||
| eab597a2a8 | |||
| 8d12170def | |||
| d2655a9f2f | |||
| c4c2082fa9 | |||
| 40d4a8fe6a | |||
| 2898203cb9 | |||
| 5ebdfc7b1c | |||
| 31d7e58191 | |||
| ad4416f663 | |||
| b55d2a8a41 | |||
| 17a4799b97 | |||
| 4df838c20c | |||
| 4e44871671 | |||
| 1dd2c1cb91 | |||
| 5c6a9480a6 | |||
| c1be8e3f00 | |||
| d8dbda8e94 | |||
| a0ab7ace07 | |||
| 7c27189e2e | |||
| 994c6eed50 | |||
| cff5046a9e | |||
| 9f6da2ca4b | |||
| 99cabe564d | |||
| 15b1d35c17 | |||
| c597da8f97 | |||
| 5775a8b614 | |||
| c5347a97ce | |||
| 22f54394fb | |||
| 57c368f70d | |||
| 580de6befe | |||
| 0120dc6ea3 | |||
| 4be6a48fb2 | |||
| 53731049de | |||
| 4b2ce522fe | |||
| d0eddbb9a2 | |||
| 938abab9d6 | |||
| 5faa71187d | |||
| c069f262dc | |||
| 9f42e6a607 | |||
| 202f2d2e27 | |||
| aaab14be3e | |||
| 1c87176d80 | |||
| a182c9b1ee | |||
| 6af1057ad7 | |||
| 97ae6165e4 | |||
| 8cdb61195d | |||
| 50c2d574f1 | |||
| 35645672ae | |||
| f952877d04 | |||
| d69a978870 | |||
| 3d86b08e31 | |||
| 5cef71e4e6 | |||
| fe7b114083 | |||
| 21e91ac4e1 | |||
| b367ae6c80 | |||
| 07684bb1d6 | |||
| 8d382fb9b7 | |||
| db7ae9a7e2 | |||
| 2e6f032222 | |||
| 9fc33d71e4 | |||
| 916cd999d5 | |||
| a75506d60b | |||
| 6631a50a44 | |||
| c35a3fa702 | |||
| 072c014055 | |||
| ff4fe2cd79 | |||
| d2f727a1ba | |||
| 38bb98b099 | |||
| 2a930e5a66 | |||
| 2d32863fc9 | |||
| 2c32fabd36 | |||
| 14f9445ffb | |||
| 7f7c9d2796 | |||
| d2e04614c6 | |||
| 0f969ecdd4 | |||
| 2ae639a3ae | |||
| de8f01a4b2 | |||
| 10f22f7848 | |||
| fb1f2c8af4 | |||
| e6d75f27de | |||
| 9bcd70589c | |||
| 0676726bfc | |||
| bb43fc310a | |||
| 3524ba83a8 | |||
| 011d406301 | |||
| 8bd9ae062d | |||
| d51daa2a8a | |||
| cc9a7ff942 | |||
| 4e1634754b | |||
| da6b541112 | |||
| 1a4a3504d0 | |||
| 5d3b623173 | |||
| 2c271d3ef4 | |||
| 9a6d938004 | |||
| 125423947c | |||
| 99b80e0f56 | |||
| 7d67a734f0 | |||
| d74ec8f8cb | |||
| e24b22f6bd | |||
| 92453c4652 | |||
| 5ddba3e64e | |||
| 34a3389c17 | |||
| c72a5c07fe | |||
| 409ae99bf7 | |||
| 969a9c1193 | |||
| 3643e170c5 | |||
| afc872de5a | |||
| 56aef39014 | |||
| ae07b2b299 | |||
| b99cf238e0 | |||
| 68457b7eaf | |||
| 24c74676f6 | |||
| ac1ee2fe0c | |||
| 4f30dd32f1 | |||
| 8f17d6fcd2 | |||
| 1300389ce6 | |||
| ea8d8ba771 | |||
| 1eb6ae10c9 | |||
| 5d3e1fb95f | |||
| 62463ecc21 | |||
| 3a469cdc77 | |||
| 6665695986 | |||
| 19aae9ffdc | |||
| 4dd51f645a | |||
| cca1393f2b | |||
| 69548aed20 | |||
| 7656de693c | |||
| 4806920179 | |||
| 5637c44f69 | |||
| 218995f9e0 | |||
| 0d167c4f2d | |||
| d44e0d8664 | |||
| 99f0e6c05a | |||
| 2c40e46d56 | |||
| 2c3a2b29b2 | |||
| 94a4e34e0c | |||
| 7d42583177 | |||
| 77a8697ca7 | |||
| 7462686778 | |||
| 44d5ce4a2e | |||
| 34888f31e6 | |||
| 0994aac656 | |||
| 0e0d38be30 | |||
| 91735e7e3f | |||
| 0d4b3e4173 | |||
| d174499e50 | |||
| df20feb703 | |||
| a4c5b7118d | |||
| 52a56c8852 | |||
| 7a2f09643a | |||
| c9819b2d89 | |||
| 7acafe67a4 | |||
| 9eb2b28232 | |||
| 832ec68140 | |||
| d8f0af1a94 | |||
| a8d5bd6d1f | |||
| e252a0849b | |||
| ba4b84d7f4 | |||
| e1c9b1818e | |||
| 76bece07ef | |||
| 7729dc946e | |||
| 5b285f71fa | |||
| e60417925b | |||
| 5a78c000a0 | |||
| 54faeee837 | |||
| cefa2c9040 | |||
| 77cf071e04 | |||
| 0d0179cb47 | |||
| f7671ec9a7 | |||
| b9430158ce | |||
| db8954e0a5 | |||
| 05f1a24caf | |||
| b08e922600 | |||
| fbf60fbac4 | |||
| 941baf09ce | |||
| be44741bf9 | |||
| 282ac2b9c5 | |||
| 1224f68297 | |||
| 8d1733fd12 | |||
| 1213551ca9 | |||
| f620d0deca | |||
| d1cfe84723 | |||
| cd6cdcfda4 | |||
| 2ebd7a077c | |||
| 9e33581391 | |||
| 59349dd355 | |||
| 4170faf76e | |||
| cc13b99787 | |||
| d69f0fe9dd | |||
| d2baf03119 | |||
| ff085c97ce | |||
| d41dbce601 | |||
| ec60ba142a | |||
| a16e31c671 | |||
| d19a23eec6 | |||
| 0f61de8bcd | |||
| 5b17072d55 | |||
| 51875539b9 | |||
| 030fd4d375 | |||
| 7658fba725 | |||
| caf7a6a1ca | |||
| e0a38a4d9b | |||
| 086157cff8 | |||
| 21612454d0 | |||
| d53d0b4271 | |||
| 4564623899 | |||
| cc6c16894c | |||
| 0852b20b31 | |||
| 08e13ac530 | |||
| 71f2b7ee06 | |||
| 7ead62730b | |||
| 0150b97278 | |||
| af2f531d31 | |||
| 5e680e80e6 | |||
| ee8b4c5884 | |||
| 0ce54847b0 | |||
| b852c78861 | |||
| debbf87a04 | |||
| b2a1b11a5b | |||
| 0aa1dc1dc7 | |||
| bb60d5e035 | |||
| 247f213d26 | |||
| d7696e8d91 | |||
| a0f15bba44 | |||
| 8518aaf4c1 | |||
| 9edafe37e1 | |||
| 914d956ada | |||
| 007cdeb9ab | |||
| 5716353518 | |||
| 87340d6c2c | |||
| fc742bcf18 | |||
| 4eb4cd8962 | |||
| beb325eacf | |||
| 8e45bcf23f | |||
| 40dc49ed47 | |||
| 4b07305dc5 | |||
| 2514a59e93 | |||
| 6843da790c | |||
| ba1a9c3758 | |||
| 332ad6349d | |||
| 42e48426e4 | |||
| a0cc788f27 | |||
| aecf96d74d | |||
| c75938076e | |||
| cebbcb711a |
@@ -1,4 +1,4 @@
|
|||||||
_Looking for Umbraco version 8? [Click here](https://github.com/umbraco/Umbraco-CMS/blob/temp8/.github/V8_GETTING_STARTED.md) to go to the v8 branch_
|
_Looking for Umbraco version 8? [Click here](https://github.com/umbraco/Umbraco-CMS/blob/dev-v8/.github/V8_GETTING_STARTED.md) to go to the v8 branch_
|
||||||
# Contributing to Umbraco CMS
|
# Contributing to Umbraco CMS
|
||||||
|
|
||||||
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
|
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
|
||||||
@@ -16,7 +16,7 @@ This document gives you a quick overview on how to get started, we will link to
|
|||||||
|
|
||||||
## Guidelines for contributions we welcome
|
## Guidelines for contributions we welcome
|
||||||
|
|
||||||
Not all changes are wanted, so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes and we'll be nice about it, thanking you for spending your valueable time.
|
Not all changes are wanted, so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes and we'll be nice about it, thanking you for spending your valuable time.
|
||||||
|
|
||||||
We have [documented what we consider small and large changes](CONTRIBUTION_GUIDELINES.md). Make sure to talk to us before making large changes.
|
We have [documented what we consider small and large changes](CONTRIBUTION_GUIDELINES.md). Make sure to talk to us before making large changes.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
[](https://ci.appveyor.com/project/Umbraco/umbraco-cms-b2cri/branch/dev-v7)
|
[](https://ci.appveyor.com/project/Umbraco/umbraco-cms-b2cri/branch/dev-v7)
|
||||||
|
[](https://pullreminders.com?ref=badge)
|
||||||
|
|
||||||
_Looking for Umbraco version 8? [Click here](https://github.com/umbraco/Umbraco-CMS/tree/temp8) to go to the v8 branch_
|
_Looking for Umbraco version 8? [Click here](https://github.com/umbraco/Umbraco-CMS/tree/temp8) to go to the v8 branch_
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,9 @@ function Get-UmbracoBuildEnv
|
|||||||
$vsPath = ""
|
$vsPath = ""
|
||||||
$vsVer = ""
|
$vsVer = ""
|
||||||
$msBuild = $null
|
$msBuild = $null
|
||||||
&$vswhere | foreach {
|
$params = @()
|
||||||
|
$params += "-prerelease"
|
||||||
|
&$vswhere @params | foreach {
|
||||||
if ($_.StartsWith("installationPath:")) { $vsPath = $_.SubString("installationPath:".Length).Trim() }
|
if ($_.StartsWith("installationPath:")) { $vsPath = $_.SubString("installationPath:".Length).Trim() }
|
||||||
if ($_.StartsWith("installationVersion:")) { $vsVer = $_.SubString("installationVersion:".Length).Trim() }
|
if ($_.StartsWith("installationVersion:")) { $vsVer = $_.SubString("installationVersion:".Length).Trim() }
|
||||||
}
|
}
|
||||||
@@ -144,7 +146,10 @@ function Get-UmbracoBuildEnv
|
|||||||
$vsVerParts = $vsVer.Split('.')
|
$vsVerParts = $vsVer.Split('.')
|
||||||
$vsMajor = [int]::Parse($vsVerParts[0])
|
$vsMajor = [int]::Parse($vsVerParts[0])
|
||||||
$vsMinor = [int]::Parse($vsVerParts[1])
|
$vsMinor = [int]::Parse($vsVerParts[1])
|
||||||
if ($vsMajor -eq 15) {
|
if ($vsMajor -eq 16) {
|
||||||
|
$msBuild = "$vsPath\MSBuild\Current\Bin"
|
||||||
|
}
|
||||||
|
elseif ($vsMajor -eq 15) {
|
||||||
$msBuild = "$vsPath\MSBuild\$vsMajor.0\Bin"
|
$msBuild = "$vsPath\MSBuild\$vsMajor.0\Bin"
|
||||||
}
|
}
|
||||||
elseif ($vsMajor -eq 14) {
|
elseif ($vsMajor -eq 14) {
|
||||||
|
|||||||
@@ -195,6 +195,10 @@ function Compile-Umbraco
|
|||||||
{
|
{
|
||||||
$toolsVersion = "15.0"
|
$toolsVersion = "15.0"
|
||||||
}
|
}
|
||||||
|
if ($uenv.VisualStudio.Major -eq 16)
|
||||||
|
{
|
||||||
|
$toolsVersion = "Current"
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host ">> Compile Umbraco"
|
Write-Host ">> Compile Umbraco"
|
||||||
Write-Host "Logging to $tmp\msbuild.umbraco.log"
|
Write-Host "Logging to $tmp\msbuild.umbraco.log"
|
||||||
|
|||||||
@@ -1,107 +1,116 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata minClientVersion="3.4.4">
|
<metadata minClientVersion="3.4.4">
|
||||||
<id>UmbracoCms.Core</id>
|
<id>UmbracoCms.Core</id>
|
||||||
<version>7.0.0</version>
|
<version>7.0.0</version>
|
||||||
<title>Umbraco Cms Core Binaries</title>
|
<title>Umbraco Cms Core Binaries</title>
|
||||||
<authors>Umbraco HQ</authors>
|
<authors>Umbraco HQ</authors>
|
||||||
<owners>Umbraco HQ</owners>
|
<owners>Umbraco HQ</owners>
|
||||||
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
|
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
|
||||||
<projectUrl>http://umbraco.com/</projectUrl>
|
<projectUrl>http://umbraco.com/</projectUrl>
|
||||||
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
|
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<description>Contains the core assemblies needed to run Umbraco Cms. This package only contains assemblies and can be used for package development. Use the UmbracoCms-package to setup Umbraco in Visual Studio as an ASP.NET project.</description>
|
<description>Contains the core assemblies needed to run Umbraco Cms. This package only contains assemblies and can be used for package development. Use the UmbracoCms-package to setup Umbraco in Visual Studio as an ASP.NET project.</description>
|
||||||
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
|
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
|
||||||
<language>en-US</language>
|
<language>en-US</language>
|
||||||
<tags>umbraco</tags>
|
<tags>umbraco</tags>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="log4net" version="[2.0.8,3.0.0)" />
|
<group targetFramework="net452">
|
||||||
<dependency id="Log4Net.Async" version="[2.0.4,3.0.0)" />
|
<dependency id="log4net" version="[2.0.8, 3.0.0)" />
|
||||||
<dependency id="Microsoft.AspNet.Mvc" version="[5.2.3,6.0.0)" />
|
<dependency id="Log4Net.Async" version="[2.0.4, 3.0.0)" />
|
||||||
<dependency id="Microsoft.AspNet.WebApi" version="[5.2.3,6.0.0)" />
|
<dependency id="Microsoft.AspNet.Mvc" version="[5.2.7, 6.0.0)" />
|
||||||
<dependency id="Microsoft.AspNet.Identity.Owin" version="[2.2.1, 3.0.0)" />
|
<dependency id="Microsoft.AspNet.WebApi" version="[5.2.7, 6.0.0)" />
|
||||||
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.1, 3.0.0)" />
|
<dependency id="Microsoft.AspNet.Identity.Owin" version="[2.2.2, 3.0.0)" />
|
||||||
<dependency id="Microsoft.Owin.Security.Cookies" version="[3.1.0, 4.0.0)" />
|
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.4.1, 3.0.0)" />
|
||||||
<dependency id="Microsoft.Owin.Security.OAuth" version="[3.1.0, 4.0.0)" />
|
<dependency id="Microsoft.Owin.Security.Cookies" version="[4.0.1, 5.0.0)" />
|
||||||
<dependency id="Microsoft.Owin.Host.SystemWeb" version="[3.1.0, 4.0.0)" />
|
<dependency id="Microsoft.Owin.Security.OAuth" version="[4.0.1, 5.0.0)" />
|
||||||
<dependency id="MiniProfiler" version="[2.1.0, 3.0.0)" />
|
<dependency id="Microsoft.Owin.Host.SystemWeb" version="[4.0.1, 5.0.0)" />
|
||||||
<dependency id="HtmlAgilityPack" version="[1.4.9.5, 2.0.0)" />
|
<dependency id="MiniProfiler" version="[2.1.0, 3.0.0)" />
|
||||||
<dependency id="Lucene.Net" version="[2.9.4.1, 3.0.0.0)" />
|
<dependency id="HtmlAgilityPack" version="[1.8.8, 2.0.0)" />
|
||||||
<dependency id="MySql.Data" version="[6.9.9, 7.0.0)" />
|
<dependency id="Lucene.Net" version="[2.9.4.1, 3.0.0.0)" />
|
||||||
<dependency id="ClientDependency" version="[1.9.7, 2.0.0)" />
|
<dependency id="MySql.Data" version="[6.9.9, 7.0.0)" />
|
||||||
<dependency id="ClientDependency-Mvc5" version="[1.8.0.0, 2.0.0)" />
|
<dependency id="ClientDependency" version="[1.9.7, 2.0.0)" />
|
||||||
<dependency id="AutoMapper" version="[3.3.1, 4.0.0)" />
|
<dependency id="ClientDependency-Mvc5" version="[1.8.0.0, 2.0.0)" />
|
||||||
<dependency id="Newtonsoft.Json" version="[10.0.2, 11.0.0)" />
|
<dependency id="AutoMapper" version="[3.3.1, 4.0.0)" />
|
||||||
<dependency id="Examine" version="[0.1.89, 1.0.0)" />
|
<dependency id="Newtonsoft.Json" version="[12.0.2, 13.0.0)" />
|
||||||
<dependency id="ImageProcessor" version="[2.5.6, 3.0.0)" />
|
<dependency id="Examine" version="[0.1.90, 1.0.0)" />
|
||||||
<dependency id="ImageProcessor.Web" version="[4.8.7, 5.0.0)" />
|
<dependency id="ImageProcessor" version="[2.7.0.100, 3.0.0)" />
|
||||||
<dependency id="semver" version="[1.1.2, 3.0.0)" />
|
<dependency id="ImageProcessor.Web" version="[4.10.0.100, 5.0.0)" />
|
||||||
<!-- Markdown can not be updated due to: https://github.com/hey-red/markdownsharp/issues/71#issuecomment-233585487 -->
|
<dependency id="semver" version="[1.1.2, 3.0.0)" />
|
||||||
<dependency id="Markdown" version="[1.14.7, 2.0.0)" />
|
<!-- Markdown can not be updated due to: https://github.com/hey-red/markdownsharp/issues/71#issuecomment-233585487 -->
|
||||||
<dependency id="System.Threading.Tasks.Dataflow" version="[4.7.0, 5.0.0)" />
|
<dependency id="Markdown" version="[1.14.7, 2.0.0)" />
|
||||||
<dependency id="System.ValueTuple" version="[4.4.0, 5.0.0)" />
|
<dependency id="System.Threading.Tasks.Dataflow" version="[4.9.0, 5.0.0)" />
|
||||||
</dependencies>
|
<dependency id="System.ValueTuple" version="[4.5.0, 5.0.0)" />
|
||||||
</metadata>
|
</group>
|
||||||
<files>
|
</dependencies>
|
||||||
<file src="$BuildTmp$\WebApp\bin\businesslogic.dll" target="lib\net45\businesslogic.dll" />
|
<frameworkAssemblies>
|
||||||
<file src="$BuildTmp$\WebApp\bin\businesslogic.xml" target="lib\net45\businesslogic.xml" />
|
<frameworkAssembly assemblyName="System.Configuration" targetFramework="net452" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\cms.dll" target="lib\net45\cms.dll" />
|
<frameworkAssembly assemblyName="System.IO.Compression.FileSystem" targetFramework="net452" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\cms.xml" target="lib\net45\cms.xml" />
|
<frameworkAssembly assemblyName="System.Web" targetFramework="net452" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\controls.dll" target="lib\net45\controls.dll" />
|
<frameworkAssembly assemblyName="System.Net.Http" targetFramework="net452" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\controls.xml" target="lib\net45\controls.xml" />
|
<frameworkAssembly assemblyName="System.Drawing" targetFramework="net452" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\interfaces.dll" target="lib\net45\interfaces.dll" />
|
</frameworkAssemblies>
|
||||||
<file src="$BuildTmp$\WebApp\bin\interfaces.xml" target="lib\net45\interfaces.xml" />
|
</metadata>
|
||||||
<file src="$BuildTmp$\WebApp\bin\log4net.dll" target="lib\net45\log4net.dll" />
|
<files>
|
||||||
<file src="$BuildTmp$\WebApp\bin\Microsoft.ApplicationBlocks.Data.dll" target="lib\net45\Microsoft.ApplicationBlocks.Data.dll" />
|
<file src="$BuildTmp$\WebApp\bin\businesslogic.dll" target="lib\net452\businesslogic.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.dll" target="lib\net45\SQLCE4Umbraco.dll" />
|
<file src="$BuildTmp$\WebApp\bin\businesslogic.xml" target="lib\net452\businesslogic.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.xml" target="lib\net45\SQLCE4Umbraco.xml" />
|
<file src="$BuildTmp$\WebApp\bin\cms.dll" target="lib\net452\cms.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.dll" target="lib\net45\System.Data.SqlServerCe.dll" />
|
<file src="$BuildTmp$\WebApp\bin\cms.xml" target="lib\net452\cms.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.Entity.dll" target="lib\net45\System.Data.SqlServerCe.Entity.dll" />
|
<file src="$BuildTmp$\WebApp\bin\controls.dll" target="lib\net452\controls.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\TidyNet.dll" target="lib\net45\TidyNet.dll" />
|
<file src="$BuildTmp$\WebApp\bin\controls.xml" target="lib\net452\controls.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net45\Umbraco.Core.dll" />
|
<file src="$BuildTmp$\WebApp\bin\interfaces.dll" target="lib\net452\interfaces.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\net45\Umbraco.Core.xml" />
|
<file src="$BuildTmp$\WebApp\bin\interfaces.xml" target="lib\net452\interfaces.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.dll" target="lib\net45\umbraco.DataLayer.dll" />
|
<file src="$BuildTmp$\WebApp\bin\log4net.dll" target="lib\net452\log4net.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.xml" target="lib\net45\umbraco.DataLayer.xml" />
|
<file src="$BuildTmp$\WebApp\bin\Microsoft.ApplicationBlocks.Data.dll" target="lib\net452\Microsoft.ApplicationBlocks.Data.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.dll" target="lib\net45\umbraco.dll" />
|
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.dll" target="lib\net452\SQLCE4Umbraco.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.xml" target="lib\net45\umbraco.xml" />
|
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.xml" target="lib\net452\SQLCE4Umbraco.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.dll" target="lib\net45\umbraco.editorControls.dll" />
|
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.dll" target="lib\net452\System.Data.SqlServerCe.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.xml" target="lib\net45\umbraco.editorControls.xml" />
|
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.Entity.dll" target="lib\net452\System.Data.SqlServerCe.Entity.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.dll" target="lib\net45\umbraco.MacroEngines.dll" />
|
<file src="$BuildTmp$\WebApp\bin\TidyNet.dll" target="lib\net452\TidyNet.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.xml" target="lib\net45\umbraco.MacroEngines.xml" />
|
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net452\Umbraco.Core.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.dll" target="lib\net45\umbraco.providers.dll" />
|
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\net452\Umbraco.Core.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.xml" target="lib\net45\umbraco.providers.xml" />
|
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.dll" target="lib\net452\umbraco.DataLayer.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.dll" target="lib\net45\Umbraco.Web.UI.dll" />
|
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.xml" target="lib\net452\umbraco.DataLayer.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net45\Umbraco.Web.UI.xml" />
|
<file src="$BuildTmp$\WebApp\bin\umbraco.dll" target="lib\net452\umbraco.dll" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.dll" target="lib\net45\UmbracoExamine.dll" />
|
<file src="$BuildTmp$\WebApp\bin\umbraco.xml" target="lib\net452\umbraco.xml" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.xml" target="lib\net45\UmbracoExamine.xml" />
|
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.dll" target="lib\net452\umbraco.editorControls.dll" />
|
||||||
<file src="tools\install.core.ps1" target="tools\install.ps1" />
|
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.xml" target="lib\net452\umbraco.editorControls.xml" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.dll" target="lib\net452\umbraco.MacroEngines.dll" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.xml" target="lib\net452\umbraco.MacroEngines.xml" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.dll" target="lib\net452\umbraco.providers.dll" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.xml" target="lib\net452\umbraco.providers.xml" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.dll" target="lib\net452\Umbraco.Web.UI.dll" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net452\Umbraco.Web.UI.xml" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.dll" target="lib\net452\UmbracoExamine.dll" />
|
||||||
|
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.xml" target="lib\net452\UmbracoExamine.xml" />
|
||||||
|
<file src="tools\install.core.ps1" target="tools\install.ps1" />
|
||||||
|
|
||||||
<!-- Added to be able to produce a symbols package -->
|
<!-- Added to be able to produce a symbols package -->
|
||||||
<file src="$BuildTmp$\bin\SQLCE4Umbraco.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\SQLCE4Umbraco.pdb" target="lib" />
|
||||||
<file src="..\..\src\SQLCE4Umbraco\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\SQLCE4Umbraco" />
|
<file src="..\..\src\SQLCE4Umbraco\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\SQLCE4Umbraco" />
|
||||||
<file src="$BuildTmp$\bin\businesslogic.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\businesslogic.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.businesslogic\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.businesslogic" />
|
<file src="..\..\src\umbraco.businesslogic\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.businesslogic" />
|
||||||
<file src="$BuildTmp$\bin\cms.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\cms.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.cms\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.cms" />
|
<file src="..\..\src\umbraco.cms\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.cms" />
|
||||||
<file src="$BuildTmp$\bin\controls.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\controls.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.controls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.controls" />
|
<file src="..\..\src\umbraco.controls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.controls" />
|
||||||
<file src="$BuildTmp$\bin\interfaces.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\interfaces.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.interfaces\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.interfaces" />
|
<file src="..\..\src\umbraco.interfaces\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.interfaces" />
|
||||||
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
|
||||||
<file src="..\..\src\Umbraco.Core\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Core" />
|
<file src="..\..\src\Umbraco.Core\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Core" />
|
||||||
<file src="$BuildTmp$\bin\umbraco.DataLayer.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\umbraco.DataLayer.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.datalayer\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.datalayer" />
|
<file src="..\..\src\umbraco.datalayer\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.datalayer" />
|
||||||
<file src="$BuildTmp$\bin\umbraco.editorControls.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\umbraco.editorControls.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.editorControls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.editorControls" />
|
<file src="..\..\src\umbraco.editorControls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.editorControls" />
|
||||||
<file src="$BuildTmp$\bin\umbraco.MacroEngines.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\umbraco.MacroEngines.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.MacroEngines\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.MacroEngines" />
|
<file src="..\..\src\umbraco.MacroEngines\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.MacroEngines" />
|
||||||
<file src="$BuildTmp$\bin\umbraco.providers.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\umbraco.providers.pdb" target="lib" />
|
||||||
<file src="..\..\src\umbraco.providers\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.providers" />
|
<file src="..\..\src\umbraco.providers\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.providers" />
|
||||||
<file src="$BuildTmp$\bin\umbraco.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\umbraco.pdb" target="lib" />
|
||||||
<file src="..\..\src\Umbraco.Web\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web" />
|
<file src="..\..\src\Umbraco.Web\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web" />
|
||||||
<file src="$BuildTmp$\bin\Umbraco.Web.UI.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\Umbraco.Web.UI.pdb" target="lib" />
|
||||||
<file src="..\..\src\Umbraco.Web.UI\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web.UI" />
|
<file src="..\..\src\Umbraco.Web.UI\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web.UI" />
|
||||||
<file src="$BuildTmp$\bin\UmbracoExamine.pdb" target="lib" />
|
<file src="$BuildTmp$\bin\UmbracoExamine.pdb" target="lib" />
|
||||||
<file src="..\..\src\UmbracoExamine\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\UmbracoExamine" />
|
<file src="..\..\src\UmbracoExamine\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\UmbracoExamine" />
|
||||||
</files>
|
</files>
|
||||||
</package>
|
</package>
|
||||||
|
|||||||
@@ -1,54 +1,56 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata minClientVersion="3.4.4">
|
<metadata minClientVersion="3.4.4">
|
||||||
<id>UmbracoCms</id>
|
<id>UmbracoCms</id>
|
||||||
<version>7.0.0</version>
|
<version>7.0.0</version>
|
||||||
<title>Umbraco Cms</title>
|
<title>Umbraco Cms</title>
|
||||||
<authors>Umbraco HQ</authors>
|
<authors>Umbraco HQ</authors>
|
||||||
<owners>Umbraco HQ</owners>
|
<owners>Umbraco HQ</owners>
|
||||||
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
|
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
|
||||||
<projectUrl>http://umbraco.com/</projectUrl>
|
<projectUrl>http://umbraco.com/</projectUrl>
|
||||||
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
|
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<description>Installs Umbraco Cms in your Visual Studio ASP.NET project</description>
|
<description>Installs Umbraco Cms in your Visual Studio ASP.NET project</description>
|
||||||
<summary>Installs Umbraco Cms in your Visual Studio ASP.NET project</summary>
|
<summary>Installs Umbraco Cms in your Visual Studio ASP.NET project</summary>
|
||||||
<language>en-US</language>
|
<language>en-US</language>
|
||||||
<tags>umbraco</tags>
|
<tags>umbraco</tags>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="UmbracoCms.Core" version="[$version$]" />
|
<group targetFramework="net452">
|
||||||
<dependency id="Newtonsoft.Json" version="[10.0.2, 11.0.0)" />
|
<dependency id="UmbracoCms.Core" version="[$version$]" />
|
||||||
<dependency id="Umbraco.ModelsBuilder" version="[3.0.10, 4.0.0)" />
|
<dependency id="Newtonsoft.Json" version="[12.0.2, 13.0.0)" />
|
||||||
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.1, 3.0.0)" />
|
<dependency id="Umbraco.ModelsBuilder" version="[3.0.10, 4.0.0)" />
|
||||||
<dependency id="ImageProcessor.Web.Config" version="[2.3.1, 3.0.0)" />
|
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.4.1, 3.0.0)" />
|
||||||
<dependency id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="[2.0.0, 3.0.0)" />
|
<dependency id="ImageProcessor.Web.Config" version="[2.5.0.100, 3.0.0)" />
|
||||||
</dependencies>
|
<dependency id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="[2.0.1, 3.0.0)" />
|
||||||
</metadata>
|
</group>
|
||||||
<files>
|
</dependencies>
|
||||||
<file src="$BuildTmp$\Configs\**" target="Content\Config" exclude="$BuildTmp$\Configs\Web.config.transform" />
|
</metadata>
|
||||||
<file src="$BuildTmp$\WebApp\Views\**" target="Content\Views" exclude="$BuildTmp$\WebApp\Views\Web.config" />
|
<files>
|
||||||
<file src="$BuildTmp$\WebApp\default.aspx" target="Content\default.aspx" />
|
<file src="$BuildTmp$\Configs\**" target="Content\Config" exclude="$BuildTmp$\Configs\Web.config.transform" />
|
||||||
<file src="$BuildTmp$\WebApp\Global.asax" target="Content\Global.asax" />
|
<file src="$BuildTmp$\WebApp\Views\**" target="Content\Views" exclude="$BuildTmp$\WebApp\Views\Web.config" />
|
||||||
<file src="$BuildTmp$\WebApp\Web.config" target="UmbracoFiles\Web.config" />
|
<file src="$BuildTmp$\WebApp\default.aspx" target="Content\default.aspx" />
|
||||||
<file src="$BuildTmp$\WebApp\App_Browsers\**" target="UmbracoFiles\App_Browsers" />
|
<file src="$BuildTmp$\WebApp\Global.asax" target="Content\Global.asax" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\amd64\**" target="UmbracoFiles\bin\amd64" />
|
<file src="$BuildTmp$\WebApp\Web.config" target="UmbracoFiles\Web.config" />
|
||||||
<file src="$BuildTmp$\WebApp\bin\x86\**" target="UmbracoFiles\bin\x86" />
|
<file src="$BuildTmp$\WebApp\App_Browsers\**" target="UmbracoFiles\App_Browsers" />
|
||||||
<file src="$BuildTmp$\WebApp\config\splashes\**" target="UmbracoFiles\Config\splashes" />
|
<file src="$BuildTmp$\WebApp\bin\amd64\**" target="UmbracoFiles\bin\amd64" />
|
||||||
<file src="$BuildTmp$\WebApp\config\BackOfficeTours\**" target="Content\Config\BackOfficeTours" />
|
<file src="$BuildTmp$\WebApp\bin\x86\**" target="UmbracoFiles\bin\x86" />
|
||||||
<file src="$BuildTmp$\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
|
<file src="$BuildTmp$\WebApp\config\splashes\**" target="UmbracoFiles\Config\splashes" />
|
||||||
<file src="$BuildTmp$\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
|
<file src="$BuildTmp$\WebApp\config\BackOfficeTours\**" target="Content\Config\BackOfficeTours" />
|
||||||
<file src="$BuildTmp$\WebApp\Media\Web.config" target="Content\Media\Web.config" />
|
<file src="$BuildTmp$\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
|
||||||
<file src="tools\install.ps1" target="tools\install.ps1" />
|
<file src="$BuildTmp$\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
|
||||||
<file src="tools\Readme.txt" target="tools\Readme.txt" />
|
<file src="$BuildTmp$\WebApp\Media\Web.config" target="Content\Media\Web.config" />
|
||||||
<file src="tools\ReadmeUpgrade.txt" target="tools\ReadmeUpgrade.txt" />
|
<file src="tools\install.ps1" target="tools\install.ps1" />
|
||||||
<file src="tools\Web.config.install.xdt" target="Content\Web.config.install.xdt" />
|
<file src="tools\Readme.txt" target="tools\Readme.txt" />
|
||||||
<file src="tools\applications.config.install.xdt" target="Content\config\applications.config.install.xdt" />
|
<file src="tools\ReadmeUpgrade.txt" target="tools\ReadmeUpgrade.txt" />
|
||||||
<file src="tools\ClientDependency.config.install.xdt" target="Content\config\ClientDependency.config.install.xdt" />
|
<file src="tools\Web.config.install.xdt" target="Content\Web.config.install.xdt" />
|
||||||
<file src="tools\Dashboard.config.install.xdt" target="Content\config\Dashboard.config.install.xdt" />
|
<file src="tools\applications.config.install.xdt" target="Content\config\applications.config.install.xdt" />
|
||||||
<file src="tools\trees.config.install.xdt" target="Content\config\trees.config.install.xdt" />
|
<file src="tools\ClientDependency.config.install.xdt" target="Content\config\ClientDependency.config.install.xdt" />
|
||||||
<file src="tools\umbracoSettings.config.install.xdt" target="Content\config\umbracoSettings.config.install.xdt" />
|
<file src="tools\Dashboard.config.install.xdt" target="Content\config\Dashboard.config.install.xdt" />
|
||||||
<file src="tools\Views.Web.config.install.xdt" target="Views\Web.config.install.xdt" />
|
<file src="tools\trees.config.install.xdt" target="Content\config\trees.config.install.xdt" />
|
||||||
<file src="tools\processing.config.install.xdt" target="Content\Config\imageprocessor\processing.config.install.xdt" />
|
<file src="tools\umbracoSettings.config.install.xdt" target="Content\config\umbracoSettings.config.install.xdt" />
|
||||||
<file src="tools\cache.config.install.xdt" target="Content\Config\imageprocessor\cache.config.install.xdt" />
|
<file src="tools\Views.Web.config.install.xdt" target="Views\Web.config.install.xdt" />
|
||||||
<file src="build\**" target="build" />
|
<file src="tools\processing.config.install.xdt" target="Content\Config\imageprocessor\processing.config.install.xdt" />
|
||||||
</files>
|
<file src="tools\cache.config.install.xdt" target="Content\Config\imageprocessor\cache.config.install.xdt" />
|
||||||
|
<file src="build\**" target="build" />
|
||||||
|
</files>
|
||||||
</package>
|
</package>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
</configSections>
|
</configSections>
|
||||||
|
|
||||||
<system.web.webPages.razor>
|
<system.web.webPages.razor>
|
||||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(factoryType)" xdt:Transform="SetAttributes(factoryType)" />
|
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(factoryType)" xdt:Transform="SetAttributes(factoryType)" />
|
||||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
||||||
<namespaces>
|
<namespaces>
|
||||||
<add namespace="Umbraco.Web.PublishedContentModels" xdt:Transform="InsertIfMissing" />
|
<add namespace="Umbraco.Web.PublishedContentModels" xdt:Transform="InsertIfMissing" />
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
|
|
||||||
<system.web>
|
<system.web>
|
||||||
<pages
|
<pages
|
||||||
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||||
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||||
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||||
xdt:Locator="Match(pageParserFilterType,pageBaseType,userControlBaseType)"
|
xdt:Locator="Match(pageParserFilterType,pageBaseType,userControlBaseType)"
|
||||||
xdt:Transform="SetAttributes(pageParserFilterType,pageBaseType,userControlBaseType)">
|
xdt:Transform="SetAttributes(pageParserFilterType,pageBaseType,userControlBaseType)">
|
||||||
<controls>
|
<controls>
|
||||||
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" xdt:Locator="Match(namespace)" xdt:Transform="SetAttributes(assembly)" />
|
<add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" xdt:Locator="Match(namespace)" xdt:Transform="SetAttributes(assembly)" />
|
||||||
</controls>
|
</controls>
|
||||||
</pages>
|
</pages>
|
||||||
</system.web>
|
</system.web>
|
||||||
|
|||||||
@@ -324,7 +324,6 @@
|
|||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='HtmlAgilityPack')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='HtmlAgilityPack')" xdt:Transform="Remove" />
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='AutoMapper')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='AutoMapper')" xdt:Transform="Remove" />
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Net.Http')" xdt:Transform="Remove" />
|
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Newtonsoft.Json')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Newtonsoft.Json')" xdt:Transform="Remove" />
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.Mvc')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.Mvc')" xdt:Transform="Remove" />
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.WebPages.Razor')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.WebPages.Razor')" xdt:Transform="Remove" />
|
||||||
@@ -337,6 +336,9 @@
|
|||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.CodeAnalysis.CSharp')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.CodeAnalysis.CSharp')" xdt:Transform="Remove" />
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='log4net')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='log4net')" xdt:Transform="Remove" />
|
||||||
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Data.SqlServerCe')" xdt:Transform="Remove" />
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Data.SqlServerCe')" xdt:Transform="Remove" />
|
||||||
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.CodeDom.Providers.DotNetCompilerPlatform')" xdt:Transform="Remove" />
|
||||||
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.AspNet.SignalR.Core')" xdt:Transform="Remove" />
|
||||||
|
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.Http.WebHost')" xdt:Transform="Remove" />
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
|
|
||||||
@@ -344,7 +346,7 @@
|
|||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5" />
|
<bindingRedirect oldVersion="0.0.0.0-1.8.8.0" newVersion="1.8.8.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
|
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
|
||||||
@@ -356,11 +358,11 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
|
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
|
||||||
@@ -368,27 +370,27 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly xdt:Transform="Insert">
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
|
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
|
||||||
@@ -398,6 +400,18 @@
|
|||||||
<assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845DCD8080CC91" culture="neutral"/>
|
<assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845DCD8080CC91" culture="neutral"/>
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
|
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
|
<assemblyIdentity name="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
|
<assemblyIdentity name="Microsoft.AspNet.SignalR.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.4.1.0" newVersion="2.4.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly xdt:Transform="Insert">
|
||||||
|
<assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
|
|
||||||
|
|||||||
@@ -3,57 +3,57 @@
|
|||||||
[string]$Directory
|
[string]$Directory
|
||||||
)
|
)
|
||||||
$workingDirectory = $Directory
|
$workingDirectory = $Directory
|
||||||
CD $workingDirectory
|
CD "$($workingDirectory)"
|
||||||
|
|
||||||
# Clone repo
|
# Clone repo
|
||||||
$fullGitUrl = "https://$env:GIT_URL/$env:GIT_REPOSITORYNAME.git"
|
$fullGitUrl = "https://$($env:GIT_URL)/$($env:GIT_REPOSITORYNAME).git"
|
||||||
git clone $fullGitUrl 2>&1 | % { $_.ToString() }
|
git clone $($fullGitUrl) $($env:GIT_REPOSITORYNAME) 2>&1 | % { $_.ToString() }
|
||||||
|
|
||||||
# Remove everything so that unzipping the release later will update everything
|
# Remove everything so that unzipping the release later will update everything
|
||||||
# Don't remove the readme file nor the git directory
|
# Don't remove the readme file nor the git directory
|
||||||
Write-Host "Cleaning up git directory before adding new version"
|
Write-Host "Cleaning up git directory before adding new version"
|
||||||
Remove-Item -Recurse $workingDirectory\$env:GIT_REPOSITORYNAME\* -Exclude README.md,.git
|
Remove-Item -Recurse "$($workingDirectory)\$($env:GIT_REPOSITORYNAME)\*" -Exclude README.md,.git
|
||||||
|
|
||||||
# Find release zip
|
# Find release zip
|
||||||
$zipsDir = "$workingDirectory\$env:BUILD_DEFINITIONNAME\zips"
|
$zipsDir = "$($workingDirectory)\$($env:BUILD_DEFINITIONNAME)\zips"
|
||||||
$pattern = "UmbracoCms.([0-9]{1,2}.[0-9]{1,3}.[0-9]{1,3}).zip"
|
$pattern = "UmbracoCms.([0-9]{1,2}.[0-9]{1,3}.[0-9]{1,3}).zip"
|
||||||
Write-Host "Searching for Umbraco release files in $workingDirectory\$zipsDir for a file with pattern $pattern"
|
Write-Host "Searching for Umbraco release files in $($zipsDir) for a file with pattern $($pattern)"
|
||||||
$file = (Get-ChildItem $zipsDir | Where-Object { $_.Name -match "$pattern" })
|
$file = (Get-ChildItem "$($zipsDir)" | Where-Object { $_.Name -match "$($pattern)" })
|
||||||
|
|
||||||
if($file)
|
if($file)
|
||||||
{
|
{
|
||||||
# Get release name
|
# Get release name
|
||||||
$version = [regex]::Match($file.Name, $pattern).captures.groups[1].value
|
$version = [regex]::Match($($file.Name), $($pattern)).captures.groups[1].value
|
||||||
$releaseName = "Umbraco $version"
|
$releaseName = "Umbraco $($version)"
|
||||||
Write-Host "Found $releaseName"
|
Write-Host "Found $($releaseName)"
|
||||||
|
|
||||||
# Unzip into repository to update release
|
# Unzip into repository to update release
|
||||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||||
Write-Host "Unzipping $($file.FullName) to $workingDirectory\$env:GIT_REPOSITORYNAME"
|
Write-Host "Unzipping $($file.FullName) to $($workingDirectory)\$($env:GIT_REPOSITORYNAME)"
|
||||||
[System.IO.Compression.ZipFile]::ExtractToDirectory("$($file.FullName)", "$workingDirectory\$env:GIT_REPOSITORYNAME")
|
[System.IO.Compression.ZipFile]::ExtractToDirectory("$($file.FullName)", "$($workingDirectory)\$($env:GIT_REPOSITORYNAME)")
|
||||||
|
|
||||||
# Telling git who we are
|
# Telling git who we are
|
||||||
git config --global user.email "coffee@umbraco.com" 2>&1 | % { $_.ToString() }
|
git config --global user.email "coffee@umbraco.com" 2>&1 | % { $_.ToString() }
|
||||||
git config --global user.name "Umbraco HQ" 2>&1 | % { $_.ToString() }
|
git config --global user.name "Umbraco HQ" 2>&1 | % { $_.ToString() }
|
||||||
|
|
||||||
# Commit
|
# Commit
|
||||||
CD $env:GIT_REPOSITORYNAME
|
CD "$($workingDirectory)\$($env:GIT_REPOSITORYNAME)"
|
||||||
Write-Host "Committing Umbraco $version Release from Build Output"
|
Write-Host "Committing Umbraco $($version) Release from Build Output"
|
||||||
|
|
||||||
git add . 2>&1 | % { $_.ToString() }
|
git add . 2>&1 | % { $_.ToString() }
|
||||||
git commit -m " Release $releaseName from Build Output" 2>&1 | % { $_.ToString() }
|
git commit -m " Release $($releaseName) from Build Output" 2>&1 | % { $_.ToString() }
|
||||||
|
|
||||||
# Tag the release
|
# Tag the release
|
||||||
git tag -a "v$version" -m "v$version"
|
git tag -a "v$($version)" -m "v$($version)"
|
||||||
|
|
||||||
# Push release to master
|
# Push release to master
|
||||||
$fullGitAuthUrl = "https://$($env:GIT_USERNAME):$GitHubPersonalAccessToken@$env:GIT_URL/$env:GIT_REPOSITORYNAME.git"
|
$fullGitAuthUrl = "https://$($env:GIT_USERNAME):$($GitHubPersonalAccessToken)@$($env:GIT_URL)/$($env:GIT_REPOSITORYNAME).git"
|
||||||
git push $fullGitAuthUrl 2>&1 | % { $_.ToString() }
|
git push $($fullGitAuthUrl) 2>&1 | % { $_.ToString() }
|
||||||
|
|
||||||
#Push tag to master
|
#Push tag to master
|
||||||
git push $fullGitAuthUrl --tags 2>&1 | % { $_.ToString() }
|
git push $($fullGitAuthUrl) --tags 2>&1 | % { $_.ToString() }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Write-Error "Umbraco release file not found, searched in $workingDirectory\$zipsDir for a file with pattern $pattern - cancelling"
|
Write-Error "Umbraco release file not found, searched in $($workingDirectory)\$($zipsDir) for a file with pattern $($pattern) - canceling"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>SQLCE4Umbraco</RootNamespace>
|
<RootNamespace>SQLCE4Umbraco</RootNamespace>
|
||||||
<AssemblyName>SQLCE4Umbraco</AssemblyName>
|
<AssemblyName>SQLCE4Umbraco</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<SccProjectName>
|
<SccProjectName>
|
||||||
</SccProjectName>
|
</SccProjectName>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
@@ -16,19 +16,19 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
||||||
@@ -36,4 +36,4 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup></configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /></startup></configuration>
|
||||||
|
|||||||
+2
-2
@@ -11,5 +11,5 @@ using System.Resources;
|
|||||||
|
|
||||||
[assembly: AssemblyVersion("1.0.*")]
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
|
|
||||||
[assembly: AssemblyFileVersion("7.13.0")]
|
[assembly: AssemblyFileVersion("7.15.1")]
|
||||||
[assembly: AssemblyInformationalVersion("7.13.0")]
|
[assembly: AssemblyInformationalVersion("7.15.1")]
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Configuration
|
|||||||
{
|
{
|
||||||
public class UmbracoVersion
|
public class UmbracoVersion
|
||||||
{
|
{
|
||||||
private static readonly Version Version = new Version("7.13.0");
|
private static readonly Version Version = new Version("7.15.1");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the current version of Umbraco.
|
/// Gets the current version of Umbraco.
|
||||||
|
|||||||
@@ -0,0 +1,295 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Umbraco.Core
|
||||||
|
{
|
||||||
|
public static partial class Constants
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Defines the identifiers for Umbraco data types as constants for easy centralized access/management.
|
||||||
|
/// </summary>
|
||||||
|
internal static class DataTypes
|
||||||
|
{
|
||||||
|
|
||||||
|
public static class ReservedPreValueKeys
|
||||||
|
{
|
||||||
|
public const string IgnoreUserStartNodes = "ignoreUserStartNodes";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Content Picker as string
|
||||||
|
/// </summary>
|
||||||
|
public const string ContentPicker = "FD1E0DA5-5606-4862-B679-5D0CF3A52A59";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Content Picker
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid ContentPickerGuid = new Guid(ContentPicker);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Member Picker as string
|
||||||
|
/// </summary>
|
||||||
|
public const string MemberPicker = "1EA2E01F-EBD8-4CE1-8D71-6B1149E63548";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Member Picker
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid MemberPickerGuid = new Guid(MemberPicker);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Media Picker as string
|
||||||
|
/// </summary>
|
||||||
|
public const string MediaPicker = "135D60E0-64D9-49ED-AB08-893C9BA44AE5";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Media Picker
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid MediaPickerGuid = new Guid(MediaPicker);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Multiple Media Picker as string
|
||||||
|
/// </summary>
|
||||||
|
public const string MultipleMediaPicker = "9DBBCBBB-2327-434A-B355-AF1B84E5010A";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Multiple Media Picker
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid MultipleMediaPickerGuid = new Guid(MultipleMediaPicker);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Related Links as string
|
||||||
|
/// </summary>
|
||||||
|
public const string RelatedLinks = "B4E3535A-1753-47E2-8568-602CF8CFEE6F";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Related Links
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid RelatedLinksGuid = new Guid(RelatedLinks);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Member as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Member = "d59be02f-1df9-4228-aa1e-01917d806cda";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Member
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid MemberGuid = new Guid(Member);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Image Cropper as string
|
||||||
|
/// </summary>
|
||||||
|
public const string ImageCropper = "1df9f033-e6d4-451f-b8d2-e0cbc50a836f";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Image Cropper
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid ImageCropperGuid = new Guid(ImageCropper);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Tags as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Tags = "b6b73142-b9c1-4bf8-a16d-e1c23320b549";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Tags
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid TagsGuid = new Guid(Tags);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for List View - Content as string
|
||||||
|
/// </summary>
|
||||||
|
public const string ListViewContent = "C0808DD3-8133-4E4B-8CE8-E2BEA84A96A4";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for List View - Content
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid ListViewContentGuid = new Guid(ListViewContent);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for List View - Media as string
|
||||||
|
/// </summary>
|
||||||
|
public const string ListViewMedia = "3A0156C4-3B8C-4803-BDC1-6871FAA83FFF";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for List View - Media
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid ListViewMediaGuid = new Guid(ListViewMedia);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for List View - Members as string
|
||||||
|
/// </summary>
|
||||||
|
public const string ListViewMembers = "AA2C52A0-CE87-4E65-A47C-7DF09358585D";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for List View - Members
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid ListViewMembersGuid = new Guid(ListViewMembers);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Date Picker with time as string
|
||||||
|
/// </summary>
|
||||||
|
public const string DatePickerWithTime = "e4d66c0f-b935-4200-81f0-025f7256b89a";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Date Picker with time
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid DatePickerWithTimeGuid = new Guid(DatePickerWithTime);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Approved Color as string
|
||||||
|
/// </summary>
|
||||||
|
public const string ApprovedColor = "0225af17-b302-49cb-9176-b9f35cab9c17";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Approved Color
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid ApprovedColorGuid = new Guid(ApprovedColor);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Dropdown multiple as string
|
||||||
|
/// </summary>
|
||||||
|
public const string DropdownMultiple = "f38f0ac7-1d27-439c-9f3f-089cd8825a53";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Dropdown multiple
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid DropdownMultipleGuid = new Guid(DropdownMultiple);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Radiobox as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Radiobox = "bb5f57c9-ce2b-4bb9-b697-4caca783a805";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Radiobox
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid RadioboxGuid = new Guid(Radiobox);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Date Picker as string
|
||||||
|
/// </summary>
|
||||||
|
public const string DatePicker = "5046194e-4237-453c-a547-15db3a07c4e1";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Date Picker
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid DatePickerGuid = new Guid(DatePicker);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Dropdown as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Dropdown = "0b6a45e7-44ba-430d-9da5-4e46060b9e03";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Dropdown
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid DropdownGuid = new Guid(Dropdown);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Checkbox list as string
|
||||||
|
/// </summary>
|
||||||
|
public const string CheckboxList = "fbaf13a8-4036-41f2-93a3-974f678c312a";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Checkbox list
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid CheckboxListGuid = new Guid(CheckboxList);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Checkbox as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Checkbox = "92897bc6-a5f3-4ffe-ae27-f2e7e33dda49";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Checkbox
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid CheckboxGuid = new Guid(Checkbox);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Numeric as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Numeric = "2e6d3631-066e-44b8-aec4-96f09099b2b5";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Dropdown
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid NumericGuid = new Guid(Numeric);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Richtext editor as string
|
||||||
|
/// </summary>
|
||||||
|
public const string RichtextEditor = "ca90c950-0aff-4e72-b976-a30b1ac57dad";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Richtext editor
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid RichtextEditorGuid = new Guid(RichtextEditor);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Textstring as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Textstring = "0cc0eba1-9960-42c9-bf9b-60e150b429ae";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Textstring
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid TextstringGuid = new Guid(Textstring);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Textarea as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Textarea = "c6bac0dd-4ab9-45b1-8e30-e4b619ee5da3";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Dropdown
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid TextareaGuid = new Guid(Textarea);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Upload as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Upload = "84c6b441-31df-4ffe-b67e-67d5bc3ae65a";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Upload
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid UploadGuid = new Guid(Upload);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Label as string
|
||||||
|
/// </summary>
|
||||||
|
public const string Label = "f0bc4bfb-b499-40d6-ba86-058885a5178c";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Guid for Label
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Guid LabelGuid = new Guid(Label);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -447,6 +447,11 @@ namespace Umbraco.Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string NestedContentAlias = "Umbraco.NestedContent";
|
public const string NestedContentAlias = "Umbraco.NestedContent";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Alias for the multi url picker editor.
|
||||||
|
/// </summary>
|
||||||
|
public const string MultiUrlPickerAlias = "Umbraco.MultiUrlPicker";
|
||||||
|
|
||||||
public static class PreValueKeys
|
public static class PreValueKeys
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ namespace Umbraco.Core.FileResources {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Files {
|
internal class Files {
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
@@ -293,6 +295,12 @@ namespace Umbraco.Core.IO
|
|||||||
{
|
{
|
||||||
var property = GetProperty(content, propertyTypeAlias);
|
var property = GetProperty(content, propertyTypeAlias);
|
||||||
var svalue = property.Value as string;
|
var svalue = property.Value as string;
|
||||||
|
if (svalue != null && svalue.DetectIsJson())
|
||||||
|
{
|
||||||
|
// the property value is a JSON serialized image crop data set - grab the "src" property as the file source
|
||||||
|
var jObject = JsonConvert.DeserializeObject<JObject>(svalue);
|
||||||
|
svalue = jObject != null ? jObject.GetValueAsString("src") : svalue;
|
||||||
|
}
|
||||||
var oldpath = svalue == null ? null : GetRelativePath(svalue);
|
var oldpath = svalue == null ? null : GetRelativePath(svalue);
|
||||||
var filepath = StoreFile(content, property.PropertyType, filename, filestream, oldpath);
|
var filepath = StoreFile(content, property.PropertyType, filename, filestream, oldpath);
|
||||||
property.Value = GetUrl(filepath);
|
property.Value = GetUrl(filepath);
|
||||||
@@ -357,7 +365,8 @@ namespace Umbraco.Core.IO
|
|||||||
{
|
{
|
||||||
var jpgInfo = ImageFile.FromStream(stream);
|
var jpgInfo = ImageFile.FromStream(stream);
|
||||||
|
|
||||||
if (jpgInfo.Format != ImageFileFormat.Unknown
|
if (jpgInfo != null
|
||||||
|
&& jpgInfo.Format != ImageFileFormat.Unknown
|
||||||
&& jpgInfo.Properties.ContainsKey(ExifTag.PixelYDimension)
|
&& jpgInfo.Properties.ContainsKey(ExifTag.PixelYDimension)
|
||||||
&& jpgInfo.Properties.ContainsKey(ExifTag.PixelXDimension))
|
&& jpgInfo.Properties.ContainsKey(ExifTag.PixelXDimension))
|
||||||
{
|
{
|
||||||
@@ -368,21 +377,28 @@ namespace Umbraco.Core.IO
|
|||||||
return new Size(width, height);
|
return new Size(width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
//We will just swallow, just means we can't read exif data, we don't want to log an error either
|
||||||
|
}
|
||||||
|
|
||||||
//we have no choice but to try to read in via GDI
|
//we have no choice but to try to read in via GDI
|
||||||
|
try
|
||||||
|
{
|
||||||
using (var image = Image.FromStream(stream))
|
using (var image = Image.FromStream(stream))
|
||||||
{
|
{
|
||||||
|
|
||||||
var fileWidth = image.Width;
|
var fileWidth = image.Width;
|
||||||
var fileHeight = image.Height;
|
var fileHeight = image.Height;
|
||||||
return new Size(fileWidth, fileHeight);
|
return new Size(fileWidth, fileHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch
|
||||||
{
|
{
|
||||||
//We will just swallow, just means we can't read exif data, we don't want to log an error either
|
//We will just swallow, just means we can't read via GDI, we don't want to log an error either
|
||||||
return new Size(Constants.Conventions.Media.DefaultSize, Constants.Conventions.Media.DefaultSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return new Size(Constants.Conventions.Media.DefaultSize, Constants.Conventions.Media.DefaultSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -118,9 +118,9 @@ namespace Umbraco.Core.Media.Exif
|
|||||||
/// <param name="encoding">The encoding to be used for text metadata when the source encoding is unknown.</param>
|
/// <param name="encoding">The encoding to be used for text metadata when the source encoding is unknown.</param>
|
||||||
/// <returns>The <see cref="ImageFile"/> created from the file.</returns>
|
/// <returns>The <see cref="ImageFile"/> created from the file.</returns>
|
||||||
public static ImageFile FromStream(Stream stream, Encoding encoding)
|
public static ImageFile FromStream(Stream stream, Encoding encoding)
|
||||||
{
|
{
|
||||||
// JPEG
|
// JPEG
|
||||||
if(JPEGDetector.IsOfType(stream))
|
if (JPEGDetector.IsOfType(stream))
|
||||||
{
|
{
|
||||||
return new JPEGFile(stream, encoding);
|
return new JPEGFile(stream, encoding);
|
||||||
}
|
}
|
||||||
@@ -137,8 +137,9 @@ namespace Umbraco.Core.Media.Exif
|
|||||||
return new SVGFile(stream);
|
return new SVGFile(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new NotValidImageFileException ();
|
// We don't know
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ namespace Umbraco.Core.Media.TypeDetector
|
|||||||
public static bool IsOfType(Stream fileStream)
|
public static bool IsOfType(Stream fileStream)
|
||||||
{
|
{
|
||||||
var header = GetFileHeader(fileStream);
|
var header = GetFileHeader(fileStream);
|
||||||
|
return header != null && header[0] == 0xff && header[1] == 0xD8;
|
||||||
return header[0] == 0xff && header[1] == 0xD8;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,13 @@ namespace Umbraco.Core.Media.TypeDetector
|
|||||||
public static byte[] GetFileHeader(Stream fileStream)
|
public static byte[] GetFileHeader(Stream fileStream)
|
||||||
{
|
{
|
||||||
fileStream.Seek(0, SeekOrigin.Begin);
|
fileStream.Seek(0, SeekOrigin.Begin);
|
||||||
byte[] header = new byte[8];
|
var header = new byte[8];
|
||||||
fileStream.Seek(0, SeekOrigin.Begin);
|
fileStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
// Invalid header
|
||||||
|
if (fileStream.Read(header, 0, header.Length) != header.Length)
|
||||||
|
return null;
|
||||||
|
|
||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,17 +7,17 @@ namespace Umbraco.Core.Media.TypeDetector
|
|||||||
{
|
{
|
||||||
public static bool IsOfType(Stream fileStream)
|
public static bool IsOfType(Stream fileStream)
|
||||||
{
|
{
|
||||||
string tiffHeader = GetFileHeader(fileStream);
|
var tiffHeader = GetFileHeader(fileStream);
|
||||||
|
return tiffHeader != null && tiffHeader == "MM\x00\x2a" || tiffHeader == "II\x2a\x00";
|
||||||
return tiffHeader == "MM\x00\x2a" || tiffHeader == "II\x2a\x00";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetFileHeader(Stream fileStream)
|
public static string GetFileHeader(Stream fileStream)
|
||||||
{
|
{
|
||||||
var header = RasterizedTypeDetector.GetFileHeader(fileStream);
|
var header = RasterizedTypeDetector.GetFileHeader(fileStream);
|
||||||
|
if (header == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
string tiffHeader = Encoding.ASCII.GetString(header, 0, 4);
|
var tiffHeader = Encoding.ASCII.GetString(header, 0, 4);
|
||||||
|
|
||||||
return tiffHeader;
|
return tiffHeader;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Umbraco.Core.Models
|
||||||
|
{
|
||||||
|
internal static class DataTypeExtensions
|
||||||
|
{
|
||||||
|
private static readonly ISet<Guid> IdsOfBuildInDataTypes = new HashSet<Guid>()
|
||||||
|
{
|
||||||
|
Constants.DataTypes.ContentPickerGuid,
|
||||||
|
Constants.DataTypes.MemberPickerGuid,
|
||||||
|
Constants.DataTypes.MediaPickerGuid,
|
||||||
|
Constants.DataTypes.MultipleMediaPickerGuid,
|
||||||
|
Constants.DataTypes.RelatedLinksGuid,
|
||||||
|
Constants.DataTypes.MemberGuid,
|
||||||
|
Constants.DataTypes.ImageCropperGuid,
|
||||||
|
Constants.DataTypes.TagsGuid,
|
||||||
|
Constants.DataTypes.ListViewContentGuid,
|
||||||
|
Constants.DataTypes.ListViewMediaGuid,
|
||||||
|
Constants.DataTypes.ListViewMembersGuid,
|
||||||
|
Constants.DataTypes.DatePickerWithTimeGuid,
|
||||||
|
Constants.DataTypes.ApprovedColorGuid,
|
||||||
|
Constants.DataTypes.DropdownMultipleGuid,
|
||||||
|
Constants.DataTypes.RadioboxGuid,
|
||||||
|
Constants.DataTypes.DatePickerGuid,
|
||||||
|
Constants.DataTypes.DropdownGuid,
|
||||||
|
Constants.DataTypes.CheckboxListGuid,
|
||||||
|
Constants.DataTypes.CheckboxGuid,
|
||||||
|
Constants.DataTypes.NumericGuid,
|
||||||
|
Constants.DataTypes.RichtextEditorGuid,
|
||||||
|
Constants.DataTypes.TextstringGuid,
|
||||||
|
Constants.DataTypes.TextareaGuid,
|
||||||
|
Constants.DataTypes.UploadGuid,
|
||||||
|
Constants.DataTypes.LabelGuid,
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if this date type is build-in/default.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataType">The data type definition.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool IsBuildInDataType(this IDataTypeDefinition dataType)
|
||||||
|
{
|
||||||
|
return IsBuildInDataType(dataType.Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if this date type is build-in/default.
|
||||||
|
/// </summary>
|
||||||
|
public static bool IsBuildInDataType(Guid key)
|
||||||
|
{
|
||||||
|
return IdsOfBuildInDataTypes.Contains(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,6 +25,8 @@ namespace Umbraco.Core.Models.PublishedContent
|
|||||||
{
|
{
|
||||||
Id = contentType.Id;
|
Id = contentType.Id;
|
||||||
Alias = contentType.Alias;
|
Alias = contentType.Alias;
|
||||||
|
Name = contentType.Name;
|
||||||
|
Description = contentType.Description;
|
||||||
_compositionAliases = new HashSet<string>(contentType.CompositionAliases(), StringComparer.InvariantCultureIgnoreCase);
|
_compositionAliases = new HashSet<string>(contentType.CompositionAliases(), StringComparer.InvariantCultureIgnoreCase);
|
||||||
_propertyTypes = contentType.CompositionPropertyTypes
|
_propertyTypes = contentType.CompositionPropertyTypes
|
||||||
.Select(x => new PublishedPropertyType(this, x))
|
.Select(x => new PublishedPropertyType(this, x))
|
||||||
@@ -33,10 +35,12 @@ namespace Umbraco.Core.Models.PublishedContent
|
|||||||
}
|
}
|
||||||
|
|
||||||
// internal so it can be used for unit tests
|
// internal so it can be used for unit tests
|
||||||
internal PublishedContentType(int id, string alias, IEnumerable<string> compositionAliases, IEnumerable<PublishedPropertyType> propertyTypes)
|
internal PublishedContentType(int id, string alias, string name, string description, IEnumerable<string> compositionAliases, IEnumerable<PublishedPropertyType> propertyTypes)
|
||||||
{
|
{
|
||||||
Id = id;
|
Id = id;
|
||||||
Alias = alias;
|
Alias = alias;
|
||||||
|
Name = name;
|
||||||
|
Description = description;
|
||||||
_compositionAliases = new HashSet<string>(compositionAliases, StringComparer.InvariantCultureIgnoreCase);
|
_compositionAliases = new HashSet<string>(compositionAliases, StringComparer.InvariantCultureIgnoreCase);
|
||||||
_propertyTypes = propertyTypes.ToArray();
|
_propertyTypes = propertyTypes.ToArray();
|
||||||
foreach (var propertyType in _propertyTypes)
|
foreach (var propertyType in _propertyTypes)
|
||||||
@@ -46,7 +50,7 @@ namespace Umbraco.Core.Models.PublishedContent
|
|||||||
|
|
||||||
// create detached content type - ie does not match anything in the DB
|
// create detached content type - ie does not match anything in the DB
|
||||||
internal PublishedContentType(string alias, IEnumerable<string> compositionAliases, IEnumerable<PublishedPropertyType> propertyTypes)
|
internal PublishedContentType(string alias, IEnumerable<string> compositionAliases, IEnumerable<PublishedPropertyType> propertyTypes)
|
||||||
: this(0, alias, compositionAliases, propertyTypes)
|
: this(0, alias, string.Empty, string.Empty, compositionAliases, propertyTypes)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
private void InitializeIndexes()
|
private void InitializeIndexes()
|
||||||
@@ -63,6 +67,8 @@ namespace Umbraco.Core.Models.PublishedContent
|
|||||||
|
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
public string Alias { get; private set; }
|
public string Alias { get; private set; }
|
||||||
|
public string Name { get; private set; }
|
||||||
|
public string Description { get; private set; }
|
||||||
public HashSet<string> CompositionAliases { get { return _compositionAliases; } }
|
public HashSet<string> CompositionAliases { get { return _compositionAliases; } }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -225,42 +225,5 @@ namespace Umbraco.Core.Models
|
|||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A struction that can be contained in the additional data of an UmbracoEntity representing
|
|
||||||
/// a user defined property
|
|
||||||
/// </summary>
|
|
||||||
public class EntityProperty : IDeepCloneable
|
|
||||||
{
|
|
||||||
public string PropertyEditorAlias { get; set; }
|
|
||||||
public object Value { get; set; }
|
|
||||||
public object DeepClone()
|
|
||||||
{
|
|
||||||
//Memberwise clone on Entity will work since it doesn't have any deep elements
|
|
||||||
// for any sub class this will work for standard properties as well that aren't complex object's themselves.
|
|
||||||
var clone = MemberwiseClone();
|
|
||||||
return clone;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected bool Equals(EntityProperty other)
|
|
||||||
{
|
|
||||||
return PropertyEditorAlias.Equals(other.PropertyEditorAlias) && string.Equals(Value, other.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool Equals(object obj)
|
|
||||||
{
|
|
||||||
if (ReferenceEquals(null, obj)) return false;
|
|
||||||
if (ReferenceEquals(this, obj)) return true;
|
|
||||||
if (obj.GetType() != this.GetType()) return false;
|
|
||||||
return Equals((EntityProperty) obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetHashCode()
|
|
||||||
{
|
|
||||||
unchecked
|
|
||||||
{
|
|
||||||
return (PropertyEditorAlias.GetHashCode() * 397) ^ (Value != null ? Value.GetHashCode() : 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -195,19 +195,6 @@ namespace Umbraco.Core.Models
|
|||||||
return startNodeIds.Any(x => formattedPath.Contains(string.Concat(",", x, ",")));
|
return startNodeIds.Any(x => formattedPath.Contains(string.Concat(",", x, ",")));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static bool IsInBranchOfStartNode(this IUser user, IUmbracoEntity entity, IEntityService entityService, int recycleBinId, out bool hasPathAccess)
|
|
||||||
{
|
|
||||||
switch (recycleBinId)
|
|
||||||
{
|
|
||||||
case Constants.System.RecycleBinMedia:
|
|
||||||
return IsInBranchOfStartNode(entity.Path, user.CalculateMediaStartNodeIds(entityService), user.GetMediaStartNodePaths(entityService), out hasPathAccess);
|
|
||||||
case Constants.System.RecycleBinContent:
|
|
||||||
return IsInBranchOfStartNode(entity.Path, user.CalculateContentStartNodeIds(entityService), user.GetContentStartNodePaths(entityService), out hasPathAccess);
|
|
||||||
default:
|
|
||||||
throw new NotSupportedException("Path access is only determined on content or media");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static bool IsInBranchOfStartNode(string path, int[] startNodeIds, string[] startNodePaths, out bool hasPathAccess)
|
internal static bool IsInBranchOfStartNode(string path, int[] startNodeIds, string[] startNodePaths, out bool hasPathAccess)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException("Value cannot be null or whitespace.", "path");
|
if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException("Value cannot be null or whitespace.", "path");
|
||||||
|
|||||||
@@ -12,14 +12,18 @@ namespace Umbraco.Core.Persistence.Factories
|
|||||||
{
|
{
|
||||||
internal class UmbracoEntityFactory
|
internal class UmbracoEntityFactory
|
||||||
{
|
{
|
||||||
|
private static readonly Lazy<string[]> EntityProperties = new Lazy<string[]>(() => typeof(IUmbracoEntity).GetPublicProperties().Select(x => x.Name).ToArray());
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Figure out what extra properties we have that are not on the IUmbracoEntity and add them to additional data
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <param name="originalEntityProperties"></param>
|
||||||
internal void AddAdditionalData(UmbracoEntity entity, IDictionary<string, object> originalEntityProperties)
|
internal void AddAdditionalData(UmbracoEntity entity, IDictionary<string, object> originalEntityProperties)
|
||||||
{
|
{
|
||||||
var entityProps = typeof(IUmbracoEntity).GetPublicProperties().Select(x => x.Name).ToArray();
|
|
||||||
|
|
||||||
//figure out what extra properties we have that are not on the IUmbracoEntity and add them to additional data
|
|
||||||
foreach (var k in originalEntityProperties.Keys
|
foreach (var k in originalEntityProperties.Keys
|
||||||
.Select(x => new { orig = x, title = x.ToCleanString(CleanStringType.PascalCase | CleanStringType.Ascii | CleanStringType.ConvertCase) })
|
.Select(x => new { orig = x, title = x.ToCleanString(CleanStringType.PascalCase | CleanStringType.Ascii | CleanStringType.ConvertCase) })
|
||||||
.Where(x => entityProps.InvariantContains(x.title) == false))
|
.Where(x => EntityProperties.Value.InvariantContains(x.title) == false))
|
||||||
{
|
{
|
||||||
entity.AdditionalData[k.title] = originalEntityProperties[k.orig];
|
entity.AdditionalData[k.title] = originalEntityProperties[k.orig];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,36 +116,36 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
|
|||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -1, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1", SortOrder = 0, UniqueId = new Guid("916724a5-173d-4619-b97e-b9de133dd6f5"), Text = "SYSTEM DATA: umbraco master root", NodeObjectType = new Guid(Constants.ObjectTypes.SystemRoot), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -1, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1", SortOrder = 0, UniqueId = new Guid("916724a5-173d-4619-b97e-b9de133dd6f5"), Text = "SYSTEM DATA: umbraco master root", NodeObjectType = new Guid(Constants.ObjectTypes.SystemRoot), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -20, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,-20", SortOrder = 0, UniqueId = new Guid("0F582A79-1E41-4CF0-BFA0-76340651891A"), Text = "Recycle Bin", NodeObjectType = new Guid(Constants.ObjectTypes.ContentRecycleBin), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -20, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,-20", SortOrder = 0, UniqueId = new Guid("0F582A79-1E41-4CF0-BFA0-76340651891A"), Text = "Recycle Bin", NodeObjectType = new Guid(Constants.ObjectTypes.ContentRecycleBin), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -21, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,-21", SortOrder = 0, UniqueId = new Guid("BF7C7CBC-952F-4518-97A2-69E9C7B33842"), Text = "Recycle Bin", NodeObjectType = new Guid(Constants.ObjectTypes.MediaRecycleBin), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -21, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,-21", SortOrder = 0, UniqueId = new Guid("BF7C7CBC-952F-4518-97A2-69E9C7B33842"), Text = "Recycle Bin", NodeObjectType = new Guid(Constants.ObjectTypes.MediaRecycleBin), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -92, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-92", SortOrder = 35, UniqueId = new Guid("f0bc4bfb-b499-40d6-ba86-058885a5178c"), Text = "Label", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -92, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-92", SortOrder = 35, UniqueId = Constants.DataTypes.LabelGuid, Text = "Label", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -90, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-90", SortOrder = 34, UniqueId = new Guid("84c6b441-31df-4ffe-b67e-67d5bc3ae65a"), Text = "Upload", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -90, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-90", SortOrder = 34, UniqueId = Constants.DataTypes.UploadGuid, Text = "Upload", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -89, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-89", SortOrder = 33, UniqueId = new Guid("c6bac0dd-4ab9-45b1-8e30-e4b619ee5da3"), Text = "Textarea", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -89, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-89", SortOrder = 33, UniqueId = Constants.DataTypes.TextareaGuid, Text = "Textarea", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -88, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-88", SortOrder = 32, UniqueId = new Guid("0cc0eba1-9960-42c9-bf9b-60e150b429ae"), Text = "Textstring", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -88, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-88", SortOrder = 32, UniqueId = Constants.DataTypes.TextstringGuid, Text = "Textstring", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -87, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-87", SortOrder = 4, UniqueId = new Guid("ca90c950-0aff-4e72-b976-a30b1ac57dad"), Text = "Richtext editor", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -87, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-87", SortOrder = 4, UniqueId = Constants.DataTypes.RichtextEditorGuid, Text = "Richtext editor", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -51, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-51", SortOrder = 2, UniqueId = new Guid("2e6d3631-066e-44b8-aec4-96f09099b2b5"), Text = "Numeric", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -51, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-51", SortOrder = 2, UniqueId = Constants.DataTypes.NumericGuid, Text = "Numeric", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -49, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-49", SortOrder = 2, UniqueId = new Guid("92897bc6-a5f3-4ffe-ae27-f2e7e33dda49"), Text = "Checkbox", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -49, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-49", SortOrder = 2, UniqueId = Constants.DataTypes.CheckboxGuid, Text = "Checkbox", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -43, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-43", SortOrder = 2, UniqueId = new Guid("fbaf13a8-4036-41f2-93a3-974f678c312a"), Text = "Checkbox list", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -43, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-43", SortOrder = 2, UniqueId = Constants.DataTypes.CheckboxListGuid, Text = "Checkbox list", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -42, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-42", SortOrder = 2, UniqueId = new Guid("0b6a45e7-44ba-430d-9da5-4e46060b9e03"), Text = "Dropdown", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -42, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-42", SortOrder = 2, UniqueId = Constants.DataTypes.DropdownGuid, Text = "Dropdown", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -41, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-41", SortOrder = 2, UniqueId = new Guid("5046194e-4237-453c-a547-15db3a07c4e1"), Text = "Date Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -41, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-41", SortOrder = 2, UniqueId = Constants.DataTypes.DatePickerGuid, Text = "Date Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -40, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-40", SortOrder = 2, UniqueId = new Guid("bb5f57c9-ce2b-4bb9-b697-4caca783a805"), Text = "Radiobox", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -40, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-40", SortOrder = 2, UniqueId = Constants.DataTypes.RadioboxGuid, Text = "Radiobox", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -39, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-39", SortOrder = 2, UniqueId = new Guid("f38f0ac7-1d27-439c-9f3f-089cd8825a53"), Text = "Dropdown multiple", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -39, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-39", SortOrder = 2, UniqueId = Constants.DataTypes.DropdownMultipleGuid, Text = "Dropdown multiple", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -37, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-37", SortOrder = 2, UniqueId = new Guid("0225af17-b302-49cb-9176-b9f35cab9c17"), Text = "Approved Color", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -37, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-37", SortOrder = 2, UniqueId = Constants.DataTypes.ApprovedColorGuid, Text = "Approved Color", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -36, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-36", SortOrder = 2, UniqueId = new Guid("e4d66c0f-b935-4200-81f0-025f7256b89a"), Text = "Date Picker with time", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -36, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-36", SortOrder = 2, UniqueId = Constants.DataTypes.DatePickerWithTimeGuid, Text = "Date Picker with time", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultContentListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-95", SortOrder = 2, UniqueId = new Guid("C0808DD3-8133-4E4B-8CE8-E2BEA84A96A4"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Content", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultContentListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-95", SortOrder = 2, UniqueId = Constants.DataTypes.ListViewContentGuid, Text = Constants.Conventions.DataTypes.ListViewPrefix + "Content", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultMediaListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-96", SortOrder = 2, UniqueId = new Guid("3A0156C4-3B8C-4803-BDC1-6871FAA83FFF"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Media", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultMediaListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-96", SortOrder = 2, UniqueId = Constants.DataTypes.ListViewMediaGuid, Text = Constants.Conventions.DataTypes.ListViewPrefix + "Media", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultMembersListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-97", SortOrder = 2, UniqueId = new Guid("AA2C52A0-CE87-4E65-A47C-7DF09358585D"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Members", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultMembersListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-97", SortOrder = 2, UniqueId = Constants.DataTypes.ListViewMembersGuid, Text = Constants.Conventions.DataTypes.ListViewPrefix + "Members", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1031, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1031", SortOrder = 2, UniqueId = new Guid("f38bd2d7-65d0-48e6-95dc-87ce06ec2d3d"), Text = Constants.Conventions.MediaTypes.Folder, NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1031, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1031", SortOrder = 2, UniqueId = new Guid("f38bd2d7-65d0-48e6-95dc-87ce06ec2d3d"), Text = Constants.Conventions.MediaTypes.Folder, NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1032, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1032", SortOrder = 2, UniqueId = new Guid("cc07b313-0843-4aa8-bbda-871c8da728c8"), Text = Constants.Conventions.MediaTypes.Image, NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1032, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1032", SortOrder = 2, UniqueId = new Guid("cc07b313-0843-4aa8-bbda-871c8da728c8"), Text = Constants.Conventions.MediaTypes.Image, NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1033, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1033", SortOrder = 2, UniqueId = new Guid("4c52d8ab-54e6-40cd-999c-7a5f24903e4d"), Text = Constants.Conventions.MediaTypes.File, NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1033, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1033", SortOrder = 2, UniqueId = new Guid("4c52d8ab-54e6-40cd-999c-7a5f24903e4d"), Text = Constants.Conventions.MediaTypes.File, NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1041, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1041", SortOrder = 2, UniqueId = new Guid("b6b73142-b9c1-4bf8-a16d-e1c23320b549"), Text = "Tags", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1041, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1041", SortOrder = 2, UniqueId = Constants.DataTypes.TagsGuid, Text = "Tags", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1043, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1043", SortOrder = 2, UniqueId = new Guid("1df9f033-e6d4-451f-b8d2-e0cbc50a836f"), Text = "Image Cropper", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1043, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1043", SortOrder = 2, UniqueId = Constants.DataTypes.ImageCropperGuid, Text = "Image Cropper", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1044, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1044", SortOrder = 0, UniqueId = new Guid("d59be02f-1df9-4228-aa1e-01917d806cda"), Text = Constants.Conventions.MemberTypes.DefaultAlias, NodeObjectType = new Guid(Constants.ObjectTypes.MemberType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1044, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1044", SortOrder = 0, UniqueId = Constants.DataTypes.MemberGuid, Text = Constants.Conventions.MemberTypes.DefaultAlias, NodeObjectType = new Guid(Constants.ObjectTypes.MemberType), CreateDate = DateTime.Now });
|
||||||
|
|
||||||
//New UDI pickers with newer Ids
|
//New UDI pickers with newer Ids
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1046, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1046", SortOrder = 2, UniqueId = new Guid("FD1E0DA5-5606-4862-B679-5D0CF3A52A59"), Text = "Content Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1046, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1046", SortOrder = 2, UniqueId = Constants.DataTypes.ContentPickerGuid, Text = "Content Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1047, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1047", SortOrder = 2, UniqueId = new Guid("1EA2E01F-EBD8-4CE1-8D71-6B1149E63548"), Text = "Member Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1047, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1047", SortOrder = 2, UniqueId = Constants.DataTypes.MemberPickerGuid, Text = "Member Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1048, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1048", SortOrder = 2, UniqueId = new Guid("135D60E0-64D9-49ED-AB08-893C9BA44AE5"), Text = "Media Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1048, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1048", SortOrder = 2, UniqueId = Constants.DataTypes.MediaPickerGuid, Text = "Media Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1049, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1049", SortOrder = 2, UniqueId = new Guid("9DBBCBBB-2327-434A-B355-AF1B84E5010A"), Text = "Multiple Media Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1049, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1049", SortOrder = 2, UniqueId = Constants.DataTypes.MultipleMediaPickerGuid, Text = "Multiple Media Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1050, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1050", SortOrder = 2, UniqueId = new Guid("B4E3535A-1753-47E2-8568-602CF8CFEE6F"), Text = "Related Links", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1050, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1050", SortOrder = 2, UniqueId = Constants.DataTypes.RelatedLinksGuid, Text = "Related Links", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateUmbracoLockData()
|
private void CreateUmbracoLockData()
|
||||||
|
|||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
using Umbraco.Core.Logging;
|
||||||
|
using Umbraco.Core.Persistence.SqlSyntax;
|
||||||
|
|
||||||
|
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourteenZero
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Migrates member group picker properties from NVarchar to NText. See https://github.com/umbraco/Umbraco-CMS/issues/3268.
|
||||||
|
/// </summary>
|
||||||
|
[Migration("7.14.0", 1, Constants.System.UmbracoMigrationName)]
|
||||||
|
public class UpdateMemberGroupPickerData : MigrationBase
|
||||||
|
{
|
||||||
|
public UpdateMemberGroupPickerData(ISqlSyntaxProvider sqlSyntax, ILogger logger) : base(sqlSyntax, logger)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Up()
|
||||||
|
{
|
||||||
|
// move the data for all member group properties from the NVarchar to the NText column and clear the NVarchar column
|
||||||
|
Execute.Sql($@"UPDATE cmsPropertyData SET dataNtext = dataNvarchar, dataNvarchar = NULL
|
||||||
|
WHERE dataNtext IS NULL AND id IN (
|
||||||
|
SELECT id FROM cmsPropertyData WHERE propertyTypeId in (
|
||||||
|
SELECT id from cmsPropertyType where dataTypeID IN (
|
||||||
|
SELECT nodeId FROM cmsDataType WHERE propertyEditorAlias = '{Constants.PropertyEditors.MemberGroupPickerAlias}'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)");
|
||||||
|
|
||||||
|
// ensure that all exising member group properties are defined as NText
|
||||||
|
Execute.Sql($"UPDATE cmsDataType SET dbType = 'Ntext' WHERE propertyEditorAlias = '{Constants.PropertyEditors.MemberGroupPickerAlias}'");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Down()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -835,6 +835,62 @@ order by umbracoNode.{2}, umbracoNode.parentID, umbracoNode.sortOrder",
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public XmlDocument BuildPreviewXmlCache()
|
||||||
|
{
|
||||||
|
var xmlDoc = new XmlDocument();
|
||||||
|
var doctype = xmlDoc.CreateDocumentType("root", null, null,
|
||||||
|
ApplicationContext.Current.Services.ContentTypeService.GetContentTypesDtd());
|
||||||
|
xmlDoc.AppendChild(doctype);
|
||||||
|
var parent = xmlDoc.CreateElement("root");
|
||||||
|
var pIdAtt = xmlDoc.CreateAttribute("id");
|
||||||
|
pIdAtt.Value = "-1";
|
||||||
|
parent.Attributes.Append(pIdAtt);
|
||||||
|
xmlDoc.AppendChild(parent);
|
||||||
|
|
||||||
|
//Ensure that only nodes that have published versions are selected
|
||||||
|
var sql = string.Format(@"select umbracoNode.id, umbracoNode.parentID, umbracoNode.sortOrder, cmsPreviewXml.{0}, umbracoNode.{1} from umbracoNode
|
||||||
|
inner join cmsPreviewXml on cmsPreviewXml.nodeId = umbracoNode.id and umbracoNode.nodeObjectType = @type
|
||||||
|
inner join cmsDocument on cmsPreviewXml.versionId = cmsDocument.versionId and cmsDocument.newest=1
|
||||||
|
where umbracoNode.trashed = 0
|
||||||
|
order by umbracoNode.{2}, umbracoNode.parentID, umbracoNode.sortOrder",
|
||||||
|
SqlSyntax.GetQuotedColumnName("xml"),
|
||||||
|
SqlSyntax.GetQuotedColumnName("level"),
|
||||||
|
SqlSyntax.GetQuotedColumnName("level"));
|
||||||
|
|
||||||
|
XmlElement last = null;
|
||||||
|
|
||||||
|
//NOTE: Query creates a reader - does not load all into memory
|
||||||
|
foreach (var row in Database.Query<dynamic>(sql, new { type = NodeObjectTypeId }))
|
||||||
|
{
|
||||||
|
string parentId = ((int)row.parentID).ToInvariantString();
|
||||||
|
string xml = row.xml;
|
||||||
|
int sortOrder = row.sortOrder;
|
||||||
|
|
||||||
|
//if the parentid is changing
|
||||||
|
if (last != null && last.GetAttribute("parentID") != parentId)
|
||||||
|
{
|
||||||
|
parent = xmlDoc.GetElementById(parentId);
|
||||||
|
if (parent == null)
|
||||||
|
{
|
||||||
|
//Need to short circuit here, if the parent is not there it means that the parent is unpublished
|
||||||
|
// and therefore the child is not published either so cannot be included in the xml cache
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var xmlDocFragment = xmlDoc.CreateDocumentFragment();
|
||||||
|
xmlDocFragment.InnerXml = xml;
|
||||||
|
|
||||||
|
last = (XmlElement)parent.AppendChild(xmlDocFragment);
|
||||||
|
|
||||||
|
// fix sortOrder - see notes in UpdateSortOrder
|
||||||
|
last.Attributes["sortOrder"].Value = sortOrder.ToInvariantString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return xmlDoc;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public int CountPublished(string contentTypeAlias = null)
|
public int CountPublished(string contentTypeAlias = null)
|
||||||
{
|
{
|
||||||
if (contentTypeAlias.IsNullOrWhiteSpace())
|
if (contentTypeAlias.IsNullOrWhiteSpace())
|
||||||
|
|||||||
@@ -20,27 +20,22 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
internal class EntityRepository : DisposableObjectSlim, IEntityRepository
|
internal class EntityRepository : DisposableObjectSlim, IEntityRepository
|
||||||
{
|
{
|
||||||
private readonly IDatabaseUnitOfWork _work;
|
|
||||||
|
|
||||||
public EntityRepository(IDatabaseUnitOfWork work)
|
public EntityRepository(IDatabaseUnitOfWork work)
|
||||||
{
|
{
|
||||||
_work = work;
|
UnitOfWork = work;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the Unit of Work added to the repository
|
/// Returns the Unit of Work added to the repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected internal IDatabaseUnitOfWork UnitOfWork
|
protected internal IDatabaseUnitOfWork UnitOfWork { get; }
|
||||||
{
|
|
||||||
get { return _work; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Internal for testing purposes
|
/// Internal for testing purposes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal Guid UnitKey
|
internal Guid UnitKey
|
||||||
{
|
{
|
||||||
get { return (Guid)_work.Key; }
|
get { return (Guid)UnitOfWork.Key; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Query Methods
|
#region Query Methods
|
||||||
@@ -69,75 +64,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
IEnumerable<IUmbracoEntity> result;
|
IEnumerable<IUmbracoEntity> result;
|
||||||
|
|
||||||
if (isMedia)
|
var pagedResult = UnitOfWork.Database.Page<dynamic>(pageIndex + 1, pageSize, pagedSql);
|
||||||
{
|
result = pagedResult.Items.Select(factory.BuildEntityFromDynamic).Cast<IUmbracoEntity>().ToList();
|
||||||
//Treat media differently for now, as an Entity it will be returned with ALL of it's properties in the AdditionalData bag!
|
|
||||||
var pagedResult = _work.Database.Page<dynamic>(pageIndex + 1, pageSize, pagedSql);
|
|
||||||
|
|
||||||
var ids = pagedResult.Items.Select(x => (int) x.id).InGroupsOf(2000);
|
|
||||||
var entities = pagedResult.Items.Select(factory.BuildEntityFromDynamic).Cast<IUmbracoEntity>().ToList();
|
|
||||||
|
|
||||||
//Now we need to merge in the property data since we need paging and we can't do this the way that the big media query was working before
|
|
||||||
foreach (var idGroup in ids)
|
|
||||||
{
|
|
||||||
var propSql = GetPropertySql(Constants.ObjectTypes.Media)
|
|
||||||
.Where("contentNodeId IN (@ids)", new { ids = idGroup });
|
|
||||||
propSql = (orderDirection == Direction.Descending) ? propSql.OrderByDescending("contentNodeId") : propSql.OrderBy("contentNodeId");
|
|
||||||
|
|
||||||
//This does NOT fetch all data into memory in a list, this will read
|
|
||||||
// over the records as a data reader, this is much better for performance and memory,
|
|
||||||
// but it means that during the reading of this data set, nothing else can be read
|
|
||||||
// from SQL server otherwise we'll get an exception.
|
|
||||||
var allPropertyData = _work.Database.Query<dynamic>(propSql);
|
|
||||||
|
|
||||||
//keep track of the current property data item being enumerated
|
|
||||||
var propertyDataSetEnumerator = allPropertyData.GetEnumerator();
|
|
||||||
var hasCurrent = false; // initially there is no enumerator.Current
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//This must be sorted by node id (which is done by SQL) because this is how we are sorting the query to lookup property types above,
|
|
||||||
// which allows us to more efficiently iterate over the large data set of property values.
|
|
||||||
foreach (var entity in entities)
|
|
||||||
{
|
|
||||||
// assemble the dtos for this def
|
|
||||||
// use the available enumerator.Current if any else move to next
|
|
||||||
while (hasCurrent || propertyDataSetEnumerator.MoveNext())
|
|
||||||
{
|
|
||||||
if (propertyDataSetEnumerator.Current.contentNodeId == entity.Id)
|
|
||||||
{
|
|
||||||
hasCurrent = false; // enumerator.Current is not available
|
|
||||||
|
|
||||||
//the property data goes into the additional data
|
|
||||||
entity.AdditionalData[propertyDataSetEnumerator.Current.propertyTypeAlias] = new UmbracoEntity.EntityProperty
|
|
||||||
{
|
|
||||||
PropertyEditorAlias = propertyDataSetEnumerator.Current.propertyEditorAlias,
|
|
||||||
Value = StringExtensions.IsNullOrWhiteSpace(propertyDataSetEnumerator.Current.dataNtext)
|
|
||||||
? propertyDataSetEnumerator.Current.dataNvarchar
|
|
||||||
: StringExtensions.ConvertToJsonIfPossible(propertyDataSetEnumerator.Current.dataNtext)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
hasCurrent = true; // enumerator.Current is available for another def
|
|
||||||
break; // no more propertyDataDto for this def
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
propertyDataSetEnumerator.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result = entities;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var pagedResult = _work.Database.Page<dynamic>(pageIndex + 1, pageSize, pagedSql);
|
|
||||||
result = pagedResult.Items.Select(factory.BuildEntityFromDynamic).Cast<IUmbracoEntity>().ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
//The total items from the PetaPoco page query will be wrong due to the Outer join used on parent, depending on the search this will
|
//The total items from the PetaPoco page query will be wrong due to the Outer join used on parent, depending on the search this will
|
||||||
//return duplicate results when the COUNT is used in conjuction with it, so we need to get the total on our own.
|
//return duplicate results when the COUNT is used in conjuction with it, so we need to get the total on our own.
|
||||||
@@ -159,7 +87,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
var translatorCount = new SqlTranslator<IUmbracoEntity>(sqlCountClause, query);
|
var translatorCount = new SqlTranslator<IUmbracoEntity>(sqlCountClause, query);
|
||||||
var countSql = translatorCount.Translate();
|
var countSql = translatorCount.Translate();
|
||||||
|
|
||||||
totalRecords = _work.Database.ExecuteScalar<int>(countSql);
|
totalRecords = UnitOfWork.Database.ExecuteScalar<int>(countSql);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -167,7 +95,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
public IUmbracoEntity GetByKey(Guid key)
|
public IUmbracoEntity GetByKey(Guid key)
|
||||||
{
|
{
|
||||||
var sql = GetBaseWhere(GetBase, false, false, key);
|
var sql = GetBaseWhere(GetBase, false, false, key);
|
||||||
var nodeDto = _work.Database.FirstOrDefault<dynamic>(sql);
|
var nodeDto = UnitOfWork.Database.FirstOrDefault<dynamic>(sql);
|
||||||
if (nodeDto == null)
|
if (nodeDto == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@@ -186,27 +114,15 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
var factory = new UmbracoEntityFactory();
|
var factory = new UmbracoEntityFactory();
|
||||||
|
|
||||||
if (isMedia)
|
//query = read forward data reader, do not load everything into mem
|
||||||
|
var dtos = UnitOfWork.Database.Query<dynamic>(sql);
|
||||||
|
var collection = new EntityDefinitionCollection();
|
||||||
|
foreach (var dto in dtos)
|
||||||
{
|
{
|
||||||
//for now treat media differently and include all property data too
|
collection.AddOrUpdate(new EntityDefinition(factory, dto, isContent, false));
|
||||||
var entities = _work.Database.Fetch<dynamic, UmbracoPropertyDto, UmbracoEntity>(
|
|
||||||
new UmbracoEntityRelator().Map, sql);
|
|
||||||
|
|
||||||
return entities.FirstOrDefault();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
//query = read forward data reader, do not load everything into mem
|
|
||||||
var dtos = _work.Database.Query<dynamic>(sql);
|
|
||||||
var collection = new EntityDefinitionCollection();
|
|
||||||
foreach (var dto in dtos)
|
|
||||||
{
|
|
||||||
collection.AddOrUpdate(new EntityDefinition(factory, dto, isContent, false));
|
|
||||||
}
|
|
||||||
var found = collection.FirstOrDefault();
|
|
||||||
return found != null ? found.BuildFromDynamic() : null;
|
|
||||||
}
|
}
|
||||||
|
var found = collection.FirstOrDefault();
|
||||||
|
return found != null ? found.BuildFromDynamic() : null;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -214,7 +130,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
public virtual IUmbracoEntity Get(int id)
|
public virtual IUmbracoEntity Get(int id)
|
||||||
{
|
{
|
||||||
var sql = GetBaseWhere(GetBase, false, false, id);
|
var sql = GetBaseWhere(GetBase, false, false, id);
|
||||||
var nodeDto = _work.Database.FirstOrDefault<dynamic>(sql);
|
var nodeDto = UnitOfWork.Database.FirstOrDefault<dynamic>(sql);
|
||||||
if (nodeDto == null)
|
if (nodeDto == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@@ -233,26 +149,16 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
var factory = new UmbracoEntityFactory();
|
var factory = new UmbracoEntityFactory();
|
||||||
|
|
||||||
if (isMedia)
|
//query = read forward data reader, do not load everything into mem
|
||||||
|
var dtos = UnitOfWork.Database.Query<dynamic>(sql);
|
||||||
|
var collection = new EntityDefinitionCollection();
|
||||||
|
foreach (var dto in dtos)
|
||||||
{
|
{
|
||||||
//for now treat media differently and include all property data too
|
collection.AddOrUpdate(new EntityDefinition(factory, dto, isContent, false));
|
||||||
var entities = _work.Database.Fetch<dynamic, UmbracoPropertyDto, UmbracoEntity>(
|
}
|
||||||
new UmbracoEntityRelator().Map, sql);
|
var found = collection.FirstOrDefault();
|
||||||
|
return found != null ? found.BuildFromDynamic() : null;
|
||||||
|
|
||||||
return entities.FirstOrDefault();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//query = read forward data reader, do not load everything into mem
|
|
||||||
var dtos = _work.Database.Query<dynamic>(sql);
|
|
||||||
var collection = new EntityDefinitionCollection();
|
|
||||||
foreach (var dto in dtos)
|
|
||||||
{
|
|
||||||
collection.AddOrUpdate(new EntityDefinition(factory, dto, isContent, false));
|
|
||||||
}
|
|
||||||
var found = collection.FirstOrDefault();
|
|
||||||
return found != null ? found.BuildFromDynamic() : null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual IEnumerable<IUmbracoEntity> GetAll(Guid objectTypeId, params int[] ids)
|
public virtual IEnumerable<IUmbracoEntity> GetAll(Guid objectTypeId, params int[] ids)
|
||||||
@@ -277,24 +183,14 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
var factory = new UmbracoEntityFactory();
|
var factory = new UmbracoEntityFactory();
|
||||||
|
|
||||||
if (isMedia)
|
//query = read forward data reader, do not load everything into mem
|
||||||
|
var dtos = UnitOfWork.Database.Query<dynamic>(sql);
|
||||||
|
var collection = new EntityDefinitionCollection();
|
||||||
|
foreach (var dto in dtos)
|
||||||
{
|
{
|
||||||
//for now treat media differently and include all property data too
|
collection.AddOrUpdate(new EntityDefinition(factory, dto, isContent, isMedia));
|
||||||
var entities = _work.Database.Fetch<dynamic, UmbracoPropertyDto, UmbracoEntity>(
|
|
||||||
new UmbracoEntityRelator().Map, sql);
|
|
||||||
return entities;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//query = read forward data reader, do not load everything into mem
|
|
||||||
var dtos = _work.Database.Query<dynamic>(sql);
|
|
||||||
var collection = new EntityDefinitionCollection();
|
|
||||||
foreach (var dto in dtos)
|
|
||||||
{
|
|
||||||
collection.AddOrUpdate(new EntityDefinition(factory, dto, isContent, false));
|
|
||||||
}
|
|
||||||
return collection.Select(x => x.BuildFromDynamic()).ToList();
|
|
||||||
}
|
}
|
||||||
|
return collection.Select(x => x.BuildFromDynamic()).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual IEnumerable<EntityPath> GetAllPaths(Guid objectTypeId, params int[] ids)
|
public virtual IEnumerable<EntityPath> GetAllPaths(Guid objectTypeId, params int[] ids)
|
||||||
@@ -315,7 +211,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
{
|
{
|
||||||
var sql = new Sql("SELECT id, path FROM umbracoNode WHERE umbracoNode.nodeObjectType=@type", new { type = objectTypeId });
|
var sql = new Sql("SELECT id, path FROM umbracoNode WHERE umbracoNode.nodeObjectType=@type", new { type = objectTypeId });
|
||||||
if (filter != null) filter(sql);
|
if (filter != null) filter(sql);
|
||||||
return _work.Database.Fetch<EntityPath>(sql);
|
return UnitOfWork.Database.Fetch<EntityPath>(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> query)
|
public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> query)
|
||||||
@@ -324,7 +220,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
var translator = new SqlTranslator<IUmbracoEntity>(sqlClause, query);
|
var translator = new SqlTranslator<IUmbracoEntity>(sqlClause, query);
|
||||||
var sql = translator.Translate().Append(GetGroupBy(false, false));
|
var sql = translator.Translate().Append(GetGroupBy(false, false));
|
||||||
|
|
||||||
var dtos = _work.Database.Fetch<dynamic>(sql);
|
var dtos = UnitOfWork.Database.Fetch<dynamic>(sql);
|
||||||
|
|
||||||
var factory = new UmbracoEntityFactory();
|
var factory = new UmbracoEntityFactory();
|
||||||
var list = dtos.Select(factory.BuildEntityFromDynamic).Cast<IUmbracoEntity>().ToList();
|
var list = dtos.Select(factory.BuildEntityFromDynamic).Cast<IUmbracoEntity>().ToList();
|
||||||
@@ -338,10 +234,6 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
/// <param name="query"></param>
|
/// <param name="query"></param>
|
||||||
/// <param name="objectTypeId"></param>
|
/// <param name="objectTypeId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <remarks>
|
|
||||||
/// Note that this will also fetch all property data for media items, which can cause performance problems
|
|
||||||
/// when used without paging, in sites with large amounts of data in cmsPropertyData.
|
|
||||||
/// </remarks>
|
|
||||||
public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> query, Guid objectTypeId)
|
public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> query, Guid objectTypeId)
|
||||||
{
|
{
|
||||||
var isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
var isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
||||||
@@ -352,53 +244,10 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
var translator = new SqlTranslator<IUmbracoEntity>(sqlClause, query);
|
var translator = new SqlTranslator<IUmbracoEntity>(sqlClause, query);
|
||||||
var entitySql = translator.Translate();
|
var entitySql = translator.Translate();
|
||||||
|
|
||||||
var factory = new UmbracoEntityFactory();
|
return GetByQueryInternal(entitySql, isContent, isMedia);
|
||||||
|
|
||||||
if (isMedia)
|
|
||||||
{
|
|
||||||
var wheres = query.GetWhereClauses().ToArray();
|
|
||||||
|
|
||||||
var mediaSql = GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false)), sql =>
|
|
||||||
{
|
|
||||||
//adds the additional filters
|
|
||||||
foreach (var whereClause in wheres)
|
|
||||||
{
|
|
||||||
sql.Where(whereClause.Item1, whereClause.Item2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
//for now treat media differently and include all property data too
|
|
||||||
var entities = _work.Database.Fetch<dynamic, UmbracoPropertyDto, UmbracoEntity>(
|
|
||||||
new UmbracoEntityRelator().Map, mediaSql);
|
|
||||||
return entities;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return GetByQueryInternal(entitySql, isContent, isMedia);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private IEnumerable<IUmbracoEntity> GetByQueryInternal(Sql entitySql, bool isContent, bool isMedia)
|
||||||
/// Gets entities by query without fetching property data.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="query"></param>
|
|
||||||
/// <param name="objectTypeId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
/// <remarks>
|
|
||||||
/// This is supposed to be internal and can be used when getting all entities without paging, without causing
|
|
||||||
/// performance issues.
|
|
||||||
/// </remarks>
|
|
||||||
internal IEnumerable<IUmbracoEntity> GetMediaByQueryWithoutPropertyData(IQuery<IUmbracoEntity> query)
|
|
||||||
{
|
|
||||||
var sqlClause = GetBaseWhere(GetBase, false, true, null, UmbracoObjectTypes.Media.GetGuid());
|
|
||||||
|
|
||||||
var translator = new SqlTranslator<IUmbracoEntity>(sqlClause, query);
|
|
||||||
var entitySql = translator.Translate();
|
|
||||||
|
|
||||||
return GetByQueryInternal(entitySql, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal IEnumerable<IUmbracoEntity> GetByQueryInternal(Sql entitySql, bool isContent, bool isMedia)
|
|
||||||
{
|
{
|
||||||
var factory = new UmbracoEntityFactory();
|
var factory = new UmbracoEntityFactory();
|
||||||
|
|
||||||
@@ -406,7 +255,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
var finalSql = entitySql.Append(GetGroupBy(isContent, isMedia));
|
var finalSql = entitySql.Append(GetGroupBy(isContent, isMedia));
|
||||||
|
|
||||||
//query = read forward data reader, do not load everything into mem
|
//query = read forward data reader, do not load everything into mem
|
||||||
var dtos = _work.Database.Query<dynamic>(finalSql);
|
var dtos = UnitOfWork.Database.Query<dynamic>(finalSql);
|
||||||
var collection = new EntityDefinitionCollection();
|
var collection = new EntityDefinitionCollection();
|
||||||
foreach (var dto in dtos)
|
foreach (var dto in dtos)
|
||||||
{
|
{
|
||||||
@@ -426,7 +275,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false));
|
if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false));
|
||||||
|
|
||||||
return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false)));
|
return entitySql.Append(GetGroupBy(isContent, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Sql GetFullSqlForEntityType(int id, bool isContent, bool isMedia, Guid objectTypeId)
|
protected Sql GetFullSqlForEntityType(int id, bool isContent, bool isMedia, Guid objectTypeId)
|
||||||
@@ -435,7 +284,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false));
|
if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false));
|
||||||
|
|
||||||
return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false)));
|
return entitySql.Append(GetGroupBy(isContent, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Sql GetFullSqlForEntityType(bool isContent, bool isMedia, Guid objectTypeId, Action<Sql> filter)
|
protected Sql GetFullSqlForEntityType(bool isContent, bool isMedia, Guid objectTypeId, Action<Sql> filter)
|
||||||
@@ -444,48 +293,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
|
|
||||||
if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false));
|
if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false));
|
||||||
|
|
||||||
return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false)), filter);
|
return entitySql.Append(GetGroupBy(isContent, true, false));
|
||||||
}
|
|
||||||
|
|
||||||
private Sql GetPropertySql(string nodeObjectType)
|
|
||||||
{
|
|
||||||
var sql = new Sql()
|
|
||||||
.Select("contentNodeId, versionId, dataNvarchar, dataNtext, propertyEditorAlias, alias as propertyTypeAlias")
|
|
||||||
.From<PropertyDataDto>()
|
|
||||||
.InnerJoin<NodeDto>()
|
|
||||||
.On<PropertyDataDto, NodeDto>(dto => dto.NodeId, dto => dto.NodeId)
|
|
||||||
.InnerJoin<PropertyTypeDto>()
|
|
||||||
.On<PropertyTypeDto, PropertyDataDto>(dto => dto.Id, dto => dto.PropertyTypeId)
|
|
||||||
.InnerJoin<DataTypeDto>()
|
|
||||||
.On<PropertyTypeDto, DataTypeDto>(dto => dto.DataTypeId, dto => dto.DataTypeId)
|
|
||||||
.Where("umbracoNode.nodeObjectType = @nodeObjectType", new { nodeObjectType = nodeObjectType });
|
|
||||||
|
|
||||||
return sql;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Sql GetFullSqlForMedia(Sql entitySql, Action<Sql> filter = null)
|
|
||||||
{
|
|
||||||
//this will add any dataNvarchar property to the output which can be added to the additional properties
|
|
||||||
|
|
||||||
var joinSql = GetPropertySql(Constants.ObjectTypes.Media);
|
|
||||||
|
|
||||||
if (filter != null)
|
|
||||||
{
|
|
||||||
filter(joinSql);
|
|
||||||
}
|
|
||||||
|
|
||||||
//We're going to create a query to query against the entity SQL
|
|
||||||
// because we cannot group by nText columns and we have a COUNT in the entitySql we cannot simply left join
|
|
||||||
// the entitySql query, we have to join the wrapped query to get the ntext in the result
|
|
||||||
|
|
||||||
var wrappedSql = new Sql("SELECT * FROM (")
|
|
||||||
.Append(entitySql)
|
|
||||||
.Append(new Sql(") tmpTbl LEFT JOIN ("))
|
|
||||||
.Append(joinSql)
|
|
||||||
.Append(new Sql(") as property ON id = property.contentNodeId"))
|
|
||||||
.OrderBy("sortOrder, id");
|
|
||||||
|
|
||||||
return wrappedSql;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Sql GetBase(bool isContent, bool isMedia, Action<Sql> customFilter)
|
protected virtual Sql GetBase(bool isContent, bool isMedia, Action<Sql> customFilter)
|
||||||
@@ -533,6 +341,11 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
columns.Add("contenttype.thumbnail");
|
columns.Add("contenttype.thumbnail");
|
||||||
columns.Add("contenttype.isContainer");
|
columns.Add("contenttype.isContainer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isMedia)
|
||||||
|
{
|
||||||
|
columns.Add("media.mediaPath");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Creates an SQL query to return a single row for the entity
|
//Creates an SQL query to return a single row for the entity
|
||||||
@@ -555,9 +368,16 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
.On("umbracoNode.id = published.nodeId");
|
.On("umbracoNode.id = published.nodeId");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isMedia)
|
||||||
|
{
|
||||||
|
entitySql.LeftJoin("cmsMedia media").On("media.nodeId = umbracoNode.id");
|
||||||
|
}
|
||||||
|
|
||||||
entitySql.LeftJoin("cmsContentType contenttype").On("contenttype.nodeId = content.contentType");
|
entitySql.LeftJoin("cmsContentType contenttype").On("contenttype.nodeId = content.contentType");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (isCount == false)
|
if (isCount == false)
|
||||||
{
|
{
|
||||||
entitySql.LeftJoin("umbracoNode parent").On("parent.parentID = umbracoNode.id");
|
entitySql.LeftJoin("umbracoNode parent").On("parent.parentID = umbracoNode.id");
|
||||||
@@ -667,6 +487,12 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
columns.Add("document.versionId");
|
columns.Add("document.versionId");
|
||||||
columns.Add("contentversion.id");
|
columns.Add("contentversion.id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isMedia)
|
||||||
|
{
|
||||||
|
columns.Add("media.mediaPath");
|
||||||
|
}
|
||||||
|
|
||||||
columns.Add("contenttype.alias");
|
columns.Add("contenttype.alias");
|
||||||
columns.Add("contenttype.icon");
|
columns.Add("contenttype.icon");
|
||||||
columns.Add("contenttype.thumbnail");
|
columns.Add("contenttype.thumbnail");
|
||||||
@@ -700,99 +526,17 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
public bool Exists(Guid key)
|
public bool Exists(Guid key)
|
||||||
{
|
{
|
||||||
var sql = new Sql().Select("COUNT(*)").From("umbracoNode").Where("uniqueID=@uniqueID", new {uniqueID = key});
|
var sql = new Sql().Select("COUNT(*)").From("umbracoNode").Where("uniqueID=@uniqueID", new {uniqueID = key});
|
||||||
return _work.Database.ExecuteScalar<int>(sql) > 0;
|
return UnitOfWork.Database.ExecuteScalar<int>(sql) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Exists(int id)
|
public bool Exists(int id)
|
||||||
{
|
{
|
||||||
var sql = new Sql().Select("COUNT(*)").From("umbracoNode").Where("id=@id", new { id = id });
|
var sql = new Sql().Select("COUNT(*)").From("umbracoNode").Where("id=@id", new { id = id });
|
||||||
return _work.Database.ExecuteScalar<int>(sql) > 0;
|
return UnitOfWork.Database.ExecuteScalar<int>(sql) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region private classes
|
#region private classes
|
||||||
|
|
||||||
[ExplicitColumns]
|
|
||||||
internal class UmbracoPropertyDto
|
|
||||||
{
|
|
||||||
[Column("propertyEditorAlias")]
|
|
||||||
public string PropertyEditorAlias { get; set; }
|
|
||||||
|
|
||||||
[Column("propertyTypeAlias")]
|
|
||||||
public string PropertyAlias { get; set; }
|
|
||||||
|
|
||||||
[Column("dataNvarchar")]
|
|
||||||
public string NVarcharValue { get; set; }
|
|
||||||
|
|
||||||
[Column("dataNtext")]
|
|
||||||
public string NTextValue { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This is a special relator in that it is not returning a DTO but a real resolved entity and that it accepts
|
|
||||||
/// a dynamic instance.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// We're doing this because when we query the db, we want to use dynamic so that it returns all available fields not just the ones
|
|
||||||
/// defined on the entity so we can them to additional data
|
|
||||||
/// </remarks>
|
|
||||||
internal class UmbracoEntityRelator
|
|
||||||
{
|
|
||||||
internal UmbracoEntity Current;
|
|
||||||
private readonly UmbracoEntityFactory _factory = new UmbracoEntityFactory();
|
|
||||||
|
|
||||||
internal UmbracoEntity Map(dynamic a, UmbracoPropertyDto p)
|
|
||||||
{
|
|
||||||
// Terminating call. Since we can return null from this function
|
|
||||||
// we need to be ready for PetaPoco to callback later with null
|
|
||||||
// parameters
|
|
||||||
if (a == null)
|
|
||||||
return Current;
|
|
||||||
|
|
||||||
// Is this the same UmbracoEntity as the current one we're processing
|
|
||||||
if (Current != null && Current.Key == a.uniqueID)
|
|
||||||
{
|
|
||||||
if (p != null && p.PropertyAlias.IsNullOrWhiteSpace() == false)
|
|
||||||
{
|
|
||||||
// Add this UmbracoProperty to the current additional data
|
|
||||||
Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty
|
|
||||||
{
|
|
||||||
PropertyEditorAlias = p.PropertyEditorAlias,
|
|
||||||
Value = p.NTextValue.IsNullOrWhiteSpace()
|
|
||||||
? p.NVarcharValue
|
|
||||||
: p.NTextValue.ConvertToJsonIfPossible()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return null to indicate we're not done with this UmbracoEntity yet
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is a different UmbracoEntity to the current one, or this is the
|
|
||||||
// first time through and we don't have a Tab yet
|
|
||||||
|
|
||||||
// Save the current UmbracoEntityDto
|
|
||||||
var prev = Current;
|
|
||||||
|
|
||||||
// Setup the new current UmbracoEntity
|
|
||||||
|
|
||||||
Current = _factory.BuildEntityFromDynamic(a);
|
|
||||||
|
|
||||||
if (p != null && p.PropertyAlias.IsNullOrWhiteSpace() == false)
|
|
||||||
{
|
|
||||||
//add the property/create the prop list if null
|
|
||||||
Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty
|
|
||||||
{
|
|
||||||
PropertyEditorAlias = p.PropertyEditorAlias,
|
|
||||||
Value = p.NTextValue.IsNullOrWhiteSpace()
|
|
||||||
? p.NVarcharValue
|
|
||||||
: p.NTextValue.ConvertToJsonIfPossible()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the now populated previous UmbracoEntity (or null if first time through)
|
|
||||||
return prev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class EntityDefinitionCollection : KeyedCollection<int, EntityDefinition>
|
private class EntityDefinitionCollection : KeyedCollection<int, EntityDefinition>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
XmlDocument BuildXmlCache();
|
XmlDocument BuildXmlCache();
|
||||||
|
|
||||||
|
XmlDocument BuildPreviewXmlCache();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the count of published items
|
/// Get the count of published items
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -95,7 +95,9 @@ namespace Umbraco.Core.Persistence.Repositories
|
|||||||
.InnerJoin<ContentDto>(SqlSyntax)
|
.InnerJoin<ContentDto>(SqlSyntax)
|
||||||
.On<ContentVersionDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
|
.On<ContentVersionDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
|
||||||
.InnerJoin<NodeDto>(SqlSyntax)
|
.InnerJoin<NodeDto>(SqlSyntax)
|
||||||
.On<ContentDto, NodeDto>(SqlSyntax, left => left.NodeId, right => right.NodeId);
|
.On<ContentDto, NodeDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
|
||||||
|
.InnerJoin<ContentTypeDto>(SqlSyntax)
|
||||||
|
.On<ContentTypeDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.ContentTypeId);
|
||||||
|
|
||||||
if (includeFilePaths)
|
if (includeFilePaths)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -267,8 +267,8 @@ ORDER BY colName";
|
|||||||
|
|
||||||
var fromDate = DateTime.UtcNow - timespan;
|
var fromDate = DateTime.UtcNow - timespan;
|
||||||
|
|
||||||
var count = Database.ExecuteScalar<int>("SELECT COUNT(*) FROM umbracoUserLogin WHERE lastValidatedUtc=@fromDate", new { fromDate = fromDate });
|
var count = Database.ExecuteScalar<int>("SELECT COUNT(*) FROM umbracoUserLogin WHERE lastValidatedUtc<=@fromDate", new { fromDate = fromDate });
|
||||||
Database.Execute("DELETE FROM umbracoUserLogin WHERE lastValidatedUtc=@fromDate", new { fromDate = fromDate });
|
Database.Execute("DELETE FROM umbracoUserLogin WHERE lastValidatedUtc<=@fromDate", new { fromDate = fromDate });
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -703,6 +703,8 @@ ORDER BY contentNodeId, versionId, propertytypeid
|
|||||||
// Members only
|
// Members only
|
||||||
case "USERNAME":
|
case "USERNAME":
|
||||||
return "cmsMember.LoginName";
|
return "cmsMember.LoginName";
|
||||||
|
case "CONTENTTYPEALIAS":
|
||||||
|
return "cmsContentType.alias";
|
||||||
default:
|
default:
|
||||||
//ensure invalid SQL cannot be submitted
|
//ensure invalid SQL cannot be submitted
|
||||||
return Regex.Replace(orderBy, @"[^\w\.,`\[\]@-]", "");
|
return Regex.Replace(orderBy, @"[^\w\.,`\[\]@-]", "");
|
||||||
|
|||||||
@@ -53,6 +53,12 @@ namespace Umbraco.Core.PropertyEditors
|
|||||||
nestedContentEditorFromPackage.Name = "(Obsolete) " + nestedContentEditorFromPackage.Name;
|
nestedContentEditorFromPackage.Name = "(Obsolete) " + nestedContentEditorFromPackage.Name;
|
||||||
nestedContentEditorFromPackage.IsDeprecated = true;
|
nestedContentEditorFromPackage.IsDeprecated = true;
|
||||||
}
|
}
|
||||||
|
var multiUrlPickerEditorFromPackage = editors.FirstOrDefault(x => x.Alias == "RJP.MultiUrlPicker");
|
||||||
|
if (multiUrlPickerEditorFromPackage != null)
|
||||||
|
{
|
||||||
|
multiUrlPickerEditorFromPackage.Name = "(Obsolete) " + multiUrlPickerEditorFromPackage.Name;
|
||||||
|
multiUrlPickerEditorFromPackage.IsDeprecated = true;
|
||||||
|
}
|
||||||
return editors;
|
return editors;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,16 +42,22 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
|
|||||||
|
|
||||||
public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview)
|
public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview)
|
||||||
{
|
{
|
||||||
|
var sourceAsString = source?.ToString();
|
||||||
|
if(sourceAsString.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
return new string[0];
|
||||||
|
}
|
||||||
|
|
||||||
// if Json storage type deserialzie and return as string array
|
// if Json storage type deserialzie and return as string array
|
||||||
if (JsonStorageType(propertyType.DataTypeId))
|
if (JsonStorageType(propertyType.DataTypeId))
|
||||||
{
|
{
|
||||||
var jArray = JsonConvert.DeserializeObject<JArray>(source.ToString());
|
var jArray = JsonConvert.DeserializeObject<JArray>(sourceAsString);
|
||||||
return jArray.ToObject<string[]>();
|
return jArray.ToObject<string[]>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise assume CSV storage type and return as string array
|
// Otherwise assume CSV storage type and return as string array
|
||||||
var csvTags =
|
var csvTags =
|
||||||
source.ToString()
|
sourceAsString
|
||||||
.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
|
.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
return csvTags;
|
return csvTags;
|
||||||
|
|||||||
@@ -107,6 +107,11 @@ namespace Umbraco.Core.Security
|
|||||||
|
|
||||||
await EnsureValidSessionId(context);
|
await EnsureValidSessionId(context);
|
||||||
|
|
||||||
|
if (context?.Identity == null)
|
||||||
|
{
|
||||||
|
context?.OwinContext.Authentication.SignOut(context.Options.AuthenticationType);
|
||||||
|
return;
|
||||||
|
}
|
||||||
await base.ValidateIdentity(context);
|
await base.ValidateIdentity(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.ComponentModel;
|
|||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
@@ -34,6 +35,7 @@ namespace Umbraco.Core.Services
|
|||||||
//Support recursive locks because some of the methods that require locking call other methods that require locking.
|
//Support recursive locks because some of the methods that require locking call other methods that require locking.
|
||||||
//for example, the Move method needs to be locked but this calls the Save method which also needs to be locked.
|
//for example, the Move method needs to be locked but this calls the Save method which also needs to be locked.
|
||||||
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
|
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
|
||||||
|
private static readonly Regex AnchorRegex = new Regex("<a id=\"(.*?)\">", RegexOptions.Compiled);
|
||||||
|
|
||||||
public ContentService(
|
public ContentService(
|
||||||
IDatabaseUnitOfWorkProvider provider,
|
IDatabaseUnitOfWorkProvider provider,
|
||||||
@@ -299,6 +301,45 @@ namespace Umbraco.Core.Services
|
|||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<string> GetAnchorValuesFromRTEs(int id)
|
||||||
|
{
|
||||||
|
var result = new List<string>();
|
||||||
|
|
||||||
|
var content = GetById(id);
|
||||||
|
|
||||||
|
foreach (var contentProperty in content.Properties)
|
||||||
|
{
|
||||||
|
if (contentProperty.PropertyType.PropertyEditorAlias.InvariantEquals(Constants.PropertyEditors.TinyMCEAlias))
|
||||||
|
{
|
||||||
|
var value = contentProperty.Value?.ToString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
result.AddRange(GetAnchorValuesFromRTEContent(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public IEnumerable<string> GetAnchorValuesFromRTEContent(string rteContent)
|
||||||
|
{
|
||||||
|
var result = new List<string>();
|
||||||
|
|
||||||
|
var matches = AnchorRegex.Matches(rteContent);
|
||||||
|
|
||||||
|
foreach (Match match in matches)
|
||||||
|
{
|
||||||
|
result.Add(match.Value.Split('\"')[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates and saves an <see cref="IContent"/> object using the alias of the <see cref="IContentType"/>
|
/// Creates and saves an <see cref="IContent"/> object using the alias of the <see cref="IContentType"/>
|
||||||
/// that this Content should based on.
|
/// that this Content should based on.
|
||||||
@@ -1741,7 +1782,15 @@ namespace Umbraco.Core.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Empties the Recycle Bin by deleting all <see cref="IContent"/> that resides in the bin
|
/// Empties the Recycle Bin by deleting all <see cref="IContent"/> that resides in the bin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void EmptyRecycleBin()
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
[Obsolete("Use EmptyRecycleBin with explicit indication of user ID instead")]
|
||||||
|
public void EmptyRecycleBin() => EmptyRecycleBin(0);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Empties the Recycle Bin by deleting all <see cref="IContent"/> that resides in the bin
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId">Optional Id of the User emptying the Recycle Bin</param>
|
||||||
|
public void EmptyRecycleBin(int userId = 0)
|
||||||
{
|
{
|
||||||
using (new WriteLock(Locker))
|
using (new WriteLock(Locker))
|
||||||
{
|
{
|
||||||
@@ -1771,7 +1820,7 @@ namespace Umbraco.Core.Services
|
|||||||
recycleBinEventArgs.RecycleBinEmptiedSuccessfully = success;
|
recycleBinEventArgs.RecycleBinEmptiedSuccessfully = success;
|
||||||
uow.Events.Dispatch(EmptiedRecycleBin, this, recycleBinEventArgs);
|
uow.Events.Dispatch(EmptiedRecycleBin, this, recycleBinEventArgs);
|
||||||
|
|
||||||
Audit(uow, AuditType.Delete, "Empty Content Recycle Bin performed by user", 0, Constants.System.RecycleBinContent);
|
Audit(uow, AuditType.Delete, "Empty Content Recycle Bin performed by user", userId, Constants.System.RecycleBinContent);
|
||||||
uow.Commit();
|
uow.Commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2192,6 +2241,17 @@ namespace Umbraco.Core.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public XmlDocument BuildPreviewXmlCache()
|
||||||
|
{
|
||||||
|
using (var uow = UowProvider.GetUnitOfWork())
|
||||||
|
{
|
||||||
|
var repository = RepositoryFactory.CreateContentRepository(uow);
|
||||||
|
var result = repository.BuildPreviewXmlCache();
|
||||||
|
uow.Commit();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rebuilds all xml content in the cmsContentXml table for all documents
|
/// Rebuilds all xml content in the cmsContentXml table for all documents
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using Umbraco.Core.Models;
|
||||||
|
|
||||||
|
namespace Umbraco.Core.Services
|
||||||
|
{
|
||||||
|
internal static class DateTypeServiceExtensions
|
||||||
|
{
|
||||||
|
public static bool IsDataTypeIgnoringUserStartNodes(this IDataTypeService dataTypeService, Guid key)
|
||||||
|
{
|
||||||
|
if (DataTypeExtensions.IsBuildInDataType(key)) return false; //built in ones can never be ignoring start nodes
|
||||||
|
|
||||||
|
var dataType = dataTypeService.GetDataTypeDefinitionById(key);
|
||||||
|
|
||||||
|
if (dataType != null)
|
||||||
|
{
|
||||||
|
var preValues = dataTypeService.GetPreValuesCollectionByDataTypeId(dataType.Id);
|
||||||
|
if (preValues.FormatAsDictionary().TryGetValue(
|
||||||
|
Constants.DataTypes.ReservedPreValueKeys.IgnoreUserStartNodes, out var preValue))
|
||||||
|
return preValue.Value.InvariantEquals("1");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using Umbraco.Core.CodeAnnotations;
|
using Umbraco.Core.CodeAnnotations;
|
||||||
@@ -75,28 +76,15 @@ namespace Umbraco.Core.Services
|
|||||||
return _idkMap.GetKeyForId(id, umbracoObjectType);
|
return _idkMap.GetKeyForId(id, umbracoObjectType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IUmbracoEntity GetByKey(Guid key, bool loadBaseType = true)
|
public IUmbracoEntity GetByKey(Guid key)
|
||||||
{
|
{
|
||||||
if (loadBaseType)
|
using (var uow = UowProvider.GetUnitOfWork())
|
||||||
{
|
{
|
||||||
using (var uow = UowProvider.GetUnitOfWork())
|
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
||||||
{
|
var ret = repository.GetByKey(key);
|
||||||
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
uow.Commit();
|
||||||
var ret = repository.GetByKey(key);
|
return ret;
|
||||||
uow.Commit();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SD: TODO: Need to enable this at some stage ... just need to ask Morten what the deal is with what this does.
|
|
||||||
throw new NotSupportedException();
|
|
||||||
|
|
||||||
//var objectType = GetObjectType(key);
|
|
||||||
//var entityType = GetEntityType(objectType);
|
|
||||||
//var typeFullName = entityType.FullName;
|
|
||||||
//var entity = _supportedObjectTypes[typeFullName].Item2(id);
|
|
||||||
|
|
||||||
//return entity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -106,49 +94,26 @@ namespace Umbraco.Core.Services
|
|||||||
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name="id">Id of the object to retrieve</param>
|
/// <param name="id">Id of the object to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
public virtual IUmbracoEntity Get(int id, bool loadBaseType = true)
|
public virtual IUmbracoEntity Get(int id)
|
||||||
{
|
{
|
||||||
if (loadBaseType)
|
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
||||||
{
|
{
|
||||||
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
||||||
{
|
var ret = repository.Get(id);
|
||||||
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
return ret;
|
||||||
var ret = repository.Get(id);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var objectType = GetObjectType(id);
|
|
||||||
var entityType = GetEntityType(objectType);
|
|
||||||
var typeFullName = entityType.FullName;
|
|
||||||
var entity = _supportedObjectTypes[typeFullName].Item2(id);
|
|
||||||
|
|
||||||
return entity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true)
|
public IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType)
|
||||||
{
|
{
|
||||||
if (loadBaseType)
|
var objectTypeId = umbracoObjectType.GetGuid();
|
||||||
|
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
||||||
{
|
{
|
||||||
var objectTypeId = umbracoObjectType.GetGuid();
|
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
||||||
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
var ret = repository.GetByKey(key, objectTypeId);
|
||||||
{
|
return ret;
|
||||||
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
|
||||||
var ret = repository.GetByKey(key, objectTypeId);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SD: TODO: Need to enable this at some stage ... just need to ask Morten what the deal is with what this does.
|
|
||||||
throw new NotSupportedException();
|
|
||||||
|
|
||||||
//var entityType = GetEntityType(umbracoObjectType);
|
|
||||||
//var typeFullName = entityType.FullName;
|
|
||||||
//var entity = _supportedObjectTypes[typeFullName].Item2(id);
|
|
||||||
|
|
||||||
//return entity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -159,29 +124,19 @@ namespace Umbraco.Core.Services
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name="id">Id of the object to retrieve</param>
|
/// <param name="id">Id of the object to retrieve</param>
|
||||||
/// <param name="umbracoObjectType">UmbracoObjectType of the entity to retrieve</param>
|
/// <param name="umbracoObjectType">UmbracoObjectType of the entity to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
public virtual IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType)
|
||||||
public virtual IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true)
|
|
||||||
{
|
{
|
||||||
if (loadBaseType)
|
var objectTypeId = umbracoObjectType.GetGuid();
|
||||||
|
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
||||||
{
|
{
|
||||||
var objectTypeId = umbracoObjectType.GetGuid();
|
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
||||||
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
var ret = repository.Get(id, objectTypeId);
|
||||||
{
|
return ret;
|
||||||
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
|
||||||
var ret = repository.Get(id, objectTypeId);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var entityType = GetEntityType(umbracoObjectType);
|
|
||||||
var typeFullName = entityType.FullName;
|
|
||||||
var entity = _supportedObjectTypes[typeFullName].Item2(id);
|
|
||||||
|
|
||||||
return entity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IUmbracoEntity GetByKey<T>(Guid key, bool loadBaseType = true) where T : IUmbracoEntity
|
public IUmbracoEntity GetByKey<T>(Guid key) where T : IUmbracoEntity
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
@@ -194,29 +149,15 @@ namespace Umbraco.Core.Services
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
/// <typeparam name="T">Type of the model to retrieve. Must be based on an <see cref="IUmbracoEntity"/></typeparam>
|
/// <typeparam name="T">Type of the model to retrieve. Must be based on an <see cref="IUmbracoEntity"/></typeparam>
|
||||||
/// <param name="id">Id of the object to retrieve</param>
|
/// <param name="id">Id of the object to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
public virtual IUmbracoEntity Get<T>(int id, bool loadBaseType = true) where T : IUmbracoEntity
|
public virtual IUmbracoEntity Get<T>(int id) where T : IUmbracoEntity
|
||||||
{
|
{
|
||||||
if (loadBaseType)
|
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
||||||
{
|
{
|
||||||
using (var uow = UowProvider.GetUnitOfWork(readOnly:true))
|
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
||||||
{
|
var ret = repository.Get(id);
|
||||||
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
return ret;
|
||||||
var ret = repository.Get(id);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var typeFullName = typeof(T).FullName;
|
|
||||||
Mandate.That<NotSupportedException>(_supportedObjectTypes.ContainsKey(typeFullName), () =>
|
|
||||||
{
|
|
||||||
throw new NotSupportedException
|
|
||||||
("The passed in type is not supported");
|
|
||||||
});
|
|
||||||
var entity = _supportedObjectTypes[typeFullName].Item2(id);
|
|
||||||
|
|
||||||
return entity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -294,27 +235,6 @@ namespace Umbraco.Core.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets a collection of children by the parent's Id and UmbracoObjectType without adding property data
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="parentId">Id of the parent to retrieve children for</param>
|
|
||||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/> objects</returns>
|
|
||||||
internal IEnumerable<IUmbracoEntity> GetMediaChildrenWithoutPropertyData(int parentId)
|
|
||||||
{
|
|
||||||
var objectTypeId = UmbracoObjectTypes.Media.GetGuid();
|
|
||||||
using (var uow = UowProvider.GetUnitOfWork(readOnly: true))
|
|
||||||
{
|
|
||||||
var repository = RepositoryFactory.CreateEntityRepository(uow);
|
|
||||||
var query = Query<IUmbracoEntity>.Builder.Where(x => x.ParentId == parentId);
|
|
||||||
|
|
||||||
// Not pretty having to cast the repository, but it is the only way to get to use an internal method that we
|
|
||||||
// do not want to make public on the interface. Unfortunately also prevents this from being unit tested.
|
|
||||||
// See this issue for details on why we need this:
|
|
||||||
// https://github.com/umbraco/Umbraco-CMS/issues/3457
|
|
||||||
return ((EntityRepository)repository).GetMediaByQueryWithoutPropertyData(query);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a paged collection of children
|
/// Returns a paged collection of children
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -798,5 +718,32 @@ namespace Umbraco.Core.Services
|
|||||||
}
|
}
|
||||||
return node.NodeId;
|
return node.NodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Obsolete - only here for compat
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity GetByKey(Guid key, bool loadBaseType = true) => GetByKey(key);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity Get(int id, bool loadBaseType = true) => Get(id);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true) => GetByKey(key, umbracoObjectType);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity GetByKey<T>(Guid key, bool loadBaseType = true) where T : IUmbracoEntity => GetByKey<T>(key);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true) => Get(id, umbracoObjectType);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity Get<T>(int id, bool loadBaseType = true) where T : IUmbracoEntity => Get<T>(id);
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,8 @@ namespace Umbraco.Core.Services
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
XmlDocument BuildXmlCache();
|
XmlDocument BuildXmlCache();
|
||||||
|
|
||||||
|
XmlDocument BuildPreviewXmlCache();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rebuilds all xml content in the cmsContentXml table for all documents
|
/// Rebuilds all xml content in the cmsContentXml table for all documents
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -438,8 +440,16 @@ namespace Umbraco.Core.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Empties the Recycle Bin by deleting all <see cref="IContent"/> that resides in the bin
|
/// Empties the Recycle Bin by deleting all <see cref="IContent"/> that resides in the bin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
[Obsolete("Use EmptyRecycleBin with explicit indication of user ID instead")]
|
||||||
void EmptyRecycleBin();
|
void EmptyRecycleBin();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Empties the Recycle Bin by deleting all <see cref="IContent"/> that resides in the bin
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId">Optional Id of the User emptying the Recycle Bin</param>
|
||||||
|
void EmptyRecycleBin(int userId = 0);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rollback an <see cref="IContent"/> object to a previous version.
|
/// Rollback an <see cref="IContent"/> object to a previous version.
|
||||||
/// This will create a new version, which is a copy of all the old data.
|
/// This will create a new version, which is a copy of all the old data.
|
||||||
@@ -703,5 +713,8 @@ namespace Umbraco.Core.Services
|
|||||||
/// <param name="userId">Optional id of the user creating the content</param>
|
/// <param name="userId">Optional id of the user creating the content</param>
|
||||||
/// <returns><see cref="IContent"/></returns>
|
/// <returns><see cref="IContent"/></returns>
|
||||||
IContent CreateContentWithIdentity(string name, int parentId, string contentTypeAlias, int userId = 0);
|
IContent CreateContentWithIdentity(string name, int parentId, string contentTypeAlias, int userId = 0);
|
||||||
|
|
||||||
|
IEnumerable<string> GetAnchorValuesFromRTEs(int id);
|
||||||
|
IEnumerable<string> GetAnchorValuesFromRTEContent(string rteContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using Umbraco.Core.Models;
|
using Umbraco.Core.Models;
|
||||||
using Umbraco.Core.Models.EntityBase;
|
using Umbraco.Core.Models.EntityBase;
|
||||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||||
@@ -52,8 +53,11 @@ namespace Umbraco.Core.Services
|
|||||||
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name="key">Unique Id of the object to retrieve</param>
|
/// <param name="key">Unique Id of the object to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity GetByKey(Guid key);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity GetByKey(Guid key, bool loadBaseType = true);
|
IUmbracoEntity GetByKey(Guid key, bool loadBaseType = true);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -63,8 +67,11 @@ namespace Umbraco.Core.Services
|
|||||||
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name="id">Id of the object to retrieve</param>
|
/// <param name="id">Id of the object to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity Get(int id);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity Get(int id, bool loadBaseType = true);
|
IUmbracoEntity Get(int id, bool loadBaseType = true);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -75,10 +82,17 @@ namespace Umbraco.Core.Services
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name="key">Unique Id of the object to retrieve</param>
|
/// <param name="key">Unique Id of the object to retrieve</param>
|
||||||
/// <param name="umbracoObjectType">UmbracoObjectType of the entity to retrieve</param>
|
/// <param name="umbracoObjectType">UmbracoObjectType of the entity to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true);
|
IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
IUmbracoEntity GetByKey<T>(Guid key, bool loadBaseType = true) where T : IUmbracoEntity;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets an UmbracoEntity by its Id and UmbracoObjectType, and optionally loads the complete object graph.
|
/// Gets an UmbracoEntity by its Id and UmbracoObjectType, and optionally loads the complete object graph.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -87,22 +101,13 @@ namespace Umbraco.Core.Services
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name="id">Id of the object to retrieve</param>
|
/// <param name="id">Id of the object to retrieve</param>
|
||||||
/// <param name="umbracoObjectType">UmbracoObjectType of the entity to retrieve</param>
|
/// <param name="umbracoObjectType">UmbracoObjectType of the entity to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true);
|
IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets an UmbracoEntity by its Id and specified Type. Optionally loads the complete object graph.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>
|
|
||||||
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
|
||||||
/// </returns>
|
|
||||||
/// <typeparam name="T">Type of the model to retrieve. Must be based on an <see cref="IUmbracoEntity"/></typeparam>
|
|
||||||
/// <param name="key">Unique Id of the object to retrieve</param>
|
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
|
||||||
IUmbracoEntity GetByKey<T>(Guid key, bool loadBaseType = true) where T : IUmbracoEntity;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets an UmbracoEntity by its Id and specified Type. Optionally loads the complete object graph.
|
/// Gets an UmbracoEntity by its Id and specified Type. Optionally loads the complete object graph.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -111,8 +116,11 @@ namespace Umbraco.Core.Services
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
/// <typeparam name="T">Type of the model to retrieve. Must be based on an <see cref="IUmbracoEntity"/></typeparam>
|
/// <typeparam name="T">Type of the model to retrieve. Must be based on an <see cref="IUmbracoEntity"/></typeparam>
|
||||||
/// <param name="id">Id of the object to retrieve</param>
|
/// <param name="id">Id of the object to retrieve</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c>.</param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity Get<T>(int id) where T : IUmbracoEntity;
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity Get<T>(int id, bool loadBaseType = true) where T : IUmbracoEntity;
|
IUmbracoEntity Get<T>(int id, bool loadBaseType = true) where T : IUmbracoEntity;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -289,8 +289,16 @@ namespace Umbraco.Core.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Empties the Recycle Bin by deleting all <see cref="IMedia"/> that resides in the bin
|
/// Empties the Recycle Bin by deleting all <see cref="IMedia"/> that resides in the bin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
[Obsolete("Use EmptyRecycleBin with explicit indication of user ID instead")]
|
||||||
void EmptyRecycleBin();
|
void EmptyRecycleBin();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Empties the Recycle Bin by deleting all <see cref="IMedia"/> that resides in the bin
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId">Optional Id of the User emptying the Recycle Bin</param>
|
||||||
|
void EmptyRecycleBin(int userId = 0);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deletes all media of specified type. All children of deleted media is moved to Recycle Bin.
|
/// Deletes all media of specified type. All children of deleted media is moved to Recycle Bin.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using Umbraco.Core.Models;
|
using Umbraco.Core.Models;
|
||||||
using Umbraco.Core.Models.EntityBase;
|
using Umbraco.Core.Models.EntityBase;
|
||||||
|
|
||||||
@@ -142,49 +143,67 @@ namespace Umbraco.Core.Services
|
|||||||
/// Gets the Child object from a Relation as an <see cref="IUmbracoEntity"/>
|
/// Gets the Child object from a Relation as an <see cref="IUmbracoEntity"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relation">Relation to retrieve child object from</param>
|
/// <param name="relation">Relation to retrieve child object from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity GetChildEntityFromRelation(IRelation relation);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity GetChildEntityFromRelation(IRelation relation, bool loadBaseType = false);
|
IUmbracoEntity GetChildEntityFromRelation(IRelation relation, bool loadBaseType = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Parent object from a Relation as an <see cref="IUmbracoEntity"/>
|
/// Gets the Parent object from a Relation as an <see cref="IUmbracoEntity"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relation">Relation to retrieve parent object from</param>
|
/// <param name="relation">Relation to retrieve parent object from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IUmbracoEntity GetParentEntityFromRelation(IRelation relation);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IUmbracoEntity GetParentEntityFromRelation(IRelation relation, bool loadBaseType = false);
|
IUmbracoEntity GetParentEntityFromRelation(IRelation relation, bool loadBaseType = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Parent and Child objects from a Relation as a <see cref="Tuple"/>"/> with <see cref="IUmbracoEntity"/>.
|
/// Gets the Parent and Child objects from a Relation as a <see cref="Tuple"/>"/> with <see cref="IUmbracoEntity"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relation">Relation to retrieve parent and child object from</param>
|
/// <param name="relation">Relation to retrieve parent and child object from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>Returns a Tuple with Parent (item1) and Child (item2)</returns>
|
/// <returns>Returns a Tuple with Parent (item1) and Child (item2)</returns>
|
||||||
|
Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation, bool loadBaseType = false);
|
Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation, bool loadBaseType = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
/// Gets the Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relations">List of relations to retrieve child objects from</param>
|
/// <param name="relations">List of relations to retrieve child objects from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
||||||
|
IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false);
|
IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Parent objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
/// Gets the Parent objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relations">List of relations to retrieve parent objects from</param>
|
/// <param name="relations">List of relations to retrieve parent objects from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
||||||
IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations,
|
IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations);
|
||||||
bool loadBaseType = false);
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Parent and Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
/// Gets the Parent and Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relations">List of relations to retrieve parent and child objects from</param>
|
/// <param name="relations">List of relations to retrieve parent and child objects from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
||||||
/// <returns>An enumerable list of <see cref="Tuple"/> with <see cref="IUmbracoEntity"/></returns>
|
IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
||||||
|
IEnumerable<IRelation> relations);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
||||||
IEnumerable<IRelation> relations,
|
IEnumerable<IRelation> relations,
|
||||||
bool loadBaseType = false);
|
bool loadBaseType = false);
|
||||||
|
|||||||
@@ -509,7 +509,7 @@ namespace Umbraco.Core.Services
|
|||||||
public IEnumerable<IMedia> GetPagedChildren(int id, long pageIndex, int pageSize, out long totalChildren,
|
public IEnumerable<IMedia> GetPagedChildren(int id, long pageIndex, int pageSize, out long totalChildren,
|
||||||
string orderBy, Direction orderDirection, bool orderBySystemField, string filter)
|
string orderBy, Direction orderDirection, bool orderBySystemField, string filter)
|
||||||
{
|
{
|
||||||
return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, filter, null);
|
return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, orderBySystemField, filter, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -981,7 +981,15 @@ namespace Umbraco.Core.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Empties the Recycle Bin by deleting all <see cref="IMedia"/> that resides in the bin
|
/// Empties the Recycle Bin by deleting all <see cref="IMedia"/> that resides in the bin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void EmptyRecycleBin()
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
[Obsolete("Use EmptyRecycleBin with explicit indication of user ID instead")]
|
||||||
|
public void EmptyRecycleBin() => EmptyRecycleBin(0);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Empties the Recycle Bin by deleting all <see cref="IMedia"/> that resides in the bin
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId">Optional Id of the User emptying the Recycle Bin</param>
|
||||||
|
public void EmptyRecycleBin(int userId = 0)
|
||||||
{
|
{
|
||||||
using (new WriteLock(Locker))
|
using (new WriteLock(Locker))
|
||||||
{
|
{
|
||||||
@@ -1006,7 +1014,7 @@ namespace Umbraco.Core.Services
|
|||||||
recycleBinEventArgs.RecycleBinEmptiedSuccessfully = success;
|
recycleBinEventArgs.RecycleBinEmptiedSuccessfully = success;
|
||||||
uow.Events.Dispatch(EmptiedRecycleBin, this, recycleBinEventArgs);
|
uow.Events.Dispatch(EmptiedRecycleBin, this, recycleBinEventArgs);
|
||||||
|
|
||||||
Audit(uow, AuditType.Delete, "Empty Media Recycle Bin performed by user", 0, Constants.System.RecycleBinMedia);
|
Audit(uow, AuditType.Delete, "Empty Media Recycle Bin performed by user", userId, Constants.System.RecycleBinMedia);
|
||||||
uow.Commit();
|
uow.Commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Umbraco.Core.Events;
|
using Umbraco.Core.Events;
|
||||||
using Umbraco.Core.Logging;
|
using Umbraco.Core.Logging;
|
||||||
@@ -69,6 +70,11 @@ namespace Umbraco.Core.Services
|
|||||||
|
|
||||||
public void Save(IMemberGroup memberGroup, bool raiseEvents = true)
|
public void Save(IMemberGroup memberGroup, bool raiseEvents = true)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(memberGroup.Name))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("The name of a MemberGroup can not be empty");
|
||||||
|
}
|
||||||
|
|
||||||
using (var uow = UowProvider.GetUnitOfWork())
|
using (var uow = UowProvider.GetUnitOfWork())
|
||||||
{
|
{
|
||||||
var saveEventArgs = new SaveEventArgs<IMemberGroup>(memberGroup);
|
var saveEventArgs = new SaveEventArgs<IMemberGroup>(memberGroup);
|
||||||
|
|||||||
@@ -124,11 +124,18 @@ namespace Umbraco.Core.Services
|
|||||||
var notifications = GetUsersNotifications(users.Select(x => x.Id), action, Enumerable.Empty<int>(), Constants.ObjectTypes.DocumentGuid).ToList();
|
var notifications = GetUsersNotifications(users.Select(x => x.Id), action, Enumerable.Empty<int>(), Constants.ObjectTypes.DocumentGuid).ToList();
|
||||||
if (notifications.Count == 0) break;
|
if (notifications.Count == 0) break;
|
||||||
|
|
||||||
var i = 0;
|
while (notifications.Count > 0)
|
||||||
foreach (var user in users)
|
|
||||||
{
|
{
|
||||||
// continue if there's no notification for this user
|
var notification = notifications[0];
|
||||||
if (notifications[i].UserId != user.Id) continue; // next user
|
var isMatched = false;
|
||||||
|
|
||||||
|
// grab user whose associated to the notification
|
||||||
|
var user = users.Where(x => x.Id == notification.UserId).FirstOrDefault();
|
||||||
|
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
notifications.RemoveAll(x => x.UserId == notification.UserId);
|
||||||
|
}
|
||||||
|
|
||||||
for (var j = 0; j < entitiesL.Count; j++)
|
for (var j = 0; j < entitiesL.Count; j++)
|
||||||
{
|
{
|
||||||
@@ -136,7 +143,9 @@ namespace Umbraco.Core.Services
|
|||||||
var path = paths[j];
|
var path = paths[j];
|
||||||
|
|
||||||
// test if the notification applies to the path ie to this entity
|
// test if the notification applies to the path ie to this entity
|
||||||
if (path.Contains(notifications[i].EntityId) == false) continue; // next entity
|
if (path.Contains(notification.EntityId) == false) continue; // next entity
|
||||||
|
|
||||||
|
isMatched = true;
|
||||||
|
|
||||||
if (prevVersionDictionary.ContainsKey(content.Id) == false)
|
if (prevVersionDictionary.ContainsKey(content.Id) == false)
|
||||||
{
|
{
|
||||||
@@ -146,16 +155,19 @@ namespace Umbraco.Core.Services
|
|||||||
// queue notification
|
// queue notification
|
||||||
var req = CreateNotificationRequest(operatingUser, user, content, prevVersionDictionary[content.Id], actionName, http, createSubject, createBody);
|
var req = CreateNotificationRequest(operatingUser, user, content, prevVersionDictionary[content.Id], actionName, http, createSubject, createBody);
|
||||||
Enqueue(req);
|
Enqueue(req);
|
||||||
|
|
||||||
|
// don't process any further entities as a notification has been sent
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip other notifications for this user, essentially this means moving i to the next index of notifications
|
// when a match has been found, skip other notifications for user.
|
||||||
// for the next user.
|
if (isMatched)
|
||||||
do
|
|
||||||
{
|
{
|
||||||
i++;
|
notifications.RemoveAll(x => x.UserId == notification.UserId);
|
||||||
} while (i < notifications.Count && notifications[i].UserId == user.Id);
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (i >= notifications.Count) break; // break if no more notifications
|
notifications.Remove(notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
// load more users if any
|
// load more users if any
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Umbraco.Core.Events;
|
using Umbraco.Core.Events;
|
||||||
using Umbraco.Core.Logging;
|
using Umbraco.Core.Logging;
|
||||||
@@ -304,39 +305,36 @@ namespace Umbraco.Core.Services
|
|||||||
/// Gets the Child object from a Relation as an <see cref="IUmbracoEntity"/>
|
/// Gets the Child object from a Relation as an <see cref="IUmbracoEntity"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relation">Relation to retrieve child object from</param>
|
/// <param name="relation">Relation to retrieve child object from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
public IUmbracoEntity GetChildEntityFromRelation(IRelation relation, bool loadBaseType = false)
|
public IUmbracoEntity GetChildEntityFromRelation(IRelation relation)
|
||||||
{
|
{
|
||||||
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
||||||
return _entityService.Get(relation.ChildId, objectType, loadBaseType);
|
return _entityService.Get(relation.ChildId, objectType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Parent object from a Relation as an <see cref="IUmbracoEntity"/>
|
/// Gets the Parent object from a Relation as an <see cref="IUmbracoEntity"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relation">Relation to retrieve parent object from</param>
|
/// <param name="relation">Relation to retrieve parent object from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||||
public IUmbracoEntity GetParentEntityFromRelation(IRelation relation, bool loadBaseType = false)
|
public IUmbracoEntity GetParentEntityFromRelation(IRelation relation)
|
||||||
{
|
{
|
||||||
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
||||||
return _entityService.Get(relation.ParentId, objectType, loadBaseType);
|
return _entityService.Get(relation.ParentId, objectType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Parent and Child objects from a Relation as a <see cref="Tuple"/>"/> with <see cref="IUmbracoEntity"/>.
|
/// Gets the Parent and Child objects from a Relation as a <see cref="Tuple"/>"/> with <see cref="IUmbracoEntity"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relation">Relation to retrieve parent and child object from</param>
|
/// <param name="relation">Relation to retrieve parent and child object from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>Returns a Tuple with Parent (item1) and Child (item2)</returns>
|
/// <returns>Returns a Tuple with Parent (item1) and Child (item2)</returns>
|
||||||
public Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation, bool loadBaseType = false)
|
public Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation)
|
||||||
{
|
{
|
||||||
var childObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
var childObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
||||||
var parentObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
var parentObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
||||||
|
|
||||||
var child = _entityService.Get(relation.ChildId, childObjectType, loadBaseType);
|
var child = _entityService.Get(relation.ChildId, childObjectType);
|
||||||
var parent = _entityService.Get(relation.ParentId, parentObjectType, loadBaseType);
|
var parent = _entityService.Get(relation.ParentId, parentObjectType);
|
||||||
|
|
||||||
return new Tuple<IUmbracoEntity, IUmbracoEntity>(parent, child);
|
return new Tuple<IUmbracoEntity, IUmbracoEntity>(parent, child);
|
||||||
}
|
}
|
||||||
@@ -345,14 +343,13 @@ namespace Umbraco.Core.Services
|
|||||||
/// Gets the Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
/// Gets the Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relations">List of relations to retrieve child objects from</param>
|
/// <param name="relations">List of relations to retrieve child objects from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
||||||
public IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false)
|
public IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations)
|
||||||
{
|
{
|
||||||
foreach (var relation in relations)
|
foreach (var relation in relations)
|
||||||
{
|
{
|
||||||
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
||||||
yield return _entityService.Get(relation.ChildId, objectType, loadBaseType);
|
yield return _entityService.Get(relation.ChildId, objectType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,15 +357,13 @@ namespace Umbraco.Core.Services
|
|||||||
/// Gets the Parent objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
/// Gets the Parent objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relations">List of relations to retrieve parent objects from</param>
|
/// <param name="relations">List of relations to retrieve parent objects from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
||||||
public IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations,
|
public IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations)
|
||||||
bool loadBaseType = false)
|
|
||||||
{
|
{
|
||||||
foreach (var relation in relations)
|
foreach (var relation in relations)
|
||||||
{
|
{
|
||||||
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
var objectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
||||||
yield return _entityService.Get(relation.ParentId, objectType, loadBaseType);
|
yield return _entityService.Get(relation.ParentId, objectType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,19 +371,17 @@ namespace Umbraco.Core.Services
|
|||||||
/// Gets the Parent and Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
/// Gets the Parent and Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="relations">List of relations to retrieve parent and child objects from</param>
|
/// <param name="relations">List of relations to retrieve parent and child objects from</param>
|
||||||
/// <param name="loadBaseType">Optional bool to load the complete object graph when set to <c>False</c></param>
|
|
||||||
/// <returns>An enumerable list of <see cref="Tuple"/> with <see cref="IUmbracoEntity"/></returns>
|
/// <returns>An enumerable list of <see cref="Tuple"/> with <see cref="IUmbracoEntity"/></returns>
|
||||||
public IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
public IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
||||||
IEnumerable<IRelation> relations,
|
IEnumerable<IRelation> relations)
|
||||||
bool loadBaseType = false)
|
|
||||||
{
|
{
|
||||||
foreach (var relation in relations)
|
foreach (var relation in relations)
|
||||||
{
|
{
|
||||||
var childObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
var childObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ChildObjectType);
|
||||||
var parentObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
var parentObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.RelationType.ParentObjectType);
|
||||||
|
|
||||||
var child = _entityService.Get(relation.ChildId, childObjectType, loadBaseType);
|
var child = _entityService.Get(relation.ChildId, childObjectType);
|
||||||
var parent = _entityService.Get(relation.ParentId, parentObjectType, loadBaseType);
|
var parent = _entityService.Get(relation.ParentId, parentObjectType);
|
||||||
|
|
||||||
yield return new Tuple<IUmbracoEntity, IUmbracoEntity>(parent, child);
|
yield return new Tuple<IUmbracoEntity, IUmbracoEntity>(parent, child);
|
||||||
}
|
}
|
||||||
@@ -744,5 +737,31 @@ namespace Umbraco.Core.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static event TypedEventHandler<IRelationService, SaveEventArgs<IRelationType>> SavedRelationType;
|
public static event TypedEventHandler<IRelationService, SaveEventArgs<IRelationType>> SavedRelationType;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Obsolete - only here for compat
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity GetChildEntityFromRelation(IRelation relation, bool loadBaseType = false) => GetChildEntityFromRelation(relation);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IUmbracoEntity GetParentEntityFromRelation(IRelation relation, bool loadBaseType = false) => GetParentEntityFromRelation(relation);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation, bool loadBaseType = false) => GetEntitiesFromRelation(relation);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false) => GetChildEntitiesFromRelations(relations);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false) => GetParentEntitiesFromRelations(relations);
|
||||||
|
|
||||||
|
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false) => GetEntitiesFromRelations(relations);
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -189,7 +189,6 @@ namespace Umbraco.Core
|
|||||||
outputArray[i] = char.IsLetterOrDigit(inputArray[i]) ? inputArray[i] : replacement;
|
outputArray[i] = char.IsLetterOrDigit(inputArray[i]) ? inputArray[i] : replacement;
|
||||||
return new string(outputArray);
|
return new string(outputArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly char[] CleanForXssChars = "*?(){}[];:%<>/\\|&'\"".ToCharArray();
|
private static readonly char[] CleanForXssChars = "*?(){}[];:%<>/\\|&'\"".ToCharArray();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -542,7 +541,7 @@ namespace Umbraco.Core
|
|||||||
public static string StripHtml(this string text)
|
public static string StripHtml(this string text)
|
||||||
{
|
{
|
||||||
const string pattern = @"<(.|\n)*?>";
|
const string pattern = @"<(.|\n)*?>";
|
||||||
return Regex.Replace(text, pattern, String.Empty);
|
return Regex.Replace(text, pattern, string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -732,6 +731,7 @@ namespace Umbraco.Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="stringToConvert">Referrs to itself</param>
|
/// <param name="stringToConvert">Referrs to itself</param>
|
||||||
/// <returns>The MD5 hashed string</returns>
|
/// <returns>The MD5 hashed string</returns>
|
||||||
|
[Obsolete("Please use the GenerateHash method instead. This may be removed in future versions")]
|
||||||
public static string ToMd5(this string stringToConvert)
|
public static string ToMd5(this string stringToConvert)
|
||||||
{
|
{
|
||||||
return stringToConvert.GenerateHash("MD5");
|
return stringToConvert.GenerateHash("MD5");
|
||||||
@@ -742,6 +742,7 @@ namespace Umbraco.Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="stringToConvert">referrs to itself</param>
|
/// <param name="stringToConvert">referrs to itself</param>
|
||||||
/// <returns>The SHA1 hashed string</returns>
|
/// <returns>The SHA1 hashed string</returns>
|
||||||
|
[Obsolete("Please use the GenerateHash method instead. This may be removed in future versions")]
|
||||||
public static string ToSHA1(this string stringToConvert)
|
public static string ToSHA1(this string stringToConvert)
|
||||||
{
|
{
|
||||||
return stringToConvert.GenerateHash("SHA1");
|
return stringToConvert.GenerateHash("SHA1");
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Umbraco.Core</RootNamespace>
|
<RootNamespace>Umbraco.Core</RootNamespace>
|
||||||
<AssemblyName>Umbraco.Core</AssemblyName>
|
<AssemblyName>Umbraco.Core</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
||||||
<RestorePackages>true</RestorePackages>
|
<RestorePackages>true</RestorePackages>
|
||||||
@@ -48,11 +48,11 @@
|
|||||||
<Reference Include="ClientDependency.Core, Version=1.9.7.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ClientDependency.Core, Version=1.9.7.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\ClientDependency.1.9.7\lib\net45\ClientDependency.Core.dll</HintPath>
|
<HintPath>..\packages\ClientDependency.1.9.7\lib\net45\ClientDependency.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
|
<Reference Include="HtmlAgilityPack, Version=1.8.8.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll</HintPath>
|
<HintPath>..\packages\HtmlAgilityPack.1.8.8\lib\Net45\HtmlAgilityPack.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ImageProcessor, Version=2.5.6.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ImageProcessor, Version=2.7.0.100, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\ImageProcessor.2.5.6\lib\net45\ImageProcessor.dll</HintPath>
|
<HintPath>..\packages\ImageProcessor.2.7.0.100\lib\net452\ImageProcessor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
|
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
|
||||||
@@ -61,22 +61,22 @@
|
|||||||
<HintPath>..\packages\Log4Net.Async.2.0.4\lib\net40\Log4Net.Async.dll</HintPath>
|
<HintPath>..\packages\Log4Net.Async.2.0.4\lib\net40\Log4Net.Async.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.2\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.Identity.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.Identity.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Identity.Owin.2.2.1\lib\net45\Microsoft.AspNet.Identity.Owin.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Identity.Owin.2.2.2\lib\net45\Microsoft.AspNet.Identity.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.3.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Security, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Security, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Security.3.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Security.4.0.1\lib\net45\Microsoft.Owin.Security.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Security.Cookies, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Security.Cookies, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Security.Cookies.3.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Security.Cookies.4.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Security.OAuth, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Security.OAuth, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Security.OAuth.3.1.0\lib\net45\Microsoft.Owin.Security.OAuth.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Security.OAuth.4.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MiniProfiler, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3, processorArchitecture=MSIL">
|
<Reference Include="MiniProfiler, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll</HintPath>
|
<HintPath>..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll</HintPath>
|
||||||
@@ -85,14 +85,14 @@
|
|||||||
<HintPath>..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath>
|
<HintPath>..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
|
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Semver, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Semver, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\semver.1.1.2\lib\net45\Semver.dll</HintPath>
|
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ComponentModel.Composition" />
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
@@ -115,8 +115,8 @@
|
|||||||
<Reference Include="System.Runtime.Caching" />
|
<Reference Include="System.Runtime.Caching" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
<Reference Include="System.Transactions" />
|
<Reference Include="System.Transactions" />
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Web.ApplicationServices" />
|
<Reference Include="System.Web.ApplicationServices" />
|
||||||
@@ -324,6 +324,9 @@
|
|||||||
<Compile Include="Configuration\UmbracoSettings\WebRoutingElement.cs" />
|
<Compile Include="Configuration\UmbracoSettings\WebRoutingElement.cs" />
|
||||||
<Compile Include="Configuration\UmbracoVersion.cs" />
|
<Compile Include="Configuration\UmbracoVersion.cs" />
|
||||||
<Compile Include="Attempt.cs" />
|
<Compile Include="Attempt.cs" />
|
||||||
|
<Compile Include="Constants-DataTypes.cs">
|
||||||
|
<DependentUpon>Constants.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Constants-DeploySelector.cs" />
|
<Compile Include="Constants-DeploySelector.cs" />
|
||||||
<Compile Include="Constants-Examine.cs" />
|
<Compile Include="Constants-Examine.cs" />
|
||||||
<Compile Include="Constants-Icons.cs" />
|
<Compile Include="Constants-Icons.cs" />
|
||||||
@@ -374,6 +377,7 @@
|
|||||||
<Compile Include="Models\Consent.cs" />
|
<Compile Include="Models\Consent.cs" />
|
||||||
<Compile Include="Models\ConsentExtensions.cs" />
|
<Compile Include="Models\ConsentExtensions.cs" />
|
||||||
<Compile Include="Models\ConsentState.cs" />
|
<Compile Include="Models\ConsentState.cs" />
|
||||||
|
<Compile Include="Models\DataTypeExtensions.cs" />
|
||||||
<Compile Include="Models\EntityBase\EntityPath.cs" />
|
<Compile Include="Models\EntityBase\EntityPath.cs" />
|
||||||
<Compile Include="Models\EntityBase\IDeletableEntity.cs" />
|
<Compile Include="Models\EntityBase\IDeletableEntity.cs" />
|
||||||
<Compile Include="Models\IAuditEntry.cs" />
|
<Compile Include="Models\IAuditEntry.cs" />
|
||||||
@@ -572,6 +576,7 @@
|
|||||||
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenEightZero\AddInstructionCountColumn.cs" />
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenEightZero\AddInstructionCountColumn.cs" />
|
||||||
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenEightZero\AddCmsMediaTable.cs" />
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenEightZero\AddCmsMediaTable.cs" />
|
||||||
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenEightZero\AddUserLoginTable.cs" />
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenEightZero\AddUserLoginTable.cs" />
|
||||||
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenFourteenZero\UpdateMemberGroupPickerData.cs" />
|
||||||
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenTwelveZero\RenameTrueFalseField.cs" />
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenTwelveZero\RenameTrueFalseField.cs" />
|
||||||
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenTwelveZero\SetDefaultTagsStorageType.cs" />
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenTwelveZero\SetDefaultTagsStorageType.cs" />
|
||||||
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenNineZero\AddUmbracoAuditTable.cs" />
|
<Compile Include="Persistence\Migrations\Upgrades\TargetVersionSevenNineZero\AddUmbracoAuditTable.cs" />
|
||||||
@@ -763,6 +768,7 @@
|
|||||||
<Compile Include="Services\ConsentService.cs" />
|
<Compile Include="Services\ConsentService.cs" />
|
||||||
<Compile Include="Services\ContentTypeServiceExtensions.cs" />
|
<Compile Include="Services\ContentTypeServiceExtensions.cs" />
|
||||||
<Compile Include="Models\RedirectUrl.cs" />
|
<Compile Include="Models\RedirectUrl.cs" />
|
||||||
|
<Compile Include="Services\DateTypeServiceExtensions.cs" />
|
||||||
<Compile Include="Services\IConsentService.cs" />
|
<Compile Include="Services\IConsentService.cs" />
|
||||||
<Compile Include="Services\IContentServiceBase.cs" />
|
<Compile Include="Services\IContentServiceBase.cs" />
|
||||||
<Compile Include="Services\IdkMap.cs" />
|
<Compile Include="Services\IdkMap.cs" />
|
||||||
|
|||||||
@@ -150,9 +150,9 @@ namespace Umbraco.Core
|
|||||||
var toInclude = new[] {".aspx", ".ashx", ".asmx", ".axd", ".svc"};
|
var toInclude = new[] {".aspx", ".ashx", ".asmx", ".axd", ".svc"};
|
||||||
return toInclude.Any(ext.InvariantEquals) == false;
|
return toInclude.Any(ext.InvariantEquals) == false;
|
||||||
}
|
}
|
||||||
catch (ArgumentException ex)
|
catch (ArgumentException)
|
||||||
{
|
{
|
||||||
LogHelper.Error(typeof(UriExtensions), "Failed to determine if request was client side", ex);
|
LogHelper.Debug(typeof(UriExtensions), "Failed to determine if request was client side. Due to invalid characters in path: {0}", () => url.LocalPath);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
@@ -16,19 +16,19 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup><system.data>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /></startup><system.data>
|
||||||
<DbProviderFactories>
|
<DbProviderFactories>
|
||||||
<remove invariant="MySql.Data.MySqlClient" />
|
<remove invariant="MySql.Data.MySqlClient" />
|
||||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="AutoMapper" version="3.3.1" targetFramework="net45" />
|
<package id="AutoMapper" version="3.3.1" targetFramework="net45" />
|
||||||
<package id="ClientDependency" version="1.9.7" targetFramework="net45" />
|
<package id="ClientDependency" version="1.9.7" targetFramework="net45" />
|
||||||
<package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="net45" />
|
<package id="HtmlAgilityPack" version="1.8.8" targetFramework="net452" />
|
||||||
<package id="ImageProcessor" version="2.5.6" targetFramework="net45" />
|
<package id="ImageProcessor" version="2.7.0.100" targetFramework="net452" />
|
||||||
<package id="log4net" version="2.0.8" targetFramework="net45" />
|
<package id="log4net" version="2.0.8" targetFramework="net45" />
|
||||||
<package id="Log4Net.Async" version="2.0.4" targetFramework="net45" />
|
<package id="Log4Net.Async" version="2.0.4" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Identity.Core" version="2.2.2" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.2" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Security" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Security" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Security.Cookies" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Security.Cookies" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Security.OAuth" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Security.OAuth" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="MiniProfiler" version="2.1.0" targetFramework="net45" />
|
<package id="MiniProfiler" version="2.1.0" targetFramework="net45" />
|
||||||
<package id="MySql.Data" version="6.9.9" targetFramework="net45" />
|
<package id="MySql.Data" version="6.9.9" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net452" />
|
||||||
<package id="Owin" version="1.0" targetFramework="net45" />
|
<package id="Owin" version="1.0" targetFramework="net45" />
|
||||||
<package id="semver" version="1.1.2" targetFramework="net45" />
|
<package id="semver" version="1.1.2" targetFramework="net452" />
|
||||||
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
|
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
|
||||||
<package id="System.ValueTuple" version="4.4.0" targetFramework="net45" />
|
<package id="System.ValueTuple" version="4.5.0" targetFramework="net452" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\build\Microsoft.Diagnostics.Tracing.TraceEvent.props" Condition="Exists('..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\build\Microsoft.Diagnostics.Tracing.TraceEvent.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Umbraco.Tests.Benchmarks</RootNamespace>
|
<RootNamespace>Umbraco.Tests.Benchmarks</RootNamespace>
|
||||||
<AssemblyName>Umbraco.Tests.Benchmarks</AssemblyName>
|
<AssemblyName>Umbraco.Tests.Benchmarks</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<NuGetPackageImportStamp>
|
<NuGetPackageImportStamp>
|
||||||
</NuGetPackageImportStamp>
|
</NuGetPackageImportStamp>
|
||||||
@@ -39,8 +40,8 @@
|
|||||||
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="BenchmarkDotNet, Version=0.10.12.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
<Reference Include="BenchmarkDotNet, Version=0.10.3.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\BenchmarkDotNet.0.10.12\lib\net46\BenchmarkDotNet.dll</HintPath>
|
<HintPath>..\packages\BenchmarkDotNet.0.10.3\lib\net45\BenchmarkDotNet.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="BenchmarkDotNet.Core, Version=0.10.12.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
<Reference Include="BenchmarkDotNet.Core, Version=0.10.12.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\BenchmarkDotNet.Core.0.10.12\lib\net46\BenchmarkDotNet.Core.dll</HintPath>
|
<HintPath>..\packages\BenchmarkDotNet.Core.0.10.12\lib\net46\BenchmarkDotNet.Core.dll</HintPath>
|
||||||
@@ -48,20 +49,27 @@
|
|||||||
<Reference Include="BenchmarkDotNet.Diagnostics.Windows, Version=0.9.9.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
<Reference Include="BenchmarkDotNet.Diagnostics.Windows, Version=0.9.9.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\BenchmarkDotNet.Diagnostics.Windows.0.9.9\lib\net45\BenchmarkDotNet.Diagnostics.Windows.dll</HintPath>
|
<HintPath>..\packages\BenchmarkDotNet.Diagnostics.Windows.0.9.9\lib\net45\BenchmarkDotNet.Diagnostics.Windows.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="BenchmarkDotNet.Toolchains.Roslyn, Version=0.10.12.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
<Reference Include="BenchmarkDotNet.Toolchains.Roslyn, Version=0.10.3.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\BenchmarkDotNet.Toolchains.Roslyn.0.10.12\lib\net46\BenchmarkDotNet.Toolchains.Roslyn.dll</HintPath>
|
<HintPath>..\packages\BenchmarkDotNet.Toolchains.Roslyn.0.10.3\lib\net45\BenchmarkDotNet.Toolchains.Roslyn.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
|
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll</HintPath>
|
<HintPath>..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.CodeAnalysis, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Dia2Lib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.CodeAnalysis.Common.2.4.0\lib\netstandard1.3\Microsoft.CodeAnalysis.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\lib\net45\Dia2Lib.dll</HintPath>
|
||||||
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.CodeAnalysis.CSharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.CodeAnalysis, Version=2.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.CodeAnalysis.CSharp.2.4.0\lib\netstandard1.3\Microsoft.CodeAnalysis.CSharp.dll</HintPath>
|
<HintPath>..\packages\Microsoft.CodeAnalysis.Common.2.9.0\lib\netstandard1.3\Microsoft.CodeAnalysis.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Diagnostics.Tracing.TraceEvent, Version=1.0.41.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.CodeAnalysis.CSharp, Version=2.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.1.0.41\lib\net40\Microsoft.Diagnostics.Tracing.TraceEvent.dll</HintPath>
|
<HintPath>..\packages\Microsoft.CodeAnalysis.CSharp.2.9.0\lib\netstandard1.3\Microsoft.CodeAnalysis.CSharp.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Diagnostics.FastSerialization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\lib\net45\Microsoft.Diagnostics.FastSerialization.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.26.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\lib\net45\Microsoft.Diagnostics.Tracing.TraceEvent.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.DotNet.InternalAbstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.DotNet.InternalAbstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.DotNet.InternalAbstractions.1.0.0\lib\net451\Microsoft.DotNet.InternalAbstractions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.DotNet.InternalAbstractions.1.0.0\lib\net451\Microsoft.DotNet.InternalAbstractions.dll</HintPath>
|
||||||
@@ -69,24 +77,28 @@
|
|||||||
<Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.1.1.1\lib\net451\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.1.1.1\lib\net451\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Win32.Registry, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Win32.Registry, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Win32.Registry.4.3.0\lib\net46\Microsoft.Win32.Registry.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Win32.Registry.4.5.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Moq, Version=4.1.1309.919, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
|
<Reference Include="Moq, Version=4.1.1309.919, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Moq.4.1.1309.0919\lib\net40\Moq.dll</HintPath>
|
<HintPath>..\packages\Moq.4.1.1309.0919\lib\net40\Moq.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="OSExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\lib\net45\OSExtensions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.AppContext.4.3.0\lib\net46\System.AppContext.dll</HintPath>
|
<HintPath>..\packages\System.AppContext.4.3.0\lib\net46\System.AppContext.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Collections.Immutable, Version=1.2.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
|
<HintPath>..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.ComponentModel.Composition" />
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
<HintPath>..\packages\System.Console.4.3.1\lib\net46\System.Console.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
||||||
@@ -113,11 +125,33 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Management" />
|
<Reference Include="System.Management" />
|
||||||
<Reference Include="System.Numerics" />
|
<Reference Include="System.Numerics" />
|
||||||
<Reference Include="System.Reflection.Metadata, Version=1.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Reflection.Metadata.1.4.2\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
|
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Reflection.Metadata, Version=1.4.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net46\System.Security.Cryptography.Algorithms.dll</HintPath>
|
<HintPath>..\packages\System.Reflection.Metadata.1.6.0\lib\netstandard2.0\System.Reflection.Metadata.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.Extensions, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.InteropServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net462\System.Runtime.InteropServices.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Security.AccessControl, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Security.AccessControl.4.5.0\lib\net461\System.Security.AccessControl.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
@@ -126,21 +160,25 @@
|
|||||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net46\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Text.Encoding.CodePages, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Principal.Windows, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Text.Encoding.CodePages.4.3.0\lib\net46\System.Text.Encoding.CodePages.dll</HintPath>
|
<HintPath>..\packages\System.Security.Principal.Windows.4.5.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\packages\System.Text.Encoding.CodePages.4.5.0\lib\net461\System.Text.Encoding.CodePages.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Threading.Thread, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Threading.Thread, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Threading.Thread.4.3.0\lib\net46\System.Threading.Thread.dll</HintPath>
|
<HintPath>..\packages\System.Threading.Thread.4.3.0\lib\net46\System.Threading.Thread.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
@@ -149,7 +187,9 @@
|
|||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml.XmlDocument, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Xml.XmlDocument, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Xml.XmlDocument.4.3.0\lib\net46\System.Xml.XmlDocument.dll</HintPath>
|
<HintPath>..\packages\System.Xml.XmlDocument.4.3.0\lib\net46\System.Xml.XmlDocument.dll</HintPath>
|
||||||
@@ -160,6 +200,10 @@
|
|||||||
<Reference Include="System.Xml.XPath.XDocument, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Xml.XPath.XDocument, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Xml.XPath.XDocument.4.3.0\lib\net46\System.Xml.XPath.XDocument.dll</HintPath>
|
<HintPath>..\packages\System.Xml.XPath.XDocument.4.3.0\lib\net46\System.Xml.XPath.XDocument.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="TraceReloggerLib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\lib\net45\TraceReloggerLib.dll</HintPath>
|
||||||
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="ConcurrentDictionaryBenchmarks.cs" />
|
<Compile Include="ConcurrentDictionaryBenchmarks.cs" />
|
||||||
@@ -195,6 +239,10 @@
|
|||||||
<Name>Umbraco.Web</Name>
|
<Name>Umbraco.Web</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.2.6.2\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll" />
|
||||||
|
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.2.6.2\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
@@ -207,12 +255,11 @@
|
|||||||
<PreBuildEvent>xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\amd64\*.* "$(TargetDir)amd64\" /Y /F /E /I /C /D
|
<PreBuildEvent>xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\amd64\*.* "$(TargetDir)amd64\" /Y /F /E /I /C /D
|
||||||
xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\" /Y /F /E /I /C /D</PreBuildEvent>
|
xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\" /Y /F /E /I /C /D</PreBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.1.0.41\build\Microsoft.Diagnostics.Tracing.TraceEvent.targets" Condition="Exists('..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.1.0.41\build\Microsoft.Diagnostics.Tracing.TraceEvent.targets')" />
|
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.1.0.41\build\Microsoft.Diagnostics.Tracing.TraceEvent.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.1.0.41\build\Microsoft.Diagnostics.Tracing.TraceEvent.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\build\Microsoft.Diagnostics.Tracing.TraceEvent.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.26\build\Microsoft.Diagnostics.Tracing.TraceEvent.props'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.2.1.0" newVersion="1.2.1.0" />
|
<bindingRedirect oldVersion="0.0.0.0-1.2.3.0" newVersion="1.2.3.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
||||||
@@ -16,27 +16,27 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
@@ -64,8 +64,60 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Algorithms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.InteropServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.4.3.0" newVersion="1.4.3.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.CodeAnalysis" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.CodeAnalysis.CSharp" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Xml.ReaderWriter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Diagnostics.Tracing.TraceEvent" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.0.26.0" newVersion="2.0.26.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="BenchmarkDotNet" version="0.10.12" targetFramework="net46" />
|
<package id="BenchmarkDotNet" version="0.10.3" targetFramework="net462" />
|
||||||
<package id="BenchmarkDotNet.Core" version="0.10.12" targetFramework="net46" />
|
<package id="BenchmarkDotNet.Core" version="0.10.12" targetFramework="net46" />
|
||||||
<package id="BenchmarkDotNet.Diagnostics.Windows" version="0.9.9" targetFramework="net45" />
|
<package id="BenchmarkDotNet.Diagnostics.Windows" version="0.9.9" targetFramework="net45" />
|
||||||
<package id="BenchmarkDotNet.Toolchains.Roslyn" version="0.10.12" targetFramework="net46" />
|
<package id="BenchmarkDotNet.Toolchains.Roslyn" version="0.10.3" targetFramework="net462" />
|
||||||
<package id="Castle.Core" version="4.0.0" targetFramework="net45" />
|
<package id="Castle.Core" version="4.0.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.CodeAnalysis.Analyzers" version="1.1.0" targetFramework="net45" />
|
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.6.2" targetFramework="net462" developmentDependency="true" />
|
||||||
<package id="Microsoft.CodeAnalysis.Common" version="2.4.0" targetFramework="net46" />
|
<package id="Microsoft.CodeAnalysis.Common" version="2.9.0" targetFramework="net462" />
|
||||||
<package id="Microsoft.CodeAnalysis.CSharp" version="2.4.0" targetFramework="net46" />
|
<package id="Microsoft.CodeAnalysis.CSharp" version="2.9.0" targetFramework="net462" />
|
||||||
<package id="Microsoft.Diagnostics.Tracing.TraceEvent" version="1.0.41" targetFramework="net45" />
|
<package id="Microsoft.Diagnostics.Tracing.TraceEvent" version="2.0.26" targetFramework="net462" />
|
||||||
<package id="Microsoft.DotNet.InternalAbstractions" version="1.0.0" targetFramework="net46" />
|
<package id="Microsoft.DotNet.InternalAbstractions" version="1.0.0" targetFramework="net46" />
|
||||||
<package id="Microsoft.DotNet.PlatformAbstractions" version="1.1.1" targetFramework="net46" />
|
<package id="Microsoft.DotNet.PlatformAbstractions" version="1.1.1" targetFramework="net46" />
|
||||||
<package id="Microsoft.SqlServer.Compact" version="4.0.8854.1" targetFramework="net45" />
|
<package id="Microsoft.SqlServer.Compact" version="4.0.8854.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Win32.Registry" version="4.3.0" targetFramework="net46" />
|
<package id="Microsoft.Win32.Registry" version="4.5.0" targetFramework="net462" />
|
||||||
<package id="Moq" version="4.1.1309.0919" targetFramework="net45" />
|
<package id="Moq" version="4.1.1309.0919" targetFramework="net45" />
|
||||||
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
|
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
|
||||||
<package id="System.AppContext" version="4.3.0" targetFramework="net46" />
|
<package id="System.AppContext" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
|
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net46" />
|
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Collections.Immutable" version="1.3.1" targetFramework="net46" />
|
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net462" />
|
||||||
<package id="System.Console" version="4.3.0" targetFramework="net46" />
|
<package id="System.Console" version="4.3.1" targetFramework="net462" />
|
||||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net46" />
|
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Diagnostics.FileVersionInfo" version="4.3.0" targetFramework="net46" />
|
<package id="System.Diagnostics.FileVersionInfo" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Diagnostics.StackTrace" version="4.3.0" targetFramework="net46" />
|
<package id="System.Diagnostics.StackTrace" version="4.3.0" targetFramework="net46" />
|
||||||
@@ -31,28 +31,32 @@
|
|||||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net46" />
|
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Linq" version="4.3.0" targetFramework="net46" />
|
<package id="System.Linq" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net46" />
|
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Reflection" version="4.3.0" targetFramework="net46" />
|
<package id="System.Reflection" version="4.3.0" targetFramework="net462" />
|
||||||
<package id="System.Reflection.Metadata" version="1.4.2" targetFramework="net46" />
|
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net462" />
|
||||||
<package id="System.Reflection.Primitives" version="4.0.1" targetFramework="net45" />
|
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net462" />
|
||||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net46" />
|
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Runtime" version="4.3.0" targetFramework="net46" />
|
<package id="System.Runtime" version="4.3.1" targetFramework="net462" />
|
||||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net46" />
|
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.1" targetFramework="net462" />
|
||||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net46" />
|
<package id="System.Runtime.Extensions" version="4.3.1" targetFramework="net462" />
|
||||||
|
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net462" />
|
||||||
|
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net462" />
|
||||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net46" />
|
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net46" />
|
<package id="System.Security.AccessControl" version="4.5.0" targetFramework="net462" />
|
||||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net46" />
|
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net462" />
|
||||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net46" />
|
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net462" />
|
||||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net46" />
|
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net462" />
|
||||||
|
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net462" />
|
||||||
|
<package id="System.Security.Principal.Windows" version="4.5.0" targetFramework="net462" />
|
||||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net46" />
|
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Text.Encoding.CodePages" version="4.3.0" targetFramework="net46" />
|
<package id="System.Text.Encoding.CodePages" version="4.5.0" targetFramework="net462" />
|
||||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net46" />
|
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Threading" version="4.3.0" targetFramework="net46" />
|
<package id="System.Threading" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net46" />
|
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Threading.Tasks.Extensions" version="4.3.0" targetFramework="net46" />
|
<package id="System.Threading.Tasks.Extensions" version="4.5.1" targetFramework="net462" />
|
||||||
<package id="System.Threading.Tasks.Parallel" version="4.3.0" targetFramework="net46" />
|
<package id="System.Threading.Tasks.Parallel" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Threading.Thread" version="4.3.0" targetFramework="net46" />
|
<package id="System.Threading.Thread" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.ValueTuple" version="4.4.0" targetFramework="net46" />
|
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net46" />
|
<package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="net462" />
|
||||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net46" />
|
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Xml.XmlDocument" version="4.3.0" targetFramework="net46" />
|
<package id="System.Xml.XmlDocument" version="4.3.0" targetFramework="net46" />
|
||||||
<package id="System.Xml.XmlSerializer" version="4.3.0" targetFramework="net46" />
|
<package id="System.Xml.XmlSerializer" version="4.3.0" targetFramework="net46" />
|
||||||
|
|||||||
@@ -102,14 +102,14 @@
|
|||||||
</system.web>
|
</system.web>
|
||||||
|
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||||
</startup>
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||||
|
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
|
||||||
@@ -141,19 +141,19 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ namespace Umbraco.Tests.CodeFirst
|
|||||||
new PublishedPropertyType("articleDate", 0, "?"),
|
new PublishedPropertyType("articleDate", 0, "?"),
|
||||||
new PublishedPropertyType("pageTitle", 0, "?"),
|
new PublishedPropertyType("pageTitle", 0, "?"),
|
||||||
};
|
};
|
||||||
var type = new AutoPublishedContentType(0, "anything", propertyTypes);
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", propertyTypes);
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
Debug.Print("INIT STRONG {0}",
|
Debug.Print("INIT STRONG {0}",
|
||||||
PublishedContentType.Get(PublishedItemType.Content, "anything")
|
PublishedContentType.Get(PublishedItemType.Content, "anything")
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace Umbraco.Tests
|
|||||||
// AutoPublishedContentType will auto-generate other properties
|
// AutoPublishedContentType will auto-generate other properties
|
||||||
new PublishedPropertyType("content", 0, "?"),
|
new PublishedPropertyType("content", 0, "?"),
|
||||||
};
|
};
|
||||||
var type = new AutoPublishedContentType(0, "anything", propertyTypes);
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", propertyTypes);
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
Debug.Print("INIT LIB {0}",
|
Debug.Print("INIT LIB {0}",
|
||||||
PublishedContentType.Get(PublishedItemType.Content, "anything")
|
PublishedContentType.Get(PublishedItemType.Content, "anything")
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace Umbraco.Tests.Membership
|
|||||||
new PublishedPropertyType("bodyText", 0, "?"),
|
new PublishedPropertyType("bodyText", 0, "?"),
|
||||||
new PublishedPropertyType("author", 0, "?")
|
new PublishedPropertyType("author", 0, "?")
|
||||||
};
|
};
|
||||||
var type = new AutoPublishedContentType(0, "anything", propertyTypes);
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", propertyTypes);
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace Umbraco.Tests.Migrations.SqlScripts {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class SqlResources {
|
internal class SqlResources {
|
||||||
|
|||||||
@@ -178,17 +178,6 @@ namespace Umbraco.Tests.Models
|
|||||||
item.AdditionalData.Add("test1", 3);
|
item.AdditionalData.Add("test1", 3);
|
||||||
item.AdditionalData.Add("test2", "valuie");
|
item.AdditionalData.Add("test2", "valuie");
|
||||||
|
|
||||||
item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty()
|
|
||||||
{
|
|
||||||
Value = "test",
|
|
||||||
PropertyEditorAlias = "TestPropertyEditor"
|
|
||||||
});
|
|
||||||
item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty()
|
|
||||||
{
|
|
||||||
Value = "test2",
|
|
||||||
PropertyEditorAlias = "TestPropertyEditor2"
|
|
||||||
});
|
|
||||||
|
|
||||||
var clone = (UmbracoEntity)item.DeepClone();
|
var clone = (UmbracoEntity)item.DeepClone();
|
||||||
|
|
||||||
Assert.AreNotSame(clone, item);
|
Assert.AreNotSame(clone, item);
|
||||||
@@ -250,16 +239,6 @@ namespace Umbraco.Tests.Models
|
|||||||
};
|
};
|
||||||
item.AdditionalData.Add("test1", 3);
|
item.AdditionalData.Add("test1", 3);
|
||||||
item.AdditionalData.Add("test2", "valuie");
|
item.AdditionalData.Add("test2", "valuie");
|
||||||
item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty()
|
|
||||||
{
|
|
||||||
Value = "test",
|
|
||||||
PropertyEditorAlias = "TestPropertyEditor"
|
|
||||||
});
|
|
||||||
item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty()
|
|
||||||
{
|
|
||||||
Value = "test2",
|
|
||||||
PropertyEditorAlias = "TestPropertyEditor2"
|
|
||||||
});
|
|
||||||
|
|
||||||
var result = ss.ToStream(item);
|
var result = ss.ToStream(item);
|
||||||
var json = result.ResultStream.ToJsonString();
|
var json = result.ResultStream.ToJsonString();
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ AnotherContentFinder
|
|||||||
public void Resolves_RestExtensions()
|
public void Resolves_RestExtensions()
|
||||||
{
|
{
|
||||||
var types = _manager.ResolveRestExtensions();
|
var types = _manager.ResolveRestExtensions();
|
||||||
Assert.AreEqual(3, types.Count());
|
Assert.AreEqual(2, types.Count());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace Umbraco.Tests.PublishedContent
|
|||||||
new PublishedPropertyType("creatorName", 0, "?"),
|
new PublishedPropertyType("creatorName", 0, "?"),
|
||||||
new PublishedPropertyType("blah", 0, "?"), // ugly error when that one is missing...
|
new PublishedPropertyType("blah", 0, "?"), // ugly error when that one is missing...
|
||||||
};
|
};
|
||||||
var type = new AutoPublishedContentType(0, "anything", propertyTypes);
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", propertyTypes);
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace Umbraco.Tests.PublishedContent
|
|||||||
|
|
||||||
// need to specify a custom callback for unit tests
|
// need to specify a custom callback for unit tests
|
||||||
// AutoPublishedContentTypes generates properties automatically
|
// AutoPublishedContentTypes generates properties automatically
|
||||||
var type = new AutoPublishedContentType(0, "anything", new PublishedPropertyType[] {});
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", new PublishedPropertyType[] {});
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
|
|
||||||
// need to specify a different callback for testing
|
// need to specify a different callback for testing
|
||||||
|
|||||||
@@ -234,9 +234,9 @@ namespace Umbraco.Tests.PublishedContent
|
|||||||
new PublishedPropertyType("prop1", 1, "?"),
|
new PublishedPropertyType("prop1", 1, "?"),
|
||||||
};
|
};
|
||||||
|
|
||||||
var contentType1 = new PublishedContentType(1, "ContentType1", Enumerable.Empty<string>(), props);
|
var contentType1 = new PublishedContentType(1, "ContentType1", "ContentType1", "ContentType1", Enumerable.Empty<string>(), props);
|
||||||
var contentType2 = new PublishedContentType(2, "ContentType2", Enumerable.Empty<string>(), props);
|
var contentType2 = new PublishedContentType(2, "ContentType2", "ContentType2", "ContentType2", Enumerable.Empty<string>(), props);
|
||||||
var contentType2s = new PublishedContentType(3, "ContentType2Sub", Enumerable.Empty<string>(), props);
|
var contentType2s = new PublishedContentType(3, "ContentType2Sub", "ContentType2Sub", "ContentType2Sub", Enumerable.Empty<string>(), props);
|
||||||
|
|
||||||
cache.Add(new SolidPublishedContent(contentType1)
|
cache.Add(new SolidPublishedContent(contentType1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace Umbraco.Tests.PublishedContent
|
|||||||
// AutoPublishedContentType will auto-generate other properties
|
// AutoPublishedContentType will auto-generate other properties
|
||||||
new PublishedPropertyType("content", 0, Constants.PropertyEditors.TinyMCEAlias),
|
new PublishedPropertyType("content", 0, Constants.PropertyEditors.TinyMCEAlias),
|
||||||
};
|
};
|
||||||
var type = new AutoPublishedContentType(0, "anything", propertyTypes);
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", propertyTypes);
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
|
|
||||||
var rCtx = GetRoutingContext("/test", 1234);
|
var rCtx = GetRoutingContext("/test", 1234);
|
||||||
|
|||||||
@@ -354,12 +354,12 @@ namespace Umbraco.Tests.PublishedContent
|
|||||||
{
|
{
|
||||||
private static readonly PublishedPropertyType Default = new PublishedPropertyType("*", 0, "?");
|
private static readonly PublishedPropertyType Default = new PublishedPropertyType("*", 0, "?");
|
||||||
|
|
||||||
public AutoPublishedContentType(int id, string alias, IEnumerable<PublishedPropertyType> propertyTypes)
|
public AutoPublishedContentType(int id, string alias, string name, string description, IEnumerable<PublishedPropertyType> propertyTypes)
|
||||||
: base(id, alias, Enumerable.Empty<string>(), propertyTypes)
|
: base(id, alias, name, description, Enumerable.Empty<string>(), propertyTypes)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public AutoPublishedContentType(int id, string alias, IEnumerable<string> compositionAliases, IEnumerable<PublishedPropertyType> propertyTypes)
|
public AutoPublishedContentType(int id, string alias, string name, string description, IEnumerable<string> compositionAliases, IEnumerable<PublishedPropertyType> propertyTypes)
|
||||||
: base(id, alias, compositionAliases, propertyTypes)
|
: base(id, alias, name, description, compositionAliases, propertyTypes)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public override PublishedPropertyType GetPropertyType(string alias)
|
public override PublishedPropertyType GetPropertyType(string alias)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace Umbraco.Tests.PublishedContent
|
|||||||
new PublishedPropertyType("testRecursive", 0, "?"),
|
new PublishedPropertyType("testRecursive", 0, "?"),
|
||||||
};
|
};
|
||||||
var compositionAliases = new[] { "MyCompositionAlias" };
|
var compositionAliases = new[] { "MyCompositionAlias" };
|
||||||
var type = new AutoPublishedContentType(0, "anything", compositionAliases, propertyTypes);
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", compositionAliases, propertyTypes);
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -515,12 +515,6 @@ namespace Umbraco.Tests.Services
|
|||||||
|
|
||||||
Assert.That(entities.Any(), Is.True);
|
Assert.That(entities.Any(), Is.True);
|
||||||
Assert.That(entities.Count(), Is.EqualTo(5));
|
Assert.That(entities.Count(), Is.EqualTo(5));
|
||||||
|
|
||||||
Assert.That(
|
|
||||||
entities.Any(
|
|
||||||
x =>
|
|
||||||
x.AdditionalData.Any(y => y.Value is UmbracoEntity.EntityProperty
|
|
||||||
&& ((UmbracoEntity.EntityProperty)y.Value).PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace Umbraco.Tests.Services.Importing {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class ImportResources {
|
internal class ImportResources {
|
||||||
@@ -322,7 +322,7 @@ namespace Umbraco.Tests.Services.Importing {
|
|||||||
/// </package>
|
/// </package>
|
||||||
/// <author>
|
/// <author>
|
||||||
/// <name>Morten Christensen</name>
|
/// <name>Morten Christensen</name>
|
||||||
/// [rest of string was truncated]";.
|
/// [rest of string was truncated]";.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string TemplateOnly_Package {
|
internal static string TemplateOnly_Package {
|
||||||
get {
|
get {
|
||||||
@@ -348,7 +348,7 @@ namespace Umbraco.Tests.Services.Importing {
|
|||||||
/// </package>
|
/// </package>
|
||||||
/// <author>
|
/// <author>
|
||||||
/// <name>Morten Christensen</name>
|
/// <name>Morten Christensen</name>
|
||||||
/// [rest of string was truncated]";.
|
/// [rest of string was truncated]";.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string TemplateOnly_Updated_Package {
|
internal static string TemplateOnly_Updated_Package {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using Umbraco.Core;
|
||||||
|
using Umbraco.Core.Models;
|
||||||
|
using Umbraco.Core.Models.Rdbms;
|
||||||
|
using Umbraco.Tests.TestHelpers;
|
||||||
|
using Umbraco.Tests.TestHelpers.Entities;
|
||||||
|
|
||||||
|
namespace Umbraco.Tests.Services
|
||||||
|
{
|
||||||
|
[DatabaseTestBehavior(DatabaseBehavior.NewDbFileAndSchemaPerTest)]
|
||||||
|
[TestFixture, RequiresSTA]
|
||||||
|
public class MemberGroupServiceTests : BaseServiceTest
|
||||||
|
{
|
||||||
|
[SetUp]
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
[TearDown]
|
||||||
|
public override void TearDown()
|
||||||
|
{
|
||||||
|
base.TearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
[ExpectedException("System.InvalidOperationException")]
|
||||||
|
public void New_MemberGroup_Is_Not_Allowed_With_Empty_Name()
|
||||||
|
{
|
||||||
|
var service = ServiceContext.MemberGroupService;
|
||||||
|
|
||||||
|
service.Save(new MemberGroup {Name = ""});
|
||||||
|
|
||||||
|
Assert.Fail("An exception should have been thrown");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -61,6 +61,17 @@ namespace Umbraco.Tests.Strings
|
|||||||
Assert.AreEqual(stripped, result);
|
Assert.AreEqual(stripped, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase("'+alert(1234)+'", "+alert1234+")]
|
||||||
|
[TestCase("'+alert(56+78)+'", "+alert56+78+")]
|
||||||
|
[TestCase("{{file}}", "file")]
|
||||||
|
[TestCase("'+alert('hello')+'", "+alerthello+")]
|
||||||
|
[TestCase("Test", "Test")]
|
||||||
|
public void Clean_From_XSS(string input, string result)
|
||||||
|
{
|
||||||
|
var cleaned = input.CleanForXss();
|
||||||
|
Assert.AreEqual(cleaned, result);
|
||||||
|
}
|
||||||
|
|
||||||
[TestCase("This is a string to encrypt")]
|
[TestCase("This is a string to encrypt")]
|
||||||
[TestCase("This is a string to encrypt\nThis is a second line")]
|
[TestCase("This is a string to encrypt\nThis is a second line")]
|
||||||
[TestCase(" White space is preserved ")]
|
[TestCase(" White space is preserved ")]
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace Umbraco.Tests.TestHelpers
|
|||||||
|
|
||||||
// need to specify a custom callback for unit tests
|
// need to specify a custom callback for unit tests
|
||||||
// AutoPublishedContentTypes generates properties automatically
|
// AutoPublishedContentTypes generates properties automatically
|
||||||
var type = new AutoPublishedContentType(0, "anything", new PublishedPropertyType[] {});
|
var type = new AutoPublishedContentType(0, "anything", "anything", "anything", new PublishedPropertyType[] {});
|
||||||
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
PublishedContentType.GetPublishedContentTypeCallback = (alias) => type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace Umbraco.Tests.TreesAndSections {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class ResourceFiles {
|
internal class ResourceFiles {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Umbraco.Tests</RootNamespace>
|
<RootNamespace>Umbraco.Tests</RootNamespace>
|
||||||
<AssemblyName>Umbraco.Tests</AssemblyName>
|
<AssemblyName>Umbraco.Tests</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
||||||
<RestorePackages>true</RestorePackages>
|
<RestorePackages>true</RestorePackages>
|
||||||
@@ -65,6 +65,12 @@
|
|||||||
<Reference Include="Examine, Version=0.1.89.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Examine, Version=0.1.89.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Examine.0.1.89\lib\net45\Examine.dll</HintPath>
|
<HintPath>..\packages\Examine.0.1.89\lib\net45\Examine.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="HtmlAgilityPack, Version=1.8.8.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\HtmlAgilityPack.1.8.8\lib\Net45\HtmlAgilityPack.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Examine, Version=0.1.90.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Examine.0.1.90\lib\net45\Examine.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@@ -78,25 +84,25 @@
|
|||||||
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
|
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.2\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.3.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Host.HttpListener, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Host.HttpListener, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Host.HttpListener.3.1.0\lib\net45\Microsoft.Owin.Host.HttpListener.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Host.HttpListener.4.0.1\lib\net45\Microsoft.Owin.Host.HttpListener.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Host.SystemWeb, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Host.SystemWeb, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.3.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.4.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Hosting, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Hosting, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Hosting.3.1.0\lib\net45\Microsoft.Owin.Hosting.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Hosting.4.0.1\lib\net45\Microsoft.Owin.Hosting.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Security, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Security, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Security.3.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Security.4.0.1\lib\net45\Microsoft.Owin.Security.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Owin.Testing, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Owin.Testing, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Owin.Testing.3.1.0\lib\net45\Microsoft.Owin.Testing.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Owin.Testing.4.0.1\lib\net45\Microsoft.Owin.Testing.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||||
@@ -107,8 +113,8 @@
|
|||||||
<Reference Include="Moq, Version=4.1.1309.919, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
|
<Reference Include="Moq, Version=4.1.1309.919, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Moq.4.1.1309.0919\lib\net40\Moq.dll</HintPath>
|
<HintPath>..\packages\Moq.4.1.1309.0919\lib\net40\Moq.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
|
<Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath>
|
<HintPath>..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath>
|
||||||
@@ -117,7 +123,7 @@
|
|||||||
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Semver, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Semver, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\semver.1.1.2\lib\net45\Semver.dll</HintPath>
|
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ComponentModel.Composition" />
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
@@ -133,8 +139,8 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Runtime.Caching" />
|
<Reference Include="System.Runtime.Caching" />
|
||||||
@@ -142,38 +148,38 @@
|
|||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Web.ApplicationServices" />
|
<Reference Include="System.Web.ApplicationServices" />
|
||||||
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Http, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Http.Owin, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Http.Owin, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Owin.5.2.7\lib\net45\System.Web.Http.Owin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Http.SelfHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Http.SelfHost, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.SelfHost.5.2.3\lib\net45\System.Web.Http.SelfHost.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.SelfHost.5.2.7\lib\net45\System.Web.Http.SelfHost.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Http.Tracing, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Http.Tracing, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Tracing.5.2.3\lib\net45\System.Web.Http.Tracing.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Tracing.5.2.7\lib\net45\System.Web.Http.Tracing.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Http.WebHost, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.Services" />
|
<Reference Include="System.Web.Services" />
|
||||||
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
|
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
@@ -193,6 +199,7 @@
|
|||||||
<Compile Include="PublishedContent\StronglyTypedModels\Home.cs" />
|
<Compile Include="PublishedContent\StronglyTypedModels\Home.cs" />
|
||||||
<Compile Include="Services\AuditServiceTests.cs" />
|
<Compile Include="Services\AuditServiceTests.cs" />
|
||||||
<Compile Include="Services\ConsentServiceTests.cs" />
|
<Compile Include="Services\ConsentServiceTests.cs" />
|
||||||
|
<Compile Include="Services\MemberGroupServiceTests.cs" />
|
||||||
<Compile Include="TestHelpers\ControllerTesting\AuthenticateEverythingExtensions.cs" />
|
<Compile Include="TestHelpers\ControllerTesting\AuthenticateEverythingExtensions.cs" />
|
||||||
<Compile Include="TestHelpers\ControllerTesting\AuthenticateEverythingMiddleware.cs" />
|
<Compile Include="TestHelpers\ControllerTesting\AuthenticateEverythingMiddleware.cs" />
|
||||||
<Compile Include="TestHelpers\ControllerTesting\SpecificAssemblyResolver.cs" />
|
<Compile Include="TestHelpers\ControllerTesting\SpecificAssemblyResolver.cs" />
|
||||||
@@ -391,6 +398,7 @@
|
|||||||
<Compile Include="Models\ContentExtensionsTests.cs" />
|
<Compile Include="Models\ContentExtensionsTests.cs" />
|
||||||
<Compile Include="Models\UserExtensionsTests.cs" />
|
<Compile Include="Models\UserExtensionsTests.cs" />
|
||||||
<Compile Include="Web\Mvc\MergeParentContextViewDataAttributeTests.cs" />
|
<Compile Include="Web\Mvc\MergeParentContextViewDataAttributeTests.cs" />
|
||||||
|
<Compile Include="Web\Mvc\ValidateUmbracoFormRouteStringAttributeTests.cs" />
|
||||||
<Compile Include="Web\Mvc\ViewDataDictionaryExtensionTests.cs" />
|
<Compile Include="Web\Mvc\ViewDataDictionaryExtensionTests.cs" />
|
||||||
<Compile Include="Persistence\PetaPocoExtensionsTest.cs" />
|
<Compile Include="Persistence\PetaPocoExtensionsTest.cs" />
|
||||||
<Compile Include="Persistence\Querying\ContentTypeSqlMappingTests.cs" />
|
<Compile Include="Persistence\Querying\ContentTypeSqlMappingTests.cs" />
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ namespace Umbraco.Tests.UmbracoExamine {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class TestFiles {
|
internal class TestFiles {
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ using Umbraco.Web;
|
|||||||
|
|
||||||
namespace Umbraco.Tests.Web.Mvc
|
namespace Umbraco.Tests.Web.Mvc
|
||||||
{
|
{
|
||||||
[TestFixture]
|
|
||||||
|
[TestFixture]
|
||||||
public class HtmlHelperExtensionMethodsTests
|
public class HtmlHelperExtensionMethodsTests
|
||||||
{
|
{
|
||||||
[SetUp]
|
[SetUp]
|
||||||
@@ -29,5 +30,30 @@ namespace Umbraco.Tests.Web.Mvc
|
|||||||
var output = _htmlHelper.Wrap("div", "hello world", new {style = "color:red;", onclick = "void();"});
|
var output = _htmlHelper.Wrap("div", "hello world", new {style = "color:red;", onclick = "void();"});
|
||||||
Assert.AreEqual("<div style=\"color:red;\" onclick=\"void();\">hello world</div>", output.ToHtmlString());
|
Assert.AreEqual("<div style=\"color:red;\" onclick=\"void();\">hello world</div>", output.ToHtmlString());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
[Test]
|
||||||
|
public void GetRelatedLinkHtml_Simple()
|
||||||
|
{
|
||||||
|
var relatedLink = new Umbraco.Web.Models.RelatedLink {
|
||||||
|
Caption = "Link Caption",
|
||||||
|
NewWindow = true,
|
||||||
|
Link = "https://www.google.com/"
|
||||||
|
};
|
||||||
|
var output = _htmlHelper.GetRelatedLinkHtml(relatedLink);
|
||||||
|
Assert.AreEqual("<a href=\"https://www.google.com/\" target=\"_blank\">Link Caption</a>", output.ToHtmlString());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetRelatedLinkHtml_HtmlAttributes()
|
||||||
|
{
|
||||||
|
var relatedLink = new Umbraco.Web.Models.RelatedLink
|
||||||
|
{
|
||||||
|
Caption = "Link Caption",
|
||||||
|
NewWindow = true,
|
||||||
|
Link = "https://www.google.com/"
|
||||||
|
};
|
||||||
|
var output = _htmlHelper.GetRelatedLinkHtml(relatedLink, new { @class = "test-class"});
|
||||||
|
Assert.AreEqual("<a class=\"test-class\" href=\"https://www.google.com/\" target=\"_blank\">Link Caption</a>", output.ToHtmlString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
using NUnit.Framework;
|
||||||
|
using Umbraco.Web;
|
||||||
|
using Umbraco.Web.Mvc;
|
||||||
|
|
||||||
|
namespace Umbraco.Tests.Web.Mvc
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class ValidateUmbracoFormRouteStringAttributeTests
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void Validate_Route_String()
|
||||||
|
{
|
||||||
|
var attribute = new ValidateUmbracoFormRouteStringAttribute();
|
||||||
|
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(null, null, null, null));
|
||||||
|
|
||||||
|
const string ControllerName = "Test";
|
||||||
|
const string ControllerAction = "Index";
|
||||||
|
const string Area = "MyArea";
|
||||||
|
var validUfprt = UmbracoHelper.CreateEncryptedRouteString(ControllerName, ControllerAction, Area);
|
||||||
|
|
||||||
|
var invalidUfprt = validUfprt + "z";
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(invalidUfprt, null, null, null));
|
||||||
|
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, "doesntMatch"));
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, null));
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, "doesntMatch", Area));
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, null, Area));
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, "doesntMatch", ControllerAction, Area));
|
||||||
|
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, null, ControllerAction, Area));
|
||||||
|
|
||||||
|
Assert.DoesNotThrow(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, Area));
|
||||||
|
Assert.DoesNotThrow(() => attribute.ValidateRouteString(validUfprt, ControllerName.ToLowerInvariant(), ControllerAction.ToLowerInvariant(), Area.ToLowerInvariant()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,41 +2,42 @@
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="AutoMapper" version="3.3.1" targetFramework="net45" />
|
<package id="AutoMapper" version="3.3.1" targetFramework="net45" />
|
||||||
<package id="Castle.Core" version="4.0.0" targetFramework="net45" />
|
<package id="Castle.Core" version="4.0.0" targetFramework="net45" />
|
||||||
<package id="Examine" version="0.1.89" targetFramework="net45" />
|
<package id="Examine" version="0.1.90" targetFramework="net45" />
|
||||||
|
<package id="HtmlAgilityPack" version="1.8.8" targetFramework="net452" />
|
||||||
<package id="log4net" version="2.0.8" targetFramework="net45" />
|
<package id="log4net" version="2.0.8" targetFramework="net45" />
|
||||||
<package id="Log4Net.Async" version="2.0.4" targetFramework="net45" />
|
<package id="Log4Net.Async" version="2.0.4" targetFramework="net45" />
|
||||||
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net45" />
|
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Identity.Core" version="2.2.2" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Host.HttpListener" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Host.HttpListener" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Host.SystemWeb" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Host.SystemWeb" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Hosting" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Hosting" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Security" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Security" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Owin.Testing" version="3.1.0" targetFramework="net45" />
|
<package id="Microsoft.Owin.Testing" version="4.0.1" targetFramework="net452" />
|
||||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
||||||
<package id="MiniProfiler" version="2.1.0" targetFramework="net45" />
|
<package id="MiniProfiler" version="2.1.0" targetFramework="net45" />
|
||||||
<package id="Moq" version="4.1.1309.0919" targetFramework="net45" />
|
<package id="Moq" version="4.1.1309.0919" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net452" />
|
||||||
<package id="NUnit" version="2.6.2" targetFramework="net45" />
|
<package id="NUnit" version="2.6.2" targetFramework="net45" />
|
||||||
<package id="NUnitTestAdapter" version="2.1.1" targetFramework="net45" />
|
<package id="NUnitTestAdapter" version="2.1.1" targetFramework="net45" />
|
||||||
<package id="Owin" version="1.0" targetFramework="net45" />
|
<package id="Owin" version="1.0" targetFramework="net45" />
|
||||||
<package id="Selenium.WebDriver" version="2.32.0" targetFramework="net45" />
|
<package id="Selenium.WebDriver" version="2.32.0" targetFramework="net45" />
|
||||||
<package id="semver" version="1.1.2" targetFramework="net45" />
|
<package id="semver" version="1.1.2" targetFramework="net452" />
|
||||||
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
|
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
|
||||||
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
|
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
|
||||||
<package id="System.Runtime" version="4.3.0" targetFramework="net45" />
|
<package id="System.Runtime" version="4.3.1" targetFramework="net452" />
|
||||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net45" />
|
<package id="System.Runtime.Extensions" version="4.3.1" targetFramework="net452" />
|
||||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net45" />
|
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net452" />
|
||||||
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net45" />
|
<package id="System.Text.RegularExpressions" version="4.3.1" targetFramework="net452" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"jquery-migrate": "1.4.0",
|
"jquery-migrate": "1.4.0",
|
||||||
"angular-dynamic-locale": "0.1.28",
|
"angular-dynamic-locale": "0.1.28",
|
||||||
"ng-file-upload": "~7.3.8",
|
"ng-file-upload": "~7.3.8",
|
||||||
"tinymce": "~4.7.1",
|
"tinymce": "~4.9.4",
|
||||||
"codemirror": "~5.3.0",
|
"codemirror": "~5.3.0",
|
||||||
"angular-local-storage": "~0.2.3",
|
"angular-local-storage": "~0.2.3",
|
||||||
"moment": "~2.10.3",
|
"moment": "~2.10.3",
|
||||||
|
|||||||
+11
-30
@@ -4146,8 +4146,7 @@
|
|||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@@ -4168,14 +4167,12 @@
|
|||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
@@ -4190,20 +4187,17 @@
|
|||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -4320,8 +4314,7 @@
|
|||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
@@ -4333,7 +4326,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
@@ -4348,7 +4340,6 @@
|
|||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
@@ -4356,14 +4347,12 @@
|
|||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.2.4",
|
"version": "2.2.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
@@ -4382,7 +4371,6 @@
|
|||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
@@ -4463,8 +4451,7 @@
|
|||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
@@ -4476,7 +4463,6 @@
|
|||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
@@ -4562,8 +4548,7 @@
|
|||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
@@ -4599,7 +4584,6 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
@@ -4619,7 +4603,6 @@
|
|||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
@@ -4663,14 +4646,12 @@
|
|||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ LazyLoad.js([
|
|||||||
'../js/umbraco.security.js',
|
'../js/umbraco.security.js',
|
||||||
'../ServerVariables',
|
'../ServerVariables',
|
||||||
'../lib/spectrum/spectrum.js',
|
'../lib/spectrum/spectrum.js',
|
||||||
'../js/umbraco.canvasdesigner.js',
|
'../js/umbraco.canvasdesigner.js'
|
||||||
'../js/canvasdesigner.panel.js'
|
|
||||||
], function () {
|
], function () {
|
||||||
jQuery(document).ready(function () {
|
jQuery(document).ready(function () {
|
||||||
angular.bootstrap(document, ['Umbraco.canvasdesigner']);
|
angular.bootstrap(document, ['Umbraco.canvasdesigner']);
|
||||||
|
|||||||
+4
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
<umb-toggle
|
<umb-toggle
|
||||||
checked="vm.checked"
|
checked="vm.checked"
|
||||||
|
disabled="vm.disabled"
|
||||||
on-click="vm.toggle()"
|
on-click="vm.toggle()"
|
||||||
show-labels="true"
|
show-labels="true"
|
||||||
label-on="Start"
|
label-on="Start"
|
||||||
@@ -38,6 +39,7 @@
|
|||||||
|
|
||||||
var vm = this;
|
var vm = this;
|
||||||
vm.checked = false;
|
vm.checked = false;
|
||||||
|
vm.disabled = false;
|
||||||
|
|
||||||
vm.toggle = toggle;
|
vm.toggle = toggle;
|
||||||
|
|
||||||
@@ -52,6 +54,7 @@
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@param {boolean} checked Set to <code>true</code> or <code>false</code> to toggle the switch.
|
@param {boolean} checked Set to <code>true</code> or <code>false</code> to toggle the switch.
|
||||||
|
@param {boolean} disabled Set to <code>true</code> or <code>false</code> to disable/enable the switch.
|
||||||
@param {callback} onClick The function which should be called when the toggle is clicked.
|
@param {callback} onClick The function which should be called when the toggle is clicked.
|
||||||
@param {string=} showLabels Set to <code>true</code> or <code>false</code> to show a "On" or "Off" label next to the switch.
|
@param {string=} showLabels Set to <code>true</code> or <code>false</code> to show a "On" or "Off" label next to the switch.
|
||||||
@param {string=} labelOn Set a custom label for when the switched is turned on. It will default to "On".
|
@param {string=} labelOn Set a custom label for when the switched is turned on. It will default to "On".
|
||||||
@@ -115,6 +118,7 @@
|
|||||||
templateUrl: 'views/components/buttons/umb-toggle.html',
|
templateUrl: 'views/components/buttons/umb-toggle.html',
|
||||||
scope: {
|
scope: {
|
||||||
checked: "=",
|
checked: "=",
|
||||||
|
disabled: "=",
|
||||||
onClick: "&",
|
onClick: "&",
|
||||||
labelOn: "@?",
|
labelOn: "@?",
|
||||||
labelOff: "@?",
|
labelOff: "@?",
|
||||||
|
|||||||
+12
-1
@@ -53,6 +53,16 @@
|
|||||||
if (scope.documentType !== null) {
|
if (scope.documentType !== null) {
|
||||||
scope.previewOpenUrl = '#/settings/documenttypes/edit/' + scope.documentType.id;
|
scope.previewOpenUrl = '#/settings/documenttypes/edit/' + scope.documentType.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// only allow configuring scheduled publishing if the user has publish ("U") and unpublish ("Z") permissions on this node
|
||||||
|
scope.allowScheduledPublishing = _.contains(scope.node.allowedActions, "U") && _.contains(scope.node.allowedActions, "Z");
|
||||||
|
|
||||||
|
ensureUniqueUrls();
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure we don't show duplicate URLs in case multiple URL providers assign the same URLs to the content (see issue 3842 for details)
|
||||||
|
function ensureUniqueUrls() {
|
||||||
|
scope.node.urls = _.uniq(scope.node.urls);
|
||||||
}
|
}
|
||||||
|
|
||||||
scope.auditTrailPageChange = function (pageNumber) {
|
scope.auditTrailPageChange = function (pageNumber) {
|
||||||
@@ -293,11 +303,12 @@
|
|||||||
if (!newValue) { return; }
|
if (!newValue) { return; }
|
||||||
if (newValue === oldValue) { return; }
|
if (newValue === oldValue) { return; }
|
||||||
|
|
||||||
if(isInfoTab) {
|
if (isInfoTab) {
|
||||||
loadAuditTrail();
|
loadAuditTrail();
|
||||||
loadRedirectUrls();
|
loadRedirectUrls();
|
||||||
formatDatesToLocal();
|
formatDatesToLocal();
|
||||||
setNodePublishStatus(scope.node);
|
setNodePublishStatus(scope.node);
|
||||||
|
ensureUniqueUrls();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
@ngdoc directive
|
||||||
|
@name umbraco.directives.directive:umbCheckbox
|
||||||
|
@restrict E
|
||||||
|
@scope
|
||||||
|
|
||||||
|
@description
|
||||||
|
<b>Added in Umbraco version 7.14.0</b> Use this directive to render an umbraco checkbox.
|
||||||
|
|
||||||
|
<h3>Markup example</h3>
|
||||||
|
<pre>
|
||||||
|
<div ng-controller="My.Controller as vm">
|
||||||
|
|
||||||
|
<umb-checkbox
|
||||||
|
name="checkboxlist"
|
||||||
|
value="{{key}}"
|
||||||
|
model="true"
|
||||||
|
text="{{text}}">
|
||||||
|
</umb-checkbox>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
@param {boolean} model Set to <code>true</code> or <code>false</code> to set the checkbox to checked or unchecked.
|
||||||
|
@param {string} value Set the value of the checkbox.
|
||||||
|
@param {string} name Set the name of the checkbox.
|
||||||
|
@param {string} text Set the text for the checkbox label.
|
||||||
|
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function CheckboxDirective() {
|
||||||
|
var directive = {
|
||||||
|
restrict: 'E',
|
||||||
|
replace: true,
|
||||||
|
templateUrl: 'views/components/forms/umb-checkbox.html',
|
||||||
|
scope: {
|
||||||
|
model: "=",
|
||||||
|
value: "@",
|
||||||
|
name: "@",
|
||||||
|
text: "@",
|
||||||
|
required: "="
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return directive;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
angular.module('umbraco.directives').directive('umbCheckbox', CheckboxDirective);
|
||||||
|
|
||||||
|
})();
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
/**
|
||||||
|
@ngdoc directive
|
||||||
|
@name umbraco.directives.directive:umbRadiobutton
|
||||||
|
@restrict E
|
||||||
|
@scope
|
||||||
|
|
||||||
|
@description
|
||||||
|
<b>Added in Umbraco version 7.14.0</b> Use this directive to render an umbraco radio button.
|
||||||
|
|
||||||
|
<h3>Markup example</h3>
|
||||||
|
<pre>
|
||||||
|
<div ng-controller="My.Controller as vm">
|
||||||
|
|
||||||
|
<umb-radiobutton
|
||||||
|
name="checkboxlist"
|
||||||
|
value="{{key}}"
|
||||||
|
model="true"
|
||||||
|
text="{{text}}">
|
||||||
|
</umb-radiobutton>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
@param {boolean} model Set to <code>true</code> or <code>false</code> to set the radiobutton to checked or unchecked.
|
||||||
|
@param {string} value Set the value of the radiobutton.
|
||||||
|
@param {string} name Set the name of the radiobutton.
|
||||||
|
@param {string} text Set the text for the radiobutton label.
|
||||||
|
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function RadiobuttonDirective() {
|
||||||
|
var directive = {
|
||||||
|
restrict: 'E',
|
||||||
|
replace: true,
|
||||||
|
templateUrl: 'views/components/forms/umb-radiobutton.html',
|
||||||
|
scope: {
|
||||||
|
model: "=",
|
||||||
|
value: "@",
|
||||||
|
name: "@",
|
||||||
|
text: "@"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return directive;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
angular.module('umbraco.directives').directive('umbRadiobutton', RadiobuttonDirective);
|
||||||
|
|
||||||
|
})();
|
||||||
+14
-35
@@ -103,34 +103,6 @@ angular.module("umbraco.directives")
|
|||||||
scope.dimensions.cropper.height = _viewPortH; // scope.dimensions.viewport.height - 2 * scope.dimensions.margin;
|
scope.dimensions.cropper.height = _viewPortH; // scope.dimensions.viewport.height - 2 * scope.dimensions.margin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//when loading an image without any crop info, we center and fit it
|
|
||||||
var resizeImageToEditor = function(){
|
|
||||||
//returns size fitting the cropper
|
|
||||||
var size = cropperHelper.calculateAspectRatioFit(
|
|
||||||
scope.dimensions.image.width,
|
|
||||||
scope.dimensions.image.height,
|
|
||||||
scope.dimensions.cropper.width,
|
|
||||||
scope.dimensions.cropper.height,
|
|
||||||
true);
|
|
||||||
|
|
||||||
//sets the image size and updates the scope
|
|
||||||
scope.dimensions.image.width = size.width;
|
|
||||||
scope.dimensions.image.height = size.height;
|
|
||||||
|
|
||||||
//calculate the best suited ratios
|
|
||||||
scope.dimensions.scale.min = size.ratio;
|
|
||||||
scope.dimensions.scale.max = 2;
|
|
||||||
scope.dimensions.scale.current = size.ratio;
|
|
||||||
|
|
||||||
//center the image
|
|
||||||
var position = cropperHelper.centerInsideViewPort(scope.dimensions.image, scope.dimensions.cropper);
|
|
||||||
scope.dimensions.top = position.top;
|
|
||||||
scope.dimensions.left = position.left;
|
|
||||||
|
|
||||||
setConstraints();
|
|
||||||
};
|
|
||||||
|
|
||||||
//resize to a given ratio
|
//resize to a given ratio
|
||||||
var resizeImageToScale = function(ratio){
|
var resizeImageToScale = function(ratio){
|
||||||
//do stuff
|
//do stuff
|
||||||
@@ -227,12 +199,19 @@ angular.module("umbraco.directives")
|
|||||||
//set dimensions on image, viewport, cropper etc
|
//set dimensions on image, viewport, cropper etc
|
||||||
setDimensions(image);
|
setDimensions(image);
|
||||||
|
|
||||||
//if we have a crop already position the image
|
//create a default crop if we haven't got one already
|
||||||
if(scope.crop){
|
var createDefaultCrop = !scope.crop;
|
||||||
resizeImageToCrop();
|
if (createDefaultCrop) {
|
||||||
}else{
|
calculateCropBox();
|
||||||
resizeImageToEditor();
|
}
|
||||||
}
|
|
||||||
|
resizeImageToCrop();
|
||||||
|
|
||||||
|
//if we're creating a new crop, make sure to zoom out fully
|
||||||
|
if (createDefaultCrop) {
|
||||||
|
scope.dimensions.scale.current = scope.dimensions.scale.min;
|
||||||
|
resizeImageToScale(scope.dimensions.scale.min);
|
||||||
|
}
|
||||||
|
|
||||||
//sets constaints for the cropper
|
//sets constaints for the cropper
|
||||||
setConstraints();
|
setConstraints();
|
||||||
@@ -253,7 +232,7 @@ angular.module("umbraco.directives")
|
|||||||
var throttledResizing = _.throttle(function(){
|
var throttledResizing = _.throttle(function(){
|
||||||
resizeImageToScale(scope.dimensions.scale.current);
|
resizeImageToScale(scope.dimensions.scale.current);
|
||||||
calculateCropBox();
|
calculateCropBox();
|
||||||
}, 100);
|
}, 16);
|
||||||
|
|
||||||
|
|
||||||
//happens when we change the scale
|
//happens when we change the scale
|
||||||
|
|||||||
+10
-10
@@ -14,7 +14,8 @@ angular.module("umbraco.directives")
|
|||||||
scope: {
|
scope: {
|
||||||
src: '=',
|
src: '=',
|
||||||
center: "=",
|
center: "=",
|
||||||
onImageLoaded: "&"
|
onImageLoaded: "&",
|
||||||
|
onGravityChanged: "&"
|
||||||
},
|
},
|
||||||
link: function(scope, element, attrs) {
|
link: function(scope, element, attrs) {
|
||||||
|
|
||||||
@@ -34,7 +35,7 @@ angular.module("umbraco.directives")
|
|||||||
var $overlay = element.find(".overlay");
|
var $overlay = element.find(".overlay");
|
||||||
|
|
||||||
scope.style = function () {
|
scope.style = function () {
|
||||||
if (scope.dimensions.width <= 0) {
|
if (scope.dimensions.width <= 0 || scope.dimensions.height <= 0) {
|
||||||
setDimensions();
|
setDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +53,7 @@ angular.module("umbraco.directives")
|
|||||||
|
|
||||||
calculateGravity(offsetX, offsetY);
|
calculateGravity(offsetX, offsetY);
|
||||||
|
|
||||||
lazyEndEvent();
|
gravityChanged();
|
||||||
};
|
};
|
||||||
|
|
||||||
var setDimensions = function () {
|
var setDimensions = function () {
|
||||||
@@ -77,12 +78,11 @@ angular.module("umbraco.directives")
|
|||||||
scope.center.top = (scope.dimensions.top+10) / scope.dimensions.height;
|
scope.center.top = (scope.dimensions.top+10) / scope.dimensions.height;
|
||||||
};
|
};
|
||||||
|
|
||||||
var lazyEndEvent = _.debounce(function(){
|
var gravityChanged = function () {
|
||||||
scope.$apply(function(){
|
if (angular.isFunction(scope.onGravityChanged)) {
|
||||||
scope.$emit("imageFocalPointStop");
|
scope.onGravityChanged();
|
||||||
});
|
}
|
||||||
}, 2000);
|
};
|
||||||
|
|
||||||
|
|
||||||
//Drag and drop positioning, using jquery ui draggable
|
//Drag and drop positioning, using jquery ui draggable
|
||||||
//TODO ensure that the point doesnt go outside the box
|
//TODO ensure that the point doesnt go outside the box
|
||||||
@@ -100,7 +100,7 @@ angular.module("umbraco.directives")
|
|||||||
calculateGravity(offsetX, offsetY);
|
calculateGravity(offsetX, offsetY);
|
||||||
});
|
});
|
||||||
|
|
||||||
lazyEndEvent();
|
gravityChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -266,7 +266,11 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
|
|||||||
treeService.syncTree({
|
treeService.syncTree({
|
||||||
node: treeNode,
|
node: treeNode,
|
||||||
path: path,
|
path: path,
|
||||||
forceReload: forceReload
|
forceReload: forceReload,
|
||||||
|
//when the tree node is expanding during sync tree, handle it and raise appropriate events
|
||||||
|
treeNodeExpanded: function (args) {
|
||||||
|
emitEvent("treeNodeExpanded", { tree: scope.tree, node: args.node, children: args.children });
|
||||||
|
}
|
||||||
}).then(function (data) {
|
}).then(function (data) {
|
||||||
|
|
||||||
if (activate === undefined || activate === true) {
|
if (activate === undefined || activate === true) {
|
||||||
|
|||||||
+7
@@ -12,6 +12,7 @@ function treeSearchBox(localizationService, searchService, $q) {
|
|||||||
searchFromName: "@",
|
searchFromName: "@",
|
||||||
showSearch: "@",
|
showSearch: "@",
|
||||||
section: "@",
|
section: "@",
|
||||||
|
datatypeId: "@",
|
||||||
hideSearchCallback: "=",
|
hideSearchCallback: "=",
|
||||||
searchCallback: "="
|
searchCallback: "="
|
||||||
},
|
},
|
||||||
@@ -34,6 +35,7 @@ function treeSearchBox(localizationService, searchService, $q) {
|
|||||||
scope.showSearch = "false";
|
scope.showSearch = "false";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//used to cancel any request in progress if another one needs to take it's place
|
//used to cancel any request in progress if another one needs to take it's place
|
||||||
var canceler = null;
|
var canceler = null;
|
||||||
|
|
||||||
@@ -60,6 +62,11 @@ function treeSearchBox(localizationService, searchService, $q) {
|
|||||||
searchArgs["searchFrom"] = scope.searchFromId;
|
searchArgs["searchFrom"] = scope.searchFromId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//append dataTypeId value if there is one
|
||||||
|
if (scope.datatypeId) {
|
||||||
|
searchArgs["dataTypeId"] = scope.datatypeId;
|
||||||
|
}
|
||||||
|
|
||||||
searcher(searchArgs).then(function (data) {
|
searcher(searchArgs).then(function (data) {
|
||||||
scope.searchCallback(data);
|
scope.searchCallback(data);
|
||||||
//set back to null so it can be re-created
|
//set back to null so it can be re-created
|
||||||
|
|||||||
+17
-17
@@ -86,20 +86,21 @@ angular.module("umbraco.directives")
|
|||||||
function generateAlias(value) {
|
function generateAlias(value) {
|
||||||
|
|
||||||
if (generateAliasTimeout) {
|
if (generateAliasTimeout) {
|
||||||
$timeout.cancel(generateAliasTimeout);
|
$timeout.cancel(generateAliasTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( value !== undefined && value !== "" && value !== null) {
|
if (value !== undefined && value !== "" && value !== null) {
|
||||||
|
|
||||||
scope.alias = "";
|
scope.alias = "";
|
||||||
scope.placeholderText = scope.labels.busy;
|
scope.placeholderText = scope.labels.busy;
|
||||||
|
|
||||||
generateAliasTimeout = $timeout(function () {
|
generateAliasTimeout = $timeout(function () {
|
||||||
updateAlias = true;
|
updateAlias = true;
|
||||||
entityResource.getSafeAlias(encodeURIComponent(value), true).then(function (safeAlias) {
|
entityResource.getSafeAlias(encodeURIComponent(value), true).then(function (safeAlias) {
|
||||||
if (updateAlias) {
|
if (updateAlias) {
|
||||||
scope.alias = safeAlias.alias;
|
scope.alias = safeAlias.alias;
|
||||||
}
|
}
|
||||||
|
scope.placeholderText = scope.labels.idle;
|
||||||
});
|
});
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
@@ -108,7 +109,6 @@ angular.module("umbraco.directives")
|
|||||||
scope.alias = "";
|
scope.alias = "";
|
||||||
scope.placeholderText = scope.labels.idle;
|
scope.placeholderText = scope.labels.idle;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if alias gets unlocked - stop watching alias
|
// if alias gets unlocked - stop watching alias
|
||||||
@@ -119,17 +119,17 @@ angular.module("umbraco.directives")
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
// validate custom entered alias
|
// validate custom entered alias
|
||||||
eventBindings.push(scope.$watch('alias', function(newValue, oldValue){
|
eventBindings.push(scope.$watch('alias', function (newValue, oldValue) {
|
||||||
|
if (scope.alias === "" || scope.alias === null || scope.alias === undefined) {
|
||||||
if(scope.alias === "" && bindWatcher === true || scope.alias === null && bindWatcher === true) {
|
if (bindWatcher === true) {
|
||||||
// add watcher
|
// add watcher
|
||||||
eventBindings.push(scope.$watch('aliasFrom', function(newValue, oldValue) {
|
eventBindings.push(scope.$watch('aliasFrom', function (newValue, oldValue) {
|
||||||
if(bindWatcher) {
|
if (bindWatcher) {
|
||||||
generateAlias(newValue);
|
generateAlias(newValue);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ Use this directive to generate color swatches to pick from.
|
|||||||
scope.selectedColor = color;
|
scope.selectedColor = color;
|
||||||
|
|
||||||
if (scope.onSelect) {
|
if (scope.onSelect) {
|
||||||
scope.onSelect(color);
|
scope.onSelect({color: color });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* @name umbraco.resources.codefileResource
|
* @name umbraco.resources.codefileResource
|
||||||
* @description Loads in data for files that contain code such as js scripts, partial views and partial view macros
|
* @description Loads in data for files that contain code such as js scripts, partial views and partial view macros
|
||||||
**/
|
**/
|
||||||
function codefileResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
function codefileResource($q, $http, umbDataFormatter, umbRequestHelper, localizationService) {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
||||||
@@ -106,13 +106,16 @@ function codefileResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
deleteByPath: function (type, virtualpath) {
|
deleteByPath: function (type, virtualpath) {
|
||||||
|
|
||||||
|
var promise = localizationService.localize("codefile_deleteItemFailed", [virtualpath]);
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(
|
$http.post(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"codeFileApiBaseUrl",
|
"codeFileApiBaseUrl",
|
||||||
"Delete",
|
"Delete",
|
||||||
[{ type: type }, { virtualPath: virtualpath}])),
|
[{ type: type }, { virtualPath: virtualpath}])),
|
||||||
"Failed to delete item: " + virtualpath);
|
promise);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -236,13 +239,19 @@ function codefileResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
createContainer: function(type, parentId, name) {
|
createContainer: function (type, parentId, name) {
|
||||||
|
|
||||||
|
// Is the parent ID numeric?
|
||||||
|
var key = "codefile_createFolderFailedBy" + (isNaN(parseInt(parentId)) ? "Name" : "Id");
|
||||||
|
|
||||||
|
var promise = localizationService.localize(key, [parentId]);
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(umbRequestHelper.getApiUrl(
|
$http.post(umbRequestHelper.getApiUrl(
|
||||||
"codeFileApiBaseUrl",
|
"codeFileApiBaseUrl",
|
||||||
"PostCreateContainer",
|
"PostCreateContainer",
|
||||||
{ type: type, parentId: parentId, name: encodeURIComponent(name) })),
|
{ type: type, parentId: parentId, name: encodeURIComponent(name) })),
|
||||||
'Failed to create a folder under parent id ' + parentId);
|
promise);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -160,6 +160,40 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
'Failed to retrieve entity data for id ' + id);
|
'Failed to retrieve entity data for id ' + id);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
getUrlAndAnchors: function (id) {
|
||||||
|
|
||||||
|
if (id === -1 || id === "-1") {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return umbRequestHelper.resourcePromise(
|
||||||
|
$http.get(
|
||||||
|
umbRequestHelper.getApiUrl(
|
||||||
|
"entityApiBaseUrl",
|
||||||
|
"GetUrlAndAnchors",
|
||||||
|
[{ id: id }])),
|
||||||
|
'Failed to retrieve url and anchors data for id ' + id);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
getAnchors: function (rteContent) {
|
||||||
|
|
||||||
|
if (!rteContent || rteContent.length === 0) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return umbRequestHelper.resourcePromise(
|
||||||
|
$http.post(
|
||||||
|
umbRequestHelper.getApiUrl(
|
||||||
|
"entityApiBaseUrl",
|
||||||
|
'GetAnchors'),
|
||||||
|
{
|
||||||
|
rteContent: rteContent
|
||||||
|
}),
|
||||||
|
'Failed to anchors data for rte content ' + rteContent);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.entityResource#getByIds
|
* @name umbraco.resources.entityResource#getByIds
|
||||||
@@ -292,14 +326,23 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
* @returns {Promise} resourcePromise object containing the entity.
|
* @returns {Promise} resourcePromise object containing the entity.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getAncestors: function (id, type) {
|
getAncestors: function (id, type, options) {
|
||||||
|
|
||||||
|
var args = [
|
||||||
|
{ id: id },
|
||||||
|
{ type: type }
|
||||||
|
];
|
||||||
|
if (options && options.dataTypeId) {
|
||||||
|
args.push({ dataTypeId: options.dataTypeId });
|
||||||
|
}
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"entityApiBaseUrl",
|
"entityApiBaseUrl",
|
||||||
"GetAncestors",
|
"GetAncestors",
|
||||||
[{id: id}, {type: type}])),
|
args)),
|
||||||
'Failed to retrieve ancestor data for id ' + id);
|
'Failed to retrieve ancestor data for id ' + id);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -315,14 +358,19 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
* @returns {Promise} resourcePromise object containing the entity.
|
* @returns {Promise} resourcePromise object containing the entity.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getChildren: function (id, type) {
|
getChildren: function (id, type, options) {
|
||||||
|
|
||||||
|
var args = [{ id: id }, { type: type }];
|
||||||
|
if (options && options.dataTypeId) {
|
||||||
|
args.push({ dataTypeId: options.dataTypeId });
|
||||||
|
}
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"entityApiBaseUrl",
|
"entityApiBaseUrl",
|
||||||
"GetChildren",
|
"GetChildren",
|
||||||
[{ id: id }, { type: type }])),
|
args)),
|
||||||
'Failed to retrieve child data for id ' + id);
|
'Failed to retrieve child data for id ' + id);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -361,7 +409,8 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
pageNumber: 100,
|
pageNumber: 100,
|
||||||
filter: '',
|
filter: '',
|
||||||
orderDirection: "Ascending",
|
orderDirection: "Ascending",
|
||||||
orderBy: "SortOrder"
|
orderBy: "SortOrder",
|
||||||
|
dataTypeId: null
|
||||||
};
|
};
|
||||||
if (options === undefined) {
|
if (options === undefined) {
|
||||||
options = {};
|
options = {};
|
||||||
@@ -378,6 +427,7 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
options.orderDirection = "Descending";
|
options.orderDirection = "Descending";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
@@ -390,7 +440,8 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
pageSize: options.pageSize,
|
pageSize: options.pageSize,
|
||||||
orderBy: options.orderBy,
|
orderBy: options.orderBy,
|
||||||
orderDirection: options.orderDirection,
|
orderDirection: options.orderDirection,
|
||||||
filter: encodeURIComponent(options.filter)
|
filter: encodeURIComponent(options.filter),
|
||||||
|
dataTypeId: options.dataTypeId
|
||||||
}
|
}
|
||||||
)),
|
)),
|
||||||
'Failed to retrieve child data for id ' + parentId);
|
'Failed to retrieve child data for id ' + parentId);
|
||||||
@@ -431,7 +482,8 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
pageNumber: 1,
|
pageNumber: 1,
|
||||||
filter: '',
|
filter: '',
|
||||||
orderDirection: "Ascending",
|
orderDirection: "Ascending",
|
||||||
orderBy: "SortOrder"
|
orderBy: "SortOrder",
|
||||||
|
dataTypeId: null
|
||||||
};
|
};
|
||||||
if (options === undefined) {
|
if (options === undefined) {
|
||||||
options = {};
|
options = {};
|
||||||
@@ -460,12 +512,14 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
pageSize: options.pageSize,
|
pageSize: options.pageSize,
|
||||||
orderBy: options.orderBy,
|
orderBy: options.orderBy,
|
||||||
orderDirection: options.orderDirection,
|
orderDirection: options.orderDirection,
|
||||||
filter: encodeURIComponent(options.filter)
|
filter: encodeURIComponent(options.filter),
|
||||||
|
dataTypeId: options.dataTypeId
|
||||||
}
|
}
|
||||||
)),
|
)),
|
||||||
'Failed to retrieve child data for id ' + parentId);
|
'Failed to retrieve child data for id ' + parentId);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.entityResource#search
|
* @name umbraco.resources.entityResource#search
|
||||||
@@ -488,13 +542,17 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
* @returns {Promise} resourcePromise object containing the entity array.
|
* @returns {Promise} resourcePromise object containing the entity array.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
search: function (query, type, searchFrom, canceler) {
|
search: function (query, type, searchFrom, canceler, dataTypeId) {
|
||||||
|
|
||||||
var args = [{ query: query }, { type: type }];
|
var args = [{ query: query }, { type: type }];
|
||||||
if (searchFrom) {
|
if (searchFrom) {
|
||||||
args.push({ searchFrom: searchFrom });
|
args.push({ searchFrom: searchFrom });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dataTypeId) {
|
||||||
|
args.push({ dataTypeId: dataTypeId });
|
||||||
|
}
|
||||||
|
|
||||||
var httpConfig = {};
|
var httpConfig = {};
|
||||||
if (canceler) {
|
if (canceler) {
|
||||||
httpConfig["timeout"] = canceler;
|
httpConfig["timeout"] = canceler;
|
||||||
@@ -549,6 +607,8 @@ function entityResource($q, $http, umbRequestHelper) {
|
|||||||
'Failed to retrieve entity data for query ' + query);
|
'Failed to retrieve entity data for query ' + query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
/**
|
/**
|
||||||
* @ngdoc service
|
* @ngdoc service
|
||||||
* @name umbraco.resources.mediaResource
|
* @name umbraco.resources.mediaResource
|
||||||
* @description Loads in data for media
|
* @description Loads in data for media
|
||||||
**/
|
**/
|
||||||
function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||||
|
|
||||||
/** internal method process the saving of data and post processing the result */
|
/** internal method process the saving of data and post processing the result */
|
||||||
function saveMediaItem(content, action, files) {
|
function saveMediaItem(content, action, files) {
|
||||||
return umbRequestHelper.postSaveContent({
|
return umbRequestHelper.postSaveContent({
|
||||||
restApiUrl: umbRequestHelper.getApiUrl(
|
restApiUrl: umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"PostSave"),
|
"PostSave"),
|
||||||
content: content,
|
content: content,
|
||||||
action: action,
|
action: action,
|
||||||
files: files,
|
files: files,
|
||||||
@@ -24,35 +24,35 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
|
|
||||||
getRecycleBin: function () {
|
getRecycleBin: function () {
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetRecycleBin")),
|
"GetRecycleBin")),
|
||||||
'Failed to retrieve data for media recycle bin');
|
'Failed to retrieve data for media recycle bin');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#sort
|
* @name umbraco.resources.mediaResource#sort
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Sorts all children below a given parent node id, based on a collection of node-ids
|
* Sorts all children below a given parent node id, based on a collection of node-ids
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* var ids = [123,34533,2334,23434];
|
* var ids = [123,34533,2334,23434];
|
||||||
* mediaResource.sort({ sortedIds: ids })
|
* mediaResource.sort({ sortedIds: ids })
|
||||||
* .then(function() {
|
* .then(function() {
|
||||||
* $scope.complete = true;
|
* $scope.complete = true;
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
* @param {Object} args arguments object
|
* @param {Object} args arguments object
|
||||||
* @param {Int} args.parentId the ID of the parent node
|
* @param {Int} args.parentId the ID of the parent node
|
||||||
* @param {Array} options.sortedIds array of node IDs as they should be sorted
|
* @param {Array} options.sortedIds array of node IDs as they should be sorted
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
sort: function (args) {
|
sort: function (args) {
|
||||||
if (!args) {
|
if (!args) {
|
||||||
throw "args cannot be null";
|
throw "args cannot be null";
|
||||||
@@ -65,37 +65,37 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostSort"),
|
$http.post(umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostSort"),
|
||||||
{
|
{
|
||||||
parentId: args.parentId,
|
parentId: args.parentId,
|
||||||
idSortOrder: args.sortedIds
|
idSortOrder: args.sortedIds
|
||||||
}),
|
}),
|
||||||
'Failed to sort media');
|
'Failed to sort media');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#move
|
* @name umbraco.resources.mediaResource#move
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Moves a node underneath a new parentId
|
* Moves a node underneath a new parentId
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.move({ parentId: 1244, id: 123 })
|
* mediaResource.move({ parentId: 1244, id: 123 })
|
||||||
* .then(function() {
|
* .then(function() {
|
||||||
* alert("node was moved");
|
* alert("node was moved");
|
||||||
* }, function(err){
|
* }, function(err){
|
||||||
* alert("node didnt move:" + err.data.Message);
|
* alert("node didnt move:" + err.data.Message);
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
* @param {Object} args arguments object
|
* @param {Object} args arguments object
|
||||||
* @param {Int} args.idd the ID of the node to move
|
* @param {Int} args.idd the ID of the node to move
|
||||||
* @param {Int} args.parentId the ID of the parent node to move to
|
* @param {Int} args.parentId the ID of the parent node to move to
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
move: function (args) {
|
move: function (args) {
|
||||||
if (!args) {
|
if (!args) {
|
||||||
throw "args cannot be null";
|
throw "args cannot be null";
|
||||||
@@ -108,121 +108,121 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostMove"),
|
$http.post(umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostMove"),
|
||||||
{
|
{
|
||||||
parentId: args.parentId,
|
parentId: args.parentId,
|
||||||
id: args.id
|
id: args.id
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
error: function(data){
|
error: function(data){
|
||||||
var errorMsg = 'Failed to move media';
|
var errorMsg = 'Failed to move media';
|
||||||
if (data.id !== undefined && data.parentId !== undefined) {
|
if (data.id !== undefined && data.parentId !== undefined) {
|
||||||
if (data.id === data.parentId) {
|
if (data.id === data.parentId) {
|
||||||
errorMsg = 'Media can\'t be moved into itself';
|
errorMsg = 'Media can\'t be moved into itself';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (data.notifications !== undefined) {
|
else if (data.notifications !== undefined) {
|
||||||
if (data.notifications.length > 0) {
|
if (data.notifications.length > 0) {
|
||||||
if (data.notifications[0].header.length > 0) {
|
if (data.notifications[0].header.length > 0) {
|
||||||
errorMsg = data.notifications[0].header;
|
errorMsg = data.notifications[0].header;
|
||||||
}
|
}
|
||||||
if (data.notifications[0].message.length > 0) {
|
if (data.notifications[0].message.length > 0) {
|
||||||
errorMsg = errorMsg + ": " + data.notifications[0].message;
|
errorMsg = errorMsg + ": " + data.notifications[0].message;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
errorMsg: errorMsg
|
errorMsg: errorMsg
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#getById
|
* @name umbraco.resources.mediaResource#getById
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Gets a media item with a given id
|
* Gets a media item with a given id
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.getById(1234)
|
* mediaResource.getById(1234)
|
||||||
* .then(function(media) {
|
* .then(function(media) {
|
||||||
* var myMedia = media;
|
* var myMedia = media;
|
||||||
* alert('its here!');
|
* alert('its here!');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {Int} id id of media item to return
|
* @param {Int} id id of media item to return
|
||||||
* @returns {Promise} resourcePromise object containing the media item.
|
* @returns {Promise} resourcePromise object containing the media item.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getById: function (id) {
|
getById: function (id) {
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetById",
|
"GetById",
|
||||||
[{ id: id }])),
|
[{ id: id }])),
|
||||||
'Failed to retrieve data for media id ' + id);
|
'Failed to retrieve data for media id ' + id);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#deleteById
|
* @name umbraco.resources.mediaResource#deleteById
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Deletes a media item with a given id
|
* Deletes a media item with a given id
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.deleteById(1234)
|
* mediaResource.deleteById(1234)
|
||||||
* .then(function() {
|
* .then(function() {
|
||||||
* alert('its gone!');
|
* alert('its gone!');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {Int} id id of media item to delete
|
* @param {Int} id id of media item to delete
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
deleteById: function (id) {
|
deleteById: function (id) {
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(
|
$http.post(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"DeleteById",
|
"DeleteById",
|
||||||
[{ id: id }])),
|
[{ id: id }])),
|
||||||
'Failed to delete item ' + id);
|
'Failed to delete item ' + id);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#getByIds
|
* @name umbraco.resources.mediaResource#getByIds
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Gets an array of media items, given a collection of ids
|
* Gets an array of media items, given a collection of ids
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.getByIds( [1234,2526,28262])
|
* mediaResource.getByIds( [1234,2526,28262])
|
||||||
* .then(function(mediaArray) {
|
* .then(function(mediaArray) {
|
||||||
* var myDoc = contentArray;
|
* var myDoc = contentArray;
|
||||||
* alert('they are here!');
|
* alert('they are here!');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {Array} ids ids of media items to return as an array
|
* @param {Array} ids ids of media items to return as an array
|
||||||
* @returns {Promise} resourcePromise object containing the media items array.
|
* @returns {Promise} resourcePromise object containing the media items array.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getByIds: function (ids) {
|
getByIds: function (ids) {
|
||||||
|
|
||||||
var idQuery = "";
|
var idQuery = "";
|
||||||
@@ -231,96 +231,96 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetByIds",
|
"GetByIds",
|
||||||
idQuery)),
|
idQuery)),
|
||||||
'Failed to retrieve data for media ids ' + ids);
|
'Failed to retrieve data for media ids ' + ids);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#getScaffold
|
* @name umbraco.resources.mediaResource#getScaffold
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Returns a scaffold of an empty media item, given the id of the media item to place it underneath and the media type alias.
|
* Returns a scaffold of an empty media item, given the id of the media item to place it underneath and the media type alias.
|
||||||
*
|
*
|
||||||
* - Parent Id must be provided so umbraco knows where to store the media
|
* - Parent Id must be provided so umbraco knows where to store the media
|
||||||
* - Media Type alias must be provided so umbraco knows which properties to put on the media scaffold
|
* - Media Type alias must be provided so umbraco knows which properties to put on the media scaffold
|
||||||
*
|
*
|
||||||
* The scaffold is used to build editors for media that has not yet been populated with data.
|
* The scaffold is used to build editors for media that has not yet been populated with data.
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.getScaffold(1234, 'folder')
|
* mediaResource.getScaffold(1234, 'folder')
|
||||||
* .then(function(scaffold) {
|
* .then(function(scaffold) {
|
||||||
* var myDoc = scaffold;
|
* var myDoc = scaffold;
|
||||||
* myDoc.name = "My new media item";
|
* myDoc.name = "My new media item";
|
||||||
*
|
*
|
||||||
* mediaResource.save(myDoc, true)
|
* mediaResource.save(myDoc, true)
|
||||||
* .then(function(media){
|
* .then(function(media){
|
||||||
* alert("Retrieved, updated and saved again");
|
* alert("Retrieved, updated and saved again");
|
||||||
* });
|
* });
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {Int} parentId id of media item to return
|
* @param {Int} parentId id of media item to return
|
||||||
* @param {String} alias mediatype alias to base the scaffold on
|
* @param {String} alias mediatype alias to base the scaffold on
|
||||||
* @returns {Promise} resourcePromise object containing the media scaffold.
|
* @returns {Promise} resourcePromise object containing the media scaffold.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getScaffold: function (parentId, alias) {
|
getScaffold: function (parentId, alias) {
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetEmpty",
|
"GetEmpty",
|
||||||
[{ contentTypeAlias: alias }, { parentId: parentId }])),
|
[{ contentTypeAlias: alias }, { parentId: parentId }])),
|
||||||
'Failed to retrieve data for empty media item type ' + alias);
|
'Failed to retrieve data for empty media item type ' + alias);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
rootMedia: function () {
|
rootMedia: function () {
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetRootMedia")),
|
"GetRootMedia")),
|
||||||
'Failed to retrieve data for root media');
|
'Failed to retrieve data for root media');
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#getChildren
|
* @name umbraco.resources.mediaResource#getChildren
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Gets children of a media item with a given id
|
* Gets children of a media item with a given id
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.getChildren(1234, {pageSize: 10, pageNumber: 2})
|
* mediaResource.getChildren(1234, {pageSize: 10, pageNumber: 2})
|
||||||
* .then(function(contentArray) {
|
* .then(function(contentArray) {
|
||||||
* var children = contentArray;
|
* var children = contentArray;
|
||||||
* alert('they are here!');
|
* alert('they are here!');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {Int} parentid id of content item to return children of
|
* @param {Int} parentid id of content item to return children of
|
||||||
* @param {Object} options optional options object
|
* @param {Object} options optional options object
|
||||||
* @param {Int} options.pageSize if paging data, number of nodes per page, default = 0
|
* @param {Int} options.pageSize if paging data, number of nodes per page, default = 0
|
||||||
* @param {Int} options.pageNumber if paging data, current page index, default = 0
|
* @param {Int} options.pageNumber if paging data, current page index, default = 0
|
||||||
* @param {String} options.filter if provided, query will only return those with names matching the filter
|
* @param {String} options.filter if provided, query will only return those with names matching the filter
|
||||||
* @param {String} options.orderDirection can be `Ascending` or `Descending` - Default: `Ascending`
|
* @param {String} options.orderDirection can be `Ascending` or `Descending` - Default: `Ascending`
|
||||||
* @param {String} options.orderBy property to order items by, default: `SortOrder`
|
* @param {String} options.orderBy property to order items by, default: `SortOrder`
|
||||||
* @returns {Promise} resourcePromise object containing an array of content items.
|
* @returns {Promise} resourcePromise object containing an array of content items.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getChildren: function (parentId, options) {
|
getChildren: function (parentId, options) {
|
||||||
|
|
||||||
var defaults = {
|
var defaults = {
|
||||||
@@ -361,110 +361,110 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetChildren",
|
"GetChildren",
|
||||||
[
|
[
|
||||||
{ id: parentId },
|
{ id: parentId },
|
||||||
{ pageNumber: options.pageNumber },
|
{ pageNumber: options.pageNumber },
|
||||||
{ pageSize: options.pageSize },
|
{ pageSize: options.pageSize },
|
||||||
{ orderBy: options.orderBy },
|
{ orderBy: options.orderBy },
|
||||||
{ orderDirection: options.orderDirection },
|
{ orderDirection: options.orderDirection },
|
||||||
{ orderBySystemField: toBool(options.orderBySystemField) },
|
{ orderBySystemField: toBool(options.orderBySystemField) },
|
||||||
{ filter: options.filter }
|
{ filter: options.filter }
|
||||||
])),
|
])),
|
||||||
'Failed to retrieve children for media item ' + parentId);
|
'Failed to retrieve children for media item ' + parentId);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#save
|
* @name umbraco.resources.mediaResource#save
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Saves changes made to a media item, if the media item is new, the isNew paramater must be passed to force creation
|
* Saves changes made to a media item, if the media item is new, the isNew paramater must be passed to force creation
|
||||||
* if the media item needs to have files attached, they must be provided as the files param and passed separately
|
* if the media item needs to have files attached, they must be provided as the files param and passed separately
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.getById(1234)
|
* mediaResource.getById(1234)
|
||||||
* .then(function(media) {
|
* .then(function(media) {
|
||||||
* media.name = "I want a new name!";
|
* media.name = "I want a new name!";
|
||||||
* mediaResource.save(media, false)
|
* mediaResource.save(media, false)
|
||||||
* .then(function(media){
|
* .then(function(media){
|
||||||
* alert("Retrieved, updated and saved again");
|
* alert("Retrieved, updated and saved again");
|
||||||
* });
|
* });
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {Object} media The media item object with changes applied
|
* @param {Object} media The media item object with changes applied
|
||||||
* @param {Bool} isNew set to true to create a new item or to update an existing
|
* @param {Bool} isNew set to true to create a new item or to update an existing
|
||||||
* @param {Array} files collection of files for the media item
|
* @param {Array} files collection of files for the media item
|
||||||
* @returns {Promise} resourcePromise object containing the saved media item.
|
* @returns {Promise} resourcePromise object containing the saved media item.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
save: function (media, isNew, files) {
|
save: function (media, isNew, files) {
|
||||||
return saveMediaItem(media, "save" + (isNew ? "New" : ""), files);
|
return saveMediaItem(media, "save" + (isNew ? "New" : ""), files);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#addFolder
|
* @name umbraco.resources.mediaResource#addFolder
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Shorthand for adding a media item of the type "Folder" under a given parent ID
|
* Shorthand for adding a media item of the type "Folder" under a given parent ID
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.addFolder("My gallery", 1234)
|
* mediaResource.addFolder("My gallery", 1234)
|
||||||
* .then(function(folder) {
|
* .then(function(folder) {
|
||||||
* alert('New folder');
|
* alert('New folder');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {string} name Name of the folder to create
|
* @param {string} name Name of the folder to create
|
||||||
* @param {int} parentId Id of the media item to create the folder underneath
|
* @param {int} parentId Id of the media item to create the folder underneath
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
addFolder: function (name, parentId) {
|
addFolder: function (name, parentId) {
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(umbRequestHelper
|
$http.post(umbRequestHelper
|
||||||
.getApiUrl("mediaApiBaseUrl", "PostAddFolder"),
|
.getApiUrl("mediaApiBaseUrl", "PostAddFolder"),
|
||||||
{
|
{
|
||||||
name: name,
|
name: name,
|
||||||
parentId: parentId
|
parentId: parentId
|
||||||
}),
|
}),
|
||||||
'Failed to add folder');
|
'Failed to add folder');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#getChildFolders
|
* @name umbraco.resources.mediaResource#getChildFolders
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Retrieves all media children with types used as folders.
|
* Retrieves all media children with types used as folders.
|
||||||
* Uses the convention of looking for media items with mediaTypes ending in
|
* Uses the convention of looking for media items with mediaTypes ending in
|
||||||
* *Folder so will match "Folder", "bannerFolder", "secureFolder" etc,
|
* *Folder so will match "Folder", "bannerFolder", "secureFolder" etc,
|
||||||
*
|
*
|
||||||
* NOTE: This will return a max of 500 folders, if more is required it needs to be paged
|
* NOTE: This will return a max of 500 folders, if more is required it needs to be paged
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.getChildFolders(1234)
|
* mediaResource.getChildFolders(1234)
|
||||||
* .then(function(data) {
|
* .then(function(data) {
|
||||||
* alert('folders');
|
* alert('folders');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {int} parentId Id of the media item to query for child folders
|
* @param {int} parentId Id of the media item to query for child folders
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getChildFolders: function (parentId) {
|
getChildFolders: function (parentId) {
|
||||||
if (!parentId) {
|
if (!parentId) {
|
||||||
parentId = -1;
|
parentId = -1;
|
||||||
@@ -472,67 +472,67 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
|
|
||||||
//NOTE: This will return a max of 500 folders, if more is required it needs to be paged
|
//NOTE: This will return a max of 500 folders, if more is required it needs to be paged
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"GetChildFolders",
|
"GetChildFolders",
|
||||||
{
|
{
|
||||||
id: parentId
|
id: parentId
|
||||||
})),
|
})),
|
||||||
'Failed to retrieve child folders for media item ' + parentId);
|
'Failed to retrieve child folders for media item ' + parentId);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#emptyRecycleBin
|
* @name umbraco.resources.mediaResource#emptyRecycleBin
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Empties the media recycle bin
|
* Empties the media recycle bin
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.emptyRecycleBin()
|
* mediaResource.emptyRecycleBin()
|
||||||
* .then(function() {
|
* .then(function() {
|
||||||
* alert('its empty!');
|
* alert('its empty!');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
emptyRecycleBin: function () {
|
emptyRecycleBin: function () {
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(
|
$http.post(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"EmptyRecycleBin")),
|
"EmptyRecycleBin")),
|
||||||
'Failed to empty the recycle bin');
|
'Failed to empty the recycle bin');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc method
|
* @ngdoc method
|
||||||
* @name umbraco.resources.mediaResource#search
|
* @name umbraco.resources.mediaResource#search
|
||||||
* @methodOf umbraco.resources.mediaResource
|
* @methodOf umbraco.resources.mediaResource
|
||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
* Paginated search for media items starting on the supplied nodeId
|
* Paginated search for media items starting on the supplied nodeId
|
||||||
*
|
*
|
||||||
* ##usage
|
* ##usage
|
||||||
* <pre>
|
* <pre>
|
||||||
* mediaResource.search("my search", 1, 100, -1)
|
* mediaResource.search("my search", 1, 100, -1)
|
||||||
* .then(function(searchResult) {
|
* .then(function(searchResult) {
|
||||||
* alert('it's here!');
|
* alert('it's here!');
|
||||||
* });
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param {string} query The search query
|
* @param {string} query The search query
|
||||||
* @param {int} pageNumber The page number
|
* @param {int} pageNumber The page number
|
||||||
* @param {int} pageSize The number of media items on a page
|
* @param {int} pageSize The number of media items on a page
|
||||||
* @param {int} searchFrom NodeId to search from (-1 for root)
|
* @param {int} searchFrom NodeId to search from (-1 for root)
|
||||||
* @returns {Promise} resourcePromise object.
|
* @returns {Promise} resourcePromise object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
search: function (query, pageNumber, pageSize, searchFrom) {
|
search: function (query, pageNumber, pageSize, searchFrom) {
|
||||||
|
|
||||||
var args = [
|
var args = [
|
||||||
@@ -543,12 +543,12 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
];
|
];
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"mediaApiBaseUrl",
|
"mediaApiBaseUrl",
|
||||||
"Search",
|
"Search",
|
||||||
args)),
|
args)),
|
||||||
'Failed to retrieve media items for search: ' + query);
|
'Failed to retrieve media items for search: ' + query);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ function relationResource($q, $http, umbRequestHelper) {
|
|||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"relationApiBaseUrl",
|
"relationApiBaseUrl",
|
||||||
"GetByChildId",
|
"GetByChildId",
|
||||||
[{ childId: id, relationTypeAlias: alias }])),
|
{ childId: id, relationTypeAlias: alias })),
|
||||||
"Failed to get relation by child ID " + id + " and type of " + alias);
|
"Failed to get relation by child ID " + id + " and type of " + alias);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* @name umbraco.resources.templateResource
|
* @name umbraco.resources.templateResource
|
||||||
* @description Loads in data for templates
|
* @description Loads in data for templates
|
||||||
**/
|
**/
|
||||||
function templateResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
function templateResource($q, $http, umbDataFormatter, umbRequestHelper, localizationService) {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
||||||
@@ -152,13 +152,16 @@ function templateResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
deleteById: function(id) {
|
deleteById: function(id) {
|
||||||
|
|
||||||
|
var promise = localizationService.localize("template_deleteByIdFailed", [id]);
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.post(
|
$http.post(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
"templateApiBaseUrl",
|
"templateApiBaseUrl",
|
||||||
"DeleteById",
|
"DeleteById",
|
||||||
[{ id: id }])),
|
[{ id: id }])),
|
||||||
"Failed to delete item " + id);
|
promise);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -44,21 +44,28 @@ angular.module('umbraco.security.interceptor')
|
|||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
//A 401 means that the user is not logged in
|
if (originalResponse.status === 401) {
|
||||||
if (originalResponse.status === 401 && !originalResponse.config.url.endsWith("umbraco/backoffice/UmbracoApi/Authentication/GetCurrentUser")) {
|
|
||||||
|
|
||||||
var userService = $injector.get('userService'); // see above
|
//A 401 means that the user is not logged in
|
||||||
|
|
||||||
//Associate the user name with the retry to ensure we retry for the right user
|
//avoid an infinite loop
|
||||||
promise = userService.getCurrentUser()
|
var umbRequestHelper = $injector.get('umbRequestHelper');
|
||||||
.then(function (user) {
|
var getCurrentUserPath = umbRequestHelper.getApiUrl("authenticationApiBaseUrl", "GetCurrentUser");
|
||||||
var userName = user ? user.name : null;
|
if (!originalResponse.config.url.endsWith(getCurrentUserPath)) {
|
||||||
//The request bounced because it was not authorized - add a new request to the retry queue
|
|
||||||
return queue.pushRetryFn('unauthorized-server', userName, function retryRequest() {
|
var userService = $injector.get('userService'); // see above
|
||||||
// We must use $injector to get the $http service to prevent circular dependency
|
|
||||||
return $injector.get('$http')(originalResponse.config);
|
//Associate the user name with the retry to ensure we retry for the right user
|
||||||
});
|
promise = userService.getCurrentUser()
|
||||||
});
|
.then(function (user) {
|
||||||
|
var userName = user ? user.name : null;
|
||||||
|
//The request bounced because it was not authorized - add a new request to the retry queue
|
||||||
|
return queue.pushRetryFn('unauthorized-server', userName, function retryRequest() {
|
||||||
|
// We must use $injector to get the $http service to prevent circular dependency
|
||||||
|
return $injector.get('$http')(originalResponse.config);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (originalResponse.status === 404) {
|
else if (originalResponse.status === 404) {
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user