(src => src.Alias, dto => dto.Alias);
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 499106c9d3..d41b994b49 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -407,6 +407,7 @@
+
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsections.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsections.directive.js
index 153a484e01..2527c158f0 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsections.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsections.directive.js
@@ -94,7 +94,17 @@ function sectionsDirective($timeout, $window, navigationService, treeService, se
navigationService.showHelpDialog();
};
- scope.sectionClick = function (section) {
+ scope.sectionClick = function (event, section) {
+
+ if (event.ctrlKey ||
+ event.shiftKey ||
+ event.metaKey || // apple
+ (event.button && event.button === 1) // middle click, >IE9 + everyone else
+ ) {
+ return;
+ }
+
+
if (navigationService.userDialog) {
navigationService.userDialog.close();
}
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/grid/grid.rte.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/grid/grid.rte.directive.js
index 257901fade..d125258157 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/grid/grid.rte.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/grid/grid.rte.directive.js
@@ -56,7 +56,7 @@ angular.module("umbraco.directives")
if(scope.configuration && scope.configuration.stylesheets){
angular.forEach(scope.configuration.stylesheets, function(stylesheet, key){
- stylesheets.push("/css/" + stylesheet + ".css");
+ stylesheets.push(Umbraco.Sys.ServerVariables.umbracoSettings.cssPath + "/" + stylesheet + ".css");
await.push(stylesheetResource.getRulesByName(stylesheet).then(function (rules) {
angular.forEach(rules, function (rule) {
var r = {};
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtreeitem.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtreeitem.directive.js
index c46bca74a5..f8a1284c69 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtreeitem.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtreeitem.directive.js
@@ -40,7 +40,7 @@ angular.module("umbraco.directives")
//'' +
'' +
'' +
- '' +
+ '' +
//NOTE: These are the 'option' elipses
'' +
'' +
@@ -148,8 +148,17 @@ angular.module("umbraco.directives")
and emits it as a treeNodeSelect element if there is a callback object
defined on the tree
*/
- scope.select = function(n, ev) {
+ scope.select = function (n, ev) {
+ if (ev.ctrlKey ||
+ ev.shiftKey ||
+ ev.metaKey || // apple
+ (ev.button && ev.button === 1) // middle click, >IE9 + everyone else
+ ) {
+ return;
+ }
+
emitEvent("treeNodeSelect", { element: element, tree: scope.tree, node: n, event: ev });
+ ev.preventDefault();
};
/**
diff --git a/src/Umbraco.Web.UI.Client/src/less/application/grid.less b/src/Umbraco.Web.UI.Client/src/less/application/grid.less
index 0687b9213b..a33dbb56a3 100644
--- a/src/Umbraco.Web.UI.Client/src/less/application/grid.less
+++ b/src/Umbraco.Web.UI.Client/src/less/application/grid.less
@@ -155,7 +155,7 @@ body {
}
#speechbubble {
- z-index: 1000;
+ z-index: 1060;
position: absolute;
bottom: 100px;
left: 0;
diff --git a/src/Umbraco.Web.UI.Client/src/less/main.less b/src/Umbraco.Web.UI.Client/src/less/main.less
index 0e1fcc633b..56e77342b0 100644
--- a/src/Umbraco.Web.UI.Client/src/less/main.less
+++ b/src/Umbraco.Web.UI.Client/src/less/main.less
@@ -148,6 +148,11 @@ h5{
padding-top: 5px;
margin-left: 240px;
}
+
+.umb-user-panel .controls-row {
+ margin-left: 0px;
+}
+
.controls-row label {
display: inline-block
}
@@ -511,4 +516,8 @@ height:1px;
margin: 10px 0;
overflow: hidden;
-}
.umb-loader-wrapper.-bottom {
bottom: 0;
}
\ No newline at end of file
+}
+
+.umb-loader-wrapper.-bottom {
+ bottom: 0;
+}
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
index ad14051696..b29388be23 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
@@ -33,11 +33,12 @@ angular.module("umbraco")
$scope.submitFolder = function(e) {
if (e.keyCode === 13) {
e.preventDefault();
- $scope.showFolderInput = false;
-
+
mediaResource
.addFolder($scope.newFolderName, $scope.currentFolder.id)
.then(function(data) {
+ $scope.showFolderInput = false;
+ $scope.newFolderName = "";
//we've added a new folder so lets clear the tree cache for that specific item
treeService.clearCache({
@@ -78,7 +79,7 @@ angular.module("umbraco")
$scope.currentFolder = folder;
};
-
+
$scope.clickHandler = function(image, ev, select) {
ev.preventDefault();
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html
index 3f0ba7c63c..cf9b5aba2d 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html
@@ -107,7 +107,8 @@
ng-show="showFolderInput"
ng-model="newFolderName"
ng-keydown="submitFolder($event)"
- on-blur="showFolderInput = false">
+ on-blur="showFolderInput = false"
+ focus-when="{{showFolderInput}}">
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js
index 3eed9f707d..bac8fcded7 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js
@@ -1,167 +1,167 @@
angular.module("umbraco")
- .controller("Umbraco.Dialogs.UserController", function ($scope, $location, $timeout, userService, historyService, eventsService, externalLoginInfo, authResource, currentUserResource, formHelper) {
-
- $scope.history = historyService.getCurrent();
- $scope.version = Umbraco.Sys.ServerVariables.application.version + " assembly: " + Umbraco.Sys.ServerVariables.application.assemblyVersion;
- $scope.showPasswordFields = false;
- $scope.changePasswordButtonState = "init";
-
- $scope.externalLoginProviders = externalLoginInfo.providers;
- $scope.externalLinkLoginFormAction = Umbraco.Sys.ServerVariables.umbracoUrls.externalLinkLoginsUrl;
- var evts = [];
- evts.push(eventsService.on("historyService.add", function (e, args) {
- $scope.history = args.all;
- }));
- evts.push(eventsService.on("historyService.remove", function (e, args) {
- $scope.history = args.all;
- }));
- evts.push(eventsService.on("historyService.removeAll", function (e, args) {
- $scope.history = [];
- }));
-
- $scope.logout = function () {
-
- //Add event listener for when there are pending changes on an editor which means our route was not successful
- var pendingChangeEvent = eventsService.on("valFormManager.pendingChanges", function (e, args) {
- //one time listener, remove the event
- pendingChangeEvent();
- $scope.close();
- });
-
-
- //perform the path change, if it is successful then the promise will resolve otherwise it will fail
- $scope.close();
- $location.path("/logout");
- };
-
- $scope.gotoHistory = function (link) {
- $location.path(link);
- $scope.close();
- };
-
- //Manually update the remaining timeout seconds
- function updateTimeout() {
- $timeout(function () {
- if ($scope.remainingAuthSeconds > 0) {
- $scope.remainingAuthSeconds--;
- $scope.$digest();
- //recurse
- updateTimeout();
- }
-
- }, 1000, false); // 1 second, do NOT execute a global digest
- }
-
- function updateUserInfo() {
- //get the user
- userService.getCurrentUser().then(function (user) {
- $scope.user = user;
- if ($scope.user) {
- $scope.remainingAuthSeconds = $scope.user.remainingAuthSeconds;
- $scope.canEditProfile = _.indexOf($scope.user.allowedSections, "users") > -1;
- //set the timer
- updateTimeout();
-
- authResource.getCurrentUserLinkedLogins().then(function(logins) {
- //reset all to be un-linked
- for (var provider in $scope.externalLoginProviders) {
- $scope.externalLoginProviders[provider].linkedProviderKey = undefined;
- }
-
- //set the linked logins
- for (var login in logins) {
- var found = _.find($scope.externalLoginProviders, function (i) {
- return i.authType == login;
- });
- if (found) {
- found.linkedProviderKey = logins[login];
- }
- }
- });
- }
- });
- }
-
- $scope.unlink = function (e, loginProvider, providerKey) {
- var result = confirm("Are you sure you want to unlink this account?");
- if (!result) {
- e.preventDefault();
- return;
- }
-
- authResource.unlinkLogin(loginProvider, providerKey).then(function (a, b, c) {
- updateUserInfo();
- });
- }
-
- updateUserInfo();
-
- //remove all event handlers
- $scope.$on('$destroy', function () {
- for (var e = 0; e < evts.length; e++) {
- evts[e]();
- }
-
- });
-
- /* ---------- UPDATE PASSWORD ---------- */
-
- //create the initial model for change password property editor
- $scope.changePasswordModel = {
- alias: "_umb_password",
- view: "changepassword",
- config: {},
- value: {}
- };
-
- //go get the config for the membership provider and add it to the model
- currentUserResource.getMembershipProviderConfig().then(function(data) {
- $scope.changePasswordModel.config = data;
- //ensure the hasPassword config option is set to true (the user of course has a password already assigned)
- //this will ensure the oldPassword is shown so they can change it
- // disable reset password functionality beacuse it does not make sense inside the backoffice
- $scope.changePasswordModel.config.hasPassword = true;
- $scope.changePasswordModel.config.disableToggle = true;
- $scope.changePasswordModel.config.enableReset = false;
- });
-
- $scope.changePassword = function() {
-
- if (formHelper.submitForm({ scope: $scope })) {
-
- $scope.changePasswordButtonState = "busy";
-
- currentUserResource.changePassword($scope.changePasswordModel.value).then(function(data) {
-
- //if the password has been reset, then update our model
- if (data.value) {
- $scope.changePasswordModel.value.generatedPassword = data.value;
- }
-
- formHelper.resetForm({ scope: $scope, notifications: data.notifications });
-
- $scope.changePasswordButtonState = "success";
-
- }, function (err) {
-
- formHelper.handleError(err);
-
- $scope.changePasswordButtonState = "error";
-
- });
+ .controller("Umbraco.Dialogs.UserController", function ($scope, $location, $timeout, userService, historyService, eventsService, externalLoginInfo, authResource, currentUserResource, formHelper) {
- }
-
- };
-
- $scope.togglePasswordFields = function() {
- clearPasswordFields();
- $scope.showPasswordFields = !$scope.showPasswordFields;
- }
-
- function clearPasswordFields() {
- $scope.changePasswordModel.value.newPassword = "";
- $scope.changePasswordModel.confirm = "";
- }
-
- });
+ $scope.history = historyService.getCurrent();
+ $scope.version = Umbraco.Sys.ServerVariables.application.version + " assembly: " + Umbraco.Sys.ServerVariables.application.assemblyVersion;
+ $scope.showPasswordFields = false;
+ $scope.changePasswordButtonState = "init";
+
+ $scope.externalLoginProviders = externalLoginInfo.providers;
+ $scope.externalLinkLoginFormAction = Umbraco.Sys.ServerVariables.umbracoUrls.externalLinkLoginsUrl;
+ var evts = [];
+ evts.push(eventsService.on("historyService.add", function (e, args) {
+ $scope.history = args.all;
+ }));
+ evts.push(eventsService.on("historyService.remove", function (e, args) {
+ $scope.history = args.all;
+ }));
+ evts.push(eventsService.on("historyService.removeAll", function (e, args) {
+ $scope.history = [];
+ }));
+
+ $scope.logout = function () {
+
+ //Add event listener for when there are pending changes on an editor which means our route was not successful
+ var pendingChangeEvent = eventsService.on("valFormManager.pendingChanges", function (e, args) {
+ //one time listener, remove the event
+ pendingChangeEvent();
+ $scope.close();
+ });
+
+
+ //perform the path change, if it is successful then the promise will resolve otherwise it will fail
+ $scope.close();
+ $location.path("/logout");
+ };
+
+ $scope.gotoHistory = function (link) {
+ $location.path(link);
+ $scope.close();
+ };
+
+ //Manually update the remaining timeout seconds
+ function updateTimeout() {
+ $timeout(function () {
+ if ($scope.remainingAuthSeconds > 0) {
+ $scope.remainingAuthSeconds--;
+ $scope.$digest();
+ //recurse
+ updateTimeout();
+ }
+
+ }, 1000, false); // 1 second, do NOT execute a global digest
+ }
+
+ function updateUserInfo() {
+ //get the user
+ userService.getCurrentUser().then(function (user) {
+ $scope.user = user;
+ if ($scope.user) {
+ $scope.remainingAuthSeconds = $scope.user.remainingAuthSeconds;
+ $scope.canEditProfile = _.indexOf($scope.user.allowedSections, "users") > -1;
+ //set the timer
+ updateTimeout();
+
+ authResource.getCurrentUserLinkedLogins().then(function(logins) {
+ //reset all to be un-linked
+ for (var provider in $scope.externalLoginProviders) {
+ $scope.externalLoginProviders[provider].linkedProviderKey = undefined;
+ }
+
+ //set the linked logins
+ for (var login in logins) {
+ var found = _.find($scope.externalLoginProviders, function (i) {
+ return i.authType == login;
+ });
+ if (found) {
+ found.linkedProviderKey = logins[login];
+ }
+ }
+ });
+ }
+ });
+ }
+
+ $scope.unlink = function (e, loginProvider, providerKey) {
+ var result = confirm("Are you sure you want to unlink this account?");
+ if (!result) {
+ e.preventDefault();
+ return;
+ }
+
+ authResource.unlinkLogin(loginProvider, providerKey).then(function (a, b, c) {
+ updateUserInfo();
+ });
+ }
+
+ updateUserInfo();
+
+ //remove all event handlers
+ $scope.$on('$destroy', function () {
+ for (var e = 0; e < evts.length; e++) {
+ evts[e]();
+ }
+
+ });
+
+ /* ---------- UPDATE PASSWORD ---------- */
+
+ //create the initial model for change password property editor
+ $scope.changePasswordModel = {
+ alias: "_umb_password",
+ view: "changepassword",
+ config: {},
+ value: {}
+ };
+
+ //go get the config for the membership provider and add it to the model
+ currentUserResource.getMembershipProviderConfig().then(function(data) {
+ $scope.changePasswordModel.config = data;
+ //ensure the hasPassword config option is set to true (the user of course has a password already assigned)
+ //this will ensure the oldPassword is shown so they can change it
+ // disable reset password functionality beacuse it does not make sense inside the backoffice
+ $scope.changePasswordModel.config.hasPassword = true;
+ $scope.changePasswordModel.config.disableToggle = true;
+ $scope.changePasswordModel.config.enableReset = false;
+ });
+
+ $scope.changePassword = function() {
+
+ if (formHelper.submitForm({ scope: $scope })) {
+
+ $scope.changePasswordButtonState = "busy";
+
+ currentUserResource.changePassword($scope.changePasswordModel.value).then(function(data) {
+
+ //if the password has been reset, then update our model
+ if (data.value) {
+ $scope.changePasswordModel.value.generatedPassword = data.value;
+ }
+
+ formHelper.resetForm({ scope: $scope, notifications: data.notifications });
+
+ $scope.changePasswordButtonState = "success";
+
+ }, function (err) {
+
+ formHelper.handleError(err);
+
+ $scope.changePasswordButtonState = "error";
+
+ });
+
+ }
+
+ };
+
+ $scope.togglePasswordFields = function() {
+ clearPasswordFields();
+ $scope.showPasswordFields = !$scope.showPasswordFields;
+ }
+
+ function clearPasswordFields() {
+ $scope.changePasswordModel.value.newPassword = "";
+ $scope.changePasswordModel.confirm = "";
+ }
+
+ });
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
index 8627412608..3b6d0895c6 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
@@ -82,38 +82,38 @@
-
-
-
-
Change password
-
-
-
-
+
+
+
+
Change password
+
+
+
+
Umbraco version {{version}}
-
-
+
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/application/umb-sections.html b/src/Umbraco.Web.UI.Client/src/views/components/application/umb-sections.html
index a8ed1749df..d88e208cea 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/application/umb-sections.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/application/umb-sections.html
@@ -9,7 +9,7 @@
{{section.name}}
@@ -36,9 +36,9 @@
-
+
{{section.name}}
diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/ChangePassword.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/ChangePassword.html
new file mode 100644
index 0000000000..7008012a9e
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/ChangePassword.html
@@ -0,0 +1,18 @@
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
index b63334e25b..f6dd2a21c5 100644
--- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
@@ -49,7 +49,8 @@ function contentPickerController($scope, dialogService, entityResource, editorSt
//the default pre-values
var defaultConfig = {
multiPicker: false,
- showEditButton: false,
+ showEditButton: false,
+ showPathOnHover: false,
startNode: {
query: "",
type: "content",
@@ -65,6 +66,7 @@ function contentPickerController($scope, dialogService, entityResource, editorSt
//Umbraco persists boolean for prevalues as "0" or "1" so we need to convert that!
$scope.model.config.multiPicker = ($scope.model.config.multiPicker === "1" ? true : false);
$scope.model.config.showEditButton = ($scope.model.config.showEditButton === "1" ? true : false);
+ $scope.model.config.showPathOnHover = ($scope.model.config.showPathOnHover === "1" ? true : false);
var entityType = $scope.model.config.startNode.type === "member"
? "Member"
@@ -170,7 +172,7 @@ function contentPickerController($scope, dialogService, entityResource, editorSt
if (currIds.indexOf(item.id) < 0) {
item.icon = iconHelper.convertFromLegacyIcon(item.icon);
- $scope.renderModel.push({ name: item.name, id: item.id, icon: item.icon });
+ $scope.renderModel.push({ name: item.name, id: item.id, icon: item.icon, path: item.path });
}
};
@@ -202,7 +204,7 @@ function contentPickerController($scope, dialogService, entityResource, editorSt
if (entity) {
entity.icon = iconHelper.convertFromLegacyIcon(entity.icon);
- $scope.renderModel.push({ name: entity.name, id: entity.id, icon: entity.icon });
+ $scope.renderModel.push({ name: entity.name, id: entity.id, icon: entity.icon, path: entity.path });
}
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.html
index ce73e0b483..f2b741d8dc 100644
--- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.html
@@ -5,19 +5,16 @@
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
index 45812ceef2..80545ff336 100644
--- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
@@ -64,8 +64,7 @@ angular.module("umbraco")
//queue rules loading
angular.forEach(editorConfig.stylesheets, function (val, key) {
- stylesheets.push("../css/" + val + ".css?" + new Date().getTime());
-
+ stylesheets.push(Umbraco.Sys.ServerVariables.umbracoSettings.cssPath + "/" + val + ".css?" + new Date().getTime());
await.push(stylesheetResource.getRulesByName(val).then(function (rules) {
angular.forEach(rules, function (rule) {
var r = {};
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/umbraco/config/lang/da.xml
index 20ba032010..6617863e99 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/da.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/da.xml
@@ -926,6 +926,7 @@ Mange hilsner fra Umbraco robotten
Brugertyper
Forfatter
Oversætter
+ Skift
Din profil
Din historik
Session udløber
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml
index 58eab32bed..48a42c9c99 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml
@@ -1061,6 +1061,7 @@ To manage your website, simply open the Umbraco back office and start adding con
User types
Writer
Translator
+ Change
Your profile
Your recent history
Session expires in
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
index 6e7babba44..3074dd8b48 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
@@ -1058,6 +1058,7 @@ To manage your website, simply open the Umbraco back office and start adding con
User types
Writer
Translator
+ Change
Your profile
Your recent history
Session expires in
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
index 8883b93710..3907b43771 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
@@ -985,6 +985,7 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de
Gebruikerstype
Gebruikerstypes
Auteur
+ Wijzig
Je profiel
Je recente historie
diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs
index 203d027539..fb7a6a5af9 100644
--- a/src/Umbraco.Web/Editors/BackOfficeController.cs
+++ b/src/Umbraco.Web/Editors/BackOfficeController.cs
@@ -341,6 +341,7 @@ namespace Umbraco.Web.Editors
string.Join(",", UmbracoConfig.For.UmbracoSettings().Content.ImageFileTypes)
},
{"keepUserLoggedIn", UmbracoConfig.For.UmbracoSettings().Security.KeepUserLoggedIn},
+ {"cssPath", IOHelper.ResolveUrl(SystemDirectories.Css).TrimEnd('/')},
}
},
{
diff --git a/src/Umbraco.Web/Editors/MemberController.cs b/src/Umbraco.Web/Editors/MemberController.cs
index 7d231c46f2..4405f257c4 100644
--- a/src/Umbraco.Web/Editors/MemberController.cs
+++ b/src/Umbraco.Web/Editors/MemberController.cs
@@ -6,6 +6,7 @@ using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
+using System.Web;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using System.Web.Security;
@@ -284,6 +285,9 @@ namespace Umbraco.Web.Editors
case ContentSaveAction.SaveNew:
MembershipCreateStatus status;
CreateWithMembershipProvider(contentItem, out status);
+
+ // save the ID of the creator
+ contentItem.PersistedContent.CreatorId = Security.CurrentUser.Id;
break;
default:
//we don't support anything else for members
diff --git a/src/Umbraco.Web/PropertyEditors/ContentPickerPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/ContentPickerPropertyEditor.cs
index d7f2808c2c..8e83d0ae06 100644
--- a/src/Umbraco.Web/PropertyEditors/ContentPickerPropertyEditor.cs
+++ b/src/Umbraco.Web/PropertyEditors/ContentPickerPropertyEditor.cs
@@ -13,7 +13,8 @@ namespace Umbraco.Web.PropertyEditors
_internalPreValues = new Dictionary
{
{"showEditButton", "0"},
- {"startNodeId", "-1"}
+ {"startNodeId", "-1"},
+ {"showPathOnHover", "0"}
};
}
@@ -37,6 +38,8 @@ namespace Umbraco.Web.PropertyEditors
[PreValueField("startNodeId", "Start node", "treepicker")]
public int StartNodeId { get; set; }
+ [PreValueField("showPathOnHover", "Show path when hovering items", "boolean")]
+ public bool ShowPathOnHover { get; set; }
}
}
}
\ No newline at end of file
diff --git a/src/umbraco.cms/businesslogic/translation/Translation.cs b/src/umbraco.cms/businesslogic/translation/Translation.cs
index db9d4d4644..7edbfefadd 100644
--- a/src/umbraco.cms/businesslogic/translation/Translation.cs
+++ b/src/umbraco.cms/businesslogic/translation/Translation.cs
@@ -19,13 +19,15 @@ namespace umbraco.cms.businesslogic.translation
public static void MakeNew(CMSNode Node, User User, User Translator, Language Language, string Comment,
bool IncludeSubpages, bool SendEmail)
{
+ // Get translation taskType for obsolete task constructor
+ var taskType = ApplicationContext.Current.Services.TaskService.GetTaskTypeByAlias("toTranslate");
+
// Create pending task
- Task t = new Task();
+ Task t = new Task(new Umbraco.Core.Models.Task(taskType));
t.Comment = Comment;
t.Node = Node;
t.ParentUser = User;
t.User = Translator;
- t.Type = new TaskType("toTranslate");
t.Save();
// Add log entry