diff --git a/apidocs/umbracotemplate/styles/main.css b/apidocs/umbracotemplate/styles/main.css
index d74d51b150..69dde09875 100644
--- a/apidocs/umbracotemplate/styles/main.css
+++ b/apidocs/umbracotemplate/styles/main.css
@@ -1,73 +1,215 @@
body {
- color: rgba(0,0,0,.8);
-}
-.navbar-inverse {
- background: #a3db78;
-}
-.navbar-inverse .navbar-nav>li>a, .navbar-inverse .navbar-text {
- color: rgba(0,0,0,.8);
-}
-
-.navbar-inverse {
- border-color: transparent;
-}
-
-.sidetoc {
- background-color: #f5fbf1;
-}
-body .toc {
- background-color: #f5fbf1;
-}
-.sidefilter {
- background-color: #daf0c9;
-}
-.subnav {
- background-color: #f5fbf1;
-}
-
-.navbar-inverse .navbar-nav>.active>a {
- color: rgba(0,0,0,.8);
- background-color: #daf0c9;
-}
-
-.navbar-inverse .navbar-nav>.active>a:focus, .navbar-inverse .navbar-nav>.active>a:hover {
- color: rgba(0,0,0,.8);
- background-color: #daf0c9;
-}
-
-.btn-primary {
- color: rgba(0,0,0,.8);
- background-color: #fff;
- border-color: rgba(0,0,0,.8);
-}
-.btn-primary:hover {
- background-color: #daf0c9;
- color: rgba(0,0,0,.8);
- border-color: rgba(0,0,0,.8);
-}
-
-.toc .nav > li > a {
- color: rgba(0,0,0,.8);
-}
-
-button, a {
- color: #f36f21;
-}
-
-button:hover,
-button:focus,
-a:hover,
-a:focus {
- color: #143653;
- text-decoration: none;
+ color: #34393e;
+ font-family: 'Roboto', sans-serif;
+ line-height: 1.5;
+ font-size: 16px;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ word-wrap: break-word
}
.navbar-header .navbar-brand {
- background: url(https://our.umbraco.com/assets/images/logo.svg) left center no-repeat;
- background-size: 40px auto;
- width:50px;
+ background: url(https://our.umbraco.com/assets/images/logo.svg) left center no-repeat;
+ background-size: 40px auto;
+ width:50px;
}
-.toc .nav > li.active > a {
- color: #f36f21;
+#_content>a {
+ margin-top: 5px;
}
+/* HEADINGS */
+
+h1 {
+ font-weight: 600;
+ font-size: 32px;
+}
+
+h2 {
+ font-weight: 600;
+ font-size: 24px;
+ line-height: 1.8;
+}
+
+h3 {
+ font-weight: 600;
+ font-size: 20px;
+ line-height: 1.8;
+}
+
+h5 {
+ font-size: 14px;
+ padding: 10px 0px;
+}
+
+article h1,
+article h2,
+article h3,
+article h4 {
+ margin-top: 35px;
+ margin-bottom: 15px;
+}
+
+article h4 {
+ padding-bottom: 8px;
+ border-bottom: 2px solid #ddd;
+}
+
+/* NAVBAR */
+
+.navbar-brand>img {
+ color: #fff;
+}
+
+.navbar {
+ border: none;
+ /* Both navbars use box-shadow */
+ -webkit-box-shadow: 0px 1px 3px 0px rgba(100, 100, 100, 0.5);
+ -moz-box-shadow: 0px 1px 3px 0px rgba(100, 100, 100, 0.5);
+ box-shadow: 0px 1px 3px 0px rgba(100, 100, 100, 0.5);
+}
+
+.subnav {
+ border-top: 1px solid #ddd;
+ background-color: #fff;
+}
+
+.navbar-inverse {
+ background-color: #303ea1;
+ z-index: 100;
+}
+
+.navbar-inverse .navbar-nav>li>a,
+.navbar-inverse .navbar-text {
+ color: #fff;
+ background-color: #303ea1;
+ border-bottom: 3px solid transparent;
+ padding-bottom: 12px;
+}
+
+.navbar-inverse .navbar-nav>li>a:focus,
+.navbar-inverse .navbar-nav>li>a:hover {
+ color: #fff;
+ background-color: #303ea1;
+ border-bottom: 3px solid white;
+}
+
+.navbar-inverse .navbar-nav>.active>a,
+.navbar-inverse .navbar-nav>.active>a:focus,
+.navbar-inverse .navbar-nav>.active>a:hover {
+ color: #fff;
+ background-color: #303ea1;
+ border-bottom: 3px solid white;
+}
+
+.navbar-form .form-control {
+ border: none;
+ border-radius: 20px;
+}
+
+/* SIDEBAR */
+
+.toc .level1>li {
+ font-weight: 400;
+}
+
+.toc .nav>li>a {
+ color: #34393e;
+}
+
+.sidefilter {
+ background-color: #fff;
+ border-left: none;
+ border-right: none;
+}
+
+.sidefilter {
+ background-color: #fff;
+ border-left: none;
+ border-right: none;
+}
+
+.toc-filter {
+ padding: 10px;
+ margin: 0;
+}
+
+.toc-filter>input {
+ border: 2px solid #ddd;
+ border-radius: 20px;
+}
+
+.toc-filter>.filter-icon {
+ display: none;
+}
+
+.sidetoc>.toc {
+ background-color: #fff;
+ overflow-x: hidden;
+}
+
+.sidetoc {
+ background-color: #fff;
+ border: none;
+}
+
+/* ALERTS */
+
+.alert {
+ padding: 0px 0px 5px 0px;
+ color: inherit;
+ background-color: inherit;
+ border: none;
+ box-shadow: 0px 2px 2px 0px rgba(100, 100, 100, 0.4);
+}
+
+.alert>p {
+ margin-bottom: 0;
+ padding: 5px 10px;
+}
+
+.alert>ul {
+ margin-bottom: 0;
+ padding: 5px 40px;
+}
+
+.alert>h5 {
+ padding: 10px 15px;
+ margin-top: 0;
+ text-transform: uppercase;
+ font-weight: bold;
+ border-radius: 4px 4px 0 0;
+}
+
+.alert-info>h5 {
+ color: #1976d2;
+ border-bottom: 4px solid #1976d2;
+ background-color: #e3f2fd;
+}
+
+.alert-warning>h5 {
+ color: #f57f17;
+ border-bottom: 4px solid #f57f17;
+ background-color: #fff3e0;
+}
+
+.alert-danger>h5 {
+ color: #d32f2f;
+ border-bottom: 4px solid #d32f2f;
+ background-color: #ffebee;
+}
+
+/* CODE HIGHLIGHT */
+pre {
+padding: 9.5px;
+margin: 0 0 10px;
+font-size: 13px;
+word-break: break-all;
+word-wrap: break-word;
+background-color: #fffaef;
+border-radius: 4px;
+box-shadow: 0px 1px 4px 1px rgba(100, 100, 100, 0.4);
+}
+
+.sideaffix {
+ overflow: visible;
+}
\ No newline at end of file
diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec
index 9f507b4915..7f180b4ca0 100644
--- a/build/NuSpecs/UmbracoCms.Core.nuspec
+++ b/build/NuSpecs/UmbracoCms.Core.nuspec
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/src/Umbraco.Core/Serialization/JsonNetSerializer.cs b/src/Umbraco.Core/Serialization/JsonNetSerializer.cs
index 52f39c6109..0a0c3ad187 100644
--- a/src/Umbraco.Core/Serialization/JsonNetSerializer.cs
+++ b/src/Umbraco.Core/Serialization/JsonNetSerializer.cs
@@ -62,7 +62,7 @@ namespace Umbraco.Core.Serialization
public IStreamedResult ToStream(object input)
{
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
- string s = JsonConvert.SerializeObject(input, formatting, _settings);
+ string s = JsonConvert.SerializeObject(input, Formatting.Indented, _settings);
byte[] bytes = Encoding.UTF8.GetBytes(s);
MemoryStream ms = new MemoryStream(bytes);
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml b/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml
index 982f31e383..0a2f37ce02 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml
@@ -182,10 +182,11 @@
Besök
- Stay
- Discard changes
- You have unsaved changes
- Are you sure you want to navigate away from this page? - you have unsaved changes
+ Stanna
+ Avfärda ändringar
+ Du har inte sparat dina ändringar
+ Är du säker på att du vill navigera bort från denna sida? - du har inte sparat dina ändringar
+ Avpublicering kommer att ta bort denna sida och alla dess ättlingar från hemsidan.
Done
diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs
index 4a79038fc0..86159f6842 100644
--- a/src/Umbraco.Web/Editors/BackOfficeController.cs
+++ b/src/Umbraco.Web/Editors/BackOfficeController.cs
@@ -178,7 +178,7 @@ namespace Umbraco.Web.Editors
// in the back office requres the delimiter to be a '_' so we'll just replace it
.ToDictionary(key => key.Key.Replace("/", "_"), val => val.Value);
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
- return new JsonNetResult { Data = textForCulture, Formatting = formatting };
+ return new JsonNetResult { Data = textForCulture, Formatting = Formatting.Indented };
}
///
@@ -231,7 +231,7 @@ namespace Umbraco.Web.Editors
() => getResult(),
new TimeSpan(0, 10, 0));
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
- return new JsonNetResult { Data = result, Formatting = formatting };
+ return new JsonNetResult { Data = result, Formatting = Formatting.Indented };
}
[UmbracoAuthorize(Order = 0)]
@@ -245,7 +245,7 @@ namespace Umbraco.Web.Editors
new DirectoryInfo(Server.MapPath(SystemDirectories.Config)),
HttpContext.IsDebuggingEnabled);
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
- return new JsonNetResult { Data = gridConfig.EditorsConfig.Editors, Formatting = formatting };
+ return new JsonNetResult { Data = gridConfig.EditorsConfig.Editors, Formatting = Formatting.Indented };
}
diff --git a/src/Umbraco.Web/Profiling/WebProfiler.cs b/src/Umbraco.Web/Profiling/WebProfiler.cs
index fd980db2d1..2fa5639fa7 100644
--- a/src/Umbraco.Web/Profiling/WebProfiler.cs
+++ b/src/Umbraco.Web/Profiling/WebProfiler.cs
@@ -3,6 +3,7 @@ using System.Threading;
using System.Web;
using StackExchange.Profiling;
using StackExchange.Profiling.SqlFormatters;
+using StackExchange.Profiling.Storage;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
@@ -32,6 +33,7 @@ namespace Umbraco.Web.Profiling
MiniProfiler.Settings.SqlFormatter = new SqlServerFormatter();
MiniProfiler.Settings.StackMaxLength = 5000;
MiniProfiler.Settings.ProfilerProvider = _provider;
+ MiniProfiler.Settings.Storage = new HttpRuntimeCacheStorage(TimeSpan.FromMinutes(30));
//Binds to application events to enable the MiniProfiler with a real HttpRequest
UmbracoApplicationBase.ApplicationInit += UmbracoApplicationApplicationInit;
@@ -82,7 +84,7 @@ namespace Umbraco.Web.Profiling
if (isBootRequest)
_provider.EndBootRequest();
if (isBootRequest || ShouldProfile(sender))
- Stop();
+ Stop(!GlobalSettings.DebugMode);
}
private bool ShouldProfile(object sender)
diff --git a/src/Umbraco.Web/Profiling/WebProfilerProvider.cs b/src/Umbraco.Web/Profiling/WebProfilerProvider.cs
index e0dcfcf9b1..ffd1871ecc 100644
--- a/src/Umbraco.Web/Profiling/WebProfilerProvider.cs
+++ b/src/Umbraco.Web/Profiling/WebProfilerProvider.cs
@@ -1,10 +1,7 @@
using System;
-using System.Linq;
using System.Threading;
using System.Web;
-using System.Web.Routing;
using StackExchange.Profiling;
-using Umbraco.Core.Configuration;
namespace Umbraco.Web.Profiling
{
@@ -27,20 +24,6 @@ namespace Umbraco.Web.Profiling
{
// booting...
_bootPhase = BootPhase.Boot;
-
- // Remove Mini Profiler routes when not in debug mode
- if (GlobalSettings.DebugMode == false)
- {
- //NOTE: Keep the global fully qualified name, for some reason without it I was getting null refs
- var prefix = global::StackExchange.Profiling.MiniProfiler.Settings.RouteBasePath.Replace("~/", string.Empty);
-
- using (RouteTable.Routes.GetWriteLock())
- {
- var routes = RouteTable.Routes.Where(x => x is Route r && r.Url.StartsWith(prefix)).ToList();
- foreach(var r in routes)
- RouteTable.Routes.Remove(r);
- }
- }
}
///
@@ -135,4 +118,4 @@ namespace Umbraco.Web.Profiling
}
}
}
-}
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/PublishedContentExtensions.cs b/src/Umbraco.Web/PublishedContentExtensions.cs
index c80f41d9fc..d1bc7dffff 100644
--- a/src/Umbraco.Web/PublishedContentExtensions.cs
+++ b/src/Umbraco.Web/PublishedContentExtensions.cs
@@ -135,6 +135,9 @@ namespace Umbraco.Web
public static bool IsAllowedTemplate(this IPublishedContent content, int templateId)
{
+ if (content == null)
+ return false;
+
if (UmbracoConfig.For.UmbracoSettings().WebRouting.DisableAlternativeTemplates == true)
return content.TemplateId == templateId;