diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec
index 5db466c054..b8a08f4ff9 100644
--- a/build/NuSpecs/UmbracoCms.Core.nuspec
+++ b/build/NuSpecs/UmbracoCms.Core.nuspec
@@ -33,7 +33,7 @@
-
+
diff --git a/build/UmbracoVersion.txt b/build/UmbracoVersion.txt
index eed0a56028..0aa17f17e8 100644
--- a/build/UmbracoVersion.txt
+++ b/build/UmbracoVersion.txt
@@ -1,3 +1,3 @@
# Usage: on line 2 put the release version, on line 3 put the version comment (example: beta)
7.6.0
-beta05
+beta06
diff --git a/src/SolutionInfo.cs b/src/SolutionInfo.cs
index 9deb68e877..8a42e8bb19 100644
--- a/src/SolutionInfo.cs
+++ b/src/SolutionInfo.cs
@@ -12,4 +12,4 @@ using System.Resources;
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("7.6.0")]
-[assembly: AssemblyInformationalVersion("7.6.0-beta05")]
\ No newline at end of file
+[assembly: AssemblyInformationalVersion("7.6.0-beta06")]
\ No newline at end of file
diff --git a/src/Umbraco.Core/BindingRedirects.cs b/src/Umbraco.Core/BindingRedirects.cs
index 2ee54a369b..71d3721681 100644
--- a/src/Umbraco.Core/BindingRedirects.cs
+++ b/src/Umbraco.Core/BindingRedirects.cs
@@ -17,9 +17,12 @@ namespace Umbraco.Core
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
- private static readonly Regex Log4NetAssemblyPattern = new Regex("log4net, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=null", RegexOptions.Compiled);
+ private static readonly Regex Log4NetAssemblyPattern = new Regex("log4net, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=null");
private const string Log4NetReplacement = "log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a";
-
+
+ private static readonly Regex HtmlAgilityAssemblyPattern = new Regex("HtmlAgilityPack, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=bd319b19eaf3b43a");
+ private const string HtmlAgilityReplacement = "HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a";
+
///
/// This is used to do an assembly binding redirect via code - normally required due to signature changes in assemblies
///
@@ -28,13 +31,18 @@ namespace Umbraco.Core
///
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
- //log4net:
- // Use regex to match and replace
+ //log4net:
if (Log4NetAssemblyPattern.IsMatch(args.Name) && args.Name != Log4NetReplacement)
{
return Assembly.Load(Log4NetAssemblyPattern.Replace(args.Name, Log4NetReplacement));
}
+ //HtmlAgility:
+ if (HtmlAgilityAssemblyPattern.IsMatch(args.Name) && args.Name != HtmlAgilityReplacement)
+ {
+ return Assembly.Load(HtmlAgilityAssemblyPattern.Replace(args.Name, HtmlAgilityReplacement));
+ }
+
//AutoMapper:
// ensure the assembly is indeed AutoMapper and that the PublicKeyToken is null before trying to Load again
// do NOT just replace this with 'return Assembly', as it will cause an infinite loop -> stackoverflow
diff --git a/src/Umbraco.Core/Configuration/UmbracoVersion.cs b/src/Umbraco.Core/Configuration/UmbracoVersion.cs
index 635dae31c9..ee7f53e5bb 100644
--- a/src/Umbraco.Core/Configuration/UmbracoVersion.cs
+++ b/src/Umbraco.Core/Configuration/UmbracoVersion.cs
@@ -24,7 +24,7 @@ namespace Umbraco.Core.Configuration
/// Gets the version comment (like beta or RC).
///
/// The version comment.
- public static string CurrentComment { get { return "beta05"; } }
+ public static string CurrentComment { get { return "beta06"; } }
// Get the version of the umbraco.dll by looking at a class in that dll
// Had to do it like this due to medium trust issues, see: http://haacked.com/archive/2010/11/04/assembly-location-and-medium-trust.aspx
diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs
index f65e467079..1ebfb4bc47 100644
--- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs
@@ -287,7 +287,7 @@ AND umbracoNode.id <> @id",
/// PreValue as a string
public string GetPreValueAsString(int preValueId)
{
- var collections = GlobalCache.RuntimeCache.GetCacheItemsByKeySearch(CacheKeys.DataTypePreValuesCacheKey + "_");
+ var collections = IsolatedCache.GetCacheItemsByKeySearch(CacheKeys.DataTypePreValuesCacheKey + "_");
var preValue = collections.SelectMany(x => x.FormatAsDictionary().Values).FirstOrDefault(x => x.Id == preValueId);
if (preValue != null)
@@ -437,7 +437,7 @@ AND umbracoNode.id <> @id",
private PreValueCollection GetCachedPreValueCollection(int datetypeId)
{
var key = GetPrefixedCacheKey(datetypeId);
- return GlobalCache.RuntimeCache.GetCacheItem(key, () =>
+ return IsolatedCache.GetCacheItem(key, () =>
{
var dtos = Database.Fetch("WHERE datatypeNodeId = @Id", new { Id = datetypeId });
var list = dtos.Select(x => new Tuple(new PreValue(x.Id, x.Value, x.SortOrder), x.Alias, x.SortOrder)).ToList();
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index 31317aae51..3c153c7aee 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -58,8 +58,8 @@
..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll
-
- ..\packages\Examine.0.1.81\lib\net45\Examine.dll
+
+ ..\packages\Examine.0.1.82\lib\net45\Examine.dll
..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
diff --git a/src/Umbraco.Tests/packages.config b/src/Umbraco.Tests/packages.config
index 58d8871b7e..9a8570bc2a 100644
--- a/src/Umbraco.Tests/packages.config
+++ b/src/Umbraco.Tests/packages.config
@@ -2,7 +2,7 @@
-
+
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js
index 18080dbc38..c95e1a7b7f 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js
@@ -17,6 +17,7 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
hideheader: '@',
cachekey: '@',
isdialog: '@',
+ onlyinitialized: '@',
//Custom query string arguments to pass in to the tree as a string, example: "startnodeid=123&something=value"
customtreeparams: '@',
eventhandler: '=',
@@ -252,7 +253,7 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
deleteAnimations = false;
//default args
- var args = { section: scope.section, tree: scope.treealias, cacheKey: scope.cachekey, isDialog: scope.isdialog ? scope.isdialog : false };
+ var args = { section: scope.section, tree: scope.treealias, cacheKey: scope.cachekey, isDialog: scope.isdialog ? scope.isdialog : false, onlyinitialized: scope.onlyinitialized };
//add the extra query string params if specified
if (scope.customtreeparams) {
diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js
index 73b6394b0a..dd25018191 100644
--- a/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js
+++ b/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js
@@ -51,10 +51,15 @@ function treeResource($q, $http, umbRequestHelper) {
if (!options.isDialog) {
options.isDialog = false;
}
-
+
//create the query string for the tree request, these are the mandatory options:
var query = "application=" + options.section + "&tree=" + options.tree + "&isDialog=" + options.isDialog;
+ //if you need to load a not initialized tree set this value to false - default is true
+ if (options.onlyinitialized) {
+ query += "&onlyInitialized=" + options.onlyinitialized;
+ }
+
//the options can contain extra query string parameters
if (options.queryString) {
query += "&" + options.queryString;
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js
index b99dd289b1..2d9b006bf0 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js
@@ -104,13 +104,18 @@
function openPartialOverlay() {
vm.partialItemOverlay = {
view: "treepicker",
- section: "settings",
+ section: "settings",
treeAlias: "partialViews",
entityType: "partialView",
multiPicker: false,
- show: true,
+ filter: function(i) {
+ if(i.name.indexOf(".cshtml") === -1 && i.name.indexOf(".vbhtml") === -1) {
+ return true;
+ }
+ },
+ filterCssClass: "not-allowed",
title: localizationService.localize("template_insertPartialView"),
-
+ show: true,
select: function(node){
$scope.model.insert = {
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
index b0da5f562d..df768db9cd 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
@@ -10,6 +10,8 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
$scope.treeAlias = dialogOptions.treeAlias;
$scope.multiPicker = dialogOptions.multiPicker;
$scope.hideHeader = true;
+ // if you need to load a not initialized tree set this value to false - default is true
+ $scope.onlyInitialized = dialogOptions.onlyInitialized;
$scope.searchInfo = {
searchFromId: dialogOptions.startNodeId,
searchFromName: null,
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
index b88a859cb9..108dbdaa78 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
@@ -27,6 +27,7 @@
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
+ onlyinitialized="{{onlyInitialized}}"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
diff --git a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js
index 5f2dfddbfa..e516f2d742 100644
--- a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js
@@ -419,6 +419,12 @@
multiPicker: false,
show: true,
title: localizationService.localize("template_insertPartialView"),
+ filter: function(i) {
+ if(i.name.indexOf(".cshtml") === -1 && i.name.indexOf(".vbhtml") === -1) {
+ return true;
+ }
+ },
+ filterCssClass: "not-allowed",
select: function(node){
var code = templateHelper.getInsertPartialSnippet(node.parentId, node.name);
diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
index e863af618d..aa7c86e95c 100644
--- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
+++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
@@ -127,8 +127,8 @@
False
..\packages\dotless.1.4.1.0\lib\dotless.Core.dll
-
- ..\packages\Examine.0.1.81\lib\net45\Examine.dll
+
+ ..\packages\Examine.0.1.82\lib\net45\Examine.dll
False
diff --git a/src/Umbraco.Web.UI/packages.config b/src/Umbraco.Web.UI/packages.config
index 19a7739420..bc8166c49d 100644
--- a/src/Umbraco.Web.UI/packages.config
+++ b/src/Umbraco.Web.UI/packages.config
@@ -4,7 +4,7 @@
-
+
diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs
index ea979dcfbc..296bcc9590 100644
--- a/src/Umbraco.Web/Editors/BackOfficeController.cs
+++ b/src/Umbraco.Web/Editors/BackOfficeController.cs
@@ -254,7 +254,7 @@ namespace Umbraco.Web.Editors
},
{
"treeApplicationApiBaseUrl", Url.GetUmbracoApiServiceBaseUrl(
- controller => controller.GetApplicationTrees(null, null, null))
+ controller => controller.GetApplicationTrees(null, null, null, true))
},
{
"contentTypeApiBaseUrl", Url.GetUmbracoApiServiceBaseUrl(
diff --git a/src/Umbraco.Web/Mvc/RenderModelBinder.cs b/src/Umbraco.Web/Mvc/RenderModelBinder.cs
index 735f015afc..18d9879cac 100644
--- a/src/Umbraco.Web/Mvc/RenderModelBinder.cs
+++ b/src/Umbraco.Web/Mvc/RenderModelBinder.cs
@@ -175,6 +175,7 @@ namespace Umbraco.Web.Mvc
public IModelBinder GetBinder(Type modelType)
{
// can bind to RenderModel (exact type match)
+ // You might be tempted to change this to IRenderModel but do not change this: http://issues.umbraco.org/issue/U4-8216
if (modelType == typeof(RenderModel)) return this;
// can bind to RenderModel (exact generic type match)
diff --git a/src/Umbraco.Web/Trees/ApplicationTreeController.cs b/src/Umbraco.Web/Trees/ApplicationTreeController.cs
index 1b90ae0dd8..f6b5e82fc3 100644
--- a/src/Umbraco.Web/Trees/ApplicationTreeController.cs
+++ b/src/Umbraco.Web/Trees/ApplicationTreeController.cs
@@ -30,16 +30,17 @@ namespace Umbraco.Web.Trees
/// The application to load tree for
/// An optional single tree alias, if specified will only load the single tree for the request app
///
+ /// An optional bool (defaults to true), if set to false it will also load uninitialized trees
///
[HttpQueryStringFilter("queryStrings")]
- public async Task GetApplicationTrees(string application, string tree, FormDataCollection queryStrings)
+ public async Task GetApplicationTrees(string application, string tree, FormDataCollection queryStrings, bool onlyInitialized = true)
{
if (string.IsNullOrEmpty(application)) throw new HttpResponseException(HttpStatusCode.NotFound);
var rootId = Constants.System.Root.ToString(CultureInfo.InvariantCulture);
//find all tree definitions that have the current application alias
- var appTrees = ApplicationContext.Current.Services.ApplicationTreeService.GetApplicationTrees(application, true).ToArray();
+ var appTrees = ApplicationContext.Current.Services.ApplicationTreeService.GetApplicationTrees(application, onlyInitialized).ToArray();
if (appTrees.Count() == 1 || string.IsNullOrEmpty(tree) == false )
{
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 1154b89651..823d38b14a 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -117,8 +117,8 @@
..\packages\dotless.1.4.1.0\lib\dotless.Core.dll
True
-
- ..\packages\Examine.0.1.81\lib\net45\Examine.dll
+
+ ..\packages\Examine.0.1.82\lib\net45\Examine.dll
True
diff --git a/src/Umbraco.Web/WebBootManager.cs b/src/Umbraco.Web/WebBootManager.cs
index 4e08769f50..3f970b06ab 100644
--- a/src/Umbraco.Web/WebBootManager.cs
+++ b/src/Umbraco.Web/WebBootManager.cs
@@ -579,6 +579,15 @@ namespace Umbraco.Web
// is complete and cancel this current event so the rebuild process doesn't start right now.
args.Cancel = true;
IndexesToRebuild.Add((BaseIndexProvider)args.Indexer);
+
+ //check if the index is rebuilding due to an error and log it
+ if (args.IsHealthy == false)
+ {
+ var baseIndex = args.Indexer as BaseIndexProvider;
+ var name = baseIndex != null ? baseIndex.Name : "[UKNOWN]";
+
+ ProfilingLogger.Logger.Error(string.Format("The index {0} is rebuilding due to being unreadable/corrupt", name), args.UnhealthyException);
+ }
}
}
}
diff --git a/src/Umbraco.Web/packages.config b/src/Umbraco.Web/packages.config
index cdaf4fcbf6..7f017d808f 100644
--- a/src/Umbraco.Web/packages.config
+++ b/src/Umbraco.Web/packages.config
@@ -3,7 +3,7 @@
-
+
diff --git a/src/UmbracoExamine/UmbracoExamine.csproj b/src/UmbracoExamine/UmbracoExamine.csproj
index 8fe749a9eb..19abcf9313 100644
--- a/src/UmbracoExamine/UmbracoExamine.csproj
+++ b/src/UmbracoExamine/UmbracoExamine.csproj
@@ -82,8 +82,8 @@
..\Solution Items\TheFARM-Public.snk
-
- ..\packages\Examine.0.1.81\lib\net45\Examine.dll
+
+ ..\packages\Examine.0.1.82\lib\net45\Examine.dll
True
diff --git a/src/UmbracoExamine/packages.config b/src/UmbracoExamine/packages.config
index 81a5d495c4..17c77f7284 100644
--- a/src/UmbracoExamine/packages.config
+++ b/src/UmbracoExamine/packages.config
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/src/umbraco.MacroEngines/packages.config b/src/umbraco.MacroEngines/packages.config
index eec4453512..7bf40b9075 100644
--- a/src/umbraco.MacroEngines/packages.config
+++ b/src/umbraco.MacroEngines/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/umbraco.MacroEngines/umbraco.MacroEngines.csproj b/src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
index 18ca792910..cec5b99086 100644
--- a/src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
+++ b/src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
@@ -45,8 +45,8 @@
false
-
- ..\packages\Examine.0.1.81\lib\net45\Examine.dll
+
+ ..\packages\Examine.0.1.82\lib\net45\Examine.dll
True