diff --git a/.hgignore b/.hgignore
deleted file mode 100644
index 3899933d61..0000000000
--- a/.hgignore
+++ /dev/null
@@ -1,81 +0,0 @@
-syntax: regexp
-^src/packages/(?!repositories.config$)
-web.Template.[a-zA-Z0-9]*.Debug.config
-
-syntax: glob
-*.obj
-*.pdb
-*.user
-*.aps
-*.pch
-*.vspscc
-[Bb]in
-[Db]ebug*/
-obj/
-[Rr]elease*/
-_ReSharper*/
-_NCrunch_*/
-*.ncrunchsolution
-*.ncrunchsolution.user
-*.ncrunchproject
-*.crunchsolution.cache
-[Tt]est[Rr]esult*
-[Bb]uild[Ll]og.*
-*.[Pp]ublish.xml
-*.suo
-[sS]ource
-[sS]andbox
-umbraco.config
-*.vs10x
-App_Data\TEMP\*
-umbraco\presentation\umbraco\plugins\*
-umbraco\presentation\usercontrols\*
-umbraco\presentation\scripts\*
-umbraco\presentation\fonts\*
-umbraco\presentation\css\*
-
-src\Umbraco.Web.UI\[Cc]ss\*
-src\Umbraco.Web.UI\App_Code\*
-src\Umbraco.Web.UI\App_Data\*
-src\Umbraco.Tests\App_Data\*
-src\Umbraco.Web.UI\[Mm]edia\*
-src\Umbraco.Web.UI\[Mm]aster[Pp]ages\*
-src\Umbraco.Web.UI\[Mm]acro[Ss]cripts\*
-src\Umbraco.Web.UI\[Xx]slt\*
-src\Umbraco.Web.UI\[Ii]mages\*
-src\Umbraco.Web.UI\[Ss]cripts\*
-src\Umbraco.Web.UI\Web.*.config.transformed
-
-umbraco\presentation\umbraco\plugins\uComponents\uComponentsInstaller.ascx
-umbraco\presentation\packages\uComponents\MultiNodePicker\CustomTreeService.asmx
-_BuildOutput/*
-*.ncrunchsolution
-build/UmbracoCms.AllBinaries*zip
-build/UmbracoCms.WebPI*zip
-build/UmbracoCms*zip
-build/*.nupkg
-src/Umbraco.Tests/config/applications.config
-src/Umbraco.Tests/config/trees.config
-src/Umbraco.Web.UI/web.config
-*.orig
-src/Umbraco.Tests/config/404handlers.config
-src/Umbraco.Web.UI/Views/*.cshtml
-src/Umbraco.Web.UI/Views/*.vbhtml
-src/Umbraco.Tests/config/umbracoSettings.config
-src/Umbraco.Web.UI/App_Plugins/*
-src/Umbraco.Web.UI/Views/*
-src/packages/
-
-src\Umbraco.Web.UI\[W]eb.config
-*.transformed
-
-node_modules
-src/Umbraco.Web.UI/umbraco/lib/*
-src/Umbraco.Web.UI/umbraco/js/umbraco.*
-src/Umbraco.Web.UI/umbraco/js/routes.js
-src/Umbraco.Web.UI/umbraco/js/main.js
-src/Umbraco.Web.UI/umbraco/js/app.js
-src/Umbraco.Web.UI/umbraco/Views/**/*.js
-src/Umbraco.Web.UI/umbraco/Views/**/*.css
-src/Umbraco.Web.UI/umbraco/Views/**/*.html
-src/Umbraco.Web.UI/umbraco/assets/*
diff --git a/.hgtags b/.hgtags
deleted file mode 100644
index 5f9469eec6..0000000000
--- a/.hgtags
+++ /dev/null
@@ -1,38 +0,0 @@
-d0aba247db91d1b70c39c6397b965ca370a67497 Sprint-Juno-A
-0b8f67be2ca8faf008151d87f232c698de69e735 Release-4.5.0
-5960c073250926d202861a09472f5f334da6e283 Sprint-Juno-B
-f15d4ff81a8368e9d42788f7e0ae726f7a70a3b1 Release-4.0.3
-283065df4d3c27245267709dd2644a479c4f62a5 Release-4.0.4.2
-ffc34b23e1a03785e4098afa4290d8c03cf10115 Release-4.5.2
-d03fcffb8834a9583a56813bb44b6abbd9f042cc Release-4.6.0
-1809f7b2593270c192cd47bdcfdb392100686f79 4.7.2
-488779dec0ceb1d2874bcef906241b919325c904 4.8.0-beta
-096f20bb0575d6199f20fcb3147b63554e765a74 Release-4.8.0
-8f8a203857886b373148af29edd57460a42940be Release-4.8.1
-de73e687ddf6086ed52b6554676c1632865d07f2 Release-4.9.0
-8d7d8609e2e4b971da99cd97f72132ce85ce3333 Release-4.9.1
-f6da531fbb4c251ff61d314e2a7effb13c71e74a Release-4.10.0
-20e4dff821d8ac2527a5353618fa1a23ea1d8b34 Release-4.11.0
-7f827760cb49d749616859f528d19dde64807947 Release-4.11.1
-7f827760cb49d749616859f528d19dde64807947 Release-4.11.1
-6eb5f2fb5a88aa29ea544499df9160a1b31b5638 Release-4.11.1
-73711b806a4044dbf0d7d7c095ddfdda23b09932 4.11.2
-73711b806a4044dbf0d7d7c095ddfdda23b09932 4.11.2
-0000000000000000000000000000000000000000 4.11.2
-73711b806a4044dbf0d7d7c095ddfdda23b09932 Release-4.11.2
-77db220b89e166b3c0736ed321ecfd6416cddbcd Release-4.11.2.1
-54cde33b809dcb3a1f7e7ae0d5375f6dd0d89c8d Release-4.11.2.2
-ff3bb24ea0c915878396a6ae27f1ff164e8ac150 Release-6.0.0-beta
-56015ac26f5ab60e3c61b1d09075297b660afa07 Release-6.0.0-RC
-1719fbd857f28b376639ac2aa0abada0ef2e7560 Release-6.0.0
-e02f5aebb87e3f07d27376647756caa9762931d8 Release-4.11.4
-14338b0ab1738fbd8987677ecdb9a73d79fc229d release-4.11.6
-ce47176bc6b9298741783e20f1fe2672c811f744 release-4.11.7
-b247b35d821144849f551e02da8ba719f91d5fb0 Release-6.0.2
-aed55cba29009ad3db48880a7cfb66407ce9805f release-6.0.3
-87cf618a39e38ec58df916d10e6a924de62ae37d release-6.1.0-beta
-0dee9964687ea51ea797984cf7cce3655d6a6558 release-6.0.4
-7670bb47a671a9ecc15118589d8048907ea76241 release-6.1.0-beta2
-953c466faf8fcfd6e85e06ccd04c2346bbdb88a8 release-6.0.6
-8309c3bd6db5885c9ef37e71db0672b8947fcb59 release-6.1.0
-7271ae03cb53f44d3fac909e6b254036f7f1ebc9 release-6.1.1
diff --git a/build/Build.bat b/build/Build.bat
index 39cfe80ddf..36396bcc1f 100644
--- a/build/Build.bat
+++ b/build/Build.bat
@@ -5,6 +5,8 @@ SET version=%release%
IF [%comment%] EQU [] (SET version=%release%) ELSE (SET version=%release%-%comment%)
+ReplaceIISExpressPortNumber.exe ..\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj %release%
+
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "Build.proj" /p:BUILD_RELEASE=%release% /p:BUILD_COMMENT=%comment%
echo This file is only here so that the containing folder will be included in the NuGet package, it is safe to delete. > .\_BuildOutput\WebApp\App_Code\dummy.txt
diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec
index dbb59b1d6c..ea5c9f86d0 100644
--- a/build/NuSpecs/UmbracoCms.Core.nuspec
+++ b/build/NuSpecs/UmbracoCms.Core.nuspec
@@ -15,7 +15,7 @@
en-US
umbraco
-
+
diff --git a/build/ReplaceIISExpressPortNumber.exe b/build/ReplaceIISExpressPortNumber.exe
new file mode 100644
index 0000000000..04334ebffe
Binary files /dev/null and b/build/ReplaceIISExpressPortNumber.exe differ
diff --git a/src/Umbraco.Core/Models/ContentTypeBase.cs b/src/Umbraco.Core/Models/ContentTypeBase.cs
index d2fd56f0b6..aba4ef66a9 100644
--- a/src/Umbraco.Core/Models/ContentTypeBase.cs
+++ b/src/Umbraco.Core/Models/ContentTypeBase.cs
@@ -477,6 +477,15 @@ namespace Umbraco.Core.Models
}
}
+ ///
+ /// Removes a PropertyGroup from the current ContentType
+ ///
+ /// Name of the to remove
+ public void RemovePropertyGroup(string propertyGroupName)
+ {
+ PropertyGroups.RemoveItem(propertyGroupName);
+ }
+
///
/// Sets the ParentId from the lazy integer id
///
diff --git a/src/Umbraco.Core/Models/IContentTypeBase.cs b/src/Umbraco.Core/Models/IContentTypeBase.cs
index b0a671eff8..89fca20b8e 100644
--- a/src/Umbraco.Core/Models/IContentTypeBase.cs
+++ b/src/Umbraco.Core/Models/IContentTypeBase.cs
@@ -64,6 +64,12 @@ namespace Umbraco.Core.Models
/// Alias of the to remove
void RemovePropertyType(string propertyTypeAlias);
+ ///
+ /// Removes a PropertyGroup from the current ContentType
+ ///
+ /// Name of the to remove
+ void RemovePropertyGroup(string propertyGroupName);
+
///
/// Sets the ParentId from the lazy integer id
///
diff --git a/src/Umbraco.Core/Models/PropertyGroupCollection.cs b/src/Umbraco.Core/Models/PropertyGroupCollection.cs
index ee73c3c7ea..facb5b9e5c 100644
--- a/src/Umbraco.Core/Models/PropertyGroupCollection.cs
+++ b/src/Umbraco.Core/Models/PropertyGroupCollection.cs
@@ -97,6 +97,14 @@ namespace Umbraco.Core.Models
return this.Any(x => x.Name == groupName);
}
+ public void RemoveItem(string propertyGroupName)
+ {
+ var key = IndexOfKey(propertyGroupName);
+ //Only removes an item if the key was found
+ if (key != -1)
+ RemoveItem(key);
+ }
+
public int IndexOfKey(string key)
{
for (var i = 0; i < this.Count; i++)
diff --git a/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs b/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs
index 62fb7cc18e..de2c109af4 100644
--- a/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs
+++ b/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs
@@ -1,4 +1,5 @@
-using System.Linq;
+using System.IO;
+using System.Linq;
using System.Text.RegularExpressions;
using NUnit.Framework;
using Umbraco.Core.Models;
@@ -57,11 +58,35 @@ namespace Umbraco.Tests.CodeFirst
#region Test setup
public override void Initialize()
{
+ var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
+
+ var configPath = Path.Combine(currDir.Parent.Parent.FullName, "config");
+ if (Directory.Exists(configPath) == false)
+ Directory.CreateDirectory(configPath);
+
+ var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ if (System.IO.File.Exists(umbracoSettingsFile) == false)
+ System.IO.File.Copy(
+ currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
+ .First()
+ .GetDirectories("config").First()
+ .GetFiles("umbracoSettings.Release.config").First().FullName,
+ Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
+ true);
+
+ Core.Configuration.UmbracoSettings.SettingsFilePath = Core.IO.IOHelper.MapPath(Core.IO.SystemDirectories.Config + Path.DirectorySeparatorChar, false);
+
base.Initialize();
}
public override void TearDown()
{
+ var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
+
+ var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ if (System.IO.File.Exists(umbracoSettingsFile))
+ System.IO.File.Delete(umbracoSettingsFile);
+
base.TearDown();
}
diff --git a/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs b/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs
index 20a3ac0c86..ba88bf447b 100644
--- a/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs
+++ b/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text;
using NUnit.Framework;
@@ -17,8 +18,32 @@ namespace Umbraco.Tests.CoreStrings
public void Setup()
{
_helper = new LegacyShortStringHelper();
+ var currDir = new DirectoryInfo(TestHelpers.TestHelper.CurrentAssemblyDirectory);
+ Directory.CreateDirectory(Path.Combine(currDir.Parent.Parent.FullName, "config"));
+ File.Copy(
+ currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
+ .First()
+ .GetDirectories("config").First()
+ .GetFiles("umbracoSettings.Release.config").First().FullName,
+ Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
+ true);
+
+ Core.Configuration.UmbracoSettings.SettingsFilePath = Core.IO.IOHelper.MapPath(Core.IO.SystemDirectories.Config + Path.DirectorySeparatorChar, false);
}
+ [TearDown]
+ public void TearDown()
+ {
+ //TODO: Deleting the umbracoSettings.config file makes a lot of tests fail
+
+ //var currDir = new DirectoryInfo(TestHelpers.TestHelper.CurrentAssemblyDirectory);
+
+ //var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ //if (File.Exists(umbracoSettingsFile))
+ // File.Delete(umbracoSettingsFile);
+ }
+
+
#region Cases
[TestCase("foo", "foo")]
[TestCase(" foo ", "Foo")]
diff --git a/src/Umbraco.Tests/LibraryTests.cs b/src/Umbraco.Tests/LibraryTests.cs
index 77fe2afe96..fa365e8b0b 100644
--- a/src/Umbraco.Tests/LibraryTests.cs
+++ b/src/Umbraco.Tests/LibraryTests.cs
@@ -27,19 +27,34 @@ namespace Umbraco.Tests
UmbracoContext.Current = routingContext.UmbracoContext;
var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
- File.Copy(
- currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
- .First()
- .GetDirectories("config").First()
- .GetFiles("umbracoSettings.Release.config").First().FullName,
- Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
- true);
+
+ var configPath = Path.Combine(currDir.Parent.Parent.FullName, "config");
+ if (Directory.Exists(configPath) == false)
+ Directory.CreateDirectory(configPath);
+
+ var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ if (File.Exists(umbracoSettingsFile) == false)
+ File.Copy(
+ currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
+ .First()
+ .GetDirectories("config").First()
+ .GetFiles("umbracoSettings.Release.config").First().FullName,
+ Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
+ true);
Core.Configuration.UmbracoSettings.SettingsFilePath = Core.IO.IOHelper.MapPath(Core.IO.SystemDirectories.Config + Path.DirectorySeparatorChar, false);
}
public override void TearDown()
{
+ //TODO: Deleting the umbracoSettings.config file makes a lot of tests fail
+
+ //var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
+
+ //var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ //if (File.Exists(umbracoSettingsFile))
+ // File.Delete(umbracoSettingsFile);
+
base.TearDown();
UmbracoContext.Current = null;
}
diff --git a/src/Umbraco.Tests/PublishedCache/PublishedContentCacheTests.cs b/src/Umbraco.Tests/PublishedCache/PublishedContentCacheTests.cs
index 78a28145da..d1abe13d54 100644
--- a/src/Umbraco.Tests/PublishedCache/PublishedContentCacheTests.cs
+++ b/src/Umbraco.Tests/PublishedCache/PublishedContentCacheTests.cs
@@ -4,6 +4,7 @@ using System.Xml;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Configuration;
+using Umbraco.Tests.PublishedContent;
using Umbraco.Tests.TestHelpers;
using Umbraco.Web;
using Umbraco.Web.PublishedCache;
@@ -77,6 +78,7 @@ namespace Umbraco.Tests.PublishedCache
//ensure the StateHelper is using our custom context
StateHelper.HttpContext = _httpContextFactory.HttpContext;
+ UmbracoSettings.UseLegacyXmlSchema = false;
var cache = new PublishedContentCache
{
GetXmlDelegate = (context, preview) =>
diff --git a/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs b/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs
index 011ed05d0a..a8db72ad5e 100644
--- a/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs
@@ -30,13 +30,20 @@ namespace Umbraco.Tests.PublishedContent
base.Initialize();
//copy the umbraco settings file over
var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
- File.Copy(
- currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
- .First()
- .GetDirectories("config").First()
- .GetFiles("umbracoSettings.Release.config").First().FullName,
- Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
- true);
+
+ var configPath = Path.Combine(currDir.Parent.Parent.FullName, "config");
+ if (Directory.Exists(configPath) == false)
+ Directory.CreateDirectory(configPath);
+
+ var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ if (File.Exists(umbracoSettingsFile) == false)
+ File.Copy(
+ currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
+ .First()
+ .GetDirectories("config").First()
+ .GetFiles("umbracoSettings.Release.config").First().FullName,
+ Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
+ true);
UmbracoSettings.SettingsFilePath = IOHelper.MapPath(SystemDirectories.Config + Path.DirectorySeparatorChar, false);
@@ -76,6 +83,14 @@ namespace Umbraco.Tests.PublishedContent
public override void TearDown()
{
+ //TODO: Deleting the umbracoSettings.config file makes a lot of tests fail
+
+ //var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
+
+ //var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ //if (File.Exists(umbracoSettingsFile))
+ // File.Delete(umbracoSettingsFile);
+
base.TearDown();
}
diff --git a/src/Umbraco.Tests/PublishedContent/DynamicPublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/DynamicPublishedContentTests.cs
index fdf097472d..0bf8784ab0 100644
--- a/src/Umbraco.Tests/PublishedContent/DynamicPublishedContentTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/DynamicPublishedContentTests.cs
@@ -1,3 +1,4 @@
+using System.IO;
using System.Linq;
using NUnit.Framework;
using Umbraco.Core;
@@ -6,6 +7,7 @@ using Umbraco.Web;
using Umbraco.Web.Models;
using Umbraco.Web.PublishedCache;
using Umbraco.Web.PublishedCache.XmlPublishedCache;
+using File = Umbraco.Core.Models.File;
namespace Umbraco.Tests.PublishedContent
{
@@ -13,9 +15,26 @@ namespace Umbraco.Tests.PublishedContent
public class DynamicPublishedContentTests : DynamicDocumentTestsBase
{
public override void Initialize()
- {
- base.Initialize();
+ {
+ var currDir = new DirectoryInfo(TestHelpers.TestHelper.CurrentAssemblyDirectory);
+ var configPath = Path.Combine(currDir.Parent.Parent.FullName, "config");
+ if (Directory.Exists(configPath) == false)
+ Directory.CreateDirectory(configPath);
+
+ var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ if (System.IO.File.Exists(umbracoSettingsFile) == false)
+ System.IO.File.Copy(
+ currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
+ .First()
+ .GetDirectories("config").First()
+ .GetFiles("umbracoSettings.Release.config").First().FullName,
+ Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
+ true);
+
+ Core.Configuration.UmbracoSettings.SettingsFilePath = Core.IO.IOHelper.MapPath(Core.IO.SystemDirectories.Config + Path.DirectorySeparatorChar, false);
+
+ base.Initialize();
}
public override void TearDown()
diff --git a/src/Umbraco.Tests/Routing/NiceUrlProviderTests.cs b/src/Umbraco.Tests/Routing/NiceUrlProviderTests.cs
index a64de740af..8d58c386b2 100644
--- a/src/Umbraco.Tests/Routing/NiceUrlProviderTests.cs
+++ b/src/Umbraco.Tests/Routing/NiceUrlProviderTests.cs
@@ -18,17 +18,36 @@ namespace Umbraco.Tests.Routing
base.Initialize();
var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
- File.Copy(
- currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
- .First()
- .GetDirectories("config").First()
- .GetFiles("umbracoSettings.Release.config").First().FullName,
- Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
- true);
+
+ var configPath = Path.Combine(currDir.Parent.Parent.FullName, "config");
+ if (Directory.Exists(configPath) == false)
+ Directory.CreateDirectory(configPath);
+
+ var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ if (File.Exists(umbracoSettingsFile) == false)
+ File.Copy(
+ currDir.Parent.Parent.Parent.GetDirectories("Umbraco.Web.UI")
+ .First()
+ .GetDirectories("config").First()
+ .GetFiles("umbracoSettings.Release.config").First().FullName,
+ Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
+ true);
SettingsForTests.SettingsFilePath = Core.IO.IOHelper.MapPath(Core.IO.SystemDirectories.Config + Path.DirectorySeparatorChar, false);
}
+
+ public void TearDown()
+ {
+ //TODO: Deleting the umbracoSettings.config file makes a lot of tests fail
+
+ //var currDir = new DirectoryInfo(TestHelper.CurrentAssemblyDirectory);
+
+ //var umbracoSettingsFile = Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config");
+ //if (File.Exists(umbracoSettingsFile))
+ // File.Delete(umbracoSettingsFile);
+ }
+
protected override void FreezeResolution()
{
SiteDomainHelperResolver.Current = new SiteDomainHelperResolver(new SiteDomainHelper());
diff --git a/src/Umbraco.Tests/TypeFinderTests.cs b/src/Umbraco.Tests/TypeFinderTests.cs
index c77620c11e..df3797b4a4 100644
--- a/src/Umbraco.Tests/TypeFinderTests.cs
+++ b/src/Umbraco.Tests/TypeFinderTests.cs
@@ -447,7 +447,9 @@ namespace Umbraco.Tests
"HtmlAgilityPack.",
"TidyNet.",
"ICSharpCode.",
- "CookComputing."
+ "CookComputing.",
+ /* Mono */
+ "MonoDevelop.NUnit"
};
public static IEnumerable FindClassesOfTypeWithAttribute()
diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
index 247949eed0..6ec0aa4b4f 100644
--- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
+++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
@@ -2582,9 +2582,9 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.0\x86\*.* "$(TargetDir)x86\"
True
True
- 61637
+ 6120
/
- http://localhost:61638
+ http://localhost:6120/
False
False
diff --git a/src/Umbraco.Web.UI/install/steps/defaultUser.ascx b/src/Umbraco.Web.UI/install/steps/defaultUser.ascx
index a81a64fc13..e9db821e9c 100644
--- a/src/Umbraco.Web.UI/install/steps/defaultUser.ascx
+++ b/src/Umbraco.Web.UI/install/steps/defaultUser.ascx
@@ -33,7 +33,7 @@
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/umbraco/config/lang/da.xml
index e3aa533783..d800f72a6b 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/da.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/da.xml
@@ -432,13 +432,13 @@ Dette er en automatisk mail for at fortælle at handlingen '%1%'
er blevet udført på siden '%2%'
af brugeren '%3%'
-Gå til http://%4%/umbraco/default.aspx?section=content&id=%5% for at redigere.
+Gå til http://%4%/default.aspx?section=content&id=%5% for at redigere.
Ha' en dejlig dag!
Mange hilsner fra umbraco robotten
]]>
- Hej %0%
Dette er en automatisk mail for at informere dig om at opgaven '%1%' er blevet udførtpå siden '%2%' af brugeren '%3%'
Opdateringssammendrag:
Hav en fortsat god dag!
De bedste hilsner fra umbraco robotten
]]>
+ Hej %0% Dette er en automatisk mail for at informere dig om at opgaven '%1%' er blevet udførtpå siden '%2%' af brugeren '%3%'
Opdateringssammendrag:
Hav en fortsat god dag!
De bedste hilsner fra umbraco robotten
]]>
[%0%] Notificering om %1% udført på %2%
Notificeringer
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/de.xml b/src/Umbraco.Web.UI/umbraco/config/lang/de.xml
index 707648950f..c721c7e227 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/de.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/de.xml
@@ -463,7 +463,7 @@ Hallo %0%,
die Aufgabe '%1%' (von Benutzer '%3%') an der Seite '%2%' wurde ausgeführt.
-Zum Bearbeiten verwenden Sie bitte diesen Link: http://%4%/umbraco/actions/editContent.aspx?id=%5%
+Zum Bearbeiten verwenden Sie bitte diesen Link: http://%4%/actions/editContent.aspx?id=%5%
Einen schönen Tag wünscht
Ihr freundlicher Umbraco-Robot
@@ -474,9 +474,9 @@ Ihr freundlicher Umbraco-Robot
die Aufgabe '%1%' (von Benutzer '%3%') an der Seite '%2%' wurde ausgeführt.
@@ -487,9 +487,9 @@ Ihr freundlicher Umbraco-Robot
Einen schönen Tag wünscht
Ihr freundlicher Umbraco-Robot
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml
index b24a83de35..e895731f4b 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml
@@ -50,7 +50,7 @@
One-level paths in domains are supported, eg. "example.com/en". However, they
- they should be avoided. Better use the culture setting above.]]>
+ should be avoided. Better use the culture setting above.]]>
Domain '%0%' has been updated
Edit Current Domains
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml b/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml
index 58396680cd..0e646278f8 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml
@@ -534,7 +534,7 @@ Pour gerer votre site, accéder simplement au back office et commencez à contri
Ceci est un email automatique pour vous informer que la tâche '%1%' a été activée sur la page '%2%' par l'utilisateur '%3%'
- Allez à http://%4%/umbraco/actions/editContent.aspx?id=%5% pour éditer.
+ Allez à http://%4%/actions/editContent.aspx?id=%5% pour éditer.
Bonne journée!
@@ -550,9 +550,9 @@ Pour gerer votre site, accéder simplement au back office et commencez à contri
@@ -564,9 +564,9 @@ Pour gerer votre site, accéder simplement au back office et commencez à contri
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
index 729883cf4e..7e8fbd8e3a 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
@@ -452,9 +452,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
@@ -466,9 +466,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/no.xml b/src/Umbraco.Web.UI/umbraco/config/lang/no.xml
index 8dcc4dcdb7..ce5d23a286 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/no.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/no.xml
@@ -433,7 +433,7 @@ Dette er en automatisk mail for å informere om at handlingen '%1%'
er utført på siden '%2%'
av brukeren '%3%'
-Gå til http://%4%/umbraco/default.aspx?section=content&id=%5% for å redigere.
+Gå til http://%4%/default.aspx?section=content&id=%5% for å redigere.
Ha en fin dag!
@@ -447,9 +447,9 @@ Vennlig hilsen umbraco roboten
@@ -461,9 +461,9 @@ Vennlig hilsen umbraco roboten
diff --git a/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/EditRelationType.aspx b/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/EditRelationType.aspx
index ea6de5b968..2b8e9e16b0 100644
--- a/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/EditRelationType.aspx
+++ b/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/EditRelationType.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.EditRelationType" MasterPageFile="/umbraco/masterpages/umbracoPage.Master" %>
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.EditRelationType" MasterPageFile="../../masterpages/umbracoPage.Master" %>
<%@ Register TagPrefix="umb" Namespace="umbraco.uicontrols" Assembly="controls" %>
diff --git a/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/NewRelationType.aspx b/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/NewRelationType.aspx
index fd16f91b03..d2c72fef2a 100644
--- a/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/NewRelationType.aspx
+++ b/src/Umbraco.Web.UI/umbraco/developer/RelationTypes/NewRelationType.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.NewRelationType" MasterPageFile="/umbraco/masterpages/umbracoPage.Master"%>
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.NewRelationType" MasterPageFile="../../masterpages/umbracoPage.Master"%>
<%@ Register TagPrefix="umb" Namespace="umbraco.uicontrols" Assembly="controls" %>
diff --git a/src/Umbraco.Web.UI/umbraco/scripting/templates/cshtml/ListChildPagesOrderedByProperty.cshtml b/src/Umbraco.Web.UI/umbraco/scripting/templates/cshtml/ListChildPagesOrderedByProperty.cshtml
index 2f5ebb543b..8383d9077e 100644
--- a/src/Umbraco.Web.UI/umbraco/scripting/templates/cshtml/ListChildPagesOrderedByProperty.cshtml
+++ b/src/Umbraco.Web.UI/umbraco/scripting/templates/cshtml/ListChildPagesOrderedByProperty.cshtml
@@ -10,7 +10,7 @@
@* Get the property alias we want to filter on from the macro parameter *@
var propertyAlias = Parameter.propertyAlias;
- var selection = Model.Children.Where("Visible").OrderBy(propertyAlias)
+ var selection = Model.Children.Where("Visible").OrderBy(propertyAlias);
}
diff --git a/src/Umbraco.Web.UI/umbraco/settings/stylesheet/property/EditStyleSheetProperty.aspx b/src/Umbraco.Web.UI/umbraco/settings/stylesheet/property/EditStyleSheetProperty.aspx
index c554ab88b9..1d0166285d 100644
--- a/src/Umbraco.Web.UI/umbraco/settings/stylesheet/property/EditStyleSheetProperty.aspx
+++ b/src/Umbraco.Web.UI/umbraco/settings/stylesheet/property/EditStyleSheetProperty.aspx
@@ -10,25 +10,25 @@
|
- <%=umbraco.ui.Text("name", UmbracoUser)%>:
+ <%=umbraco.ui.Text("name", base.getUser())%>:
|
- <%=umbraco.ui.Text("stylesheet", "nameHelp", UmbracoUser)%>
+ <%=umbraco.ui.Text("stylesheet", "nameHelp", base.getUser())%>
|
|
- <%=umbraco.ui.Text("alias", UmbracoUser)%>:
+ <%=umbraco.ui.Text("alias", base.getUser())%>:
|
- <%=umbraco.ui.Text("stylesheet", "aliasHelp", UmbracoUser)%>
+ <%=umbraco.ui.Text("stylesheet", "aliasHelp", base.getUser())%>
|
|
- <%=umbraco.ui.Text("styles", UmbracoUser)%>:
+ <%=umbraco.ui.Text("styles", base.getUser())%>:
|
@@ -38,7 +38,7 @@
|
|
- <%=umbraco.ui.Text("preview", UmbracoUser)%>:
+ <%=umbraco.ui.Text("preview", base.getUser())%>:
|
diff --git a/src/Umbraco.Web.UI/web.Template.config b/src/Umbraco.Web.UI/web.Template.config
index 24ccf4b587..ede0ce13bd 100644
--- a/src/Umbraco.Web.UI/web.Template.config
+++ b/src/Umbraco.Web.UI/web.Template.config
@@ -175,7 +175,7 @@
-
+
diff --git a/src/Umbraco.Web/Mvc/DefaultRenderMvcControllerResolver.cs b/src/Umbraco.Web/Mvc/DefaultRenderMvcControllerResolver.cs
index 7db655f5a8..715fc674a7 100644
--- a/src/Umbraco.Web/Mvc/DefaultRenderMvcControllerResolver.cs
+++ b/src/Umbraco.Web/Mvc/DefaultRenderMvcControllerResolver.cs
@@ -36,14 +36,14 @@ namespace Umbraco.Web.Mvc
///
/// Returns an instance of the default controller instance.
///
- public RenderMvcController GetControllerInstance()
+ public IRenderMvcController GetControllerInstance()
{
//try the dependency resolver, then the activator
var instance = DependencyResolver.Current.GetService(Value) ?? Activator.CreateInstance(Value);
- var result = instance as RenderMvcController;
+ var result = instance as IRenderMvcController;
if (result == null)
{
- throw new InvalidOperationException("Could not create an instance of " + Value + " for the default RenderMvcController");
+ throw new InvalidOperationException("Could not create an instance of " + Value + " for the default " + typeof(IRenderMvcController).Name);
}
return result;
}
@@ -64,9 +64,9 @@ namespace Umbraco.Web.Mvc
///
private void ValidateType(Type type)
{
- if (TypeHelper.IsTypeAssignableFrom (type) == false)
+ if (TypeHelper.IsTypeAssignableFrom(type) == false)
{
- throw new InvalidOperationException("The Type specified (" + type + ") is not of type " + typeof(RenderMvcController));
+ throw new InvalidOperationException("The Type specified (" + type + ") is not of type " + typeof(IRenderMvcController));
}
}
diff --git a/src/Umbraco.Web/Mvc/IRenderMvcController.cs b/src/Umbraco.Web/Mvc/IRenderMvcController.cs
new file mode 100644
index 0000000000..de4dc1045a
--- /dev/null
+++ b/src/Umbraco.Web/Mvc/IRenderMvcController.cs
@@ -0,0 +1,18 @@
+using System.Web.Mvc;
+using Umbraco.Web.Models;
+
+namespace Umbraco.Web.Mvc
+{
+ ///
+ /// The interface that must be implemented for a controller to be designated to execute for route hijacking
+ ///
+ public interface IRenderMvcController : IController
+ {
+ ///
+ /// The default action to render the front-end view
+ ///
+ ///
+ ///
+ ActionResult Index(RenderModel model);
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Mvc/RenderActionInvoker.cs b/src/Umbraco.Web/Mvc/RenderActionInvoker.cs
index 014b0c1e48..4fa9702a61 100644
--- a/src/Umbraco.Web/Mvc/RenderActionInvoker.cs
+++ b/src/Umbraco.Web/Mvc/RenderActionInvoker.cs
@@ -22,8 +22,8 @@ namespace Umbraco.Web.Mvc
//now we need to check if it exists, if not we need to return the Index by default
if (ad == null)
{
- //check if the controller is an instance of RenderMvcController
- if (controllerContext.Controller is RenderMvcController)
+ //check if the controller is an instance of IRenderMvcController
+ if (controllerContext.Controller is IRenderMvcController)
{
return new ReflectedActionDescriptor(controllerContext.Controller.GetType().GetMethod("Index"), "Index", controllerDescriptor);
}
diff --git a/src/Umbraco.Web/Mvc/RenderControllerFactory.cs b/src/Umbraco.Web/Mvc/RenderControllerFactory.cs
index 9482815a03..ccc80782a5 100644
--- a/src/Umbraco.Web/Mvc/RenderControllerFactory.cs
+++ b/src/Umbraco.Web/Mvc/RenderControllerFactory.cs
@@ -1,3 +1,4 @@
+using System.Web.Mvc;
using System.Web.Routing;
namespace Umbraco.Web.Mvc
@@ -22,5 +23,27 @@ namespace Umbraco.Web.Mvc
return dataToken == null || string.IsNullOrWhiteSpace(dataToken.ToString());
}
+ ///
+ /// Creates the controller
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// We always set the correct ActionInvoker on our custom created controller, this is very important for route hijacking!
+ ///
+ public override IController CreateController(RequestContext requestContext, string controllerName)
+ {
+ var instance = base.CreateController(requestContext, controllerName);
+ var controllerInstance = instance as Controller;
+ if (controllerInstance != null)
+ {
+ //set the action invoker!
+ controllerInstance.ActionInvoker = new RenderActionInvoker();
+ }
+
+ return instance;
+ }
+
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Mvc/RenderMvcController.cs b/src/Umbraco.Web/Mvc/RenderMvcController.cs
index 4615937e6b..b11ee8efc3 100644
--- a/src/Umbraco.Web/Mvc/RenderMvcController.cs
+++ b/src/Umbraco.Web/Mvc/RenderMvcController.cs
@@ -15,7 +15,7 @@ namespace Umbraco.Web.Mvc
///
/// A controller to render front-end requests
///
- public class RenderMvcController : UmbracoController
+ public class RenderMvcController : UmbracoController, IRenderMvcController
{
public RenderMvcController()
diff --git a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs
index b7342119c9..6756847980 100644
--- a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs
+++ b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs
@@ -271,8 +271,9 @@ namespace Umbraco.Web.Mvc
//check if that controller exists
if (controllerType != null)
{
- //ensure the controller is of type 'RenderMvcController'
- if (TypeHelper.IsTypeAssignableFrom(controllerType))
+ //ensure the controller is of type 'IRenderMvcController' and ControllerBase
+ if (TypeHelper.IsTypeAssignableFrom(controllerType)
+ && TypeHelper.IsTypeAssignableFrom(controllerType))
{
//set the controller and name to the custom one
def.ControllerType = controllerType;
@@ -285,10 +286,11 @@ namespace Umbraco.Web.Mvc
else
{
LogHelper.Warn(
- "The current Document Type {0} matches a locally declared controller of type {1}. Custom Controllers for Umbraco routing must inherit from '{2}'.",
+ "The current Document Type {0} matches a locally declared controller of type {1}. Custom Controllers for Umbraco routing must implement '{2}' and inherit from '{3}'.",
() => publishedContentRequest.PublishedContent.DocumentTypeAlias,
() => controllerType.FullName,
- () => typeof (RenderMvcController).FullName);
+ () => typeof(IRenderMvcController).FullName,
+ () => typeof(ControllerBase).FullName);
//exit as we cannnot route to the custom controller, just route to the standard one.
return def;
}
diff --git a/src/Umbraco.Web/Mvc/SurfaceControllerFactory.cs b/src/Umbraco.Web/Mvc/SurfaceControllerFactory.cs
index a6eeda68d6..c82c59db65 100644
--- a/src/Umbraco.Web/Mvc/SurfaceControllerFactory.cs
+++ b/src/Umbraco.Web/Mvc/SurfaceControllerFactory.cs
@@ -7,6 +7,7 @@ namespace Umbraco.Web.Mvc
///
/// Creates SurfaceControllers
///
+ [Obsolete("This is not used in the codebase and will be removed from the core in future versions")]
public class SurfaceControllerFactory : RenderControllerFactory
{
///
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 6bef467ed0..be16cbb25d 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -413,6 +413,7 @@
+
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/controls/GenericProperties/GenericProperty.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/controls/GenericProperties/GenericProperty.ascx.cs
index 955b885692..4106275165 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/controls/GenericProperties/GenericProperty.ascx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/controls/GenericProperties/GenericProperty.ascx.cs
@@ -226,7 +226,7 @@ namespace umbraco.controls.GenericProperties
checkMandatory.Checked = true;
// validation
- if (_pt != null && _pt.ValidationRegExp != "")
+ if (_pt != null && string.IsNullOrEmpty(_pt.ValidationRegExp) == false)
tbValidation.Text = _pt.ValidationRegExp;
// description
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/create/ScriptTasks.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/create/ScriptTasks.cs
index 46ee8f3f80..5e3f16ca0c 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/create/ScriptTasks.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/create/ScriptTasks.cs
@@ -42,7 +42,7 @@ namespace umbraco
public bool Save()
{
- string[] scriptFileAr = _alias.Split('¤');
+ string[] scriptFileAr = _alias.Split('\u00A4');
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx
index ea6de5b968..2b8e9e16b0 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.EditRelationType" MasterPageFile="/umbraco/masterpages/umbracoPage.Master" %>
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.EditRelationType" MasterPageFile="../../masterpages/umbracoPage.Master" %>
<%@ Register TagPrefix="umb" Namespace="umbraco.uicontrols" Assembly="controls" %>
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/NewRelationType.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/NewRelationType.aspx
index fd16f91b03..d2c72fef2a 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/NewRelationType.aspx
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/NewRelationType.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.NewRelationType" MasterPageFile="/umbraco/masterpages/umbracoPage.Master"%>
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewRelationType.aspx.cs" Inherits="umbraco.cms.presentation.developer.RelationTypes.NewRelationType" MasterPageFile="../../masterpages/umbracoPage.Master"%>
<%@ Register TagPrefix="umb" Namespace="umbraco.uicontrols" Assembly="controls" %>
diff --git a/src/umbraco.presentation.targets b/src/umbraco.presentation.targets
index 6bceb13987..79eb7c494d 100644
--- a/src/umbraco.presentation.targets
+++ b/src/umbraco.presentation.targets
@@ -39,17 +39,22 @@
+
+
+ $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll
+
+
+
+ $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll
+
-
-
+
+
|