From 69d97bc984fab59e38f0a77841a73a5607cfb002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 2 Oct 2019 10:28:26 +0200 Subject: [PATCH 01/39] first step for changing the datatype edit view --- .../datatypes/datatype.edit.controller.js | 238 ++++++++++-------- .../src/views/datatypes/edit.html | 104 +++----- .../datatypes/views/datatype.relations.html | 34 +++ .../datatypes/views/datatype.settings.html | 34 +++ .../views/macros/macros.edit.controller.js | 32 +-- 5 files changed, 236 insertions(+), 206 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html create mode 100644 src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js index 6282ecb0b6..7ade362473 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js @@ -6,35 +6,17 @@ * @description * The controller for the content editor */ -function DataTypeEditController($scope, $routeParams, appState, navigationService, dataTypeResource, serverValidationManager, contentEditingHelper, formHelper, editorState, dataTypeHelper, eventsService) { - - //setup scope vars - $scope.page = {}; - $scope.page.loading = false; - $scope.page.nameLocked = false; - $scope.page.menu = {}; - $scope.page.menu.currentSection = appState.getSectionState("currentSection"); - $scope.page.menu.currentNode = null; +function DataTypeEditController($scope, $routeParams, appState, navigationService, dataTypeResource, serverValidationManager, contentEditingHelper, formHelper, editorState, dataTypeHelper, eventsService, localizationService) { + var evts = []; - - //method used to configure the pre-values when we retrieve them from the server - function createPreValueProps(preVals) { - $scope.preValues = []; - for (var i = 0; i < preVals.length; i++) { - $scope.preValues.push({ - hideLabel: preVals[i].hideLabel, - alias: preVals[i].key, - description: preVals[i].description, - label: preVals[i].label, - view: preVals[i].view, - value: preVals[i].value, - config: preVals[i].config - }); - } - } - + var vm = this; + + //setup scope vars + vm.page = {}; + vm.page.loading = false; + //set up the standard data type props - $scope.properties = { + vm.properties = { selectedEditor: { alias: "selectedEditor", description: "Select a property editor", @@ -47,52 +29,51 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic }; //setup the pre-values as props - $scope.preValues = []; - - if ($routeParams.create) { - - $scope.page.loading = true; - $scope.showIdentifier = false; - - //we are creating so get an empty data type item - dataTypeResource.getScaffold($routeParams.id) - .then(function(data) { - - $scope.preValuesLoaded = true; - $scope.content = data; - - setHeaderNameState($scope.content); - - //set a shared state - editorState.set($scope.content); - - $scope.page.loading = false; - + vm.preValues = []; + + + //method used to configure the pre-values when we retrieve them from the server + function createPreValueProps(preVals) { + vm.preValues = []; + for (var i = 0; i < preVals.length; i++) { + vm.preValues.push({ + hideLabel: preVals[i].hideLabel, + alias: preVals[i].key, + description: preVals[i].description, + label: preVals[i].label, + view: preVals[i].view, + value: preVals[i].value, + config: preVals[i].config }); + } } - else { - loadDataType(); + + + function setHeaderNameState(content) { + if(content.isSystem == 1) { + $scope.page.nameLocked = true; + } } - + + function loadDataType() { - $scope.page.loading = true; - - $scope.showIdentifier = true; + vm.page.loading = true; + vm.showIdentifier = true; //we are editing so get the content item from the server dataTypeResource.getById($routeParams.id) .then(function(data) { - $scope.preValuesLoaded = true; - $scope.content = data; + vm.preValuesLoaded = true; + vm.content = data; - createPreValueProps($scope.content.preValues); + createPreValueProps(vm.content.preValues); - setHeaderNameState($scope.content); + setHeaderNameState(vm.content); //share state - editorState.set($scope.content); + editorState.set(vm.content); //in one particular special case, after we've created a new item we redirect back to the edit // route but there might be server validation errors in the collection which we need to display @@ -101,49 +82,21 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic serverValidationManager.notifyAndClearAllSubscriptions(); navigationService.syncTree({ tree: "datatypes", path: data.path }).then(function (syncArgs) { - $scope.page.menu.currentNode = syncArgs.node; + vm.page.menu.currentNode = syncArgs.node; }); - $scope.page.loading = false; + vm.page.loading = false; }); } - $scope.$watch("content.selectedEditor", function (newVal, oldVal) { - - //when the value changes, we need to dynamically load in the new editor - if (newVal && (newVal != oldVal && (oldVal || $routeParams.create))) { - //we are editing so get the content item from the server - var currDataTypeId = $routeParams.create ? undefined : $routeParams.id; - dataTypeResource.getPreValues(newVal, currDataTypeId) - .then(function (data) { - $scope.preValuesLoaded = true; - $scope.content.preValues = data; - createPreValueProps($scope.content.preValues); - - setHeaderNameState($scope.content); - - //share state - editorState.set($scope.content); - }); - } - }); - - function setHeaderNameState(content) { - - if(content.isSystem == 1) { - $scope.page.nameLocked = true; - } - - } - - $scope.save = function() { + function saveDataType() { if (formHelper.submitForm({ scope: $scope })) { - $scope.page.saveButtonState = "busy"; + vm.page.saveButtonState = "busy"; - dataTypeResource.save($scope.content, $scope.preValues, $routeParams.create) + dataTypeResource.save(vm.content, vm.preValues, $routeParams.create) .then(function(data) { formHelper.resetForm({ scope: $scope }); @@ -156,18 +109,18 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic } }); - setHeaderNameState($scope.content); + setHeaderNameState(vm.content); //share state - editorState.set($scope.content); + editorState.set(vm.content); navigationService.syncTree({ tree: "datatypes", path: data.path, forceReload: true }).then(function (syncArgs) { - $scope.page.menu.currentNode = syncArgs.node; + vm.page.menu.currentNode = syncArgs.node; }); - $scope.page.saveButtonState = "success"; + vm.page.saveButtonState = "success"; - dataTypeHelper.rebindChangedProperties($scope.content, data); + dataTypeHelper.rebindChangedProperties(vm.content, data); }, function(err) { @@ -177,25 +130,108 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic err: err }); - $scope.page.saveButtonState = "error"; + vm.page.saveButtonState = "error"; //share state - editorState.set($scope.content); + editorState.set(vm.content); }); } }; - + + vm.save = saveDataType; + evts.push(eventsService.on("app.refreshEditor", function(name, error) { loadDataType(); })); - + //ensure to unregister from all events! $scope.$on('$destroy', function () { for (var e in evts) { eventsService.unsubscribe(evts[e]); } }); + + + + + + + + + function init() { + + $scope.$watch("vm.content.selectedEditor", function (newVal, oldVal) { + + //when the value changes, we need to dynamically load in the new editor + if (newVal && (newVal != oldVal && (oldVal || $routeParams.create))) { + //we are editing so get the content item from the server + var currDataTypeId = $routeParams.create ? undefined : $routeParams.id; + dataTypeResource.getPreValues(newVal, currDataTypeId) + .then(function (data) { + vm.preValuesLoaded = true; + vm.content.preValues = data; + createPreValueProps(vm.content.preValues); + + setHeaderNameState(vm.content); + + //share state + editorState.set(vm.content); + }); + } + }); + + if ($routeParams.create) { + + vm.page.loading = true; + vm.showIdentifier = false; + + //we are creating so get an empty data type item + dataTypeResource.getScaffold($routeParams.id) + .then(function(data) { + + vm.preValuesLoaded = true; + vm.content = data; + + setHeaderNameState(vm.content); + + //set a shared state + editorState.set(vm.content); + + vm.page.loading = false; + + }); + } + else { + loadDataType(); + } + + var labelKeys = [ + "general_settings", + "macro_parameters" + ]; + + localizationService.localizeMany(labelKeys).then(function (values) { + + vm.page.navigation = [ + { + "name": values[0], + "alias": "settings", + "icon": "icon-settings", + "view": "views/datatypes/views/datatype.settings.html", + "active": true + }, + { + "name": values[1], + "alias": "parameters", + "icon": "icon-list", + "view": "views/datatypes/views/datatype.relations.html" + } + ]; + }); + } + + init(); } diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/edit.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/edit.html index 2f061de83a..0bb2b01e31 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/edit.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/edit.html @@ -1,81 +1,33 @@ -
+
- +
+ + + + - + + + + - + + + + + + + + - - - - - - - - - - - -
{{content.id}}
- {{content.key}} -
- - -
- - - Required - -
- -
- - -
{{content.selectedEditor}}
-
- - - - - -
- -
- -
- - - - - - - - - - - - - -
- -
diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html new file mode 100644 index 0000000000..43266ddafc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -0,0 +1,34 @@ + + + + + +
{{vm.content.id}}
+ {{vm.content.key}} +
+ + +
+ + + Required + +
+ +
+ + +
{{vm.content.selectedEditor}}
+
+ + + + + +
+ +
diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html new file mode 100644 index 0000000000..d5d49ca8fb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html @@ -0,0 +1,34 @@ + + + + + +
{{content.id}}
+ {{content.key}} +
+ + +
+ + + Required + +
+ +
+ + +
{{content.selectedEditor}}
+
+ + + + + +
+ +
diff --git a/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js index 79d837e516..dd0dd7499f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js @@ -108,36 +108,10 @@ function MacrosEditController($scope, $q, $routeParams, macroResource, editorSta function init() { vm.page.loading = true; - - vm.promises['partialViews'] = getPartialViews(); - vm.promises['parameterEditors'] = getParameterEditors(); - vm.promises['macro'] = getMacro(); - + vm.views = []; vm.node = null; - - $q.all(vm.promises).then(function (values) { - var keys = Object.keys(values); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - - if (key === 'partialViews') { - vm.views = values[key]; - } - - if (key === 'parameterEditors') { - vm.parameterEditors = values[key]; - } - - if (key === 'macro') { - bindMacro(values[key]); - } - } - - vm.page.loading = false; - }); - + var labelKeys = [ "general_settings", "macro_parameters" @@ -147,7 +121,7 @@ function MacrosEditController($scope, $q, $routeParams, macroResource, editorSta // navigation vm.labels.settings = values[0]; vm.labels.parameters = values[1]; - + vm.page.navigation = [ { "name": vm.labels.settings, From ab1f9f3acb56a4ed55d0c9bc14a02f1d83a342e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 10:41:16 +0200 Subject: [PATCH 02/39] added fake test for this prototype --- .../src/common/resources/datatype.resource.js | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js index 7c4daedd38..f20debc9c3 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js @@ -43,6 +43,112 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { "Failed to retrieve pre values for editor alias " + editorAlias); }, + /** + * @ngdoc method + * @name umbraco.resources.dataTypeResource#getRelations + * @methodOf umbraco.resources.dataTypeResource + * + * @description + * Retrieves relations of a given data type. + * + * ##usage + *
+         * dataTypeResource.getRelation(1234)
+         *    .then(function(relations) {
+         *        alert('its gone!');
+         *    });
+         * 
+ * + * @param {Int} id id of datatype to retrieve relations for + * @returns {Promise} resourcePromise object. + * + */ + getRelations: function (id) { + + return $q((resolve, reject) => { + + +var fakeData = { + "documentTypes": [ + { + "name": "Home", + "alias": "home", + "icon": "icon-home", + "udi": "document-type://B6C7EFA7-1D03-46BF-B6D3-9187EF4CD176", + "id": 1234, + "properties": [ + { + "alias": "bodyText", + "name": "Body Text" + }, + { + "alias": "description", + "name": "Description" + } + ] + }, + { + "name": "News", + "alias": "news", + "icon": "icon-newspaper", + "udi": "document-type://FAB4F78E-530E-4F5D-959A-82441958460C", + "id": 9876, + "properties": [ + { + "alias": "article", + "name": "Article" + } + ] + } + ], + "mediaTypes": [ + { + "name": "Image", + "alias": "image", + "icon": "icon-umb-media", + "udi": "media-type://488152AF-0C03-4F2D-9DE0-FDECC80212AD", + "id": 9999, + "properties": [ + { + "alias": "altText", + "name": "Alt Text" + } + ] + } + ], + "memberTypes": [ + { + "name": "Member", + "alias": "member", + "icon": "icon-people-alt-2", + "udi": "member-type://93773B7C-2D83-4529-92D9-B9759220384C", + "id": 7777, + "properties": [ + { + "alias": "bio", + "name": "Bio" + } + ] + } + ] +}; + + resolve(fakeData); + }); + /* + + TODO: get real data from server! + + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "dataTypeApiBaseUrl", + "GetRelations", + [{ id: id }])), + "Failed to retrieve relations for data type of id " + id); + */ + }, + /** * @ngdoc method * @name umbraco.resources.dataTypeResource#getById From 3ff2996cb9acae20bec31a42d77703ec792dafa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 10:41:41 +0200 Subject: [PATCH 03/39] added a view for datatype relations --- .../datatypes/datatype.edit.controller.js | 12 +- .../views/datatype.relations.controller.js | 39 +++++++ .../datatypes/views/datatype.relations.html | 105 +++++++++++++----- .../datatypes/views/datatype.settings.html | 20 ++-- .../Umbraco/config/lang/en_us.xml | 10 ++ 5 files changed, 146 insertions(+), 40 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js index 7ade362473..bb45968d5b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js @@ -14,7 +14,10 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic //setup scope vars vm.page = {}; vm.page.loading = false; - + vm.page.menu = {}; + vm.page.menu.currentSection = appState.getSectionState("currentSection"); + vm.page.menu.currentNode = null; + //set up the standard data type props vm.properties = { selectedEditor: { @@ -51,7 +54,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic function setHeaderNameState(content) { if(content.isSystem == 1) { - $scope.page.nameLocked = true; + vm.page.nameLocked = true; } } @@ -88,6 +91,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic vm.page.loading = false; }); + } function saveDataType() { @@ -208,7 +212,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic var labelKeys = [ "general_settings", - "macro_parameters" + "editdatatype_relations" ]; localizationService.localizeMany(labelKeys).then(function (values) { @@ -224,7 +228,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic { "name": values[1], "alias": "parameters", - "icon": "icon-list", + "icon": "icon-molecular-network", "view": "views/datatypes/views/datatype.relations.html" } ]; diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js new file mode 100644 index 0000000000..6fdcaf9650 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js @@ -0,0 +1,39 @@ +/** + * @ngdoc controller + * @name Umbraco.Editors.DataType.RelationsController + * @function + * + * @description + * The controller for the relations view of the datatype editor + */ +function DataTypeRelationsController($scope, $routeParams, dataTypeResource) { + + var vm = this; + + vm.relations = {}; + vm.hasRelations = false; + + vm.view = {}; + vm.view.loading = true; + + //we are editing so get the content item from the server + dataTypeResource.getRelations($routeParams.id) + .then(function(data) { + + console.log("got: ", data); + + vm.view.loading = false; + vm.relations = data; + + vm.hasRelations = vm.relations.documentTypes.length > 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; + + + console.log("vm: ", vm); + + }); + + + +} + +angular.module("umbraco").controller("Umbraco.Editors.DataType.RelationsController", DataTypeRelationsController); diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 43266ddafc..c2b8a305ff 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -1,34 +1,87 @@ - +
+ - + - -
{{vm.content.id}}
- {{vm.content.key}} -
+ - -
- - - Required - -
+ + This Data Type has no relations. + -
+ + - -
{{vm.content.selectedEditor}}
-
+
+ No relations for Document Types. +
+
+ + + + + + + + + + + + +
NameAlias
{{relation.name}}{{relation.alias}}Open
+
+ +
- - - + + -
+
+ No relations for Media Types. +
+
+ + + + + + + + + + + + +
NameAlias
{{relation.name}}{{relation.alias}}Open
+
+ + -
+ + + +
+ No relations for Member Types. +
+
+ + + + + + + + + + + + +
NameAlias
{{relation.name}}{{relation.alias}}Open
+
+ +
+ + + + +
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html index d5d49ca8fb..d37aa2fcd0 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.settings.html @@ -2,17 +2,17 @@ - -
{{content.id}}
- {{content.key}} + +
{{model.content.id}}
+ {{model.content.key}}
- +
+ ng-options="e.alias as e.name for e in model.content.availableEditors"> Required @@ -20,15 +20,15 @@ - -
{{content.selectedEditor}}
+ +
{{model.content.selectedEditor}}
+ ng-repeat="preValue in model.preValues"> - + \ No newline at end of file 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 96387b7d26..9d6f40ee4f 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -2165,4 +2165,14 @@ To manage your website, simply open the Umbraco back office and start adding con Open/Close backoffice help Open/Close your profile options + + Relations + This Data Type has no relations. + Relations to Document Types + No relations to Document Types. + Relations to Media Types + No relations to Media Types. + Relations to Member Types + No relations to Member Types. + From 65c49895759af54edc25c7ca5d46a6431c36d1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 13:05:48 +0200 Subject: [PATCH 04/39] added more translations --- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 11 +++++++++++ src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index ff299b8e7f..cb52f5ee44 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -1713,4 +1713,15 @@ Mange hilsner fra Umbraco robotten Åben/Luk backoffice hjælp Åben/Luk dine profil indstillinger + + Relationer + Denne Data Type har ingen relationer. + Relationer til Dokument Typer + Ingen relationer til Dokument Typer. + Relationer til Medie Typer + Ingen relationer til Medie Typer. + RRelationer til Medlems Typer + Ingen relationer til Medlems Typer. + + diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index d7d743e7e9..dbce62cb29 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -2150,4 +2150,15 @@ To manage your website, simply open the Umbraco back office and start adding con Open/Close backoffice help Open/Close your profile options + + Relations + This Data Type has no relations. + Relations to Document Types + No relations to Document Types. + Relations to Media Types + No relations to Media Types. + Relations to Member Types + No relations to Member Types. + + From 3365d6fc88f749a16630c4e221e34aba2b314ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 13:10:17 +0200 Subject: [PATCH 05/39] correctied area key for translation --- .../views/datatypes/views/datatype.relations.html | 14 +++++++------- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index c2b8a305ff..9c7218f0c3 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -6,14 +6,14 @@ - This Data Type has no relations. + This Data Type has no relations. - +
- No relations for Document Types. + No relations for Document Types.
@@ -34,10 +34,10 @@ - +
- No relations for Media Types. + No relations for Media Types.
@@ -58,10 +58,10 @@ - +
- No relations for Member Types. + No relations for Member Types.
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index cb52f5ee44..0d675bd0ec 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -1713,7 +1713,7 @@ Mange hilsner fra Umbraco robotten Åben/Luk backoffice hjælpÅben/Luk dine profil indstillinger - + RelationerDenne Data Type har ingen relationer.Relationer til Dokument Typer From 79d20bfddb0050519cec815906687c51bee2d1fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 13:10:45 +0200 Subject: [PATCH 06/39] whitespace --- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index dbce62cb29..f32e2dd602 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -2150,7 +2150,7 @@ To manage your website, simply open the Umbraco back office and start adding con Open/Close backoffice help Open/Close your profile options - + Relations This Data Type has no relations. Relations to Document Types From dbee0da6a5c23745a0f921454aca1d362db4aceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 13:14:25 +0200 Subject: [PATCH 07/39] tabName translation --- .../src/views/datatypes/datatype.edit.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js index bb45968d5b..85d48c8576 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js @@ -212,7 +212,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic var labelKeys = [ "general_settings", - "editdatatype_relations" + "relations_tabName" ]; localizationService.localizeMany(labelKeys).then(function (values) { From 8e17245dc0a3a634948e8b9ac27130664c5f2ea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 13:58:34 +0200 Subject: [PATCH 08/39] changed look and translation keys --- .../datatypes/views/datatype.relations.html | 187 ++++++++++-------- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 12 +- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 12 +- .../Umbraco/config/lang/en_us.xml | 12 +- 4 files changed, 126 insertions(+), 97 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 9c7218f0c3..37472120fc 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -1,87 +1,116 @@
- + + + + - - - - + This Data Type has no relations. - - - - -
- No relations for Document Types. -
-
-
- - - - - - - - - - - -
NameAlias
{{relation.name}}{{relation.alias}}Open
-
- -
- - - - -
- No relations for Media Types. -
-
- - - - - - - - - - - - -
NameAlias
{{relation.name}}{{relation.alias}}Open
-
- -
- - - - -
- No relations for Member Types. -
-
- - - - - - - - - - - - -
NameAlias
{{relation.name}}{{relation.alias}}Open
-
- -
- - + + +
+ + + +

+ +

+ +
+ + + No relations for Document Types. + + +
+
+
+
Name
+
Alias
+
+
+
+
+
+
{{relation.name}}
+
{{relation.alias}}
+ +
+
+
+
+ + + + +

+ +

+ +
+ + + No relations for Media Types. + + +
+
+
+
Name
+
Alias
+
+
+
+
+
+
{{relation.name}}
+
{{relation.alias}}
+ +
+
+ +
+
+ + + + +

+ +

+ +
+ + + No relations for Member Types. + + +
+
+
+
Name
+
Alias
+
+
+
+
+
+
{{relation.name}}
+
{{relation.alias}}
+ +
+
+ +
+
+ + + +
+ +
\ No newline at end of file diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index 0d675bd0ec..ea13684d61 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -1716,12 +1716,12 @@ Mange hilsner fra Umbraco robotten Relationer Denne Data Type har ingen relationer. - Relationer til Dokument Typer - Ingen relationer til Dokument Typer. - Relationer til Medie Typer - Ingen relationer til Medie Typer. - RRelationer til Medlems Typer - Ingen relationer til Medlems Typer. + Brugt af følgende Dokument Typer + Ingen relationer til Dokument Typer. + Brugt af følgende Medie Typer + Ingen relationer til Medie Typer. + Brugt af følgende Medlems Typer + Ingen relationer til Medlems Typer. diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index f32e2dd602..79fc8c10df 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -2153,12 +2153,12 @@ To manage your website, simply open the Umbraco back office and start adding con Relations This Data Type has no relations. - Relations to Document Types - No relations to Document Types. - Relations to Media Types - No relations to Media Types. - Relations to Member Types - No relations to Member Types. + Use by following Document Types + No relations to Document Types. + Use by following Media Types + No relations to Media Types. + Use by following Member Types + No relations to Member Types. 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 e334b980e1..4fcb25bd15 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -2167,11 +2167,11 @@ To manage your website, simply open the Umbraco back office and start adding con Relations This Data Type has no relations. - Relations to Document Types - No relations to Document Types. - Relations to Media Types - No relations to Media Types. - Relations to Member Types - No relations to Member Types. + Use by following Document Types + No relations to Document Types. + Use by following Media Types + No relations to Media Types. + Use by following Member Types + No relations to Member Types. From 097ef82d41cd30a7b399fcdf49e12273c4c86e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 14:02:18 +0200 Subject: [PATCH 09/39] corrected working --- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 6 +++--- src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index 79fc8c10df..a2959bb26b 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -2153,11 +2153,11 @@ To manage your website, simply open the Umbraco back office and start adding con Relations This Data Type has no relations. - Use by following Document Types + Used by following Document Types No relations to Document Types. - Use by following Media Types + Used by following Media Types No relations to Media Types. - Use by following Member Types + Used by following Member Types No relations to Member Types. 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 4fcb25bd15..317dd28a32 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -2167,11 +2167,11 @@ To manage your website, simply open the Umbraco back office and start adding con Relations This Data Type has no relations. - Use by following Document Types + Used by following Document Types No relations to Document Types. - Use by following Media Types + Used by following Media Types No relations to Media Types. - Use by following Member Types + Used by following Member Types No relations to Member Types. From 3da64651b0f78d5093583c81806815b011df491b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 14:02:30 +0200 Subject: [PATCH 10/39] changed to headlines to h5 --- .../datatypes/views/datatype.relations.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 37472120fc..b0faec9b86 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -16,9 +16,9 @@ -

- -

+
+ +
@@ -47,9 +47,9 @@ -

- -

+
+ +
@@ -79,9 +79,9 @@ -

- -

+
+ +
From bcc76b207220c84f55858f75c43673f4abadd119 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 8 Oct 2019 23:09:45 +1100 Subject: [PATCH 11/39] Implements DataTypeService.FindUsages --- .../Repositories/IDataTypeRepository.cs | 7 +++ .../Implement/DataTypeRepository.cs | 41 ++++++++++++ src/Umbraco.Core/Services/IDataTypeService.cs | 7 +++ .../Services/Implement/DataTypeService.cs | 8 +++ .../DataTypeDefinitionRepositoryTest.cs | 62 +++++++++++++++++++ .../TestHelpers/TestObjects-Mocks.cs | 5 ++ 6 files changed, 130 insertions(+) diff --git a/src/Umbraco.Core/Persistence/Repositories/IDataTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDataTypeRepository.cs index afb419ebd6..3a44cb10b4 100644 --- a/src/Umbraco.Core/Persistence/Repositories/IDataTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDataTypeRepository.cs @@ -7,5 +7,12 @@ namespace Umbraco.Core.Persistence.Repositories public interface IDataTypeRepository : IReadWriteQueryRepository { IEnumerable> Move(IDataType toMove, EntityContainer container); + + /// + /// Returns a dictionary of content type s and the property type aliases that use a + /// + /// + /// + IReadOnlyDictionary> FindUsages(int id); } } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs index dac8fda5ec..41d13007b2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs @@ -279,6 +279,28 @@ namespace Umbraco.Core.Persistence.Repositories.Implement return moveInfo; } + public IReadOnlyDictionary> FindUsages(int id) + { + if (id == default) + return new Dictionary>(); + + var sql = Sql() + .Select(ct => ct.Select(node => node.NodeDto)) + .AndSelect(pt => Alias(pt.Alias, "ptAlias"), pt => Alias(pt.Name, "ptName")) + .From() + .InnerJoin().On(ct => ct.NodeId, pt => pt.ContentTypeId) + .InnerJoin().On(n => n.NodeId, ct => ct.NodeId) + .Where(pt => pt.DataTypeId == id) + .OrderBy(node => node.NodeId) + .AndBy(pt => pt.Alias); + + var dtos = Database.FetchOneToMany(ct => ct.PropertyTypes, sql); + + return dtos.ToDictionary( + x => (Udi)new GuidUdi(ObjectTypes.GetUdiType(x.NodeDto.NodeObjectType.Value), x.NodeDto.UniqueId).EnsureClosed(), + x => (IEnumerable)x.PropertyTypes.Select(x => x.Alias).ToList()); + } + private string EnsureUniqueNodeName(string nodeName, int id = 0) { var template = SqlContext.Templates.Get("Umbraco.Core.DataTypeDefinitionRepository.EnsureUniqueNodeName", tsql => tsql @@ -291,5 +313,24 @@ namespace Umbraco.Core.Persistence.Repositories.Implement return SimilarNodeName.GetUniqueName(names, id, nodeName); } + + + [TableName(Constants.DatabaseSchema.Tables.ContentType)] + private class ContentTypeReferenceDto : ContentTypeDto + { + [ResultColumn] + [Reference(ReferenceType.Many)] + public List PropertyTypes { get; set; } + } + + [TableName(Constants.DatabaseSchema.Tables.PropertyType)] + private class PropertyTypeReferenceDto + { + [Column("ptAlias")] + public string Alias { get; set; } + + [Column("ptName")] + public string Name { get; set; } + } } } diff --git a/src/Umbraco.Core/Services/IDataTypeService.cs b/src/Umbraco.Core/Services/IDataTypeService.cs index bb56e110cd..77bf509498 100644 --- a/src/Umbraco.Core/Services/IDataTypeService.cs +++ b/src/Umbraco.Core/Services/IDataTypeService.cs @@ -10,6 +10,13 @@ namespace Umbraco.Core.Services /// public interface IDataTypeService : IService { + /// + /// Returns a dictionary of content type s and the property type aliases that use a + /// + /// + /// + IReadOnlyDictionary> FindUsages(int id); + Attempt> CreateContainer(int parentId, string name, int userId = Constants.Security.SuperUserId); Attempt SaveContainer(EntityContainer container, int userId = Constants.Security.SuperUserId); EntityContainer GetContainer(int containerId); diff --git a/src/Umbraco.Core/Services/Implement/DataTypeService.cs b/src/Umbraco.Core/Services/Implement/DataTypeService.cs index dc998b18dd..e06c49cf44 100644 --- a/src/Umbraco.Core/Services/Implement/DataTypeService.cs +++ b/src/Umbraco.Core/Services/Implement/DataTypeService.cs @@ -466,6 +466,14 @@ namespace Umbraco.Core.Services.Implement } } + public IReadOnlyDictionary> FindUsages(int id) + { + using (var scope = ScopeProvider.CreateScope(autoComplete:true)) + { + return _dataTypeRepository.FindUsages(id); + } + } + private void Audit(AuditType type, int userId, int objectId) { _auditRepository.Save(new AuditItem(objectId, type, userId, ObjectTypes.GetName(UmbracoObjectTypes.DataType))); diff --git a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs index b558ce6c87..ca8ee29ee3 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs @@ -28,6 +28,68 @@ namespace Umbraco.Tests.Persistence.Repositories return new EntityContainerRepository(scopeAccessor, AppCaches.Disabled, Logger, Constants.ObjectTypes.DataTypeContainer); } + [Test] + public void Can_Find_Usages() + { + var provider = TestObjects.GetScopeProvider(Logger); + + using (provider.CreateScope()) + { + var dtRepo = CreateRepository(); + IDataType dataType1 = new DataType(new RadioButtonsPropertyEditor(Logger, ServiceContext.TextService)) { Name = "dt1" }; + dtRepo.Save(dataType1); + IDataType dataType2 = new DataType(new RadioButtonsPropertyEditor(Logger, ServiceContext.TextService)) { Name = "dt2" }; + dtRepo.Save(dataType2); + + var ctRepo = Factory.GetInstance(); + IContentType ct = new ContentType(-1) + { + Alias = "ct1", + Name = "CT1", + AllowedAsRoot = true, + Icon = "icon-home", + PropertyGroups = new PropertyGroupCollection + { + new PropertyGroup(true) + { + Name = "PG1", + PropertyTypes = new PropertyTypeCollection(true) + { + new PropertyType(dataType1, "pt1") + { + Name = "PT1" + }, + new PropertyType(dataType1, "pt2") + { + Name = "PT2" + }, + new PropertyType(dataType2, "pt3") + { + Name = "PT3" + } + } + } + } + }; + ctRepo.Save(ct); + + var usages = dtRepo.FindUsages(dataType1.Id); + + var key = usages.First().Key; + Assert.AreEqual(ct.Key, ((GuidUdi)key).Guid); + Assert.AreEqual(2, usages[key].Count()); + Assert.AreEqual("pt1", usages[key].ElementAt(0)); + Assert.AreEqual("pt2", usages[key].ElementAt(1)); + + usages = dtRepo.FindUsages(dataType2.Id); + + key = usages.First().Key; + Assert.AreEqual(ct.Key, ((GuidUdi)key).Guid); + Assert.AreEqual(1, usages[key].Count()); + Assert.AreEqual("pt3", usages[key].ElementAt(0)); + } + } + [Test] public void Can_Move() { diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs index dc8e35bb52..3600db32de 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs @@ -329,6 +329,11 @@ namespace Umbraco.Tests.TestHelpers { throw new NotImplementedException(); } + + public IReadOnlyDictionary> FindUsages(int id) + { + throw new NotImplementedException(); + } } #endregion From 69fb12a270f3177fe3a006435397bfa843d622df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 14:20:30 +0200 Subject: [PATCH 12/39] changed wording --- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 6 +++--- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 6 +++--- src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index ea13684d61..e414c04146 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -1716,11 +1716,11 @@ Mange hilsner fra Umbraco robotten Relationer Denne Data Type har ingen relationer. - Brugt af følgende Dokument Typer + Brugt af Dokument Typer Ingen relationer til Dokument Typer. - Brugt af følgende Medie Typer + Brugt af Medie Typer Ingen relationer til Medie Typer. - Brugt af følgende Medlems Typer + Brugt af Medlems Typer Ingen relationer til Medlems Typer. diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index a2959bb26b..732586e3af 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -2153,11 +2153,11 @@ To manage your website, simply open the Umbraco back office and start adding con Relations This Data Type has no relations. - Used by following Document Types + Used by Document Types No relations to Document Types. - Used by following Media Types + Used by Media Types No relations to Media Types. - Used by following Member Types + Used by Member Types No relations to Member Types. 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 317dd28a32..1f2c1ddb9b 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -2167,11 +2167,11 @@ To manage your website, simply open the Umbraco back office and start adding con Relations This Data Type has no relations. - Used by following Document Types + Used by Document Types No relations to Document Types. - Used by following Media Types + Used by Media Types No relations to Media Types. - Used by following Member Types + Used by Member Types No relations to Member Types. From eff284cb04adc4e64c9c217170c89cf656cdf0d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 14:20:42 +0200 Subject: [PATCH 13/39] corrected open links --- .../src/views/datatypes/views/datatype.relations.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index b0faec9b86..0bc5d9f51e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -38,7 +38,7 @@
{{relation.name}}
{{relation.alias}}
- +
@@ -69,7 +69,7 @@
{{relation.name}}
{{relation.alias}}
- +
@@ -101,7 +101,7 @@
{{relation.name}}
{{relation.alias}}
- +
From dfc642e7870f4e7c627317ef5b4c2a42beb00a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 14:32:41 +0200 Subject: [PATCH 14/39] seperate row for icons --- .../datatypes/views/datatype.relations.html | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 0bc5d9f51e..486276e52c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -16,11 +16,11 @@ -
+
-
+
No relations for Document Types. @@ -29,6 +29,7 @@
+
Name
Alias
@@ -36,7 +37,8 @@
-
{{relation.name}}
+
+
{{relation.name}}
{{relation.alias}}
@@ -47,11 +49,11 @@ -
+
-
+
No relations for Media Types. @@ -60,6 +62,7 @@
+
Name
Alias
@@ -67,7 +70,8 @@
-
{{relation.name}}
+
+
{{relation.name}}
{{relation.alias}}
@@ -79,11 +83,11 @@ -
+
-
+
No relations for Member Types. @@ -92,6 +96,7 @@
+
Name
Alias
@@ -99,7 +104,8 @@
-
{{relation.name}}
+
+
{{relation.name}}
{{relation.alias}}
From 5deaf996e0e9cc80449734881f04124a2cbad131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 14:48:42 +0200 Subject: [PATCH 15/39] auto width for actions --- .../datatypes/views/datatype.relations.html | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 486276e52c..4215d3e092 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -16,23 +16,19 @@ -
- -
+
-
- - - No relations for Document Types. - +
+ +
-
+
Name
Alias
-
+
@@ -40,7 +36,7 @@
{{relation.name}}
{{relation.alias}}
- +
@@ -48,24 +44,19 @@ +
-
- -
+
+ +
-
- - - No relations for Media Types. - - -
+
Name
Alias
-
+
@@ -73,33 +64,27 @@
{{relation.name}}
{{relation.alias}}
- +
-
+
-
- -
+
+ +
-
- - - No relations for Member Types. - - -
-
+
+
Name
Alias
-
+
@@ -107,13 +92,12 @@
{{relation.name}}
{{relation.alias}}
- +
-
-
+
From ab6f4af439e33d4c630fadf2dddff578b8ac31e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 15:45:14 +0200 Subject: [PATCH 16/39] dont know why this was removed, brain fart... --- .../views/macros/macros.edit.controller.js | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js index dd0dd7499f..2f14e0ceea 100644 --- a/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/macros/macros.edit.controller.js @@ -108,10 +108,36 @@ function MacrosEditController($scope, $q, $routeParams, macroResource, editorSta function init() { vm.page.loading = true; - + + vm.promises['partialViews'] = getPartialViews(); + vm.promises['parameterEditors'] = getParameterEditors(); + vm.promises['macro'] = getMacro(); + vm.views = []; vm.node = null; - + + $q.all(vm.promises).then(function (values) { + var keys = Object.keys(values); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (key === 'partialViews') { + vm.views = values[key]; + } + + if (key === 'parameterEditors') { + vm.parameterEditors = values[key]; + } + + if (key === 'macro') { + bindMacro(values[key]); + } + } + + vm.page.loading = false; + }); + var labelKeys = [ "general_settings", "macro_parameters" From a178a4d77b1bc669f5b1d756d93b974e9b74a065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 8 Oct 2019 15:45:25 +0200 Subject: [PATCH 17/39] removing console.logs --- .../views/datatypes/views/datatype.relations.controller.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js index 6fdcaf9650..83d6e4a379 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js @@ -20,16 +20,12 @@ function DataTypeRelationsController($scope, $routeParams, dataTypeResource) { dataTypeResource.getRelations($routeParams.id) .then(function(data) { - console.log("got: ", data); - vm.view.loading = false; vm.relations = data; vm.hasRelations = vm.relations.documentTypes.length > 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; - console.log("vm: ", vm); - }); From ac300179e6caaefdaef294204cc3137a0dca1b87 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 9 Oct 2019 15:19:03 +1100 Subject: [PATCH 18/39] Adds new endpoint to DataTypeController to return the correct data and wires that up to angular --- .../Services/IContentTypeServiceBase.cs | 3 +- src/Umbraco.Core/Services/IDataTypeService.cs | 2 +- ...peServiceBaseOfTRepositoryTItemTService.cs | 4 +- .../Services/Implement/DataTypeService.cs | 2 +- .../TestHelpers/TestObjects-Mocks.cs | 2 +- .../src/common/resources/datatype.resource.js | 94 ++----------------- .../views/datatype.relations.controller.js | 16 ++-- src/Umbraco.Web/Editors/DataTypeController.cs | 53 +++++++++++ .../ContentEditing/DataTypeReferences.cs | 36 +++++++ src/Umbraco.Web/Umbraco.Web.csproj | 1 + 10 files changed, 111 insertions(+), 102 deletions(-) create mode 100644 src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs diff --git a/src/Umbraco.Core/Services/IContentTypeServiceBase.cs b/src/Umbraco.Core/Services/IContentTypeServiceBase.cs index b86494adb5..51e5d756eb 100644 --- a/src/Umbraco.Core/Services/IContentTypeServiceBase.cs +++ b/src/Umbraco.Core/Services/IContentTypeServiceBase.cs @@ -25,7 +25,7 @@ namespace Umbraco.Core.Services /// /// Gets a content type. /// - TItem Get(int id); + new TItem Get(int id); /// /// Gets a content type. @@ -40,6 +40,7 @@ namespace Umbraco.Core.Services int Count(); IEnumerable GetAll(params int[] ids); + IEnumerable GetAll(IEnumerable ids); IEnumerable GetDescendants(int id, bool andSelf); // parent-child axis IEnumerable GetComposedOf(int id); // composition axis diff --git a/src/Umbraco.Core/Services/IDataTypeService.cs b/src/Umbraco.Core/Services/IDataTypeService.cs index 77bf509498..3ebfa95bfb 100644 --- a/src/Umbraco.Core/Services/IDataTypeService.cs +++ b/src/Umbraco.Core/Services/IDataTypeService.cs @@ -15,7 +15,7 @@ namespace Umbraco.Core.Services /// /// /// - IReadOnlyDictionary> FindUsages(int id); + IReadOnlyDictionary> GetReferences(int id); Attempt> CreateContainer(int parentId, string name, int userId = Constants.Security.SuperUserId); Attempt SaveContainer(EntityContainer container, int userId = Constants.Security.SuperUserId); diff --git a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs index 6ac8e1404a..705a876d83 100644 --- a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs +++ b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs @@ -252,12 +252,12 @@ namespace Umbraco.Core.Services.Implement } } - public IEnumerable GetAll(params Guid[] ids) + public IEnumerable GetAll(IEnumerable ids) { using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(ReadLockIds); - return Repository.GetMany(ids); + return Repository.GetMany(ids.ToArray()); } } diff --git a/src/Umbraco.Core/Services/Implement/DataTypeService.cs b/src/Umbraco.Core/Services/Implement/DataTypeService.cs index e06c49cf44..5a93fb91b1 100644 --- a/src/Umbraco.Core/Services/Implement/DataTypeService.cs +++ b/src/Umbraco.Core/Services/Implement/DataTypeService.cs @@ -466,7 +466,7 @@ namespace Umbraco.Core.Services.Implement } } - public IReadOnlyDictionary> FindUsages(int id) + public IReadOnlyDictionary> GetReferences(int id) { using (var scope = ScopeProvider.CreateScope(autoComplete:true)) { diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs index 3600db32de..dad3ec4fc0 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs @@ -330,7 +330,7 @@ namespace Umbraco.Tests.TestHelpers throw new NotImplementedException(); } - public IReadOnlyDictionary> FindUsages(int id) + public IReadOnlyDictionary> GetReferences(int id) { throw new NotImplementedException(); } diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js index f20debc9c3..6400f7386f 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js @@ -45,108 +45,26 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { /** * @ngdoc method - * @name umbraco.resources.dataTypeResource#getRelations + * @name umbraco.resources.dataTypeResource#getReferences * @methodOf umbraco.resources.dataTypeResource * * @description * Retrieves relations of a given data type. * - * ##usage - *
-         * dataTypeResource.getRelation(1234)
-         *    .then(function(relations) {
-         *        alert('its gone!');
-         *    });
-         * 
- * * @param {Int} id id of datatype to retrieve relations for * @returns {Promise} resourcePromise object. * */ - getRelations: function (id) { - - return $q((resolve, reject) => { - - -var fakeData = { - "documentTypes": [ - { - "name": "Home", - "alias": "home", - "icon": "icon-home", - "udi": "document-type://B6C7EFA7-1D03-46BF-B6D3-9187EF4CD176", - "id": 1234, - "properties": [ - { - "alias": "bodyText", - "name": "Body Text" - }, - { - "alias": "description", - "name": "Description" - } - ] - }, - { - "name": "News", - "alias": "news", - "icon": "icon-newspaper", - "udi": "document-type://FAB4F78E-530E-4F5D-959A-82441958460C", - "id": 9876, - "properties": [ - { - "alias": "article", - "name": "Article" - } - ] - } - ], - "mediaTypes": [ - { - "name": "Image", - "alias": "image", - "icon": "icon-umb-media", - "udi": "media-type://488152AF-0C03-4F2D-9DE0-FDECC80212AD", - "id": 9999, - "properties": [ - { - "alias": "altText", - "name": "Alt Text" - } - ] - } - ], - "memberTypes": [ - { - "name": "Member", - "alias": "member", - "icon": "icon-people-alt-2", - "udi": "member-type://93773B7C-2D83-4529-92D9-B9759220384C", - "id": 7777, - "properties": [ - { - "alias": "bio", - "name": "Bio" - } - ] - } - ] -}; - - resolve(fakeData); - }); - /* - - TODO: get real data from server! + getReferences: function (id) { return umbRequestHelper.resourcePromise( $http.get( umbRequestHelper.getApiUrl( "dataTypeApiBaseUrl", - "GetRelations", - [{ id: id }])), - "Failed to retrieve relations for data type of id " + id); - */ + "GetReferences", + { id: id })), + "Failed to retrieve usages for data type of id " + id); + }, /** diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js index 83d6e4a379..db97053064 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js @@ -7,26 +7,26 @@ * The controller for the relations view of the datatype editor */ function DataTypeRelationsController($scope, $routeParams, dataTypeResource) { - + var vm = this; vm.relations = {}; vm.hasRelations = false; - + vm.view = {}; vm.view.loading = true; //we are editing so get the content item from the server - dataTypeResource.getRelations($routeParams.id) - .then(function(data) { + dataTypeResource.getReferences($routeParams.id) + .then(function (data) { - vm.view.loading = false; - vm.relations = data; + vm.view.loading = false; + vm.relations = data; - vm.hasRelations = vm.relations.documentTypes.length > 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; + vm.hasRelations = vm.relations.documentTypes.length > 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; - }); + }); diff --git a/src/Umbraco.Web/Editors/DataTypeController.cs b/src/Umbraco.Web/Editors/DataTypeController.cs index 30c4162252..ca261b3043 100644 --- a/src/Umbraco.Web/Editors/DataTypeController.cs +++ b/src/Umbraco.Web/Editors/DataTypeController.cs @@ -283,6 +283,59 @@ namespace Umbraco.Web.Editors : Request.CreateNotificationValidationErrorResponse(result.Exception.Message); } + /// + /// Returns the references (usages) for the data type + /// + /// + /// + public DataTypeReferences GetReferences(int id) + { + var result = new DataTypeReferences(); + var usages = Services.DataTypeService.GetReferences(id); + + foreach(var groupOfEntityType in usages.GroupBy(x => x.Key.EntityType)) + { + //get all the GUIDs for the content types to find + var guidsAndPropertyAliases = groupOfEntityType.ToDictionary(i => ((GuidUdi)i.Key).Guid, i => i.Value); + + if (groupOfEntityType.Key == ObjectTypes.GetUdiType(UmbracoObjectTypes.DocumentType)) + result.DocumentTypes = GetContentTypeUsages(Services.ContentTypeService.GetAll(guidsAndPropertyAliases.Keys), guidsAndPropertyAliases); + else if (groupOfEntityType.Key == ObjectTypes.GetUdiType(UmbracoObjectTypes.MediaType)) + result.MediaTypes = GetContentTypeUsages(Services.MediaTypeService.GetAll(guidsAndPropertyAliases.Keys), guidsAndPropertyAliases); + else if (groupOfEntityType.Key == ObjectTypes.GetUdiType(UmbracoObjectTypes.MemberType)) + result.MemberTypes = GetContentTypeUsages(Services.MemberTypeService.GetAll(guidsAndPropertyAliases.Keys), guidsAndPropertyAliases); + } + + return result; + } + + /// + /// Maps the found content types and usages to the resulting model + /// + /// + /// + /// + private IEnumerable GetContentTypeUsages( + IEnumerable cts, + IReadOnlyDictionary> usages) + { + return cts.Select(x => new DataTypeReferences.ContentTypeReferences + { + Key = x.Key, + Alias = x.Alias, + Icon = x.Icon, + Name = x.Name, + Udi = new GuidUdi(ObjectTypes.GetUdiType(UmbracoObjectTypes.DocumentType), x.Key), + //only select matching properties + Properties = x.PropertyTypes.Where(p => usages[x.Key].InvariantContains(p.Alias)) + .Select(p => new DataTypeReferences.ContentTypeReferences.PropertyTypeReferences + { + Alias = p.Alias, + Name = p.Name + }) + }); + } + #region ReadOnly actions to return basic data - allow access for: content ,media, members, settings, developer /// /// Gets the content json for all data types diff --git a/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs b/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs new file mode 100644 index 0000000000..dd042660a2 --- /dev/null +++ b/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; + +namespace Umbraco.Web.Models.ContentEditing +{ + [DataContract(Name = "dataTypeUsages", Namespace = "")] + public class DataTypeReferences + { + [DataMember(Name = "documentTypes")] + public IEnumerable DocumentTypes { get; set; } = Enumerable.Empty(); + + [DataMember(Name = "mediaTypes")] + public IEnumerable MediaTypes { get; set; } = Enumerable.Empty(); + + [DataMember(Name = "memberTypes")] + public IEnumerable MemberTypes { get; set; } = Enumerable.Empty(); + + [DataContract(Name = "contentType", Namespace = "")] + public class ContentTypeReferences : EntityBasic + { + [DataMember(Name = "properties")] + public object Properties { get; set; } + + [DataContract(Name = "property", Namespace = "")] + public class PropertyTypeReferences + { + [DataMember(Name = "name")] + public string Name { get; set; } + + [DataMember(Name = "alias")] + public string Alias { get; set; } + } + } + } +} diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index a0ce64943a..f908fc7c30 100755 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -212,6 +212,7 @@ + From 4c131d14fc3f45be9ecbdc3e352be3a95c12322d Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 9 Oct 2019 15:31:13 +1100 Subject: [PATCH 19/39] ensure the data type refs are only loaded when the tab is activated --- .../datatypes/datatype.edit.controller.js | 9 +---- .../views/datatype.relations.controller.js | 40 ++++++++++++++----- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js index 85d48c8576..5cf7820b6e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js @@ -155,13 +155,6 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic eventsService.unsubscribe(evts[e]); } }); - - - - - - - function init() { @@ -227,7 +220,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic }, { "name": values[1], - "alias": "parameters", + "alias": "relations", "icon": "icon-molecular-network", "view": "views/datatypes/views/datatype.relations.html" } diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js index db97053064..84f2f5e7c9 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.controller.js @@ -6,9 +6,11 @@ * @description * The controller for the relations view of the datatype editor */ -function DataTypeRelationsController($scope, $routeParams, dataTypeResource) { +function DataTypeRelationsController($scope, $routeParams, dataTypeResource, eventsService, $timeout) { var vm = this; + var evts = []; + var relationsLoaded = false; vm.relations = {}; vm.hasRelations = false; @@ -16,18 +18,36 @@ function DataTypeRelationsController($scope, $routeParams, dataTypeResource) { vm.view = {}; vm.view.loading = true; - //we are editing so get the content item from the server - dataTypeResource.getReferences($routeParams.id) - .then(function (data) { - - vm.view.loading = false; - vm.relations = data; - - vm.hasRelations = vm.relations.documentTypes.length > 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; - + /** Loads in the data type relations one time */ + function loadRelations() { + if (!relationsLoaded) { + relationsLoaded = true; + dataTypeResource.getReferences($routeParams.id) + .then(function (data) { + vm.view.loading = false; + vm.relations = data; + vm.hasRelations = vm.relations.documentTypes.length > 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; + }); + } + } + // load data type relations when the relations tab is activated + evts.push(eventsService.on("app.tabChange", function (event, args) { + $timeout(function () { + if (args.alias === "relations") { + loadRelations(); + } }); + })); + //ensure to unregister from all events! + $scope.$on('$destroy', function () { + for (var e in evts) { + eventsService.unsubscribe(evts[e]); + } + }); + + } From cf9add767a24cc19e69585916c16bc9733c756d4 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 9 Oct 2019 15:55:09 +1100 Subject: [PATCH 20/39] Fixes navigating to other items via url --- src/Umbraco.Web.UI.Client/src/init.js | 4 ++-- src/Umbraco.Web/Editors/DataTypeController.cs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/init.js b/src/Umbraco.Web.UI.Client/src/init.js index 2fca5b40d2..fc5b25c4af 100644 --- a/src/Umbraco.Web.UI.Client/src/init.js +++ b/src/Umbraco.Web.UI.Client/src/init.js @@ -134,14 +134,14 @@ app.run(['$rootScope', '$route', '$location', 'urlHelper', 'navigationService', var toRetain = navigationService.retainQueryStrings(currentRouteParams, next.params); - //if toRetain is not null it means that there are missing query strings and we need to update the current params + //if toRetain is not null it means that there are missing query strings and we need to update the current params. if (toRetain) { $route.updateParams(toRetain); } //check if the location being changed is only due to global/state query strings which means the location change //isn't actually going to cause a route change. - if (!toRetain && navigationService.isRouteChangingNavigation(currentRouteParams, next.params)) { + if (navigationService.isRouteChangingNavigation(currentRouteParams, next.params)) { //The location change will cause a route change, continue the route if the query strings haven't been updated. $route.reload(); diff --git a/src/Umbraco.Web/Editors/DataTypeController.cs b/src/Umbraco.Web/Editors/DataTypeController.cs index ca261b3043..31e0d70a42 100644 --- a/src/Umbraco.Web/Editors/DataTypeController.cs +++ b/src/Umbraco.Web/Editors/DataTypeController.cs @@ -321,6 +321,7 @@ namespace Umbraco.Web.Editors { return cts.Select(x => new DataTypeReferences.ContentTypeReferences { + Id = x.Id, Key = x.Key, Alias = x.Alias, Icon = x.Icon, From 4c344fcb9eb287a62279ab9cd457287670df8fa4 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 9 Oct 2019 16:07:43 +1100 Subject: [PATCH 21/39] fixes build --- .../Persistence/Repositories/Implement/DataTypeRepository.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs index 41d13007b2..9ccf6e9623 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs @@ -298,7 +298,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement return dtos.ToDictionary( x => (Udi)new GuidUdi(ObjectTypes.GetUdiType(x.NodeDto.NodeObjectType.Value), x.NodeDto.UniqueId).EnsureClosed(), - x => (IEnumerable)x.PropertyTypes.Select(x => x.Alias).ToList()); + x => (IEnumerable)x.PropertyTypes.Select(p => p.Alias).ToList()); } private string EnsureUniqueNodeName(string nodeName, int id = 0) From dd29fe574557fbed014e332eadec352b0b4289bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 11:37:45 +0200 Subject: [PATCH 22/39] added used by properties --- .../src/common/filters/joinArray.filter.js | 20 ++++++++++++++++ .../src/less/components/umb-table.less | 3 +++ .../datatypes/views/datatype.relations.html | 24 ++++++++++++------- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 1 + src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 1 + .../Umbraco/config/lang/en_us.xml | 1 + 6 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js new file mode 100644 index 0000000000..0aa406232c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js @@ -0,0 +1,20 @@ +/** + * @ngdoc filter + * @name umbraco.filters.filter:CMS_joinArray + * @namespace CMS_joinArrayFilter + * + * param {array} array of string or objects, if an object use the third argument to specify which prop to list. + * param {seperator} string containing the seperator to add between joined values. + * param {prop} string used if joining an array of objects, set the name of properties to join. + * + * @description + * Join an array of string or an array of objects, with a costum seperator. + * + */ +angular.module("umbraco.filters").filter('CMS_joinArray', function () { + return function join(array, separator, prop) { + return (!angular.isUndefined(prop) ? array.map(function (item) { + return item[prop]; + }) : array).join(separator); + }; +}); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less index 27b64f85fb..963cc56212 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less @@ -264,6 +264,9 @@ input.umb-table__input { flex: 0 0 auto !important; } +.umb-table-cell--nano { + flex: 0 0 50px; +} .umb-table-cell--small { flex: .5 .5 1%; max-width: 12.5%; diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 4215d3e092..18618ce246 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -28,7 +28,8 @@
Name
Alias
-
+
Used in
+
Open
@@ -36,7 +37,8 @@
{{relation.name}}
{{relation.alias}}
- +
{{relation.properties | CMS_joinArray:', ':'name'}}
+
@@ -51,20 +53,22 @@
-
+
Name
Alias
-
+
Used in
+
Open
-
+
{{relation.name}}
{{relation.alias}}
- +
{{relation.properties | CMS_joinArray:', ':'name'}}
+
@@ -84,15 +88,17 @@
Name
Alias
-
+
Used in
+
Open
-
+
{{relation.name}}
{{relation.alias}}
- +
{{relation.properties | CMS_joinArray:', ':'name'}}
+
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index e414c04146..40fd5bfdde 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -1722,6 +1722,7 @@ Mange hilsner fra Umbraco robotten Ingen relationer til Medie Typer. Brugt af Medlems Typer Ingen relationer til Medlems Typer. + Brugt af diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index 732586e3af..99a01f1b1d 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -2159,6 +2159,7 @@ To manage your website, simply open the Umbraco back office and start adding con No relations to Media Types. Used by Member Types No relations to Member Types. + Used by 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 1f2c1ddb9b..8a2c03b2fc 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -2173,5 +2173,6 @@ To manage your website, simply open the Umbraco back office and start adding con No relations to Media Types. Used by Member Types No relations to Member Types. + Used by From fd7b85f447b1ec5b2454c04e0a84133647a15bd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 12:54:00 +0200 Subject: [PATCH 23/39] added no overflow for properties --- .../src/less/components/umb-table.less | 11 ++++++--- .../datatypes/views/datatype.relations.html | 24 +++++++++---------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less index 963cc56212..56d3b0b87f 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less @@ -240,7 +240,7 @@ input.umb-table__input { .umb-table-cell { display: flex; flex-flow: row nowrap; - flex: 1 1 1%; //NOTE 1% is a Internet Explore hack, so that cells don't collapse + flex: 1 1 5%; //NOTE 1% is a Internet Explore hack, so that cells don't collapse position: relative; margin: auto 14px; padding: 6px 2px; @@ -253,6 +253,11 @@ input.umb-table__input { white-space: nowrap; //NOTE Disable/Enable this to keep textstring on one line text-overflow: ellipsis; } +.umb-table-cell.--noOverflow > * { + overflow: visible; + white-space: normal; //NOTE Disable/Enable this to keep textstring on one line + text-overflow: unset; +} .umb-table-cell:first-of-type:not(.not-fixed) { flex: 0 0 25px; @@ -283,8 +288,8 @@ input.umb-table__input { // Increases the space for the name cell .umb-table__name { - flex: 1 1 25%; - max-width: 25%; + flex: 1 1 20%; + max-width: 300px; } .umb-table__loading-overlay { diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 18618ce246..640d5dd1dc 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -28,16 +28,16 @@
Name
Alias
-
Used in
+
Used in
Open
-
{{relation.name}}
-
{{relation.alias}}
-
{{relation.properties | CMS_joinArray:', ':'name'}}
+
{{relation.name}}
+
{{relation.alias}}
+
{{relation.properties | CMS_joinArray:', ':'name'}}
@@ -58,16 +58,16 @@
Name
Alias
-
Used in
+
Used in
Open
-
{{relation.name}}
-
{{relation.alias}}
-
{{relation.properties | CMS_joinArray:', ':'name'}}
+
{{relation.name}}
+
{{relation.alias}}
+
{{relation.properties | CMS_joinArray:', ':'name'}}
@@ -88,16 +88,16 @@
Name
Alias
-
Used in
+
Used in
Open
-
{{relation.name}}
-
{{relation.alias}}
-
{{relation.properties | CMS_joinArray:', ':'name'}}
+
{{relation.name}}
+
{{relation.alias}}
+
{{relation.properties | CMS_joinArray:', ':'name'}}
From 7024bc495b0c177ce34c1a4a2427a3f10d4223ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 13:03:57 +0200 Subject: [PATCH 24/39] set template to cache output since its not going to update unless you reloaded the view. --- .../src/common/resources/datatype.resource.js | 2 +- .../datatypes/views/datatype.relations.html | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js index 6400f7386f..6b6fb2bb71 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js @@ -55,7 +55,7 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { * @returns {Promise} resourcePromise object. * */ - getReferences: function (id) { + getReferences: function (id) { return umbRequestHelper.resourcePromise( $http.get( diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index 640d5dd1dc..bbc451c568 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -35,10 +35,10 @@
-
{{relation.name}}
-
{{relation.alias}}
-
{{relation.properties | CMS_joinArray:', ':'name'}}
- +
{{::relation.name}}
+
{{::relation.alias}}
+
{{::relation.properties | CMS_joinArray:', ':'name'}}
+
@@ -65,10 +65,10 @@
-
{{relation.name}}
-
{{relation.alias}}
-
{{relation.properties | CMS_joinArray:', ':'name'}}
- +
{{::relation.name}}
+
{{::relation.alias}}
+
{{::relation.properties | CMS_joinArray:', ':'name'}}
+
@@ -95,10 +95,10 @@
-
{{relation.name}}
-
{{relation.alias}}
-
{{relation.properties | CMS_joinArray:', ':'name'}}
- +
{{::relation.name}}
+
{{::relation.alias}}
+
{{::relation.properties | CMS_joinArray:', ':'name'}}
+
From 2d693ddd350cecd093cfa2f0ea33b641cd462361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 13:05:47 +0200 Subject: [PATCH 25/39] ups, misspelling of localization key --- .../src/views/datatypes/views/datatype.relations.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html index bbc451c568..db1c2e5e40 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html @@ -28,7 +28,7 @@
Name
Alias
-
Used in
+
Used in
Open
@@ -58,7 +58,7 @@
Name
Alias
-
Used in
+
Used in
Open
@@ -88,7 +88,7 @@
Name
Alias
-
Used in
+
Used in
Open
From 18e8caeb7e80a6248371b93f3d6b3050d213f349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:00:34 +0200 Subject: [PATCH 26/39] adding new localizations --- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 2 + src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 4332 +++++++++-------- .../Umbraco/config/lang/en_us.xml | 2 + 3 files changed, 2171 insertions(+), 2165 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index 40fd5bfdde..30c0bab6af 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -564,6 +564,8 @@ Vælg den mappe, der skal flyttes til i træstrukturen nedenfor blev flyttet under + %0% will have the following consequence]]> + I understand this action will delete the properties and data based on this Data Type Dine data er blevet gemt, men før du kan udgive denne side er der nogle fejl der skal rettes: diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index 99a01f1b1d..978fa3b3f0 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -1,2165 +1,2167 @@ - - - - The Umbraco community - https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files - - - Culture and Hostnames - Audit Trail - Browse Node - Change Document Type - Copy - Create - Export - Create Package - Create group - Delete - Disable - Empty recycle bin - Enable - Export Document Type - Import Document Type - Import Package - Edit in Canvas - Exit - Move - Notifications - Public access - Publish - Unpublish - Reload - Republish entire site - Rename - Restore - Set permissions for the page %0% - Choose where to copy - Choose where to move - to in the tree structure below - was moved to - was copied to - was deleted - Permissions - Rollback - Send To Publish - Send To Translation - Set group - Sort - Translate - Update - Set permissions - Unlock - Create Content Template - Resend Invitation - - - Content - Administration - Structure - Other - - - Allow access to assign culture and hostnames - Allow access to view a node's history log - Allow access to view a node - Allow access to change document type for a node - Allow access to copy a node - Allow access to create nodes - Allow access to delete nodes - Allow access to move a node - Allow access to set and change public access for a node - Allow access to publish a node - Allow access to unpublish a node - Allow access to change permissions for a node - Allow access to roll back a node to a previous state - Allow access to send a node for approval before publishing - Allow access to send a node for translation - Allow access to change the sort order for nodes - Allow access to translate a node - Allow access to save a node - Allow access to create a Content Template - - - Content - Info - - - Permission denied. - Add new Domain - remove - Invalid node. - One or more domains have an invalid format. - Domain has already been assigned. - Language - Domain - New domain '%0%' has been created - Domain '%0%' is deleted - Domain '%0%' has already been assigned - Domain '%0%' has been updated - Edit Current Domains - - - Inherit - Culture - - or inherit culture from parent nodes. Will also apply
- to the current node, unless a domain below applies too.]]> -
- Domains - - - Clear selection - Select - Do something else - Bold - Cancel Paragraph Indent - Insert form field - Insert graphic headline - Edit Html - Indent Paragraph - Italic - Center - Justify Left - Justify Right - Insert Link - Insert local link (anchor) - Bullet List - Numeric List - Insert macro - Insert picture - Publish and close - Publish with descendants - Edit relations - Return to list - Save - Save and close - Save and publish - Save and schedule - Save and send for approval - Save list view - Schedule - Preview - Preview is disabled because there's no template assigned - Choose style - Show styles - Insert table - Save and generate models - Undo - Redo - Delete tag - Cancel - Confirm - More publishing options - - - Viewing for - Content deleted - Content unpublished - Content saved and Published - Content saved and published for languages: %0% - Content saved - Content saved for languages: %0% - Content moved - Content copied - Content rolled back - Content sent for publishing - Content sent for publishing for languages: %0% - Sort child items performed by user - Copy - Publish - Publish - Move - Save - Save - Delete - Unpublish - Rollback - Send To Publish - Send To Publish - Sort - History (all variants) - - - To change the document type for the selected content, first select from the list of valid types for this location. - Then confirm and/or amend the mapping of properties from the current type to the new, and click Save. - The content has been re-published. - Current Property - Current type - The document type cannot be changed, as there are no alternatives valid for this location. An alternative will be valid if it is allowed under the parent of the selected content item and that all existing child content items are allowed to be created under it. - Document Type Changed - Map Properties - Map to Property - New Template - New Type - none - Content - Select New Document Type - The document type of the selected content has been successfully changed to [new type] and the following properties mapped: - to - Could not complete property mapping as one or more properties have more than one mapping defined. - Only alternate types valid for the current location are displayed. - - - Failed to create a folder under parent with ID %0% - Failed to create a folder under parent with name %0% - The folder name cannot contain illegal characters. - Failed to delete item: %0% - - - Is Published - About this page - Alias - (how would you describe the picture over the phone) - Alternative Links - Click to edit this item - Created by - Original author - Updated by - Created - Date/time this document was created - Document Type - Editing - Remove at - This item has been changed after publication - This item is not published - Last published - There are no items to show - There are no items to show in the list. - No content has been added - No members have been added - Media Type - Link to media item(s) - Member Group - Role - Member Type - No changes have been made - No date chosen - Page title - This media item has no link - Properties - This document is published but is not visible because the parent '%0%' is unpublished - This culture is published but is not visible because it is unpublished on parent '%0%' - This document is published but is not in the cache - Could not get the url - This document is published but its url would collide with content %0% - This document is published but its url cannot be routed - Publish - Published - Published (pending changes) - Publication Status - Publish with descendants to publish %0% and all content items underneath and thereby making their content publicly available.]]> - Publish with descendants to publish the selected languages and the same languages of content items underneath and thereby making their content publicly available.]]> - Publish at - Unpublish at - Clear Date - Set date - Sortorder is updated - To sort the nodes, simply drag the nodes or click one of the column headers. You can select multiple nodes by holding the "shift" or "control" key while selecting - Statistics - Title (optional) - Alternative text (optional) - Type - Unpublish - Unpublished - Last edited - Date/time this document was edited - Remove file(s) - Link to document - Member of group(s) - Not a member of group(s) - Child items - Target - This translates to the following time on the server: - What does this mean?]]> - Are you sure you want to delete this item? - Property %0% uses editor %1% which is not supported by Nested Content. - No content types are configured for this property. - Add another text box - Remove this text box - Content root - Include drafts: also publish unpublished content items. - This value is hidden. If you need access to view this value please contact your website administrator. - This value is hidden. - What languages would you like to publish? All languages with content are saved! - What languages would you like to publish? - What languages would you like to save? - All languages with content are saved on creation! - What languages would you like to send for approval? - What languages would you like to schedule? - Select the languages to unpublish. Unpublishing a mandatory language will unpublish all languages. - Published Languages - Unpublished Languages - Unmodified Languages - These languages haven't been created - Ready to Publish? - Ready to Save? - Send for approval - Select the date and time to publish and/or unpublish the content item. - Create new - Paste from clipboard - - - Create a new Content Template from '%0%' - Blank - Select a Content Template - Content Template created - A Content Template was created from '%0%' - Another Content Template with the same name already exists - A Content Template is predefined content that an editor can select to use as the basis for creating new content - - - Click to upload - or click here to choose files - You can drag files here to upload - Cannot upload this file, it does not have an approved file type - Max file size is - Media root - Failed to move media - Failed to copy media - Failed to create a folder under parent id %0% - Failed to rename the folder with id %0% - Drag and drop your file(s) into the area - - - Create a new member - All Members - Member groups have no additional properties for editing. - - - Where do you want to create the new %0% - Create an item under - Select the document type you want to make a content template for - Enter a folder name - Choose a type and a title - Document Types within the Settings section, by editing the Allowed child node types under Permissions.]]> - The selected page in the content tree doesn't allow for any pages to be created below it. - Edit permissions for this document type - Media Types Types within the Settings section, by editing the Allowed child node types under Permissions.]]> - The selected media in the tree doesn't allow for any other media to be created below it. - Edit permissions for this media type - Document Type without a template - New folder - New data type - New JavaScript file - New empty partial view - New partial view macro - New partial view from snippet - New partial view macro from snippet - New partial view macro (without macro) - New style sheet file - New Rich Text Editor style sheet file - - - Browse your website - - Hide - If Umbraco isn't opening, you might need to allow popups from this site - has opened in a new window - Restart - Visit - Welcome - - - Stay - Discard changes - You have unsaved changes - Are you sure you want to navigate away from this page? - you have unsaved changes - Publishing will make the selected items visible on the site. - Unpublishing will remove the selected items and all their descendants from the site. - Unpublishing will remove this page and all its descendants from the site. - You have unsaved changes. Making changes to the Document Type will discard the changes. - - - Done - Deleted %0% item - Deleted %0% items - Deleted %0% out of %1% item - Deleted %0% out of %1% items - Published %0% item - Published %0% items - Published %0% out of %1% item - Published %0% out of %1% items - Unpublished %0% item - Unpublished %0% items - Unpublished %0% out of %1% item - Unpublished %0% out of %1% items - Moved %0% item - Moved %0% items - Moved %0% out of %1% item - Moved %0% out of %1% items - Copied %0% item - Copied %0% items - Copied %0% out of %1% item - Copied %0% out of %1% items - - - Link title - Link - Anchor / querystring - Name - Manage hostnames - Close this window - Are you sure you want to delete - Are you sure you want to disable - Are you sure? - Are you sure? - Cut - Edit Dictionary Item - Edit Language - Insert local link - Insert character - Insert graphic headline - Insert picture - Insert link - Click to add a Macro - Insert table - This will delete the language - Last Edited - Link - Internal link: - When using local links, insert "#" in front of link - Open in new window? - Macro Settings - This macro does not contain any properties you can edit - Paste - Edit permissions for - Set permissions for - Set permissions for %0% for user group %1% - Select the users groups you want to set permissions for - The items in the recycle bin are now being deleted. Please do not close this window while this operation takes place - The recycle bin is now empty - When items are deleted from the recycle bin, they will be gone forever - regexlib.com's webservice is currently experiencing some problems, which we have no control over. We are very sorry for this inconvenience.]]> - Search for a regular expression to add validation to a form field. Example: 'email, 'zip-code' 'url' - Remove Macro - Required Field - Site is reindexed - The website cache has been refreshed. All publish content is now up to date. While all unpublished content is still unpublished - The website cache will be refreshed. All published content will be updated, while unpublished content will stay unpublished. - Number of columns - Number of rows - Click on the image to see full size - Pick item - View Cache Item - Relate to original - Include descendants - The friendliest community - Link to page - Opens the linked document in a new window or tab - Link to media - Select content start node - Select media - Select media type - Select icon - Select item - Select link - Select macro - Select content - Select content type - Select media start node - Select member - Select member group - Select member type - Select node - Select sections - Select users - No icons were found - There are no parameters for this macro - There are no macros available to insert - External login providers - Exception Details - Stacktrace - Inner Exception - Link your - Un-link your - account - Select editor - Select snippet - This will delete the node and all its languages. If you only want to delete one language go and unpublish it instead. - - - There are no dictionary items. - - - %0%' below - ]]> - Culture Name - - Dictionary overview - - - Configured Searchers - Shows properties and tools for any configured Searcher (i.e. such as a multi-index searcher) - Field values - Health status - The health status of the index and if it can be read - Indexers - Index info - Lists the properties of the index - Manage Examine's indexes - Allows you to view the details of each index and provides some tools for managing the indexes - Rebuild index - - Depending on how much content there is in your site this could take a while.
- It is not recommended to rebuild an index during times of high website traffic or when editors are editing content. - ]]> -
- Searchers - Search the index and view the results - Tools - Tools to manage the index - - - Enter your username - Enter your password - Confirm your password - Name the %0%... - Enter a name... - Enter an email... - Enter a username... - Label... - Enter a description... - Type to search... - Type to filter... - Type to add tags (press enter after each tag)... - Enter your email - Enter a message... - Your username is usually your email - #value or ?key=value - Enter alias... - Generating alias... - Create item - Edit - Name - - - Create custom list view - Remove custom list view - A content type, media type or member type with this alias already exists - - - Renamed - Enter a new folder name here - %0% was renamed to %1% - - - Add prevalue - Database datatype - Property editor GUID - Property editor - Buttons - Enable advanced settings for - Enable context menu - Maximum default size of inserted images - Related stylesheets - Show label - Width and height - All property types & property data - using this data type will be deleted permanently, please confirm you want to delete these as well - Yes, delete - and all property types & property data using this data type - Select the folder to move - to in the tree structure below - was moved underneath - - - Your data has been saved, but before you can publish this page there are some errors you need to fix first: - The current membership provider does not support changing password (EnablePasswordRetrieval need to be true) - %0% already exists - There were errors: - There were errors: - The password should be a minimum of %0% characters long and contain at least %1% non-alpha numeric character(s) - %0% must be an integer - The %0% field in the %1% tab is mandatory - %0% is a mandatory field - %0% at %1% is not in a correct format - %0% is not in a correct format - - - Received an error from the server - The specified file type has been disallowed by the administrator - NOTE! Even though CodeMirror is enabled by configuration, it is disabled in Internet Explorer because it's not stable enough. - Please fill both alias and name on the new property type! - There is a problem with read/write access to a specific file or folder - Error loading Partial View script (file: %0%) - Please enter a title - Please choose a type - You're about to make the picture larger than the original size. Are you sure that you want to proceed? - Startnode deleted, please contact your administrator - Please mark content before changing style - No active styles available - Please place cursor at the left of the two cells you wish to merge - You cannot split a cell that hasn't been merged. - This property is invalid - - - About - Action - Actions - Add - Alias - All - Are you sure? - Back - Back to overview - Border - by - Cancel - Cell margin - Choose - Close - Close Window - Comment - Confirm - Constrain - Constrain proportions - Content - Continue - Copy - Create - Database - Date - Default - Delete - Deleted - Deleting... - Design - Dictionary - Dimensions - Down - Download - Edit - Edited - Elements - Email - Error - Field - Find - First - General - Groups - Group - Height - Help - Hide - History - Icon - Id - Import - Include subfolders in search - Info - Inner margin - Insert - Install - Invalid - Justify - Label - Language - Last - Layout - Links - Loading - Locked - Login - Log off - Logout - Macro - Mandatory - Message - Move - Name - New - Next - No - of - Off - OK - Open - Options - On - or - Order by - Password - Path - One moment please... - Previous - Properties - Rebuild - Email to receive form data - Recycle Bin - Your recycle bin is empty - Reload - Remaining - Remove - Rename - Renew - Required - Retrieve - Retry - Permissions - Scheduled Publishing - Search - Sorry, we can not find what you are looking for. - No items have been added - Server - Settings - Show - Show page on Send - Size - Sort - Status - Submit - Type - Type to search... - under - Up - Update - Upgrade - Upload - Url - User - Username - Value - View - Welcome... - Width - Yes - Folder - Search results - Reorder - I am done reordering - Preview - Change password - to - List view - Saving... - current - Embed - selected - - - Blue - - - Add group - Add property - Add editor - Add template - Add child node - Add child - Edit data type - Navigate sections - Shortcuts - show shortcuts - Toggle list view - Toggle allow as root - Comment/Uncomment lines - Remove line - Copy Lines Up - Copy Lines Down - Move Lines Up - Move Lines Down - General - Editor - Toggle allow culture variants - - - Background colour - Bold - Text colour - Font - Text - - - Page - - - The installer cannot connect to the database. - Could not save the web.config file. Please modify the connection string manually. - Your database has been found and is identified as - Database configuration - - install button to install the Umbraco %0% database - ]]> - - Next to proceed.]]> - Database not found! Please check that the information in the "connection string" of the "web.config" file is correct.

-

To proceed, please edit the "web.config" file (using Visual Studio or your favourite text editor), scroll to the bottom, add the connection string for your database in the key named "UmbracoDbDSN" and save the file.

-

- Click the retry button when - done.
- More information on editing web.config here.

]]>
- - Please contact your ISP if necessary. - If you're installing on a local machine or server you might need information from your system administrator.]]> - - Press the upgrade button to upgrade your database to Umbraco %0%

-

- Don't worry - no content will be deleted and everything will continue working afterwards! -

- ]]>
- Press Next to - proceed. ]]> - next to continue the configuration wizard]]> - The Default users' password needs to be changed!]]> - The Default user has been disabled or has no access to Umbraco!

No further actions needs to be taken. Click Next to proceed.]]> - The Default user's password has been successfully changed since the installation!

No further actions needs to be taken. Click Next to proceed.]]> - The password is changed! - Get a great start, watch our introduction videos - By clicking the next button (or modifying the umbracoConfigurationStatus in web.config), you accept the license for this software as specified in the box below. Notice that this Umbraco distribution consists of two different licenses, the open source MIT license for the framework and the Umbraco freeware license that covers the UI. - Not installed yet. - Affected files and folders - More information on setting up permissions for Umbraco here - You need to grant ASP.NET modify permissions to the following files/folders - Your permission settings are almost perfect!

- You can run Umbraco without problems, but you will not be able to install packages which are recommended to take full advantage of Umbraco.]]>
- How to Resolve - Click here to read the text version - video tutorial on setting up folder permissions for Umbraco or read the text version.]]> - Your permission settings might be an issue! -

- You can run Umbraco without problems, but you will not be able to create folders or install packages which are recommended to take full advantage of Umbraco.]]>
- Your permission settings are not ready for Umbraco! -

- In order to run Umbraco, you'll need to update your permission settings.]]>
- Your permission settings are perfect!

- You are ready to run Umbraco and install packages!]]>
- Resolving folder issue - Follow this link for more information on problems with ASP.NET and creating folders - Setting up folder permissions - - I want to start from scratch - learn how) - You can still choose to install Runway later on. Please go to the Developer section and choose Packages. - ]]> - You've just set up a clean Umbraco platform. What do you want to do next? - Runway is installed - - This is our list of recommended modules, check off the ones you would like to install, or view the full list of modules - ]]> - Only recommended for experienced users - I want to start with a simple website - - "Runway" is a simple website providing some basic document types and templates. The installer can set up Runway for you automatically, - but you can easily edit, extend or remove it. It's not necessary and you can perfectly use Umbraco without it. However, - Runway offers an easy foundation based on best practices to get you started faster than ever. - If you choose to install Runway, you can optionally select basic building blocks called Runway Modules to enhance your Runway pages. -

- - Included with Runway: Home page, Getting Started page, Installing Modules page.
- Optional Modules: Top Navigation, Sitemap, Contact, Gallery. -
- ]]>
- What is Runway - Step 1/5 Accept license - Step 2/5: Database configuration - Step 3/5: Validating File Permissions - Step 4/5: Check Umbraco security - Step 5/5: Umbraco is ready to get you started - Thank you for choosing Umbraco - Browse your new site -You installed Runway, so why not see how your new website looks.]]> - Further help and information -Get help from our award winning community, browse the documentation or watch some free videos on how to build a simple site, how to use packages and a quick guide to the Umbraco terminology]]> - Umbraco %0% is installed and ready for use - /web.config file and update the AppSetting key UmbracoConfigurationStatus in the bottom to the value of '%0%'.]]> - started instantly by clicking the "Launch Umbraco" button below.
If you are new to Umbraco, -you can find plenty of resources on our getting started pages.]]>
- Launch Umbraco -To manage your website, simply open the Umbraco back office and start adding content, updating the templates and stylesheets or add new functionality]]> - Connection to database failed. - Umbraco Version 3 - Umbraco Version 4 - Watch - Umbraco %0% for a fresh install or upgrading from version 3.0. -

- Press "next" to start the wizard.]]>
- - - Culture Code - Culture Name - - - You've been idle and logout will automatically occur in - Renew now to save your work - - - Happy super Sunday - Happy manic Monday - Happy tubular Tuesday - Happy wonderful Wednesday - Happy thunderous Thursday - Happy funky Friday - Happy Caturday - Log in below - Sign in with - Session timed out - © 2001 - %0%
Umbraco.com

]]>
- Forgotten password? - An email will be sent to the address specified with a link to reset your password - An email with password reset instructions will be sent to the specified address if it matched our records - Show password - Hide password - Return to login form - Please provide a new password - Your Password has been updated - The link you have clicked on is invalid or has expired - Umbraco: Reset Password - - - - - - - - - - - -
- - - - - -
- -
- -
-
- - - - - - -
-
-
- - - - -
- - - - -
-

- Password reset requested -

-

- Your username to login to the Umbraco back-office is: %0% -

-

- - - - - - -
- - Click this link to reset your password - -
-

-

If you cannot click on the link, copy and paste this URL into your browser window:

- - - - -
- - %1% - -
-

-
-
-


-
-
- - - ]]>
- - - Dashboard - Sections - Content - - - Choose page above... - %0% has been copied to %1% - Select where the document %0% should be copied to below - %0% has been moved to %1% - Select where the document %0% should be moved to below - has been selected as the root of your new content, click 'ok' below. - No node selected yet, please select a node in the list above before clicking 'ok' - The current node is not allowed under the chosen node because of its type - The current node cannot be moved to one of its subpages - The current node cannot exist at the root - The action isn't allowed since you have insufficient permissions on 1 or more child documents. - Relate copied items to original - - - %0%]]> - Notification settings saved for - - The following languages have been modified %0% - - - - - - - - - - - -
- - - - - -
- -
- -
-
- - - - - - -
-
-
- - - - -
- - - - -
-

- Hi %0%, -

-

- This is an automated mail to inform you that the task '%1%' has been performed on the page '%2%' by the user '%3%' -

- - - - - - -
- -
- EDIT
-
-

-

Update summary:

- %6% -

-

- Have a nice day!

- Cheers from the Umbraco robot -

-
-
-


-
-
- - - ]]>
- The following languages have been modified:

- %0% - ]]>
- [%0%] Notification about %1% performed on %2% - Notifications - - - Actions - Created - Create package - - button and locating the package. Umbraco packages usually have a ".umb" or ".zip" extension. - ]]> - This will delete the package - Drop to upload - Include all child nodes - or click here to choose package file - Upload package - Install a local package by selecting it from your machine. Only install packages from sources you know and trust - Upload another package - Cancel and upload another package - I accept - terms of use - - Path to file - Absolute path to file (ie: /bin/umbraco.bin) - Installed - Installed packages - Install local - Finish - This package has no configuration view - No packages have been created yet - You don’t have any packages installed - 'Packages' icon in the top right of your screen]]> - Package Actions - Author URL - Package Content - Package Files - Icon URL - Install package - License - License URL - Package Properties - Search for packages - Results for - We couldn’t find anything for - Please try searching for another package or browse through the categories - Popular - New releases - has - karma points - Information - Owner - Contributors - Created - Current version - .NET version - Downloads - Likes - Compatibility - This package is compatible with the following versions of Umbraco, as reported by community members. Full compatability cannot be guaranteed for versions reported below 100% - External sources - Author - Documentation - Package meta data - Package name - Package doesn't contain any items -
- You can safely remove this from the system by clicking "uninstall package" below.]]>
- Package options - Package readme - Package repository - Confirm package uninstall - Package was uninstalled - The package was successfully uninstalled - Uninstall package - - Notice: any documents, media etc depending on the items you remove, will stop working, and could lead to system instability, - so uninstall with caution. If in doubt, contact the package author.]]> - Package version - Package already installed - This package cannot be installed, it requires a minimum Umbraco version of - Uninstalling... - Downloading... - Importing... - Installing... - Restarting, please wait... - All done, your browser will now refresh, please wait... - Please click 'Finish' to complete installation and reload the page. - Uploading package... - - - Paste with full formatting (Not recommended) - The text you're trying to paste contains special characters or formatting. This could be caused by copying text from Microsoft Word. Umbraco can remove special characters or formatting automatically, so the pasted content will be more suitable for the web. - Paste as raw text without any formatting at all - Paste, but remove formatting (Recommended) - - - Group based protection - If you want to grant access to all members of specific member groups - You need to create a member group before you can use group based authentication - Error Page - Used when people are logged on, but do not have access - %0%]]> - %0% is now protected]]> - %0%]]> - Login Page - Choose the page that contains the login form - Remove protection... - %0%?]]> - Select the pages that contain login form and error messages - %0%]]> - %0%]]> - Specific members protection - If you wish to grant access to specific members - - - - - - - - - Include unpublished subpages - Publishing in progress - please wait... - %0% out of %1% pages have been published... - %0% has been published - %0% and subpages have been published - Publish %0% and all its subpages - Publish to publish %0% and thereby making its content publicly available.

- You can publish this page and all its subpages by checking Include unpublished subpages below. - ]]>
- - - You have not configured any approved colours - - - You can only select items of type(s): %0% - You have picked a content item currently deleted or in the recycle bin - You have picked content items currently deleted or in the recycle bin - - - Deleted item - You have picked a media item currently deleted or in the recycle bin - You have picked media items currently deleted or in the recycle bin - Trashed - - - enter external link - choose internal page - Caption - Link - Open in new window - enter the display caption - Enter the link - - - Reset crop - Save crop - Add new crop - Done - Undo edits - - - Select a version to compare with the current version - Current version - Red text will not be shown in the selected version. , green means added]]> - Document has been rolled back - This displays the selected version as HTML, if you wish to see the difference between 2 versions at the same time, use the diff view - Rollback to - Select version - View - - - Edit script file - - - Concierge - Content - Courier - Developer - Forms - Help - Umbraco Configuration Wizard - Media - Members - Newsletters - Packages - Settings - Statistics - Translation - Users - - - The best Umbraco video tutorials - - - Default template - To import a document type, find the ".udt" file on your computer by clicking the "Browse" button and click "Import" (you'll be asked for confirmation on the next screen) - New Tab Title - Node type - Type - Stylesheet - Script - Tab - Tab Title - Tabs - Master Content Type enabled - This Content Type uses - as a Master Content Type. Tabs from Master Content Types are not shown and can only be edited on the Master Content Type itself - No properties defined on this tab. Click on the "add a new property" link at the top to create a new property. - Create matching template - Add icon - - - Sort order - Creation date - Sorting complete. - Drag the different items up or down below to set how they should be arranged. Or click the column headers to sort the entire collection of items - - - - Validation - Validation errors must be fixed before the item can be saved - Failed - Saved - Insufficient user permissions, could not complete the operation - Cancelled - Operation was cancelled by a 3rd party add-in - Publishing was cancelled by a 3rd party add-in - Property type already exists - Property type created - DataType: %1%]]> - Propertytype deleted - Document Type saved - Tab created - Tab deleted - Tab with id: %0% deleted - Stylesheet not saved - Stylesheet saved - Stylesheet saved without any errors - Datatype saved - Dictionary item saved - Publishing failed because the parent page isn't published - Content published - and visible on the website - Content saved - Remember to publish to make changes visible - Sent For Approval - Changes have been sent for approval - Media saved - Member group saved - Media saved without any errors - Member saved - Stylesheet Property Saved - Stylesheet saved - Template saved - Error saving user (check log) - User Saved - User type saved - User group saved - File not saved - file could not be saved. Please check file permissions - File saved - File saved without any errors - Language saved - Media Type saved - Member Type saved - Member Group saved - Template not saved - Please make sure that you do not have 2 templates with the same alias - Template saved - Template saved without any errors! - Content unpublished - Partial view saved - Partial view saved without any errors! - Partial view not saved - An error occurred saving the file. - Permissions saved for - Deleted %0% user groups - %0% was deleted - Enabled %0% users - Disabled %0% users - %0% is now enabled - %0% is now disabled - User groups have been set - Unlocked %0% users - %0% is now unlocked - Member was exported to file - An error occurred while exporting the member - User %0% was deleted - Invite user - Invitation has been re-sent to %0% - Document type was exported to file - An error occurred while exporting the document type - - - Add style - Edit style - Rich text editor styles - Define the styles that should be available in the rich text editor for this stylesheet - Edit stylesheet - Edit stylesheet property - The name displayed in the editor style selector - Preview - How the text will look like in the rich text editor. - Selector - Uses CSS syntax, e.g. "h1" or ".redHeader" - Styles - The CSS that should be applied in the rich text editor, e.g. "color:red;" - Code - Editor - - - Failed to delete template with ID %0% - Edit template - Sections - Insert content area - Insert content area placeholder - Insert - Choose what to insert into your template - Dictionary item - A dictionary item is a placeholder for a translatable piece of text, which makes it easy to create designs for multilingual websites. - Macro - - A Macro is a configurable component which is great for - reusable parts of your design, where you need the option to provide parameters, - such as galleries, forms and lists. - - Value - Displays the value of a named field from the current page, with options to modify the value or fallback to alternative values. - Partial view - - A partial view is a separate template file which can be rendered inside another - template, it's great for reusing markup or for separating complex templates into separate files. - - Master template - No master - Render child template - @RenderBody() placeholder. - ]]> - Define a named section - @section { ... }. This can be rendered in a - specific area of the parent of this template, by using @RenderSection. - ]]> - Render a named section - @RenderSection(name) placeholder. - This renders an area of a child template which is wrapped in a corresponding @section [name]{ ... } definition. - ]]> - Section Name - Section is mandatory - - If mandatory, the child template must contain a @section definition, otherwise an error is shown. - - Query builder - items returned, in - I want - all content - content of type "%0%" - from - my website - where - and - is - is not - before - before (including selected date) - after - after (including selected date) - equals - does not equal - contains - does not contain - greater than - greater than or equal to - less than - less than or equal to - Id - Name - Created Date - Last Updated Date - order by - ascending - descending - Template - - - Image - Macro - Choose type of content - Choose a layout - Add a row - Add content - Drop content - Settings applied - This content is not allowed here - This content is allowed here - Click to embed - Click to insert image - Image caption... - Write here... - Grid Layouts - Layouts are the overall work area for the grid editor, usually you only need one or two different layouts - Add Grid Layout - Adjust the layout by setting column widths and adding additional sections - Row configurations - Rows are predefined cells arranged horizontally - Add row configuration - Adjust the row by setting cell widths and adding additional cells - Columns - Total combined number of columns in the grid layout - Settings - Configure what settings editors can change - Styles - Configure what styling editors can change - Allow all editors - Allow all row configurations - Maximum items - Leave blank or set to 0 for unlimited - Set as default - Choose extra - Choose default - are added - - - Compositions - Group - You have not added any groups - Add group - Inherited from - Add property - Required label - Enable list view - Configures the content item to show a sortable and searchable list of its children, the children will not be shown in the tree - Allowed Templates - Choose which templates editors are allowed to use on content of this type - Allow as root - Allow editors to create content of this type in the root of the content tree. - Allowed child node types - Allow content of the specified types to be created underneath content of this type. - Choose child node - Inherit tabs and properties from an existing document type. New tabs will be added to the current document type or merged if a tab with an identical name exists. - This content type is used in a composition, and therefore cannot be composed itself. - There are no content types available to use as a composition. - Create new - Use existing - Editor settings - Configuration - Yes, delete - was moved underneath - was copied underneath - Select the folder to move - Select the folder to copy - to in the tree structure below - All Document types - All Documents - All media items - using this document type will be deleted permanently, please confirm you want to delete these as well. - using this media type will be deleted permanently, please confirm you want to delete these as well. - using this member type will be deleted permanently, please confirm you want to delete these as well - and all documents using this type - and all media items using this type - and all members using this type - Member can edit - Allow this property value to be edited by the member on their profile page - Is sensitive data - Hide this property value from content editors that don't have access to view sensitive information - Show on member profile - Allow this property value to be displayed on the member profile page - tab has no sort order - Where is this composition used? - This composition is currently used in the composition of the following content types: - Allow varying by culture - Allow editors to create content of this type in different languages. - Allow varying by culture - Element type - Is an Element type - An Element type is meant to be used for instance in Nested Content, and not in the tree. - This is not applicable for an Element type - You have made changes to this property. Are you sure you want to discard them? - - - Add language - Mandatory language - Properties on this language have to be filled out before the node can be published. - Default language - An Umbraco site can only have one default language set. - Switching default language may result in default content missing. - Falls back to - No fall back language - To allow multi-lingual content to fall back to another language if not present in the requested language, select it here. - Fall back language - - - - Add parameter - Edit parameter - Enter macro name - Parameters - Define the parameters that should be available when using this macro. - Select partial view macro file - - - Building models - this can take a bit of time, don't worry - Models generated - Models could not be generated - Models generation has failed, see exception in U log - - - Add fallback field - Fallback field - Add default value - Default value - Fallback field - Default value - Casing - Encoding - Choose field - Convert line breaks - Yes, convert line breaks - Replaces line breaks with 'br' html tag - Custom Fields - Date only - Format and encoding - Format as date - Format the value as a date, or a date with time, according to the active culture - HTML encode - Will replace special characters by their HTML equivalent. - Will be inserted after the field value - Will be inserted before the field value - Lowercase - Modify output - None - Output sample - Insert after field - Insert before field - Recursive - Yes, make it recursive - Separator - Standard Fields - Uppercase - URL encode - Will format special characters in URLs - Will only be used when the field values above are empty - This field will only be used if the primary field is empty - Date and time - - - Translation details - Download XML DTD - Fields - Include subpages - - No translator users found. Please create a translator user before you start sending content to translation - The page '%0%' has been send to translation - Send the page '%0%' to translation - Total words - Translate to - Translation completed. - You can preview the pages, you've just translated, by clicking below. If the original page is found, you will get a comparison of the 2 pages. - Translation failed, the XML file might be corrupt - Translation options - Translator - Upload translation XML - - - Content - Content Templates - Media - Cache Browser - Recycle Bin - Created packages - Data Types - Dictionary - Installed packages - Install skin - Install starter kit - Languages - Install local package - Macros - Media Types - Members - Member Groups - Member Roles - Member Types - Document Types - Relation Types - Packages - Packages - Partial Views - Partial View Macro Files - Install from repository - Install Runway - Runway modules - Scripting Files - Scripts - Stylesheets - Templates - Log Viewer - Users - Settings - Templating - Third Party - - - New update ready - %0% is ready, click here for download - No connection to server - Error checking for update. Please review trace-stack for further information - - - Access - Based on the assigned groups and start nodes, the user has access to the following nodes - Assign access - Administrator - Category field - User created - Change Your Password - Change photo - New password - hasn't been locked out - The password hasn't been changed - Confirm new password - You can change your password for accessing the Umbraco Back Office by filling out the form below and click the 'Change Password' button - Content Channel - Create another user - Create new users to give them access to Umbraco. When a new user is created a password will be generated that you can share with the user. - Description field - Disable User - Document Type - Editor - Excerpt field - Failed login attempts - Go to user profile - Add groups to assign access and permissions - Invite another user - Invite new users to give them access to Umbraco. An invite email will be sent to the user with information on how to log in to Umbraco. Invites last for 72 hours. - Language - Set the language you will see in menus and dialogs - Last lockout date - Last login - Password last changed - Username - Media start node - Limit the media library to a specific start node - Media start nodes - Limit the media library to specific start nodes - Sections - Disable Umbraco Access - has not logged in yet - Old password - Password - Reset password - Your password has been changed! - Please confirm the new password - Enter your new password - Your new password cannot be blank! - Current password - Invalid current password - There was a difference between the new password and the confirmed password. Please try again! - The confirmed password doesn't match the new password! - Replace child node permissions - You are currently modifying permissions for the pages: - Select pages to modify their permissions - Remove photo - Default permissions - Granular permissions - Set permissions for specific nodes - Profile - Search all children - Add sections to give users access - Select user groups - No start node selected - No start nodes selected - Content start node - Limit the content tree to a specific start node - Content start nodes - Limit the content tree to specific start nodes - User last updated - has been created - The new user has successfully been created. To log in to Umbraco use the password below. - User management - Name - User permissions - User group - has been invited - An invitation has been sent to the new user with details about how to log in to Umbraco. - Hello there and welcome to Umbraco! In just 1 minute you’ll be good to go, we just need you to setup a password and add a picture for your avatar. - Welcome to Umbraco! Unfortunately your invite has expired. Please contact your administrator and ask them to resend it. - Uploading a photo of yourself will make it easy for other users to recognize you. Click the circle above to upload your photo. - Writer - Change - Your profile - Your recent history - Session expires in - Invite user - Create user - Send invite - Back to users - Umbraco: Invitation - - - - - - - - - - - -
- - - - - -
- -
- -
-
- - - - - - -
-
-
- - - - -
- - - - -
-

- Hi %0%, -

-

- You have been invited by %1% to the Umbraco Back Office. -

-

- Message from %1%: -
- %2% -

- - - - - - -
- - - - - - -
- - Click this link to accept the invite - -
-
-

If you cannot click on the link, copy and paste this URL into your browser window:

- - - - -
- - %3% - -
-

-
-
-


-
-
- - ]]>
- Invite - Resending invitation... - Delete User - Are you sure you wish to delete this user account? - All - Active - Disabled - Locked out - Invited - Inactive - Name (A-Z) - Name (Z-A) - Newest - Oldest - Last login - - - Validation - No validation - Validate as an email address - Validate as a number - Validate as a URL - ...or enter a custom validation - Field is mandatory - Enter a regular expression - You need to add at least - You can only have - items - items selected - Invalid date - Not a number - Invalid email - Custom validation - - - - Value is set to the recommended value: '%0%'. - Value was set to '%1%' for XPath '%2%' in configuration file '%3%'. - Expected value '%1%' for '%2%' in configuration file '%3%', but found '%0%'. - Found unexpected value '%0%' for '%2%' in configuration file '%3%'. - - Custom errors are set to '%0%'. - Custom errors are currently set to '%0%'. It is recommended to set this to '%1%' before go live. - Custom errors successfully set to '%0%'. - MacroErrors are set to '%0%'. - MacroErrors are set to '%0%' which will prevent some or all pages in your site from loading completely if there are any errors in macros. Rectifying this will set the value to '%1%'. - MacroErrors are now set to '%0%'. - - Try Skip IIS Custom Errors is set to '%0%' and you're using IIS version '%1%'. - Try Skip IIS Custom Errors is currently '%0%'. It is recommended to set this to '%1%' for your IIS version (%2%). - Try Skip IIS Custom Errors successfully set to '%0%'. - - File does not exist: '%0%'. - '%0%' in config file '%1%'.]]> - There was an error, check log for full error: %0%. - Database - The database schema is correct for this version of Umbraco - %0% problems were detected with your database schema (Check the log for details) - Some errors were detected while validating the database schema against the current version of Umbraco. - Your website's certificate is valid. - Certificate validation error: '%0%' - Your website's SSL certificate has expired. - Your website's SSL certificate is expiring in %0% days. - Error pinging the URL %0% - '%1%' - You are currently %0% viewing the site using the HTTPS scheme. - The appSetting 'Umbraco.Core.UseHttps' is set to 'false' in your web.config file. Once you access this site using the HTTPS scheme, that should be set to 'true'. - The appSetting 'Umbraco.Core.UseHttps' is set to '%0%' in your web.config file, your cookies are %1% marked as secure. - Could not update the 'Umbraco.Core.UseHttps' setting in your web.config file. Error: %0% - - Enable HTTPS - Sets umbracoSSL setting to true in the appSettings of the web.config file. - The appSetting 'Umbraco.Core.UseHttps' is now set to 'true' in your web.config file, your cookies will be marked as secure. - Fix - Cannot fix a check with a value comparison type of 'ShouldNotEqual'. - Cannot fix a check with a value comparison type of 'ShouldEqual' with a provided value. - Value to fix check not provided. - Debug compilation mode is disabled. - Debug compilation mode is currently enabled. It is recommended to disable this setting before go live. - Debug compilation mode successfully disabled. - Trace mode is disabled. - Trace mode is currently enabled. It is recommended to disable this setting before go live. - Trace mode successfully disabled. - All folders have the correct permissions set. - - %0%.]]> - %0%. If they aren't being written to no action need be taken.]]> - All files have the correct permissions set. - - %0%.]]> - %0%. If they aren't being written to no action need be taken.]]> - X-Frame-Options used to control whether a site can be IFRAMEd by another was found.]]> - X-Frame-Options used to control whether a site can be IFRAMEd by another was not found.]]> - Set Header in Config - Adds a value to the httpProtocol/customHeaders section of web.config to prevent the site being IFRAMEd by other websites. - A setting to create a header preventing IFRAMEing of the site by other websites has been added to your web.config file. - Could not update web.config file. Error: %0% - X-Content-Type-Options used to protect against MIME sniffing vulnerabilities was found.]]> - X-Content-Type-Options used to protect against MIME sniffing vulnerabilities was not found.]]> - Adds a value to the httpProtocol/customHeaders section of web.config to protect against MIME sniffing vulnerabilities. - A setting to create a header protecting against MIME sniffing vulnerabilities has been added to your web.config file. - Strict-Transport-Security, also known as the HSTS-header, was found.]]> - Strict-Transport-Security was not found.]]> - Adds the header 'Strict-Transport-Security' with the value 'max-age=10886400' to the httpProtocol/customHeaders section of web.config. Use this fix only if you will have your domains running with https for the next 18 weeks (minimum). - The HSTS header has been added to your web.config file. - X-XSS-Protection was found.]]> - X-XSS-Protection was not found.]]> - Adds the header 'X-XSS-Protection' with the value '1; mode=block' to the httpProtocol/customHeaders section of web.config. - The X-XSS-Protection header has been added to your web.config file. - - %0%.]]> - No headers revealing information about the website technology were found. - In the Web.config file, system.net/mailsettings could not be found. - In the Web.config file system.net/mailsettings section, the host is not configured. - SMTP settings are configured correctly and the service is operating as expected. - The SMTP server configured with host '%0%' and port '%1%' could not be reached. Please check to ensure the SMTP settings in the Web.config file system.net/mailsettings are correct. - %0%.]]> - %0%.]]> -

Results of the scheduled Umbraco Health Checks run on %0% at %1% are as follows:

%2%]]>
- Umbraco Health Check Status: %0% - - - Disable URL tracker - Enable URL tracker - Original URL - Redirected To - Redirect Url Management - The following URLs redirect to this content item: - No redirects have been made - When a published page gets renamed or moved a redirect will automatically be made to the new page. - Are you sure you want to remove the redirect from '%0%' to '%1%'? - Redirect URL removed. - Error removing redirect URL. - This will remove the redirect - Are you sure you want to disable the URL tracker? - URL tracker has now been disabled. - Error disabling the URL tracker, more information can be found in your log file. - URL tracker has now been enabled. - Error enabling the URL tracker, more information can be found in your log file. - - - No Dictionary items to choose from - - - %0% characters left.]]> - %1% too many.]]> - - - Trashed content with Id: {0} related to original parent content with Id: {1} - Trashed media with Id: {0} related to original parent media item with Id: {1} - Cannot automatically restore this item - There is no location where this item can be automatically restored. You can move the item manually using the tree below. - was restored under - - - Direction - Parent to child - Bidirectional - Parent - Child - Count - Relations - Created - Comment - Name - No relations for this relation type. - Relation Type - Relations - - - Getting Started - Redirect URL Management - Content - Welcome - Examine Management - Published Status - Models Builder - Health Check - Profiling - Getting Started - Install Umbraco Forms - - - Go back - Active layout: - Jump to - group - passed - warning - failed - suggestion - Check passed - Check failed - Open backoffice search - Open/Close backoffice help - Open/Close your profile options - - - Relations - This Data Type has no relations. - Used by Document Types - No relations to Document Types. - Used by Media Types - No relations to Media Types. - Used by Member Types - No relations to Member Types. - Used by - - -
+ + + + The Umbraco community + https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files + + + Culture and Hostnames + Audit Trail + Browse Node + Change Document Type + Copy + Create + Export + Create Package + Create group + Delete + Disable + Empty recycle bin + Enable + Export Document Type + Import Document Type + Import Package + Edit in Canvas + Exit + Move + Notifications + Public access + Publish + Unpublish + Reload + Republish entire site + Rename + Restore + Set permissions for the page %0% + Choose where to copy + Choose where to move + to in the tree structure below + was moved to + was copied to + was deleted + Permissions + Rollback + Send To Publish + Send To Translation + Set group + Sort + Translate + Update + Set permissions + Unlock + Create Content Template + Resend Invitation + + + Content + Administration + Structure + Other + + + Allow access to assign culture and hostnames + Allow access to view a node's history log + Allow access to view a node + Allow access to change document type for a node + Allow access to copy a node + Allow access to create nodes + Allow access to delete nodes + Allow access to move a node + Allow access to set and change public access for a node + Allow access to publish a node + Allow access to unpublish a node + Allow access to change permissions for a node + Allow access to roll back a node to a previous state + Allow access to send a node for approval before publishing + Allow access to send a node for translation + Allow access to change the sort order for nodes + Allow access to translate a node + Allow access to save a node + Allow access to create a Content Template + + + Content + Info + + + Permission denied. + Add new Domain + remove + Invalid node. + One or more domains have an invalid format. + Domain has already been assigned. + Language + Domain + New domain '%0%' has been created + Domain '%0%' is deleted + Domain '%0%' has already been assigned + Domain '%0%' has been updated + Edit Current Domains + + + Inherit + Culture + + or inherit culture from parent nodes. Will also apply
+ to the current node, unless a domain below applies too.]]> +
+ Domains + + + Clear selection + Select + Do something else + Bold + Cancel Paragraph Indent + Insert form field + Insert graphic headline + Edit Html + Indent Paragraph + Italic + Center + Justify Left + Justify Right + Insert Link + Insert local link (anchor) + Bullet List + Numeric List + Insert macro + Insert picture + Publish and close + Publish with descendants + Edit relations + Return to list + Save + Save and close + Save and publish + Save and schedule + Save and send for approval + Save list view + Schedule + Preview + Preview is disabled because there's no template assigned + Choose style + Show styles + Insert table + Save and generate models + Undo + Redo + Delete tag + Cancel + Confirm + More publishing options + + + Viewing for + Content deleted + Content unpublished + Content saved and Published + Content saved and published for languages: %0% + Content saved + Content saved for languages: %0% + Content moved + Content copied + Content rolled back + Content sent for publishing + Content sent for publishing for languages: %0% + Sort child items performed by user + Copy + Publish + Publish + Move + Save + Save + Delete + Unpublish + Rollback + Send To Publish + Send To Publish + Sort + History (all variants) + + + To change the document type for the selected content, first select from the list of valid types for this location. + Then confirm and/or amend the mapping of properties from the current type to the new, and click Save. + The content has been re-published. + Current Property + Current type + The document type cannot be changed, as there are no alternatives valid for this location. An alternative will be valid if it is allowed under the parent of the selected content item and that all existing child content items are allowed to be created under it. + Document Type Changed + Map Properties + Map to Property + New Template + New Type + none + Content + Select New Document Type + The document type of the selected content has been successfully changed to [new type] and the following properties mapped: + to + Could not complete property mapping as one or more properties have more than one mapping defined. + Only alternate types valid for the current location are displayed. + + + Failed to create a folder under parent with ID %0% + Failed to create a folder under parent with name %0% + The folder name cannot contain illegal characters. + Failed to delete item: %0% + + + Is Published + About this page + Alias + (how would you describe the picture over the phone) + Alternative Links + Click to edit this item + Created by + Original author + Updated by + Created + Date/time this document was created + Document Type + Editing + Remove at + This item has been changed after publication + This item is not published + Last published + There are no items to show + There are no items to show in the list. + No content has been added + No members have been added + Media Type + Link to media item(s) + Member Group + Role + Member Type + No changes have been made + No date chosen + Page title + This media item has no link + Properties + This document is published but is not visible because the parent '%0%' is unpublished + This culture is published but is not visible because it is unpublished on parent '%0%' + This document is published but is not in the cache + Could not get the url + This document is published but its url would collide with content %0% + This document is published but its url cannot be routed + Publish + Published + Published (pending changes) + Publication Status + Publish with descendants to publish %0% and all content items underneath and thereby making their content publicly available.]]> + Publish with descendants to publish the selected languages and the same languages of content items underneath and thereby making their content publicly available.]]> + Publish at + Unpublish at + Clear Date + Set date + Sortorder is updated + To sort the nodes, simply drag the nodes or click one of the column headers. You can select multiple nodes by holding the "shift" or "control" key while selecting + Statistics + Title (optional) + Alternative text (optional) + Type + Unpublish + Unpublished + Last edited + Date/time this document was edited + Remove file(s) + Link to document + Member of group(s) + Not a member of group(s) + Child items + Target + This translates to the following time on the server: + What does this mean?]]> + Are you sure you want to delete this item? + Property %0% uses editor %1% which is not supported by Nested Content. + No content types are configured for this property. + Add another text box + Remove this text box + Content root + Include drafts: also publish unpublished content items. + This value is hidden. If you need access to view this value please contact your website administrator. + This value is hidden. + What languages would you like to publish? All languages with content are saved! + What languages would you like to publish? + What languages would you like to save? + All languages with content are saved on creation! + What languages would you like to send for approval? + What languages would you like to schedule? + Select the languages to unpublish. Unpublishing a mandatory language will unpublish all languages. + Published Languages + Unpublished Languages + Unmodified Languages + These languages haven't been created + Ready to Publish? + Ready to Save? + Send for approval + Select the date and time to publish and/or unpublish the content item. + Create new + Paste from clipboard + + + Create a new Content Template from '%0%' + Blank + Select a Content Template + Content Template created + A Content Template was created from '%0%' + Another Content Template with the same name already exists + A Content Template is predefined content that an editor can select to use as the basis for creating new content + + + Click to upload + or click here to choose files + You can drag files here to upload + Cannot upload this file, it does not have an approved file type + Max file size is + Media root + Failed to move media + Failed to copy media + Failed to create a folder under parent id %0% + Failed to rename the folder with id %0% + Drag and drop your file(s) into the area + + + Create a new member + All Members + Member groups have no additional properties for editing. + + + Where do you want to create the new %0% + Create an item under + Select the document type you want to make a content template for + Enter a folder name + Choose a type and a title + Document Types within the Settings section, by editing the Allowed child node types under Permissions.]]> + The selected page in the content tree doesn't allow for any pages to be created below it. + Edit permissions for this document type + Media Types Types within the Settings section, by editing the Allowed child node types under Permissions.]]> + The selected media in the tree doesn't allow for any other media to be created below it. + Edit permissions for this media type + Document Type without a template + New folder + New data type + New JavaScript file + New empty partial view + New partial view macro + New partial view from snippet + New partial view macro from snippet + New partial view macro (without macro) + New style sheet file + New Rich Text Editor style sheet file + + + Browse your website + - Hide + If Umbraco isn't opening, you might need to allow popups from this site + has opened in a new window + Restart + Visit + Welcome + + + Stay + Discard changes + You have unsaved changes + Are you sure you want to navigate away from this page? - you have unsaved changes + Publishing will make the selected items visible on the site. + Unpublishing will remove the selected items and all their descendants from the site. + Unpublishing will remove this page and all its descendants from the site. + You have unsaved changes. Making changes to the Document Type will discard the changes. + + + Done + Deleted %0% item + Deleted %0% items + Deleted %0% out of %1% item + Deleted %0% out of %1% items + Published %0% item + Published %0% items + Published %0% out of %1% item + Published %0% out of %1% items + Unpublished %0% item + Unpublished %0% items + Unpublished %0% out of %1% item + Unpublished %0% out of %1% items + Moved %0% item + Moved %0% items + Moved %0% out of %1% item + Moved %0% out of %1% items + Copied %0% item + Copied %0% items + Copied %0% out of %1% item + Copied %0% out of %1% items + + + Link title + Link + Anchor / querystring + Name + Manage hostnames + Close this window + Are you sure you want to delete + Are you sure you want to disable + Are you sure? + Are you sure? + Cut + Edit Dictionary Item + Edit Language + Insert local link + Insert character + Insert graphic headline + Insert picture + Insert link + Click to add a Macro + Insert table + This will delete the language + Last Edited + Link + Internal link: + When using local links, insert "#" in front of link + Open in new window? + Macro Settings + This macro does not contain any properties you can edit + Paste + Edit permissions for + Set permissions for + Set permissions for %0% for user group %1% + Select the users groups you want to set permissions for + The items in the recycle bin are now being deleted. Please do not close this window while this operation takes place + The recycle bin is now empty + When items are deleted from the recycle bin, they will be gone forever + regexlib.com's webservice is currently experiencing some problems, which we have no control over. We are very sorry for this inconvenience.]]> + Search for a regular expression to add validation to a form field. Example: 'email, 'zip-code' 'url' + Remove Macro + Required Field + Site is reindexed + The website cache has been refreshed. All publish content is now up to date. While all unpublished content is still unpublished + The website cache will be refreshed. All published content will be updated, while unpublished content will stay unpublished. + Number of columns + Number of rows + Click on the image to see full size + Pick item + View Cache Item + Relate to original + Include descendants + The friendliest community + Link to page + Opens the linked document in a new window or tab + Link to media + Select content start node + Select media + Select media type + Select icon + Select item + Select link + Select macro + Select content + Select content type + Select media start node + Select member + Select member group + Select member type + Select node + Select sections + Select users + No icons were found + There are no parameters for this macro + There are no macros available to insert + External login providers + Exception Details + Stacktrace + Inner Exception + Link your + Un-link your + account + Select editor + Select snippet + This will delete the node and all its languages. If you only want to delete one language go and unpublish it instead. + + + There are no dictionary items. + + + %0%' below + ]]> + Culture Name + + Dictionary overview + + + Configured Searchers + Shows properties and tools for any configured Searcher (i.e. such as a multi-index searcher) + Field values + Health status + The health status of the index and if it can be read + Indexers + Index info + Lists the properties of the index + Manage Examine's indexes + Allows you to view the details of each index and provides some tools for managing the indexes + Rebuild index + + Depending on how much content there is in your site this could take a while.
+ It is not recommended to rebuild an index during times of high website traffic or when editors are editing content. + ]]> +
+ Searchers + Search the index and view the results + Tools + Tools to manage the index + + + Enter your username + Enter your password + Confirm your password + Name the %0%... + Enter a name... + Enter an email... + Enter a username... + Label... + Enter a description... + Type to search... + Type to filter... + Type to add tags (press enter after each tag)... + Enter your email + Enter a message... + Your username is usually your email + #value or ?key=value + Enter alias... + Generating alias... + Create item + Edit + Name + + + Create custom list view + Remove custom list view + A content type, media type or member type with this alias already exists + + + Renamed + Enter a new folder name here + %0% was renamed to %1% + + + Add prevalue + Database datatype + Property editor GUID + Property editor + Buttons + Enable advanced settings for + Enable context menu + Maximum default size of inserted images + Related stylesheets + Show label + Width and height + All property types & property data + using this data type will be deleted permanently, please confirm you want to delete these as well + Yes, delete + and all property types & property data using this data type + Select the folder to move + to in the tree structure below + was moved underneath + %0% will have the following consequence]]> + I understand this action will delete the properties and data based on this Data Type + + + Your data has been saved, but before you can publish this page there are some errors you need to fix first: + The current membership provider does not support changing password (EnablePasswordRetrieval need to be true) + %0% already exists + There were errors: + There were errors: + The password should be a minimum of %0% characters long and contain at least %1% non-alpha numeric character(s) + %0% must be an integer + The %0% field in the %1% tab is mandatory + %0% is a mandatory field + %0% at %1% is not in a correct format + %0% is not in a correct format + + + Received an error from the server + The specified file type has been disallowed by the administrator + NOTE! Even though CodeMirror is enabled by configuration, it is disabled in Internet Explorer because it's not stable enough. + Please fill both alias and name on the new property type! + There is a problem with read/write access to a specific file or folder + Error loading Partial View script (file: %0%) + Please enter a title + Please choose a type + You're about to make the picture larger than the original size. Are you sure that you want to proceed? + Startnode deleted, please contact your administrator + Please mark content before changing style + No active styles available + Please place cursor at the left of the two cells you wish to merge + You cannot split a cell that hasn't been merged. + This property is invalid + + + About + Action + Actions + Add + Alias + All + Are you sure? + Back + Back to overview + Border + by + Cancel + Cell margin + Choose + Close + Close Window + Comment + Confirm + Constrain + Constrain proportions + Content + Continue + Copy + Create + Database + Date + Default + Delete + Deleted + Deleting... + Design + Dictionary + Dimensions + Down + Download + Edit + Edited + Elements + Email + Error + Field + Find + First + General + Groups + Group + Height + Help + Hide + History + Icon + Id + Import + Include subfolders in search + Info + Inner margin + Insert + Install + Invalid + Justify + Label + Language + Last + Layout + Links + Loading + Locked + Login + Log off + Logout + Macro + Mandatory + Message + Move + Name + New + Next + No + of + Off + OK + Open + Options + On + or + Order by + Password + Path + One moment please... + Previous + Properties + Rebuild + Email to receive form data + Recycle Bin + Your recycle bin is empty + Reload + Remaining + Remove + Rename + Renew + Required + Retrieve + Retry + Permissions + Scheduled Publishing + Search + Sorry, we can not find what you are looking for. + No items have been added + Server + Settings + Show + Show page on Send + Size + Sort + Status + Submit + Type + Type to search... + under + Up + Update + Upgrade + Upload + Url + User + Username + Value + View + Welcome... + Width + Yes + Folder + Search results + Reorder + I am done reordering + Preview + Change password + to + List view + Saving... + current + Embed + selected + + + Blue + + + Add group + Add property + Add editor + Add template + Add child node + Add child + Edit data type + Navigate sections + Shortcuts + show shortcuts + Toggle list view + Toggle allow as root + Comment/Uncomment lines + Remove line + Copy Lines Up + Copy Lines Down + Move Lines Up + Move Lines Down + General + Editor + Toggle allow culture variants + + + Background colour + Bold + Text colour + Font + Text + + + Page + + + The installer cannot connect to the database. + Could not save the web.config file. Please modify the connection string manually. + Your database has been found and is identified as + Database configuration + + install button to install the Umbraco %0% database + ]]> + + Next to proceed.]]> + Database not found! Please check that the information in the "connection string" of the "web.config" file is correct.

+

To proceed, please edit the "web.config" file (using Visual Studio or your favourite text editor), scroll to the bottom, add the connection string for your database in the key named "UmbracoDbDSN" and save the file.

+

+ Click the retry button when + done.
+ More information on editing web.config here.

]]>
+ + Please contact your ISP if necessary. + If you're installing on a local machine or server you might need information from your system administrator.]]> + + Press the upgrade button to upgrade your database to Umbraco %0%

+

+ Don't worry - no content will be deleted and everything will continue working afterwards! +

+ ]]>
+ Press Next to + proceed. ]]> + next to continue the configuration wizard]]> + The Default users' password needs to be changed!]]> + The Default user has been disabled or has no access to Umbraco!

No further actions needs to be taken. Click Next to proceed.]]> + The Default user's password has been successfully changed since the installation!

No further actions needs to be taken. Click Next to proceed.]]> + The password is changed! + Get a great start, watch our introduction videos + By clicking the next button (or modifying the umbracoConfigurationStatus in web.config), you accept the license for this software as specified in the box below. Notice that this Umbraco distribution consists of two different licenses, the open source MIT license for the framework and the Umbraco freeware license that covers the UI. + Not installed yet. + Affected files and folders + More information on setting up permissions for Umbraco here + You need to grant ASP.NET modify permissions to the following files/folders + Your permission settings are almost perfect!

+ You can run Umbraco without problems, but you will not be able to install packages which are recommended to take full advantage of Umbraco.]]>
+ How to Resolve + Click here to read the text version + video tutorial on setting up folder permissions for Umbraco or read the text version.]]> + Your permission settings might be an issue! +

+ You can run Umbraco without problems, but you will not be able to create folders or install packages which are recommended to take full advantage of Umbraco.]]>
+ Your permission settings are not ready for Umbraco! +

+ In order to run Umbraco, you'll need to update your permission settings.]]>
+ Your permission settings are perfect!

+ You are ready to run Umbraco and install packages!]]>
+ Resolving folder issue + Follow this link for more information on problems with ASP.NET and creating folders + Setting up folder permissions + + I want to start from scratch + learn how) + You can still choose to install Runway later on. Please go to the Developer section and choose Packages. + ]]> + You've just set up a clean Umbraco platform. What do you want to do next? + Runway is installed + + This is our list of recommended modules, check off the ones you would like to install, or view the full list of modules + ]]> + Only recommended for experienced users + I want to start with a simple website + + "Runway" is a simple website providing some basic document types and templates. The installer can set up Runway for you automatically, + but you can easily edit, extend or remove it. It's not necessary and you can perfectly use Umbraco without it. However, + Runway offers an easy foundation based on best practices to get you started faster than ever. + If you choose to install Runway, you can optionally select basic building blocks called Runway Modules to enhance your Runway pages. +

+ + Included with Runway: Home page, Getting Started page, Installing Modules page.
+ Optional Modules: Top Navigation, Sitemap, Contact, Gallery. +
+ ]]>
+ What is Runway + Step 1/5 Accept license + Step 2/5: Database configuration + Step 3/5: Validating File Permissions + Step 4/5: Check Umbraco security + Step 5/5: Umbraco is ready to get you started + Thank you for choosing Umbraco + Browse your new site +You installed Runway, so why not see how your new website looks.]]> + Further help and information +Get help from our award winning community, browse the documentation or watch some free videos on how to build a simple site, how to use packages and a quick guide to the Umbraco terminology]]> + Umbraco %0% is installed and ready for use + /web.config file and update the AppSetting key UmbracoConfigurationStatus in the bottom to the value of '%0%'.]]> + started instantly by clicking the "Launch Umbraco" button below.
If you are new to Umbraco, +you can find plenty of resources on our getting started pages.]]>
+ Launch Umbraco +To manage your website, simply open the Umbraco back office and start adding content, updating the templates and stylesheets or add new functionality]]> + Connection to database failed. + Umbraco Version 3 + Umbraco Version 4 + Watch + Umbraco %0% for a fresh install or upgrading from version 3.0. +

+ Press "next" to start the wizard.]]>
+ + + Culture Code + Culture Name + + + You've been idle and logout will automatically occur in + Renew now to save your work + + + Happy super Sunday + Happy manic Monday + Happy tubular Tuesday + Happy wonderful Wednesday + Happy thunderous Thursday + Happy funky Friday + Happy Caturday + Log in below + Sign in with + Session timed out + © 2001 - %0%
Umbraco.com

]]>
+ Forgotten password? + An email will be sent to the address specified with a link to reset your password + An email with password reset instructions will be sent to the specified address if it matched our records + Show password + Hide password + Return to login form + Please provide a new password + Your Password has been updated + The link you have clicked on is invalid or has expired + Umbraco: Reset Password + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + + + +
+
+
+ + + + +
+ + + + +
+

+ Password reset requested +

+

+ Your username to login to the Umbraco back-office is: %0% +

+

+ + + + + + +
+ + Click this link to reset your password + +
+

+

If you cannot click on the link, copy and paste this URL into your browser window:

+ + + + +
+ + %1% + +
+

+
+
+


+
+
+ + + ]]>
+ + + Dashboard + Sections + Content + + + Choose page above... + %0% has been copied to %1% + Select where the document %0% should be copied to below + %0% has been moved to %1% + Select where the document %0% should be moved to below + has been selected as the root of your new content, click 'ok' below. + No node selected yet, please select a node in the list above before clicking 'ok' + The current node is not allowed under the chosen node because of its type + The current node cannot be moved to one of its subpages + The current node cannot exist at the root + The action isn't allowed since you have insufficient permissions on 1 or more child documents. + Relate copied items to original + + + %0%]]> + Notification settings saved for + + The following languages have been modified %0% + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + + + +
+
+
+ + + + +
+ + + + +
+

+ Hi %0%, +

+

+ This is an automated mail to inform you that the task '%1%' has been performed on the page '%2%' by the user '%3%' +

+ + + + + + +
+ +
+ EDIT
+
+

+

Update summary:

+ %6% +

+

+ Have a nice day!

+ Cheers from the Umbraco robot +

+
+
+


+
+
+ + + ]]>
+ The following languages have been modified:

+ %0% + ]]>
+ [%0%] Notification about %1% performed on %2% + Notifications + + + Actions + Created + Create package + + button and locating the package. Umbraco packages usually have a ".umb" or ".zip" extension. + ]]> + This will delete the package + Drop to upload + Include all child nodes + or click here to choose package file + Upload package + Install a local package by selecting it from your machine. Only install packages from sources you know and trust + Upload another package + Cancel and upload another package + I accept + terms of use + + Path to file + Absolute path to file (ie: /bin/umbraco.bin) + Installed + Installed packages + Install local + Finish + This package has no configuration view + No packages have been created yet + You don’t have any packages installed + 'Packages' icon in the top right of your screen]]> + Package Actions + Author URL + Package Content + Package Files + Icon URL + Install package + License + License URL + Package Properties + Search for packages + Results for + We couldn’t find anything for + Please try searching for another package or browse through the categories + Popular + New releases + has + karma points + Information + Owner + Contributors + Created + Current version + .NET version + Downloads + Likes + Compatibility + This package is compatible with the following versions of Umbraco, as reported by community members. Full compatability cannot be guaranteed for versions reported below 100% + External sources + Author + Documentation + Package meta data + Package name + Package doesn't contain any items +
+ You can safely remove this from the system by clicking "uninstall package" below.]]>
+ Package options + Package readme + Package repository + Confirm package uninstall + Package was uninstalled + The package was successfully uninstalled + Uninstall package + + Notice: any documents, media etc depending on the items you remove, will stop working, and could lead to system instability, + so uninstall with caution. If in doubt, contact the package author.]]> + Package version + Package already installed + This package cannot be installed, it requires a minimum Umbraco version of + Uninstalling... + Downloading... + Importing... + Installing... + Restarting, please wait... + All done, your browser will now refresh, please wait... + Please click 'Finish' to complete installation and reload the page. + Uploading package... + + + Paste with full formatting (Not recommended) + The text you're trying to paste contains special characters or formatting. This could be caused by copying text from Microsoft Word. Umbraco can remove special characters or formatting automatically, so the pasted content will be more suitable for the web. + Paste as raw text without any formatting at all + Paste, but remove formatting (Recommended) + + + Group based protection + If you want to grant access to all members of specific member groups + You need to create a member group before you can use group based authentication + Error Page + Used when people are logged on, but do not have access + %0%]]> + %0% is now protected]]> + %0%]]> + Login Page + Choose the page that contains the login form + Remove protection... + %0%?]]> + Select the pages that contain login form and error messages + %0%]]> + %0%]]> + Specific members protection + If you wish to grant access to specific members + + + + + + + + + Include unpublished subpages + Publishing in progress - please wait... + %0% out of %1% pages have been published... + %0% has been published + %0% and subpages have been published + Publish %0% and all its subpages + Publish to publish %0% and thereby making its content publicly available.

+ You can publish this page and all its subpages by checking Include unpublished subpages below. + ]]>
+ + + You have not configured any approved colours + + + You can only select items of type(s): %0% + You have picked a content item currently deleted or in the recycle bin + You have picked content items currently deleted or in the recycle bin + + + Deleted item + You have picked a media item currently deleted or in the recycle bin + You have picked media items currently deleted or in the recycle bin + Trashed + + + enter external link + choose internal page + Caption + Link + Open in new window + enter the display caption + Enter the link + + + Reset crop + Save crop + Add new crop + Done + Undo edits + + + Select a version to compare with the current version + Current version + Red text will not be shown in the selected version. , green means added]]> + Document has been rolled back + This displays the selected version as HTML, if you wish to see the difference between 2 versions at the same time, use the diff view + Rollback to + Select version + View + + + Edit script file + + + Concierge + Content + Courier + Developer + Forms + Help + Umbraco Configuration Wizard + Media + Members + Newsletters + Packages + Settings + Statistics + Translation + Users + + + The best Umbraco video tutorials + + + Default template + To import a document type, find the ".udt" file on your computer by clicking the "Browse" button and click "Import" (you'll be asked for confirmation on the next screen) + New Tab Title + Node type + Type + Stylesheet + Script + Tab + Tab Title + Tabs + Master Content Type enabled + This Content Type uses + as a Master Content Type. Tabs from Master Content Types are not shown and can only be edited on the Master Content Type itself + No properties defined on this tab. Click on the "add a new property" link at the top to create a new property. + Create matching template + Add icon + + + Sort order + Creation date + Sorting complete. + Drag the different items up or down below to set how they should be arranged. Or click the column headers to sort the entire collection of items + + + + Validation + Validation errors must be fixed before the item can be saved + Failed + Saved + Insufficient user permissions, could not complete the operation + Cancelled + Operation was cancelled by a 3rd party add-in + Publishing was cancelled by a 3rd party add-in + Property type already exists + Property type created + DataType: %1%]]> + Propertytype deleted + Document Type saved + Tab created + Tab deleted + Tab with id: %0% deleted + Stylesheet not saved + Stylesheet saved + Stylesheet saved without any errors + Datatype saved + Dictionary item saved + Publishing failed because the parent page isn't published + Content published + and visible on the website + Content saved + Remember to publish to make changes visible + Sent For Approval + Changes have been sent for approval + Media saved + Member group saved + Media saved without any errors + Member saved + Stylesheet Property Saved + Stylesheet saved + Template saved + Error saving user (check log) + User Saved + User type saved + User group saved + File not saved + file could not be saved. Please check file permissions + File saved + File saved without any errors + Language saved + Media Type saved + Member Type saved + Member Group saved + Template not saved + Please make sure that you do not have 2 templates with the same alias + Template saved + Template saved without any errors! + Content unpublished + Partial view saved + Partial view saved without any errors! + Partial view not saved + An error occurred saving the file. + Permissions saved for + Deleted %0% user groups + %0% was deleted + Enabled %0% users + Disabled %0% users + %0% is now enabled + %0% is now disabled + User groups have been set + Unlocked %0% users + %0% is now unlocked + Member was exported to file + An error occurred while exporting the member + User %0% was deleted + Invite user + Invitation has been re-sent to %0% + Document type was exported to file + An error occurred while exporting the document type + + + Add style + Edit style + Rich text editor styles + Define the styles that should be available in the rich text editor for this stylesheet + Edit stylesheet + Edit stylesheet property + The name displayed in the editor style selector + Preview + How the text will look like in the rich text editor. + Selector + Uses CSS syntax, e.g. "h1" or ".redHeader" + Styles + The CSS that should be applied in the rich text editor, e.g. "color:red;" + Code + Editor + + + Failed to delete template with ID %0% + Edit template + Sections + Insert content area + Insert content area placeholder + Insert + Choose what to insert into your template + Dictionary item + A dictionary item is a placeholder for a translatable piece of text, which makes it easy to create designs for multilingual websites. + Macro + + A Macro is a configurable component which is great for + reusable parts of your design, where you need the option to provide parameters, + such as galleries, forms and lists. + + Value + Displays the value of a named field from the current page, with options to modify the value or fallback to alternative values. + Partial view + + A partial view is a separate template file which can be rendered inside another + template, it's great for reusing markup or for separating complex templates into separate files. + + Master template + No master + Render child template + @RenderBody() placeholder. + ]]> + Define a named section + @section { ... }. This can be rendered in a + specific area of the parent of this template, by using @RenderSection. + ]]> + Render a named section + @RenderSection(name) placeholder. + This renders an area of a child template which is wrapped in a corresponding @section [name]{ ... } definition. + ]]> + Section Name + Section is mandatory + + If mandatory, the child template must contain a @section definition, otherwise an error is shown. + + Query builder + items returned, in + I want + all content + content of type "%0%" + from + my website + where + and + is + is not + before + before (including selected date) + after + after (including selected date) + equals + does not equal + contains + does not contain + greater than + greater than or equal to + less than + less than or equal to + Id + Name + Created Date + Last Updated Date + order by + ascending + descending + Template + + + Image + Macro + Choose type of content + Choose a layout + Add a row + Add content + Drop content + Settings applied + This content is not allowed here + This content is allowed here + Click to embed + Click to insert image + Image caption... + Write here... + Grid Layouts + Layouts are the overall work area for the grid editor, usually you only need one or two different layouts + Add Grid Layout + Adjust the layout by setting column widths and adding additional sections + Row configurations + Rows are predefined cells arranged horizontally + Add row configuration + Adjust the row by setting cell widths and adding additional cells + Columns + Total combined number of columns in the grid layout + Settings + Configure what settings editors can change + Styles + Configure what styling editors can change + Allow all editors + Allow all row configurations + Maximum items + Leave blank or set to 0 for unlimited + Set as default + Choose extra + Choose default + are added + + + Compositions + Group + You have not added any groups + Add group + Inherited from + Add property + Required label + Enable list view + Configures the content item to show a sortable and searchable list of its children, the children will not be shown in the tree + Allowed Templates + Choose which templates editors are allowed to use on content of this type + Allow as root + Allow editors to create content of this type in the root of the content tree. + Allowed child node types + Allow content of the specified types to be created underneath content of this type. + Choose child node + Inherit tabs and properties from an existing document type. New tabs will be added to the current document type or merged if a tab with an identical name exists. + This content type is used in a composition, and therefore cannot be composed itself. + There are no content types available to use as a composition. + Create new + Use existing + Editor settings + Configuration + Yes, delete + was moved underneath + was copied underneath + Select the folder to move + Select the folder to copy + to in the tree structure below + All Document types + All Documents + All media items + using this document type will be deleted permanently, please confirm you want to delete these as well. + using this media type will be deleted permanently, please confirm you want to delete these as well. + using this member type will be deleted permanently, please confirm you want to delete these as well + and all documents using this type + and all media items using this type + and all members using this type + Member can edit + Allow this property value to be edited by the member on their profile page + Is sensitive data + Hide this property value from content editors that don't have access to view sensitive information + Show on member profile + Allow this property value to be displayed on the member profile page + tab has no sort order + Where is this composition used? + This composition is currently used in the composition of the following content types: + Allow varying by culture + Allow editors to create content of this type in different languages. + Allow varying by culture + Element type + Is an Element type + An Element type is meant to be used for instance in Nested Content, and not in the tree. + This is not applicable for an Element type + You have made changes to this property. Are you sure you want to discard them? + + + Add language + Mandatory language + Properties on this language have to be filled out before the node can be published. + Default language + An Umbraco site can only have one default language set. + Switching default language may result in default content missing. + Falls back to + No fall back language + To allow multi-lingual content to fall back to another language if not present in the requested language, select it here. + Fall back language + + + + Add parameter + Edit parameter + Enter macro name + Parameters + Define the parameters that should be available when using this macro. + Select partial view macro file + + + Building models + this can take a bit of time, don't worry + Models generated + Models could not be generated + Models generation has failed, see exception in U log + + + Add fallback field + Fallback field + Add default value + Default value + Fallback field + Default value + Casing + Encoding + Choose field + Convert line breaks + Yes, convert line breaks + Replaces line breaks with 'br' html tag + Custom Fields + Date only + Format and encoding + Format as date + Format the value as a date, or a date with time, according to the active culture + HTML encode + Will replace special characters by their HTML equivalent. + Will be inserted after the field value + Will be inserted before the field value + Lowercase + Modify output + None + Output sample + Insert after field + Insert before field + Recursive + Yes, make it recursive + Separator + Standard Fields + Uppercase + URL encode + Will format special characters in URLs + Will only be used when the field values above are empty + This field will only be used if the primary field is empty + Date and time + + + Translation details + Download XML DTD + Fields + Include subpages + + No translator users found. Please create a translator user before you start sending content to translation + The page '%0%' has been send to translation + Send the page '%0%' to translation + Total words + Translate to + Translation completed. + You can preview the pages, you've just translated, by clicking below. If the original page is found, you will get a comparison of the 2 pages. + Translation failed, the XML file might be corrupt + Translation options + Translator + Upload translation XML + + + Content + Content Templates + Media + Cache Browser + Recycle Bin + Created packages + Data Types + Dictionary + Installed packages + Install skin + Install starter kit + Languages + Install local package + Macros + Media Types + Members + Member Groups + Member Roles + Member Types + Document Types + Relation Types + Packages + Packages + Partial Views + Partial View Macro Files + Install from repository + Install Runway + Runway modules + Scripting Files + Scripts + Stylesheets + Templates + Log Viewer + Users + Settings + Templating + Third Party + + + New update ready + %0% is ready, click here for download + No connection to server + Error checking for update. Please review trace-stack for further information + + + Access + Based on the assigned groups and start nodes, the user has access to the following nodes + Assign access + Administrator + Category field + User created + Change Your Password + Change photo + New password + hasn't been locked out + The password hasn't been changed + Confirm new password + You can change your password for accessing the Umbraco Back Office by filling out the form below and click the 'Change Password' button + Content Channel + Create another user + Create new users to give them access to Umbraco. When a new user is created a password will be generated that you can share with the user. + Description field + Disable User + Document Type + Editor + Excerpt field + Failed login attempts + Go to user profile + Add groups to assign access and permissions + Invite another user + Invite new users to give them access to Umbraco. An invite email will be sent to the user with information on how to log in to Umbraco. Invites last for 72 hours. + Language + Set the language you will see in menus and dialogs + Last lockout date + Last login + Password last changed + Username + Media start node + Limit the media library to a specific start node + Media start nodes + Limit the media library to specific start nodes + Sections + Disable Umbraco Access + has not logged in yet + Old password + Password + Reset password + Your password has been changed! + Please confirm the new password + Enter your new password + Your new password cannot be blank! + Current password + Invalid current password + There was a difference between the new password and the confirmed password. Please try again! + The confirmed password doesn't match the new password! + Replace child node permissions + You are currently modifying permissions for the pages: + Select pages to modify their permissions + Remove photo + Default permissions + Granular permissions + Set permissions for specific nodes + Profile + Search all children + Add sections to give users access + Select user groups + No start node selected + No start nodes selected + Content start node + Limit the content tree to a specific start node + Content start nodes + Limit the content tree to specific start nodes + User last updated + has been created + The new user has successfully been created. To log in to Umbraco use the password below. + User management + Name + User permissions + User group + has been invited + An invitation has been sent to the new user with details about how to log in to Umbraco. + Hello there and welcome to Umbraco! In just 1 minute you’ll be good to go, we just need you to setup a password and add a picture for your avatar. + Welcome to Umbraco! Unfortunately your invite has expired. Please contact your administrator and ask them to resend it. + Uploading a photo of yourself will make it easy for other users to recognize you. Click the circle above to upload your photo. + Writer + Change + Your profile + Your recent history + Session expires in + Invite user + Create user + Send invite + Back to users + Umbraco: Invitation + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + + + +
+
+
+ + + + +
+ + + + +
+

+ Hi %0%, +

+

+ You have been invited by %1% to the Umbraco Back Office. +

+

+ Message from %1%: +
+ %2% +

+ + + + + + +
+ + + + + + +
+ + Click this link to accept the invite + +
+
+

If you cannot click on the link, copy and paste this URL into your browser window:

+ + + + +
+ + %3% + +
+

+
+
+


+
+
+ + ]]>
+ Invite + Resending invitation... + Delete User + Are you sure you wish to delete this user account? + All + Active + Disabled + Locked out + Invited + Inactive + Name (A-Z) + Name (Z-A) + Newest + Oldest + Last login + + + Validation + No validation + Validate as an email address + Validate as a number + Validate as a URL + ...or enter a custom validation + Field is mandatory + Enter a regular expression + You need to add at least + You can only have + items + items selected + Invalid date + Not a number + Invalid email + Custom validation + + + + Value is set to the recommended value: '%0%'. + Value was set to '%1%' for XPath '%2%' in configuration file '%3%'. + Expected value '%1%' for '%2%' in configuration file '%3%', but found '%0%'. + Found unexpected value '%0%' for '%2%' in configuration file '%3%'. + + Custom errors are set to '%0%'. + Custom errors are currently set to '%0%'. It is recommended to set this to '%1%' before go live. + Custom errors successfully set to '%0%'. + MacroErrors are set to '%0%'. + MacroErrors are set to '%0%' which will prevent some or all pages in your site from loading completely if there are any errors in macros. Rectifying this will set the value to '%1%'. + MacroErrors are now set to '%0%'. + + Try Skip IIS Custom Errors is set to '%0%' and you're using IIS version '%1%'. + Try Skip IIS Custom Errors is currently '%0%'. It is recommended to set this to '%1%' for your IIS version (%2%). + Try Skip IIS Custom Errors successfully set to '%0%'. + + File does not exist: '%0%'. + '%0%' in config file '%1%'.]]> + There was an error, check log for full error: %0%. + Database - The database schema is correct for this version of Umbraco + %0% problems were detected with your database schema (Check the log for details) + Some errors were detected while validating the database schema against the current version of Umbraco. + Your website's certificate is valid. + Certificate validation error: '%0%' + Your website's SSL certificate has expired. + Your website's SSL certificate is expiring in %0% days. + Error pinging the URL %0% - '%1%' + You are currently %0% viewing the site using the HTTPS scheme. + The appSetting 'Umbraco.Core.UseHttps' is set to 'false' in your web.config file. Once you access this site using the HTTPS scheme, that should be set to 'true'. + The appSetting 'Umbraco.Core.UseHttps' is set to '%0%' in your web.config file, your cookies are %1% marked as secure. + Could not update the 'Umbraco.Core.UseHttps' setting in your web.config file. Error: %0% + + Enable HTTPS + Sets umbracoSSL setting to true in the appSettings of the web.config file. + The appSetting 'Umbraco.Core.UseHttps' is now set to 'true' in your web.config file, your cookies will be marked as secure. + Fix + Cannot fix a check with a value comparison type of 'ShouldNotEqual'. + Cannot fix a check with a value comparison type of 'ShouldEqual' with a provided value. + Value to fix check not provided. + Debug compilation mode is disabled. + Debug compilation mode is currently enabled. It is recommended to disable this setting before go live. + Debug compilation mode successfully disabled. + Trace mode is disabled. + Trace mode is currently enabled. It is recommended to disable this setting before go live. + Trace mode successfully disabled. + All folders have the correct permissions set. + + %0%.]]> + %0%. If they aren't being written to no action need be taken.]]> + All files have the correct permissions set. + + %0%.]]> + %0%. If they aren't being written to no action need be taken.]]> + X-Frame-Options used to control whether a site can be IFRAMEd by another was found.]]> + X-Frame-Options used to control whether a site can be IFRAMEd by another was not found.]]> + Set Header in Config + Adds a value to the httpProtocol/customHeaders section of web.config to prevent the site being IFRAMEd by other websites. + A setting to create a header preventing IFRAMEing of the site by other websites has been added to your web.config file. + Could not update web.config file. Error: %0% + X-Content-Type-Options used to protect against MIME sniffing vulnerabilities was found.]]> + X-Content-Type-Options used to protect against MIME sniffing vulnerabilities was not found.]]> + Adds a value to the httpProtocol/customHeaders section of web.config to protect against MIME sniffing vulnerabilities. + A setting to create a header protecting against MIME sniffing vulnerabilities has been added to your web.config file. + Strict-Transport-Security, also known as the HSTS-header, was found.]]> + Strict-Transport-Security was not found.]]> + Adds the header 'Strict-Transport-Security' with the value 'max-age=10886400' to the httpProtocol/customHeaders section of web.config. Use this fix only if you will have your domains running with https for the next 18 weeks (minimum). + The HSTS header has been added to your web.config file. + X-XSS-Protection was found.]]> + X-XSS-Protection was not found.]]> + Adds the header 'X-XSS-Protection' with the value '1; mode=block' to the httpProtocol/customHeaders section of web.config. + The X-XSS-Protection header has been added to your web.config file. + + %0%.]]> + No headers revealing information about the website technology were found. + In the Web.config file, system.net/mailsettings could not be found. + In the Web.config file system.net/mailsettings section, the host is not configured. + SMTP settings are configured correctly and the service is operating as expected. + The SMTP server configured with host '%0%' and port '%1%' could not be reached. Please check to ensure the SMTP settings in the Web.config file system.net/mailsettings are correct. + %0%.]]> + %0%.]]> +

Results of the scheduled Umbraco Health Checks run on %0% at %1% are as follows:

%2%]]>
+ Umbraco Health Check Status: %0% + + + Disable URL tracker + Enable URL tracker + Original URL + Redirected To + Redirect Url Management + The following URLs redirect to this content item: + No redirects have been made + When a published page gets renamed or moved a redirect will automatically be made to the new page. + Are you sure you want to remove the redirect from '%0%' to '%1%'? + Redirect URL removed. + Error removing redirect URL. + This will remove the redirect + Are you sure you want to disable the URL tracker? + URL tracker has now been disabled. + Error disabling the URL tracker, more information can be found in your log file. + URL tracker has now been enabled. + Error enabling the URL tracker, more information can be found in your log file. + + + No Dictionary items to choose from + + + %0% characters left.]]> + %1% too many.]]> + + + Trashed content with Id: {0} related to original parent content with Id: {1} + Trashed media with Id: {0} related to original parent media item with Id: {1} + Cannot automatically restore this item + There is no location where this item can be automatically restored. You can move the item manually using the tree below. + was restored under + + + Direction + Parent to child + Bidirectional + Parent + Child + Count + Relations + Created + Comment + Name + No relations for this relation type. + Relation Type + Relations + + + Getting Started + Redirect URL Management + Content + Welcome + Examine Management + Published Status + Models Builder + Health Check + Profiling + Getting Started + Install Umbraco Forms + + + Go back + Active layout: + Jump to + group + passed + warning + failed + suggestion + Check passed + Check failed + Open backoffice search + Open/Close backoffice help + Open/Close your profile options + + + Relations + This Data Type has no relations. + Used by Document Types + No relations to Document Types. + Used by Media Types + No relations to Media Types. + Used by Member Types + No relations to Member Types. + Used by + + +
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 8a2c03b2fc..fe7f232e48 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -568,6 +568,8 @@ Select the folder to move to in the tree structure below was moved underneath + %0% will have the following consequence]]> + I understand this action will delete the properties and data based on this Data Type Your data has been saved, but before you can publish this page there are some errors you need to fix first: From dda99272aab211e3a0cd8f0b7eb4bf149847df22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:01:01 +0200 Subject: [PATCH 27/39] Delete dialog for datatype that has relations --- .../components/umbconfirm.directive.js | 3 +- .../src/less/tables.less | 2 +- .../src/views/components/umb-confirm.html | 2 +- .../datatypes/datatype.delete.controller.js | 41 +++++- .../src/views/datatypes/delete.html | 127 +++++++++++++++--- 5 files changed, 151 insertions(+), 24 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbconfirm.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbconfirm.directive.js index ce6b90c1ec..1ddd09357a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbconfirm.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbconfirm.directive.js @@ -55,7 +55,8 @@ function confirmDirective() { onConfirm: '=', onCancel: '=', caption: '@', - confirmButtonStyle: '@' + confirmButtonStyle: '@', + confirmLabelKey: '@' }, link: function (scope, element, attr, ctrl) { scope.showCancel = false; diff --git a/src/Umbraco.Web.UI.Client/src/less/tables.less b/src/Umbraco.Web.UI.Client/src/less/tables.less index cd6304ef49..7afbdb12d9 100644 --- a/src/Umbraco.Web.UI.Client/src/less/tables.less +++ b/src/Umbraco.Web.UI.Client/src/less/tables.less @@ -62,7 +62,7 @@ table { } -.table tr > td:first-child { +.table:not(.table-bordered) tr > td:first-child { border-left: 4px solid transparent; } .table tr.--selected > td:first-child { diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-confirm.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-confirm.html index b89b7f559b..384c5ccaf7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/umb-confirm.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-confirm.html @@ -14,7 +14,7 @@ action="confirm()" button-style="{{confirmButtonStyle || 'primary'}}" state="confirmButtonState" - label-key="general_ok"> + label-key="{{confirmLabelKey || 'general_ok'}}"> diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js index 2a1fd5255a..2407d57219 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js @@ -8,7 +8,12 @@ */ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigationService, localizationService) { - $scope.performDelete = function() { + var vm = this; + + vm.hasRelations = false; + vm.relations = []; + + vm.performDelete = function() { //mark it for deletion (used in the UI) $scope.currentNode.loading = true; @@ -24,7 +29,7 @@ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigat }); }; - $scope.performContainerDelete = function () { + vm.performContainerDelete = function () { //mark it for deletion (used in the UI) $scope.currentNode.loading = true; @@ -41,16 +46,40 @@ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigat }; - $scope.cancel = function() { + vm.cancel = function() { navigationService.hideDialog(); }; - $scope.labels = {}; + vm.labels = {}; localizationService - .format(["editdatatype_yesDelete", "editdatatype_andAllRelated"], "%0% " + $scope.currentNode.name + " %1%") + .localize("editdatatype_acceptDeleteConsequence", [$scope.currentNode.name]) .then(function (data) { - $scope.labels.deleteConfirm = data; + vm.labels.deleteConfirm = data; }); + + var init = function() { + + console.log($scope.currentNode); + + if($scope.currentNode.nodeType === "dataTypes") { + + vm.loading = true; + + dataTypeResource.getReferences($scope.currentNode.id) + .then(function (data) { + vm.loading = false; + vm.relations = data; + + console.log(data); + + vm.hasRelations = data.documentTypes.length > 0 || data.mediaTypes.length > 0 || data.memberTypes.length > 0; + }); + + } + + } + + init(); } angular.module("umbraco").controller("Umbraco.Editors.DataType.DeleteController", DataTypeDeleteController); diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html index 5db72deaa5..d29141a070 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html @@ -1,29 +1,126 @@ -
+
- -

- Are you sure you want to delete {{currentNode.name}}? -

- + +

+ Are you sure you want to delete {{currentNode.name}}? +

+
-

- All property types & property data - using this data type will be deleted permanently, please confirm you want to delete these as well. -

-
- - + - +
+

+ Are you sure you want to delete {{currentNode.name}}? +

+
+ +
+ +

+ Deleting {{currentNode.name}} will have the following consequence +

+ +
+ + + +
+ +
+ +
+ + + + + + + + + + + + + + +
NameUsed in
{{::relation.name}}{{::relation.properties | CMS_joinArray:', ':'name'}}
+
+ + + +
+ +
+ +
+ +
+
+
+
+
Name
+
Used in
+
+
+
+
+
+
{{::relation.name}}
+
{{::relation.properties | CMS_joinArray:', ':'name'}}
+
+
+
+
+ + + +
+ +
+ +
+ +
+
+
+
+
Name
+
Used in
+
+
+
+
+
+
{{::relation.name}}
+
{{::relation.properties | CMS_joinArray:', ':'name'}}
+
+
+
+ +
+ + + + +
+ + +
From 042971103fad2cc9a2d1294751af936bbdb3359e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:01:54 +0200 Subject: [PATCH 28/39] rename to Reference --- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 2 +- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 2 +- src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index 30c0bab6af..98916dfeb8 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -564,7 +564,7 @@ Vælg den mappe, der skal flyttes til i træstrukturen nedenfor blev flyttet under - %0% will have the following consequence]]> + %0% will have the following consequence]]> I understand this action will delete the properties and data based on this Data Type diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index 978fa3b3f0..d054f99005 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -565,7 +565,7 @@ Select the folder to move to in the tree structure below was moved underneath - %0% will have the following consequence]]> + %0% will have the following consequence]]> I understand this action will delete the properties and data based on this Data Type 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 fe7f232e48..3020e732bc 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -568,7 +568,7 @@ Select the folder to move to in the tree structure below was moved underneath - %0% will have the following consequence]]> + %0% will have the following consequence]]> I understand this action will delete the properties and data based on this Data Type From f658c15a0613d2c1a7e364b6125b7188451c7c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:22:58 +0200 Subject: [PATCH 29/39] rename relations to references, to avoid misunderstanding. --- .../src/common/resources/datatype.resource.js | 4 +- .../datatypes/datatype.delete.controller.js | 12 ++-- .../datatypes/datatype.edit.controller.js | 6 +- .../src/views/datatypes/delete.html | 32 ++++----- ...r.js => datatype.references.controller.js} | 28 ++++---- ...elations.html => datatype.references.html} | 66 +++++++++---------- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 20 +++--- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 20 +++--- .../Umbraco/config/lang/en_us.xml | 20 +++--- 9 files changed, 102 insertions(+), 106 deletions(-) rename src/Umbraco.Web.UI.Client/src/views/datatypes/views/{datatype.relations.controller.js => datatype.references.controller.js} (50%) rename src/Umbraco.Web.UI.Client/src/views/datatypes/views/{datatype.relations.html => datatype.references.html} (63%) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js index 6b6fb2bb71..7aedfccacf 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js @@ -49,9 +49,9 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { * @methodOf umbraco.resources.dataTypeResource * * @description - * Retrieves relations of a given data type. + * Retrieves references of a given data type. * - * @param {Int} id id of datatype to retrieve relations for + * @param {Int} id id of datatype to retrieve references for * @returns {Promise} resourcePromise object. * */ diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js index 2407d57219..0595fb7e88 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js @@ -10,8 +10,8 @@ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigat var vm = this; - vm.hasRelations = false; - vm.relations = []; + vm.hasReferences = false; + vm.references = []; vm.performDelete = function() { @@ -59,8 +59,6 @@ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigat var init = function() { - console.log($scope.currentNode); - if($scope.currentNode.nodeType === "dataTypes") { vm.loading = true; @@ -68,11 +66,9 @@ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigat dataTypeResource.getReferences($scope.currentNode.id) .then(function (data) { vm.loading = false; - vm.relations = data; + vm.references = data; - console.log(data); - - vm.hasRelations = data.documentTypes.length > 0 || data.mediaTypes.length > 0 || data.memberTypes.length > 0; + vm.hasReferences = data.documentTypes.length > 0 || data.mediaTypes.length > 0 || data.memberTypes.length > 0; }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js index 5cf7820b6e..15fb103ecd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js @@ -205,7 +205,7 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic var labelKeys = [ "general_settings", - "relations_tabName" + "references_tabName" ]; localizationService.localizeMany(labelKeys).then(function (values) { @@ -220,9 +220,9 @@ function DataTypeEditController($scope, $routeParams, appState, navigationServic }, { "name": values[1], - "alias": "relations", + "alias": "references", "icon": "icon-molecular-network", - "view": "views/datatypes/views/datatype.relations.html" + "view": "views/datatypes/views/datatype.references.html" } ]; }); diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html index d29141a070..449423a088 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html @@ -19,37 +19,37 @@ -
+

Are you sure you want to delete {{currentNode.name}}?

-
+

- Deleting {{currentNode.name}} will have the following consequence + Deleting {{currentNode.name}} will have the following consequence


-
+
- +
- + - + @@ -59,10 +59,10 @@ -
+
- +
@@ -70,11 +70,11 @@
Name
-
Used in
+
Used in
-
+
{{::relation.name}}
{{::relation.properties | CMS_joinArray:', ':'name'}}
@@ -85,10 +85,10 @@ -
+
- +
@@ -96,11 +96,11 @@
Name
-
Used in
+
Used in
-
+
{{::relation.name}}
{{::relation.properties | CMS_joinArray:', ':'name'}}
@@ -116,7 +116,7 @@
- 0 || vm.relations.mediaTypes.length > 0 || vm.relations.memberTypes.length > 0; + vm.references = data; + vm.hasReferences = data.documentTypes.length > 0 || data.mediaTypes.length > 0 || data.memberTypes.length > 0; }); } } - // load data type relations when the relations tab is activated + // load data type references when the references tab is activated evts.push(eventsService.on("app.tabChange", function (event, args) { $timeout(function () { - if (args.alias === "relations") { + if (args.alias === "references") { loadRelations(); } }); @@ -52,4 +52,4 @@ function DataTypeRelationsController($scope, $routeParams, dataTypeResource, eve } -angular.module("umbraco").controller("Umbraco.Editors.DataType.RelationsController", DataTypeRelationsController); +angular.module("umbraco").controller("Umbraco.Editors.DataType.ReferencesController", DataTypeReferencesController); diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html similarity index 63% rename from src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html rename to src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html index db1c2e5e40..3704833533 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.relations.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html @@ -1,25 +1,25 @@ -
+
- - + + - This Data Type has no relations. + This Data Type has no references. -
+
-
+
- +
@@ -28,17 +28,17 @@
Name
Alias
-
Used in
+
Used in
Open
-
-
-
{{::relation.name}}
-
{{::relation.alias}}
-
{{::relation.properties | CMS_joinArray:', ':'name'}}
- +
+
+
{{::reference.name}}
+
{{::reference.alias}}
+
{{::reference.properties | CMS_joinArray:', ':'name'}}
+
@@ -46,10 +46,10 @@ -
+
- +
@@ -58,17 +58,17 @@
Name
Alias
-
Used in
+
Used in
Open
-
-
-
{{::relation.name}}
-
{{::relation.alias}}
-
{{::relation.properties | CMS_joinArray:', ':'name'}}
- +
+
+
{{::reference.name}}
+
{{::reference.alias}}
+
{{::reference.properties | CMS_joinArray:', ':'name'}}
+
@@ -76,10 +76,10 @@ -
+
- +
@@ -88,17 +88,17 @@
Name
Alias
-
Used in
+
Used in
Open
-
-
-
{{::relation.name}}
-
{{::relation.alias}}
-
{{::relation.properties | CMS_joinArray:', ':'name'}}
- +
+
+
{{::reference.name}}
+
{{::reference.alias}}
+
{{::reference.properties | CMS_joinArray:', ':'name'}}
+
@@ -109,4 +109,4 @@
-
\ No newline at end of file +
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index 98916dfeb8..4c71989dbd 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -564,7 +564,7 @@ Vælg den mappe, der skal flyttes til i træstrukturen nedenfor blev flyttet under - %0% will have the following consequence]]> + %0% fjernes egnskaber baseret på denne og egnskabernes data fra følgende elementer]]> I understand this action will delete the properties and data based on this Data Type @@ -1715,15 +1715,15 @@ Mange hilsner fra Umbraco robotten Åben/Luk backoffice hjælp Åben/Luk dine profil indstillinger - - Relationer - Denne Data Type har ingen relationer. - Brugt af Dokument Typer - Ingen relationer til Dokument Typer. - Brugt af Medie Typer - Ingen relationer til Medie Typer. - Brugt af Medlems Typer - Ingen relationer til Medlems Typer. + + Referencer + Denne Data Type har ingen referencer. + Brugt i Dokument Typer + Ingen referencer til Dokument Typer. + Brugt i Medie Typer + Ingen referencer til Medie Typer. + Brugt i Medlems Typer + Ingen referencer til Medlems Typer. Brugt af diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index d054f99005..f7491b2750 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -565,7 +565,7 @@ Select the folder to move to in the tree structure below was moved underneath - %0% will have the following consequence]]> + %0% will delete the properties based on it and their data from the following items]]> I understand this action will delete the properties and data based on this Data Type @@ -2152,15 +2152,15 @@ To manage your website, simply open the Umbraco back office and start adding con Open/Close backoffice help Open/Close your profile options - - Relations - This Data Type has no relations. - Used by Document Types - No relations to Document Types. - Used by Media Types - No relations to Media Types. - Used by Member Types - No relations to Member Types. + + References + This Data Type has no references. + Used in Document Types + No references to Document Types. + Used in Media Types + No references to Media Types. + Used in Member Types + No references to Member Types. Used by 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 3020e732bc..71c30aeb91 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -568,7 +568,7 @@ Select the folder to move to in the tree structure below was moved underneath - %0% will have the following consequence]]> + %0% will delete the properties based on it and their data from the following items]]> I understand this action will delete the properties and data based on this Data Type @@ -2166,15 +2166,15 @@ To manage your website, simply open the Umbraco back office and start adding con Open/Close backoffice help Open/Close your profile options - - Relations - This Data Type has no relations. - Used by Document Types - No relations to Document Types. - Used by Media Types - No relations to Media Types. - Used by Member Types - No relations to Member Types. + + References + This Data Type has no references. + Used in Document Types + No references to Document Types. + Used in Media Types + No references to Media Types. + Used in Member Types + No references to Member Types. Used by From e7363adc2d7282ddabbeb0b999a9aac79034b576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:29:29 +0200 Subject: [PATCH 30/39] highlight properties begin deleted + corrected array --- .../src/views/datatypes/delete.html | 68 +++++++++---------- .../datatypes/views/datatype.references.html | 4 +- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html index 449423a088..a1b85823db 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html @@ -38,7 +38,7 @@
- +
NameUsed inUsed in
{{::relation.name}} {{::relation.properties | CMS_joinArray:', ':'name'}}
@@ -51,7 +51,7 @@ - +
{{::relation.name}}{{::relation.properties | CMS_joinArray:', ':'name'}}{{::relation.properties | CMS_joinArray:', ':'name'}}
@@ -62,25 +62,23 @@
- +
-
-
-
-
-
Name
-
Used in
-
-
-
-
-
-
{{::relation.name}}
-
{{::relation.properties | CMS_joinArray:', ':'name'}}
-
-
-
+ + + + + + + + + + + + + +
NameUsed in
{{::relation.name}}{{::relation.properties | CMS_joinArray:', ':'name'}}
@@ -88,25 +86,23 @@
- +
-
-
-
-
-
Name
-
Used in
-
-
-
-
-
-
{{::relation.name}}
-
{{::relation.properties | CMS_joinArray:', ':'name'}}
-
-
-
+ + + + + + + + + + + + + +
NameUsed in
{{::relation.name}}{{::relation.properties | CMS_joinArray:', ':'name'}}
diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html index 3704833533..2c80d1019c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html @@ -63,7 +63,7 @@
-
+
{{::reference.name}}
{{::reference.alias}}
@@ -93,7 +93,7 @@
-
+
{{::reference.name}}
{{::reference.alias}}
From e7faa149564901e55a9a0a7246a3cd7137fa912f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:31:04 +0200 Subject: [PATCH 31/39] changed wording --- src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html index a1b85823db..351b5da570 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html @@ -45,7 +45,7 @@ Name - Used in + Properties @@ -69,7 +69,7 @@ Name - Used in + Properties @@ -93,7 +93,7 @@ Name - Used in + Properties From 5035438a28aa6cf2287ccc4a947e7998c24ebb4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:33:18 +0200 Subject: [PATCH 32/39] simplified wording by removing "based on it" --- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 2 +- src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 2 +- src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml index 4c71989dbd..a7d819b20f 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml @@ -564,7 +564,7 @@ Vælg den mappe, der skal flyttes til i træstrukturen nedenfor blev flyttet under - %0% fjernes egnskaber baseret på denne og egnskabernes data fra følgende elementer]]> + %0% fjernes egnskaber og egnskabernes data fra følgende elementer]]> I understand this action will delete the properties and data based on this Data Type diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml index f7491b2750..2fc0c43eb8 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml @@ -565,7 +565,7 @@ Select the folder to move to in the tree structure below was moved underneath - %0% will delete the properties based on it and their data from the following items]]> + %0% will delete the properties and their data from the following items]]> I understand this action will delete the properties and data based on this Data Type 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 71c30aeb91..9cfc3692cc 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml @@ -568,7 +568,7 @@ Select the folder to move to in the tree structure below was moved underneath - %0% will delete the properties based on it and their data from the following items]]> + %0% will delete the properties and their data from the following items]]> I understand this action will delete the properties and data based on this Data Type From 188cc2a9fdba618e3f63a16d230a73817ee0cab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:43:52 +0200 Subject: [PATCH 33/39] listing out properties with exclamation mark icon in front of each --- .../src/views/datatypes/datatype.delete.controller.js | 1 + src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js index 0595fb7e88..c6c58d9fa6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js @@ -10,6 +10,7 @@ function DataTypeDeleteController($scope, dataTypeResource, treeService, navigat var vm = this; + vm.propertyJoinSeparator = ', '; vm.hasReferences = false; vm.references = []; diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html index 351b5da570..f022bed63d 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html @@ -51,7 +51,7 @@ {{::relation.name}} - {{::relation.properties | CMS_joinArray:', ':'name'}} +

{{::property.name}}{{$last ? '' : ', '}}

@@ -75,7 +75,7 @@ {{::relation.name}} - {{::relation.properties | CMS_joinArray:', ':'name'}} +

{{::property.name}}{{$last ? '' : ', '}}

@@ -99,7 +99,7 @@ {{::relation.name}} - {{::relation.properties | CMS_joinArray:', ':'name'}} +

{{::property.name}}{{$last ? '' : ', '}}

From c091d210346da7ea4767c126488bd9391fec903b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 9 Oct 2019 16:53:30 +0200 Subject: [PATCH 34/39] align icons if the are in a umb-table --- src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less | 4 ++++ .../src/less/components/umb-table.less | 1 + src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html | 6 +++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less index f88b66bd18..ff1f96296a 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less @@ -241,3 +241,7 @@ table th[class*="span"], background-color: darken(@infoBackground, 5%); } } + +.table .icon { + vertical-align: bottom; +} diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less index 56d3b0b87f..953815512c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less @@ -155,6 +155,7 @@ input.umb-table__input { font-size: 20px; line-height: 20px; color: @ui-option-type; + vertical-align: bottom; } .umb-table-body__checkicon, diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html index f022bed63d..6c415e9f38 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/delete.html @@ -51,7 +51,7 @@ {{::relation.name}} -

{{::property.name}}{{$last ? '' : ', '}}

+ {{::property.name}}{{$last ? '' : ', '}} @@ -75,7 +75,7 @@ {{::relation.name}} -

{{::property.name}}{{$last ? '' : ', '}}

+ {{::property.name}}{{$last ? '' : ', '}} @@ -99,7 +99,7 @@ {{::relation.name}} -

{{::property.name}}{{$last ? '' : ', '}}

+ {{::property.name}}{{$last ? '' : ', '}} From b400a72e77fa2f6aeeeca9e7f563469a2ed0c07d Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 10 Oct 2019 17:56:53 +1100 Subject: [PATCH 35/39] Changes filter name --- .../{joinArray.filter.js => umbCmsJoinArray.filter.js} | 6 +++--- .../src/views/datatypes/views/datatype.references.html | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) rename src/Umbraco.Web.UI.Client/src/common/filters/{joinArray.filter.js => umbCmsJoinArray.filter.js} (85%) diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js similarity index 85% rename from src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js rename to src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js index 0aa406232c..75b99cb974 100644 --- a/src/Umbraco.Web.UI.Client/src/common/filters/joinArray.filter.js +++ b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js @@ -1,7 +1,7 @@ /** * @ngdoc filter * @name umbraco.filters.filter:CMS_joinArray - * @namespace CMS_joinArrayFilter + * @namespace umbCmsJoinArray * * param {array} array of string or objects, if an object use the third argument to specify which prop to list. * param {seperator} string containing the seperator to add between joined values. @@ -11,10 +11,10 @@ * Join an array of string or an array of objects, with a costum seperator. * */ -angular.module("umbraco.filters").filter('CMS_joinArray', function () { +angular.module("umbraco.filters").filter('umbCmsJoinArray', function () { return function join(array, separator, prop) { return (!angular.isUndefined(prop) ? array.map(function (item) { return item[prop]; }) : array).join(separator); }; -}); \ No newline at end of file +}); diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html index 2c80d1019c..dfa633ad16 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/views/datatype.references.html @@ -37,7 +37,7 @@
{{::reference.name}}
{{::reference.alias}}
-
{{::reference.properties | CMS_joinArray:', ':'name'}}
+
{{::reference.properties | umbCmsJoinArray:', ':'name'}}
@@ -67,7 +67,7 @@
{{::reference.name}}
{{::reference.alias}}
-
{{::reference.properties | CMS_joinArray:', ':'name'}}
+
{{::reference.properties | umbCmsJoinArray:', ':'name'}}
@@ -97,7 +97,7 @@
{{::reference.name}}
{{::reference.alias}}
-
{{::reference.properties | CMS_joinArray:', ':'name'}}
+
{{::reference.properties | umbCmsJoinArray:', ':'name'}}
From 261dc2af9881b8bba754368d0cd335e9e81ad311 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 11 Oct 2019 13:32:23 +0200 Subject: [PATCH 36/39] AB2913 - Added unit tests for the umbCmsJoinArray filter, and a small change when using null for separator --- .../common/filters/umbCmsJoinArray.filter.js | 2 +- .../filters/umbCmsJoinArray.filter.spec.js | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/test/unit/common/filters/umbCmsJoinArray.filter.spec.js diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js index 75b99cb974..de340bab27 100644 --- a/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js +++ b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js @@ -15,6 +15,6 @@ angular.module("umbraco.filters").filter('umbCmsJoinArray', function () { return function join(array, separator, prop) { return (!angular.isUndefined(prop) ? array.map(function (item) { return item[prop]; - }) : array).join(separator); + }) : array).join(separator || ''); }; }); diff --git a/src/Umbraco.Web.UI.Client/test/unit/common/filters/umbCmsJoinArray.filter.spec.js b/src/Umbraco.Web.UI.Client/test/unit/common/filters/umbCmsJoinArray.filter.spec.js new file mode 100644 index 0000000000..4a44b17bff --- /dev/null +++ b/src/Umbraco.Web.UI.Client/test/unit/common/filters/umbCmsJoinArray.filter.spec.js @@ -0,0 +1,43 @@ +(function () { + + describe('umbCmsJoinArray filter', function() { + var $umbCmsJoinArray; + + var testCases = [ + {input:[{param:'a'},{param:'b'},{param:'c'}], separator:', ', prop:'param' , expectedResult: 'a, b, c'}, + {input:[{param:'a'},{param:'b'},{param:'c'}], separator:' ', prop:'param' , expectedResult: 'a b c'}, + {input:[{param:'a'},{param:'b'},{param:'c'}], separator:'', prop:'param' , expectedResult: 'abc'}, + {input:[{param:'a'},{param:'b'},{param:'c'}], separator:'', prop:'wrong' , expectedResult: ''}, + {input:[], separator:', ', prop:'param' , expectedResult: ''}, + {input:[{param:'a'},{param:'b'},{param:'c'}], separator:', ', prop:null , expectedResult: ', , '}, + {input:[{param:'a'},{param:'b'},{param:'c'}], separator:null, prop:'param' , expectedResult: 'abc'}, + ]; + + var testCasesWithExpectedError = [ + {input:'test', separator:', ', prop:'param'}, + {input:null, separator:', ', prop:'param'}, + {input:undefined, separator:', ', prop:'param'}, + ]; + + beforeEach(module('umbraco')); + + beforeEach(inject(function($filter) { + $umbCmsJoinArray = $filter('umbCmsJoinArray'); + })); + + + testCases.forEach(function(test){ + it('Blackbox tests with expected result=\''+test.expectedResult+'\'', function() { + expect($umbCmsJoinArray(test.input, test.separator, test.prop)).toBe(test.expectedResult); + }); + }); + + testCasesWithExpectedError.forEach(function(test){ + it('Blackbox tests with expected error. Input=\''+test.input+'\'', function() { + expect(function() { $umbCmsJoinArray(test.input, test.separator, test.prop)}).toThrow(); + }); + }); + + }); + +}()); From f2381daa2478302252dca82bf4a03810f2690c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 21 Oct 2019 08:49:50 +0200 Subject: [PATCH 37/39] no need for this comment anymore --- src/Umbraco.Web.UI.Client/src/less/components/umb-table.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less index 953815512c..78bf0de5c7 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less @@ -241,7 +241,7 @@ input.umb-table__input { .umb-table-cell { display: flex; flex-flow: row nowrap; - flex: 1 1 5%; //NOTE 1% is a Internet Explore hack, so that cells don't collapse + flex: 1 1 5%; position: relative; margin: auto 14px; padding: 6px 2px; From c89ea71adf20e0ef3ed37922c9c3ee84b0f83d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 21 Oct 2019 08:51:08 +0200 Subject: [PATCH 38/39] removed comment --- src/Umbraco.Web.UI.Client/src/less/components/umb-table.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less index 78bf0de5c7..731f8dec09 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less @@ -256,7 +256,7 @@ input.umb-table__input { } .umb-table-cell.--noOverflow > * { overflow: visible; - white-space: normal; //NOTE Disable/Enable this to keep textstring on one line + white-space: normal; text-overflow: unset; } From ba215f8700f4487b3d6d325379c5087145eae6c8 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Mon, 21 Oct 2019 09:34:35 +0200 Subject: [PATCH 39/39] fix name to follow the class name --- src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs b/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs index dd042660a2..d9cd93e7c8 100644 --- a/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs +++ b/src/Umbraco.Web/Models/ContentEditing/DataTypeReferences.cs @@ -4,7 +4,7 @@ using System.Runtime.Serialization; namespace Umbraco.Web.Models.ContentEditing { - [DataContract(Name = "dataTypeUsages", Namespace = "")] + [DataContract(Name = "dataTypeReferences", Namespace = "")] public class DataTypeReferences { [DataMember(Name = "documentTypes")]