From c2e1ba21b2e68b8fca6351968f2bf03cbfa57a4a Mon Sep 17 00:00:00 2001
From: Stephan
Date: Tue, 27 Mar 2018 16:18:51 +0200
Subject: [PATCH] Port v7@2aa0dfb2c5 - WIP
---
.../BackOfficeCookieAuthenticationProvider.cs | 20 +-
src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 1 -
src/Umbraco.Web.UI/Umbraco/config/lang/cs.xml | 8 +-
src/Umbraco.Web.UI/Umbraco/config/lang/nb.xml | 22 +-
.../Umbraco/config/lang/zh_tw.xml | 8 +-
.../Views/Partials/Grid/Bootstrap2.cshtml | 28 +-
.../Views/Partials/Grid/Bootstrap3.cshtml | 28 +-
.../Views/Partials/Grid/Editors/Media.cshtml | 4 +-
.../Partials/Grid/Editors/TextString.cshtml | 10 +-
.../BackOfficeTours/getting-started.json | 481 +++
.../config/imageprocessor/processing.config | 1 +
.../config/tinyMceConfig.Release.config | 2 +-
.../config/tinyMceConfig.config | 4 +-
src/Umbraco.Web.UI/config/trees.config | 4 +-
.../config/umbracoSettings.Release.config | 25 +-
.../config/umbracoSettings.config | 5 +
.../umbraco/Install/Views/Index.cshtml | 3 +-
.../umbraco/Views/Default.cshtml | 53 +-
.../umbraco/config/create/UI.Release.xml | 1 +
.../umbraco/config/create/UI.xml | 1 +
src/Umbraco.Web.UI/umbraco/config/lang/da.xml | 516 ++-
src/Umbraco.Web.UI/umbraco/config/lang/de.xml | 9 +-
src/Umbraco.Web.UI/umbraco/config/lang/en.xml | 3128 ++++++++-------
.../umbraco/config/lang/en_us.xml | 3346 ++++++++++-------
src/Umbraco.Web.UI/umbraco/config/lang/es.xml | 2770 +++++++++-----
src/Umbraco.Web.UI/umbraco/config/lang/fr.xml | 8 +-
src/Umbraco.Web.UI/umbraco/config/lang/he.xml | 15 +-
src/Umbraco.Web.UI/umbraco/config/lang/it.xml | 8 +-
src/Umbraco.Web.UI/umbraco/config/lang/ja.xml | 8 +-
src/Umbraco.Web.UI/umbraco/config/lang/ko.xml | 10 +-
src/Umbraco.Web.UI/umbraco/config/lang/nl.xml | 685 +++-
src/Umbraco.Web.UI/umbraco/config/lang/pl.xml | 1261 ++++++-
src/Umbraco.Web.UI/umbraco/config/lang/pt.xml | 10 +-
src/Umbraco.Web.UI/umbraco/config/lang/ru.xml | 296 +-
src/Umbraco.Web.UI/umbraco/config/lang/sv.xml | 24 +-
src/Umbraco.Web.UI/umbraco/config/lang/tr.xml | 8 +-
src/Umbraco.Web.UI/umbraco/config/lang/zh.xml | 10 +-
.../umbraco/dialogs/Publish.aspx.cs | 2 +-
.../umbraco/dialogs/viewAuditTrail.aspx | 1 +
.../umbraco/webservices/MediaUploader.ashx | 1 -
.../Application/UmbracoClientManager.js | 4 +-
.../umbraco_client/Dialogs/SortDialog.js | 1 +
src/Umbraco.Web/Editors/ContentController.cs | 1 +
.../Editors/CurrentUserController.cs | 1 +
src/Umbraco.Web/Editors/DataTypeController.cs | 4 +-
src/Umbraco.Web/Editors/LogController.cs | 18 +-
src/Umbraco.Web/Editors/MediaController.cs | 4 +-
src/Umbraco.Web/Editors/MemberController.cs | 2 +
.../Editors/MemberTypeController.cs | 3 +-
src/Umbraco.Web/Editors/TourController.cs | 5 +-
src/Umbraco.Web/Features/DisabledFeatures.cs | 24 +
src/Umbraco.Web/Features/EnabledFeatures.cs | 14 +
src/Umbraco.Web/Features/UmbracoFeatures.cs | 48 +
.../Models/BackOfficeTourFilter.cs | 61 -
src/Umbraco.Web/Models/Trees/MenuItem.cs | 2 +-
src/Umbraco.Web/Mvc/RenderRouteHandler.cs | 7 +-
.../ColorPickerConfigurationEditor.cs | 13 +-
.../ColorPickerPropertyEditor.cs | 14 +-
.../DropDownFlexibleConfiguration.cs | 10 +
.../DropDownFlexibleConfigurationEditor.cs | 60 +
.../DropDownFlexiblePropertyEditor.cs | 22 +
.../DropDownMultiplePropertyEditor.cs | 2 +-
.../DropDownMultipleWithKeysPropertyEditor.cs | 2 +-
.../PropertyEditors/DropDownPropertyEditor.cs | 2 +-
.../DropDownWithKeysPropertyEditor.cs | 2 +-
.../PropertyEditors/TextboxConfiguration.cs | 4 +-
.../Runtime/WebRuntimeComponent.cs | 3 +-
src/Umbraco.Web/Search/UmbracoTreeSearcher.cs | 2 +-
.../Trees/FileSystemTreeController.cs | 94 +-
src/Umbraco.Web/Trees/MacroTreeController.cs | 73 -
src/Umbraco.Web/Trees/UserTreeController.cs | 2 +-
src/Umbraco.Web/Trees/XsltTreeController.cs | 16 +-
src/Umbraco.Web/Umbraco.Web.csproj | 9 +-
.../WebApi/Binders/MemberBinder.cs | 10 +-
.../Filters/ContentItemValidationHelper.cs | 1 +
.../Filters/FeatureAuthorizeAttribute.cs | 14 +-
.../umbraco/Trees/BaseTree.cs | 16 +-
.../developer/Packages/editPackage.aspx.cs | 8 +-
.../umbraco/developer/Xslt/editXslt.aspx.cs | 5 +-
.../umbraco/translation/default.aspx.cs | 5 +-
80 files changed, 8951 insertions(+), 4462 deletions(-)
create mode 100644 src/Umbraco.Web.UI/config/BackOfficeTours/getting-started.json
delete mode 100644 src/Umbraco.Web.UI/umbraco/webservices/MediaUploader.ashx
create mode 100644 src/Umbraco.Web/Features/DisabledFeatures.cs
create mode 100644 src/Umbraco.Web/Features/EnabledFeatures.cs
create mode 100644 src/Umbraco.Web/Features/UmbracoFeatures.cs
delete mode 100644 src/Umbraco.Web/Models/BackOfficeTourFilter.cs
create mode 100644 src/Umbraco.Web/PropertyEditors/DropDownFlexibleConfiguration.cs
create mode 100644 src/Umbraco.Web/PropertyEditors/DropDownFlexibleConfigurationEditor.cs
create mode 100644 src/Umbraco.Web/PropertyEditors/DropDownFlexiblePropertyEditor.cs
delete mode 100644 src/Umbraco.Web/Trees/MacroTreeController.cs
diff --git a/src/Umbraco.Core/Security/BackOfficeCookieAuthenticationProvider.cs b/src/Umbraco.Core/Security/BackOfficeCookieAuthenticationProvider.cs
index 686cefcdf8..cb0ce2b147 100644
--- a/src/Umbraco.Core/Security/BackOfficeCookieAuthenticationProvider.cs
+++ b/src/Umbraco.Core/Security/BackOfficeCookieAuthenticationProvider.cs
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
+using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Services;
@@ -14,14 +15,9 @@ namespace Umbraco.Core.Security
{
public class BackOfficeCookieAuthenticationProvider : CookieAuthenticationProvider
{
- private readonly IUserService _userService;
- private readonly IRuntimeState _runtimeState;
-
- public BackOfficeCookieAuthenticationProvider(IUserService userService, IRuntimeState runtimeState)
- {
- _userService = userService;
- _runtimeState = runtimeState;
- }
+ // fixme inject
+ private IUserService UserService => Current.Services.UserService;
+ private IRuntimeState RuntimeState => Current.RuntimeState;
public override void ResponseSignIn(CookieResponseSignInContext context)
{
@@ -30,8 +26,8 @@ namespace Umbraco.Core.Security
//generate a session id and assign it
//create a session token - if we are configured and not in an upgrade state then use the db, otherwise just generate one
- var session = _runtimeState.Level == RuntimeLevel.Run
- ? _userService.CreateLoginSession((int)backOfficeIdentity.Id, context.OwinContext.GetCurrentRequestIpAddress())
+ var session = RuntimeState.Level == RuntimeLevel.Run
+ ? UserService.CreateLoginSession((int)backOfficeIdentity.Id, context.OwinContext.GetCurrentRequestIpAddress())
: Guid.NewGuid();
backOfficeIdentity.UserData.SessionId = session.ToString();
@@ -49,7 +45,7 @@ namespace Umbraco.Core.Security
var sessionId = claimsIdentity.FindFirstValue(Constants.Security.SessionIdClaimType);
if (sessionId.IsNullOrWhiteSpace() == false && Guid.TryParse(sessionId, out var guidSession))
{
- _userService.ClearLoginSession(guidSession);
+ UserService.ClearLoginSession(guidSession);
}
}
@@ -100,7 +96,7 @@ namespace Umbraco.Core.Security
///
protected virtual async Task EnsureValidSessionId(CookieValidateIdentityContext context)
{
- if (_runtimeState.Level == RuntimeLevel.Run)
+ if (RuntimeState.Level == RuntimeLevel.Run)
await SessionIdValidator.ValidateSessionAsync(TimeSpan.FromMinutes(1), context);
}
diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
index 650ed00f0b..add06f81b6 100644
--- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
+++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
@@ -949,7 +949,6 @@
- Designer
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/cs.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/cs.xml
index 1da4c78605..d8c9f8570f 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/cs.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/cs.xml
@@ -771,7 +771,7 @@
Creation dateTřídění bylo ukončeno.Abyste nastavili, jak mají být položky seřazeny, přetáhněte jednotlivé z nich nahoru či dolů. Anebo klikněte na hlavičku sloupce pro setřídění celé kolekce
- Během třídění nezavírejte toto okno]]>
+ Publikování bylo zrušeno doplňkem třetí strany
@@ -848,6 +848,12 @@
Šablona
+ Rich Text Editor
+ Image
+ Macro
+ Embed
+ Headline
+ QuoteChoose type of contentChoose a layoutAdd a row
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/nb.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/nb.xml
index 2c9b5d844b..dee52cff5c 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/nb.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/nb.xml
@@ -83,6 +83,7 @@
Tilbake til listenLagreLagre og publiser
+ Lagre og planleggeLagre og send til publiseringForhåndsvisForhåndsvisning er deaktivert siden det ikke er angitt noen mal
@@ -422,7 +423,7 @@
Hvilken side skal vises etter at skjemaet er sendtStørrelseSorter
- Submit
+ SendTypeSøk...Opp
@@ -439,6 +440,17 @@
JaMappeSøkeresultater
+ Sorter
+ Avslutt sortering
+ Eksempel
+ Bytt passord
+ til
+ Listevisning
+ Lagrer...
+ nåværende
+ Innbygging
+ Hent
+ valgtBakgrunnsfarge
@@ -733,7 +745,7 @@ Vennlig hilsen Umbraco roboten
Creation dateSortering ferdig.Dra elementene opp eller ned for å arrangere dem. Du kan også klikke kolonneoverskriftene for å sortere alt på en gang.
- Ikke lukk dette vinduet under sortering]]>
+ En feil oppsto
@@ -819,6 +831,12 @@ Vennlig hilsen Umbraco roboten
Mal
+ Rich Text Editor
+ Image
+ Macro
+ Embed
+ Headline
+ QuoteSett inn elementVelg layoutLegg til rad
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml
index 03933f34ff..cdcf095aae 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml
@@ -905,7 +905,7 @@
增添時間排序完成。上下拖拽項目或按一下列頭進行排序
- 排序中請不要關閉視窗。]]>
+ 驗證
@@ -995,6 +995,12 @@
範本
+ Rich Text Editor
+ Image
+ Macro
+ Embed
+ Headline
+ Quote選擇內容類別選擇排列方式新增一行
diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap2.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap2.cshtml
index 8b189ae1a0..1437d4f14b 100644
--- a/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap2.cshtml
+++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap2.cshtml
@@ -60,21 +60,29 @@
JObject cfg = contentItem.config;
if(cfg != null)
- foreach (JProperty property in cfg.Properties()) {
- attrs.Add(property.Name + "='" + property.Value.ToString() + "'");
+ foreach (JProperty property in cfg.Properties())
+ {
+ var propertyValue = HttpUtility.HtmlAttributeEncode(property.Value.ToString());
+ attrs.Add(property.Name + "=\"" + propertyValue + "\"");
}
-
+
JObject style = contentItem.styles;
- if (style != null) {
- var cssVals = new List();
- foreach (JProperty property in style.Properties())
- cssVals.Add(property.Name + ":" + property.Value.ToString() + ";");
+ if (style != null) {
+ var cssVals = new List();
+ foreach (JProperty property in style.Properties())
+ {
+ var propertyValue = property.Value.ToString();
+ if (string.IsNullOrWhiteSpace(propertyValue) == false)
+ {
+ cssVals.Add(property.Name + ":" + propertyValue + ";");
+ }
+ }
- if (cssVals.Any())
- attrs.Add("style='" + string.Join(" ", cssVals) + "'");
+ if (cssVals.Any())
+ attrs.Add("style=\"" + HttpUtility.HtmlAttributeEncode(string.Join(" ", cssVals)) + "\"");
}
-
+
return new MvcHtmlString(string.Join(" ", attrs));
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap3.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap3.cshtml
index e672aa2a11..7b4f602b26 100644
--- a/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap3.cshtml
+++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Bootstrap3.cshtml
@@ -60,21 +60,29 @@
JObject cfg = contentItem.config;
if(cfg != null)
- foreach (JProperty property in cfg.Properties()) {
- attrs.Add(property.Name + "='" + property.Value.ToString() + "'");
+ foreach (JProperty property in cfg.Properties())
+ {
+ var propertyValue = HttpUtility.HtmlAttributeEncode(property.Value.ToString());
+ attrs.Add(property.Name + "=\"" + propertyValue + "\"");
}
-
+
JObject style = contentItem.styles;
- if (style != null) {
- var cssVals = new List();
- foreach (JProperty property in style.Properties())
- cssVals.Add(property.Name + ":" + property.Value.ToString() + ";");
+ if (style != null) {
+ var cssVals = new List();
+ foreach (JProperty property in style.Properties())
+ {
+ var propertyValue = property.Value.ToString();
+ if (string.IsNullOrWhiteSpace(propertyValue) == false)
+ {
+ cssVals.Add(property.Name + ":" + propertyValue + ";");
+ }
+ }
- if (cssVals.Any())
- attrs.Add("style='" + string.Join(" ", cssVals) + "'");
+ if (cssVals.Any())
+ attrs.Add("style=\"" + HttpUtility.HtmlAttributeEncode(string.Join(" ", cssVals)) + "\"");
}
-
+
return new MvcHtmlString(string.Join(" ", attrs));
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml
index 09d04219f2..ea79ce41ad 100644
--- a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml
+++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml
@@ -13,8 +13,10 @@
url += "&mode=crop";
}
}
+
+ var altText = Model.value.altText ?? Model.value.caption ?? string.Empty;
-
+
if (Model.value.caption != null)
{
diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/TextString.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/TextString.cshtml
index 0cac4eb1ff..4cf2e73658 100644
--- a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/TextString.cshtml
+++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/TextString.cshtml
@@ -4,9 +4,13 @@
@if (Model.editor.config.markup != null)
{
string markup = Model.editor.config.markup.ToString();
-
- markup = markup.Replace("#value#", Model.value.ToString());
- markup = markup.Replace("#style#", Model.editor.config.style.ToString());
+ var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
+ markup = markup.Replace("#value#", umbracoHelper.ReplaceLineBreaksForHtml(HttpUtility.HtmlEncode(Model.value.ToString())));
+
+ if (Model.editor.config.style != null)
+ {
+ markup = markup.Replace("#style#", Model.editor.config.style.ToString());
+ }
@Html.Raw(markup)
diff --git a/src/Umbraco.Web.UI/config/BackOfficeTours/getting-started.json b/src/Umbraco.Web.UI/config/BackOfficeTours/getting-started.json
new file mode 100644
index 0000000000..836b7a965c
--- /dev/null
+++ b/src/Umbraco.Web.UI/config/BackOfficeTours/getting-started.json
@@ -0,0 +1,481 @@
+[
+ {
+ "name": "Introduction",
+ "alias": "umbIntroIntroduction",
+ "group": "Getting Started",
+ "groupOrder": 100,
+ "allowDisable": true,
+ "requiredSections": [
+ "content",
+ "media",
+ "settings",
+ "developer",
+ "users",
+ "member",
+ "forms"
+ ],
+ "steps": [
+ {
+ "title": "Welcome to Umbraco - The Friendly CMS",
+ "content": "
Thank you for choosing Umbraco - we think this could be the beginning of something beautiful. While it may feel overwhelming at first, we've done a lot to make the learning curve as smooth and fast as possible.
In this quick tour we will introduce you to the main areas of Umbraco and show you how to best get started.
If you don't want to take the tour now you can always start it by opening the Help drawer in the bottom left corner.
",
+ "type": "intro"
+ },
+ {
+ "element": "#applications",
+ "elementPreventClick": true,
+ "title": "Main Menu",
+ "content": "This is the main menu in Umbraco backoffice. Here you can navigate betweeen the different sections, see your user profile and open the help drawer",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "[data-element='section-content']",
+ "elementPreventClick": true,
+ "title": "Sections",
+ "content": "Each area in Umbraco is called a Section. Right now you are in the Content section, when you want to go to another section simply click on the appropriate icon in the main menu and you'll be there in no time.",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "#tree",
+ "elementPreventClick": true,
+ "title": "The Tree",
+ "content": "
This is the Tree and is the main navigation inside a section.
In the Content section the tree is called the Content tree and here you can navigate the content of your website.
A dashboard is the main view you are presented with when entering a section within the backoffice, and can be used to show valuable information to the users of the system.
Notice that some sections have multiple dashboards.
"
+ },
+ {
+ "element": "[data-element='global-search-field']",
+ "title": "Search",
+ "content": "The search allows you to quickly find whatever you're looking for across sections within Umbraco."
+ },
+ {
+ "element": "#applications [data-element='section-user']",
+ "title": "User profile",
+ "content": "Click on your user avatar to open the user profile dialog.",
+ "event": "click",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "[data-element~='overlay-user']",
+ "elementPreventClick": true,
+ "title": "User profile",
+ "content": "
Here you can see details about your user, what Umbraco version the site is running, change your password and log out of Umbraco.
In the User section you will be able to do more advanced user management.
"
+ },
+ {
+ "element": "[data-element~='overlay-user'] [data-element='button-overlayClose']",
+ "title": "User profile",
+ "content": "Let's close the user profile again",
+ "event": "click"
+ },
+ {
+ "element": "#applications [data-element='section-help']",
+ "title": "Help",
+ "content": "If you ever find yourself in trouble click here to open the help drawer.",
+ "event": "click",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "[data-element='drawer']",
+ "elementPreventClick": true,
+ "title": "Help",
+ "content": "
In the help drawer you will find articles and videos related to the section you are using.
This is also where you will find the next tour on how to get started with Umbraco.
",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "[data-element='drawer'] [data-element='help-tours']",
+ "title": "Tours",
+ "content": "To continue your journey on getting started with Umbraco, you can find more tours right here."
+ }
+ ]
+ },
+ {
+ "name": "Create document type",
+ "alias": "umbIntroCreateDocType",
+ "group": "Getting Started",
+ "groupOrder": 100,
+ "requiredSections": [
+ "content",
+ "media",
+ "settings",
+ "developer",
+ "users",
+ "member",
+ "forms"
+ ],
+ "steps": [
+ {
+ "title": "Create your first Document Type",
+ "content": "
Step 1 of any site is to create a Document Type. A Document Type is a template for content. For each type of content you want to create you'll create a Document Type. This will define were content based on this Document Type can be created, how many properties it holds and what the input method should be for these properties.
When you have at least one Document type in place you can start creating content and this content can the be used in a template.
In this tour you will learn how to set up a basic Document Type with a property to enter a short text.
",
+ "type": "intro"
+ },
+ {
+ "element": "#applications [data-element='section-settings']",
+ "title": "Navigate to the Settings sections",
+ "content": "In the Settings section you can create and manage Document types.",
+ "event": "click",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "#tree [data-element='tree-item-documentTypes']",
+ "title": "Create Document Type",
+ "content": "
Hover the Document Type tree and click the three small dots to open the context menu.
Click Document Type to create a new document type with a template. The template will be automatically created and set as the default template for this Document Type
You will use the template in a later tour render content.
Your Document Type needs a name. Enter Home Page in the field and click Next.",
+ "view": "doctypename"
+ },
+ {
+ "element": "[data-element='editor-description']",
+ "title": "Enter a description",
+ "content": "
A description helps to pick the right document type when creating content.
Write a description to our Home page. It could be:
The home page of the website
"
+ },
+ {
+ "element": "[data-element='group-add']",
+ "title": "Add tab",
+ "content": "Tabs are used to organize properties on content in the Content section. Click Add new tab to add a tab.",
+ "event": "click"
+ },
+ {
+ "element": "[data-element='group-name-field']",
+ "title": "Name the tab",
+ "content": "
Enter Home in the tab name.
You can name a tab anything you want and if you have a lot of properties it can be useful to add multiple tabs.
Properties are the different input fields on a content page.
On our Home Page we wan't to add a welcome text.
Click Add property to open the property dialog.
",
+ "event": "click"
+ },
+ {
+ "element": "[data-element~='overlay-property-settings'] [data-element='property-name']",
+ "title": "Name the property",
+ "content": "Enter Welcome Text as the name for the property.",
+ "view": "propertyname"
+ },
+ {
+ "element": "[data-element~='overlay-property-settings'] [data-element='property-description']",
+ "title": "Enter a description",
+ "content": "
A description will help to fill in the right content.
Enter a description for the property editor. It could be:
Write a nice introduction text so the visitors feel welcome
"
+ },
+ {
+ "element": "[data-element~='overlay-property-settings'] [data-element='editor-add']",
+ "title": "Add editor",
+ "content": "When you add an editor you choose what the input method for this property will be. Click Add editor to open the editor picker dialog.",
+ "event": "click"
+ },
+ {
+ "element": "[data-element~='overlay-editor-picker']",
+ "elementPreventClick": true,
+ "title": "Editor picker",
+ "content": "
In the editor picker dialog we can pick one of the many build in editor.
You can choose from preconfigured data types (Reuse) or create a new configuration (Available editors)
"
+ },
+ {
+ "element": "[data-element~='overlay-editor-picker'] [data-element='editor-Textarea']",
+ "title": "Select editor",
+ "content": "Select the Textarea editor. This will add a textarea to the Welcome Text property.",
+ "event": "click"
+ },
+ {
+ "element": "[data-element~='overlay-editor-settings']",
+ "elementPreventClick": true,
+ "title": "Editor settings",
+ "content": "Each property editor can have individual settings. For the textarea editor you can set a charachter limit but in this case it is not needed"
+ },
+ {
+ "element": "[data-element~='overlay-editor-settings'] [data-element='button-overlaySubmit']",
+ "title": "Save editor",
+ "content": "Click Submit to save the editor.",
+ "event": "click"
+ },
+ {
+ "element": "[data-element~='overlay-property-settings'] [data-element='button-overlaySubmit']",
+ "title": "Add property to document type",
+ "content": "Click Submit to add the property to the document type.",
+ "event": "click"
+ },
+ {
+ "element": "[data-element='button-save']",
+ "title": "Save the document type",
+ "content": "All we need now is to save the document type. Click Save to create and save your new document type.",
+ "event": "click"
+ }
+ ]
+ },
+ {
+ "name": "Create Content",
+ "alias": "umbIntroCreateContent",
+ "group": "Getting Started",
+ "groupOrder": 100,
+ "requiredSections": [
+ "content",
+ "media",
+ "settings",
+ "developer",
+ "users",
+ "member",
+ "forms"
+ ],
+ "steps": [
+ {
+ "title": "Creating your first content node",
+ "content": "
In this tour you will learn how to create the home page for your website. It will use the Home Page Document type you created in the previous tour.
A website would be boring without media content. In Umbraco you can manage all your images, documents, videos etc. in the Media section. Here you can upload and organise your media items and see details about each item.
In this tour you will learn how to upload and organise your Media library in Umbraco. It will also show you how to view details about a specific media item.
",
+ "type": "intro"
+ },
+ {
+ "element": "#applications [data-element='section-media']",
+ "title": "Navigate to the Media section",
+ "content": "The media section is where you manage all your media items.",
+ "event": "click",
+ "backdropOpacity": 0.6
+ },
+ {
+ "element": "#tree [data-element='tree-root']",
+ "title": "Create a new folder",
+ "content": "
First create a folder for your images. Hover the media root node and click the three small dots on the right side of the item.
You will also find other details about the image, like the size.
Media items work in much the same way as content. So you can add extra properties to an image by creating or editing the Media types in the Settings section.
"
+ },
+ {
+ "element": "[data-element='editor-media'] [data-element='tab-_umb_infoTab']",
+ "title": "Info",
+ "content": "Like the content section you can also find default information about the media item. You will find these under the info tab.",
+ "event": "click"
+ },
+ {
+ "element": "[data-element='editor-media'] [data-element='node-info-urls']",
+ "title": "Link to media",
+ "content": "The path to the media item..."
+ },
+ {
+ "element": "[data-element='editor-media'] [data-element='node-info-update-date']",
+ "title": "Last edited",
+ "content": "...and information about when the media item has been created and edited."
+ },
+ {
+ "element": "[data-element='editor-container']",
+ "elementPreventClick": true,
+ "title": "Using media items",
+ "content": "You can reference a media item directly in a template by using the path or try adding a Media Picker to a document type property so you can select media items from the content section."
+ }
+ ]
+ }
+]
diff --git a/src/Umbraco.Web.UI/config/imageprocessor/processing.config b/src/Umbraco.Web.UI/config/imageprocessor/processing.config
index b6813cff77..a52661a196 100644
--- a/src/Umbraco.Web.UI/config/imageprocessor/processing.config
+++ b/src/Umbraco.Web.UI/config/imageprocessor/processing.config
@@ -15,6 +15,7 @@
+
diff --git a/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config b/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config
index 1811957e7c..8c39f70e51 100644
--- a/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config
+++ b/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config
@@ -248,7 +248,7 @@ img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|al
thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],
-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],
-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],
--h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],
+-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],
dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],
param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*]]]>
diff --git a/src/Umbraco.Web.UI/config/tinyMceConfig.config b/src/Umbraco.Web.UI/config/tinyMceConfig.config
index 1811957e7c..f45bdc7f49 100644
--- a/src/Umbraco.Web.UI/config/tinyMceConfig.config
+++ b/src/Umbraco.Web.UI/config/tinyMceConfig.config
@@ -248,7 +248,7 @@ img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|al
thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],
-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],
-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],
--h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],
+-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],
dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],
param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*]]]>
@@ -271,4 +271,4 @@ param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|cla
}
-
\ No newline at end of file
+
diff --git a/src/Umbraco.Web.UI/config/trees.config b/src/Umbraco.Web.UI/config/trees.config
index c97cf5363d..b647bcbcb6 100644
--- a/src/Umbraco.Web.UI/config/trees.config
+++ b/src/Umbraco.Web.UI/config/trees.config
@@ -22,7 +22,7 @@
-
+
@@ -38,5 +38,5 @@
-
+
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI/config/umbracoSettings.Release.config b/src/Umbraco.Web.UI/config/umbracoSettings.Release.config
index 4e0c24434c..3f06c398f5 100644
--- a/src/Umbraco.Web.UI/config/umbracoSettings.Release.config
+++ b/src/Umbraco.Web.UI/config/umbracoSettings.Release.config
@@ -1,13 +1,17 @@
-
-
+
+
+
+
+
+
@@ -38,10 +42,6 @@
In Preview Mode - click to end]]>
-
-
- 1800
-
- assets/img/installer.jpg
+ assets/img/installer.jpg
+
diff --git a/src/Umbraco.Web.UI/config/umbracoSettings.config b/src/Umbraco.Web.UI/config/umbracoSettings.config
index b98d36a9a4..9b06e2924d 100644
--- a/src/Umbraco.Web.UI/config/umbracoSettings.config
+++ b/src/Umbraco.Web.UI/config/umbracoSettings.config
@@ -1,5 +1,10 @@
+
+
+
+
+
diff --git a/src/Umbraco.Web.UI/umbraco/Install/Views/Index.cshtml b/src/Umbraco.Web.UI/umbraco/Install/Views/Index.cshtml
index 666f6a5b5a..bfbf5c4182 100644
--- a/src/Umbraco.Web.UI/umbraco/Install/Views/Index.cshtml
+++ b/src/Umbraco.Web.UI/umbraco/Install/Views/Index.cshtml
@@ -1,4 +1,5 @@
-@using Umbraco.Web
+@using Umbraco.Core.Configuration
+@using Umbraco.Web
@using Umbraco.Web.Install.Controllers
@{
Layout = null;
diff --git a/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml b/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml
index 7b1f83115f..9f1ad8dcfa 100644
--- a/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml
+++ b/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml
@@ -42,30 +42,56 @@
+
Umbraco
@Html.RenderCssHere(
new BasicPath("Umbraco", IOHelper.ResolveUrl(SystemDirectories.Umbraco)),
new BasicPath("UmbracoClient", IOHelper.ResolveUrl(SystemDirectories.UmbracoClient)))
-
-
-
-
+
-
+
+
+
+
+
+
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@Html.BareMinimumServerVariablesScript(Url, Url.Action("ExternalLogin", "BackOffice", new { area = ViewBag.UmbracoPath }))