Compare commits

...

1403 Commits

Author SHA1 Message Date
Warren Buckley f40b802523 Revert change to en_us.xml 2019-07-03 10:24:25 +01:00
Warren Buckley d8157f2599 Revert "Fix line endings - according to VS19"
This reverts commit 4ebc2d7c29.
2019-07-03 10:23:18 +01:00
Warren Buckley 4ebc2d7c29 Fix line endings - according to VS19 2019-07-03 10:19:54 +01:00
Warren Buckley 7c0933c50b Add margin-right to trash icon next to copy/text 2019-07-03 09:57:22 +01:00
Warren Buckley 90a8c2d2c9 Add in language keys 2019-07-03 09:57:01 +01:00
Warren Buckley 58e241b6cb Add in trash icon & apply correct color from variables 2019-07-03 09:23:19 +01:00
Warren Buckley 69f85926d2 Merge branch 'v8/dev' into v8/feature/recycle-bin-context-message 2019-07-03 09:13:10 +01:00
Shannon Deminick 2167eada0c Merge pull request #5764 from umbraco/v8/bugfix/fixes-for-bypass-securtiy-after-merge
V8: Bugfixes regarding the Bypass Security feature after merge from v7
2019-07-03 11:27:55 +10:00
Shannon df11935598 Revert and adjusts "Fixes issue when creating DateTypes of type Umbraco.MultiNodeTreePicker with type member, because -1 can't be casted to Udi" 2019-07-03 11:23:25 +10:00
Shannon d3b4b9fe64 fix merge 2019-07-03 11:10:34 +10:00
Shannon 33aff7ff61 Merge branch 'v8/dev' into v8/bugfix/fixes-for-bypass-securtiy-after-merge
# Conflicts:
#	src/Umbraco.Web/Editors/EntityController.cs
2019-07-03 11:04:34 +10:00
Sebastiaan Janssen 4d2c551b79 Merge branch 'v7/dev' into v8/dev 2019-07-02 22:01:34 +02:00
Sebastiaan Janssen 5b7ae7150f Fix weird merge 2019-07-02 21:55:54 +02:00
Sebastiaan Janssen 5bf29a907a Fixes #5206 2019-07-02 21:47:14 +02:00
Warren Buckley 91743833f5 Add a message bar to give context that this node/content item is in the trash/recycle bin 2019-07-02 16:44:07 +01:00
Bjarke Berg 7b4023fd5a Fixes issue when creating DateTypes of type Umbraco.MultiNodeTreePicker with type member, because -1 can't be casted to Udi 2019-07-02 13:17:47 +02:00
Bjarke Berg af72729905 Merge remote-tracking branch 'origin/v8/dev' into v8/dev 2019-07-02 13:03:29 +02:00
Claus d5bc54cf6c refixing #4708 - old merge error. 2019-07-02 13:00:50 +02:00
Claus 5625102e2c making EditorValidatorOfT public instead of internal. 2019-07-02 12:42:18 +02:00
Bjarke Berg 66abd7b50c Merge remote-tracking branch 'origin/v8/dev' into v8/dev 2019-07-02 11:31:14 +02:00
Bjarke Berg 2a9bcf0e98 Merge pull request #5763 from umbraco/v7/bugfix/fix-for-null-ref-exception-when-using-member-pickers
V7: Bugfix for Null ref-exception when using member pickers.
2019-07-02 11:20:53 +02:00
Bjarke Berg e6484687e5 Small fixes after v7 to v8 merge regarding the bypass security feature 2019-07-02 11:17:23 +02:00
Shannon 5da1e64bbc Merge branch 'v8/dev' of https://github.com/umbraco/Umbraco-CMS into v8/dev 2019-07-02 19:15:20 +10:00
Shannon 7b0979f9fd Fixes install.ps1 and updates sln to remove old ps1 file 2019-07-02 19:15:04 +10:00
Dave Woestenborghs 1a437c1c6a #5750 - fix outside click directive so it doesn't close dialogues from create action 2019-07-02 11:11:03 +02:00
Bjarke Berg 3c0565e516 Bugfix: Null ref-exception when using member pickers. 2019-07-02 10:56:44 +02:00
Claus 178b1ccf40 Merge pull request #5743 from umbraco/v8/feature/sourcelink-update
V8: Adds in SourceLink Debugging Feature
2019-07-02 10:49:11 +02:00
Shannon Deminick c03cd81c23 Merge pull request #5748 from umbraco/v8/feature/mb-embed-prepare
Prepare MB future
2019-07-02 18:18:07 +10:00
Stephan 3d3647b476 Fix tests 2019-07-02 10:11:51 +02:00
Stephan a4cac670df Merge branch 'v8/dev' into v8/feature/mb-embed-prepare 2019-07-02 09:12:00 +02:00
Shannon c414dd06cc updates package lock 2019-07-02 15:38:17 +10:00
Shannon 4ed746e4ef Fixes tree refreshing when changing users, fixes memory/event leak 2019-07-02 13:37:40 +10:00
Shannon c270d8ecac Merge remote-tracking branch 'origin/v7/dev' into v8/dev
# Conflicts:
#	build/NuSpecs/tools/Web.config.install.xdt
#	src/Umbraco.Core/Constants-DataTypes.cs
#	src/Umbraco.Core/Models/DataTypeDefinition.cs
#	src/Umbraco.Core/Models/DataTypeExtensions.cs
#	src/Umbraco.Core/Models/IDataTypeDefinition.cs
#	src/Umbraco.Core/Models/UmbracoEntity.cs
#	src/Umbraco.Core/Models/UserExtensions.cs
#	src/Umbraco.Core/Persistence/Factories/DataTypeDefinitionFactory.cs
#	src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs
#	src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs
#	src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/DataTypeService.cs
#	src/Umbraco.Core/Services/DateTypeServiceExtensions.cs
#	src/Umbraco.Core/Services/EntityService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Core/Services/IDataTypeService.cs
#	src/Umbraco.Core/Services/IEntityService.cs
#	src/Umbraco.Core/Services/IRelationService.cs
#	src/Umbraco.Core/Services/Implement/RelationService.cs
#	src/Umbraco.Tests/Models/UmbracoEntityTests.cs
#	src/Umbraco.Tests/Plugins/PluginManagerTests.cs
#	src/Umbraco.Tests/Services/EntityServiceTests.cs
#	src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js
#	src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js
#	src/Umbraco.Web.UI.Client/src/common/services/search.service.js
#	src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contentpicker/contentpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/media.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/multiurlpicker/multiurlpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/relatedlinks/relatedlinks.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.prevalues.html
#	src/Umbraco.Web.UI/config/EmbeddedMedia.Release.config
#	src/Umbraco.Web.UI/config/EmbeddedMedia.config
#	src/Umbraco.Web.UI/packages.config
#	src/Umbraco.Web.UI/web.Template.config
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
#	src/Umbraco.Web/HtmlHelperRenderExtensions.cs
#	src/Umbraco.Web/Models/ContentEditing/ContentPropertyBasic.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyBasicConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyDtoConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs
#	src/Umbraco.Web/Models/Mapping/PreValueDisplayResolver.cs
#	src/Umbraco.Web/Mvc/RenderRouteHandler.cs
#	src/Umbraco.Web/PropertyEditors/ContentPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiNodeTreePicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiUrlPickerPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RelatedLinks2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RichTextPreValueEditor.cs
#	src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
#	src/Umbraco.Web/Security/UmbracoAntiForgeryAdditionalDataProvider.cs
#	src/Umbraco.Web/Trees/ContentTreeController.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/Trees/MediaTreeController.cs
#	src/Umbraco.Web/Trees/TreeControllerBase.cs
#	src/Umbraco.Web/Trees/TreeQueryStringParameters.cs
#	src/Umbraco.Web/UmbracoHelper.cs
#	src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
#	src/Umbraco.Web/WebBootManager.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseTree.cs
#	src/umbraco.cms/businesslogic/web/Access.cs
2019-07-02 12:24:05 +10:00
Shannon Deminick ade9bb7324 Merge pull request #5741 from umbraco/v8/merge/v715
Merging 7.15 - 8.1
2019-07-02 12:10:03 +10:00
Shannon 4134dd16df adds fixme note 2019-07-02 12:04:58 +10:00
Shannon f81588bb13 fixes search for content picker with ignore start nodes 2019-07-02 11:48:09 +10:00
Shannon 09793a1744 Fixes tests 2019-07-02 11:07:59 +10:00
Shannon ba7cd48b8f Merge remote-tracking branch 'origin/v8/dev' into v8/merge/v715
# Conflicts:
#	src/Umbraco.Core/Constants-DataTypes.cs
#	src/Umbraco.Core/Migrations/Install/DatabaseDataCreator.cs
#	src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
2019-07-02 10:49:20 +10:00
Shannon 640d2cedb9 Gets the link and media pickers working in the grid in the rte with ignore start nodes 2019-07-01 21:48:45 +10:00
Shannon 0a6237af04 Gets the multi url picker working with ignore start nodes 2019-07-01 21:13:11 +10:00
Shannon 503183331f gets media picker with ignore start nodes working in rte 2019-07-01 20:59:41 +10:00
Warren Buckley 3effc66b2c Need to update NuSpec to ensure the PDB are getting coppied into the bin when Nuget pacakeg installed into a project 2019-07-01 11:53:22 +01:00
Warren Buckley b64f303537 Mark the release PDB as portable too - the Powershell build uses Release not Debug 2019-07-01 11:20:07 +01:00
Warren Buckley 760f6a1647 Umbraco.Web.UI revert change as no real CS code to F11 into this project 2019-07-01 10:54:29 +01:00
Warren Buckley 0b64e34f05 Add in SourceLink Nuget to Umbraco.ModelsBuilder csproj 2019-07-01 10:19:09 +01:00
Warren Buckley f01be09075 Update sourcelink & set from full to portable 2019-07-01 10:13:31 +01:00
Shannon 1c5ed58074 gets media picker working with ignore user start nodes 2019-07-01 18:54:39 +10:00
Shannon 42d86f147f gets content picker ignore start nodes working, fixes descriptions 2019-07-01 18:23:36 +10:00
Shannon fa4acb255b fixes missing 'var' 2019-07-01 17:09:11 +10:00
Shannon 1885767ef1 Internalizes the new Anchor logic and removes it from the IContentService interface into extensions. 2019-07-01 16:33:09 +10:00
Shannon 80e6880bb7 more manual merging - getting anchors back in tinymce 2019-07-01 16:22:54 +10:00
Adam Nelson fabacd1689 V8: Fixes case issue on metaData.hasChildren in mini list view as well as .toLowerCase() issue on undefined scope.entityTypeFilter.filter (#5744) 2019-07-01 07:48:57 +02:00
Warren Buckley 23a7654cea Merge branch 'v8/dev' into v8/feature/sourcelink-update 2019-06-28 12:37:20 +01:00
Sebastiaan Janssen b2d019bfe1 Merge pull request #5270 from umbraco/v8/bugfix/5268-audit-repository
Bugfix Audit service
2019-06-28 10:53:42 +02:00
Sebastiaan Janssen 9f817bf032 Merge pull request #5742 from umbraco/v8/fix/typeloader-static-fields
Typeloader change fields set by constructor to non static
2019-06-28 10:51:45 +02:00
Rasmus John Pedersen 01c89bd338 Make fields set by constructor non static 2019-06-28 10:11:20 +02:00
Kenn Jacobsen e5956e4955 V8: Don't cast IContent to Content in DocumentRepository (#4611) 2019-06-28 09:19:11 +02:00
Shannon 958c3b147b more manual merging 2019-06-28 15:42:23 +10:00
Shannon 4a33ca99ba More manual merging 2019-06-28 15:03:52 +10:00
Shannon 568835f7e2 manual merging/fixing, project builds now, but need to manually merge the remaining 2019-06-28 13:24:13 +10:00
Shannon 84aa861a5b Merge remote-tracking branch 'origin/v7/dev' into v8/dev - Iniital commit (broken)
# Conflicts:
#	build/NuSpecs/tools/Web.config.install.xdt
#	src/Umbraco.Core/Constants-DataTypes.cs
#	src/Umbraco.Core/Models/DataTypeDefinition.cs
#	src/Umbraco.Core/Models/DataTypeExtensions.cs
#	src/Umbraco.Core/Models/IDataTypeDefinition.cs
#	src/Umbraco.Core/Models/UmbracoEntity.cs
#	src/Umbraco.Core/Models/UserExtensions.cs
#	src/Umbraco.Core/Persistence/Factories/DataTypeDefinitionFactory.cs
#	src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs
#	src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs
#	src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/DataTypeService.cs
#	src/Umbraco.Core/Services/EntityService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Core/Services/IDataTypeService.cs
#	src/Umbraco.Core/Services/IEntityService.cs
#	src/Umbraco.Core/Services/IRelationService.cs
#	src/Umbraco.Core/Services/Implement/RelationService.cs
#	src/Umbraco.Tests/Models/UmbracoEntityTests.cs
#	src/Umbraco.Tests/Plugins/PluginManagerTests.cs
#	src/Umbraco.Tests/Services/EntityServiceTests.cs
#	src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js
#	src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js
#	src/Umbraco.Web.UI.Client/src/common/services/search.service.js
#	src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contentpicker/contentpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/media.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/multiurlpicker/multiurlpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/relatedlinks/relatedlinks.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.prevalues.html
#	src/Umbraco.Web.UI/packages.config
#	src/Umbraco.Web.UI/web.Template.config
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
#	src/Umbraco.Web/HtmlHelperRenderExtensions.cs
#	src/Umbraco.Web/Models/ContentEditing/ContentPropertyBasic.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyBasicConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyDtoConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs
#	src/Umbraco.Web/Models/Mapping/PreValueDisplayResolver.cs
#	src/Umbraco.Web/Mvc/RenderRouteHandler.cs
#	src/Umbraco.Web/PropertyEditors/ContentPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiNodeTreePicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiUrlPickerPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RelatedLinks2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RichTextPreValueEditor.cs
#	src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
#	src/Umbraco.Web/Security/UmbracoAntiForgeryAdditionalDataProvider.cs
#	src/Umbraco.Web/Trees/ContentTreeController.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/Trees/MediaTreeController.cs
#	src/Umbraco.Web/Trees/TreeControllerBase.cs
#	src/Umbraco.Web/Trees/TreeQueryStringParameters.cs
#	src/Umbraco.Web/UmbracoHelper.cs
#	src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
#	src/Umbraco.Web/WebBootManager.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseTree.cs
#	src/umbraco.cms/businesslogic/web/Access.cs
2019-06-28 13:03:36 +10:00
leekelleher ee2ebc7d14 ReadOnlyValueController - enabled filters
Previously the code checks if the `config` is an array,
but with how config options are set, this would typically
be an object (dictionary). So the previous code would
never allow a filter to be set.

Now the check is on the object property.
2019-06-27 22:43:14 +02:00
Kenn Jacobsen 9ce996cbba V8: Don't show multiple open menus (take two) (#5609) 2019-06-27 22:42:05 +02:00
leekelleher 580ba79619 Icon Constants consistency
Updated the `Constants.Icons` and replaced the hard-coded strings with
 the const references.
2019-06-27 22:35:29 +02:00
Lee Kelleher fbe184ef6e Prevent deletion of System DataTypes (#5623) 2019-06-27 22:33:19 +02:00
Kenn Jacobsen 2f7bf413ed V8: Make dialogs prompt to discard changes on outside click and ESC (#5740) 2019-06-27 22:27:42 +02:00
Andy Butland 390613c796 Fixed issue with node deletion not removing related records from the public access tables 2019-06-27 22:20:31 +02:00
BatJan b3e3475bf5 Make sure padding is not overwritten by other selectors 2019-06-27 22:19:27 +02:00
Bjarne Fyrstenborg 5333b23c23 v8: Add keyboard support to slider (#5651) 2019-06-27 22:17:31 +02:00
Patrick de Mooij 734086fcf5 temp-5612: Being able to add your own roles/startnodes etc 2019-06-27 22:05:50 +02:00
Morten Bock 12dff9bca3 Reduce size of LocalizedText output. Refactor localizationService to not expose internal dictionary. Refactor controllers to not access dictionary directly. 2019-06-27 21:59:33 +02:00
Kenn Jacobsen f370e738da V8: Use an overlay style dialog for deleting Nested Content ite… (#5357) 2019-06-27 21:34:19 +02:00
Marc Goodson a018ed9e52 V7: Less-Urgent-But-Still-Quite-Important - Add Giphy EmbeddedMedia support (#5736) 2019-06-27 14:27:33 +02:00
Marc Goodson 17f73b88dc Urgent: Add Giphy embed provider support (#5731) 2019-06-27 14:26:36 +02:00
Mike 405e9a79be V8: Make the content tree keyboard accessible (#5729) 2019-06-27 14:07:37 +02:00
Kenn Jacobsen 4d90322842 Fix broken on-outside-click 2019-06-27 13:58:43 +02:00
Kenn Jacobsen a8b5d69be0 Fix confirmation for permissions dialog 2019-06-27 13:56:50 +02:00
Kenn Jacobsen 5ebd90aba5 Make searched media pickable in linkpicker 2019-06-27 13:52:07 +02:00
Sebastiaan Janssen bec909c284 Merge branch 'v8/dev' of https://github.com/umbraco/Umbraco-CMS into v8/dev 2019-06-27 13:48:43 +02:00
Sebastiaan Janssen 46e0b08d65 Merge remote-tracking branch 'origin/v8/bugfix/fix-atroot' into v8/dev 2019-06-27 13:48:16 +02:00
Stephan 7a178be031 Fix getting content AtRoot 2019-06-27 13:29:35 +02:00
Kenn Jacobsen 9d14c9e0b7 Don't explicitly allow deleting the current editor's own content 2019-06-27 13:28:54 +02:00
Warren Buckley ef19633a90 Merge pull request #5134 from umbraco/v8/bugfix/image-cropper-converter
The ImageCropperPropertyValueEditor doesn't convert values in ConvertDbToString correctly
2019-06-27 12:20:43 +01:00
Sebastiaan Janssen 80ffd026f6 Reverts PR #5693 - we need to update the linkpicker search instead to return the correct results for us 2019-06-27 13:18:45 +02:00
Kenn Jacobsen cb7300688c Don't prompt for changes when cancelling empty properties 2019-06-27 12:53:58 +02:00
Kenn Jacobsen 040ebfe9dd Add auto-focus to the default action in overlay dialogs 2019-06-27 12:49:53 +02:00
Stephan 44e567aa34 Prepare MB future
- implement manifest filters to tweak manifests after they have been parsed
- make IEditorValidator public
- stop relying on InternalsVisibleTo Umbraco.ModelsBuilder
2019-06-27 12:42:40 +02:00
Michaël Vanbrabandt 8c5f253b41 V8: Add validation to the Version and UmbracoVersion properties (#5559) 2019-06-27 11:45:48 +02:00
Bjarke Berg 7b99e55148 Merge remote-tracking branch 'origin/v8/dev' into v8/dev 2019-06-27 10:25:12 +02:00
Bjarke Berg ba27eff5cf Added missing using in macro template 2019-06-27 10:24:53 +02:00
Shannon 01d5a12039 when syncing the picker to a path, activate the node 2019-06-27 18:00:45 +10:00
Claus 6d4d26009f Merge pull request #5730 from umbraco/v8/bugfix/umbracomapper-null-property
UmbracoMapper shouldn't throw an exception when trying to map a source prop being null
2019-06-27 08:35:57 +02:00
Bjarke Berg 857a8b163d build fix 2019-06-27 08:03:08 +02:00
Bjarke Berg acbe82f4c8 Merge pull request #5688 from umbraco/v8/bugfix/expand-tree-fix
Feature in v7 based on #2682 that wasn't merged upwards to v8
2019-06-27 07:53:15 +02:00
Shannon fad33a97b2 don't throw JS exception when no MediaPath, instead warn. 2019-06-27 15:47:25 +10:00
Shannon Deminick 3bfd9b71e2 Merge pull request #5312 from umbraco/v8/feature/5170-IPublishedContent
Refactor IPublishedContent
2019-06-27 14:49:42 +10:00
Shannon ef714ac258 Merge remote-tracking branch 'origin/v8/dev' into v8/feature/5170-IPublishedContent
# Conflicts:
#	src/Umbraco.Web/UmbracoHelper.cs
2019-06-27 14:44:33 +10:00
Claus 975816ddd7 UmbracoMapper shouldn't throw an exception when trying to map a source property being null. 2019-06-26 23:10:46 +02:00
Warren Buckley 8831860174 Merge pull request #5728 from umbraco/v8/feature/AB-1085
V8: https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/108…
2019-06-26 14:18:03 +01:00
Bjarke Berg fbf3015de4 Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/expand-tree-fix
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js
2019-06-26 14:38:19 +02:00
Bjarke Berg be587b2064 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1085 - Creates a custom IAntiForgeryAdditionalDataProvider that provides and validates custom token data in the request which allows having a custom AF token per form created with BeginUmbracoForm 2019-06-26 14:15:26 +02:00
Stephan 347c2e8238 Upgrade to ModelsBuilder 8.1.0 2019-06-26 12:30:13 +02:00
Warren Buckley f5fde0f19e Merge pull request #5719 from umbraco/v8/bug/5700
Fixes Macro Rendered in Richtext Editor when not configured to do so
2019-06-26 10:07:44 +01:00
Warren Buckley ac586c5207 Merge pull request #5715 from umbraco/v7/bugfix/AB-1085/antiforgery-per-form
Custom IAntiForgeryAdditionalDataProvider implementation
2019-06-26 09:23:32 +01:00
Bjarke Berg 8033931e31 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1085 - Fixed merge conflict 2019-06-26 09:58:01 +02:00
Bjarke Berg 8e29810598 Merge remote-tracking branch 'origin/v7/dev' into v7/bugfix/AB-1085/antiforgery-per-form 2019-06-26 09:52:44 +02:00
Shannon Deminick be96e2cf08 Merge pull request #5713 from umbraco/v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers
V7: Reintroduce the bypass security option in pickers
2019-06-26 17:02:17 +10:00
Shannon 534ee67ad2 Merge branch 'v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers' of https://github.com/umbraco/Umbraco-CMS into v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers 2019-06-26 16:49:00 +10:00
Shannon 571a3bc257 fixes test 2019-06-26 16:48:39 +10:00
Kenn Jacobsen c12bdaacbf Show the list view paging component even when there are less than 10 pages :) 2019-06-26 08:10:39 +02:00
Bjarke Berg e7a30d0a5d https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1085 - Fixes for gulp build 2019-06-26 07:39:34 +02:00
Shannon a55323176f Updates EntityController to support passing in the dataTypeId for the GetChildren methods and updates the mediapicker to pass along that data 2019-06-26 14:35:36 +10:00
Shannon 1b83e0a87d cleanup 2019-06-26 13:49:45 +10:00
Shannon ca15f340b0 Fixes a bunch of N+1, content/media trees should be much more snappy 2019-06-26 13:32:16 +10:00
Shannon 23b8e1cce8 Removes the remaining part of the EntityRepository that was loading in ALL properties for media which we don't want whatsoever which means some other code is cleaned up/removed 2019-06-26 13:31:04 +10:00
Shannon cf53ba363d Internalizes new methods classes + cleanup 2019-06-26 13:29:05 +10:00
Rasmus Olsen 1c4b262c57 Fix/5489 actions button left margin (#5718) 2019-06-25 18:38:46 +02:00
Kim Rauff Schurmann 90d591e5a8 Fixed validation of fileextension. 2019-06-25 18:21:58 +02:00
Dennis Meinert Pedersen ad121bd758 Highlight when tabbing to umb-toggle 2019-06-25 16:20:16 +02:00
tiffy74 8d67e39e9a secondary menu tab first commit (#5701) 2019-06-25 15:58:56 +02:00
Kenn Jacobsen bd8e344736 Support keyboard input in date/time picker 2019-06-25 15:31:56 +02:00
Claus 014eba971e adding a test for enum mapping between equal enums of different types. 2019-06-25 15:29:32 +02:00
Bjarke Berg 2f309a2fd6 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1085 - moved the code that adds the ufprt token to the context items, into the constructor of UmbracoForm. Because it needs to happen before the @Html.AntiForgeryToken() is called. The dispose method is too late. 2019-06-25 15:09:37 +02:00
Sebastiaan Janssen a5fb2d2025 Replace visually-hidden in favor of sr-only as discussed in #5664 2019-06-25 14:53:58 +02:00
Rachel Breeze 40311f8590 V8: Accessibility improvements for textbox validation (#5664) 2019-06-25 14:50:40 +02:00
Jannik Anker a0c51fb212 Update da.xml
Misc Danish language "fixes", including some in the new language variants stuff
2019-06-25 14:22:53 +02:00
Stephan b306e41560 NuCache - failover to database when local db fails to load 2019-06-25 13:26:50 +02:00
Bjarke Berg 9f45d41a4a https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479
- Test fixes
2019-06-25 13:18:15 +02:00
Stephan e8d6daf59a NuCache - be more tolerant when cache is weird 2019-06-25 12:54:16 +02:00
Sebastiaan Janssen a0966be565 Fixes Macro Rendered in Richtext Editor when not configured to do so. #5700 2019-06-25 12:36:03 +02:00
Warren Buckley ba064ba4f5 Merge pull request #5717 from umbraco/v8/bug/5708
V8/bug/5708
2019-06-25 11:34:46 +01:00
Bjarke Berg 1994194656 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479
- Review fixes
2019-06-25 11:51:02 +02:00
Sebastiaan Janssen 1da2c00f0a Fix logic & make code easier to follow 2019-06-25 11:41:33 +02:00
Sebastiaan Janssen 71d076aba2 Dashboards not obeying c# access rules #5708
The invisible negator strikes again.
2019-06-25 11:34:26 +02:00
Claus c7ec1deee6 Merge pull request #5703 from kjac/v8-fix-property-settings-focus
V8: Set focus on "Mandatory" after picking a property type
2019-06-25 10:54:38 +02:00
Bjarke Berg 36559b8761 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Fix for NullReferenceException 2019-06-25 09:22:56 +02:00
Bjarke Berg 8fe7c5599a Merge remote-tracking branch 'origin/v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers' into v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers
# Conflicts:
#	src/Umbraco.Core/Services/ContentService.cs
2019-06-25 09:22:43 +02:00
Bjarke Berg 4dd325cec9 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Fix for NullReferenceException 2019-06-25 09:22:30 +02:00
Bjarke Berg d558646d75 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Fix for NullReferenceException 2019-06-25 09:21:51 +02:00
Bjarke Berg afac4bb918 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - missing entityResource injection 2019-06-25 09:18:30 +02:00
Bjarke Berg 0869bf27c7 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - clean up 2019-06-25 08:26:01 +02:00
Bjarke Berg 383a8617ce https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Fixed test 2019-06-25 08:19:50 +02:00
Bjarke Berg 3865f4fb50 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - bugfix - wrong constant used 2019-06-25 08:15:06 +02:00
Shannon Deminick d7d58644e5 Merge pull request #5684 from umbraco/v8/bugfix/AB-1447-Fix-for-update-checker
V8: Fix for update checker error
2019-06-25 15:13:04 +10:00
Shannon 3e74bbfb45 Creates a custom IAntiForgeryAdditionalDataProvider that provides and validates custom token data in the request which allows having a custom AF token per form created with BeginUmbracoForm 2019-06-25 14:35:28 +10:00
Bjarke Berg 966b07ba1c https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Changed entity service to only return small model with media path. And updated media picker to use entity service when loading data. 2019-06-24 21:12:38 +02:00
Claus 56669b5c84 Merge pull request #5709 from umbraco/v8/bugfix/fix-js-tests-currentuser-auth
Fixes JS Unit Test from commit 9fffdb4
2019-06-24 14:59:50 +02:00
Warren Buckley 60ed6f6b20 Remove snupkg aka newer Symbol nuget packages 2019-06-24 13:18:20 +01:00
Warren Buckley 903c163a57 Merge branch 'v8/bugfix/fix-js-tests-currentuser-auth' into v8/feature/sourcelink-update 2019-06-24 11:31:43 +01:00
Warren Buckley 41b8294ce3 Fixes build as commit 9fffdb4 added a check/call to GetCurrentUser and JS test was failing for unexpected HTTP call to GetCurrentUser 2019-06-24 10:39:47 +01:00
Bjarke Berg d4311fe4ab https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Replaced client side method to get Auchors with a server side version, and eliminated the use of contentResource in linkPikers 2019-06-24 10:52:35 +02:00
Bjarke Berg eab597a2a8 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - fix for js linter 2019-06-24 08:58:25 +02:00
Warren Buckley 003ee1a991 Added in Microsoft.SourceLink.GitHub Nuget package 2019-06-23 19:57:43 +01:00
Warren Buckley 601d48277e Update NuSpecs with the XML MetaData for SourceLink 2019-06-23 19:53:57 +01:00
Kenn Jacobsen aed6ef28e6 Fix overflow for specific node permissions 2019-06-23 13:19:18 +02:00
Kenn Jacobsen 339ae32c3d Fix the overflow wrapping for repeatable textstrings 2019-06-23 13:15:14 +02:00
Kenn Jacobsen 7d990a2cbb Enforce max width on numeric inputs 2019-06-23 13:14:33 +02:00
Dennis Adolfi b98812b119 V8/dev missing translations (#5639) 2019-06-23 13:13:42 +02:00
Steve Temple fafd045ed2 V8 Duplicate comments in MediaService (#5636)
* Remove duplicate comments in MediaService

* Remove temp files
2019-06-23 13:12:46 +02:00
Kenn Jacobsen acf63fc74d Fix the back button for media list views 2019-06-23 13:10:52 +02:00
Kenn Jacobsen 85565f2c5f V8: Fix the Nested Content title overflow (#5594) 2019-06-23 13:09:12 +02:00
Chriztian Steinmeier ac6625a80c Handle loginModel.RedirectUrl in Login partial (#5587) 2019-06-23 13:07:43 +02:00
Kenn Jacobsen 6d7b439aec Support negative values for integer and decimal property editors 2019-06-23 13:04:44 +02:00
Andy Butland 9fffdb407a Provided alternative messages for users that do and do not have access to document/media types for when trying to create content or media and no types can be created.
Where they do, provided a link to go to the page where child nodes can be edited.
2019-06-23 13:02:15 +02:00
Kenn Jacobsen 9170061810 V8: Add option to keep the mini profiler active at all times in debug mode (#5560) 2019-06-23 12:40:23 +02:00
Kenn Jacobsen a7da3d741f V8: Add keyboard support for navigating search results (#5500) 2019-06-23 12:30:17 +02:00
Kenn Jacobsen 255bd10296 V8: Use a picker to select allowed types for MNTP (#5506) 2019-06-23 12:25:15 +02:00
Mike 4fca0bb735 V8: Accessibility improvements for top header (#5544) 2019-06-23 12:10:16 +02:00
Kenn Jacobsen f7aaad86c5 Set focus on "Mandatory" after picking a property type when creating a new property 2019-06-21 15:56:36 +02:00
Sebastiaan Janssen 8d12170def Correct NuGet transform for the web.config file in the Views folder 2019-06-21 14:58:58 +02:00
Bjarke Berg d2655a9f2f Merge remote-tracking branch 'origin/v7/dev' into v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers 2019-06-21 13:59:11 +02:00
Bjarke Berg c4c2082fa9 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 - Only allow "ignoreUserStartNodes" for custom data types and not the default build in. 2019-06-21 13:57:17 +02:00
Sebastiaan Janssen 40d4a8fe6a Modelsbuilder is asking for too old a version of CodeAnalysis, Immutable and Metadata dependencies 2019-06-21 13:32:53 +02:00
Bjarke Berg 4c443b9e2e Merge pull request #5672 from umbraco/v8/feature/0000-avoid-too-long-locking-when-delete-content
Small fixes for backoffice under load.
2019-06-21 11:58:37 +02:00
Bjarke Berg 2898203cb9 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1479 Bugfixes for the "Bypass security" feature + filter out possible sensitive data 2019-06-21 10:50:23 +02:00
Sebastiaan Janssen 5ebdfc7b1c Previously added a few too many binding redirects to the web.config 2019-06-21 10:22:16 +02:00
Bjarke Berg 31d7e58191 Merge remote-tracking branch 'origin/v7/dev' into v7/feature/AB-1479-Reintroduce-the-bypass-security-option-in-pickers 2019-06-21 10:20:51 +02:00
Sebastiaan Janssen ad4416f663 So apparently Microsoft.CodeAnalysis.CSharp version 1.3.2 contains the dll that has the version 1.3.1.. very confusing 2019-06-21 10:07:45 +02:00
Sebastiaan Janssen b55d2a8a41 Modelsbuilder is asking for too old a version of the CodeAnalysis dependency 2019-06-21 09:56:01 +02:00
Sebastiaan Janssen 17a4799b97 7.15 release needs a few more assembly redirects (#5698)
7.15 release needs a few more assembly redirects
2019-06-21 08:19:35 +02:00
Shannon b0121c44b1 Merge branch 'v8/dev' into v8/feature/5170-IPublishedContent 2019-06-21 16:09:43 +10:00
Shannon be9d8e7da7 null checks on UrlHelperRenderExtensions when requesting image crop urls, if there's a null we'll just return an empty string 2019-06-21 16:08:54 +10:00
Shannon d129989c3d Removes irrelevant GetAbsoluteMediaUrl method now that there is both a media url provider and urls have been refactored in this PR, this was overlooked with the media url provider PR 2019-06-21 16:07:07 +10:00
Shannon 2870ce5e0a a perf change that in ContentCacheRefresher it doesn't iterate payloads if there is no real Id 2019-06-21 15:48:10 +10:00
Shannon da1e2680cb Fixes ContentStore when it's building the cache from sources, adds TODO notes, questions, concerns, etc.... 2019-06-21 15:47:47 +10:00
Shannon cd2ce2486a Fixes debugger display attribute 2019-06-21 15:46:16 +10:00
Shannon 5d4f2ec697 Fixes issue with ImageCropperTemplateExtensions since it wasn't re-mapped to the new method definition 2019-06-21 15:45:12 +10:00
Shannon c2cb85f1cd Merge branch 'v8/dev' into v8/feature/5170-IPublishedContent
# Conflicts:
#	src/Umbraco.Web.UI.Client/package-lock.json
2019-06-21 15:06:43 +10:00
Bjarke Berg 4df838c20c https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1358 - Changed the ignoreUserStartNodes in public endpoints to the data type id, and then look up the setting 2019-06-20 16:02:42 +02:00
Sebastiaan Janssen 4e44871671 The NuGet packages needs an extra DotNetCompilerPlatform transform to be sure it gets applied as it sometimes didn't
Added SignalR binding redirect for Umbraco Cloud
Added System.Web.Http.WebHost binding redirect for uCommerce
2019-06-20 15:57:31 +02:00
Niels Lyngsø 37d3692cd0 Merge pull request #5694 from kjac/v8-fix-editor-state-comma-dangle
V8: Fix "comma-dangle" gulp build error (editorstate.service.js)
2019-06-20 12:56:31 +02:00
Shannon f4b2ff93fc Fixes how Umbraco Context is injected into DI so that LightInject doesn't try to control it's lifetime. 2019-06-20 19:10:32 +10:00
Shannon 5ea6ebcc66 Revert "Fixes up UmbracoContextFactory to ensure it's not returning a disposed Umbraco context"
This reverts commit fcfb107653.
2019-06-20 17:58:40 +10:00
Shannon f6ac64f705 makes TreeChangeExtensions public 2019-06-20 15:53:25 +10:00
Shannon fcfb107653 Fixes up UmbracoContextFactory to ensure it's not returning a disposed Umbraco context 2019-06-20 15:40:57 +10:00
Kenn Jacobsen f829bb8023 Fix "comma-dangle" gulp build error 2019-06-19 18:40:42 +02:00
Bjarke Berg 1dd2c1cb91 Revert "Revert "U4 10147 - Bypass User Security option in pickers (#2441)""
This reverts commit 994c6eed
2019-06-19 14:30:44 +02:00
Niels Lyngsø 23702ee4dc Fixes notifications issue for new variant saving, allows "soft redirect" for creating (#5646)
Fixes notifications issue for new variant saving, allows "soft redirect" for creating
2019-06-19 12:34:33 +02:00
Shannon 5c2b0647f3 Gets the feature in v7 based on #2682 that wasn't merged upwards to v8 and found some issues along the way like not filtering the mini list view properly along with not returning the content type alias in the entity controller 2019-06-19 16:42:04 +10:00
Shannon c7a725ad94 Merge remote-tracking branch 'origin/v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js
#	src/Umbraco.Web.UI.Client/src/common/services/tree.service.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
2019-06-19 13:38:35 +10:00
Shannon 5c6a9480a6 remove unneeded method 2019-06-19 13:32:26 +10:00
Shannon c1be8e3f00 Merge branch 'v7/dev' of https://github.com/umbraco/Umbraco-CMS into v7/dev
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
2019-06-19 13:31:43 +10:00
Shannon d8dbda8e94 Merge branch 'kjac-v7-fix-treepicker-allowed-nodes' into v7/dev 2019-06-19 13:30:33 +10:00
Shannon a0ab7ace07 Makes the treeNodeExpanded event raised during tree syncing 2019-06-19 13:29:54 +10:00
Shannon 7c27189e2e Merge branch 'v7-fix-treepicker-allowed-nodes' of https://github.com/kjac/Umbraco-CMS into kjac-v7-fix-treepicker-allowed-nodes 2019-06-19 13:01:50 +10:00
Shannon 76cbfdb787 ignores a failing test, will need a separate task for that. 2019-06-19 12:31:36 +10:00
Sebastiaan Janssen 56545ad7f1 Revert "Merge branch 'v7/dev' into v8/dev"
This reverts commit 7db0440b5c.

# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.prevalues.html
#	src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
2019-06-18 19:18:48 +02:00
Bjarke Berg 832dc7f4a5 Changed superadmin back to admin again 2019-06-18 18:44:22 +02:00
Warren Buckley 62dc68e7b2 Merge pull request #5401 from umbraco/v8/feature/logviewer-change-time-period
Added support for changing the dates of the log files
2019-06-18 15:09:16 +01:00
Bjarke Berg 348c79d841 Init preflight check 2019-06-18 15:19:27 +02:00
Sebastiaan Janssen 994c6eed50 Revert "U4 10147 - Bypass User Security option in pickers (#2441)"
This reverts commit cc9a7ff942.

# Conflicts:
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
2019-06-18 13:07:40 +02:00
Bjarke Berg 9614740410 Added timeout for 2 seconds. Dont make sense to wait longer for this 2019-06-18 11:44:56 +02:00
Stephan 62e6168e03 Revert ContentStore changes - have to find the bug now 2019-06-18 11:36:53 +02:00
Warren Buckley b6d762c279 Merge pull request #5683 from umbraco/v8/bugfix/5600-rte-full-screen
Fixes #5600 Adds fullscreen plugin/command to the RTE and allows it to sit in front of the tree when used
2019-06-18 10:12:03 +01:00
Bjarke Berg ab93c4ff2d clean up 2019-06-18 11:02:43 +02:00
Bjarke Berg 473c39f7c4 Still being able to change date period if the period has too much data 2019-06-18 10:53:00 +02:00
Bjarke Berg 811aea7898 Added missing files 2019-06-18 10:27:56 +02:00
Bjarke Berg 07358eb46d Merge remote-tracking branch 'origin/v8/dev' into v8/feature/logviewer-change-time-period
# Conflicts:
#	src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs
#	src/Umbraco.Web.UI.Client/package-lock.json
2019-06-18 10:20:48 +02:00
Stephan 067af64dff Cleanup ChildrenForAllCultures 2019-06-18 09:46:29 +02:00
Bjarke Berg cb428bb288 https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1447: Catch the SoapException which happends when a timeout occurs on the server. Also change such that this check is only executed for super admins. 2019-06-18 08:11:18 +02:00
Shannon b69c981100 Fixes #5600 Adds fullscreen plugin/command to the RTE and allows it to sit in front of the tree when used 2019-06-18 16:02:36 +10:00
Shannon 1709879b14 Merge remote-tracking branch 'origin/v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
#	src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js
#	src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
2019-06-18 14:15:50 +10:00
Shannon cff5046a9e Merge branch 'kjac-v7-fix-linkpicker-anchor-link-without-url' into v7/dev 2019-06-18 14:09:11 +10:00
Shannon 9f6da2ca4b Merge branch 'v7-fix-linkpicker-anchor-link-without-url' of https://github.com/kjac/Umbraco-CMS into kjac-v7-fix-linkpicker-anchor-link-without-url 2019-06-18 14:08:45 +10:00
Shannon Deminick 0c8b0edcda Merge pull request #5472 from umbraco/v8/feature/5123-rte-data-udi-images
RTE data-udi and image paths
2019-06-18 13:40:20 +10:00
Shannon 68f9e89a32 Merge branch 'v8/dev' into v8/feature/5123-rte-data-udi-images 2019-06-18 13:05:37 +10:00
Shannon fecadeec51 Fixes issue with nucache and rebuilding and fixes ChildrenForAllCultures to deal with unpublished children 2019-06-18 11:57:36 +10:00
Warren Buckley d3b675a213 Merge pull request #5640 from umbraco/v8/feature/0000-dont-mark-default-language
Remove bold from default variant.
2019-06-17 13:39:28 +01:00
Warren Buckley 316ab6becb Merge pull request #5536 from umbraco/v8/bugfix/5345-dragging-rte-in-grid
5345 dragging rte in grid
2019-06-17 13:15:39 +01:00
Bjarke Berg 9a45bda430 Merge pull request #5658 from umbraco/v8/bugfix/3498-EntityService-updates
V8/bugfix/3498 entity service updates
2019-06-17 13:37:58 +02:00
Stephan 7c11943836 Merge remote-tracking branch 'origin/v8/feature/5170-IPublishedContent' into v8/feature/5170-IPublishedContent 2019-06-17 13:24:28 +02:00
Stephan 94d2a5cbad Bugfix published cache and children 2019-06-17 13:03:01 +02:00
Bjarke Berg 99cabe564d Merge pull request #5673 from umbraco/v7/bugfix/5665-non-admin-edit-user-group
V7: Resolved issue where adding non-admin user group editor to group already exists
2019-06-17 09:13:42 +02:00
Shannon b0488d2d94 fixes showing the correct create date on content creation 2019-06-17 16:50:56 +10:00
Bjarke Berg 600c8ebbbf Merge pull request #5670 from AndyButland/defect/5665-non-admin-edit-user-group
V8: Resolved issue where adding non-admin user group editor to group already exists
2019-06-17 08:48:38 +02:00
Shannon 3bf43d7ce3 adds a unit test showing that the SimilarNodeName is broken. 2019-06-17 16:48:35 +10:00
Andy Butland 15b1d35c17 https://github.com/umbraco/Umbraco-CMS/issues/5665: Resolved issue where adding non-admin user group editor to group already exists 2019-06-17 08:43:24 +02:00
Shannon 872db5877f fixes the color of the variant state after publishing and switching to the info tab 2019-06-17 16:33:20 +10:00
Shannon 977c1d9585 fixes JS error when navigating to the content info tab 2019-06-17 16:23:38 +10:00
Bjarke Berg 46f4984add https://umbraco.visualstudio.com/D-Team%20Tracker/_workitems/edit/1357: Fixed issue where too fast change between sections, leads to a wrong tree (The first requested) shown in the menu. 2019-06-17 07:20:11 +02:00
Bjarke Berg e39e132feb Cleaned up, such that we are not in doubt about whether the page variable should have been increased. 2019-06-17 07:19:38 +02:00
Andy Butland 17b479275e Resolved issue where adding non-admin user group editor to group already exists 2019-06-16 12:20:52 +02:00
Shannon 9927ff3c86 removes commented out code 2019-06-13 23:47:48 +10:00
Shannon 81077c2681 Gets the entity service returning a media's url property and allows this to be used in the media picker. 2019-06-13 23:39:36 +10:00
Niels Lyngsø f4593778cb updated package lock 2019-06-13 12:31:29 +02:00
Shannon 16f6bbcbd4 init commit of removing code for entity service that loads in any property data 2019-06-13 18:45:33 +10:00
Warren Buckley c597da8f97 Merge pull request #5423 from umbraco/v7/bugfix/4144-member-password-manual-change-fix
Fixes #4144 - AllowManuallyChangingPassword Regression Fix
2019-06-13 08:53:17 +01:00
Shannon 5775a8b614 fixes if explicitly resetting password 2019-06-13 16:50:15 +10:00
Bjarke Berg cc4a7653e5 Bugfix: Still load trees even when a tree is about to be loaded. But only use the result, if we are still on the correct section. This eliminates the issue where a wrong tree is shown in a section. 2019-06-12 14:31:01 +02:00
Bjarke Berg 5b546cc425 Bugfix: Don't increase the page number in the loop, because the items are moved to another subtree, and therefore is not any longer part of the descendants call. Now we avoid the leak of items when moving to recycle bin. 2019-06-12 10:39:34 +02:00
Sebastiaan Janssen 7f5f304d2d Merge pull request #5642 from umbraco/v8/feature/0000-Gulp-root-folder-as-real-root
Gulp root variable change
2019-06-12 10:25:13 +02:00
Niels Lyngsø 0827ced915 removed App_Plugins 2019-06-12 09:43:59 +02:00
Stephan 9c252131f7 Better exception message in NuCache 2019-06-12 08:55:03 +02:00
Shannon dec042fce4 adds Id to panic exception 2019-06-12 16:28:33 +10:00
Shannon 8eafadc29b adds some more info to panic exceptions 2019-06-12 14:00:28 +10:00
Shannon c5347a97ce Fixes setting the reset flag when allowManuallyChangingPassword is disabled 2019-06-12 12:51:26 +10:00
Shannon 8a19cd4bbc Fixes content blueprint creation 2019-06-12 12:22:14 +10:00
Shannon 2797011fb0 Ensures there's no duplicate notifications and ensures that soft redirects occur for content blueprints too 2019-06-12 11:34:36 +10:00
Shannon 1307ee7ced some cleanup 2019-06-12 10:36:52 +10:00
Shannon e0059f1fad adds notes 2019-06-12 10:35:21 +10:00
Shannon fd5b5b67bf Fixes notifications for invariant content publishing 2019-06-12 10:11:27 +10:00
Shannon 7ba4c2f353 revert overlay.service 2019-06-12 01:04:52 +10:00
Shannon 0381c55ce7 reverts some parts of the content editor 2019-06-12 01:01:09 +10:00
Shannon 88d9e3321c Don't do a redirect on create for content, instead we do a 'soft redirect' which means the URL is updated but the route isn't changed which simplifies re-wiring everything up (will eventually do for all editors) 2019-06-12 00:39:12 +10:00
Niels Lyngsø 05f479a58f changed root folder to only contain the URI for root, not including /Umbraco/ 2019-06-11 14:14:44 +02:00
Shannon d8180604e8 fixes SimilarNodeName 2019-06-11 22:10:53 +10:00
Shannon e6a8ba84aa starts re-binding the variant dialogs on create for the content editor (WIP - will probably revert and try a different approach) 2019-06-11 21:47:45 +10:00
Sebastiaan Janssen 39d93a7ace Spelling mistake IContentFinder function (#5616)
Spelling mistake IContentFinder function
2019-06-11 13:00:27 +02:00
Niels Lyngsø 5ddf21f09f remove bold from lists of language variants 2019-06-11 10:03:04 +02:00
Niels Lyngsø 7b3ab72105 remove bold from default variant. 2019-06-11 09:48:45 +02:00
Shannon 1f64ae4682 Fixes language/variant mapping so it's consistent and by lang name not iso 2019-06-11 17:17:19 +10:00
Shannon 120f4c3096 removes scope.busy callls (legacy old stuff), add ability to preserve editor state between routes, for content we now preserve editor state when redirecting to new content and then rebind some values from that editor state when the editor loads, updates editorstate.service and filemanager.service to manage themselves on route change (decoupling), fixes variant mapper to ensure that the variants are always returned in a deterministic order. 2019-06-11 16:31:32 +10:00
Patrick de Mooij e59d75f4f9 Spelling mistake IContentFinder function 2019-06-07 16:42:53 +02:00
Sebastiaan Janssen e3b2d427a4 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	build/Modules/Umbraco.Build/Get-UmbracoBuildEnv.ps1
#	build/Modules/Umbraco.Build/Umbraco.Build.psm1
#	build/NuSpecs/UmbracoCms.Core.nuspec
#	build/NuSpecs/UmbracoCms.nuspec
#	src/SQLCE4Umbraco/SqlCE4Umbraco.csproj
#	src/SQLCE4Umbraco/app.config
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Core/app.config
#	src/Umbraco.Core/packages.config
#	src/Umbraco.Tests.Benchmarks/app.config
#	src/Umbraco.Tests.Benchmarks/packages.config
#	src/Umbraco.Tests/App.config
#	src/Umbraco.Tests/Migrations/SqlScripts/SqlResources.Designer.cs
#	src/Umbraco.Tests/Services/Importing/ImportResources.Designer.cs
#	src/Umbraco.Tests/TreesAndSections/ResourceFiles.Designer.cs
#	src/Umbraco.Tests/packages.config
#	src/Umbraco.Web.UI.Client/bower.json
#	src/Umbraco.Web.UI.Client/package-lock.json
#	src/Umbraco.Web.UI/Properties/Settings.Designer.cs
#	src/Umbraco.Web.UI/config/imageprocessor/cache.config
#	src/Umbraco.Web.UI/config/imageprocessor/processing.config
#	src/Umbraco.Web.UI/packages.config
#	src/Umbraco.Web.UI/web.Template.Debug.config
#	src/Umbraco.Web.UI/web.Template.config
#	src/Umbraco.Web/Editors/ContentTypeControllerBase.cs
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
#	src/Umbraco.Web/Mvc/Strings.Designer.cs
#	src/Umbraco.Web/Properties/Settings1.Designer.cs
#	src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
#	src/Umbraco.Web/UI/JavaScript/Resources.Designer.cs
#	src/Umbraco.Web/Web References/org.umbraco.our/Reference.cs
#	src/Umbraco.Web/Web References/org.umbraco.update/Reference.cs
#	src/Umbraco.Web/app.config
#	src/Umbraco.Web/packages.config
#	src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.Designer.cs
#	src/UmbracoExamine/UmbracoExamine.csproj
#	src/UmbracoExamine/app.config
#	src/UmbracoExamine/packages.config
#	src/umbraco.MacroEngines/Resources/Strings.Designer.cs
#	src/umbraco.MacroEngines/app.config
#	src/umbraco.MacroEngines/packages.config
#	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
#	src/umbraco.businesslogic/app.config
#	src/umbraco.businesslogic/packages.config
#	src/umbraco.businesslogic/umbraco.businesslogic.csproj
#	src/umbraco.cms/app.config
#	src/umbraco.cms/businesslogic/Packager/FileResources/PackageFiles.Designer.cs
#	src/umbraco.cms/packages.config
#	src/umbraco.cms/umbraco.cms.csproj
#	src/umbraco.controls/TreePicker/BaseTreePickerScripts.Designer.cs
#	src/umbraco.controls/app.config
#	src/umbraco.controls/umbraco.controls.csproj
#	src/umbraco.datalayer/app.config
#	src/umbraco.datalayer/umbraco.datalayer.csproj
#	src/umbraco.editorControls/app.config
#	src/umbraco.editorControls/mediapicker/MediaChooserScripts.Designer.cs
#	src/umbraco.editorControls/umbraco.editorControls.csproj
#	src/umbraco.interfaces/umbraco.interfaces.csproj
#	src/umbraco.providers/app.config
#	src/umbraco.providers/umbraco.providers.csproj
2019-06-07 16:05:44 +02:00
Sebastiaan Janssen 22f54394fb Fix method signatures to prevent breaking changes (just like what I'd already done in v8) 2019-06-07 16:02:03 +02:00
Sebastiaan Janssen 57c368f70d Bumps version to 7.15.0 2019-06-07 14:32:02 +02:00
Stephan 14a056f4f4 Fix and cleanup 2019-06-07 11:15:58 +02:00
Kenn Jacobsen 580de6befe Linkpicker should support anchor links without base URL 2019-06-07 09:03:35 +02:00
Bjarke Berg 0120dc6ea3 https://github.com/umbraco/Umbraco-CMS/issues/5574 - Fixes issue when… (#5575) 2019-06-07 09:01:15 +02:00
Shannon 79cd312912 Fixes message when descendant publishing fails when there is a mix of variant types 2019-06-07 14:20:44 +10:00
Shannon 9b36bc4097 Fixes notifications when publishing fails and warnings are issues - these were not being displayed 2019-06-07 13:13:52 +10:00
Shannon 9f346e6ee2 fixes valServer directive so that JS errors dont' occur on the content tyep editor 2019-06-07 13:01:58 +10:00
Shannon 3ea9504620 Revert "Don't show multiple open menus"
This reverts commit 661246b5f5.
2019-06-07 13:01:13 +10:00
Shannon Deminick 86db972188 Merge pull request #5208 from umbraco/v8/bugfix/5190-invariant-property-validation
Fix for server side validation fails invariant-properties on non-default languages.
2019-06-07 12:16:57 +10:00
Shannon 6d12eea789 Adds unit tests for serverValidationManager and fixes it up to ensure that the correct culture callbacks are called. 2019-06-07 12:16:00 +10:00
Shannon 68174bc7df Merge branch 'v8/dev' into v8/bugfix/5190-invariant-property-validation 2019-06-07 11:21:36 +10:00
Shannon 5ca9600c98 adds comments 2019-06-07 11:01:30 +10:00
Shannon 87b3fb5539 Fixes BulkInsertRecordsSqlServer 2019-06-07 10:18:45 +10:00
Sébastien Sougnez 4be6a48fb2 Update tinymce version to 4.9.4 in v7 (#4703) 2019-06-06 17:42:12 +02:00
Sebastiaan Janssen 53731049de Updates .NET Framework to 4.5.2 and updates dependencies (#3064)
Updates .NET Framework to 4.5.2 and updates dependencies
2019-06-06 17:27:53 +02:00
Stephan 7fd6bfa163 Make IPublishedContent changes less breaking and more friendly 2019-06-06 16:54:00 +02:00
Sebastiaan Janssen 4b2ce522fe Update nuspecs 2019-06-06 15:55:38 +02:00
Sebastiaan Janssen d0eddbb9a2 Update SignalR 2019-06-06 15:38:37 +02:00
Sebastiaan Janssen 938abab9d6 Update assembly redirects 2019-06-06 15:29:32 +02:00
Sebastiaan Janssen 5faa71187d More Owin updates 2019-06-06 15:21:05 +02:00
Sebastiaan Janssen c069f262dc Update MVC, Razor, WebApi and Owin 2019-06-06 14:50:01 +02:00
Shannon Deminick ac79fe7a77 Merge pull request #5576 from umbraco/v8/bugfix/database-factory-fix
Fix UmbracoDatabaseFactory SqlServer detection
2019-06-06 22:46:37 +10:00
Sebastiaan Janssen 9f42e6a607 Update ImageProcessor and Newtonsoft.Json dependencies to the latest version 2019-06-06 14:37:57 +02:00
Shannon 3f8fe334b2 Merge branch 'v8/dev' of https://github.com/umbraco/Umbraco-CMS into v8/dev 2019-06-06 22:35:15 +10:00
Shannon 096004db13 fixes infinite loop issue 2019-06-06 22:34:57 +10:00
Sebastiaan Janssen 202f2d2e27 Fix build for VS2019 (not complete yet) 2019-06-06 13:53:42 +02:00
Sebastiaan Janssen aaab14be3e fix csproj file 2019-06-06 13:48:48 +02:00
Sebastiaan Janssen 1c87176d80 Merge branch 'v7/dev' into pr/3064
# Conflicts:
#	build/NuSpecs/UmbracoCms.Core.nuspec
#	src/Umbraco.Tests/packages.config
#	src/Umbraco.Web.UI/packages.config
#	src/Umbraco.Web/packages.config
#	src/umbraco.MacroEngines/packages.config
2019-06-06 12:50:48 +02:00
Stephan c17dbbe141 Fix merge 2019-06-06 12:16:55 +02:00
Stephan 1dde60a1d5 Merge branch v8/dev into v8/feature/5170-IPublishedContent 2019-06-06 12:12:49 +02:00
Shannon Deminick 04967143d8 Merge pull request #5598 from kjac/v8-fix-content-type-culture-variance
V8: Fix broken culture variance toggle on content type properties
2019-06-06 17:33:17 +10:00
Kenn Jacobsen 70fb48d94a Fix broken culture variance toggle on content type properties 2019-06-06 08:39:21 +02:00
Shannon 760d1d7daa Merge branch 'v8/dev' into v8/bugfix/database-factory-fix 2019-06-06 16:32:24 +10:00
Shannon Deminick 3135353a1a Merge pull request #5597 from kjac/v8-fix-rte-unconfigured-dimensions
V8: Fix JS error when the RTE has unconfigured dimensions
2019-06-06 16:16:07 +10:00
Kenn Jacobsen 1565ff1661 Fix JS error when the RTE has unconfigured dimensions 2019-06-06 08:04:06 +02:00
Sebastiaan Janssen bc55d96cde Merge pull request #5589 from MvdDonk/v8/dev
5588 - Correct location for Visual Studio xml documentation files
2019-06-05 16:17:44 +02:00
Maarten v.d. Donk 3d2379d582 Correct location for Visual Studio xml documentation files (5588) 2019-06-05 11:34:42 +02:00
Shannon Deminick 73e907291b Merge pull request #5568 from umbraco/v8/bugfix/5565-rte-sizing
5565 fix for configuration of TineMCE size
2019-06-05 16:07:55 +10:00
Shannon 49c76c744e Fixes width/height for when in distraction free mode 2019-06-05 16:06:55 +10:00
Shannon 8967061758 fixes semi colons 2019-06-05 15:21:00 +10:00
Niels Lyngsø eff8075102 Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/5190-invariant-property-validation
# Conflicts:
#	src/Umbraco.Web.UI.Client/package-lock.json
2019-06-04 14:49:23 +02:00
Stephan 849feb0683 Fix UmbracoDatabaseFactory SqlServer detection 2019-06-04 13:15:25 +02:00
Sebastiaan Janssen a182c9b1ee Updates to latest Examine (#4851)
Updates to latest Examine
2019-06-04 13:06:35 +02:00
Poornima Nayar 17675d389e Toggle color picker labels squeeze spectrum color picker (#5391) 2019-06-03 12:41:27 +02:00
Niels Lyngsø f30aefb614 parse dimensions to configuration of TinyMCE + remove autoresize if height is set. 2019-06-03 12:04:14 +02:00
Sebastiaan Janssen a1722f268c Merge pull request #5400 from poornimanayar/temp-5326
Search shadow-layer should be on top of the user-dialog
2019-06-03 12:00:41 +02:00
Poornima Nayar 864d83f8f7 Introduce a maxlength on the name of the node (#5374) 2019-06-03 11:41:58 +02:00
Bjarke Berg 2f978e96d4 Merge pull request #5467 from umbraco/v8/bugfix/805-migrate-from-7
Tested starterkit both using SqlCE and SqlServer and reviewed the code. Merging in..
2019-06-03 10:59:57 +02:00
Sebastiaan Janssen dccc6238e0 Merge pull request #5558 from FransdeJong/DeleteDictionaryChildren
Added a check for and delete descendants when deleting a dictionary item
2019-06-03 10:21:45 +02:00
Sebastiaan Janssen 0687125343 Merge pull request #5563 from kjac/v8-fix-multiple-open-menus
V8: Don't show multiple open menus
2019-06-03 10:16:02 +02:00
Sebastiaan Janssen de36edfd58 Merge pull request #5566 from bjarnef/dev-v8-rte-startnodes-description
v8: Remove HTML characters in RTE prevalue description
2019-06-03 10:14:35 +02:00
Bjarne Fyrstenborg 2842a56356 Remove html characters in description 2019-06-02 23:03:20 +02:00
Kenn Jacobsen 661246b5f5 Don't show multiple open menus 2019-06-01 21:11:59 +02:00
Frans de Jong 457474ecf9 Added a check for and delete descendants when deleting a dictionary item 2019-06-01 13:07:16 +02:00
Sebastiaan Janssen 5f67b3a9c1 Merge pull request #5458 from tiffy74/issue#5277_13
Issue#5277 13
2019-05-31 20:52:16 +02:00
Sebastiaan Janssen a3547a79e8 Merge pull request #5460 from kjac/v8-fix-rte-load-indicator
V8: Use umb-load-indicator when loading the RTE
2019-05-31 20:49:22 +02:00
Sebastiaan Janssen c6467b355d Merge pull request #5491 from kjac/v8-feature-mntp-single-mode-improvements
V8: MNTP improvements when configured to select only one item
2019-05-31 20:47:41 +02:00
Sebastiaan Janssen e2ef186dd1 Merge pull request #5519 from FransdeJong/Umb-Sections
Updated allowed width for Umb-Section directive
2019-05-31 20:41:39 +02:00
Sebastiaan Janssen 0ccc40bf52 Merge pull request #5522 from kjac/v8-feature-content-type-editor-without-live-editing
V8: Don't apply changes instantly when editing content type properties
2019-05-31 20:39:22 +02:00
Sebastiaan Janssen ebc21a1cc7 V8: Apply nicer log message wrapping (#5274)
V8: Apply nicer log message wrapping
2019-05-31 20:36:00 +02:00
Kenn Jacobsen 30067d92ae V8: Always show content and media search results first (#5309) 2019-05-31 20:29:00 +02:00
Kenn Jacobsen 342f924e8f V8: Fix the link picker anchor list (#5379) 2019-05-31 20:27:15 +02:00
Sebastiaan Janssen ba12efd285 Merge pull request #5358 from kjac/v8-feature-backoffice-localize
V8: Allow localizing content types and properties using language files
2019-05-31 20:15:22 +02:00
Sebastiaan Janssen ed3efe9bee V8: Default nested content item names to the item type name (#5369)
V8: Default nested content item names to the item type name
2019-05-31 20:11:56 +02:00
Sebastiaan Janssen 47a7c08686 Merge pull request #5407 from kjac/v8-fix-users-search-empty-state
V8: Add/fix empty state in users and groups search
2019-05-31 20:08:57 +02:00
Sebastiaan Janssen 5191dbf011 Case insensitive section comparison (#5540)
Case insensitive section comparison
2019-05-31 20:07:26 +02:00
Sebastiaan Janssen 8d9ae085aa Fix bug with multi url picker. (#5408)
Fix bug with multi url picker.
2019-05-31 19:59:30 +02:00
Sebastiaan Janssen 161d6505eb Merge pull request #5414 from electricsheep/v8/bugfix/5404-avatar-cursor
V8: Fix the avatar cursor
2019-05-31 19:42:12 +02:00
Sebastiaan Janssen c292f7ff03 Merge pull request #5424 from electricsheep/v8/bugfix/5292-remove-hsts-preload
V8: Remove preload from HSTS healthcheck
2019-05-31 19:31:19 +02:00
Sebastiaan Janssen 17860fb8c7 Merge pull request #5432 from leekelleher/v8/bugfix/entitycontroller-convert-membertype
Corrected `EntityController.ConvertToObjectType` return type for MemberType
2019-05-31 19:28:01 +02:00
Sebastiaan Janssen eb642dc611 Merge pull request #5434 from bjarnef/patch-2
Fix noPasswordManager name for docs
2019-05-31 19:27:07 +02:00
Sebastiaan Janssen bc99d074a9 Merge pull request #5435 from ArnoldV/temp-5420
5420: v8 Invited user keeps showing as "has not logged in yet"
2019-05-31 19:25:56 +02:00
Kenn Jacobsen d536bebdbe V8: Show loading indicator while the Nested Content editor is loading (#5446) 2019-05-31 19:22:23 +02:00
Sebastiaan Janssen 3639d952d5 Merge pull request #5447 from kjac/v8-fix-nested-content-set-dirty-on-paste
V8: Prompt to save changes after pasting items into Nested Content
2019-05-31 19:19:41 +02:00
Sebastiaan Janssen 7c79cf318e Merge pull request #5450 from Matthew-Wise/5277-27
Login errors are not identified for screen reader users
2019-05-31 19:17:45 +02:00
Sebastiaan Janssen 6ad1607685 Merge pull request #5456 from electricsheep/v8/feature/5443-add-publish-menu-hotkeys
V8/feature/5443 add publish menu hotkeys
2019-05-31 19:15:41 +02:00
Sebastiaan Janssen c1ed2b9f45 Merge pull request #5523 from kjac/v8-fix-tree-node-flickering
V8: Fix the flickering when browsing up and down already loaded trees
2019-05-31 16:42:56 +02:00
Sebastiaan Janssen 2c5eeaeac8 V8: Don't load the breadcrumb twice when editing content (#5454)
V8: Don't load the breadcrumb twice when editing content
2019-05-31 16:41:43 +02:00
Sebastiaan Janssen a74a0c343e Merge pull request #5465 from kjac/v8-feature-content-sort-ux
V8: UX update for content/media sort dialog
2019-05-31 16:40:17 +02:00
Sebastiaan Janssen 4eb897ccff Merge pull request #5477 from electricsheep/v8/bugfix/5443-save-options-not-tabbable
V8: Enable tabbing for save options dropdown
2019-05-31 16:37:58 +02:00
Sebastiaan Janssen 20dc77c330 Merge pull request #5480 from electricsheep/v8/bugfix/4657-fix-view-source-animation
V8: Fix TinyMCE source overlay animation
2019-05-31 16:36:04 +02:00
Sebastiaan Janssen 4c79863130 Merge pull request #5521 from FransdeJong/Issue5038
Fixed form controls being pushed off screen.
2019-05-31 16:25:19 +02:00
Sebastiaan Janssen 9ec95c7aa2 Merge pull request #5520 from kjac/v8-fix-macro-tree-sorting
V8: Sort macros alphabetically
2019-05-31 16:21:29 +02:00
Sebastiaan Janssen 38bfd07883 Merge pull request #5535 from AndyButland/defect/5534-user-no-group-save-notification
V8: Fixes #5534 (saving a user with no groups fails validation, but no message is displayed)
2019-05-31 16:19:01 +02:00
Sebastiaan Janssen ce15b7c7c4 Merge pull request #5548 from kjac/v8-feature-reload-close-context-menu
V8: Automatically hide the context menu after reloading a node
2019-05-31 16:17:41 +02:00
Sebastiaan Janssen b090de3cde Merge pull request #5549 from kjac/v8-fix-remove-reload-for-container-nodes
V8: Don't show "Reload" for list view nodes
2019-05-31 16:16:42 +02:00
Bjarne Fyrstenborg dbd74f5273 v8: Fix listview layout icons (#5405) 2019-05-31 16:15:20 +02:00
Ollie P e87f8b14be Removed reference to adding languages from dictionary item description (#5457) 2019-05-31 16:14:10 +02:00
Sebastiaan Janssen fb14a4987c Merge pull request #5494 from kjac/v8-fix-umbconfirm-cursor
V8: umb-confirm button cursor should be "pointer"
2019-05-31 16:12:14 +02:00
Sebastiaan Janssen a471e7d25e Merge pull request #5553 from kjac/v8-fix-pointer-cursor-for-ng-links
V8: Ensure "pointer" cursor for all links with ng-click
2019-05-31 16:11:23 +02:00
Sebastiaan Janssen fef9248b51 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Core/Persistence/Repositories/UserRepository.cs
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/macropicker.html
#	src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
#	src/Umbraco.Web/Strategies/NotificationsHandler.cs
2019-05-31 11:36:29 +02:00
Kenn Jacobsen a8e2798add Ensure "pointer" cursor for all links with ng-click (even if they have no href) 2019-05-30 21:39:52 +02:00
Sebastiaan Janssen 6af1057ad7 Merge pull request #5508 from Geckex/v7/temp-5507
MemberModelMapper to return member groups ordered alphabetically
2019-05-30 17:38:53 +02:00
Stephan 983144c3f9 Unit-test published content linked-list children 2019-05-29 17:01:12 +02:00
Stephan c451498975 Fix v8/dev merge 2019-05-29 15:13:28 +02:00
Bjarke Berg b366c5da03 Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/805-migrate-from-7 2019-05-29 10:14:31 +02:00
Stephan 24998425fc Better handling of default constraints 2019-05-29 09:19:29 +02:00
Stephan 8579b5a89b Merge branch 'v8/dev' into v8/feature/5170-IPublishedContent 2019-05-29 08:48:18 +02:00
Mario Lopez 1ad4414026 case insensitive section comparison 2019-05-29 11:39:10 +10:00
Stephan 70e4b7d931 Fix tests 2019-05-28 18:40:44 +02:00
Stephan 49d2a6dbf0 Fix migrations for SqlServer 2019-05-28 17:49:50 +02:00
Niels Lyngsø d52d0819ab remember settings for affected RTEs 2019-05-28 16:08:38 +02:00
Andy Butland 0dedd7b2d4 Show the notification when validation fails following saving a user with no groups assigned 2019-05-28 15:57:03 +02:00
Niels Lyngsø ca25b3199b refactor to use area var 2019-05-28 15:24:02 +02:00
Stephan 457427a5f4 Cleanup logging in DataTypeMigration 2019-05-28 10:58:47 +02:00
Stephan 5046bc019c Cleanup strings in UmbracoPlan 2019-05-28 10:52:04 +02:00
Stephan 187ab9ba46 Better exceptions in MigrationPlan 2019-05-28 10:46:26 +02:00
Stephan 3a813d2d77 Cleanup unknown user for audit events 2019-05-28 10:26:30 +02:00
Kenn Jacobsen 460653d078 Don't show "Reload" for container nodes 2019-05-26 19:06:24 +02:00
Kenn Jacobsen beb9068805 Automatically hide the context menu after reloading a node 2019-05-26 19:05:19 +02:00
Kenn Jacobsen f5a00cc3bd Fix the tree node flickering when browsing up and down already loaded trees. 2019-05-26 13:43:30 +02:00
Frans de Jong 86aef126fd Added float none for viewport up to 768 Larger viewports are not affected 2019-05-25 22:17:19 +02:00
Kenn Jacobsen 0e9d0a5a10 Don't live edit content type properties 2019-05-25 19:08:46 +02:00
Kenn Jacobsen a4f1b433eb Sort macros alphabetically 2019-05-25 10:34:03 +02:00
Frans de Jong 08b386e180 Finetuned Umb-Sections directive to use full space 2019-05-25 10:19:08 +02:00
Sebastiaan Janssen 97ae6165e4 Merge pull request #5511 from ReVoid/patch-1
ng-switch-default directive typo in macropicker.html
2019-05-23 11:19:47 +02:00
Sebastiaan Janssen c4ba0454fc Merge pull request #5488 from bjarnef/dev-v8-fix-overlay-drawer
v8: Fix overlay drawer
2019-05-22 23:02:13 +02:00
Sebastiaan Janssen cf1351b50f v8: Show box shadow when hover user avatar (#5490)
v8: Show box shadow when hover user avatar
2019-05-22 21:02:43 +02:00
Dmitriy 8cdb61195d ng-switch-default typo in macropicker.html
looks like it is just a typo :) fixed
2019-05-22 19:49:07 +03:00
Thomas Poulsen 50c2d574f1 Change MemberModelMapper GetMemberGroupValue to return member groups ordered alphabetically.
- This is used in ContentPropertyDisplay class - for UI purposes only.
2019-05-22 14:13:46 +01:00
Sebastiaan Janssen e3de3f98fd Merge pull request #5396 from kjac/v8-fix-color-picker-label-enabled
V8: Make sure that the color picker labels are always shown
2019-05-22 14:43:17 +02:00
Kenn Jacobsen 7a8a1a3705 Add a bit of a wait to the toggle initialization 2019-05-21 11:48:02 +02:00
Kenn Jacobsen 7707839968 Merge branch 'v8/dev' into v8-fix-color-picker-label-enabled 2019-05-21 11:36:18 +02:00
Sebastiaan Janssen b270db791b Merge pull request #5398 from kjac/v8-fix-rte-codeview-autofocus
V8: Support auto focus on ACE editor and use it for RTE source view
2019-05-21 10:40:04 +02:00
Kenn Jacobsen c6cabf1239 Make sense of the umb-confirm button cursor 2019-05-20 08:11:00 +02:00
Sebastiaan Janssen 0ea4864f24 Merge pull request #5461 from kjac/v8-fix-confirm-discard-esc-key
V8: Disable the escape key in the "unsaved changes" dialog
2019-05-19 10:01:14 +02:00
Kenn Jacobsen f07fcac13d If MNTP is configured to pick max 1 item, don't allow multiselect in the content picker dialog 2019-05-19 08:38:03 +02:00
Kenn Jacobsen e2746604a1 If MNTP is configured to pick max 1 item, convert the value into IPublishedContent instead of IEnumerable<IPublishedContent> 2019-05-19 08:37:33 +02:00
Bjarne Fyrstenborg 21e8a6faf4 Cleanup styles 2019-05-18 14:40:35 +02:00
Bjarne Fyrstenborg 65d8be45a1 Show box shadow when hover user avatar 2019-05-18 14:27:51 +02:00
Bjarne Fyrstenborg 00768fdfa7 Remove empty style 2019-05-18 13:33:43 +02:00
Bjarne Fyrstenborg ee3105009b Add back 100% height to make drawer positioned at bottom in overlays. 2019-05-18 13:33:16 +02:00
Ollie Philpott e9b5225676 Updated view source callback to execute correctly 2019-05-16 15:38:56 +01:00
Stephan 5dbc95a604 Fix StandaloneTests 2019-05-16 14:48:04 +02:00
Bjarke Berg 206f47bf52 Added missing nuget dependencies to the nuspec-file of UmbracoCms.Core 2019-05-16 14:24:09 +02:00
Stephan ea4f1a0f56 Merge branch v8/dev into v8/bugfix/805-migrate-from-7 2019-05-16 13:58:32 +02:00
Ollie Philpott c2046ad173 Fixed formatting 2019-05-16 10:53:03 +01:00
Ollie Philpott f080260396 Enabled tabbing for save options dropdown 2019-05-16 10:42:37 +01:00
Niels Lyngsø 9fac00d91b Fixed documentation mistake 2019-05-16 10:50:24 +02:00
Niels Lyngsø 4456a202e4 Merge remote-tracking branch 'origin/pr_5448' into v8/dev 2019-05-16 10:36:57 +02:00
Niels Lyngsø b503becaf3 Only show if we do have pasteable items. 2019-05-16 10:27:00 +02:00
Niels Lyngsø 5d1da3ada1 normalizing non-existing-culture to "invariant", cause the server sends invariant errors as invariant-culture. 2019-05-16 09:15:57 +02:00
Rasmus John Pedersen 2b84f96836 Don't render data-udi in RTE on frontend 2019-05-16 08:54:57 +02:00
Rasmus John Pedersen 28b669d3a3 Don't add dada-id and rel attributes on media in RTE 2019-05-16 08:48:47 +02:00
Stephan d5e63c0e62 Fix ContentNu cascade rules 2019-05-15 18:27:34 +02:00
Stephan 066a860c1d Fix more PreValues migration + better error reporting 2019-05-15 17:00:05 +02:00
Niels Lyngsø 225688facf fix comment 2019-05-15 16:23:23 +02:00
Niels Lyngsø 8bc28a4d81 clean up 2019-05-15 16:21:38 +02:00
Stephan c0f650436b Fix wording in DatabaseBuilder 2019-05-15 16:17:18 +02:00
Niels Lyngsø e7e74840bc indication if something is wrong in another variant than the current one. 2019-05-15 16:11:01 +02:00
Stephan d16002eb7c Fix KeyValueService to support re-running migrations 2019-05-15 15:34:37 +02:00
Stephan 1a54a24150 Fix DataType and PreValues migrations 2019-05-15 14:21:24 +02:00
Niels Lyngsø ceb1260509 current progress 2019-05-15 08:49:16 +02:00
Kenn Jacobsen 9706a0f76a Remove sort order and add item icons in content and media sort dialogs 2019-05-15 08:32:47 +02:00
Kenn Jacobsen 572dc11995 Disable the escape key in the "confirm discard" dialog 2019-05-14 18:43:57 +02:00
Kenn Jacobsen 12d79f2d08 Use umb-load-indicator when loading the RTE 2019-05-14 17:54:37 +02:00
Tiffany Prosser ef15c247c2 updated styles on focus state on section menu 2019-05-14 14:05:09 +01:00
Tiffany Prosser d255cd115b fixed sections.less focus states on top menu 2019-05-14 13:45:49 +01:00
Rasmus John Pedersen 19e2b1c24e Don't save media paths for images in RTE 2019-05-14 13:35:17 +02:00
Sebastiaan Janssen 1090d54763 Update to the latest caniuse-lite to fix the build
Fixes #5455
2019-05-14 13:32:28 +02:00
Ollie Philpott c0c9f4dfcc Changed publish submenu rendering to allow working hotkeys 2019-05-14 12:21:29 +01:00
Ollie Philpott 61ba78538a Added hotkeys for schedule and publish with descendants 2019-05-14 12:20:58 +01:00
Kenn Jacobsen cb76914a27 Don't load the breadcrumb twice when editing content 2019-05-14 09:09:18 +02:00
Matthew Wise 9b0d16f0ad Added aria label for validation messages on login 2019-05-11 17:31:37 +01:00
Kenn Jacobsen d9027e04f3 Hide "Create new" header in Nested Content create item dialog if all items are filtered out 2019-05-10 21:58:55 +02:00
Kenn Jacobsen 3377888219 Prompt to save changes after pasting items into Nested Content 2019-05-10 21:45:06 +02:00
Stephan 0b924f75d4 Fix migrations 2019-05-10 10:14:15 +02:00
Stephan 301b16a036 Fix user for v7 migration 2019-05-10 10:14:15 +02:00
Stephan 919fb79db9 Fix migrations 2019-05-10 10:14:15 +02:00
Stephan ba9aa49b91 Fix user for v7 migration 2019-05-10 10:14:14 +02:00
Stephan 7fed43cc68 Fix migration tooling 2019-05-10 10:14:14 +02:00
Stephan a1828fec51 Fix migrations 2019-05-10 10:14:09 +02:00
Shannon Deminick a43359e440 Merge pull request #5272 from umbraco/v8/spike/api-docs
Regenerating API docs
2019-05-10 13:53:37 +10:00
Shannon 8fce680430 removes unused line, updates gitignore 2019-05-10 13:07:06 +10:00
Shannon 35645672ae Ensures the reset flag is set for users when the legacy user membership provider setting allowManuallyChangingPassword is used 2019-05-10 02:00:45 +10:00
Shannon f952877d04 ensures that the reset flag is passed to the server when an admin is changing a members password 2019-05-10 01:48:11 +10:00
Warren Buckley 1815112ae7 Merge pull request #5353 from umbraco/v8/feature/ux-copy-paste-service-for-nested-content
V8: ClipboardService + implementation for nested content
2019-05-09 15:42:30 +01:00
Niels Lyngsø 66d12ddab2 fix spelling 2019-05-09 15:30:07 +02:00
Niels Lyngsø 2a592bfe8c remove comments 2019-05-09 15:30:01 +02:00
Shannon Deminick 3bf5160895 Merge pull request #5412 from umbraco/v8/bugfix/5131-remember-focus-for-search
Remember focus from before search opened + unbind shortcuts when backdrop is open
2019-05-09 23:08:41 +10:00
Niels Lyngsø 041fdc40e7 using localStorageService + applied further documentation 2019-05-09 15:02:22 +02:00
Niels Lyngsø 9c599868cc documentation for truncate fitler + only space between dots and words in wordwise mode. 2019-05-09 14:38:13 +02:00
Warren Buckley ac52960938 Merge pull request #5389 from umbraco/v8/feature/ui-improve-focus-state-of-umb-form-check
V8 improved focus state of umb-form-check inputs
2019-05-09 10:39:29 +01:00
Warren Buckley 3995c7c521 Merge pull request #5226 from umbraco/v8/bugfix/ui-sharpen-look-of-umb-tags
Accessibility and UI update of umb-tags
2019-05-09 10:13:49 +01:00
Arnold Visser 62a6a4ec92 5420: v8 Invited user keeps showing as "has not logged in yet" 2019-05-09 10:31:44 +02:00
Bjarne Fyrstenborg 943e050493 Fix noPasswordManager name for docs
Fix `noPasswordManager` for documentation.
https://our.umbraco.com/apidocs/v8/ui/#/api/umbraco.directives.directive:no-password-manager
2019-05-09 09:45:29 +02:00
leekelleher e958ca6f89 Fixed EntityController.ConvertToObjectType (for MemberType)
When the `entityType` was "MemberType", it would return the "MediaType" object-type.
2019-05-09 07:21:18 +01:00
Niels Lyngsø b952156027 corrected documentation 2019-05-08 15:10:46 +02:00
Niels Lyngsø 4c23d7fec9 removed properties, replaced with a getter method. 2019-05-08 15:09:01 +02:00
elitsa 3d80d511a4 Adding a parameter for enabling docfx into the script. 2019-05-08 14:27:44 +02:00
Ollie Philpott 0a752c8985 Updated hsts description from days to weeks 2019-05-08 11:57:03 +01:00
Ollie Philpott b6ad19ccad Corrected hsts max age description 2019-05-08 11:12:09 +01:00
Ollie Philpott bea1d35ebf Updated hsts urls 2019-05-08 11:11:47 +01:00
elitsa fc0f996500 Excluding no longer needed paths. 2019-05-08 12:11:06 +02:00
Ollie Philpott dae8802c50 Removed preload from descriptions 2019-05-08 11:11:01 +01:00
Ollie Philpott 58cdff1d71 Removed preload from HSTS header 2019-05-08 11:09:45 +01:00
Warren Buckley d69a978870 Fixes #4144 - Adds code back for allowing password changes without old password, that was removed in b029215933 2019-05-08 10:52:27 +01:00
Rasmus John Pedersen 16b88ca2ff Merge pull request #5419 from kjac/v8-fix-convert-media-urls-migration
V8: Fix duplicate alias exception in "convert media URLs" migration
2019-05-08 11:06:29 +02:00
Rasmus John Pedersen 6cf82669fb Update media urls migration to only fetch/update needed fields from db 2019-05-08 10:52:05 +02:00
Shannon 93bc2dc95b fixes some null checks 2019-05-08 17:48:54 +10:00
Shannon 1bcf40402c Merge branch 'v8/dev' into v8/bugfix/5190-invariant-property-validation
# Conflicts:
#	src/Umbraco.Web.UI.Client/package-lock.json
2019-05-08 16:53:21 +10:00
Shannon 7b101f0b9e Fixes duplicate error messages per key in ModelState 2019-05-08 16:52:25 +10:00
Shannon dad3f31f86 merged 2019-05-08 16:51:23 +10:00
Kenn Jacobsen 6baea68a7d Fix duplicate alias exception in "convert media URLs" migration 2019-05-08 07:53:11 +02:00
Stephan 7cd31ce970 Fix TourController during upgrade 2019-05-07 14:58:05 +02:00
Stephan 54a8796d51 Cleanup migration plan, supports 7.14.0 2019-05-07 14:58:05 +02:00
Ollie Philpott e091987f0f Added hash to user profile href and reordered attributes 2019-05-07 11:57:35 +01:00
Niels Lyngsø e906808a9b unbind keyboard shortcuts for editors when backdrop is active 2019-05-07 10:59:09 +02:00
Niels Lyngsø c4dbb90d10 remember focus from before opening search 2019-05-07 10:46:52 +02:00
Shannon ef24c2e2f2 Fixes a migration syntax 2019-05-07 18:33:15 +10:00
Niels Lyngsø 4b55f99493 rename copy.service to clipboard.service 2019-05-07 09:08:32 +02:00
Shannon Deminick 3332e93d4c Merge pull request #5375 from umbraco/v8/feature/5373-make-async-file-logging-possible-with-serilog
V8: Make async file logging possible with serilog
2019-05-07 17:06:01 +10:00
Shannon Deminick ed88ce8ae2 Merge pull request #5209 from umbraco/v8/feature/4940-save-media-reference-instead-of-media-url
Save media reference instead of media url
2019-05-07 16:33:30 +10:00
Bjarke Berg 96cd42b316 #5373 - Removed configuration options that we don't want to support. The other options can be archived using the original file sink. 2019-05-07 08:25:43 +02:00
Shannon 2e7aa11211 Adds TODO, removes the data-udi or data-id attribute from inserted links 2019-05-07 15:47:40 +10:00
Kenn Jacobsen f07b9da2ef Add line wrap to RTE code editor 2019-05-06 14:57:18 +02:00
Niels Lyngsø 4c1129e944 added missing documentation 2019-05-06 14:30:23 +02:00
Niels Lyngsø 74cbff5ee5 minor rename 2019-05-06 14:27:15 +02:00
Niels Lyngsø bfdeb6c987 requires alias to be parsed in copy method + minor renaming 2019-05-06 14:23:25 +02:00
Niels Lyngsø 07f4295810 rename copyService to clipboardService 2019-05-06 14:18:15 +02:00
Thomas Pralong 60a3cdc5ab Fix bug with multi url picker. Would display the wrong language tree in
the link picker dialog
2019-05-06 10:47:33 +02:00
Shannon Deminick 74be040298 Merge pull request #5390 from umbraco/v8/bugfix/ui-2fa-login-view
Add back the ability to use a custom 2-factor auth screen
2019-05-06 16:23:18 +10:00
Sebastiaan Janssen c03a4d978b Use int.MinValue instead of calculating from SuperUserId 2019-05-06 08:22:03 +02:00
Shannon 64eff0ba0f adds serilog xdt file 2019-05-06 15:51:28 +10:00
Kenn Jacobsen 03006d7698 Add empty state to groups search result 2019-05-05 19:00:36 +02:00
Kenn Jacobsen 8344372ae2 Fix the empty state for User search 2019-05-05 18:40:10 +02:00
Bjarke Berg d52f6b5810 Added support for changing the dates of the log files 2019-05-03 14:56:44 +02:00
Poornima Nayar 4fa07389dd Search shadow-layer should be on top of the user-dialog 2019-05-03 13:07:05 +01:00
Kenn Jacobsen a056c273de Support auto focus on ACE editor and use it for RTE code view 2019-05-03 11:17:15 +02:00
Bjarke Berg f81fd8f35f #5373 - Handle the serilog fallback pattern in log viewer. The fallback pattern is that a "_NNN" is added to the file name before the file extension, if the file is locked when serilog needs to write to it. 2019-05-03 09:41:26 +02:00
Kenn Jacobsen a6136c18bb Make sure that the color picker labels are always shown 2019-05-03 09:01:41 +02:00
Bjarke Berg 0222f929df #5373 - Changed the logging to be buffered 2019-05-03 08:39:01 +02:00
Shannon Deminick f34b2edb08 Merge pull request #5371 from umbraco/v8/bugfix/remove-old-doc
Removing a no longer relevant section
2019-05-03 13:16:28 +10:00
Sebastiaan Janssen e5839a89cd Fixes references to the "SuperUser" which used to have user Id 0, but now has userId -1 2019-05-02 14:56:12 +02:00
Sebastiaan Janssen 503d6d0265 Make the callback do something and cleanup code a little bit to limit it to only what we actually need 2019-05-02 14:44:33 +02:00
Bjarke Berg 6adec17b26 #5236 - Added options to set (and set default as) the log file is closed after each log event 2019-05-02 14:19:48 +02:00
Niels Lyngsø 3a5538730b only remove gray border when checked. 2019-05-02 13:32:16 +02:00
Niels Lyngsø fe3c1bc089 remove console.log 2019-05-02 13:25:19 +02:00
Niels Lyngsø 8031562ea2 better focus state 2019-05-02 10:54:59 +02:00
Sebastiaan Janssen 4881fb76e4 Merge pull request #5387 from umbraco/v8/bugfix/ui-umb-button-spacing
Added margin-left: 5px; to achieve the needed whitespace, couldn't figu…
2019-05-02 10:29:57 +02:00
Niels Lyngsø e9b06701cc Merge remote-tracking branch 'origin/v8/dev' into v8/feature/ux-copy-paste-service-for-nested-content 2019-05-02 10:10:48 +02:00
Niels Lyngsø 496d5d7791 added margin-left 5px; to achive the needed whitespace, could'nt figure out how it had been done before. 2019-05-02 10:01:16 +02:00
Marc Goodson b92fbffd7c Remove the Link to the out-of-date editors manual
Editors manual is for v7.1
2019-05-02 07:56:44 +02:00
Bjarke Berg 29b4da4dca #5373 - Disposes the logger on application end if disposable and implementes the CloseAndFlush in the dispose method of SerilogLogger 2019-05-01 15:50:43 +02:00
Elitsa Marinovska 6cd77df1ad Updating the base link 2019-05-01 15:30:58 +02:00
Elitsa Marinovska adf762bdf8 Integrate docs script with the main build script 2019-05-01 15:25:47 +02:00
Elitsa Marinovska 6b17248f64 Updating base link 2019-05-01 15:22:10 +02:00
Bjarke Berg a5684f867a #5373 - Added custom extension method to configure the file serilog file sink to be wrapped in the async sink 2019-05-01 15:15:29 +02:00
Niels Lyngsø e2730f2b66 use vm.login and vm.password, not parsing it. 2019-05-01 14:36:51 +02:00
Niels Lyngsø b4368666ca return to login-view on submit 2019-05-01 14:31:26 +02:00
Niels Lyngsø b60fe9cc0a use external view 2019-05-01 13:56:34 +02:00
Stephan 33b857d2c6 Merge branch 'v8/dev' into v8/feature/5170-IPublishedContent 2019-05-01 13:53:13 +02:00
Niels Lyngsø 3aabe424a8 example of 2fa login view 2019-05-01 13:44:18 +02:00
Elitsa Marinovska 9c667414bc Removing a no longer relevant section 2019-05-01 13:36:34 +02:00
Niels Lyngsø 5d5fa3fac8 changed localstorage key to umbCopyService 2019-05-01 10:14:33 +02:00
Niels Lyngsø d23f25beba finishing requestDeleteNode 2019-05-01 10:02:43 +02:00
Niels Lyngsø c0ad64d259 Merge remote-tracking branch 'origin/v8/dev' into v8/feature/ux-copy-paste-service-for-nested-content 2019-05-01 09:57:59 +02:00
Niels Lyngsø 6802716cf1 use requestDeleteNode 2019-05-01 09:57:11 +02:00
Niels Lyngsø 23a27c3519 adding paste feature + cleaning css 2019-05-01 09:40:38 +02:00
Rasmus John Pedersen 0e636b4ce1 Set href to # if url can't be resolved 2019-05-01 09:20:40 +02:00
Kenn Jacobsen 2bdbd86787 Default nested content item names to the content type name if there are multiple content item types to choose from 2019-05-01 09:10:09 +02:00
Rasmus John Pedersen f00a230d12 Merge branch 'v8/dev' into v8/feature/4940-save-media-reference-instead-of-media-url 2019-05-01 08:55:55 +02:00
Shannon Deminick 009e373178 Merge pull request #5354 from umbraco/v8/feature/5350-fluent-type-collection
Make TypeCollectionBuilderBase fluent
2019-05-01 16:45:00 +10:00
Shannon Deminick 3c6d3280d8 Merge pull request #5266 from umbraco/v8/bugfix/5187-mapper-issue
Fix mapper concurrency issue
2019-05-01 15:25:54 +10:00
Callum Whyte 43d84a37a3 Pointing parent doctype links to correct edit pages in doctype builder
Links to parent doctype in doctype builder go to the wrong place
2019-04-30 22:20:30 +02:00
Kenn Jacobsen 3d86b08e31 Send delete notifications when content is moved to trash 2019-04-30 22:19:38 +02:00
shane Prendergast 264958f097 #5277 Adding correct button element,styling to remove default styles 2019-04-30 22:18:59 +02:00
Kenn Jacobsen 99dedac375 Vertically center the button carets in the grid RTE 2019-04-30 22:17:29 +02:00
Kenn Jacobsen 078a7d5679 Fix the active state for nested content in nested content 2019-04-30 22:16:30 +02:00
matthew-hair 5cef71e4e6 fixed typos in ClearLoginSessions queries 2019-04-30 22:11:07 +02:00
matthew-hair fe7b114083 fix for umbracoUserLogin not pruned
Signed-off-by: matthew-hair <matthew.hair@sedgwick.gov>
2019-04-30 22:11:07 +02:00
Kenn Jacobsen 1df2cf5935 Fix info button icon color 2019-04-30 22:08:09 +02:00
Kenn Jacobsen 86c56ae844 Make sure to use the specified content template name when creating content templates from content 2019-04-30 22:05:00 +02:00
Sebastiaan Janssen 16322bed31 Merge pull request #4784 from kjac/v8-fix-content-template-mixed-variance
V8: Handle mixed variance when creating content templates from content
2019-04-30 22:04:21 +02:00
Sebastiaan Janssen 044decc0dc v8: Fix table cells collapsing when sorting doctypes in Nested Content (#4832) 2019-04-30 22:00:35 +02:00
Sebastiaan Janssen b9482fc867 Merge branch 'v8/dev' into pr_4832 2019-04-30 21:59:50 +02:00
Kenn Jacobsen 4d8e5e1416 Make sure to hide the member types when creating a new member 2019-04-30 21:56:00 +02:00
Samuel Butler 958c8b1214 Umbraco installer double-encodes connection string password fix (#4820) 2019-04-30 21:54:35 +02:00
Kenn Jacobsen d04b967fe6 V8: Hide "umbContent" app if the content has no properties (#4840) 2019-04-30 21:34:00 +02:00
Kenn Jacobsen 6bfcc7bb34 Don't "Create matching template" before the content type is created 2019-04-30 21:25:46 +02:00
Kenn Jacobsen 6274a08a4f Don't allow opening an uncreated template 2019-04-30 21:24:52 +02:00
Kenn Jacobsen 4ebfd8ca37 Remove accordion group behavior from media editing 2019-04-30 21:23:40 +02:00
Kenn Jacobsen 1370894b38 Remove accordion group behavior from member editing 2019-04-30 21:23:16 +02:00
Kenn Jacobsen c5f1d2d885 Use standard pickers in MNTP config 2019-04-30 21:22:14 +02:00
Kenn Jacobsen 4df63c7f04 V8: Save the slider default values on the model if no value is set (#4931) 2019-04-30 21:19:34 +02:00
Marc Goodson a822e18719 Patch/update published content request comments (#4945) 2019-04-30 21:13:59 +02:00
Matt Darby 1605b6f909 Adjust naming in Nested Content configuration to fit ElementType (#4946) 2019-04-30 21:08:49 +02:00
Kenn Jacobsen 5e8d73cd20 V8: Add tooltip/title to unselectable items in MNTP (#4964) 2019-04-30 20:57:28 +02:00
Bjarne Fyrstenborg f05915ef08 v8: Fix package download (#4968) 2019-04-30 20:47:37 +02:00
Bjarne Fyrstenborg 5fd423dbb6 Increase z-index of .umb-editor-footer so dropup is above grid editor hover overlay and doctype inherited label. 2019-04-30 20:45:30 +02:00
Kenn Jacobsen 1758d0cd1a Fix glitch in umb-checkbox background 2019-04-30 20:43:15 +02:00
Kenn Jacobsen d698aa56d0 Use umb-checkbox in the delete mediatype dialog 2019-04-30 20:41:07 +02:00
Kenn Jacobsen 0478a37b00 Use umb-checkbox in the delete datatype dialog 2019-04-30 20:40:20 +02:00
Kenn Jacobsen 6def4d6248 Use umb-checkbox in the delete membertype dialog 2019-04-30 20:39:38 +02:00
Kenn Jacobsen 2835da8e96 Use umb-checkbox for "open in new window" in the link picker 2019-04-30 20:37:45 +02:00
Sebastiaan Janssen f895900ec5 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
2019-04-30 20:36:45 +02:00
Kenn Jacobsen 21e91ac4e1 RTE: Don't assume "mailto:" protocol in links with "@" 2019-04-30 20:34:26 +02:00
Anders Bjerner ecc7a3b96e Added parameters to the docs for specifying an already selected icon 2019-04-30 20:31:47 +02:00
Kenn Jacobsen 9598d2c2e6 Make header name input look ok when disabled (reverts input height adjustment from ff8f9083) 2019-04-30 20:30:16 +02:00
Andy Butland 966bfafe22 Fixed casing of editorService open method inline documentation for the size parameter 2019-04-30 20:25:29 +02:00
Peter Duncanson f2a5e5da87 Added in new browser targets for Babel config
Fixes #4894
2019-04-30 20:24:20 +02:00
Kenn Jacobsen 5eb0f6f92f V8: Show info message if Nested Content is configured without content types (#5342) 2019-04-30 16:45:23 +02:00
Sebastiaan Janssen f2e01d8f65 Merge pull request #5343 from kjac/v8-fix-mntp-bounds-validation
V8: Fix the MNTP min/max items validation
2019-04-30 16:15:34 +02:00
Sebastiaan Janssen d328a53590 Merge pull request #5355 from kjac/v8-fix-media-library-open-file
V8: Make it possible to open/view files in the media library
2019-04-30 16:06:17 +02:00
Niels Lyngsø 27d5b258df truncate + cache header for create new + different title for overlay depending on situation 2019-04-30 15:53:38 +02:00
Niels Lyngsø b271c77d97 fixing size to only work for target overlay 2019-04-30 15:52:37 +02:00
Niels Lyngsø 906c7a4ccd added angularJS truncate filter 2019-04-30 15:52:00 +02:00
Niels Lyngsø 5942bce7da control size of umb-overlay 2019-04-30 15:23:56 +02:00
Niels Lyngsø ab2f0c3a1c go to four lines if more than 6 items in Item-picker 2019-04-30 15:00:52 +02:00
Niels Lyngsø 85905f7a77 fix variant error for collection tabs 2019-04-30 15:00:31 +02:00
Niels Lyngsø 85456bbb9b correct lang file 2019-04-30 14:59:34 +02:00
Niels Lyngsø 8e925c930b sort items by dragging the item header 2019-04-30 14:05:20 +02:00
Niels Lyngsø 18c7680baf remove unused CSS 2019-04-30 13:53:06 +02:00
Niels Lyngsø 77407a9446 correcting text 2019-04-30 13:39:17 +02:00
Niels Lyngsø 62e72a54b7 Merge commit 'a7ebf9bed3f78c68f5da8a67d27a8ffa0e961d3b' into v8/feature/ux-copy-paste-service-for-nested-content 2019-04-30 13:34:56 +02:00
Niels Lyngsø 5d7aa4bcf5 remove edit and paste button. 2019-04-30 13:34:35 +02:00
Niels Lyngsø 90912a4b2a restyled umb-overlay + added paste features in nested-content create-overlay 2019-04-30 12:49:37 +02:00
Niels Lyngsø 01116e21f4 finished copy service 2019-04-30 12:48:44 +02:00
Claus a7ebf9bed3 Merge pull request #5318 from umbraco/v8/bugfix/5075-rte-update-model
update RTE model on changing code or media
2019-04-30 10:31:35 +02:00
Claus a01efcb59f fix for vs2019 release build tools. 2019-04-29 13:59:16 +02:00
Kenn Jacobsen adc7201e86 Allow localizing content types and properties using language files 2019-04-29 08:24:34 +02:00
Elitsa Marinovska 880e86820e Updating with correct directory refferences 2019-04-28 21:15:59 +02:00
Elitsa Marinovska 7e064cee83 Optimizing scripts 2019-04-28 21:14:32 +02:00
Kenn Jacobsen cc7bf4cef5 Make it possible to open/view files in the media library 2019-04-27 22:28:00 +02:00
Stephan 70203512fb Make TypeCollectionBuilderBase fluent 2019-04-27 09:07:49 +02:00
Niels Lyngsø 48ceb0d41d working prototype 2019-04-26 15:15:27 +02:00
Stephan 173df80e3d Fix recycle bin moves 2019-04-26 15:01:16 +02:00
Bjarne Fyrstenborg 9b62269bde v8: Update image cropper slider (#4487) 2019-04-26 14:12:57 +02:00
Niels Lyngsø 4d3154c7fa prototype, not working correctly. 2019-04-26 13:34:38 +02:00
Niels Lyngsø e139fa6719 first version of copyService 2019-04-26 13:22:00 +02:00
Warren Buckley 09617d9b50 Merge pull request #5337 from umbraco/v8/feature/ui-prettier-focus-outlines
Created umb-outline to make it easy to apply pretty focus outline for elements.
2019-04-26 10:29:22 +01:00
Warren Buckley 00e33fb156 Merge pull request #5338 from umbraco/v8/feature/ui-app-header-action-focus-outline
V8: app header action focus outline
2019-04-26 10:26:14 +01:00
Warren Buckley dc27bd148a Merge pull request #5340 from umbraco/v8/feature/ux-disable-tabbing-state-with-a-mouse-click
Disable tabbing state if user clicks
2019-04-26 10:19:24 +01:00
Warren Buckley 6dc343f9d8 Merge pull request #5339 from umbraco/v8/feature/ui-hover-and-focus-outline-on-umb-checkbox-and-umb-radio
focus outline + hover states for umb-checkbox and umb-radio
2019-04-26 10:18:33 +01:00
Pete Duncanson 2470a2737f Added gulp-angular-embed-template (#4871)
Fixed #4845 by embedded the angularjs templates for directives in the directives, cuts down on network traffic and increases speed to render
2019-04-26 11:06:00 +02:00
Warren Buckley 1753ddbfc4 Merge pull request #5330 from umbraco/v8/feature/ui-umb-button-nicer-outline
V8: prettier outline for buttons, and only shown when tabbing is active.
2019-04-26 10:00:14 +01:00
Warren Buckley 4230ad27f3 Merge pull request #5329 from umbraco/v8/feature/ui-nested-content-add-content-button
V8: nested content consistent "add content"-button, and other adjustments.
2019-04-26 09:56:44 +01:00
Warren Buckley 9bca5e0347 Merge pull request #5332 from umbraco/v8/feature/ui-prettier-outline-on-media-picker
V8: prettier outline on media picker
2019-04-26 09:31:21 +01:00
Bjarne Fyrstenborg f82dff597b v8: Imagepicker prevalue and grid setting/styles as infinite editor (#4971) 2019-04-25 13:31:29 +02:00
Stephan 56d7755487 Merge branch 'v8/dev' into v8/spike/api-docs 2019-04-25 09:05:21 +02:00
Kenn Jacobsen 82f966ca24 Fix MNTP bounds min/max items validation 2019-04-24 22:09:00 +02:00
Sebastiaan Janssen 2179e85638 Merge pull request #5336 from umbraco/v8/feature/snupkg
Create new Nuget Symbol packags - snupkg
2019-04-24 16:10:33 +02:00
Niels Lyngsø defbb8e821 disables the tabbing-state if the user performes a mouse-click that reaches the window. 2019-04-24 15:56:37 +02:00
Niels Lyngsø f7dce756a7 focus outline + hover states for umb-checkbox and umb-radio 2019-04-24 15:50:57 +02:00
Stephan bb0331e9cc Move IPublishedContent.Url() to ext method 2019-04-24 14:25:41 +02:00
Niels Lyngsø 30385789c8 only show focus-outline on sections if tabbing is active 2019-04-24 14:15:24 +02:00
Niels Lyngsø 8bac388f73 prettier focus outline for app-header-actions 2019-04-24 14:15:02 +02:00
Niels Lyngsø 53c7df36b0 umb-outline to make it easy to apply pretty focus outline for elements. 2019-04-24 13:55:31 +02:00
Sebastiaan Janssen 5f5b21b43e Make Nested Content work with hidden item icons (#5324) 2019-04-24 13:37:48 +02:00
Sebastiaan Janssen 64f7cc1c29 General clean up, use === and double quotes everywhere 2019-04-24 13:35:24 +02:00
Sebastiaan Janssen c80187938b Make sure to parse as boolean in case old models still use "1" or the string "true" 2019-04-24 13:34:48 +02:00
Sebastiaan Janssen bb4be11a0b Merge branch 'v8/dev' into pr_5324 2019-04-24 13:32:29 +02:00
Warren Buckley 103c92bc69 Update powershell to use the snupkg format for symbol package to be hosted on nuget.org symbol server
Advisory from Nuget team is to no longer include the C# .cs files in the src folder of a nuget package
2019-04-24 12:31:05 +01:00
Warren Buckley 950849a4c6 Update jQuery to latest 3.4.0 (#5331)
Seems good
2019-04-24 13:21:24 +02:00
Elitsa Marinovska da125405ea Merge pull request #4722 from kjac/v8-fix-media-picker-create-folder
V8: Return folder creation to non-active state in media picker
2019-04-24 12:35:23 +02:00
Niels Lyngsø d05e188d00 prettier outline on media picker 2019-04-24 12:03:43 +02:00
Stephan 25b8c8a565 Refactor getting Urls 2019-04-24 11:53:35 +02:00
elitsa 4cf55a8837 Getting the current user start nodes 2019-04-24 11:52:38 +02:00
Niels Lyngsø 5436478dfb prettier outline for buttons, and only shown when tabbing is active. 2019-04-24 11:37:03 +02:00
Warren Buckley 9333426985 Merge pull request #5304 from MMasey/v8/feature/tab-accessibility-improvements
V8: Login form accessibility improvements and form input tabbed focus styles
2019-04-24 10:25:13 +01:00
Warren Buckley c21b740c71 Merge pull request #5320 from shane-sigma/temp-5277-4
Re-adding outline to the umb-button__button for focus states
2019-04-24 10:00:44 +01:00
Niels Lyngsø 9e03103cbb using new ligther gray for background of nested content 2019-04-24 10:34:57 +02:00
Niels Lyngsø e889ec1fa9 added new lighter gray 2019-04-24 10:34:41 +02:00
Niels Lyngsø dc66807d13 changed the look of nested content 2019-04-24 10:31:30 +02:00
Warren Buckley fe57ef329b Revert the change to the gitignore - no web.config should be in ui.client folder anyway 2019-04-24 09:26:33 +01:00
elitsa 5ce226104b Merge branch 'v8/dev' into v8-fix-media-picker-create-folder 2019-04-24 09:41:48 +02:00
Stephan eb390f8d80 Fix merge 2019-04-24 09:32:49 +02:00
Niels Lyngsø 43586e6bb7 first step for changing the add-content button 2019-04-24 09:27:47 +02:00
Stephan be93773399 Merge branch v8/dev into v8/feature/5170-IPublishedContent 2019-04-24 08:51:25 +02:00
Kenn Jacobsen fecf561279 Make Nested Content work with hidden item icons 2019-04-23 22:57:10 +02:00
Kenn Jacobsen 61cc22dccf V8: Send notifications for changes in permissions (#5287) 2019-04-23 22:00:35 +02:00
Kenn Jacobsen e7f4f61f93 V8: Send notifications for changes in public access (#5288)
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
2019-04-23 21:55:42 +02:00
Kenn Jacobsen a6d8b48ab4 V8: Remove obsolete umb-permission styling (#5308) 2019-04-23 21:50:28 +02:00
Kenn Jacobsen 7cc9747b2f V8: Allow content to be shown before list view (#5074) 2019-04-23 21:31:48 +02:00
Kenn Jacobsen 72d588287f V8: Add option to create nonclustered primary keys using ICreateBuilder (#5261) 2019-04-23 21:03:50 +02:00
Sebastiaan Janssen 700fe9b787 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
#	src/Umbraco.Web.UI.Client/src/common/security/securityinterceptor.js
2019-04-23 20:37:38 +02:00
Kenn Jacobsen d5858fe1be Enable manual sorting on contentTypeAlias 2019-04-23 20:28:17 +02:00
Kenn Jacobsen 6dba751167 Fix "sort by document type" in listviews 2019-04-23 20:28:17 +02:00
Kenn Jacobsen b367ae6c80 Fix "sort by document type" in media listviews 2019-04-23 20:27:25 +02:00
Kenn Jacobsen 07684bb1d6 Fix "sort by document type" in content listviews 2019-04-23 20:26:55 +02:00
Dennis Flæng 7eadcf66ed added submit button for row and layoutconfig (#5136) 2019-04-23 20:17:38 +02:00
Stephan 977bf91409 Merge branch 'v8/feature/4942-media-url-provider' into v8/dev 2019-04-23 19:32:30 +02:00
Kenn Jacobsen fab025bf66 V8: Don't use floats in the slider config as it only supports integers (#4821) 2019-04-23 17:27:34 +02:00
Ondrej Pialek 8d382fb9b7 Backoffice session timeout on custom-URL backoffices leads to high browser CPU and self-inflicted backend DDoS (#5210) 2019-04-23 16:37:37 +02:00
Stephan c19be0c64e Misc cleanup 2019-04-23 16:23:06 +02:00
Kenn Jacobsen 67e046e477 V8: Allow nested content without blueprints (#4777)
* Don't assume there is at least one NC blueprint
* NC disabled icon styling (hover pointer type)
* Allow and handle NC configs without blueprints
2019-04-23 16:14:26 +02:00
Kenn Jacobsen aba409600b V8: Improve notifications save button style and interaction (#5097) 2019-04-23 15:59:57 +02:00
Kenn Jacobsen fdfcb75a71 Make sure datatype configs are validated in infinite editing (#4776) 2019-04-23 15:41:45 +02:00
shane Prendergast ac44f800a6 Re-adding outline to the umb-button__button for focus states 2019-04-23 13:56:48 +01:00
Kenn Jacobsen 7eddc22bba V8: Send notifications for move, restore, copy and delete actions (#5255) 2019-04-23 14:24:45 +02:00
Kenn Jacobsen 9280c74062 V8: Use umb-checkbox for RTE configuration (#5119) 2019-04-23 14:19:08 +02:00
Sebastiaan Janssen 90cbdbf2cd Merge pull request #5316 from umbraco/v8/bugfix/5315-paging-error-nucache
Fix paging error in NuCache
2019-04-23 14:05:56 +02:00
Sebastiaan Janssen fdc9adfe83 Merge pull request #5278 from kjac/v8-fix-macro-parameter-configuration
V8: Fix "multiple" macro parameter property editor configuration
2019-04-23 14:02:45 +02:00
Stephan e6f6c498a5 Merge branch v8/dev into v8/feature/4942-media-url-provider 2019-04-23 13:58:17 +02:00
Kenn Jacobsen 5472297245 Add busy state to <umb-confirm/> OK button 2019-04-23 13:45:42 +02:00
Niels Lyngsø 71bea2bc25 update RTE model on changing code or media 2019-04-23 13:43:36 +02:00
Stephan d9653026de Merge branch 'v8/bugfix/4963-fixing-models-and-member-repo' into v8/dev 2019-04-23 13:41:36 +02:00
Stephan 3185f7ae97 Fix member type builtin properties handling 2019-04-23 13:07:57 +02:00
Kenn Jacobsen 417b270f59 V8: Allow sorting manually by name in listviews (#5252) 2019-04-23 13:05:04 +02:00
Stephan 509b1151a2 Fix tests 2019-04-23 12:09:22 +02:00
Stephan 0cf857e8bc Cleanup 2019-04-23 12:09:13 +02:00
Stephan 50f6779c17 Merge branch v8/dev into v8/bugfix/4963-fixing-models-and-member-repo 2019-04-23 11:31:47 +02:00
Stephan 5d0010a993 Fix paging error in NuCache 2019-04-23 11:11:53 +02:00
Stephan f47cfe155a Merge branch 'v8/dev' of https://github.com/umbraco/Umbraco-CMS into v8/dev 2019-04-23 11:02:15 +02:00
Stephan 6c08828887 Merge branch 'temp8-4682-ui-selection-of-users-and-user-groups' into v8/dev 2019-04-23 11:01:50 +02:00
Niels Lyngsø 74b4689059 corrected spacing 2019-04-23 10:59:53 +02:00
Stephan 2f1687cd4f Merge branch 'v8/dev' into temp8-4682-ui-selection-of-users-and-user-groups 2019-04-23 10:54:07 +02:00
Stephan 6f0baa4a8e Merge branch v8/dev into v8/feature/5170-IPublishedContent 2019-04-23 10:47:40 +02:00
Stephan 9443599382 Merge pull request #5307 from kjac/v8-fix-search-result-mapping
V8: Fix mapping for search results
2019-04-23 10:43:12 +02:00
Stephan a56f3b23d1 Cleanup PublishedMember 2019-04-23 08:29:43 +02:00
Stephan 4feb766cc6 Fix IPublishedContent.Children() and NuCache 2019-04-23 08:29:43 +02:00
Stephan 55d4457c70 UmbracoContext: don't use obsolete properties 2019-04-23 08:29:43 +02:00
Stephan 05c85bbce5 NuCache: children as linked lists 2019-04-23 08:28:26 +02:00
Stephan 2270188668 Refactor IPublishedContent.Children() 2019-04-23 08:28:23 +02:00
Stephan 41e14a62c0 Refactor IPublishedContent.Parent() 2019-04-23 08:27:50 +02:00
Stephan a996d46b6f Refactor IPublishedContent.GetCultureFromDomains() 2019-04-23 08:27:50 +02:00
Stephan e062ea8d31 Refactor IPublishedContent.CultureDate(), .Cultures 2019-04-23 08:27:50 +02:00
Stephan 7cf13cbf94 Fix IPublishedContent.Name(), .Segment() for invariant 2019-04-23 08:27:49 +02:00
Stephan afda7a5661 Refactor IPublishedContent.ItemType 2019-04-23 08:27:49 +02:00
Stephan 11ef00c63d Refactor IPublishedContent.Url() 2019-04-23 08:27:49 +02:00
Stephan 2b54cc50ab Refactor IPublishedContent.UrlSegment() 2019-04-23 08:27:49 +02:00
Stephan 99319e0b49 UmbracoContext: rename properties 2019-04-23 08:27:49 +02:00
Stephan f99302ac63 Cleanup IPublishedContent/PropertyType 2019-04-23 08:27:49 +02:00
Stephan 890d7d8ce3 Refactor IPublishedContent.Name() 2019-04-23 08:27:48 +02:00
Stephan f039b00a44 Introduce IPublishedPropertyType 2019-04-23 08:27:48 +02:00
Stephan 34ad8dfb8d Introduce IPublishedContentType 2019-04-23 08:27:40 +02:00
Sebastiaan Janssen 160d140167 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Web/Strategies/NotificationsHandler.cs
2019-04-22 13:22:15 +02:00
Sebastiaan Janssen db7ae9a7e2 V7: Send notifications for changes in permissions (#5306)
V7: Send notifications for changes in permissions
2019-04-22 13:21:03 +02:00
Sebastiaan Janssen 2e6f032222 Merge branch 'v7/dev' into pr_5306
# Conflicts:
#	src/Umbraco.Web/Strategies/NotificationsHandler.cs
2019-04-22 13:20:15 +02:00
Sebastiaan Janssen 9fc33d71e4 V7: Send notifications when an item is copied (#5302)
V7: Send notifications when an item is copied
2019-04-22 13:15:44 +02:00
Sebastiaan Janssen 916cd999d5 Merge branch 'v7/dev' into pr_5302
# Conflicts:
#	src/Umbraco.Web/Strategies/NotificationsHandler.cs
2019-04-22 13:14:32 +02:00
Sebastiaan Janssen a75506d60b V7: Send notifications when an item is moved or restored (#5303) 2019-04-22 13:04:14 +02:00
Sebastiaan Janssen 6631a50a44 Merge branch 'v7/dev' into pr_5303
# Conflicts:
#	src/Umbraco.Web/Strategies/NotificationsHandler.cs
2019-04-22 13:03:00 +02:00
Sebastiaan Janssen 9611791f31 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Web/Strategies/NotificationsHandler.cs
2019-04-22 12:52:25 +02:00
Kenn Jacobsen c35a3fa702 Send notifications for rollbacks 2019-04-22 12:51:37 +02:00
Kenn Jacobsen 153ac58d2a Send notifications for rollbacks 2019-04-22 12:50:44 +02:00
Kenn Jacobsen a969ff6e10 Make sure Nested Content scaffolds are listed in defined sort order 2019-04-22 12:34:19 +02:00
Kenn Jacobsen c7b4d1b206 Always show file names for media/files without thumbnail 2019-04-22 12:31:01 +02:00
Sebastiaan Janssen aaf8ba0211 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Core/IO/MediaFileSystem.cs
2019-04-22 12:28:33 +02:00
Kenn Jacobsen 072c014055 Read image dimensions via GDI if EXIF fails with an exception 2019-04-22 12:21:55 +02:00
Kenn Jacobsen 655befde42 Read image dimensions via GDI if EXIF fails with an exception 2019-04-22 12:19:36 +02:00
Sebastiaan Janssen 344b7731ce Fix JS unit tests 2019-04-22 12:10:53 +02:00
Sebastiaan Janssen 687cc4630f Fix missing semicolon 2019-04-22 10:47:00 +02:00
Kenn Jacobsen e180bb6722 V8: Fix broken listview pagination when using the back link (#5149) 2019-04-22 10:44:29 +02:00
Kenn Jacobsen 32104fff41 V8: Add back button to listviews for members (#5158)
* Add back button to edit member

* Don't set illegal location (with querystring params)
2019-04-22 10:21:38 +02:00
Kenn Jacobsen 8b6fbee47e V8: Add back button to listviews in media (#5116) 2019-04-22 10:00:51 +02:00
Kenn Jacobsen 59df7f1399 Ensure consistency in the way panels are spaced 2019-04-22 09:57:44 +02:00
Kenn Jacobsen f55e05da79 Don't explode when passing bad parameters to log resource 2019-04-22 09:55:38 +02:00
Kenn Jacobsen 2a43170915 V8: Add toggle group (#5096)
V8: Add toggle group
2019-04-22 09:16:41 +02:00
Kenn Jacobsen 717f8c9944 Fix mapping for search results 2019-04-21 21:00:34 +02:00
Kenn Jacobsen ff4fe2cd79 Send notifications for changes in permissions 2019-04-21 13:22:49 +02:00
Mike 233f00e2d4 improvment: update tabbed focus colour to use blueExtraDark 2019-04-20 20:37:22 +01:00
Mike 18a2871419 feat: return focus to password field on password reveal toggle 2019-04-20 20:20:30 +01:00
Mike 8c954ef433 feat: add clear tabbed focus state to form inputs 2019-04-20 20:15:33 +01:00
Mike b232d3c694 feat: add a 'tabbing-active' class when a person starts tabbing 2019-04-20 20:05:18 +01:00
Kenn Jacobsen d2f727a1ba Send notifications when an item is moved or restored 2019-04-20 20:40:52 +02:00
Kenn Jacobsen 38bb98b099 Send notifications when an item is copied 2019-04-20 20:31:36 +02:00
Kenn Jacobsen d87464b8e4 Fix the style of the public access confirmation button 2019-04-18 13:48:54 +02:00
Sebastiaan Janssen aba9c89ff4 Merge pull request #5090 from deMD/temp8-5069-getTreePackageFolder-use-localeCompare
V8 Plugins: Changed treeService.getTreePackageFolder to use localeCompare
2019-04-18 12:42:17 +02:00
Sebastiaan Janssen 74f98d51cd Compare to 0 to get the desired result 2019-04-18 12:37:52 +02:00
Sebastiaan Janssen 1e475bfc6f Merge branch 'v8/dev' into pr_5090 2019-04-18 12:11:24 +02:00
Kenn Jacobsen e7f3f8da68 Remove unused translations from area"editcontenttype" 2019-04-18 12:05:17 +02:00
Kenn Jacobsen a3af3d6d2b Use "group" instead of "tab" on Nested Content config 2019-04-18 11:47:36 +02:00
Kenn Jacobsen 29a542a0dd Support stylesheets in subfolders in the RTE 2019-04-18 11:38:34 +02:00
Kenn Jacobsen 73e4c6022d Update the title of the macro view picker 2019-04-18 09:38:20 +02:00
Sebastiaan Janssen eb10d71bff Don't just Parse, the value might be null, have to use TryParse 2019-04-17 16:47:23 +02:00
Sebastiaan Janssen 9cf69d53c2 Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Core/Services/IMediaService.cs
#	src/Umbraco.Core/Services/MediaService.cs
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
2019-04-17 16:39:10 +02:00
Kenn Jacobsen 2a930e5a66 Log the ID of the current user when emptying the media recycle bin 2019-04-17 16:01:18 +02:00
Kenn Jacobsen 2d32863fc9 Audit current user when moving media + clean up a few audit related things 2019-04-17 16:00:21 +02:00
Sebastiaan Janssen 2c32fabd36 Merge pull request #5054 from kjac/fix-content-empty-trash-audit-user
V7: Log correct user ID when emptying the content recycle bin
2019-04-17 15:58:43 +02:00
Kenn Jacobsen a48d97e631 Create explicit overloads for UrlAbsolute 2019-04-17 15:38:47 +02:00
Kenn Jacobsen 4107f47588 Add optional culture parameter to UrlAbsolute extension 2019-04-17 15:38:47 +02:00
Kenn Jacobsen bdac2a4a41 Use umb-checkbox for user filters 2019-04-17 15:35:57 +02:00
Stephan 791581f502 Use ConcurrentDictionary specific methods 2019-04-17 14:52:38 +02:00
Sebastiaan Janssen 1941c0dd1c Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Core/UriExtensions.cs
#	src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js
#	src/Umbraco.Web.UI.Client/src/common/services/search.service.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contentpicker/contentpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
#	src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/media.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/multiurlpicker/multiurlpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/relatedlinks/relatedlinks.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.prevalues.html
#	src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
#	src/Umbraco.Web/PropertyEditors/ContentPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiNodeTreePicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiUrlPickerPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RelatedLinks2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RichTextPreValueEditor.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedCache.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedContentCache.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedMediaCache.cs
#	src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs
#	src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/Trees/TreeControllerBase.cs
#	src/Umbraco.Web/Trees/TreeQueryStringParameters.cs
#	src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
#	src/Umbraco.Web/WebApi/Filters/FilterAllowedOutgoingMediaAttribute.cs
#	src/Umbraco.Web/umbraco.presentation/content.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/preview/PreviewContent.cs
2019-04-17 14:52:35 +02:00
Sebastiaan Janssen 650ef39780 Merge branch 'v8/dev' into v8/merge/5061-from-v7 2019-04-17 14:44:10 +02:00
Sebastiaan Janssen 7db0440b5c Merge branch 'v7/dev' into v8/dev
# Conflicts:
#	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Core/UriExtensions.cs
#	src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js
#	src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js
#	src/Umbraco.Web.UI.Client/src/common/services/search.service.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contentpicker/contentpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
#	src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/media.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/editors/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/multiurlpicker/multiurlpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/relatedlinks/relatedlinks.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.prevalues.html
#	src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Editors/MediaController.cs
#	src/Umbraco.Web/PropertyEditors/ContentPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiNodeTreePicker2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultiUrlPickerPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RelatedLinks2PropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/RichTextPreValueEditor.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedCache.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedContentCache.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedMediaCache.cs
#	src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs
#	src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/Trees/TreeControllerBase.cs
#	src/Umbraco.Web/Trees/TreeQueryStringParameters.cs
#	src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
#	src/Umbraco.Web/WebApi/Filters/FilterAllowedOutgoingMediaAttribute.cs
#	src/Umbraco.Web/umbraco.presentation/content.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/preview/PreviewContent.cs
2019-04-17 14:35:59 +02:00
Shannon Deminick 1ad19edfbd Merge pull request #5262 from kjac/v8-fix-listview-annotation-order
V8: Tree node annotation "pending changes" should take precendence over "is listview"
2019-04-17 15:25:12 +10:00
Shannon Deminick 637cf6a608 Merge pull request #5276 from 0Neji/temp-5273
Make DropDownFlexibleConfiguration class public
2019-04-17 15:22:02 +10:00
Rasmus John Pedersen a3ee718824 Add media url provider tests 2019-04-16 15:36:21 +02:00
Rasmus John Pedersen d0701ae34e Add media url provider support 2019-04-16 15:36:21 +02:00
Kenn Jacobsen 3668b68155 Merge with v8/dev 2019-04-16 11:48:20 +02:00
Kenn Jacobsen e8e29c9390 Merge branch 'v8/dev' into v8-fix-macro-parameter-configuration 2019-04-16 11:25:48 +02:00
Kenn Jacobsen 0787824fba Pass default configuration to configuration editor for macro parameter editors 2019-04-16 11:23:22 +02:00
Ben Palmer 40d2898fb8 Make DropDownFlexibleConfiguration class public to allow configuration to be set when creating a new data type 2019-04-16 09:21:24 +01:00
Kenn Jacobsen 2c436d5ae0 Apply nicer log message wrapping 2019-04-16 09:39:54 +02:00
Rasmus John Pedersen 27b4329c1e Rename udiHelper to udiParser 2019-04-16 08:50:19 +02:00
Shannon Deminick 9f9d24e6b3 Merge pull request #5246 from umbraco/v8/bugfix/5216-cache-getbyudi
Add GetById(Udi) to published caches
2019-04-16 12:08:39 +10:00
Shannon e4f6794c59 Merge branch 'kjac-v8-feature-tree-annotations-visibility' into v8/dev 2019-04-16 11:42:22 +10:00
Shannon 440ac40674 Merge branch 'v8-feature-tree-annotations-visibility' of https://github.com/kjac/Umbraco-CMS into kjac-v8-feature-tree-annotations-visibility 2019-04-16 11:42:04 +10:00
Elitsa Marinovska dba241ef50 Adding build script for API docs 2019-04-15 22:04:55 +02:00
Elitsa Marinovska 3b22480b5d Update with correct paths 2019-04-15 21:46:09 +02:00
Kenn Jacobsen 52bc4b04b3 Fix annotation hover background color 2019-04-15 21:16:59 +02:00
Kenn Jacobsen 3f5ccb302d Make the tree annotations easier to see 2019-04-15 21:10:09 +02:00
Stephan 6b23a8221d Bugfix Audit service 2019-04-15 16:34:01 +02:00
Rasmus John Pedersen 32197f0bd1 Add angular udi helper service 2019-04-15 10:31:10 +02:00
Stephan 6cb55789bd Fix mapper concurrency issue 2019-04-15 10:25:29 +02:00
Shannon Deminick 747a8cba2e Merge pull request #5175 from umbraco/v8/bugfix/5174-composer-ordering
Fix composers ordering
2019-04-15 17:54:00 +10:00
Stephan 7e64f455b2 Remove leaked Console.WriteLine 2019-04-15 08:30:04 +02:00
Shannon Deminick 0cf609fdce Merge pull request #5240 from umbraco/v8/bugfix/5222-nucache-vanishing-content
NuCache: fix vanishing content when refreshing content types
2019-04-15 12:55:43 +10:00
Shannon Deminick 3a26443f58 Merge pull request #5247 from umbraco/v8/bugfix/bad-local-temp-path
Fix bad local temp path
2019-04-15 12:24:41 +10:00
Kenn Jacobsen 9953aea156 Make tree item annotation "has pending changes" take precendence over "is listview" 2019-04-14 21:03:24 +02:00
Stephan aa75fcfdb3 Fix bad local temp path 2019-04-12 17:40:10 +02:00
Stephan d4ba1298d5 Add GetById(Udi) to published caches 2019-04-12 16:05:43 +02:00
Stephan 14f9445ffb Ensure entities type in content caches GetById(Udi) 2019-04-12 15:34:06 +02:00
Stephan 7f7c9d2796 Merge branch 'v7/bugfix/5216' into v7/dev 2019-04-12 15:33:21 +02:00
Warren Buckley ba4bb843de Merge pull request #5076 from umbraco/temp8-4521-umb-property-editor-css-width
4521 umb-property-editor css width-limitation
2019-04-12 13:56:31 +01:00
Warren Buckley 43fc926f1b Merge pull request #5157 from umbraco/v8/bugfix/5129-ui-app-header-focus
V8: Visually more catching focus highlighting
2019-04-12 10:49:51 +01:00
Elitsa Marinovska e06d18330c Merge pull request #4721 from kjac/v8-fix-invalid-hostname
V8: Handle invalid hostnames
2019-04-12 11:38:03 +02:00
elitsa fb3f2101f0 Merge branch 'v8/dev' into v8-fix-invalid-hostname
# Resolved Conflicts:
#	src/Umbraco.Web.UI/Umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml
2019-04-12 11:27:43 +02:00
Warren Buckley f8f28ec46a Merge branch 'v8/dev' into v8/bugfix/5129-ui-app-header-focus 2019-04-12 09:40:02 +01:00
Elitsa Marinovska 6323dfcf9c Merge pull request #5164 from kjac/v8-fix-navigation-partial-template
V8: Fix navigation partial view template
2019-04-12 10:00:39 +02:00
Elitsa Marinovska 108e3e527f Merge pull request #5178 from kjac/v8-fix-content-type-matching-template-model
V8: Use the content type model when creating a "matching template"
2019-04-12 09:48:00 +02:00
elitsa ebe4c1b3c3 Fixing formatting 2019-04-12 08:56:18 +02:00
Elitsa Marinovska 93f382fc0f Merge pull request #5159 from poornimanayar/error-message-style-hostname
Fix the colour of the error message in the domains overlay
2019-04-12 08:52:46 +02:00
Stephan 8b509656cd NuCache: fix vanishing content when refreshing content types 2019-04-11 18:55:40 +02:00
Niels Lyngsø 92a0ec2964 take valserver and valpropertymsg out of business if we are dealing with invariant property on non-default-language 2019-04-11 13:03:28 +02:00
Niels Lyngsø 760b7ad0ce Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/5190-invariant-property-validation 2019-04-11 11:53:27 +02:00
Kenn Jacobsen a09e612e1f V8: Fix the layout for editing datatypes in infinite edit mode (#5194)
### Prerequisites

- [x] I have added steps to test this contribution in the description below

If there's an existing issue for this PR then this fixes https://github.com/umbraco/Umbraco-CMS/issues/5154

### Description

This PR fixes the layout of the datatype editor when editing datatypes in infinite editing mode (see #5154 for details).

When applied the editor behaves like this:

![dataype-infinite-editing](https://user-images.githubusercontent.com/7405322/55711636-5df57780-59ed-11e9-958d-0deb05cb17bf.gif)
2019-04-10 15:31:55 +02:00
Niels Lyngsø 9ad5dad710 additional spacing added 2019-04-10 14:59:16 +02:00
Niels Lyngsø 7afd01ff5c Styling update for umb-tags 2019-04-10 14:52:54 +02:00
Niels Lyngsø f8af9fd895 correct spacing between properties 2019-04-10 14:52:39 +02:00
Niels Lyngsø ac1d462bc5 ability to remove tag by pressing delete or backspace 2019-04-10 14:52:16 +02:00
Warren Buckley a4e00b62b3 Merge pull request #5219 from umbraco/v8/bugfix/ui-doc-type-editor
bigger area for add-property + only hover-state if you can edit property
2019-04-10 14:09:03 +02:00
Niels Lyngsø ed8ba3ddcf changed inline-styling into a appearance property 2019-04-10 13:40:06 +02:00
Warren Buckley 9928b770f7 Merge pull request #5221 from umbraco/v8/bugfix/ui-make-toggle-round
Making Umb-Toggle round
2019-04-10 13:28:00 +02:00
Niels Lyngsø 43759fbef3 applied icons again 2019-04-10 12:10:01 +02:00
Niels Lyngsø 94334ff04f style updates 2019-04-10 10:42:29 +02:00
Niels Lyngsø 1fcce288da changed action into buttons for keyboard focus 2019-04-10 10:42:21 +02:00
Niels Lyngsø 5fbd455fd8 align description with title 2019-04-10 10:41:58 +02:00
Shannon Deminick ff707e8768 Merge pull request #4960 from kjac/v8-fix-tree-dialog-remove-recycle-bin
V8: Don't show the recycle bin in tree pickers/dialogs
2019-04-10 09:50:42 +10:00
Ronald Barendse d2e04614c6 Added UDI support for GetById and fixed bug not using specified preview mode 2019-04-09 23:21:40 +02:00
Stephan e540a4ac23 IsVisible moves from publishde content to element 2019-04-09 21:24:55 +02:00
Stephan ed4de5b000 Merge pull request #5041 from kjac/v8-feature-element-isvisible
V8: Add IsVisible extension on IPublishedElement
2019-04-09 21:20:37 +02:00
Niels Lyngsø 699c34263e bigger area for add-property + only hover-state if you can edit property 2019-04-09 16:42:24 +02:00
Rasmus John Pedersen c96cd09dba Add RTE media url -> localLink migration 2019-04-09 15:35:42 +02:00
Rasmus John Pedersen a96bca5fab Remove isMedia workaround 2019-04-09 15:35:41 +02:00
Rasmus John Pedersen 8e5d33b15e Resolve media urls when parsing localLink 2019-04-09 15:35:37 +02:00
Niels Lyngsø b6918253c0 if invariant property then only validate if we are working on the default language. 2019-04-09 15:07:31 +02:00
Rasmus John Pedersen 0a66bbb293 Use localLink for media 2019-04-09 11:59:09 +02:00
Rasmus John Pedersen f246dd7dca Support editing media links 2019-04-09 11:59:09 +02:00
Bjarke Berg b29fd4ada3 Merge pull request #5192 from umbraco/v8/bugfix/5183-mapping-enumerables
Fix mapping of enumerable
2019-04-09 11:51:39 +02:00
Bjarke Berg b1674235e9 Merge pull request #5167 from umbraco/v8/bugfix/checkboxlist-fix
Fixing property editor "checkboxlist" to work in v8
2019-04-09 11:12:13 +02:00
Niels Lyngsø 8441d9017b Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/checkboxlist-fix 2019-04-09 08:54:02 +02:00
Shannon Deminick 980528c652 Merge pull request #5197 from redmorello/v8/dev
Fix spelling mistake in the Packages section of the back office
2019-04-09 10:33:10 +10:00
Shannon Deminick 0f6f7294a2 Merge pull request #5193 from kjac/v8-feature-donotcloneattribute-public
V8: Make DoNotCloneAttribute public
2019-04-09 10:25:52 +10:00
Kenn Jacobsen 0f969ecdd4 Setup non-selectable nodes after the treepicker loads 2019-04-08 19:56:15 +02:00
Stephan 6c8ded6275 Better mapping of enumerable 2019-04-08 16:41:33 +02:00
Ian Houghton a90ae4ae28 Fix spelling mistake 2019-04-08 14:48:42 +01:00
Niels Lyngsø 968fc40622 Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/checkboxlist-fix 2019-04-08 15:22:59 +02:00
Stephan c4db0a3dc1 Merge pull request #5188 from kjac/v8-fix-relationtype-map-alias
V8: Relation type alias is "generating" when editing an existing relation type
2019-04-08 14:32:24 +02:00
Kenn Jacobsen ceaae13575 Make DoNotCloneAttribute public 2019-04-08 10:39:37 +02:00
Stephan 9eb1415796 Fix mapping of enumerable 2019-04-08 10:05:21 +02:00
Stephan 091fae39a3 Merge pull request #5177 from kjac/v8-fix-entityslim-additionaldata-mapping
V8: Missing "metadata" breaks media picker (mapping issue)
2019-04-08 08:59:07 +02:00
Kenn Jacobsen 1aec0e1d9c Fix exception types as per review 2019-04-08 07:24:56 +02:00
Kenn Jacobsen 22f43e67f5 Include relation type alias when mapping to RelationTypeDisplay 2019-04-07 20:13:39 +02:00
Stephan b0ef69a4ec Log more details about boot environment 2019-04-07 16:24:35 +02:00
Stephan 5cb85ebd52 Merge branch 'v8/bugfix/5163-mapping-confusion' into v8/dev 2019-04-07 13:00:14 +02:00
Stephan 89b39be83f Comment out dangerous methods 2019-04-07 12:59:59 +02:00
Stephan ce89aa4857 Minor mapping fix 2019-04-07 12:56:11 +02:00
Stephan 6aeea47f6f Minor fix 2019-04-07 11:27:34 +02:00
Stephan 8049c40f90 Stop exposing mapper in MapperContext 2019-04-07 11:26:47 +02:00
Stephan 1af431a27d Merge pull request #5181 from kjac/v8-fix-variant-listview
V8: Fix YSOD on variant content listview
2019-04-07 10:34:01 +02:00
Stephan 814b8e3b7d Merge pull request #5180 from kjac/v8-fix-save-variant-content
V8: YSOD when saving variant content (mapping issue)
2019-04-07 10:29:37 +02:00
Kenn Jacobsen 9326aac6d3 Pass the mapping context when mapping properties, to ensure that variant properties are mapped according to the current language context 2019-04-06 21:53:40 +02:00
Kenn Jacobsen cb921b1fe2 Pass the mapping context when mapping properties, otherwise variant properties can't be mapped due to missing culture in mapping context 2019-04-06 21:39:16 +02:00
Stephan 9536a868e0 Fix erroneous log message when upgrading 2019-04-06 19:11:01 +02:00
Stephan 0a4465f721 Fix mapping comment 2019-04-06 18:35:07 +02:00
Stephan 9c06ef83e2 Merge pull request #5176 from kjac/v8-fix-map-usergroup-assignedusergrouppermissions
V8: Fix node permissions YSOD (mapping issue)
2019-04-06 18:33:04 +02:00
Kenn Jacobsen f5ad4c67eb Include AdditionalData when mapping IEntitySlim to EntityBasic 2019-04-06 12:24:41 +02:00
Kenn Jacobsen 851f74528f Include UserGroup ID when mapping UserGroup to AssignedUserGroupPermissions 2019-04-06 08:18:40 +02:00
Kenn Jacobsen 2ee8f9dea2 Use the content type model when creating a "matching template" 2019-04-06 08:00:44 +02:00
Stephan 4f6f5cc3fd Merge pull request #5173 from kjac/v8-fix-create-content-type-with-template
V8: YSOD when creating the same content type twice (mapping issue)
2019-04-05 19:05:23 +02:00
Stephan c87a9d6bfa Fix composers ordering 2019-04-05 19:00:34 +02:00
Kenn Jacobsen a9ceb82158 Don't explode when attempting to create a new content type with a template (mapping issue) 2019-04-05 15:18:34 +02:00
Niels Lyngsø ae853a178d Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/checkboxlist-fix 2019-04-05 14:02:21 +02:00
Niels Lyngsø a4d8f0cd55 Fixing model sync, much weird code cleaned up 2019-04-05 14:01:28 +02:00
Bjarke Berg 9d9c201984 Merge pull request #5140 from umbraco/temp8-ui-use-umb-checkbox-for-select-all-in-listview
Use umb-checkbox for select all in listview
2019-04-05 11:33:10 +02:00
Bjarke Berg c21ffd4417 Merge pull request #5166 from umbraco/v8/bugfix/ui-umb-toggle-v8-look
Changed umb-toggle look to fit with v8
2019-04-05 10:38:44 +02:00
Niels Lyngsø f141025248 Fixing checkbox list to work in v8 2019-04-05 09:43:27 +02:00
Niels Lyngsø afad606d05 Changed umb-toggle look to fit with v8 2019-04-05 09:14:19 +02:00
Stephan 406fd892b4 Document UmbracoMapper 2019-04-05 09:08:00 +02:00
Stephan 4ceef88f59 Merge pull request #5165 from kjac/v8-fix-template-mapping
V8: Can't save templates (missing mapping profile)
2019-04-05 09:06:44 +02:00
Bjarke Berg bdacb7da76 Merge pull request #5011 from umbraco/v8/feature/284-content-type-repo
Content/Media/MemberTypeRepository refactoring
2019-04-05 08:21:11 +02:00
Bjarke Berg 36c35750cd Merge remote-tracking branch 'origin/v8/dev' into v8/feature/284-content-type-repo 2019-04-05 07:49:55 +02:00
Shannon Deminick a4c3fdd634 Merge pull request #5162 from umbraco/v8/bugfix/5121-nucache-missing-media
NuCache: fix loading the media cache from local files, was missing media
2019-04-05 10:48:26 +11:00
Shannon 84d69b363a Merge remote-tracking branch 'origin/v8/dev' into v8/bugfix/5121-nucache-missing-media 2019-04-05 10:46:44 +11:00
Shannon Deminick c6038c6920 Merge pull request #5114 from umbraco/v8/bugfix/4998-nucache-large-volumes
Enable configuration of NuCache BTree block size
2019-04-05 10:43:02 +11:00
Shannon da8fea205a Merge branch 'v8/dev' into v8/bugfix/4998-nucache-large-volumes 2019-04-05 10:39:32 +11:00
Kenn Jacobsen 1999d6121a Proper fix for the mapping 2019-04-04 20:09:21 +02:00
Kenn Jacobsen 295f805f6a Can't save template (fix template mapping) 2019-04-04 19:57:10 +02:00
Kenn Jacobsen 6e1a40e2ee When creating partial views from templates, also replace (Model.Content) with (Model) - building upon the logic in e2d41106 2019-04-04 19:41:39 +02:00
Stephan 4ec51da737 NuCache: fix loading the media cache from local files, was missing media 2019-04-04 17:57:04 +02:00
Poornima Nayar 75bba068a4 Fix the colour of the error message in the domains overlay 2019-04-04 16:39:53 +02:00
Shannon Deminick d0b9fb7d6f Merge pull request #5087 from umbraco/v8/feature/284-auto-mapper
Refactor (auto) mapping
2019-04-05 00:59:22 +11:00
Shannon bff920fa50 Merge branch 'v8/dev' into v8/feature/284-auto-mapper
# Conflicts:
#	src/Umbraco.Core/Composing/SetCollectionBuilderBase.cs
2019-04-05 00:58:56 +11:00
Shannon ac6020ff79 removes the unneeded ctor param 2019-04-05 00:56:18 +11:00
Shannon 2e1dd7f4a9 splits appstate.service and editorstate.service 2019-04-05 00:11:05 +11:00
Shannon fe2c519d75 fixes tests 2019-04-05 00:00:22 +11:00
Shannon Deminick 2ae639a3ae Merge pull request #5099 from umbraco/v7/feature/5059-alt-preview
Alternate Preview Engine
2019-04-04 23:35:23 +11:00
Niels Lyngsø 30da32ee94 Visually more catching focus highlighting 2019-04-04 14:15:57 +02:00
Shannon de8f01a4b2 Merge branch 'v7/dev' into v7/feature/5059-alt-preview 2019-04-04 23:11:27 +11:00
Shannon Deminick 984c31f586 Merge pull request #4955 from umbraco/temp8-server-content-validation-fixes-4884
v8 - Fixes multiple issues with variant validation
2019-04-04 22:15:26 +11:00
Shannon 9da236809a Merge branch 'temp8-server-content-validation-fixes-4884' of https://github.com/umbraco/Umbraco-CMS into temp8-server-content-validation-fixes-4884 2019-04-04 21:58:11 +11:00
Shannon 92b64b2ca6 Changes controller to be explicit about which culture will be affiliated with invariant property issues 2019-04-04 21:57:49 +11:00
Kenn Jacobsen 2c6d400055 Various UX improvements to the RTE configuration (#5122) 2019-04-04 12:44:19 +02:00
Kenn Jacobsen 4a8449d80d Replace listview bulk action checkboxes with umb-toggle (#5128) 2019-04-04 11:47:03 +02:00
Stephan dc337a60ac NuCache dashboard cosmetics 2019-04-04 11:08:33 +02:00
Shannon Deminick 3505984b4d Merge pull request #5138 from Jeavon/bugfix/xmlhelper-public
Make XmlHelper class public again
2019-04-04 19:51:13 +11:00
Jeavon e23b9153a0 fix: set some methods within XmlHelper to internal 2019-04-04 09:45:04 +01:00
Stephan 571df1894a Cleanup fixmes 2019-04-04 08:36:16 +02:00
Stephan f66e92801d Merge branch 'v8/dev' into temp8-server-content-validation-fixes-4884 2019-04-04 08:27:00 +02:00
Stephan 90c5ddf0dc BaseMapper does not need be IDiscoverable 2019-04-04 08:26:26 +02:00
Bjarke Berg fd6368946c Merge pull request #5146 from umbraco/v8/bugfix/4811
use text-overflow for better look in narrow screens
2019-04-04 07:54:25 +02:00
Shannon Deminick 7d248bd2c8 Merge pull request #5106 from umbraco/v8/feature/284-npoco-mappers
Simplify our Poco mappers
2019-04-04 15:39:05 +11:00
Shannon Deminick 10f22f7848 Merge pull request #5118 from kjac/v7-fix-content-info-contenttype-alias
V7: Add content type alias to content "general" info box
2019-04-04 14:02:06 +11:00
Niels Lyngsø 8472b48ba8 use text-overflow for better look in narrow screens 2019-04-03 15:45:41 +02:00
Matt Darby 7568ab20ac Fix users layout jumping when a user is selected (#4939)
* Remove "xs" sizing from selected user buttons
* Only remove "xs" from first button
2019-04-03 15:31:09 +02:00
Niels Lyngsø bc821db8eb less space for content-node and media-node 2019-04-03 15:11:55 +02:00
Niels Lyngsø 959402d545 removed permissions column 2019-04-03 15:11:36 +02:00
Niels Lyngsø df46593ef3 improved list spacing, better text-overflow & center aligned select-all-checkbox for users list 2019-04-03 15:00:00 +02:00
Niels Lyngsø 1ff67df9df Merge remote-tracking branch 'origin/v8/dev' into temp8-4521-umb-property-editor-css-width 2019-04-03 13:47:30 +02:00
Bjarke Berg 74bfaabf90 Added null-check before updating the count. (#5142) 2019-04-03 13:35:01 +02:00
Bjarke Berg a0f5a466ac Merge pull request #5141 from umbraco/temp8-4427-3
check if value exists
2019-04-03 13:22:04 +02:00
Niels Lyngsø 2529193ca9 finished the work 2019-04-03 13:07:00 +02:00
Niels Lyngsø 92a68d3887 check if value exists 2019-04-03 12:46:55 +02:00
Niels Lyngsø db0a069b02 move highlight css to umb-table-body__link 2019-04-03 12:40:15 +02:00
Stephan e6b26d72e6 NuCache dashboard cosmetics 2019-04-03 11:57:45 +02:00
Jeavon ef79e6c0e9 fix: make XmlHelper class public 2019-04-03 10:54:53 +01:00
Bjarke Berg a99c8ad2ba UI-Fix for readonly values on members. 2019-04-03 11:40:51 +02:00
Niels Lyngsø 9379efceae early testing 2019-04-03 11:22:00 +02:00
Niels Lyngsø 4e027f7c83 space correction 2019-04-03 11:19:26 +02:00
Niels Lyngsø d2ff96e7ea show checkmark icon when checked 2019-04-03 11:18:37 +02:00
Niels Lyngsø 17e9487bf0 remove end of none existing anchor element 2019-04-03 11:18:15 +02:00
Stephan aad245d5a8 Fix mappers 2019-04-03 11:17:51 +02:00
Stephan 7fa71a2f4e Fix mappers 2019-04-03 11:03:35 +02:00
Niels Lyngsø 7f61a6fe9f ability to open as a new tab 2019-04-03 10:51:01 +02:00
Stephan 7a6884d208 Rename mapper stuff 2019-04-03 10:39:49 +02:00
Niels Lyngsø 3d949c9a55 changed user groups to use umb-table 2019-04-03 10:37:31 +02:00
Stephan eb2a506dd8 Merge pull request #5135 from andrewdeans/v8/dev
Fix case of query parameter
2019-04-03 08:00:17 +02:00
Shannon Deminick a6fa23426e Merge pull request #5125 from kjac/v8-fix-members-disable-bulk-move
V8: Don't allow move in members listview
2019-04-03 16:21:10 +11:00
Andrew Deans 6ac5e19e9f Fix case of query parameter 2019-04-02 23:00:08 -04:00
Shannon db867c66a3 The ImageCropperPropertyValueEditor doesn't convert values in ConvertDbToString correctly 2019-04-03 13:32:21 +11:00
Shannon Deminick b73d798b54 Merge pull request #5117 from kjac/v8-fix-listview-reload-after-move
V8: Reload listview after moving items
2019-04-03 10:44:00 +11:00
Shannon Deminick f5d1ae0a3f Merge pull request #5130 from MMasey/update-syncing-fork-info
fix: update contributing.md with correct branch to rebase with (v8/dev)
2019-04-03 10:35:04 +11:00
Mike Masey 6d6121faa6 feat: add updated defaultbranch image and update missed dev-v8 references to v8/dev 2019-04-02 20:47:47 +01:00
Mike Masey 9d4ecc1d41 fix: update contributing.md with correct branch to rebase with (v8/dev) 2019-04-02 20:09:03 +01:00
Stephan 389ee7ec84 Review, cleanup 2019-04-02 18:02:44 +02:00
Kenn Jacobsen 9fe86169dc Don't allow move in members listview 2019-04-02 15:43:57 +02:00
Stephan fd8cef59ef Merge branch 'v8/dev' into temp8-server-content-validation-fixes-4884 2019-04-02 14:03:02 +02:00
Bjarke Berg a45eda9d19 #284 - Removed unused variables/parameters 2019-04-02 13:46:37 +02:00
Stephan 27e145fe3d Fix temporal coupling 2019-04-02 13:35:01 +02:00
Stephan 04427e4c61 Merge branch 'v8/dev' into v8/feature/284-npoco-mappers 2019-04-02 12:03:55 +02:00
Stephan 4e7e784d7c Merge branch 'v8/dev' into v8/feature/284-content-type-repo 2019-04-02 12:03:26 +02:00
Stephan c5f934930e Merge branch 'v8/dev' into v8/feature/284-auto-mapper 2019-04-02 12:03:05 +02:00
Stephan b524019fc4 Merge branch 'v8/dev' into v8/bugfix/4998-nucache-large-volumes 2019-04-02 12:02:45 +02:00
Niels Lyngsø 0997fe6732 checkmark column removed 2019-04-02 10:12:21 +02:00
Bjarke Berg 06bee124ee Merge pull request #4560 from umbraco/temp8-4011
Temp8 Fix for #4011
2019-04-02 09:47:30 +02:00
Bjarke Berg a9f5d3c1e8 #4011 - Use discreet word not disgrete 2019-04-02 09:41:29 +02:00
Stephan bf1e9b48be Comment (bump PR) 2019-04-02 09:40:14 +02:00
Warren Buckley b0e6618773 Merge pull request #5105 from kjac/v8-fix-logviewer-search-ux
V8: Improvements for logviewer search results view
2019-04-02 09:15:51 +02:00
Bjarke Berg 76e2f2f380 #4011 - Not using a unnecessary function call in views 2019-04-02 09:15:30 +02:00
Bjarke Berg d58106d976 Merge remote-tracking branch 'origin/v8/dev' into temp8-4011 2019-04-02 08:36:39 +02:00
Kenn Jacobsen fb1f2c8af4 Add content type alias to content "general" info box 2019-04-02 08:12:46 +02:00
Kenn Jacobsen 392d4f7f96 Reload listview after moving items 2019-04-01 19:56:14 +02:00
Warren Buckley 3af8d0e4f5 Merge pull request #5109 from leekelleher/chore/constants-root
V8: Updated Constant.System.Root references (to use correct constant, and others)
2019-04-01 13:48:33 +01:00
Stephan 92c380fce1 Merge branch v8/dev into temp8-server-content-validation-fixes-4884 2019-04-01 13:48:25 +02:00
Stephan 61cfba506a Merge branch 'temp8-4217-datatype-edits-updates-content-editor' into v8/dev 2019-04-01 12:19:11 +02:00
Stephan 4906231dcd Merge branch 'v8/dev' into temp8-4217-datatype-edits-updates-content-editor 2019-04-01 12:15:57 +02:00
Stephan c1856723ba Merge branch 'temp8-4427-3' into v8/dev 2019-04-01 12:07:00 +02:00
Stephan 58efda69f5 Merge branch 'v8/dev' into temp8-4427-3 2019-04-01 12:00:35 +02:00
Stephan 305bcb3b5d Cleanup 2019-04-01 08:31:33 +02:00
Stephan e6d75f27de Alt. preview: rename modes 2019-04-01 08:23:48 +02:00
Stephan 9bcd70589c Alt. preview: thread safety 2019-04-01 08:21:01 +02:00
Shannon Deminick b0c7a7bdaf Merge pull request #5079 from umbraco/temp8-4828
fixes 4828 — by adding dimmed-layer for umb-modelcolumn
2019-04-01 17:04:05 +11:00
Shannon Deminick 80d1d73d7c Merge pull request #5107 from umbraco/v8/feature/284-no-viewbag
Replace dynamic ViewBag with ViewData
2019-04-01 16:47:13 +11:00
Shannon Deminick 6a8ae22c6c Merge pull request #5013 from umbraco/v8/feature/5012-messenger-options
Better ServerMessenger configuration
2019-04-01 16:29:21 +11:00
Shannon b4885f48d7 fixing bad merge problem 2019-04-01 14:31:34 +11:00
Shannon d0d5d37400 Merge remote-tracking branch 'origin/v8/dev' into temp8-4011
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/grid/grid.rte.directive.js
#	src/Umbraco.Web.UI.Client/src/views/components/grid/grid-rte.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/grid.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/grid.html
2019-04-01 14:27:11 +11:00
Shannon 043f4f3d02 Revert "Merge remote-tracking branch 'origin/v8/8.0' into temp8-4011"
This reverts commit e73cf590b7, reversing
changes made to 89903a633b.
2019-04-01 14:20:47 +11:00
Shannon e73cf590b7 Merge remote-tracking branch 'origin/v8/8.0' into temp8-4011 2019-04-01 14:16:13 +11:00
Stephan 2b2db8bf24 Enable configuration of NuCache BTree block size 2019-03-29 19:18:22 +01:00
leekelleher 0a687ab7ce Whitespace formatting in the Constants classes
Also removed unused namespaces.
2019-03-29 12:26:42 +00:00
leekelleher 533d2cf8dd Replaced hardcoded "-1" with Constants.System.RootString 2019-03-29 12:18:52 +00:00
leekelleher b44360aa99 Swapped System.RecycleBinMedia string conversions
to use the `System.RecycleBinMediaString` constant.

This saves on integer parsing and reduces the number of
new strings being created.

Since the `System.RecycleBinMedia` is `-21`, it didn't
need the culture invariant conversion.
2019-03-29 12:17:12 +00:00
Kenn Jacobsen 31e4701487 Re-style things so the saved searches link is inside the input field 2019-03-29 13:17:00 +01:00
leekelleher a4c96678e5 Swapped System.RecycleBinContent string conversions
to use the `System.RecycleBinContentString` constant.

This saves on integer parsing and reduces the number of
new strings being created.

Since the `System.RecycleBinContentString` is `-20`, it didn't
need the culture invariant conversion.
2019-03-29 12:14:27 +00:00
leekelleher 13564c72ef Replaced hardcoded "-1" with Constants.System.RootString 2019-03-29 12:13:38 +00:00
leekelleher f4bd0cd1f5 Swapped all System.Root string conversions
to use the `System.RootString` constant.

This saves on integer parsing and reduces the number of
new strings being created.

Since the `System.Root` is `-1`, it didn't need the culture invariant
conversion.
2019-03-29 12:06:23 +00:00
Stephan cea8753ff2 Replace dynamic ViewBag with ViewData 2019-03-29 09:56:56 +01:00
Stephan 961cbf694e Simplify our Poco mappers 2019-03-29 09:46:36 +01:00
Warren Buckley 853087a750 Merge pull request #4970 from poornimanayar/cleanup-logview-saved-searches
General tidy up of styles for logviewer
2019-03-29 08:23:17 +00:00
Bjarke Berg 0d1683fa61 Merge pull request #5091 from umbraco/temp8-4669-ui-discreet-option-for-set-date-input
UI changes for Schedule Publishing
2019-03-29 08:37:52 +01:00
Stephan 07bb7ac0f7 Add content.SetValue overload for posted files 2019-03-29 08:26:36 +01:00
Shannon Deminick 212af8be10 Merge pull request #4877 from kjac/v8-feature-get-multiple-members
V8: Add methods for fetching multiple members to UmbracoHelper
2019-03-29 11:19:51 +11:00
Kenn Jacobsen 6a69906fb6 Make the "save search" dialog a little prettier 2019-03-28 17:11:00 +01:00
Kenn Jacobsen d49d4bcdeb Align the logviewer search icons to the right of the search field 2019-03-28 17:10:41 +01:00
Shannon 28210896a8 fixes logic with publish due to flag enums 2019-03-29 00:32:52 +11:00
Shannon c67298dcd4 recommitting, the build server just died for some reason 2019-03-29 00:08:53 +11:00
Shannon 5a626acb3a Fixes up a bunch more validation logic, adds unit tests to support 2019-03-28 23:59:49 +11:00
Kenn Jacobsen 6d9ed6c59b Change Member to Members (plural) for methods returning multiple members 2019-03-28 12:46:54 +01:00
Stephan f8f1fea407 Various corrections to mappers 2019-03-28 12:38:04 +01:00
Stephan 0676726bfc Refactor preview 2019-03-28 10:52:19 +01:00
Stephan bb43fc310a Add service-level loading of preview Xml document 2019-03-27 17:11:21 +01:00
Niels Lyngsø 8da9ecc9e4 date-wrapper styles for variants schedule publishing 2019-03-27 12:49:03 +01:00
Dave de Moel ff9179a15f Changed check to use localeCompare 2019-03-27 10:33:21 +01:00
Stephan 3524ba83a8 Merge branch 'v7/bugfix/5019-change-log-level' into dev-v7 2019-03-27 10:29:30 +01:00
Stephan 9b13d8f5d7 Stop logging useless errors in UriExtensions 2019-03-27 10:29:11 +01:00
Stephan c9f1d9aaf6 Merge branch 'temp8-4839-siblings' into dev-v8 2019-03-27 10:21:14 +01:00
Stephan 8f51e2634c Merge branch 'dev-v8' into temp8-4839-siblings 2019-03-27 10:17:57 +01:00
Stephan 47cb03bb38 Fix mapper and mapping 2019-03-27 09:35:57 +01:00
Stephan 72bdf56ddf Cleanup and fix mappers 2019-03-27 09:15:32 +01:00
Stephan 70c2090a56 Refactor more mappers - AutoMapper gone now 2019-03-27 09:15:32 +01:00
Stephan d274737296 Refactor more mappers 2019-03-27 09:15:32 +01:00
Stephan 92139dd0c9 Refactor more mappers 2019-03-27 09:15:32 +01:00
Stephan 5bcafba34c Refactor more mappers 2019-03-27 09:15:32 +01:00
Stephan a6dc5f0eac Refactor more mappers 2019-03-27 09:15:31 +01:00
Stephan cd0338498f Fix BackOfficeIdentityUser 2019-03-27 09:15:31 +01:00
Stephan 57067d7e56 Use Umbraco.Code to ensure proper mapping 2019-03-27 09:15:31 +01:00
Stephan ef5646fa3b Cleanup, reduce AutoMapper exposure 2019-03-27 09:15:31 +01:00
Stephan b43e113cb6 Experiment with mapping (perfs) 2019-03-27 09:15:31 +01:00
Bjarke Berg 13c11e0434 Merge pull request #5065 from umbraco/temp8-ui-change-notification-style
V8: UI changed notification style
2019-03-27 09:07:21 +01:00
Bjarke Berg 97879fc7aa Merge pull request #5063 from umbraco/temp8-ui-change-redirectmanagement-button-styles
V8: changed button styles for a better low hanging-fruit solution
2019-03-27 08:41:01 +01:00
Niels Lyngsø 719a4a8b6a adjusted size 2019-03-27 08:29:04 +01:00
Shannon ef3f349764 Fixes issue with ContentService.SaveAndPublish when dealing with cultures since it wouldn't actually save the content if it was invalid - we always must save even if data is invalid, this was an oversight with the rush to release with these last minute APIs 2019-03-27 18:00:17 +11:00
Shannon 15a984f68c Merge branch 'dev-v8' into temp8-server-content-validation-fixes-4884
# Conflicts:
#	src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml
2019-03-27 16:33:26 +11:00
Shannon 22662042b5 Fixes up more of dealing with invariant property validation 2019-03-27 16:31:53 +11:00
Shannon 8042405d94 WIP - Fixing up validation so that invariant properties are only validated on the default lang or if the item is not published 2019-03-27 12:41:02 +11:00
Shannon e222bf2920 Reverts the previous changes of validating all languages against invariant properties 2019-03-27 12:39:05 +11:00
Kenn Jacobsen 4d0d17eb1b Remove params overloads on MembershipHelper 2019-03-26 15:11:05 +01:00
Niels Lyngsø d6be02aaec style set date input 2019-03-26 14:57:45 +01:00
Niels Lyngsø 4a14d45a64 remove inline styling 2019-03-26 14:57:30 +01:00
Niels Lyngsø 458e510961 remove double ;; 2019-03-26 14:57:13 +01:00
Niels Lyngsø b36288b987 infinity editing dim-layer for umb-modelcolumn 2019-03-26 14:11:01 +01:00
Niels Lyngsø a7941b9678 setting width limit of selected property editors 2019-03-26 10:10:34 +01:00
Niels Lyngsø 31fd8066a4 fixing border color, which needs to be white. 2019-03-26 10:10:13 +01:00
Niels Lyngsø 5899f08d7f removing the default width limitation. 2019-03-26 10:09:43 +01:00
Niels Lyngsø 8a16c749e1 Mixin for limiting the width of a property-editor 2019-03-26 10:09:21 +01:00
Shannon Deminick ac6767248e Merge pull request #4978 from umbraco/temp8-4627
Fixes front-end validation (4627)
2019-03-26 01:54:06 -07:00
Kenn Jacobsen 64bae439bf Fix stuff from review 2019-03-26 08:44:03 +01:00
Niels Lyngsø 118f6c7e50 added the ability to watch tokens in localization service 2019-03-25 14:46:42 +01:00
Niels Lyngsø 50ee60e8c3 correcting translate tokens to use % 2019-03-25 14:09:29 +01:00
Niels Lyngsø 286978647e fix type mistake, plus correcting math. 2019-03-25 14:04:31 +01:00
Niels Lyngsø 0cc6e51b7a simplify controller + only show text when near limit + different text when exceeding limit 2019-03-25 13:46:57 +01:00
Niels Lyngsø 15d5c67cd3 global text-color variables 2019-03-25 13:46:49 +01:00
Bjarke Berg 011d406301 https://github.com/umbraco/Umbraco-CMS/issues/5019 - Changed log level from error to debug. This will spam the log if we request with invalid parameters 2019-03-25 11:59:41 +01:00
Niels Lyngsø 84e4189b45 added margin and round corners to notifications 2019-03-25 11:37:05 +01:00
Niels Lyngsø e6720a175c changed notification auto remove time to 10 seconds 2019-03-25 11:36:50 +01:00
Robert 026ad4f2a8 fixes - TinyMCE does not sync data to angular store when dragged away in grid-editor (#5048) 2019-03-25 11:07:50 +01:00
Niels Lyngsø bf3ce014cb changed button styles for a better low hanging-fruit solution 2019-03-25 10:51:06 +01:00
Kenn Jacobsen 8bd9ae062d Merge with dev-v7 2019-03-24 13:37:32 +01:00
Kenn Jacobsen d51daa2a8a Make sure the correct user is registered in the log when emptying the recycle bin 2019-03-24 13:25:55 +01:00
Dan White cc9a7ff942 U4 10147 - Bypass User Security option in pickers (#2441) 2019-03-23 12:51:36 +01:00
Sebastiaan Janssen 929fc415bb Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web/Routing/RedirectTrackingEventHandler.cs
2019-03-23 10:31:50 +01:00
Nathan Woulfe 4e1634754b fix URL redirection creation - was failing when save and save+publish as save creates new URL, which is compared to itself in save+publish (#5036) 2019-03-23 10:29:46 +01:00
Brandon Osborne 080f433140 Updated Upload method (#4850) 2019-03-23 09:59:04 +01:00
Niels Lyngsø 054bc28a0a Merge remote-tracking branch 'origin/dev-v8' into temp8-4217-datatype-edits-updates-content-editor 2019-03-22 16:35:53 +01:00
Niels Lyngsø d806855698 listen for "editors.documentType.saved" instead of "editors.content.reload" 2019-03-22 16:22:36 +01:00
Niels Lyngsø da503cc9b5 listen for "editors.dataTypeSettings.saved" 2019-03-22 16:19:56 +01:00
Niels Lyngsø af4dc97b10 changed ' to " 2019-03-22 16:06:39 +01:00
Niels Lyngsø 019ac52309 emit "editors.dataTypeSettings.saved"-event 2019-03-22 16:06:07 +01:00
Robert 3761d2e483 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2019-03-22 15:06:44 +01:00
Robert d107289a08 Fixes not being able to add languages 2019-03-22 15:06:09 +01:00
Robert 1d8ed6e507 Merge pull request #5045 from umbraco/v8/bugfix/4683-Change-text-in-culture-and-hostnames
V8: Translation in the culture and hostnames panel.
2019-03-22 14:37:21 +01:00
Robert 4ea169a636 Merge pull request #5049 from umbraco/v8/bugfix/4990-use-skip-and-take-parameters
V8: Use the skip and take parameters in GetVersionsSlim
2019-03-22 14:32:51 +01:00
Bjarke Berg b16bf78c44 Merge pull request #4957 from kjac/v8-fix-region-and-regionless-languages
V8: Allow mixing languages with and without region
2019-03-22 14:03:10 +01:00
Bjarke Berg acf59dc1d0 Formatting 2019-03-22 13:55:46 +01:00
Bjarke Berg f99d3f7419 https://github.com/umbraco/Umbraco-CMS/issues/4990 - Added skip and take 2019-03-22 13:53:40 +01:00
Bjarke Berg 8ab89f5e1c https://github.com/umbraco/Umbraco-CMS/issues/4683 - Translation in the culture and hostnames panel. Our recommendation in V8 is opposite to V7, therefore a new key is introduced 2019-03-22 12:01:08 +01:00
Bjarke Berg 1587e13b23 Merge pull request #5043 from umbraco/temp8-4695-umb-sticky-bar-position-infinity-mode
top: 70px; in infinity mode
2019-03-22 11:42:00 +01:00
Bjarke Berg 0acc8e1f14 Merge pull request #4961 from umbraco/temp8-rename-color-variable-disgrete-to-discreet
Renamed LESS variables with disgrete to discreet
2019-03-22 09:45:50 +01:00
Bjarke Berg 99ebe13ebb Merge pull request #4974 from umbraco/temp8-fix-conditional-sync-of-checkboxlist
Fixing code in sync functionality of checkbox-list
2019-03-22 09:35:31 +01:00
Niels Lyngsø e16777fc28 remove debugger; 2019-03-22 09:21:37 +01:00
Niels Lyngsø 23f36b9d4e top: 70px; in infinity mode 2019-03-22 09:20:50 +01:00
Bjarke Berg 9a6798953b Merge pull request #5026 from umbraco/temp8-ui-hover-state-for-selectable-items
Hover state for selectable items in Lists and Grids
2019-03-21 15:19:53 +01:00
Bjarke Berg c6e6a9d4cc Merge pull request #5023 from umbraco/temp8-ui-unpublished-state-in-list-view
Make unpublished items in list view show with grey text-color on name
2019-03-21 15:10:02 +01:00
Kenn Jacobsen 33a91bb9e9 Add IsVisible extension on IPublishedElement 2019-03-21 15:01:46 +01:00
Sebastiaan Janssen 77692037f6 Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js
#	src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html
2019-03-21 09:56:12 +01:00
Kenn Jacobsen da6b541112 Show duplicate URLs instead of letting them cause an angular error (#3969) 2019-03-21 09:06:01 +01:00
Kenn Jacobsen 0a3f893f22 V8: Improve plugin language handling (#4454) 2019-03-20 23:44:29 +01:00
Sebastiaan Janssen ee911a579f Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
#	src/Umbraco.Web/UmbracoHelper.cs
2019-03-20 23:29:04 +01:00
Sebastiaan Janssen 1a4a3504d0 Remove unused variable 2019-03-20 23:27:42 +01:00
Tom Fulton 5d3b623173 Fix for RTE never being dirty after initial save (#4140) 2019-03-20 23:26:12 +01:00
Marcin Bigoraj 2c271d3ef4 Allow RTE to set form dirty again after saving content item 2019-03-20 23:18:36 +01:00
Mario Lopez 9a6d938004 fixed xmldoc 2019-03-20 23:10:32 +01:00
Mario Lopez 125423947c add Udi[] to TypedContent helper 2019-03-20 23:10:32 +01:00
Sebastiaan Janssen 263ee5c297 Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web/PropertyEditors/RichTextPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/ValueConverters/RteMacroRenderingValueConverter.cs
#	src/Umbraco.Web/Templates/TemplateUtilities.cs
2019-03-20 23:03:18 +01:00
Kenn Jacobsen 99b80e0f56 Ensure that media in RTEs are always rendered with up-to-date sources 2019-03-20 22:46:42 +01:00
Robert d7ad19d6c9 Merge pull request #4822 from kjac/v8-grid-hide-empty-sticky-bar
V8: Hide empty sticky bar in Grid
2019-03-20 15:17:26 +01:00
Bjarke Berg 13fd177325 Merge remote-tracking branch 'origin/dev-v8' into dev-v8 2019-03-20 13:30:03 +01:00
Bjarke Berg c589ef1995 https://github.com/umbraco/Umbraco-CMS/issues/5024 - Fixed issue, when using the culture overload of the Children. Now we use ChildrenOfType if alias is set. 2019-03-20 13:29:39 +01:00
Sebastiaan Janssen ff33e0d969 Fix merge mistake 2019-03-20 13:22:22 +01:00
Sebastiaan Janssen 559debc079 Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web/WebApi/Filters/UmbracoApplicationAuthorizeAttribute.cs
2019-03-20 13:10:32 +01:00
Robert 32c0e02563 Merge pull request #4995 from umbraco/v8/bugfix/4992-nucache-panic
bugfix nucache panic
2019-03-20 12:31:09 +01:00
Kenn Jacobsen 761297a2db Merged with dev-v8 2019-03-20 11:50:35 +01:00
Robert ad17677951 Fix tests 2019-03-20 10:20:00 +01:00
Bjarke Berg 64bc0cf973 Renamed SendingDashboardModelV2 to SendingDashboardSlimModel 2019-03-20 07:35:00 +01:00
Paul Seal bb23fbbf8d increased length of line under the word umbraco 2019-03-19 22:59:28 +01:00
Paul Seal 30b47ff15f Update the umbraco ascii art
I thought it would be a good idea to update the ascii art to a font similar to the one in the umbraco logo on the umbraco.com website.
2019-03-19 22:59:28 +01:00
Sebastiaan Janssen 1c9d1718e7 More readme updates 2019-03-19 22:53:31 +01:00
Sebastiaan Janssen 23656f017c More readme updates 2019-03-19 22:02:52 +01:00
Sebastiaan Janssen 685c4e351b Update readme 2019-03-19 21:31:57 +01:00
Niels Lyngsø 30eb097f9c hover state for media grid + corrected hover state opacity + rounded corner for media info tooltip 2019-03-19 19:03:02 +01:00
Niels Lyngsø fa042194b7 hover state for umb-content-grid-item 2019-03-19 16:50:05 +01:00
Niels Lyngsø bd8f950ba1 hover state for umb-table and umb-mini-list-view 2019-03-19 16:30:18 +01:00
Stephan 1879215e7c Sliding Cache 2019-03-19 16:29:11 +01:00
Stephan 4e87dd389d Refactor Content/Media/Member type repositories 2019-03-19 16:28:50 +01:00
Niels Lyngsø 560367debe hover state for umb-table item 2019-03-19 16:15:01 +01:00
Niels Lyngsø 59a62688c5 Make unpublished items in list view show with grey text-color on name and icon 2019-03-19 16:01:36 +01:00
Robert e9ecb4c998 Only show server-side validation errors if the languages are checked for publish/schedule 2019-03-19 15:03:07 +01:00
Bjarke Berg e4c6ef05a9 Introduced both Siblings and SiblingsAndSelf 2019-03-19 14:59:52 +01:00
Robert aa6e0ce0c2 Show server validation errors only if the language is checked for publish. 2019-03-19 14:50:28 +01:00
Kenn Jacobsen d637a7951b V8: Remember choice of layout in Users section (#4779)
* Support arbitrary identifiers in "last used listview layout"
* Save and use last selected view layout for the users section
2019-03-19 14:50:00 +01:00
Robert 268658812a Return all languages if a variant has a invalid invariant property 2019-03-19 14:43:21 +01:00
Kenn Jacobsen 3a0dd2399a V8: Make "Open in split view" look better in narrow viewports (#4619)
* Make "Open in split view" look better in narrow viewports
* Add white background to inactive split view button
* Better support for long culture names
2019-03-19 14:24:32 +01:00
Niels Lyngsø 532f69e9b7 Show checkmark when list has selection 2019-03-19 13:53:13 +01:00
Bjarke Berg e2b1f0a82d Merge pull request #4948 from umbraco/temp8-temp-gather-url-for-list-items
V8: Provide url in content lists for ability to open item in a new tab
2019-03-19 13:35:45 +01:00
Bjarke Berg e73029cf4f Rename siblings to ParentChildren (Because the actual returned list contains the content node self) 2019-03-19 13:08:08 +01:00
Niels Lyngsø 9597bde7bb visual corrections + remember view layout in a cookie 2019-03-19 13:03:59 +01:00
Niels Lyngsø 7f45d852ed fix search icon location 2019-03-19 13:03:02 +01:00
Niels Lyngsø 3f10c78bee correct js error 2019-03-19 11:04:52 +01:00
Niels Lyngsø 4b02bf2ddf use umb-table for users table 2019-03-19 10:55:36 +01:00
Niels Lyngsø 542eb2ab1d borrow great stuff from KJAC. 2019-03-19 10:04:13 +01:00
Sebastiaan Janssen 935a495d0e Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2019-03-19 09:46:47 +01:00
Sebastiaan Janssen fe7c6bd1ed Merge branch 'patch-8.0.1' into dev-v8 2019-03-19 09:46:14 +01:00
Niels Lyngsø 137c08eaf3 Parse $event argument 2019-03-19 09:06:05 +01:00
Bjarke Berg 1545fe0d5f Merge pull request #5004 from kjac/v8-fix-filter-datatypes
V8: Improve the filtering in the datatype picker
2019-03-19 08:20:09 +01:00
Stephan 7f33454002 Better ServerMessenger configuration 2019-03-18 17:51:04 +01:00
Niels Lyngsø 970f336a5d clean up imports 2019-03-18 16:41:34 +01:00
Niels Lyngsø c6dfc28f03 make open user able to open in a new tab + only use pointer is selectable + improved hover state for open user 2019-03-18 16:34:41 +01:00
Niels Lyngsø 873d230e0e improve hover state for open user 2019-03-18 16:19:02 +01:00
Niels Lyngsø 4a26bfe3c3 clean up imports 2019-03-18 15:00:32 +01:00
Stephan 79dd593ee7 Merge pull request #5009 from umbraco/v8/bugfix/4967-list-view-ordering-ispublished
V8: Fix for ordering by isPublished in list view
2019-03-18 14:56:19 +01:00
Bjarke Berg 919f139607 https://github.com/umbraco/Umbraco-CMS/issues/4967 - fix for ordering by IsPublished in list view 2019-03-18 14:52:50 +01:00
Kenn Jacobsen 6e2c143d00 Improve the filtering in the datatype picker 2019-03-18 12:16:20 +01:00
Bjarke Berg 212b0ba932 Missing injection 2019-03-18 10:14:23 +01:00
Warren Buckley 51be2a5baf Merge pull request #5002 from umbraco/v8/bugfix/avoid-breaking-change-in-dashboard-events
Avoid removing a public method (used by forms 8.0.0)
2019-03-18 09:08:57 +00:00
Bjarke Berg 44beb81e71 Avoid removing a public method (used by forms 8.0.0) 2019-03-18 09:51:05 +01:00
Bjarke Berg 2f187fa403 Merge pull request #5001 from kjac/v8-fix-inherit-culture
V8: Fix the "Language" dropdown in the "Culture and Hostnames" dialog
2019-03-18 08:39:41 +01:00
Bjarke Berg 7359b0b244 Merge pull request #4996 from kjac/v8-fix-assign-domain-close-on-save
V8: Automatically close "Cultures and Hostnames" on successful save
2019-03-18 08:33:15 +01:00
Kenn Jacobsen 8f06603774 Fix the "Language" dropdown in the "Culture and Hostnames" dialog 2019-03-17 20:51:42 +01:00
Bjarke Berg 7d67a734f0 Merge pull request #4994 from umbraco/temp-user-controller-authz
Fixes the authorization for certain endpoints on the UsersController
2019-03-15 12:27:50 +01:00
Kenn Jacobsen 688173488d Automatically close "Cultures and Hostnames" on successful save 2019-03-15 09:26:21 +01:00
Stephan a6568e1952 NuCache: better fixing, cleanup 2019-03-15 08:22:40 +01:00
Shannon 19ad595f5d Adds back in the umb-list-item--error css class when any row in a content publish dialog is invalid 2019-03-15 15:47:46 +11:00
Shannon c8de8b1ad5 Merge remote-tracking branch 'origin/dev-v8' into temp8-server-content-validation-fixes-4884 2019-03-15 15:23:21 +11:00
Shannon d74ec8f8cb Authorizes more endpoints for admin/non-admins 2019-03-15 12:39:46 +11:00
Shannon e24b22f6bd Fixes the authorization for certain endpoints by non admins so that data cannot be seen and avatars cannot be changed 2019-03-15 12:20:24 +11:00
Stephan 260a8ad874 NuCache: fix panic exception 2019-03-14 19:05:02 +01:00
Stephan dc3e985fbb NuCache: troubleshooting 2019-03-14 19:05:02 +01:00
Stephan b7a03f0153 NuCache: reorg some classes 2019-03-14 18:56:28 +01:00
Stephan 66f9ecd8e2 NuCache: rename things 2019-03-14 18:56:27 +01:00
Stephan 541c7e6955 NuCache: cleanup scoped objects 2019-03-14 18:56:27 +01:00
Stephan e72133f322 Merge branch 'dev-v8' into temp8-4839-siblings 2019-03-14 17:15:43 +01:00
Warren Buckley edb8340b32 Merge pull request #4364 from umbraco/abjerner-patch-1
V8: fixed type of dashboards in EditorModelEventManager
2019-03-14 15:00:34 +00:00
Shannon 1290244602 slight change of wording 2019-03-14 14:19:40 +11:00
Shannon 9d8b5be650 Fixes mandatory validation issue when creating a new document and a mandatory language has validation problems 2019-03-14 14:18:42 +11:00
Shannon 4eedc3ce5c oops, put back logic i removed during testing 2019-03-14 11:46:49 +11:00
Shannon b8c609ddc9 removes old notes, makes MediaSaveModelValidator to be consistent 2019-03-14 11:41:29 +11:00
Shannon 88f2a410f3 adds notes to html about variant notifications, removes the styling from the publish dialog since it's not needed 2019-03-14 11:33:20 +11:00
Shannon 38cf7a4e49 Fixes content service to not validate every culture for properties, only the cultures passed in to to the method, removes client side name check, 2019-03-14 01:55:39 +11:00
Shannon 8c3388507d Merge remote-tracking branch 'origin/dev-v8' into temp8-server-content-validation-fixes-4884 2019-03-14 01:18:16 +11:00
Shannon d6393616f1 Fixing up server side validation for invariant properties on variant content 2019-03-14 00:59:51 +11:00
Shannon 418dab26a5 Merge remote-tracking branch 'origin/dev-v8' into temp8-server-content-validation-fixes-4884 2019-03-14 00:58:02 +11:00
Niels Lyngsø 53e6c620eb fixes 4627 + makes front-end validations appear as soon as they are invalid again. 2019-03-13 14:45:30 +01:00
Niels Lyngsø 6d88726479 Fixing code in sync functionality of checkbox-list 2019-03-13 11:46:33 +01:00
Niels Lyngsø 808d33edf6 force commit white logo svg 2019-03-13 11:13:00 +01:00
Shannon 3d6db4b812 Ensures media is always validated for critical data, adds notes 2019-03-13 18:12:48 +11:00
Shannon ea93d4dd5d simplifies a js operator 2019-03-13 17:52:17 +11:00
Shannon Deminick 8714bb816f Merge pull request #4950 from umbraco/v8/feature/4590-resolvable-ifactory
IFactory is resolvable
2019-03-13 14:49:12 +11:00
Poornima Nayar 1f7172e98d Cleaned up class names in logviewer overview to use new logviewer classes and made a logviewer specific less stylesheet. Also left aligned the saved searches to make them look better 2019-03-12 21:54:13 +00:00
Robert a3e842a315 Merge pull request #4844 from umbraco/dev-v8-4827-fix-for-image-mediapickervalueconverter
V8: Fix for MediaPickerValueConverter when config is only images
2019-03-12 11:59:54 +01:00
Robert c3bf6b0631 Merge pull request #4908 from umbraco/temp8-ui-use-umb-checkbox-for-all-variants-dialogs
Use umb-checkbox for all content variant dialogs
2019-03-12 11:55:40 +01:00
Robert bf28dfe04a Merge pull request #4956 from umbraco/temp8-fix-for-creating-content-templates
V8: Fixed issue when creating variant content templates,
2019-03-12 11:30:44 +01:00
Robert 3e6cdd86b2 Merge branch 'dev-v8' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs 2019-03-12 11:09:20 +01:00
Niels Lyngsø e550e5cd81 rename LESS variables with disgrete to discreet 2019-03-12 10:35:04 +01:00
Robert abd681277d Merge pull request #4906 from umbraco/temp8-ui-umb-checkbox-refactor-for-general-usage
changed umb-checkbox model to be the boolean property, not a object c…
2019-03-12 10:29:43 +01:00
Kenn Jacobsen 0c602567ce Don't show the recycle bin in tree pickers/dialogs 2019-03-12 10:25:51 +01:00
Niels Lyngsø 5ad1dcf894 Merge remote-tracking branch 'origin/temp8-4728' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js
#	src/Umbraco.Web.UI.Client/src/views/content/overlays/publish.controller.js
#	src/Umbraco.Web.UI.Client/src/views/content/overlays/publish.html
2019-03-12 10:17:17 +01:00
Niels Lyngsø 485c1fbf6c use existing notifications for warnings 2019-03-12 10:14:25 +01:00
Niels Lyngsø 447eb88b86 Use tokens for translate + shortcut for reject 2019-03-12 10:14:06 +01:00
Robert ece9c4ae21 Merge branch 'dev-v8' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs 2019-03-12 10:08:14 +01:00
Robert 1509c7364c Reverted extra check 2019-03-12 09:52:03 +01:00
Bjarke Berg 010e2e1f19 Merge pull request #4954 from umbraco/temp8-grid-rte-image-size
Fixes inserting an image into the grid rte since it doesn't get resized correctly
2019-03-12 09:07:54 +01:00
Robert 9b25cdaa14 Merge pull request #4710 from umbraco/temp8-4708-fix-for-exit-preview-with-null-culture
Fix for exit preview with null culture
2019-03-12 08:31:28 +01:00
Kenn Jacobsen 03a5d5b866 Allow mixing languages with and without region 2019-03-12 08:20:43 +01:00
Bjarke Berg 31eea2a2a8 Fixed issue when creating variant content templates, but the properties is invariant. Before this change an exception was thrown 2019-03-12 08:17:09 +01:00
Shannon 5ae6a68078 Fixes how critical data is validated 2019-03-12 16:10:35 +11:00
Shannon 2e52a869b6 Merge branch 'dev-v8' into temp8-4728
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/content/overlays/publish.controller.js
2019-03-12 13:03:32 +11:00
Shannon 95d1ceb529 overrides ToString on UrlInfo to return the correct result 2019-03-12 12:47:37 +11:00
Shannon 10f333081d Fixes inserting an image into the grid rte since it doesn't get resized correctly 2019-03-12 12:43:04 +11:00
Shannon 89903a633b Merge branch 'dev-v8' into temp8-4011
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/grid.controller.js
2019-03-12 11:42:35 +11:00
Shannon Deminick cefff71edf Merge pull request #4853 from umbraco/temp8-js-error-unpublishing
Fixes javascript error when trying to unpublish an invariant item
2019-03-12 11:18:09 +11:00
Stephan 13d97fffdf IFactory is resolvable 2019-03-11 17:14:07 +01:00
Sebastiaan Janssen ba297ad839 Merge branch 'patch-8.0.1' into dev-v8 2019-03-11 16:12:18 +01:00
Stephan 7e67bbea13 Do not inject IEnumerable but Collection in UmbracoContextFactory 2019-03-11 15:37:07 +01:00
Kenn Jacobsen 9062b400d4 Show the content app for media folders with content properties 2019-03-11 14:57:25 +01:00
Niels Lyngsø 48ec795e7b do not open as infinite editing yet. 2019-03-11 14:54:11 +01:00
Bjarke Berg e7781cd95b DRY - Reused code 2019-03-11 14:53:49 +01:00
Niels Lyngsø 1098db1632 use item.editPath for new tab URL 2019-03-11 14:52:16 +01:00
Shannon 6880937b90 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2019-03-12 00:46:52 +11:00
Shannon 52beb01110 Removes faulty CustomRouteUrlProvider 2019-03-12 00:46:39 +11:00
Stephan fbfa7e8566 Cleanup temp path in global config 2019-03-11 14:40:18 +01:00
Stephan c85c055424 Upgrade to ModelsBuilder 8.0.2, support Custom Tool (#4881)
* Upgrade to ModelsBuilder 8.0.2, support Custom Tool

* Upgrade to ModelsBuilder 8.0.3

* Fix controllers

* Upgrade MB

* Fix previous commit
2019-03-11 23:14:32 +11:00
Niels Lyngsø 829980adb2 Merge remote-tracking branch 'origin/dev-v8' into temp8-temp-gather-url-for-list-items
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/list/list.listviewlayout.controller.js
2019-03-11 13:05:59 +01:00
Bjarke Berg 8f3bcf87da Merge pull request #4754 from umbraco/temp8-ui-update-login-screen
V8: UI — updated login screen
2019-03-11 12:41:40 +01:00
Niels Lyngsø ba55c24d43 correcting path in umbracoSettings.Release.config
+ changed comment to fit with new look
2019-03-11 12:40:23 +01:00
Niels Lyngsø 4d806c1cef correction error colors 2019-03-11 12:38:04 +01:00
Niels Lyngsø b237e4a55e make warnings an array that angularJS can watch 2019-03-11 12:37:53 +01:00
Niels Lyngsø 502794aae9 validation text provided for more languages, plus it takes action when name is an empty string 2019-03-11 11:51:13 +01:00
Kenn Jacobsen 2352b50d97 Handle checkbox value conversion from Nested Content 2019-03-08 15:07:50 +01:00
Niels Lyngsø 356b7681e8 Merge remote-tracking branch 'origin/temp8-ui-umb-checkbox-refactor-for-general-usage' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs 2019-03-08 14:37:42 +01:00
Niels Lyngsø 0d58b4c42b renamed umb-checkbox id attribute to input-id to avoid colliding Ids 2019-03-08 14:37:23 +01:00
Niels Lyngsø 171cae5fca reverted this line, cause for some wierd reason this line works, and corrected one ruins the feature. Super wierd, i guess the person writting this was just lucky to hit something that works. Need to look into what is going on here. 2019-03-08 14:24:54 +01:00
Niels Lyngsø 979a166b41 changed checkbox-inputs to umb-checkbox 2019-03-08 14:23:37 +01:00
Niels Lyngsø 623ace56bc Improved UX of Save
+ Remove special case for new content
+ Never disable the user choices, instead provide feedback for when the selection doesn't make sense.
2019-03-08 14:22:05 +01:00
Niels Lyngsø 7203926cea no need for type attribute 2019-03-08 12:54:55 +01:00
Niels Lyngsø 021bf470c2 umb-checkbox for save dialog 2019-03-08 12:41:33 +01:00
Niels Lyngsø 7194d7d6b8 update to input-id 2019-03-08 12:41:18 +01:00
Niels Lyngsø 45423ae932 use tokens in localizationsService for replace of %0% 2019-03-08 12:40:57 +01:00
Niels Lyngsø 2b7f12253f umb-checkbox id renamed to input-id for it not to collide, since ids have to be unique. 2019-03-08 12:40:24 +01:00
Kenn Jacobsen 36827cfa9f Move some of the multiget member methods to MembershipHelper 2019-03-08 07:31:39 +01:00
Niels Lyngsø 129210946d Merge branch 'temp8-ui-umb-checkbox-refactor-for-general-usage' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs 2019-03-07 15:29:47 +01:00
Niels Lyngsø 62808958b0 umb-checkbox callback should call a new digest for callbacks changes to take effect. 2019-03-07 15:29:28 +01:00
Niels Lyngsø c5096e67e6 Merge remote-tracking branch 'origin/temp8-ui-umb-checkbox-refactor-for-general-usage' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbcheckbox.directive.js
2019-03-07 14:47:40 +01:00
Niels Lyngsø 320d2ae953 Change umb-checkbox to AngularJs Component + fix for callback digest flow 2019-03-07 14:46:50 +01:00
Niels Lyngsø 264a96971a Merge remote-tracking branch 'origin/temp8-ui-umb-checkbox-refactor-for-general-usage' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/components/forms/umb-checkbox.html
2019-03-07 13:01:04 +01:00
Niels Lyngsø 8c28172efc changed umb-checkbox model to be the boolean property, not a object containing a checked property.
This means that the on-change callback will recive the model and the value instead.
2019-03-07 12:57:10 +01:00
Niels Lyngsø 8a4dfd4350 first step for implementing umb-checkbox 2019-03-07 11:54:46 +01:00
Niels Lyngsø 3814138d68 Merge remote-tracking branch 'origin/dev-v8' into temp8-ui-use-umb-checkbox-for-all-variants-dialogs 2019-03-07 11:32:04 +01:00
Niels Lyngsø f54a8725db CSS: change form check inputs to use not-allow cursor when disabled 2019-03-07 11:25:13 +01:00
Bjarne Fyrstenborg bbc2b1a54a v8: Checkbox/radio with disabled state (#4902)
* Add property to disable checkbox and radiobutton

* Add basic styles of disabled state

* Change cursor style for disabled checkbox/radiobutton

* Remove duplicate classes

* Change nested elements to span since it is not valid to have div as nested elements in labels

* Adjust positions

* Better way to center align icon

* Add white as default background color in checkbox/radiobutton e.g. for Nested Content

* Adjust sizing a bit
2019-03-07 11:24:16 +01:00
Niels Lyngsø 6dc5a3b130 Make login background image configurable 2019-03-07 10:33:10 +01:00
Niels Lyngsø 3d941e89a6 Merge remote-tracking branch 'origin/dev-v8' into temp8-ui-update-login-screen 2019-03-07 10:00:56 +01:00
Bjarke Berg a988bd2608 Merge pull request #4809 from umbraco/temp8-3958-fixes-doc-type-details-in-narrow-screen
V8: makes document-details go on to two lines when necessary
2019-03-07 09:57:28 +01:00
Niels Lyngsø cb083d5b2a increased break point to 500px 2019-03-07 09:47:03 +01:00
Sebastiaan Janssen 8334d088e7 Update PULL_REQUEST_TEMPLATE.md 2019-03-07 09:33:43 +01:00
Shannon Deminick 75a9109971 Merge pull request #4874 from umbraco/temp8-4873-register-api-controllers
Enable adding api controllers
2019-03-07 18:33:13 +11:00
Shannon 52cea17816 Merge remote-tracking branch 'origin/dev-v8' into temp8-4873-register-api-controllers 2019-03-07 18:32:48 +11:00
Niels Lyngsø 6a67f38025 Merge remote-tracking branch 'origin/dev-v8' into temp8-3958-fixes-doc-type-details-in-narrow-screen 2019-03-07 08:12:04 +01:00
Shannon Deminick 22d012c4db Merge pull request #4856 from umbraco/temp8-4775-components-sequence
Better composer sequence
2019-03-07 18:04:01 +11:00
Niels Lyngsø 3046e44f60 minor UI improvements regarding validation 2019-03-07 07:59:13 +01:00
Shannon 790da9d5ca Adds todo note 2019-03-07 17:23:00 +11:00
Stephan 7f31ddc250 Bugfix CoreRuntime 2019-03-06 18:11:10 +01:00
Kenn Jacobsen 869d088e4b Always update URLs on save no matter which app is active 2019-03-06 17:02:10 +01:00
Sebastiaan Janssen 6e3ffc0dd9 Removes outdated gulp setup helper 2019-03-06 16:19:14 +01:00
Niels Lyngsø 45dc3a26ed Updated CONTRIBUTING_DETAILED to fit new npm setup (#4735)
Updated CONTRIBUTING_DETAILED to fit new npm setup

Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
2019-03-06 16:06:56 +01:00
Sebastiaan Janssen 9ef94a667c Merge pull request #4716 from MMasey/#4715
#4715 - V8 - IE11: section name underline not in correct position
2019-03-06 15:39:24 +01:00
Niels Lyngsø 70122c85d7 Merge pull request #4825 from kjac/v8-fix-validation-colors
V8: Update validation colors throughout the backoffice
2019-03-06 15:31:39 +01:00
Niels Lyngsø 72e236a7ab css class umb-list-item--error for when a list item contain a error that needs to be highlighted, currently only used for Save & Publish overlay-dialog. 2019-03-06 14:58:32 +01:00
Niels Lyngsø 444497be7c For Save & Publish overlay:
+ Publish multiple variants for new nodes.
+ Auto selects mandatory languages.
+ Auto selects languages that has changes.
+ Provides feedback if missing nodeName on variant that isn't open.
+ Highlights "mandatory language"-description if variant isn't selected.
2019-03-06 14:42:31 +01:00
Sebastiaan Janssen b7e929a675 Fix checkboxes and radiobuttons saving the wrong value 2019-03-06 14:01:11 +01:00
Stephan 2209b37a4a Bugfix CoreRuntime 2019-03-06 11:56:03 +01:00
Sebastiaan Janssen 634138724b Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbcheckbox.directive.js
#	src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbradiobutton.directive.js
#	src/Umbraco.Web.UI.Client/src/less/components/umb-form-check.less
#	src/Umbraco.Web.UI.Client/src/views/components/forms/umb-checkbox.html
#	src/Umbraco.Web.UI.Client/src/views/components/forms/umb-radiobutton.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/radiobuttons/radiobuttons.html
#	src/Umbraco.Web/Trees/ApplicationTreeController.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/Trees/MemberTreeController.cs
#	src/Umbraco.Web/Trees/TreeControllerBase.cs
#	src/Umbraco.Web/WebApi/Filters/HttpQueryStringFilterAttribute.cs
#	src/Umbraco.Web/WebApi/Filters/HttpQueryStringModelBinder.cs
#	src/umbraco.cms/businesslogic/translation/Translation.cs
2019-03-06 11:47:30 +01:00
Sebastiaan Janssen d1c9b7a060 Merge pull request #4842 from umbraco/temp8-merge-3464
Merge branch 'dev-v7' into dev-v8
2019-03-06 11:45:09 +01:00
Sebastiaan Janssen b65f60af78 Update documentation 2019-03-06 11:43:50 +01:00
Niels Lyngsoe 92453c4652 fix front-end requirement of umb-checkbox 2019-03-06 11:18:07 +01:00
Sebastiaan Janssen b86a1aa687 Merge branch 'patch-8.0.1' into dev-v8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs
2019-03-06 10:44:09 +01:00
Sebastiaan Janssen ac4c98a7fc Enable direct command execution in build script (#4882) 2019-03-06 10:35:26 +01:00
Bjarke Berg b406835c9c Code styling 2019-03-06 10:08:15 +01:00
Kenn Jacobsen 7b815cfcb3 Add methods for fetching multiple members to UmbracoHelper 2019-03-05 21:34:49 +01:00
Stephan 9f7fae2ca6 Enable adding api controllers 2019-03-05 19:23:57 +01:00
Bjarke Berg f508a97c18 Merge pull request #4857 from umbraco/temp8-4649-fix-nucache-url-segments
Fix NuCache url segments
2019-03-05 14:54:51 +01:00
Niels Lyngsø b4de15f19e removed unused htmlId 2019-03-05 14:22:58 +01:00
Bjarke Berg f8abd0f457 Merge pull request #4858 from umbraco/temp8-fix-malformed-logs
Fixes LogViewer if JSON log contains malformed JSON lines
2019-03-05 13:41:54 +01:00
Niels Lyngsø 31eefe1cf9 Front-end mandatory-validation for radiolist and checkbox list. 2019-03-05 13:20:59 +01:00
Stephan a14b1540ea Merge pull request #4848 from umbraco/temp8-modernize-nuget-install
Modernize NuGet install
2019-03-05 13:15:10 +01:00
Stephan 02764e0ccc Implement IPublishedContent Siblings 2019-03-05 13:02:59 +01:00
Warren Buckley 67fdf75da8 Fix typo 2019-03-05 11:12:04 +00:00
Niels Lyngsø 21405266ef align the use of input name attribute for checkboxes and radiobuttons 2019-03-05 11:38:43 +01:00
Niels Lyngsø a4d25dc594 design corrections 2019-03-05 11:38:04 +01:00
Warren Buckley 27cc433b96 We will ignore malformed log lines in the JSON log file - so the rest of the logviewer continues to work 2019-03-05 10:35:51 +00:00
Stephan cfa94b1bb8 Import missing file 2019-03-05 11:21:29 +01:00
Stephan 7a0f11bc6f Fix NuCache url segments 2019-03-05 11:15:30 +01:00
Stephan b665d4825d Better composer sequence 2019-03-05 08:53:37 +01:00
Stephan 55a374bb71 Introduce WebFinalComponent 2019-03-05 08:53:37 +01:00
Shannon 13b35ec7ce Fix to get Js unit tests working again. 2019-03-05 18:53:26 +11:00
Shannon Deminick 54968c819b Merge pull request #4803 from umbraco/temp8-4752-fix-reordering-grid-in-non-debug-mode
Solution for not using scope() in grid redordering
2019-03-05 16:52:01 +11:00
Shannon c910e3afaf Fixes javascript error when trying to unpublish an invariant item 2019-03-05 16:39:03 +11:00
Shannon Deminick 4b7c14113c Merge pull request #4770 from umbraco/temp8-4652-tinymce-inserting-image
change insertContent to selection.setContent
2019-03-05 16:12:05 +11:00
Shannon Deminick b294b83c9f Merge pull request #4753 from mvanhelmont/#4580
Redirects management is broken #4580
2019-03-05 16:04:11 +11:00
Shannon Deminick 5ddba3e64e Merge pull request #3851 from umbraco/temp-fix-formdatacollection-3796
Fixes binding of FormDataCollection for GET requests which fixes the …
2019-03-05 13:39:37 +10:00
Shannon 34a3389c17 Updates to latest Examine 2019-03-05 12:50:51 +11:00
Stephan 31b293aa4d Fix distributed cache handler for medias (#4751) 2019-03-04 16:39:34 +01:00
Sebastiaan Janssen 82b78c7530 Require higher NuGet version so we don't target VS15 any more (unsupported)
Making backups before we upgrade is no longer needed, removed from install.ps1
If people include the bin folder in their solution they will get errors upgrading now, we shouldn't need to try and fix this, there's no reason to include the bin folder in the solution - therefore install.core.ps1 is removed
2019-03-04 16:27:44 +01:00
Niels Lyngsø d3904086f0 adjusted PR 3464 for V8 2019-03-04 14:39:49 +01:00
Bjarke Berg a43f8c4cbd Bugfix: https://github.com/umbraco/Umbraco-CMS/issues/4827 - Fixed MediaPickerValueConverter when config is Only Images 2019-03-04 14:31:45 +01:00
Pete Duncanson f1d1c95709 Removed System.Web.WebPages reference in nonodes.aspx as was failing a clean build 2019-03-04 14:21:38 +01:00
Sebastiaan Janssen 58ce528324 Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/radiobuttons/radiobuttons.html
#	src/umbraco.cms/businesslogic/translation/Translation.cs
2019-03-04 13:43:31 +01:00
Niels Lyngsø c72a5c07fe Merge pull request #3464 from BatJan/feature/temp-U4-3463
3463 - Suggestion: Make checkboxes look prettier in checkbox lists
2019-03-04 11:39:08 +01:00
Stephan eace918258 Merge pull request #4782 from kjac/v8-fix-create-content-template
V8: Fix "ambient scope" error when creating content template from content
2019-03-04 10:40:40 +01:00
Niels Lyngsoe 409ae99bf7 renaming of umb-form-control to umb-form-check 2019-03-04 10:29:58 +01:00
Stephan 8961e8b4be Merge pull request #4834 from umbraco/temp-4609-rte-not-rendering-macros-correctly
Bugfix: Could not render macros in RTE
2019-03-04 09:29:06 +01:00
Stephan b526b8f246 Merge pull request #4823 from Brianmanden/patch-1
Update Utf8ToAsciiConverter.cs
2019-03-04 09:15:00 +01:00
Bjarke Berg ed6d54e64a Bugfix: Don't use ToString :'( 2019-03-04 08:43:19 +01:00
Bjarne Fyrstenborg 28d4f1cc44 Fix issues where table cells collapse when sorting doctypes in Nested Content config 2019-03-03 20:18:41 +01:00
Kenn Jacobsen 89153c2fcf Update log viewer error color 2019-03-03 16:22:12 +01:00
Kenn Jacobsen c134aff6cd Update validation colors throughout the backoffice 2019-03-03 13:54:45 +01:00
Brian Juul Andersen 57290c4180 Update Utf8ToAsciiConverter.cs
Fix minor grammatical error.
2019-03-02 21:44:28 +01:00
Kenn Jacobsen e695145019 Grid: Hide empty sticky bar 2019-03-02 12:06:04 +01:00
Kenn Jacobsen 84b60f8b9f V8: Make variant state clickable in various dialogs (#4760)
* Fix publish dialog

* Fix publish with descendants dialog

* Fix save dialog

* Fix scheduled publishing dialog

* Fix send to publish dialog

* Fix unpublish dialog

* Add missing magic IDs to send to publish dialog so the labels actually work.

* Add missing magic IDs to unpublish dialog
2019-03-01 15:21:34 +01:00
Niels Lyngsø e33ae253ee makes document-details go on to two lines when necessary 2019-03-01 12:56:09 +01:00
Niels Lyngsø a67163fd03 hack for not using scope() in grid redordering 2019-02-28 15:29:28 +01:00
Shannon Deminick cfc04a9df0 Merge pull request #4799 from robertjf/dev-v8-uduf-4749
v8 - uduf - Changed all references of umbracoUseSSL to Umbraco.Core.UseHttps to f…
2019-02-28 18:20:25 +11:00
Shannon 3e4ff05d37 removes unused params 2019-02-28 17:18:47 +10:00
Shannon Deminick 28034d664e Merge pull request #4793 from dinc5150/4489
v8 - uduf - Redirect away from page under the settings section when the page is deleted
2019-02-28 18:16:33 +11:00
David Sheiles edf3fd5d31 remove test code 2019-02-28 18:15:41 +11:00
David Sheiles f7705ef134 Move logic from navigation service to controller 2019-02-28 18:10:03 +11:00
David Sheiles f0caa6be4b Update null check 2019-02-28 17:57:05 +11:00
Robert Foster 5aa38c1f43 Changed all references of umbracoUseSSL to Umbraco.Core.UseHttps to fix issue #4749 2019-02-28 16:48:56 +10:00
Shannon Deminick b809f9f03a Merge pull request #4798 from emmanueltissera/v8-uduf2019-issue-4757
v8 - uduf - Fixes hotkey for navigation between apps and content apps
2019-02-28 17:45:16 +11:00
Shannon Deminick eabc05d6f8 Merge pull request #4796 from skartknet/4790_-_Content_and_media_overloads_for_Udis
4790 - added Content and Media Udi overloads
2019-02-28 17:33:05 +11:00
David Sheiles d3fb614d25 Move logic to tree service and navigarion service 2019-02-28 17:29:40 +11:00
Emmanuel Tissera 0eb7d404a1 Fixes hotkey for navigation between apps and content apps
Fixes https://github.com/umbraco/Umbraco-CMS/issues/4757
2019-02-28 17:10:39 +11:00
Mario Lopez 093b57505a simplified GuidUdi checking. 2019-02-28 16:50:28 +11:00
Shannon Deminick 2a7cd4d94a Merge pull request #4797 from iofsauron/4766-list-view-selected-bug
4766 list view selected bug
2019-02-28 16:31:56 +11:00
iofsauron 4503967778 4766 fixed up other instances where nodeSelectHandler was being passed incorrect number of arguments 2019-02-28 15:02:53 +10:00
Mario Lopez f227f2ed61 added Content and Media Udi overloads 2019-02-28 13:55:14 +11:00
iofsauron 553bf6d304 4766 Fixed list view selected item issue by uncommenting out the umb-table-body__fileicon and umb-table-body__checkicon. Fixed call to nodeSelectHandler in selectListViewNode by removing erroneous first parameter 2019-02-28 12:33:49 +10:00
David Sheiles 45dfef78bd Redirect away from page under the settings section when the page is deleted. Affects DataTypes, DocTypes, Macros, MediaTypes, Membertypes, PartialViewMacro,PartialViews, Scripts, Stylesheet & Templates 2019-02-28 13:33:45 +11:00
Shannon Deminick b172a5f847 Merge pull request #4791 from robertjf/dev-v8-uduf-4787
Fix for Content App badges not being displayed (#4787)
2019-02-28 13:05:56 +11:00
Shannon 41f80b942a Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2019-02-28 11:02:12 +10:00
Robert Foster 055f983cbf Fix for Content App badges not being displayed (#4787) 2019-02-28 11:01:59 +10:00
Shannon 3e9556fead Adds TODO note 2019-02-28 11:01:53 +10:00
Kenn Jacobsen 4851bb0534 Handle mixed variance when creating content templates from content 2019-02-27 19:13:51 +01:00
Kenn Jacobsen b403272389 Fix "ambient scope" error when creating content template from content 2019-02-27 18:54:53 +01:00
Niels Lyngsø 60b178dcf7 change insertContent to selection.setContent 2019-02-27 10:28:40 +01:00
Jan Skovgaard 969a9c1193 Update radiobuttons view to make use of the umb-radiobutton directive 2019-02-27 09:56:22 +01:00
Jan Skovgaard 3643e170c5 Add radiobutton directive 2019-02-27 09:55:52 +01:00
Kenn Jacobsen b5bda772af Make it possible to upload the same file twice or more (#4755) 2019-02-27 09:51:11 +01:00
Mikkel Holck Madsen 02ccd45bf6 Merge pull request #4767 from umbraco/temp8-4711-update-web-config-transformations-to-v8
Updated versions and added new dependencies to transformation file
2019-02-27 09:47:12 +01:00
Bjarke Berg b86e7dc0e8 Ensure we dont double insert 2019-02-27 09:44:28 +01:00
Jan Skovgaard afc872de5a Refactor checkboxlist to make use of the umbcheckbox directive 2019-02-27 09:40:48 +01:00
Jan Skovgaard 56aef39014 Add checkbox directive 2019-02-27 09:40:25 +01:00
Bjarke Berg 578eb8b32c Updated versions and added new dependencies to transformation file 2019-02-27 09:30:15 +01:00
Bjarke Berg f2d7ed69ca Fix for printing html in uninstall package readme 2019-02-27 09:10:33 +01:00
Jan Skovgaard ae07b2b299 Refactor modifiers so they're done on the top level of the block instead 2019-02-26 21:42:24 +01:00
Jan Skovgaard b99cf238e0 Fix order of pseudo selectors to :focus is actually also set on the focused radio button 2019-02-26 21:26:14 +01:00
Jan Skovgaard 68457b7eaf Refactor styling of checkbox and radiobuttons so they're now both "umb-form-control" with modifiers, which makes it easier to reuse especially the checkbox throughout the UI. The umb-editor has been extented to have a item element and a list modfier too. Overall less code too 2019-02-26 21:21:55 +01:00
Jan Skovgaard 24c74676f6 Merge branch 'dev-v7' into feature/temp-U4-3463 2019-02-26 19:45:51 +01:00
Marcel van Helmont ff708f4ad5 fixed correct destination url instead of #. 2019-02-26 12:17:20 +01:00
Marcel van Helmont 44212f6b53 Revert "the wrong id was used for getting the correct destination url."
This reverts commit 5d1fccb2c4.
2019-02-26 12:15:22 +01:00
Marcel van Helmont 5d1fccb2c4 the wrong id was used for getting the correct destination url. 2019-02-26 12:12:18 +01:00
Per Søndergaard Jensen ac1ee2fe0c #4428 - Replaced Log.Add calls with AuditService.Add in translations 2019-02-26 11:17:08 +01:00
Claus 746573d28b Merge pull request #4744 from kjac/v8-fix-selectable-search-results
V8: Fix the "selected" checkmark in tree picker search results
2019-02-26 10:36:07 +01:00
Kenn Jacobsen 09dc908332 Fix the "selected" checkmark in tree picker search results 2019-02-26 09:56:07 +01:00
Sebastiaan Janssen 35bf75bc82 Do the version dance 2019-02-26 09:28:51 +01:00
Sebastiaan Janssen cb0268dfdd Merge branch 'dev-v8-fix' into dev-v8 2019-02-26 09:17:47 +01:00
Sebastiaan Janssen 9186b392c9 Merge branch 'dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/imaging/umbimagecrop.directive.js
#	src/Umbraco.Web/Routing/PublishedContentRequestEngine.cs
2019-02-25 19:57:18 +01:00
Skid Vis 4f30dd32f1 Updates link to dev-v8
Was linked to temp8 which no longer exists and results in 404
2019-02-25 17:20:35 +01:00
Anders Bjerner bac2b1cb71 Updated reference to dev-v7 as dev-v8 is now the default branch 2019-02-25 17:19:55 +01:00
Bjarke Berg 57af355d85 Bugfix: get installStateComplete variable from labels 2019-02-25 14:37:25 +01:00
Carole Rennie Logan 9bcce48df3 still reference to temp8 2019-02-25 07:43:35 +01:00
Kenn Jacobsen b9d1df0844 Return folder creation to non-active state in media picker 2019-02-24 15:28:04 +01:00
Kenn Jacobsen 32a622a6ea Add missing documentation + a bit of renaming 2019-02-24 15:10:49 +01:00
Kenn Jacobsen 7ca6739cee Clear error before (re)submitting 2019-02-24 15:01:47 +01:00
Kenn Jacobsen 214457fc04 Add translation 2019-02-24 09:50:13 +01:00
Kenn Jacobsen 30d46a6204 Merge branch 'v8-wip-invalid-hostname' into v8-fix-invalid-hostname 2019-02-24 09:40:07 +01:00
Kenn Jacobsen b94b94ea06 Add serverside validation of assigned hostnames 2019-02-24 09:37:22 +01:00
Skid Vis c83630b376 Updates branch to checkout when trying v8
The branch specified, 'temp8', no longer exists. Updates to the current 'dev-v8' branch name.
2019-02-23 16:32:33 +01:00
Sebastiaan Janssen e1856bf851 Update README.md 2019-02-23 16:30:18 +01:00
Sebastiaan Janssen fe3525bc54 Update README.md 2019-02-23 16:27:18 +01:00
Sebastiaan Janssen 452dcbd016 Update README.md 2019-02-23 16:26:48 +01:00
Mike 7a20ea8781 fix: position of section name underline on IE11 2019-02-23 15:00:29 +00:00
Sebastiaan Janssen 4b489b52ef Bump version again 2019-02-23 14:21:44 +01:00
Stephan aa86dfa956 Bugfix exception during install, live models collision 2019-02-22 19:13:48 +01:00
Bjarke Berg 02122f5e03 Revert "Fix NullReferenceException when using LocalDb, because SqlServerSyntaxProvider.ServerVersion can be null"
This reverts commit a9450f9e.

Root cause is fixed
2019-02-22 14:27:54 +01:00
Bjarke Berg 064f637006 #4708 - Fix for YSOD when exiting preview with on invariant cultures 2019-02-22 11:23:57 +01:00
Bjarke Berg a9450f9ed9 Fix NullReferenceException when using LocalDb, because SqlServerSyntaxProvider.ServerVersion can be null 2019-02-22 11:02:37 +01:00
Stephan 04e916b41c Fix test 2019-02-22 10:42:43 +01:00
Stephan e167388e74 Make UniqueMediaPathScheme deterministic 2019-02-22 09:44:25 +01:00
Anders Bjerner 4d71c5550b Should be returned as a list - otherwise we'll get a new collection and new tab objects each time we iterate over it 2019-02-19 22:36:12 +01:00
Anders Bjerner 0636616a6b #H5IS 2019-02-19 22:21:13 +01:00
Sebastiaan Janssen 8f17d6fcd2 Merge branch 'patch-7.13.2' into dev-v7
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/colorpicker/colorpicker.controller.js
2019-02-19 11:22:59 +01:00
Niels Lyngsø 564117e62e Grid editor to use $watch for values that needs to transform for presentation 2019-02-19 10:19:02 +01:00
Niels Lyngsø 592d8db3e7 removed comment 2019-02-19 10:18:13 +01:00
Niels Lyngsø 6f67318432 corrected color variables 2019-02-19 10:18:01 +01:00
Shannon 9f2280da2f Merge branch 'temp8' into temp8-4011 2019-02-19 12:31:11 +11:00
SimonHilo 1300389ce6 Skip the check for approved/locked out members if not using Umbracos built-in MembershipProvider (#4607) 2019-02-18 20:49:27 +01:00
Kenn Jacobsen ea8d8ba771 Make the image crop slider move at 66 hertz 2019-02-18 20:39:16 +01:00
Kenn Jacobsen 1eb6ae10c9 Fix the initial zoom offset for new crops in the image cropper 2019-02-18 20:38:11 +01:00
Jan Skovgaard 5d3e1fb95f v7: User history showing even if it's empty (#4524) 2019-02-18 20:36:36 +01:00
Bjarke Berg a20fa3d9e2 Merge remote-tracking branch 'origin/temp8' into temp8-4011 2019-02-18 11:13:03 +01:00
Niels Lyngsø 3f13baa8e7 make Embed and Media work for Grid in SplitView when grid is not allowed to vary. 2019-02-18 11:00:47 +01:00
Niels Lyngsø 44b1a738bf clean up css for grid 2019-02-18 10:59:40 +01:00
Niels Lyngsø 2e40911450 get uniq ID by using String.CreateGuid() 2019-02-18 10:59:30 +01:00
Niels Lyngsø 13a326b467 remove logs 2019-02-18 10:58:59 +01:00
Niels Lyngsø 60fa931f3f Grid-RTE got a unique ID, which fixes TineMCE code, which is dependent on a unique ID. #4011 2019-02-13 14:38:25 +01:00
Niels Lyngsø 988be21990 making the grid work in splitview 2019-02-13 13:20:01 +01:00
Niels Lyngsø 9f182e6461 compressed login.jpg 2019-02-12 13:17:48 +01:00
Niels Lyngsø 2403373457 added login image 2019-02-12 13:16:28 +01:00
Niels Lyngsø e9e852c499 Merge remote-tracking branch 'origin/temp8' into temp8-ui-update-login-screen 2019-02-12 12:59:01 +01:00
Niels Lyngsø a1abdc8ba7 Login screen color changes 2019-02-12 11:56:51 +01:00
Anders Bjerner 6130b475da IDashboard -> IDashboardSlim 2019-02-01 18:47:17 +01:00
Niels Lyngsø 95b4f9141e test for gathering url for list items so you can Ctrl/CMD+click. 2019-02-01 14:06:44 +01:00
Kenn Jacobsen 19aae9ffdc Make sure the color picker label is stored on first select (#4325)
(cherry picked from commit 4dd51f645a)
2019-01-30 16:14:09 +01:00
Sebastiaan Janssen 218995f9e0 Set version to 7.13.2 2019-01-29 17:34:05 +01:00
Kenn Jacobsen 0d167c4f2d Fix callback
(cherry picked from commit 99f0e6c05a)
2019-01-29 14:13:22 +01:00
Kenn Jacobsen d44e0d8664 Set form dirty on color picker value change + update selected item label + clean up unused code
(cherry picked from commit 2c40e46d56)
2019-01-29 14:13:14 +01:00
Jan Skovgaard 94a4e34e0c Make sure to hide the whole state element for screen readers rather than just the icon 2019-01-27 15:32:52 +01:00
Jan Skovgaard 7d42583177 Fix animation 2019-01-27 15:30:02 +01:00
Jan Skovgaard 77a8697ca7 Make sure the border is green when the checkbox is checked and that it's darker gray when it is focused (also while checked) 2019-01-27 15:24:49 +01:00
Jan Skovgaard 7462686778 Add styles and minor refactoring so we no longer use the "wing" icon when a radio button is checked but rather make it look like a readio button 2019-01-27 15:22:37 +01:00
Jan Skovgaard 44d5ce4a2e Include the radiobuttonlist component 2019-01-27 15:21:54 +01:00
Jan Skovgaard 34888f31e6 Place the ul styling in the proper context 2019-01-27 14:50:15 +01:00
Jan Skovgaard 0994aac656 Restructure markup to ensure the label text is properly wrapped and make sure it all aligns nicely on small breakpoints too 2019-01-27 14:38:27 +01:00
Jan Skovgaard 0e0d38be30 Refactor styling of the checkbox so the boxes are now a tad smaller and better aligned with one another and the UI in general 2019-01-27 14:18:41 +01:00
Jan Skovgaard 91735e7e3f Fix bad merge 2019-01-27 14:17:59 +01:00
Jan Skovgaard 0d4b3e4173 Merge branch 'dev-v7' into feature/temp-U4-3463
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/less/components/umb-radiobuttons-list.less
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/radiobuttons/radiobuttons.html
2019-01-27 13:31:33 +01:00
Shannon a0f15bba44 Fixes binding of FormDataCollection for GET requests which fixes the compatibility with the latest WebApi 5.2.7 version 2018-12-11 11:58:39 +11:00
Jan Skovgaard 007cdeb9ab Fix long label issue on RADIO button list 2018-10-31 21:48:47 +01:00
Jan Skovgaard 5716353518 Offset the state 1 px to align it with the radio button list if they ever occur as properties beneath each other 2018-10-31 21:46:00 +01:00
Jan Skovgaard 87340d6c2c Fix width issue on the checkbox label 2018-10-31 21:24:35 +01:00
Jan Skovgaard fc742bcf18 Merge branch 'dev-v7' into feature/temp-U4-3463 2018-10-31 20:03:05 +01:00
Jan Skovgaard 4eb4cd8962 Refactor checkboxlist to show a prettier checkbox than the default browser one 2018-10-28 16:35:37 +01:00
Shannon beb325eacf oops got a couple versions wrong 2018-09-28 15:01:47 +10:00
Shannon 8e45bcf23f changes targetFramework in web.config 2018-09-28 14:34:39 +10:00
Shannon 40dc49ed47 updates nuspecs 2018-09-28 14:27:03 +10:00
Shannon 4b07305dc5 Update HtmlAgilityPack 2018-09-28 14:10:45 +10:00
Shannon 2514a59e93 Latest MS libs for benchmark project 2018-09-28 14:00:03 +10:00
Shannon 6843da790c Latest MS libs for benchmark project 2018-09-28 13:57:48 +10:00
Shannon ba1a9c3758 Updates to latest compatible CodeAnalysis & DotNetCompilerPlatform libs 2018-09-28 13:54:20 +10:00
Shannon 332ad6349d Updates latest newtonsoft.json 2018-09-28 12:59:12 +10:00
Shannon 42e48426e4 Updates other MS libs: ValueTuple, Dataflow, Reflection.Metadata 2018-09-28 12:44:17 +10:00
Shannon a0cc788f27 Updates to latest Image Processor versions 2018-09-28 12:24:16 +10:00
Shannon aecf96d74d Updates to latest MVC, WebApi and Owin 2018-09-28 12:19:34 +10:00
Shannon c75938076e reinstalls all packages flagged as 'requiresReinstallation' 2018-09-28 11:54:05 +10:00
Shannon cebbcb711a csproj, etc... updates for 452 (and 462 for benchmark proj) 2018-09-28 11:29:56 +10:00
1170 changed files with 27667 additions and 21090 deletions
+170 -122
View File
@@ -1,14 +1,176 @@
Umbraco Cms Build
--
----
# Umbraco Cms Build
# Quick!
## Are you sure?
To build Umbraco, fire PowerShell and move to Umbraco's repository root (the directory that contains `src`, `build`, `README.md`...). There, trigger the build with the following command:
In order to use Umbraco as a CMS and build your website with it, you should not build it yourself. If you're reading this then you're trying to contribute to Umbraco or you're debugging a complex issue.
- Are you about to create a pull request for Umbraco?
- Are you trying to get to the bottom of a problem in your existing Umbraco installation?
If the answer is yes, please read on. Otherwise, make sure to head on over [to the download page](https://our.umbraco.com/download) and start using Umbraco CMS as intended.
**Table of contents**
[Building from source](#building-from-source)
* [The quick build](#quick)
* [Build infrastructure](#build-infrastructure)
* [Properties](#properties)
* [GetUmbracoVersion](#getumbracoversion)
* [SetUmbracoVersion](#setumbracoversion)
* [Build](#build)
* [Build-UmbracoDocs](#build-umbracodocs)
* [Verify-NuGet](#verify-nuget)
* [Cleaning up](#cleaning-up)
[Azure DevOps](#azure-devops)
[Quirks](#quirks)
* [Powershell quirks](#powershell-quirks)
* [Git quirks](#git-quirks)
## Building from source
Did you read ["Are you sure"](#are-you-sure)?
### Quick!
To build Umbraco, fire up PowerShell and move to Umbraco's repository root (the directory that contains `src`, `build`, `LICENSE.md`...). There, trigger the build with the following command:
build/build.ps1
## PowerShell Quirks
You might run into [Powershell quirks](#powershell-quirks).
### Build Infrastructure
The Umbraco Build infrastructure relies on a PowerShell object. The object can be retrieved with:
$ubuild = build/build.ps1 -get
The object exposes various properties and methods that can be used to fine-grain build Umbraco. Some, but not all, of them are detailed below.
#### Properties
The object exposes the following properties:
* `SolutionRoot`: the absolute path to the solution root
* `VisualStudio`: a Visual Studio object (see below)
* `NuGet`: the absolute path to the NuGet executable
* `Zip`: the absolute path to the 7Zip executable
* `VsWhere`: the absolute path to the VsWhere executable
* `NodePath`: the absolute path to the Node install
* `NpmPath`: the absolute path to the Npm install
The Visual Studio object is `null` when Visual Studio has not been detected (eg on VSTS). When not null, the object exposes the following properties:
* `Path`: Visual Studio installation path (eg some place under `Program Files`)
* `Major`: Visual Studio major version (eg `15` for VS 2017)
* `Minor`: Visual Studio minor version
* `MsBUild`: the absolute path to the MsBuild executable
#### GetUmbracoVersion
Gets an object representing the current Umbraco version. Example:
$v = $ubuild.GetUmbracoVersion()
Write-Host $v.Semver
The object exposes the following properties:
* `Semver`: the semver object representing the version
* `Release`: the main part of the version (eg `7.6.33`)
* `Comment`: the pre release part of the version (eg `alpha02`)
* `Build`: the build number part of the version (eg `1234`)
#### SetUmbracoVersion
Modifies Umbraco files with the new version.
>This entirely replaces the legacy `UmbracoVersion.txt` file. Do *not* edit version infos in files.
The version must be a valid semver version. It can include a *pre release* part (eg `alpha02`) and/or a *build number* (eg `1234`). Examples:
$ubuild.SetUmbracoVersion("7.6.33")
$ubuild.SetUmbracoVersion("7.6.33-alpha.2")
$ubuild.SetUmbracoVersion("7.6.33+1234")
$ubuild.SetUmbracoVersion("7.6.33-beta.5+5678")
#### Build
Builds Umbraco. Temporary files are generated in `build.tmp` while the actual artifacts (zip files, NuGet packages...) are produced in `build.out`. Example:
$ubuild.Build()
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
**Note: web.config**
Building Umbraco requires a clean `web.config` file in the `Umbraco.Web.UI` project. If a `web.config` file already exists, the `pre-build` task (see below) will save it as `web.config.temp-build` and replace it with a clean copy of `web.Template.config`. The original file is replaced once it is safe to do so, by the `pre-packages` task.
#### Build-UmbracoDocs
Builds umbraco documentation. Temporary files are generated in `build.tmp` while the actual artifacts (docs...) are produced in `build.out`. Example:
Build-UmbracoDocs
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
#### Verify-NuGet
Verifies that projects all require the same version of their dependencies, and that NuSpec files require versions that are consistent with projects. Example:
Verify-NuGet
### Cleaning up
Once the solution has been used to run a site, one may want to "reset" the solution in order to run a fresh new site again.
At the very minimum, you want
git clean -Xdf src/Umbraco.Web.UI/App_Data
rm src/Umbraco.Web.UI/web.config
Then, a simple 'Rebuild All' in Visual Studio will recreate a fresh `web.config` but should be quite fast (since it does not really need to rebuild anything).
The `clean` Git command force (`-f`) removes (`-X`, note the capital X) all files and directories (`-d`) that are ignored by Git.
This will leave media files and views around, but in most cases, it will be enough.
To perform a more complete clear, you will want to also delete the content of the media, views, scripts... directories.
The following command will force remove all untracked files and directories, whether they are ignored by Git or not. Combined with `git reset` it can recreate a pristine working directory.
git clean -xdf .
For git documentation see:
* git [clean](<https://git-scm.com/docs/git-clean>)
* git [reset](<https://git-scm.com/docs/git-reset>)
## Azure DevOps
Umbraco uses Azure DevOps for continuous integration, nightly builds and release builds. The Umbraco CMS project on DevOps [is available for anonymous users](https://umbraco.visualstudio.com/Umbraco%20Cms).
DevOps uses the `Build-Umbraco` command several times, each time passing a different *target* parameter. The supported targets are:
* `pre-build`: prepares the build
* `compile-belle`: compiles Belle
* `compile-umbraco`: compiles Umbraco
* `pre-tests`: prepares the tests
* `compile-tests`: compiles the tests
* `pre-packages`: prepares the packages
* `pkg-zip`: creates the zip files
* `pre-nuget`: prepares NuGet packages
* `pkg-nuget`: creates NuGet packages
All these targets are executed when `Build-Umbraco` is invoked without a parameter (or with the `all` parameter). On VSTS, compilations (of Umbraco and tests) are performed by dedicated DevOps tasks. Similarly, creating the NuGet packages is also performed by dedicated DevOps tasks.
Finally, the produced artifacts are published in two containers that can be downloaded from DevOps: `zips` contains the zip files while `nuget` contains the NuGet packages.
>During a DevOps build, some environment `UMBRACO_*` variables are exported by the `pre-build` target and can be reused in other targets *and* in DevOps tasks. The `UMBRACO_TMP` environment variable is used in `Umbraco.Tests` to disable some tests that have issues with DevOps at the moment.
## Quirks
### PowerShell Quirks
There is a good chance that running `build.ps1` ends up in error, with messages such as
@@ -45,120 +207,6 @@ The best solution is to unblock the Zip file before un-zipping: right-click the
PS> Get-ChildItem -Recurse *.* | Unblock-File
## Git Quirks
### Git Quirks
Git might have issues dealing with long file paths during build. You may want/need to enable `core.longpaths` support (see [this page](https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) for details).
# Build Infrastructure
The Umbraco Build infrastructure relies on a PowerShell object. The object can be retrieved with:
$ubuild = build/build.ps1 -get
The object exposes various properties and methods that can be used to fine-grain build Umbraco. Some, but not all, of them are detailed below.
## Properties
The object exposes the following properties:
* `SolutionRoot`: the absolute path to the solution root
* `VisualStudio`: a Visual Studio object (see below)
* `NuGet`: the absolute path to the NuGet executable
* `Zip`: the absolute path to the 7Zip executable
* `VsWhere`: the absolute path to the VsWhere executable
* `NodePath`: the absolute path to the Node install
* `NpmPath`: the absolute path to the Npm install
The Visual Studio object is `null` when Visual Studio has not been detected (eg on VSTS). When not null, the object exposes the following properties:
* `Path`: Visual Studio installation path (eg some place under `Program Files`)
* `Major`: Visual Studio major version (eg `15` for VS 2017)
* `Minor`: Visual Studio minor version
* `MsBUild`: the absolute path to the MsBuild executable
## GetUmbracoVersion
Gets an object representing the current Umbraco version. Example:
$v = $ubuild.GetUmbracoVersion()
Write-Host $v.Semver
The object exposes the following properties:
* `Semver`: the semver object representing the version
* `Release`: the main part of the version (eg `7.6.33`)
* `Comment`: the pre release part of the version (eg `alpha02`)
* `Build`: the build number part of the version (eg `1234`)
## SetUmbracoVersion
Modifies Umbraco files with the new version.
>This entirely replaces the legacy `UmbracoVersion.txt` file. Do *not* edit version infos in files.
The version must be a valid semver version. It can include a *pre release* part (eg `alpha02`) and/or a *build number* (eg `1234`). Examples:
$ubuild.SetUmbracoVersion("7.6.33")
$ubuild.SetUmbracoVersion("7.6.33-alpha.2")
$ubuild.SetUmbracoVersion("7.6.33+1234")
$ubuild.SetUmbracoVersion("7.6.33-beta.5+5678")
## Build
Builds Umbraco. Temporary files are generated in `build.tmp` while the actual artifacts (zip files, NuGet packages...) are produced in `build.out`. Example:
$ubuild.Build()
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
### web.config
Building Umbraco requires a clean `web.config` file in the `Umbraco.Web.UI` project. If a `web.config` file already exists, the `pre-build` task (see below) will save it as `web.config.temp-build` and replace it with a clean copy of `web.Template.config`. The original file is replaced once it is safe to do so, by the `pre-packages` task.
## Build-UmbracoDocs
Builds umbraco documentation. Temporary files are generated in `build.tmp` while the actual artifacts (docs...) are produced in `build.out`. Example:
Build-UmbracoDocs
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
## Verify-NuGet
Verifies that projects all require the same version of their dependencies, and that NuSpec files require versions that are consistent with projects. Example:
Verify-NuGet
# VSTS
Continuous integration, nightly builds and release builds run on VSTS.
VSTS uses the `Build-Umbraco` command several times, each time passing a different *target* parameter. The supported targets are:
* `pre-build`: prepares the build
* `compile-belle`: compiles Belle
* `compile-umbraco`: compiles Umbraco
* `pre-tests`: prepares the tests
* `compile-tests`: compiles the tests
* `pre-packages`: prepares the packages
* `pkg-zip`: creates the zip files
* `pre-nuget`: prepares NuGet packages
* `pkg-nuget`: creates NuGet packages
All these targets are executed when `Build-Umbraco` is invoked without a parameter (or with the `all` parameter). On VSTS, compilations (of Umbraco and tests) are performed by dedicated VSTS tasks. Similarly, creating the NuGet packages is also performed by dedicated VSTS tasks.
Finally, the produced artifacts are published in two containers that can be downloaded from VSTS: `zips` contains the zip files while `nuget` contains the NuGet packages.
>During a VSTS build, some environment `UMBRACO_*` variables are exported by the `pre-build` target and can be reused in other targets *and* in VSTS tasks. The `UMBRACO_TMP` environment variable is used in `Umbraco.Tests` to disable some tests that have issues with VSTS at the moment.
# Notes
*This part needs to be cleaned up*
Nightlies should use some sort of build number.
We should increment versions as soon as a version is released. Ie, as soon as `7.6.33` is released, we should `Set-UmbracoVersion 7.6.34-alpha` and push.
NuGet / NuSpec consistency checks are performed in tests. We should move it so it is done as part of the PowerShell script even before we try to compile and run the tests.
/eof
Git might have issues dealing with long file paths during build. You may want/need to enable `core.longpaths` support (see [this page](https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) for details).
-34
View File
@@ -1,34 +0,0 @@
Umbraco Cms Clear
--
----
Once the solution has been used to run a site, one may want to "reset" the solution in order to run a fresh new site again.
## Fast
At the very minimum, you want
git clean -Xdf src/Umbraco.Web.UI/App_Data
rm src/Umbraco.Web.UI/web.config
Then, a simple 'Rebuild All' in Visual Studio will recreate a fresh `web.config` but should be quite fast (since it does not really need to rebuild anything).
The `clean` Git command force (`-f`) removes (`-X`, note the capital X) all files and directories (`-d`) that are ignored by Git.
This will leave medias and views around, but in most cases, it will be enough.
## More
To perform a more complete clear, you will want to also delete the content of the media, views, masterpages, scripts... directories.
## Full
The following command will force remove all untracked files and directories, be they ignored by Git or not. Combined with `git reset` it can recreate a pristine working directory.
git clean -xdf .
## Docs
See
* git [clean](<https://git-scm.com/docs/git-clean>)
* git [reset](<https://git-scm.com/docs/git-reset>)
+187 -97
View File
@@ -1,97 +1,187 @@
_Looking for Umbraco version 8? [Click here](https://github.com/umbraco/Umbraco-CMS/blob/temp8/.github/V8_GETTING_STARTED.md) to go to the v8 branch_
# Contributing to Umbraco CMS
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to Umbraco CMS.
These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
Remember, we're a friendly bunch and are happy with whatever contribution you might provide. Below are guidelines for success that we've gathered over the years. If you choose to ignore them then we still love you 💖.
## Contributing code changes
This document gives you a quick overview on how to get started, we will link to in-depth documentation throughout if you need some more background info.
## Guidelines for contributions we welcome
Not all changes are wanted, so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes and we'll be nice about it, thanking you for spending your valuable time.
We have [documented what we consider small and large changes](CONTRIBUTION_GUIDELINES.md). Make sure to talk to us before making large changes.
Remember, if an issue is in the `Up for grabs` list or you've asked for some feedback before you sent us a PR, your PR will not be closed as unwanted.
## How do I begin?
Great question! The short version goes like this:
* **Fork** - create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS)
![Fork the repository](img/forkrepository.png)
* **Clone** - when GitHub has created your fork, you can clone it in your favorite Git tool
![Clone the fork](img/clonefork.png)
* **Build** - build your fork of Umbraco locally as described in [building Umbraco from source code](BUILD.md)
* **Change** - make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](#questions)
* **Commit** - done? Yay! 🎉 It is recommended to create a new branch now and name it after the issue you're fixing, we usually follow the format: `temp-12345`. This means it's a temporary branch for the particular issue you're working on, in this case `12345`
* **Push** - great, now you can push the changes up to your fork on GitHub
* **Create pull request** - exciting! You're ready to show us your changes (or not quite ready, you just need some feedback to progress). GitHub has picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go.
![Create a pull request](img/createpullrequest.png)
### Further reading
At this point you might want to [read on about contributing in depth](CONTRIBUTING_DETAILED.md).
### Reviews
You've sent us your first contribution, congratulations! Now what?
The [pull request team](#the-pr-team) can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request you to make some additional changes.
We have [a process in place which you can read all about](REVIEW_PROCESS.md). The very abbreviated version is:
- Your PR will get a reply within 48 hours
- An in-depth reply will be added within at most 2 weeks
- The PR will be either merged or rejected within at most 4 weeks
- Sometimes it is difficult to meet these timelines and we'll talk to you
## Styleguides
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a `.editorconfig` file so that Visual Studio knows what to do with whitespace, line endings, etc.
## The PR team
The pull request team consists of a member of Umbraco HQ, [Sebastiaan](https://github.com/nul800sebastiaan), who gets assistance from the following community members
- [Anders Bjerner](https://github.com/abjerner)
- [Dave Woestenborghs](https://github.com/dawoe)
- [Emma Burstow](https://github.com/emmaburstow)
- [Poornima Nayar](https://github.com/poornimanayar)
These wonderful volunteers will provide you with a first reply to your PR, review and test out your changes and might ask more questions. After that they'll let Umbraco HQ know if everything seems okay.
## Questions?
You can get in touch with [the PR team](#the-pr-team) in multiple ways, we love open conversations and we are a friendly bunch. No question you have is stupid. Any questions you have usually helps out multiple people with the same question. Ask away:
- If there's an existing issue on the issue tracker then that's a good place to leave questions and discuss how to start or move forward
- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"](https://our.umbraco.com/forum/contributing-to-umbraco-cms/) forum, the team monitors that one closely
## Code of Conduct
This project and everyone participating in it is governed by the [our Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Sebastiaan Janssen - sj@umbraco.dk](mailto:sj@umbraco.dk).
## Contributing to Umbraco, in depth
There are other ways to contribute, and there's a few more things that you might be wondering about. We will answer the [most common questions and ways to contribute in our detailed documentation](CONTRIBUTING_DETAILED.md).
## Credits
This contribution guide borrows heavily from the excellent work on [the Atom contribution guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md). A big [#h5yr](http://h5yr.com/) to them!
# Contributing to Umbraco CMS
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to Umbraco CMS.
These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
Remember, we're a friendly bunch and are happy with whatever contribution you might provide. Below are guidelines for success that we've gathered over the years. If you choose to ignore them then we still love you 💖.
**Code of conduct**
This project and everyone participating in it is governed by the [our Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Sebastiaan Janssen - sj@umbraco.dk](mailto:sj@umbraco.dk).
**Table of contents**
[Contributing code changes](#contributing-code-changes)
* [Guidelines for contributions we welcome](#guidelines-for-contributions-we-welcome)
* [What can I start with?](#what-can-i-start-with)
* [How do I begin?](#how-do-i-begin)
* [Pull requests](#pull-requests)
[Reviews](#reviews)
* [Styleguides](#styleguides)
* [The PR team](#the-pr-team)
* [Questions?](#questions)
[Working with the code](#working-with-the-code)
* [Building Umbraco from source code](#building-umbraco-from-source-code)
* [Working with the source code](#working-with-the-source-code)
* [Making changes after the PR was opened](#making-changes-after-the-pr-was-opened)
* [Which branch should I target for my contributions?](#which-branch-should-i-target-for-my-contributions)
* [Keeping your Umbraco fork in sync with the main repository](#keeping-your-umbraco-fork-in-sync-with-the-main-repository)
## Contributing code changes
This document gives you a quick overview on how to get started.
### Guidelines for contributions we welcome
Not all changes are wanted, so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes and we'll be nice about it, thanking you for spending your valuable time.
We have [documented what we consider small and large changes](CONTRIBUTION_GUIDELINES.md). Make sure to talk to us before making large changes.
Remember, if an issue is in the `Up for grabs` list or you've asked for some feedback before you sent us a PR, your PR will not be closed as unwanted.
### What can I start with?
Unsure where to begin contributing to Umbraco? You can start by looking through [these `Up for grabs` issues](https://github.com/umbraco/Umbraco-CMS/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Acommunity%2Fup-for-grabs+)
### How do I begin?
Great question! The short version goes like this:
* **Fork** - create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS)
![Fork the repository](img/forkrepository.png)
* **Clone** - when GitHub has created your fork, you can clone it in your favorite Git tool
![Clone the fork](img/clonefork.png)
* **Build** - build your fork of Umbraco locally as described in [building Umbraco from source code](BUILD.md)
* **Change** - make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](#questions)
* **Commit** - done? Yay! 🎉 **Important:** create a new branch now and name it after the issue you're fixing, we usually follow the format: `temp-12345`. This means it's a temporary branch for the particular issue you're working on, in this case `12345`. When you have a branch, commit your changes. Don't commit to `v8/dev`, create a new branch first.
* **Push** - great, now you can push the changes up to your fork on GitHub
* **Create pull request** - exciting! You're ready to show us your changes (or not quite ready, you just need some feedback to progress). GitHub has picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go.
![Create a pull request](img/createpullrequest.png)
### Pull requests
The most successful pull requests usually look a like this:
* Fill in the required template
* Include screenshots and animated GIFs in your pull request whenever possible.
* Unit tests, while optional are awesome, thank you!
* New code is commented with documentation from which [the reference documentation](https://our.umbraco.com/documentation/Reference/) is generated
Again, these are guidelines, not strict requirements.
## Reviews
You've sent us your first contribution, congratulations! Now what?
The [pull request team](#the-pr-team) can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request you to make some additional changes.
We have [a process in place which you can read all about](REVIEW_PROCESS.md). The very abbreviated version is:
- Your PR will get a reply within 48 hours
- An in-depth reply will be added within at most 2 weeks
- The PR will be either merged or rejected within at most 4 weeks
- Sometimes it is difficult to meet these timelines and we'll talk to you
### Styleguides
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a `.editorconfig` file so that Visual Studio knows what to do with whitespace, line endings, etc.
### The PR team
The pull request team consists of a member of Umbraco HQ, [Sebastiaan](https://github.com/nul800sebastiaan), who gets assistance from the following community members
- [Anders Bjerner](https://github.com/abjerner)
- [Dave Woestenborghs](https://github.com/dawoe)
- [Emma Burstow](https://github.com/emmaburstow)
- [Poornima Nayar](https://github.com/poornimanayar)
These wonderful volunteers will provide you with a first reply to your PR, review and test out your changes and might ask more questions. After that they'll let Umbraco HQ know if everything seems okay.
### Questions?
You can get in touch with [the PR team](#the-pr-team) in multiple ways, we love open conversations and we are a friendly bunch. No question you have is stupid. Any questions you have usually helps out multiple people with the same question. Ask away:
- If there's an existing issue on the issue tracker then that's a good place to leave questions and discuss how to start or move forward
- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"](https://our.umbraco.com/forum/contributing-to-umbraco-cms/) forum, the team monitors that one closely
## Working with the code
### Building Umbraco from source code
In order to build the Umbraco source code locally, first make sure you have the following installed.
* Visual Studio 2017 v15.9.7+
* Node v10+
* npm v6.4.1+
The easiest way to get started is to run `build.ps1` which will build both the backoffice (also known as "Belle") and the Umbraco core. You can then easily start debugging from Visual Studio, or if you need to debug Belle you can run `gulp dev` in `src\Umbraco.Web.UI.Client`. See [this page](BUILD.md) for more details.
Alternatively, you can open `src\umbraco.sln` in Visual Studio 2017 (version 15.9.7 or higher, [the community edition is free](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) for you to use to contribute to Open Source projects). In Visual Studio, find the Task Runner Explorer (in the View menu under Other Windows) and run the build task under the gulpfile.
![Gulp build in Visual Studio](img/gulpbuild.png)
After this build completes, you should be able to hit `F5` in Visual Studio to build and run the project. A IISExpress webserver will start and the Umbraco installer will pop up in your browser, follow the directions there to get a working Umbraco install up and running.
### Working with the source code
Some parts of our source code are over 10 years old now. And when we say "old", we mean "mature" of course!
There's two big areas that you should know about:
1. The Umbraco backoffice is a extensible AngularJS app and requires you to run a `gulp dev` command while you're working with it, so changes are copied over to the appropriate directories and you can refresh your browser to view the results of your changes.
You may need to run the following commands to set up gulp properly:
```
npm cache clean --force
npm install
npm run build
```
2. "The rest" is a C# based codebase, which is mostly ASP.NET MVC based. You can make changes, build them in Visual Studio, and hit `F5` to see the result.
To find the general areas of something you're looking to fix or improve, have a look at the following two parts of the API documentation.
* [The AngularJS based backoffice files](https://our.umbraco.com/apidocs/ui/#/api) (to be found in `src\Umbraco.Web.UI.Client\src`)
* [The C# application](https://our.umbraco.com/apidocs/csharp/)
### Which branch should I target for my contributions?
We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `v8/dev`. Whatever the default is, that's where we'd like you to target your contributions.
![Which branch should I target?](img/defaultbranch.png)
### Making changes after the PR was opened
If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco!
### Keeping your Umbraco fork in sync with the main repository
We recommend you sync with our repository before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier.
Also, if you've submitted a pull request three weeks ago and want to work on something new, you'll want to get the latest code to build against of course.
To sync your fork with this original one, you'll have to add the upstream url, you only have to do this once:
```
git remote add upstream https://github.com/umbraco/Umbraco-CMS.git
```
Then when you want to get the changes from the main repository:
```
git fetch upstream
git rebase upstream/v8/dev
```
In this command we're syncing with the `v8/dev` branch, but you can of course choose another one if needed.
(More info on how this works: [http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated](http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated))
-162
View File
@@ -1,162 +0,0 @@
# Contributing in detail
There's more than one way to contribute to Umbraco, there's some more suggestions below.
When contributing code to Umbraco there's plenty of things you'll want to know, skip down to [What should I know before I get started](#what-should-i-know-before-i-get-started) for the answers to your burning questions.
#### Table Of Contents
[How Can I Contribute?](#how-can-i-contribute)
* [Reporting Bugs](#reporting-bugs)
* [Suggesting Enhancements](#suggesting-enhancements)
* [Your First Code Contribution](#your-first-code-contribution)
* [Pull Requests](#pull-requests)
[Styleguides](#styleguides)
[What should I know before I get started?](#what-should-i-know-before-i-get-started)
* [Working with the source code](#working-with-the-source-code)
* [What branch should I target for my contributions?](#what-branch-should-i-target-for-my-contributions)
* [Building Umbraco from source code](#building-umbraco-from-source-code)
* [Keeping your Umbraco fork in sync with the main repository](#keeping-your-umbraco-fork-in-sync-with-the-main-repository)
## How Can I Contribute?
### Reporting Bugs
This section guides you through submitting a bug report for Umbraco CMS. Following these guidelines helps maintainers and the community understand your report 📝, reproduce the behavior 💻 💻, and find related reports 🔎.
Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](https://github.com/umbraco/Umbraco-CMS/issues/new/choose), the information it asks for helps us resolve issues faster.
> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
##### Before Submitting A Bug Report
* Most importantly, check **if you can reproduce the problem** in the [latest version of Umbraco](https://our.umbraco.com/download/). We might have already fixed your particular problem.
* It also helps tremendously to check if the issue you're experiencing is present in **a clean install** of the Umbraco version you're currently using. Custom code can have side-effects that don't occur in a clean install.
* **Use the Google**. Whatever you're experiencing, Google it plus "Umbraco" - usually you can get some pretty good hints from the search results, including open issues and further troubleshooting hints.
* If you do find and existing issue has **and the issue is still open**, add a comment to the existing issue if you have additional information. If you have the same problem and no new info to add, just "star" the issue.
Explain the problem and include additional details to help maintainers reproduce the problem. The following is a long description which we've boiled down into a few very simple questions in the issue tracker when you create a new issue. We're listing the following hints to indicate that the most successful reports usually have a lot of this ground covered:
* **Use a clear and descriptive title** for the issue to identify the problem.
* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining which steps you took in the backoffice to get to a certain undesireable result, e.g. you created a document type, inherting 3 levels deep, added a certain datatype, tried to save it and you got an error.
* **Provide specific examples to demonstrate the steps**. If you wrote some code, try to provide a code sample as specific as possible to be able to reproduce the behavior.
* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
* **Explain which behavior you expected to see instead and why.**
Provide more context by answering these questions:
* **Can you reproduce the problem** when `debug="false"` in your `web.config` file?
* **Did the problem start happening recently** (e.g. after updating to a new version of Umbraco) or was this always a problem?
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
Include details about your configuration and environment:
* **Which version of Umbraco are you using?**
* **What is the environment you're using Umbraco in?** Is this a problem on your local machine or on a server. Tell us about your configuration: Windows version, IIS/IISExpress, database type, etc.
* **Which packages do you have installed?**
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion for Umbraco, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion 📝 and find related suggestions 🔎.
Most of the suggestions in the [reporting bugs](#reporting-bugs) section also count for suggesting enhancements.
Some additional hints that may be helpful:
* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of Umbraco which the suggestion is related to.
* **Explain why this enhancement would be useful to most Umbraco users** and isn't something that can or should be implemented as a [community package](https://our.umbraco.com/projects/).
### Your First Code Contribution
Unsure where to begin contributing to Umbraco? You can start by looking through [these `Up for grabs` and issues](https://issues.umbraco.org/issues?q=&project=U4&tagValue=upforgrabs&release=&issueType=&search=search) or on the [new issue tracker](https://github.com/umbraco/Umbraco-CMS/issues?q=is%3Aopen+is%3Aissue+label%3Acommunity%2Fup-for-grabs).
### Pull Requests
The most successful pull requests usually look a like this:
* Fill in the required template
* Include screenshots and animated GIFs in your pull request whenever possible.
* Unit tests, while optional are awesome, thank you!
* New code is commented with documentation from which [the reference documentation](https://our.umbraco.com/documentation/Reference/) is generated
Again, these are guidelines, not strict requirements.
## Making changes after the PR was opened
If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco!
## Styleguides
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a `.editorconfig` file so that Visual Studio knows what to do with whitespace, line endings, etc.
## What should I know before I get started?
### Working with the source code
Some parts of our source code is over 10 years old now. And when we say "old", we mean "mature" of course!
There's two big areas that you should know about:
1. The Umbraco backoffice is a extensible AngularJS app and requires you to run a `gulp dev` command while you're working with it, so changes are copied over to the appropriate directories and you can refresh your browser to view the results of your changes.
You may need to run the following commands to set up gulp properly:
```
npm cache clean
npm install -g gulp
npm install -g gulp-cli
npm install
gulp build
```
2. "The rest" is a C# based codebase, with some traces of our WebForms past but mostly ASP.NET MVC based these days. You can make changes, build them in Visual Studio, and hit `F5` to see the result.
To find the general areas of something you're looking to fix or improve, have a look at the following two parts of the API documentation.
* [The AngularJS based backoffice files](https://our.umbraco.com/apidocs/ui/#/api) (to be found in `src\Umbraco.Web.UI.Client\src`)
* [The rest](https://our.umbraco.com/apidocs/csharp/)
### What branch should I target for my contributions?
We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `dev-v7`. Whatever the default is, that's where we'd like you to target your contributions.
![What branch do you want me to target?](img/defaultbranch.png)
### Building Umbraco from source code
In order to build the Umbraco source code locally, first make sure you have the following installed.
* Visual Studio 2017 v15.3+
* Node v10+ (Installed via `build.bat` script. If you already have it installed, make sure you're running at least v10)
* npm v6.4.1+ (Installed via `build.bat` script. If you already have it installed, make sure you're running at least v6.4.1)
The easiest way to get started is to run `build.bat` which will build both the backoffice (also known as "Belle") and the Umbraco core. You can then easily start debugging from Visual Studio, or if you need to debug Belle you can run `gulp dev` in `src\Umbraco.Web.UI.Client`. See [this page](BUILD.md) for more details.
Alternatively, you can open `src\umbraco.sln` in Visual Studio 2017 (version 15.3 or higher, [the community edition is free](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) for you to use to contribute to Open Source projects). In Visual Studio, find the Task Runner Explorer (in the View menu under Other Windows) and run the build task under the gulpfile.
![Gulp build in Visual Studio](img/gulpbuild.png)
After this build completes, you should be able to hit `F5` in Visual Studio to build and run the project. A IISExpress webserver will start and the Umbraco installer will pop up in your browser, follow the directions there to get a working Umbraco install up and running.
### Keeping your Umbraco fork in sync with the main repository
We recommend you sync with our repository before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier.
Also, if you've submitted a pull request three weeks ago and want to work on something new, you'll want to get the latest code to build against of course.
To sync your fork with this original one, you'll have to add the upstream url, you only have to do this once:
```
git remote add upstream https://github.com/umbraco/Umbraco-CMS.git
```
Then when you want to get the changes from the main repository:
```
git fetch upstream
git rebase upstream/dev-v7
```
In this command we're syncing with the `dev-v7` branch, but you can of course choose another one if needed.
(More info on how this works: [http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated](http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated))
-33
View File
@@ -1,33 +0,0 @@
# Contributing to Umbraco CMS
When youre considering creating a pull request for Umbraco CMS, we will categorize them in two different sizes, small and large.
The process for both sizes is very similar, as [explained in the contribution document](CONTRIBUTING.md#how-do-i-begin).
## Small PRs
Bug fixes and small improvements - can be recognized by seeing a small number of changes and possibly a small number of new files.
Were usually able to handle small PRs pretty quickly. A community volunteer will do the initial review and flag it for Umbraco HQ as “community tested”. If everything looks good, it will be merged pretty quickly [as per the described process](REVIEW_PROCESS.md).
### Up for grabs
Umbraco HQ will regularly mark newly created issues on the issue tracker with the `Up for grabs` tag. This means that the proposed changes are wanted in Umbraco but the HQ does not have the time to make them at this time. These issues are usually small enough to fit in the "Small PRs" category and we encourage anyone to pick them up and help out.
If you do start working on something, make sure to leave a small comment on the issue saying something like: "I'm working on this". That way other people stumbling upon the issue know they don't need to pick it up, someone already has.
## Large PRs
New features and large refactorings - can be recognized by seeing a large number of changes, plenty of new files, updates to package manager files (NuGets packages.config, NPMs packages.json, etc.).
We would love to follow the same process for larger PRs but this is not always possible due to time limitations and priorities that need to be aligned. We dont want to put up any barriers, but this document should set the correct expectations.
Please make sure to describe your idea in an issue, it helps to put in mockup screenshots or videos.
If the change makes sense for HQ to include in Umbraco CMS we will leave you some feedback on how wed like to see it being implemented.
If a larger pull request is encouraged by Umbraco HQ, the process will be similar to what is described in the [small PRs process](#small-prs) above, well get feedback to you within 14 days. Finalizing and merging the PR might take longer though as it will likely need to be picked up by the development team to make sure everything is in order. Well keep you posted on the progress.
### Pull request or package?
If it doesnt fit in CMS right now, we will likely encourage you to make it into a package instead. A package is a great way to check out popularity of a feature, learn how people use it, validate good usability and to fix bugs.
Eventually, a package could "graduate" to be included in the CMS.
+11 -2
View File
@@ -2,11 +2,20 @@
- [ ] I have added steps to test this contribution in the description below
If there's an existing issue for this PR then this fixes: <!-- link to the issue here! -->
If there's an existing issue for this PR then this fixes <!-- link to the issue here! -->
### Description
<!-- A description of the changes proposed in the pull-request and how to test these changes -->
<!--
A description of the changes proposed in the pull-request and how to test these changes.
The most successful pull requests usually look a like this:
* Fill in this template with details: what did you do, why did you do it, how can we test the changes?
* Include screenshots and animated GIFs in your pull request whenever possible.
* Unit tests, while optional are awesome, thank you!
While these are guidelines and not strict requirements, they really help us evaluate your PR quicker.
-->
<!-- Thanks for contributing to Umbraco CMS! -->
+40 -62
View File
@@ -1,62 +1,40 @@
_You are browsing the Umbraco v8 branch. Umbraco 8 is currently under development._
[![pullreminders](https://pullreminders.com/badge.svg)](https://pullreminders.com?ref=badge)
_Looking for Umbraco version 7? [Click here](https://github.com/umbraco/Umbraco-CMS) to go to the v7 branch._
_Ready to try out Version 8? [See the quick start guide](V8_GETTING_STARTED.md)._
When is Umbraco 8 coming?
=========================
When it's ready. We're done with the major parts of the architecture work and are focusing on three separate tracks to prepare Umbraco 8 for release:
1) Editor Track (_currently in progress_). Without editors, there's no market for Umbraco. So we want to make sure that Umbraco 8 is full of love for editors.
2) Partner Track. Without anyone implementing Umbraco, there's nothing for editors to update. So we want to make sure that Umbraco 8 is a joy to implement
3) Contributor Track. Without our fabulous ecosystem of both individual Umbracians and 3rd party ISVs, Umbraco wouldn't be as rich a platform as it is today. We want to make sure that it's easy, straight forward and as backwards-compatible as possible to create packages for Umbraco
Once a track is done, we start releasing previews where we ask people to test the features we believe are ready. While the testing is going on and we gather feedback, we move on to the next track. This doesn't mean that there hasn't already been work done in the area, but that a track focuses on finalizing, polishing and preparing the features for release.
Umbraco CMS
===========
The friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 443,000 websites worldwide: [https://umbraco.com](https://umbraco.com)
[![ScreenShot](img/vimeo.png)](https://vimeo.com/172382998/)
## Umbraco CMS
Umbraco is a free open source Content Management System built on the ASP.NET platform. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.
## Watch an introduction video
[![ScreenShot](https://shop.umbraco.com/images/whatisumbraco.png)](https://umbraco.tv/videos/umbraco-v7/content-editor/basics/introduction/cms-explanation/)
## Umbraco - The Friendly CMS
For the first time on the Microsoft platform, there is a free user- and developer-friendly CMS that makes it quick and easy to create websites - and a breeze to build complex web applications. Umbraco has award-winning integration capabilities and supports ASP.NET MVC or Web Forms, including User and Custom Controls, right out of the box.
Umbraco is not only loved by developers, but is a content editor's dream. Enjoy intuitive editing tools, media management, responsive views, and approval workflows to send your content live.
Used by more than 443,000 active websites including Carlsberg, Segway, Amazon and Heinz and **The Official ASP.NET and IIS.NET website from Microsoft** ([https://asp.net](https://asp.net) / [https://iis.net](https://iis.net)), you can be sure that the technology is proven, stable and scalable. Backed by the team at Umbraco HQ, and supported by a dedicated community of over 220,000 craftspeople globally, you can trust that Umbraco is a safe choice and is here to stay.
To view more examples, please visit [https://umbraco.com/case-studies-testimonials/](https://umbraco.com/case-studies-testimonials/)
## Why Open Source?
As an Open Source platform, Umbraco is more than just a CMS. We are transparent with our roadmap for future versions, our incremental sprint planning notes are publicly accessible, and community contributions and packages are available for all to use.
## Trying out Umbraco CMS
[Umbraco Cloud](https://umbraco.com/cloud) is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed.
If you want to DIY, you can [download Umbraco](https://our.umbraco.com/download) either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you.
## Community
Our friendly community is available 24/7 at the community hub we call ["Our Umbraco"](https://our.umbraco.com). Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources.
## Contribute to Umbraco
Umbraco is contribution-focused and community-driven. If you want to contribute back to Umbraco, please check out our [guide to contributing](CONTRIBUTING.md).
## Found a bug?
Another way you can contribute to Umbraco is by providing issue reports. For information on how to submit an issue report refer to our [online guide for reporting issues](CONTRIBUTING_DETAILED.md#reporting-bugs).
You can comment and report issues on the [github issue tracker](https://github.com/umbraco/Umbraco-CMS/issues).
Since [September 2018](https://umbraco.com/blog/a-second-take-on-umbraco-issue-tracker-hello-github-issues/), the old issue tracker is in read-only mode, but can still be found at [http://issues.umbraco.org](http://issues.umbraco.org).
# [Umbraco CMS](https://umbraco.com) &middot; [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE.md) [![Build status](https://umbraco.visualstudio.com/Umbraco%20Cms/_apis/build/status/Cms%208%20Continuous?branchName=v8/dev)](https://umbraco.visualstudio.com/Umbraco%20Cms/_build?definitionId=75) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) [![pullreminders](https://pullreminders.com/badge.svg)](https://pullreminders.com?ref=badge)
Umbraco is the friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 500,000 websites worldwide. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.
Learn more at [umbraco.com](https://umbraco.com)
<p align="center">
<img src="img/logo.png" alt="Umbraco Logo" />
</p>
See the official [Umbraco website](https://umbraco.com) for an introduction, core mission and values of the product and team behind it.
- [Getting Started](#getting-started)
- [Documentation](#documentation)
- [Community](#join-the-umbraco-community)
- [Contributing](#contributing)
Please also see our [Code of Conduct](CODE_OF_CONDUCT.md).
## Getting Started
[Umbraco Cloud](https://umbraco.com/cloud) is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed.
If you want to DIY, you can [download Umbraco]((https://our.umbraco.com/download)) either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you.
## Documentation
The documentation for Umbraco CMS can be found [on Our Umbraco](https://our.umbraco.com/documentation/). The source for the Umbraco docs is [open source as well](https://github.com/umbraco/UmbracoDocs) and we're happy to look at your documentation contributions.
## Join the Umbraco community
Our friendly community is available 24/7 at the community hub we call ["Our Umbraco"](https://our.umbraco.com/). Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources.
Besides "Our", we all support each other also via Twitter: [Umbraco HQ](https://twitter.com/umbraco), [Release Updates](https://twitter.com/umbracoproject), [#umbraco](https://twitter.com/hashtag/umbraco)
## Contributing
Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our [guide to contributing](CONTRIBUTING.md).
-25
View File
@@ -1,25 +0,0 @@
# Review process
You're an awesome person and have sent us your contribution in the form of a pull request! It's now time to relax for a bit and wait for our response.
In order to set some expectations, here's what happens next.
## Review process
You will get an initial reply within 48 hours (workdays) to acknowledge that weve seen your PR and well pick it up as soon as we can.
You will get feedback within at most 14 days after opening the PR. Youll most likely get feedback sooner though. Then there are a few possible outcomes:
- Your proposed change is awesome! We merge it in and it will be included in the next minor release of Umbraco
- If the change is a high priority bug fix, we will cherry-pick it into the next patch release as well so that we can release it as soon as possible
- Your proposed change is awesome but needs a bit more work, well give you feedback on the changes wed like to see
- Your proposed change is awesome but.. not something were looking to include at this point. Well close your PR and the related issue (well be nice about it!)
## Are you still available?
We understand you have other things to do and can't just drop everything to help us out.
So if were asking for your help to improve the PR well wait for two weeks to give you a fair chance to make changes. Well ask for an update if we dont hear back from you after that time.
If we dont hear back from you for 4 weeks, well close the PR so that it doesnt just hang around forever. Youre very welcome to re-open it once you have some more time to spend on it.
There will be times that we really like your proposed changes and well finish the final improvements wed like to see ourselves. You still get the credits and your commits will live on in the git repository.
-37
View File
@@ -1,37 +0,0 @@
## A quick start guide for getting up and runnning with Umbraco v8
### What you need:
* [Visual Studio 2017 Community (Free)](https://www.visualstudio.com/vs/community/), or Professional, Enterprise, etc... _(**Minimum of Version 15.7** or higher, this is important, you WILL get issues with lesser versions)_
* .NET Framework 4.7.2 installed, get it here: https://www.microsoft.com/net/download/thank-you/net472?survey=false
* .NET Framework 4.7.2 developer pack, get it here: https://www.microsoft.com/net/download/thank-you/net472-developer-pack _(be sure this is the ENU file which will be named `NDP472-DevPack-ENU.exe`)_
* Clone the Umbraco repository using the `temp8` branch. If your git client doesn't support specifying the branch as you clone then use the command `git clone --single-branch -b temp8 <your fork url>`. _(If you clone the repo using the default v7 branch and then checkout the `temp8` branch you **might** get problems)_
### Start the solution
* Open the `/src/umbraco.sln` Visual Studio solution
* Start the solution (easiest way is to use `ctrl + F5`)
* When the solution is first built this may take some time since it will restore all nuget and npm packages, build the .net solution and also build the angular solution
* When the website starts you'll see the Umbraco installer and just follow the prompts
* You're all set!
### Want to run from a zip instead?
If you just want to try out a few things, you can run the site from a zip file which you can download from here https://github.com/umbraco/Umbraco-CMS/releases/tag/temp8-cg18.
We recommend running the site with the Visual Studio since you'll be able to remain up to date with the latest source code changes.
### Making code changes
* _[The process for making code changes in v8 is the same as v7](https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/.github/CONTRIBUTING.md)_
* Any .NET changes you make you just need to compile
* Any Angular/JS changes you make you will need to make sure you are running the Gulp build. Easiest way to do this is from within Visual Studio in the `Task Runner Explorer`. You can find this window by pressing `ctrl + q` and typing in `Task Runner Explorer`. In this window you'll see all Gulp tasks, double click on the `dev` task, this will compile the angular solution and start a file watcher, then any html/js changes you make are automatically built.
* When making js changes, you should have the chrome developer tools open to ensure that cache is disabled
* If you are only making C# changes and are not touching the UI code at all, you can significantly speed up the VS build by adding an empty file specifically called `~/src/preserve.belle`. The UI (Belle) build will then be skipped during a Rebuild.
### What to work on?
We are keeping track of [known issues and limitations here](http://issues.umbraco.org/issue/U4-11279). These line items will eventually be turned into actual tasks to be worked on. Feel free to help us keep this list updated if you find issues and even help fix some of these items. If there is a particular item you'd like to help fix please mention this on the task and we'll create a sub task for the item to continue discussion there.
There's [a list of tasks for v8 that haven't been completed](https://github.com/umbraco/Umbraco-CMS/labels/release%2F8.0.0). If you are interested in helping out with any of these please mention this on the task. This list will be constantly updated as we begin to document and design some of the other tasks that still need to get done.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

+1
View File
@@ -161,3 +161,4 @@ build/temp/
# eof
/src/Umbraco.Web.UI.Client/TESTS-*.xml
/src/ApiDocs/api/*
+6 -5
View File
@@ -14,6 +14,7 @@
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
<language>en-US</language>
<tags>umbraco</tags>
<repository type="git" url="https://github.com/umbraco/umbraco-cms" />
<dependencies>
<group targetFramework="net472">
@@ -22,7 +23,6 @@
the latter would pick anything below 3.0.0 and that includes prereleases such as 3.0.0-alpha, and we do
not want this to happen as the alpha of the next major is, really, the next major already.
-->
<dependency id="AutoMapper" version="[8.0.0,8.999999)" />
<dependency id="LightInject" version="[5.4.0,5.999999)" />
<dependency id="LightInject.Annotation" version="[1.1.0,1.999999)" />
<dependency id="LightInject.Web" version="[2.0.0,2.999999)" />
@@ -40,10 +40,12 @@
<dependency id="Serilog.Formatting.Compact.Reader" version="[1.0.3,1.999999)" />
<dependency id="Serilog.Settings.AppSettings" version="[2.2.2,2.999999)" />
<dependency id="Serilog.Sinks.File" version="[4.0.0,4.999999)" />
<dependency id="Serilog.Sinks.Map" version="[1.0.0,1.999999)" />
<dependency id="Serilog.Sinks.Async" version="[1.3.0,1.999999)" />
<dependency id="Umbraco.SqlServerCE" version="[4.0.0.1,4.999999)" />
<dependency id="NPoco" version="[3.9.4,3.999999)" />
</group>
</dependencies>
</metadata>
<files>
@@ -51,10 +53,9 @@
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net472\Umbraco.Core.dll" />
<!-- docs -->
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\Umbraco.Core.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\net472\Umbraco.Core.xml" />
<!-- symbols -->
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Core\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Core" />
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib\net472\Umbraco.Core.pdb" />
</files>
</package>
+7 -8
View File
@@ -14,6 +14,7 @@
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
<language>en-US</language>
<tags>umbraco</tags>
<repository type="git" url="https://github.com/umbraco/umbraco-cms" />
<dependencies>
<group targetFramework="net472">
@@ -43,7 +44,7 @@
<dependency id="System.Threading.Tasks.Dataflow" version="[4.9.0,4.999999)" />
</group>
</dependencies>
</metadata>
<files>
@@ -53,14 +54,12 @@
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.dll" target="lib\net472\Umbraco.Examine.dll" />
<!-- docs -->
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.xml" target="lib\Umbraco.Web.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.xml" target="lib\Umbraco.Examine.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.xml" target="lib\net472\Umbraco.Web.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net472\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.xml" target="lib\net472\Umbraco.Examine.xml" />
<!-- symbols -->
<file src="$BuildTmp$\bin\Umbraco.Web.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Web\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web" />
<file src="$BuildTmp$\bin\Umbraco.Examine.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Examine\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Examine" />
<file src="$BuildTmp$\bin\Umbraco.Web.pdb" target="lib\net472\Umbraco.Web.pdb" />
<file src="$BuildTmp$\bin\Umbraco.Examine.pdb" target="lib\net472\Umbraco.Examine.pdb" />
</files>
</package>
+3 -1
View File
@@ -14,6 +14,7 @@
<summary>Installs Umbraco Cms in your Visual Studio ASP.NET project</summary>
<language>en-US</language>
<tags>umbraco</tags>
<repository type="git" url="https://github.com/umbraco/umbraco-cms" />
<dependencies>
<group targetFramework="net472">
@@ -25,7 +26,7 @@
not want this to happen as the alpha of the next major is, really, the next major already.
-->
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.4.0, 2.999999)" />
<dependency id="Umbraco.ModelsBuilder.Ui" version="[8.0.4]" />
<dependency id="Umbraco.ModelsBuilder.Ui" version="[8.1.0]" />
<dependency id="ImageProcessor.Web" version="[4.10.0.100,4.999999)" />
<dependency id="ImageProcessor.Web.Config" version="[2.5.0.100,2.999999)" />
<dependency id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="[2.0.1,2.999999)" />
@@ -58,6 +59,7 @@
<!-- config transforms -->
<!-- beware! config transforms not supported by PackageReference -->
<file src="tools\Web.config.install.xdt" target="Content\Web.config.install.xdt" />
<file src="tools\serilog.config.install.xdt" target="Content\config\serilog.config.install.xdt" />
<file src="tools\ClientDependency.config.install.xdt" target="Content\config\ClientDependency.config.install.xdt" />
<file src="tools\umbracoSettings.config.install.xdt" target="Content\config\umbracoSettings.config.install.xdt" />
<file src="tools\Views.Web.config.install.xdt" target="Views\Web.config.install.xdt" /> <!-- FIXME: Content\ !! and then... transform?! -->
+8 -7
View File
@@ -1,12 +1,13 @@
_ _ __ __ ____ _____ _____ ____
| | | | \/ | _ \| __ \ /\ / ____/ __ \
| | | | \ / | |_) | |__) | / \ | | | | | |
| | | | |\/| | _ <| _ / / /\ \| | | | | |
| |__| | | | | |_) | | \ \ / ____ | |___| |__| |
\____/|_| |_|____/|_| \_/_/ \_\_____\____/
888
888
888 888 88888b.d88b. 88888b. 888d888 8888b. .d8888b .d88b.
888 888 888 "888 "88b 888 "88b 888P" "88b d88P" d88""88b
888 888 888 888 888 888 888 888 .d888888 888 888 888
Y88b 888 888 888 888 888 d88P 888 888 888 Y88b. Y88..88P
"Y88888 888 888 888 88888P" 888 "Y888888 "Y8888P "Y88P"
----------------------------------------------------
------------------------------------------------------------------
Don't forget to build!
@@ -8,7 +8,7 @@
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(factoryType)" xdt:Transform="SetAttributes(factoryType)" />
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(factoryType)" xdt:Transform="SetAttributes(factoryType)" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="Umbraco.Web.PublishedContentModels" xdt:Transform="InsertIfMissing" />
@@ -18,13 +18,13 @@
<system.web>
<pages
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
xdt:Locator="Match(pageParserFilterType,pageBaseType,userControlBaseType)"
xdt:Transform="SetAttributes(pageParserFilterType,pageBaseType,userControlBaseType)">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" xdt:Locator="Match(namespace)" xdt:Transform="SetAttributes(assembly)" />
<add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" xdt:Locator="Match(namespace)" xdt:Transform="SetAttributes(assembly)" />
</controls>
</pages>
</system.web>
+21 -4
View File
@@ -18,9 +18,20 @@ if ($project) {
# Copy umbraco and umbraco_files from package to project folder
$umbracoFolder = Join-Path $projectPath "Umbraco"
New-Item -ItemType Directory -Force -Path $umbracoFolder
New-Item -ItemType Directory -Force -Path $umbracoFolder
$umbracoFolderSource = Join-Path $installPath "UmbracoFiles\Umbraco"
robocopy $umbracoFolderSource $umbracoFolder /is /it /e /xf UI.xml /LOG:$copyLogsPath\UmbracoCopy.log
Write-Host "copying files to $umbracoFolder ..."
# see https://support.microsoft.com/en-us/help/954404/return-codes-that-are-used-by-the-robocopy-utility-in-windows-server-2
robocopy $umbracoFolderSource $umbracoFolder /is /it /e
if (($lastexitcode -eq 1) -or ($lastexitcode -eq 3) -or ($lastexitcode -eq 5) -or ($lastexitcode -eq 7))
{
write-host "Copy succeeded!"
}
else
{
write-host "Copy failed with exit code:" $lastexitcode
}
$copyWebconfig = $true
$destinationWebConfig = Join-Path $projectPath "Web.config"
@@ -40,7 +51,11 @@ if ($project) {
}
}
}
Catch { }
Catch
{
Write-Host "An error occurred:"
Write-Host $_
}
}
if($copyWebconfig -eq $true)
@@ -74,7 +89,9 @@ if ($project) {
}
Catch
{
# Not a big problem if this fails, let it go
# Not a big problem if this fails, let it go
# Write-Host "An error occurred:"
# Write-Host $_
}
}
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">>
<appSettings>
<add key="serilog:using:File" value="Umbraco.Core" xdt:Transform="SetAttributes(value)" xdt:Locator="Match(key)"/>
<add key="serilog:write-to:File.shared" xdt:Transform="Remove" xdt:Locator="Match(key)"/>
</appSettings>
</configuration>
+44
View File
@@ -0,0 +1,44 @@
$uenv=build/build.ps1 -get
$src = "$($uenv.SolutionRoot)\src"
$tmp = $uenv.BuildTemp
$out = $uenv.BuildOutput
$DocFxJson = "$src\ApiDocs\docfx.json"
$DocFxSiteOutput = "$tmp\_site\*.*"
################ Do the UI docs
$uenv.CompileBelle()
"Moving to Umbraco.Web.UI.Client folder"
cd .\src\Umbraco.Web.UI.Client
"Generating the docs and waiting before executing the next commands"
& gulp docs | Out-Null
# change baseUrl
$BaseUrl = "https://our.umbraco.com/apidocs/v8/ui/"
$IndexPath = "./docs/api/index.html"
(Get-Content $IndexPath).replace('location.href.replace(rUrl, indexFile)', "`'" + $BaseUrl + "`'") | Set-Content $IndexPath
# zip it
& $uenv.BuildEnv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*"
################ Do the c# docs
# Build the solution in debug mode
$SolutionPath = Join-Path -Path $src -ChildPath "umbraco.sln"
#$uenv.CompileUmbraco()
#restore nuget packages
$uenv.RestoreNuGet()
# run DocFx
$DocFx = $uenv.BuildEnv.DocFx
Write-Host "$DocFxJson"
& $DocFx metadata $DocFxJson
& $DocFx build $DocFxJson
# zip it
& $uenv.BuildEnv.Zip a -tzip -r "$out\csharp-docs.zip" $DocFxSiteOutput
+67 -5
View File
@@ -11,11 +11,21 @@
[Alias("loc")]
[switch] $local = $false,
# enable docfx
[Parameter(Mandatory=$false)]
[Alias("doc")]
[switch] $docfx = $false,
# keep the build directories, don't clear them
[Parameter(Mandatory=$false)]
[Alias("c")]
[Alias("cont")]
[switch] $continue = $false
[switch] $continue = $false,
# execute a command
[Parameter(Mandatory=$false, ValueFromRemainingArguments=$true)]
[String[]]
$command
)
# ################################################################
@@ -26,7 +36,7 @@
$ubuild = &"$PSScriptRoot\build-bootstrap.ps1"
if (-not $?) { return }
$ubuild.Boot($PSScriptRoot,
@{ Local = $local; },
@{ Local = $local; WithDocFx = $docfx },
@{ Continue = $continue })
if ($ubuild.OnError()) { return }
@@ -382,13 +392,13 @@
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Core.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Symbols -Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmscore.log"
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmscore.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Core." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Web.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Symbols -Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmsweb.log"
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmsweb.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Web." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.nuspec" `
@@ -420,6 +430,53 @@
$this.CopyFile("$($this.SolutionRoot)\build\Azure\azuregalleryrelease.ps1", $this.BuildOutput)
})
$ubuild.DefineMethod("PrepareCSharpDocs",
{
Write-Host "Prepare C# Documentation"
$src = "$($this.SolutionRoot)\src"
$tmp = $this.BuildTemp
$out = $this.BuildOutput
$DocFxJson = Join-Path -Path $src "\ApiDocs\docfx.json"
$DocFxSiteOutput = Join-Path -Path $tmp "\_site\*.*"
#restore nuget packages
$this.RestoreNuGet()
# run DocFx
$DocFx = $this.BuildEnv.DocFx
& $DocFx metadata $DocFxJson
& $DocFx build $DocFxJson
# zip it
& $this.BuildEnv.Zip a -tzip -r "$out\csharp-docs.zip" $DocFxSiteOutput
})
$ubuild.DefineMethod("PrepareAngularDocs",
{
Write-Host "Prepare Angular Documentation"
$src = "$($this.SolutionRoot)\src"
$out = $this.BuildOutput
$this.CompileBelle()
"Moving to Umbraco.Web.UI.Client folder"
cd .\src\Umbraco.Web.UI.Client
"Generating the docs and waiting before executing the next commands"
& gulp docs | Out-Null
# change baseUrl
$BaseUrl = "https://our.umbraco.com/apidocs/v8/ui/"
$IndexPath = "./docs/api/index.html"
(Get-Content $IndexPath).replace('location.href.replace(rUrl, indexFile)', "`'" + $BaseUrl + "`'") | Set-Content $IndexPath
# zip it
& $this.BuildEnv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*"
})
$ubuild.DefineMethod("Build",
{
$error.Clear()
@@ -451,6 +508,7 @@
if ($this.OnError()) { return }
$this.PostPackageHook()
if ($this.OnError()) { return }
Write-Host "Done"
})
@@ -475,7 +533,11 @@
# run
if (-not $get)
{
$ubuild.Build()
if ($command.Length -eq 0)
{
$command = @( "Build" )
}
$ubuild.RunMethod($command);
if ($ubuild.OnError()) { return }
}
if ($get) { return $ubuild }
+10 -24
View File
@@ -2,21 +2,20 @@
"metadata": [
{
"src": [
{
{
"src": "../",
"files": [
"Umbraco.Core/Umbraco.Core.csproj",
"Umbraco.Web/Umbraco.Web.csproj"
],
"exclude": [
"**/obj/**",
"**/bin/**",
"_site/**"
],
"cwd": "../src"
"**/bin/**"
]
}
],
"dest": "../apidocs/api",
"filter": "../apidocs/docfx.filter.yml"
"dest": "api",
"filter": "docfx.filter.yml"
}
],
"build": {
@@ -35,19 +34,7 @@
"*.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"resource": [
{
"files": [
"images/**"
],
"exclude": [
"obj/**",
"_site/**"
"obj/**"
]
}
],
@@ -57,8 +44,7 @@
"**.md"
],
"exclude": [
"obj/**",
"_site/**"
"obj/**"
]
}
],
@@ -67,9 +53,9 @@
"_enableSearch": true,
"_disableContribution": false
},
"dest": "_site",
"dest": "../../build.tmp/_site",
"template": [
"default", "umbracotemplate"
]
}
}
}
+2 -2
View File
@@ -18,5 +18,5 @@ using System.Resources;
[assembly: AssemblyVersion("8.0.0")]
// these are FYI and changed automatically
[assembly: AssemblyFileVersion("8.0.1")]
[assembly: AssemblyInformationalVersion("8.0.1")]
[assembly: AssemblyFileVersion("8.1.0")]
[assembly: AssemblyInformationalVersion("8.1.0")]
+9 -4
View File
@@ -1,10 +1,10 @@
using System;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Web;
using Umbraco.Core;
[assembly: PreApplicationStartMethod(typeof(BindingRedirects), "Initialize")]
// no binding redirect for now = de-activate
//[assembly: PreApplicationStartMethod(typeof(BindingRedirects), "Initialize")]
namespace Umbraco.Core
{
@@ -18,7 +18,7 @@ namespace Umbraco.Core
// this only gets called when an assembly can't be resolved
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
/// <summary>
/// This is used to do an assembly binding redirect via code - normally required due to signature changes in assemblies
/// </summary>
@@ -27,14 +27,19 @@ namespace Umbraco.Core
/// <returns></returns>
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
// When an assembly can't be resolved. In here we can do magic with the assembly name and try loading another.
// keep here for reference - we don't use AutoMapper
/*
//AutoMapper:
// this is used for loading a signed assembly of AutoMapper (v. 3.1+) without having to recompile old code.
// ensure the assembly is indeed AutoMapper and that the PublicKeyToken is null before trying to Load again
// do NOT just replace this with 'return Assembly', as it will cause an infinite loop -> stackoverflow
if (args.Name.StartsWith("AutoMapper") && args.Name.EndsWith("PublicKeyToken=null"))
return Assembly.Load(args.Name.Replace(", PublicKeyToken=null", ", PublicKeyToken=be96cd2c38ef1005"));
*/
return null;
}
}
}
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Cache
{
@@ -13,11 +12,6 @@ namespace Umbraco.Core.Cache
public static NoCacheRepositoryCachePolicy<TEntity, TId> Instance { get; } = new NoCacheRepositoryCachePolicy<TEntity, TId>();
public IRepositoryCachePolicy<TEntity, TId> Scoped(IAppPolicyCache runtimeCache, IScope scope)
{
throw new NotImplementedException();
}
public TEntity Get(TId id, Func<TId, TEntity> performGet, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performGet(id);
@@ -44,21 +44,22 @@ namespace Umbraco.Core.Compose
public void Terminate()
{ }
internal static IUser UnknownUser => new User { Id = Constants.Security.UnknownUserId, Name = Constants.Security.UnknownUserName, Email = "" };
private IUser CurrentPerformingUser
{
get
{
var identity = Thread.CurrentPrincipal?.GetUmbracoIdentity();
return identity == null
? new User { Id = 0, Name = "SYSTEM", Email = "" }
: _userService.GetUserById(Convert.ToInt32(identity.Id));
var user = identity == null ? null : _userService.GetUserById(Convert.ToInt32(identity.Id));
return user ?? UnknownUser;
}
}
private IUser GetPerformingUser(int userId)
{
var found = userId >= 0 ? _userService.GetUserById(userId) : null;
return found ?? new User {Id = 0, Name = "SYSTEM", Email = ""};
return found ?? UnknownUser;
}
private string PerformingIp
@@ -22,7 +22,7 @@ namespace Umbraco.Core.Compose
private static void ContentService_Moved(IContentService sender, MoveEventArgs<IContent> e)
{
foreach (var item in e.MoveInfoCollection.Where(x => x.OriginalPath.Contains(Constants.System.RecycleBinContent.ToInvariantString())))
foreach (var item in e.MoveInfoCollection.Where(x => x.OriginalPath.Contains(Constants.System.RecycleBinContentString)))
{
var relationService = Current.Services.RelationService;
const string relationTypeAlias = Constants.Conventions.RelationTypes.RelateParentDocumentOnDeleteAlias;
@@ -37,7 +37,7 @@ namespace Umbraco.Core.Compose
private static void MediaService_Moved(IMediaService sender, MoveEventArgs<IMedia> e)
{
foreach (var item in e.MoveInfoCollection.Where(x => x.OriginalPath.Contains(Constants.System.RecycleBinMedia.ToInvariantString())))
foreach (var item in e.MoveInfoCollection.Where(x => x.OriginalPath.Contains(Constants.System.RecycleBinMediaString)))
{
var relationService = Current.Services.RelationService;
const string relationTypeAlias = Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteAlias;
+5 -1
View File
@@ -133,7 +133,11 @@ namespace Umbraco.Core.Composing
Configs.RegisterWith(_register);
return _register.CreateFactory();
IFactory factory = null;
// ReSharper disable once AccessToModifiedClosure -- on purpose
_register.Register(_ => factory, Lifetime.Singleton);
factory = _register.CreateFactory();
return factory;
}
/// <summary>
@@ -1,4 +1,4 @@
using AutoMapper;
using Umbraco.Core.Mapping;
using Umbraco.Core.Models.Identity;
namespace Umbraco.Core.Composing.CompositionExtensions
@@ -8,7 +8,9 @@ namespace Umbraco.Core.Composing.CompositionExtensions
{
public static Composition ComposeCoreMappingProfiles(this Composition composition)
{
composition.Register<Profile, IdentityMapperProfile>();
composition.RegisterUnique<UmbracoMapper>();
composition.WithCollectionBuilder<MapDefinitionCollectionBuilder>()
.Add<IdentityMapDefinition>();
return composition;
}
}
@@ -46,6 +46,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions
composition.RegisterUnique<IPartialViewRepository, PartialViewRepository>();
composition.RegisterUnique<IScriptRepository, ScriptRepository>();
composition.RegisterUnique<IStylesheetRepository, StylesheetRepository>();
composition.RegisterUnique<IContentTypeCommonRepository, ContentTypeCommonRepository>();
return composition;
}
@@ -98,7 +98,6 @@ namespace Umbraco.Core.Composing.CompositionExtensions
: appPlugins.GetDirectories()
.SelectMany(x => x.GetDirectories("Lang"))
.SelectMany(x => x.GetFiles("*.xml", SearchOption.TopDirectoryOnly))
.Where(x => Path.GetFileNameWithoutExtension(x.FullName).Length == 5)
.Select(x => new LocalizedTextServiceSupplementaryFileSource(x, false));
//user defined langs that overwrite the default, these should not be used by plugin creators
@@ -106,7 +105,6 @@ namespace Umbraco.Core.Composing.CompositionExtensions
? Enumerable.Empty<LocalizedTextServiceSupplementaryFileSource>()
: configLangFolder
.GetFiles("*.user.xml", SearchOption.TopDirectoryOnly)
.Where(x => Path.GetFileNameWithoutExtension(x.FullName).Length == 10)
.Select(x => new LocalizedTextServiceSupplementaryFileSource(x, true));
return new LocalizedTextServiceFileSources(
+4
View File
@@ -4,6 +4,7 @@ using Umbraco.Core.Configuration;
using Umbraco.Core.Dictionary;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Mapping;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PackageActions;
using Umbraco.Core.Packaging;
@@ -103,6 +104,9 @@ namespace Umbraco.Core.Composing
#region Getters
public static UmbracoMapper Mapper
=> _factory.GetInstance<UmbracoMapper>();
public static IShortStringHelper ShortStringHelper
=> _shortStringHelper ?? (_shortStringHelper = _factory?.TryGetInstance<IShortStringHelper>()
?? new DefaultShortStringHelper(new DefaultShortStringHelperConfig().WithDefault(Configs.Settings())));
@@ -0,0 +1,171 @@
using System;
using System.Collections.Generic;
namespace Umbraco.Core.Composing
{
/// <summary>
/// Implements an un-ordered collection builder.
/// </summary>
/// <typeparam name="TBuilder">The type of the builder.</typeparam>
/// <typeparam name="TCollection">The type of the collection.</typeparam>
/// <typeparam name="TItem">The type of the items.</typeparam>
/// <remarks>
/// <para>A set collection builder is the most basic collection builder,
/// where items are not ordered.</para>
/// </remarks>
public abstract class SetCollectionBuilderBase<TBuilder, TCollection, TItem> : CollectionBuilderBase<TBuilder, TCollection, TItem>
where TBuilder : SetCollectionBuilderBase<TBuilder, TCollection, TItem>
where TCollection : class, IBuilderCollection<TItem>
{
protected abstract TBuilder This { get; }
/// <summary>
/// Clears all types in the collection.
/// </summary>
/// <returns>The builder.</returns>
public TBuilder Clear()
{
Configure(types => types.Clear());
return This;
}
/// <summary>
/// Adds a type to the collection.
/// </summary>
/// <typeparam name="T">The type to append.</typeparam>
/// <returns>The builder.</returns>
public TBuilder Add<T>()
where T : TItem
{
Configure(types =>
{
var type = typeof(T);
if (types.Contains(type)) types.Remove(type);
types.Add(type);
});
return This;
}
/// <summary>
/// Adds a type to the collection.
/// </summary>
/// <param name="type">The type to append.</param>
/// <returns>The builder.</returns>
public TBuilder Add(Type type)
{
Configure(types =>
{
EnsureType(type, "register");
if (types.Contains(type)) types.Remove(type);
types.Add(type);
});
return This;
}
/// <summary>
/// Adds types to the collections.
/// </summary>
/// <param name="types">The types to append.</param>
/// <returns>The builder.</returns>
public TBuilder Add(IEnumerable<Type> types)
{
Configure(list =>
{
foreach (var type in types)
{
// would be detected by CollectionBuilderBase when registering, anyways, but let's fail fast
EnsureType(type, "register");
if (list.Contains(type)) list.Remove(type);
list.Add(type);
}
});
return This;
}
/// <summary>
/// Removes a type from the collection.
/// </summary>
/// <typeparam name="T">The type to remove.</typeparam>
/// <returns>The builder.</returns>
public TBuilder Remove<T>()
where T : TItem
{
Configure(types =>
{
var type = typeof(T);
if (types.Contains(type)) types.Remove(type);
});
return This;
}
/// <summary>
/// Removes a type from the collection.
/// </summary>
/// <param name="type">The type to remove.</param>
/// <returns>The builder.</returns>
public TBuilder Remove(Type type)
{
Configure(types =>
{
EnsureType(type, "remove");
if (types.Contains(type)) types.Remove(type);
});
return This;
}
/// <summary>
/// Replaces a type in the collection.
/// </summary>
/// <typeparam name="TReplaced">The type to replace.</typeparam>
/// <typeparam name="T">The type to insert.</typeparam>
/// <returns>The builder.</returns>
/// <remarks>Throws if the type to replace does not already belong to the collection.</remarks>
public TBuilder Replace<TReplaced, T>()
where TReplaced : TItem
where T : TItem
{
Configure(types =>
{
var typeReplaced = typeof(TReplaced);
var type = typeof(T);
if (typeReplaced == type) return;
var index = types.IndexOf(typeReplaced);
if (index < 0) throw new InvalidOperationException();
if (types.Contains(type)) types.Remove(type);
index = types.IndexOf(typeReplaced); // in case removing type changed index
types.Insert(index, type);
types.Remove(typeReplaced);
});
return This;
}
/// <summary>
/// Replaces a type in the collection.
/// </summary>
/// <param name="typeReplaced">The type to replace.</param>
/// <param name="type">The type to insert.</param>
/// <returns>The builder.</returns>
/// <remarks>Throws if the type to replace does not already belong to the collection.</remarks>
public TBuilder Replace(Type typeReplaced, Type type)
{
Configure(types =>
{
EnsureType(typeReplaced, "find");
EnsureType(type, "register");
if (typeReplaced == type) return;
var index = types.IndexOf(typeReplaced);
if (index < 0) throw new InvalidOperationException();
if (types.Contains(type)) types.Remove(type);
index = types.IndexOf(typeReplaced); // in case removing type changed index
types.Insert(index, type);
types.Remove(typeReplaced);
});
return This;
}
}
}
@@ -6,30 +6,50 @@ namespace Umbraco.Core.Composing
/// <summary>
/// Provides a base class for collections of types.
/// </summary>
public abstract class TypeCollectionBuilderBase<TCollection, TConstraint> : ICollectionBuilder<TCollection, Type>
public abstract class TypeCollectionBuilderBase<TBuilder, TCollection, TConstraint> : ICollectionBuilder<TCollection, Type>
where TBuilder : TypeCollectionBuilderBase<TBuilder, TCollection, TConstraint>
where TCollection : class, IBuilderCollection<Type>
{
private readonly HashSet<Type> _types = new HashSet<Type>();
private Type Validate(Type type, string action)
protected abstract TBuilder This { get; }
private static Type Validate(Type type, string action)
{
if (!typeof(TConstraint).IsAssignableFrom(type))
throw new InvalidOperationException($"Cannot {action} type {type.FullName} as it does not inherit from/implement {typeof(TConstraint).FullName}.");
return type;
}
public void Add(Type type) => _types.Add(Validate(type, "add"));
public void Add<T>() => Add(typeof(T));
public void Add(IEnumerable<Type> types)
public TBuilder Add(Type type)
{
foreach (var type in types) Add(type);
_types.Add(Validate(type, "add"));
return This;
}
public void Remove(Type type) => _types.Remove(Validate(type, "remove"));
public TBuilder Add<T>()
{
Add(typeof(T));
return This;
}
public void Remove<T>() => Remove(typeof(T));
public TBuilder Add(IEnumerable<Type> types)
{
foreach (var type in types) Add(type);
return This;
}
public TBuilder Remove(Type type)
{
_types.Remove(Validate(type, "remove"));
return This;
}
public TBuilder Remove<T>()
{
Remove(typeof(T));
return This;
}
public TCollection CreateCollection(IFactory factory)
{
+2 -2
View File
@@ -42,8 +42,8 @@ namespace Umbraco.Core.Composing
private string _currentAssembliesHash;
private IEnumerable<Assembly> _assemblies;
private bool _reportedChange;
private static string _localTempPath;
private static string _fileBasePath;
private readonly string _localTempPath;
private string _fileBasePath;
/// <summary>
/// Initializes a new instance of the <see cref="TypeLoader"/> class.
+9 -1
View File
@@ -4,6 +4,7 @@ using Umbraco.Core.Composing;
using Umbraco.Core.Dictionary;
using Umbraco.Core.IO;
using Umbraco.Core.Logging.Viewer;
using Umbraco.Core.Manifest;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PackageActions;
using Umbraco.Core.Persistence.Mappers;
@@ -66,9 +67,16 @@ namespace Umbraco.Core
/// Gets the validators collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
internal static ManifestValueValidatorCollectionBuilder Validators(this Composition composition)
internal static ManifestValueValidatorCollectionBuilder ManifestValueValidators(this Composition composition)
=> composition.WithCollectionBuilder<ManifestValueValidatorCollectionBuilder>();
/// <summary>
/// Gets the manifest filter collection builder.
/// </summary>
/// <param name="composition">The composition.</param>
public static ManifestFilterCollectionBuilder ManifestFilters(this Composition composition)
=> composition.WithCollectionBuilder<ManifestFilterCollectionBuilder>();
/// <summary>
/// Gets the components collection builder.
/// </summary>
+7 -1
View File
@@ -7,6 +7,7 @@ using Umbraco.Core.Configuration.HealthChecks;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Manifest;
namespace Umbraco.Core
{
@@ -41,7 +42,12 @@ namespace Umbraco.Core
configs.Add(() => new CoreDebug());
// GridConfig depends on runtime caches, manifest parsers... and cannot be available during composition
configs.Add<IGridConfig>(factory => new GridConfig(factory.GetInstance<ILogger>(), factory.GetInstance<AppCaches>(), configDir, factory.GetInstance<IRuntimeState>().Debug));
configs.Add<IGridConfig>(factory => new GridConfig(
factory.GetInstance<ILogger>(),
factory.GetInstance<AppCaches>(),
configDir,
factory.GetInstance<ManifestParser>(),
factory.GetInstance<IRuntimeState>().Debug));
}
}
}
@@ -4,6 +4,7 @@ using System.Linq;
using System.Net.Configuration;
using System.Web;
using System.Web.Configuration;
using System.Web.Hosting;
using System.Xml.Linq;
using Umbraco.Core.IO;
@@ -17,16 +18,15 @@ namespace Umbraco.Core.Configuration
/// </summary>
public class GlobalSettings : IGlobalSettings
{
private string _localTempPath;
#region Private static fields
// TODO these should not be static
private static string _reservedPaths;
private static string _reservedUrls;
//ensure the built on (non-changeable) reserved paths are there at all times
internal const string StaticReservedPaths = "~/app_plugins/,~/install/,~/mini-profiler-resources/,"; //must end with a comma!
internal const string StaticReservedUrls = "~/config/splashes/noNodes.aspx,~/.well-known,"; //must end with a comma!
#endregion
/// <summary>
/// Used in unit testing to reset all config items that were set with property setters (i.e. did not come from config)
@@ -131,7 +131,7 @@ namespace Umbraco.Core.Configuration
: "~/App_Data/umbraco.config";
}
}
/// <summary>
/// Gets the path to umbraco's root directory (/umbraco by default).
/// </summary>
@@ -163,7 +163,7 @@ namespace Umbraco.Core.Configuration
SaveSetting(Constants.AppSettings.ConfigurationStatus, value);
}
}
/// <summary>
/// Saves a setting into the configuration file.
/// </summary>
@@ -206,7 +206,7 @@ namespace Umbraco.Core.Configuration
ConfigurationManager.RefreshSection("appSettings");
}
}
/// <summary>
/// Gets a value indicating whether umbraco is running in [debug mode].
/// </summary>
@@ -250,7 +250,7 @@ namespace Umbraco.Core.Configuration
}
}
}
/// <summary>
/// Returns the number of days that should take place between version checks.
/// </summary>
@@ -269,7 +269,7 @@ namespace Umbraco.Core.Configuration
}
}
}
/// <inheritdoc />
public LocalTempStorage LocalTempStorageLocation
{
@@ -288,25 +288,43 @@ namespace Umbraco.Core.Configuration
{
get
{
if (_localTempPath != null)
return _localTempPath;
switch (LocalTempStorageLocation)
{
case LocalTempStorage.AspNetTemp:
return System.IO.Path.Combine(HttpRuntime.CodegenDir, "UmbracoData");
return _localTempPath = System.IO.Path.Combine(HttpRuntime.CodegenDir, "UmbracoData");
case LocalTempStorage.EnvironmentTemp:
// include the appdomain hash is just a safety check, for example if a website is moved from worker A to worker B and then back
// to worker A again, in theory the %temp% folder should already be empty but we really want to make sure that its not
// utilizing an old path - assuming we cannot have SHA1 collisions on AppDomainAppId
var appDomainHash = HttpRuntime.AppDomainAppId.GenerateHash();
return System.IO.Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoData", appDomainHash);
// environment temp is unique, we need a folder per site
// use a hash
// combine site name and application id
// site name is a Guid on Cloud
// application id is eg /LM/W3SVC/123456/ROOT
// the combination is unique on one server
// and, if a site moves from worker A to B and then back to A...
// hopefully it gets a new Guid or new application id?
var siteName = HostingEnvironment.SiteName;
var applicationId = HostingEnvironment.ApplicationID; // ie HttpRuntime.AppDomainAppId
var hashString = siteName + "::" + applicationId;
var hash = hashString.GenerateHash();
var siteTemp = System.IO.Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoData", hash);
return _localTempPath = siteTemp;
//case LocalTempStorage.Default:
//case LocalTempStorage.Unknown:
default:
return IOHelper.MapPath("~/App_Data/TEMP");
return _localTempPath = IOHelper.MapPath("~/App_Data/TEMP");
}
}
}
/// <summary>
/// Gets the default UI language.
/// </summary>
@@ -1,14 +1,15 @@
using System.IO;
using Umbraco.Core.Cache;
using Umbraco.Core.Logging;
using Umbraco.Core.Manifest;
namespace Umbraco.Core.Configuration.Grid
{
class GridConfig : IGridConfig
{
public GridConfig(ILogger logger, AppCaches appCaches, DirectoryInfo configFolder, bool isDebug)
public GridConfig(ILogger logger, AppCaches appCaches, DirectoryInfo configFolder, ManifestParser manifestParser, bool isDebug)
{
EditorsConfig = new GridEditorsConfig(logger, appCaches, configFolder, isDebug);
EditorsConfig = new GridEditorsConfig(logger, appCaches, configFolder, manifestParser, isDebug);
}
public IGridEditorsConfig EditorsConfig { get; }
@@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json.Linq;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Logging;
using Umbraco.Core.Manifest;
using Umbraco.Core.PropertyEditors;
@@ -15,13 +13,15 @@ namespace Umbraco.Core.Configuration.Grid
private readonly ILogger _logger;
private readonly AppCaches _appCaches;
private readonly DirectoryInfo _configFolder;
private readonly ManifestParser _manifestParser;
private readonly bool _isDebug;
public GridEditorsConfig(ILogger logger, AppCaches appCaches, DirectoryInfo configFolder, bool isDebug)
public GridEditorsConfig(ILogger logger, AppCaches appCaches, DirectoryInfo configFolder, ManifestParser manifestParser, bool isDebug)
{
_logger = logger;
_appCaches = appCaches;
_configFolder = configFolder;
_manifestParser = manifestParser;
_isDebug = isDebug;
}
@@ -31,9 +31,6 @@ namespace Umbraco.Core.Configuration.Grid
{
List<GridEditor> GetResult()
{
// TODO: should use the common one somehow! + ignoring _appPlugins here!
var parser = new ManifestParser(_appCaches, Current.ManifestValidators, _logger);
var editors = new List<GridEditor>();
var gridConfig = Path.Combine(_configFolder.FullName, "grid.editors.config.js");
if (File.Exists(gridConfig))
@@ -42,7 +39,7 @@ namespace Umbraco.Core.Configuration.Grid
try
{
editors.AddRange(parser.ParseGridEditors(sourceString));
editors.AddRange(_manifestParser.ParseGridEditors(sourceString));
}
catch (Exception ex)
{
@@ -51,7 +48,7 @@ namespace Umbraco.Core.Configuration.Grid
}
// add manifest editors, skip duplicates
foreach (var gridEditor in parser.Manifest.GridEditors)
foreach (var gridEditor in _manifestParser.Manifest.GridEditors)
{
if (editors.Contains(gridEditor) == false) editors.Add(gridEditor);
}
@@ -93,7 +93,6 @@ namespace Umbraco.Core
/// </summary>
public const string DisableElectionForSingleServer = "Umbraco.Core.DisableElectionForSingleServer";
/// <summary>
/// Debug specific web.config AppSetting keys for Umbraco
/// </summary>
+2 -2
View File
@@ -145,11 +145,11 @@
public const string PartialViewMacros = "partialViewMacros";
public const string LogViewer = "logViewer";
public const string LogViewer = "logViewer";
public static class Groups
{
public const string Settings = "settingsGroup";
public const string Settings = "settingsGroup";
public const string Templating = "templatingGroup";
+66 -66
View File
@@ -92,10 +92,10 @@ namespace Umbraco.Core
/// </summary>
public const string Extension = "umbracoExtension";
/// <summary>
/// The default height/width of an image file if the size can't be determined from the metadata
/// </summary>
public const int DefaultSize = 200;
/// <summary>
/// The default height/width of an image file if the size can't be determined from the metadata
/// </summary>
public const int DefaultSize = 200;
}
/// <summary>
@@ -209,71 +209,71 @@ namespace Umbraco.Core
public static Dictionary<string, PropertyType> GetStandardPropertyTypeStubs()
{
return new Dictionary<string, PropertyType>
{
{
Comments,
new PropertyType(PropertyEditors.Aliases.TextArea, ValueStorageType.Ntext, true, Comments)
{
Comments,
new PropertyType(PropertyEditors.Aliases.TextArea, ValueStorageType.Ntext, true, Comments)
{
Name = CommentsLabel
}
},
{
FailedPasswordAttempts,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Integer, true, FailedPasswordAttempts)
{
Name = FailedPasswordAttemptsLabel
}
},
{
IsApproved,
new PropertyType(PropertyEditors.Aliases.Boolean, ValueStorageType.Integer, true, IsApproved)
{
Name = IsApprovedLabel
}
},
{
IsLockedOut,
new PropertyType(PropertyEditors.Aliases.Boolean, ValueStorageType.Integer, true, IsLockedOut)
{
Name = IsLockedOutLabel
}
},
{
LastLockoutDate,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Date, true, LastLockoutDate)
{
Name = LastLockoutDateLabel
}
},
{
LastLoginDate,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Date, true, LastLoginDate)
{
Name = LastLoginDateLabel
}
},
{
LastPasswordChangeDate,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Date, true, LastPasswordChangeDate)
{
Name = LastPasswordChangeDateLabel
}
},
{
PasswordAnswer,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Nvarchar, true, PasswordAnswer)
{
Name = PasswordAnswerLabel
}
},
{
PasswordQuestion,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Nvarchar, true, PasswordQuestion)
{
Name = PasswordQuestionLabel
}
Name = CommentsLabel
}
};
},
{
FailedPasswordAttempts,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Integer, true, FailedPasswordAttempts)
{
Name = FailedPasswordAttemptsLabel
}
},
{
IsApproved,
new PropertyType(PropertyEditors.Aliases.Boolean, ValueStorageType.Integer, true, IsApproved)
{
Name = IsApprovedLabel
}
},
{
IsLockedOut,
new PropertyType(PropertyEditors.Aliases.Boolean, ValueStorageType.Integer, true, IsLockedOut)
{
Name = IsLockedOutLabel
}
},
{
LastLockoutDate,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Date, true, LastLockoutDate)
{
Name = LastLockoutDateLabel
}
},
{
LastLoginDate,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Date, true, LastLoginDate)
{
Name = LastLoginDateLabel
}
},
{
LastPasswordChangeDate,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Date, true, LastPasswordChangeDate)
{
Name = LastPasswordChangeDateLabel
}
},
{
PasswordAnswer,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Nvarchar, true, PasswordAnswer)
{
Name = PasswordAnswerLabel
}
},
{
PasswordQuestion,
new PropertyType(PropertyEditors.Aliases.Label, ValueStorageType.Nvarchar, true, PasswordQuestion)
{
Name = PasswordQuestionLabel
}
}
};
}
}
+350 -2
View File
@@ -1,27 +1,375 @@
namespace Umbraco.Core
using System;
namespace Umbraco.Core
{
public static partial class Constants
{
public static class DataTypes
{
public const int LabelString = -92;
//NOTE: unfortunately due to backwards compat we can't move/rename these, with the addition of the GUID
//constants, it would make more sense to have these suffixed with "ID" or in a Subclass called "INT", for
//now all we can do is make a subclass called Guids to put the GUID IDs.
public const int LabelString = System.DefaultLabelDataTypeId;
public const int LabelInt = -91;
public const int LabelBigint = -93;
public const int LabelDateTime = -94;
public const int LabelTime = -98;
public const int LabelDecimal = -99;
public const int Textarea = -89;
public const int Textbox = -88;
public const int RichtextEditor = -87;
public const int Boolean = -49;
public const int DateTime = -36;
public const int DropDownSingle = -39;
public const int DropDownMultiple = -42;
public const int Upload = -90;
public const int DefaultContentListView = -95;
public const int DefaultMediaListView = -96;
public const int DefaultMembersListView = -97;
public const int ImageCropper = 1043;
public const int Tags = 1041;
public static class ReservedPreValueKeys
{
public const string IgnoreUserStartNodes = "ignoreUserStartNodes";
}
/// <summary>
/// Defines the identifiers for Umbraco data types as constants for easy centralized access/management.
/// </summary>
public static class Guids
{
/// <summary>
/// Guid for Content Picker as string
/// </summary>
public const string ContentPicker = "FD1E0DA5-5606-4862-B679-5D0CF3A52A59";
/// <summary>
/// Guid for Content Picker
/// </summary>
public static readonly Guid ContentPickerGuid = new Guid(ContentPicker);
/// <summary>
/// Guid for Member Picker as string
/// </summary>
public const string MemberPicker = "1EA2E01F-EBD8-4CE1-8D71-6B1149E63548";
/// <summary>
/// Guid for Member Picker
/// </summary>
public static readonly Guid MemberPickerGuid = new Guid(MemberPicker);
/// <summary>
/// Guid for Media Picker as string
/// </summary>
public const string MediaPicker = "135D60E0-64D9-49ED-AB08-893C9BA44AE5";
/// <summary>
/// Guid for Media Picker
/// </summary>
public static readonly Guid MediaPickerGuid = new Guid(MediaPicker);
/// <summary>
/// Guid for Multiple Media Picker as string
/// </summary>
public const string MultipleMediaPicker = "9DBBCBBB-2327-434A-B355-AF1B84E5010A";
/// <summary>
/// Guid for Multiple Media Picker
/// </summary>
public static readonly Guid MultipleMediaPickerGuid = new Guid(MultipleMediaPicker);
/// <summary>
/// Guid for Related Links as string
/// </summary>
public const string RelatedLinks = "B4E3535A-1753-47E2-8568-602CF8CFEE6F";
/// <summary>
/// Guid for Related Links
/// </summary>
public static readonly Guid RelatedLinksGuid = new Guid(RelatedLinks);
/// <summary>
/// Guid for Member as string
/// </summary>
public const string Member = "d59be02f-1df9-4228-aa1e-01917d806cda";
/// <summary>
/// Guid for Member
/// </summary>
public static readonly Guid MemberGuid = new Guid(Member);
/// <summary>
/// Guid for Image Cropper as string
/// </summary>
public const string ImageCropper = "1df9f033-e6d4-451f-b8d2-e0cbc50a836f";
/// <summary>
/// Guid for Image Cropper
/// </summary>
public static readonly Guid ImageCropperGuid = new Guid(ImageCropper);
/// <summary>
/// Guid for Tags as string
/// </summary>
public const string Tags = "b6b73142-b9c1-4bf8-a16d-e1c23320b549";
/// <summary>
/// Guid for Tags
/// </summary>
public static readonly Guid TagsGuid = new Guid(Tags);
/// <summary>
/// Guid for List View - Content as string
/// </summary>
public const string ListViewContent = "C0808DD3-8133-4E4B-8CE8-E2BEA84A96A4";
/// <summary>
/// Guid for List View - Content
/// </summary>
public static readonly Guid ListViewContentGuid = new Guid(ListViewContent);
/// <summary>
/// Guid for List View - Media as string
/// </summary>
public const string ListViewMedia = "3A0156C4-3B8C-4803-BDC1-6871FAA83FFF";
/// <summary>
/// Guid for List View - Media
/// </summary>
public static readonly Guid ListViewMediaGuid = new Guid(ListViewMedia);
/// <summary>
/// Guid for List View - Members as string
/// </summary>
public const string ListViewMembers = "AA2C52A0-CE87-4E65-A47C-7DF09358585D";
/// <summary>
/// Guid for List View - Members
/// </summary>
public static readonly Guid ListViewMembersGuid = new Guid(ListViewMembers);
/// <summary>
/// Guid for Date Picker with time as string
/// </summary>
public const string DatePickerWithTime = "e4d66c0f-b935-4200-81f0-025f7256b89a";
/// <summary>
/// Guid for Date Picker with time
/// </summary>
public static readonly Guid DatePickerWithTimeGuid = new Guid(DatePickerWithTime);
/// <summary>
/// Guid for Approved Color as string
/// </summary>
public const string ApprovedColor = "0225af17-b302-49cb-9176-b9f35cab9c17";
/// <summary>
/// Guid for Approved Color
/// </summary>
public static readonly Guid ApprovedColorGuid = new Guid(ApprovedColor);
/// <summary>
/// Guid for Dropdown multiple as string
/// </summary>
public const string DropdownMultiple = "f38f0ac7-1d27-439c-9f3f-089cd8825a53";
/// <summary>
/// Guid for Dropdown multiple
/// </summary>
public static readonly Guid DropdownMultipleGuid = new Guid(DropdownMultiple);
/// <summary>
/// Guid for Radiobox as string
/// </summary>
public const string Radiobox = "bb5f57c9-ce2b-4bb9-b697-4caca783a805";
/// <summary>
/// Guid for Radiobox
/// </summary>
public static readonly Guid RadioboxGuid = new Guid(Radiobox);
/// <summary>
/// Guid for Date Picker as string
/// </summary>
public const string DatePicker = "5046194e-4237-453c-a547-15db3a07c4e1";
/// <summary>
/// Guid for Date Picker
/// </summary>
public static readonly Guid DatePickerGuid = new Guid(DatePicker);
/// <summary>
/// Guid for Dropdown as string
/// </summary>
public const string Dropdown = "0b6a45e7-44ba-430d-9da5-4e46060b9e03";
/// <summary>
/// Guid for Dropdown
/// </summary>
public static readonly Guid DropdownGuid = new Guid(Dropdown);
/// <summary>
/// Guid for Checkbox list as string
/// </summary>
public const string CheckboxList = "fbaf13a8-4036-41f2-93a3-974f678c312a";
/// <summary>
/// Guid for Checkbox list
/// </summary>
public static readonly Guid CheckboxListGuid = new Guid(CheckboxList);
/// <summary>
/// Guid for Checkbox as string
/// </summary>
public const string Checkbox = "92897bc6-a5f3-4ffe-ae27-f2e7e33dda49";
/// <summary>
/// Guid for Checkbox
/// </summary>
public static readonly Guid CheckboxGuid = new Guid(Checkbox);
/// <summary>
/// Guid for Numeric as string
/// </summary>
public const string Numeric = "2e6d3631-066e-44b8-aec4-96f09099b2b5";
/// <summary>
/// Guid for Dropdown
/// </summary>
public static readonly Guid NumericGuid = new Guid(Numeric);
/// <summary>
/// Guid for Richtext editor as string
/// </summary>
public const string RichtextEditor = "ca90c950-0aff-4e72-b976-a30b1ac57dad";
/// <summary>
/// Guid for Richtext editor
/// </summary>
public static readonly Guid RichtextEditorGuid = new Guid(RichtextEditor);
/// <summary>
/// Guid for Textstring as string
/// </summary>
public const string Textstring = "0cc0eba1-9960-42c9-bf9b-60e150b429ae";
/// <summary>
/// Guid for Textstring
/// </summary>
public static readonly Guid TextstringGuid = new Guid(Textstring);
/// <summary>
/// Guid for Textarea as string
/// </summary>
public const string Textarea = "c6bac0dd-4ab9-45b1-8e30-e4b619ee5da3";
/// <summary>
/// Guid for Dropdown
/// </summary>
public static readonly Guid TextareaGuid = new Guid(Textarea);
/// <summary>
/// Guid for Upload as string
/// </summary>
public const string Upload = "84c6b441-31df-4ffe-b67e-67d5bc3ae65a";
/// <summary>
/// Guid for Upload
/// </summary>
public static readonly Guid UploadGuid = new Guid(Upload);
/// <summary>
/// Guid for Label as string
/// </summary>
public const string LabelString = "f0bc4bfb-b499-40d6-ba86-058885a5178c";
/// <summary>
/// Guid for Label string
/// </summary>
public static readonly Guid LabelStringGuid = new Guid(LabelString);
/// <summary>
/// Guid for Label as int
/// </summary>
public const string LabelInt = "8e7f995c-bd81-4627-9932-c40e568ec788";
/// <summary>
/// Guid for Label int
/// </summary>
public static readonly Guid LabelIntGuid = new Guid(LabelInt);
/// <summary>
/// Guid for Label as big int
/// </summary>
public const string LabelBigInt = "930861bf-e262-4ead-a704-f99453565708";
/// <summary>
/// Guid for Label big int
/// </summary>
public static readonly Guid LabelBigIntGuid = new Guid(LabelBigInt);
/// <summary>
/// Guid for Label as date time
/// </summary>
public const string LabelDateTime = "0e9794eb-f9b5-4f20-a788-93acd233a7e4";
/// <summary>
/// Guid for Label date time
/// </summary>
public static readonly Guid LabelDateTimeGuid = new Guid(LabelDateTime);
/// <summary>
/// Guid for Label as time
/// </summary>
public const string LabelTime = "a97cec69-9b71-4c30-8b12-ec398860d7e8";
/// <summary>
/// Guid for Label time
/// </summary>
public static readonly Guid LabelTimeGuid = new Guid(LabelTime);
/// <summary>
/// Guid for Label as decimal
/// </summary>
public const string LabelDecimal = "8f1ef1e1-9de4-40d3-a072-6673f631ca64";
/// <summary>
/// Guid for Label decimal
/// </summary>
public static readonly Guid LabelDecimalGuid = new Guid(LabelDecimal);
}
}
}
}
+55 -15
View File
@@ -1,53 +1,93 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Umbraco.Core
namespace Umbraco.Core
{
public static partial class Constants
{
public static class Icons
{
/// <summary>
/// System contenttype icon
/// System default icon
/// </summary>
public const string ContentType = "icon-arrangement";
public const string DefaultIcon = Content;
/// <summary>
/// System datatype icon
/// System content icon
/// </summary>
public const string Content = "icon-document";
/// <summary>
/// System content type icon
/// </summary>
public const string ContentType = "icon-item-arrangement";
/// <summary>
/// System data type icon
/// </summary>
public const string DataType = "icon-autofill";
/// <summary>
/// System property editor icon
/// System list view icon
/// </summary>
public const string PropertyEditor = "icon-autofill";
public const string ListView = "icon-thumbnail-list";
/// <summary>
/// System macro icon
/// </summary>
public const string Macro = "icon-settings-alt";
/// <summary>
/// System media file icon
/// </summary>
public const string MediaFile = "icon-document";
/// <summary>
/// System media folder icon
/// </summary>
public const string MediaFolder = "icon-folder";
/// <summary>
/// System media image icon
/// </summary>
public const string MediaImage = "icon-picture";
/// <summary>
/// System media type icon
/// </summary>
public const string MediaType = "icon-thumbnails";
/// <summary>
/// System member icon
/// </summary>
public const string Member = "icon-user";
/// <summary>
/// System member icon
/// System member group icon
/// </summary>
public const string MemberGroup = "icon-users-alt";
/// <summary>
/// System member type icon
/// </summary>
public const string MemberType = "icon-users";
/// <summary>
/// System property editor icon
/// </summary>
public const string PropertyEditor = "icon-autofill";
/// <summary>
/// System member icon
/// </summary>
public const string Template = "icon-layout";
/// <summary>
/// System user icon
/// </summary>
public const string User = "icon-user";
/// <summary>
/// System user group icon
/// </summary>
public const string UserGroup = "icon-users";
}
}
}
+1 -4
View File
@@ -1,7 +1,4 @@
using System;
using System.ComponentModel;
namespace Umbraco.Core
namespace Umbraco.Core
{
public static partial class Constants
{
@@ -123,7 +123,6 @@ namespace Umbraco.Core
public static readonly Guid Template = new Guid(Strings.Template);
public static readonly Guid ContentItem = new Guid(Strings.ContentItem);
}
}
}
@@ -3,7 +3,7 @@
public static partial class Constants
{
/// <summary>
/// Defines the constants used for the Umbraco package repository
/// Defines the constants used for the Umbraco package repository
/// </summary>
public static class PackageRepository
{
@@ -34,7 +34,6 @@ namespace Umbraco.Core
/// </summary>
public const string ContentPicker = "Umbraco.ContentPicker";
/// <summary>
/// DateTime.
/// </summary>
+6 -1
View File
@@ -15,13 +15,18 @@ namespace Umbraco.Core
public const int SuperUserId = -1;
/// <summary>
/// The id for the 'unknown' user
/// The id for the 'unknown' user.
/// </summary>
/// <remarks>
/// This is a user row that exists in the DB only for referential integrity but the user is never returned from any of the services
/// </remarks>
public const int UnknownUserId = 0;
/// <summary>
/// The name of the 'unknown' user.
/// </summary>
public const string UnknownUserName = "SYTEM";
public const string AdminGroupAlias = "admin";
public const string SensitiveDataGroupAlias = "sensitiveData";
public const string TranslatorGroupAlias = "translator";
+1 -5
View File
@@ -1,7 +1,4 @@
using System;
using System.ComponentModel;
namespace Umbraco.Core
namespace Umbraco.Core
{
public static partial class Constants
{
@@ -22,7 +19,6 @@ namespace Umbraco.Core
public const string PreviewCookieName = "UMB_PREVIEW";
public const string InstallerCookieName = "umb_installId";
}
}
}
@@ -66,44 +66,44 @@ namespace Umbraco.Core
/// <summary>
/// Determines whether the content type is invariant.
/// </summary>
public static bool VariesByNothing(this PublishedContentType contentType) => contentType.Variations.VariesByNothing();
public static bool VariesByNothing(this IPublishedContentType contentType) => contentType.Variations.VariesByNothing();
/// <summary>
/// Determines whether the content type varies by culture.
/// </summary>
/// <remarks>And then it could also vary by segment.</remarks>
public static bool VariesByCulture(this PublishedContentType contentType) => contentType.Variations.VariesByCulture();
public static bool VariesByCulture(this IPublishedContentType contentType) => contentType.Variations.VariesByCulture();
/// <summary>
/// Determines whether the content type varies by segment.
/// </summary>
/// <remarks>And then it could also vary by culture.</remarks>
public static bool VariesBySegment(this PublishedContentType contentType) => contentType.Variations.VariesBySegment();
public static bool VariesBySegment(this IPublishedContentType contentType) => contentType.Variations.VariesBySegment();
/// <summary>
/// Determines whether the content type varies by culture and segment.
/// </summary>
public static bool VariesByCultureAndSegment(this PublishedContentType contentType) => contentType.Variations.VariesByCultureAndSegment();
public static bool VariesByCultureAndSegment(this IPublishedContentType contentType) => contentType.Variations.VariesByCultureAndSegment();
/// <summary>
/// Determines whether the property type is invariant.
/// </summary>
public static bool VariesByNothing(this PublishedPropertyType propertyType) => propertyType.Variations.VariesByNothing();
public static bool VariesByNothing(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesByNothing();
/// <summary>
/// Determines whether the property type varies by culture.
/// </summary>
public static bool VariesByCulture(this PublishedPropertyType propertyType) => propertyType.Variations.VariesByCulture();
public static bool VariesByCulture(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesByCulture();
/// <summary>
/// Determines whether the property type varies by segment.
/// </summary>
public static bool VariesBySegment(this PublishedPropertyType propertyType) => propertyType.Variations.VariesBySegment();
public static bool VariesBySegment(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesBySegment();
/// <summary>
/// Determines whether the property type varies by culture and segment.
/// </summary>
public static bool VariesByCultureAndSegment(this PublishedPropertyType propertyType) => propertyType.Variations.VariesByCultureAndSegment();
public static bool VariesByCultureAndSegment(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesByCultureAndSegment();
/// <summary>
/// Determines whether a variation is invariant.
+3 -8
View File
@@ -15,13 +15,8 @@ namespace Umbraco.Core
var hs = new HashSet<T>();
foreach (var item in items)
{
if (item != null || includeNull)
{
if (!hs.Add(item))
{
return true;
}
}
if ((item != null || includeNull) && !hs.Add(item))
return true;
}
return false;
}
@@ -117,7 +112,7 @@ namespace Umbraco.Core
}
}
/// <summary>
/// Returns true if all items in the other collection exist in this collection
/// </summary>
@@ -8,12 +8,9 @@ namespace Umbraco.Core.IO.MediaPathSchemes
/// </summary>
/// <remarks>
/// <para>Path is "{combinedGuid}/{filename}" where combinedGuid is a combination of itemGuid and propertyGuid.</para>
/// <para>This scheme is dangerous, as it does not prevent potential collisions.</para>
/// </remarks>
public class CombinedGuidsMediaPathScheme : IMediaPathScheme
{
private const int DirectoryLength = 8;
/// <inheritdoc />
public string GetFilePath(IMediaFileSystem fileSystem, Guid itemGuid, Guid propertyGuid, string filename, string previous = null)
{
@@ -21,7 +18,7 @@ namespace Umbraco.Core.IO.MediaPathSchemes
// for a single content cannot store two different files with the same name
var combinedGuid = GuidUtils.Combine(itemGuid, propertyGuid);
var directory = GuidUtils.ToBase32String(combinedGuid, DirectoryLength); // see also HexEncoder, we may want to fragment path eg 12/e4/f3...
var directory = HexEncoder.Encode(combinedGuid.ToByteArray()/*'/', 2, 4*/); // could use ext to fragment path eg 12/e4/f2/...
return Path.Combine(directory, filename).Replace('\\', '/');
}
@@ -7,7 +7,7 @@ namespace Umbraco.Core.IO.MediaPathSchemes
/// Implements a unique directory media path scheme.
/// </summary>
/// <remarks>
/// <para>This scheme provides short paths, yet handle potential collisions.</para>
/// <para>This scheme provides deterministic short paths, with potential collisions.</para>
/// </remarks>
public class UniqueMediaPathScheme : IMediaPathScheme
{
@@ -16,23 +16,22 @@ namespace Umbraco.Core.IO.MediaPathSchemes
/// <inheritdoc />
public string GetFilePath(IMediaFileSystem fileSystem, Guid itemGuid, Guid propertyGuid, string filename, string previous = null)
{
string directory;
// no point "combining" guids if all we want is some random guid - just get a new one
// and then, because we don't want collisions, ensure that the directory does not already exist
// (should be quite rare, but eh...)
do
{
var combinedGuid = Guid.NewGuid();
directory = GuidUtils.ToBase32String(combinedGuid, DirectoryLength); // see also HexEncoder, we may want to fragment path eg 12/e4/f3...
} while (fileSystem.DirectoryExists(directory));
var combinedGuid = GuidUtils.Combine(itemGuid, propertyGuid);
var directory = GuidUtils.ToBase32String(combinedGuid, DirectoryLength);
return Path.Combine(directory, filename).Replace('\\', '/');
}
/// <inheritdoc />
public string GetDeleteDirectory(IMediaFileSystem fileSystem, string filepath) => Path.GetDirectoryName(filepath);
/// <remarks>
/// <para>Returning null so that <see cref="MediaFileSystem.DeleteMediaFiles"/> does *not*
/// delete any directory. This is because the above shortening of the Guid to 8 chars
/// means we're increasing the risk of collision, and we don't want to delete files
/// belonging to other media items.</para>
/// <para>And, at the moment, we cannot delete directory "only if it is empty" because of
/// race conditions. We'd need to implement locks in <see cref="MediaFileSystem"/> for
/// this.</para>
/// </remarks>
public string GetDeleteDirectory(IMediaFileSystem fileSystem, string filepath) => null;
}
}
}
@@ -1,7 +1,11 @@
using System;
using System.Text;
using System.Web;
using Serilog;
using Serilog.Configuration;
using Serilog.Core;
using Serilog.Events;
using Serilog.Formatting;
using Serilog.Formatting.Compact;
using Umbraco.Core.Logging.Serilog.Enrichers;
@@ -9,6 +13,7 @@ namespace Umbraco.Core.Logging.Serilog
{
public static class LoggerConfigExtensions
{
private const string AppDomainId = "AppDomainId";
/// <summary>
/// This configures Serilog with some defaults
/// Such as adding ProcessID, Thread, AppDomain etc
@@ -28,14 +33,14 @@ namespace Umbraco.Core.Logging.Serilog
.Enrich.WithProcessId()
.Enrich.WithProcessName()
.Enrich.WithThreadId()
.Enrich.WithProperty("AppDomainId", AppDomain.CurrentDomain.Id)
.Enrich.WithProperty(AppDomainId, AppDomain.CurrentDomain.Id)
.Enrich.WithProperty("AppDomainAppId", HttpRuntime.AppDomainAppId.ReplaceNonAlphanumericChars(string.Empty))
.Enrich.WithProperty("MachineName", Environment.MachineName)
.Enrich.With<Log4NetLevelMapperEnricher>()
.Enrich.With<HttpSessionIdEnricher>()
.Enrich.With<HttpRequestNumberEnricher>()
.Enrich.With<HttpRequestIdEnricher>();
return logConfig;
}
@@ -50,15 +55,51 @@ namespace Umbraco.Core.Logging.Serilog
//Main .txt logfile - in similar format to older Log4Net output
//Ends with ..txt as Date is inserted before file extension substring
logConfig.WriteTo.File($@"{AppDomain.CurrentDomain.BaseDirectory}\App_Data\Logs\UmbracoTraceLog.{Environment.MachineName}..txt",
shared: true,
rollingInterval: RollingInterval.Day,
restrictedToMinimumLevel: minimumLevel,
retainedFileCountLimit: null, //Setting to null means we keep all files - default is 31 days
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss,fff} [P{ProcessId}/D{AppDomainId}/T{ThreadId}] {Log4NetLevel} {SourceContext} - {Message:lj}{NewLine}{Exception}");
shared: true,
rollingInterval: RollingInterval.Day,
restrictedToMinimumLevel: minimumLevel,
retainedFileCountLimit: null, //Setting to null means we keep all files - default is 31 days
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss,fff} [P{ProcessId}/D{AppDomainId}/T{ThreadId}] {Log4NetLevel} {SourceContext} - {Message:lj}{NewLine}{Exception}");
return logConfig;
}
/// <remarks>
/// Used in config - If renamed or moved to other assembly the config file also has be updated.
/// </remarks>
public static LoggerConfiguration File(this LoggerSinkConfiguration configuration, ITextFormatter formatter,
string path,
LogEventLevel restrictedToMinimumLevel = LogEventLevel.Verbose,
LoggingLevelSwitch levelSwitch = null,
long? fileSizeLimitBytes = 1073741824,
TimeSpan? flushToDiskInterval = null,
RollingInterval rollingInterval = RollingInterval.Infinite,
bool rollOnFileSizeLimit = false,
int? retainedFileCountLimit = 31,
Encoding encoding = null
)
{
return configuration.Async(
asyncConfiguration => asyncConfiguration.Map(AppDomainId, (_,mapConfiguration) =>
mapConfiguration.File(
formatter,
path,
restrictedToMinimumLevel,
fileSizeLimitBytes,
levelSwitch,
buffered:true,
shared:false,
flushToDiskInterval,
rollingInterval,
rollOnFileSizeLimit,
retainedFileCountLimit,
encoding),
sinkMapCountLimit:0)
);
}
/// <summary>
/// Outputs a CLEF format JSON log at /App_Data/Logs/
/// </summary>
@@ -13,7 +13,7 @@ namespace Umbraco.Core.Logging.Serilog
///<summary>
/// Implements <see cref="ILogger"/> on top of Serilog.
///</summary>
public class SerilogLogger : ILogger
public class SerilogLogger : ILogger, IDisposable
{
/// <summary>
/// Initialize a new instance of the <see cref="SerilogLogger"/> class with a configuration file.
@@ -271,5 +271,10 @@ namespace Umbraco.Core.Logging.Serilog
{
LoggerFor(reporting).Verbose(messageTemplate, propertyValues);
}
public void Dispose()
{
Log.CloseAndFlush();
}
}
}
@@ -26,26 +26,26 @@ namespace Umbraco.Core.Logging.Viewer
/// A count of number of errors
/// By counting Warnings with Exceptions, Errors & Fatal messages
/// </summary>
int GetNumberOfErrors(DateTimeOffset startDate, DateTimeOffset endDate);
int GetNumberOfErrors(LogTimePeriod logTimePeriod);
/// <summary>
/// Returns a number of the different log level entries
/// </summary>
LogLevelCounts GetLogLevelCounts(DateTimeOffset startDate, DateTimeOffset endDate);
LogLevelCounts GetLogLevelCounts(LogTimePeriod logTimePeriod);
/// <summary>
/// Returns a list of all unique message templates and their counts
/// </summary>
IEnumerable<LogTemplate> GetMessageTemplates(DateTimeOffset startDate, DateTimeOffset endDate);
IEnumerable<LogTemplate> GetMessageTemplates(LogTimePeriod logTimePeriod);
bool CanHandleLargeLogs { get; }
bool CheckCanOpenLogs(DateTimeOffset startDate, DateTimeOffset endDate);
bool CheckCanOpenLogs(LogTimePeriod logTimePeriod);
/// <summary>
/// Returns the collection of logs
/// </summary>
PagedResult<LogMessage> GetLogs(DateTimeOffset startDate, DateTimeOffset endDate,
PagedResult<LogMessage> GetLogs(LogTimePeriod logTimePeriod,
int pageNumber = 1,
int pageSize = 100,
Direction orderDirection = Direction.Descending,
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Newtonsoft.Json;
using Serilog.Events;
using Serilog.Formatting.Compact.Reader;
@@ -10,20 +11,22 @@ namespace Umbraco.Core.Logging.Viewer
internal class JsonLogViewer : LogViewerSourceBase
{
private readonly string _logsPath;
private readonly ILogger _logger;
public JsonLogViewer(string logsPath = "", string searchPath = "") : base(searchPath)
public JsonLogViewer(ILogger logger, string logsPath = "", string searchPath = "") : base(searchPath)
{
if (string.IsNullOrEmpty(logsPath))
logsPath = $@"{AppDomain.CurrentDomain.BaseDirectory}\App_Data\Logs\";
_logsPath = logsPath;
_logger = logger;
}
private const int FileSizeCap = 100;
public override bool CanHandleLargeLogs => false;
public override bool CheckCanOpenLogs(DateTimeOffset startDate, DateTimeOffset endDate)
public override bool CheckCanOpenLogs(LogTimePeriod logTimePeriod)
{
//Log Directory
var logDirectory = _logsPath;
@@ -33,10 +36,10 @@ namespace Umbraco.Core.Logging.Viewer
//foreach full day in the range - see if we can find one or more filenames that end with
//yyyyMMdd.json - Ends with due to MachineName in filenames - could be 1 or more due to load balancing
for (var day = startDate.Date; day.Date <= endDate.Date; day = day.AddDays(1))
for (var day = logTimePeriod.StartTime.Date; day.Date <= logTimePeriod.EndTime.Date; day = day.AddDays(1))
{
//Filename ending to search for (As could be multiple)
var filesToFind = $"*{day:yyyyMMdd}.json";
var filesToFind = GetSearchPattern(day);
var filesForCurrentDay = Directory.GetFiles(logDirectory, filesToFind);
@@ -49,7 +52,12 @@ namespace Umbraco.Core.Logging.Viewer
return logSizeAsMegabytes <= FileSizeCap;
}
protected override IReadOnlyList<LogEvent> GetLogs(DateTimeOffset startDate, DateTimeOffset endDate, ILogFilter filter, int skip, int take)
private string GetSearchPattern(DateTime day)
{
return $"*{day:yyyyMMdd}*.json";
}
protected override IReadOnlyList<LogEvent> GetLogs(LogTimePeriod logTimePeriod, ILogFilter filter, int skip, int take)
{
var logs = new List<LogEvent>();
@@ -60,10 +68,10 @@ namespace Umbraco.Core.Logging.Viewer
//foreach full day in the range - see if we can find one or more filenames that end with
//yyyyMMdd.json - Ends with due to MachineName in filenames - could be 1 or more due to load balancing
for (var day = startDate.Date; day.Date <= endDate.Date; day = day.AddDays(1))
for (var day = logTimePeriod.StartTime.Date; day.Date <= logTimePeriod.EndTime.Date; day = day.AddDays(1))
{
//Filename ending to search for (As could be multiple)
var filesToFind = $"*{day:yyyyMMdd}.json";
var filesToFind = GetSearchPattern(day);
var filesForCurrentDay = Directory.GetFiles(logDirectory, filesToFind);
@@ -77,8 +85,14 @@ namespace Umbraco.Core.Logging.Viewer
using (var stream = new StreamReader(fs))
{
var reader = new LogEventReader(stream);
while (reader.TryRead(out var evt))
while (TryRead(reader, out var evt))
{
//We may get a null if log line is malformed
if (evt == null)
{
continue;
}
if (count > skip + take)
{
break;
@@ -105,5 +119,21 @@ namespace Umbraco.Core.Logging.Viewer
return logs;
}
private bool TryRead(LogEventReader reader, out LogEvent evt)
{
try
{
return reader.TryRead(out evt);
}
catch (JsonReaderException ex)
{
// As we are reading/streaming one line at a time in the JSON file
// Thus we can not report the line number, as it will always be 1
_logger.Error<JsonLogViewer>(ex, "Unable to parse a line in the JSON log file");
evt = null;
return true;
}
}
}
}
@@ -0,0 +1,16 @@
using System;
namespace Umbraco.Core.Logging.Viewer
{
public class LogTimePeriod
{
public LogTimePeriod(DateTime startTime, DateTime endTime)
{
StartTime = startTime;
EndTime = endTime;
}
public DateTime StartTime { get; }
public DateTime EndTime { get; }
}
}
@@ -9,7 +9,7 @@ namespace Umbraco.Core.Logging.Viewer
{
public void Compose(Composition composition)
{
composition.SetLogViewer(_ => new JsonLogViewer());
composition.SetLogViewer(_ => new JsonLogViewer(composition.Logger));
}
}
}
@@ -27,9 +27,9 @@ namespace Umbraco.Core.Logging.Viewer
/// <summary>
/// Get all logs from your chosen data source back as Serilog LogEvents
/// </summary>
protected abstract IReadOnlyList<LogEvent> GetLogs(DateTimeOffset startDate, DateTimeOffset endDate, ILogFilter filter, int skip, int take);
protected abstract IReadOnlyList<LogEvent> GetLogs(LogTimePeriod logTimePeriod, ILogFilter filter, int skip, int take);
public abstract bool CheckCanOpenLogs(DateTimeOffset startDate, DateTimeOffset endDate);
public abstract bool CheckCanOpenLogs(LogTimePeriod logTimePeriod);
public virtual IReadOnlyList<SavedLogSearch> GetSavedSearches()
{
@@ -82,24 +82,24 @@ namespace Umbraco.Core.Logging.Viewer
return searches;
}
public int GetNumberOfErrors(DateTimeOffset startDate, DateTimeOffset endDate)
public int GetNumberOfErrors(LogTimePeriod logTimePeriod)
{
var errorCounter = new ErrorCounterFilter();
GetLogs(startDate, endDate, errorCounter, 0, int.MaxValue);
GetLogs(logTimePeriod, errorCounter, 0, int.MaxValue);
return errorCounter.Count;
}
public LogLevelCounts GetLogLevelCounts(DateTimeOffset startDate, DateTimeOffset endDate)
public LogLevelCounts GetLogLevelCounts(LogTimePeriod logTimePeriod)
{
var counter = new CountingFilter();
GetLogs(startDate, endDate, counter, 0, int.MaxValue);
GetLogs(logTimePeriod, counter, 0, int.MaxValue);
return counter.Counts;
}
public IEnumerable<LogTemplate> GetMessageTemplates(DateTimeOffset startDate, DateTimeOffset endDate)
public IEnumerable<LogTemplate> GetMessageTemplates(LogTimePeriod logTimePeriod)
{
var messageTemplates = new MessageTemplateFilter();
GetLogs(startDate, endDate, messageTemplates, 0, int.MaxValue);
GetLogs(logTimePeriod, messageTemplates, 0, int.MaxValue);
var templates = messageTemplates.Counts.
Select(x => new LogTemplate { MessageTemplate = x.Key, Count = x.Value })
@@ -108,14 +108,14 @@ namespace Umbraco.Core.Logging.Viewer
return templates;
}
public PagedResult<LogMessage> GetLogs(DateTimeOffset startDate, DateTimeOffset endDate,
public PagedResult<LogMessage> GetLogs(LogTimePeriod logTimePeriod,
int pageNumber = 1, int pageSize = 100,
Direction orderDirection = Direction.Descending,
string filterExpression = null,
string[] logLevels = null)
{
var expression = new ExpressionFilter(filterExpression);
var filteredLogs = GetLogs(startDate, endDate, expression, 0, int.MaxValue);
var filteredLogs = GetLogs(logTimePeriod, expression, 0, int.MaxValue);
//This is user used the checkbox UI to toggle which log levels they wish to see
//If an empty array or null - its implied all levels to be viewed
@@ -0,0 +1,19 @@
using System.Collections.Generic;
namespace Umbraco.Core.Manifest
{
/// <summary>
/// Provides filtering for package manifests.
/// </summary>
public interface IManifestFilter
{
/// <summary>
/// Filters package manifests.
/// </summary>
/// <param name="manifests">The package manifests.</param>
/// <remarks>
/// <para>It is possible to remove, change, or add manifests.</para>
/// </remarks>
void Filter(List<PackageManifest> manifests);
}
}
@@ -0,0 +1,28 @@
using System.Collections.Generic;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Manifest
{
/// <summary>
/// Contains the manifest filters.
/// </summary>
public class ManifestFilterCollection : BuilderCollectionBase<IManifestFilter>
{
/// <summary>
/// Initializes a new instance of the <see cref="ManifestFilterCollection"/> class.
/// </summary>
public ManifestFilterCollection(IEnumerable<IManifestFilter> items)
: base(items)
{ }
/// <summary>
/// Filters package manifests.
/// </summary>
/// <param name="manifests">The package manifests.</param>
public void Filter(List<PackageManifest> manifests)
{
foreach (var filter in this)
filter.Filter(manifests);
}
}
}
@@ -0,0 +1,12 @@
using Umbraco.Core.Composing;
namespace Umbraco.Core.Manifest
{
public class ManifestFilterCollectionBuilder : OrderedCollectionBuilderBase<ManifestFilterCollectionBuilder, ManifestFilterCollection, IManifestFilter>
{
protected override ManifestFilterCollectionBuilder This => this;
// do NOT cache this, it's only used once
protected override Lifetime CollectionLifetime => Lifetime.Transient;
}
}
+8 -3
View File
@@ -22,24 +22,26 @@ namespace Umbraco.Core.Manifest
private readonly IAppPolicyCache _cache;
private readonly ILogger _logger;
private readonly ManifestValueValidatorCollection _validators;
private readonly ManifestFilterCollection _filters;
private string _path;
/// <summary>
/// Initializes a new instance of the <see cref="ManifestParser"/> class.
/// </summary>
public ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ILogger logger)
: this(appCaches, validators, "~/App_Plugins", logger)
public ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, ILogger logger)
: this(appCaches, validators, filters, "~/App_Plugins", logger)
{ }
/// <summary>
/// Initializes a new instance of the <see cref="ManifestParser"/> class.
/// </summary>
private ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, string path, ILogger logger)
private ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, string path, ILogger logger)
{
if (appCaches == null) throw new ArgumentNullException(nameof(appCaches));
_cache = appCaches.RuntimeCache;
_validators = validators ?? throw new ArgumentNullException(nameof(validators));
_filters = filters ?? throw new ArgumentNullException(nameof(filters));
if (string.IsNullOrWhiteSpace(path)) throw new ArgumentNullOrEmptyException(nameof(path));
Path = path;
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
@@ -78,6 +80,7 @@ namespace Umbraco.Core.Manifest
if (string.IsNullOrWhiteSpace(text))
continue;
var manifest = ParseManifest(text);
manifest.Source = path;
manifests.Add(manifest);
}
catch (Exception e)
@@ -86,6 +89,8 @@ namespace Umbraco.Core.Manifest
}
}
_filters.Filter(manifests);
return manifests;
}
@@ -9,6 +9,16 @@ namespace Umbraco.Core.Manifest
/// </summary>
public class PackageManifest
{
/// <summary>
/// Gets the source path of the manifest.
/// </summary>
/// <remarks>
/// <para>Gets the full absolute file path of the manifest,
/// using system directory separators.</para>
/// </remarks>
[JsonIgnore]
public string Source { get; set; }
/// <summary>
/// Gets or sets the scripts listed in the manifest.
/// </summary>
@@ -0,0 +1,13 @@
namespace Umbraco.Core.Mapping
{
/// <summary>
/// Defines maps for <see cref="UmbracoMapper"/>.
/// </summary>
public interface IMapDefinition
{
/// <summary>
/// Defines maps.
/// </summary>
void DefineMaps(UmbracoMapper mapper);
}
}
@@ -0,0 +1,12 @@
using System.Collections.Generic;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Mapping
{
public class MapDefinitionCollection : BuilderCollectionBase<IMapDefinition>
{
public MapDefinitionCollection(IEnumerable<IMapDefinition> items)
: base(items)
{ }
}
}
@@ -0,0 +1,11 @@
using Umbraco.Core.Composing;
namespace Umbraco.Core.Mapping
{
public class MapDefinitionCollectionBuilder : SetCollectionBuilderBase<MapDefinitionCollectionBuilder, MapDefinitionCollection, IMapDefinition>
{
protected override MapDefinitionCollectionBuilder This => this;
protected override Lifetime CollectionLifetime => Lifetime.Transient;
}
}
+130
View File
@@ -0,0 +1,130 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace Umbraco.Core.Mapping
{
/// <summary>
/// Represents a mapper context.
/// </summary>
public class MapperContext
{
private readonly UmbracoMapper _mapper;
private IDictionary<string, object> _items;
/// <summary>
/// Initializes a new instance of the <see cref="MapperContext"/> class.
/// </summary>
public MapperContext(UmbracoMapper mapper)
{
_mapper = mapper;
}
/// <summary>
/// Gets a value indicating whether the context has items.
/// </summary>
public bool HasItems => _items != null;
/// <summary>
/// Gets the context items.
/// </summary>
public IDictionary<string, object> Items => _items ?? (_items = new Dictionary<string, object>());
#region Map
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <returns>The target object.</returns>
public TTarget Map<TTarget>(object source)
=> _mapper.Map<TTarget>(source, this);
// let's say this is a bad (dangerous) idea, and leave it out for now
/*
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>The target object.</returns>
public TTarget Map<TTarget>(object source, Action<MapperContext> f)
{
f(this);
return _mapper.Map<TTarget>(source, this);
}
*/
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source)
=> _mapper.Map<TSource, TTarget>(source, this);
// let's say this is a bad (dangerous) idea, and leave it out for now
/*
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, Action<MapperContext> f)
{
f(this);
return _mapper.Map<TSource, TTarget>(source, this);
}
*/
/// <summary>
/// Maps a source object to an existing target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="target">The target object.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, TTarget target)
=> _mapper.Map(source, target, this);
// let's say this is a bad (dangerous) idea, and leave it out for now
/*
/// <summary>
/// Maps a source object to an existing target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="target">The target object.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, TTarget target, Action<MapperContext> f)
{
f(this);
return _mapper.Map(source, target, this);
}
*/
/// <summary>
/// Maps an enumerable of source objects to a new list of target objects.
/// </summary>
/// <typeparam name="TSourceElement">The type of the source objects.</typeparam>
/// <typeparam name="TTargetElement">The type of the target objects.</typeparam>
/// <param name="source">The source objects.</param>
/// <returns>A list containing the target objects.</returns>
public List<TTargetElement> MapEnumerable<TSourceElement, TTargetElement>(IEnumerable<TSourceElement> source)
{
return source.Select(Map<TSourceElement, TTargetElement>).ToList();
}
#endregion
}
}
+430
View File
@@ -0,0 +1,430 @@
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
namespace Umbraco.Core.Mapping
{
// notes:
// AutoMapper maps null to empty arrays, lists, etc
// TODO:
// when mapping from TSource, and no map is found, consider the actual source.GetType()?
// when mapping to TTarget, and no map is found, consider the actual target.GetType()?
// not sure we want to add magic to this simple mapper class, though
/// <summary>
/// Umbraco Mapper.
/// </summary>
/// <remarks>
/// <para>When a map is defined from TSource to TTarget, the mapper automatically knows how to map
/// from IEnumerable{TSource} to IEnumerable{TTarget} (using a List{TTarget}) and to TTarget[].</para>
/// <para>When a map is defined from TSource to TTarget, the mapper automatically uses that map
/// for any source type that inherits from, or implements, TSource.</para>
/// <para>When a map is defined from TSource to TTarget, the mapper can map to TTarget exclusively
/// and cannot re-use that map for types that would inherit from, or implement, TTarget.</para>
/// <para>When using the Map{TSource, TTarget}(TSource source, ...) overloads, TSource is explicit. When
/// using the Map{TTarget}(object source, ...) TSource is defined as source.GetType().</para>
/// <para>In both cases, TTarget is explicit and not typeof(target).</para>
/// </remarks>
public class UmbracoMapper
{
// note
//
// the outer dictionary *can* be modified, see GetCtor and GetMap, hence have to be ConcurrentDictionary
// the inner dictionaries are never modified and therefore can be simple Dictionary
private readonly ConcurrentDictionary<Type, Dictionary<Type, Func<object, MapperContext, object>>> _ctors
= new ConcurrentDictionary<Type, Dictionary<Type, Func<object, MapperContext, object>>>();
private readonly ConcurrentDictionary<Type, Dictionary<Type, Action<object, object, MapperContext>>> _maps
= new ConcurrentDictionary<Type, Dictionary<Type, Action<object, object, MapperContext>>>();
/// <summary>
/// Initializes a new instance of the <see cref="UmbracoMapper"/> class.
/// </summary>
/// <param name="profiles"></param>
public UmbracoMapper(MapDefinitionCollection profiles)
{
foreach (var profile in profiles)
profile.DefineMaps(this);
}
#region Define
private static TTarget ThrowCtor<TSource, TTarget>(TSource source, MapperContext context)
=> throw new InvalidOperationException($"Don't know how to create {typeof(TTarget).FullName} instances.");
private static void Identity<TSource, TTarget>(TSource source, TTarget target, MapperContext context)
{ }
/// <summary>
/// Defines a mapping.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
public void Define<TSource, TTarget>()
=> Define<TSource, TTarget>(ThrowCtor<TSource, TTarget>, Identity);
/// <summary>
/// Defines a mapping.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="map">A mapping method.</param>
public void Define<TSource, TTarget>(Action<TSource, TTarget, MapperContext> map)
=> Define(ThrowCtor<TSource, TTarget>, map);
/// <summary>
/// Defines a mapping.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="ctor">A constructor method.</param>
public void Define<TSource, TTarget>(Func<TSource, MapperContext, TTarget> ctor)
=> Define(ctor, Identity);
/// <summary>
/// Defines a mapping.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="ctor">A constructor method.</param>
/// <param name="map">A mapping method.</param>
public void Define<TSource, TTarget>(Func<TSource, MapperContext, TTarget> ctor, Action<TSource, TTarget, MapperContext> map)
{
var sourceType = typeof(TSource);
var targetType = typeof(TTarget);
var sourceCtors = DefineCtors(sourceType);
if (ctor != null)
sourceCtors[targetType] = (source, context) => ctor((TSource)source, context);
var sourceMaps = DefineMaps(sourceType);
sourceMaps[targetType] = (source, target, context) => map((TSource)source, (TTarget)target, context);
}
private Dictionary<Type, Func<object, MapperContext, object>> DefineCtors(Type sourceType)
{
return _ctors.GetOrAdd(sourceType, _ => new Dictionary<Type, Func<object, MapperContext, object>>());
}
private Dictionary<Type, Action<object, object, MapperContext>> DefineMaps(Type sourceType)
{
return _maps.GetOrAdd(sourceType, _ => new Dictionary<Type, Action<object, object, MapperContext>>());
}
#endregion
#region Map
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <returns>The target object.</returns>
public TTarget Map<TTarget>(object source)
=> Map<TTarget>(source, new MapperContext(this));
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>The target object.</returns>
public TTarget Map<TTarget>(object source, Action<MapperContext> f)
{
var context = new MapperContext(this);
f(context);
return Map<TTarget>(source, context);
}
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="context">A mapper context.</param>
/// <returns>The target object.</returns>
public TTarget Map<TTarget>(object source, MapperContext context)
=> Map<TTarget>(source, source?.GetType(), context);
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source)
=> Map<TSource, TTarget>(source, new MapperContext(this));
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, Action<MapperContext> f)
{
var context = new MapperContext(this);
f(context);
return Map<TSource, TTarget>(source, context);
}
/// <summary>
/// Maps a source object to a new target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="context">A mapper context.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, MapperContext context)
=> Map<TTarget>(source, typeof(TSource), context);
private TTarget Map<TTarget>(object source, Type sourceType, MapperContext context)
{
if (source == null)
return default;
var targetType = typeof(TTarget);
var ctor = GetCtor(sourceType, targetType);
var map = GetMap(sourceType, targetType);
// if there is a direct constructor, map
if (ctor != null && map != null)
{
var target = ctor(source, context);
map(source, target, context);
return (TTarget)target;
}
// otherwise, see if we can deal with enumerable
var ienumerableOfT = typeof(IEnumerable<>);
bool IsIEnumerableOfT(Type type) =>
type.IsGenericType &&
type.GenericTypeArguments.Length == 1 &&
type.GetGenericTypeDefinition() == ienumerableOfT;
// try to get source as an IEnumerable<T>
var sourceIEnumerable = IsIEnumerableOfT(sourceType) ? sourceType : sourceType.GetInterfaces().FirstOrDefault(IsIEnumerableOfT);
// if source is an IEnumerable<T> and target is T[] or IEnumerable<T>, we can create a map
if (sourceIEnumerable != null && IsEnumerableOrArrayOfType(targetType))
{
var sourceGenericArg = sourceIEnumerable.GenericTypeArguments[0];
var targetGenericArg = GetEnumerableOrArrayTypeArgument(targetType);
ctor = GetCtor(sourceGenericArg, targetGenericArg);
map = GetMap(sourceGenericArg, targetGenericArg);
// if there is a constructor for the underlying type, create & invoke the map
if (ctor != null && map != null)
{
// register (for next time) and do it now (for this time)
object NCtor(object s, MapperContext c) => MapEnumerableInternal<TTarget>((IEnumerable) s, targetGenericArg, ctor, map, c);
DefineCtors(sourceType)[targetType] = NCtor;
DefineMaps(sourceType)[targetType] = Identity;
return (TTarget) NCtor(source, context);
}
throw new InvalidOperationException($"Don't know how to map {sourceGenericArg.FullName} to {targetGenericArg.FullName}, so don't know how to map {sourceType.FullName} to {targetType.FullName}.");
}
throw new InvalidOperationException($"Don't know how to map {sourceType.FullName} to {targetType.FullName}.");
}
private TTarget MapEnumerableInternal<TTarget>(IEnumerable source, Type targetGenericArg, Func<object, MapperContext, object> ctor, Action<object, object, MapperContext> map, MapperContext context)
{
var targetList = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(targetGenericArg));
foreach (var sourceItem in source)
{
var targetItem = ctor(sourceItem, context);
map(sourceItem, targetItem, context);
targetList.Add(targetItem);
}
object target = targetList;
if (typeof(TTarget).IsArray)
{
var elementType = typeof(TTarget).GetElementType();
if (elementType == null) throw new Exception("panic");
var targetArray = Array.CreateInstance(elementType, targetList.Count);
targetList.CopyTo(targetArray, 0);
target = targetArray;
}
return (TTarget) target;
}
/// <summary>
/// Maps a source object to an existing target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="target">The target object.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, TTarget target)
=> Map(source, target, new MapperContext(this));
/// <summary>
/// Maps a source object to an existing target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="target">The target object.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, TTarget target, Action<MapperContext> f)
{
var context = new MapperContext(this);
f(context);
return Map(source, target, context);
}
/// <summary>
/// Maps a source object to an existing target object.
/// </summary>
/// <typeparam name="TSource">The source type.</typeparam>
/// <typeparam name="TTarget">The target type.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="target">The target object.</param>
/// <param name="context">A mapper context.</param>
/// <returns>The target object.</returns>
public TTarget Map<TSource, TTarget>(TSource source, TTarget target, MapperContext context)
{
var sourceType = typeof(TSource);
var targetType = typeof(TTarget);
var map = GetMap(sourceType, targetType);
// if there is a direct map, map
if (map != null)
{
map(source, target, context);
return target;
}
// we cannot really map to an existing enumerable - give up
throw new InvalidOperationException($"Don't know how to map {typeof(TSource).FullName} to {typeof(TTarget).FullName}.");
}
private Func<object, MapperContext, object> GetCtor(Type sourceType, Type targetType)
{
if (_ctors.TryGetValue(sourceType, out var sourceCtor) && sourceCtor.TryGetValue(targetType, out var ctor))
return ctor;
// we *may* run this more than once but it does not matter
ctor = null;
foreach (var (stype, sctors) in _ctors)
{
if (!stype.IsAssignableFrom(sourceType)) continue;
if (!sctors.TryGetValue(targetType, out ctor)) continue;
sourceCtor = sctors;
break;
}
if (ctor == null) return null;
_ctors[sourceType] = sourceCtor;
return ctor;
}
private Action<object, object, MapperContext> GetMap(Type sourceType, Type targetType)
{
if (_maps.TryGetValue(sourceType, out var sourceMap) && sourceMap.TryGetValue(targetType, out var map))
return map;
// we *may* run this more than once but it does not matter
map = null;
foreach (var (stype, smap) in _maps)
{
if (!stype.IsAssignableFrom(sourceType)) continue;
// TODO: consider looking for assignable types for target too?
if (!smap.TryGetValue(targetType, out map)) continue;
sourceMap = smap;
break;
}
if (map == null) return null;
_maps[sourceType] = sourceMap;
return map;
}
private static bool IsEnumerableOrArrayOfType(Type type)
{
if (type.IsArray && type.GetArrayRank() == 1) return true;
if (type.IsGenericType && type.GenericTypeArguments.Length == 1) return true;
return false;
}
private static Type GetEnumerableOrArrayTypeArgument(Type type)
{
if (type.IsArray) return type.GetElementType();
if (type.IsGenericType) return type.GenericTypeArguments[0];
throw new Exception("panic");
}
/// <summary>
/// Maps an enumerable of source objects to a new list of target objects.
/// </summary>
/// <typeparam name="TSourceElement">The type of the source objects.</typeparam>
/// <typeparam name="TTargetElement">The type of the target objects.</typeparam>
/// <param name="source">The source objects.</param>
/// <returns>A list containing the target objects.</returns>
public List<TTargetElement> MapEnumerable<TSourceElement, TTargetElement>(IEnumerable<TSourceElement> source)
{
return source.Select(Map<TSourceElement, TTargetElement>).ToList();
}
/// <summary>
/// Maps an enumerable of source objects to a new list of target objects.
/// </summary>
/// <typeparam name="TSourceElement">The type of the source objects.</typeparam>
/// <typeparam name="TTargetElement">The type of the target objects.</typeparam>
/// <param name="source">The source objects.</param>
/// <param name="f">A mapper context preparation method.</param>
/// <returns>A list containing the target objects.</returns>
public List<TTargetElement> MapEnumerable<TSourceElement, TTargetElement>(IEnumerable<TSourceElement> source, Action<MapperContext> f)
{
var context = new MapperContext(this);
f(context);
return source.Select(x => Map<TSourceElement, TTargetElement>(x, context)).ToList();
}
/// <summary>
/// Maps an enumerable of source objects to a new list of target objects.
/// </summary>
/// <typeparam name="TSourceElement">The type of the source objects.</typeparam>
/// <typeparam name="TTargetElement">The type of the target objects.</typeparam>
/// <param name="source">The source objects.</param>
/// <param name="context">A mapper context.</param>
/// <returns>A list containing the target objects.</returns>
public List<TTargetElement> MapEnumerable<TSourceElement, TTargetElement>(IEnumerable<TSourceElement> source, MapperContext context)
{
return source.Select(x => Map<TSourceElement, TTargetElement>(x, context)).ToList();
}
#endregion
}
}
@@ -83,17 +83,25 @@ namespace Umbraco.Core.Migrations.Expressions.Create
}
/// <inheritdoc />
public ICreateConstraintOnTableBuilder PrimaryKey()
public ICreateConstraintOnTableBuilder PrimaryKey() => PrimaryKey(true);
/// <inheritdoc />
public ICreateConstraintOnTableBuilder PrimaryKey(bool clustered)
{
var expression = new CreateConstraintExpression(_context, ConstraintType.PrimaryKey);
expression.Constraint.IsPrimaryKeyClustered = clustered;
return new CreateConstraintBuilder(expression);
}
/// <inheritdoc />
public ICreateConstraintOnTableBuilder PrimaryKey(string primaryKeyName)
public ICreateConstraintOnTableBuilder PrimaryKey(string primaryKeyName) => PrimaryKey(primaryKeyName, true);
/// <inheritdoc />
public ICreateConstraintOnTableBuilder PrimaryKey(string primaryKeyName, bool clustered)
{
var expression = new CreateConstraintExpression(_context, ConstraintType.PrimaryKey);
expression.Constraint.ConstraintName = primaryKeyName;
expression.Constraint.IsPrimaryKeyClustered = clustered;
return new CreateConstraintBuilder(expression);
}
@@ -19,7 +19,7 @@ namespace Umbraco.Core.Migrations.Expressions.Create.Expressions
var constraintType = (Constraint.IsPrimaryKeyConstraint) ? "PRIMARY KEY" : "UNIQUE";
if (Constraint.IsPrimaryKeyConstraint && SqlSyntax.SupportsClustered())
constraintType += " CLUSTERED";
constraintType += Constraint.IsPrimaryKeyClustered ? " CLUSTERED" : " NONCLUSTERED";
if (Constraint.IsNonUniqueConstraint)
constraintType = string.Empty;
@@ -68,6 +68,16 @@ namespace Umbraco.Core.Migrations.Expressions.Create
/// </summary>
ICreateConstraintOnTableBuilder PrimaryKey(string primaryKeyName);
/// <summary>
/// Builds a Create Primary Key expression.
/// </summary>
ICreateConstraintOnTableBuilder PrimaryKey(bool clustered);
/// <summary>
/// Builds a Create Primary Key expression.
/// </summary>
ICreateConstraintOnTableBuilder PrimaryKey(string primaryKeyName, bool clustered);
/// <summary>
/// Builds a Create Unique Constraint expression.
/// </summary>
@@ -25,11 +25,25 @@ namespace Umbraco.Core.Migrations.Expressions.Create.KeysAndIndexes
var syntax = _context.SqlContext.SqlSyntax;
var tableDefinition = DefinitionFactory.GetTableDefinition(TypeOfDto, syntax);
// note: of course we are creating the keys and indexes as per the DTO, so
// changing the DTO may break old migrations - or, better, these migrations
// should capture a copy of the DTO class that will not change
ExecuteSql(syntax.FormatPrimaryKey(tableDefinition));
foreach (var sql in syntax.Format(tableDefinition.Indexes))
ExecuteSql(sql);
foreach (var sql in syntax.Format(tableDefinition.ForeignKeys))
ExecuteSql(sql);
// note: we do *not* create the DF_ default constraints
/*
foreach (var column in tableDefinition.Columns)
{
var sql = syntax.FormatDefaultConstraint(column);
if (!sql.IsNullOrWhiteSpace())
ExecuteSql(sql);
}
*/
}
private void ExecuteSql(string sql)
@@ -10,9 +10,13 @@ namespace Umbraco.Core.Migrations.Expressions.Delete.DefaultConstraint
IDeleteDefaultConstraintOnTableBuilder,
IDeleteDefaultConstraintOnColumnBuilder
{
public DeleteDefaultConstraintBuilder(DeleteDefaultConstraintExpression expression)
private readonly IMigrationContext _context;
public DeleteDefaultConstraintBuilder(IMigrationContext context, DeleteDefaultConstraintExpression expression)
: base(expression)
{ }
{
_context = context;
}
/// <inheritdoc />
public IDeleteDefaultConstraintOnColumnBuilder OnTable(string tableName)
@@ -25,6 +29,9 @@ namespace Umbraco.Core.Migrations.Expressions.Delete.DefaultConstraint
public IExecutableBuilder OnColumn(string columnName)
{
Expression.ColumnName = columnName;
Expression.HasDefaultConstraint = _context.SqlContext.SqlSyntax.TryGetDefaultConstraint(_context.Database, Expression.TableName, columnName, out var constraintName);
Expression.ConstraintName = constraintName ?? string.Empty;
return new ExecutableBuilder(Expression);
}
}
@@ -1,4 +1,4 @@
using NPoco;
using Umbraco.Core.Exceptions;
using Umbraco.Core.Migrations.Expressions.Common;
using Umbraco.Core.Migrations.Expressions.Delete.Column;
using Umbraco.Core.Migrations.Expressions.Delete.Constraint;
@@ -29,9 +29,19 @@ namespace Umbraco.Core.Migrations.Expressions.Delete
}
/// <inheritdoc />
public IExecutableBuilder KeysAndIndexes(string tableName = null)
public IExecutableBuilder KeysAndIndexes<TDto>(bool local = true, bool foreign = true)
{
return new DeleteKeysAndIndexesBuilder(_context) { TableName = tableName };
var syntax = _context.SqlContext.SqlSyntax;
var tableDefinition = DefinitionFactory.GetTableDefinition(typeof(TDto), syntax);
return KeysAndIndexes(tableDefinition.Name, local, foreign);
}
/// <inheritdoc />
public IExecutableBuilder KeysAndIndexes(string tableName, bool local = true, bool foreign = true)
{
if (tableName.IsNullOrWhiteSpace())
throw new ArgumentNullOrEmptyException(nameof(tableName));
return new DeleteKeysAndIndexesBuilder(_context) { TableName = tableName, DeleteLocal = local, DeleteForeign = foreign };
}
/// <inheritdoc />
@@ -100,7 +110,7 @@ namespace Umbraco.Core.Migrations.Expressions.Delete
public IDeleteDefaultConstraintOnTableBuilder DefaultConstraint()
{
var expression = new DeleteDefaultConstraintExpression(_context);
return new DeleteDefaultConstraintBuilder(expression);
return new DeleteDefaultConstraintBuilder(_context, expression);
}
}
}
@@ -10,12 +10,17 @@ namespace Umbraco.Core.Migrations.Expressions.Delete.Expressions
public virtual string TableName { get; set; }
public virtual string ColumnName { get; set; }
public virtual string ConstraintName { get; set; }
public virtual bool HasDefaultConstraint { get; set; }
protected override string GetSql()
{
return string.Format(SqlSyntax.DeleteDefaultConstraint,
SqlSyntax.GetQuotedTableName(TableName),
SqlSyntax.GetQuotedColumnName(ColumnName));
return HasDefaultConstraint
? string.Format(SqlSyntax.DeleteDefaultConstraint,
SqlSyntax.GetQuotedTableName(TableName),
SqlSyntax.GetQuotedColumnName(ColumnName),
SqlSyntax.GetQuotedName(ConstraintName))
: string.Empty;
}
}
}
@@ -19,9 +19,14 @@ namespace Umbraco.Core.Migrations.Expressions.Delete
IExecutableBuilder Table(string tableName);
/// <summary>
/// Specifies the table to delete keys and indexes for.
/// Builds a Delete Keys and Indexes expression, and executes.
/// </summary>
IExecutableBuilder KeysAndIndexes(string tableName = null);
IExecutableBuilder KeysAndIndexes<TDto>(bool local = true, bool foreign = true);
/// <summary>
/// Builds a Delete Keys and Indexes expression, and executes.
/// </summary>
IExecutableBuilder KeysAndIndexes(string tableName, bool local = true, bool foreign = true);
/// <summary>
/// Specifies the column to delete.
@@ -18,34 +18,38 @@ namespace Umbraco.Core.Migrations.Expressions.Delete.KeysAndIndexes
public string TableName { get; set; }
public bool DeleteLocal { get; set; }
public bool DeleteForeign { get; set; }
/// <inheritdoc />
public void Do()
{
if (TableName == null)
{
// drop keys
var keys = _context.SqlContext.SqlSyntax.GetConstraintsPerTable(_context.Database).DistinctBy(x => x.Item2).ToArray();
foreach (var key in keys.Where(x => x.Item2.StartsWith("FK_")))
Delete.ForeignKey(key.Item2).OnTable(key.Item1).Do();
foreach (var key in keys.Where(x => x.Item2.StartsWith("PK_")))
Delete.PrimaryKey(key.Item2).FromTable(key.Item1).Do();
_context.BuildingExpression = false;
// drop indexes
var indexes = _context.SqlContext.SqlSyntax.GetDefinedIndexesDefinitions(_context.Database).DistinctBy(x => x.IndexName).ToArray();
foreach (var index in indexes)
Delete.Index(index.IndexName).OnTable(index.TableName).Do();
// drop keys
if (DeleteLocal || DeleteForeign)
{
// table, constraint
var tableKeys = _context.SqlContext.SqlSyntax.GetConstraintsPerTable(_context.Database).DistinctBy(x => x.Item2).ToList();
if (DeleteForeign)
{
foreach (var key in tableKeys.Where(x => x.Item1 == TableName && x.Item2.StartsWith("FK_")))
Delete.ForeignKey(key.Item2).OnTable(key.Item1).Do();
}
if (DeleteLocal)
{
foreach (var key in tableKeys.Where(x => x.Item1 == TableName && x.Item2.StartsWith("PK_")))
Delete.PrimaryKey(key.Item2).FromTable(key.Item1).Do();
// note: we do *not* delete the DEFAULT constraints
}
}
else
{
// drop keys
var keys = _context.SqlContext.SqlSyntax.GetConstraintsPerTable(_context.Database).DistinctBy(x => x.Item2).ToArray();
foreach (var key in keys.Where(x => x.Item1 == TableName && x.Item2.StartsWith("FK_")))
Delete.ForeignKey(key.Item2).OnTable(key.Item1).Do();
foreach (var key in keys.Where(x => x.Item1 == TableName && x.Item2.StartsWith("PK_")))
Delete.PrimaryKey(key.Item2).FromTable(key.Item1).Do();
// drop indexes
var indexes = _context.SqlContext.SqlSyntax.GetDefinedIndexesDefinitions(_context.Database).DistinctBy(x => x.IndexName).ToArray();
// drop indexes
if (DeleteLocal)
{
var indexes = _context.SqlContext.SqlSyntax.GetDefinedIndexesDefinitions(_context.Database).DistinctBy(x => x.IndexName).ToList();
foreach (var index in indexes.Where(x => x.TableName == TableName))
Delete.Index(index.IndexName).OnTable(index.TableName).Do();
}
@@ -36,7 +36,7 @@ namespace Umbraco.Core.Migrations
bool BuildingExpression { get; set; }
/// <summary>
/// Adds a post-migrations.
/// Adds a post-migration.
/// </summary>
void AddPostMigration<TMigration>()
where TMigration : IMigration;
@@ -389,7 +389,7 @@ namespace Umbraco.Core.Migrations.Install
private DatabaseSchemaResult ValidateSchema(IScope scope)
{
if (_databaseFactory.Configured == false)
if (_databaseFactory.Initialized == false)
return new DatabaseSchemaResult(_databaseFactory.SqlContext.SqlSyntax);
if (_databaseSchemaValidationResult != null)
@@ -513,7 +513,7 @@ namespace Umbraco.Core.Migrations.Install
private Attempt<Result> CheckReadyForInstall()
{
if (_databaseFactory.Configured == false)
if (_databaseFactory.CanConnect == false)
{
return Attempt.Fail(new Result
{
@@ -539,7 +539,7 @@ namespace Umbraco.Core.Migrations.Install
{
Message =
"The database configuration failed with the following message: " + ex.Message +
"\n Please check log file for additional information (can be found in '/App_Data/Logs/UmbracoTraceLog.txt')",
"\n Please check log file for additional information (can be found in '/App_Data/Logs/')",
Success = false,
Percentage = "90"
};
@@ -101,33 +101,33 @@ namespace Umbraco.Core.Migrations.Install
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -1, Trashed = false, ParentId = -1, UserId = -1, Level = 0, Path = "-1", SortOrder = 0, UniqueId = new Guid("916724a5-173d-4619-b97e-b9de133dd6f5"), Text = "SYSTEM DATA: umbraco master root", NodeObjectType = Constants.ObjectTypes.SystemRoot, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -20, Trashed = false, ParentId = -1, UserId = -1, Level = 0, Path = "-1,-20", SortOrder = 0, UniqueId = new Guid("0F582A79-1E41-4CF0-BFA0-76340651891A"), Text = "Recycle Bin", NodeObjectType = Constants.ObjectTypes.ContentRecycleBin, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -21, Trashed = false, ParentId = -1, UserId = -1, Level = 0, Path = "-1,-21", SortOrder = 0, UniqueId = new Guid("BF7C7CBC-952F-4518-97A2-69E9C7B33842"), Text = "Recycle Bin", NodeObjectType = Constants.ObjectTypes.MediaRecycleBin, CreateDate = DateTime.Now });
InsertDataTypeNodeDto(Constants.DataTypes.LabelString, 35, "f0bc4bfb-b499-40d6-ba86-058885a5178c", "Label");
InsertDataTypeNodeDto(Constants.DataTypes.LabelInt, 36, "8e7f995c-bd81-4627-9932-c40e568ec788", "Label (integer)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelBigint, 36, "930861bf-e262-4ead-a704-f99453565708", "Label (bigint)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelDateTime, 37, "0e9794eb-f9b5-4f20-a788-93acd233a7e4", "Label (datetime)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelTime, 38, "a97cec69-9b71-4c30-8b12-ec398860d7e8", "Label (time)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelDecimal, 39, "8f1ef1e1-9de4-40d3-a072-6673f631ca64", "Label (decimal)");
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -90, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-90", SortOrder = 34, UniqueId = new Guid("84c6b441-31df-4ffe-b67e-67d5bc3ae65a"), Text = "Upload", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -89, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-89", SortOrder = 33, UniqueId = new Guid("c6bac0dd-4ab9-45b1-8e30-e4b619ee5da3"), Text = "Textarea", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -88, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-88", SortOrder = 32, UniqueId = new Guid("0cc0eba1-9960-42c9-bf9b-60e150b429ae"), Text = "Textstring", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -87, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-87", SortOrder = 4, UniqueId = new Guid("ca90c950-0aff-4e72-b976-a30b1ac57dad"), Text = "Richtext editor", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -51, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-51", SortOrder = 2, UniqueId = new Guid("2e6d3631-066e-44b8-aec4-96f09099b2b5"), Text = "Numeric", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -49, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-49", SortOrder = 2, UniqueId = new Guid("92897bc6-a5f3-4ffe-ae27-f2e7e33dda49"), Text = "True/false", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -43, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-43", SortOrder = 2, UniqueId = new Guid("fbaf13a8-4036-41f2-93a3-974f678c312a"), Text = "Checkbox list", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DropDownSingle, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DropDownSingle}", SortOrder = 2, UniqueId = new Guid("0b6a45e7-44ba-430d-9da5-4e46060b9e03"), Text = "Dropdown", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -41, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-41", SortOrder = 2, UniqueId = new Guid("5046194e-4237-453c-a547-15db3a07c4e1"), Text = "Date Picker", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -40, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-40", SortOrder = 2, UniqueId = new Guid("bb5f57c9-ce2b-4bb9-b697-4caca783a805"), Text = "Radiobox", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DropDownMultiple, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DropDownMultiple}", SortOrder = 2, UniqueId = new Guid("f38f0ac7-1d27-439c-9f3f-089cd8825a53"), Text = "Dropdown multiple", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -37, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-37", SortOrder = 2, UniqueId = new Guid("0225af17-b302-49cb-9176-b9f35cab9c17"), Text = "Approved Color", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -36, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-36", SortOrder = 2, UniqueId = new Guid("e4d66c0f-b935-4200-81f0-025f7256b89a"), Text = "Date Picker with time", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DefaultContentListView, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DefaultContentListView}", SortOrder = 2, UniqueId = new Guid("C0808DD3-8133-4E4B-8CE8-E2BEA84A96A4"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Content", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DefaultMediaListView, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DefaultMediaListView}", SortOrder = 2, UniqueId = new Guid("3A0156C4-3B8C-4803-BDC1-6871FAA83FFF"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Media", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DefaultMembersListView, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DefaultMembersListView}", SortOrder = 2, UniqueId = new Guid("AA2C52A0-CE87-4E65-A47C-7DF09358585D"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Members", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
InsertDataTypeNodeDto(Constants.DataTypes.LabelString, 35, Constants.DataTypes.Guids.LabelString, "Label (string)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelInt, 36, Constants.DataTypes.Guids.LabelInt, "Label (integer)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelBigint, 36, Constants.DataTypes.Guids.LabelBigInt, "Label (bigint)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelDateTime, 37, Constants.DataTypes.Guids.LabelDateTime, "Label (datetime)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelTime, 38, Constants.DataTypes.Guids.LabelTime, "Label (time)");
InsertDataTypeNodeDto(Constants.DataTypes.LabelDecimal, 39, Constants.DataTypes.Guids.LabelDecimal, "Label (decimal)");
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.Upload, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.Upload}", SortOrder = 34, UniqueId = Constants.DataTypes.Guids.UploadGuid, Text = "Upload", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.Textarea, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.Textarea}", SortOrder = 33, UniqueId = Constants.DataTypes.Guids.TextareaGuid, Text = "Textarea", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.Textbox, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.Textbox}", SortOrder = 32, UniqueId = Constants.DataTypes.Guids.TextstringGuid, Text = "Textstring", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.RichtextEditor, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.RichtextEditor}", SortOrder = 4, UniqueId = Constants.DataTypes.Guids.RichtextEditorGuid, Text = "Richtext editor", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -51, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-51", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.NumericGuid, Text = "Numeric", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.Boolean, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.Boolean}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.CheckboxGuid, Text = "True/false", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -43, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-43", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.CheckboxListGuid, Text = "Checkbox list", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DropDownSingle, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DropDownSingle}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.DropdownGuid, Text = "Dropdown", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -41, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-41", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.DatePickerGuid, Text = "Date Picker", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -40, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-40", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.RadioboxGuid, Text = "Radiobox", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DropDownMultiple, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DropDownMultiple}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.DropdownMultipleGuid, Text = "Dropdown multiple", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = -37, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,-37", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.ApprovedColorGuid, Text = "Approved Color", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DateTime, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DateTime}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.DatePickerWithTimeGuid, Text = "Date Picker with time", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DefaultContentListView, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DefaultContentListView}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.ListViewContentGuid, Text = Constants.Conventions.DataTypes.ListViewPrefix + "Content", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DefaultMediaListView, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DefaultMediaListView}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.ListViewMediaGuid, Text = Constants.Conventions.DataTypes.ListViewPrefix + "Media", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.DefaultMembersListView, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.DefaultMembersListView}", SortOrder = 2, UniqueId = Constants.DataTypes.Guids.ListViewMembersGuid, Text = Constants.Conventions.DataTypes.ListViewPrefix + "Members", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = 1031, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,1031", SortOrder = 2, UniqueId = new Guid("f38bd2d7-65d0-48e6-95dc-87ce06ec2d3d"), Text = Constants.Conventions.MediaTypes.Folder, NodeObjectType = Constants.ObjectTypes.MediaType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = 1032, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,1032", SortOrder = 2, UniqueId = new Guid("cc07b313-0843-4aa8-bbda-871c8da728c8"), Text = Constants.Conventions.MediaTypes.Image, NodeObjectType = Constants.ObjectTypes.MediaType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = 1033, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,1033", SortOrder = 2, UniqueId = new Guid("4c52d8ab-54e6-40cd-999c-7a5f24903e4d"), Text = Constants.Conventions.MediaTypes.File, NodeObjectType = Constants.ObjectTypes.MediaType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = 1041, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,1041", SortOrder = 2, UniqueId = new Guid("b6b73142-b9c1-4bf8-a16d-e1c23320b549"), Text = "Tags", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = 1043, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,1043", SortOrder = 2, UniqueId = new Guid("1df9f033-e6d4-451f-b8d2-e0cbc50a836f"), Text = "Image Cropper", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.Tags, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.Tags}", SortOrder = 2, UniqueId = new Guid("b6b73142-b9c1-4bf8-a16d-e1c23320b549"), Text = "Tags", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = Constants.DataTypes.ImageCropper, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = $"-1,{Constants.DataTypes.ImageCropper}", SortOrder = 2, UniqueId = new Guid("1df9f033-e6d4-451f-b8d2-e0cbc50a836f"), Text = "Image Cropper", NodeObjectType = Constants.ObjectTypes.DataType, CreateDate = DateTime.Now });
_database.Insert(Constants.DatabaseSchema.Tables.Node, "id", false, new NodeDto { NodeId = 1044, Trashed = false, ParentId = -1, UserId = -1, Level = 1, Path = "-1,1044", SortOrder = 0, UniqueId = new Guid("d59be02f-1df9-4228-aa1e-01917d806cda"), Text = Constants.Conventions.MemberTypes.DefaultAlias, NodeObjectType = Constants.ObjectTypes.MemberType, CreateDate = DateTime.Now });
//New UDI pickers with newer Ids
@@ -155,10 +155,10 @@ namespace Umbraco.Core.Migrations.Install
private void CreateContentTypeData()
{
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 532, NodeId = 1031, Alias = Constants.Conventions.MediaTypes.Folder, Icon = "icon-folder", Thumbnail = "icon-folder", IsContainer = false, AllowAtRoot = true, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 533, NodeId = 1032, Alias = Constants.Conventions.MediaTypes.Image, Icon = "icon-picture", Thumbnail = "icon-picture", AllowAtRoot = true, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 534, NodeId = 1033, Alias = Constants.Conventions.MediaTypes.File, Icon = "icon-document", Thumbnail = "icon-document", AllowAtRoot = true, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 531, NodeId = 1044, Alias = Constants.Conventions.MemberTypes.DefaultAlias, Icon = "icon-user", Thumbnail = "icon-user", Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 532, NodeId = 1031, Alias = Constants.Conventions.MediaTypes.Folder, Icon = Constants.Icons.MediaFolder, Thumbnail = Constants.Icons.MediaFolder, IsContainer = false, AllowAtRoot = true, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 533, NodeId = 1032, Alias = Constants.Conventions.MediaTypes.Image, Icon = Constants.Icons.MediaImage, Thumbnail = Constants.Icons.MediaImage, AllowAtRoot = true, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 534, NodeId = 1033, Alias = Constants.Conventions.MediaTypes.File, Icon = Constants.Icons.MediaFile, Thumbnail = Constants.Icons.MediaFile, AllowAtRoot = true, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.ContentType, "pk", false, new ContentTypeDto { PrimaryKey = 531, NodeId = 1044, Alias = Constants.Conventions.MemberTypes.DefaultAlias, Icon = Constants.Icons.Member, Thumbnail = Constants.Icons.Member, Variations = (byte) ContentVariation.Nothing });
}
private void CreateUserData()
@@ -210,19 +210,19 @@ namespace Umbraco.Core.Migrations.Install
private void CreatePropertyTypeData()
{
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 6, UniqueId = 6.ToGuid(), DataTypeId = 1043, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.File, Name = "Upload image", SortOrder = 0, Mandatory = true, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 6, UniqueId = 6.ToGuid(), DataTypeId = Constants.DataTypes.ImageCropper, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.File, Name = "Upload image", SortOrder = 0, Mandatory = true, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 7, UniqueId = 7.ToGuid(), DataTypeId = Constants.DataTypes.LabelInt, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Width, Name = "Width", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = "in pixels", Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 8, UniqueId = 8.ToGuid(), DataTypeId = Constants.DataTypes.LabelInt, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Height, Name = "Height", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = "in pixels", Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 9, UniqueId = 9.ToGuid(), DataTypeId = Constants.DataTypes.LabelBigint, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Bytes, Name = "Size", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = "in bytes", Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 10, UniqueId = 10.ToGuid(), DataTypeId = -92, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Extension, Name = "Type", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 24, UniqueId = 24.ToGuid(), DataTypeId = -90, ContentTypeId = 1033, PropertyTypeGroupId = 4, Alias = Constants.Conventions.Media.File, Name = "Upload file", SortOrder = 0, Mandatory = true, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 24, UniqueId = 24.ToGuid(), DataTypeId = Constants.DataTypes.Upload, ContentTypeId = 1033, PropertyTypeGroupId = 4, Alias = Constants.Conventions.Media.File, Name = "Upload file", SortOrder = 0, Mandatory = true, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 25, UniqueId = 25.ToGuid(), DataTypeId = -92, ContentTypeId = 1033, PropertyTypeGroupId = 4, Alias = Constants.Conventions.Media.Extension, Name = "Type", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 26, UniqueId = 26.ToGuid(), DataTypeId = Constants.DataTypes.LabelBigint, ContentTypeId = 1033, PropertyTypeGroupId = 4, Alias = Constants.Conventions.Media.Bytes, Name = "Size", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = "in bytes", Variations = (byte) ContentVariation.Nothing });
//membership property types
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 28, UniqueId = 28.ToGuid(), DataTypeId = -89, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.Comments, Name = Constants.Conventions.Member.CommentsLabel, SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 28, UniqueId = 28.ToGuid(), DataTypeId = Constants.DataTypes.Textarea, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.Comments, Name = Constants.Conventions.Member.CommentsLabel, SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 29, UniqueId = 29.ToGuid(), DataTypeId = Constants.DataTypes.LabelInt, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.FailedPasswordAttempts, Name = Constants.Conventions.Member.FailedPasswordAttemptsLabel, SortOrder = 1, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 30, UniqueId = 30.ToGuid(), DataTypeId = -49, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.IsApproved, Name = Constants.Conventions.Member.IsApprovedLabel, SortOrder = 2, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 31, UniqueId = 31.ToGuid(), DataTypeId = -49, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.IsLockedOut, Name = Constants.Conventions.Member.IsLockedOutLabel, SortOrder = 3, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 30, UniqueId = 30.ToGuid(), DataTypeId = Constants.DataTypes.Boolean, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.IsApproved, Name = Constants.Conventions.Member.IsApprovedLabel, SortOrder = 2, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 31, UniqueId = 31.ToGuid(), DataTypeId = Constants.DataTypes.Boolean, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.IsLockedOut, Name = Constants.Conventions.Member.IsLockedOutLabel, SortOrder = 3, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 32, UniqueId = 32.ToGuid(), DataTypeId = Constants.DataTypes.LabelDateTime, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.LastLockoutDate, Name = Constants.Conventions.Member.LastLockoutDateLabel, SortOrder = 4, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 33, UniqueId = 33.ToGuid(), DataTypeId = Constants.DataTypes.LabelDateTime, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.LastLoginDate, Name = Constants.Conventions.Member.LastLoginDateLabel, SortOrder = 5, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
_database.Insert(Constants.DatabaseSchema.Tables.PropertyType, "id", false, new PropertyTypeDto { Id = 34, UniqueId = 34.ToGuid(), DataTypeId = Constants.DataTypes.LabelDateTime, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.LastPasswordChangeDate, Name = Constants.Conventions.Member.LastPasswordChangeDateLabel, SortOrder = 6, Mandatory = false, ValidationRegExp = null, Description = null, Variations = (byte) ContentVariation.Nothing });
@@ -266,30 +266,30 @@ namespace Umbraco.Core.Migrations.Install
const string layouts = "[" + cardLayout + "," + listLayout + "]";
// TODO: Check which of the DataTypeIds below doesn't exist in umbracoNode, which results in a foreign key constraint errors.
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -49, EditorAlias = Constants.PropertyEditors.Aliases.Boolean, DbType = "Integer" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.Boolean, EditorAlias = Constants.PropertyEditors.Aliases.Boolean, DbType = "Integer" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -51, EditorAlias = Constants.PropertyEditors.Aliases.Integer, DbType = "Integer" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -87, EditorAlias = Constants.PropertyEditors.Aliases.TinyMce, DbType = "Ntext",
Configuration = "{\"value\":\",code,undo,redo,cut,copy,mcepasteword,stylepicker,bold,italic,bullist,numlist,outdent,indent,mcelink,unlink,mceinsertanchor,mceimage,umbracomacro,mceinserttable,umbracoembed,mcecharmap,|1|1,2,3,|0|500,400|1049,|true|\"}" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -88, EditorAlias = Constants.PropertyEditors.Aliases.TextBox, DbType = "Nvarchar" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -89, EditorAlias = Constants.PropertyEditors.Aliases.TextArea, DbType = "Ntext" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -90, EditorAlias = Constants.PropertyEditors.Aliases.UploadField, DbType = "Nvarchar" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.Textbox, EditorAlias = Constants.PropertyEditors.Aliases.TextBox, DbType = "Nvarchar" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.Textarea, EditorAlias = Constants.PropertyEditors.Aliases.TextArea, DbType = "Ntext" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.Upload, EditorAlias = Constants.PropertyEditors.Aliases.UploadField, DbType = "Nvarchar" });
InsertDataTypeDto(Constants.DataTypes.LabelString, Constants.PropertyEditors.Aliases.Label, "Nvarchar", "{\"umbracoDataValueType\":\"STRING\"}");
InsertDataTypeDto(Constants.DataTypes.LabelInt, Constants.PropertyEditors.Aliases.Label, "Integer", "{\"umbracoDataValueType\":\"INT\"}");
InsertDataTypeDto(Constants.DataTypes.LabelBigint, Constants.PropertyEditors.Aliases.Label, "Nvarchar", "{\"umbracoDataValueType\":\"BIGINT\"}");
InsertDataTypeDto(Constants.DataTypes.LabelDateTime, Constants.PropertyEditors.Aliases.Label, "Date", "{\"umbracoDataValueType\":\"DATETIME\"}");
InsertDataTypeDto(Constants.DataTypes.LabelDecimal, Constants.PropertyEditors.Aliases.Label, "Decimal", "{\"umbracoDataValueType\":\"DECIMAL\"}");
InsertDataTypeDto(Constants.DataTypes.LabelTime, Constants.PropertyEditors.Aliases.Label, "Date", "{\"umbracoDataValueType\":\"TIME\"}");
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -36, EditorAlias = Constants.PropertyEditors.Aliases.DateTime, DbType = "Date" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.DateTime, EditorAlias = Constants.PropertyEditors.Aliases.DateTime, DbType = "Date" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -37, EditorAlias = Constants.PropertyEditors.Aliases.ColorPicker, DbType = "Nvarchar" });
InsertDataTypeDto(Constants.DataTypes.DropDownSingle, Constants.PropertyEditors.Aliases.DropDownListFlexible, "Nvarchar", "{\"multiple\":false}");
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -40, EditorAlias = Constants.PropertyEditors.Aliases.RadioButtonList, DbType = "Nvarchar" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -41, EditorAlias = "Umbraco.DateTime", DbType = "Date", Configuration = "{\"format\":\"YYYY-MM-DD\"}" });
InsertDataTypeDto(Constants.DataTypes.DropDownMultiple, Constants.PropertyEditors.Aliases.DropDownListFlexible, "Nvarchar", "{\"multiple\":true}");
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = -43, EditorAlias = Constants.PropertyEditors.Aliases.CheckBoxList, DbType = "Nvarchar" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = 1041, EditorAlias = Constants.PropertyEditors.Aliases.Tags, DbType = "Ntext",
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.Tags, EditorAlias = Constants.PropertyEditors.Aliases.Tags, DbType = "Ntext",
Configuration = "{\"group\":\"default\", \"storageType\":\"Json\"}"
});
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = 1043, EditorAlias = Constants.PropertyEditors.Aliases.ImageCropper, DbType = "Ntext" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.ImageCropper, EditorAlias = Constants.PropertyEditors.Aliases.ImageCropper, DbType = "Ntext" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.DefaultContentListView, EditorAlias = Constants.PropertyEditors.Aliases.ListView, DbType = "Nvarchar",
Configuration = "{\"pageSize\":100, \"orderBy\":\"updateDate\", \"orderDirection\":\"desc\", \"layouts\":" + layouts + ", \"includeProperties\":[{\"alias\":\"updateDate\",\"header\":\"Last edited\",\"isSystem\":1},{\"alias\":\"owner\",\"header\":\"Updated by\",\"isSystem\":1}]}" });
_database.Insert(Constants.DatabaseSchema.Tables.DataType, "pk", false, new DataTypeDto { NodeId = Constants.DataTypes.DefaultMediaListView, EditorAlias = Constants.PropertyEditors.Aliases.ListView, DbType = "Nvarchar",
@@ -47,7 +47,7 @@ namespace Umbraco.Core.Migrations.Install
typeof (LogDto),
typeof (MacroDto),
typeof (MacroPropertyDto),
typeof (MemberTypeDto),
typeof (MemberPropertyTypeDto),
typeof (MemberDto),
typeof (Member2MemberGroupDto),
typeof (PropertyTypeGroupDto),
@@ -41,6 +41,7 @@ namespace Umbraco.Core.Migrations
public void AddPostMigration<TMigration>()
where TMigration : IMigration
{
// just adding - will be de-duplicated when executing
PostMigrations.Add(typeof(TMigration));
}
}
@@ -92,6 +92,7 @@ namespace Umbraco.Core.Migrations
if (_executed)
throw new InvalidOperationException("This expression has already been executed.");
_executed = true;
Context.BuildingExpression = false;
if (sql == null)
{
+19 -4
View File
@@ -240,7 +240,8 @@ namespace Umbraco.Core.Migrations
if (finalState == null)
finalState = kvp.Key;
else
throw new Exception("Multiple final states have been detected.");
throw new InvalidOperationException($"Multiple final states have been detected in the plan (\"{finalState}\", \"{kvp.Key}\")."
+ " Make sure the plan contains only one final state.");
}
// now check for loops
@@ -254,7 +255,8 @@ namespace Umbraco.Core.Migrations
while (nextTransition != null && !verified.Contains(nextTransition.SourceState))
{
if (visited.Contains(nextTransition.SourceState))
throw new Exception("A loop has been detected.");
throw new InvalidOperationException($"A loop has been detected in the plan around state \"{nextTransition.SourceState}\"."
+ " Make sure the plan does not contain circular transition paths.");
visited.Add(nextTransition.SourceState);
nextTransition = _transitions[nextTransition.TargetState];
}
@@ -264,6 +266,14 @@ namespace Umbraco.Core.Migrations
_finalState = finalState;
}
/// <summary>
/// Throws an exception when the initial state is unknown.
/// </summary>
protected virtual void ThrowOnUnknownInitialState(string state)
{
throw new InvalidOperationException($"The migration plan does not support migrating from state \"{state}\".");
}
/// <summary>
/// Executes the plan.
/// </summary>
@@ -287,13 +297,15 @@ namespace Umbraco.Core.Migrations
logger.Info<MigrationPlan>("At {OrigState}", string.IsNullOrWhiteSpace(origState) ? "origin": origState);
if (!_transitions.TryGetValue(origState, out var transition))
throw new Exception($"Unknown state \"{origState}\".");
ThrowOnUnknownInitialState(origState);
var context = new MigrationContext(scope.Database, logger);
context.PostMigrations.AddRange(_postMigrationTypes);
while (transition != null)
{
logger.Info<MigrationPlan>("Execute {MigrationType}", transition.MigrationType.Name);
var migration = migrationBuilder.Build(transition.MigrationType, context);
migration.Migrate();
@@ -302,6 +314,8 @@ namespace Umbraco.Core.Migrations
logger.Info<MigrationPlan>("At {OrigState}", origState);
// throw a raw exception here: this should never happen as the plan has
// been validated - this is just a paranoid safety test
if (!_transitions.TryGetValue(origState, out transition))
throw new Exception($"Unknown state \"{origState}\".");
}
@@ -322,7 +336,8 @@ namespace Umbraco.Core.Migrations
logger.Info<MigrationPlan>("Done (pending scope completion).");
// safety check
// safety check - again, this should never happen as the plan has been validated,
// and this is just a paranoid safety test
if (origState != _finalState)
throw new Exception($"Internal error, reached state {origState} which is not final state {_finalState}");
@@ -0,0 +1,21 @@
using Umbraco.Core.Migrations.Install;
namespace Umbraco.Core.Migrations.Upgrade.Common
{
public class CreateKeysAndIndexes : MigrationBase
{
public CreateKeysAndIndexes(IMigrationContext context)
: base(context)
{ }
public override void Migrate()
{
// remove those that may already have keys
Delete.KeysAndIndexes(Constants.DatabaseSchema.Tables.KeyValue).Do();
// re-create *all* keys and indexes
foreach (var x in DatabaseSchemaCreator.OrderedTables)
Create.KeysAndIndexes(x).Do();
}
}
}
@@ -0,0 +1,75 @@
namespace Umbraco.Core.Migrations.Upgrade.Common
{
public class DeleteKeysAndIndexes : MigrationBase
{
public DeleteKeysAndIndexes(IMigrationContext context)
: base(context)
{ }
public override void Migrate()
{
// all v7.14 tables
var tables = new[]
{
"cmsContent",
"cmsContentType",
"cmsContentType2ContentType",
"cmsContentTypeAllowedContentType",
"cmsContentVersion",
"cmsContentXml",
"cmsDataType",
"cmsDataTypePreValues",
"cmsDictionary",
"cmsDocument",
"cmsDocumentType",
"cmsLanguageText",
"cmsMacro",
"cmsMacroProperty",
"cmsMedia",
"cmsMember",
"cmsMember2MemberGroup",
"cmsMemberType",
"cmsPreviewXml",
"cmsPropertyData",
"cmsPropertyType",
"cmsPropertyTypeGroup",
"cmsTagRelationship",
"cmsTags",
"cmsTask",
"cmsTaskType",
"cmsTemplate",
"umbracoAccess",
"umbracoAccessRule",
"umbracoAudit",
"umbracoCacheInstruction",
"umbracoConsent",
"umbracoDomains",
"umbracoExternalLogin",
"umbracoLanguage",
"umbracoLock",
"umbracoLog",
"umbracoMigration",
"umbracoNode",
"umbracoRedirectUrl",
"umbracoRelation",
"umbracoRelationType",
"umbracoServer",
"umbracoUser",
"umbracoUser2NodeNotify",
"umbracoUser2UserGroup",
"umbracoUserGroup",
"umbracoUserGroup2App",
"umbracoUserGroup2NodePermission",
"umbracoUserLogin",
"umbracoUserStartNode",
};
// delete *all* keys and indexes - because of FKs
// on known v7 tables only
foreach (var table in tables)
Delete.KeysAndIndexes(table, false, true).Do();
foreach (var table in tables)
Delete.KeysAndIndexes(table, true, false).Do();
}
}
}
@@ -2,10 +2,10 @@
using System.Configuration;
using Semver;
using Umbraco.Core.Configuration;
using Umbraco.Core.Migrations.Upgrade.V_7_12_0;
using Umbraco.Core.Migrations.Upgrade.V_7_14_0;
using Umbraco.Core.Migrations.Upgrade.Common;
using Umbraco.Core.Migrations.Upgrade.V_8_0_0;
using Umbraco.Core.Migrations.Upgrade.V_8_0_1;
using Umbraco.Core.Migrations.Upgrade.V_8_1_0;
namespace Umbraco.Core.Migrations.Upgrade
{
@@ -14,6 +14,9 @@ namespace Umbraco.Core.Migrations.Upgrade
/// </summary>
public class UmbracoPlan : MigrationPlan
{
private const string InitPrefix = "{init-";
private const string InitSuffix = "}";
/// <summary>
/// Initializes a new instance of the <see cref="UmbracoPlan"/> class.
/// </summary>
@@ -23,6 +26,27 @@ namespace Umbraco.Core.Migrations.Upgrade
DefinePlan();
}
/// <summary>
/// Gets the initial state corresponding to a version.
/// </summary>
private static string GetInitState(SemVersion version)
=> InitPrefix + version + InitSuffix;
/// <summary>
/// Tries to extract a version from an initial state.
/// </summary>
private static bool TryGetInitStateVersion(string state, out string version)
{
if (state.StartsWith(InitPrefix) && state.EndsWith(InitSuffix))
{
version = state.TrimStart(InitPrefix).TrimEnd(InitSuffix);
return true;
}
version = null;
return false;
}
/// <inheritdoc />
/// <remarks>
/// <para>The default initial state in plans is string.Empty.</para>
@@ -40,23 +64,32 @@ namespace Umbraco.Core.Migrations.Upgrade
if (!SemVersion.TryParse(ConfigurationManager.AppSettings[Constants.AppSettings.ConfigurationStatus], out var currentVersion))
throw new InvalidOperationException($"Could not get current version from web.config {Constants.AppSettings.ConfigurationStatus} appSetting.");
// we currently support upgrading from 7.10.0 and later
if (currentVersion < new SemVersion(7, 10))
throw new InvalidOperationException($"Version {currentVersion} cannot be migrated to {UmbracoVersion.SemanticVersion}.");
// cannot go back in time
if (currentVersion > UmbracoVersion.SemanticVersion)
throw new InvalidOperationException($"Version {currentVersion} cannot be downgraded to {UmbracoVersion.SemanticVersion}.");
// upgrading from version 7 => initial state is eg "{init-7.10.0}"
// anything else is not supported - ie if 8 and above, we should have an initial state already
if (currentVersion.Major != 7)
throw new InvalidOperationException($"Version {currentVersion} is not supported by the migration plan.");
// only from 7.14.0 and above
var minVersion = new SemVersion(7, 14);
if (currentVersion < minVersion)
throw new InvalidOperationException($"Version {currentVersion} cannot be migrated to {UmbracoVersion.SemanticVersion}."
+ $" Please upgrade first to at least {minVersion}.");
return "{init-" + currentVersion + "}";
// initial state is eg "{init-7.14.0}"
return GetInitState(currentVersion);
}
}
protected override void ThrowOnUnknownInitialState(string state)
{
if (TryGetInitStateVersion(state, out var initVersion))
{
throw new InvalidOperationException($"Version {UmbracoVersion.SemanticVersion} does not support migrating from {initVersion}."
+ $" Please verify which versions support migrating from {initVersion}.");
}
base.ThrowOnUnknownInitialState(state);
}
// define the plan
protected void DefinePlan()
{
@@ -69,21 +102,23 @@ namespace Umbraco.Core.Migrations.Upgrade
//
// If the new migration causes a merge conflict, because someone else also added another
// new migration, you NEED to fix the conflict by providing one default path, and paths
// out of the conflict states (see example below).
// out of the conflict states (see examples below).
//
// * Porting from version 7:
// Append the ported migration to the main chain, using a new guid (same as above).
// Create a new special chain from the {init-...} state to the main chain (see example
// below).
// Create a new special chain from the {init-...} state to the main chain.
// plan starts at 7.10.0 (anything before 7.10.0 is not supported)
// upgrades from 7 to 8, and then takes care of all eventual upgrades
// plan starts at 7.14.0 (anything before 7.14.0 is not supported)
//
From("{init-7.10.0}");
From(GetInitState(new SemVersion(7, 14, 0)));
// begin migrating from v7 - remove all keys and indexes
To<DeleteKeysAndIndexes>("{B36B9ABD-374E-465B-9C5F-26AB0D39326F}");
To<AddLockObjects>("{7C447271-CA3F-4A6A-A913-5D77015655CB}");
To<AddContentNuTable>("{CBFF58A2-7B50-4F75-8E98-249920DB0F37}");
To<RefactorXmlColumns>("{3D18920C-E84D-405C-A06A-B7CEE52FE5DD}");
To<RenameMediaVersionTable>("{5CB66059-45F4-48BA-BCBD-C5035D79206B}");
To<VariantsMigration>("{FB0A5429-587E-4BD0-8A67-20F0E7E62FF7}");
To<DropMigrationsTable>("{F0C42457-6A3B-4912-A7EA-F27ED85A2092}");
To<DataTypeMigration>("{8640C9E4-A1C0-4C59-99BB-609B4E604981}");
@@ -94,90 +129,55 @@ namespace Umbraco.Core.Migrations.Upgrade
ToWithReplace<AddVariationTables2, AddVariationTables1A>("{941B2ABA-2D06-4E04-81F5-74224F1DB037}", "{76DF5CD7-A884-41A5-8DC6-7860D95B1DF5}"); // kill AddVariationTable1
To<RefactorMacroColumns>("{A7540C58-171D-462A-91C5-7A9AA5CB8BFD}");
Merge().To<UserForeignKeys>("{3E44F712-E2E3-473A-AE49-5D7F8E67CE3F}") // shannon added that one
.With().To<AddTypedLabels>("{65D6B71C-BDD5-4A2E-8D35-8896325E9151}") // stephan added that one
Merge()
.To<UserForeignKeys>("{3E44F712-E2E3-473A-AE49-5D7F8E67CE3F}")
.With()
.To<AddTypedLabels>("{65D6B71C-BDD5-4A2E-8D35-8896325E9151}")
.As("{4CACE351-C6B9-4F0C-A6BA-85A02BBD39E4}");
To<ContentVariationMigration>("{1350617A-4930-4D61-852F-E3AA9E692173}");
To<UpdateUmbracoConsent>("{39E5B1F7-A50B-437E-B768-1723AEC45B65}"); // from 7.12.0
Merge()
.To<AddRelationTypeForMediaFolderOnDelete>("{0541A62B-EF87-4CA2-8225-F0EB98ECCC9F}") // from 7.12.0
.To<IncreaseLanguageIsoCodeColumnLength>("{EB34B5DC-BB87-4005-985E-D983EA496C38}") // from 7.12.0
.To<RenameTrueFalseField>("{517CE9EA-36D7-472A-BF4B-A0D6FB1B8F89}") // from 7.12.0
.To<SetDefaultTagsStorageType>("{BBD99901-1545-40E4-8A5A-D7A675C7D2F2}") // from 7.12.0
.With()
.To<FallbackLanguage>("{CF51B39B-9B9A-4740-BB7C-EAF606A7BFBF}") // andy added that one
.As("{8B14CEBD-EE47-4AAD-A841-93551D917F11}");
ToWithReplace<UpdateDefaultMandatoryLanguage>("{2C87AA47-D1BC-4ECB-8A73-2D8D1046C27F}", "{5F4597F4-A4E0-4AFE-90B5-6D2F896830EB}"); // merge
ToWithReplace<RefactorVariantsModel>("{B19BF0F2-E1C6-4AEB-A146-BC559D97A2C6}", "{290C18EE-B3DE-4769-84F1-1F467F3F76DA}"); // merge
To<FallbackLanguage>("{CF51B39B-9B9A-4740-BB7C-EAF606A7BFBF}");
To<UpdateDefaultMandatoryLanguage>("{5F4597F4-A4E0-4AFE-90B5-6D2F896830EB}");
To<RefactorVariantsModel>("{290C18EE-B3DE-4769-84F1-1F467F3F76DA}");
To<DropTaskTables>("{6A2C7C1B-A9DB-4EA9-B6AB-78E7D5B722A7}");
To<FixLockTablePrimaryKey>("{77874C77-93E5-4488-A404-A630907CEEF0}");
To<AddLogTableColumns>("{8804D8E8-FE62-4E3A-B8A2-C047C2118C38}");
To<DropPreValueTable>("{23275462-446E-44C7-8C2C-3B8C1127B07D}");
To<DropDownPropertyEditorsMigration>("{6B251841-3069-4AD5-8AE9-861F9523E8DA}");
To<TagsMigrationFix>("{EE429F1B-9B26-43CA-89F8-A86017C809A3}");
To<DropTemplateDesignColumn>("{08919C4B-B431-449C-90EC-2B8445B5C6B1}");
To<TablesForScheduledPublishing>("{7EB0254C-CB8B-4C75-B15B-D48C55B449EB}");
To<DropTaskTables>("{648A2D5F-7467-48F8-B309-E99CEEE00E2A}"); // fixed version
To<MakeTagsVariant>("{C39BF2A7-1454-4047-BBFE-89E40F66ED63}");
To<MakeRedirectUrlVariant>("{64EBCE53-E1F0-463A-B40B-E98EFCCA8AE2}");
To<AddContentTypeIsElementColumn>("{0009109C-A0B8-4F3F-8FEB-C137BBDDA268}");
To<UpdateMemberGroupPickerData>("{8A027815-D5CD-4872-8B88-9A51AB5986A6}"); // from 7.14.0
To<ConvertRelatedLinksToMultiUrlPicker>("{ED28B66A-E248-4D94-8CDB-9BDF574023F0}");
To<UpdatePickerIntegerValuesToUdi>("{38C809D5-6C34-426B-9BEA-EFD39162595C}");
To<RenameUmbracoDomainsTable>("{6017F044-8E70-4E10-B2A3-336949692ADD}");
To<AddUserLoginDtoDateIndex>("{98339BEF-E4B2-48A8-B9D1-D173DC842BBE}");
Merge()
.To<DropXmlTables>("{CDBEDEE4-9496-4903-9CF2-4104E00FF960}")
.With()
.To<RadioAndCheckboxAndDropdownPropertyEditorsMigration>("{940FD19A-00A8-4D5C-B8FF-939143585726}")
.To<RadioAndCheckboxPropertyEditorsMigration>("{940FD19A-00A8-4D5C-B8FF-939143585726}")
.As("{0576E786-5C30-4000-B969-302B61E90CA3}");
To<FixLanguageIsoCodeLength>("{48AD6CCD-C7A4-4305-A8AB-38728AD23FC5}");
// finish migrating from v7 - recreate all keys and indexes
To<CreateKeysAndIndexes>("{3F9764F5-73D0-4D45-8804-1240A66E43A2}");
To<RenameLabelAndRichTextPropertyEditorAliases>("{E0CBE54D-A84F-4A8F-9B13-900945FD7ED9}");
To<MergeDateAndDateTimePropertyEditor>("{78BAF571-90D0-4D28-8175-EF96316DA789}");
// release-8.0.0
// to 8.0.1...
To<ChangeNuCacheJsonFormat>("{80C0A0CB-0DD5-4573-B000-C4B7C313C70D}");
// release-8.0.1
// to 8.1.0...
To<ConvertTinyMceAndGridMediaUrlsToLocalLink>("{B69B6E8C-A769-4044-A27E-4A4E18D1645A}");
To<RenameUserLoginDtoDateIndex>("{0372A42B-DECF-498D-B4D1-6379E907EB94}");
To<FixContentNuCascade>("{5B1E0D93-F5A3-449B-84BA-65366B84E2D4}");
//FINAL
// and then, need to support upgrading from more recent 7.x
//
From("{init-7.10.1}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.10.2}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.10.3}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.10.4}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.10.5}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.11.0}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.11.1}").To("{init-7.10.0}"); // same as 7.10.0
From("{init-7.11.2}").To("{init-7.10.0}"); // same as 7.10.0
// 7.12.0 has migrations, define a custom chain which copies the chain
// going from {init-7.10.0} to former final (1350617A) , and then goes straight to
// main chain, skipping the migrations
//
From("{init-7.12.0}");
// clone start / clone stop / target
ToWithClone("{init-7.10.0}", "{1350617A-4930-4D61-852F-E3AA9E692173}", "{BBD99901-1545-40E4-8A5A-D7A675C7D2F2}");
From("{init-7.12.1}").To("{init-7.10.0}"); // same as 7.12.0
From("{init-7.12.2}").To("{init-7.10.0}"); // same as 7.12.0
From("{init-7.12.3}").To("{init-7.10.0}"); // same as 7.12.0
From("{init-7.12.4}").To("{init-7.10.0}"); // same as 7.12.0
From("{init-7.13.0}").To("{init-7.10.0}"); // same as 7.12.0
From("{init-7.13.1}").To("{init-7.10.0}"); // same as 7.12.0
// 7.14.0 has migrations, handle it...
// clone going from 7.10 to 1350617A (the last one before we started to merge 7.12 migrations), then
// clone going from CF51B39B (after 7.12 migrations) to 0009109C (the last one before we started to merge 7.12 migrations),
// ending in 8A027815 (after 7.14 migrations)
From("{init-7.14.0}")
.ToWithClone("{init-7.10.0}", "{1350617A-4930-4D61-852F-E3AA9E692173}", "{9109B8AF-6B34-46EE-9484-7434196D0C79}")
.ToWithClone("{CF51B39B-9B9A-4740-BB7C-EAF606A7BFBF}", "{0009109C-A0B8-4F3F-8FEB-C137BBDDA268}", "{8A027815-D5CD-4872-8B88-9A51AB5986A6}");
}
}
}
@@ -1,36 +0,0 @@
using System.IO;
using Umbraco.Core.IO;
using File = System.IO.File;
namespace Umbraco.Core.Migrations.Upgrade.V_7_10_0
{
/// <summary>
/// Renames the preview folder containing static HTML files to ensure it does not interfere with the MVC route
/// that is now supposed to render these views dynamically. We don't want to delete as people may have made
/// customizations to these files that would need to be migrated to the new .cshtml view files.
/// </summary>
public class RenamePreviewFolder : MigrationBase
{
public RenamePreviewFolder(IMigrationContext context)
: base(context)
{ }
public override void Migrate()
{
var previewFolderPath = IOHelper.MapPath(SystemDirectories.Umbraco + "/preview");
if (Directory.Exists(previewFolderPath))
{
var newPath = previewFolderPath.Replace("preview", "preview.old");
if (Directory.Exists(newPath) == false)
{
Directory.Move(previewFolderPath, newPath);
var readmeText =
$"Static HTML files used for preview and canvas editing functionality no longer live in this directory.\r\n" +
$"Instead they have been recreated as MVC views and can now be found in '~/Umbraco/Views/Preview'.\r\n" +
$"See issue: http://issues.umbraco.org/issue/U4-11090";
File.WriteAllText(Path.Combine(newPath, "readme.txt"), readmeText);
}
}
}
}
}
@@ -1,33 +0,0 @@
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Migrations.Upgrade.V_7_12_0
{
public class AddRelationTypeForMediaFolderOnDelete : MigrationBase
{
public AddRelationTypeForMediaFolderOnDelete(IMigrationContext context) : base(context)
{
}
public override void Migrate()
{
var relationTypeCount = Context.Database.ExecuteScalar<int>("SELECT COUNT(*) FROM umbracoRelationType WHERE alias=@alias",
new { alias = Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteAlias });
if (relationTypeCount > 0)
return;
var uniqueId = (Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteAlias + "____" + Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteName).ToGuid();
Insert.IntoTable("umbracoRelationType").Row(new
{
typeUniqueId = uniqueId,
alias = Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteAlias,
name = Constants.Conventions.RelationTypes.RelateParentMediaFolderOnDeleteName,
childObjectType = Constants.ObjectTypes.MediaType,
parentObjectType = Constants.ObjectTypes.MediaType,
dual = false
}).Do();
}
}
}
@@ -1,46 +0,0 @@
using System.Linq;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Migrations.Upgrade.V_7_12_0
{
public class IncreaseLanguageIsoCodeColumnLength : MigrationBase
{
public IncreaseLanguageIsoCodeColumnLength(IMigrationContext context)
: base(context)
{ }
public override void Migrate()
{
// Some people seem to have a constraint in their DB instead of an index, we'd need to drop that one
// See: https://our.umbraco.com/forum/using-umbraco-and-getting-started/93282-upgrade-from-711-to-712-fails
var constraints = SqlSyntax.GetConstraintsPerTable(Context.Database).Distinct().ToArray();
if (constraints.Any(x => x.Item2.InvariantEquals("IX_umbracoLanguage_languageISOCode")))
{
Delete.UniqueConstraint("IX_umbracoLanguage_languageISOCode").FromTable("umbracoLanguage").Do();
}
//Now check for indexes of that name and drop that if it exists
var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(Context.Database);
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoLanguage_languageISOCode")))
{
Delete.Index("IX_umbracoLanguage_languageISOCode").OnTable("umbracoLanguage").Do();
}
Alter.Table("umbracoLanguage")
.AlterColumn("languageISOCode")
.AsString(14)
.Nullable()
.Do();
Create.Index("IX_umbracoLanguage_languageISOCode")
.OnTable("umbracoLanguage")
.OnColumn("languageISOCode")
.Ascending()
.WithOptions()
.Unique()
.Do();
}
}
}
@@ -1,19 +0,0 @@
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.Dtos;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Migrations.Upgrade.V_7_12_0
{
public class RenameTrueFalseField : MigrationBase
{
public RenameTrueFalseField(IMigrationContext context) : base(context)
{
}
public override void Migrate()
{
//rename the existing true/false field
Update.Table(NodeDto.TableName).Set(new { text = "Checkbox" }).Where(new { id = Constants.DataTypes.Boolean }).Do();
}
}
}
@@ -1,51 +0,0 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Dtos;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Core.Migrations.Upgrade.V_7_12_0
{
/// <summary>
/// Set the default storageType for the tags datatype to "CSV" to ensure backwards compatibility since the default is going to be JSON in new versions.
/// </summary>
public class SetDefaultTagsStorageType : MigrationBase
{
public SetDefaultTagsStorageType(IMigrationContext context)
: base(context)
{ }
// dummy editor for deserialization
private class TagConfigurationEditor : ConfigurationEditor<TagConfiguration>
{ }
public override void Migrate()
{
// get all Umbraco.Tags datatypes
var dataTypeDtos = Database.Fetch<DataTypeDto>(Context.SqlContext.Sql()
.Select<DataTypeDto>()
.From<DataTypeDto>()
.Where<DataTypeDto>(x => x.EditorAlias == Constants.PropertyEditors.Aliases.Tags));
// get a dummy editor for deserialization
var editor = new TagConfigurationEditor();
foreach (var dataTypeDto in dataTypeDtos)
{
// need to check storageType on raw dictionary, as TagConfiguration would have a default value
var dictionary = JsonConvert.DeserializeObject<JObject>(dataTypeDto.Configuration);
// if missing, use TagConfiguration to properly update the configuration
// due to ... reasons ... the key can start with a lower or upper 'S'
if (!dictionary.ContainsKey("storageType") && !dictionary.ContainsKey("StorageType"))
{
var configuration = (TagConfiguration)editor.FromDatabase(dataTypeDto.Configuration);
configuration.StorageType = TagsStorageType.Csv;
dataTypeDto.Configuration = ConfigurationEditor.ToDatabase(configuration);
Database.Update(dataTypeDto);
}
}
}
}
}
@@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Umbraco.Core.Migrations.Upgrade.V_7_12_0
{ public class UpdateUmbracoConsent : MigrationBase {
public UpdateUmbracoConsent(IMigrationContext context)
: base(context)
{ }
public override void Migrate() { Alter.Table(Constants.DatabaseSchema.Tables.Consent).AlterColumn("comment").AsString().Nullable().Do(); }
}
}
@@ -1,29 +0,0 @@
namespace Umbraco.Core.Migrations.Upgrade.V_7_14_0
{
/// <summary>
/// Migrates member group picker properties from NVarchar to NText. See https://github.com/umbraco/Umbraco-CMS/issues/3268.
/// </summary>
public class UpdateMemberGroupPickerData : MigrationBase
{
/// <summary>
/// Migrates member group picker properties from NVarchar to NText. See https://github.com/umbraco/Umbraco-CMS/issues/3268.
/// </summary>
public UpdateMemberGroupPickerData(IMigrationContext context)
: base(context)
{ }
public override void Migrate()
{
Database.Execute($@"UPDATE umbracoPropertyData SET textValue = varcharValue, varcharValue = NULL
WHERE textValue IS NULL AND id IN (
SELECT id FROM umbracoPropertyData WHERE propertyTypeId in (
SELECT id from cmsPropertyType where dataTypeId IN (
SELECT nodeId FROM umbracoDataType WHERE propertyEditorAlias = '{Constants.PropertyEditors.Aliases.MemberGroupPicker}'
)
)
)");
Database.Execute($"UPDATE umbracoDataType SET dbType = 'Ntext' WHERE propertyEditorAlias = '{Constants.PropertyEditors.Aliases.MemberGroupPicker}'");
}
}
}
@@ -1,50 +0,0 @@
using System.Linq;
namespace Umbraco.Core.Migrations.Upgrade.V_7_5_0
{
public class AddRedirectUrlTable : MigrationBase
{
public AddRedirectUrlTable(IMigrationContext context)
: base(context)
{ }
public override void Migrate()
{
var database = Database;
var umbracoRedirectUrlTableName = "umbracoRedirectUrl";
var tables = SqlSyntax.GetTablesInSchema(database).ToArray();
if (tables.InvariantContains(umbracoRedirectUrlTableName))
{
var columns = SqlSyntax.GetColumnsInSchema(database).ToArray();
if (columns.Any(x => x.TableName.InvariantEquals(umbracoRedirectUrlTableName) && x.ColumnName.InvariantEquals("id") && x.DataType == "uniqueidentifier"))
return;
Delete.Table(umbracoRedirectUrlTableName).Do();
}
Create.Table(umbracoRedirectUrlTableName)
.WithColumn("id").AsGuid().NotNullable().PrimaryKey("PK_" + umbracoRedirectUrlTableName)
.WithColumn("createDateUtc").AsDateTime().NotNullable()
.WithColumn("url").AsString(2048).NotNullable()
.WithColumn("contentKey").AsGuid().NotNullable()
.WithColumn("urlHash").AsString(40).NotNullable()
.Do();
Create.Index("IX_" + umbracoRedirectUrlTableName).OnTable(umbracoRedirectUrlTableName)
.OnColumn("urlHash")
.Ascending()
.OnColumn("contentKey")
.Ascending()
.OnColumn("createDateUtc")
.Descending()
.WithOptions().NonClustered()
.Do();
Create.ForeignKey("FK_" + umbracoRedirectUrlTableName)
.FromTable(umbracoRedirectUrlTableName).ForeignColumn("contentKey")
.ToTable("umbracoNode").PrimaryColumn("uniqueID")
.Do();
}
}
}

Some files were not shown because too many files have changed in this diff Show More