Compare commits

...

1470 Commits

Author SHA1 Message Date
Shannon 2aa5dfb3ec Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2016-01-15 18:02:39 +01:00
Shannon 283b893128 hack until we fix template generation for when MB is disabled 2016-01-15 18:02:31 +01:00
Sebastiaan Janssen 1345c48e73 Require very latest version of ModelsBuilder 2016-01-15 17:38:31 +01:00
Shannon 2bc0f0c6b4 Merge branch 'dev-7.4.0-ModelsBuilder' of https://github.com/umbraco/Umbraco-CMS into dev-7.4.0-ModelsBuilder 2016-01-15 17:06:56 +01:00
Shannon 97d64f4f3d adds latest MB version 2016-01-15 17:06:22 +01:00
Sebastiaan Janssen dc17a20bb8 Adds required namespace + a fake class to make sure the namespace exists 2016-01-15 17:05:09 +01:00
Shannon c39b8f6eb5 Merge branch 'dev-7.4.0-ModelsBuilder' of https://github.com/umbraco/Umbraco-CMS into dev-7.4.0-ModelsBuilder 2016-01-15 16:56:49 +01:00
Shannon b776a32a64 fixes the models builder API controller URL 2016-01-15 16:54:38 +01:00
Sebastiaan Janssen c752c9e2bf Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder 2016-01-15 16:24:30 +01:00
Sebastiaan Janssen d1cdff6349 Reference to System.Runtime is required
Release with a reference to ModelsBuilder
2016-01-15 16:24:14 +01:00
Sebastiaan Janssen 32ca5de20c Reference to System.Runtime is required 2016-01-15 16:23:37 +01:00
Sebastiaan Janssen 742e0d69fa Removes duplicate requestFiltering node in web.Template.config 2016-01-15 15:56:26 +01:00
Sebastiaan Janssen 9b28fd0e27 Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder 2016-01-15 15:34:11 +01:00
Sebastiaan Janssen b36a73eecc Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2016-01-15 15:33:55 +01:00
Sebastiaan Janssen df266a202a Fix build and dependencies 2016-01-15 15:31:16 +01:00
Sebastiaan Janssen 49bafe51b7 Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder 2016-01-15 15:24:39 +01:00
Sebastiaan Janssen 39b1357a2a Ensure correct assembly redirects for System.Web.WebPages.Razor and HtmlAgilityPack 2016-01-15 15:07:53 +01:00
Sebastiaan Janssen 4a2b7447a9 Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2016-01-15 13:48:14 +01:00
Sebastiaan Janssen f7676062ea Bumps version 2016-01-15 13:47:18 +01:00
Stephan 244d09068a Merge branch 'dev-7.4.0-ModelsBuilder' of https://github.com/umbraco/Umbraco-CMS into dev-7.4.0-ModelsBuilder 2016-01-15 13:11:53 +01:00
Stephan 99cf7a096c Import missing ModelsBuilder files 2016-01-15 13:11:34 +01:00
Shannon cee20e968f fixes csproj, should no longer reference Zbu DLL 2016-01-15 13:04:18 +01:00
Stephan fb1a72600e Upgrade to Umbraco.ModelsBuilder 2.2.0-beta002 2016-01-15 12:37:15 +01:00
Shannon Deminick efdeb757f6 Merge pull request #1023 from umbraco/temp-U4-7212
U4-7212 All new text for content type editor needs to be localized.
2016-01-15 12:05:38 +01:00
Shannon 4a30398499 fixes capitalisation 2016-01-15 12:04:29 +01:00
Shannon 2a905afe08 fixes translation files, removes duplicate and updates en_us 2016-01-15 12:03:03 +01:00
Shannon b79c7407e6 Removes unecessary promise wrapping for localizing, fixes localization service so that it's not double requesting and fixes how it deals with promise returns. 2016-01-15 11:49:29 +01:00
Shannon 8399906c9a Merge branch '7.4.0' into temp-U4-7212 2016-01-15 11:17:28 +01:00
Claus 72eaec0ff8 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/dialogs/config.controller.js
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/grid.controller.js
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/grid.html

Merged branch over and ignored changes since they are not compatible with the new grid and they have been implemented correctly in the 7.4.0 branch.
2016-01-15 10:34:20 +01:00
Mads Rasmussen 9e75a1821d Merge pull request #1024 from umbraco/temp-U4-6297
Fixes: U4-6297 Add Settings to Grid Controls
2016-01-15 10:22:49 +01:00
Mads Rasmussen 08e4f42974 do not show settings icon if there are no settings 2016-01-15 10:21:32 +01:00
Sebastiaan Janssen 0fbc0d5431 U4-7715 Update Gallery snippet for ImageCropper instead of the upload in 7.4.0
#U4-7715 Fixed
2016-01-15 10:19:35 +01:00
Claus 54e3f0f9ec Fixes: U4-6297 Add Settings to Grid Controls
Added settings to grid controls in v.7.4.
2016-01-15 10:04:49 +01:00
Claus e1ee8a1437 Fix to ensure config array is copied and not referenced. 2016-01-15 10:00:05 +01:00
Claus 21ba88a34d Fixes: U4-6297 Add Settings to Grid Controls
Reusing the existing code for calling the dialog instead of having a separate method for this.
2016-01-15 09:43:01 +01:00
Shannon a468cb78c5 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2016-01-14 19:56:43 +01:00
Shannon b5abbc7c30 Adds some null checks 2016-01-14 18:11:48 +01:00
Shannon da9a2c59fc Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2016-01-14 17:40:36 +01:00
Shannon 7958b5fcb1 U4-7740 Speed up the current user's culture lookup 2016-01-14 16:43:31 +01:00
Shannon 44b22503e1 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2016-01-14 16:36:13 +01:00
Shannon bfa12856db Fixes issue with DefaultRepositoryCachePolicy when creating new items - we were generating the cache key before actually calling the method to create the item therefore there was no id assigned yet (it would be zero). 2016-01-14 16:36:03 +01:00
Claus 163f39b8be Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/grid/grid.html
2016-01-14 15:53:20 +01:00
Stephan 46f3d0c647 Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder 2016-01-14 15:51:53 +01:00
Per Ploug cc8bb4c031 Fixes issue with Insert RenderSection
Reported by doug for training build
2016-01-14 15:37:24 +01:00
Sebastiaan Janssen d9542f4ca5 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2016-01-14 15:06:39 +01:00
Sebastiaan Janssen f057976f78 U4-7735 Localization fallback doesn't seem to work.
#U4-7735 Fixed
2016-01-14 15:06:16 +01:00
Claus 151c28a20f Merge pull request #642 from AussieInSeattle/U4-6297
U4 6297
2016-01-14 14:35:54 +01:00
Mads Rasmussen b4bc0ca156 Fixes: RTE media picker 2016-01-14 14:07:46 +01:00
Claus d2c8268fc4 Merge pull request #1014 from kvakulo/fix-media-item-without-image
Fix the media picker not rendering when a media item has no image
2016-01-14 13:46:12 +01:00
Simon Busborg 977369fb2d Danish translation for grid templates 2016-01-14 11:44:32 +01:00
Simon Busborg ed8847821d Added localizationService to user.controller 2016-01-14 11:44:32 +01:00
Simon Busborg bf3f482fe8 Danish translations 2016-01-14 11:44:32 +01:00
Mads Rasmussen 1489070afd start on danish translation 2016-01-14 11:44:31 +01:00
Mads Rasmussen 487d2c6ea1 localize property settings overlay 2016-01-14 11:44:31 +01:00
Mads Rasmussen c66a6bb06f localize list view checkbox text 2016-01-14 11:44:31 +01:00
Mads Rasmussen 4bb4ce0ef4 localize header 2016-01-14 11:44:31 +01:00
Mads Rasmussen b67b7c91a5 localize no compositions 2016-01-14 11:44:31 +01:00
Mads Rasmussen a7627e3482 fix save list view button 2016-01-14 11:44:31 +01:00
Mads Rasmussen 2e6621f31b fix key for umbChildSelector directive 2016-01-14 11:44:31 +01:00
Mads Rasmussen 8a07f47077 add localizationService as dependency on ysod overlay 2016-01-14 11:44:31 +01:00
Simon Busborg 5cefd9ad20 localize property validation 2016-01-14 11:44:31 +01:00
Simon Busborg 96db5a5be3 translation file for drop zone directive 2016-01-14 11:44:30 +01:00
Simon Busborg cdcadab68b localize overlay titles 2016-01-14 11:44:30 +01:00
Simon Busborg 67112b640c localized component views 2016-01-14 11:44:30 +01:00
Simon Busborg c9ad7659a8 localize components views 2016-01-14 11:44:30 +01:00
Simon Busborg cc1764dc88 Added localization for controllers (member, media and document types) 2016-01-14 11:44:30 +01:00
Simon Busborg 3888853a40 Added localization to controllers 2016-01-14 11:44:30 +01:00
Simon Busborg 397a9bffb2 localized documentypes, memberstypes and mediatypes, only controllers missing 2016-01-14 11:44:30 +01:00
Simon Busborg 5965552494 localized documenttypes 2016-01-14 11:44:30 +01:00
Simon Busborg f504a98bcd localized placeholders 2016-01-14 11:44:29 +01:00
Simon Busborg e47d72a51f Added localize to dialogs 2016-01-14 11:44:29 +01:00
Mads Rasmussen e334f669b8 localize member types create 2016-01-14 11:44:29 +01:00
Mads Rasmussen 679d9c1e0a translate media types create 2016-01-14 11:44:29 +01:00
Mads Rasmussen a3d9cbb5fd translate document type editor create dialog 2016-01-14 11:44:29 +01:00
Mads Rasmussen 30c928a734 fix localize bug with reorder and compositions button in content type editor 2016-01-14 11:44:29 +01:00
Mads Rasmussen 9a5f8c2899 start localizing content type editor 2016-01-14 11:44:29 +01:00
Shannon 6ae1806615 Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder 2016-01-14 11:40:06 +01:00
Shannon 632cdac90b adds translations for content type editor to en_us 2016-01-14 11:36:12 +01:00
Shannon Deminick 4068c527bc Merge pull request #1019 from umbraco/temp-U4-7560
Fixes: U4-7560 Default member properties should not be editable
2016-01-14 11:29:56 +01:00
Shannon 58df51cbea fixes pascal case? 2016-01-14 10:52:33 +01:00
Shannon c2c350a517 Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder
Conflicts:
	src/Umbraco.Web.UI/web.Template.config
	src/Umbraco.Web/Editors/ContentTypeControllerBase.cs
2016-01-14 10:37:14 +01:00
Mads Rasmussen b116a96058 Fixes: U4-7581 Why so curvy? 2016-01-14 09:52:55 +01:00
Claus b9cafa2016 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2016-01-14 09:41:14 +01:00
Claus 13a9f40815 Fixes: U4-7728 Folder view in media section gives an exception
Ensuring umbracoFile property isn't accessed if this is called on a folder.
2016-01-14 09:40:40 +01:00
Claus 1a8ae67dd1 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
2016-01-14 09:04:42 +01:00
Claus 67f8141015 Merge branch 'bjarnef-dev-v7-mediapicker-only-images' into dev-v7 2016-01-14 08:56:34 +01:00
bjarnef 06a098215b Add media picker config to restrict the editors to only pick images 2016-01-14 00:36:53 +01:00
bjarnef 051b320904 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' into dev-v7 2016-01-13 23:16:10 +01:00
Mads Rasmussen 88f63c7890 only set pointer events to none on search icon, so you can click back in content picker 2016-01-13 21:37:35 +01:00
Shannon Deminick 791c45e085 Merge pull request #1017 from umbraco/temp-deploy-29
deploy-29 - Sanitize UniqueId
2016-01-13 19:22:27 +01:00
Shannon afe2aeda1b Merge branch '7.4.0' into temp-deploy-29 2016-01-13 19:11:20 +01:00
Claus b9e7990b7c Fixes: U4-7560 Default member properties should not be editable
Added locked property to content type properties by alias.
Ensured built in member properties are locked in the editor.
Content type editor changes for supporting locked properties.
2016-01-13 18:43:06 +01:00
Shannon 8b2606f681 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI/web.Template.config
2016-01-13 17:31:35 +01:00
Shannon 5aab50ba3b Ensures fcnMode and file size maximums are set for the debug web config transform and also for the nuget transform. 2016-01-13 17:27:56 +01:00
Shannon dfa687e695 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI/web.Template.config
2016-01-13 17:18:30 +01:00
Shannon 5b9cbae860 Fixes: U4-7712 fcnMode = Single by default 2016-01-13 17:17:39 +01:00
Shannon Deminick b026245b3f Merge pull request #1007 from umbraco/temp-U4-7634
Temp u4 7634
2016-01-13 17:11:59 +01:00
Shannon 20f2773f38 removes the config option registered in the file 2016-01-13 17:09:55 +01:00
Shannon 88b8cfb2bd streamlines how the disabled check boxes work - will perform better too - fixes re-allowing the checkbox on refilter for ancestors. 2016-01-13 16:59:14 +01:00
Shannon 54669ee2bc Ensures you cannot move a child doc type, changes the result of GetAvailableCompositions to be a model instead of a tuple, the result also includes the current ancestor list which we can use to disable items in the list, makes these models/methods internal since they'll most likely be changing, 2016-01-13 16:25:35 +01:00
Shannon 6d5435c2e8 Merge branch '7.4.0' into temp-U4-7634 2016-01-13 14:49:37 +01:00
Shannon 1f245ec553 fixes alias validation when saving an existing contenttype 2016-01-13 14:48:19 +01:00
Shannon 17902712ac fixes merge/build 2016-01-13 14:44:17 +01:00
Per Ploug f4fc47c9cc Strongly Typed models: Always use DoctypeAlias in PascalCase 2016-01-13 14:43:06 +01:00
Per Ploug 7386afcce6 Doctype alias validation always fails
As it only checks if there is a doctype with the same alias, but does
not test if this doctype is the same as the one currently being saved.
2016-01-13 14:39:00 +01:00
Claus 59759c4919 Merge pull request #1018 from umbraco/temp-U4-5982
U4-5982 Webpages unpublishing by themselves
2016-01-13 14:29:37 +01:00
Per Ploug 3698ad6164 Revert "Doctype validation on alias fails"
This reverts commit 3eab76494e.
2016-01-13 14:29:04 +01:00
Per Ploug 3eab76494e Doctype validation on alias fails
As it tests if there is a type with alias, but doesnt check if its
itself, validation will never pass after initial save.
2016-01-13 14:28:44 +01:00
Shannon 9dc57b0e37 Merge branch '7.4.0' into temp-U4-7634
Conflicts:
	src/Umbraco.Core/Services/ContentTypeServiceExtensions.cs
	src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js
	src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.html
	src/Umbraco.Web/Editors/ContentTypeControllerBase.cs
2016-01-13 14:08:19 +01:00
Shannon 68ddea2776 refactors a bit of code from the PR, adds more translations to the other english file. 2016-01-13 12:33:57 +01:00
Stephan 02e94f9243 deploy-29 - Sanitize UniqueId 2016-01-13 12:32:30 +01:00
Shannon 8857b2db59 Merge branch 'JJCLane-UKFest-6322' into temp-U4-5982 2016-01-13 12:24:00 +01:00
Shannon fae5618865 Merge branch 'UKFest-6322' of https://github.com/JJCLane/Umbraco-CMS into JJCLane-UKFest-6322 2016-01-13 12:23:26 +01:00
Per Ploug 849d7c45e0 Fix merge conflicts 2016-01-13 12:18:14 +01:00
Shannon 94a1f7e078 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Core/Persistence/Factories/PropertyGroupFactory.cs
2016-01-13 12:11:27 +01:00
Shannon 40dbcbd7d9 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2016-01-13 12:10:22 +01:00
Per Ploug cec1f6dae3 Merge remote-tracking branch 'refs/remotes/origin/7.4.0' into dev-7.4.0-ModelsBuilder
# Conflicts:
#	src/Umbraco.Web.UI/packages.config
#	src/Umbraco.Web/Editors/ContentTypeController.cs
2016-01-13 12:10:08 +01:00
Shannon 074d894271 Fixes: U4-7706 Property Type UniqueIds do not stay consistent during package installation 2016-01-13 12:10:04 +01:00
Claus 79c05a129d Merge pull request #1009 from umbraco/temp-U4-7588
U4-7588 Conflicting compositions should not be allowed
2016-01-13 11:58:38 +01:00
Per Ploug 22c9f393a0 Update ModelsBuilder nuget reference 2016-01-13 11:45:40 +01:00
Shannon 3131096ffb Ensures that itself is never returned in the list, not even disabled (since you can never select yourself), ensures that any comp already selected is enabled for selection in the UI. 2016-01-13 11:33:46 +01:00
Mads Rasmussen 6d47d76199 Merge pull request #1012 from umbraco/temp-U4-7696-U4-7371
U4-7371 New Content type editor - Better validation when trying to create a new document/media/member type with the same name as an existing one
2016-01-13 10:58:39 +01:00
Mads Rasmussen eb6ae95039 Merge pull request #1015 from umbraco/temp-U4-7561
U4-7561 Backoffice Media Section should provide information on physic…
2016-01-13 10:40:54 +01:00
Shannon 5e461b0cec adds packaging test 2016-01-13 10:29:44 +01:00
Shannon d6a49f275f adds test that fails - need to fix it now 2016-01-13 10:29:26 +01:00
Shannon 2cc0df3a3c Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2016-01-13 10:25:17 +01:00
Shannon 81ba2b8981 adds packaging test 2016-01-13 10:25:07 +01:00
Mads Rasmussen 03751edf40 Merge pull request #1016 from umbraco/temp-U4-7630
Fixes: U4-7630 Cannot save a document type when it has a date picker …
2016-01-13 10:23:31 +01:00
Mads Rasmussen f5f3126e44 move form outside directive to only disable validation in content type editor 2016-01-13 10:22:57 +01:00
Claus 646ab931b0 Clicking an image in the media picker opened by RTE, should select the image instead of showing details. 2016-01-12 21:58:37 +01:00
Claus 7fd3d58def Fixes: U4-7630 Cannot save a document type when it has a date picker required property with the new property type editor in 7.4
Directive for disabling validation on forms.
Passing on required validation from settings to textarea and textbox.
Wrapping property editor preview in disabled validation form.
2016-01-12 21:40:09 +01:00
Sebastiaan Janssen 8e024fccff Don't hardcode the umbracoFile constant 2016-01-12 20:05:22 +01:00
Sebastiaan Janssen 43227d4510 Support for multiple properties spawning a url - adding more uploadfields to umbracoSettings.config (autoFillImageProperties) 2016-01-12 19:46:05 +01:00
Sebastiaan Janssen 79cc4cd2fa Change "umbracoFile" to the constant for this value 2016-01-12 18:16:55 +01:00
Sebastiaan Janssen 6a6939d8c8 Merge pull request #1013 from umbraco/temp-U4-7578-2
Fixes: U4-7578 Can't pick folders in any media picker in 7.4 beta
2016-01-12 17:45:03 +01:00
Sebastiaan Janssen ff83d2e1f4 U4-7561 Backoffice Media Section should provide information on physical location of files 2016-01-12 17:41:53 +01:00
Regin Larsen cb7df58fdd Fix the media picker not rendering when a media item has no image 2016-01-12 16:25:29 +01:00
Shannon Deminick 244eb08545 Merge pull request #1010 from umbraco/temp-U4-7557
U4-7557 Support folders for import/export, packaging
2016-01-12 16:17:14 +01:00
Mads Rasmussen aa7bf0a12e Fix folder selection in media library 2016-01-12 15:49:59 +01:00
Shannon 85178bbad8 Changes GetAvailableCompositeContentTypes to return a list of composite candidates and then whether they are actually allowed or not based on the filters. Updates the controllers response to be a list of which content types are allowed or not, updates the view accordingly, changes when the filtering happens so that it happens after the content type has been updated with new properties. 2016-01-12 15:44:37 +01:00
Sebastiaan Janssen 5cc274a580 Merge pull request #1004 from umbraco/temp-U4-7681
U4-7681 Legacy CMSNode.Parent uses old SqlHelper API and doesn't keep…
2016-01-12 14:48:54 +01:00
Shannon 06b7305d5b removes erroneous null check 2016-01-12 14:39:20 +01:00
Mads Rasmussen 6af28abcab media picker (selected items) add a but more contrast to folders, use flex box 2016-01-12 14:34:28 +01:00
Shannon f0b0cd1641 adds success checking to the CreateContentTypeContainer results, adds overload instead of optional parameter (breaking change), changes GetContainer(string folderName, int level) to return IEnumerable and changed name to GetContainers - since there could be multiple results for the same container name at a given level. 2016-01-12 14:32:45 +01:00
Sebastiaan Janssen 0686d0736a Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2016-01-12 14:27:33 +01:00
Sebastiaan Janssen 43c174368a Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js
2016-01-12 14:27:22 +01:00
Mads Rasmussen c295e53920 fix media grid in template editor - macro picker 2016-01-12 14:21:12 +01:00
Sebastiaan Janssen 6c5b5ee637 Merge branch 'Phosworks-U4-7312-2' into dev-v7 2016-01-12 14:20:40 +01:00
Sebastiaan Janssen 9bfac0fdcd Still create the thumbnails upon upload (for backwards compatibility) 2016-01-12 14:20:25 +01:00
Shannon Deminick 83d06bdbcf Merge pull request #994 from umbraco/temp-U4-7612
U4-7612 Properties Pane is empty when trying to add a new Property to…
2016-01-12 13:52:07 +01:00
Shannon 67994c630f fixes null checking and ensures that the current property type aliases are passed up when first launching the compositions dialog. 2016-01-12 13:46:18 +01:00
Shannon ee8405ccd0 fixes rebase/merge 2016-01-12 13:32:04 +01:00
Shannon 7389d343e4 adds more unit tests 2016-01-12 13:32:03 +01:00
Shannon f7b34c76f9 got the filtering all working - this ensures that no CTs are selectable if any current property type exists in one of them in the list and re-filters on each CT selection in the list to ensure no illegal comps can be created. 2016-01-12 13:32:02 +01:00
Shannon 32377b29b8 Have content type filtering working on the compositions list so a dev is not allowed to create an illegal composition - next we need to pass in the already existing property types to further ensure an illegal composition cannot be created. 2016-01-12 13:30:49 +01:00
Shannon Deminick a6df74e299 Merge pull request #1008 from umbraco/temp-U4-7639
Temp u4 7639
2016-01-12 13:25:51 +01:00
Sebastiaan Janssen bd5823f0de Merge branch 'U4-7312-2' of https://github.com/Phosworks/Umbraco-CMS into Phosworks-U4-7312-2 2016-01-12 13:24:42 +01:00
Shannon 74d8068de1 Ensures that 2 way binding occurs with the input field so that the outer generate alias updates the inner value and vice versa 2016-01-12 13:21:10 +01:00
Claus bbd6908af3 Ensuring you can create new document types in root.
Parsing result of webservice call as integer.
Ensuring the correct error messages are shown.
2016-01-12 13:06:33 +01:00
Shannon c819dabfc0 U4-7371 New Content type editor - Better validation when trying to create a new document/media/member type with the same name as an existing one & U4-7696 New content type editor - server side validation fails when creating new document type 2016-01-12 12:21:08 +01:00
Sebastiaan Janssen 2a3619e219 Fix merge problem that broke the build 2016-01-12 12:06:15 +01:00
Sebastiaan Janssen fc848e05ee Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2016-01-12 11:39:33 +01:00
Sebastiaan Janssen 5a62713de4 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
# Conflicts:
#	src/Umbraco.Core/Umbraco.Core.csproj
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/integer/integer.html
2016-01-12 11:39:10 +01:00
Mads Rasmussen 61f6ee4436 fix tooltip so it does not get cut off by tree 2016-01-12 11:38:07 +01:00
Mads Rasmussen 87aeaa8afc set lower image max height and width + fix calculation, make use of values in html. 2016-01-12 11:35:36 +01:00
Sebastiaan Janssen 70035632b6 Update ImageProcessor and UrlRewritingNet dependencies 2016-01-12 11:22:49 +01:00
Mads Rasmussen 1bf470c0aa Merge pull request #1011 from umbraco/temp-U4-7578-3
Fixes: U4-7578 disable folder selection in rte and markdown editor
2016-01-12 10:52:11 +01:00
Claus c6a7678ae8 Fixes: U4-7578 Can't pick folders in any media picker in 7.4 beta
Dialog option for disabling folder select on media pickers.
Added the option to Markdown and RTE.
2016-01-12 10:36:21 +01:00
Claus b1f12ec864 Merge branch 'temp-U4-7578' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/grid/grid.html
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/grid/grid.listviewlayout.controller.js
2016-01-12 10:01:03 +01:00
Sebastiaan Janssen 79f0e2563c Allows for creation of packages with folder structures for doctypes and datatypes and exporting document types with folder structures
Fixes installing packages while maintaining the exported folder structure
2016-01-11 22:01:05 +01:00
Shannon Deminick 759c925fa0 Merge pull request #1006 from umbraco/temp-U4-7694
Fixes: U4-7694 Make media folders work as list view and media items - click folder to select and click folder name to open
2016-01-11 18:34:00 +01:00
Sebastiaan Janssen c783900097 Support folders for package installs (for document types and data types) and imports for document types 2016-01-11 17:52:29 +01:00
Shannon e17c900beb fixes merge/rebase with latest other pr merge 2016-01-11 17:21:59 +01:00
Shannon b89d17914d fixes usage of model.contentType.availableCompositeContentTypes to use the availableCompositeContentTypes directly attached to the model. removes the FirstContentType property and adds simple content type service methods to count the doc type number, moves the request to get availableCompositeContentTypes to the dialog (where it's needed and so it's lazy) 2016-01-11 17:17:26 +01:00
Claus 6f6c2a3d90 changing bindings to be compatible with other PR. 2016-01-11 17:16:19 +01:00
Mads Rasmussen ce382c42c4 Fixes: U4-7639 show another message when first document type 2016-01-11 17:16:18 +01:00
Claus e016622fe3 Fixes: U4-7639 Misleading message on creating first document type and click on "compositions"
Added in FirstContentType property on object returned from GetEmpty to indicate whether this is the first content type being created or not (different error messages in backoffice).
2016-01-11 17:16:17 +01:00
Shannon Deminick 043fb99020 Merge pull request #996 from umbraco/temp-U4-7593
fixes: U4-7593 Removing a composite from an existing doctype - Need b…
2016-01-11 17:15:17 +01:00
Stephan b259b14629 TEMP add ModelsBuilder file to Core (will need to revert and use NuGet package) 2016-01-11 15:18:18 +01:00
Stephan 20f5560767 Merge pull request #1002 from umbraco/temp-U4-7558-2
U4-7558 Fix GetAll repository level caching for repositories that return a query result based on the result of GetAll
2016-01-11 15:14:00 +01:00
Claus a09d576300 clean using. 2016-01-11 14:13:25 +01:00
Claus d06003b241 Removing unnecessary settings check. 2016-01-11 14:12:55 +01:00
Claus cb05f3fe03 Reverted changes no longer needed after work on inherited/nested doctypes.
Changed default to allow inherited doctypes.
2016-01-11 14:04:03 +01:00
Claus ffa7a1457a Merge branch '7.4.0' into temp-U4-7634
Conflicts:
	src/Umbraco.Web/Editors/ContentTypeControllerBase.cs
2016-01-11 13:46:20 +01:00
Mads Rasmussen 05c8e10ef8 set disabled state on compositions in overlay + a little bit of restyling 2016-01-11 12:07:39 +01:00
Claus f62920dc47 Removed adding compositions from parents as this breaks core functionality.
Ignoring property in mappings where it isnt needed.
Updating the LockedCompositionsResolver to get parent and use path instead of trying to use path which can be null on GetEmpty.
2016-01-11 12:07:38 +01:00
Claus 3676de0fe8 Reverting code to add additional meta data on compositions.
Added locked compositions to content type object.
Changed UI to use the lockedCompositeContentTypes instead.
2016-01-11 12:07:36 +01:00
Claus 4db1599bcb Null checks for when using folders.
Updated tree menu items.
2016-01-11 12:07:35 +01:00
Claus a7212f6b60 Changing config setting to the default.
Referencing wrong config element.
2016-01-11 12:07:34 +01:00
Claus 6650a72c79 Pass along parentId when getting available compositions since we need it to get available compositions when creating the empty scaffolding.
Include ancestors in the list of compositions.
Mark ancestors as disabled/locked.
2016-01-11 12:07:33 +01:00
Claus 08c4dede08 Output disabled class in backoffice. 2016-01-11 12:07:32 +01:00
Claus 0d37357376 Mark compositions coming from parents with metadata.
Ensure metadata is not ignored.
2016-01-11 12:07:31 +01:00
Claus 7a1f4b6b4b include parents as compositions. 2016-01-11 12:06:39 +01:00
Claus 5360bcff52 context menu for creating child doctype. 2016-01-11 12:06:37 +01:00
Claus e509099cdb Setting for enabling inherited documenttypes. 2016-01-11 12:06:35 +01:00
Claus 81395169ba line endings 2016-01-11 12:02:33 +01:00
Mads Rasmussen cd4db879b7 better function names 2016-01-11 11:21:35 +01:00
Mads Rasmussen fdc654058c Fixes: U4-7694 Make media folders work as list view and media items - click folder to select and click folder name to open 2016-01-11 11:12:53 +01:00
Simon Busborg 323257a0bf Merge pull request #1005 from umbraco/temp-U4-7568
Fixes: U4-7568 Only set focus on header name input when creating new node
2016-01-11 09:10:05 +01:00
Mads Rasmussen f9fa81bf13 only focus editor name when empty - new nodes 2016-01-10 19:23:22 +01:00
Mads Rasmussen e20a152e4f Fix bug where editor name was not always focused 2016-01-10 19:22:44 +01:00
Mads Rasmussen 16e79c98a6 Merge pull request #1003 from umbraco/temp-U4-7638
Fixes: U4-7638 Make larger area of tree node clickable
2016-01-10 13:21:44 +01:00
Mads Rasmussen bf06e1e1e8 Fixes: U4-7674 Fixed header for doc type "Compositions" and "Reorder" links 2016-01-09 22:00:19 +01:00
Mads Rasmussen 7d49c49bab Fixes: U4-7651 Hide button spinner, when validation errors occur for datatype 2016-01-09 20:53:56 +01:00
Mads Rasmussen d4a1eea8e5 Fixes: U4-7575 Deselecting items in the MNTP are not deselected 2016-01-09 20:49:54 +01:00
Shannon ecd024c462 U4-7681 Legacy CMSNode.Parent uses old SqlHelper API and doesn't keep a reference 2016-01-08 13:59:40 +01:00
Simon Busborg a6cf13d835 Positioned loader under tree-item 2016-01-08 13:10:04 +01:00
Shannon 273d2e2a2b Merge branch 'temp-U4-7635' into 7.4.0 2016-01-08 12:29:35 +01:00
Shannon 4cb523fb66 Added tests for ContentTypeServiceExtensions 2016-01-08 12:29:11 +01:00
Simon Busborg e731831658 Fixes: U4-7638 Make larger area of tree node clickable 2016-01-08 11:41:17 +01:00
Mads Rasmussen d1059c9dbe Merge pull request #986 from umbraco/temp-U4-7619
U4-7619
2016-01-08 11:34:33 +01:00
Mads Rasmussen 14db03e718 set min size on media, set background pattern on media to make cleaner grid, streamline media library and media picker select functionality with list view. 2016-01-08 10:12:02 +01:00
Mads Rasmussen 5dbda59f9d Merge pull request #1001 from umbraco/temp-U4-7564
Fixes: U4-7564 "Save and publish" button menu skewed [7.4.0-beta]
2016-01-07 21:35:02 +01:00
Mads Rasmussen e64f0fc5c5 Fixes: U4-7654 Recycle bin now display a input instead of a readonly heading 2016-01-07 21:10:04 +01:00
Shannon 02b6f94a1b moves the current logic into a re-usable ext method 2016-01-07 19:46:22 +01:00
Shannon ba91bf0b9c missing a file save 2016-01-07 19:33:55 +01:00
Shannon 2b13297c36 Changes method name to be shorter and makes internal instead of protected. 2016-01-07 19:27:59 +01:00
Shannon fb5faa3db7 Fixes tests, adds LanguageId to the interface 2016-01-07 18:59:59 +01:00
Shannon d7a142e724 Refactors DictionaryItem and DictionaryTranslation so that the attached ILanguage entity is not cached nor cloned. This will save on lots of memory and cloning cycles especially if there are quire a few dictioanry items. Unfortunatley to achieve this requires a not so pretty hack where we need to assign an internal callback to the model so it knows how to retrieve the language when it needs it. In v8, the ILanguage entity will not be attached at all. This also fixes a cache refresher issue for when a language is deleted -> all dictionary cache must be removed. This commit also changes a method name: ClearAllIsolatedCacheByRepositoryEntityType 2016-01-07 18:44:04 +01:00
Shannon 63785ae70f Adds cache policy tests 2016-01-07 17:54:55 +01:00
Shannon 68aa6ff093 Moves repository caching logic into new CachePolicies. 2016-01-07 16:31:20 +01:00
Simon Busborg 896eda1022 Fixes firefox bug where it ignores inline elements width 2016-01-07 12:58:28 +01:00
Shannon 3e985acef1 ensures that the public access cache refresher is called when a public access item is deleted. 2016-01-07 12:18:57 +01:00
Shannon 6d13d33cfd Changes PublicAccessRepository to use GetAllCacheAsCollection option and return a single result by ID based on the cache of GetAll 2016-01-07 12:03:32 +01:00
Simon Busborg 4139972f72 Fixes: U4-7564 "Save and publish" button menu skewed [7.4.0-beta]
So I tested it on a Surface and got the same result as you. We get this "bug" because of how bootstrap handles dropdowns on mobile/tablets. Bootstrap detect Suface as a tablet, and therefor pushed an element to the DOM called `dropdown-backdrop`. Disabling this will fix the "bug". But we need to be aware of this taken from http://getbootstrap.com/javascript/

>''"On mobile devices, opening a dropdown adds a `.dropdown-backdrop` as a tap area for closing dropdown menus when tapping outside the menu, a requirement for proper iOS support. This means that switching from an open dropdown menu to a different dropdown menu requires an extra tap on mobile."''

Since it's a very old Bootstrap we're using I took the liberty to just add `.btn-group .dropdown-backdrop` `display: none` so that the element wouldn't appear in the DOM anymore.
2016-01-07 11:20:13 +01:00
Shannon Deminick ced0a852b1 Merge pull request #1000 from bjarnef/dev-v7-U4-7648
Set focus on input by clicking label
2016-01-07 10:14:07 +01:00
Mads Rasmussen 2f6cfaf99c prevent save when an overlay is open 2016-01-07 09:49:13 +01:00
bjarnef ba0da15f7f Set focus on input by clicking label 2016-01-07 01:04:55 +01:00
bjarnef 2875cd10f3 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' into dev-v7 2016-01-06 22:01:33 +01:00
Mads Rasmussen 2a0287f5ad Fixes: U4-7653 List view - input types 2016-01-06 19:29:30 +01:00
Shannon b91661cf65 fixes issue with RepositoryBase - it would cache all entities with a single key even if there were ids specified which is wrong. Updates TemplateRepository to use a single GetAll query as its base source and it uses the GetAllCacheAsCollection option, also massively simplifies its GetDescendants methods, obsoletes some unused code, 2016-01-06 19:27:15 +01:00
Mads Rasmussen 7cb4a47f3e Fixes: U4-7653 List view - can't remove custom layouts 2016-01-06 19:00:23 +01:00
Shannon 827f7a7bc8 Updates DictionaryRepository(s) to have custom GetAll caching options - to basically disable it since there could be tons of these and currently an IDictionaryItem is a massive entity (need to fix that) 2016-01-06 18:34:07 +01:00
Shannon ff829d49a3 Updates all cache refreshers to reference the IsolatedRuntimeCache where required, refactors how IsolatedRuntimeCache is exposed on the CacheHelper, ensures that IsolatedRuntimeCache is used in all repositories instead of the global RuntimeCache, changes all obsolete usages of CacheHelper to the non obsolete equivalent, obsoletes many of the cache keys, obsoletes a couple cache refreshers that aren't used anymore in 7.3, simplifies CacheHelper with regards to it's 'disabled' cache state. 2016-01-06 18:08:14 +01:00
Sebastiaan Janssen 20720cdb28 Merge branch 'dev-v7' into 7.4.0 2016-01-06 15:59:51 +01:00
Sebastiaan Janssen d2483159bc Fixes unit tests, not all packages will have the sort order in there 2016-01-06 15:59:23 +01:00
Sebastiaan Janssen 37baeec8a9 Merge branch 'dev-v7' into 7.4.0
# Conflicts:
#	src/Umbraco.Core/Services/PackagingService.cs
2016-01-06 15:23:47 +01:00
Sebastiaan Janssen 48ab3f580c Fixes the build 2016-01-06 15:21:45 +01:00
Mads Rasmussen 7b33f85a5d fixes: U4-7593 Removing a composite from an existing doctype - Need better UI/error reporting (your data goes with it!) 2016-01-06 15:15:50 +01:00
Sebastiaan Janssen aa6897bfa7 Merge branch 'dev-v7' into 7.4.0
# Conflicts:
#	src/Umbraco.Core/Services/PackagingService.cs
2016-01-06 15:00:44 +01:00
Claus c524d67a37 Fixes: U4-7553 Importing Document Type doesn't respect property sort order
Handling sortOrder property in both import/export.

(cherry picked from commit 378479b4c1)

# Conflicts:
#	src/Umbraco.Core/Services/PackagingService.cs
2016-01-06 14:56:31 +01:00
Sebastiaan Janssen f1414ae000 Merge pull request #995 from umbraco/temp-U4-7553
Fixes: U4-7553 Importing Document Type doesn't respect property sort order
2016-01-06 14:50:21 +01:00
Claus 378479b4c1 Fixes: U4-7553 Importing Document Type doesn't respect property sort order
Handling sortOrder property in both import/export.
2016-01-06 14:48:37 +01:00
Sebastiaan Janssen 649679cb30 U4-7612 Properties Pane is empty when trying to add a new Property to a new or existing Document Type 2016-01-06 14:24:53 +01:00
Shannon 4f40fff5ee Moves DeepCloneRuntimeCacheProvider to Cache namespace. Creates DeepCloneableList + tests. Updates RepositoryBase to use DeepCloneableList when GetAllCacheAsCollection is used (so that all entries that get cached are deep cloned into and out-of the cache). Adds test for DeepCloneRuntimeCacheProvider for dealing with this list type. 2016-01-06 14:17:51 +01:00
Shannon b04d0fc886 Adds Isolated cache to the CacheHelper, adds cache option: GetAllCacheAsCollection, changes the default repository cache to be an isolated cache (instead of part of the single main dictionary cache), adds the logic for the cache option GetAllCacheAsCollection to RepositoryBase, updates Language and Domain repositories to use GetAllCacheAsCollection, updates RepositoryFactory to be the one responsible for injecting a DeepCloneRuntimeCacheProvider and to use a single _noCache instance. 2016-01-06 13:48:03 +01:00
Sebastiaan Janssen 701dea5de7 Merge pull request #969 from umbraco/temp-U4-7591
U4-7591 File cleanup for old editor 'tasks' and 'create' dialogs
2016-01-06 13:43:14 +01:00
Shannon 5767cea8f2 fixes build/merge 2016-01-06 12:58:05 +01:00
Shannon 4e3cf6c608 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Core/ObjectExtensions.cs
	src/Umbraco.Tests/PropertyEditors/PropertyEditorValueEditorTests.cs
	src/Umbraco.Web/Editors/ContentTypeController.cs
	src/Umbraco.Web/Models/Mapping/TabsAndPropertiesResolver.cs
2016-01-06 12:54:19 +01:00
Shannon 4c3258812c normalize culture for test 2016-01-06 12:50:41 +01:00
Shannon bc98f5e8fc code cleanup.
Conflicts:
	src/Umbraco.Core/ObjectExtensions.cs
2016-01-06 12:49:18 +01:00
Shannon 6f2f6c088b Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2016-01-06 12:48:36 +01:00
Shannon da91923577 Changes ObjectExtensions NormalizeNumberDecimalSeparator to use normal Culture (not UI Culture) 2016-01-06 12:48:26 +01:00
Sebastiaan Janssen fbc46d8046 Merge pull request #989 from umbraco/temp-U4-7643
U4-7643 DatabaseServerMessenger.cs causes lucene indexes to rebuild o…
2016-01-06 12:43:36 +01:00
Shannon Deminick 3cec0c3b43 Merge pull request #993 from umbraco/temp-U4-7655
Fixes: U4-7655 PropertyValueEditor tests failing
2016-01-06 12:26:38 +01:00
Shannon e8a0fae557 adds notes 2016-01-06 12:24:09 +01:00
Shannon Deminick e0baf45247 Merge pull request #992 from umbraco/temp-U4-5168
U4-5168 Media Items label says "Document Type" instead of  "Media Type"
2016-01-06 12:22:53 +01:00
Sebastiaan Janssen 43e983e27a Corrects spelling of localStorateDir to localStorageDir 2016-01-06 12:17:48 +01:00
Claus b1b7598e3c code cleanup. 2016-01-06 12:17:30 +01:00
Claus b4ca4917cc Updating Double and Single conversion (where NormalizeNumberDecimalSeparator is also used) to include CurrentUICulture. 2016-01-06 12:12:29 +01:00
Sebastiaan Janssen b882806847 Merge pull request #980 from umbraco/temp-U4-7614
U4-7614 Allow Examine's local temp storage to exist in the current Us…
2016-01-06 12:09:31 +01:00
Shannon 4838bf62f7 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2016-01-06 12:01:12 +01:00
Claus b5fb82e934 Fixes: U4-7655 PropertyValueEditor tests failing
Passing in CurrentUICulture to TryParse method, since it is also used for the normalization part.
NumberStyles.Number is the default parameter used by the other TryParse overload so should be good to use here too.
2016-01-06 12:01:01 +01:00
Shannon 58c30cd7a6 removes erroneous reverse call 2016-01-06 12:00:50 +01:00
Shannon Deminick ae1b6d95b8 Merge pull request #990 from umbraco/temp-PVS-Studio
Temp pvs studio
2016-01-06 12:00:28 +01:00
Shannon a2b0f6f7f9 removes erroneous reverse call 2016-01-06 11:59:09 +01:00
Shannon Deminick c6481f853c Merge pull request #991 from umbraco/temp-U4-7556
Temp u4 7556
2016-01-06 11:40:28 +01:00
Sebastiaan Janssen 403af78ba9 U4-5168 Media Items label says "Document Type" instead of "Media Type" 2016-01-06 11:22:15 +01:00
Shannon dca6f2b42a fixes build 2016-01-06 10:47:58 +01:00
Shannon b0060a9592 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	build/InstallGit.cmd
	build/UmbracoVersion.txt
	src/SolutionInfo.cs
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/Umbraco/config/lang/nb.xml
	src/Umbraco.Web/Editors/DataTypeValidateAttribute.cs
	src/Umbraco.Web/Security/Identity/UmbracoBackOfficeCookieAuthOptions.cs
	src/Umbraco.Web/WebServices/SaveFileController.cs
2016-01-06 10:46:38 +01:00
Claus f1cc32771e Using constants instead of -1. 2016-01-06 10:31:21 +01:00
Claus bfa9c80ed6 Added null checks for elements on import. 2016-01-06 10:27:39 +01:00
Claus 2dcb9c93f7 Dropped these null checks to avoid serializing invalid objects. 2016-01-06 10:26:09 +01:00
Claus e49033a602 Added import document type option to context menu on root node. 2016-01-06 09:44:12 +01:00
Claus e489cffa3d Removed unused namespaces and cleanup. 2016-01-06 09:26:58 +01:00
Claus 83963003f9 Ensures XML serializer doesn't fail when trying to serialize null properties.
Some properties can now be nulls instead of string.Empty when using the new content type editor.
2016-01-06 09:25:15 +01:00
Claus 2bdea2ef30 Fixes: U4-7556 Export/import document types isn't available in 7.4
Added in export to context menu on document types using the legacy dialog.
2016-01-06 09:23:55 +01:00
Sebastiaan Janssen 59fe690a88 Code sample No.10 2016-01-05 23:34:30 +01:00
Sebastiaan Janssen a15b005d95 Code sample No.6, No.7 2016-01-05 23:22:16 +01:00
Sebastiaan Janssen b94c396d4e Code sample No.5 2016-01-05 23:20:47 +01:00
Sebastiaan Janssen 8afc4f5ad1 Code sample No.3 2016-01-05 23:15:25 +01:00
Sebastiaan Janssen f68b2de9e3 Code sample No.2 2016-01-05 23:13:37 +01:00
Sebastiaan Janssen f4e29d90e0 Code sample No.1 2016-01-05 23:12:09 +01:00
Sebastiaan Janssen 5ad5e945c4 Merge pull request #813 from TimGeyssens/dev-v7
Fixes U4-7249 Insert Macro split button, when selecting a macro that …
2016-01-05 19:49:14 +01:00
Sebastiaan Janssen 4ef7b7735e Fixes U4-6510 again as merging PR apparently went wrong 2016-01-05 17:04:11 +01:00
Sebastiaan Janssen db538d95ba Bumps version 2016-01-05 16:11:59 +01:00
Sebastiaan Janssen cef7cd1ca7 Merge pull request #981 from umbraco/temp-U4-7583
U4-7583
2016-01-05 16:02:51 +01:00
Shannon 726416fe0c Fixes: U4-7624 Datepicker Sql server error
Since we are not saving the formatted value, don't try parsing the date with formatting config.
Added in explicit parsing format compatible with the one used when saving the value, just to ensure parsing is done the same way.
2016-01-05 15:47:42 +01:00
Simon Busborg ac653e7f6d Fixes: U4-7636 Change re-use back to Reuse 2016-01-05 15:35:42 +01:00
Simon Busborg 2dc2199390 Added bold font in search fields to support new font heirachy 2016-01-05 15:29:15 +01:00
Shannon Deminick 1957d8bb3b Merge pull request #928 from kiasyn/patch-1
U4-7400 - Datepicker is not updating scope model value in time for 3r…
2016-01-05 15:19:31 +01:00
Shannon fab30d353a U4-7223 GetCropUrl outputs html entities in url when used in css 2016-01-05 14:54:02 +01:00
Shannon 75990b5961 U4-7643 DatabaseServerMessenger.cs causes lucene indexes to rebuild on app startup 2016-01-05 14:20:13 +01:00
Claus bfc7cbccc1 Merge pull request #988 from umbraco/temp-U4-7584
Fixes: U4-7584 can't preview any content due to external google font
2016-01-05 13:08:37 +01:00
Shannon 18900d0e25 Fixes: U4-6659 Examine: Specific doctype not being indexed 2016-01-05 12:38:13 +01:00
Shannon d08f4230c8 U4-7538 GetRemainingTimeoutSeconds is double setting the cookie in 7.4 2016-01-05 12:35:06 +01:00
Simon Busborg 44014fea70 Fixes: U4-7584 can't preview any content due to external google font 2016-01-05 11:49:30 +01:00
Mads Rasmussen cd66bbfb0f Fixes: U4-7629 Help-dialog doesn't open, when user-dialog is open 2016-01-05 11:46:02 +01:00
Shannon 15d06557e9 U4-7605 Colons/Parens Unnecessarily Removed From Data Type Names 2016-01-05 11:42:02 +01:00
Shannon 8d2e708d1c Adds exception handling for the BackOfficeUserStore - this will occur if the external OAuth provider doesn't return the Email or Name correctly, then an exception is swallowed at the service level and the user is not actually created, but the BackOfficeUserStore could not detect this, so it's detecting this now. 2016-01-05 11:36:52 +01:00
Shannon 280573be28 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2016-01-05 11:35:35 +01:00
Shannon 415aaf3e2b U4-7477 xss char stripping on data type names is being too agressive 2016-01-05 11:35:24 +01:00
Sebastiaan Janssen 5081027482 Improve batch files: SETLOCAL makes sure we don't change the user's actual path, so no need to revert changes any more either 2016-01-05 11:33:10 +01:00
Claus 69233fbead Merge pull request #987 from umbraco/temp-U4-7590
Fixes: U4-7590 List view layout cookie: Change to use local storage a…
2016-01-05 09:43:54 +01:00
Simon Busborg 5f4309d2ca Fixes: U4-7590 List view layout cookie: Change to use local storage and clean up entry if its back to default layout. 2016-01-05 09:23:27 +01:00
Claus 3a4f0f4c11 Fixes: U4-7624 Datepicker Sql server error
Since we are not saving the formatted value, don't try parsing the date with formatting config.
Added in explicit parsing format compatible with the one used when saving the value, just to ensure parsing is done the same way.
2016-01-04 11:56:59 +01:00
Simon Busborg deb1f2f343 Fixes: U4-7337 Change Wording in Doctype Editor 2016-01-04 11:18:34 +01:00
Simon Busborg 460f0e7528 Fixes: U4-7607 Listview jump a few pixels down, when selecting items 2016-01-04 10:20:18 +01:00
Simon Busborg dd72f2fe3a Fixes: U4-7625 Rounded corners for datepicker dialog 2016-01-04 10:11:04 +01:00
Simon Busborg d78428213e Fixed: U4-7626 Ensure consistency in context menu items 2016-01-04 10:04:37 +01:00
Simon Busborg 101c5e63a9 Fixes: U4-7606 Set focus on input when clicking search icon 2016-01-04 10:00:16 +01:00
Wincent 96b24d7ee0 Removes dependency to System.IO.File 2015-12-31 12:01:35 +01:00
Rune Hem Strand 12e98fb54e Fixes U4-7619
Allows for correct aspect ratio when resizing a crop
2015-12-30 14:16:00 +01:00
Per Ploug 88f6722b9d ContentType EditController typo 2015-12-30 10:40:48 +01:00
Per Ploug 6245c0408b Default settings for models builder
Livemodels enabled, dlls models disabled, views/web.config includes the
models namespace
2015-12-30 09:57:13 +01:00
Per Ploug 6763e93af3 Cleanup of default template code
Moves it to the ViewHelper instead of inside of contenttypecontroller
2015-12-30 09:56:09 +01:00
Shannon 074dfc7e29 Adds Models Builder to nuspec, fixes build error 2015-12-29 12:29:36 +01:00
Shannon 1040700bfd Merge branch '7.4.0' into dev-7.4.0-ModelsBuilder
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web/Editors/ContentTypeController.cs
2015-12-29 11:26:15 +01:00
Shannon ac1785bc08 U4-7583 2015-12-28 16:20:48 +01:00
Shannon 1da1a20734 ensures the setting is enabled for the searcher too 2015-12-28 13:43:47 +01:00
Shannon c765ab9112 U4-7614 Allow Examine's local temp storage to exist in the current User's temp storage location - useful for Azure 2015-12-28 13:37:56 +01:00
Shannon 66ae47443a Merge branch 'temp-U4-7569' into 7.4.0 2015-12-28 10:37:32 +01:00
Shannon Deminick 198033ff22 Merge pull request #974 from umbraco/temp-U4-7569
Temp u4 7569
2015-12-28 10:36:18 +01:00
Shannon c6dbb0f7fa reverts member tree order 2015-12-28 10:35:54 +01:00
Shannon 5eff065835 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2015-12-28 10:19:24 +01:00
Shannon Deminick 664aa3842d Merge pull request #979 from robertjf/dev-v7
fix for issue U4-7609/U4-7610 - IE related problems
2015-12-28 10:09:29 +01:00
Robert Foster fbee58e445 Added json mimetype Mapping to web.config.template to support things like manifest.json in certain browsers (e.g. IE). 2015-12-26 19:05:44 +11:00
Robert Foster a5e87dcedf Fix for IE not being able to install packages in Umbraco backoffice. 2015-12-26 18:57:24 +11:00
Mads Rasmussen c11b09d2d6 Merge pull request #975 from umbraco/temp-U4-7573
Fix for http://issues.umbraco.org/issue/U4-7573
2015-12-23 11:11:10 +01:00
Mads Rasmussen c7e9e99373 Merge pull request #978 from umbraco/temp-U4-6854
Fix for http://issues.umbraco.org/issue/U4-6854
2015-12-23 09:53:53 +01:00
Mads Rasmussen 292887d9eb Merge pull request #967 from umbraco/temp-U4-7571
Fix for http://issues.umbraco.org/issue/U4-7571
2015-12-23 09:35:29 +01:00
Simon Busborg 7a112c43d8 Fix for http://issues.umbraco.org/issue/U4-6854
Grid editor - insert control: Make blue area clickable
2015-12-22 20:05:29 +01:00
Shannon c470df783c U4-7591 File cleanup for old editor 'tasks' and 'create' dialogs 2015-12-22 16:27:50 +01:00
Simon Busborg 552cbada88 Fix for http://issues.umbraco.org/issue/U4-7573 2015-12-22 15:07:57 +01:00
Shannon Deminick 7883a3720b Merge pull request #964 from umbraco/temp-U4-6890
U4-6890 New content type editor: Missing sorting of properties from s…
2015-12-22 15:04:47 +01:00
Mads Rasmussen bb5812ba54 remove front-end sorting of properties in content types 2015-12-22 14:46:57 +01:00
Simon Busborg a0c552d289 Moved media "remove file" and "Choose file" on one line. UI Sugar 2015-12-22 14:26:52 +01:00
Mads Rasmussen 8eb3122409 remove fadeOut class from load indicator directive to make in animate more than once 2015-12-22 14:08:31 +01:00
Mads Rasmussen 89e2bb1d0a Fixes: U4-7569 Listview should not loose focus after filtering and U4-7582 When searching in media with no results, show a no results message + make empty state directive 2015-12-22 14:07:12 +01:00
Shannon Deminick 41879e28ef Merge pull request #971 from umbraco/temp-U4-7567
Fix for http://issues.umbraco.org/issue/U4-7567
2015-12-22 11:26:05 +01:00
Simon Busborg 2bf83c2cce Added proper hierachy to intro screen 2015-12-22 10:46:21 +01:00
Simon Busborg 42db79bdf6 Added .btn-link -underline for dashboard links, removed global link styling from umb-dashboard-control
Added .btn-link -underline to dashboards
2015-12-22 10:39:49 +01:00
Shannon Deminick bb44a7833f Merge pull request #970 from umbraco/temp-U4-7566
Fix for http://issues.umbraco.org/issue/U4-7566
2015-12-22 10:12:01 +01:00
Simon Busborg e77e0c6704 added posibility to use border radius variables 2015-12-21 15:52:13 +01:00
Simon Busborg f5fc4eacd4 Fix for http://issues.umbraco.org/issue/U4-7566# 2015-12-21 15:33:20 +01:00
Simon Busborg 0ba9054412 Removed border-radius 2015-12-21 15:25:22 +01:00
Simon Busborg 9bbaf4a20e Removed rounded corners on elements 2015-12-21 15:21:11 +01:00
Shannon f3f70a3243 U4-7591 File cleanup for old editor 'tasks' and 'create' dialogs 2015-12-21 15:19:15 +01:00
Mads Rasmussen 6a9f6bc91b make it possible to select folders in media picker, fix issue with deselecting image in some cases + a bit code clean up. 2015-12-21 14:48:46 +01:00
Simon Busborg 8e3b6ffd59 added blue hover state 2015-12-21 12:38:22 +01:00
Simon Busborg 4a660433de Removed hover state 2015-12-21 12:37:21 +01:00
Simon Busborg 3a640c7a78 Added hover state 2015-12-21 12:32:15 +01:00
Simon Busborg 632bccb9dd Added new mediapicker ui for consistency through the backoffice, removing text-decoration problem 2015-12-21 12:22:14 +01:00
Shannon b13b4953c3 U4-6890 New content type editor: Missing sorting of properties from server 2015-12-21 10:37:54 +01:00
Wincent 53f9e104ec Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into U4-7312-2
Conflicts:
	src/Umbraco.Web/Editors/ImagesController.cs - Removed changes from upstream
2015-12-19 11:16:30 +01:00
Robert Foster ffe41fe060 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' 2015-12-18 22:45:46 +11:00
Simon Busborg 8008a3b7c5 Fix for http://issues.umbraco.org/issue/U4-7574 2015-12-18 11:22:40 +01:00
Simon Busborg da02b1330c Fix for http://issues.umbraco.org/issue/U4-7572 2015-12-18 10:33:22 +01:00
Sebastiaan Janssen cdce2a1180 Bump version 2015-12-17 14:27:37 +01:00
Mads Rasmussen 8830faedfd remove gradient from orange buttons 2015-12-17 14:19:34 +01:00
Mads Rasmussen 087ad2e1fa grid: remove the + from add content button 2015-12-17 14:01:33 +01:00
Mads Rasmussen 549881bfb7 Merge pull request #961 from umbraco/temp-U4-7551
U4-7551 New Content type editor dialog to select an editor for a prop…
2015-12-17 13:18:39 +01:00
Mads Rasmussen afd5b2e8d3 fix missing eventService injection 2015-12-17 12:38:31 +01:00
Mads Rasmussen c7ac6e5e70 Loading grouped datatypes when reusing in content type editor. Create new data type from available editor, get data type from reuse. 2015-12-17 12:32:18 +01:00
Shannon 4bd1cb0a3c Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2015-12-17 11:33:18 +01:00
Shannon 887bbdc3b0 dont' set applicationcontext to null on dispose for request based lifespan instances since applicationcontext is a singleton lifespan. 2015-12-17 11:32:50 +01:00
Mads Rasmussen 6d30c89757 fix merge conflict 2015-12-17 11:20:40 +01:00
Shannon 62db58110a re-reverts GetGroupedPropertyEditors and adds GetGroupedDataTypes 2015-12-17 11:13:49 +01:00
Claus 1655749c5d Merge branch 'temp-U4-7549' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.controller.js
2015-12-17 10:41:44 +01:00
Shannon c18ed7fa36 reverts the GetGroupedPropertyEditors method to return the data type definition for a property editor if it has no pre-values and is defined as a data type 2015-12-17 10:35:44 +01:00
Stephan 0df4949b82 Merge pull request #960 from umbraco/temp-deploy-31
deploy-31 Implement DB changes for Umbraco Deploy
2015-12-17 10:28:11 +01:00
Mads Rasmussen 87109b0747 rename umb-list-view directive to umb-list-view-settings. Because the other was just confusing 2015-12-17 10:17:34 +01:00
Simon Busborg d89defe23b Added correct cursors to elements that can be moved in the grid 2015-12-17 09:03:48 +01:00
Mads Rasmussen e16a1a2459 content type editor: switch settings and remove buttons to follow same convention as grid + fix small html bug. 2015-12-16 20:04:23 +01:00
Mads Rasmussen 48c963985a Hide editor sub headers in content type property preview. This will prevent it from scrolling down on long content types (and look weird) 2015-12-16 20:01:29 +01:00
Mads Rasmussen 57d78aac70 remove before stop event in grid sorting. The code doesn't work and it makes an js error in Edge which makes sorting fail. 2015-12-16 19:58:17 +01:00
Mads Rasmussen 5ec5afd16f Fixes: U4-7554 Compositions are not loaded in media types + move icon converter for composition to prevent js error 2015-12-16 19:51:25 +01:00
Shannon 9bff31c24a adds table create tests 2015-12-16 17:33:45 +01:00
Shannon e61db40907 Changes to use a composite key for UmbracoDeployDependency 2015-12-16 17:31:38 +01:00
Shannon fcbac0138a U4-7549 For new installs make the Image use the image cropper instead of upload
Also fixes issue with media type editor which was a bug resulting fromn(U4-6837)
2015-12-16 17:23:50 +01:00
Sebastiaan Janssen a0ac0b55d0 Update trees transform with new aliases and sorting, also re-ordered member tree to have member types first, think that was the intention 2015-12-16 17:02:10 +01:00
Shannon 07533e0145 U4-7551 New Content type editor dialog to select an editor for a property type needs the "Default" and "Reuse" tab functionality changed
Removes unused/non-required methods from data type controller/service.
2015-12-16 16:51:12 +01:00
Shannon Deminick 9cc57479da Merge pull request #957 from umbraco/temp-U4-7186
Fixes: U4-7186 Go through the remaining dialogs and check for consistency
2015-12-16 16:35:02 +01:00
Shannon 790727e952 Fixes reference to new data type tree alias "dataTypes" (breaking because of U4-7150) 2015-12-16 16:19:16 +01:00
Shannon 121d8c0279 Fixes reference to new member type tree alias "memberTypes" (breaking because of U4-7150) 2015-12-16 16:18:11 +01:00
Shannon 37a8cf7069 Removes unecessary items in the UI.xml file 2015-12-16 16:16:34 +01:00
Shannon a2e64b3485 Fixes reference to new document type tree alias "documentTypes" (breaking because of U4-7150) 2015-12-16 16:16:21 +01:00
Shannon ea86c8bcff Fixes reference to new member group tree alias "memberGroups" (breaking because of U4-7150) 2015-12-16 16:07:56 +01:00
Shannon 8260c12d64 deploy-31 Implement DB changes for Umbraco Deploy 2015-12-16 14:07:09 +01:00
Claus 2729069b00 Merge pull request #959 from umbraco/temp-U4-7477
U4-7477 xss char stripping on data type names is being too agressive
2015-12-16 14:01:12 +01:00
Claus 20c48a2daf Merge pull request #956 from umbraco/temp-U4-7538
U4-7538 GetRemainingTimeoutSeconds is double setting the cookie in 7.4
2015-12-16 13:42:54 +01:00
Sebastiaan Janssen 38e0a6e1bf Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2015-12-16 13:00:34 +01:00
Sebastiaan Janssen 7e5ffdf0ca Update in case people have 64bit git installed 2015-12-16 13:00:28 +01:00
Sebastiaan Janssen 96b33cb071 Merge branch 'temp-U4-7365' into 7.4.0 2015-12-16 12:59:55 +01:00
Shannon bdc7837f63 U4-7477 xss char stripping on data type names is being too agressive 2015-12-16 12:58:23 +01:00
Claus 7cf1491661 Merge branch 'temp-U4-6837' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI/umbraco/controls/ContentTypeControlNew.ascx.cs
2015-12-16 12:32:16 +01:00
Shannon aa91b5c68d Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2015-12-16 11:06:37 +01:00
Sebastiaan Janssen c3f309c146 Merge branch '7.4.0' into temp-U4-7365 2015-12-16 10:25:19 +01:00
Shannon Deminick e89cc24d51 Merge pull request #958 from lars-erik/overridable-domain-repository
Can't log into youtrack. Simple changes to repositoryfactory and umbr…
2015-12-16 10:19:25 +01:00
Claus 61f3b2ae4a Added CultureInvariant to regex. 2015-12-16 09:53:15 +01:00
Claus a752c7ee4b Merge branch 'rasmusjp-U4-7462' into dev-v7 2015-12-16 09:52:36 +01:00
Lars-Erik Aabech a14f0021bd Can't log into youtrack. Simple changes to repositoryfactory and umbraco.web.ui assemblyinfo. 2015-12-16 09:50:17 +01:00
Claus 5eb5549448 Merge branch 'U4-7462' of git://github.com/rasmusjp/Umbraco-CMS into rasmusjp-U4-7462 2015-12-16 09:36:49 +01:00
Sebastiaan Janssen f00d89616a Merge branch 'temp-U4-7448' into 7.4.0 2015-12-15 17:17:54 +01:00
Shannon 3f796791cc uses the main property value instead of the param 2015-12-15 17:17:11 +01:00
Sebastiaan Janssen 5b825bdeae Merge branch '7.4.0' into temp-U4-7448
Conflicts:
	src/Umbraco.Web.UI/umbraco/config/lang/no.xml
2015-12-15 17:16:15 +01:00
Sebastiaan Janssen d87dd67c08 Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2015-12-15 17:12:59 +01:00
Sebastiaan Janssen 581027172f Merge branch 'temp-7134' into 7.4.0 2015-12-15 17:12:24 +01:00
Shannon b74cab6f0b U4-7538 GetRemainingTimeoutSeconds is double setting the cookie in 7.4 2015-12-15 16:56:31 +01:00
Sebastiaan Janssen f2e37abb22 Merge branch '7.4.0' into temp-7134 2015-12-15 16:47:54 +01:00
Sebastiaan Janssen 46e7112abd Merge pull request #955 from umbraco/temp-U4-7537
U4-7537 File cleanup for old content type editor
2015-12-15 16:08:11 +01:00
Sebastiaan Janssen cdeb82e7cc Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2015-12-15 15:42:50 +01:00
Claus f5e9151ffd Localized some texts on the slider configuration. 2015-12-15 15:42:14 +01:00
bjarnef 5a9dd11a7c Change margin-top for triangle and re-order config properties 2015-12-15 15:42:14 +01:00
bjarnef 9e6123abd3 Modify properties and styling 2015-12-15 15:42:13 +01:00
bjarnef 6c3ef2aaa9 Add more config properties 2015-12-15 15:42:13 +01:00
bjarnef 95ae504c9b Change "reversed" property to boolean 2015-12-15 15:42:12 +01:00
bjarnef 88fadcf74e Add slider bootstrap-slider v5.2.6
Add newer version of script and add addtional properties.
2015-12-15 15:42:12 +01:00
Sebastiaan Janssen d123967b14 Merge branch 'dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI/umbraco/config/lang/no.xml
2015-12-15 15:31:47 +01:00
Mads Rasmussen 5d4f4376dd make overlay component of rich text editor link picker in property editor and grid editor 2015-12-15 15:26:07 +01:00
Mads Rasmussen 80675eee75 use new overlay component in tree picker prevalue editor 2015-12-15 15:26:07 +01:00
Mads Rasmussen 7d31bc9d35 make it easier to use itempicker and iconpicker - use submit method to submit instead of custom method - add overlay option to hide submit button. Clean up code by removing close method. 2015-12-15 15:26:07 +01:00
Mads Rasmussen a08566c04c fix media, macro and embed overlays in rte in grid 2015-12-15 15:18:33 +01:00
Mads Rasmussen fe7f73ff57 setup global ysod overlay + change error model 2015-12-15 15:18:33 +01:00
Simon Busborg 41b5ab697f Correct indention for umb-overlay 2015-12-15 15:18:33 +01:00
Simon Busborg b464637f98 Removed hardcoded text for testing 2015-12-15 15:18:33 +01:00
Simon Busborg e027689171 Added new styling standard for dialog title 2015-12-15 15:18:32 +01:00
Rune Strand fc0fe61c2f Add ysodOverlay to listview and localized dialog buttons 2015-12-15 15:18:32 +01:00
Mads Rasmussen 78e1356c03 update rich text editor to use new macro picker overlay 2015-12-15 15:18:32 +01:00
Mads Rasmussen 4dd8ab227b update grid macro picker to use new overlay component 2015-12-15 15:18:32 +01:00
Mads Rasmussen 227c6d8cb1 copy insert macro dialog to new macro picker overlay + update macro container property editor 2015-12-15 15:18:32 +01:00
Mads Rasmussen 9eefe17331 make global class for empty state texts - use in compositions dialog + list view 2015-12-15 15:18:31 +01:00
Mads Rasmussen 874da20288 user new media picker overlay component in grid image picker config 2015-12-15 15:18:31 +01:00
Mads Rasmussen a9411aa246 change grid items settings dialog to new overlay component 2015-12-15 15:18:31 +01:00
Shannon 727fd3aa17 U4-7537 File cleanup for old content type editor 2015-12-15 15:12:22 +01:00
Sebastiaan Janssen bb4994f9fc Merge pull request #935 from torerikk/dev-v7
Update Norwegian translations
2015-12-15 15:10:46 +01:00
Mads Rasmussen cfbfa2f5c9 umb-overlay: block styling of form elements 2015-12-15 15:06:45 +01:00
Mads Rasmussen e163fefd7d use new media picker component in grid media picker 2015-12-15 15:06:45 +01:00
Mads Rasmussen dc59b5b674 rename "rteembed" to "embed", save data to other property, add changes to tinymce + use new overlay component in grid embed 2015-12-15 15:06:45 +01:00
Mads Rasmussen 778522cad7 add copy of user dialog and help dialog for new overlay component 2015-12-15 15:06:45 +01:00
Mads Rasmussen ea3942f151 umb-overlay: add support for left side positioned dialogs 2015-12-15 15:06:45 +01:00
Mads Rasmussen 7ed9e9e665 decrease umb-overlay subtitle font size a bit 2015-12-15 15:06:45 +01:00
Mads Rasmussen 2302bb5438 umb-overlay: remove close from header + add support for a subtitle 2015-12-15 15:06:45 +01:00
Mads Rasmussen 74636c7d5a Fixes: U4-7490 Update umb-photo-folder to use umb-media-grid in the media picker + hide drop zone if there are images in a folder and add upload button from old media picker 2015-12-15 15:06:44 +01:00
Mads Rasmussen fba740141a copy rte embed to new overlay component 2015-12-15 15:06:44 +01:00
Mads Rasmussen 0b1854e73e switch markdown editor media picker dialog with overlay component 2015-12-15 15:06:44 +01:00
Mads Rasmussen e54a478458 Switch rich text editor media picker dialog with new overlay component 2015-12-15 15:06:44 +01:00
Mads Rasmussen 9a8273b784 Fixes: U4-7541 umbAutoResize does not work in Microsoft Edge 2015-12-15 14:51:51 +01:00
Claus c334f94d72 Fixed a few comments. 2015-12-15 14:47:19 +01:00
Claus ddf525db40 Merge branch 'AffinityID-u4-7522' into dev-v7 2015-12-15 14:43:22 +01:00
Shannon 3fa0f89dd1 U4-7134 New content type editor requires CRUD access to data types 2015-12-15 14:42:48 +01:00
Mads Rasmussen 191f82aaaa Fixes: U4-7448 Grid - Sorting view 2015-12-15 14:34:13 +01:00
Claus 9c7ef46222 Merge pull request #941 from bugsancho/dev-v7
U4-7508 - IsChildOfListView should be populated for Media items
2015-12-15 14:18:27 +01:00
Sebastiaan Janssen c813eccb45 Merge branch 'dev-v7' into 7.4.0 2015-12-15 13:53:50 +01:00
Sebastiaan Janssen eacc7f7fb3 Whoops, was supposed to be en-US by default 2015-12-15 13:50:19 +01:00
Claus f1fcb2adec Fixes: U4-7365 Content list view sorting alias is “sort” and media list view sorting alias is “sortOrder”. This gives an ysod when changing sorting in media list views.
Changed the default list view for media to be created with the correct alias in the database.
Added migration for existing databases to be updated.
2015-12-15 13:43:52 +01:00
Sebastiaan Janssen 80f597a7eb U4-7424 - Also update all other errors displayed in the frontend 2015-12-15 12:51:45 +01:00
Sebastiaan Janssen d069da8a4f Make LocalizedTextService fall back to en-GB if the key is not found in the current file 2015-12-15 12:51:03 +01:00
Shannon 050109edd7 U4-6837 New content type editor: availableCompositeContentTypes could be moved to service.
Allows for assigning compositions to doc types that are being created.
Removes unused getAssignedListViewDataType from contentTypeResource.
Removes unused getPropertyTypeScaffold from memberTypeResource.
Removes unused performContainerDelete from memberTypeResource - since member types don't support folders.
Ensures correct security for the ContentTypeController.GetAllPropertyTypeAliases and ContentTypeController.GetAvailableCompositeContentTypes.
Removes unused ContentTypeControllerBase.GetAssignedListViewDataType, this is no longer used because the list view is configured using the DataTypeController.
2015-12-15 12:25:42 +01:00
Sebastiaan Janssen 44ebd8d9ea Proper formatting of this file, only whitespace changes 2015-12-15 12:18:23 +01:00
Sebastiaan Janssen 2fd6dc3603 Merge branch 'engern-U4-7424' into dev-v7 2015-12-15 12:14:07 +01:00
Sebastiaan Janssen 0629b49112 Merge branch 'U4-7424' of https://github.com/engern/Umbraco-CMS into engern-U4-7424 2015-12-15 12:13:35 +01:00
Sebastiaan Janssen 198ba0db83 Merge branch 'dev-v7' into 7.4.0 2015-12-15 11:25:09 +01:00
Sebastiaan Janssen 4958c5a59a Merge branch 'jamescoxhead-U4-7503-Disable-X-AspNetMvc-Version-Header' into dev-v7 2015-12-15 11:21:23 +01:00
Sebastiaan Janssen 523501db8c Merge branch 'U4-7503-Disable-X-AspNetMvc-Version-Header' of https://github.com/jamescoxhead/Umbraco-CMS into jamescoxhead-U4-7503-Disable-X-AspNetMvc-Version-Header 2015-12-15 11:21:11 +01:00
Sebastiaan Janssen 6ce4354ef3 Merge branch 'dev-v7' into 7.4.0 2015-12-15 11:14:15 +01:00
Sebastiaan Janssen 23cd2b09ca Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2015-12-15 11:13:22 +01:00
Sebastiaan Janssen a1ff1d4543 Merge branch 'TimoPerplex-dev-v7' into dev-v7 2015-12-15 11:12:57 +01:00
Sebastiaan Janssen 1bf2a3b1bf Merge branch 'dev-v7' of https://github.com/TimoPerplex/Umbraco-CMS into TimoPerplex-dev-v7
Conflicts:
	src/Umbraco.Web/Editors/ImagesController.cs
2015-12-15 11:12:13 +01:00
Shannon Deminick 8ce8455773 Merge pull request #950 from umbraco/temp-U4-7373
Fixes U4-7373 Error notifications shown are hidden underneath the dialogs
2015-12-15 10:53:55 +01:00
Shannon 26b70a4a4e Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	build/UmbracoVersion.txt
	src/SolutionInfo.cs
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/umbraco/config/lang/de.xml
2015-12-15 10:40:52 +01:00
Shannon 8598ab565c Fixes: U4-7536 Sign-out in back office will call all ASP.Net identity middleware sign out methods
publicises a few things too.
2015-12-15 10:34:11 +01:00
Simon Busborg 31147fa8d1 missing comma 2015-12-15 10:26:22 +01:00
Simon Busborg d75f8bf1bd added wrapper to directive 2015-12-15 10:24:38 +01:00
Simon Busborg ecb6c8e52c Fix for U4-7373 Error notifications shown are hidden underneath the dialogs
http://issues.umbraco.org/issue/U4-7373
2015-12-15 10:08:19 +01:00
Rasmus John Pedersen a56936b6f9 Fixes bug with macro multiline parameters 2015-12-14 13:44:57 +01:00
Claus 3cdd650b66 Merge pull request #940 from umbraco/temp-U4-7445
Temp u4 7445
2015-12-14 11:31:02 +01:00
Simon Busborg 8bd3b25a66 Fix for: http://issues.umbraco.org/issue/U4-7518
New list view (umb-table) misses published/unpublished state
2015-12-11 14:26:17 +01:00
Andrey Shchekin b3e21e0827 U4-7522 Removed unnecessary exception from DeepCloneHelper. 2015-12-10 14:33:52 +13:00
Rune Strand 10b828379b Element hinzufügen! 2015-12-09 09:31:38 +01:00
James Coxhead 739ff33ce1 Removed X-AspNet-Version and X-AspNetMvc-Version headers 2015-12-08 21:44:40 +00:00
James Coxhead f27a726a6e Disabled the X-AspNetMvc-Version header 2015-12-08 21:19:41 +00:00
Alexander Todorov aed906e682 U4-7508 - IsChildOfListView should be populated for Media items, similarly to Content items 2015-12-08 18:41:59 +02:00
Rune Strand 7431ed4db1 Better wording 2015-12-08 13:42:05 +01:00
Rune Strand cb07ec3157 Add dialog localization and new keys to all lang 2015-12-07 18:07:08 +01:00
Sebastiaan Janssen 7a4b7c25dd Can't use higher versions of angular-dynamic-locale
See: https://github.com/lgalfaso/angular-dynamic-locale/issues/82
2015-12-07 13:00:57 +01:00
Sebastiaan Janssen a162974bf9 Merge remote-tracking branch 'refs/remotes/origin/dev-v7' into 7.4.0 2015-12-07 11:51:34 +01:00
Sebastiaan Janssen ff61112c18 Updates installer background 2015-12-07 10:32:24 +01:00
Sebastiaan Janssen a427ca6d4e Merge remote-tracking branch 'refs/remotes/origin/dev-v7' into 7.4.0 2015-12-07 10:26:26 +01:00
Rune Hem Strand 93f199b5e3 Add localization to Grid (en) 2015-12-04 13:23:24 +01:00
Sebastiaan Janssen 453efc02a5 Removes old obsoleted ping.aspx 2015-12-04 11:10:12 +01:00
Wincent e0ee786271 Re-enables support for non media thumbnails 2015-12-04 09:31:39 +01:00
Wincent 2664a75c84 Removed generation of old thumbnails 2015-12-03 17:33:40 +01:00
Wincent 5d9bde807e Changes GetBigThumbnail to image processor in mediahelper.service.js and fileupload.controller.js
Changed ImageController.GetBigThumbnail to redirect
Changed thumbnail paths to include rnd equal to UpdateDate
2015-12-03 17:27:47 +01:00
Mads Rasmussen 58a68bba97 Fixes: U4-7387 bug preventing drag and drop upload in media library card layout 2015-12-03 13:24:09 +01:00
Stephan 22eea2b7db Fix tests 2015-12-03 12:56:59 +01:00
Sebastiaan Janssen fe88e4df5f Merge branch 'temp-U4-6659' into 7.4.0 2015-12-03 12:18:58 +01:00
Sebastiaan Janssen 34156ae7bb Merge branch '7.4.0' into temp-U4-6659 2015-12-03 12:18:46 +01:00
Sebastiaan Janssen f2d5cff66a Merge branch 'konami-easteregg' into 7.4.0 2015-12-03 12:15:43 +01:00
Sebastiaan Janssen 0fc41d0552 Merge branch '7.4.0' into konami-easteregg 2015-12-03 12:15:23 +01:00
Sebastiaan Janssen b09aaee52d Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2015-12-03 11:49:23 +01:00
Mads Rasmussen 62e4bebab6 Fixes: U4-4051 Bug when querying for root node with the remembered node id 2015-12-03 11:45:59 +01:00
Sebastiaan Janssen 36ef7a6505 Merge branch 'temp-U4-7366' into 7.4.0 2015-12-03 10:43:56 +01:00
Sebastiaan Janssen e293051498 Merge branch '7.4.0' into temp-U4-7366 2015-12-03 10:43:10 +01:00
Sebastiaan Janssen 34a95353c2 Merge branch '7.4.0' of https://github.com/umbraco/Umbraco-CMS into 7.4.0 2015-12-03 10:31:37 +01:00
Mads Rasmussen dbc519a9cf Fixes: U4-7478 Set cookie to remember last chosen list view layout 2015-12-03 10:14:51 +01:00
Mads Rasmussen 6729f39b4e Fixes: U4-7474 rename member tree path + set header name not to be locked 2015-12-03 09:44:52 +01:00
Sebastiaan Janssen a3dd51ba98 Remove dead code 2015-12-03 09:44:29 +01:00
Sebastiaan Janssen 109aff737b Fixes spelling error 2015-12-03 09:43:50 +01:00
Sebastiaan Janssen cd369bf078 Move some repeated GUIDs to a constants class 2015-12-03 09:43:33 +01:00
Sebastiaan Janssen c7aa3d63fb Merge branch 'temp-U4-7372' into 7.4.0
Conflicts:
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixZeroOne/UpdatePropertyTypesAndGroups.cs
2015-12-03 09:22:19 +01:00
Rune Strand a6b1239138 Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-12-02 21:24:23 +01:00
Rune Strand e4365af312 Fixes full width drop overlays 2015-12-02 21:24:08 +01:00
Mads Rasmussen ab884b00bf make entire cell placeholder clickable 2015-12-02 21:21:54 +01:00
Tor-Erik Klausen 0370f9a1c8 Update Norwegian translations
Adds missing translations and removes some old ones. Based on current
en.xml
2015-12-02 20:09:06 +01:00
Rune Strand 41bf7fc53d Add drop overlay for empty cells 2015-12-02 17:23:59 +01:00
Rune Strand 914343e00c Add check if drop area is actually a valid cell 2015-12-02 15:43:47 +01:00
Rune Strand b5d12aca5e Sort into empty cells 2015-12-02 15:19:09 +01:00
Sebastiaan Janssen d863ff364e U4-7321 Update Doc type edit link on content item for 7.4 since it will be different
#U4-7321 Fixed
2015-12-02 14:41:37 +01:00
Mads Rasmussen b3988e81f5 Merge pull request #930 from umbraco/temp-U4-6924
Fixes: U4-6924 Ensure drag/drop media uploads show notifications - since the way this works has been overhauled in 7.4
2015-12-02 13:46:08 +01:00
Sebastiaan Janssen 4d4a7b5078 U4-7343 Change the order of trees under Settings: Make "Document Type" the first item in the settings section
#U4-7343 Fixed
2015-12-02 13:33:40 +01:00
Mads Rasmussen 160fc5effd Merge pull request #929 from umbraco/temp-U4-7387
Fixes: U4-7387 It's not possible to select folders in listview in media section
2015-12-02 13:29:46 +01:00
Claus e4a0dc5d55 Fixed indentation. 2015-12-02 09:52:35 +01:00
Mads Rasmussen e242474496 fix media picker merge mistake 2015-12-01 19:40:05 +01:00
Rune Strand 879ea73195 Updates jQuery UI to vLatest #woohoo 2015-12-01 15:51:15 +01:00
Sebastiaan Janssen e1c1a99131 Fix merge mistake 2015-12-01 15:21:52 +01:00
Sebastiaan Janssen 9949e2676d Merge branch 'dev-v7' into 7.4.0
Conflicts:
	build/UmbracoVersion.txt
	src/SolutionInfo.cs
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI.Client/bower.json
	src/Umbraco.Web.UI.Client/src/less/main.less
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.html
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.html
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/Dashboard.Release.config
	src/Umbraco.Web/Umbraco.Web.csproj
2015-12-01 15:16:57 +01:00
Mads Rasmussen 4a60acb8f3 Drag and drop: show message when control is not allowed in cell 2015-12-01 14:54:20 +01:00
Mads Rasmussen fe9954b674 Fixes: U4-7447 Grid - Touch support 2015-12-01 11:23:10 +01:00
Mads Rasmussen bf037b3dd7 Fixes: U4-7440 Grid - Controls overlay is cut of by the tree 2015-11-30 19:34:23 +01:00
Mads Rasmussen 09f0f951a1 Fixes: U4-7444 Grid - Place Richtext editor toolbar in control (static positioning) + remove sticky when scrolling 2015-11-30 11:30:31 +01:00
Mads Rasmussen c9141d8815 set control title bar animation to linear 2015-11-30 09:42:14 +01:00
Mads Rasmussen 4673832f12 minimize number of function calls when checking for item config and item active children 2015-11-30 09:35:21 +01:00
Mads Rasmussen 894a5cc758 add options to hide filter in item picker overlay + hide filter in control picker in grid 2015-11-27 10:18:02 +01:00
Shannon 3ebdfcc238 fixes upgrade script 2015-11-26 17:14:56 +01:00
Stephan 6f8243265b Fix persistence layer issues with unique identifiers 2015-11-26 13:24:40 +01:00
Mads Rasmussen f2f9283a25 Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-26 09:45:45 +01:00
Simon Busborg 347d5070a2 added hover state to -placeholder in neutral state 2015-11-26 09:44:43 +01:00
Mads Rasmussen 07cb0408dd clean up scope watchers 2015-11-26 09:39:52 +01:00
Simon Busborg 27dbc1eefb Added more visible border to placeholder when row has active-child 2015-11-26 09:18:41 +01:00
Rune Strand 5d3f3fca79 Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-25 23:07:50 +01:00
Rune Strand b0b8eb857c Updates U4-7438 Grid - Sorting of controls/editors
Drag n drop between cells
2015-11-25 23:07:19 +01:00
Mads Rasmussen 7057c325cb fix performance issue with outside click event - only bind click when element is active 2015-11-25 22:25:41 +01:00
Rune Strand 3a5d7f0442 Fixes U4-7438 Grid - Sorting of controls/editors 2015-11-25 21:15:09 +01:00
bjarnef b2d4eccf7b Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' into dev-v7 2015-11-25 20:13:15 +01:00
Mads Rasmussen 8bfb77d3fe add client side validation for max file size in list view grid-layout, list view list-layout and media picker 2015-11-25 19:18:14 +01:00
Mads Rasmussen 89fd42be25 add server error to html 2015-11-25 19:16:14 +01:00
Simon Busborg dbbccb4e40 Ensure drag/drop media uploads show notifications - since the way this works has been overhauled in 7.4
Awaits `maxFileSize` variable from U4-7394 ( http://issues.umbraco.org/issue/U4-7394 )
2015-11-25 15:46:34 +01:00
Simon Busborg 66ee3503a5 UI love to the different states of the grid – much polish, such click, wow colors 2015-11-25 15:09:02 +01:00
Mads Rasmussen 9a8501c90c Fixes: U4-7387 It's not possible to select folders in listview in media section 2015-11-25 13:51:57 +01:00
Claus ea12a883f3 Merge pull request #925 from umbraco/temp-U4-7394
Fixes: U4-7394 Missing maxFilseSize variable from web.config in the b…
2015-11-25 09:43:55 +01:00
Simon Busborg 9b1983a239 Added labels to show when styles/config are added to rows/cells 2015-11-25 09:27:11 +01:00
Mads Rasmussen 5797c65a1d Fixes: U4-7446 Grid - Confirm dialog on delete row/cell 2015-11-25 09:24:19 +01:00
kiasyn dbece874dd U4-7400 - Datepicker is not updating scope model value in time for 3rd party plugins
Force set scope model value when the datetime changes, rather than just on formsubmit. This means that 3rd party plugins (such as grids) can use this editor.
2015-11-25 10:25:00 +13:00
Mads Rasmussen 776a9bc8e2 Fixes: U4-7442 Grid - Hide Layout picker when only one layout is configured 2015-11-24 14:03:53 +01:00
Mads Rasmussen c81b034568 Fixes: U4-7441 Grid - Hide row picker when Grid has content (show + icon) 2015-11-23 19:57:15 +01:00
Simon Busborg 692e09871a Comments, TODOs, and general cleanup in umb-grid 2015-11-23 16:46:59 +01:00
Shannon bb3a9c0e2e Fixes: U4-7394 Missing maxFilseSize variable from web.config in the backoffice 2015-11-23 15:19:13 +01:00
Simon Busborg e15b11389a Merge branch '7.4.0' into temp-U4-7366 2015-11-23 15:08:01 +01:00
Mads Rasmussen 522d9d148f Fixes: U4-7449 Cannot create datatype in new content type editor 2015-11-23 15:03:26 +01:00
Simon Busborg 36361bf9e8 Changed dropzone UI, to display link. Pulled SVG source from file into image file. 2015-11-23 14:13:12 +01:00
Claus f09e3c206c Fixed formatting... 2015-11-23 13:45:17 +01:00
Claus 2415403149 Fixes: U4-7392 It's not possible to upload folders in the media root 2015-11-23 13:43:31 +01:00
Rune Strand e4660115cd Dirty hack for Frankfurt 2015-11-23 13:05:41 +01:00
engern 07c714fd11 Fixes U4-7424
Add the possibilty to change the error message when a macro partial view
fails to render.
2015-11-21 11:33:46 +01:00
Stephan 0f0b612de3 Refactor EntityContainer with (sort-of) proper repository 2015-11-20 18:37:00 +01:00
Stephan 3fe235fa35 Sanitize content types .ContentTypeComposition and .PropertyTypes 2015-11-20 18:36:55 +01:00
Stephan ee72621042 Fix development server port 2015-11-20 18:36:54 +01:00
Stephan 67c7ed1810 Fix propertyGroup.ParentId migration 2015-11-20 18:36:53 +01:00
Mads Rasmussen 4adc645580 Merge branch '7.4.0' into temp-U4-7366 2015-11-19 22:19:52 +01:00
Rune Strand 664f80364b Add content visible when sorting
Add cell sorting
2015-11-19 21:54:59 +01:00
Shannon 2ba7cdc789 Fixes: U4-6659 Examine: Specific doctype not being indexed 2015-11-19 19:06:31 +01:00
Sebastiaan Janssen 16f1fa1678 Merge branch 'dev-v7' into 7.4.0 2015-11-19 14:44:54 +01:00
Sebastiaan Janssen d0865017d1 Merge branch 'dev-v7' into 7.4.0 2015-11-18 19:42:13 +01:00
Mads Rasmussen 813171e6ae remove styles which overwrite lists styles in control overlay 2015-11-18 14:16:33 +01:00
Rune Strand 8d88394cf7 Move sortable init to row title 2015-11-18 13:37:29 +01:00
Rune Strand 46951cb79f Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-18 12:14:09 +01:00
Rune Strand eff0ef027a Add cloned content when sorting 2015-11-18 12:13:51 +01:00
Mads Rasmussen 2922bf5ac8 Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-18 12:01:58 +01:00
Mads Rasmussen 6f15b9fb1e deselect everything when clicking outside a row 2015-11-18 12:01:24 +01:00
Mads Rasmussen 72311a7808 set blue background on active rows 2015-11-18 12:01:00 +01:00
Rune Strand 6fa94b4f5d More sortable styling 2015-11-18 09:33:34 +01:00
Rune Strand 15426193a2 Merge branch 2015-11-18 09:24:58 +01:00
Sebastiaan Janssen 214e4beb2f Merge branch 'dev-v7' into 7.4.0 2015-11-17 18:51:29 +01:00
Stephan 4c8da5cd48 Fix test due to various changes 2015-11-17 16:55:15 +01:00
Stephan eb5589e064 Remove PropertyGroup.ParentId, sanitize Property groups/types 2015-11-17 16:55:14 +01:00
Stephan aaffa01f36 Implement PropertyGroup.Key (with migration)
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
2015-11-17 16:55:13 +01:00
Stephan acd64cc776 Replacing ContentTypeBase PropertyGroups/Types entirely should dirty the ppty 2015-11-17 16:55:12 +01:00
Stephan c7474487c9 Prepare EntityContainer for UniqueID 2015-11-17 16:55:11 +01:00
Stephan 467f001944 Cleanup migrations 2015-11-17 16:55:10 +01:00
Stephan 12a38ff7b9 Implement GUID constants 2015-11-17 16:55:09 +01:00
Stephan d20028036e Fix new ContentType editor rebindCallback 2015-11-17 16:55:08 +01:00
Shannon 5c1a10e1f9 re-fixes the jquery bower build 2015-11-17 14:36:05 +01:00
Sebastiaan Janssen da479430d4 Merge branch 'dev-v7' into 7.4.0 2015-11-17 13:49:21 +01:00
Sebastiaan Janssen 05c592860d Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2015-11-17 13:43:19 +01:00
Stephan 6506c1109f Implement ContentTypeBase.MovePropertyType support for null group 2015-11-17 12:02:36 +01:00
Stephan bca74790ca Implement IFileService.GetTemplate(Guid) 2015-11-17 12:02:35 +01:00
Claus 3d95b4d73a Updated unit test after adding in TaskTypeMapper.
cherrypicked from dev-v7.
2015-11-17 11:51:03 +01:00
Shannon Deminick 60c2040cba Merge pull request #890 from umbraco/temp-U4-7286
Fixes: U4-7286 Upgrade script to normalize all GUIDs for content types + update Courier to support it
2015-11-17 11:48:19 +01:00
Mads Rasmussen 4594b952b4 add control overlay to select control before editing 2015-11-17 11:41:17 +01:00
Claus e442911d0f Merge pull request #892 from umbraco/temp-U4-7342
Temp u4 7342
2015-11-17 10:09:33 +01:00
Mads Rasmussen 609a475c67 remove margin bottom on tiny mce in grid.rte directive 2015-11-16 21:20:29 +01:00
Mads Rasmussen ec3ef2c018 add cursor pointer to title, remove a bit bottom space, animate icons 2015-11-16 21:13:53 +01:00
Mads Rasmussen 23f8952605 insert cell tools 2015-11-16 20:58:47 +01:00
Mads Rasmussen 6f893ae69b only render elements in control bar when control is active to prevent click when collapsed 2015-11-16 20:18:39 +01:00
Mads Rasmussen 2b4f0ebf64 always add controls to the bottom of the array 2015-11-16 19:38:00 +01:00
Mads Rasmussen 4bc5bb9c64 style control bars + add outside click to deselect controls and cells 2015-11-16 10:57:06 +01:00
Stephan 92e4a14b7e Merge temp-U4-6911 into 7.4.0 2015-11-13 15:06:28 +01:00
Stephan 9654a0aa3a Enable moving system datatypes (but not deleting) in tree 2015-11-13 15:04:14 +01:00
Stephan 8653da010e Remove warning on container delete, cannot delete a non-empty container 2015-11-13 15:03:57 +01:00
Mads Rasmussen b6b3dee8ed fix up media, macro and embed editor placeholders 2015-11-13 13:52:32 +01:00
Rune Strand 6d5d160b6f Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-13 13:10:34 +01:00
Rune Strand afd4b19259 Initial sortable styling 2015-11-13 13:10:23 +01:00
Stephan b59ea231c5 Merge 7.4.0 into temp-U4-6911 2015-11-13 12:53:34 +01:00
Mads Rasmussen 51e6072013 set active state on rows, cells and editors 2015-11-13 12:48:35 +01:00
Mads Rasmussen d00569325a Merge branch 'dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web.UI.Client/src/common/directives/components/forms/focuswhen.directive.js
	src/Umbraco.Web.UI.Client/src/common/directives/util.directive.js
	src/Umbraco.Web.UI.Client/src/less/application/grid.less
	src/Umbraco.Web.UI.Client/src/less/main.less
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
	src/Umbraco.Web.UI.Client/src/views/dashboard/ChangePassword.html
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.html
2015-11-13 11:29:47 +01:00
Shannon bf40fc25e6 Fixes csproj and fixes migration script to use Sql object and ensures that it normalizes GUIDs across ALL content types 2015-11-13 11:17:14 +01:00
Shannon 50e2bd5d7e Gets data type folders working, this includes updating the data type repo + unit test, the move dialog/views, the data type tree to just show folders. 2015-11-12 19:01:42 +01:00
Shannon 5209a54f2a Added Move methods for both content types and media types ... these move methods are done as part of the UOW commit/transaction process, something that should be done with the Move/Copy operations of the content/media services. I added unit tests for the move operations for both content, media and data types. Events are all in places for content type and media type moves (something which Courier will need to use). Updated the trees/menu items to support moving which includes rendering the tree with only folders, updated the move dialog views to work. 2015-11-12 19:01:41 +01:00
Shannon 98be8dfe3e adds unit tests for content, media and data type repositories for creating and deleting containers (NOTE: There are other failing tests that are not part of this branch that need to be fixed in the 7.4 branch) 2015-11-12 19:01:41 +01:00
Shannon d379b98c57 Gets data type folders working/creating, data types being able to be created in folders, tree syncing with data type paths, fixes up some localization stuff and fixes up some issues with media type folders with parent ids 2015-11-12 18:59:43 +01:00
Shannon 42a0697d60 Nearly got data type folders creating 2015-11-12 18:59:42 +01:00
Shannon 4f07033d58 Gets creating/deleting media type folders working. 2015-11-12 18:59:41 +01:00
Shannon b4755fc5c4 Gets more doc type folders working, can create and delete, now to get doc types to be moved. 2015-11-12 18:59:40 +01:00
Shannon f54cde050a WIP - updated repositories to better support creating/deleting entity containers in a transaction, this is done by a child repository and a new EntityContainer type. Updated the controller to use this logic. 2015-11-12 18:59:39 +01:00
Shannon 4ce0e6bac3 Starts fixing up the doc type folders stuff, fixes permissions settings on the trees, adds error messaging for duplicating folders, removes the click handler for folder nodes 2015-11-12 18:59:38 +01:00
Stephan ef94441d3b Fix ContentTypeServiceTests, due to changes in service/repository 2015-11-12 16:25:50 +01:00
Stephan c27849a405 Fix ContentTypeRepositoryTest failing mapping tests 2015-11-12 15:33:55 +01:00
Stephan af0451f8be Fix DataTypeDefinitionRepositoryTest, broken since the repo was changed 2015-11-12 15:33:05 +01:00
Stephan 098d2815e3 Fix ContentRepositoryTest.Can_Perform_Add_With_Default_Template 2015-11-12 15:32:58 +01:00
Stephan 6fd185df2d Replace evil magic number with constant 2015-11-12 15:32:53 +01:00
Stephan 901d55b472 Fix more tests, now that folder browser is gone 2015-11-12 15:32:43 +01:00
Stephan eee1e9385f Fix DataTypeDefinitionRepositoryTest, now that folder browser is gone 2015-11-12 15:32:35 +01:00
Stephan 3272cd5c4d Fix PropertyValueEditor.ConvertDbToEditor for decimals, use invariant culture 2015-11-12 15:31:18 +01:00
Stephan 1d5602a22c Fix PluginManagerTests, post-6c5e35e 2015-11-12 15:31:09 +01:00
Rune Strand e63c7120b7 Add row title bar styling 2015-11-12 15:17:10 +01:00
Rune Strand 07b53c461c Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-12 13:49:44 +01:00
Rune Strand 8dd2076d09 Hide help text when adding row 2015-11-12 13:49:24 +01:00
Mads Rasmussen 4f4d577a48 make it possible to add multiple editors to a cell 2015-11-12 13:38:34 +01:00
Mads Rasmussen ac2cf769d5 refactor cells so cells with and without editors are separate divs 2015-11-12 13:26:04 +01:00
Mads Rasmussen 2edfb5b0b2 set row configs to show on init 2015-11-12 12:00:08 +01:00
Rune Strand f72f8a6540 Merge branch 'temp-U4-7366' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7366 2015-11-12 11:50:42 +01:00
Rune Strand 2c7f9d8cda Update placement and styling of preview help text 2015-11-12 11:48:59 +01:00
Mads Rasmussen e77e58d54d change add editor overlay to use new item picker overlay 2015-11-12 11:45:48 +01:00
Mads Rasmussen 3ee3c3b46c aaand the controller changes 2015-11-12 09:55:45 +01:00
Mads Rasmussen a4bf118f6d fix cell padding, add rows 2015-11-12 09:53:21 +01:00
Mads Rasmussen 3f3cc507a8 set up basic styling for cell previews + hover state + fix overflow on cells 2015-11-11 19:34:29 +01:00
Mads Rasmussen 3ec2ad551c one small step for man....... 2015-11-11 15:57:34 +01:00
Simon Busborg c26057c925 Fixed link hover state 2015-11-11 13:34:42 +01:00
Simon Busborg 62711406ab Added umb-dashboard-control back to dashboard, removed underlines via less 2015-11-11 13:11:41 +01:00
Simon Busborg cd2e810299 Removed "message" on no times in media section 2015-11-11 11:42:02 +01:00
Simon Busborg 55cac7990e Added dropzone upload to listview in media section 2015-11-11 11:42:02 +01:00
Simon Busborg 25db6ed430 More efficient empty state 2015-11-11 11:42:02 +01:00
Simon Busborg d68a9fae5d UI Polish
New: UI Polish
Edit: Changed 'Cancel' to 'Clear selection'
Fix: Changed from table to flexbox
2015-11-11 11:42:02 +01:00
Simon Busborg 64117239ae Correction to table class 2015-11-11 11:42:01 +01:00
Simon Busborg 608aa269f9 Add umb-table directive, restyling, use directive in listview 2015-11-11 11:42:01 +01:00
Claus 16da9f99d7 Fixes: U4-7286 Upgrade script to normalize all GUIDs for content types + update Courier to support it
Migration for ensuring content type guids are consistent on upgrade to v. 7.4.
2015-11-10 13:38:37 +01:00
Claus 505de31fa1 Fixes: U4-7370 Upgrading from 7.3.1 to 7.4 fails
Added migration for 7.3.2, ensuring the identity on the table is correct. It failed due to rows initially being inserted with identity disabled and therefore the seed of the table was zero even when the table had data.
2015-11-10 13:38:36 +01:00
Claus 35778bc08a Fixes: U4-7286 Upgrade script to normalize all GUIDs for content types + update Courier to support it
Migration for ensuring content type guids are consistent on upgrade to v. 7.4.
2015-11-10 13:37:45 +01:00
Claus 49560d8f2e Fixes: U4-7370 Upgrading from 7.3.1 to 7.4 fails
Added migration for 7.3.2, ensuring the identity on the table is correct. It failed due to rows initially being inserted with identity disabled and therefore the seed of the table was zero even when the table had data.
2015-11-10 12:10:36 +01:00
Shannon a351f6cfc8 Fixes up the error handling with move/copy dialogs. 2015-11-09 17:58:43 +01:00
Shannon 85e5c0c219 fixes jquery reference issue (again) 2015-11-09 17:10:33 +01:00
Shannon 7eb922a550 fixes build (merge issue) 2015-11-09 12:37:29 +01:00
Shannon a0761b92b8 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	build/RevertToCleanInstall.bat
	build/RevertToEmptyInstall.bat
	src/Umbraco.Web.UI.Client/src/canvasdesigner.loader.js
	src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbavatar.directive.js
	src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js
	src/Umbraco.Web.UI.Client/src/less/pages/login.less
	src/Umbraco.Web.UI.Client/src/views/components/application/umb-avatar.html
	src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html
2015-11-09 12:33:53 +01:00
Shannon Deminick 974c7cb48c Merge pull request #882 from umbraco/temp-U4-7351
Temp u4 7351
2015-11-09 03:28:41 -08:00
Claus Jensen 33d7292cb1 Merge pull request #843 from umbraco/temp-U4-7224
Temp u4 7224 - clean up content type editor validation styling
2015-11-06 12:58:57 +01:00
Mads Rasmussen 06a1899edf clear alias when name is empty 2015-11-06 11:49:01 +01:00
Claus Jensen 16126c2b4e Merge pull request #881 from umbraco/temp-U4-7281
show warning when editing data type in content type editor
2015-11-06 10:30:08 +01:00
Mads Rasmussen 3dbd738639 set new bottom height to make room for cancel button 2015-11-05 10:52:22 +01:00
Mads Rasmussen a34431493e remove watchers on available and selected models from umbChildSelector directive to prevent digest loop going crazy 2015-11-05 10:37:23 +01:00
Mads Rasmussen 6e1dc87996 wait for content before loading sub views 2015-11-05 10:32:12 +01:00
Mads Rasmussen 2f16aa25c3 Fixes: U4-7347 Document type editor template name and alias get set to null 2015-11-03 19:49:00 +01:00
Mads Rasmussen 127afbfbf1 show warning when editing data type 2015-11-03 10:48:56 +01:00
Mads Rasmussen b632beb067 set title attr on alias input 2015-11-03 10:13:02 +01:00
Sebastiaan Janssen 6f6b7d5772 This namespace doesn't exist 2015-11-03 10:00:11 +01:00
Niels Hartvig 110d54c4b8 Adds Konami feature on login screen 2015-11-02 14:53:32 +01:00
Jordan Lane 8e6bac534a Fix a bug where PublishStatusType would fallback to FailedContentInvalid (and break) if it was expired or trashed and add error message for FailedHasExpired
TODO: Add error message to other languages
2015-10-29 15:23:40 +00:00
Jordan Lane c5cf1fa6b2 Checks if content has expired or is awaiting release before publishing 2015-10-29 15:21:15 +00:00
Jordan Lane 1e4c9c2505 Set the publish status of new content version to saved if validation of publication fails e.g. a release date of the future or past unpublish date 2015-10-29 15:20:35 +00:00
Jordan Lane a6b56db2f5 Fixes an issue with the contentService.RePublishAll() where it wouldn't publish an old published version if the newest version of the content wasn't published i.e had a scheduled date set because this would create a new version with status not published 2015-10-29 15:16:44 +00:00
Mads Rasmussen 58f21fb028 make sub view icon red if it has validation errors 2015-10-28 10:44:34 +01:00
Mads Rasmussen ac0d47122c fix validation styling a bit 2015-10-28 10:44:34 +01:00
Mads Rasmussen 56e6eee852 fix issue with focus on locked field not being focused after child element has been added 2015-10-28 10:44:34 +01:00
Mads Rasmussen c3441d54bf fix locked field alignment 2015-10-28 10:44:34 +01:00
TimoPerplex 43baba1733 Revert "Latest"
This reverts commit 95a9e4b5ff.
2015-10-27 13:10:25 +01:00
TimoPerplex 95a9e4b5ff Latest 2015-10-27 13:09:21 +01:00
TimoPerplex 9b0aa49d4d Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' into dev-v7 2015-10-27 13:08:32 +01:00
Shannon 6269e7b3f2 Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into 7.4.0 2015-10-27 11:41:45 +01:00
Shannon Deminick 283de5a7d6 Merge pull request #831 from umbraco/temp-U4-7178-media-library
Temp u4 7178 media library
2015-10-27 11:41:10 +01:00
Shannon 8f7add203e Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js
2015-10-27 10:29:11 +01:00
Mads Rasmussen 3033b0a705 Fixes: U4-7303 Shift + select to select a range of items 2015-10-27 08:53:53 +01:00
Per Ploug 7be070c17b Merge remote-tracking branch 'refs/remotes/origin/7.4.0' into dev-7.4.0-ModelsBuilder 2015-10-25 20:15:12 +01:00
Per Ploug c2b4633506 poc of templates with models 2015-10-24 22:10:17 +02:00
Mads Rasmussen 6faf4c4dbf Merge pull request #814 from umbraco/dev-v7-contenttypeeditor-validation
U4-7119 New Content Type editor requires server side validation wired up
2015-10-23 09:34:29 +02:00
Per Ploug 2c0d79d786 Ensuring the doctype UI changes are pushed, git seems unsure... 2015-10-23 08:29:26 +02:00
Mads Rasmussen 8d81d9922c fix js errors when unsubscribing events 2015-10-22 20:27:29 +02:00
Mads Rasmussen 4007ece6b4 Add copy bulk action to content + redo move dialog 2015-10-22 19:52:56 +02:00
Per Ploug dd05fe7466 merge 2015-10-22 18:07:17 +02:00
Per Ploug b4286cffbe Fixes up folderbrowser inheritance 2015-10-22 18:05:42 +02:00
Shannon e2251ec41a Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2015-10-22 17:54:09 +02:00
Shannon Deminick 427ea3d87b Merge pull request #832 from umbraco/temp-U4-7223
Fixes: U4-7223 GetCropUrl outputs html entities in url when used in css
2015-10-22 17:51:46 +02:00
Shannon 602915a311 makes FolderBrowserPropertyEditor have the grid as the primary layout for the list view. 2015-10-22 17:47:22 +02:00
Per Ploug 7463836ed2 merge 2015-10-22 17:45:46 +02:00
Shannon f66c07ec81 updates base data creation to not install the folder browser and instead to use the default media list view for the media folder property. Updates the FolderBrowserPropertyEditor to use the default list view property editor with no pre-values. 2015-10-22 17:34:01 +02:00
Per Ploug 49991ca84a Merge branch 'temp-U4-7178-media-library' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7178-media-library 2015-10-22 17:29:55 +02:00
Shannon 9ed44a6314 fixes DataTypeController to only exclude System List views 2015-10-22 15:43:10 +02:00
Shannon fd26f98356 fixes template mapping issue when saving content types 2015-10-22 15:10:44 +02:00
Mads Rasmussen 9372b1df47 fix placeholder width on input auto resize in firefox 2015-10-22 14:02:18 +02:00
Claus 0cf44c1bd0 Fixes: U4-7223 GetCropUrl outputs html entities in url when used in css
Adding in HtmlHelper extensions for GetCropUrl.
2015-10-22 13:42:38 +02:00
Mads Rasmussen 83d16c3986 remove z-index on list view settings to allow overlays inside 2015-10-22 12:48:19 +02:00
Mads Rasmussen a6cb2a38ac remove margin 2015-10-22 12:47:19 +02:00
Shannon 41c5f6a8bf Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js
2015-10-22 12:12:03 +02:00
Mads Rasmussen cf09603c08 check for array in media grid 2015-10-22 11:52:29 +02:00
Mads Rasmussen 4975ab870b remove sortable in content grid until we find a solution for saving 2015-10-22 11:47:35 +02:00
Mads Rasmussen 2eb36710e2 remove sortable from media grid until we find a way to save sort order 2015-10-22 11:28:08 +02:00
Mads Rasmussen bf7e49f774 remove console log 2015-10-22 11:23:53 +02:00
Mads Rasmussen cbaccafbc3 remove old pagination markup 2015-10-22 11:23:05 +02:00
Mads Rasmussen cf13d89086 add directive for list view layouts so we do not get values from parent scope 2015-10-22 11:21:53 +02:00
Shannon Deminick 5f45f715a1 Merge pull request #829 from umbraco/temp-u4-6927
Adds browser refresh to uninstall
2015-10-22 11:14:32 +02:00
Shannon 842980a7df fixes issue with empty tree alias being passed in when attempting to sync tree 2015-10-22 11:14:06 +02:00
Mads Rasmussen 9449a778e9 move list view pagination to directive 2015-10-22 09:42:00 +02:00
Mads Rasmussen 153e2ecfae use "item" instead of "document" to cover both content, media and folder. 2015-10-21 19:47:39 +02:00
Mads Rasmussen 5aa844393f add selected folders and items to an selection array. Move list layout logic to list layout controller. 2015-10-21 19:44:35 +02:00
Shannon 042e6e1c52 fixes breaking change with renaming tree aliases. 2015-10-21 18:48:23 +02:00
Shannon 98fadf82a1 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0 2015-10-21 18:44:07 +02:00
Shannon Deminick 4881b4cd7d Merge pull request #827 from umbraco/temp-U4-6962
Fixes: U4-6962 Public access in multiple levels is broken in 7.3
2015-10-21 18:38:21 +02:00
Shannon 73fb761c4d Fixes issue with umb-editor-sub-views so that each view is actually rendered out and not replaced otherwise when you switch sections all of the wired up validation gets removed. This will also enable us to highlight the menu header when validation errors exist on that section. We also now show a single validation error message even when there is client side validation errors. 2015-10-21 17:52:58 +02:00
Per Ploug a7aa13fcb6 Adds browser refresh to uninstall
- InstalledPackage triggers a clientside refresh to installer.aspx - as
the installedpackage.aspx cannot be used for the last step since the
package is now gone
- installer.aspx displays the final uninstall message after browser
refreshing
- uses same clientside redirect as installs
2015-10-21 14:34:19 +02:00
Per Ploug c8f1340868 Rolls back update to jquery from 2.1.4 to 2.0.3 2015-10-21 14:22:44 +02:00
Per Ploug 08a46d62ed Merge branch 'temp-U4-7178-media-library' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7178-media-library 2015-10-21 12:57:54 +02:00
Per Ploug 3996170151 Makes the folderbrowser proxy the media listview
This handles upgrades which already use the folderbrowser to
automatically switch to the media listview
2015-10-21 12:57:35 +02:00
Per Ploug 9f090801fc Obsoletes the Folderbrowser and changes install to use List-view 2015-10-21 12:52:10 +02:00
Mads Rasmussen b4ab7ff963 fix breadcrumbs in media section 2015-10-21 12:33:31 +02:00
Per Ploug 1b55f04129 small docs comment fix 2015-10-21 11:52:51 +02:00
Per Ploug b3dcfd8d6f Removes listview dependency on routeParams 2015-10-21 11:52:35 +02:00
Per Ploug 0320485229 Adds the media listview to media dashboard 2015-10-21 11:52:15 +02:00
Per Ploug 735494ecd6 Small fix in the datatype docs comments 2015-10-21 11:51:57 +02:00
Claus f48166e6ed Fixes: U4-6962 Public access in multiple levels is broken in 7.3
Ensured the backoffice UI will look at protection for the specific node only (no inheritance) when specifying public access.
Added non-recursive method to Access class.
Fixed bug causing the tree (child nodes) not to update correctly after changing public access on nodes.
2015-10-21 11:29:05 +02:00
Per Ploug 94366d1aa2 Merge branch 'temp-U4-7178-media-library' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7178-media-library 2015-10-21 10:02:32 +02:00
Per Ploug 46f75a93bb updates to latest jquery 2015-10-21 09:58:07 +02:00
Per Ploug 19759000f4 Media and content move return wrong error format
Changing both move methods to return the same error signature as
publish/delete/etc
2015-10-21 09:57:57 +02:00
Per Ploug 0454c54d1c Fixed: Given -1 MediaService returns all descendant media
It returned the entire media tree given the ID -1, changing this so it
returns children below root instead
2015-10-21 09:49:45 +02:00
Mads Rasmussen 026150c5b6 decrease size on items in content grid 2015-10-20 19:22:42 +02:00
Mads Rasmussen 2d332355aa move layout config to options model 2015-10-20 19:18:35 +02:00
Mads Rasmussen 96194d45af Add no item text to list view content grid 2015-10-20 19:16:59 +02:00
Mads Rasmussen a3374fd08a add client side drag and drop to list view content grid 2015-10-20 19:15:33 +02:00
Shannon 65b080b03f fixes ysod with validation errors on doc type editor. 2015-10-20 15:37:11 +02:00
Shannon a67feb7881 cherry picks media type child listing 2015-10-20 14:57:28 +02:00
Per Ploug 2a74785755 Adds ModelsBuilder Nuget 2015-10-20 14:17:45 +02:00
Mads Rasmussen 20d676e667 Added move functionality to bulk actions - something is wrong in error handling 2015-10-20 13:33:45 +02:00
Per Ploug d04b7ae9c7 Revert "doctype editcontroller for modelsbuilder"
This reverts commit 8cf27c810d.
2015-10-20 10:44:44 +02:00
Mads Rasmussen 759d8fad5f center content grid 2015-10-20 10:07:55 +02:00
Mads Rasmussen 49349c719c add content grid/card directive + add it to grid list view layout 2015-10-19 18:58:18 +02:00
Mads Rasmussen 3e3ba0ebb7 Merge branch 'dev-v7' into temp-U4-7178-media-library
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2015-10-19 16:59:10 +02:00
Shannon d5bcfce4db Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into 7.4.0 2015-10-19 16:35:46 +02:00
Shannon Deminick a368b6188b Merge pull request #821 from umbraco/temp-U4-7175
Fixed: U4-7175 Discard changes overlay sometimes breaks the url
2015-10-19 16:34:44 +02:00
Per Ploug 8cf27c810d doctype editcontroller for modelsbuilder 2015-10-19 15:56:49 +02:00
Per Ploug 51c9d64dad Merge branch 'temp-U4-7178-media-library' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7178-media-library 2015-10-19 15:22:38 +02:00
Per Ploug 55b98cc446 Fixed: U4-7271 Folder does not list allowed media types 2015-10-19 15:22:21 +02:00
Mads Rasmussen 75970e9a83 only get sub folders in media section 2015-10-19 14:48:12 +02:00
Mads Rasmussen 386e8e70a0 media grid: set select and click callbacks instead of having logic in directive 2015-10-19 09:18:16 +02:00
Mads Rasmussen a6f4ccdc66 set max width on items in media grid 2015-10-19 09:15:37 +02:00
Per Ploug 13ae946f30 Fixed: U4-7264 Support for folder upload
Fixed issues noted in review
2015-10-19 08:58:52 +02:00
Per Ploug c455c1f930 Fixed: U4-7175 Discard changes overlay sometimes breaks the url 2015-10-19 08:44:21 +02:00
Mads Rasmussen a651b78c1d add bulk actions to editor sub header 2015-10-16 20:07:46 +02:00
Mads Rasmussen e3af2c3bae make it possible to disable umb-button 2015-10-16 20:05:01 +02:00
Mads Rasmussen 34813b9da5 fix sticky bar styles and set z-index lower 2015-10-16 18:21:50 +02:00
Mads Rasmussen a2e8f27c68 remove folder logic from media grid 2015-10-16 17:21:08 +02:00
Mads Rasmussen 7e58b28f2b media library - get and show child folders 2015-10-16 17:17:01 +02:00
Mads Rasmussen a0383aa78f add directive to list folders in a flexbox grid 2015-10-16 17:13:10 +02:00
Mads Rasmussen 0b7f6b3239 add support for icon on link style buttons 2015-10-16 17:10:21 +02:00
Mads Rasmussen 620d5f0ba4 Merge branch 'temp-U4-7178-media-library' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7178-media-library 2015-10-16 17:08:26 +02:00
Per Ploug 44226a22e9 Removes legacy files 2015-10-16 15:16:43 +02:00
Per Ploug 9955084cd6 Ensures routing only loads from all-lower case templates 2015-10-16 15:16:41 +02:00
Per Ploug 92aee24f0c Moves cache refreshing into a submodule
So it doesnt conflict with templateCache (also an issue with ng-tables)
2015-10-16 15:16:41 +02:00
Per Ploug d8fc73d36b Grunt and npm file for experiment view cache 2015-10-16 15:16:40 +02:00
Per Ploug Krogslund d1a7a94cd4 Adjust directive filenames to all lowercase. 2015-10-16 15:13:48 +02:00
Per Ploug Krogslund 1a9bac67a1 hex background moved forms directives 2015-10-16 15:13:47 +02:00
Per Ploug Krogslund 285b072f17 navresize moved to app directives 2015-10-16 15:13:47 +02:00
Per Ploug Krogslund b6e879cb5c ump-confirm moved to components/ 2015-10-16 15:13:46 +02:00
Per Ploug Krogslund b13b329f90 Panel, panel and control group moved to components 2015-10-16 15:13:46 +02:00
Per Ploug Krogslund 3c4b398ebd Tab views path typo 2015-10-16 15:13:45 +02:00
Per Ploug Krogslund 881713c360 All app specific directives in /components/applications
All directives used for the main application grid, such as section
navigation, avatar etc in one place
2015-10-16 15:13:44 +02:00
Per Ploug Krogslund 045bc91bbc umb-property.html Moved to components/editor/
Duplicate files, removing this one.
2015-10-16 15:13:44 +02:00
Per Ploug Krogslund eda337d955 ump-editor.html replaced by umb-property-editor
Still backwards compatible, but more obvious name
2015-10-16 15:13:43 +02:00
Per Ploug Krogslund 443c31dc4a Moves grid.rte directive to components/grid 2015-10-16 15:13:42 +02:00
Per Ploug Krogslund 99c084186b Directive cleanup
Moves all form elements related directives to components/forms
Moves tree directives to components/tree
Moves image+cropper directives to components/imaging
Moves validation directives to components/validation
Moves all obsolete directives and their views to _obsolete (still
works)
2015-10-16 15:13:42 +02:00
Per Ploug Krogslund daf5b2f68b Imaging directives moved into components 2015-10-16 15:13:40 +02:00
Per Ploug Krogslund 12ed9193a0 Remove never used umb-field directive 2015-10-16 15:13:40 +02:00
Per Ploug Krogslund b2afbc24d9 Remove umb-blur in favour of on-blur directive
Was only used in content-type editor work sofar
2015-10-16 15:13:39 +02:00
Per Ploug Krogslund 185e567ef4 Consistant tab directive paths 2015-10-16 15:13:38 +02:00
Per Ploug b6bbb8e79d Related to: U4-7264 Support for folder upload
Enable a larger file max size for upload as 4mb is quickly very
limiting.
2015-10-16 12:58:08 +02:00
Per Ploug f7c2f779c2 Fixed: U4-7264 Support for folder upload
part of the media library polish, when a folder is dragged to the view,
it will check if folders exist, and create if needed, this makes it
easier to replicate a folder structure when uploading.
2015-10-16 12:48:34 +02:00
Per Ploug 53fdc801f3 Return basic entity instead of display entity 2015-10-16 11:32:13 +02:00
Mads Rasmussen d10752bbf9 move sub header up to header to save space 2015-10-16 09:42:40 +02:00
Mads Rasmussen fbbaa15429 editor sub header: less top and bottom padding + better bar top position for better transition to fixed position 2015-10-15 21:14:13 +02:00
Shannon cc55af07f1 Merge remote-tracking branch 'origin/dev-v7' into 7.4.0
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2015-10-15 17:16:48 +02:00
Shannon 7268c6786d manual merge back in the temporary DeleteContainerById method 2015-10-15 15:42:46 +02:00
Shannon 8205048e4d Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor-validation
Conflicts:
	src/Umbraco.Web.UI.Client/src/common/resources/membertype.resource.js
	src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js
	src/Umbraco.Web/Editors/ContentTypeController.cs
2015-10-15 15:32:48 +02:00
Shannon e1629932dc Wires up the correct saving logic + validation for the member type editor, moves the GetSafeAlias method to the EntityController 2015-10-15 15:29:14 +02:00
Shannon 33c206d820 Wires up the correct saving logic for media types + validation, refactors the logic so it can be reused everywhere. 2015-10-15 14:48:50 +02:00
Mads Rasmussen 1e81a6d638 Merge branch 'temp-U4-7178-media-library' of https://github.com/umbraco/Umbraco-CMS into temp-U4-7178-media-library 2015-10-15 14:34:20 +02:00
Mads Rasmussen efb96b25fc Add tooltip directive, use tooltip to show media item details, styles changes to media items to fit in info icon 2015-10-15 14:33:36 +02:00
Per Ploug f5fa860b5c Get Media folders from node 2015-10-15 14:08:29 +02:00
Per Ploug 755853cc50 Sets up trees, menus and dialogs for content type moving
The actual service apis for moving is not implemented yet, but this is
the scaffold for using it.
2015-10-15 13:14:13 +02:00
Per Ploug 4d5ba9304f Adds modelbuilder ui intergration
As we load the doctype editor, we detect if the install has the models
builder dlls, if not found / error, we should the normal save button,
otherwise you get a button + generate models option.
web.configs + translated prepared as well, but nothing is active untill
the zbu dlls are dropped in bin
2015-10-15 13:14:06 +02:00
Per Ploug 205a6c2b4a Added folder delete to membertype delete dialog
Still needs serverside support
2015-10-15 13:13:56 +02:00
Per Ploug 03b1285e87 Missing controller file for mediatype delete dialog 2015-10-15 13:13:48 +02:00
Per Ploug 735831bd98 Added client-side parts to folder deletion for media types 2015-10-15 13:13:38 +02:00
Per Ploug aedd7d3268 Update copy on delete dialogs for folders / non-folders 2015-10-15 13:13:27 +02:00
Per Ploug 1ff1f54769 Update member services to include delete method 2015-10-15 13:13:20 +02:00
Mads Rasmussen 74bf23140b add no-margin-bottom modifier to form styling 2015-10-14 19:52:51 +02:00
Mads Rasmussen d78f426e94 add styling to sortable placeholder 2015-10-14 19:51:29 +02:00
Mads Rasmussen 6586f08a2f Add editor sub header to list view 2015-10-14 19:40:34 +02:00
Mads Rasmussen 550cff0fcb bind sortable logic to html 2015-10-14 19:39:04 +02:00
Mads Rasmussen 31e84ae9ae remove unused attr on umb-editor-sub-header directive 2015-10-14 19:31:08 +02:00
Shannon 815d34f8a6 exposes api on valFormManager which can be used instead of subscribing to events, changes valTab to use this api instead of events, ensures locked field has a ng-form wrapper so the validation messages are displayed. 2015-10-14 17:51:00 +02:00
Shannon 85e46cbbe5 Fixes: U4-7251 When changing a data type name to be the same as another we suffix the duplication with a number - this needs to be reflected in the UI 2015-10-14 16:54:58 +02:00
Shannon Deminick edfe91a8b2 Merge pull request #808 from umbraco/temp-U4-7241
Fixed: U4-7241 - Add more contrast to icons in umb-card-grid
2015-10-14 16:23:01 +02:00
Shannon Deminick 1e8f5ed29b Merge pull request #809 from umbraco/temp-U4-7242
Fixed: U4-7242 - call function on view model and not scope + clear item details on search
2015-10-14 16:21:55 +02:00
Shannon Deminick 6fdea4217a Merge pull request #807 from umbraco/temp-U4-7240
Fixed: U4-7240 Change add property color to blue
2015-10-14 16:14:15 +02:00
Mads Rasmussen 5f25844921 add client side sorting to media grid 2015-10-14 15:55:49 +02:00
Mads Rasmussen f9a236f639 add directives to add sub headers to editors, make left and right content in sub headers and make sub sections 2015-10-14 15:32:54 +02:00
Mads Rasmussen 071eb4bc23 add directive to make sticky bars 2015-10-14 15:28:48 +02:00
Claus 5af5599371 Ensuring the RevertToCleanInstall and RevertToEmptyInstall scripts only deletes view files. 2015-10-14 14:56:03 +02:00
Claus 3ea7107198 Adding back these for iPhone/Android touch friendly keyboards.
https://github.com/umbraco/Umbraco-CMS/pull/800#issuecomment-147405345
2015-10-14 14:17:52 +02:00
Shannon c0bd5f4d14 Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor-validation 2015-10-14 12:54:10 +02:00
Shannon Deminick 03a79aa2f3 Merge pull request #812 from umbraco/temp-U4-7174
Fixes: U4-7174 - Move folder to bottom of list, make doc w and w/out …
2015-10-14 12:52:59 +02:00
Shannon 21a748af29 Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor-validation
Conflicts:
	src/Umbraco.Web.UI.Client/src/common/directives/validation/valregex.directive.js
	src/Umbraco.Web.UI.Client/src/less/forms.less
2015-10-14 12:13:51 +02:00
Shannon Deminick cd0b81e1b2 Merge pull request #811 from umbraco/temp-U4-4652
Temp u4 4652
2015-10-14 12:09:52 +02:00
Shannon 327a00aaf4 Fixes issue with migrations running with a Decimal column:
The logic would produce incorrect syntax.
Fixed the default string column for sql server, made them all consistent.
Moved ctor logic for shared sql syntax providers to the base class.
Created formatted Decimal column definitions so that a custom precision/scale works.
Set the migration to use the default precision/scale values.
Removes the pattern validators because they don't do anything... due to the fix-number directive which has it's own issues but we won't solve those now.
2015-10-14 12:07:50 +02:00
TimGeyssens 7eeb0c4966 Fixes U4-7249 Insert Macro split button, when selecting a macro that has parameters the dialog should immediately show those 2015-10-14 11:29:34 +02:00
Mads Rasmussen b9470c1bc1 Fixes: U4-7174 - Move folder to bottom of list, make doc w and w/out texts easier to differentiate + auto focus doc type with template 2015-10-14 10:01:53 +02:00
Claus d92af31b0a Fixes: U4-7246 Integer datatype PropertyEditor is missing ValueType definition 2015-10-14 09:59:13 +02:00
AndyButland 7efa0bed46 Added pattern to integer and decimal property editor views to support numeric keyboards on mobile 2015-10-14 09:59:12 +02:00
AndyButland 09ec87c1c7 Added unit tests for decimal conversion in property editor value editors 2015-10-14 09:59:11 +02:00
AndyButland b48b18ec8a Added migration for 7.4.0 for additional column required for decimal property editor 2015-10-14 09:59:10 +02:00
AndyButland dda247fea5 Implemented decimal property editor 2015-10-14 09:59:09 +02:00
Claus 30d8e53541 Merge remote-tracking branch 'origin/dev-v7' into dev-v7-contenttypeeditor 2015-10-14 09:58:43 +02:00
Shannon 222d126508 adds a ctor to the BackOfficeUserManager to allow better inheritance so that all settings are initialized by default. 2015-10-13 17:43:40 +02:00
Mads Rasmussen 83deecc6d6 Fixed: U4-7242 - call function on view model and not scope + clear item details on search 2015-10-13 12:06:28 +02:00
Claus Jensen 5ddf544812 Merge pull request #806 from umbraco/temp-U4-7172
Fixed: U4-7172 When a locked field is unlock, focus and select value
2015-10-13 11:41:03 +02:00
Mads Rasmussen 0f5d04b2ed Fixed: U4-7241 - Add more contrast to icons in umb-card-grid 2015-10-13 11:10:13 +02:00
Mads Rasmussen 839526414f Fixed: U4-7240 Change add property color to blue 2015-10-13 10:45:44 +02:00
Mads Rasmussen 5709a41ee0 Fixed: U4-7172 When a locked field is unlock, focus and select value 2015-10-13 09:56:04 +02:00
Mads Rasmussen 9297b27536 fix paths on document types and member types views 2015-10-13 09:15:39 +02:00
Shannon 2922e962e0 Gets validation working with composition alias conflicts 2015-10-09 19:03:11 +02:00
Shannon 6017e9ddf9 Gets group and property level validation wired up to the fields, ensures things like duplicate field warnings are created with the correct indexed field names. Fixes a few old directives to correctly watch for attribute interpolation changes which is need for some of this validation to work since it's dynamically populating the field names. 2015-10-09 17:28:22 +02:00
Mads Rasmussen e4a8804058 U4-7181: Add uploader to media list view 2015-10-09 14:43:54 +02:00
Mads Rasmussen 84e15249c7 U4-7182: clear folders and media items before pushing new data + add watcher for updated data. 2015-10-09 14:40:19 +02:00
Mads Rasmussen fe5c5991d9 list view - clearfix header 2015-10-09 13:36:17 +02:00
Per Ploug 9d220b40af Fixed: U4-7207 Cant save partial view more then once 2015-10-09 11:09:27 +02:00
Per Ploug dee16b3b70 Fixed: U4-7176 Content copy should relate to original by default 2015-10-09 10:41:03 +02:00
Per Ploug fc06bbf116 Rolls back a grunt file path issue 2015-10-09 08:56:11 +02:00
Per Ploug 67bdcfedf1 Membertype view path incorrect 2015-10-09 08:53:37 +02:00
Per Ploug 9e94f326aa Removes static text from doctype delete 2015-10-09 08:48:21 +02:00
Per Ploug ffc52d0105 Fixes U4-7177 Tree dialogs disappear after opening 2015-10-09 08:47:14 +02:00
Mads Rasmussen a199525d0f U4-7182: add flex box version of media image grid to list view 2015-10-08 21:36:08 +02:00
Mads Rasmussen 3405a97ed4 U4-7215 Shared pagination for all layouts 2015-10-08 21:26:34 +02:00
Shannon c477f7a840 Gets more validation bits wired up. Server side validation is now working which is based on val-server-field since we can use this natively with the asp.net ModelState result instead of the val-server which is actually to be used with PropertyType (Property Editors). Next up is validation for the different tabs of the editor. 2015-10-08 17:13:38 +02:00
Mads Rasmussen 246244a774 U4-7205: set aliases to camelCase 2015-10-07 19:34:17 +02:00
Mads Rasmussen 8ae40751a9 U4-7204 The grid: The insert control overlay do not close on mouse out 2015-10-07 19:17:26 +02:00
Shannon 97c352030a Gets a little more validation working and creating using the new Save models 2015-10-07 17:16:42 +02:00
Mads Rasmussen 99a9af833e U4-7179: add layout selector to list view 2015-10-07 14:31:48 +02:00
Mads Rasmussen 86d05ccf95 add layouts prevalue editor to list view 2015-10-06 21:03:00 +02:00
Shannon 33906c7730 Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor-validation
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js
2015-10-06 17:21:49 +02:00
Shannon 1b21e04dc2 WIP for model mappers to new content editor save model, udpates to js to use that 2015-10-06 17:19:08 +02:00
Mads Rasmussen df76554aaf U4-5523: move change password to it's own part of user fly out to minimize visual clutter, use new 7.4 buttons + remove functionality from dashboard files. 2015-09-30 12:16:30 +02:00
Mads Rasmussen c604f3591f Merge branch 'arknu-changepassword-fix' into dev-v7-contenttypeeditor 2015-09-30 11:29:52 +02:00
Mads Rasmussen 9d1d53524a Merge branch 'changepassword-fix' of https://github.com/arknu/Umbraco-CMS into arknu-changepassword-fix 2015-09-30 11:28:52 +02:00
Mads Rasmussen 39d9e98f6a use new overlay directive in related links property editor 2015-09-29 11:39:22 +02:00
Mads Rasmussen b29dcd10d4 added contentpicker and memberpicker overlays 2015-09-29 11:37:44 +02:00
Mads Rasmussen c4aa523564 U4-7138 Need to review hard coded view paths, section and tree names 2015-09-29 11:36:23 +02:00
Mads Rasmussen 289ef0489d Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-09-29 11:14:21 +02:00
Per Ploug ebbde5f64b Rolling back members tree alias to "tree" due to UI issues 2015-09-29 11:05:38 +02:00
Mads Rasmussen 2f19103358 rename document types controller to match tree 2015-09-29 09:04:30 +02:00
Mads Rasmussen 1e3d918a74 rename media types controller to match tree 2015-09-29 09:03:35 +02:00
Mads Rasmussen aa610d5af9 rename member types controller to match tree 2015-09-29 09:01:59 +02:00
Mads Rasmussen 4fe946ac4a fix bug in multi node picker - use tree picker instead of content picker 2015-09-28 20:32:08 +02:00
Mads Rasmussen 52866dd8c8 rename member types folder to match tree 2015-09-28 20:14:32 +02:00
Mads Rasmussen f7b4b906cc rename members folder to match tree 2015-09-28 20:05:53 +02:00
Mads Rasmussen 6f5fef6d2c rename media types folder to match tree 2015-09-28 19:45:48 +02:00
Mads Rasmussen 3d61344033 rename document types folder to match tree 2015-09-28 19:33:24 +02:00
Mads Rasmussen 121c2f838c rename data type folder and update data type tree 2015-09-28 16:53:23 +02:00
Mads Rasmussen 57b987b655 property settings overlay: bump up size on editor settings icon 2015-09-28 15:39:52 +02:00
Mads Rasmussen 891b04a3a8 bump up icon size on action toolbar 2015-09-28 15:34:41 +02:00
Mads Rasmussen 12e3783364 content type editor: bump up property actions icon size 2015-09-28 15:27:56 +02:00
Mads Rasmussen 5abcd01ffb check for propertyForm to prevent js error in content type editor 2015-09-28 15:23:22 +02:00
Mads Rasmussen ac42f1c1d8 U4-6924 add accepted files to media picker and folder browser 2015-09-28 13:46:24 +02:00
Mads Rasmussen e1f3e82fbf U4-6924 Updated ng-file-upload bower dependency to latest version, added support for accepted file types and max file size in directive. Get file types from config. Still missing max file size. 2015-09-28 11:55:12 +02:00
Per Ploug b10afa9c0f Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-09-28 09:31:01 +02:00
Per Ploug 6c5e35ec2c Fixed: U4-7150 Inconsistent tree aliases
Changes all translation files and tree classes to have consistent
naming, updates trees.config to these new alias's
2015-09-28 08:54:00 +02:00
Per Ploug e4e3c46d15 Remove the culture from tree header localization 2015-09-25 16:29:41 +02:00
Shannon 7610b6f592 Merge branch 'dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor-validation 2015-09-25 14:27:10 +02:00
Shannon aeb317f06f Merge remote-tracking branch 'origin/dev-v7' into dev-v7-contenttypeeditor 2015-09-25 14:26:51 +02:00
Shannon 97c0192475 adds no-margin class modifier for control-group, adjust minor styles to the previous fields i updated and add required to the group name with control-group so it shows validation errors 2015-09-25 14:26:10 +02:00
Shannon b27200ec36 streamlines some validation styling: no more focuses border highlighting since that doesn't work consistently with all fields, ensures that the new fields have a border but it's set to transparent since we want to show a border for validation, removes the zero padding from new fields since when a validation border is added it doesn't look good and now padding is just using the base consistent padding for fields. Moves the valrequirecomponent.directive to the validation folder. 2015-09-25 14:06:07 +02:00
Shannon f41f565eb8 Fixes: U4-7136 Client side validation no longer works for header text 2015-09-24 16:17:14 +02:00
Shannon 5fff1e4ac5 Fixes umb-editor-header to toggle visibility of certain fields based on boolean toggles since we cannot rely on model values being undefined when there are validators present because validators change the model value to undefined. 2015-09-24 15:53:24 +02:00
Per Ploug 8d57e0cd1d Less hacky way to lookup current user culture 2015-09-24 15:52:44 +02:00
Per Ploug c13ae20885 U4-4761: adds overload to treeattribute 2015-09-24 15:49:17 +02:00
Per Ploug 8a3deb5270 Minor css tweak to tabview control 2015-09-24 15:30:28 +02:00
Per Ploug 6dc4e2d2ae U4-4761 Member translation
Makes all trees translateable, does not break the current titles set on
atttributes, but for trees that does not have a title set, the tree wil
try to look up a treeheader.
2015-09-24 15:30:08 +02:00
Per Ploug 60041a2893 U4-7058 New content type editor: saving new data types
Removes toggle from repository
2015-09-24 13:12:44 +02:00
Shannon 1410a2d482 Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor-validation 2015-09-24 12:14:14 +02:00
Shannon 94bc440437 adds note 2015-09-24 12:14:08 +02:00
Per Ploug 9f9946eb1f Default contenttype icons 2015-09-23 21:01:32 +02:00
Per Ploug 1d23d2b7c6 Fixed: New document types fails to save 2015-09-23 20:40:03 +02:00
Per Ploug 3b21936898 Ensure unique data type names 2015-09-23 16:17:44 +02:00
Shannon a7a262de8b Ensures validation messages are shown for the alias and that the aliases is validated with regex too 2015-09-23 16:04:23 +02:00
Shannon 6180784646 Fixes client side validation on editorsettings 2015-09-23 15:44:38 +02:00
Shannon 79eb8176ac bumps version and website port 2015-09-23 14:21:14 +02:00
Shannon ff9027c07d Merge branch 'dev-v7' into dev-v7-contenttypeeditor 2015-09-23 14:03:15 +02:00
Mads Rasmussen d80d42a7c6 Fixed: U4-4051 Remember latest folder in media picker 2015-09-23 13:51:18 +02:00
Mads Rasmussen 1d3b18b964 auto focus mandatory checkbox when editor picker overlay closes 2015-09-22 20:47:29 +02:00
Mads Rasmussen 781c3007e6 auto focus add property when dialog closes 2015-09-22 20:45:03 +02:00
Mads Rasmussen a095301dd1 rename icon picker controller 2015-09-22 16:13:02 +02:00
Mads Rasmussen 3a068b1f62 rename property settings controller 2015-09-22 16:12:15 +02:00
Mads Rasmussen b34d911088 rename editor picker controller 2015-09-22 16:11:41 +02:00
Mads Rasmussen 4a56d0a903 move editor settings to overlay folder + rename 2015-09-22 15:56:32 +02:00
Mads Rasmussen db464e9c2b move editor picker overlay to overlays + rename 2015-09-22 15:38:45 +02:00
Mads Rasmussen 60745d1b81 move property settings overlay to overlay folder + rename 2015-09-22 14:54:37 +02:00
Mads Rasmussen 5bfc4e1e8e move compositions overlay to overlay folder 2015-09-22 14:45:53 +02:00
Mads Rasmussen bcdcf441e1 Umb groups builder - move logic to overlays and open sub overlays from overlays 2015-09-22 14:39:19 +02:00
Mads Rasmussen c94ae3b9bd Grid edit config - use new overlay directive 2015-09-21 15:59:42 +02:00
Mads Rasmussen bd3b76250f property settings textareas - submit on enter 2015-09-21 15:57:41 +02:00
Mads Rasmussen 9f47c6cd95 Overlay: allow adding spaces in textareas + submitting on enter 2015-09-21 15:56:47 +02:00
Mads Rasmussen a82c25c967 Grid row delete - use new overlay directive 2015-09-21 14:29:08 +02:00
Mads Rasmussen 7d9aa29bcd ensure dialogs doesnt have side-by-side labels 2015-09-21 14:26:35 +02:00
Robert Foster e9d0aa87bd Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' 2015-09-21 20:32:43 +10:00
Mads Rasmussen 173f3762ac Grid row config - use new overlay directive 2015-09-21 12:31:32 +02:00
Mads Rasmussen 1ab724531d Grid layout config - use to new overlay directive 2015-09-21 10:54:31 +02:00
Mads Rasmussen 96b2e9a832 open preValue media picker in new overlay 2015-09-21 08:58:31 +02:00
Mads Rasmussen 80ce7bd1fb Open preValue treePicker in new overlay directive 2015-09-21 08:57:24 +02:00
Mads Rasmussen 49ea0053b7 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-09-20 15:49:14 +02:00
Mads Rasmussen d260c660b5 clean up unused attributes 2015-09-20 15:38:49 +02:00
Mads Rasmussen f220da9423 copy treePicker, memberPicker and contentPicker dialogs to new overlay directive 2015-09-18 14:26:54 +02:00
Mads Rasmussen c15bd3ea31 add support for ng-show on overlay directive 2015-09-18 13:59:49 +02:00
Stephan c3076d6b8d Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-09-18 13:43:16 +02:00
Stephan ae7a9a2fed Merge remote-tracking branch 'origin/dev-v7' into dev-v7-contenttypeeditor 2015-09-18 13:41:54 +02:00
Per Ploug Krogslund d9d2403d99 csproj file 2015-09-17 14:08:56 +02:00
Per Ploug Krogslund 10d8fdba75 Updates template tree controller for angular view 2015-09-17 14:08:56 +02:00
Mads Rasmussen 6a2b0a9e14 Copy media picker to new overlay directive 2015-09-17 09:57:01 +02:00
Mads Rasmussen 557b8675b1 textbox property editor: remove inline validation and only rely on server validation. The inline validation prevented the content type editor to save 2015-09-17 09:38:19 +02:00
Mads Rasmussen 74dc7bd3e9 fix overlay transclude 2015-09-17 09:36:37 +02:00
Mads Rasmussen aa2e5489f5 overlay content container - set overflow-x to hidden 2015-09-17 09:34:13 +02:00
Mads Rasmussen e896268309 add timeout to wait for html element when using it with ng-show/ng-if 2015-09-17 09:32:18 +02:00
Stephan 9c9ba477aa Merge dev-v7 into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Core/Constants-ObjectTypes.cs
	src/Umbraco.Web.UI.Client/gruntFile.js
	src/Umbraco.Web.UI.Client/src/loader.dev.js
	src/Umbraco.Web.UI.Client/src/views/content/recyclebin.html
	src/Umbraco.Web.UI.Client/src/views/datatype/edit.html
	src/Umbraco.Web.UI.Client/src/views/media/recyclebin.html
	src/Umbraco.Web/Umbraco.Web.csproj
2015-09-16 13:25:32 +02:00
Mads Rasmussen 801892400d move icon picker overlay to overlay folder. Set up default overlay for icon picker 2015-09-15 15:28:10 +02:00
Mads Rasmussen 23578b8550 move item picker to new overlay folder. Set default overlay for an itemPicker. 2015-09-15 15:18:40 +02:00
Mads Rasmussen 20f36357c3 overlay: click button or link if focused instead of submitting form 2015-09-15 14:57:25 +02:00
Mads Rasmussen 0b6b10c81e add enter submit to overlay 2015-09-15 14:45:57 +02:00
Mads Rasmussen 8ac435f6ee Make new overlay version of memberGroupPicker + use in memberGroupPicker property editor. Add support for "standard" overlays in overlay directive 2015-09-15 14:31:14 +02:00
Mads Rasmussen 8710c0e1ca umb-group-builder: Change text on button when reordering tabs and properties 2015-09-15 09:52:00 +02:00
Mads Rasmussen 2fb229bfb7 updates to overlay: add service to manage number of open overlays, add backdrop for overlay + better support for center overlay 2015-09-15 09:50:07 +02:00
Mads Rasmussen e5781c5e76 Notifications: move notifications directive to new component folder, move styles to new less file, move html element to support resizable pane 2015-09-15 09:39:57 +02:00
Mads Rasmussen 1b45286d52 add tabindex="-1" to header navigation 2015-09-11 19:02:30 +02:00
Per Ploug 81f206090d Default listview name on mediatypes 2015-09-11 10:42:48 +02:00
Mads Rasmussen 646f54ff4e change property settings name to textarea + add auto resize 2015-09-11 09:42:01 +02:00
Mads Rasmussen b69e75ee7b umb-auto-resize: remove unnecessary bindings and updates 2015-09-11 09:19:58 +02:00
Mads Rasmussen e5bbfc6c6a set word wrap on alias 2015-09-10 21:03:04 +02:00
Mads Rasmussen 3ad44ae8f8 remove white space between properties 2015-09-10 21:01:36 +02:00
Mads Rasmussen 25e7a243fb make property hover border dashed 2015-09-10 20:41:08 +02:00
Mads Rasmussen f2719692e5 remove fade on active to prevent UI "jumping" 2015-09-10 20:39:26 +02:00
Robert Foster 803ca677c1 Merge remote-tracking branch 'umbraco/dev-v7' into dev-v7 2015-09-10 02:07:34 +10:00
Mads Rasmussen 255cbdbef2 Member: change button to umb-button 2015-09-09 10:07:39 +02:00
Mads Rasmussen 4ee97edf27 Content: change buttons to umb-button and umb-button-group 2015-09-09 10:05:38 +02:00
Mads Rasmussen 0a6398ec60 Data type: change button to umb-button 2015-09-09 10:03:54 +02:00
Mads Rasmussen f2b3ae01a9 Document type: change button to umb-button 2015-09-09 09:58:15 +02:00
Mads Rasmussen dfa5b3344c Media: change button to umb-button 2015-09-09 09:57:19 +02:00
Mads Rasmussen 348263bc72 Media type: change button to umb-button 2015-09-09 09:53:19 +02:00
Mads Rasmussen ce5af1077f Member type: change button to umb-button 2015-09-09 09:42:42 +02:00
Mads Rasmussen f5d0b6756e update umb-button-group directive to work as button group in content section 2015-09-09 09:41:10 +02:00
Mads Rasmussen 84256d67d9 check for key combo 2015-09-09 09:39:15 +02:00
Mads Rasmussen 6b895f5449 add directive for umb-buttons 2015-09-09 09:37:50 +02:00
Mads Rasmussen 3d990228e0 property settings dialog: match validation pattern with dropdown when editing 2015-09-08 09:31:32 +02:00
Mads Rasmussen 0b71136a1e umb-locked-field: lock field on blur 2015-09-08 09:29:05 +02:00
Mads Rasmussen 51a4b24200 add drop shadow to confirm delete 2015-09-08 09:21:45 +02:00
Mads Rasmussen e8c7918afa Property settings dialog: clear validation pattern when nothing is selected 2015-09-03 14:08:29 +02:00
Mads Rasmussen 8825ea9300 Umb confirm delete: move on-outside-click directive to inner div to remove click events when confirm dialog is not open. 2015-09-03 13:32:21 +02:00
Mads Rasmussen 358bb048ea Keyboard shortcuts overview - remove stroke and padding to center align 2015-09-03 13:27:37 +02:00
Mads Rasmussen 3f6a581857 Tags: length check to prevent .js error in content type editor 2015-09-03 12:34:40 +02:00
Mads Rasmussen 1d7dca3d9d file-uploader: add undefined check to prevent .js error in content type editor 2015-09-03 12:30:04 +02:00
Mads Rasmussen a324d99e50 fix up animations on tabs and properties to prevent "element jumping" 2015-09-03 12:26:45 +02:00
Mads Rasmussen 3f97896eac add fade animation to views 2015-09-03 12:19:04 +02:00
Mads Rasmussen 077badd8d7 add load indicators to the rest of the sections 2015-09-03 12:18:17 +02:00
Mads Rasmussen 0701869769 umb-auto-reisze: ie doesn't support scrollWidth in inputs, so set a fallback for IE inputs so they work with auto resize + some refactoring 2015-09-03 11:56:14 +02:00
Mads Rasmussen 36569578a0 Add new editor to media recycle bin 2015-09-01 16:22:52 +02:00
Mads Rasmussen 35eafbd26c add new editor to edit data type 2015-09-01 16:21:36 +02:00
Mads Rasmussen 0ed6b0bdd3 add new editor to content recycle bin 2015-09-01 16:20:43 +02:00
Mads Rasmussen 65623ea5d0 add new editor to dashboards 2015-09-01 16:20:04 +02:00
Mads Rasmussen 7102cdd78c header: use top position when there is no icon 2015-09-01 16:16:28 +02:00
Mads Rasmussen f4d13ea73c just a little nudge to align 2015-09-01 16:15:25 +02:00
Mads Rasmussen 8c8f10ea20 set up new editor on member section - edit 2015-09-01 14:10:45 +02:00
Mads Rasmussen b932270854 move new editor to member section - list 2015-09-01 13:50:02 +02:00
Mads Rasmussen 7ed6eb35f9 move new editor to media section edit 2015-09-01 13:43:26 +02:00
Mads Rasmussen 9f5d5af713 move logic from umb-options-menu to umb-editor-menu 2015-09-01 13:36:43 +02:00
Mads Rasmussen 0ed0ca05d5 change content section to use new editor 2015-09-01 13:34:53 +02:00
Mads Rasmussen 08839f5694 use footer left/right side directives on document type + remove unused classes 2015-09-01 13:30:50 +02:00
Mads Rasmussen 8dff529fea align search and avatar with top of header name field 2015-09-01 13:26:33 +02:00
Mads Rasmussen 343c6fce98 add footer left and right directives to member type 2015-09-01 10:43:19 +02:00
Mads Rasmussen f576e8ce43 add footer left and right directives to media type 2015-09-01 10:41:54 +02:00
Mads Rasmussen 002536b1dc Rename class because it already exists 2015-09-01 10:38:48 +02:00
Mads Rasmussen 604814840e remove unused actions from header 2015-09-01 10:29:44 +02:00
Mads Rasmussen 72b3a430e3 Add possibility to lock header name 2015-09-01 10:28:37 +02:00
Mads Rasmussen b5484a2071 Allow setting tab directive as view. Do not add stroke + extra padding 2015-09-01 10:26:10 +02:00
Mads Rasmussen 76e95968e7 add extra padding to editor footer sides to align with content 2015-09-01 10:23:23 +02:00
Mads Rasmussen 4889b7d930 center align search form 2015-09-01 10:22:40 +02:00
Mads Rasmussen 74780bf4f5 center align avatar 2015-09-01 10:22:08 +02:00
Mads Rasmussen f9577cbe2a add directives to left and right side content in editor footer 2015-09-01 10:21:00 +02:00
Mads Rasmussen 9f7c577192 add directive for breadcrumbs 2015-09-01 10:18:23 +02:00
Mads Rasmussen 44f5eb46c9 add width indent to overlays + keep all overlays open in groups builder 2015-08-28 13:21:32 +02:00
Mads Rasmussen 8237282a6d add loader to icon picker 2015-08-28 13:15:28 +02:00
Mads Rasmussen 17830bce38 add loader to member type 2015-08-28 13:14:11 +02:00
Mads Rasmussen b38d7340f4 add loader to media type 2015-08-28 13:13:18 +02:00
Mads Rasmussen f042db66f4 add loader to document type 2015-08-28 13:12:37 +02:00
Mads Rasmussen 6f51660406 add new loader directive 2015-08-28 13:09:35 +02:00
Mads Rasmussen 58c0127b6e refactor umb editor toolbar directive to follow angular style guide 2015-08-28 13:05:01 +02:00
Mads Rasmussen 8219429cc1 refactor umb editor view directive to follow angular style guide 2015-08-28 13:04:18 +02:00
Mads Rasmussen 4cce3c6f1b refactor umb editor sub views directive to follow angular style guide 2015-08-28 13:02:53 +02:00
Mads Rasmussen ef0478359a refactor umb editor header directive to follow angular style guide 2015-08-28 13:01:31 +02:00
Mads Rasmussen 3e4c5114a8 refactor umb editor navigation directive to follow angular style guide 2015-08-28 13:00:29 +02:00
Mads Rasmussen 906524529d refactor umb editor menu directive to follow angular style guide 2015-08-28 12:59:55 +02:00
Mads Rasmussen 9ad8883712 refactor umb editor footer directive to follow angular style guide 2015-08-28 12:58:50 +02:00
Mads Rasmussen 97f7b52881 delete unused editor actions directive 2015-08-28 12:57:37 +02:00
Mads Rasmussen 1b7f204bb3 refactor umb editor container directive to follow angular style guide 2015-08-28 12:57:00 +02:00
Mads Rasmussen 3b2b004e59 refactor umbbuttongroup directive to follow angular style guide 2015-08-28 12:56:03 +02:00
Mads Rasmussen 51a4b53af2 inject formHelper to directive to fix js error after refactor 2015-08-28 12:46:36 +02:00
Mads Rasmussen 36fe9978aa delete unused sub views directive 2015-08-27 15:23:53 +02:00
Mads Rasmussen 713d33a6c5 refactor overlay directive to follow angular style guide 2015-08-27 15:02:13 +02:00
Mads Rasmussen 77247d09bc fix js error in umbblockedfield 2015-08-27 14:57:42 +02:00
Mads Rasmussen 7ab11966b1 fix js error in umbblockedfield 2015-08-27 14:42:46 +02:00
Mads Rasmussen e330c63034 header: add wrapper to limit input width. Rename some styles 2015-08-27 14:25:01 +02:00
Mads Rasmussen 42ae182c2b refactor umblockedfield directive to follow angular style guide 2015-08-27 13:27:06 +02:00
Mads Rasmussen 69c479c576 Rename directive function 2015-08-27 12:30:10 +02:00
Mads Rasmussen 87236cbfbd Rename directive function 2015-08-27 12:28:40 +02:00
Mads Rasmussen c74f67606d fix tab indent 2015-08-27 12:23:56 +02:00
Mads Rasmussen 9104b99b30 Refactor property controller to follow angular style guide 2015-08-27 11:50:05 +02:00
Mads Rasmussen 2fc6ab611a add IIFE to property settings dialog controller 2015-08-27 11:23:02 +02:00
Mads Rasmussen ee1055339c refactor property settings dialog to use controller as syntax 2015-08-27 11:12:12 +02:00
Mads Rasmussen 0bedc11b36 clean white space in property settings dialog 2015-08-27 10:42:30 +02:00
Mads Rasmussen 6e5dda5d4f delete unused data type controller + clean white space 2015-08-27 10:41:35 +02:00
Mads Rasmussen 220acc6200 delete unused composition controller + clean white space 2015-08-27 10:40:05 +02:00
Mads Rasmussen 13dc10057f Fixes: U4-6979 Property type picker icons does not align 2015-08-27 10:11:10 +02:00
Mads Rasmussen aa3089ef5f add content type scope value to list view directive - is used to set the right list view name 2015-08-27 10:00:53 +02:00
Mads Rasmussen d1e399e4ed add content type scope value to group builder - is used to getting the right content type when using composition 2015-08-27 09:56:50 +02:00
Mads Rasmussen a7133ca41e load in media type controller for permissions view 2015-08-26 14:17:06 +02:00
Mads Rasmussen dfde340a26 load in media type view for media types - not document type views 2015-08-26 14:16:13 +02:00
Mads Rasmussen 3c817ca3e3 add getAll method to media type resources 2015-08-26 14:15:11 +02:00
Per Ploug 23a5ac439b Removes the old type trees and sets the right order on the new 2015-08-26 12:18:42 +02:00
Per Ploug 94b09a4568 Fixes issues with the merged contenttype mapper
Mediatype, membertype and contenttype all use the same core mapper, with
small variations between each type - it is however important in what
order the mappers are added.
2015-08-26 12:07:43 +02:00
Mads Rasmussen ca88d9cbc2 Property settings: When selecting custom validation pattern - focus on input 2015-08-25 12:58:26 +02:00
Mads Rasmussen 8579cdcf45 umb-locked-field: make lock + color darker when field is unlocked 2015-08-25 12:57:16 +02:00
Mads Rasmussen fea038ccd4 property settings: property validation null check + remove textarea when no validation type is chosen. 2015-08-25 10:56:05 +02:00
Mads Rasmussen 0ea15d630c umb-locked-field: auto focus field when unlocked 2015-08-25 10:54:03 +02:00
Mads Rasmussen 126c6f8be6 always focus name in data type settings dialog 2015-08-25 10:23:01 +02:00
Mads Rasmussen 7524abc68e always focus header name field 2015-08-25 10:19:59 +02:00
Mads Rasmussen b3653e840f Switch back to ng-if on elements in header, and accept $parent, to prevent unwanted watchers to make sure focus directive works as it should. This should be possible to change from angular v 1.3. 2015-08-25 10:15:38 +02:00
Mads Rasmussen d1964cee45 always focus name field on property settings dialog 2015-08-25 10:11:01 +02:00
Mads Rasmussen b6e87ae0d7 umb-auto-focus: add attribute to allow focus on filled inputs 2015-08-25 10:09:52 +02:00
Mads Rasmussen 374c718d49 Validation pattern match - check for empty and undefined 2015-08-24 15:58:04 +02:00
Mads Rasmussen ce22988850 start to move content type editor to media types 2015-08-24 15:32:03 +02:00
Mads Rasmussen 9748153570 Remove unused style 2015-08-24 14:47:05 +02:00
Mads Rasmussen 8945cd28ea fix safari margin issue on icon 2015-08-24 14:19:35 +02:00
Mads Rasmussen f93fc55506 fix visual bug in safari where alias text is invisible 2015-08-24 13:37:19 +02:00
Mads Rasmussen 518bdd3da3 remove unused animations 2015-08-24 13:34:37 +02:00
Mads Rasmussen 3eed1d6df8 add postcss autoprefixer to watch task 2015-08-24 13:29:07 +02:00
Mads Rasmussen c0b06a4cec Added grunt-postcss to auto-prefix the css files + minify all css files. 2015-08-24 12:22:51 +02:00
Mads Rasmussen 8d70265f02 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-08-20 09:22:13 +02:00
Per Ploug Krogslund 77a8d2e99b Method rename 2015-08-19 22:45:39 +02:00
Per Ploug Krogslund f2b78e7bfa csproj file update 2015-08-19 22:38:15 +02:00
Per Ploug Krogslund 0f4596c897 Cleanup the mappers and the display classes 2015-08-19 22:38:08 +02:00
Per Ploug Krogslund a7065d083e ContentType + MediaType trees 2015-08-19 22:37:41 +02:00
Mads Rasmussen f176a8f52d Remove navigation item outline on click in some browsers 2015-08-19 16:08:55 +02:00
Mads Rasmussen 80b52614fe clean up groups-builder directive 2015-08-19 16:08:14 +02:00
Mads Rasmussen e8c3c0b1ed change to eventbind array when unbinding 2015-08-19 16:07:45 +02:00
Mads Rasmussen 782dd6aad7 Add detail overlay to editor picker. This way users can see the full title of editors and the picker is ready to have descriptions of each editor. 2015-08-19 13:49:12 +02:00
Mads Rasmussen 72c3dd4ef9 Add description area for help texts and descriptions in the overlay 2015-08-19 13:29:03 +02:00
Mads Rasmussen 45432431c9 Hide header navigation if there is only 1 item 2015-08-19 13:26:06 +02:00
Mads Rasmussen 73db2a2727 more simple names for toggling compositions and sorting on groups-builder directive 2015-08-19 13:23:41 +02:00
Per Ploug Krogslund 5778a45c95 default content type icon 2015-08-18 22:31:54 +02:00
Per Ploug Krogslund f4e1349a00 Filter out list views from the property type list 2015-08-18 22:31:54 +02:00
Mads Rasmussen af82ac0c47 update member types editor 2015-08-18 15:21:52 +02:00
Mads Rasmussen 6b52edaf36 Validate form before submit - still need to show messages 2015-08-18 15:19:18 +02:00
Mads Rasmussen fd1ccdea65 delete unnecessary list view controller 2015-08-18 15:11:04 +02:00
Mads Rasmussen b0dbc05e2e delete unnecessary design controller 2015-08-18 15:10:30 +02:00
Mads Rasmussen 16b3a5ffd7 We need to use ng-if on alias and accept $parent in model. As far as I can read from Angular 1.3 ng-if will not make isolated scope, and we can remove $parent. 2015-08-18 12:22:52 +02:00
Mads Rasmussen 5213f9bfba Only change back to init state if editor is empty. Label wasn't the best solution because it is possible to change from outside the dialog 2015-08-18 12:05:30 +02:00
Mads Rasmussen a6a65746a1 use ng-show instead of ng-if. ng-if breaks val-form-manager 2015-08-18 12:03:32 +02:00
Mads Rasmussen 6f99d32085 Do not check for undefined on alias 2015-08-18 12:01:27 +02:00
Mads Rasmussen 1d97292bef Remove hard coded icon- class prefix to allow usage of any icon 2015-08-18 10:08:47 +02:00
Mads Rasmussen a09effd9e3 Remove hard coded icon- class prefix to allow usage of any icon 2015-08-18 09:28:09 +02:00
Mads Rasmussen bf347c927e Custom list view name based on alias instead of name - still need to fix server 2015-08-17 20:19:04 +02:00
Mads Rasmussen e89d053914 unbind list view watcher 2015-08-17 20:15:51 +02:00
Mads Rasmussen 22632e5230 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-08-14 11:30:40 +02:00
Mads Rasmussen d61ab5ff1a Reorder flow when adding a property to a group so you enter settings after choosing one + rearrange editor picker dialog with tabs. 2015-08-14 11:22:01 +02:00
Mads Rasmussen 4fa08f28f9 add extra class to old header tabs to compensate for new styles 2015-08-14 10:35:27 +02:00
Mads Rasmussen 1891bea3e5 Add support for tabs to umb-editor-header 2015-08-14 10:34:15 +02:00
Mads Rasmussen ea766af41f Make directive for tabs 2015-08-14 10:31:53 +02:00
Shannon 930b61a7ff Merge branch 'dev-v7' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web.UI.Client/src/less/belle.less
2015-08-13 11:09:04 +02:00
Per Ploug Krogslund e1fd1ab5e5 include property type editor 2015-08-11 13:22:33 +02:00
Per Ploug Krogslund 0c125736a1 client side change for getting grouped editors 2015-08-11 11:52:30 +02:00
Per Ploug Krogslund fc565fbae2 Simplified the merging of property editors VS types 2015-08-11 11:52:30 +02:00
Per Ploug Krogslund 1ff7b34b86 revalue flag on basic datatype 2015-08-11 11:52:29 +02:00
Mads Rasmussen d7f9cb0278 show content type, when data is ready. 2015-08-11 11:04:41 +02:00
Mads Rasmussen 69a9461c3e Clean up header + used directives - remove $parent, set more focus on name field, place alias inside name field to show relation. 2015-08-11 11:03:55 +02:00
Mads Rasmussen ce127ad215 Remove unnecessary headline in data type settings dialog 2015-08-11 11:01:07 +02:00
Mads Rasmussen c32165a838 remove validation from locked field directive - need to place it somewhere else 2015-08-11 10:57:53 +02:00
Mads Rasmussen a9b7d43502 Umb auto resize: Only resize length of text inputs and height of textareas. Set inputs with no data the width of the placeholder. 2015-08-11 10:53:17 +02:00
Mads Rasmussen 91b405795e Add more descriptive labels to grid selector 2015-08-11 10:52:08 +02:00
Mads Rasmussen 8f248479d3 Only allow adding new tabs when there are properties in the previous 2015-08-11 10:50:30 +02:00
Mads Rasmussen 597687c2ae show text when reordering with no tabs added 2015-08-11 10:46:35 +02:00
Mads Rasmussen 69ddf5f1ba Close confirm delete on out side click 2015-08-11 10:43:55 +02:00
Asbjørn Riis-Knudsen 0aacf6f8f4 Fix styling issues from merging 2015-08-09 22:37:36 +02:00
arknu 6de9989285 delete Change password tab from Dashboard.config 2015-08-09 21:53:34 +02:00
arknu ac4b151f11 styling fixes for user flyout password form 2015-08-09 21:52:56 +02:00
arknu 88b1d11575 initial move of change password feature to user flyout, still needs styling 2015-08-09 21:49:53 +02:00
arknu d64040f503 U4-5523: Move Change password to user flyout 2015-08-09 21:47:27 +02:00
Shannon 9313b8b74a Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-08-05 17:27:53 +02:00
Shannon 925757afc5 Merge branch 'dev-v7' into dev-v7-contenttypeeditor 2015-08-05 17:27:40 +02:00
Mads Rasmussen 71b3982ad8 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-08-05 15:58:45 +02:00
Mads Rasmussen 68955b04c8 Preselet matching validation type in property settings 2015-08-05 15:56:58 +02:00
Mads Rasmussen 1b4b9469f3 rename save to overwrite because it confused testers that it did not create a new data type 2015-08-05 15:50:27 +02:00
Mads Rasmussen 62403313f4 clean up add init property so it only happens from function 2015-08-05 15:49:16 +02:00
Shannon 270491a04d reverts media controller ... now need to figure out where to put showing notifications on drag/drop file uploads. 2015-08-05 13:45:20 +02:00
Shannon 2f1877c2cd Merge branch 'dev-v7' into dev-v7-contenttypeeditor 2015-08-05 13:39:30 +02:00
Mads Rasmussen 0f37809e17 allow more than 1 digit in property number validation 2015-08-05 12:54:02 +02:00
Mads Rasmussen e269331724 fix model binding to use label instead of name 2015-08-05 10:36:59 +02:00
Mads Rasmussen 675d583f27 remove unused templates dialog. It uses generic itemPicker dialog instead 2015-08-05 10:29:15 +02:00
Mads Rasmussen 04767bff7b remove unused content types dialog. It uses generic itemPicker dialog instead 2015-08-05 10:28:02 +02:00
Mads Rasmussen a4e0d2c60c Move update tabs sort order logic to it's own function 2015-08-05 10:21:35 +02:00
Mads Rasmussen 5712fbfead Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-08-04 18:40:29 +02:00
Shannon 85534bc3ce Merge branch 'dev-v7' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web.UI.Client/bower.json
	src/Umbraco.Web.UI.Client/gruntFile.js
	src/Umbraco.Web.UI.Client/src/common/directives/editors/umbAutoResize.directive.js
	src/Umbraco.Web.UI.Client/src/common/directives/imaging/umbimagefolder.directive.js
	src/Umbraco.Web.UI.Client/src/common/directives/util/delayedMouseLeave.directive.js
	src/Umbraco.Web.UI.Client/src/less/application/grid.less
	src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js
	src/Umbraco.Web/Umbraco.Web.csproj
2015-08-04 17:10:58 +02:00
Mads Rasmussen 571dc3dc6c strict filtering on alias's for templates 2015-08-04 12:46:44 +02:00
Mads Rasmussen aef11f22a5 Template section. Move watch logic from controller to directive. Setup logic for doc types with and without template 2015-08-04 12:45:06 +02:00
Mads Rasmussen 022de26729 Add create doc type with and without template to create dialog 2015-08-04 11:50:37 +02:00
Mads Rasmussen c1db51c62e child selector directive - unbind watchers on destroy 2015-08-03 10:08:21 +02:00
Mads Rasmussen 8e78e91543 Validate alias + editor in property settings dialog. Move locked field styles to it's own file. 2015-08-03 10:07:23 +02:00
Mads Rasmussen cd7597b586 Moved group builder dialogs from 1 model into their own models to be able to revert changes. Apply dialog changes on submit, revert on cancel. Refactored js based on on this change. Do not close dialogs underneath when clicking on stacked dialogs. 2015-07-31 09:35:26 +02:00
Mads Rasmussen ae18962363 Add submit button to composition dialog 2015-07-30 11:29:39 +02:00
Mads Rasmussen 297893fb39 place form inside overlay div 2015-07-30 10:49:57 +02:00
Mads Rasmussen 564a979bdd WIP: add validation to overlay, validate property name. 2015-07-30 09:58:50 +02:00
Mads Rasmussen 3afbddbd42 Add placeholder texts to alias's. Only generate alias's on the server to remove mismatches. 2015-07-30 09:55:51 +02:00
Mads Rasmussen 134b8bc3f7 Fixed U4-6876: Added sort order to properties 2015-07-30 09:48:59 +02:00
Mads Rasmussen ee95009358 Fixed: U4-6876 add sort order to tabs 2015-07-28 20:22:49 +02:00
Mads Rasmussen 475ba85bf8 Hot key directive: if shortcut is enter - do not click if a button or links has focus, but click focused element instead 2015-07-28 19:53:17 +02:00
Mads Rasmussen e42c2cdf7f change overlay submit keyboard shortcut to enter 2015-07-28 19:51:45 +02:00
Mads Rasmussen 18fb600931 add esc as keyboard shortcut for closing keyboard shortcut overlay 2015-07-27 13:23:51 +02:00
Mads Rasmussen 33b20e95d3 Change multinode tree picker remove icon to link - to prevent overlay from closing when clicking 2015-07-27 10:31:27 +02:00
Mads Rasmussen 0f41749733 Change image cropper remove icon to link - to prevent overlay from closing when clicking 2015-07-27 09:52:28 +02:00
Mads Rasmussen 3c96875f5a Change media picker remove icon to link - to prevent new overlay from closing when clicking 2015-07-27 09:43:24 +02:00
TimoPerplex 68ff77f5b6 This commit removes the hardcoded .jpg thumbnails
This commit removes the hardcoded .jpg thumbnails and uses the image
original extension to create the thumbnail.
Because we now use the original extension the image is no longer masked
as another (extension is .jpg but the file is actually a .png)

This fixes issues with Internet Explorer used in combination with the
no-sniff header.
Ref topic:
https://our.umbraco.org/forum/umbraco-7/using-umbraco-7/66788-adding-nosniff-header-breaks-png-images-in-internet-explorer
2015-07-24 16:27:26 +02:00
TimoPerplex 47e7469d65 Merge remote-tracking branch 'upstream/dev-v7' into dev-v7 2015-07-24 16:18:58 +02:00
Mads Rasmussen 05ba88020f add parent node to available if list is empty 2015-07-16 15:58:27 +02:00
Mads Rasmussen c03d369f7d roll back to ng-if on name in header for now, the auto-focus directive does not work with ng-show. 2015-07-16 15:57:55 +02:00
Mads Rasmussen b2bb416c53 make data type name and view into links 2015-07-16 12:45:28 +02:00
Mads Rasmussen da8bfac1ea add auto focus to icon picker filter 2015-07-16 12:27:49 +02:00
Mads Rasmussen c2574d7bfe Restyling of composition checkbox list, added composition descriptions. 2015-07-16 12:24:21 +02:00
Mads Rasmussen 6a569ab0dc change ng-if to ng-show in header to prevent isolated scopes. 2015-07-16 12:14:16 +02:00
Per Ploug Krogslund 495493f2c5 Updates existing property types in mapper correctly 2015-07-16 11:12:40 +02:00
Per Ploug Krogslund 1f0e96160b Enable a contenttype to be allowed under itself 2015-07-16 10:51:25 +02:00
Mads Rasmussen 01a571371c Add dashed border when content type name is missing + fixed input height. 2015-07-15 19:11:51 +02:00
Mads Rasmussen 538155b6a1 show child node and template shortcut in overview 2015-07-15 15:45:59 +02:00
Mads Rasmussen 09de56664a add keyboard shortcut to umb grid selector directive 2015-07-15 15:44:10 +02:00
Mads Rasmussen c88da53a09 add keyboard shortcut to child selector directive 2015-07-15 15:42:53 +02:00
Mads Rasmussen 800d1abda0 overlay directive: if position is set to target but the mouse x and y is undefined use position center instead (used when a keyboard shortcut triggers the overlay) 2015-07-15 15:41:43 +02:00
Mads Rasmussen 03e10e1882 fix header position on center overlays 2015-07-15 15:29:15 +02:00
Mads Rasmussen 067e4a468c add keyboard shortcut overview to sections 2015-07-15 13:27:28 +02:00
Mads Rasmussen 9742ee74bf Add possibility to add key range in shortcut overview directive 2015-07-15 13:25:59 +02:00
Mads Rasmussen d4b13419c1 change dialog submit keyboard shortcut to alt+shift+s to fix problem with hitting enter on focused elements. 2015-07-15 12:37:25 +02:00
Mads Rasmussen de79be6ec1 make tab and property placeholders in to links to make them better "tabable". 2015-07-15 12:36:09 +02:00
Mads Rasmussen 7fa23140f1 Editor navigation: make buttons into links and add numbers as hotkeys 2015-07-15 12:27:33 +02:00
Mads Rasmussen c3a30cccfb hot key directive: fix issue when setting numbers as hotkeys + if a hotkey only consist of one key, disable keyboard shortcut in input's. 2015-07-15 12:25:02 +02:00
Mads Rasmussen d7aed9069d fix issue when removing multiple tabs from a composition 2015-07-15 10:46:56 +02:00
Mads Rasmussen 5ed9d4766f fix min height on tabs when sorting and adding new tabs 2015-07-14 11:52:31 +02:00
Mads Rasmussen 2655a26e9b Add keyboard shortcut for allow as root 2015-07-14 11:02:56 +02:00
Mads Rasmussen 56d1a09e8f Fix issues with child nodes: convert from array of primitives to array of objects and back again. Sync name and icon when changing on content type. 2015-07-14 10:53:12 +02:00
Mads Rasmussen bb1f9c0a42 Fixed: U4-6829 Client side set flag inherited = false when adding a property to a tab. 2015-07-14 10:25:19 +02:00
Mads Rasmussen c23afee261 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-07-13 19:38:30 +02:00
Mads Rasmussen 71c14b6944 Added shortcut to add editor 2015-07-13 16:13:30 +02:00
Mads Rasmussen 263fd4b162 Added shortcut to edit data type 2015-07-13 16:12:22 +02:00
Mads Rasmussen fa5ebd13de added shortcut to toggle list view 2015-07-13 16:11:21 +02:00
Mads Rasmussen 95bbcc35a4 added shortcut to add property 2015-07-13 16:10:38 +02:00
Mads Rasmussen a9cb694c2d added shortcut to add tab 2015-07-13 16:10:08 +02:00
Mads Rasmussen fc8751f897 WIP: added directive to show a keyboard shortcuts overview 2015-07-13 16:06:51 +02:00
Mads Rasmussen 7d85074387 accept hotkey on div elements 2015-07-13 15:57:45 +02:00
Shannon 4c1a65283a Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs
2015-07-13 15:42:25 +02:00
Shannon ff71d5b88f Fixes issue with custom property editors/data types when no group is assigned - was getting null ref exceptions. 2015-07-13 15:40:57 +02:00
Shannon 8521dfb0d7 Fixes issue that you could not remove a property group, fixes issue that the inherited flag during mapping wasn't set on a standalone parent property group, updated/created tests to support. 2015-07-13 15:29:00 +02:00
Mads Rasmussen 111be2dd8d add filter to item picker overlay 2015-07-13 14:55:20 +02:00
Mads Rasmussen 5c538426e5 clean up hotkey directive keyboardService on $destroy 2015-07-13 14:50:26 +02:00
Shannon bfe4f79b7c Fixes security on member, content and media type controllers 2015-07-13 14:21:33 +02:00
Shannon 913505c547 Fixes a backoffice IsAuthenticated check to ensure it's the correct identity type 2015-07-13 14:21:13 +02:00
Shannon 1e8bee9826 Fixes mapping tests, simplifies property group mappings, adds another test to test composition mappings. 2015-07-13 13:42:40 +02:00
Shannon ae32f49243 Updates permissions on DataTypeController 2015-07-13 13:41:34 +02:00
Shannon bb8864f51b ensures that when setting the PropertyType's property on a PropertyGroup that the PropertyGroupId is set 2015-07-13 13:41:15 +02:00
Per Ploug Krogslund 446d158ff7 Fixes issues related to default templates
Ensures default template is created on new, properly updates Ids on
allowed templates and makes default template correct
2015-07-13 12:11:28 +02:00
Shannon 2e088fa036 Merge branch 'dev-v7' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs
	src/Umbraco.Web/Umbraco.Web.csproj
2015-07-13 09:49:34 +02:00
Mads Rasmussen 6b18e19ea3 Template section: only add name watcher on new types 2015-07-10 12:28:35 +02:00
Mads Rasmussen 993a517ec5 umb button group: added hot key to submit 2015-07-10 12:15:25 +02:00
Mads Rasmussen 1d0f24fb2d Umb-overlay: add hotkeys to submit and close overlay 2015-07-10 12:12:32 +02:00
Mads Rasmussen 70e5731ee4 Edit data type: when data type name is changed - switch the default save button to save as new 2015-07-10 11:59:53 +02:00
Mads Rasmussen 09941be089 umb button group: set default button based on property value to make it easier to switch default button from outside the directive. 2015-07-10 11:57:11 +02:00
Mads Rasmussen 4ae0dbbdbf comment out user configured and custom property editors in editor picker 2015-07-10 10:00:24 +02:00
Mads Rasmussen 2eea8da101 insert template placeholder as default template on new content types 2015-07-10 09:42:18 +02:00
Per Ploug Krogslund 1ea7d062f2 Property types can now delete properly on changed types 2015-07-07 21:13:35 +02:00
Per Ploug Krogslund 446b434408 passes the scope correctly to the resetform
+ fixes a couple of eslint issues
+ adds notification
2015-07-07 21:13:12 +02:00
Per Ploug Krogslund fc1c3697d5 Adds delete method to delete dialog 2015-07-07 21:12:26 +02:00
Per Ploug Krogslund 89088b1e92 Changes safeAlias response to object 2015-07-07 21:12:12 +02:00
Mads Rasmussen 9e875e404c set header name and alias to $parent to bind to scope. Set auto focus on name 2015-07-07 19:39:44 +02:00
Per Ploug Krogslund 798cbb8190 Create a defaultTemplate if it doesn't exist 2015-07-07 18:53:58 +02:00
Mads Rasmussen 05a411d54a add "fake" template as default for new content types 2015-07-07 14:24:30 +02:00
Mads Rasmussen 8e8c66fcfa fix issue with enabling list view on new content types 2015-07-07 12:42:14 +02:00
Per Ploug Krogslund 76d9efb398 Default listview and custom listview lookup 2015-07-07 11:29:53 +02:00
Mads Rasmussen 15dcf43dd3 remove hyphens in list view directive name 2015-07-07 10:05:33 +02:00
Mads Rasmussen 2846c0c6b1 add confirm delete directive + add it to removing properties and tabs 2015-07-07 09:46:26 +02:00
Mads Rasmussen f7eaec3696 add composition groups to the top of the content type array 2015-07-06 21:40:00 +02:00
Per Ploug Krogslund 583c18bdd3 Merges in parent ct names on each tab 2015-07-06 15:19:20 +02:00
Per Ploug Krogslund 0bf86e8286 Adds list view name for the content type 2015-07-06 15:19:20 +02:00
Mads Rasmussen 2cdf2c91de Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-07-06 14:21:33 +02:00
Per Ploug Krogslund 955f1eacf8 Changes the order of inherited properties on tabs 2015-07-06 14:15:23 +02:00
Mads Rasmussen 19585b21fa prevent closing new dialog when you click on the old dialog 2015-07-06 13:50:06 +02:00
Mads Rasmussen 4eb22b65c7 add auto focus to editor picker filter 2015-07-06 11:08:02 +02:00
Mads Rasmussen 13b7ca968a fix issue with generating alias on a new content type 2015-07-06 09:26:46 +02:00
Mads Rasmussen e4fab5b6cc make add editor link blue 2015-07-06 09:23:03 +02:00
Mads Rasmussen 1bbbce469c lighten up property text placeholders 2015-07-06 09:22:37 +02:00
Mads Rasmussen a97e826efa set placeholder for icon - if none is chosen. Remove header elements if they are undefined 2015-07-03 10:06:44 +02:00
Mads Rasmussen 4924da9232 overwrite data type will update all other data types with the same id 2015-07-02 10:42:40 +02:00
Mads Rasmussen 76b3ab1276 Make directive for list view + use directive in content type editor 2015-07-02 09:45:39 +02:00
Mads Rasmussen 6a780df09a When selecting property editors with no data type - create new data type. 2015-07-01 15:05:16 +02:00
Mads Rasmussen 939be565f0 data type picker - filter out user configured data types from system data types 2015-06-30 15:22:10 +02:00
Mads Rasmussen c3d5d84c12 set default cursor on inherited preview hover 2015-06-30 15:21:06 +02:00
Mads Rasmussen 281e14a946 load in data type details for each merged composition property 2015-06-30 15:19:38 +02:00
Mads Rasmussen 936278fecb remove double watcher on property in umb-group-builder 2015-06-30 14:17:35 +02:00
Mads Rasmussen 282e2fb786 Generate alias: wait for alias from input before activating 2015-06-30 14:16:41 +02:00
Mads Rasmussen a43ba3eed2 Add fade in animation to overlay 2015-06-30 12:17:27 +02:00
Mads Rasmussen 5001e28750 Permissions section: Check for legacy icons on allowed child nodes 2015-06-30 11:34:10 +02:00
Mads Rasmussen face274b93 Property picker overlay: remove filtered out sections 2015-06-30 10:25:06 +02:00
Mads Rasmussen 582df08032 use umb-card-grid class in item picker overlay 2015-06-30 10:24:08 +02:00
Mads Rasmussen 4ec2baf532 Generate alias directive: call service to get safe alias. 2015-06-29 19:51:40 +02:00
Mads Rasmussen de559d951c Move content type editor design section to directive. Clean up HTML and CSS. 2015-06-29 19:49:24 +02:00
Per Ploug fee58358fb Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-26 13:21:16 +02:00
Per Ploug e736835469 Adds GetSafeAlias to contentTypeResource 2015-06-26 13:21:08 +02:00
Mads Rasmussen 7131a002df move the child node selector into a directive, move styles. use BEM methodology for stylesheet 2015-06-25 22:22:46 +02:00
Mads Rasmussen b66528f14e Move template picker into generic directive 2015-06-25 21:19:22 +02:00
Mads Rasmussen cb2ad05d3d Merge branch 'ct-local' into dev-v7-contenttypeeditor 2015-06-25 21:10:04 +02:00
Shannon 035318753b Merge remote-tracking branch 'origin/dev-v7' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web/Umbraco.Web.csproj
2015-06-25 17:35:58 +02:00
Per Ploug 888ba8f285 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-25 11:49:08 +02:00
Per Ploug fc323ae89d Include EsLint in grunt
ESlint is not turned on by default - as it gives us 500ish errors as of
the current state of the codebase, also, we should start linting
controllers (why arent we?)

EsLint contains angular best practices rules and will help us get V8
ready for Angular2 and to follow best practices, untill everything
passes we can turn it on and off during clean-up time
2015-06-25 11:49:00 +02:00
Per Ploug 3565d1e26b Manifest parser tests updated to include icon and group 2015-06-25 11:43:51 +02:00
Shannon 693b87a527 Fixes upgrade issue 2015-06-25 11:15:04 +02:00
Mads Rasmussen c50195843c fix disabling sortable issue when tab/property is inherited after controller as update 2015-06-25 11:10:44 +02:00
Mads Rasmussen 07225f0e43 umb-locked-field lock icon align top 2015-06-25 11:08:30 +02:00
Mads Rasmussen fbfa0b597b fix problem with overlapping fields in editor header 2015-06-25 11:07:07 +02:00
Mads Rasmussen 01bf84664a compress property preview fields 2015-06-25 11:04:45 +02:00
Shannon 3c04f43abc Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-25 10:23:33 +02:00
Shannon da7b0e34d2 fixes test 2015-06-25 10:22:34 +02:00
Shannon fc7932c2bf Merge remote-tracking branch 'origin/dev-v7' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
	src/Umbraco.Web.UI.Client/bower.json
	src/Umbraco.Web.UI.Client/gruntFile.js
	src/Umbraco.Web.UI.Client/src/less/property-editors.less
2015-06-25 10:16:35 +02:00
Per Ploug f8beb5ec3f Use IEnumerable instaed of List for fetching datatypes 2015-06-25 10:09:55 +02:00
Per Ploug 9c8489c4c5 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-24 21:43:22 +02:00
Per Ploug 8679c26f3d Added icons and groups on all core editors 2015-06-24 21:43:14 +02:00
Shannon 6a7c4e9dc1 Merge remote-tracking branch 'origin/dev-v7' into dev-v7-contenttypeeditor 2015-06-24 15:20:32 +02:00
Per Ploug 4b72fc3642 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-24 12:54:16 +02:00
Per Ploug 5e81aed928 Adds icon and group to property editor classes 2015-06-24 12:54:06 +02:00
Per Ploug 15c1477907 Moves localization directive into seperate folder 2015-06-24 12:53:10 +02:00
Per Ploug 933f97fef7 Umb-editor and Umb-Property-Editor into 1 file
only done to keep backwards compat and avoid dublicate code.
2015-06-24 12:52:27 +02:00
Per Ploug c9008c9946 Renames ContentType Create function as it broke another create dialog 2015-06-24 12:51:24 +02:00
Per Ploug e254e241b5 Fixes missing progress bars and large file error 2015-06-24 12:50:36 +02:00
Per Ploug 945858bbbc Cleanup unused directives
Removes the old upload directives and unused buttongroup directive
2015-06-24 12:50:02 +02:00
Shannon 8f4da31f0b removes old grunt-bower task. 2015-06-24 11:34:50 +02:00
Shannon d7fc15dd67 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-24 11:15:46 +02:00
Shannon fde162b086 Fixes up bower installer, no longer using grunt-bower-task since it is old and doesn't support the copying that we need, updates to latest bower dependency 2015-06-24 11:15:04 +02:00
Mads Rasmussen 73e54ea402 test out controller as syntax for sub views controllers + fix problems with the sub views directive caused by this approach 2015-06-24 11:00:00 +02:00
Per Ploug 34893d5f53 Delete dublicate event file 2015-06-24 10:22:22 +02:00
Per Ploug 6d6bcff233 Moves on-delayed-mouseleave to events directives
Keep all these utillity events in one file
2015-06-24 10:22:10 +02:00
Shannon c64bd5f65a Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web.UI.Client/bower.json
2015-06-24 09:52:46 +02:00
Shannon 32e0cbc886 updates bower/grunt file for new ng file upload 2015-06-24 09:51:36 +02:00
Per Ploug 1e5b8eb0fc Removes unused bower dependencies from bower.json 2015-06-23 22:59:17 +02:00
Per Ploug dada265736 Adds jquery event unbinding
Updates the dom event binding to use the newer on/off instead of
bind/unbind.
Adds off() to all dom event directives triggered by scope.on($destroy).
2015-06-23 22:58:47 +02:00
Shannon aad82360ad Merge branch 'dev-v7' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web.UI.Client/bower.json
	src/Umbraco.Web.UI.Client/src/app.dev.js
	src/Umbraco.Web.UI.Client/src/less/application/grid.less
	src/Umbraco.Web.UI.Client/src/less/panel.less
	src/Umbraco.Web.UI.Client/src/loader.js
	src/Umbraco.Web/Umbraco.Web.csproj
2015-06-23 18:27:18 +02:00
Per Ploug a53166828a Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-23 14:08:15 +02:00
Per Ploug 3212bfa4b6 New upload field + dependencies 2015-06-23 14:08:02 +02:00
Mads Rasmussen da18a89540 move design view logic from edit.controller to design.controller 2015-06-23 13:58:43 +02:00
Mads Rasmussen 7b547a3ad1 create service for data type helper function. call createPreValueProps from helper service 2015-06-23 11:39:54 +02:00
Mads Rasmussen 759599b426 call addInitTab from new service 2015-06-23 11:18:02 +02:00
Mads Rasmussen f4aff7752c move content type logic from controller to new service 2015-06-23 11:13:20 +02:00
Per Ploug 10a5fd91c7 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-23 09:57:27 +02:00
Per Ploug 2e2f8723a0 Set collections on property groups 2015-06-23 09:56:59 +02:00
Per Ploug efd231f6a9 Core Constants Icons class 2015-06-23 09:56:19 +02:00
Mads Rasmussen ea9604c260 sorting: disable properties/tabs when inherited. Remove sorting animation. 2015-06-23 09:25:29 +02:00
Mads Rasmussen a1498b6242 use compareArray filter to filter out data types from property editors 2015-06-22 15:04:19 +02:00
Mads Rasmussen 2067d65704 use compareArray filter to compare selected templates with available templates. Clean up controller 2015-06-22 15:03:02 +02:00
Mads Rasmussen fbc2a6fb4b use compareArray filter to compare selected nodes with available nodes. Clean up controller 2015-06-22 15:01:52 +02:00
Mads Rasmussen 4e2143264c created a custom filter to compare two arrays and remove duplicates based on a compare property 2015-06-22 14:59:25 +02:00
Mads Rasmussen ad52ae0ddb change margins on lock icon 2015-06-22 09:29:26 +02:00
Mads Rasmussen 4d1954cc84 use alias directive in header and property settings dialog 2015-06-22 09:28:50 +02:00
Mads Rasmussen 4aa572629f create directive for generating aliases - still needs server side validation 2015-06-22 09:27:42 +02:00
Mads Rasmussen 5e3d32c88b umb blocked field directive - allow changing lock from outside the directive 2015-06-22 09:17:08 +02:00
Mads Rasmussen 54f6084189 fix issues with split and merge composite content types 2015-06-22 09:13:47 +02:00
Mads Rasmussen f1a2883cd6 forgot rename of remove tab function 2015-06-22 09:12:23 +02:00
Mads Rasmussen 53dfc93c65 allow deletion of empty tabs 2015-06-19 11:33:23 +02:00
Mads Rasmussen 197e5b066a disable edit property settings from property is inherited 2015-06-19 10:47:25 +02:00
Mads Rasmussen 20e852ae31 add basic remove tab functionality 2015-06-19 10:32:54 +02:00
Mads Rasmussen fcbb4e819e Revert "Move property classes to be able to remove margin-bottom from last property in list. Set margin-bottom on last property to 0."
This reverts commit d982ca111d.
2015-06-19 09:10:05 +02:00
Mads Rasmussen d982ca111d Move property classes to be able to remove margin-bottom from last property in list. Set margin-bottom on last property to 0. 2015-06-18 15:09:32 +02:00
Mads Rasmussen 223cd16206 align tab and property sorting handle in sorting mode 2015-06-18 14:50:21 +02:00
Mads Rasmussen c44d0a5ec0 fix bug where it was possible to sort tabs outside sorting mode 2015-06-18 14:41:59 +02:00
madsrasmussen 2cc90fe140 Merge pull request #720 from ordepdev/U4-6725
U4-6725
2015-06-18 13:59:29 +02:00
Mads Rasmussen 5013842189 change design section icon 2015-06-18 13:00:47 +02:00
Mads Rasmussen a4dde5f6db convert legacy icons in permissions section 2015-06-18 12:53:26 +02:00
Mads Rasmussen 318f9ff8d5 move merge and split composite content types into it's own functions. fix bug where split and merge get swapped 2015-06-18 11:14:38 +02:00
Mads Rasmussen fc91189fa2 change templates icon to use icon from model. Change icon on template section to use same icon. 2015-06-18 10:40:58 +02:00
Mads Rasmussen ab1a5eabc1 Remove icon placeholder in header and make a more smooth transition 2015-06-18 10:23:30 +02:00
Mads Rasmussen 8c58aac3ea convert legacy icons 2015-06-18 10:21:32 +02:00
Pedro Tavares f7a01676ab set tab-title-input default width to 0px 2015-06-18 02:20:35 +01:00
Per Ploug d5cfefca39 Adds getAllPropertyEditors to datatype resource 2015-06-17 22:20:41 +02:00
Mads Rasmussen 1ce37dfd9e clean up overlay.less remove unsed style + element in html, fix issue with custom width on centered dialog 2015-06-17 15:55:20 +02:00
Mads Rasmussen 61b9dd6ba9 move action buttons in dialog to the right side 2015-06-17 14:39:20 +02:00
Mads Rasmussen d0af50edb2 less margin-right on property meta in preview 2015-06-17 14:00:29 +02:00
Mads Rasmussen 330b7802cf property dialog use umb-auto-resize directive on text areas + styling 2015-06-17 13:55:59 +02:00
Mads Rasmussen ec6022b05b add auto resize to property preview description + remove resize style 2015-06-17 12:27:25 +02:00
Mads Rasmussen 5fc2299508 Enable/disable list views, create custom list views, remove custom list views. Edit list view data types. 2015-06-17 10:44:40 +02:00
Mads Rasmussen 71afa29570 squeeze properties a bit more 2015-06-16 15:27:27 +02:00
Mads Rasmussen 5a96964549 property preview - change alias input to text 2015-06-16 15:14:28 +02:00
Mads Rasmussen 7358918ae6 remove unused overlay 2015-06-16 15:06:22 +02:00
Mads Rasmussen 643f499bdc fix property preview alignment 2015-06-16 15:05:43 +02:00
Mads Rasmussen f5b4bd4274 only set tab-title min size if tab-title is empty 2015-06-16 14:19:45 +02:00
Mads Rasmussen 28ae5a6ac4 set new min height on tab to reflect property placeholder height 2015-06-16 14:11:22 +02:00
Mads Rasmussen d02327813a Set placeholder on tab name 2015-06-16 14:05:25 +02:00
Mads Rasmussen 4a6bf3f777 change label on validation field in property settings dialog 2015-06-16 14:01:24 +02:00
Mads Rasmussen be501c7ead icon picker - show chosen color in header 2015-06-16 13:58:10 +02:00
Mads Rasmussen e8b5ae2ac6 make property placeholder smaller 2015-06-16 13:39:07 +02:00
Per Ploug 05d554d8a6 Fixes doctype icon map 2015-06-16 13:30:28 +02:00
Per Ploug b05fc5f0f0 Service for creating custom list view - given a type alias 2015-06-16 11:52:09 +02:00
Per Ploug aed6819b6c Adds GetCustomListView and GetByName to datatype service 2015-06-16 11:35:24 +02:00
Mads Rasmussen 554dff5235 Added filtering to property editor picker 2015-06-16 09:15:20 +02:00
Mads Rasmussen a5ca52d3c4 Property editor picker - order by name 2015-06-16 09:05:24 +02:00
Mads Rasmussen a3a1b1afc9 fix button hover issue in overlay grid 2015-06-15 12:03:22 +02:00
Mads Rasmussen dcb31e527c make choose template link blue 2015-06-15 11:30:02 +02:00
Mads Rasmussen be35aa0eef Choose default template as first template, show message when all templates are chosen, allow removal of default template if all other templates has been removed. 2015-06-15 11:29:30 +02:00
Mads Rasmussen 2c9343afcb Add list view labels mock 2015-06-09 11:16:49 +02:00
Mads Rasmussen f37fb1078f add filter to icon picker 2015-06-08 22:46:22 +02:00
Mads Rasmussen 42c2c23437 remove json debug in html + small indent clean up 2015-06-08 22:34:42 +02:00
Mads Rasmussen 74eb5f628c get data type details for each property on init 2015-06-08 22:26:41 +02:00
Mads Rasmussen 51a5dbb72a Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-08 19:38:43 +02:00
Mads Rasmussen 12702a12b4 Add validation to property 2015-06-08 19:37:15 +02:00
Shannon f167f84c7f doc type folders are a thing 2015-06-08 19:02:35 +02:00
Shannon 089909c036 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-08 18:22:52 +02:00
Shannon 4e4382ff90 folders are more or less working. 2015-06-08 18:22:43 +02:00
Per Ploug 6e23e3eeeb change default ct icon 2015-06-08 18:18:05 +02:00
Per Ploug 77a571efb3 update ui to latest 2015-06-08 18:17:36 +02:00
Per Ploug 120b7bae17 clean up membertype groups and props 2015-06-08 18:17:26 +02:00
Per Ploug e8abe4af2d map generic properties the right way 2015-06-08 18:17:10 +02:00
Per Ploug ddfd2fece4 Map member types 2015-06-08 18:16:52 +02:00
Per Ploug 8ec652c557 ignore system properties 2015-06-08 18:16:41 +02:00
Shannon f36574fef3 Merge branch '7.3.0' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Umbraco.Tests.csproj
	src/Umbraco.Web.UI.Client/src/canvasdesigner.loader.js
	src/Umbraco.Web.UI.Client/src/less/pages/login.less
2015-06-08 18:03:39 +02:00
Shannon 76ffbab26f Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web.UI/config/trees.config
2015-06-08 18:00:29 +02:00
Shannon 97c6067b70 Gets initial doc type folders working 2015-06-08 17:59:56 +02:00
Per Ploug 7b06c37f44 merge 2015-06-08 16:49:34 +02:00
Per Ploug 13fd548c17 Adds umb-locked-field directive 2015-06-08 16:06:10 +02:00
Mads Rasmussen 6ff82475e4 set min-width on name field when name is empty 2015-06-08 15:00:56 +02:00
Per Ploug e82e608701 removed lorem ipsum 2015-06-08 14:39:40 +02:00
Per Ploug 416fe02608 Property editor dialog cleaned up 2015-06-08 14:39:37 +02:00
Mads Rasmussen 174f5c2043 load templates in templates section 2015-06-08 14:37:08 +02:00
Mads Rasmussen 109c0408cf Increase resize directive delay time 2015-06-08 14:29:21 +02:00
Per Ploug c4abe6c771 Enables available templates
fixes the last mapping issues
2015-06-08 14:03:48 +02:00
Per Ploug 84a1230759 Changes GetScaffold to GetEmpty 2015-06-08 14:03:47 +02:00
Mads Rasmussen 93b0991dc4 Add prototype for template section 2015-06-08 14:01:37 +02:00
Shannon 08762e5a00 Fixes getScaffold issue, starts adding Create dialog for doc types 2015-06-08 13:10:52 +02:00
Mads Rasmussen bbb4a25070 Basic implementation of icon picker. Still needs support for images 2015-06-08 11:16:49 +02:00
Shannon 8ec397e4ae Updates mappings to ensure the underlying logic in the ContentType classes is used when using AddPropertyGroup and AddPropertyType 2015-06-06 11:32:21 +02:00
Shannon c7510ab50e fixes prop group/prop type mapping for when there is a new property group with new property types assigned 2015-06-06 10:58:25 +02:00
Per Ploug 34060ceed6 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-06 08:40:11 +02:00
Mads Rasmussen 61519f1762 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-06-05 22:38:56 +02:00
Mads Rasmussen 0f70d1a69f Temp removal of 1 sec timeout to prevent bug where overlay does not open 2015-06-05 22:38:20 +02:00
Mads Rasmussen 50f3a4bd61 Change from select element to target overlay 2015-06-05 22:34:11 +02:00
Mads Rasmussen 203deb55e5 Extend overlay directive with "target"-version 2015-06-05 22:29:14 +02:00
Shannon 2654657701 fixes up some more mappings, now the persistence tests are working 2015-06-05 16:37:39 +02:00
Shannon f2f29eaa8e Fixes up some more mappings, adds another test to simulate persisting an updated type from the display model - which isn't working so need to fix more. 2015-06-05 16:13:13 +02:00
Per Ploug cf3dfe4992 merge 2015-06-05 12:20:45 +02:00
Per Ploug 87b9758337 Change propertyresolver to use IContentTypeComposition 2015-06-05 12:16:41 +02:00
Per Ploug 3cf9ceb2a6 Remove membertype from content type mapper 2015-06-05 12:16:08 +02:00
Per Ploug 1eb98a7478 Change GetScaffold to GetEmpty 2015-06-05 12:15:43 +02:00
Per Ploug 55daa2ee45 WIP membertype editor 2015-06-05 12:15:20 +02:00
Shannon e580bfef97 moves mapping for allowed content types to be inline, no need for after map for that 2015-06-05 12:13:40 +02:00
Shannon c9cb7034f8 fixes mappings with change to allowed content types with enumerable int's. Fixes up a mapping to not do ToArray() and consuming more memory than required 2015-06-05 12:09:20 +02:00
Shannon d797677879 Merge remote-tracking branch 'origin/dev-v7-contenttypeeditor' into dev-v7-contenttypeeditor
Conflicts:
	src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs
2015-06-05 12:00:07 +02:00
Shannon a483ec306c fixed up more mappings and tests 2015-06-05 11:59:45 +02:00
Mads Rasmussen 867d955d01 Optimize directive to not use ng-repeat 2015-06-04 22:55:03 +02:00
Mads Rasmussen 309afc9e2d Remove margin top on tabs 2015-06-04 21:30:22 +02:00
Mads Rasmussen 1d3238d9d8 use new umb-editor-navigation + umb-editor-sub-views directives + styling of header 2015-06-04 21:28:50 +02:00
Mads Rasmussen 3dbd7fafd4 Added directives to split navigation and sub views so it is possible to add navigation to editor header. 2015-06-04 21:24:13 +02:00
Shannon 087c07bcbd started updating the content type mapping. 2015-06-04 16:52:22 +02:00
Per Ploug ac16f9498e Changes allowed content types to list<int> 2015-06-04 10:59:26 +02:00
Mads Rasmussen 2fe00d6455 content type permissions sub view 2015-06-03 21:30:45 +02:00
Mads Rasmussen 4d2ef9c07d Add no-indent variations of checkboxes and radios 2015-06-03 21:26:47 +02:00
Mads Rasmussen 66cd5d0b66 Add list wrapper class 2015-06-03 18:50:47 +02:00
Mads Rasmussen 37d88ed224 Bring back the bold tab strokes to make more contrast + remove inherited property border 2015-06-03 18:48:55 +02:00
Mads Rasmussen cc226cf9ac Add margin in top of tabs list to compensate for position absolute tab titles 2015-06-03 18:47:41 +02:00
Mads Rasmussen 51dea2d5fc Remove padding from canvas on big screens 2015-06-03 18:46:26 +02:00
Mads Rasmussen d6281f3e2b Add more margin to the bottom of sub views nav 2015-06-03 18:45:39 +02:00
Per Ploug c2c93a1a5b removes unneeded tolists 2015-06-03 15:09:19 +02:00
Per Ploug d62ae17f05 Content type get all method 2015-06-03 14:56:32 +02:00
Per Ploug 882f866a5f Removes singleton reference 2015-06-02 22:03:30 +02:00
Mads Rasmussen 8cdb34adb6 umb-sub-views directive: select tools form the first view on init 2015-06-02 15:29:40 +02:00
Mads Rasmussen 5178525802 Use umb-sub-views directive to load in views in the content type editor 2015-06-02 15:14:56 +02:00
Mads Rasmussen f5f4eef7a9 load in umb-sub-views less file 2015-06-02 15:02:55 +02:00
Mads Rasmussen fe28bcafca Added custom directive to add sub views to a page 2015-06-02 15:00:37 +02:00
Per Ploug bd1de4559d Adjusting the content type display model 2015-06-02 11:57:43 +02:00
Mads Rasmussen bb5a89956c Remove border in sorting mode 2015-06-01 19:18:41 +02:00
Mads Rasmussen eca0f91794 Better styling of inherited property label 2015-06-01 15:52:20 +02:00
Mads Rasmussen ac42eebe60 remove unused function 2015-06-01 14:41:45 +02:00
Mads Rasmussen a8c00ed2d3 set borders to 1px, remove shadow + move inherited tab text 2015-06-01 14:40:54 +02:00
Mads Rasmussen 058085d9d0 move dialog outside form 2015-06-01 13:26:14 +02:00
Mads Rasmussen f0f5ab9304 Add button group to edit data type dialog with the possibility to save and save as new 2015-06-01 13:24:13 +02:00
Mads Rasmussen 53ef8ce7f4 Added directive to add bootstrap button groups 2015-06-01 13:17:41 +02:00
Mads Rasmussen 5586e07329 Show dataTypeName instead of preview when an editor is loaded 2015-05-29 13:59:11 +02:00
Mads Rasmussen 6773057b11 fix actions button position 2015-05-29 12:42:34 +02:00
Mads Rasmussen e2417f92f5 Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-05-29 12:40:28 +02:00
Mads Rasmussen b622184c87 WIP header 2015-05-29 12:40:04 +02:00
Per Ploug 350161bfee Actions button 2015-05-29 12:11:29 +02:00
Mads Rasmussen acdc81a384 Do not add contentType to available content type model 2015-05-29 11:55:37 +02:00
Per Ploug 89ca027835 Delete dialog POC and label change 2015-05-29 11:46:47 +02:00
Mads Rasmussen 19cc7effe7 add Checklist-model to composition dialog - change from composite id to alias 2015-05-29 11:36:16 +02:00
Per Ploug 1a04f5f071 Mapping of composite alias 2015-05-29 11:18:22 +02:00
Per Ploug f65bff185d WIP On mapping 2015-05-29 09:21:38 +02:00
Per Ploug f0343788b7 Tree actions for CT 2015-05-29 09:21:37 +02:00
Per Ploug 271bc6ba4c Adds scaffolding to the CT service 2015-05-29 09:21:34 +02:00
Per Ploug e4eb6363ea Wires up the save button 2015-05-29 09:21:28 +02:00
Per Ploug fcf6d70803 Minor ui changes 2015-05-29 09:21:21 +02:00
Mads Rasmussen 96d0c01217 Change add property flow + better styling of property settings dialog 2015-05-28 16:34:37 +02:00
Per Ploug 4424f0a37b Correct mapping of composte type ids 2015-05-28 14:01:18 +02:00
Per Ploug f96e13902c Sets correct property inherite stattus 2015-05-28 12:59:04 +02:00
Mads Rasmussen 80096c941b rename properties to match model 2015-05-28 12:25:06 +02:00
Per Ploug 936e31c5df Adds content type names composite Ui
for UI read-only
2015-05-28 10:59:35 +02:00
Mads Rasmussen 5c27a925f2 Remove padding from tabs + make init property background color white 2015-05-28 09:49:28 +02:00
Mads Rasmussen cfe1beec8b Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor 2015-05-27 16:34:23 +02:00
Mads Rasmussen 6221dd206c Change flow when adding properties/data types 2015-05-27 16:33:02 +02:00
Per Ploug b545b76248 Merge tabs based on names 2015-05-27 15:48:40 +02:00
Per Ploug 7a53af95e4 Fixes CT mapping
Should now have the correct properties on each tab according to
inheritance, also includes a content type ID on each tab
2015-05-26 16:43:03 +02:00
Mads Rasmussen 3d0ccc9405 Merge tabs when they have the same name 2015-05-26 13:48:26 +02:00
Shannon Deminick 1a65b85816 fixing naming conventions 2015-05-26 09:36:00 +10:00
Shannon Deminick 3c659cfc7c fixing naming conventions 2015-05-26 09:35:32 +10:00
Shannon Deminick 967654e2bd fixing naming conventions 2015-05-26 09:34:25 +10:00
Shannon Deminick ebaced7ac5 fixing naming conventions 2015-05-26 09:33:46 +10:00
Shannon Deminick 9306e1db64 fixing naming conventions 2015-05-26 09:32:18 +10:00
Shannon Deminick 5075d3446f fixing naming conventions 2015-05-26 09:31:45 +10:00
Per Ploug 963a951242 Added current composite types to model 2015-05-22 12:00:18 +02:00
Mads Rasmussen 098270100c Started on compositions + restyled some elements 2015-05-21 21:35:57 +02:00
Per Ploug 0f01925c4a Fixed less file casing and paths 2015-05-21 07:50:02 +02:00
Per Ploug 1bfe7840a9 Added composite types to the ct mapper 2015-05-20 20:56:51 +02:00
Mads Rasmussen 58c93c899a Added sorting functionality 2015-05-20 14:58:17 +02:00
Mads Rasmussen 6e4f6a7bae Html and styles for toolbar 2015-05-20 10:23:37 +02:00
Mads Rasmussen 2b2ed00298 New tab and placeholder styling 2015-05-20 09:31:40 +02:00
Mads Rasmussen f7e079f0d8 get configured data types, custom editors and systems data types in dialog. Make it possible to select one. 2015-05-19 13:47:48 +02:00
Mads Rasmussen 57127460f9 Added getAllUsersConfigured and getAllUserPropertyEditors as resource 2015-05-19 13:46:38 +02:00
Mads Rasmussen f1dfa28228 Add the last changes from the old branche 2015-05-19 12:31:59 +02:00
Per Ploug b43f0a0986 Fixed up a couple of mapping errors 2015-05-19 11:57:49 +02:00
Shannon b9120698ba Adds more mapping logic for content type mappers, creates unit tests for them, adds some missing required properties that will be needed for editing, adds lots of notes. 2015-05-19 11:17:23 +10:00
Shannon 71c24b7bf3 reverts proj change 2015-05-19 09:01:54 +10:00
Per Ploug 6c218c3ab5 datatype controller methods for ct editor 2015-05-18 20:08:00 +02:00
Per Ploug 0e6b663eed Models for content type display 2015-05-18 20:07:20 +02:00
Per Ploug 65f2b43185 Latest files from mads 2015-05-14 07:39:18 +02:00
Per Ploug ef069e0aa1 Content Type Editor work merged in 2015-05-13 17:12:28 +02:00
Per Ploug ded1ac41e3 Change of web.mvc version hintpath 2015-05-13 16:51:00 +02:00
AussieInSeattle 2276584c90 Update for when first control has settings
Adding style for when first control has settings - it was previously overlapping the "cog" icon above it
2015-03-11 11:52:57 -07:00
AussieInSeattle 05a0846e89 Update grid.controller.js 2015-03-09 11:22:16 -07:00
AussieInSeattle b2947264e1 edit function for settings on a custom grid editor 2015-02-19 15:49:03 -08:00
AussieInSeattle 066927742e Update UI for settings for a custom grid editor 2015-02-19 15:47:11 -08:00
TimoPerplex 4616afced4 Merge pull request #1 from umbraco/dev-v7
Update to latest data
2015-01-19 09:05:18 +01:00
970 changed files with 38258 additions and 15364 deletions
+5 -9
View File
@@ -1,4 +1,6 @@
@ECHO OFF
SETLOCAL
SET release=%1
ECHO Installing Npm NuGet Package
@@ -11,12 +13,9 @@ ECHO Current folder: %CD%
for /f "delims=" %%A in ('dir %nuGetFolder%node.js.* /b') do set "nodePath=%nuGetFolder%%%A\"
for /f "delims=" %%A in ('dir %nuGetFolder%npm.js.* /b') do set "npmPath=%nuGetFolder%%%A\tools\"
ECHO Temporarily adding Npm and Node to path
SET oldPath=%PATH%
path=%npmPath%;%nodePath%;%PATH%
ECHO %path%
ECHO Adding Npm and Node to path
REM SETLOCAL is on, so changes to the path not persist to the actual user's path
PATH=%npmPath%;%nodePath%;%PATH%
SET buildFolder=%CD%
@@ -29,8 +28,5 @@ call npm install -g grunt-cli --quiet
call npm install -g bower --quiet
call grunt build --buildversion=%release%
ECHO Reset path to what it was before
path=%oldPath%
ECHO Move back to the build folder
CD %buildFolder%
+5 -6
View File
@@ -1,19 +1,19 @@
@ECHO OFF
SET oldPath=%PATH%
SETLOCAL
REM SETLOCAL is on, so changes to the path not persist to the actual user's path
git.exe 2> NUL
if %ERRORLEVEL%==9009 GOTO :trydefaultpath
GOTO :EOF
:trydefaultpath
path=C:\Program Files (x86)\Git\cmd;%PATH%
path=C:\Program Files (x86)\Git\cmd;C:\Program Files\Git\cmd;%PATH%
git.exe 2> NUL
if %ERRORLEVEL%==9009 GOTO :showerror
GOTO :EOF
:showerror
path=%oldPath%
ECHO Git is not in your path and could not be found in C:\Program Files (x86)\Git\bin
ECHO Git is not in your path and could not be found in C:\Program Files (x86)\Git\cmd nor in C:\Program Files\Git\cmd
set /p install=" Do you want to install Git through Chocolatey [y/n]? " %=%
if %install%==y (
GOTO :installgit
@@ -29,5 +29,4 @@ GOTO :EOF
ECHO Installing Chocolatey first
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
ECHO Installing Git through Chocolatey
choco install git
path=C:\Program Files (x86)\Git\cmd;%path%
choco install git
+3 -2
View File
@@ -33,11 +33,12 @@
<dependency id="AutoMapper" version="[3.0.0, 3.1.0)" />
<dependency id="Newtonsoft.Json" version="[6.0.8, 7.0.0)" />
<dependency id="Examine" version="[0.1.68, 1.0.0)" />
<dependency id="ImageProcessor" version="[2.3.0, 3.0.0)" />
<dependency id="ImageProcessor.Web" version="[4.4.0, 5.0.0)" />
<dependency id="ImageProcessor" version="[2.3.2, 3.0.0)" />
<dependency id="ImageProcessor.Web" version="[4.5.0, 5.0.0)" />
<dependency id="semver" version="[1.1.2, 2.0.0)" />
<dependency id="Microsoft.AspNet.WebHelpers" version="[3.2.3, 4.0.0)" />
<dependency id="Microsoft.AspNet.WebPages.Data" version="[3.2.3, 4.0.0)" />
<dependency id="Umbraco.ModelsBuilder.AspNet" version="[2.2.0-beta003, 3.0.0)" />
</dependencies>
</metadata>
<files>
@@ -17,6 +17,11 @@
<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)" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="Umbraco.Web.PublishedContentModels" xdt:Transform="InsertIfMissing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<system.web>
+22 -2
View File
@@ -54,7 +54,7 @@
</providers>
</siteMap>
<httpRuntime xdt:Transform="InsertIfMissing" />
<httpRuntime targetFramework="4.5" xdt:Transform="SetAttributes(targetFramework)" />
<httpRuntime targetFramework="4.5" maxRequestLength="1048576" fcnMode="Single" xdt:Transform="SetAttributes(targetFramework,fcnMode,maxRequestLength)" />
<membership defaultProvider="DefaultMembershipProvider" xdt:Locator="Match(defaultProvider)" xdt:Transform="Remove" />
<roleManager defaultProvider="DefaultRoleProvider" xdt:Locator="Match(defaultProvider)" xdt:Transform="Remove"/>
<profile defaultProvider="DefaultProfileProvider" xdt:Locator="Match(defaultProvider)" xdt:Transform="Remove"/>>
@@ -66,6 +66,7 @@
<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)"
xdt:Transform="InsertIfMissing" />
<add assembly="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
@@ -84,10 +85,12 @@
<assemblies>
<remove assembly="System.Web.Http" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Net.Http" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
</assemblies>
<assemblies>
<remove assembly="System.Web.Http" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Net.Http" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
</assemblies>
</compilation>
@@ -140,6 +143,13 @@
<remove name="SpellChecker" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<add name="SpellChecker" xdt:Locator="Match(name)" xdt:Transform="Remove" />
</handlers>
<security xdt:Transform="InsertIfMissing">
<requestFiltering xdt:Transform="InsertIfMissing">
<requestLimits maxAllowedContentLength="1073741824" xdt:Transform="InsertIfMissing" />
</requestFiltering>
</security>
</system.webServer>
<system.codedom xdt:Transform="Remove" />
@@ -151,20 +161,26 @@
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='HtmlAgilityPack')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Net.Http')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Newtonsoft.Json')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.Mvc')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.WebPages.Razor')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.Http')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.Owin')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.Owin.Security.OAuth')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.Owin.Security')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.Owin.Security.Cookies')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Net.Http.Formatting')" xdt:Transform="Remove" />
<dependentAssembly xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Net.Http.Formatting')" xdt:Transform="Remove" />
</assemblyBinding>
</runtime>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.9.0" newVersion="1.4.9.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
@@ -177,6 +193,10 @@
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
+124 -33
View File
@@ -1,36 +1,127 @@
<?xml version="1.0"?>
<trees xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<add initialize="true" sortOrder="0" alias="content" application="content" title="Content" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.ContentTreeController, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add alias="content" xdt:Locator="Match(alias)" xdt:Transform="RemoveAttributes(silent)" />
<add initialize="false" sortOrder="0" alias="contentRecycleBin" application="content" title="Recycle Bin" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.cms.presentation.Trees.ContentRecycleBin, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add initialize="true" sortOrder="0" alias="media" application="media" title="Media" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.MediaTreeController, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add initialize="false" sortOrder="0" alias="mediaRecycleBin" application="media" title="Recycle Bin" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.cms.presentation.Trees.MediaRecycleBin, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="stylesheets" title="Stylesheets" type="umbraco.loadStylesheets, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="0" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="stylesheetProperty" title="Stylesheet Property" type="umbraco.loadStylesheetProperty, umbraco" iconClosed="" iconOpen="" initialize="false" sortOrder="0" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="templates" title="Templates" type="Umbraco.Web.Trees.TemplatesTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder-open" sortOrder="1" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="partialViews" title="Partial Views" silent="false" initialize="true" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.PartialViewsTree, umbraco" sortOrder="2" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="scripts" title="Scripts" type="umbraco.loadScripts, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="dictionary" title="Dictionary" type="umbraco.loadDictionary, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add alias="dictionary" xdt:Locator="Match(alias)" xdt:Transform="RemoveAttributes(action)" />
<add application="settings" alias="languages" title="Languages" type="Umbraco.Web.Trees.LanguageTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder-open" sortOrder="5" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="mediaTypes" title="Media Types" type="umbraco.loadMediaTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="6" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="settings" alias="nodeTypes" title="Document Types" type="umbraco.loadNodeTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="7" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add initialize="true" sortOrder="0" alias="datatype" application="developer" title="Data Types" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.DataTypeTreeController, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="developer" alias="macros" title="Macros" type="umbraco.loadMacros, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="developer" alias="packager" title="Packages" type="umbraco.loadPackager, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="developer" alias="packagerPackages" title="Packager Packages" type="umbraco.loadPackages, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" initialize="false" sortOrder="3" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="developer" alias="relationTypes" title="Relation Types" type="umbraco.loadRelationTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="developer" alias="xslt" title="XSLT Files" type="umbraco.loadXslt, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="5" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="developer" alias="partialViewMacros" type="Umbraco.Web.Trees.PartialViewMacrosTree, umbraco" silent="false" initialize="true" sortOrder="6" title="Partial View Macro Files" iconClosed="icon-folder" iconOpen="icon-folder" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="users" alias="users" title="Users" type="umbraco.loadUsers, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="0" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="users" alias="userTypes" title="User Types" type="umbraco.cms.presentation.Trees.UserTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="1" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="users" alias="userPermissions" title="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add initialize="true" sortOrder="0" alias="member" application="member" title="Members" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTreeController, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="member" alias="memberGroup" title="Member Groups" type="umbraco.loadMemberGroups, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="1" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add application="member" alias="memberType" title="Member Types" type="umbraco.loadMemberTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add silent="false" initialize="true" sortOrder="1" alias="openTasks" application="translation" title="Tasks assigned to you" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.loadOpenTasks, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add alias="openTasks" xdt:Locator="Match(alias)" xdt:Transform="RemoveAttributes(action)" />
<add silent="false" initialize="true" sortOrder="2" alias="yourTasks" application="translation" title="Tasks created by you" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.loadYourTasks, umbraco" xdt:Locator="Match(alias)" xdt:Transform="SetAttributes()" />
<add alias="yourTasks" xdt:Locator="Match(alias)" xdt:Transform="RemoveAttributes(action)" />
<add application="developer" alias="python" xdt:Locator="Match(alias)" xdt:Transform="Remove" />
<!--Content-->
<add alias="content" application="content"
xdt:Locator="Match(application,alias)"
xdt:Transform="RemoveAttributes(silent)" />
<add initialize="false" sortOrder="0" alias="contentRecycleBin" application="content" title="Recycle Bin" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.cms.presentation.Trees.ContentRecycleBin, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add initialize="true" sortOrder="0" alias="content" application="content" title="Content" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.ContentTreeController, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<!--Media-->
<add initialize="true" sortOrder="0" alias="media" application="media" title="Media" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.MediaTreeController, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add initialize="false" sortOrder="0" alias="mediaRecycleBin" application="media" title="Recycle Bin" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.cms.presentation.Trees.MediaRecycleBin, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<!--Settings-->
<add application="settings" alias="nodeTypes"
xdt:Locator="Match(application,alias)"
xdt:Transform="Remove" />
<add initialize="true" sortOrder="0" alias="documentTypes" application="settings" title="Document Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.ContentTypeTreeController, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="InsertIfMissing" />
<add application="settings" alias="stylesheets" title="Stylesheets" type="umbraco.loadStylesheets, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" alias="stylesheetProperty" title="Stylesheet Property" type="umbraco.loadStylesheetProperty, umbraco" iconClosed="" iconOpen="" initialize="false" sortOrder="0"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" alias="templates" title="Templates" type="Umbraco.Web.Trees.TemplatesTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder-open" sortOrder="1"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" alias="partialViews" title="Partial Views" silent="false" initialize="true" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.PartialViewsTree, umbraco" sortOrder="2"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" alias="scripts" title="Scripts" type="umbraco.loadScripts, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" alias="dictionary" title="Dictionary" type="umbraco.loadDictionary, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="6"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add alias="dictionary" application="settings"
xdt:Locator="Match(application,alias)"
xdt:Transform="RemoveAttributes(action)" />
<add application="settings" alias="languages" title="Languages" type="Umbraco.Web.Trees.LanguageTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder-open" sortOrder="5"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" initialize="true" alias="mediaTypes" title="Media Types" type="Umbraco.Web.Trees.MediaTypeTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder-open" sortOrder="7"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<!--Developer-->
<add alias="datatype" application="developer"
xdt:Locator="Match(application,alias)"
xdt:Transform="Remove" />
<add initialize="true" sortOrder="0" alias="datatypes" application="developer" title="Data Types" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.DataTypeTreeController, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="InsertIfMissing" />
<add application="developer" alias="macros" title="Macros" type="umbraco.loadMacros, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="developer" alias="packager" title="Packages" type="umbraco.loadPackager, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="developer" alias="packagerPackages" title="Packager Packages" type="umbraco.loadPackages, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" initialize="false" sortOrder="3"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="developer" alias="relationTypes" title="Relation Types" type="umbraco.loadRelationTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="developer" alias="xslt" title="XSLT Files" type="umbraco.loadXslt, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="5"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="developer" alias="partialViewMacros" type="Umbraco.Web.Trees.PartialViewMacrosTree, umbraco" silent="false" initialize="true" sortOrder="6" title="Partial View Macro Files" iconClosed="icon-folder" iconOpen="icon-folder"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="developer" alias="python"
xdt:Locator="Match(application,alias)"
xdt:Transform="Remove" />
<!--Users-->
<add application="users" alias="users" title="Users" type="umbraco.loadUsers, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="0"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="users" alias="userTypes" title="User Types" type="umbraco.cms.presentation.Trees.UserTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="1"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="users" alias="userPermissions" title="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<!--Members-->
<add initialize="true" sortOrder="0" alias="member" application="member" title="Members" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTreeController, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="member" alias="memberGroup"
xdt:Locator="Match(application,alias)"
xdt:Transform="Remove" />
<add application="member" sortOrder="2" alias="memberGroups" title="Member Groups" type="umbraco.loadMemberGroups, umbraco" iconClosed="icon-folder" iconOpen="icon-folder"
xdt:Locator="Match(application,alias)"
xdt:Transform="InsertIfMissing" />
<add application="member" alias="memberType"
xdt:Locator="Match(application,alias)"
xdt:Transform="Remove" />
<add application="member" sortOrder="1" alias="memberTypes" initialize="true" title="Member Types" type="Umbraco.Web.Trees.MemberTypeTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder-open"
xdt:Locator="Match(application,alias)"
xdt:Transform="InsertIfMissing" />
<!--Translation-->
<add silent="false" initialize="true" sortOrder="1" alias="openTasks" application="translation" title="Tasks assigned to you" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.loadOpenTasks, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add alias="openTasks" application="translation"
xdt:Locator="Match(application,alias)"
xdt:Transform="RemoveAttributes(action)" />
<add silent="false" initialize="true" sortOrder="2" alias="yourTasks" application="translation" title="Tasks created by you" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.loadYourTasks, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add alias="yourTasks" application="translation"
xdt:Locator="Match(application,alias)"
xdt:Transform="RemoveAttributes(action)" />
</trees>
+2 -1
View File
@@ -1,2 +1,3 @@
# Usage: on line 2 put the release version, on line 3 put the version comment (example: beta)
7.3.4
7.4.0
beta2
+6 -6
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="umbracocore" value="http://www.myget.org/f/umbracocore/" />
</packageSources>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="umbracocore" value="http://www.myget.org/f/umbracocore/" />
</packageSources>
</configuration>
+3 -3
View File
@@ -2,7 +2,7 @@
using System.Resources;
[assembly: AssemblyCompany("Umbraco")]
[assembly: AssemblyCopyright("Copyright © Umbraco 2015")]
[assembly: AssemblyCopyright("Copyright © Umbraco 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -11,5 +11,5 @@ using System.Resources;
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("7.3.4")]
[assembly: AssemblyInformationalVersion("7.3.4")]
[assembly: AssemblyFileVersion("7.4.0")]
[assembly: AssemblyInformationalVersion("7.4.0-beta2")]
+2 -1
View File
@@ -406,7 +406,8 @@ namespace Umbraco.Core
//clear the cache
if (ApplicationCache != null)
{
ApplicationCache.ClearAllCache();
ApplicationCache.RuntimeCache.ClearAllCache();
ApplicationCache.IsolatedRuntimeCache.ClearAllCaches();
}
//reset all resolvers
ResolverCollection.ResetAll();
+29 -2
View File
@@ -1,8 +1,9 @@
using System;
using System.ComponentModel;
using Umbraco.Core.CodeAnnotations;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Constants storing cache keys used in caching
/// </summary>
@@ -12,52 +13,78 @@ namespace Umbraco.Core.Cache
public const string ApplicationsCacheKey = "ApplicationCache";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string UserTypeCacheKey = "UserTypeCache";
[Obsolete("This is no longer used and will be removed from the codebase in the future - it is referenced but no cache is stored against this key")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string ContentItemCacheKey = "contentItem";
[UmbracoWillObsolete("This cache key is only used for the legacy 'library' caching, remove in v8")]
public const string MediaCacheKey = "UL_GetMedia";
public const string MacroXsltCacheKey = "macroXslt_";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string MacroCacheKey = "UmbracoMacroCache";
public const string MacroHtmlCacheKey = "macroHtml_";
public const string MacroControlCacheKey = "macroControl_";
public const string MacroHtmlDateAddedCacheKey = "macroHtml_DateAdded_";
public const string MacroControlDateAddedCacheKey = "macroControl_DateAdded_";
[UmbracoWillObsolete("This cache key is only used for legacy 'library' member caching, remove in v8")]
public const string MemberLibraryCacheKey = "UL_GetMember";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string MemberBusinessLogicCacheKey = "MemberCacheItem_";
[UmbracoWillObsolete("This cache key is only used for legacy template business logic caching, remove in v8")]
public const string TemplateFrontEndCacheKey = "template";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string TemplateBusinessLogicCacheKey = "UmbracoTemplateCache";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string UserContextCacheKey = "UmbracoUserContext";
public const string UserContextTimeoutCacheKey = "UmbracoUserContextTimeout";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string UserCacheKey = "UmbracoUser";
public const string UserPermissionsCacheKey = "UmbracoUserPermissions";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string ContentTypeCacheKey = "UmbracoContentType";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string ContentTypePropertiesCacheKey = "ContentType_PropertyTypes_Content:";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string PropertyTypeCacheKey = "UmbracoPropertyTypeCache";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string LanguageCacheKey = "UmbracoLanguageCache";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string DomainCacheKey = "UmbracoDomainList";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string StylesheetCacheKey = "UmbracoStylesheet";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string StylesheetPropertyCacheKey = "UmbracoStylesheetProperty";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string DataTypeCacheKey = "UmbracoDataTypeDefinition";
public const string DataTypePreValuesCacheKey = "UmbracoPreVal";
@@ -2,6 +2,7 @@
using Umbraco.Core.Events;
using Umbraco.Core.Sync;
using umbraco.interfaces;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
@@ -63,5 +64,15 @@ namespace Umbraco.Core.Cache
{
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RefreshById));
}
/// <summary>
/// Clears the cache for all repository entities of this type
/// </summary>
/// <typeparam name="TEntity"></typeparam>
internal void ClearAllIsolatedCacheByEntityType<TEntity>()
where TEntity : class, IAggregateRoot
{
ApplicationContext.Current.ApplicationCache.IsolatedRuntimeCache.ClearCache<TEntity>();
}
}
}
@@ -2,11 +2,10 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Caching;
using Umbraco.Core.Cache;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Persistence.Repositories
namespace Umbraco.Core.Cache
{
/// <summary>
/// A wrapper for any IRuntimeCacheProvider that ensures that all inserts and returns
@@ -0,0 +1,266 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// The default cache policy for retrieving a single entity
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TId"></typeparam>
internal class DefaultRepositoryCachePolicy<TEntity, TId> : DisposableObject, IRepositoryCachePolicy<TEntity, TId>
where TEntity : class, IAggregateRoot
{
private readonly RepositoryCachePolicyOptions _options;
protected IRuntimeCacheProvider Cache { get; private set; }
private Action _action;
public DefaultRepositoryCachePolicy(IRuntimeCacheProvider cache, RepositoryCachePolicyOptions options)
{
if (cache == null) throw new ArgumentNullException("cache");
if (options == null) throw new ArgumentNullException("options");
_options = options;
Cache = cache;
}
public string GetCacheIdKey(object id)
{
if (id == null) throw new ArgumentNullException("id");
return string.Format("{0}{1}", GetCacheTypeKey(), id);
}
public string GetCacheTypeKey()
{
return string.Format("uRepo_{0}_", typeof(TEntity).Name);
}
public void CreateOrUpdate(TEntity entity, Action<TEntity> persistMethod)
{
if (entity == null) throw new ArgumentNullException("entity");
if (persistMethod == null) throw new ArgumentNullException("persistMethod");
try
{
persistMethod(entity);
//set the disposal action
SetCacheAction(() =>
{
//just to be safe, we cannot cache an item without an identity
if (entity.HasIdentity)
{
Cache.InsertCacheItem(GetCacheIdKey(entity.Id), () => entity);
}
//If there's a GetAllCacheAllowZeroCount cache, ensure it is cleared
Cache.ClearCacheItem(GetCacheTypeKey());
});
}
catch
{
//set the disposal action
SetCacheAction(() =>
{
//if an exception is thrown we need to remove the entry from cache, this is ONLY a work around because of the way
// that we cache entities: http://issues.umbraco.org/issue/U4-4259
Cache.ClearCacheItem(GetCacheIdKey(entity.Id));
//If there's a GetAllCacheAllowZeroCount cache, ensure it is cleared
Cache.ClearCacheItem(GetCacheTypeKey());
});
throw;
}
}
public void Remove(TEntity entity, Action<TEntity> persistMethod)
{
if (entity == null) throw new ArgumentNullException("entity");
if (persistMethod == null) throw new ArgumentNullException("persistMethod");
persistMethod(entity);
//set the disposal action
var cacheKey = GetCacheIdKey(entity.Id);
SetCacheAction(() =>
{
Cache.ClearCacheItem(cacheKey);
//If there's a GetAllCacheAllowZeroCount cache, ensure it is cleared
Cache.ClearCacheItem(GetCacheTypeKey());
});
}
public TEntity Get(TId id, Func<TId, TEntity> getFromRepo)
{
if (getFromRepo == null) throw new ArgumentNullException("getFromRepo");
var cacheKey = GetCacheIdKey(id);
var fromCache = Cache.GetCacheItem<TEntity>(cacheKey);
if (fromCache != null)
return fromCache;
var entity = getFromRepo(id);
//set the disposal action
SetCacheAction(cacheKey, entity);
return entity;
}
public TEntity Get(TId id)
{
var cacheKey = GetCacheIdKey(id);
return Cache.GetCacheItem<TEntity>(cacheKey);
}
public bool Exists(TId id, Func<TId, bool> getFromRepo)
{
if (getFromRepo == null) throw new ArgumentNullException("getFromRepo");
var cacheKey = GetCacheIdKey(id);
var fromCache = Cache.GetCacheItem<TEntity>(cacheKey);
return fromCache != null || getFromRepo(id);
}
public virtual TEntity[] GetAll(TId[] ids, Func<TId[], IEnumerable<TEntity>> getFromRepo)
{
if (getFromRepo == null) throw new ArgumentNullException("getFromRepo");
if (ids.Any())
{
var entities = ids.Select(Get).ToArray();
if (ids.Length.Equals(entities.Length) && entities.Any(x => x == null) == false)
return entities;
}
else
{
var allEntities = GetAllFromCache();
if (allEntities.Any())
{
if (_options.GetAllCacheValidateCount)
{
//Get count of all entities of current type (TEntity) to ensure cached result is correct
var totalCount = _options.PerformCount();
if (allEntities.Length == totalCount)
return allEntities;
}
else
{
return allEntities;
}
}
else if (_options.GetAllCacheAllowZeroCount)
{
//if the repository allows caching a zero count, then check the zero count cache
var zeroCount = Cache.GetCacheItem<TEntity[]>(GetCacheTypeKey());
if (zeroCount != null && zeroCount.Any() == false)
{
//there is a zero count cache so return an empty list
return new TEntity[] {};
}
}
}
//we need to do the lookup from the repo
var entityCollection = getFromRepo(ids)
//ensure we don't include any null refs in the returned collection!
.WhereNotNull()
.ToArray();
//set the disposal action
SetCacheAction(ids, entityCollection);
return entityCollection;
}
/// <summary>
/// Performs the lookup for all entities of this type from the cache
/// </summary>
/// <returns></returns>
protected virtual TEntity[] GetAllFromCache()
{
var allEntities = Cache.GetCacheItemsByKeySearch<TEntity>(GetCacheTypeKey())
.WhereNotNull()
.ToArray();
return allEntities.Any() ? allEntities : new TEntity[] {};
}
/// <summary>
/// The disposal performs the caching
/// </summary>
protected override void DisposeResources()
{
if (_action != null)
{
_action();
}
}
/// <summary>
/// Sets the action to execute on disposal for a single entity
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="entity"></param>
protected virtual void SetCacheAction(string cacheKey, TEntity entity)
{
if (entity == null) return;
SetCacheAction(() =>
{
//just to be safe, we cannot cache an item without an identity
if (entity.HasIdentity)
{
Cache.InsertCacheItem(cacheKey, () => entity);
}
});
}
/// <summary>
/// Sets the action to execute on disposal for an entity collection
/// </summary>
/// <param name="ids"></param>
/// <param name="entityCollection"></param>
protected virtual void SetCacheAction(TId[] ids, TEntity[] entityCollection)
{
SetCacheAction(() =>
{
//This option cannot execute if we are looking up specific Ids
if (ids.Any() == false && entityCollection.Length == 0 && _options.GetAllCacheAllowZeroCount)
{
//there was nothing returned but we want to cache a zero count result so add an TEntity[] to the cache
// to signify that there is a zero count cache
Cache.InsertCacheItem(GetCacheTypeKey(), () => new TEntity[] {});
}
else
{
//This is the default behavior, we'll individually cache each item so that if/when these items are resolved
// by id, they are returned from the already existing cache.
foreach (var entity in entityCollection.WhereNotNull())
{
var localCopy = entity;
//just to be safe, we cannot cache an item without an identity
if (localCopy.HasIdentity)
{
Cache.InsertCacheItem(GetCacheIdKey(entity.Id), () => localCopy);
}
}
}
});
}
/// <summary>
/// Sets the action to execute on disposal
/// </summary>
/// <param name="action"></param>
protected void SetCacheAction(Action action)
{
_action = action;
}
}
}
@@ -0,0 +1,27 @@
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Creates cache policies
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TId"></typeparam>
internal class DefaultRepositoryCachePolicyFactory<TEntity, TId> : IRepositoryCachePolicyFactory<TEntity, TId>
where TEntity : class, IAggregateRoot
{
private readonly IRuntimeCacheProvider _runtimeCache;
private readonly RepositoryCachePolicyOptions _options;
public DefaultRepositoryCachePolicyFactory(IRuntimeCacheProvider runtimeCache, RepositoryCachePolicyOptions options)
{
_runtimeCache = runtimeCache;
_options = options;
}
public virtual IRepositoryCachePolicy<TEntity, TId> CreatePolicy()
{
return new DefaultRepositoryCachePolicy<TEntity, TId>(_runtimeCache, _options);
}
}
}
@@ -0,0 +1,57 @@
using System.Linq;
using Umbraco.Core.Collections;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// A caching policy that caches an entire dataset as a single collection
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TId"></typeparam>
internal class FullDataSetRepositoryCachePolicy<TEntity, TId> : DefaultRepositoryCachePolicy<TEntity, TId>
where TEntity : class, IAggregateRoot
{
public FullDataSetRepositoryCachePolicy(IRuntimeCacheProvider cache) : base(cache, new RepositoryCachePolicyOptions())
{
}
/// <summary>
/// For this type of caching policy, we don't cache individual items
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="entity"></param>
protected override void SetCacheAction(string cacheKey, TEntity entity)
{
//do nothing
}
/// <summary>
/// Sets the action to execute on disposal for an entity collection
/// </summary>
/// <param name="ids"></param>
/// <param name="entityCollection"></param>
protected override void SetCacheAction(TId[] ids, TEntity[] entityCollection)
{
//for this type of caching policy, we don't want to cache any GetAll request containing specific Ids
if (ids.Any()) return;
//set the disposal action
SetCacheAction(() =>
{
//We want to cache the result as a single collection
Cache.InsertCacheItem(GetCacheTypeKey(), () => new DeepCloneableList<TEntity>(entityCollection));
});
}
/// <summary>
/// This policy will cache the full data set as a single collection
/// </summary>
/// <returns></returns>
protected override TEntity[] GetAllFromCache()
{
var found = Cache.GetCacheItem<DeepCloneableList<TEntity>>(GetCacheTypeKey());
return found == null ? new TEntity[] { } : found.WhereNotNull().ToArray();
}
}
}
@@ -0,0 +1,25 @@
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Creates cache policies
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TId"></typeparam>
internal class FullDataSetRepositoryCachePolicyFactory<TEntity, TId> : IRepositoryCachePolicyFactory<TEntity, TId>
where TEntity : class, IAggregateRoot
{
private readonly IRuntimeCacheProvider _runtimeCache;
public FullDataSetRepositoryCachePolicyFactory(IRuntimeCacheProvider runtimeCache)
{
_runtimeCache = runtimeCache;
}
public virtual IRepositoryCachePolicy<TEntity, TId> CreatePolicy()
{
return new FullDataSetRepositoryCachePolicy<TEntity, TId>(_runtimeCache);
}
}
}
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
internal interface IRepositoryCachePolicy<TEntity, TId> : IDisposable
where TEntity : class, IAggregateRoot
{
TEntity Get(TId id, Func<TId, TEntity> getFromRepo);
TEntity Get(TId id);
bool Exists(TId id, Func<TId, bool> getFromRepo);
string GetCacheIdKey(object id);
string GetCacheTypeKey();
void CreateOrUpdate(TEntity entity, Action<TEntity> persistMethod);
void Remove(TEntity entity, Action<TEntity> persistMethod);
TEntity[] GetAll(TId[] ids, Func<TId[], IEnumerable<TEntity>> getFromRepo);
}
}
@@ -0,0 +1,9 @@
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
internal interface IRepositoryCachePolicyFactory<TEntity, TId> where TEntity : class, IAggregateRoot
{
IRepositoryCachePolicy<TEntity, TId> CreatePolicy();
}
}
@@ -0,0 +1,91 @@
using System;
using System.Collections.Concurrent;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Used to get/create/manipulate isolated runtime cache
/// </summary>
/// <remarks>
/// This is useful for repository level caches to ensure that cache lookups by key are fast so
/// that the repository doesn't need to search through all keys on a global scale.
/// </remarks>
public class IsolatedRuntimeCache
{
private readonly Func<Type, IRuntimeCacheProvider> _cacheFactory;
/// <summary>
/// Constructor that allows specifying a factory for the type of runtime isolated cache to create
/// </summary>
/// <param name="cacheFactory"></param>
public IsolatedRuntimeCache(Func<Type, IRuntimeCacheProvider> cacheFactory)
{
_cacheFactory = cacheFactory;
}
private readonly ConcurrentDictionary<Type, IRuntimeCacheProvider> _isolatedCache = new ConcurrentDictionary<Type, IRuntimeCacheProvider>();
/// <summary>
/// Returns an isolated runtime cache for a given type
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public IRuntimeCacheProvider GetOrCreateCache<T>()
{
return _isolatedCache.GetOrAdd(typeof(T), type => _cacheFactory(type));
}
/// <summary>
/// Returns an isolated runtime cache for a given type
/// </summary>
/// <returns></returns>
public IRuntimeCacheProvider GetOrCreateCache(Type type)
{
return _isolatedCache.GetOrAdd(type, t => _cacheFactory(t));
}
/// <summary>
/// Tries to get a cache by the type specified
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public Attempt<IRuntimeCacheProvider> GetCache<T>()
{
IRuntimeCacheProvider cache;
if (_isolatedCache.TryGetValue(typeof(T), out cache))
{
return Attempt.Succeed(cache);
}
return Attempt<IRuntimeCacheProvider>.Fail();
}
/// <summary>
/// Clears all values inside this isolated runtime cache
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public void ClearCache<T>()
{
IRuntimeCacheProvider cache;
if (_isolatedCache.TryGetValue(typeof(T), out cache))
{
cache.ClearAllCache();
}
}
/// <summary>
/// Clears all of the isolated caches
/// </summary>
public void ClearAllCaches()
{
foreach (var key in _isolatedCache.Keys)
{
IRuntimeCacheProvider cache;
if (_isolatedCache.TryRemove(key, out cache))
{
cache.ClearAllCache();
}
}
}
}
}
@@ -0,0 +1,27 @@
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Creates cache policies
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TId"></typeparam>
internal class OnlySingleItemsRepositoryCachePolicyFactory<TEntity, TId> : IRepositoryCachePolicyFactory<TEntity, TId>
where TEntity : class, IAggregateRoot
{
private readonly IRuntimeCacheProvider _runtimeCache;
private readonly RepositoryCachePolicyOptions _options;
public OnlySingleItemsRepositoryCachePolicyFactory(IRuntimeCacheProvider runtimeCache, RepositoryCachePolicyOptions options)
{
_runtimeCache = runtimeCache;
_options = options;
}
public virtual IRepositoryCachePolicy<TEntity, TId> CreatePolicy()
{
return new SingleItemsOnlyRepositoryCachePolicy<TEntity, TId>(_runtimeCache, _options);
}
}
}
@@ -1,17 +1,34 @@
namespace Umbraco.Core.Persistence.Repositories
using System;
namespace Umbraco.Core.Cache
{
internal class RepositoryCacheOptions
internal class RepositoryCachePolicyOptions
{
/// <summary>
/// Constructor sets defaults
/// Ctor - sets GetAllCacheValidateCount = true
/// </summary>
public RepositoryCacheOptions()
public RepositoryCachePolicyOptions(Func<int> performCount)
{
PerformCount = performCount;
GetAllCacheValidateCount = true;
GetAllCacheAllowZeroCount = false;
GetAllCacheThresholdLimit = 100;
}
/// <summary>
/// Ctor - sets GetAllCacheValidateCount = false
/// </summary>
public RepositoryCachePolicyOptions()
{
PerformCount = null;
GetAllCacheValidateCount = false;
GetAllCacheAllowZeroCount = false;
}
/// <summary>
/// Callback required to get count for GetAllCacheValidateCount
/// </summary>
public Func<int> PerformCount { get; private set; }
/// <summary>
/// True/false as to validate the total item count when all items are returned from cache, the default is true but this
/// means that a db lookup will occur - though that lookup will probably be significantly less expensive than the normal
@@ -21,16 +38,11 @@ namespace Umbraco.Core.Persistence.Repositories
/// setting this to return false will improve performance of GetAll cache with no params but should only be used
/// for specific circumstances
/// </remarks>
public bool GetAllCacheValidateCount { get; set; }
public bool GetAllCacheValidateCount { get; private set; }
/// <summary>
/// True if the GetAll method will cache that there are zero results so that the db is not hit when there are no results found
/// </summary>
public bool GetAllCacheAllowZeroCount { get; set; }
/// <summary>
/// The threshold entity count for which the GetAll method will cache entities
/// </summary>
public int GetAllCacheThresholdLimit { get; set; }
}
}
@@ -0,0 +1,24 @@
using System.Linq;
using Umbraco.Core.Collections;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// A caching policy that ignores all caches for GetAll - it will only cache calls for individual items
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TId"></typeparam>
internal class SingleItemsOnlyRepositoryCachePolicy<TEntity, TId> : DefaultRepositoryCachePolicy<TEntity, TId>
where TEntity : class, IAggregateRoot
{
public SingleItemsOnlyRepositoryCachePolicy(IRuntimeCacheProvider cache, RepositoryCachePolicyOptions options) : base(cache, options)
{
}
protected override void SetCacheAction(TId[] ids, TEntity[] entityCollection)
{
//do nothing
}
}
}
+99 -203
View File
@@ -1,6 +1,8 @@
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
@@ -11,20 +13,19 @@ using Umbraco.Core.Logging;
namespace Umbraco.Core
{
/// <summary>
/// Class that is exposed by the ApplicationContext for application wide caching purposes
/// </summary>
public class CacheHelper
{
private readonly bool _enableCache;
private readonly IsolatedRuntimeCache _isolatedCacheManager;
private readonly ICacheProvider _requestCache;
private readonly ICacheProvider _nullRequestCache = new NullCacheProvider();
private static readonly ICacheProvider NullRequestCache = new NullCacheProvider();
private readonly ICacheProvider _staticCache;
private readonly ICacheProvider _nullStaticCache = new NullCacheProvider();
private readonly IRuntimeCacheProvider _httpCache;
private readonly IRuntimeCacheProvider _nullHttpCache = new NullCacheProvider();
private static readonly ICacheProvider NullStaticCache = new NullCacheProvider();
private readonly IRuntimeCacheProvider _runtimeCache;
private static readonly IRuntimeCacheProvider NullRuntimeCache = new NullCacheProvider();
/// <summary>
/// Creates a cache helper with disabled caches
/// </summary>
@@ -34,7 +35,7 @@ namespace Umbraco.Core
/// </remarks>
public static CacheHelper CreateDisabledCacheHelper()
{
return new CacheHelper(null, null, null, false);
return new CacheHelper(NullRuntimeCache, NullStaticCache, NullRequestCache, new IsolatedRuntimeCache(t => NullRuntimeCache));
}
/// <summary>
@@ -44,7 +45,8 @@ namespace Umbraco.Core
: this(
new HttpRuntimeCacheProvider(HttpRuntime.Cache),
new StaticCacheProvider(),
new HttpRequestCacheProvider())
new HttpRequestCacheProvider(),
new IsolatedRuntimeCache(t => new ObjectCacheRuntimeCacheProvider()))
{
}
@@ -56,51 +58,42 @@ namespace Umbraco.Core
: this(
new HttpRuntimeCacheProvider(cache),
new StaticCacheProvider(),
new HttpRequestCacheProvider())
new HttpRequestCacheProvider(),
new IsolatedRuntimeCache(t => new ObjectCacheRuntimeCacheProvider()))
{
}
/// <summary>
/// Initializes a new instance based on the provided providers
/// </summary>
/// <param name="httpCacheProvider"></param>
/// <param name="staticCacheProvider"></param>
/// <param name="requestCacheProvider"></param>
[Obsolete("Use the constructor the specifies all dependencies")]
[EditorBrowsable(EditorBrowsableState.Never)]
public CacheHelper(
IRuntimeCacheProvider httpCacheProvider,
ICacheProvider staticCacheProvider,
ICacheProvider requestCacheProvider)
: this(httpCacheProvider, staticCacheProvider, requestCacheProvider, true)
: this(httpCacheProvider, staticCacheProvider, requestCacheProvider, new IsolatedRuntimeCache(t => new ObjectCacheRuntimeCacheProvider()))
{
}
/// <summary>
/// Private ctor used for creating a disabled cache helper
/// </summary>
/// <param name="httpCacheProvider"></param>
/// <param name="staticCacheProvider"></param>
/// <param name="requestCacheProvider"></param>
/// <param name="enableCache"></param>
private CacheHelper(
/// <summary>
/// Initializes a new instance based on the provided providers
/// </summary>
/// <param name="httpCacheProvider"></param>
/// <param name="staticCacheProvider"></param>
/// <param name="requestCacheProvider"></param>
/// <param name="isolatedCacheManager"></param>
public CacheHelper(
IRuntimeCacheProvider httpCacheProvider,
ICacheProvider staticCacheProvider,
ICacheProvider requestCacheProvider,
bool enableCache)
ICacheProvider requestCacheProvider,
IsolatedRuntimeCache isolatedCacheManager)
{
if (enableCache)
{
_httpCache = httpCacheProvider;
_staticCache = staticCacheProvider;
_requestCache = requestCacheProvider;
}
else
{
_httpCache = null;
_staticCache = null;
_requestCache = null;
}
_enableCache = enableCache;
if (httpCacheProvider == null) throw new ArgumentNullException("httpCacheProvider");
if (staticCacheProvider == null) throw new ArgumentNullException("staticCacheProvider");
if (requestCacheProvider == null) throw new ArgumentNullException("requestCacheProvider");
if (isolatedCacheManager == null) throw new ArgumentNullException("isolatedCacheManager");
_runtimeCache = httpCacheProvider;
_staticCache = staticCacheProvider;
_requestCache = requestCacheProvider;
_isolatedCacheManager = isolatedCacheManager;
}
/// <summary>
@@ -108,15 +101,15 @@ namespace Umbraco.Core
/// </summary>
public ICacheProvider RequestCache
{
get { return _enableCache ? _requestCache : _nullRequestCache; }
get { return _requestCache; }
}
/// <summary>
/// Returns the current Runtime cache
/// </summary>
public ICacheProvider StaticCache
{
get { return _enableCache ? _staticCache : _nullStaticCache; }
get { return _staticCache; }
}
/// <summary>
@@ -124,8 +117,16 @@ namespace Umbraco.Core
/// </summary>
public IRuntimeCacheProvider RuntimeCache
{
get { return _enableCache ? _httpCache : _nullHttpCache; }
get { return _runtimeCache; }
}
/// <summary>
/// Returns the current Isolated Runtime cache manager
/// </summary>
public IsolatedRuntimeCache IsolatedRuntimeCache
{
get { return _isolatedCacheManager; }
}
#region Legacy Runtime/Http Cache accessors
@@ -133,16 +134,11 @@ namespace Umbraco.Core
/// Clears the item in umbraco's runtime cache
/// </summary>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void ClearAllCache()
{
if (_enableCache == false)
{
_nullHttpCache.ClearAllCache();
}
else
{
_httpCache.ClearAllCache();
}
_runtimeCache.ClearAllCache();
_isolatedCacheManager.ClearAllCaches();
}
/// <summary>
@@ -150,16 +146,10 @@ namespace Umbraco.Core
/// </summary>
/// <param name="key">Key</param>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void ClearCacheItem(string key)
{
if (_enableCache == false)
{
_nullHttpCache.ClearCacheItem(key);
}
else
{
_httpCache.ClearCacheItem(key);
}
_runtimeCache.ClearCacheItem(key);
}
@@ -171,30 +161,17 @@ namespace Umbraco.Core
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
public void ClearCacheObjectTypes(string typeName)
{
if (_enableCache == false)
{
_nullHttpCache.ClearCacheObjectTypes(typeName);
}
else
{
_httpCache.ClearCacheObjectTypes(typeName);
}
_runtimeCache.ClearCacheObjectTypes(typeName);
}
/// <summary>
/// Clears all objects in the System.Web.Cache with the System.Type specified
/// </summary>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void ClearCacheObjectTypes<T>()
{
if (_enableCache == false)
{
_nullHttpCache.ClearCacheObjectTypes<T>();
}
else
{
_httpCache.ClearCacheObjectTypes<T>();
}
_runtimeCache.ClearCacheObjectTypes<T>();
}
/// <summary>
@@ -202,16 +179,10 @@ namespace Umbraco.Core
/// </summary>
/// <param name="keyStartsWith">The start of the key</param>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void ClearCacheByKeySearch(string keyStartsWith)
{
if (_enableCache == false)
{
_nullHttpCache.ClearCacheByKeySearch(keyStartsWith);
}
else
{
_httpCache.ClearCacheByKeySearch(keyStartsWith);
}
_runtimeCache.ClearCacheByKeySearch(keyStartsWith);
}
/// <summary>
@@ -219,29 +190,17 @@ namespace Umbraco.Core
/// </summary>
/// <param name="regexString"></param>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void ClearCacheByKeyExpression(string regexString)
{
if (_enableCache == false)
{
_nullHttpCache.ClearCacheByKeyExpression(regexString);
}
else
{
_httpCache.ClearCacheByKeyExpression(regexString);
}
_runtimeCache.ClearCacheByKeyExpression(regexString);
}
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public IEnumerable<T> GetCacheItemsByKeySearch<T>(string keyStartsWith)
{
if (_enableCache == false)
{
return _nullHttpCache.GetCacheItemsByKeySearch<T>(keyStartsWith);
}
else
{
return _httpCache.GetCacheItemsByKeySearch<T>(keyStartsWith);
}
return _runtimeCache.GetCacheItemsByKeySearch<T>(keyStartsWith);
}
/// <summary>
@@ -251,16 +210,10 @@ namespace Umbraco.Core
/// <param name="cacheKey"></param>
/// <returns></returns>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public TT GetCacheItem<TT>(string cacheKey)
{
if (_enableCache == false)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey);
}
else
{
return _httpCache.GetCacheItem<TT>(cacheKey);
}
return _runtimeCache.GetCacheItem<TT>(cacheKey);
}
/// <summary>
@@ -271,16 +224,11 @@ namespace Umbraco.Core
/// <param name="getCacheItem"></param>
/// <returns></returns>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public TT GetCacheItem<TT>(string cacheKey, Func<TT> getCacheItem)
{
if (_enableCache == false)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey, getCacheItem);
}
else
{
return _httpCache.GetCacheItem<TT>(cacheKey, getCacheItem);
}
return _runtimeCache.GetCacheItem<TT>(cacheKey, getCacheItem);
}
/// <summary>
@@ -292,17 +240,12 @@ namespace Umbraco.Core
/// <param name="getCacheItem"></param>
/// <returns></returns>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public TT GetCacheItem<TT>(string cacheKey,
TimeSpan timeout, Func<TT> getCacheItem)
{
if (_enableCache == false)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout);
}
else
{
return _httpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout);
}
return _runtimeCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout);
}
/// <summary>
@@ -315,18 +258,13 @@ namespace Umbraco.Core
/// <param name="getCacheItem"></param>
/// <returns></returns>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public TT GetCacheItem<TT>(string cacheKey,
CacheItemRemovedCallback refreshAction, TimeSpan timeout,
Func<TT> getCacheItem)
{
if (!_enableCache)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, removedCallback: refreshAction);
}
else
{
return _httpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, removedCallback: refreshAction);
}
return _runtimeCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, removedCallback: refreshAction);
}
/// <summary>
@@ -340,18 +278,13 @@ namespace Umbraco.Core
/// <param name="getCacheItem"></param>
/// <returns></returns>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public TT GetCacheItem<TT>(string cacheKey,
CacheItemPriority priority, CacheItemRemovedCallback refreshAction, TimeSpan timeout,
Func<TT> getCacheItem)
{
if (_enableCache == false)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, false, priority, refreshAction);
}
else
{
return _httpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, false, priority, refreshAction);
}
return _runtimeCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, false, priority, refreshAction);
}
/// <summary>
@@ -373,20 +306,13 @@ namespace Umbraco.Core
TimeSpan timeout,
Func<TT> getCacheItem)
{
if (_enableCache == false)
var cache = _runtimeCache as HttpRuntimeCacheProvider;
if (cache != null)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, false, priority, refreshAction, null);
}
else
{
var cache = _httpCache as HttpRuntimeCacheProvider;
if (cache != null)
{
var result = cache.GetCacheItem(cacheKey, () => getCacheItem(), timeout, false, priority, refreshAction, cacheDependency);
return result == null ? default(TT) : result.TryConvertTo<TT>().Result;
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
var result = cache.GetCacheItem(cacheKey, () => getCacheItem(), timeout, false, priority, refreshAction, cacheDependency);
return result == null ? default(TT) : result.TryConvertTo<TT>().Result;
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
}
/// <summary>
@@ -404,20 +330,13 @@ namespace Umbraco.Core
CacheDependency cacheDependency,
Func<TT> getCacheItem)
{
if (!_enableCache)
var cache = _runtimeCache as HttpRuntimeCacheProvider;
if (cache != null)
{
return _nullHttpCache.GetCacheItem<TT>(cacheKey, getCacheItem, null, false, priority, null, null);
}
else
{
var cache = _httpCache as HttpRuntimeCacheProvider;
if (cache != null)
{
var result = cache.GetCacheItem(cacheKey, () => getCacheItem(), null, false, priority, null, cacheDependency);
return result == null ? default(TT) : result.TryConvertTo<TT>().Result;
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
var result = cache.GetCacheItem(cacheKey, () => getCacheItem(), null, false, priority, null, cacheDependency);
return result == null ? default(TT) : result.TryConvertTo<TT>().Result;
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
}
/// <summary>
@@ -427,18 +346,14 @@ namespace Umbraco.Core
/// <param name="cacheKey"></param>
/// <param name="priority"></param>
/// <param name="getCacheItem"></param>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void InsertCacheItem<T>(string cacheKey,
CacheItemPriority priority,
Func<T> getCacheItem)
{
if (_enableCache == false)
{
_nullHttpCache.InsertCacheItem<T>(cacheKey, getCacheItem, priority: priority);
}
else
{
_httpCache.InsertCacheItem<T>(cacheKey, getCacheItem, priority: priority);
}
_runtimeCache.InsertCacheItem<T>(cacheKey, getCacheItem, priority: priority);
}
/// <summary>
@@ -449,19 +364,14 @@ namespace Umbraco.Core
/// <param name="priority"></param>
/// <param name="timeout">This will set an absolute expiration from now until the timeout</param>
/// <param name="getCacheItem"></param>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
[EditorBrowsable(EditorBrowsableState.Never)]
public void InsertCacheItem<T>(string cacheKey,
CacheItemPriority priority,
TimeSpan timeout,
Func<T> getCacheItem)
{
if (_enableCache == false)
{
_nullHttpCache.InsertCacheItem<T>(cacheKey, getCacheItem, timeout, priority: priority);
}
else
{
_httpCache.InsertCacheItem<T>(cacheKey, getCacheItem, timeout, priority: priority);
}
_runtimeCache.InsertCacheItem<T>(cacheKey, getCacheItem, timeout, priority: priority);
}
/// <summary>
@@ -480,19 +390,12 @@ namespace Umbraco.Core
TimeSpan timeout,
Func<T> getCacheItem)
{
if (_enableCache == false)
var cache = _runtimeCache as HttpRuntimeCacheProvider;
if (cache != null)
{
_nullHttpCache.InsertCacheItem<T>(cacheKey, getCacheItem, timeout, priority: priority, dependentFiles:null);
}
else
{
var cache = _httpCache as HttpRuntimeCacheProvider;
if (cache != null)
{
cache.InsertCacheItem(cacheKey, () => getCacheItem(), timeout, false, priority, null, cacheDependency);
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
cache.InsertCacheItem(cacheKey, () => getCacheItem(), timeout, false, priority, null, cacheDependency);
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
}
/// <summary>
@@ -513,19 +416,12 @@ namespace Umbraco.Core
TimeSpan? timeout,
Func<T> getCacheItem)
{
if (_enableCache == false)
var cache = _runtimeCache as HttpRuntimeCacheProvider;
if (cache != null)
{
_nullHttpCache.InsertCacheItem<T>(cacheKey, getCacheItem, timeout, false, priority, refreshAction, null);
}
else
{
var cache = _httpCache as HttpRuntimeCacheProvider;
if (cache != null)
{
cache.InsertCacheItem(cacheKey, () => getCacheItem(), timeout, false, priority, refreshAction, cacheDependency);
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
cache.InsertCacheItem(cacheKey, () => getCacheItem(), timeout, false, priority, refreshAction, cacheDependency);
}
throw new InvalidOperationException("Cannot use this obsoleted overload when the current provider is not of type " + typeof(HttpRuntimeCacheProvider));
}
#endregion
@@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Collections
{
/// <summary>
/// A List that can be deep cloned with deep cloned elements and can reset the collection's items dirty flags
/// </summary>
/// <typeparam name="T"></typeparam>
internal class DeepCloneableList<T> : List<T>, IDeepCloneable, IRememberBeingDirty
{
/// <summary>
/// Initializes a new instance of the <see cref="T:System.Collections.Generic.List`1"/> class that is empty and has the default initial capacity.
/// </summary>
public DeepCloneableList()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="T:System.Collections.Generic.List`1"/> class that contains elements copied from the specified collection and has sufficient capacity to accommodate the number of elements copied.
/// </summary>
/// <param name="collection">The collection whose elements are copied to the new list.</param><exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
public DeepCloneableList(IEnumerable<T> collection) : base(collection)
{
}
/// <summary>
/// Creates a new list and adds each element as a deep cloned element if it is of type IDeepCloneable
/// </summary>
/// <returns></returns>
public object DeepClone()
{
var newList = new DeepCloneableList<T>();
foreach (var item in this)
{
var dc = item as IDeepCloneable;
if (dc != null)
{
newList.Add((T) dc.DeepClone());
}
else
{
newList.Add(item);
}
}
return newList;
}
public bool IsDirty()
{
return this.OfType<IRememberBeingDirty>().Any(x => x.IsDirty());
}
public bool WasDirty()
{
return this.OfType<IRememberBeingDirty>().Any(x => x.WasDirty());
}
/// <summary>
/// Always returns false, the list has no properties we need to report
/// </summary>
/// <param name="propName"></param>
/// <returns></returns>
public bool IsPropertyDirty(string propName)
{
return false;
}
/// <summary>
/// Always returns false, the list has no properties we need to report
/// </summary>
/// <param name="propertyName"></param>
/// <returns></returns>
public bool WasPropertyDirty(string propertyName)
{
return false;
}
public void ResetDirtyProperties()
{
foreach (var dc in this.OfType<IRememberBeingDirty>())
{
dc.ResetDirtyProperties();
}
}
public void ForgetPreviouslyDirtyProperties()
{
foreach (var dc in this.OfType<IRememberBeingDirty>())
{
dc.ForgetPreviouslyDirtyProperties();
}
}
public void ResetDirtyProperties(bool rememberPreviouslyChangedProperties)
{
foreach (var dc in this.OfType<IRememberBeingDirty>())
{
dc.ResetDirtyProperties(rememberPreviouslyChangedProperties);
}
}
}
}
@@ -280,6 +280,18 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
}
}
[ConfigurationProperty("EnableInheritedDocumentTypes")]
internal InnerTextConfigurationElement<bool> EnableInheritedDocumentTypes
{
get
{
return new OptionalInnerTextConfigurationElement<bool>(
(InnerTextConfigurationElement<bool>) this["EnableInheritedDocumentTypes"],
//set the default
true);
}
}
string IContentSection.NotificationEmailAddress
{
get { return Notifications.NotificationEmailAddress; }
@@ -414,5 +426,10 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
{
get { return DefaultDocumentTypeProperty; }
}
bool IContentSection.EnableInheritedDocumentTypes
{
get { return EnableInheritedDocumentTypes; }
}
}
}
@@ -59,5 +59,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
bool GlobalPreviewStorageEnabled { get; }
string DefaultDocumentTypeProperty { get; }
bool EnableInheritedDocumentTypes { get; }
}
}
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Configuration
{
public class UmbracoVersion
{
private static readonly Version Version = new Version("7.3.4");
private static readonly Version Version = new Version("7.4.0");
/// <summary>
/// Gets the current version of Umbraco.
@@ -24,7 +24,7 @@ namespace Umbraco.Core.Configuration
/// Gets the version comment (like beta or RC).
/// </summary>
/// <value>The version comment.</value>
public static string CurrentComment { get { return ""; } }
public static string CurrentComment { get { return "beta2"; } }
// Get the version of the umbraco.dll by looking at a class in that dll
// Had to do it like this due to medium trust issues, see: http://haacked.com/archive/2010/11/04/assembly-location-and-medium-trust.aspx
+18 -2
View File
@@ -59,7 +59,7 @@
public const string Content = "content";
/// <summary>
/// alias for the media tree.
/// alias for the member tree.
/// </summary>
public const string Members = "member";
@@ -71,7 +71,7 @@
/// <summary>
/// alias for the datatype tree.
/// </summary>
public const string DataTypes = "datatype";
public const string DataTypes = "dataTypes";
/// <summary>
/// alias for the dictionary tree.
@@ -80,6 +80,22 @@
public const string Stylesheets = "stylesheets";
/// <summary>
/// alias for the document type tree.
/// </summary>
public const string DocumentTypes = "documentTypes";
/// <summary>
/// alias for the media type tree.
/// </summary>
public const string MediaTypes = "mediaTypes";
/// <summary>
/// alias for the member type tree.
/// </summary>
public const string MemberTypes = "memberTypes";
/// <summary>
/// alias for the template tree.
/// </summary>
+1 -1
View File
@@ -206,7 +206,7 @@ namespace Umbraco.Core
/// </summary>
internal const string StandardPropertiesGroupName = "Membership";
internal static Dictionary<string, PropertyType> GetStandardPropertyTypeStubs()
public static Dictionary<string, PropertyType> GetStandardPropertyTypeStubs()
{
return new Dictionary<string, PropertyType>
{
+53
View File
@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Umbraco.Core
{
public static partial class Constants
{
public static class Icons
{
/// <summary>
/// System contenttype icon
/// </summary>
public const string ContentType = "icon-arrangement";
/// <summary>
/// System datatype icon
/// </summary>
public const string DataType = "icon-autofill";
/// <summary>
/// System property editor icon
/// </summary>
public const string PropertyEditor = "icon-autofill";
/// <summary>
/// System macro icon
/// </summary>
public const string Macro = "icon-settings-alt";
/// <summary>
/// System member icon
/// </summary>
public const string Member = "icon-user";
/// <summary>
/// System member icon
/// </summary>
public const string MemberType = "icon-users";
/// <summary>
/// System member icon
/// </summary>
public const string Template = "icon-layout";
}
}
}
+52
View File
@@ -9,6 +9,36 @@ namespace Umbraco.Core
/// </summary>
public static class ObjectTypes
{
/// <summary>
/// Guid for a data type container
/// </summary>
public const string DataTypeContainer = "521231E3-8B37-469C-9F9D-51AFC91FEB7B";
/// <summary>
/// Guid for a data type container
/// </summary>
public static readonly Guid DataTypeContainerGuid = new Guid(DataTypeContainer);
/// <summary>
/// Guid for a doc type container
/// </summary>
public const string DocumentTypeContainer = "2F7A2769-6B0B-4468-90DD-AF42D64F7F16";
/// <summary>
/// Guid for a doc type container
/// </summary>
public static readonly Guid DocumentTypeContainerGuid = new Guid(DocumentTypeContainer);
/// <summary>
/// Guid for a doc type container
/// </summary>
public const string MediaTypeContainer = "42AEF799-B288-4744-9B10-BE144B73CDC4";
/// <summary>
/// Guid for a doc type container
/// </summary>
public static readonly Guid MediaTypeContainerGuid = new Guid(MediaTypeContainer);
/// <summary>
/// Guid for a Content Item object.
/// </summary>
@@ -29,6 +59,11 @@ namespace Umbraco.Core
/// </summary>
public const string DataType = "30A2A501-1978-4DDB-A57B-F7EFED43BA3C";
/// <summary>
/// Guid for a DataType object.
/// </summary>
public static readonly Guid DataTypeGuid = new Guid(DataType);
/// <summary>
/// Guid for a Document object.
/// </summary>
@@ -39,6 +74,11 @@ namespace Umbraco.Core
/// </summary>
public const string DocumentType = "A2CB7800-F571-4787-9638-BC48539A0EFB";
/// <summary>
/// Guid for a Document Type object.
/// </summary>
public static readonly Guid DocumentTypeGuid = new Guid(DocumentType);
/// <summary>
/// Guid for a Media object.
/// </summary>
@@ -54,6 +94,11 @@ namespace Umbraco.Core
/// </summary>
public const string MediaType = "4EA4382B-2F5A-4C2B-9587-AE9B3CF3602E";
/// <summary>
/// Guid for a Media Type object.
/// </summary>
public static readonly Guid MediaTypeGuid = new Guid(MediaType);
/// <summary>
/// Guid for a Member object.
/// </summary>
@@ -69,6 +114,11 @@ namespace Umbraco.Core
/// </summary>
public const string MemberType = "9B5416FB-E72F-45A9-A07B-5A9A2709CE43";
/// <summary>
/// Guid for a Member Type object.
/// </summary>
public static readonly Guid MemberTypeGuid = new Guid(MemberType);
/// <summary>
/// Guid for a Stylesheet object.
/// </summary>
@@ -92,6 +142,8 @@ namespace Umbraco.Core
/// Guid for a Lock object.
/// </summary>
public const string LockObject = "87A9F1FF-B1E4-4A25-BABB-465A4A47EC41";
}
}
}
@@ -158,6 +158,11 @@ namespace Umbraco.Core
/// </summary>
public const string IntegerAlias = "Umbraco.Integer";
/// <summary>
/// Alias for the Decimal datatype.
/// </summary>
public const string DecimalAlias = "Umbraco.Decimal";
/// <summary>
/// Alias for the listview datatype.
/// </summary>
@@ -0,0 +1,31 @@
namespace Umbraco.Core
{
public static partial class Constants
{
/// <summary>
/// Defines the identifiers for property-type groups conventions that are used within the Umbraco core.
/// </summary>
public static class PropertyTypeGroups
{
/// <summary>
/// Guid for a Image PropertyTypeGroup object.
/// </summary>
public const string Image = "79ED4D07-254A-42CF-8FA9-EBE1C116A596";
/// <summary>
/// Guid for a File PropertyTypeGroup object.
/// </summary>
public const string File = "50899F9C-023A-4466-B623-ABA9049885FE";
/// <summary>
/// Guid for a Image PropertyTypeGroup object.
/// </summary>
public const string Contents = "79995FA2-63EE-453C-A29B-2E66F324CDBE";
/// <summary>
/// Guid for a Image PropertyTypeGroup object.
/// </summary>
public const string Membership = "0756729D-D665-46E3-B84A-37ACEAA614F8";
}
}
}
+9 -2
View File
@@ -188,10 +188,16 @@ namespace Umbraco.Core
protected virtual CacheHelper CreateApplicationCache()
{
var cacheHelper = new CacheHelper(
new ObjectCacheRuntimeCacheProvider(),
//we need to have the dep clone runtime cache provider to ensure
//all entities are cached properly (cloned in and cloned out)
new DeepCloneRuntimeCacheProvider(new ObjectCacheRuntimeCacheProvider()),
new StaticCacheProvider(),
//we have no request based cache when not running in web-based context
new NullCacheProvider());
new NullCacheProvider(),
new IsolatedRuntimeCache(type =>
//we need to have the dep clone runtime cache provider to ensure
//all entities are cached properly (cloned in and cloned out)
new DeepCloneRuntimeCacheProvider(new ObjectCacheRuntimeCacheProvider())));
return cacheHelper;
}
@@ -431,6 +437,7 @@ namespace Umbraco.Core
new Lazy<Type>(() => typeof (DelimitedManifestValueValidator)),
new Lazy<Type>(() => typeof (EmailValidator)),
new Lazy<Type>(() => typeof (IntegerValidator)),
new Lazy<Type>(() => typeof (DecimalValidator)),
});
//by default we'll use the db server registrar unless the developer has the legacy
@@ -0,0 +1,21 @@
using System;
namespace Umbraco.Core.Exceptions
{
internal class DataOperationException<T> : Exception
{
public T Operation { get; private set; }
public DataOperationException(T operation, string message)
:base(message)
{
Operation = operation;
}
public DataOperationException(T operation)
: base("Data operation exception: " + operation)
{
Operation = operation;
}
}
}
@@ -3,22 +3,41 @@
namespace Umbraco.Core.Exceptions
{
public class InvalidCompositionException : Exception
{
public string ContentTypeAlias { get; set; }
{
public InvalidCompositionException(string contentTypeAlias, string addedCompositionAlias, string[] propertyTypeAliass)
{
ContentTypeAlias = contentTypeAlias;
AddedCompositionAlias = addedCompositionAlias;
PropertyTypeAliases = propertyTypeAliass;
}
public string AddedCompositionAlias { get; set; }
public InvalidCompositionException(string contentTypeAlias, string[] propertyTypeAliass)
{
ContentTypeAlias = contentTypeAlias;
PropertyTypeAliases = propertyTypeAliass;
}
public string PropertyTypeAlias { get; set; }
public string ContentTypeAlias { get; private set; }
public string AddedCompositionAlias { get; private set; }
public string[] PropertyTypeAliases { get; private set; }
public override string Message
{
get
{
return string.Format(
"InvalidCompositionException - ContentType with alias '{0}' was added as a Compsition to ContentType with alias '{1}', " +
"but there was a conflict on the PropertyType alias '{2}'. " +
return AddedCompositionAlias.IsNullOrWhiteSpace()
? string.Format(
"ContentType with alias '{0}' has an invalid composition " +
"and there was a conflict on the following PropertyTypes: '{1}'. " +
"PropertyTypes must have a unique alias across all Compositions in order to compose a valid ContentType Composition.",
AddedCompositionAlias, ContentTypeAlias, PropertyTypeAlias);
ContentTypeAlias, string.Join(", ", PropertyTypeAliases))
: string.Format(
"ContentType with alias '{0}' was added as a Composition to ContentType with alias '{1}', " +
"but there was a conflict on the following PropertyTypes: '{2}'. " +
"PropertyTypes must have a unique alias across all Compositions in order to compose a valid ContentType Composition.",
AddedCompositionAlias, ContentTypeAlias, string.Join(", ", PropertyTypeAliases));
}
}
}
+2 -2
View File
@@ -199,8 +199,8 @@ namespace Umbraco.Core.IO
using (var image = Image.FromStream(fs))
{
var fileNameThumb = string.IsNullOrWhiteSpace(fileNameAddition)
? string.Format("{0}_UMBRACOSYSTHUMBNAIL.jpg", Path.Substring(0, Path.LastIndexOf(".", StringComparison.Ordinal)))
: string.Format("{0}_{1}.jpg", Path.Substring(0, Path.LastIndexOf(".", StringComparison.Ordinal)), fileNameAddition);
? string.Format("{0}_UMBRACOSYSTHUMBNAIL." + Extension, Path.Substring(0, Path.LastIndexOf(".", StringComparison.Ordinal)))
: string.Format("{0}_{1}." + Extension, Path.Substring(0, Path.LastIndexOf(".", StringComparison.Ordinal)), fileNameAddition);
var thumbnail = maxWidthHeight == -1
? ImageHelper.GenerateThumbnail(image, width, height, fileNameThumb, Extension, _fs)
+5 -1
View File
@@ -66,7 +66,7 @@ namespace Umbraco.Core.IO
return viewContent;
}
internal static string GetDefaultFileContent(string layoutPageAlias = null)
internal static string GetDefaultFileContent(string layoutPageAlias = null, string modelClassName = null)
{
var design = @"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
@@ -76,6 +76,10 @@ namespace Umbraco.Core.IO
if (layoutPageAlias.IsNullOrWhiteSpace() == false)
design = design.Replace("null", string.Format("\"{0}.cshtml\"", layoutPageAlias));
if (modelClassName.IsNullOrWhiteSpace() == false)
design = design.Replace(".UmbracoTemplatePage", string.Format(".UmbracoTemplatePage<{0}>", modelClassName));
return design;
}
+6 -2
View File
@@ -11,8 +11,12 @@ namespace Umbraco.Core.Macros
/// </summary>
internal class MacroTagParser
{
private static readonly Regex MacroRteContent = new Regex(@"(<!--\s*?)(<\?UMBRACO_MACRO.*?/>)(\s*?-->)", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
private static readonly Regex MacroPersistedFormat = new Regex(@"(<\?UMBRACO_MACRO (?:.+?)?macroAlias=[""']([^""\'\n\r]+?)[""'].+?)(?:/>|>.*?</\?UMBRACO_MACRO>)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex MacroRteContent = new Regex(@"(<!--\s*?)(<\?UMBRACO_MACRO.*?/>)(\s*?-->)",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Singleline);
private static readonly Regex MacroPersistedFormat =
new Regex(@"(<\?UMBRACO_MACRO (?:.+?)??macroAlias=[""']([^""\'\n\r]+?)[""'].+?)(?:/>|>.*?</\?UMBRACO_MACRO>)",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Singleline);
/// <summary>
/// This formats the persisted string to something useful for the rte so that the macro renders properly since we
@@ -75,7 +75,7 @@ namespace Umbraco.Core.Media.Exif
{
if (items.ContainsKey (key))
items.Remove (key);
if (key == ExifTag.WindowsTitle || key == ExifTag.WindowsTitle || key == ExifTag.WindowsComment || key == ExifTag.WindowsAuthor || key == ExifTag.WindowsKeywords || key == ExifTag.WindowsSubject) {
if (key == ExifTag.WindowsTitle || key == ExifTag.WindowsComment || key == ExifTag.WindowsAuthor || key == ExifTag.WindowsKeywords || key == ExifTag.WindowsSubject) {
items.Add (key, new WindowsByteString (key, value));
} else {
items.Add (key, new ExifAscii (key, value, parent.Encoding));
+37 -16
View File
@@ -59,7 +59,7 @@ namespace Umbraco.Core.Media
var fileHeight = image.Height;
return new Size(fileWidth, fileHeight);
}
}
public static string GetMimeType(this Image image)
@@ -79,22 +79,22 @@ namespace Umbraco.Core.Media
/// <param name="additionalThumbSizes"></param>
/// <returns></returns>
internal static IEnumerable<ResizedImage> GenerateMediaThumbnails(
IFileSystem fs,
string fileName,
string extension,
IFileSystem fs,
string fileName,
string extension,
Image originalImage,
IEnumerable<int> additionalThumbSizes)
{
var result = new List<ResizedImage>();
var allSizesDictionary = new Dictionary<int,string> {{100,"thumb"}, {500,"big-thumb"}};
var allSizesDictionary = new Dictionary<int, string> { { 100, "thumb" }, { 500, "big-thumb" } };
//combine the static dictionary with the additional sizes with only unique values
var allSizes = allSizesDictionary.Select(kv => kv.Key)
.Union(additionalThumbSizes.Where(x => x > 0).Distinct());
var sizesDictionary = allSizes.ToDictionary(s => s, s => allSizesDictionary.ContainsKey(s) ? allSizesDictionary[s]: "");
var sizesDictionary = allSizes.ToDictionary(s => s, s => allSizesDictionary.ContainsKey(s) ? allSizesDictionary[s] : "");
foreach (var s in sizesDictionary)
{
@@ -121,9 +121,9 @@ namespace Umbraco.Core.Media
/// <returns></returns>
private static ResizedImage Resize(IFileSystem fileSystem, string path, string extension, int maxWidthHeight, string fileNameAddition, Image originalImage)
{
var fileNameThumb = String.IsNullOrEmpty(fileNameAddition)
? string.Format("{0}_UMBRACOSYSTHUMBNAIL.jpg", path.Substring(0, path.LastIndexOf(".")))
: string.Format("{0}_{1}.jpg", path.Substring(0, path.LastIndexOf(".")), fileNameAddition);
var fileNameThumb = string.IsNullOrWhiteSpace(fileNameAddition)
? string.Format("{0}_UMBRACOSYSTHUMBNAIL." + extension, path.Substring(0, path.LastIndexOf(".", StringComparison.Ordinal)))
: string.Format("{0}_{1}." + extension, path.Substring(0, path.LastIndexOf(".", StringComparison.Ordinal)), fileNameAddition);
var thumb = GenerateThumbnail(
originalImage,
@@ -190,9 +190,9 @@ namespace Umbraco.Core.Media
//use best quality
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
}
g.SmoothingMode = SmoothingMode.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
@@ -202,10 +202,29 @@ namespace Umbraco.Core.Media
// Copy metadata
var imageEncoders = ImageCodecInfo.GetImageEncoders();
var codec = extension.ToLower() == "png" || extension.ToLower() == "gif"
? imageEncoders.Single(t => t.MimeType.Equals("image/png"))
: imageEncoders.Single(t => t.MimeType.Equals("image/jpeg"));
ImageCodecInfo codec;
switch (extension.ToLower())
{
case "png":
codec = imageEncoders.Single(t => t.MimeType.Equals("image/png"));
break;
case "gif":
codec = imageEncoders.Single(t => t.MimeType.Equals("image/gif"));
break;
case "tif":
case "tiff":
codec = imageEncoders.Single(t => t.MimeType.Equals("image/tiff"));
break;
case "bmp":
codec = imageEncoders.Single(t => t.MimeType.Equals("image/bmp"));
break;
// TODO: this is dirty, defaulting to jpg but the return value of this thing is used all over the
// place so left it here, but it needs to not set a codec if it doesn't know which one to pick
// Note: when fixing this: both .jpg and .jpeg should be handled as extensions
default:
codec = imageEncoders.Single(t => t.MimeType.Equals("image/jpeg"));
break;
}
// Set compresion ratio to 90%
var ep = new EncoderParameters();
@@ -213,12 +232,14 @@ namespace Umbraco.Core.Media
// Save the new image using the dimensions of the image
var predictableThumbnailName = thumbnailFileName.Replace("UMBRACOSYSTHUMBNAIL", maxWidthHeight.ToString(CultureInfo.InvariantCulture));
var predictableThumbnailNameJpg = predictableThumbnailName.Substring(0, predictableThumbnailName.LastIndexOf(".", StringComparison.Ordinal)) + ".jpg";
using (var ms = new MemoryStream())
{
bp.Save(ms, codec, ep);
ms.Seek(0, 0);
fs.AddFile(predictableThumbnailName, ms);
fs.AddFile(predictableThumbnailNameJpg, ms);
}
// TODO: Remove this, this is ONLY here for backwards compatibility but it is essentially completely unusable see U4-5385
-12
View File
@@ -340,18 +340,6 @@ namespace Umbraco.Core.Models
}
}
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if(Key == Guid.Empty)
Key = Guid.NewGuid();
}
/// <summary>
/// Method to call when Entity is being updated
/// </summary>
-13
View File
@@ -137,19 +137,6 @@ namespace Umbraco.Core.Models
return result;
}
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
/// <summary>
/// Creates a deep clone of the current entity with its identity/alias and it's property identities reset
/// </summary>
@@ -0,0 +1,17 @@
namespace Umbraco.Core.Models
{
/// <summary>
/// Used when determining available compositions for a given content type
/// </summary>
internal class ContentTypeAvailableCompositionsResult
{
public ContentTypeAvailableCompositionsResult(IContentTypeComposition composition, bool allowed)
{
Composition = composition;
Allowed = allowed;
}
public IContentTypeComposition Composition { get; private set; }
public bool Allowed { get; private set; }
}
}
@@ -0,0 +1,26 @@
using System.Collections.Generic;
using System.Linq;
namespace Umbraco.Core.Models
{
/// <summary>
/// Used when determining available compositions for a given content type
/// </summary>
internal class ContentTypeAvailableCompositionsResults
{
public ContentTypeAvailableCompositionsResults()
{
Ancestors = Enumerable.Empty<IContentTypeComposition>();
Results = Enumerable.Empty<ContentTypeAvailableCompositionsResult>();
}
public ContentTypeAvailableCompositionsResults(IEnumerable<IContentTypeComposition> ancestors, IEnumerable<ContentTypeAvailableCompositionsResult> results)
{
Ancestors = ancestors;
Results = results;
}
public IEnumerable<IContentTypeComposition> Ancestors { get; private set; }
public IEnumerable<ContentTypeAvailableCompositionsResult> Results { get; private set; }
}
}
+37 -37
View File
@@ -26,7 +26,7 @@ namespace Umbraco.Core.Models
private string _alias;
private string _description;
private int _sortOrder;
private string _icon = "folder.png";
private string _icon = "icon-folder";
private string _thumbnail = "folder.png";
private int _creatorId;
private bool _allowedAsRoot;
@@ -373,43 +373,35 @@ namespace Umbraco.Core.Models
{
_propertyGroups = value;
_propertyGroups.CollectionChanged += PropertyGroupsChanged;
PropertyGroupsChanged(_propertyGroups, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
}
/// <summary>
/// List of PropertyTypes available on this ContentType.
/// This list aggregates PropertyTypes across the PropertyGroups.
/// Gets all property types, across all property groups.
/// </summary>
/// <remarks>
///
/// The setter is used purely to set the property types that DO NOT belong to a group!
///
/// Marked as DoNotClone because the result of this property is not the natural result of the data, it is
/// a union of data so when auto-cloning if the setter is used it will be setting the unnatural result of the
/// data. We manually clone this instead.
/// </remarks>
[IgnoreDataMember]
[DoNotClone]
public virtual IEnumerable<PropertyType> PropertyTypes
{
get
{
var types = _propertyTypes.Union(PropertyGroups.SelectMany(x => x.PropertyTypes));
return types;
}
internal set
{
_propertyTypes = new PropertyTypeCollection(value);
_propertyTypes.CollectionChanged += PropertyTypesChanged;
return _propertyTypes.Union(PropertyGroups.SelectMany(x => x.PropertyTypes));
}
}
/// <summary>
/// Returns the property type collection containing types that are non-groups - used for tests
/// Gets or sets the property types that are not in a group.
/// </summary>
internal IEnumerable<PropertyType> NonGroupedPropertyTypes
public IEnumerable<PropertyType> NoGroupPropertyTypes
{
get { return _propertyTypes; }
set
{
_propertyTypes = new PropertyTypeCollection(value);
_propertyTypes.CollectionChanged += PropertyTypesChanged;
PropertyTypesChanged(_propertyTypes, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
}
/// <summary>
@@ -460,11 +452,6 @@ namespace Umbraco.Core.Models
/// <returns>Returns <c>True</c> if PropertyType was added, otherwise <c>False</c></returns>
public bool AddPropertyType(PropertyType propertyType)
{
if (propertyType.HasIdentity == false)
{
propertyType.Key = Guid.NewGuid();
}
if (PropertyTypeExists(propertyType.Alias) == false)
{
_propertyTypes.Add(propertyType);
@@ -480,24 +467,37 @@ namespace Umbraco.Core.Models
/// <param name="propertyTypeAlias">Alias of the PropertyType to move</param>
/// <param name="propertyGroupName">Name of the PropertyGroup to move the PropertyType to</param>
/// <returns></returns>
/// <remarks>If <paramref name="propertyGroupName"/> is null then the property is moved back to
/// "generic properties" ie does not have a tab anymore.</remarks>
public bool MovePropertyType(string propertyTypeAlias, string propertyGroupName)
{
if (PropertyTypes.Any(x => x.Alias == propertyTypeAlias) == false || PropertyGroups.Any(x => x.Name == propertyGroupName) == false)
return false;
// note: not dealing with alias casing at all here?
var propertyType = PropertyTypes.First(x => x.Alias == propertyTypeAlias);
//The PropertyType already belongs to a PropertyGroup, so we have to remove the PropertyType from that group
if (PropertyGroups.Any(x => x.PropertyTypes.Any(y => y.Alias == propertyTypeAlias)))
{
var oldPropertyGroup = PropertyGroups.First(x => x.PropertyTypes.Any(y => y.Alias == propertyTypeAlias));
oldPropertyGroup.PropertyTypes.RemoveItem(propertyTypeAlias);
}
// get property, ensure it exists
var propertyType = PropertyTypes.FirstOrDefault(x => x.Alias == propertyTypeAlias);
if (propertyType == null) return false;
// get new group, if required, and ensure it exists
var newPropertyGroup = propertyGroupName == null
? null
: PropertyGroups.FirstOrDefault(x => x.Name == propertyGroupName);
if (propertyGroupName != null && newPropertyGroup == null) return false;
// get old group
var oldPropertyGroup = PropertyGroups.FirstOrDefault(x =>
x.PropertyTypes.Any(y => y.Alias == propertyTypeAlias));
// reset PropertyGroupId, which will be re-evaluated when the content type
// is saved - what is important is group.PropertyTypes - see code in
// ContentTypeBaseRepository.PersistUpdatedBaseContentType
propertyType.PropertyGroupId = new Lazy<int>(() => default(int));
propertyType.ResetDirtyProperties();
propertyType.ResetDirtyProperties(); // PropertyGroupId must not be dirty
var propertyGroup = PropertyGroups.First(x => x.Name == propertyGroupName);
propertyGroup.PropertyTypes.Add(propertyType);
// remove from old group, if any - add to new group, if any
if (oldPropertyGroup != null)
oldPropertyGroup.PropertyTypes.RemoveItem(propertyTypeAlias);
if (newPropertyGroup != null)
newPropertyGroup.PropertyTypes.Add(propertyType);
return true;
}
@@ -23,8 +23,8 @@ namespace Umbraco.Core.Models
protected ContentTypeCompositionBase(IContentTypeComposition parent)
: this(parent, null)
{
}
{
}
protected ContentTypeCompositionBase(IContentTypeComposition parent, string alias)
: base(parent, alias)
@@ -37,16 +37,21 @@ namespace Umbraco.Core.Models
x => x.ContentTypeComposition);
/// <summary>
/// List of ContentTypes that make up a composition of PropertyGroups and PropertyTypes for the current ContentType
/// Gets or sets the content types that compose this content type.
/// </summary>
[DataMember]
public IEnumerable<IContentTypeComposition> ContentTypeComposition
{
get { return _contentTypeComposition; }
set
{
_contentTypeComposition = value.ToList();
OnPropertyChanged(ContentTypeCompositionSelector);
}
}
/// <summary>
/// Returns a list of <see cref="PropertyGroup"/> objects from the composition
/// Gets the property groups for the entire composition.
/// </summary>
[IgnoreDataMember]
public IEnumerable<PropertyGroup> CompositionPropertyGroups
@@ -59,7 +64,7 @@ namespace Umbraco.Core.Models
}
/// <summary>
/// Returns a list of <see cref="PropertyType"/> objects from the composition
/// Gets the property types for the entire composition.
/// </summary>
[IgnoreDataMember]
public IEnumerable<PropertyType> CompositionPropertyTypes
@@ -72,10 +77,10 @@ namespace Umbraco.Core.Models
}
/// <summary>
/// Adds a new ContentType to the list of composite ContentTypes
/// Adds a content type to the composition.
/// </summary>
/// <param name="contentType"><see cref="ContentType"/> to add</param>
/// <returns>True if ContentType was added, otherwise returns False</returns>
/// <param name="contentType">The content type to add.</param>
/// <returns>True if the content type was added, otherwise false.</returns>
public bool AddContentType(IContentTypeComposition contentType)
{
if (contentType.ContentTypeComposition.Any(x => x.CompositionAliases().Any(ContentTypeCompositionExists)))
@@ -94,13 +99,7 @@ namespace Umbraco.Core.Models
.Select(p => p.Alias)).ToList();
if (conflictingPropertyTypeAliases.Any())
throw new InvalidCompositionException
{
AddedCompositionAlias = contentType.Alias,
ContentTypeAlias = Alias,
PropertyTypeAlias =
string.Join(", ", conflictingPropertyTypeAliases)
};
throw new InvalidCompositionException(Alias, contentType.Alias, conflictingPropertyTypeAliases.ToArray());
_contentTypeComposition.Add(contentType);
OnPropertyChanged(ContentTypeCompositionSelector);
@@ -110,10 +109,10 @@ namespace Umbraco.Core.Models
}
/// <summary>
/// Removes a ContentType with the supplied alias from the the list of composite ContentTypes
/// Removes a content type with a specified alias from the composition.
/// </summary>
/// <param name="alias">Alias of a <see cref="ContentType"/></param>
/// <returns>True if ContentType was removed, otherwise returns False</returns>
/// <param name="alias">The alias of the content type to remove.</param>
/// <returns>True if the content type was removed, otherwise false.</returns>
public bool RemoveContentType(string alias)
{
if (ContentTypeCompositionExists(alias))
@@ -123,10 +122,10 @@ namespace Umbraco.Core.Models
return false;
RemovedContentTypeKeyTracker.Add(contentTypeComposition.Id);
//If the ContentType we are removing has Compositions of its own these needs to be removed as well
var compositionIdsToRemove = contentTypeComposition.CompositionIds().ToList();
if(compositionIdsToRemove.Any())
if (compositionIdsToRemove.Any())
RemovedContentTypeKeyTracker.AddRange(compositionIdsToRemove);
OnPropertyChanged(ContentTypeCompositionSelector);
@@ -163,31 +162,44 @@ namespace Umbraco.Core.Models
/// <summary>
/// Adds a PropertyGroup.
/// This method will also check if a group already exists with the same name and link it to the parent.
/// </summary>
/// <param name="groupName">Name of the PropertyGroup to add</param>
/// <returns>Returns <c>True</c> if a PropertyGroup with the passed in name was added, otherwise <c>False</c></returns>
public override bool AddPropertyGroup(string groupName)
{
if (PropertyGroups.Any(x => x.Name == groupName))
return false;
return AddAndReturnPropertyGroup(groupName) != null;
}
var propertyGroup = new PropertyGroup {Name = groupName, SortOrder = 0};
private PropertyGroup AddAndReturnPropertyGroup(string name)
{
// ensure we don't have it already
if (PropertyGroups.Any(x => x.Name == name))
return null;
if (CompositionPropertyGroups.Any(x => x.Name == groupName))
// create the new group
var group = new PropertyGroup { Name = name, SortOrder = 0 };
// check if it is inherited - there might be more than 1 but we want the 1st, to
// reuse its sort order - if there are more than 1 and they have different sort
// orders... there isn't much we can do anyways
var inheritGroup = CompositionPropertyGroups.FirstOrDefault(x => x.Name == name);
if (inheritGroup == null)
{
var firstGroup = CompositionPropertyGroups.First(x => x.Name == groupName && x.ParentId.HasValue == false);
propertyGroup.SetLazyParentId(new Lazy<int?>(() => firstGroup.Id));
// no, just local, set sort order
var lastGroup = PropertyGroups.LastOrDefault();
if (lastGroup != null)
group.SortOrder = lastGroup.SortOrder + 1;
}
else
{
// yes, inherited, re-use sort order
group.SortOrder = inheritGroup.SortOrder;
}
if (PropertyGroups.Any())
{
var last = PropertyGroups.Last();
propertyGroup.SortOrder = last.SortOrder + 1;
}
// add
PropertyGroups.Add(group);
PropertyGroups.Add(propertyGroup);
return true;
return group;
}
/// <summary>
@@ -198,39 +210,22 @@ namespace Umbraco.Core.Models
/// <returns>Returns <c>True</c> if PropertyType was added, otherwise <c>False</c></returns>
public override bool AddPropertyType(PropertyType propertyType, string propertyGroupName)
{
if (propertyType.HasIdentity == false)
{
propertyType.Key = Guid.NewGuid();
}
// ensure no duplicate alias - over all composition properties
if (PropertyTypeExists(propertyType.Alias))
return false;
if (PropertyTypeExists(propertyType.Alias) == false)
{
if (PropertyGroups.Contains(propertyGroupName))
{
propertyType.PropertyGroupId = new Lazy<int>(() => PropertyGroups[propertyGroupName].Id);
PropertyGroups[propertyGroupName].PropertyTypes.Add(propertyType);
}
else
{
//If the PropertyGroup doesn't already exist we create a new one
var propertyTypes = new List<PropertyType> { propertyType };
var propertyGroup = new PropertyGroup(new PropertyTypeCollection(propertyTypes)) { Name = propertyGroupName, SortOrder = 1 };
//and check if its an inherited PropertyGroup, which exists in the composition
if (CompositionPropertyGroups.Any(x => x.Name == propertyGroupName))
{
var parentPropertyGroup = CompositionPropertyGroups.First(x => x.Name == propertyGroupName && x.ParentId.HasValue == false);
propertyGroup.SortOrder = parentPropertyGroup.SortOrder;
//propertyGroup.ParentId = parentPropertyGroup.Id;
propertyGroup.SetLazyParentId(new Lazy<int?>(() => parentPropertyGroup.Id));
}
// get and ensure a group local to this content type
var group = PropertyGroups.Contains(propertyGroupName)
? PropertyGroups[propertyGroupName]
: AddAndReturnPropertyGroup(propertyGroupName);
if (group == null)
return false;
PropertyGroups.Add(propertyGroup);
}
// add property to group
propertyType.PropertyGroupId = new Lazy<int>(() => group.Id);
group.PropertyTypes.Add(propertyType);
return true;
}
return false;
return true;
}
/// <summary>
@@ -21,6 +21,8 @@ namespace Umbraco.Core.Models
[EnumMember]
Integer,
[EnumMember]
Date
Date,
[EnumMember]
Decimal
}
}
@@ -49,8 +49,6 @@ namespace Umbraco.Core.Models
_additionalData = new Dictionary<string, object>();
}
[Obsolete("Don't use this, parentId is always -1 for data types")]
[EditorBrowsable(EditorBrowsableState.Never)]
public DataTypeDefinition(int parentId, string propertyEditorAlias)
{
_parentId = parentId;
@@ -267,13 +265,5 @@ namespace Umbraco.Core.Models
{
get { return _additionalData; }
}
internal override void AddingEntity()
{
base.AddingEntity();
if(Key == default(Guid))
Key = Guid.NewGuid();
}
}
}
@@ -78,6 +78,12 @@ namespace Umbraco.Core.Models
}
else
{
//skip instead of trying to create instance of abstract or interface
if (propertyInfo.PropertyType.IsAbstract || propertyInfo.PropertyType.IsInterface)
{
continue;
}
//its a custom IEnumerable, we'll try to create it
try
{
+12 -12
View File
@@ -14,6 +14,7 @@ namespace Umbraco.Core.Models
[DataContract(IsReference = true)]
public class DictionaryItem : Entity, IDictionaryItem
{
public Func<int, ILanguage> GetLanguage { get; set; }
private Guid? _parentId;
private string _itemKey;
private IEnumerable<IDictionaryTranslation> _translations;
@@ -78,7 +79,17 @@ namespace Umbraco.Core.Models
{
SetPropertyValueAndDetectChanges(o =>
{
_translations = value;
var asArray = value.ToArray();
//ensure the language callback is set on each translation
if (GetLanguage != null)
{
foreach (var translation in asArray.OfType<DictionaryTranslation>())
{
translation.GetLanguage = GetLanguage;
}
}
_translations = asArray;
return _translations;
}, _translations, TranslationsSelector,
//Custom comparer for enumerable
@@ -87,16 +98,5 @@ namespace Umbraco.Core.Models
enumerable => enumerable.GetHashCode()));
}
}
/// <summary>
/// Method to call before inserting a new entity in the db
/// </summary>
internal override void AddingEntity()
{
base.AddingEntity();
Key = Guid.NewGuid();
}
}
}
@@ -13,13 +13,18 @@ namespace Umbraco.Core.Models
[DataContract(IsReference = true)]
public class DictionaryTranslation : Entity, IDictionaryTranslation
{
internal Func<int, ILanguage> GetLanguage { get; set; }
private ILanguage _language;
private string _value;
//note: this will be memberwise cloned
private int _languageId;
public DictionaryTranslation(ILanguage language, string value)
{
if (language == null) throw new ArgumentNullException("language");
_language = language;
_languageId = _language.Id;
_value = value;
}
@@ -27,6 +32,20 @@ namespace Umbraco.Core.Models
{
if (language == null) throw new ArgumentNullException("language");
_language = language;
_languageId = _language.Id;
_value = value;
Key = uniqueId;
}
internal DictionaryTranslation(int languageId, string value)
{
_languageId = languageId;
_value = value;
}
internal DictionaryTranslation(int languageId, string value, Guid uniqueId)
{
_languageId = languageId;
_value = value;
Key = uniqueId;
}
@@ -37,20 +56,43 @@ namespace Umbraco.Core.Models
/// <summary>
/// Gets or sets the <see cref="Language"/> for the translation
/// </summary>
/// <remarks>
/// Marked as DoNotClone - TODO: this member shouldn't really exist here in the first place, the DictionaryItem
/// class will have a deep hierarchy of objects which all get deep cloned which we don't want. This should have simply
/// just referenced a language ID not the actual language object. In v8 we need to fix this.
/// We're going to have to do the same hacky stuff we had to do with the Template/File contents so that this is returned
/// on a callback.
/// </remarks>
[DataMember]
[DoNotClone]
public ILanguage Language
{
get { return _language; }
get
{
if (_language != null)
return _language;
// else, must lazy-load
if (GetLanguage != null && _languageId > 0)
_language = GetLanguage(_languageId);
return _language;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_language = value;
_languageId = _language == null ? -1 : _language.Id;
return _language;
}, _language, LanguageSelector);
}
}
public int LanguageId
{
get { return _languageId; }
}
/// <summary>
/// Gets or sets the translated text
/// </summary>
@@ -68,5 +110,23 @@ namespace Umbraco.Core.Models
}
}
public override object DeepClone()
{
var clone = (DictionaryTranslation)base.DeepClone();
// clear fields that were memberwise-cloned and that we don't want to clone
clone._language = null;
// turn off change tracking
clone.DisableChangeTracking();
// this shouldn't really be needed since we're not tracking
clone.ResetDirtyProperties(false);
// re-enable tracking
clone.EnableChangeTracking();
return clone;
}
}
}
+4 -2
View File
@@ -62,9 +62,9 @@ namespace Umbraco.Core.Models.EntityBase
{
get
{
// if an entity does NOT have a UniqueId yet, assign one now
if (_key == Guid.Empty)
return _id.ToGuid();
_key = Guid.NewGuid();
return _key;
}
set
@@ -136,6 +136,7 @@ namespace Umbraco.Core.Models.EntityBase
{
_hasIdentity = false;
_id = default(int);
_key = Guid.Empty;
}
/// <summary>
@@ -242,6 +243,7 @@ namespace Umbraco.Core.Models.EntityBase
{
//Memberwise clone on Entity will work since it doesn't have any deep elements
// for any sub class this will work for standard properties as well that aren't complex object's themselves.
var ignored = this.Key; // ensure that 'this' has a key, before cloning
var clone = (Entity)MemberwiseClone();
//ensure the clone has it's own dictionaries
clone.ResetChangeTrackingCollections();
@@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace Umbraco.Core.Models
{
/// <summary>
/// Represents a folder for organizing entities such as content types and data types.
/// </summary>
public sealed class EntityContainer : UmbracoEntity
{
private readonly Guid _containedObjectType;
private static readonly Dictionary<Guid, Guid> ObjectTypeMap = new Dictionary<Guid, Guid>
{
{ Constants.ObjectTypes.DataTypeGuid, Constants.ObjectTypes.DataTypeContainerGuid },
{ Constants.ObjectTypes.DocumentTypeGuid, Constants.ObjectTypes.DocumentTypeContainerGuid },
{ Constants.ObjectTypes.MediaTypeGuid, Constants.ObjectTypes.MediaTypeContainerGuid }
};
/// <summary>
/// Initializes a new instance of an <see cref="EntityContainer"/> class.
/// </summary>
public EntityContainer(Guid containedObjectType)
{
if (ObjectTypeMap.ContainsKey(containedObjectType) == false)
throw new ArgumentException("Not a contained object type.", "containedObjectType");
_containedObjectType = containedObjectType;
ParentId = -1;
Path = "-1";
Level = 0;
SortOrder = 0;
}
/// <summary>
/// Initializes a new instance of an <see cref="EntityContainer"/> class.
/// </summary>
internal EntityContainer(int id, Guid uniqueId, int parentId, string path, int level, int sortOrder, Guid containedObjectType, string name, int userId)
: this(containedObjectType)
{
Id = id;
Key = uniqueId;
ParentId = parentId;
Name = name;
Path = path;
Level = level;
SortOrder = sortOrder;
CreatorId = userId;
}
/// <summary>
/// Gets or sets the node object type of the contained objects.
/// </summary>
public Guid ContainedObjectType
{
get { return _containedObjectType; }
}
/// <summary>
/// Gets the node object type of the container objects.
/// </summary>
public Guid ContainerObjectType
{
get { return ObjectTypeMap[_containedObjectType]; }
}
/// <summary>
/// Gets the container object type corresponding to a contained object type.
/// </summary>
/// <param name="containedObjectType">The contained object type.</param>
/// <returns>The object type of containers containing objects of the contained object type.</returns>
public static Guid GetContainerObjectType(Guid containedObjectType)
{
if (ObjectTypeMap.ContainsKey(containedObjectType) == false)
throw new ArgumentException("Not a contained object type.", "containedObjectType");
return ObjectTypeMap[containedObjectType];
}
/// <summary>
/// Gets the contained object type corresponding to a container object type.
/// </summary>
/// <param name="containerObjectType">The container object type.</param>
/// <returns>The object type of objects that containers of the container object type can contain.</returns>
public static Guid GetContainedObjectType(Guid containerObjectType)
{
var contained = ObjectTypeMap.FirstOrDefault(x => x.Value == containerObjectType).Key;
if (contained == null)
throw new ArgumentException("Not a container object type.", "containerObjectType");
return contained;
}
}
}
+6 -1
View File
@@ -54,10 +54,15 @@ namespace Umbraco.Core.Models
PropertyGroupCollection PropertyGroups { get; set; }
/// <summary>
/// Gets an enumerable list of Property Types aggregated for all groups
/// Gets all property types, across all property groups.
/// </summary>
IEnumerable<PropertyType> PropertyTypes { get; }
/// <summary>
/// Gets or sets the property types that are not in a group.
/// </summary>
IEnumerable<PropertyType> NoGroupPropertyTypes { get; set; }
/// <summary>
/// Removes a PropertyType from the current ContentType
/// </summary>
@@ -8,17 +8,17 @@ namespace Umbraco.Core.Models
public interface IContentTypeComposition : IContentTypeBase
{
/// <summary>
/// Gets a list of ContentTypes that make up a composition of PropertyGroups and PropertyTypes for the current ContentType
/// Gets or sets the content types that compose this content type.
/// </summary>
IEnumerable<IContentTypeComposition> ContentTypeComposition { get; }
IEnumerable<IContentTypeComposition> ContentTypeComposition { get; set; }
/// <summary>
/// Gets a list of <see cref="PropertyGroup"/> objects from the composition
/// Gets the property groups for the entire composition.
/// </summary>
IEnumerable<PropertyGroup> CompositionPropertyGroups { get; }
/// <summary>
/// Gets a list of <see cref="PropertyType"/> objects from the composition
/// Gets the property types for the entire composition.
/// </summary>
IEnumerable<PropertyType> CompositionPropertyTypes { get; }
@@ -12,6 +12,8 @@ namespace Umbraco.Core.Models
[DataMember]
ILanguage Language { get; set; }
int LanguageId { get; }
/// <summary>
/// Gets or sets the translated text
/// </summary>
@@ -0,0 +1,20 @@
using AutoMapper;
namespace Umbraco.Core.Models.Mapping
{
internal static class MappingExpressionExtensions
{
/// <summary>
/// Ignores all unmapped members by default - Use with caution!
/// </summary>
/// <typeparam name="TSource"></typeparam>
/// <typeparam name="TDest"></typeparam>
/// <param name="expression"></param>
/// <returns></returns>
public static IMappingExpression<TSource, TDest> IgnoreAllUnmapped<TSource, TDest>(this IMappingExpression<TSource, TDest> expression)
{
expression.ForAllMembers(opt => opt.Ignore());
return expression;
}
}
}
-12
View File
@@ -118,17 +118,5 @@ namespace Umbraco.Core.Models
//The Media Recycle Bin Id is -21 so we correct that here
ParentId = parentId == -20 ? -21 : parentId;
}
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
}
}
-21
View File
@@ -38,26 +38,5 @@ namespace Umbraco.Core.Models
: base(parent, alias)
{
}
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
/// <summary>
/// Method to call when Entity is being updated
/// </summary>
/// <remarks>Modified Date is set and a new Version guid is set</remarks>
internal override void UpdatingEntity()
{
base.UpdatingEntity();
}
}
}
+1 -4
View File
@@ -509,11 +509,8 @@ namespace Umbraco.Core.Models
{
base.AddingEntity();
if (Key == Guid.Empty)
{
Key = Guid.NewGuid();
if (ProviderUserKey == null)
ProviderUserKey = Key;
}
}
/// <summary>
-12
View File
@@ -60,17 +60,5 @@ namespace Umbraco.Core.Models
}
public IDictionary<string, object> AdditionalData { get; private set; }
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
}
}
-21
View File
@@ -131,26 +131,5 @@ namespace Umbraco.Core.Models
MemberTypePropertyTypes.Add(propertyTypeAlias, tuple);
}
}
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
/// <summary>
/// Method to call when Entity is being updated
/// </summary>
/// <remarks>Modified Date is set and a new Version guid is set</remarks>
internal override void UpdatingEntity()
{
base.UpdatingEntity();
}
}
}
-34
View File
@@ -17,7 +17,6 @@ namespace Umbraco.Core.Models
public class PropertyGroup : Entity, IEquatable<PropertyGroup>
{
private string _name;
private Lazy<int?> _parentId;
private int _sortOrder;
private PropertyTypeCollection _propertyTypes;
@@ -31,7 +30,6 @@ namespace Umbraco.Core.Models
}
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<PropertyGroup, string>(x => x.Name);
private static readonly PropertyInfo ParentIdSelector = ExpressionHelper.GetPropertyInfo<PropertyGroup, int?>(x => x.ParentId);
private static readonly PropertyInfo SortOrderSelector = ExpressionHelper.GetPropertyInfo<PropertyGroup, int>(x => x.SortOrder);
private readonly static PropertyInfo PropertyTypeCollectionSelector = ExpressionHelper.GetPropertyInfo<PropertyGroup, PropertyTypeCollection>(x => x.PropertyTypes);
void PropertyTypesChanged(object sender, NotifyCollectionChangedEventArgs e)
@@ -56,29 +54,6 @@ namespace Umbraco.Core.Models
}
}
/// <summary>
/// Gets or sets the Id of the Parent PropertyGroup.
/// </summary>
/// <remarks>
/// A Parent PropertyGroup corresponds to an inherited PropertyGroup from a composition.
/// If a PropertyType is inserted into an inherited group then a new group will be created with an Id reference to the parent.
/// </remarks>
[DataMember]
public int? ParentId
{
get
{
if (_parentId == null)
return default(int?);
return _parentId.Value;
}
set
{
_parentId = new Lazy<int?>(() => value);
OnPropertyChanged(ParentIdSelector);
}
}
/// <summary>
/// Gets or sets the Sort Order of the Group
/// </summary>
@@ -117,15 +92,6 @@ namespace Umbraco.Core.Models
}
}
/// <summary>
/// Sets the ParentId from the lazy integer id
/// </summary>
/// <param name="id">Id of the Parent</param>
internal void SetLazyParentId(Lazy<int?> id)
{
_parentId = id;
}
public bool Equals(PropertyGroup other)
{
if (base.Equals(other)) return true;
+6
View File
@@ -9,6 +9,7 @@ using Umbraco.Core.Strings;
namespace Umbraco.Core.Models
{
/// <summary>
/// Defines the type of a <see cref="Property"/> object
/// </summary>
@@ -32,6 +33,8 @@ namespace Umbraco.Core.Models
public PropertyType(IDataTypeDefinition dataTypeDefinition)
{
if (dataTypeDefinition == null) throw new ArgumentNullException("dataTypeDefinition");
if(dataTypeDefinition.HasIdentity)
_dataTypeDefinitionId = dataTypeDefinition.Id;
@@ -401,6 +404,9 @@ namespace Umbraco.Core.Models
if (DataTypeDatabaseType == DataTypeDatabaseType.Integer && type == typeof(int))
return true;
if (DataTypeDatabaseType == DataTypeDatabaseType.Decimal && type == typeof(decimal))
return true;
if (DataTypeDatabaseType == DataTypeDatabaseType.Date && type == typeof(DateTime))
return true;
@@ -108,18 +108,6 @@ namespace Umbraco.Core.Models
}
}
/// <summary>
/// Method to call on entity saved when first added
/// </summary>
internal override void AddingEntity()
{
if (Key == default(Guid))
{
Key = Guid.NewGuid();
}
base.AddingEntity();
}
[DataMember]
public int LoginNodeId
{
@@ -28,18 +28,6 @@ namespace Umbraco.Core.Models
public Guid AccessEntryId { get; internal set; }
/// <summary>
/// Method to call on entity saved when first added
/// </summary>
internal override void AddingEntity()
{
if (Key == default(Guid))
{
Key = Guid.NewGuid();
}
base.AddingEntity();
}
public string RuleValue
{
get { return _ruleValue; }
@@ -1,28 +1,28 @@
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;
namespace Umbraco.Core.Models.Rdbms
{
[TableName("cmsDocumentType")]
[PrimaryKey("contentTypeNodeId", autoIncrement = false)]
[ExplicitColumns]
internal class DocumentTypeDto
{
[Column("contentTypeNodeId")]
[PrimaryKeyColumn(AutoIncrement = false, Name = "PK_cmsDocumentType", OnColumns = "contentTypeNodeId, templateNodeId")]
[ForeignKey(typeof(ContentTypeDto), Column = "nodeId")]
[ForeignKey(typeof(NodeDto))]
public int ContentTypeNodeId { get; set; }
[Column("templateNodeId")]
[ForeignKey(typeof(TemplateDto), Column = "nodeId")]
public int TemplateNodeId { get; set; }
[Column("IsDefault")]
[Constraint(Default = "0")]
public bool IsDefault { get; set; }
[ResultColumn]
public ContentTypeDto ContentTypeDto { get; set; }
}
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;
namespace Umbraco.Core.Models.Rdbms
{
[TableName("cmsDocumentType")]
[PrimaryKey("contentTypeNodeId", autoIncrement = false)]
[ExplicitColumns]
internal class ContentTypeTemplateDto
{
[Column("contentTypeNodeId")]
[PrimaryKeyColumn(AutoIncrement = false, Name = "PK_cmsDocumentType", OnColumns = "contentTypeNodeId, templateNodeId")]
[ForeignKey(typeof(ContentTypeDto), Column = "nodeId")]
[ForeignKey(typeof(NodeDto))]
public int ContentTypeNodeId { get; set; }
[Column("templateNodeId")]
[ForeignKey(typeof(TemplateDto), Column = "nodeId")]
public int TemplateNodeId { get; set; }
[Column("IsDefault")]
[Constraint(Default = "0")]
public bool IsDefault { get; set; }
[ResultColumn]
public ContentTypeDto ContentTypeDto { get; set; }
}
}
-6
View File
@@ -10,12 +10,6 @@ namespace Umbraco.Core.Models.Rdbms
[ExplicitColumns]
internal class NodeDto
{
public NodeDto()
{
//By default, always generate a new guid
UniqueId = Guid.NewGuid();
}
public const int NodeIdSeed = 1050;
[Column("id")]
@@ -33,6 +33,10 @@ namespace Umbraco.Core.Models.Rdbms
[NullSetting(NullSetting = NullSettings.Null)]
public int? Integer { get; set; }
[Column("dataDecimal")]
[NullSetting(NullSetting = NullSettings.Null)]
public decimal? Decimal { get; set; }
[Column("dataDate")]
[NullSetting(NullSetting = NullSettings.Null)]
public DateTime? Date { get; set; }
@@ -55,22 +59,27 @@ namespace Umbraco.Core.Models.Rdbms
{
get
{
if(Integer.HasValue)
if (Integer.HasValue)
{
return Integer.Value;
}
if (Decimal.HasValue)
{
return Decimal.Value;
}
if(Date.HasValue)
if (Date.HasValue)
{
return Date.Value;
}
if(string.IsNullOrEmpty(VarChar) == false)
if (string.IsNullOrEmpty(VarChar) == false)
{
return VarChar;
}
if(string.IsNullOrEmpty(Text) == false)
if (string.IsNullOrEmpty(Text) == false)
{
return Text;
}
@@ -10,12 +10,6 @@ namespace Umbraco.Core.Models.Rdbms
[ExplicitColumns]
internal class PropertyTypeDto
{
public PropertyTypeDto()
{
//by default always create a new guid
UniqueId = Guid.NewGuid();
}
[Column("id")]
[PrimaryKeyColumn(IdentitySeed = 50)]
public int Id { get; set; }
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
namespace Umbraco.Core.Models.Rdbms
{
@@ -13,12 +15,6 @@ namespace Umbraco.Core.Models.Rdbms
[PrimaryKeyColumn(IdentitySeed = 12)]
public int Id { get; set; }
[Column("parentGroupId")]
[NullSetting(NullSetting = NullSettings.Null)]
//[Constraint(Default = "NULL")]
[ForeignKey(typeof(PropertyTypeGroupDto))]
public int? ParentGroupId { get; set; }
[Column("contenttypeNodeId")]
[ForeignKey(typeof(ContentTypeDto), Column = "nodeId")]
public int ContentTypeNodeId { get; set; }
@@ -31,5 +27,11 @@ namespace Umbraco.Core.Models.Rdbms
[ResultColumn]
public List<PropertyTypeDto> PropertyTypeDtos { get; set; }
[Column("uniqueID")]
[NullSetting(NullSetting = NullSettings.NotNull)]
[Constraint(Default = SystemMethods.NewGuid)]
[Index(IndexTypes.UniqueNonClustered, Name = "IX_cmsPropertyTypeGroupUniqueID")]
public Guid UniqueId { get; set; }
}
}
@@ -10,9 +10,6 @@ namespace Umbraco.Core.Models.Rdbms
[Column("PropertyTypeGroupId")]
public int? Id { get; set; }
[Column("parentGroupId")]
public int? ParentGroupId { get; set; }
[Column("PropertyGroupName")]
public string Text { get; set; }
@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
namespace Umbraco.Core.Models.Rdbms
{
[TableName("umbracoDeployChecksum")]
[PrimaryKey("id")]
[ExplicitColumns]
internal class UmbracoDeployChecksumDto
{
[Column("id")]
[PrimaryKeyColumn(Name = "PK_umbracoDeployChecksum")]
public int Id { get; set; }
[Column("entityType")]
[Length(32)]
[NullSetting(NullSetting = NullSettings.NotNull)]
[Index(IndexTypes.UniqueNonClustered, Name = "IX_umbracoDeployChecksum", ForColumns = "entityType,entityGuid,entityPath")]
public string EntityType { get; set; }
[Column("entityGuid")]
[NullSetting(NullSetting = NullSettings.Null)]
public Guid EntityGuid { get; set; }
[Column("entityPath")]
[Length(256)]
[NullSetting(NullSetting = NullSettings.Null)]
public string EntityPath { get; set; }
[Column("localChecksum")]
[NullSetting(NullSetting = NullSettings.NotNull)]
[Length(32)]
public string LocalChecksum { get; set; }
[Column("compositeChecksum")]
[NullSetting(NullSetting = NullSettings.Null)]
[Length(32)]
public string CompositeChecksum { get; set; }
}
}
@@ -0,0 +1,26 @@
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;
namespace Umbraco.Core.Models.Rdbms
{
[TableName("umbracoDeployDependency")]
[ExplicitColumns]
internal class UmbracoDeployDependencyDto
{
[Column("sourceId")]
[PrimaryKeyColumn(AutoIncrement = false, Clustered = true, Name = "PK_umbracoDeployDependency", OnColumns = "sourceId, targetId")]
[ForeignKey(typeof(UmbracoDeployChecksumDto), Name = "FK_umbracoDeployDependency_umbracoDeployChecksum_id1")]
[NullSetting(NullSetting = NullSettings.NotNull)]
public int SourceId { get; set; }
[Column("targetId")]
[ForeignKey(typeof(UmbracoDeployChecksumDto), Name = "FK_umbracoDeployDependency_umbracoDeployChecksum_id2")]
[NullSetting(NullSetting = NullSettings.NotNull)]
public int TargetId { get; set; }
[Column("mode")]
[NullSetting(NullSetting = NullSettings.NotNull)]
public int Mode { get; set; }
}
}
-12
View File
@@ -118,18 +118,6 @@ namespace Umbraco.Core.Models
return ApplicationContext.Current.Services.FileService.DetermineTemplateRenderingEngine(this);
}
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
public void SetMasterTemplate(ITemplate masterTemplate)
{
if (masterTemplate == null)
+1 -1
View File
@@ -11,7 +11,7 @@ namespace Umbraco.Core.Models
/// <summary>
/// Implementation of the <see cref="IUmbracoEntity"/> for internal use.
/// </summary>
internal class UmbracoEntity : Entity, IUmbracoEntity
public class UmbracoEntity : Entity, IUmbracoEntity
{
private int _creatorId;
private int _level;
@@ -11,6 +11,20 @@ namespace Umbraco.Core.Models
internal static class UmbracoEntityExtensions
{
public static bool HasChildren(this IUmbracoEntity entity)
{
if (entity.AdditionalData.ContainsKey("HasChildren"))
{
var convert = entity.AdditionalData["HasChildren"].TryConvertTo<bool>();
if (convert)
{
return convert.Result;
}
}
return false;
}
public static object GetAdditionalDataValueIgnoreCase(this IUmbracoEntity entity, string key, object defaultVal)
{
if (entity.AdditionalData.ContainsKeyIgnoreCase(key) == false) return defaultVal;
+38 -15
View File
@@ -15,49 +15,49 @@ namespace Umbraco.Core.Models
/// <summary>
/// Content Item Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentItemType)]
[UmbracoObjectType(Constants.ObjectTypes.ContentItemType)]
[FriendlyName("Content Item Type")]
ContentItemType,
/// <summary>
/// Root
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.SystemRoot)]
[UmbracoObjectType(Constants.ObjectTypes.SystemRoot)]
[FriendlyName("Root")]
ROOT,
/// <summary>
/// Document
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Document, typeof(IContent))]
[UmbracoObjectType(Constants.ObjectTypes.Document, typeof(IContent))]
[FriendlyName("Document")]
Document,
/// <summary>
/// Media
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Media, typeof(IMedia))]
[UmbracoObjectType(Constants.ObjectTypes.Media, typeof(IMedia))]
[FriendlyName("Media")]
Media,
/// <summary>
/// Member Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.MemberType, typeof(IMemberType))]
[UmbracoObjectType(Constants.ObjectTypes.MemberType, typeof(IMemberType))]
[FriendlyName("Member Type")]
MemberType,
/// <summary>
/// Template
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Template, typeof(ITemplate))]
[UmbracoObjectType(Constants.ObjectTypes.Template, typeof(ITemplate))]
[FriendlyName("Template")]
Template,
/// <summary>
/// Member Group
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.MemberGroup)]
[UmbracoObjectType(Constants.ObjectTypes.MemberGroup)]
[FriendlyName("Member Group")]
MemberGroup,
@@ -65,50 +65,73 @@ namespace Umbraco.Core.Models
/// <summary>
/// Content Item
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentItem)]
[UmbracoObjectType(Constants.ObjectTypes.ContentItem)]
[FriendlyName("Content Item")]
ContentItem,
/// <summary>
/// "Media Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.MediaType, typeof(IMediaType))]
[UmbracoObjectType(Constants.ObjectTypes.MediaType, typeof(IMediaType))]
[FriendlyName("Media Type")]
MediaType,
/// <summary>
/// Document Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.DocumentType, typeof(IContentType))]
[UmbracoObjectType(Constants.ObjectTypes.DocumentType, typeof(IContentType))]
[FriendlyName("Document Type")]
DocumentType,
/// <summary>
/// Recycle Bin
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentRecycleBin)]
[UmbracoObjectType(Constants.ObjectTypes.ContentRecycleBin)]
[FriendlyName("Recycle Bin")]
RecycleBin,
/// <summary>
/// Stylesheet
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Stylesheet)]
[UmbracoObjectType(Constants.ObjectTypes.Stylesheet)]
[FriendlyName("Stylesheet")]
Stylesheet,
/// <summary>
/// Member
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Member, typeof(IMember))]
[UmbracoObjectType(Constants.ObjectTypes.Member, typeof(IMember))]
[FriendlyName("Member")]
Member,
/// <summary>
/// Data Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.DataType, typeof(IDataTypeDefinition))]
[UmbracoObjectType(Constants.ObjectTypes.DataType, typeof(IDataTypeDefinition))]
[FriendlyName("Data Type")]
DataType
DataType,
/// <summary>
/// Document type container
/// </summary>
[UmbracoObjectType(Constants.ObjectTypes.DocumentTypeContainer)]
[FriendlyName("Document Type Container")]
DocumentTypeContainer,
/// <summary>
/// Media type container
/// </summary>
[UmbracoObjectType(Constants.ObjectTypes.MediaTypeContainer)]
[FriendlyName("Media Type Container")]
MediaTypeContainer,
/// <summary>
/// Media type container
/// </summary>
[UmbracoObjectType(Constants.ObjectTypes.DataTypeContainer)]
[FriendlyName("Data Type Container")]
DataTypeContainer
}
}
+11 -16
View File
@@ -1,15 +1,10 @@
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Security;
using System.Xml;
namespace Umbraco.Core
@@ -51,7 +46,7 @@ namespace Umbraco.Core
public static Attempt<T> TryConvertTo<T>(this object input)
{
var result = TryConvertTo(input, typeof(T));
if (!result.Success)
if (result.Success == false)
{
//just try a straight up conversion
try
@@ -64,7 +59,7 @@ namespace Umbraco.Core
return Attempt<T>.Fail(e);
}
}
return !result.Success ? Attempt<T>.Fail() : Attempt<T>.Succeed((T)result.Result);
return result.Success == false ? Attempt<T>.Fail() : Attempt<T>.Succeed((T)result.Result);
}
/// <summary>
@@ -117,7 +112,7 @@ namespace Umbraco.Core
}
// we've already dealed with nullables, so any other generic types need to fall through
if (!destinationType.IsGenericType)
if (destinationType.IsGenericType == false)
{
if (input is string)
{
@@ -335,11 +330,11 @@ namespace Umbraco.Core
return null; // we can't decide...
}
private readonly static char[] NumberDecimalSeparatorsToNormalize = new[] {'.', ','};
private static readonly char[] NumberDecimalSeparatorsToNormalize = new[] {'.', ','};
private static string NormalizeNumberDecimalSeparator(string s)
{
var normalized = System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator[0];
var normalized = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator[0];
return s.ReplaceMany(NumberDecimalSeparatorsToNormalize, normalized);
}
@@ -442,7 +437,7 @@ namespace Umbraco.Core
{
var props = TypeDescriptor.GetProperties(o);
var d = new Dictionary<string, TVal>();
foreach (var prop in props.Cast<PropertyDescriptor>().Where(x => !ignoreProperties.Contains(x.Name)))
foreach (var prop in props.Cast<PropertyDescriptor>().Where(x => ignoreProperties.Contains(x.Name) == false))
{
var val = prop.GetValue(o);
if (val != null)
@@ -478,13 +473,13 @@ namespace Umbraco.Core
var items = (from object enumItem in enumerable let value = GetEnumPropertyDebugString(enumItem, levels) where value != null select value).Take(10).ToList();
return items.Count() > 0
return items.Any()
? "{{ {0} }}".InvariantFormat(String.Join(", ", items))
: null;
}
var props = obj.GetType().GetProperties();
if ((props.Count() == 2) && props[0].Name == "Key" && props[1].Name == "Value" && levels > -2)
if ((props.Length == 2) && props[0].Name == "Key" && props[1].Name == "Value" && levels > -2)
{
try
{
@@ -500,12 +495,12 @@ namespace Umbraco.Core
if (levels > -1)
{
var items =
from propertyInfo in props
(from propertyInfo in props
let value = GetPropertyDebugString(propertyInfo, obj, levels)
where value != null
select "{0}={1}".InvariantFormat(propertyInfo.Name, value);
select "{0}={1}".InvariantFormat(propertyInfo.Name, value)).ToArray();
return items.Count() > 0
return items.Any()
? "[{0}]:{{ {1} }}".InvariantFormat(obj.GetType().Name, String.Join(", ", items))
: null;
}
@@ -1,98 +1,144 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Models.Rdbms;
namespace Umbraco.Core.Persistence.Factories
{
// factory for
// IContentType (document types)
// IMediaType (media types)
// IMemberType (member types)
//
internal class ContentTypeFactory
{
private readonly Guid _nodeObjectType;
#region IContentType
public ContentTypeFactory(Guid nodeObjectType)
public IContentType BuildContentTypeEntity(ContentTypeDto dto)
{
_nodeObjectType = nodeObjectType;
}
var contentType = new ContentType(dto.NodeDto.ParentId);
BuildCommonEntity(contentType, dto);
#region Implementation of IEntityFactory<IContentType,DocumentTypeDto>
public IContentType BuildEntity(DocumentTypeDto dto)
{
var contentType = new ContentType(dto.ContentTypeDto.NodeDto.ParentId)
{
Id = dto.ContentTypeDto.NodeDto.NodeId,
Key = dto.ContentTypeDto.NodeDto.UniqueId,
Alias = dto.ContentTypeDto.Alias,
Name = dto.ContentTypeDto.NodeDto.Text,
Icon = dto.ContentTypeDto.Icon,
Thumbnail = dto.ContentTypeDto.Thumbnail,
SortOrder = dto.ContentTypeDto.NodeDto.SortOrder,
Description = dto.ContentTypeDto.Description,
CreateDate = dto.ContentTypeDto.NodeDto.CreateDate,
Path = dto.ContentTypeDto.NodeDto.Path,
Level = dto.ContentTypeDto.NodeDto.Level,
CreatorId = dto.ContentTypeDto.NodeDto.UserId.Value,
AllowedAsRoot = dto.ContentTypeDto.AllowAtRoot,
IsContainer = dto.ContentTypeDto.IsContainer,
Trashed = dto.ContentTypeDto.NodeDto.Trashed,
DefaultTemplateId = dto.TemplateNodeId
};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
contentType.ResetDirtyProperties(false);
return contentType;
}
public DocumentTypeDto BuildDto(IContentType entity)
{
var documentTypeDto = new DocumentTypeDto
{ContentTypeDto = BuildContentTypeDto(entity), ContentTypeNodeId = entity.Id};
var contentType = entity as ContentType;
if(contentType != null)
{
documentTypeDto.TemplateNodeId = contentType.DefaultTemplateId;
documentTypeDto.IsDefault = true;
}
return documentTypeDto;
return contentType;
}
#endregion
private ContentTypeDto BuildContentTypeDto(IContentType entity)
#region IMediaType
public IMediaType BuildMediaTypeEntity(ContentTypeDto dto)
{
var contentType = new MediaType(dto.NodeDto.ParentId);
BuildCommonEntity(contentType, dto);
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
contentType.ResetDirtyProperties(false);
return contentType;
}
#endregion
#region IMemberType
public IMemberType BuildMemberTypeEntity(ContentTypeDto dto)
{
throw new NotImplementedException();
}
public IEnumerable<MemberTypeDto> BuildMemberTypeDtos(IMemberType entity)
{
var memberType = entity as MemberType;
if (memberType == null || memberType.PropertyTypes.Any() == false)
return Enumerable.Empty<MemberTypeDto>();
var dtos = memberType.PropertyTypes.Select(x => new MemberTypeDto
{
NodeId = entity.Id,
PropertyTypeId = x.Id,
CanEdit = memberType.MemberCanEditProperty(x.Alias),
ViewOnProfile = memberType.MemberCanViewProperty(x.Alias)
}).ToList();
return dtos;
}
#endregion
#region Common
private static void BuildCommonEntity(ContentTypeBase entity, ContentTypeDto dto)
{
entity.Id = dto.NodeDto.NodeId;
entity.Key = dto.NodeDto.UniqueId;
entity.Alias = dto.Alias;
entity.Name = dto.NodeDto.Text;
entity.Icon = dto.Icon;
entity.Thumbnail = dto.Thumbnail;
entity.SortOrder = dto.NodeDto.SortOrder;
entity.Description = dto.Description;
entity.CreateDate = dto.NodeDto.CreateDate;
entity.Path = dto.NodeDto.Path;
entity.Level = dto.NodeDto.Level;
entity.CreatorId = dto.NodeDto.UserId.Value;
entity.AllowedAsRoot = dto.AllowAtRoot;
entity.IsContainer = dto.IsContainer;
entity.Trashed = dto.NodeDto.Trashed;
}
public ContentTypeDto BuildContentTypeDto(IContentTypeBase entity)
{
Guid nodeObjectType;
if (entity is IContentType)
nodeObjectType = Constants.ObjectTypes.DocumentTypeGuid;
else if (entity is IMediaType)
nodeObjectType = Constants.ObjectTypes.MediaTypeGuid;
else if (entity is IMemberType)
nodeObjectType = Constants.ObjectTypes.MemberTypeGuid;
else
throw new Exception("oops: invalid entity.");
var contentTypeDto = new ContentTypeDto
{
Alias = entity.Alias,
Description = entity.Description,
Icon = entity.Icon,
Thumbnail = entity.Thumbnail,
NodeId = entity.Id,
AllowAtRoot = entity.AllowedAsRoot,
IsContainer = entity.IsContainer,
NodeDto = BuildNodeDto(entity)
};
{
Alias = entity.Alias,
Description = entity.Description,
Icon = entity.Icon,
Thumbnail = entity.Thumbnail,
NodeId = entity.Id,
AllowAtRoot = entity.AllowedAsRoot,
IsContainer = entity.IsContainer,
NodeDto = BuildNodeDto(entity, nodeObjectType)
};
return contentTypeDto;
}
private NodeDto BuildNodeDto(IContentType entity)
private static NodeDto BuildNodeDto(IUmbracoEntity entity, Guid nodeObjectType)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = short.Parse(entity.Level.ToString(CultureInfo.InvariantCulture)),
NodeObjectType = _nodeObjectType,
ParentId = entity.ParentId,
Path = entity.Path,
SortOrder = entity.SortOrder,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = short.Parse(entity.Level.ToString(CultureInfo.InvariantCulture)),
NodeObjectType = nodeObjectType,
ParentId = entity.ParentId,
Path = entity.Path,
SortOrder = entity.SortOrder,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
return nodeDto;
}
#endregion
}
}
@@ -42,7 +42,7 @@ namespace Umbraco.Core.Persistence.Factories
{
var text = new LanguageTextDto
{
LanguageId = translation.Language.Id,
LanguageId = translation.LanguageId,
UniqueId = translation.Key,
Value = translation.Value
};
@@ -7,20 +7,19 @@ namespace Umbraco.Core.Persistence.Factories
internal class DictionaryTranslationFactory
{
private readonly Guid _uniqueId;
private ILanguage _language;
public DictionaryTranslationFactory(Guid uniqueId, ILanguage language)
public DictionaryTranslationFactory(Guid uniqueId)
{
_uniqueId = uniqueId;
_language = language;
}
#region Implementation of IEntityFactory<DictionaryTranslation,LanguageTextDto>
public IDictionaryTranslation BuildEntity(LanguageTextDto dto)
{
var item = new DictionaryTranslation(_language, dto.Value, _uniqueId)
var item = new DictionaryTranslation(dto.LanguageId, dto.Value, _uniqueId)
{Id = dto.PrimaryKey};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
item.ResetDirtyProperties(false);
@@ -31,7 +30,7 @@ namespace Umbraco.Core.Persistence.Factories
{
var text = new LanguageTextDto
{
LanguageId = entity.Language.Id,
LanguageId = entity.LanguageId,
UniqueId = _uniqueId,
Value = entity.Value
};
@@ -1,82 +0,0 @@
using System;
using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Rdbms;
namespace Umbraco.Core.Persistence.Factories
{
internal class MediaTypeFactory
{
private readonly Guid _nodeObjectType;
public MediaTypeFactory(Guid nodeObjectType)
{
_nodeObjectType = nodeObjectType;
}
#region Implementation of IEntityFactory<IMediaType,ContentTypeDto>
public IMediaType BuildEntity(ContentTypeDto dto)
{
var contentType = new MediaType(dto.NodeDto.ParentId)
{
Id = dto.NodeDto.NodeId,
Key = dto.NodeDto.UniqueId,
Alias = dto.Alias,
Name = dto.NodeDto.Text,
Icon = dto.Icon,
Thumbnail = dto.Thumbnail,
SortOrder = dto.NodeDto.SortOrder,
Description = dto.Description,
CreateDate = dto.NodeDto.CreateDate,
Path = dto.NodeDto.Path,
Level = dto.NodeDto.Level,
CreatorId = dto.NodeDto.UserId.Value,
AllowedAsRoot = dto.AllowAtRoot,
IsContainer = dto.IsContainer,
Trashed = dto.NodeDto.Trashed
};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
contentType.ResetDirtyProperties(false);
return contentType;
}
public ContentTypeDto BuildDto(IMediaType entity)
{
var contentTypeDto = new ContentTypeDto
{
Alias = entity.Alias,
Description = entity.Description,
Icon = entity.Icon,
Thumbnail = entity.Thumbnail,
NodeId = entity.Id,
AllowAtRoot = entity.AllowedAsRoot,
IsContainer = entity.IsContainer,
NodeDto = BuildNodeDto(entity)
};
return contentTypeDto;
}
#endregion
private NodeDto BuildNodeDto(IMediaType entity)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = short.Parse(entity.Level.ToString(CultureInfo.InvariantCulture)),
NodeObjectType = _nodeObjectType,
ParentId = entity.ParentId,
Path = entity.Path,
SortOrder = entity.SortOrder,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
return nodeDto;
}
}
}
@@ -1,94 +0,0 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Rdbms;
namespace Umbraco.Core.Persistence.Factories
{
internal class MemberTypeFactory
{
private readonly Guid _nodeObjectType;
public MemberTypeFactory(Guid nodeObjectType)
{
_nodeObjectType = nodeObjectType;
}
public IMemberType BuildEntity(ContentTypeDto dto)
{
throw new System.NotImplementedException();
}
public ContentTypeDto BuildDto(IMemberType entity)
{
var contentTypeDto = new ContentTypeDto
{
Alias = entity.Alias,
Description = entity.Description,
Icon = entity.Icon,
Thumbnail = entity.Thumbnail,
NodeId = entity.Id,
AllowAtRoot = entity.AllowedAsRoot,
IsContainer = entity.IsContainer,
NodeDto = BuildNodeDto(entity)
};
return contentTypeDto;
}
public IEnumerable<MemberTypeDto> BuildMemberTypeDtos(IMemberType entity)
{
var memberType = entity as MemberType;
if (memberType == null || memberType.PropertyTypes.Any() == false)
return Enumerable.Empty<MemberTypeDto>();
var memberTypes = new List<MemberTypeDto>();
foreach (var propertyType in memberType.PropertyTypes)
{
memberTypes.Add(new MemberTypeDto
{
NodeId = entity.Id,
PropertyTypeId = propertyType.Id,
CanEdit = memberType.MemberCanEditProperty(propertyType.Alias),
ViewOnProfile = memberType.MemberCanViewProperty(propertyType.Alias)
});
}
return memberTypes;
}
private NodeDto BuildNodeDto(IMemberType entity)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = short.Parse(entity.Level.ToString(CultureInfo.InvariantCulture)),
NodeObjectType = _nodeObjectType,
ParentId = entity.ParentId,
Path = entity.Path,
SortOrder = entity.SortOrder,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
return nodeDto;
}
private int DeterminePropertyTypeId(int initialId, string alias, IEnumerable<PropertyType> propertyTypes)
{
if (initialId == 0 || initialId == default(int))
{
var propertyType = propertyTypes.SingleOrDefault(x => x.Alias.Equals(alias));
if (propertyType == null)
return default(int);
return propertyType.Id;
}
return initialId;
}
}
}
@@ -51,31 +51,28 @@ namespace Umbraco.Core.Persistence.Factories
memberType.MemberTypePropertyTypes.Add(standardPropertyType.Key,
new MemberTypePropertyProfileAccess(false, false));
}
memberType.PropertyTypes = propertyTypes;
memberType.NoGroupPropertyTypes = propertyTypes;
return memberType;
}
private PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
var propertyGroups = new PropertyGroupCollection();
// see PropertyGroupFactory, repeating code here...
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in dto.PropertyTypeGroups.Where(x => x.Id.HasValue))
{
var group = new PropertyGroup();
//Only assign an Id if the PropertyGroup belongs to this ContentType
// if the group is defined on the current member type,
// assign its identifier, else it will be zero
if (groupDto.ContentTypeNodeId == memberType.Id)
{
// note: no idea why Id is nullable here, but better check
if (groupDto.Id.HasValue == false)
throw new Exception("oops: groupDto.Id has no value.");
group.Id = groupDto.Id.Value;
if (groupDto.ParentGroupId.HasValue)
group.ParentId = groupDto.ParentGroupId.Value;
}
else
{
//If the PropertyGroup is inherited, we add a reference to the group as a Parent.
group.ParentId = groupDto.Id;
}
group.Name = groupDto.Text;
@@ -63,7 +63,9 @@ namespace Umbraco.Core.Persistence.Factories
//Check if property has an Id and set it, so that it can be updated if it already exists
if (property.HasIdentity)
{
dto.Id = property.Id;
}
if (property.DataTypeDatabaseType == DataTypeDatabaseType.Integer)
{
@@ -82,11 +84,21 @@ namespace Umbraco.Core.Persistence.Factories
}
}
}
else if (property.DataTypeDatabaseType == DataTypeDatabaseType.Decimal && property.Value != null)
{
decimal val;
if (decimal.TryParse(property.Value.ToString(), out val))
{
dto.Decimal = val;
}
}
else if (property.DataTypeDatabaseType == DataTypeDatabaseType.Date && property.Value != null && string.IsNullOrWhiteSpace(property.Value.ToString()) == false)
{
DateTime date;
if(DateTime.TryParse(property.Value.ToString(), out date))
if (DateTime.TryParse(property.Value.ToString(), out date))
{
dto.Date = date;
}
}
else if (property.DataTypeDatabaseType == DataTypeDatabaseType.Ntext && property.Value != null)
{
@@ -8,21 +8,21 @@ namespace Umbraco.Core.Persistence.Factories
{
internal class PropertyGroupFactory
{
private readonly int _id;
private readonly int _contentTypeId;
private readonly DateTime _createDate;
private readonly DateTime _updateDate;
//a callback to create a property type which can be injected via a contructor
private readonly Func<string, DataTypeDatabaseType, string, PropertyType> _propertyTypeCtor;
public PropertyGroupFactory(int id)
public PropertyGroupFactory(int contentTypeId)
{
_id = id;
_contentTypeId = contentTypeId;
_propertyTypeCtor = (propertyEditorAlias, dbType, alias) => new PropertyType(propertyEditorAlias, dbType);
}
public PropertyGroupFactory(int id, DateTime createDate, DateTime updateDate, Func<string, DataTypeDatabaseType, string, PropertyType> propertyTypeCtor)
public PropertyGroupFactory(int contentTypeId, DateTime createDate, DateTime updateDate, Func<string, DataTypeDatabaseType, string, PropertyType> propertyTypeCtor)
{
_id = id;
_contentTypeId = contentTypeId;
_createDate = createDate;
_updateDate = updateDate;
_propertyTypeCtor = propertyTypeCtor;
@@ -30,29 +30,24 @@ namespace Umbraco.Core.Persistence.Factories
#region Implementation of IEntityFactory<IEnumerable<PropertyGroup>,IEnumerable<TabDto>>
public IEnumerable<PropertyGroup> BuildEntity(IEnumerable<PropertyTypeGroupDto> dto)
public IEnumerable<PropertyGroup> BuildEntity(IEnumerable<PropertyTypeGroupDto> groupDtos)
{
// groupDtos contains all the groups, those that are defined on the current
// content type, and those that are inherited from composition content types
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in dto)
foreach (var groupDto in groupDtos)
{
var group = new PropertyGroup();
//Only assign an Id if the PropertyGroup belongs to this ContentType
if (groupDto.ContentTypeNodeId == _id)
{
group.Id = groupDto.Id;
if (groupDto.ParentGroupId.HasValue)
group.ParentId = groupDto.ParentGroupId.Value;
}
else
{
//If the PropertyGroup is inherited, we add a reference to the group as a Parent.
group.ParentId = groupDto.Id;
}
// if the group is defined on the current content type,
// assign its identifier, else it will be zero
if (groupDto.ContentTypeNodeId == _contentTypeId)
group.Id = groupDto.Id;
group.Name = groupDto.Text;
group.SortOrder = groupDto.SortOrder;
group.PropertyTypes = new PropertyTypeCollection();
group.Key = groupDto.UniqueId;
//Because we are likely to have a group with no PropertyTypes we need to ensure that these are excluded
var typeDtos = groupDto.PropertyTypeDtos.Where(x => x.Id > 0);
@@ -101,14 +96,12 @@ namespace Umbraco.Core.Persistence.Factories
{
var dto = new PropertyTypeGroupDto
{
ContentTypeNodeId = _id,
ContentTypeNodeId = _contentTypeId,
SortOrder = propertyGroup.SortOrder,
Text = propertyGroup.Name
Text = propertyGroup.Name,
UniqueId = propertyGroup.Key
};
if (propertyGroup.ParentId.HasValue)
dto.ParentGroupId = propertyGroup.ParentId.Value;
if (propertyGroup.HasIdentity)
dto.Id = propertyGroup.Id;
@@ -122,18 +115,14 @@ namespace Umbraco.Core.Persistence.Factories
var propertyTypeDto = new PropertyTypeDto
{
Alias = propertyType.Alias,
ContentTypeId = _id,
ContentTypeId = _contentTypeId,
DataTypeId = propertyType.DataTypeDefinitionId,
Description = propertyType.Description,
Mandatory = propertyType.Mandatory,
Name = propertyType.Name,
SortOrder = propertyType.SortOrder,
ValidationRegExp = propertyType.ValidationRegExp,
UniqueId = propertyType.HasIdentity
? propertyType.Key == Guid.Empty
? Guid.NewGuid()
: propertyType.Key
: Guid.NewGuid()
UniqueId = propertyType.Key
};
if (tabId != default(int))
@@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.Mappers
internal override void BuildMap()
{
CacheMap<PropertyGroup, PropertyTypeGroupDto>(src => src.Id, dto => dto.Id);
CacheMap<PropertyGroup, PropertyTypeGroupDto>(src => src.ParentId, dto => dto.ParentGroupId);
CacheMap<PropertyGroup, PropertyTypeGroupDto>(src => src.Key, dto => dto.UniqueId);
CacheMap<PropertyGroup, PropertyTypeGroupDto>(src => src.SortOrder, dto => dto.SortOrder);
CacheMap<PropertyGroup, PropertyTypeGroupDto>(src => src.Name, dto => dto.Text);
}
@@ -39,6 +39,7 @@ namespace Umbraco.Core.Persistence.Mappers
{
CacheMap<Template, TemplateDto>(src => src.Id, dto => dto.NodeId);
CacheMap<Template, NodeDto>(src => src.MasterTemplateId, dto => dto.ParentId);
CacheMap<Template, NodeDto>(src => src.Key, dto => dto.UniqueId);
CacheMap<Template, TemplateDto>(src => src.Alias, dto => dto.Alias);
CacheMap<Template, TemplateDto>(src => src.Content, dto => dto.Design);
}
@@ -117,8 +117,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -42, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-42", SortOrder = 2, UniqueId = new Guid("0b6a45e7-44ba-430d-9da5-4e46060b9e03"), Text = "Dropdown", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -41, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-41", SortOrder = 2, UniqueId = new Guid("5046194e-4237-453c-a547-15db3a07c4e1"), Text = "Date Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -40, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-40", SortOrder = 2, UniqueId = new Guid("bb5f57c9-ce2b-4bb9-b697-4caca783a805"), Text = "Radiobox", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -39, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-39", SortOrder = 2, UniqueId = new Guid("f38f0ac7-1d27-439c-9f3f-089cd8825a53"), Text = "Dropdown multiple", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -38, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-38", SortOrder = 2, UniqueId = new Guid("fd9f1447-6c61-4a7c-9595-5aa39147d318"), Text = "Folder Browser", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -39, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-39", SortOrder = 2, UniqueId = new Guid("f38f0ac7-1d27-439c-9f3f-089cd8825a53"), Text = "Dropdown multiple", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -37, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-37", SortOrder = 2, UniqueId = new Guid("0225af17-b302-49cb-9176-b9f35cab9c17"), Text = "Approved Color", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = -36, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-36", SortOrder = 2, UniqueId = new Guid("e4d66c0f-b935-4200-81f0-025f7256b89a"), Text = "Date Picker with time", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = Constants.System.DefaultContentListViewDataTypeId, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,-95", SortOrder = 2, UniqueId = new Guid("C0808DD3-8133-4E4B-8CE8-E2BEA84A96A4"), Text = Constants.Conventions.DataTypes.ListViewPrefix + "Content", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
@@ -179,16 +178,16 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
private void CreateCmsPropertyTypeGroupData()
{
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 3, ContentTypeNodeId = 1032, Text = "Image", SortOrder = 1 });
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 4, ContentTypeNodeId = 1033, Text = "File", SortOrder = 1 });
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 5, ContentTypeNodeId = 1031, Text = "Contents", SortOrder = 1 });
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 3, ContentTypeNodeId = 1032, Text = "Image", SortOrder = 1, UniqueId = new Guid(Constants.PropertyTypeGroups.Image) });
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 4, ContentTypeNodeId = 1033, Text = "File", SortOrder = 1, UniqueId = new Guid(Constants.PropertyTypeGroups.File) });
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 5, ContentTypeNodeId = 1031, Text = "Contents", SortOrder = 1, UniqueId = new Guid(Constants.PropertyTypeGroups.Contents) });
//membership property group
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 11, ContentTypeNodeId = 1044, Text = "Membership", SortOrder = 1 });
_database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 11, ContentTypeNodeId = 1044, Text = "Membership", SortOrder = 1, UniqueId = new Guid(Constants.PropertyTypeGroups.Membership) });
}
private void CreateCmsPropertyTypeData()
{
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 6, UniqueId = 6.ToGuid(), DataTypeId = -90, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.File, Name = "Upload image", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "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 = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 7, UniqueId = 7.ToGuid(), DataTypeId = -92, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Width, Name = "Width", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 8, UniqueId = 8.ToGuid(), DataTypeId = -92, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Height, Name = "Height", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 9, UniqueId = 9.ToGuid(), DataTypeId = -92, ContentTypeId = 1032, PropertyTypeGroupId = 3, Alias = Constants.Conventions.Media.Bytes, Name = "Size", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
@@ -196,7 +195,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("cmsPropertyType", "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 = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "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 });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 26, UniqueId = 26.ToGuid(), DataTypeId = -92, ContentTypeId = 1033, PropertyTypeGroupId = 4, Alias = Constants.Conventions.Media.Bytes, Name = "Size", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 27, UniqueId = 27.ToGuid(), DataTypeId = -38, ContentTypeId = 1031, PropertyTypeGroupId = 5, Alias = "contents", Name = "Contents:", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 27, UniqueId = 27.ToGuid(), DataTypeId = Constants.System.DefaultMediaListViewDataTypeId, ContentTypeId = 1031, PropertyTypeGroupId = 5, Alias = "contents", Name = "Contents:", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null });
//membership property types
_database.Insert("cmsPropertyType", "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 });
_database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 29, UniqueId = 29.ToGuid(), DataTypeId = -92, ContentTypeId = 1044, PropertyTypeGroupId = 11, Alias = Constants.Conventions.Member.FailedPasswordAttempts, Name = Constants.Conventions.Member.FailedPasswordAttemptsLabel, SortOrder = 1, Mandatory = false, ValidationRegExp = null, Description = null });
@@ -231,8 +230,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 6, DataTypeId = -90, PropertyEditorAlias = Constants.PropertyEditors.UploadFieldAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 7, DataTypeId = -92, PropertyEditorAlias = Constants.PropertyEditors.NoEditAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 8, DataTypeId = -36, PropertyEditorAlias = Constants.PropertyEditors.DateTimeAlias, DbType = "Date" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 9, DataTypeId = -37, PropertyEditorAlias = Constants.PropertyEditors.ColorPickerAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 10, DataTypeId = -38, PropertyEditorAlias = Constants.PropertyEditors.FolderBrowserAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 9, DataTypeId = -37, PropertyEditorAlias = Constants.PropertyEditors.ColorPickerAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 11, DataTypeId = -39, PropertyEditorAlias = Constants.PropertyEditors.DropDownListMultipleAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 12, DataTypeId = -40, PropertyEditorAlias = Constants.PropertyEditors.RadioButtonListAlias, DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 13, DataTypeId = -41, PropertyEditorAlias = Constants.PropertyEditors.DateAlias, DbType = "Date" });
@@ -253,7 +251,6 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
//_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 19, DataTypeId = 1038, PropertyEditorAlias = Constants.PropertyEditors.MarkdownEditorAlias, DbType = "Ntext" });
//_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 20, DataTypeId = 1039, PropertyEditorAlias = Constants.PropertyEditors.UltimatePickerAlias, DbType = "Ntext" });
//_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 23, DataTypeId = 1042, PropertyEditorAlias = Constants.PropertyEditors.MacroContainerAlias, DbType = "Ntext" });
}
private void CreateCmsDataTypePreValuesData()
@@ -269,6 +266,17 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -2, Alias = "orderBy", SortOrder = 2, DataTypeNodeId = Constants.System.DefaultMembersListViewDataTypeId, Value = "Name" });
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -3, Alias = "orderDirection", SortOrder = 3, DataTypeNodeId = Constants.System.DefaultMembersListViewDataTypeId, Value = "asc" });
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -4, Alias = "includeProperties", SortOrder = 4, DataTypeNodeId = Constants.System.DefaultMembersListViewDataTypeId, Value = "[{\"alias\":\"email\",\"isSystem\":1},{\"alias\":\"username\",\"isSystem\":1},{\"alias\":\"updateDate\",\"header\":\"Last edited\",\"isSystem\":1}]" });
//layouts for the list view
var cardLayout = "{\"name\": \"Grid\",\"path\": \"views/propertyeditors/listview/layouts/grid/grid.html\", \"icon\": \"icon-thumbnails-small\", \"isSystem\": 1, \"selected\": true}";
var listLayout = "{\"name\": \"List\",\"path\": \"views/propertyeditors/listview/layouts/list/list.html\",\"icon\": \"icon-list\", \"isSystem\": 1,\"selected\": true}";
//defaults for the media list
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -5, Alias = "pageSize", SortOrder = 1, DataTypeNodeId = Constants.System.DefaultMediaListViewDataTypeId, Value = "100" });
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -6, Alias = "orderBy", SortOrder = 2, DataTypeNodeId = Constants.System.DefaultMediaListViewDataTypeId, Value = "VersionDate" });
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -7, Alias = "orderDirection", SortOrder = 3, DataTypeNodeId = Constants.System.DefaultMediaListViewDataTypeId, Value = "desc" });
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -8, Alias = "layouts", SortOrder = 4, DataTypeNodeId = Constants.System.DefaultMediaListViewDataTypeId, Value = "[" + cardLayout + "," + listLayout + "]" });
_database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -9, Alias = "includeProperties", SortOrder = 5, DataTypeNodeId = Constants.System.DefaultMediaListViewDataTypeId, Value = "[{\"alias\":\"sortOrder\",\"isSystem\":1, \"header\": \"Sort order\"},{\"alias\":\"updateDate\",\"header\":\"Last edited\",\"isSystem\":1},{\"alias\":\"owner\",\"header\":\"Updated by\",\"isSystem\":1}]" });
}
private void CreateUmbracoRelationTypeData()
@@ -44,7 +44,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
{4, typeof (ContentVersionDto)},
{5, typeof (DocumentDto)},
{6, typeof (DocumentTypeDto)},
{6, typeof (ContentTypeTemplateDto)},
{7, typeof (DataTypeDto)},
{8, typeof (DataTypePreValueDto)},
{9, typeof (DictionaryDto)},
@@ -82,7 +82,9 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
{42, typeof (AccessRuleDto)},
{43, typeof(CacheInstructionDto)},
{44, typeof (ExternalLoginDto)},
{45, typeof (MigrationDto)}
{45, typeof (MigrationDto)},
{46, typeof (UmbracoDeployChecksumDto)},
{47, typeof (UmbracoDeployDependencyDto)}
};
#endregion
@@ -119,6 +119,12 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
return new Version(7, 2, 5);
}
//if the error is for umbracoDeployChecksum it must be the previous version to 7.4 since that is when it is added
if (Errors.Any(x => x.Item1.Equals("Table") && (x.Item2.InvariantEquals("umbracoDeployChecksum"))))
{
return new Version(7, 3, 4);
}
return UmbracoVersion.Current;
}
@@ -0,0 +1,29 @@
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourZero
{
[Migration("7.4.0", 1, GlobalSettings.UmbracoMigrationName)]
public class AddDataDecimalColumn : MigrationBase
{
public AddDataDecimalColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger)
: base(sqlSyntax, logger)
{
}
public override void Up()
{
//Don't exeucte if the column is already there
var columns = SqlSyntax.GetColumnsInSchema(Context.Database).ToArray();
if (columns.Any(x => x.TableName.InvariantEquals("cmsPropertyData") && x.ColumnName.InvariantEquals("dataDecimal")) == false)
Create.Column("dataDecimal").OnTable("cmsPropertyData").AsDecimal().Nullable();
}
public override void Down()
{
}
}
}
@@ -0,0 +1,48 @@
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourZero
{
[Migration("7.4.0", 5, GlobalSettings.UmbracoMigrationName)]
public class AddUmbracoDeployTables : MigrationBase
{
public AddUmbracoDeployTables(ISqlSyntaxProvider sqlSyntax, ILogger logger)
: base(sqlSyntax, logger)
{ }
public override void Up()
{
//Don't exeucte if the table is already there
var tables = SqlSyntax.GetTablesInSchema(Context.Database).ToArray();
if (tables.InvariantContains("umbracoDeployChecksum")) return;
Create.Table("umbracoDeployChecksum")
.WithColumn("id").AsInt32().Identity().PrimaryKey("PK_umbracoDeployChecksum")
.WithColumn("entityType").AsString(32).NotNullable()
.WithColumn("entityGuid").AsGuid().Nullable()
.WithColumn("entityPath").AsString(256).Nullable()
.WithColumn("localChecksum").AsString(32).NotNullable()
.WithColumn("compositeChecksum").AsString(32).Nullable();
Create.Table("umbracoDeployDependency")
.WithColumn("sourceId").AsInt32().NotNullable().ForeignKey("FK_umbracoDeployDependency_umbracoDeployChecksum_id1", "umbracoDeployChecksum", "id")
.WithColumn("targetId").AsInt32().NotNullable().ForeignKey("FK_umbracoDeployDependency_umbracoDeployChecksum_id2", "umbracoDeployChecksum", "id")
.WithColumn("mode").AsInt32().NotNullable();
Create.PrimaryKey("PK_umbracoDeployDependency").OnTable("umbracoDeployDependency").Columns(new[] {"sourceId", "targetId"});
Create.Index("IX_umbracoDeployChecksum").OnTable("umbracoDeployChecksum")
.OnColumn("entityType")
.Ascending()
.OnColumn("entityGuid")
.Ascending()
.OnColumn("entityPath")
.Unique();
}
public override void Down()
{ }
}
}
@@ -0,0 +1,80 @@
using System;
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourZero
{
[Migration("7.4.0", 2, GlobalSettings.UmbracoMigrationName)]
public class AddUniqueIdPropertyTypeGroupColumn : MigrationBase
{
public AddUniqueIdPropertyTypeGroupColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger)
: base(sqlSyntax, logger)
{ }
public override void Up()
{
// don't execute if the column is already there
var columns = SqlSyntax.GetColumnsInSchema(Context.Database).ToArray();
if (columns.Any(x => x.TableName.InvariantEquals("cmsPropertyTypeGroup") && x.ColumnName.InvariantEquals("uniqueID")) == false)
{
Create.Column("uniqueID").OnTable("cmsPropertyTypeGroup").AsGuid().NotNullable().WithDefault(SystemMethods.NewGuid);
// unique constraint on name + version
Create.Index("IX_cmsPropertyTypeGroupUniqueID").OnTable("cmsPropertyTypeGroup")
.OnColumn("uniqueID").Ascending()
.WithOptions()
.NonClustered()
.WithOptions()
.Unique();
// fill in the data in a way that is consistent over all environments
// (ie cannot use random guids, http://issues.umbraco.org/issue/U4-6942)
foreach (var data in Context.Database.Query<dynamic>(@"
SELECT cmsPropertyTypeGroup.id grId, cmsPropertyTypeGroup.text grName, cmsContentType.alias ctAlias, umbracoNode.nodeObjectType nObjType
FROM cmsPropertyTypeGroup
INNER JOIN cmsContentType
ON cmsPropertyTypeGroup.contentTypeNodeId = cmsContentType.nodeId
INNER JOIN umbracoNode
ON cmsContentType.nodeId = umbracoNode.id"))
{
Guid guid;
// see BaseDataCreation... built-in groups have their own guids
if (data.grId == 3)
{
guid = new Guid(Constants.PropertyTypeGroups.Image);
}
else if (data.grId == 4)
{
guid = new Guid(Constants.PropertyTypeGroups.File);
}
else if (data.grId == 5)
{
guid = new Guid(Constants.PropertyTypeGroups.Contents);
}
else if (data.grId == 11)
{
guid = new Guid(Constants.PropertyTypeGroups.Membership);
}
else
{
// create a consistent guid from
// group name + content type alias + object type
string guidSource = data.grName + data.ctAlias + data.nObjType;
guid = guidSource.ToGuid();
}
// set the Unique Id to the one we've generated
Update.Table("cmsPropertyTypeGroup").Set(new { uniqueID = guid }).Where(new { id = data.grId });
}
}
}
public override void Down()
{ }
}
}
@@ -0,0 +1,55 @@
using System;
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourZero
{
/// <summary>
/// Courier on v. 7.4+ will handle ContentTypes using GUIDs instead of
/// alias, so we need to ensure that these are initially consistent on
/// all environments (based on the alias).
/// </summary>
[Migration("7.4.0", 3, GlobalSettings.UmbracoMigrationName)]
public class EnsureContentTypeUniqueIdsAreConsistent : MigrationBase
{
public EnsureContentTypeUniqueIdsAreConsistent(ISqlSyntaxProvider sqlSyntax, ILogger logger)
: base(sqlSyntax, logger)
{ }
public override void Up()
{
var objectTypes = new[]
{
Constants.ObjectTypes.DocumentTypeGuid,
Constants.ObjectTypes.MediaTypeGuid,
Constants.ObjectTypes.MemberTypeGuid,
};
var sql = new Sql()
.Select("umbracoNode.id,cmsContentType.alias,umbracoNode.nodeObjectType")
.From<NodeDto>(SqlSyntax)
.InnerJoin<ContentTypeDto>(SqlSyntax)
.On<NodeDto, ContentTypeDto>(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId)
.WhereIn<NodeDto>(x => x.NodeObjectType, objectTypes);
var rows = Context.Database.Fetch<dynamic>(sql);
foreach (var row in rows)
{
// create a consistent guid from
// alias + object type
var guidSource = ((string) row.alias) + ((Guid) row.nodeObjectType);
var guid = guidSource.ToGuid();
// set the Unique Id to the one we've generated
Update.Table("umbracoNode").Set(new { uniqueID = guid }).Where(new { id = row.id });
}
}
public override void Down()
{ }
}
}
@@ -0,0 +1,34 @@
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourZero
{
[Migration("7.4.0", 4, GlobalSettings.UmbracoMigrationName)]
public class FixListViewMediaSortOrder : MigrationBase
{
public FixListViewMediaSortOrder(ISqlSyntaxProvider sqlSyntax, ILogger logger)
: base(sqlSyntax, logger)
{
}
public override void Up()
{
var mediaListviewIncludeProperties = Context.Database.Fetch<DataTypePreValueDto>(new Sql().Select("*").From<DataTypePreValueDto>(SqlSyntax).Where<DataTypePreValueDto>(x => x.Id == -9)).FirstOrDefault();
if (mediaListviewIncludeProperties != null)
{
if (mediaListviewIncludeProperties.Value.Contains("\"alias\":\"sort\""))
{
mediaListviewIncludeProperties.Value = mediaListviewIncludeProperties.Value.Replace("\"alias\":\"sort\"", "\"alias\":\"sortOrder\"");
Context.Database.InsertOrUpdate(mediaListviewIncludeProperties);
}
}
}
public override void Down()
{
}
}
}
@@ -0,0 +1,30 @@
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFourZero
{
[Migration("7.4.0", 4, GlobalSettings.UmbracoMigrationName)]
public class RemoveParentIdPropertyTypeGroupColumn : MigrationBase
{
public RemoveParentIdPropertyTypeGroupColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger)
: base(sqlSyntax, logger)
{ }
public override void Up()
{
// don't execute if the column is not there anymore
var columns = SqlSyntax.GetColumnsInSchema(Context.Database).ToArray();
if (columns.Any(x => x.TableName.InvariantEquals("cmsPropertyTypeGroup") && x.ColumnName.InvariantEquals("parentGroupId")) == false)
return;
Delete.ForeignKey("FK_cmsPropertyTypeGroup_cmsPropertyTypeGroup_id").OnTable("cmsPropertyTypeGroup");
Delete.Column("parentGroupId").FromTable("cmsPropertyTypeGroup");
}
public override void Down()
{ }
}
}

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