Compare commits

...

1964 Commits

Author SHA1 Message Date
Stephan baba390c7b Version 8.0.0-alpha.41 2018-05-21 23:04:18 +02:00
Stephan a3a14c8339 Fix NuGet packages - oh well 2018-05-21 22:38:27 +02:00
Stephan e4bd0e975e Fix NuGet package 2018-05-21 19:08:52 +02:00
Stephan bd07a1ba5c Version 8.0.0-alpha.40 2018-05-21 11:49:20 +02:00
Stephan f535f6d324 Cleanup ModelsBuilder merge 2018-05-21 11:49:08 +02:00
Stephan 373fad6efe Merge ModelsBuilder in, NuGet dies on circ dependencies now 2018-05-21 10:05:52 +02:00
leekelleher 21dbd1e402 Corrected a typo with MultipleTextStringConfiguration class name
@zpqrtbnk approved in person this at CGRT18 ;-)
2018-05-20 18:16:09 +01:00
Stephan 129e094b09 Fix Umbraco.Web.UI references 2018-05-18 15:24:12 +02:00
Mads Rasmussen c3c24eba4f Merge branch 'temp8' of https://github.com/umbraco/Umbraco-CMS into temp8 2018-05-18 12:33:16 +02:00
Mads Rasmussen 145858a302 hide culture dropdown in culture and hostnames dialog 2018-05-18 11:07:54 +02:00
Stephan c13e3ec220 Version 8.0.0-alpha.37 2018-05-18 09:39:02 +02:00
Stephan 6ce24bf1a1 Various fixes 2018-05-17 17:24:30 +02:00
Stephan 6c61eb2d69 Fix tests 2018-05-17 16:34:11 +02:00
Stephan 76bf84f8ea Forgot to update binding redirects 2018-05-17 16:34:05 +02:00
Stephan a8ba8598f2 Merge branch origin/temp8 into temp8-xbuild 2018-05-17 15:34:27 +02:00
Stephan 6e7bb41190 Version 8.0.0-alpha.36 2018-05-17 15:33:38 +02:00
Stephan 7387379aea Upgrade to ModelsBuilder -alpha.18 2018-05-17 15:32:27 +02:00
Shannon 50659787ee fixes published content Url for invariant 2018-05-17 15:26:06 +02:00
Shannon 3da120ce33 Adds Property Type to the published content model, fixes some web.config versions 2018-05-17 13:32:20 +02:00
Stephan de9f4f8d0b Cleanup references and dependencies 2018-05-17 13:19:35 +02:00
Stephan 20ecb6a779 Merge branch origin/temp8 into temp8-xbuild 2018-05-17 13:04:57 +02:00
Stephan 40f2558a70 Cleanup 2018-05-17 13:03:37 +02:00
Stephan f44c5ad757 Cleanup nuget, bindings, build 2018-05-17 12:17:42 +02:00
Shannon 1cf63bd471 missing checkin of package-lock 2018-05-17 11:29:21 +02:00
Shannon 07a263b794 Fixes validation check for variant nodes that don't have names assigned 2018-05-17 10:28:38 +02:00
Claus c2236b7b97 Merge pull request #2632 from umbraco/temp-U4-11218
Merge infinite editing UI branch to temp8
2018-05-17 09:16:01 +02:00
Claus 9e3db051c9 Merge remote-tracking branch 'origin/temp8' into temp-U4-11218
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/insertmacro.html
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/linkpicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/rteembed.html
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/googlemaps/googlemaps.html
#	src/Umbraco.Web.UI/web.Template.config
2018-05-17 08:26:02 +02:00
Claus 70d1bed396 Merge branch 'temp8' into temp-U4-11218 2018-05-17 08:16:17 +02:00
Stephan a6ea270d93 Cleanup build 2018-05-16 21:52:40 +02:00
Stephan a39a9b7a89 Cleanup nuspec 2018-05-16 16:02:51 +02:00
Stephan 8c815cf47e Git-ignore local directory 2018-05-16 15:54:08 +02:00
Stephan 2b7966dc55 Depend on Umbraco.SqlServerCE, package in net47 2018-05-16 15:54:07 +02:00
Stephan fe1a4f7d4f Depend on Umbraco.SqlServerCE 2018-05-16 15:54:07 +02:00
Stephan 9b17468c43 Cleanup solution 2018-05-16 15:53:22 +02:00
Stephan 6bedc1020b Cleanup solution and build wip 2018-05-16 15:46:51 +02:00
Stephan fc56126820 Cleanup Solution 2018-05-16 15:46:51 +02:00
Shannon c6fa0e560a Merge branch 'temp8' of https://github.com/umbraco/Umbraco-CMS into temp8 2018-05-16 15:21:35 +02:00
Shannon 34de58e0dc adjust assembly redirects 2018-05-16 15:21:23 +02:00
Shannon Deminick 056bcaff96 adds notes on what to work on 2018-05-16 13:51:59 +02:00
Shannon Deminick f38df3753c Adds quick start v8 link 2018-05-16 13:35:52 +02:00
Shannon Deminick 7fd78aaf2e adds link to quick start guide 2018-05-16 13:29:38 +02:00
Shannon Deminick 9bba6f4b9b adding get started guide for v8 2018-05-16 13:21:29 +02:00
Shannon Deminick 5128c23413 cross link to v7 branch 2018-05-16 12:57:13 +02:00
Shannon b565b8be77 disables redirect tracking for now until we fix it to work with variants 2018-05-16 11:25:57 +02:00
Shannon Deminick 2e2e76c92a Merge pull request #2624 from umbraco/temp-U4-11327
fixes: U4-11327 Remove styles for umb-era-button and use umb-button c…
2018-05-16 18:51:12 +10:00
Shannon 1bc3fdd07c Fixes package tree references 2018-05-16 10:49:43 +02:00
Shannon c1e0b86554 Merge branch 'temp8' into temp-U4-11327 2018-05-16 10:39:51 +02:00
Shannon bf7591aaa0 Merge branch 'temp8' of https://github.com/umbraco/Umbraco-CMS into temp8 2018-05-16 10:33:57 +02:00
Shannon 6c5abf14bd Removes legacy dialog client files 2018-05-16 10:33:46 +02:00
Claus 8044ccbf27 adding missing null check after navigating to parent. 2018-05-16 10:17:38 +02:00
Shannon 95c6de5534 Merge branch 'temp8' of https://github.com/umbraco/Umbraco-CMS into temp8 2018-05-16 10:15:57 +02:00
Stephan 2c124e87dd Merge pull request #2630 from umbraco/temp8-dependency-fixing
Temp8 dependency fixing
2018-05-16 10:15:45 +02:00
Shannon c655873b7d Cleanup canvas designer files, no more dotless dependency, cleans up preview, removes bloat 2018-05-16 10:13:55 +02:00
Shannon ea6c466323 Fixes up some warnings 2018-05-16 10:06:51 +02:00
MADSRASMUSSB4A1\madsrasmussen 6e647d87fa Merge branch 'temp8' into temp-U4-11218
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/controllers/main.controller.js
#	src/Umbraco.Web.UI/umbraco/Views/Default.cshtml
2018-05-16 09:51:26 +02:00
Shannon 07e7068c22 removed too many assembly bindings 2018-05-15 18:07:48 +02:00
Shannon 971114e0fd Updates to 472 and re-targets to the original System.Threading.Tasks.Dataflow package against netstandard 1.3 but with 472 this completely fixes dependency outputs 2018-05-15 17:17:05 +02:00
Shannon 03977c4806 removed too much 2018-05-15 17:13:24 +02:00
Shannon 842d5049b5 Fixing dependencies so we aren't relying so much on netstandard 1.3 libs which require system runtime facade's 2018-05-15 17:02:06 +02:00
Shannon Deminick e4d1415627 Merge pull request #2621 from umbraco/temp8-U4-11282
U4-11282 - Publishing, unpublishing, saving drafts, for variant, non variant content types and property types
2018-05-15 20:29:10 +10:00
Mads Rasmussen 5dad26cb92 fixes: U4-11327 Remove styles for umb-era-button and use umb-button component instead 2018-05-11 11:59:32 +02:00
Mads Rasmussen 491ce00c17 remove console.log from unit test 2018-05-11 10:36:36 +02:00
Mads Rasmussen b7c7e8e84b make right side overlays go all the way to the top 2018-05-11 10:11:26 +02:00
Mads Rasmussen 095704d297 removing unnecessary print of number of open overlays 2018-05-11 10:05:57 +02:00
Shannon 09d03161ce fixes test 2018-05-11 00:09:31 +10:00
Shannon aa4dc64a57 Fixes ContentCache.GetRouteByIdInternal to ensure that no route is returned for any variant in the path of an unpublished variant of the same culture 2018-05-10 23:07:33 +10:00
Shannon d78fa85307 null check fix 2018-05-10 22:40:32 +10:00
Shannon 0ee056aafc null check fix 2018-05-10 22:38:10 +10:00
Shannon 68f0a64136 Fixes auth with AllowsCultureVariation and LanguageController post methods, fixes merge issues with navigation.controller 2018-05-10 19:16:46 +10:00
Warren Buckley f9f108ef33 Merge pull request #2620 from umbraco/temp-U4-11309
Temp u4 11309
2018-05-10 10:00:17 +01:00
Shannon 573b8a0701 Merge remote-tracking branch 'origin/temp8' into temp8-U4-11282
# Conflicts:
#	src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs
#	src/Umbraco.Web.UI.Client/src/controllers/navigation.controller.js
2018-05-10 18:55:39 +10:00
Shannon 4ce6f5c3b0 Fixes how the name is ensured on the content tree so that the media tree doesn't break. 2018-05-10 18:20:33 +10:00
Shannon f2b78c06ef FIxes issue where an invariant property type was being validated with a culture when that would always fail. Fixes issue when saving a content type to ensure that a property type is never both variant and invariant. Adds test. 2018-05-10 18:01:41 +10:00
Mads Rasmussen d27594d4af Update picked nodes which has been updated through the media picker 2018-05-09 16:19:54 +02:00
Mads Rasmussen 7239ce97aa only allow users to add and edit media if they have access to the media section 2018-05-09 11:09:26 +02:00
Mads Rasmussen 18b7581879 only parse in the media id for the infinite media editor 2018-05-09 09:46:15 +02:00
Mads Rasmussen 8535ff1d01 update media items in media picker if they are changed in the infinite media editor 2018-05-09 09:35:11 +02:00
Mads Rasmussen 4f366bbdda prepare media editor to support infinite mode 2018-05-09 09:34:11 +02:00
Mads Rasmussen 86c554e3d3 add option to prevent redirect of succesfull saves to new route 2018-05-09 09:20:23 +02:00
Mads Rasmussen d97d1c427e fixes some js errors in editor service 2018-05-09 09:18:45 +02:00
Mads Rasmussen 600979d129 Merge branch 'temp8' into temp-U4-11218 2018-05-09 08:51:34 +02:00
Shannon 8be861809a fixes filter 2018-05-09 15:52:06 +10:00
Shannon 8642a52a12 Fixes property model binding to display to show the invariant data if the property is non variant 2018-05-09 14:35:23 +10:00
Shannon d90ccbb7f0 no matter what you can always publish the current variant 2018-05-09 14:34:55 +10:00
Shannon 9c1451ecd3 Fixes LanguageRepository for deleting a lang, updates UrlProvider to have consistent method parameter order, updates UmbracoHelper to have culture params for getting URLs 2018-05-09 12:50:34 +10:00
Stephan c890421f55 Fix mixed properties (wip) 2018-05-08 17:09:26 +02:00
Stephan 6d1f42c9b6 Fixes 2018-05-08 16:41:37 +02:00
Stephan b1faade9b0 Revert various changes 2018-05-08 16:41:30 +02:00
Warren Buckley 5bc229801b Merge pull request #2618 from umbraco/temp8-U4-11284-2
Removes vertical and horizontal scroll bars on content tree language …
2018-05-08 12:20:22 +01:00
Robert f3e509ad55 Removes vertical and horizontal scroll bars on content tree language picker, updates languageCreated and languageDeleted event listeners to check for variant doctypes before populating the language list 2018-05-08 12:13:42 +02:00
Warren Buckley 9e8239f05b Merge pull request #2612 from umbraco/temp8-U4-11284
Fixes - U4-11284 When you don't have any doc types that are variant, the tree language drop downs should not be there
2018-05-08 10:28:54 +01:00
Stephan 6051891280 Fixes 2018-05-08 11:06:07 +02:00
Robert 70e4ea5502 Moved authenticated flag back to "app.ready" listener 2018-05-08 10:46:09 +02:00
Robert 216aaec7f2 Removed unneeded test 2018-05-08 10:00:28 +02:00
Robert db160cdc85 Merge pull request #2617 from umbraco/temp8-U4-11306
fixes: U4-11306 Add load indicators in doc type infinite editors
2018-05-08 09:00:02 +02:00
Claus d1191c0693 temporarily removing the packages tree - known issue it's not working. 2018-05-08 08:49:09 +02:00
Claus 9ac7df82ad fixing typo in packages tree. 2018-05-08 08:46:48 +02:00
Shannon 389fb100bb 'fixes' an issue where you can get any property value back due to the incorrect cache key being used 2018-05-08 16:01:20 +10:00
Shannon 7728dfa853 Ensures that the PublishedContent culture dictionary is CultureInvariantIgnoreCase and fixes the publish dialog to allow publishing the current culture if the user has edited it 2018-05-08 13:50:39 +10:00
Shannon 177bba5e73 REmoves null checks on PropertyData since this causes exceptions when creating this object and deserializing to this object 2018-05-08 13:03:19 +10:00
Shannon ee9f150483 Removes the AdditionalData properties for EntitySlim and moves them to real properties of IDocumentEntitySlim, renames PublishedCultureInfos to not be plural 2018-05-08 12:43:07 +10:00
Shannon 85c739aed4 Merge branch 'temp8-U4-11227' into temp8-U4-11282
# Conflicts:
#	src/Umbraco.Core/Models/ContentBase.cs
#	src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs
#	src/Umbraco.Tests/Services/EntityServiceTests.cs
#	src/Umbraco.Web/PublishedCache/NuCache/ContentCache.cs
#	src/Umbraco.Web/PublishedContentExtensions.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
2018-05-08 12:31:03 +10:00
Shannon 0e19ec7495 Fixes logic for determining if a domain is published and fixes logic for getting a url name for a variant taking into account it's published status 2018-05-08 11:21:14 +10:00
Shannon 6e61450788 Merge remote-tracking branch 'origin/temp8' into temp8-U4-11282 2018-05-08 10:36:53 +10:00
Mads Rasmussen 736190f93c rename class on dropdown property editor 2018-05-07 21:40:27 +02:00
Mads Rasmussen 02f95053b8 fixes: U4-11306 Add load indicators in doc type infinite editors 2018-05-07 21:14:35 +02:00
Stephan 3f73452bc7 Various fixes, and U4-11287 2018-05-07 18:51:18 +02:00
Stephan 5247a9d143 Merge branch temp8 into temp8-U4-11227 2018-05-07 18:27:30 +02:00
Stephan 912d89cdb3 Fix DomainHelper 2018-05-07 18:24:56 +02:00
Robert 1a82f93722 Fixes email property editor pre-value 2018-05-07 17:59:43 +02:00
Shannon 8a5ca2c4b4 Fixes being able to edit invariant content 2018-05-08 01:16:32 +10:00
Shannon b1eeb5b193 Merge remote-tracking branch 'origin/temp8' into temp8-U4-11282 2018-05-08 00:39:12 +10:00
Shannon 97cb752cda Ensures the whole doc gets unpublished if a mandatory culture is unpublished, updates content service Unpublish to have it's own status result enum since that is needed. 2018-05-08 00:37:41 +10:00
Shannon 5a991c9424 Fixes Publishing/Unpublishing variants and it's nuances 2018-05-07 23:22:52 +10:00
Robert ff505531c2 Merge pull request #2614 from umbraco/temp8-U4-11283
fixes - U4-11283 Cannot save content when a doc type is variant but a property type is invariant
2018-05-07 13:18:15 +02:00
Robert 1b2a964001 Fixed localization 2018-05-07 12:08:59 +02:00
Mads Rasmussen 1d5751a1e5 Merge branch 'temp8' into temp-U4-11218
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js
#	src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/propertysettings/propertysettings.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/propertysettings/propertysettings.html
#	src/Umbraco.Web.UI.Client/src/views/content/edit.html
2018-05-07 11:25:38 +02:00
Robert b8c5a389d2 Merge pull request #2613 from umbraco/temp8-U4-11223
Temp8 u4 11223
2018-05-07 09:58:29 +02:00
Stephan 5d37df182a Fix tests 2018-05-07 09:36:51 +02:00
Stephan d13a6f5f58 Fixes 2018-05-07 08:26:10 +02:00
Stephan aa35b28349 Cleanup 2018-05-07 08:25:09 +02:00
Stephan 6104dcafd5 Merge branch 'temp8' into temp8-U4-11227 2018-05-07 08:21:58 +02:00
Stephan 71ed99f080 Fix some tests 2018-05-05 10:46:52 +02:00
Stephan bb0f6fe0e3 Cleanup benchmarks SqlCE nuget dependency 2018-05-05 10:02:04 +02:00
Stephan 73b5694aad Fix web.config transform 2018-05-04 18:35:01 +02:00
Mads Rasmussen 63d7768653 add bg box to code editors 2018-05-04 18:32:35 +02:00
Mads Rasmussen ed0886b040 add bg box to user details sidebar 2018-05-04 18:21:58 +02:00
Mads Rasmussen 9474c78de8 add bg boxes to content type editors 2018-05-04 18:21:04 +02:00
Stephan 8388eca503 Fix agressive cleanup 2018-05-04 15:00:10 +02:00
Robert cc7febcc6d Allows variant content item to save while having a invariant property, also fixes not being able to save invariant content item with invariant property 2018-05-04 13:51:35 +02:00
Robert c5de31cce3 Invariant property value should persist trough all variants of a content item 2018-05-04 13:44:04 +02:00
Robert 48c70604a9 Added localization for "Ready to publish?" publish overlay, added previously removed property which was still in use. 2018-05-04 13:42:33 +02:00
Mads Rasmussen 650441b1f6 don't add shadow to the default editor 2018-05-04 11:25:19 +02:00
Shannon 7a92691bf5 ok the routing is working, for realz this time 2018-05-04 16:07:05 +10:00
Shannon 506365b8ff OK, finally got the query string problem resolved 2018-05-04 13:17:56 +10:00
Mads Rasmussen a5bbf3d832 add will-change css property to prepare browser for the animations 2018-05-03 20:04:34 +02:00
Mads Rasmussen 101d92ca2d speed up animation 2018-05-03 20:03:05 +02:00
Shannon 912711bfa0 Fixing tree, navs, initializing, sequence of events, oh my. The init logic is much more stable but we have issues with tracking the mculture query string 2018-05-04 00:58:18 +10:00
Mads Rasmussen 677bf71a94 make icon picker as infinite editor 2018-05-03 16:11:32 +02:00
Stephan b35d28c568 Merge branch temp8 into temp8-U4-11227 2018-05-03 15:12:42 +02:00
Stephan 3495331005 Cleanup, get rid of warnings 2018-05-03 15:11:57 +02:00
Stephan bcf46eceb6 Cleanup, get rid of warnings 2018-05-03 15:11:52 +02:00
Stephan d04a573888 Refactor some locks, get rid of warnings 2018-05-03 15:11:41 +02:00
Stephan 41144bb7f7 Fix references and build 2018-05-03 15:11:33 +02:00
Stephan 5798d8e57b Enable src/preserve.belle to stop rebuilding Belle all the time 2018-05-03 15:11:25 +02:00
Mads Rasmussen e2478e5cd4 move new editors to infinite editor folder 2018-05-03 14:43:22 +02:00
Mads Rasmussen c4027898cb fix validation in property settings dialog 2018-05-03 14:21:43 +02:00
Mads Rasmussen 2704111497 move indent value to a variable 2018-05-03 13:44:07 +02:00
Robert 8a9caad23d Small fix to editors that had no config values defined. 2018-05-03 13:14:19 +02:00
Mads Rasmussen 1fc0b32fc2 submit property settings editor on enter 2018-05-03 10:55:27 +02:00
Mads Rasmussen 11a4040da7 remove unused umb-overlay component 2018-05-03 10:54:51 +02:00
Robert b5ec775833 Removed duplicate code and fixed bug where dropdown would not go away when there were no document types that allowed variations 2018-05-03 10:35:23 +02:00
Mads Rasmussen 329f90922c remove old content type overlays 2018-05-03 10:30:06 +02:00
Mads Rasmussen 4eca4ac291 use infinite editing in content type editors instead of overlays 2018-05-03 10:19:14 +02:00
Robert f447294c0b Adds new end point that returns true/false if current document types allows variations, display language dropdown if current content types allow variations. 2018-05-03 10:18:08 +02:00
Shannon 46c7290e4f Fixes JS tests 2018-05-03 15:16:23 +10:00
Shannon c33bdf1f27 Revert "Reverts change from merge in U4-11289 aka PR#2608 from Shan - that causes the Karma unit JS tests to fail - not sure why the chained version fails though & thus the Powershell ZIP & Nuget build output script"
This reverts commit 2246e5bc2f.
2018-05-03 14:40:56 +10:00
Stephan a545c3c333 Fix 2018-05-02 18:15:22 +02:00
Stephan aaa1ac0700 Merge branch temp8 into temp8-U4-11227 2018-05-02 17:50:58 +02:00
Stephan 93adda2e4a Cleanup 2018-05-02 17:44:14 +02:00
Stephan 5c96b32c64 Fix tests 2018-05-02 16:23:58 +02:00
Warren 2246e5bc2f Reverts change from merge in U4-11289 aka PR#2608 from Shan - that causes the Karma unit JS tests to fail - not sure why the chained version fails though & thus the Powershell ZIP & Nuget build output script 2018-05-02 14:03:00 +01:00
Stephan a5f1ad6da1 Merge branch temp8 into temp8-U4-11227 2018-05-02 13:43:12 +02:00
Stephan d56af5872d Implement basic fallback plumbing (in progress) 2018-05-02 13:38:45 +02:00
Sebastiaan Janssen a4cc67f732 Make NuGet package install work 2018-05-02 12:35:10 +02:00
Robert 64d467e071 Merge pull request #2608 from umbraco/temp8-U4-11289
U4-11289 Tracking the currently selected language in the main tree
2018-05-02 12:10:02 +02:00
Warren Buckley 394e7f3d6d Merge pull request #2609 from umbraco/temp8-U4-11173
Fixes - U4-11173 Update the publish dialog list to only show languages that have pending changes
2018-05-02 09:39:08 +01:00
Stephan 211267d500 Deal with FIXMEs 2018-05-02 09:31:30 +02:00
Stephan a695b8aed5 Test host-less domains 2018-05-02 08:55:21 +02:00
Shannon 6fe9c4d4df Fixes the null PublishName problem, ensures the quey strings are not replaced when selecting a doc type 2018-05-02 15:35:26 +10:00
Shannon 9843f3a5fd Ensures that domains assigned to non-published nodes are filtered when routing, ensures caches are cleared when content is deleted or langauges are changed, updates logic for dealing with null invariant content names, adds more validation for saving cultre variants. 2018-05-02 14:52:00 +10:00
Shannon efc56c015f Merge remote-tracking branch 'origin/temp8' into temp8-U4-11289 2018-05-02 13:22:32 +10:00
Shannon Deminick 638b6e9cdc Merge pull request #2607 from umbraco/temp8-U4-11291
U4-11291 Paging in the IContentService needs to work with variant data - for both names and property values
2018-05-02 13:22:07 +10:00
Shannon fb759e3923 Merge remote-tracking branch 'origin/temp8' into temp8-U4-11289 2018-05-02 13:11:19 +10:00
Mads Rasmussen c308b081a1 start on docs for editorService 2018-05-01 20:21:48 +02:00
Mads Rasmussen 6c77313a82 remove background color on modal footer 2018-05-01 17:12:40 +02:00
Mads Rasmussen 7c42d29eb0 remove margin on actions 2018-05-01 17:11:54 +02:00
Robert 106955f6c3 Adds localization keys for some text, removed duplicate loading indicator 2018-05-01 16:41:36 +02:00
Mads Rasmussen e3754fb62f remove indentation code from the editorService 2018-05-01 15:33:14 +02:00
Mads Rasmussen db2d75c3f5 temp remove animations 2018-05-01 15:31:03 +02:00
Robert adfc8769e6 Adding missing service injection which broke discard changes dialog 2018-05-01 13:16:13 +02:00
Stephan 6548154261 Fixes 2018-05-01 12:45:07 +02:00
Robert 630212f66f remove console log 2018-05-01 12:06:43 +02:00
Robert a4b5e08a73 Simplified the way we mark variants as drafts trough localization keys, show published languages in the overlay instead of hiding them 2018-05-01 12:03:34 +02:00
Shannon be4ea93d12 U4-11289 Tracking the currently selected language in the main tree 2018-05-01 18:17:07 +10:00
Warren 8f11edc17a Fix up csproj to remove reference to file that's been removed in cleanup - umbraco/developer/packages/installer.aspx 2018-05-01 09:12:07 +01:00
Robert fc860d5061 Merge branch 'temp8' into temp8-U4-11173 2018-05-01 08:27:45 +02:00
Robert 03c574a97c Merge pull request #2605 from umbraco/temp8-U4-11290
U4-11290 - Disables Open in List View link from variant/language switcher in node name
2018-05-01 08:11:54 +02:00
Shannon f407c3b2b3 Updates test to test for variant doc type with invariant property types 2018-05-01 13:43:27 +10:00
Shannon 39f9449dc7 Adds overloads for content ctors to pass in culture so we can more easily set the name in the API nicely, adds a unit test for paging queries with variant data. 2018-05-01 13:30:25 +10:00
Shannon 171a82e233 Adds more description to CustomRouteUrlProvider 2018-05-01 12:23:09 +10:00
Shannon 459479a7b8 Refactors how macros are stored in the DB 2018-05-01 12:12:26 +10:00
Shannon 1bdf064437 Removes the DistributedCall section along with CacheRefresher and the ConfigServerRegistrar, changes IServerMessenger to not have any servers parameters since we don't use that. 2018-05-01 10:39:04 +10:00
Stephan 92b9184706 Swap order of IContentBase.SetName parameters 2018-04-30 22:05:07 +02:00
Stephan ff7c74ec8a Rename accessors 2018-04-30 21:29:49 +02:00
Stephan dbf310caf1 Now use empty string for invariant in published 2018-04-30 21:03:43 +02:00
Shannon 2afd257838 more cleanup of unused files 2018-05-01 01:55:40 +10:00
Shannon 19edfdb2a4 Removes unused and obsoleted code 2018-05-01 01:30:36 +10:00
Shannon 6faa2ff177 Removes unused and obsoleted code 2018-05-01 01:27:25 +10:00
Shannon c8d2ea141b Removes more xslt, more very old code and configurations that aren't used anymore 2018-05-01 01:15:43 +10:00
Shannon 310a31b03e More xslt removal and other file cleanup 2018-05-01 01:01:24 +10:00
Shannon 0a18306d40 More xslt removal 2018-05-01 00:45:05 +10:00
Shannon 0a5db8f97b Fixes up macros and file trees 2018-05-01 00:35:49 +10:00
Robert a4b24bf198 Content language picker now contains (if needed) Draft state to be consistent with the Publish dialog 2018-04-30 16:23:32 +02:00
Robert 92d88d5a4c Publish dialog should show only variants in Draft state 2018-04-30 16:18:35 +02:00
Shannon 6db5ebf6f9 More xslt removal 2018-05-01 00:15:05 +10:00
Robert a7f9628b48 Updated ContentItemDisplay model to contain IsEdited property 2018-04-30 16:06:53 +02:00
Shannon 9a2797303b cleaning up files 2018-04-30 23:30:08 +10:00
Shannon 51d608125d updates editor config file with vs specific rules 2018-04-30 23:29:44 +10:00
Shannon 890b5f30a1 Merge remote-tracking branch 'origin/dev-v7' into temp8
# Conflicts:
#	src/Umbraco.Core/Configuration/UmbracoSettings/IRepositoriesSection.cs
#	src/Umbraco.Core/Configuration/UmbracoSettings/IRepository.cs
#	src/Umbraco.Core/Configuration/UmbracoSettings/RepositoriesCollection.cs
#	src/Umbraco.Core/Configuration/UmbracoSettings/RepositoriesElement.cs
#	src/Umbraco.Core/Configuration/UmbracoSettings/RepositoryConfigExtensions.cs
#	src/Umbraco.Core/Configuration/UmbracoSettings/RepositoryElement.cs
#	src/Umbraco.Core/Configuration/UmbracoSettings/UmbracoSettingsSection.cs
#	src/Umbraco.Core/Services/PackagingService.cs
#	src/Umbraco.Tests/Configurations/UmbracoSettings/PackageRepositoriesElementDefaultTests.cs
#	src/Umbraco.Tests/Configurations/UmbracoSettings/PackageRepositoriesElementTests.cs
#	src/Umbraco.Tests/Plugins/PluginManagerTests.cs
#	src/Umbraco.Web.UI.Client/lib/umbraco/Extensions.js
#	src/Umbraco.Web.UI/config/umbracoSettings.config
#	src/Umbraco.Web.UI/umbraco/developer/Packages/installer.aspx
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackager.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs
#	src/umbraco.cms/umbraco.cms.csproj
2018-04-30 23:25:07 +10:00
Stephan 038fc87a40 Cleanup, fix tests 2018-04-30 15:11:01 +02:00
Warren 954098eb7e Comments out & leaves comment about removing the open in split view link (otherwise we will forget) 2018-04-30 13:52:05 +01:00
Stephan bcd0c95ec1 Refactor getting urls 2018-04-30 09:14:14 +02:00
Stephan 7dd1efb29f Refactor content culture & variations 2018-04-30 09:14:14 +02:00
Stephan 6959e595f5 IPublishedContent.UrlSegment 2018-04-30 09:14:14 +02:00
Stephan ce8775b3e7 Cleanup IPublishedContent 2018-04-30 09:14:13 +02:00
Stephan 27390afe86 All tests green 2018-04-30 09:13:21 +02:00
Stephan 923fdf9199 ISystemDefaultCultureAccessor 2018-04-30 09:13:21 +02:00
Stephan 908589277a U4-11227 - default variations and fallback (wip) 2018-04-30 09:13:21 +02:00
Stephan 8873fa9dd4 Merge pull request #2600 from umbraco/temp8-U4-11220
U4-11220 Implement routing for variants
2018-04-30 09:04:33 +02:00
Shannon a26d7747b6 removes commented out code 2018-04-30 15:51:05 +10:00
Shannon 1a99d0e4d0 Merge remote-tracking branch 'origin/patch-v7' into dev-v7 2018-04-30 15:27:27 +10:00
Shannon Deminick da0fe5e5a3 Merge pull request #2602 from ProNotion/issues/U4-8516
Fixes U4-8516 Copied node now sets the current user as the creator of the new node.
2018-04-30 15:25:07 +10:00
Stephan 8f13fa3ae5 ISystemDefaultCultureProvider 2018-04-27 18:21:06 +02:00
Stephan aa46e1e282 Test nullref on NPocoSqlExtensions 2018-04-27 17:54:49 +02:00
Stephan dbf1b1e0d4 Refactor DomainHelper 2018-04-27 17:54:49 +02:00
Stephan 9407f75522 Fix importing test 2018-04-27 17:54:40 +02:00
Simon Dingley dbad0d261e Fixes U4-8516 Copied node now sets the current user as the creator of the new node. 2018-04-27 16:18:25 +01:00
Shannon 5b555d35d3 adds test 2018-04-27 15:35:11 +10:00
Shannon f6984438a0 Fixes cases where there are no domains assigned, ensures there can't be duplicate URLs returned to the UI 2018-04-27 15:26:50 +10:00
Shannon 335cf65663 fixes more of my test logic 2018-04-27 14:01:29 +10:00
Shannon c19dbeda23 Adds a couple of tests which yielded some other issues with getting urls by culture, those are now fixed 2018-04-27 13:27:15 +10:00
Shannon 73567ffdce Fixes IPublishedShapshot and friends 2018-04-27 11:38:50 +10:00
Shannon ad6a745681 Changes CultureInfo to string where required, fixes tests 2018-04-27 11:08:20 +10:00
Shannon 59b6665ff3 Removes NiceUrl methods, renames NiceUrl test cases 2018-04-27 10:57:51 +10:00
Shannon 3cdc0e1142 Removes IShortStringHelper.ReplaceMany, this should just be a normal string extension and removes the need to load in IUmbracoSettings for this simple purpose, this fixes some unit tests 2018-04-27 10:26:32 +10:00
Shannon 270f3a75ff Fixes more tests 2018-04-27 09:57:04 +10:00
Shannon 12d56cd201 fixes null check which fixes a whole lot of failing tests 2018-04-26 23:48:07 +10:00
Shannon cb3cba5b05 Updates DefaultUrlProvider so that hieararchy of nodes that are variant and invariant still generate URLs correctly 2018-04-26 23:34:06 +10:00
Shannon ffd85b4e94 Fixes more bugs and outbound routing for additional urls 2018-04-26 22:54:36 +10:00
Shannon 23c40cbf2c Fixes a couple issues, changes name from PublishValues to TryPublishValues 2018-04-26 21:37:29 +10:00
Shannon e99c519032 Merge remote-tracking branch 'origin/temp8' into temp8-U4-11220
# Conflicts:
#	src/Umbraco.Web/PublishedCache/NuCache/DataSource/BTree.cs
2018-04-26 19:18:14 +10:00
Shannon Deminick c435597d7e Merge pull request #2599 from umbraco/temp8-U4-11250
Refine Variants [U4-11250]
2018-04-26 16:32:17 +10:00
Mads Rasmussen c71d00cd7e wip closing editors 2018-04-25 17:55:27 +02:00
Stephan 40f94d23d4 Cleanup 2018-04-25 17:39:02 +02:00
Stephan f3bf5d86d2 Cleanup BTree 2018-04-25 17:39:02 +02:00
Stephan 16aac382d1 Merge branch 'temp8' into temp8-U4-11220 2018-04-25 17:38:36 +02:00
Mads Rasmussen ef3b3326fc always take up all available space when editor is not the last opened one 2018-04-25 14:44:20 +02:00
Mads Rasmussen 79f303ddcf wip animation experiments 2018-04-25 10:29:18 +02:00
Stephan 87f9e8c72e Merge branch temp8 into temp8-U4-11250 2018-04-24 19:21:12 +02:00
Stephan aba5e849c1 Fix tests 2018-04-24 18:56:03 +02:00
Stephan ef2fd52482 Cleanup 2018-04-24 17:59:26 +02:00
Stephan 7b82208677 Implement getting avail/edit/publish cultures 2018-04-24 17:43:08 +02:00
Stephan 23333710f5 Implement culture available/edited 2018-04-24 16:50:13 +02:00
Shannon 2e38f7b27b Fixes PublishedContent.cs when the property index doesn't contain the alias index (due to adding a new property type and the json not matchin) 2018-04-24 17:28:57 +10:00
Shannon c5ca61f249 Fixes PublishedContent.cs when the property index doesn't contain the alias index (due to adding a new property type and the json not matchin) 2018-04-24 17:15:35 +10:00
Shannon 6db75d4226 Fixes PublishedContent.cs when the property index doesn't contain the alias index (due to adding a new property type and the json not matchin) 2018-04-24 17:11:09 +10:00
Shannon 43ca9593d4 fixes AliasUrlProvider 2018-04-24 16:29:55 +10:00
Shannon a1cd80a0f6 Removes GetLanguageByCultureCode since it is kind of useless and the name is also very misleading 2018-04-24 15:59:16 +10:00
Shannon f49fa7b567 don't show the variation toggle on a property type if the content type doesn't have it enabled, ensure the default variation is set on a new property type based on the content type setting 2018-04-24 15:41:50 +10:00
Shannon d552d5dadb Updates UI and mapping to update a property type to allow being culture variant 2018-04-24 15:27:33 +10:00
Shannon de2784c281 Adds culture optional parameters to all GetUrl methods on UrlProvider 2018-04-24 14:51:27 +10:00
Shannon 7c05f2e86c fixes routing cache key 2018-04-24 14:39:52 +10:00
Shannon e9bfad3c09 Merge remote-tracking branch 'origin/temp8' into temp8-U4-11220 2018-04-24 13:18:34 +10:00
Shannon 9044c9328d Gets inbound routing working, reduces the amount of non injected dependencies, reduces the amount of DomainHelper instances 2018-04-24 13:07:18 +10:00
Shannon 48641166b9 WIP - gets 'inbound' routing working to generate culture specific URLs 2018-04-24 01:31:01 +10:00
Stephan 6dfb618efe Merge branch 'temp8' into HEAD 2018-04-23 12:57:12 +02:00
Mads Rasmussen 7e383ea961 fix issue with infinite mode and create route param in media editor 2018-04-23 11:13:01 +02:00
Robert 5e14af7d38 Merge pull request #2598 from umbraco/temp8-U4-11219
U4-11219 Wire up new APIs for Variant names
2018-04-23 11:09:18 +02:00
Mads Rasmussen 312b2ff435 Merge branch 'dev-v8' into temp-U4-11218 2018-04-23 09:43:22 +02:00
Stephan 6b9adfa929 Move IsCultureAvailable to IContentBase 2018-04-21 11:11:31 +02:00
Stephan a69019aea0 From int languageId to string culture 2018-04-21 09:57:28 +02:00
Sebastiaan Janssen d30ec335b8 Merge branch 'patch-v7' into dev-v7 2018-04-20 11:05:46 +02:00
Sebastiaan Janssen e820d2a4aa Merge branch 'patch-7.9.6' into dev-v7 2018-04-20 11:05:37 +02:00
Sebastiaan Janssen 5aa490cbff Merge branch 'patch-7.8.3' into dev-v7 2018-04-20 11:04:51 +02:00
Sebastiaan Janssen f1a8da2876 Bumps version to 7.9.6 2018-04-20 11:02:29 +02:00
Sebastiaan Janssen 27f6560a00 U4-11253 New Chrome 66 trimStart function is overriding the Umbraco Core trimStart polyfill 2018-04-20 11:00:49 +02:00
Sebastiaan Janssen 7a181bd281 Bump version to 7.8.3 2018-04-20 10:59:13 +02:00
Sebastiaan Janssen 4a0cd87a38 U4-11253 New Chrome 66 trimStart function is overriding the Umbraco Core trimStart polyfill 2018-04-20 10:51:28 +02:00
Sebastiaan Janssen 861e5908a7 U4-11253 New Chrome 66 trimStart function is overriding the Umbraco Core trimStart polyfill 2018-04-20 10:35:21 +02:00
Claus ae5a5bd2c0 Merge pull request #2596 from umbraco/temp-U4-11146
Removes Package repository config setting and related unnecessary code
2018-04-20 10:23:16 +02:00
Shannon 7d349ef518 Replaces instances of UmbracoTemplatePage with UmbracoViewPage 2018-04-20 17:40:01 +10:00
Robert 395575dbe4 Merge pull request #2597 from umbraco/temp-U4-11253
U4-11253 New Chrome 66 trimStart function is overriding the Umbraco C…
2018-04-20 09:39:15 +02:00
Shannon 5dfa0e7446 Updates EntityRepository to support normal get operations adds another unit tests, adds notes. 2018-04-20 16:07:34 +10:00
Shannon 9325d30e7c adds some notes to the setVariantStatusColor 2018-04-20 13:44:20 +10:00
Shannon d99beb0c8b Gets the tree to display the culture specific name 2018-04-20 13:26:45 +10:00
Shannon e9f0e98d2c Updates EntityRepository to get the variant names for content items ... for the non-paged query which we can use in the tree 2018-04-20 13:12:55 +10:00
Sebastiaan Janssen 6d6be4e6a4 Fixes last failing test 2018-04-19 20:29:46 +02:00
Sebastiaan Janssen fbc9c6aed6 Fixes even more (hopefully all) unit tests 2018-04-19 20:06:34 +02:00
Sebastiaan Janssen 386dc1a14d U4-11253 New Chrome 66 trimStart function is overriding the Umbraco Core trimStart polyfill 2018-04-19 19:54:53 +02:00
Sebastiaan Janssen 8fc33f6aea Fix unit tests 2018-04-19 19:36:44 +02:00
Sebastiaan Janssen 6c8e39876f These changes shouldn't have been checked in 2018-04-19 19:36:32 +02:00
Sebastiaan Janssen bfca8c555e Removes Package repository config setting and related unnecessary code 2018-04-19 19:12:42 +02:00
Shannon c84087e96b Gets the variant names working in the editor 2018-04-20 00:59:23 +10:00
Shannon d4252a3dc8 Merge branch 'dev-v8' into temp8-U4-11219 2018-04-20 00:12:31 +10:00
Shannon 6b12fe7c57 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8
# Conflicts:
#	src/Umbraco.Web/PropertyEditors/ParameterEditors/MultipleContentPickerParameterEditor.cs
2018-04-20 00:10:44 +10:00
Shannon 04da7cfd20 doh, fixes csproj merge 2018-04-20 00:09:12 +10:00
Shannon d5ebe12983 removes ununsed aliases 2018-04-20 00:05:45 +10:00
Stephan 5d1abaa713 Import missing parameter editor from v7 merge 2018-04-19 16:03:54 +02:00
Shannon e9e0274ad8 fixes MultipleContentPickerParameterEditor 2018-04-20 00:03:19 +10:00
Shannon 966de9b9f4 Merge branch 'dev-v8' into temp8-U4-11219 2018-04-19 23:49:06 +10:00
Shannon c46d4e9e43 Merge remote-tracking branch 'origin/dev-v7' into dev-v8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs
#	src/Umbraco.Core/Persistence/PetaPoco.cs
#	src/Umbraco.Core/Scoping/NoScope.cs
#	src/Umbraco.Core/Scoping/ScopeProvider.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Tests/Persistence/Migrations/MigrationStartupHandlerTests.cs
#	src/Umbraco.Tests/UI/LegacyDialogTests.cs
#	src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
#	src/Umbraco.Web.UI/umbraco/config/create/UI.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/zh.xml
#	src/Umbraco.Web/BatchedDatabaseServerMessenger.cs
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/Umbraco.Web/Editors/MediaTypeController.cs
#	src/Umbraco.Web/HealthCheck/Checks/Security/ClickJackingCheck.cs
#	src/Umbraco.Web/HealthCheck/Checks/Security/ExcessiveHeadersCheck.cs
#	src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyBasicConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyDtoConverter.cs
#	src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs
#	src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/ParameterEditors/MultipleContentPickerParameterEditor.cs
#	src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/create/MemberGroupTasks.cs
2018-04-19 23:41:35 +10:00
Mads Rasmussen ee853f0189 Merge branch 'dev-v8' into temp-U4-11218 2018-04-19 15:15:10 +02:00
Shannon 1d0d6e78de fixes tree again 2018-04-19 22:32:48 +10:00
Shannon 8ae27ecc27 Updates doc type editor to be able to change update the doc type to support being culture variant 2018-04-19 22:06:02 +10:00
Shannon 642ce36f59 updates when the tree does it's initialization , fixes migration 2018-04-19 21:58:59 +10:00
Shannon Deminick db5ffd6b29 Merge pull request #2594 from umbraco/temp8-U4-11128
Manage content variations [U4-11128]
2018-04-19 21:49:13 +10:00
Robert 9384cd0f27 Merge pull request #2574 from umbraco/temp-U4-11195
fixes U4-11195 Mapping complex properties slow down some queries
2018-04-19 12:22:12 +02:00
Robert 0262b4aa76 Changed ContentPropertyDto modifier back to override which rendered content with tags unable to be saved 2018-04-19 12:10:39 +02:00
Shannon 158eb18de0 Merge remote-tracking branch 'origin/dev-v8' into temp8-U4-11128 2018-04-19 18:16:49 +10:00
Mads Rasmussen 03ac073c02 Merge branch 'dev-v8' into temp-U4-11218
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/Views/Default.cshtml
2018-04-19 09:59:31 +02:00
Sebastiaan Janssen 96761efe4d Merge branch 'patch-v7' into dev-v7 2018-04-19 09:55:16 +02:00
Robert 8e02aad2bb Merge pull request #2590 from umbraco/temp-U4-11177
U4-11177 Update tree nodes with the new node names based on variant/language
2018-04-19 08:35:01 +02:00
Shannon 75fb070825 U4-11246 When user belongs to groups and none of them have browse access and one or more have a custom start node applied a YSOD occurs 2018-04-19 16:20:18 +10:00
Shannon Deminick 8a0f32e980 Merge pull request #2595 from umbraco/temp-U4-11208
U4-11208 Error : "An item with the same key has already been added." into "Umbraco.Core.Services.IdkMap.Populate" method
2018-04-19 15:27:00 +10:00
Stephan a68e37c67b Fix availability and names 2018-04-18 18:43:17 +02:00
Stephan dea47dfafe Fix availability and names 2018-04-18 18:28:47 +02:00
Sebastiaan Janssen f5163ed0c2 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2018-04-18 16:05:43 +02:00
Sebastiaan Janssen 694f3d71e2 Merge branch 'patch-v7' into dev-v7 2018-04-18 16:05:15 +02:00
Stephan 5b1bdd84ee Fix availability and content name (WIP) 2018-04-18 16:04:33 +02:00
Robert 15eb40aedb Removed code that populates content tree with duplicate start nodes. 2018-04-18 16:01:01 +02:00
Sebastiaan Janssen 49251271e9 Merge pull request #2591 from umbraco/temp-U4-10995
Removed code that populates content tree with duplicate start nodes.
2018-04-18 15:59:45 +02:00
Sebastiaan Janssen cc3e75dc63 U4-11208 Error : "An item with the same key has already been added." into "Umbraco.Core.Services.IdkMap.Populate" method 2018-04-18 15:14:16 +02:00
Stephan 4f17ecbdee Fix tests 2018-04-18 14:43:13 +02:00
Stephan ec7b038569 Variant names, availability, etc 2018-04-18 14:43:07 +02:00
Stephan d4244d3807 Fix faster languages 2018-04-18 14:42:20 +02:00
Sebastiaan Janssen eeaf17c857 Weird revert of a PR that was merged in before
(cherry picked from commit 94ed741dd5)
2018-04-18 12:18:44 +02:00
Stephan 46487fa466 Variant names, availability, etc 2018-04-18 11:14:08 +02:00
Dave Woestenborghs 21a8395142 U4-11216 Multiple Content Picker allows only one item when used as macro parameter (#2593)
U4-11216 set min and max number when used as parameter editor

(cherry picked from commit f25233ac2b)
2018-04-18 10:22:09 +02:00
Dave Woestenborghs f25233ac2b U4-11216 Multiple Content Picker allows only one item when used as macro parameter (#2593)
U4-11216 set min and max number when used as parameter editor
2018-04-18 10:21:12 +02:00
Shannon Deminick 415810ecfe Merge pull request #2589 from umbraco/temp-U4-11196
Fixes - U4-11196 Validation UI is not working for the content name field
2018-04-18 11:16:38 +10:00
Shannon fd3129f166 fixes TODOs 2018-04-18 09:42:30 +10:00
Stephan 58e4e2398a Variant names, availability, etc 2018-04-17 19:08:53 +02:00
Stephan 392965bb3a Faster languages 2018-04-17 19:08:44 +02:00
Sebastiaan Janssen 61cd59b237 Merge branch 'patch-v7' into dev-v7 2018-04-17 15:47:41 +02:00
Sebastiaan Janssen 7d171b1e95 Bumps version to 7.10.4 2018-04-17 15:46:39 +02:00
Sebastiaan Janssen d63061fade Merge pull request #2564 from leekelleher/U4-11184
U4-11184 - Nested Content PropertyValueEditor - return converted value, not update reference value
2018-04-17 15:33:14 +02:00
Sebastiaan Janssen 362261e879 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2018-04-17 15:16:46 +02:00
Sebastiaan Janssen af8c00d075 Merge remote-tracking branch 'origin/patch-7.10.3' into dev-v7 2018-04-17 15:16:21 +02:00
Sebastiaan Janssen 68b440e494 Merge remote-tracking branch 'origin/patch-7.9.5' into dev-v7 2018-04-17 15:15:44 +02:00
Sebastiaan Janssen 0c328ef30e Merge remote-tracking branch 'origin/patch-7.8.2' into dev-v7 2018-04-17 15:15:06 +02:00
Robert ef47e85741 Removed code that populates content tree with duplicate start nodes. 2018-04-17 15:07:59 +02:00
Stephan 26af63549f Fix vsts - wip 2018-04-17 10:52:32 +02:00
Stephan 70e3f895da Fix vsts - wip 2018-04-17 10:11:14 +02:00
Mads Rasmussen e6a69ccb0d add feature toggle for media grid edit button 2018-04-17 09:55:31 +02:00
Shannon f80a27f5d7 adds notes 2018-04-17 17:09:58 +10:00
Shannon f3d68276fe Fixes more angular promise chaining, fixes issue with the tree node UI not updating when sycn tree is called. 2018-04-17 17:04:52 +10:00
Claus 0c191a3ef7 updating to use includeProperties, fixing modifier keywords for methods, and passing includeProperties from list views. 2018-04-17 08:36:36 +02:00
Shannon 2872d0b0a2 Fixes tree init logic when user isn't logged in, moves sequential promise chaining to a helper funciton, updates the route promise chaining to actual chain. 2018-04-17 14:43:17 +10:00
Mads Rasmussen 97548df146 rename folder 2018-04-16 21:42:11 +02:00
Mads Rasmussen ebf3ab3a41 add helpers to open media picker and media editor 2018-04-16 21:27:07 +02:00
Stephan c97822a430 Fix vsts 2018-04-16 17:48:45 +02:00
Shannon 319bd783ff Merge remote-tracking branch 'origin/dev-v8' into temp-U4-11177 2018-04-17 01:45:32 +10:00
Shannon e234eb22f6 ensure the language tree changing is done after the digest 2018-04-17 01:41:06 +10:00
Shannon d45112f2ab Gets the content tree controller to return the names for items per language (with mock data), wires up the navigation.controller to re-build the tree for the new language 2018-04-17 01:37:35 +10:00
Stephan 6b3c6eba8d Fix csproj, nuspec 2018-04-16 17:04:23 +02:00
Shannon f7719773f2 fixes passing in the element and clicking on a root node 2018-04-17 00:38:32 +10:00
Stephan 15c6e28354 Fix nuspec 2018-04-16 16:29:37 +02:00
Shannon b5b643e04c fixes up the activeTree issue 2018-04-17 00:09:53 +10:00
Stephan dc589f9b96 Fix csproj, nuspec 2018-04-16 16:08:26 +02:00
Mads Rasmussen 7a4ff7b9c0 Merge pull request #2588 from umbraco/temp-v8-UI-infinite-editing
Temp v8 ui infinite editing
2018-04-16 15:38:33 +02:00
Mads Rasmussen d0f9021bcf Merge branch 'temp-U4-11218' into temp-v8-UI-infinite-editing 2018-04-16 15:27:29 +02:00
Shannon a92361bd00 Tree refactor, cleanup legacy support, remove odd jquery callback object, removes unused files, removes publish dialog 2018-04-16 23:07:00 +10:00
Robert f7ce8af24d Language picker is now included in the invalid field prompt (red border) so it makes sense aesthetically. 2018-04-16 14:58:54 +02:00
Shannon Deminick 9ac96f24aa Merge pull request #2587 from dawoe/temp-U4-11150
U4-11150 added culture property of tour to the docs
2018-04-16 16:48:25 +10:00
Dave Woestenborghs eca5b6e4e6 U4-11150 added culture property of tour to the docs 2018-04-16 08:35:05 +02:00
Sebastiaan Janssen 2dd7c5210f Merge pull request #2523 from tomfulton/u4-11133
U4-11133 - Fix access check for Unpublish button
2018-04-15 22:48:16 +02:00
Sebastiaan Janssen 3a854688e0 Merge branch 'dawoe-temp-U4-11150' into dev-v7 2018-04-15 22:38:22 +02:00
Sebastiaan Janssen 1594adf3ed Makes code a bit more readable and uses ToList instead of ToArray 2018-04-15 22:38:09 +02:00
Sebastiaan Janssen 23fcb38d69 Merge branch 'temp-U4-11150' of https://github.com/dawoe/Umbraco-CMS into dawoe-temp-U4-11150 2018-04-15 22:15:36 +02:00
Sebastiaan Janssen 7571949ad0 Merge pull request #2586 from bjarnef/dev-v7-U4-11215
U4-11215 - Fix icons in member create dialog
2018-04-15 22:11:24 +02:00
Bjarne Fyrstenborg d45c3520d4 Format document in media create dialog 2018-04-15 21:42:35 +02:00
Bjarne Fyrstenborg b7c04575fa Document media type resource save as in member type resource 2018-04-15 21:42:04 +02:00
Bjarne Fyrstenborg 588f5a3789 Fix some wrong descriptions 2018-04-15 21:41:23 +02:00
Bjarne Fyrstenborg b535a45898 Respect icon set on member type - by default the icon is "icon-user" 2018-04-15 21:39:46 +02:00
Robert aebfc33037 Class renamed in .less file to bring back UI validation for content name 2018-04-13 14:51:02 +02:00
Sebastiaan Janssen 1b56c55300 Merge pull request #2522 from tomfulton/u4-7757-client2
U4-7757 - Show notifications when Unpublishing event is canceled
2018-04-13 11:53:51 +02:00
Stephan ed3e693308 Umbraco.Compat7.die.die.die 2018-04-13 11:03:35 +02:00
Warren Buckley 1c70c34d57 Merge pull request #2581 from umbraco/temp-U4-11209
fixes: U4-11209 Update layout for developer dashboards to fit new styles
2018-04-13 09:28:13 +02:00
Stephan ca00cde043 VSO build wip 2018-04-12 22:58:46 +02:00
Sebastiaan Janssen 29d9dcffb8 Manually applying PR: Three new healthchecks #1522 2018-04-12 18:38:00 +02:00
Mads Rasmussen bf78bb16dd fixes: U4-11209 Update layout for developer dashboards to fit new styles 2018-04-12 18:37:37 +02:00
Sebastiaan Janssen b0f0a7afc4 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2018-04-12 18:01:43 +02:00
Sebastiaan Janssen 30f8885aa9 Merge branch 'u4-9983' of https://github.com/AndyButland/Umbraco-CMS into AndyButland-u4-9983
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/zh.xml
#	src/Umbraco.Web/HealthCheck/Checks/Security/ClickJackingCheck.cs
#	src/Umbraco.Web/HealthCheck/Checks/Security/ExcessiveHeadersCheck.cs
#	src/Umbraco.Web/HealthCheck/Checks/Security/HttpsCheck.cs
2018-04-12 17:59:11 +02:00
Sebastiaan Janssen 94ed741dd5 Weird revert of a PR that was merged in before 2018-04-12 17:50:44 +02:00
Sebastiaan Janssen b6d5ac6a01 Update CONTRIBUTING.md 2018-04-12 17:20:12 +02:00
Sebastiaan Janssen 4664266b8d Bumps version to 7.10.3 2018-04-12 16:40:10 +02:00
Sebastiaan Janssen c61fd65463 Bumps version to 7.9.5 2018-04-12 16:38:22 +02:00
Sebastiaan Janssen 1e2598a3a3 Bumps version to 7.8.2 2018-04-12 16:36:41 +02:00
Sebastiaan Janssen 5003a55aca Cherry picked - Fix scope leaks caused by database messenger [U4-11207] #2580 2018-04-12 16:32:34 +02:00
Sebastiaan Janssen b5415844b8 Cherry picked - Fix scope leaks caused by database messenger [U4-11207] #2580 2018-04-12 16:30:55 +02:00
Sebastiaan Janssen 19241995e8 Cherry picked - Fix scope leaks caused by database messenger [U4-11207] #2580 2018-04-12 16:23:33 +02:00
Shannon b53400ceca Fixes up promise chains for the tree, adds logic to the tree picker to track the deepest paths expanded and then when a language is changed, we reload the tree with the new language and also sync all paths so the user can continue where they left off but with the new language nodes. 2018-04-13 00:09:28 +10:00
Bjarne Fyrstenborg 828dbaedfb Indicate that a row is clickable and highlight with background color. (#1473) 2018-04-12 15:37:01 +02:00
Sebastiaan Janssen 52701f0056 Fix unit tests that were trying to "downgrade" from version 1 to version 2 2018-04-12 15:30:25 +02:00
Claus c802171f38 Merge pull request #2580 from umbraco/temp-u4-11207
Fix scope leaks caused by database messenger [U4-11207]
2018-04-12 14:43:03 +02:00
Claus 81c5c66e15 adding readonly. 2018-04-12 14:41:55 +02:00
Sebastiaan Janssen 79515cdae7 Merge branch 'martin-blackwell-U4-8927' into dev-v7 2018-04-12 14:36:21 +02:00
Sebastiaan Janssen 99ce7c0736 Throw error when "downgrading" to a higher version, make sure to give the results back in the correct order (newest version first, oldest last). 2018-04-12 14:35:34 +02:00
Claus d9b1598fa2 use scope when writing instructions. 2018-04-12 14:26:47 +02:00
Claus c630e5ef8e only warn if there's actually anything to warn about 2018-04-12 14:26:14 +02:00
Shannon Deminick e9c8df55ec Merge pull request #2579 from umbraco/temp-U4-11179
Fixes - U4-11179 Support selecting variants in content pickers
2018-04-12 21:59:38 +10:00
Shannon f903c42d1b Gets the tree reloading when the customtreeparams change too so now the language selection will auto trigger the tree to reload ... next task we'll make it re-sycn and work. 2018-04-12 21:56:49 +10:00
Sebastiaan Janssen fe5896c85f Merge branch 'U4-8927' of https://github.com/martin-blackwell/Umbraco-CMS into martin-blackwell-U4-8927 2018-04-12 13:44:38 +02:00
Sebastiaan Janssen 28cbb0a517 Bumps version to 7.11.0 2018-04-12 13:41:56 +02:00
Sebastiaan Janssen 0597b43014 Merge branch 'patch-v7' into dev-v7 2018-04-12 13:39:09 +02:00
Sebastiaan Janssen a124d77670 Merge remote-tracking branch 'origin/patch-7.9.4' into dev-v7
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
2018-04-12 13:38:53 +02:00
Shannon fddea8c815 Fixes data type pre-value issues with MNTP, removes unecessary contentpicker.html and memberpicker.html overlays since treepicker.html is all that should be used, cleans up the treepicker one to be more inline with our current angular standards. Removes uneeded event handling from treepicker 2018-04-12 21:29:36 +10:00
Stephan 1076b882fb U4-11207 - collect rogue/leaked NoScope instances 2018-04-12 11:56:56 +02:00
Stephan 4a47c5e129 U4-11207 - fix scope leaks caused by database messenger 2018-04-12 11:13:00 +02:00
Shannon 80d682c22a Merge branch 'dev-v8' into temp-U4-11179 2018-04-12 14:30:50 +10:00
Warren d8459bf4b4 Changes to build script & references etc with Stephan 2018-04-11 18:06:33 +02:00
Warren Buckley fd75a59e13 Merge pull request #2575 from umbraco/temp-U4-11174
U4-11174 - Wire up new publish dialog when editing content/variants
2018-04-11 16:39:48 +02:00
Robert 01332db0a6 "split not a function" error fix 2018-04-11 15:44:43 +02:00
Robert 905a7d4a16 Added language drop-down in the content picker dialog window 2018-04-11 13:26:03 +02:00
Robert f9dcfbbf95 Merge pull request #2577 from umbraco/temp-U4-11176
fixes: U4-11176 Language Selector for the main content tree
2018-04-11 09:35:30 +02:00
Shannon a334a9999d Merge and simplify the variants selector to use routing logic now that we have routing built in for languages, now the pending changes alert is just using the default route change 2018-04-11 09:21:12 +10:00
Shannon 5eec80b8ae fixes trashing/trashed event dispatching 2018-04-11 09:05:02 +10:00
Warren Buckley 7d947afdf0 Merge pull request #2576 from umbraco/temp-U4-11178
Fixes - U4-11178 Browse to content node as a different variant/language
2018-04-10 16:42:25 +02:00
Mads Rasmussen cc2a90a697 set max-height on language dropdown 2018-04-10 15:36:26 +02:00
Mads Rasmussen d9e433b3ea emit and listen for events when languages are created/deleted 2018-04-10 15:36:06 +02:00
Mads Rasmussen b869e095e6 don't show the dropdown if there is only one language 2018-04-10 14:34:40 +02:00
Mads Rasmussen b30f414c15 remove padding in dropdown + node language dropdown 2018-04-10 13:56:44 +02:00
Mads Rasmussen e1394a18e5 add tree language selector + load in languages 2018-04-10 13:56:14 +02:00
Robert f3e473f64d Wrong property 2018-04-10 12:08:47 +02:00
Robert aba0b0448d Can change content node variants trough routeParams (languageId) 2018-04-10 11:50:37 +02:00
Robert 8d654e3630 Ctrl + K + D 2018-04-10 11:28:05 +02:00
Mads Rasmussen 9233a9f08a fix width of getting started dashboard 2018-04-10 10:24:36 +02:00
mikkelhm 6d052aeeac Bump version to 7.9.4 2018-04-10 08:56:50 +02:00
Shannon 53dc83ca16 removes unused method 2018-04-10 13:49:09 +10:00
Shannon c17217fc10 Merge remote-tracking branch 'origin/dev-v8' into temp-U4-11174 2018-04-10 13:40:12 +10:00
Shannon Deminick bfcad4f46d Merge pull request #2558 from umbraco/temp-U4-11127
WIP - U4-11127 Update ContentController for editing variants
2018-04-10 13:39:47 +10:00
Shannon 2ee955e664 Fixes media picker property editor attribute declaration, fixes promise chaining when saving content, fixes the boolean pre-value editor to accept a 'true' boolean value 2018-04-10 13:37:54 +10:00
Shannon 3d92ce96f3 Make sure client side validation executes before the publish dialog launches, then check the validation results, if there isn't any variant validations then close the dialog. 2018-04-10 12:41:11 +10:00
Shannon 09b0d61ab8 Ensures current variant is at the top of the publish list and is selected, disable the publish button if there are none selected 2018-04-10 12:26:19 +10:00
Shannon bf296158b0 Fixes displaying the audit trail on the info tab 2018-04-10 11:23:39 +10:00
Shannon 10b777a4e0 Merge remote-tracking branch 'origin/dev-v8' into temp-U4-11174 2018-04-10 10:53:10 +10:00
Shannon a23e36ffd2 Removes angularHelper.rejectedPromise since that is built into angular already 2018-04-10 10:52:39 +10:00
Shannon 584209c38d adds elipses to the publish button when there is more than one variant 2018-04-10 10:52:07 +10:00
Shannon 8a57380db4 fixes deleting a language 2018-04-10 10:50:53 +10:00
Shannon b7570ed2e0 Cleans up unused statusMessage thing 2018-04-10 10:05:19 +10:00
Shannon 07225de5cf re-binds the variants list when there is an error 2018-04-10 02:10:14 +10:00
Shannon 59f9af6eb8 Gets publish dialog mostly working with server side validation messages wired up to the dialog 2018-04-10 01:38:35 +10:00
Claus 5380b62504 fixes U4-11195 Mapping complex properties slow down some queries 2018-04-09 15:43:17 +02:00
Warren Buckley 2675669cf8 Merge pull request #2573 from umbraco/temp-U4-11171
fixes: U4-11171 Tree panel doesn't vertically scroll
2018-04-09 15:40:03 +02:00
Mads Rasmussen dfcb93abf9 fixes: U4-11171 Tree panel doesn't vertically scroll 2018-04-09 15:00:52 +02:00
Dave Woestenborghs 354505fde3 U4-11149 fixed error when creating new xslt file (#2540)
* U4-10659 added create task back for xslt files

* Add fix to UI.Release.xml as well
2018-04-09 14:47:09 +02:00
Dave Woestenborghs 9b33c8a0e2 U4-11149 fixed error when creating new xslt file (#2540)
* U4-10659 added create task back for xslt files

* Add fix to UI.Release.xml as well
2018-04-09 14:45:26 +02:00
Warren Buckley b98e7f2d3e Merge pull request #2567 from umbraco/temp-U4-10783
fixes: 
* The UI for the new bulk publish variants from Mads merged in
2018-04-09 13:27:21 +01:00
Dave Woestenborghs 07fc6753f5 U4-11149 fixed error when creating new xslt file (#2540)
* U4-10659 added create task back for xslt files

* Add fix to UI.Release.xml as well
2018-04-09 14:04:02 +02:00
Sebastiaan Janssen 967178cb92 Manually applies U4-11155 fixed error when creating member groups #2545 2018-04-09 11:43:48 +02:00
Warren Buckley fe44494936 Merge pull request #2550 from dawoe/temp-U4-11161
U4-11161 fix for adding multiple items in a single content picker
2018-04-09 11:42:18 +02:00
Shannon Deminick 793c9470c2 Manually applies merge pull request #2556 from dawoe/temp-U4-11167
U4-11167 Fixes rare syncTree error
2018-04-09 11:39:07 +02:00
Shannon e61089f927 Merge remote-tracking branch 'origin/temp-U4-10783' into temp-U4-11174 2018-04-09 17:55:20 +10:00
Shannon 41d91c225f Gets validation working for trying to publish a document when there are validation problems with required languages 2018-04-09 16:59:45 +10:00
Sebastiaan Janssen 95d40049f5 Bumps version to 7.10.2 2018-04-09 08:30:39 +02:00
Sebastiaan Janssen f003c3602c Merge pull request #2545 from dawoe/temp-U4-11155
U4-11155 fixed error when creating member groups
2018-04-09 08:28:03 +02:00
Sebastiaan Janssen 862fdf27e4 Merge pull request #2545 from dawoe/temp-U4-11155
U4-11155 fixed error when creating member groups
2018-04-09 08:10:53 +02:00
Shannon 1660d25bad ensures that only the default variant is available when creating content 2018-04-09 15:01:55 +10:00
Shannon 0971aa0ab6 fixes null check on image cropper 2018-04-09 13:35:18 +10:00
Shannon fb74b1b75f Merge remote-tracking branch 'origin/dev-v8' into temp-U4-11127 2018-04-09 13:25:02 +10:00
Mads Rasmussen c5f27aeea5 fix language tree sync 2018-04-06 11:14:25 +02:00
Mads Rasmussen 8e0133f8af return selected variants 2018-04-06 10:37:10 +02:00
Shannon d03a8098da Merge branch 'dev-v8' into temp-U4-11127 2018-04-06 14:52:28 +10:00
Shannon c760d25479 Merge remote-tracking branch 'origin/dev-v7' into dev-v8 2018-04-06 14:52:02 +10:00
Shannon 8499c01eac Merge remote-tracking branch 'origin/patch-v7' into dev-v7 2018-04-06 14:51:14 +10:00
Shannon Deminick e25d648f44 Merge pull request #2556 from dawoe/temp-U4-11167
U4-11167 Fixes rare syncTree error
2018-04-06 14:46:23 +10:00
Shannon e10698532b Merge branch 'dev-v8' into temp-U4-11127
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/dashboard/dashboard.tabs.controller.js
2018-04-06 13:56:07 +10:00
Shannon 8b88bb68ed must always register install components 2018-04-06 13:54:42 +10:00
Shannon c90d6be8ab U4-8861 Extract GlobalSettings to an interface and expose on the standard UmbracoConfig.For settings singleton including a bunch of cleanup, getting the installer and steps to be DI 2018-04-06 13:51:54 +10:00
Mads Rasmussen 7a4f7da0d6 a little bit of clean up 2018-04-05 21:10:38 +02:00
leekelleher 7225ec29fe Nested Content - enabled support for property-editors:
- Umbraco.CheckBoxList
- Umbraco.DropDownMultiple
- Umbraco.MacroContainer
- Umbraco.RadioButtonList
- Umbraco.MultipleTextstring
2018-04-05 17:17:34 +01:00
leekelleher cf1069e0e1 NestedContentPropertyEditor - code tidy-up
A little tidy-up of these class method. I noticed we were calling `ToString()` twice in places,
and the `ConfigureForDisplay` prevalues are already available as a Dictionary, so there's no need for an additional `ToDictionary` allocation.
2018-04-05 17:16:34 +01:00
leekelleher 99ce88228c U4-11184 - Nested Content PropertyValueEditor - return converted value, not update reference value
ConvertDbToString

We were updating the `property.Value` reference, which was having adverse effects on the editor value.
In the majority of cases this wasn't an issue, but it did mean that any prevalue-ID-based editors (e.g. dropdown list) had problems.

I've removed the call to the base method, we don't need it - here's what it does...
https://github.com/umbraco/Umbraco-CMS/blob/release-7.4.0/src/Umbraco.Core/PropertyEditors/PropertyValueEditor.cs#L367

It attempts to convert the value to an XML-safe string, which is ultimately `ToString()` (if not null):
https://github.com/umbraco/Umbraco-CMS/blob/release-7.4.0/src/Umbraco.Core/ObjectExtensions.cs#L544

ConvertDbToEditor

Same as ConvertDbToString, we were updating the `property.Value` reference when we shouldn't be.
We should be returning the converted value, not updating the original reference value itself.

I've removed the call to the base method, we don't need it - it attempts to deserialize the JSON string that we've literally just serialized...
https://github.com/umbraco/Umbraco-CMS/blob/release-7.4.0/src/Umbraco.Core/PropertyEditors/PropertyValueEditor.cs#L283

So we can pass the List<object> value back, as this will be handled by Umbraco and handed by Angular.
2018-04-05 17:14:15 +01:00
Mads Rasmussen f1c78b45a7 set overlay button state + call temp publish method 2018-04-05 16:11:30 +02:00
Mads Rasmussen 0f32b653a1 Change "Save and publish" label to "Publish" 2018-04-05 16:01:26 +02:00
Mads Rasmussen 875e05b680 add support for setting the overlay submit button state from the controller 2018-04-05 16:00:39 +02:00
Shannon 7442c96be1 removes unused methods 2018-04-05 23:15:51 +10:00
Shannon 990ca51279 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2018-04-05 23:11:24 +10:00
Shannon 262c4afb16 Removes FormsAuthentication cookie format and replaces with standard aspnet identity format, removes a bunch of old obsolete and unused code, fixes the culture setting issue, simplifies the UmbracoBackOfficeIdentity since it no longer needs to be a FormsIdentity and just a straight forward ClaimsIdentity 2018-04-05 23:10:51 +10:00
Mads Rasmussen 7636cd5eb6 add new publish overlay 2018-04-05 14:40:57 +02:00
Mads Rasmussen 54c41dfb23 open publish dialog when clicking the save and publish button 2018-04-05 14:39:57 +02:00
Mads Rasmussen 63315f6162 dont indent first center/target overlays 2018-04-05 14:39:04 +02:00
Mads Rasmussen a2356ea651 Restyle centered overlay 2018-04-05 14:37:58 +02:00
Mads Rasmussen 892eb56a2d fix backdrop z-index 2018-04-05 14:37:13 +02:00
Mads Rasmussen d09d50e013 add global overlay component + add simple service for opening and closing 2018-04-05 14:35:47 +02:00
Stephan eb6a08af31 v7@11d4189c8d 2018-04-05 14:12:15 +02:00
Warren 0dba812053 Merge branch 'patch-v7' into dev-v8 2018-04-05 10:44:34 +01:00
Warren edb62b740b Merge branch 'patch-v7' into dev-v7 2018-04-05 10:42:41 +01:00
Warren Buckley 43e32e66b6 Merge pull request #2550 from dawoe/temp-U4-11161
U4-11161 fix for adding multiple items in a single content picker
2018-04-05 10:15:39 +01:00
Shannon 798236dc85 removes unused code, cleans up web.confgi 2018-04-05 18:13:50 +10:00
Shannon 9bfe9e6bbf Ensures that the thread culture is set both in owin and in aspnet 2018-04-05 18:11:15 +10:00
Shannon 11d4189c8d Merge branch 'patch-v7' into dev-v7 2018-04-05 17:28:46 +10:00
Shannon a62422fac3 ensure that debug is true when developing 2018-04-05 15:09:12 +10:00
Shannon f32e787816 fixes dashboard.tabs.controller 2018-04-05 15:08:52 +10:00
Stephan 6da91b7770 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2018-04-04 17:43:26 +02:00
Stephan f7a14a03f2 Fix build, still some weird csc.exe versionning 2018-04-04 17:41:55 +02:00
Stephan 612acfac15 Fix solution 2018-04-04 09:59:01 +02:00
Dave Woestenborghs 859cb6ce1a U4-11167 removed the time out..only check if the syncTree method exists 2018-04-04 09:44:29 +02:00
Warren 4047fb119d Adds in missing $scope dependency for Dynamic Dashboard Controller 2018-04-04 08:35:58 +01:00
Warren ebbd05dc97 Adds in missing $scope dependency for Dynamic Dashboard Controller 2018-04-04 08:30:33 +01:00
Warren bdaa70592f Adds in missing $scope dependency for Dynamic Dashboard Controller 2018-04-04 08:28:41 +01:00
Shannon 6d1e50c44d Merge branch 'dev-v8' into temp-U4-11127
# Conflicts:
#	src/Umbraco.Web.UI/web.Template.config
2018-04-04 16:51:00 +10:00
Stephan 683b47bae5 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2018-04-04 08:32:10 +02:00
Stephan 1b804e07e5 Push web.template.config 2018-04-04 08:28:10 +02:00
Shannon d89009bbe7 Changes targetFramework to 4.7, removes the huge assembly list, removes post build scripts since they don't work 2018-04-04 16:17:57 +10:00
Shannon e5b0b2bfb7 Merge branch 'dev-v8' into temp-U4-11127 2018-04-04 16:01:23 +10:00
Shannon 471009cfd1 nuspec for examine was incorrect 2018-04-04 16:00:14 +10:00
Shannon efeef98e55 fixes merge/build 2018-04-04 15:59:02 +10:00
Shannon c655e9c2b1 Merge branch 'dev-v8' into temp-U4-11127 2018-04-04 15:55:13 +10:00
Shannon d618151e4f Fixes the csproj, binding redirects and versions 2018-04-04 15:54:39 +10:00
Shannon f775fd8672 removes sqlce build commands since no packages folder exists anymore 2018-04-04 15:35:13 +10:00
Shannon cdd50b899a Merge remote-tracking branch 'origin/dev-v8' into temp-U4-11127
# Conflicts:
#	src/Umbraco.Web/Models/Mapping/TabsAndPropertiesResolver.cs
2018-04-04 15:04:11 +10:00
Shannon a673babfb7 Fixes Content List View installation, removes unecessary properties from the RecycleBinEventArgs, updates both the upload and image cropper property editors to properly remove all files including any associated with variants, updates several other places to deal with variants and Property.GetValue(langId), adds notes, ensures we are returning the corect IDictionary instead of Dictionary for some interfaces 2018-04-04 13:11:12 +10:00
Shannon b1d309aa16 Some updates based on PR review notes 2018-04-04 10:50:18 +10:00
Shannon 7a73175aa0 Starts wiring up the back office to the c# bits, updates controllers, mappers, models, property editors to support getting and saving data by language. The content editor now "works" with multi-lingual properties 2018-04-04 01:59:51 +10:00
Stephan d4bd4256f1 Fix models mapping 2018-04-03 16:20:19 +02:00
Stephan 553de2ea68 Cleanup ILogger 2018-04-03 16:15:59 +02:00
Stephan e3c6205d0c Fix 2018-04-03 15:32:46 +02:00
Stephan 75966dcfbd Merge branch origin/dev-v8 into dev-v8 2018-04-03 14:57:55 +02:00
Stephan cdd064ba08 Upgrade Dependencies 2018-04-03 14:54:01 +02:00
MADSRASMUSSB4A1\madsrasmussen fca9279322 update languages icon to globe instead of flag 2018-04-03 11:25:59 +02:00
Shannon e7bc4986a5 Start updating the model/controller for editing variants in the back office and wiring up the angular side of things 2018-04-03 19:25:43 +10:00
Warren Buckley c6814d41a9 Merge pull request #2557 from umbraco/dev-v8-merge-up-11164-regression
Merge upto V8 - U4-11164 Blank Login Screen regression from 7.10
2018-04-03 09:44:41 +01:00
Warren 05604880e0 Merge branch 'patch-v7' into dev-v8
* Merging up into V8 the 7.10 regression with assetsService locale stuff #U4-11164
2018-04-03 09:38:50 +01:00
Shannon 271a100759 Obsolete the methods we want to remove from ILogger 2018-04-03 16:38:31 +10:00
Dave Woestenborghs 27b19a0a33 U4-11167 only wrap in time out when syncTree method is undefined 2018-04-03 07:37:37 +02:00
Shannon 26134cd616 updates nuspec and install.core.ps1 to not include the old dlls 2018-04-03 13:10:08 +10:00
Shannon 9d5156d7f0 fixes some tests 2018-04-03 13:01:01 +10:00
Shannon 1719d33a48 Fixes tests, updates examine, fixes how __Path is stored 2018-04-03 12:33:21 +10:00
Shannon 047a05cfb3 bumps version 2018-04-03 11:38:13 +10:00
Shannon e77ebc0c1c Fixes all references to assetsService.load* that do not pass in a required scope object and changes assets.service to always use the $rootScope of an explicit scope is not passed 2018-04-03 11:27:53 +10:00
Shannon a27ea994b7 updates the loadMomentLocaleForCurrentUser to always return a promise 2018-04-03 10:59:55 +10:00
Shannon e019c94207 changes back to correct version 2018-04-03 10:42:57 +10:00
Shannon 5b7193aa64 Merge branch 'temp-U4-11164' of https://github.com/dawoe/Umbraco-CMS into dawoe-temp-U4-11164 2018-04-03 10:41:01 +10:00
Dave Woestenborghs f6263aad5b U4-11167 wrap syncTree method to handle rare occasions where it is not defined yet 2018-03-31 15:09:30 +02:00
Warren Buckley 1e9aad5a0c Merge pull request #2553 from umbraco/temp-U4-11165
U4-11165 Integrate language UI with the language controller in the back end
2018-03-30 21:03:20 +01:00
Warren ad14fbd1f8 Set the language to be mandatory too as well 2018-03-30 21:01:24 +01:00
Stephan f89816111b Wire NuCache and IdkMap 2018-03-30 14:00:44 +02:00
Dave Woestenborghs 28a0e30315 U4-11164 fixed blank screen for about 30 seconds after logging in. Because of q.all we don't need to wait until promise is resolved, because all promises are resolved when this is hit 2018-03-30 11:20:41 +02:00
Stephan c75d4e5b5b Fix post-merge 2018-03-30 11:00:07 +02:00
Stephan f7a3c97da0 Fix build 2018-03-30 10:29:19 +02:00
Stephan 62b6efc4da Fix upgrading 2018-03-30 10:28:49 +02:00
Warren a9c184b4fd Updates the JS to remove unneeded services injected in
Updates view to be simpler if statement - that by having something set to it then we can show the UI
2018-03-29 20:54:20 +01:00
Warren 14b4c12cdb Adds NPM package.json lock file - so we ensure dependencies are consistent for all 2018-03-29 20:11:14 +01:00
Warren 1049a7be12 Updates UI .csproj - to remove the broken Analyzers for now (Not sure we use the lovely VS C# analyzers & more of a R# team) 2018-03-29 20:09:58 +01:00
Shannon 6d2bf71824 adds required check back in 2018-03-30 01:23:51 +11:00
Shannon 7f27862943 Gets correct validation working with languages, we can now create and update 2018-03-30 01:20:40 +11:00
Shannon b9d0c63002 Starts wiring up the language editor with the controller, ensure that you cannot delete a language at the repo level and makes sure that we return and show validation messages when the user tries to delete the default or last language. 2018-03-29 23:48:54 +11:00
Shannon Deminick 3489e66d64 Merge pull request #2546 from umbraco/temp-U4-11124
U4-11124 - Prevents deleting a default language (API Controller & Service Layers)
2018-03-29 22:48:24 +11:00
Shannon 826102ea4d Merge remote-tracking branch 'origin/temp-v8-UI' into dev-v8 2018-03-29 22:42:18 +11:00
Shannon 7fd9caf889 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8
# Conflicts:
#	src/Umbraco.Web/PublishedContentQuery.cs
2018-03-29 22:35:46 +11:00
Shannon 83e90969b3 i guess trying to rename the thing didn't work 2018-03-29 22:15:46 +11:00
Shannon 8f01a2ab0a fixes merge issues 2018-03-29 22:13:41 +11:00
Stephan 23e8632df6 Merge pull request #2549 from umbraco/temp-U4-11102
Examine v1.0.0 integration to Umbraco v8
2018-03-29 11:32:13 +02:00
Stephan c72ce0b759 Fix Examine PR, fix migrations and upgrades 2018-03-29 11:31:33 +02:00
Shannon 881fbb7f76 Merge remote-tracking branch 'origin/dev-v7' into dev-v8
# Conflicts:
#	build/Modules/Umbraco.Build/Umbraco.Build.psm1
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Core/DatabaseContext.cs
#	src/Umbraco.Core/IO/FileSystemProviderManager.cs
#	src/Umbraco.Core/ObjectExtensions.cs
#	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenSevenZero/AddUserGroupTables.cs
#	src/Umbraco.Core/PropertyEditors/ValueConverters/IntegerValueConverter.cs
#	src/Umbraco.Core/Services/IdkMap.cs
#	src/Umbraco.Core/Services/UserService.cs
#	src/Umbraco.Core/packages.config
#	src/Umbraco.Tests.Benchmarks/app.config
#	src/Umbraco.Tests/UI/LegacyDialogTests.cs
#	src/Umbraco.Web/Cache/MediaCacheRefresher.cs
#	src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs
#	src/Umbraco.Web/Features/DisabledFeatures.cs
#	src/Umbraco.Web/Mvc/RenderRouteHandler.cs
#	src/Umbraco.Web/Mvc/UmbracoAuthorizeAttribute.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedCache.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedContentCache.cs
#	src/Umbraco.Web/PublishedCache/ContextualPublishedMediaCache.cs
#	src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs
#	src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs
#	src/Umbraco.Web/PublishedContentQuery.cs
#	src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs
#	src/Umbraco.Web/packages.config
#	src/Umbraco.Web/umbraco.presentation/umbraco/create/MemberGroupTasks.cs
2018-03-29 20:01:14 +11:00
Stephan 295f727c90 Merge origin/dev-v8 into temp-U4-11102 2018-03-29 10:57:38 +02:00
Stephan 8cb92b95cb Fix migration plan 2018-03-29 09:39:37 +02:00
Shannon fb89f0a795 Merge commit '2aa0dfb2c5' into dev-v8
Force merging v7 -> v8, ignoring any conflicts and choosing "our" version (v8)
since we've manually merged it alraedy
2018-03-29 18:07:45 +11:00
Shannon 10dec4115d Updates to latest examine and replaces IExamineIndexCollectionAccessor since we now have IExamineManager 2018-03-29 16:42:11 +11:00
Shannon 5010cbbf30 Gets the examine stuff re-merged and updated after the great merge 2018-03-29 15:39:48 +11:00
Shannon 5482b8f2f0 Merge remote-tracking branch 'origin/dev-v8' into temp-U4-11102
# Conflicts:
#	src/NuGet.Config
#	src/Umbraco.Web/Components/DatabaseServerRegistrarAndMessengerComponent.cs
#	src/Umbraco.Web/IPublishedContentQuery.cs
#	src/Umbraco.Web/PublishedContentQuery.cs
#	src/Umbraco.Web/Search/ExamineComponent.cs
#	src/Umbraco.Web/WebServices/ExamineManagementApiController.cs
2018-03-29 14:00:20 +11:00
Stephan 796d931f65 Fix tests & apps 2018-03-28 18:07:53 +02:00
Dave Woestenborghs d1eb6b1aa8 U4-11161 don't show help text when it's not a multipicker 2018-03-28 17:07:56 +02:00
Dave Woestenborghs 458d023ff4 U4-11161 set min and max number in default config 2018-03-28 17:03:35 +02:00
Shannon 2c132fe15f ignores search properties that should not be discovered 2018-03-28 23:00:03 +11:00
Shannon 4b32387aec fixes bug with getting indexer properties in the mgmt controller 2018-03-28 22:50:31 +11:00
Shannon 3d42ce166f fixes bug with getting indexer properties in the mgmt controller 2018-03-28 22:48:04 +11:00
Shannon 53f66d2a1b removes unused class 2018-03-28 22:38:40 +11:00
Shannon 7d13704cf9 Updates to latest examine beta, cleans up more code, always reference a searcher by it's indexer 2018-03-28 22:23:17 +11:00
Stephan 14592a227b Merge origin/dev-v8 into v7 temp merge 2018-03-28 12:58:39 +02:00
Stephan 7adc986472 Cleanup various migration stuff 2018-03-28 12:40:52 +02:00
Stephan 0ecc333a90 Fix port, tests 2018-03-28 11:28:32 +02:00
Shannon 52aa02668f Gets examine working with proper events, tests are working, etc... 2018-03-28 16:12:43 +11:00
Shannon f0a342d84e Merge branch 'dev-v8' into temp-U4-11102 2018-03-28 12:58:42 +11:00
Shannon 487e4cbe20 Fixes various migration stuff - language migration was broken (public ctor), the custom sql in KeyValueService was incorrect, moved to migration syntax, InsertDataExpression didn't work, fixed with v7 code that does work, changes some Database.Execute to Execute.Sql so logging occurs. Fixes packages.config inclusion 2018-03-28 12:50:15 +11:00
Shannon c2707f3806 updates to latest examine and fixes a test 2018-03-28 12:46:34 +11:00
Stephan 0d22478186 Port v7@2aa0dfb2c5 - WIP 2018-03-27 17:59:53 +02:00
Warren e9380b048b Throw a HTTP Bad Request if an API request in backoffice is made to try & delete the Default Language 2018-03-27 16:33:28 +01:00
Stephan 6b1ed89cb0 Port v7@2aa0dfb2c5 - WIP 2018-03-27 16:42:52 +02:00
Stephan c2e1ba21b2 Port v7@2aa0dfb2c5 - WIP 2018-03-27 16:18:51 +02:00
Dave Woestenborghs cf871196f2 U4-11155 changed namespace back to previous value so creating member groups works again 2018-03-27 16:11:07 +02:00
Dave Woestenborghs 36d6b6a254 U4-11150 merged where statements in to one statement 2018-03-27 14:22:51 +02:00
Stephan d40a835701 Port v7@2aa0dfb2c5 - WIP 2018-03-27 10:51:41 +02:00
Stephan 0a4878d2a3 Port v7@2aa0dfb2c5 - WIP 2018-03-27 10:04:07 +02:00
Shannon c66365e11a gets some tests working 2018-03-27 18:35:16 +11:00
Shannon 88d66cfb53 Examine v1.0.0 integration, it now builds! now to run tests and fixup 2018-03-27 18:14:21 +11:00
Robert e5c7c5eb2d Merge pull request #2541 from umbraco/temp-U4-11121
U4-11121 New LanguagesController (back office editor controller) for …
2018-03-26 13:14:18 +02:00
Shannon 89c376f77a adds ValueTuple reference to nuspec 2018-03-26 20:08:11 +11:00
Claus 19a408fcae U4-11121 New LanguagesController (back office editor controller) for persisting language changes 2018-03-26 10:55:49 +02:00
Dave Woestenborghs 29bb86ea13 Filter tours based on current users culture 2018-03-23 16:37:13 +01:00
Dave Woestenborghs fa171e4553 Added culture property to Backoffice tour 2018-03-23 15:33:42 +01:00
Mads Rasmussen 486ead0983 Merge pull request #2537 from umbraco/temp-U4-11129
U4-11129 Updates Content Delete Dialog with new copy/warning about variants
2018-03-23 14:57:46 +01:00
Warren Buckley 5449de6426 Merge pull request #2538 from umbraco/temp-U4-11126-variant-switch-prompt
Temp u4 11126 variant switch prompt
2018-03-23 13:50:31 +00:00
Mads Rasmussen 4fa27c09fa fix user dialog toggle 2018-03-23 14:47:12 +01:00
Mads Rasmussen fe32481b6e bring dashboards back to life 2018-03-23 14:14:25 +01:00
Claus 7c264b4da0 adding using statement to preview file to prevent missing htmlhelper error. 2018-03-23 11:57:29 +01:00
Claus 716020602d adding using statement to preview file to prevent missing htmlhelper error. 2018-03-23 11:55:23 +01:00
Mads Rasmussen cf81f97f73 show discard changes prompt when swithing variant 2018-03-23 11:28:27 +01:00
Mads Rasmussen 26b575b2f6 remove console log 2018-03-23 11:27:42 +01:00
Mads Rasmussen 8e8102a51d update styling for discard changes dialog 2018-03-23 11:27:24 +01:00
Warren 7b17539022 Merge branch 'temp-v8-UI' into temp-U4-11129 2018-03-23 10:05:01 +00:00
Warren 9269a257e8 Adds new info bar to content delete dialog with warning about variants/languages 2018-03-23 10:04:26 +00:00
Mads Rasmussen edeb9c61ac Merge pull request #2535 from umbraco/temp-U4-11125
U4-11125 - Updates Langugae Keys for when changing default language in info bar
2018-03-23 10:07:48 +01:00
Warren 8d0441ee08 Update language keys for changing default language warning 2018-03-23 09:03:06 +00:00
Sebastiaan Janssen 8c0ec489c2 Bump version to 7.11 2018-03-23 09:54:11 +01:00
Stephan 59bac5c2a6 Fix a few things, the v8 way 2018-03-22 17:51:34 +01:00
Stephan a2a4edb3be Port v7@2aa0dfb2c5 - WIP 2018-03-22 17:41:13 +01:00
Mads Rasmussen 2250943c87 remove gray bg in context menu header 2018-03-22 15:43:13 +01:00
Claus 3a3d6239f0 U4-11144 GetManifestFiles fails if there's no App_Plugins folder 2018-03-22 15:35:51 +01:00
Claus a4c9d8f1bf typos 2018-03-22 15:34:28 +01:00
Claus e6010fcd1e Merge pull request #2534 from umbraco/temp-U4-11122
U4-11122 - Update DB and Service/Repo layer to handle language changes: mandatory, default
2018-03-22 15:18:15 +01:00
Sebastiaan Janssen 81d380a47e Merge branch 'dev-v7' into master-v7 2018-03-22 14:55:52 +01:00
Sebastiaan Janssen 19e5715a84 Whoops, that was not supposed to say beta 2018-03-22 14:55:02 +01:00
Claus 730c4eaf2d Merge pull request #2529 from umbraco/temp-U4-11123-take2
U4-11123 (Take 2) Updates Language Tree to not show having children or right click menu
2018-03-22 13:48:43 +01:00
Shannon 01b48a5aab adds logic for repository and unit tests 2018-03-22 23:15:52 +11:00
Warren Buckley c5365b7d0d Merge pull request #2528 from umbraco/temp-U4-11120
Temp u4 11120
2018-03-22 11:37:44 +00:00
Sebastiaan Janssen 2e2dce170a Merge branch 'dev-v7.10' into master-v7 2018-03-22 11:28:48 +01:00
Sebastiaan Janssen 59f9a64e81 Merge branch 'dev-v7' into dev-v7.10
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
2018-03-22 11:27:26 +01:00
Stephan 62c5f0f1ef Port v7@2aa0dfb2c5 - WIP 2018-03-22 11:25:38 +01:00
Stephan 8bfb8e2b72 Port v7@2aa0dfb2c5 - WIP 2018-03-22 11:25:33 +01:00
Stephan 41948607d0 Port v7@2aa0dfb2c5 - WIP 2018-03-22 11:25:25 +01:00
Stephan a9147f1473 Port v7@2aa0dfb2c5 - WIP 2018-03-22 11:25:22 +01:00
Stephan 8199b7710c Port v7@2aa0dfb2c5 - WIP 2018-03-22 11:25:18 +01:00
Stephan 0cbfebe21c Port v7@2aa0dfb2c5 - WIP 2018-03-22 11:25:08 +01:00
Sebastiaan Janssen 98b7467306 Merge branch 'dev-v7' into master-v7 2018-03-22 10:53:24 +01:00
Sebastiaan Janssen 4bb75d73dd Bump version to 7.9.3 2018-03-22 10:50:12 +01:00
Mads Rasmussen f3859f891e localize "add language" 2018-03-22 10:46:38 +01:00
Shannon Deminick dd8e43d80a Fixes U4-10472 Cannot upgrade to 7.7+ when using MySql (#2493)
* Fixes U4-10472 Cannot upgrade to 7.7+ when using MySql

* Fixes dropping the FK for the AddUserGroupTables migration
2018-03-22 10:35:41 +01:00
Claus c9c9e8352a Merge pull request #2532 from umbraco/temp-U4-11134
redirects preview to login when not authorized
2018-03-22 10:22:32 +01:00
Mads Rasmussen bb7c96f408 better naming of tree language selector 2018-03-22 09:59:49 +01:00
Shannon c4e5ab54d2 redirects preview to login when not authorized 2018-03-22 19:55:55 +11:00
Shannon 53bfec8a04 Merge branch 'dev-v7' into dev-v7.10 2018-03-22 19:22:34 +11:00
Shannon b3fb23a67a Adds language entity changes and tests 2018-03-22 17:51:38 +11:00
Shannon d852c43559 oops, didn't mean to commit new lang tests 2018-03-22 17:33:16 +11:00
Shannon 0710311e70 uncomments an ignore attribute on a test that should definitely be passable 2018-03-22 17:27:34 +11:00
Shannon 422fd8e274 Fixes many hard coded SQL table names with the proposed new prefix 2018-03-22 17:17:01 +11:00
Shannon 448d490eb7 Adds TODO note about GlobalSettings 2018-03-22 16:35:16 +11:00
Shannon e2d039d984 Changes db prefix to 'umbraco' 2018-03-22 15:10:05 +11:00
Sebastiaan Janssen b4a0dadee9 Re-apply the nice C# syntax James provided 2018-03-21 19:53:20 +01:00
Lee Kelleher 014ac98d0b U4-11052 - Enabled IntegerValueConverter to handle Int64 source values (#2500)
* Enabled IntegerValueConverter to handle `Int64` source values
2018-03-21 19:08:24 +01:00
Warren d8c1e2fa98 Makes sure to set no child nodes & menu url
Removes the child arrow for tree items
Removes the 3 dots for the context menu item that had nothing in it
2018-03-21 15:53:09 +00:00
Mads Rasmussen c701bf5a74 fix unit tests 2018-03-21 16:51:08 +01:00
Stephan 10972002d9 Fix install issues with super user 2018-03-21 16:10:33 +01:00
Mads Rasmussen 32daf0f8d7 only show default language info when toggle is turned on 2018-03-21 15:31:51 +01:00
Claus 37870e906c Merge pull request #2527 from umbraco/temp-U4-11123
Temp U4-11123 - Sets Language Root Tree Node to use custom UI
2018-03-21 14:36:11 +01:00
Claus 49a9a249d0 removes using statements. 2018-03-21 14:35:43 +01:00
Mads Rasmussen a23f122f5f only delete language when allowed 2018-03-21 14:01:48 +01:00
Robert 35a79a8598 Merge pull request #2525 from umbraco/temp-U4-11020
U4-11020 Deleting a member group that is part of a Public Access feat…
2018-03-21 13:47:02 +01:00
Robert 3c4f052a27 Moved some code around based on feedback 2018-03-21 13:45:44 +01:00
Mads Rasmussen bc4e97be48 fixes: U4-11120 Create new Language dashboard to create/remove/set default languages - angular 2018-03-21 13:39:16 +01:00
Warren 82bc05e0a0 Sets language tree root node with flag icon that child items had & sets the route for a custom UI
Removes child tree items as we will now use new UI to manage them
Removes menu items (as no need for create, refresh, delete etc)
2018-03-21 11:42:09 +00:00
Stephan 33a24e0e2f Fix the install process 2018-03-21 11:32:07 +01:00
Robert 97d7e3db84 Forgot add the new namespace 2018-03-21 10:46:42 +01:00
Robert 0d2df4de81 Some cleanup 2018-03-21 10:22:08 +01:00
Shannon df312309a3 ensure the key/value table is created 2018-03-21 16:53:21 +11:00
Shannon bd6dd13295 Updates the user Id to the new -1 2018-03-21 14:49:10 +11:00
Shannon b361cfebb7 updates npm build dependencies 2018-03-21 13:55:01 +11:00
Shannon ebea5e8170 fixes boolean pre-value editor Html Id 2018-03-21 13:53:54 +11:00
Shannon 995f3f38a3 Fixes upgrade issue with copying the preview.old directory and updates the link to the the correct public one 2018-03-21 12:52:17 +11:00
Shannon 2ad79956d9 Re-apply Drop Down Flexible "Merge pull request #2502 from umbraco/temp-U4-11032"" 2018-03-21 12:37:26 +11:00
Shannon 96c6a17d03 Merge branch 'dev-v7' into dev-v7.10 2018-03-21 12:36:55 +11:00
Shannon e2e0dd0c73 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2018-03-21 12:34:15 +11:00
Shannon 1a590664e7 Revert "Merge pull request #2502 from umbraco/temp-U4-11032"
This reverts commit 2aa0dfb2c5, reversing
changes made to 2c6e7e46c2.
2018-03-21 12:32:27 +11:00
Shannon Deminick 64fd6ee7c5 Merge pull request #2477 from Shazwazza/U4-10992
U4-10992 (UDUF) TourController Object reference not set to an instance of an…
2018-03-21 12:24:50 +11:00
Shannon Deminick 2ed5b6c1ee Merge pull request #2436 from umbraco/temp-U4-10957_2
U4-10957 If RequiredSection is not defined in a tour - backoffice wil…
2018-03-21 12:24:10 +11:00
Shannon Deminick 41c4e024de Merge pull request #2505 from umbraco/temp-u4-10756
U4-10756 - id/guid cache
2018-03-21 11:42:04 +11:00
Shannon b46add81f0 Merge branch 'dev-v7.10' into temp-u4-10756 2018-03-21 11:39:28 +11:00
Shannon ff31cd9f72 Changes Set to Populate, changes Fetch to Query and makes GetById public 2018-03-21 11:31:30 +11:00
Shannon 084af43dab Merge remote-tracking branch 'origin/dev-v7' into dev-v7.10 2018-03-21 10:20:20 +11:00
Stephan c6986ef0ab With ModelsBuilder alpha.15 2018-03-20 16:56:05 +01:00
Stephan 32e6aa4f6b Version alpha.32 for ModelsBuilder 2018-03-20 16:21:26 +01:00
Sebastiaan Janssen edf7038848 U4-11020 Deleting a member group that is part of a Public Access feature, from the system, does not also remove the corresponding rows from the umbracoAccessRule table. 2018-03-20 15:00:09 +01:00
Niels Hartvig bcac02861d Merge pull request #2524 from davidwandar/patch-2
Fixed typo in Readme.
2018-03-20 11:18:57 +01:00
Sebastiaan Janssen 79ecaecc9e Merge pull request #2503 from umbraco/temp-U4-11070
Adds support for *not* closing an overlay on enter
2018-03-20 11:14:57 +01:00
Sebastiaan Janssen f604117c6d Merge pull request #2504 from umbraco/temp-U4-11071
U4-11071 Prevalue editor for multiple values TLC
2018-03-20 11:14:42 +01:00
David Wandar dcf7f35078 Fixed typo.
Xloud -> Cloud 

Xloud sounds awsome though :)
2018-03-20 10:00:53 +01:00
Stephan fe03f1af57 Merge remote-tracking branch 'origin/dev-v8' into dev-v8 2018-03-20 09:32:07 +01:00
Tom Fulton 0b63eb9430 U4-11133 - Adjust access check for Unpublish button
Require both Publish (assigned) and Unpublish (automatic, but could be removed during event) to show the button
2018-03-19 19:43:07 -06:00
Tom Fulton d7ddbfec35 U4-11133 - Fix access check for Unpublish button
The logic to show the Unpublish button was checking for "Publish" (U) permission rather than "Unpublish" (Z)
2018-03-19 19:30:51 -06:00
Tom Fulton d260a9dc88 U4-7757 - Show notifications when Unpublishing is canceled 2018-03-19 19:03:02 -06:00
Stephan 39cc7add80 Rename Umbraco.Whatever2 editors 2018-03-19 18:39:34 +01:00
Robert 2aa0dfb2c5 Merge pull request #2502 from umbraco/temp-U4-11032
U4-11032 Consolidate the number of dropdown property editors into one
2018-03-19 14:37:47 +01:00
Robert e4b77416a6 Fixed typo 2018-03-19 14:28:24 +01:00
Robert 3aed889e2a Merge branch 'dev-v7' into temp-U4-11032 2018-03-19 14:14:51 +01:00
Stephan 54122cc0c6 Troubleshoot, fix 2018-03-19 13:36:31 +01:00
Robert 2c6e7e46c2 Merge pull request #2517 from dawoe/patch-1
Fixed documentation of umb-overlay directive
2018-03-19 08:58:23 +01:00
Mikulas Tomanka 0a71a09d21 Merge pull request #2518 from dawoe/patch-2
Remove console.log from slider property editor
2018-03-19 08:32:40 +01:00
Dave Woestenborghs 0c868fb72d Remove console.log from slider property editor
removed console.log statement from slider property editor controller
2018-03-16 18:43:54 +01:00
Dave Woestenborghs a96cbce9b1 Fixed documentation of umb-overlay directive
- Removed lorem ipsum text 
- Fixed casing of subtitle
2018-03-16 18:12:46 +01:00
Sebastiaan Janssen e3e425695f U4-8724 tinyMceConfig.config customConfig bool not correct deserialized 2018-03-16 16:34:58 +01:00
Sebastiaan Janssen b539c6ec27 Merge pull request #1445 from KevinJump/dev-v7-ConnectionStringConfigSource
U4-8890 - Honour ConfigSource when setting ConnectionString
2018-03-16 15:45:21 +01:00
Stephan dda696bde5 Troubleshoot, fix 2018-03-16 09:11:59 +01:00
Mads Rasmussen 2d263447cf lighten border on tree 2018-03-16 08:19:03 +01:00
Shannon 69f7623fb7 Doh! we had test code checked in .. oops! 2018-03-16 14:40:26 +11:00
Shannon 82820284f3 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.10
# Conflicts:
#	src/Umbraco.Web/Features/DisabledFeatures.cs
#	src/Umbraco.Web/Features/EnabledFeatures.cs
2018-03-16 14:30:55 +11:00
Sebastiaan Janssen 5f3090c81e grunt was discontinued in 7.7 and shouldn't exist here any more to avoid confusion 2018-03-15 10:40:40 +01:00
Sebastiaan Janssen f66e239584 PhantomJs doesn't understand fancy ES6 notation 2018-03-15 10:32:25 +01:00
Sebastiaan Janssen a465ed415d Rename to javascriptLibraryService 2018-03-15 10:08:00 +01:00
Sebastiaan Janssen 5161fd0cef Remove trailing space from filename and clean up code a little 2018-03-15 10:07:04 +01:00
Sebastiaan Janssen eac9785c45 Apply PR #2507 2018-03-15 10:02:20 +01:00
Sebastiaan Janssen 054a8b48fa Revert PR #2507 - needs to go in 7.10 2018-03-15 09:59:04 +01:00
Stephan af0a03a3e0 U4-10756 - cleanup 2018-03-15 09:51:12 +01:00
Stephan fb5e6c22ce Merge remote-tracking branch 'origin/dev-v7' into temp-u4-10756 2018-03-15 09:46:52 +01:00
Stephan 6bc68005f4 U4-10756 - id/guid cache, new version 2018-03-15 09:46:39 +01:00
Sebastiaan Janssen dfbc3c477a Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into pr/2507 2018-03-15 09:38:44 +01:00
Niels Hartvig 57426ae895 Feedback from review. Makes the moment service more generic and changes promises chaining 2018-03-14 11:10:01 +01:00
Shannon 05c38db54c updates naming of the extending preview property and fixes the angular rendering on ng-init 2018-03-14 15:24:30 +11:00
Shannon 00fdace570 fixes preview view web.config and makes sure we pass the preview model to the view 2018-03-14 14:38:21 +11:00
Shannon 4e531976e9 missing file 2018-03-14 14:24:11 +11:00
Shannon 0feb1b6cc0 fixes build since we don't have preview files 2018-03-14 14:02:35 +11:00
Shannon 830f460b7e bumps version 2018-03-14 13:58:48 +11:00
Shannon 3e2fa64820 Changes the Preview Index.cshtml to use a real model instead of viewdata, adds the correct razor web.config for these preview views, changes the enabled feature to be able to inject a razor view instead of strings 2018-03-14 13:56:49 +11:00
Shannon Deminick 7db4f841e3 Merge pull request #2485 from umbraco/temp-UAASSCRUM-1405
UAASSCRUM-1405 Clean up preview for Headless
2018-03-14 13:39:28 +11:00
Shannon 509d27f93b Merge branch 'dev-v7.10' into temp-UAASSCRUM-1405
# Conflicts:
#	src/Umbraco.Web/Features/EnabledFeatures.cs
2018-03-14 13:38:25 +11:00
Shannon f42b122e73 adding missing files 2018-03-14 13:35:51 +11:00
Shannon b4aad19573 Revert "Merge pull request #2508 from umbraco/temp-U4-11076"
This reverts commit 4161d244c1, reversing
changes made to eea87e411f.
2018-03-14 13:23:33 +11:00
Shannon 1b6c070752 Merge remote-tracking branch 'origin/dev-v7' into temp-UAASSCRUM-1405 2018-03-14 12:56:07 +11:00
Shannon bedce100d2 Fixes merge and the preview views path 2018-03-14 12:55:34 +11:00
Shannon 0e08a56ada Merge branch 'dev-v7' into temp-UAASSCRUM-1405
# Conflicts:
#	src/Umbraco.Web/Features/DisabledFeatures.cs
#	src/Umbraco.Web/Features/EnabledFeatures.cs
2018-03-14 12:25:37 +11:00
Sebastiaan Janssen 03012cf54d Merge pull request #1435 from neilgaietto/U4-8822
U4-8822- Fixes Unpublish error with empty RTE
2018-03-14 00:10:49 +01:00
Sebastiaan Janssen 7ff339e18a Merge pull request #1306 from shiroganee/Fix-8533
removes a overflow: hidden which decrease update-tree-layer performance
2018-03-13 23:34:59 +01:00
Sebastiaan Janssen 0048b9c4c8 Merge pull request #2516 from bjarnef/dev-v7-U4-11093
U4-11093 - Update Danish translations
2018-03-13 23:03:48 +01:00
Bjarne Fyrstenborg 47f5e6bf17 Remove duplicate key in user area 2018-03-13 22:23:38 +01:00
Bjarne Fyrstenborg a8908c90bc Add better translations to Danish 2018-03-13 22:21:44 +01:00
Sebastiaan Janssen 9e5e8b539a Merge branch 'bjarnef-dev-v7-U4-6616' into dev-v7 2018-03-13 22:19:15 +01:00
Sebastiaan Janssen 45d292e196 Merge branch 'dev-v7-U4-6616' of https://github.com/bjarnef/Umbraco-CMS into bjarnef-dev-v7-U4-6616
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/less/variables.less
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/iconpicker.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/dialogs/iconpicker.html
2018-03-13 22:18:28 +01:00
Niels Hartvig 6bafd3a254 Removes ugly non-existing comment :) 2018-03-13 16:39:01 +01:00
Niels Hartvig 564074a2bd Adds check for existing moment locales before attempting to download them 2018-03-13 16:19:51 +01:00
Shannon Deminick 4161d244c1 Merge pull request #2508 from umbraco/temp-U4-11076
Fix - U4-11076 Remove all references to templates from the backoffice
2018-03-12 20:32:29 -07:00
Shannon 171e0d87db Updates some of the variable names, removes the EnabledFeatures since we don't really need that 2018-03-13 14:31:30 +11:00
Shannon Deminick eea87e411f Merge pull request #2514 from umbraco/temp-U4-11065
Fix - U4-11065 Sensitive data is shown in listviews
2018-03-12 17:25:49 -07:00
Shannon 89edfe5782 refactors a bit - merges the 2 new resolvers into one and renames with code comments. Updates the ContentPropertyBasic to include a new IsSensitive property for mapping, updates the UI to check for this, updats the mapping to map with UmbracoContext, 2018-03-13 11:23:44 +11:00
Shannon Deminick cbd5071eed Merge pull request #2510 from umbraco/temp-UAASSCRUM-1441
fixes UAASSCRUM-1441: fix token identity breaking RestAPI and others
2018-03-12 06:27:50 -07:00
Robert 3dbc2944aa Translations 2018-03-12 12:06:57 +01:00
Robert 709dab6afd Hooked sensitive data checks on member list view 2018-03-12 12:06:23 +01:00
Robert 8749b030cf Added custom resolver to deal with sensitive values on member list view, some cleanup 2018-03-12 12:04:54 +01:00
Sebastiaan Janssen 62fd15d54b Update CONTRIBUTING.md 2018-03-10 12:24:13 +01:00
Sebastiaan Janssen 66e71db85c Update CONTRIBUTING.md 2018-03-10 12:20:56 +01:00
Sebastiaan Janssen 469527da0a Update CONTRIBUTING.md 2018-03-10 12:20:24 +01:00
Robert 304e574bbc Merge pull request #2509 from umbraco/temp-U4-11058
fixes: U4-11058 Add guidance to the multinode treepicker UI for min. …
2018-03-08 14:01:14 +01:00
Robert 723644ace5 Merge pull request #2475 from barryokane/U4-7484-markdown
(uDuf) Prevent "unsaved" warning when no changes on MarkDown Editor
2018-03-08 13:23:46 +01:00
Stephan 2b936a6d31 UAASSCRUM-1441 - fix token identity 2018-03-08 13:18:53 +01:00
Sebastiaan Jansssen 3121635e07 Clarify upgrade readme 2018-03-08 13:15:04 +01:00
Mads Rasmussen 26defd8f29 Merge branch 'dev-v7' into temp-v8-UI 2018-03-08 11:52:08 +01:00
Mads Rasmussen f2a3a269ba fixes: U4-11058 Add guidance to the multinode treepicker UI for min. and max. allowed items 2018-03-08 11:22:31 +01:00
Robert 557fc1bcdd Removed hardcoded value for disabletemplate 2018-03-07 21:43:19 +01:00
Kyle Weems 617bdb2bd1 Merge branch 'dev-v7' of git://github.com/umbraco/Umbraco-CMS into dev-v7 2018-03-07 10:21:11 -08:00
Kyle Weems 2c91f9bf14 Reduce the first load impact of Moment by moving from using moment-with-locales.js to moment.min.js and loading in the specific locale files when the app authorizes. http://issues.umbraco.org/issue/U4-11044 2018-03-07 10:19:11 -08:00
Robert 1a5fe63638 Switching to ng-if to hide the template dropdown in the info tab 2018-03-07 14:51:24 +01:00
Robert dfb0efbc98 Removed option to assign templates from the info tab 2018-03-07 14:43:30 +01:00
Robert d399ad6e51 Removed option to assign templates from the document type 2018-03-07 14:13:53 +01:00
Robert eb06e62937 Removing the option to create document type with a template 2018-03-07 14:10:25 +01:00
Robert 728bf8b52d Adding disableFeatures server variable and new DisableTemplate property in DisabledFeatures.cs 2018-03-07 14:03:35 +01:00
Stephan 3637e1e5af Cleanup 2018-03-07 10:26:02 +01:00
Stephan c9f868dd3c UserId zero means null users, not super 2018-03-07 09:35:28 +01:00
Stephan e2ea849211 Cleanup 2018-03-07 09:34:41 +01:00
Stephan 2a3f284554 Cleanup 2018-03-06 17:24:28 +01:00
Niels Hartvig ca74100e12 TLC for multiple pre values editor 2018-03-06 16:11:44 +01:00
Stephan cd63806895 U4-10756 - id/guid cache 2018-03-06 16:11:27 +01:00
Niels Hartvig 3061dc4e6f Adds support for *not* closing an overlay on enter 2018-03-06 15:37:52 +01:00
Niels Hartvig 5166dc08d6 Missing null check 2018-03-06 12:44:39 +01:00
Niels Hartvig 05a9c44e9e Needs to check if single value is an array and then pick first value 2018-03-06 11:51:32 +01:00
Niels Hartvig 8e0565e030 Fixes spacing in description :) 2018-03-06 11:16:51 +01:00
Niels Hartvig ceb3ae361a Adds flexible dropdown editor to replace the four current ones 2018-03-06 11:07:08 +01:00
Niels Hartvig 4cee7b831a Merge branch 'dev-v7' into temp-U4-11032 2018-03-06 10:08:04 +01:00
Robert f146262031 Merge pull request #2476 from barryokane/U4-9996
(uDuf) Prevent unsaved dialogue appearing when no changes made on FileUpload
2018-03-06 09:17:17 +01:00
Stephan 0277ddc584 DataType troubleshooting 2018-03-05 14:59:23 +01:00
Robert ddae0d01e3 Merge pull request #2460 from mwanchap/U4-10821
Fix for U4-10821, render alt text attribute from grid image editor (uduf hackathon)
2018-03-05 14:35:23 +01:00
Robert b9ee85dabc String ->string 2018-03-05 14:34:36 +01:00
Stephan 030c97ef26 Super user is not a Zero 2018-03-02 16:00:15 +01:00
Sebastiaan Janssen 29fa6061a9 Merge pull request #2496 from soreng/temp-U4-9992
U4-9992: Added nuget config to restore command
2018-03-02 11:56:39 +01:00
Søren Gregersen 8ee61312b6 Added nuget config to restore command 2018-03-02 11:47:57 +01:00
Sebastiaan Janssen cfd4b8c7bf Merge pull request #2495 from soreng/temp-U4-9992
U4-9992: Added usage of nuget config in environment setup
2018-03-02 11:45:42 +01:00
Sebastiaan Janssen 7ce3b6046c Merge pull request #2494 from Mivaweb/patch-1
Update NL.xml rectify and permissionDenied
2018-03-02 11:43:20 +01:00
Søren Gregersen 43d98c9682 Added usage of nuget config in environment setup 2018-03-02 11:42:41 +01:00
Michaël Vanbrabandt 62e4825a5e Update NL.xml rectify and permissionDenied 2018-03-02 10:47:15 +01:00
Sebastiaan Janssen 81d35c6079 Merge pull request #2491 from mortenbock/temp-U4-5614
U4-5614 - Handle invalid urls in extension check
2018-03-01 20:49:09 +01:00
Morten Bock 7e15077f96 Handle invalid urls in extension check 2018-03-01 20:18:18 +01:00
Sebastiaan Janssen 6543e3c058 Merge pull request #2489 from mortenbock/temp-U4-288
U4-288 - Allow relative urls in sheduled tasks
2018-03-01 19:47:31 +01:00
Morten Bock 7c73c379cf Use the UmbracoApplicationUrl as the base for sheduled task urls, in case they are relative. 2018-03-01 19:11:37 +01:00
Sebastiaan Janssen 4bc9d96bce Merge pull request #2488 from hemraker/temp-U4-10993
Fixed open doc type button
2018-03-01 18:09:48 +01:00
Rune Hem Strand 45fd54d046 Fixed open doc type button 2018-03-01 18:06:46 +01:00
Sebastiaan Jansssen 4f062306a6 U4-10891 Color Picker Cannot read property 'hasOwnProperty' of null
(cherry picked from commit 4a8730b925)
2018-03-01 16:47:28 +01:00
Sebastiaan Jansssen 4a8730b925 U4-10891 Color Picker Cannot read property 'hasOwnProperty' of null 2018-03-01 16:45:38 +01:00
Sebastiaan Janssen 0beda4b790 Update CONTRIBUTING.md 2018-03-01 16:43:02 +01:00
Sebastiaan Jansssen d94e7cd906 Merge branch 'dev-v7' into master-v7 2018-03-01 15:09:45 +01:00
Sebastiaan Jansssen 213ea6470f Bump version to 7.9.2 2018-03-01 15:09:04 +01:00
Sebastiaan Jansssen dde8ba5617 Merge branch 'dev-v7' into master-v7 2018-03-01 14:57:11 +01:00
Sebastiaan Janssen e783308cf0 Merge pull request #2487 from umbraco/temp-hartvig-ocd
Aligns installer/login background photo
2018-03-01 14:54:56 +01:00
Sebastiaan Jansssen 01f49bb07e Revert "Merge pull request #2426 from JeffreyPerplex/U4-9991-KeyboardShortcuts"
This reverts commit 325cefa349, reversing
changes made to d4cf4cd700.
2018-03-01 14:52:17 +01:00
Stephan 20a7d9926b Improve ReflectionUtilities 2018-03-01 14:50:42 +01:00
Niels Hartvig d06b7edd84 Change default value label to "true" 2018-03-01 14:46:36 +01:00
Niels Hartvig 466de5ee0b Adds a label to the boolean pre value editor 2018-03-01 14:41:44 +01:00
Niels Hartvig 976e1e8a35 Mark existing dropdown property editors as obsolete 2018-03-01 14:25:07 +01:00
Niels Hartvig a3d08c19c5 Aligns photo 2018-03-01 14:05:34 +01:00
Claus 23638702c8 adding missing views... 2018-03-01 12:57:43 +01:00
Mads Rasmussen 761804baf8 Merge pull request #2486 from umbraco/temp-U4-10876
Fixes "Content Picker 2 can search outside of it's selected start node"
2018-03-01 10:46:50 +01:00
Sebastiaan Jansssen a633e45b44 Merge branch 'dev-v7' into master-v7 2018-03-01 10:27:57 +01:00
Shannon 78489237d9 U4-11019- default isApproved to true 2018-03-01 18:21:14 +11:00
Shannon 8768947519 U4-11019 Member 'Locked out' marked as sensitive throws an error - fixes special values 2018-03-01 18:05:44 +11:00
Sebastiaan Jansssen 63b58dcd09 Merge remote-tracking branch 'origin/dev-v7' into master-v7 2018-03-01 07:51:07 +01:00
Shannon ccfb643055 U4-11019 Member 'Locked out' marked as sensitive throws an error 2018-03-01 17:15:47 +11:00
Robert 88e6e44f4e Fixes Content Picker 2 can search outside of it's selected start node 2018-02-28 15:54:13 +01:00
Claus 52684b6189 allowing to extend html used in preview view. 2018-02-28 13:41:49 +01:00
Sebastiaan Jansssen 76a0c6c39f Merge branch 'dev-v7' into master-v7 2018-02-28 13:28:39 +01:00
Sebastiaan Jansssen 86bc50c61d Bump version to 7.9.1 2018-02-28 13:27:53 +01:00
Claus 13c675d718 updating route to use the old url.
removing leftover index.html.
adding migration for renaming preview folder on disk.
2018-02-28 12:04:39 +01:00
Sebastiaan Janssen 924eab29af Merge pull request #2484 from umbraco/temp-U4-11021
U4-11021 No login form when trying to authorise 7.9 upgrade
2018-02-28 11:52:28 +01:00
Claus 0ee3ebd180 adding the preview controller to project.
removing old static html files from src (they're now cshtml files in Views).
copy task should not copy static canvasdesigner files anymore.
2018-02-28 08:58:16 +01:00
Matt Wanchap da0a1c808a Added fallback to caption if no altText, as suggested 2018-02-28 11:06:59 +10:00
Shannon 9504eddf7e Adds unit test to test mapping to a ContentItemDisplay when there are no property groups 2018-02-28 11:28:51 +11:00
Shannon e502db5f6f U4-11021 No login form when trying to authorise 7.9 upgrade 2018-02-28 09:33:47 +11:00
Sebastiaan Jansssen 22820ae5db Re-organize CONTRIBUTING.md 2018-02-27 22:06:47 +01:00
Sebastiaan Jansssen b65dc25193 More CONTRIBUTING.md 2018-02-27 22:03:33 +01:00
Sebastiaan Jansssen 99b5b0a396 CONTRIBUTING.md 🎉 2018-02-27 22:01:37 +01:00
Sebastiaan Janssen 7c33b5b69b Create PULL_REQUEST_TEMPLATE.md 2018-02-27 17:00:24 +01:00
Sebastiaan Janssen 2ec66bf6d7 Create CODE_OF_CONDUCT.md 2018-02-27 16:56:53 +01:00
Stephan a39511bf55 Troubleshooting 2018-02-27 16:13:23 +01:00
Sebastiaan Janssen 9421a92610 Merge pull request #2482 from umbraco/temp-u4-11018
Fix tabs issue
2018-02-27 15:48:48 +01:00
Claus 9c8c9d8a39 UAASSCRUM-1405 Clean up preview for Headless 2018-02-27 15:47:47 +01:00
Sebastiaan Jansssen 37d2203de1 Merge branch 'dev-v7' into master-v7 2018-02-27 15:45:16 +01:00
Stephan cec71f5651 Fix tabs issue 2018-02-27 14:52:12 +01:00
Sebastiaan Jansssen 7ee510ed38 Fix formatting 2018-02-26 16:28:12 +01:00
Sebastiaan Jansssen 136e9e66d2 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9 2018-02-26 16:26:54 +01:00
Shannon 55a2eb5b6c Merge branch 'dev-v7.9' of https://github.com/umbraco/Umbraco-CMS into dev-v7.9 2018-02-27 01:39:05 +11:00
Shannon 0c2c12fdd9 ensures that the template cache is cleared on startup if it hasn't been tracked in local storage 2018-02-27 01:38:53 +11:00
Sebastiaan Jansssen ec427afe14 Spelling 2018-02-26 15:19:45 +01:00
Shannon 155a304ce3 Allows GUID to be passed to ContentTreeControllerBase 2018-02-27 01:17:21 +11:00
Shannon 161a19a82b Adds cache busting for TinyMCE 2018-02-27 01:12:17 +11:00
Shannon e40ed5e858 not full caps for col name 2018-02-27 00:47:03 +11:00
Shannon 1ffbd734c8 Changes column and model for auditing to EventDateUtc 2018-02-27 00:46:09 +11:00
Shannon fd5bc49c87 Audits the member being exported, moves the export method to the service (again) but returns a proper model this time and raises an event, adds error checking to the export http request 2018-02-27 00:40:43 +11:00
Shannon Deminick 2301a00cd1 Merge pull request #2480 from umbraco/temp-U4-10794-2
Makes methods on IConsentService more explicit to allow mo
2018-02-26 22:43:26 +10:00
Shannon Deminick 313f7967cb Merge pull request #2479 from umbraco/temp-U4-10900-2
Fixes for U4-10900 Individual member data export functionality
2018-02-26 22:41:03 +10:00
Shannon 6adaa1f70c adds a notification when the member gets exported 2018-02-26 23:37:20 +11:00
Shannon 8960b0828e simplifies the exporter even more, no more reflection, no more streams 2018-02-26 23:23:25 +11:00
Shannon 397ab0e979 Merge branch 'dev-v7.9' into temp-U4-10900-2
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/member/export.html
2018-02-26 23:13:58 +11:00
Shannon 15c803b975 Changes how the json response is created 2018-02-26 23:12:33 +11:00
Shannon d62b36ae5b Merge branch 'temp-U4-10900-2' of https://github.com/umbraco/Umbraco-CMS into temp-U4-10900-2 2018-02-26 23:09:48 +11:00
Shannon 34506664df Moves the member export to happen on action click, adds a helper method to download a file via XHR 2018-02-26 23:09:29 +11:00
Sebastiaan Jansssen 2557b9a7fb Cleanup and makes a nice JSON object out of members + properties 2018-02-26 13:07:32 +01:00
Sebastiaan Jansssen ac66dc9892 Fix member groups and don't add a line at the top 2018-02-26 12:39:02 +01:00
Robert 11e3d8c761 Merge pull request #2474 from umbraco/temp-u4-10688
U4-10688 Obsolete property editors showing
2018-02-26 12:37:53 +01:00
Shannon Deminick 22b9941822 rename to match file naming conventions 2018-02-26 22:28:41 +11:00
Sebastiaan Jansssen b5b17a466b Cleanup and moving data to json format 2018-02-26 12:03:46 +01:00
Shannon 2c5b37a842 CHanges back to IConsentService but keeps method name changes 2018-02-26 21:56:00 +11:00
Niels Hartvig ae864a3b19 Mark old package installed Nested Content obsolete so it doesn't come up in the list 2018-02-26 11:32:58 +01:00
Mads Rasmussen 449e464a14 Merge branch 'mathiasrando-U4-10883' into dev-v7.9 2018-02-26 09:47:13 +01:00
Mads Rasmussen 5f72eb74db use attr to control button size + remove disabled state 2018-02-26 09:26:14 +01:00
Niels Hartvig fa85ce39c7 Changes filter of deprecated property editors to be on controller level instead of resolver 2018-02-26 09:22:54 +01:00
Shannon bdea519770 Changes from IConsentService to ILawfulDataProcessService to allow more flexibility with GDPR data processing in the future 2018-02-26 17:07:06 +11:00
Shannon 78657f34d6 I have updated the Consent.HistoryInternal to internal 2018-02-26 16:51:34 +11:00
Shannon e8fd7e2373 Fixes for U4-10900 Individual member data export functionality 2018-02-26 15:02:47 +11:00
Stephan 1f60314348 Refactor editing, cleanup 2018-02-25 10:43:16 +01:00
Barry 08965982fd Prevent unsaved dialogue appearing when no changes made on FileUpload property editor
Addresses this issue in media section (U4-9996) and content (U4-7484)
2018-02-25 05:50:10 +00:00
Barry 732d3ef326 Prevent "unsaved" warning when no changes on MarkDown Editor
http://issues.umbraco.org/issue/U4-7484#
2018-02-25 03:18:00 +00:00
Niels Hartvig 3da9fddd64 U4-10688 Obsolete property editors showing
Please be aware that if you do have obsolete property editors in use and set the setting "showDeprecatedPropertyEditors" to false you'll get an exception.
2018-02-24 21:31:10 +10:00
Sebastiaan Jansssen e1821697d4 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
2018-02-24 11:53:28 +01:00
Sebastiaan Jansssen a7756afae6 Bump version to 7.8.2 2018-02-24 11:50:39 +01:00
Sebastiaan Jansssen fcd3bb2eee Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.html
2018-02-24 11:48:20 +01:00
Sebastiaan Jansssen 858156bab2 Merge branch 'dev-v7' into master-v7 2018-02-23 22:23:43 +01:00
mikkelhm cf5dac0ddd fix xml in spanish lang file
(cherry picked from commit 2281cd8291)
2018-02-23 22:23:07 +01:00
Sebastiaan Janssen 1cdf5c042e Merge pull request #2473 from umbraco/temp-fix-spanish-language-xml
fix xml in spanish lang file
2018-02-23 22:19:10 +01:00
mikkelhm 2281cd8291 fix xml in spanish lang file 2018-02-23 22:02:47 +01:00
Robert fa68f7fafe Merge pull request #2445 from bjarnef/dev-v7-U4-10966
U4-10966 -  Single/Multiple Media Picker is messed up when dragging images
2018-02-23 15:15:36 +01:00
Mads Rasmussen 898e39dac5 Merge branch 'U4-10883' of git://github.com/mathiasrando/Umbraco-CMS into mathiasrando-U4-10883 2018-02-23 14:49:50 +01:00
Sebastiaan Jansssen 2ae96f3810 Merge branch 'dev-v7' into master-v7 2018-02-23 14:23:49 +01:00
Sebastiaan Jansssen f6045a49b5 Bump version to 7.7.13 2018-02-23 14:22:53 +01:00
Sebastiaan Jansssen 849cd4d315 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9 2018-02-23 13:49:57 +01:00
Sebastiaan Jansssen 10141bf4f6 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8
# Conflicts:
#	src/Umbraco.Web/Mvc/RenderRouteHandler.cs
2018-02-23 13:49:20 +01:00
Sebastiaan Janssen 11fcc8cd65 Merge pull request #2469 from umbraco/temp-U4-10900
Export member data functionality
2018-02-23 13:44:01 +01:00
Sebastiaan Jansssen 95aaf40281 Some more code cleanup and making sure we pass in the current user so that we can't avoid the sensitivedata check easily 2018-02-23 13:38:21 +01:00
Robert e25a39ec5d Merge pull request #2472 from umbraco/temp-U4-10964
Temp u4 10964
2018-02-23 13:33:47 +01:00
Sebastiaan Jansssen c165a34ed7 U4-10964 Adding a new property to a MemberType if you are not in Sensitive Data group throws a 404 when saving 2018-02-23 13:17:24 +01:00
Sebastiaan Janssen dc616bb6bf Merge pull request #2471 from alanmac/U4-11007
change newsletter subscribe to default for installation process - GDPR Compliance
2018-02-23 12:48:26 +01:00
Robert cd6c7e51fd Merge branch 'temp-U4-10900' of https://github.com/umbraco/Umbraco-CMS into temp-U4-10900 2018-02-23 12:24:37 +01:00
Alan Mac Kenna 2caad3f2d0 change newsletter subscribe to default for installation process 2018-02-23 11:24:15 +00:00
Robert 4850b01097 Added checks in place to stop users that has no access to sensitive data to export member data, removed some unused usings 2018-02-23 12:23:23 +01:00
Sebastiaan Jansssen 92c0cfb9df Additional action needs to be counted in the test 2018-02-23 10:58:33 +01:00
Sebastiaan Jansssen 8c5ee547b1 Does v3 MyGet API work? 2018-02-23 10:32:49 +01:00
Sebastiaan Jansssen b9c9a232cd Style updates, and removes unused usings 2018-02-23 10:26:11 +01:00
Sebastiaan Jansssen b565513052 Merge branch 'dev-v7.9' into temp-U4-10900 2018-02-23 09:46:06 +01:00
Robert cff24e6ccf Added translation keys for en.xml and deleted duplicate anchorInsert key in en_us.xml 2018-02-23 09:44:32 +01:00
Robert 8ef3ecd714 Forgot to commit the translation keys :| 2018-02-23 09:11:42 +01:00
Shannon 7019c9433b U4-10991 TourController Object reference not set to an instance of an object - when loading an invalid tour 2018-02-23 16:40:29 +10:00
Sebastiaan Janssen 1f66ebff1f Merge pull request #2470 from MMasey/dev-v7
U4-11005 Examine Search tools form does not submit when pressing Enter key
2018-02-22 18:49:17 +01:00
Sebastiaan Janssen 47f8b483a9 Merge pull request #2467 from christophnz/U4-5366
Uduf-Hackathon U4-5366
2018-02-22 18:46:27 +01:00
Sebastiaan Janssen 1c56cd48ae Merge pull request #2468 from emmanueltissera/U4-11002
Fixed email address in invite email [UDUF 2018 Hackathon]
2018-02-22 18:29:48 +01:00
Sebastiaan Janssen 6e9a9d6444 Merge pull request #2464 from lukaaaaaaaay/dev-v7.8
Hackathon: U4-10941 Name should be before Label when adding grid row configurations
2018-02-22 18:17:18 +01:00
Migaroez c4850199f7 U4-10999 Fixed wrong description on mediaresource.search
(cherry picked from commit af476e1536)
2018-02-22 17:36:39 +01:00
Sebastiaan Janssen 679333b9c9 Merge pull request #2456 from Migaroez/U4-10999
U4-10999 Fixed wrong description on mediaresource.search
2018-02-22 17:33:37 +01:00
Sebastiaan Janssen 02c609747d Merge pull request #2455 from GertyEngrie/dev-v7
Typo fix for nullreference in RenderRouteHandler
2018-02-22 17:32:25 +01:00
Sebastiaan Janssen 413e70db7d Merge pull request #2450 from richarth/patch-1
Grammar improvement
2018-02-22 17:31:29 +01:00
Sebastiaan Janssen c2cbac7ef9 Merge pull request #2448 from madsoulswe/temp-U4-10969
U4-10969 - Removed legacy file MediaUploader.ashx
2018-02-22 17:30:14 +01:00
Mike Masey a4a079cd1b Merge remote-tracking branch 'upstream/dev-v7' into dev-v7 2018-02-22 16:24:15 +00:00
Mike Masey 22fc9c617c Upate search button in examin search tools to use type="submit" 2018-02-22 16:18:59 +00:00
Sebastiaan Jansssen 0bcdfc8820 Merge branch 'skartknet-spanish_translations' into dev-v7 2018-02-22 17:11:38 +01:00
Sebastiaan Jansssen b868c06e79 Merge branch 'spanish_translations' of https://github.com/skartknet/Umbraco-CMS into skartknet-spanish_translations
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/es.xml
2018-02-22 17:11:09 +01:00
Robert f0dd32ea19 Removed export placeholder button and added "Action" button instead. 2018-02-22 16:52:16 +01:00
Robert 97607bc83b Added front and back end logic to export member data 2018-02-22 15:32:33 +01:00
Mads Rasmussen 725fec5b3c add active state to language dropdown 2018-02-22 10:08:27 +01:00
ChristophNZ 5b41262f41 rewrote if/else to remove code duplication 2018-02-22 16:35:18 +10:00
Emmanuel Tissera e8e1cd8323 Fixed email address in invite email
http://issues.umbraco.org/issue/U4-11002 - Corrected issue where email address was not linked correctly in the invite template
2018-02-22 16:30:41 +10:00
ChristophNZ 1e17d6a527 continue loop after logging warning when null 2018-02-22 16:19:21 +10:00
ChristophNZ 0d05d0bf34 Import Document Type: use ContentTypeService to search for allowed child nodes if they are not part of the imported type(s) 2018-02-22 15:53:11 +10:00
Shannon 94184238a2 removes uneeded file 2018-02-22 13:19:42 +10:00
Shannon Deminick f21d1f879e Merge pull request #2459 from dinc5150/U4-10702
U4-10702 - Update Umb-modal icon to be consistent with other icons
2018-02-22 14:16:25 +11:00
Luke Phelan 9c1b2499d5 swapped the name and label fields in grid row editor. 2018-02-22 14:14:35 +11:00
Shannon Deminick 60a315f964 Merge pull request #2458 from cpevans/U4-10116
Check if user is admin to show propertyAlias regardless of debug status
2018-02-22 14:07:13 +11:00
Matt Wanchap b37197f66a Fix for U4-10821, render alt text attribute from grid image editor, or empty string if null (for screen readers) 2018-02-22 11:46:23 +10:00
Chris Evans 1870d5444d check for user admin group membership to show propertyAlias regardless of debug status
use the getCurrentUser() method of the userService to query the userGroups property of the current user
2018-02-22 13:54:50 +13:00
David Sheiles a927d5fb84 U4-10702 - Update Umb-modal icons to be consistant 2018-02-22 11:41:57 +11:00
Sebastiaan Jansssen e433daf5ff Bump version to 7.9.0 2018-02-21 16:06:59 +01:00
Migaroez af476e1536 U4-10999 Fixed wrong description on mediaresource.search 2018-02-21 11:02:56 +01:00
Gerty Engrie fcfb9afc22 typo fix 2018-02-20 14:24:51 +01:00
Claus 05818f6262 Merge branch 'temp-U4-10915' into dev-v7 2018-02-20 13:39:03 +01:00
Mads Rasmussen accf8ba5f2 Merge pull request #2444 from bjarnef/dev-v7-U4-10965
U4-10965 - Add translations of "Save and schedule"
2018-02-20 09:26:37 +01:00
Shannon 1788682af9 U4-10915 Umbraco automapper configuration is not valid 2018-02-20 19:16:53 +11:00
Mads Rasmussen a13711318e Merge branch 'dev-v7.8' into temp-v8-UI 2018-02-19 20:13:59 +01:00
Mads Rasmussen b0303a9e45 add more margin bottom to expansion panels 2018-02-19 19:53:03 +01:00
Mads Rasmussen f32513066f add border to node name input 2018-02-19 19:52:43 +01:00
Mads Rasmussen fecb5e7979 don't open splitview when publishing 2018-02-19 19:52:13 +01:00
Sebastiaan Jansssen a41833c137 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9 2018-02-19 17:26:14 +01:00
Sebastiaan Jansssen 7abc6d3d4f Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8 2018-02-19 17:20:12 +01:00
Sebastiaan Jansssen a5f689385a Merge branch 'dev-v7' into master-v7 2018-02-19 17:13:35 +01:00
Sebastiaan Jansssen a551881ce2 TypedMember(object id) didn't know how to deal with UDI values coming in, breaking MNTP pickers 2018-02-19 17:13:03 +01:00
Sebastiaan Jansssen 4a5a8497b4 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9 2018-02-19 15:38:28 +01:00
Sebastiaan Jansssen 567c0977d0 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
2018-02-19 15:37:50 +01:00
Sebastiaan Jansssen 9ec4247350 Sync en and en_us - normalize whitespace 2018-02-19 15:24:50 +01:00
Sebastiaan Jansssen 1607e51270 Merge branch 'dev-v7' into master-v7 2018-02-19 14:21:16 +01:00
Sebastiaan Jansssen 2f31175db5 Bump version to 7.7.12 2018-02-19 14:20:47 +01:00
Sebastiaan Jansssen 044b43f6e1 Merge branch 'dev-v7' into master-v7 2018-02-19 14:10:09 +01:00
Richard Thompson c2722d8120 Grammar improvement
Improved the grammar of an error message
2018-02-16 15:19:16 +00:00
Stephan 47d7677948 Refactor editing, all tests green 2018-02-16 12:00:45 +01:00
Mikulas Tomanka 325cefa349 Merge pull request #2426 from JeffreyPerplex/U4-9991-KeyboardShortcuts
http://issues.umbraco.org/issue/U4-9991 - Adding extra shortcuts
2018-02-16 10:36:24 +01:00
Mikulas Tomanka e43ecfd42c Merge branch 'dev-v7.9' into U4-9991-KeyboardShortcuts 2018-02-16 10:35:41 +01:00
Dennis Öhman 76725aa0d8 U4-10969 - Removed legacy file MediaUploader.ashx 2018-02-15 16:12:49 +01:00
Sebastiaan Janssen d4cf4cd700 Merge pull request #2432 from umbraco/temp-u4-10795
U4-10795
2018-02-15 16:07:22 +01:00
Sebastiaan Jansssen 48c0b95707 Only do a length check if performingIp not null 2018-02-15 16:03:12 +01:00
Sebastiaan Jansssen a5caf361e0 Update DateTime.Now usages to be UtcNow to be independent of local datetime 2018-02-15 15:55:40 +01:00
Sebastiaan Jansssen 74c3aaade5 Merge branch 'dev-v7.9' into temp-u4-10795 2018-02-15 15:50:15 +01:00
Stephan cfd2ba3b5a Refactor editing 2018-02-15 14:53:29 +01:00
Stephan cf94da2b8f refactor user and group logging 2018-02-15 14:01:04 +01:00
Stephan d30842e1bf Cleanup editing 2018-02-14 16:55:42 +01:00
Sebastiaan Jansssen 826d6d5b15 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9 2018-02-14 12:15:56 +01:00
Sebastiaan Jansssen 56f4904fc0 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8 2018-02-14 12:15:18 +01:00
Sebastiaan Jansssen 9178e7afcf Whoops, no need to introduce a new method here, old method was still available 2018-02-14 12:13:01 +01:00
Stephan 7f3733d4b5 cleanup 2018-02-14 11:27:43 +01:00
Sebastiaan Jansssen 3df23c3a34 Merge remote-tracking branch 'origin/dev-v7.8' into dev-v7.9
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
2018-02-14 10:34:26 +01:00
Sebastiaan Jansssen 7746c4a014 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8
# Conflicts:
#	src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerPropertyConverter.cs
2018-02-14 10:28:51 +01:00
Sebastiaan Janssen b18945e630 Merge pull request #2447 from umbraco/temp-Fix-CDF-Version-Change
Updates the CDF version changer to to use a hash of the current versi…
2018-02-14 10:25:27 +01:00
Sebastiaan Jansssen 4640cf56d1 Make change non-breaking 2018-02-14 10:23:58 +01:00
Shannon eae1ce7012 fixes build 2018-02-14 12:05:05 +11:00
Shannon e900711180 Updates the CDF version changer to to use a hash of the current version and the date time so that it's not constantly updated if it's not changed. 2018-02-14 11:53:49 +11:00
Shannon 9f4875c8a7 removes SaveUserGroupWithUsersEventArgs and replaces with SaveEventArgs<UserGroupWithUsers> and changes the SavedUserGroupWithUsers to SavingUserGroup2 and SavedUserGroup2 2018-02-14 11:13:24 +11:00
Stephan 46902d4335 Merge branch 'temp-u4-10795' of https://github.com/umbraco/Umbraco-CMS into temp-u4-10795 2018-02-13 15:35:57 +01:00
Stephan 5eb22b0fd9 report added/removed users from groups 2018-02-13 15:30:58 +01:00
Stephan 6a18965946 Don't throw, DRY 2018-02-13 12:00:14 +01:00
Stephan be1ec05072 Use constants for field lengths 2018-02-13 11:32:21 +01:00
Stephan bb2caf85cb fix namespace 2018-02-13 09:47:23 +01:00
Shannon 8ee8bda953 fixes tests 2018-02-13 19:46:34 +11:00
Shannon b42f75df17 fixes tests 2018-02-13 19:29:19 +11:00
Shannon caa3a3319f Fixes issue with user groups being dirty and resetting dirty events 2018-02-13 18:54:13 +11:00
Shannon 5caf95331a Fixes PerformingUser for login/logout and actually logs the affected user 2018-02-13 18:29:39 +11:00
Bjarne Fyrstenborg 040e45ca70 Ensure move cursor is added the multiple media picker (sortable), but not on imagepicker prevalue editor, which not has ui-sortable 2018-02-12 22:27:23 +01:00
Bjarne Fyrstenborg bd3d626147 Add move cursor when media picker is multiple picker and thumbnails are sortable 2018-02-12 21:58:39 +01:00
Bjarne Fyrstenborg 47d08e69a4 Update comment 2018-02-12 21:56:48 +01:00
Bjarne Fyrstenborg df182674b4 Make thumbnail same size as add button 2018-02-12 21:37:22 +01:00
Bjarne Fyrstenborg 6ec9a2ae45 Add specific class for "add" list item 2018-02-12 21:01:08 +01:00
Bjarne Fyrstenborg bf00f7a663 Enable sortable option based on single or multiple media picker 2018-02-12 20:54:49 +01:00
Bjarne Fyrstenborg 74d8341620 Add bottom margin for multiple media picker 2018-02-12 20:46:48 +01:00
Bjarne Fyrstenborg 70207e5374 Fix issues with "add"-button in single and multiple media picker 2018-02-12 20:46:02 +01:00
Bjarne Fyrstenborg f4c038c64c Add translations of "Save and publish". 2018-02-12 18:04:46 +01:00
Shannon c4fa3aa649 Fixes issue with AffectedUser vs PerformingUser, updates the log formatting and uses the affectedDetails better, fixes the double event calling for auth stuff, fixes the change password event raising, fixes reporting the changed property values for members 2018-02-13 00:15:04 +11:00
Mikulas Tomanka d51cda7843 Merge pull request #2440 from ProNotion/patch-1
Fixed typo on user section of tour
2018-02-12 13:32:10 +01:00
Claus 372ffee42b Merge pull request #2437 from umbraco/temp-UAASSCRUM-1365
allowing to disable the template check when sending content through t…
2018-02-12 11:15:26 +01:00
Claus c1cfea7ebd removing constructor. 2018-02-12 11:12:46 +01:00
Shannon 3cdd8a0c43 removes methods from the interface we don't want to support 2018-02-12 20:48:42 +11:00
Shannon bf130584a6 updates docs 2018-02-12 18:28:51 +11:00
Shannon c3e67705ba updated some naming conventions for eventType 2018-02-12 18:24:07 +11:00
Shannon 7a80d689aa Fixes invalid login attempts being logged against the admin user, updates the audit handler to log unique keys for the eventType 2018-02-12 18:12:16 +11:00
Shannon eabc009f0c Adds validation to IAuditService.Write 2018-02-12 17:37:52 +11:00
ProNotion d3a2d88347 Fixed type on user section 2018-02-09 17:33:11 +00:00
Stephan af7df0c6b5 Cleanup 2018-02-09 18:22:59 +01:00
Stephan aa614f1e20 Cleanup 2018-02-09 15:33:44 +01:00
Stephan 15d7fa76a8 Cleanup 2018-02-09 14:59:41 +01:00
Claus 93f4d65227 Merge pull request #2438 from umbraco/temp-U4-10958
Fixes broken MNTP by switching convert cases to the correct DataType
2018-02-09 14:42:08 +01:00
Stephan fcb6dfdfdf Cleanup 2018-02-09 14:34:28 +01:00
Robert a4c0342bda Fixes broken MNTP by switching convert cases to the correct DataType 2018-02-09 14:09:03 +01:00
Sebastiaan Janssen 6c328d729d Merge pull request #2435 from madsoulswe/temp-U4-10953
U4-10953- Help-drawer, (caption + h3 -> h5
2018-02-09 13:32:32 +01:00
Sebastiaan Jansssen 095633ba27 Test names were inverted 2018-02-09 13:27:25 +01:00
Claus 633d1bb0ae changing the template check to an enabled check instead. 2018-02-09 13:19:56 +01:00
Claus fb89c3da3c allowing to disable the template check when sending content through to render. 2018-02-09 12:58:50 +01:00
Mads Rasmussen d5e32249ed fix split view on publish 2018-02-09 12:42:42 +01:00
Claus b2004057a5 U4-10957 If RequiredSection is not defined in a tour - backoffice will throw errors 2018-02-09 11:55:34 +01:00
Sebastiaan Jansssen 3097a46ab3 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
2018-02-09 09:57:00 +01:00
Sebastiaan Jansssen c63156fcd8 Bump version to 7.7.11
(cherry picked from commit 0c25c36af0)
2018-02-09 09:53:52 +01:00
Stephan 29690df567 U4-10795 - misc fixes 2018-02-09 09:33:24 +01:00
Mads Rasmussen 3c78d59c67 Merge branch 'temp-v8-UI' into temp-v8-UI-infinite-editing 2018-02-08 20:58:36 +01:00
Mads Rasmussen 1de2d536c2 fixes styling of fixed header 2018-02-08 20:30:26 +01:00
Stephan f9a8f82434 DataTypes refactoring - getting frontend to work 2018-02-08 18:28:53 +01:00
Stephan c0439b3c4e DataTypes refactoring - troubleshooting 2018-02-08 16:08:52 +01:00
Dennis Öhman 750600b202 U4-10953
Populate Caption in dashboardhelper
h2 -> h5
2018-02-08 15:37:50 +01:00
Mads Rasmussen 14a8045351 check for $scope.model 2018-02-08 14:26:17 +01:00
Sebastiaan Jansssen 28eb4ff03a Bump version to 7.8.1 2018-02-08 14:08:38 +01:00
Sebastiaan Jansssen 79517f171c Update UI.xml when upgrading 2018-02-08 14:07:54 +01:00
Mads Rasmussen 3fa59a6ac1 Merge branch 'temp-v8-UI' into temp-v8-UI-infinite-editing 2018-02-08 13:44:46 +01:00
Mads Rasmussen 2d337923a3 adjustments to editor header layout 2018-02-08 13:42:42 +01:00
Mads Rasmussen c9986a9aeb prototyping media picker 2018-02-08 11:04:56 +01:00
Stephan 61ce533a08 U4-10795 - better performing user management, fix upgrades 2018-02-08 10:16:53 +01:00
Stephan 0a44ad3ab6 U4-10795 - granular logging - roles 2018-02-07 16:50:49 +01:00
Stephan 7c34255abe Merge branch origin/dev-v7.9 into temp-u4-10795 2018-02-07 15:55:41 +01:00
Stephan d52216103b U4-10795 - granular logging 2018-02-07 15:51:18 +01:00
Stephan a26cd625e7 U4-10795 - granular logging 2018-02-07 15:38:50 +01:00
Mads Rasmussen 06714c2e31 add component and services to control infinite editors 2018-02-07 13:44:48 +01:00
Stephan 450854a209 DataType refactoring - polish 2018-02-07 13:35:59 +01:00
Warren Buckley b280bf73aa Merge pull request #2429 from umbraco/temp-U4-10937
U4-10937 Datepicker on Info tabe and dates on audit trail do not work…
2018-02-07 12:13:19 +00:00
Shannon a6d57a5f6d Updates the dateHelper when converting to a local date, we need to check if the current string format is in UTC format and ensure that it's loaded that way 2018-02-07 12:51:15 +11:00
Mario Lopez 1f22191bbc fixed formatting 2018-02-07 11:35:39 +11:00
Mario Lopez 25088042a9 spanish translations 2018-02-07 11:28:11 +11:00
Shannon 6b7a83c6c9 Updates logic for setting the scheduled publishing date/times to ensure that the local date/time is displayed but the server time is persisted 2018-02-07 11:17:02 +11:00
Sebastiaan Jansssen eb5f2e29a3 U4-10937 Datepicker on Info tabe and dates on audit trail do not work if server time needs offsetting 2018-02-06 19:15:15 +01:00
Stephan 02397fd90c U4-10795 - granular logging 2018-02-06 19:07:54 +01:00
Mikkel Holck Madsen cf86409e3f Merge pull request #2427 from umbraco/temp-U4-10935
fixes: U4-10935 Intro tour doesn't start automatically on cloud
2018-02-06 11:04:02 +01:00
Mads Rasmussen 134f5e2601 fixes: U4-10935 Intro tour doesn't start automatically on cloud 2018-02-06 10:14:30 +01:00
Mads Rasmussen 806b375e29 use umb-property-editor component instead of umb-editor 2018-02-06 09:52:39 +01:00
Mathias Rando Juul e0ded863cc Changes revalidation of username and password.
Ensures that both inputs are revalidated on change(if the form is invalid) to avoid cases where changing your password doesn't reset $invalid and therefor doesn't allow you to resubmit the form without triggering a change in the username.
2018-02-06 06:35:41 +01:00
Mathias Rando Juul bd55594be1 Changes submit button to use umb-button directive. 2018-02-06 06:27:50 +01:00
Mathias Rando Juul 0e82696082 Updates formatting to match guidelines.
The guidelines for core contribution states that 4 spaces should be used for everything except XML.
2018-02-06 06:00:46 +01:00
Sebastiaan Jansssen 37ac524e8e Don't enable tours for upgraders 2018-02-05 22:37:47 +01:00
Sebastiaan Jansssen 43af2f8e55 Fix UI docs generator 2018-02-05 21:12:25 +01:00
Stephan a97900515b DataType refactoring - polish 2018-02-05 17:48:54 +01:00
Jeffrey - Perplex a7a6854f9b Adding extra shortcuts 2018-02-05 16:45:20 +01:00
Mads Rasmussen 34c985dc19 Merge branch 'dev-v7.8' into temp-v8-UI
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/components/application/umb-navigation.html
#	src/Umbraco.Web.UI.Client/src/views/users/user.html
2018-02-05 13:59:09 +01:00
Stephan 947d08c947 DataType refactoring - troubleshooting 2018-02-02 19:50:48 +01:00
Stephan c748a2bc41 DataType refactoring - all tests green 2018-02-01 17:53:32 +01:00
Sebastiaan Jansssen a20584e3de Not beta009, Final! 2018-02-01 16:18:49 +01:00
Sebastiaan Jansssen 19ec26fef9 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8 2018-02-01 15:20:13 +01:00
Stephan b416079e12 DataType refactoring - troubleshooting tags and fixing tests 2018-02-01 14:14:45 +01:00
Sebastiaan Janssen 23d225c14f Merge pull request #2424 from umbraco/temp-u4-10794
Temp u4 10794
2018-02-01 13:32:32 +01:00
Sebastiaan Jansssen 1a289be999 Whoops, I see what you did there, Consent can be internal indeed, cool! 2018-02-01 13:09:06 +01:00
Sebastiaan Jansssen 8a0485e093 Consent class really needs to be public 2018-02-01 13:07:02 +01:00
Sebastiaan Jansssen 647492fbfb Merge branch 'dev-v7.9' into temp-u4-10794 2018-02-01 12:55:53 +01:00
Mads Rasmussen 466e97086b remove border on sub header sections 2018-01-31 20:45:37 +01:00
Mads Rasmussen d1fac8885c adjust size on header icons 2018-01-31 20:44:59 +01:00
Mads Rasmussen 288048175f fix tree options 2018-01-31 20:43:54 +01:00
Sebastiaan Jansssen fc43d3cdee Merge branch 'dev-v7.8' into dev-v7.9 2018-01-31 17:03:19 +01:00
Sebastiaan Jansssen b76b09026b Merge branch 'dev-v7' into dev-v7.8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI.Client/src/assets/img/installer.jpg
#	src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbtour.directive.js
#	src/Umbraco.Web.UI.Client/src/common/services/tour.service.js
#	src/Umbraco.Web.UI.Client/src/controllers/search.controller.js
#	src/Umbraco.Web.UI.Client/src/views/common/tours/umbintrocreatedoctype/doctypename/doctypename.controller.js
#	src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
#	src/Umbraco.Web.UI/config/BackOfficeTours/getting-started.json
#	src/Umbraco.Web/Editors/TourController.cs
#	src/Umbraco.Web/Models/BackOfficeTour.cs
#	src/Umbraco.Web/Models/BackOfficeTourStep.cs
#	src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
#	src/Umbraco.Web/TourFilterResolver.cs
#	src/Umbraco.Web/Trees/MacroTreeController.cs
#	src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs
#	src/umbraco.cms/businesslogic/Packager/Installer.cs
#	src/umbraco.cms/businesslogic/Packager/PackageInstance/utill.cs
2018-01-31 17:02:03 +01:00
Mads Rasmussen 162d3ce47d show variant publish state in variant dropdown 2018-01-31 15:41:39 +01:00
Mads Rasmussen 21bf5cd4ec truncate tree node names 2018-01-31 15:39:27 +01:00
Stephan 971d7cf933 U4-10794 - refactor 2018-01-31 15:20:03 +01:00
Sebastiaan Jansssen 118a83e56c Consent class should be public for 3rd parties to be able to register consents 2018-01-31 13:19:30 +01:00
Sebastiaan Jansssen 1f6dea7177 Adds migration to create constent table 2018-01-31 12:47:41 +01:00
Sebastiaan Jansssen f2667c3360 Bumps version to 7.9.0 2018-01-31 12:47:16 +01:00
Sebastiaan Janssen f331736384 Merge pull request #2421 from umbraco/temp-U4-10797
U4-10797 Sensitive values
2018-01-31 10:59:18 +01:00
Shannon a6bc94185c Ensures that a user without access to sensitive values cannot change a member type's sensitive values, this also validates on the server side 2018-01-30 19:38:42 -06:00
Warren Buckley 5f5759c8a3 Merge pull request #2422 from umbraco/temp-U4-10869
U4-10869 Make sure the getting started tour is only shown to the right users
2018-01-30 09:10:12 +00:00
Robert 0b90097aad "requiredSections" tour property documentation
Added a few words about "requiredSections" tour property
2018-01-30 10:00:54 +01:00
Shannon 58533ca17e Validates sensitive properties during model binding to ensure that someone cannot hack a posted value for sensitive props if they don't have access to sensitive props. 2018-01-29 13:24:27 -06:00
Stephan f5546ca870 DataType refactoring - troubleshooting and fixing tests 2018-01-29 19:23:25 +01:00
Shannon 427e99dd29 WIP - need to validate sensitive properties for invalid posted data 2018-01-29 12:20:06 -06:00
Shannon 1ec09e15cf fixes tests 2018-01-29 12:02:20 -06:00
Shannon a48568d1ba Fixes problem where the sensitive value placeholder was being posted back to the server for saving, instead we don't post this value at all which means it will not be overwritten when it posts back. 2018-01-29 11:38:08 -06:00
Stephan 5aa1b81cd4 U4-10794 - revert PEtaPocoMapper changes 2018-01-29 16:27:16 +01:00
Robert e07c5e6ff8 Removed unused using directives 2018-01-29 13:18:11 +01:00
Robert 67ff827d67 Tours will only load if the current user has access to the same sections the tours has access to 2018-01-29 13:13:43 +01:00
Mads Rasmussen 59612e9539 fine tuning the variant selector 2018-01-29 11:45:51 +01:00
Stephan e1208e5019 U4-10794 - use string ids, not udis 2018-01-29 11:30:01 +01:00
Sebastiaan Jansssen 3f7159797f U4-10880 Update install background 2018-01-29 09:49:16 +01:00
Shannon 995f644501 Adds upgrade logic, fixes tests, fixes model mappings to not do so much AfterMap 2018-01-26 17:27:35 -07:00
Shannon f7eec8dafb Allows editing the property metadata even if the property type is locked 2018-01-26 16:24:40 -07:00
Shannon e039265fab adds descriptions to the member type options 2018-01-26 16:11:14 -07:00
Shannon f08192a4ab Changes copy for hidden values and makes the rendering for hidden values it's own property editor view so we can more easily update it. 2018-01-26 15:52:12 -07:00
Stephan e60a5a4a83 DataType refactoring - in progress 2018-01-26 17:55:20 +01:00
Stephan a16ac1f0ba U4-10794 - implement basic consent service 2018-01-26 10:57:12 +01:00
Mads Rasmussen 23c04ad830 added animations 2018-01-26 09:42:32 +01:00
Shannon 469d6f9ca3 Now checks for the sensitiveData group to view sensitive data 2018-01-25 15:06:23 -07:00
Shannon 54cc80f4e8 Updates all required mappings to use AutoMapperExtensions.MapWithUmbracoContext where appropriate 2018-01-25 14:41:28 -07:00
Shannon 64628c0a9d Gets the IsSensitive property mapped to the display object and changes the property output to show that the field contains sensitive data. Refactors the TabsAndPropertiesResolver and simplifies it a lot which also allows us to pass in an UmbracoContext which we'll need in order to determine a user's rights, etc... Refactors how the TreeNodeUrls are mapped and they now use a proper mapper. This now means we do much less in AfterMap 2018-01-25 14:14:12 -07:00
Mads Rasmussen 9064d205bf move help drawer to right side 2018-01-25 16:37:17 +01:00
Mads Rasmussen 5f069670aa overlays shouldn't cover app header 2018-01-25 15:53:00 +01:00
Mads Rasmussen bff344dc70 small style adjustments 2018-01-25 15:45:54 +01:00
Mads Rasmussen 8368b81528 add close splitview icon 2018-01-25 15:43:30 +01:00
Mads Rasmussen 7fee6f7389 fix umb-table styling 2018-01-25 15:42:52 +01:00
Robert 6f81b7fe24 'getting-started' tour only available to admins 2018-01-25 12:10:34 +01:00
Mario Lopez 1e8bdc8f0c no message 2018-01-25 10:18:06 +11:00
Mads Rasmussen 78398fb8bb start on split view prototype 2018-01-24 14:46:53 +01:00
Stephan f7f42f893b DataType refactoring - in progress 2018-01-24 13:37:14 +01:00
Stephan c3e6886ac0 DataType refactoring - in progress 2018-01-24 11:44:44 +01:00
Warren Buckley 10db9363f4 Merge pull request #2411 from umbraco/temp-U4-10757
Can navigate trough global search results
2018-01-24 09:35:07 +00:00
Sebastiaan Janssen 06897aa8c6 Merge pull request #2413 from umbraco/temp-u4-10853
U4-10853 - fix (scheduled) unpublishing issues
2018-01-23 21:55:53 +01:00
Shannon b49db0e941 Initial commit for member type sensitive data, this adds the db and model requirements and updates the normal property editor for a member type which saves the isSensitive data to the db. 2018-01-23 13:01:31 -07:00
Shannon e25f6e82ed Merge branch 'dev-v7' into dev-v7.8
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
2018-01-23 11:42:14 -07:00
Robert fb8368267e Merge pull request #2410 from umbraco/temp-U4-10851
Fixes U4-10851 - Unzip Umbraco packages into a flat structure
2018-01-23 16:06:41 +01:00
Stephan 7032e137b8 U4-10853 - refactor 2018-01-23 15:02:12 +01:00
Warren Buckley e99643ecfd Merge pull request #2415 from umbraco/temp-U4-10847
Removed authorize attribute from TourControlle
2018-01-23 13:44:52 +00:00
Robert a325529eb8 Merge pull request #2412 from umbraco/temp-U4-10840
Added in the create XML for the legacy UserControl based Create Dialog
2018-01-23 14:38:25 +01:00
Robert c68f832be6 Fixed anoying lower case delete action on macro context tree 2018-01-23 14:34:03 +01:00
Robert 6f39bac32a Removed authorize attribute from TourControlle 2018-01-23 13:47:57 +01:00
Stephan ab9e029525 U4-10853 - fix (scheduled) unpublishing issues 2018-01-23 13:04:57 +01:00
Warren Buckley d298388a7b Update the UI.Release XML too 2018-01-23 11:47:59 +00:00
Warren Buckley 4463abe9bb Added in the create XML for the legacy UserControl based Create Dialog 2018-01-23 11:39:12 +00:00
Warren Buckley d1db38182f Fixes U4-10851 - Unzip Umbraco packages into a flat structure, so it supports packages that have files at the root, along with some packages that have the files nested insider another guid folder 2018-01-23 10:38:41 +00:00
Robert e808360653 Can navigate trough global search results 2018-01-23 10:46:02 +01:00
Mads Rasmussen c5df712471 Merge pull request #2405 from umbraco/temp-U4-10852
Fixes U4-10852 Where the ZipArchive stream was closed
2018-01-23 09:50:29 +01:00
Mads Rasmussen 05c12d1f27 Merge pull request #2404 from umbraco/temp-U4-10843
Fixes U4-10843 and allows user detail page to upload a new avatar
2018-01-22 20:21:57 +01:00
Warren Buckley 5ffdf4dd60 Fixes U4-10852 Where the ZipArchive stream was closed - 'Cannot access a closed Stream' 2018-01-22 14:20:01 +00:00
Warren Buckley f61437cc7c Fixes U4-10843 and allows user detail page to upload a new avatar 2018-01-22 12:09:28 +00:00
Stephan 97a058b817 DataType refactoring 2018-01-20 12:31:42 +01:00
Stephan e30d8f79ef DataType refactoring 2018-01-20 12:09:40 +01:00
Stephan 2f7f22961b Version alpha.31 with ModelsBuilder alpha.14 2018-01-20 10:21:01 +01:00
Stephan eff2e7a65b Manifest refactoring 2018-01-20 10:19:57 +01:00
Claus 7adf917570 Merge pull request #2395 from umbraco/temp-U4-10836
U4-10836 ContentService.GetPagedDescendants() is not returning any re…
2018-01-18 07:27:12 +01:00
Stephan 7c41db4bcc U4-10836 - fix a couple issues with the PR, and optimize 2018-01-17 17:14:26 +01:00
Stephan 5caaef7795 Merge branch origin/dev-v7.8 into temp-U4-10836 2018-01-17 16:54:28 +01:00
Claus 3b72945b1f applying path fix for MediaService. 2018-01-17 15:57:53 +01:00
Mads Rasmussen 71eb22d0e8 Merge branch 'dev-v7.8' of https://github.com/umbraco/Umbraco-CMS into dev-v7.8 2018-01-17 15:51:25 +01:00
Mads Rasmussen 9d780a2e8f fixes: U4-10837 CMS getting started tour can't create Home page 2018-01-17 15:50:01 +01:00
Claus 55b00069cb U4-10836 ContentService.GetPagedDescendants() is not returning any results 2018-01-17 15:40:25 +01:00
Robert b304728f4e Merge pull request #2390 from umbraco/temp-U4-10828
fixes: U4-10828 Add documentation to tour component and service
2018-01-17 14:27:01 +01:00
Mads Rasmussen c7e80fc532 remove all client side code related to registering tours in the service. It should be done through .json files. 2018-01-16 13:40:57 +01:00
Mads Rasmussen b47d691841 add documentation to the tour component 2018-01-16 13:31:13 +01:00
Shannon f6971185f8 bumps version 2018-01-16 19:15:34 +11:00
Shannon 244429b972 Fixes PackageInstaller event args to make sure the package metadata is passed through 2018-01-16 19:15:01 +11:00
Stephan 506d810cf6 DataType refactoring preparation - Entity refactoring 2018-01-15 15:54:06 +01:00
Stephan cc47276095 DataType refactoring preparation - Entity refactoring 2018-01-15 13:44:49 +01:00
Stephan d23933a5b1 DataType refactoring preparation - Entity refactoring 2018-01-15 13:28:35 +01:00
Shannon 80ceba36dc Merge branch 'dev-v7.8' of https://github.com/umbraco/Umbraco-CMS into dev-v7.8 2018-01-15 20:41:47 +11:00
Shannon d33b617851 bumps version, checks for feature resolver 2018-01-15 20:40:40 +11:00
Warren Buckley 2b5f370c92 Merge pull request #2351 from umbraco/temp-U4-9291
U4-9291 TypedSearch should have an overload specifying pager values, …
2018-01-15 09:38:51 +00:00
Shannon 4a0cf81d7d fixes test 2018-01-15 18:19:23 +11:00
Shannon fef743517f Allows for passing in an Unknown object type to the IEntityService.GetIdForKey and GetKeyForId methods 2018-01-15 18:05:52 +11:00
Shannon b3cbcebf5b Merge remote-tracking branch 'origin/dev-v7' into dev-v7.8
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/editorpicker/editorpicker.html
#	src/Umbraco.Web.UI.Client/src/views/components/application/umb-navigation.html
2018-01-15 16:27:29 +11:00
Shannon 3d90c2b83f oops, fixed returned type not picked up by compiler due to dynamics 2018-01-15 16:11:56 +11:00
Shannon 3b8b5b6dfa Merge branch 'dev-v7.8' into temp-U4-9291 2018-01-15 15:51:40 +11:00
Shannon Deminick 85f95cf067 Merge pull request #2386 from umbraco/temp-U4-10824
U4-10824 Helper methods for adding filters to tours
2018-01-15 14:30:48 +11:00
Mads Rasmussen 5b754b3958 adding missing fieds to tour step model 2018-01-12 13:33:46 +01:00
Claus cba31986fe adding dynamic customProperties field to steps. 2018-01-12 11:46:13 +01:00
Claus 07b0267668 Merge pull request #2385 from umbraco/temp-U4-10804
Removed unused tour code from tour.service.js
2018-01-12 10:54:27 +01:00
Claus a83291cc6e tabs-spaces and stuff. 2018-01-12 10:54:10 +01:00
Stephan 988aa661ea DataType refactoring preparation - Entity refactoring 2018-01-12 10:48:36 +01:00
Claus 59d75277c2 fixing up helpers to match exact strings as this is what people will be using. If they need more advanced regex matches they should register by a regex instead. 2018-01-12 09:52:52 +01:00
Claus 69e193e887 U4-10824 Helper methods for adding filters to tours 2018-01-12 09:23:40 +01:00
Robert 56adab43d6 Removed unused tour code from tour.service.js 2018-01-11 15:03:55 +01:00
Mads Rasmussen 80c2cbdfe5 add umb-box to users 2018-01-10 22:23:54 +01:00
Mads Rasmussen e58b759d10 move user group back button to header 2018-01-10 22:11:35 +01:00
Mads Rasmussen d04d37ec90 move user back button to header 2018-01-10 22:09:43 +01:00
Mads Rasmussen b6528c533c add box to create/invite user 2018-01-10 22:06:10 +01:00
Mads Rasmussen b56e4e8b40 add umb-box to user sidebar 2018-01-10 20:37:00 +01:00
Mads Rasmussen 3b9d56f557 Merge branch 'dev-v7.8' into temp-v8-UI 2018-01-10 20:08:50 +01:00
Stephan b5856803e1 DataType refactoring preparation - Entity refactoring 2018-01-10 12:48:51 +01:00
Mads Rasmussen 2fea966a49 decrease space between sidebar and main content on info tab 2018-01-05 20:41:08 +01:00
Mads Rasmussen f1f4d64e85 update data type editor to use umb-box directive 2018-01-05 20:40:29 +01:00
Mads Rasmussen 9260c04a08 update styling + wip node variant picker 2018-01-05 14:01:51 +01:00
Warren Buckley 3a4e5a2027 Update client build NPM dependancy for gulp-connect to use 5.0.0 as next/latest version required you to use CoffeeScript to compile their src code to use the module/component 2018-01-03 12:00:01 +00:00
Stephan 2cb6378c26 Reorg code, move stuff 2017-12-28 09:27:57 +01:00
Stephan edf7df043f Reorg code, move services 2017-12-28 09:18:09 +01:00
Stephan af43ea0beb Reorg code, move dtos 2017-12-28 09:06:33 +01:00
Stephan 3be8f9f645 Variants - invariant segments, property values 2017-12-27 15:11:29 +01:00
Stephan 26f02ea6f2 Migrations refactoring - kill migrations table 2017-12-26 19:58:06 +01:00
Stephan bd3e762d9b Migrations refactoring - WIP - namespaces 2017-12-26 19:01:22 +01:00
Stephan a9d9221548 Migrations refactoring - WIP - cleanup 2017-12-26 12:54:27 +01:00
Stephan 8c8fac5d52 Migrations refactoring - WIP - plan 2017-12-26 11:37:57 +01:00
Stephan 16c919c1a5 Migrations refactoring - WIP - plan 2017-12-22 16:14:09 +01:00
Stephan 772c8ba242 Migrations refactoring, troubleshoot and fix, tests 2017-12-21 15:16:28 +01:00
Stephan 8066b2d4ed Migrations refactoring - WIP - immediate 2017-12-20 11:18:17 +01:00
Stephan a47320301d Migrations refactoring - WIP - immediate 2017-12-19 19:13:53 +01:00
Mads Rasmussen 46b1781567 fix navigation resize 2017-12-19 15:58:10 +01:00
Mads Rasmussen 40b4976a22 add user avatar to header 2017-12-19 13:47:23 +01:00
Mads Rasmussen 760d7897d8 prototype apps for media section 2017-12-19 13:07:22 +01:00
Mads Rasmussen 62954b4d7d expand all content panels when node is loaded 2017-12-19 11:27:26 +01:00
Stephan 2182b0f18f Migrations refactoring - WIP - move code 2017-12-19 11:00:46 +01:00
Stephan f6314e1361 Cleanup 2017-12-18 17:13:29 +01:00
Stephan bbff74fa51 UnitOfWork RIP, troubleshoot and fix, tests 2017-12-18 17:02:15 +01:00
Mads Rasmussen 46aee1d0af add back button to header 2017-12-18 15:44:42 +01:00
Mads Rasmussen aa975445f5 fix sections tray 2017-12-18 14:37:46 +01:00
Mads Rasmussen ba120e9627 remove search from tree + add languages to dropdown 2017-12-18 09:53:14 +01:00
Mads Rasmussen dcf64222da add shadow to header and footer 2017-12-15 18:29:02 +01:00
Mads Rasmussen 830ab2692f styling tweaks 2017-12-15 14:41:51 +01:00
Stephan 0ab2f6cc9f Faster variants in Property 2017-12-15 11:58:11 +01:00
Stephan e4b375f72d UnitOfWork RIP, build tests 2017-12-15 11:19:03 +01:00
Mads Rasmussen 7d080ff337 style umb-table 2017-12-15 10:51:42 +01:00
Mads Rasmussen 84a4b4007b add list view as an app 2017-12-15 10:22:49 +01:00
Shannon 60924d93fb U4-9291 TypedSearch should have an overload specifying pager values, page size, page index, and with an out param to return the total number of results 2017-12-15 17:24:54 +11:00
Stephan 33b4af0340 UnitOfWork RIP, IScopeAccessor 2017-12-14 17:04:44 +01:00
Mads Rasmussen 7b13feb29b change tabs to groups and add apps + first round of styling 2017-12-14 15:21:01 +01:00
Mads Rasmussen b29f591084 start on moving sections to new top bar 2017-12-14 11:24:37 +01:00
Stephan 6d4644c118 UnitOfWork RIP 2017-12-12 15:04:13 +01:00
Stephan 84f9242aa0 Persistence Shakeup 2017-12-07 16:45:25 +01:00
Stephan 269531c570 Published variants in NuCache 2017-12-07 13:22:32 +01:00
Stephan b392d72bc2 Published variants - WIP 2017-12-06 11:51:35 +01:00
Stephan 995f47e6d9 Add variants support to SetValue for files 2017-12-06 10:20:15 +01:00
Stephan d48cb8a66d Fix content event tests 2017-12-06 09:58:50 +01:00
Stephan 5ed82fe297 Fix content event tests 2017-12-02 16:14:21 +01:00
Stephan eb1b1f669c Remove rollback service method 2017-12-02 14:51:01 +01:00
Stephan eca51631b7 Refactor validation and publishing 2017-12-02 14:30:20 +01:00
Stephan eea1392ef4 Fix UI namespaces issues 2017-12-02 13:13:02 +01:00
Stephan aa25990681 Integer version ID, cleanup 2017-12-01 20:00:33 +01:00
Stephan 9b9c7c8e3a Refactor content service 2017-11-30 13:57:40 +01:00
Stephan 94127e9aa2 Implement content- and property-type variations 2017-11-27 19:17:50 +01:00
Stephan 62712cef3d More segment-only values 2017-11-23 16:30:04 +01:00
Stephan 23c0687ae0 Minor variant fixes, support segment-only values 2017-11-22 18:48:43 +01:00
Stephan e843b2c7ea Troubleshoot variants migration 2017-11-22 12:45:09 +01:00
Stephan c6514a6ee1 Troubleshooting variants, running the back-office 2017-11-22 08:39:54 +01:00
Stephan 228c8e7935 PropertyData evo.2 (tests) 2017-11-15 19:44:32 +01:00
Stephan ef11fda272 More content refactoring (tests) 2017-11-15 08:53:20 +01:00
Stephan fcf2b27953 More content refactoring (tests) 2017-11-10 11:27:12 +01:00
Mario Lopez 5678be0db9 Merge remote-tracking branch 'Umbraco/dev-v7' into dev-v7 2017-11-10 09:37:00 +11:00
Stephan 09f499d5d6 More content refactoring (WIP, barely builds) 2017-11-08 08:39:36 +01:00
Stephan 6ce23ee8fd Migrate documents (WIP) 2017-11-01 16:27:24 +01:00
Stephan b66412e2d6 Complete PropertyData table migration 2017-11-01 15:35:37 +01:00
Stephan 8157daaf23 Cleanup migrations, PropertyData table name 2017-11-01 11:32:48 +01:00
Stephan e5b22bf731 Migrate PropertyData table 2017-11-01 10:42:46 +01:00
Stephan 472cb41190 Begin implementing Constants.DatabaseSchema 2017-10-31 18:03:40 +01:00
Stephan 829d995154 Simplicity 2017-10-31 12:50:30 +01:00
Stephan ec6ba01cbf So long Facade 2017-10-31 12:48:24 +01:00
Stephan ab758001ef Cleanup more build 2017-10-26 17:52:51 +02:00
Stephan 7463852202 Cleanup build 2017-10-26 12:49:49 +02:00
Stephan 2305426dda Version -alpha.30 with ModelsBuilder -alpha.13 2017-10-26 11:25:01 +02:00
Stephan edc5b398bd Version 8.0.0-alpha.29 2017-10-25 14:25:52 +02:00
Stephan cf46a51866 Getting NestedContent and ModelsBuilder happy 2017-10-25 13:23:14 +02:00
Stephan 0fe96a58c1 Migrate to Umbraco.Build 2017-10-20 17:53:41 +02:00
Stephan 14eb4fe6e0 Refactor PublishedContentTypes 2017-10-19 12:00:55 +02:00
Stephan cfe5350269 Refactor model type mapping in IPublishedModelFactory 2017-10-17 09:07:01 +02:00
Stephan c62513bd04 Remove ISharpZipLib dependencies where possible 2017-10-16 18:26:03 +02:00
Stephan 890b87a1cf More build fixing 2017-10-16 17:51:53 +02:00
Mario Lopez 464a227af1 Merge pull request #1 from umbraco/dev-v7
Update from  original
2017-10-08 15:45:13 +11:00
Stephan 4a2ee801d4 Fix build 2017-09-29 22:07:48 +02:00
Stephan bcbd4289ea Facade cleanup and refactoring 2017-09-29 18:33:34 +02:00
Stephan ccd54392b7 More reflection utilities 2017-09-29 18:33:34 +02:00
Stephan d32f18f9e7 Relax versionning, version 8.0.0-alpha.26 2017-09-29 18:33:33 +02:00
Stephan 101ba8f620 Facade cleanup and refactoring 2017-09-29 18:33:16 +02:00
Stephan e7a0d79ea7 Bugfix, getting things to run 2017-09-27 16:14:11 +02:00
Stephan be00851b50 Installer image 2017-09-27 12:02:04 +02:00
Stephan 477acb4de3 Fix build, version 8.0.0-alpha024 2017-09-27 11:35:51 +02:00
Stephan 05cb03af11 Fix, now boots and runs 2017-09-27 10:26:37 +02:00
Stephan c24fdc0ddf Facade cleanup and refactoring 2017-09-27 10:26:36 +02:00
Stephan 91b8f073ad Reflection and model factory 2017-09-27 10:26:35 +02:00
Stephan d61ca898c4 PropertySet => PublishedElement 2017-09-27 10:26:34 +02:00
Stephan 057d1a3395 EditorConfig to CrLf 2017-09-24 22:10:19 +02:00
Stephan e71c9740cd More SqlTemplates 2017-09-24 18:54:31 +02:00
Stephan 5ba2ffcbf3 CrLfTab 2017-09-23 10:08:18 +02:00
Stephan c1e2625de0 Use ISqlContext 2017-09-22 19:19:28 +02:00
Stephan ee1941b9bf Refactor ISqlContext and SqlTemplates 2017-09-22 18:30:38 +02:00
Stephan c43bf6c741 Get tests green 2017-09-22 15:23:46 +02:00
Stephan dca3b74542 Refactor and fix tests 2017-09-20 20:06:46 +02:00
Stephan bcf3916e54 Refactor test options attribute 2017-09-19 18:47:07 +02:00
Stephan 1341a37f2b Cleanup Constants.ObjectTypes 2017-09-19 18:19:05 +02:00
Stephan 1308b4cc8b Import NPoco tests 2017-09-19 17:14:26 +02:00
Stephan 8721478fd3 Port 7.7 - WIP 2017-09-19 17:14:12 +02:00
Stephan ca0d5e365a Port 7.7 - WIP 2017-09-19 16:46:49 +02:00
Stephan 9ed6576908 Port 7.7 - WIP 2017-09-19 15:51:47 +02:00
Stephan d54658009c Port 7.7 - WIP 2017-09-18 15:33:13 +02:00
Stephan 9a28250a8d Port 7.7 - WIP 2017-09-15 18:22:19 +02:00
Stephan d9aaba192c Port 7.7 - WIP 2017-09-14 19:29:12 +02:00
Stephan 4634eb28e7 Port 7.7 - WIP 2017-09-14 11:41:46 +02:00
Stephan 37171d96bc Port 7.7 - WIP 2017-09-13 17:35:20 +02:00
Stephan e6de96cb90 Port 7.7 - WIP 2017-09-13 14:40:10 +02:00
Stephan 96c08f24ee Port 7.7 - WIP 2017-09-12 16:22:16 +02:00
Stephan 1c96df83cd Port 7.7 - WIP 2017-09-08 19:39:13 +02:00
Stephan 00d2ea928d Port 7.7 - WIP 2017-09-08 12:35:34 +02:00
Stephan 4dedd52e37 Port 7.7 - WIP 2017-08-26 17:39:23 +02:00
Stephan ac1e4bdfe3 Port 7.7 - WIP 2017-08-25 17:55:26 +02:00
Stephan 934d03e63f Port 7.7 - WIP 2017-08-24 21:24:14 +02:00
Stephan ab8fc33691 Port 7.7 - WIP 2017-08-14 18:21:48 +02:00
Stephan 1a40dd8d78 Build - remove Umbraco.MSBuild tasks 2017-08-09 11:19:11 +02:00
Stephan 9029d8dbd9 PropertyValueConverter - cleanup WIP 2017-07-31 11:27:29 +02:00
Stephan a0fe56ee7c Rename UmbracoExamine to Umbraco.Examine 2017-07-27 12:01:38 +02:00
Stephan 42a046b80c Cleanup AssemblyInfo 2017-07-27 11:18:41 +02:00
Stephan 4bfea6044a PropertyValueConverter - more WIP 2017-07-27 11:09:55 +02:00
Stephan 76569d58fe Cleanup DotSettings 2017-07-26 19:26:55 +02:00
Stephan db9eccc220 Cleanup versions 2017-07-25 18:06:28 +02:00
Stephan af25d5b0d1 Version 8.0.0-alpha0024 2017-07-25 15:27:18 +02:00
Stephan 83f84f05b9 PropertyValueConverter - refactoring WIP 2017-07-25 13:57:42 +02:00
Stephan 0e832d195a Benchmark dynamic ctors 2017-07-25 13:57:38 +02:00
Stephan c31cbf6b6d PropertySet - rename and refactor 2017-07-24 12:39:35 +02:00
Stephan 5d1c0d916c Build - remove Umbraco MSBuild tasks 2017-07-24 12:39:26 +02:00
Stephan 7dce104afb Build - fixes from v7 2017-07-21 10:08:06 +02:00
Stephan c76403077f Normalize cr/lf/tab 2017-07-20 11:21:28 +02:00
Stephan fa6c147a65 NuCache+Scope - caches 2017-07-19 19:59:46 +02:00
Stephan 2a9072609d Update AutoMapper to v6 2017-07-19 18:23:23 +02:00
Stephan 6098ba42a2 Update common dependencies 2017-07-19 18:23:14 +02:00
Stephan 1ff0338d35 NuCache+Scope - tests 2017-07-19 13:33:26 +02:00
Stephan d24ea3c95b NuCache+Scope - tests 2017-07-18 19:57:45 +02:00
Stephan c8052def7a NuCache+Scope add scope lock to ContentStore 2017-07-18 19:57:45 +02:00
Stephan 6d02ad3ce8 Build - fixes from v7 2017-07-18 19:57:45 +02:00
Stephan ea72b0a7b6 NuCache+Scope - more SnapDictionary scoping 2017-07-18 19:57:44 +02:00
Stephan b0303ca753 NuCache+Scope - add scope lock to SnapDictionary 2017-07-18 19:57:44 +02:00
Stephan ab42f8d6e0 NuCache - code cleanup 2017-07-18 19:57:44 +02:00
Stephan f668c25346 Cleanup 2017-07-18 19:57:44 +02:00
Stephan 291b4364c3 Scope/UnitOfWork db context and locking 2017-07-18 19:57:43 +02:00
Stephan 5897881ca8 CacheRefresherBase.This not .Instance 2017-07-11 19:21:13 +02:00
Stephan 41cc622260 Current.DistributedCache 2017-07-11 19:13:45 +02:00
Stephan 9619066a50 Persistence - cleanup 2017-07-11 16:29:44 +02:00
Stephan 5fe38d6aaf Build - Verify NuGet 2017-07-10 17:42:44 +02:00
Stephan 5c136483cc Fix NuSpec consistency 2017-07-10 12:30:53 +02:00
Stephan 35c979e33e Build - fix build.ps1, build docs 2017-07-09 18:46:10 +02:00
Stephan 59f4fd9713 Build - import build.ps1 2017-07-07 16:42:27 +02:00
Stephan 32d4d36847 Upgrade more dependencies 2017-06-30 21:39:26 +02:00
Stephan 534e11ae1e Upgrade ModelsBuilder 2017-06-30 21:29:30 +02:00
Stephan cf011a8366 Fix NuSpec 2017-06-30 21:29:14 +02:00
Stephan 410f3a32cc Fix build 2017-06-29 20:24:20 +02:00
Stephan 1cc6c91c52 Build Compat7 2017-06-29 19:31:26 +02:00
Stephan b120bb929a Fix dependencies 2017-06-29 19:23:14 +02:00
Stephan f6f00a2cda Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2017-06-29 17:26:38 +02:00
Stephan 10a7e4b5cf Fix tests 2017-06-29 17:22:28 +02:00
Claus f8274e4e99 Merge pull request #1439 from Mantus667/U4-7542
U4 7542
2017-06-29 14:28:04 +02:00
Stephan fc8bba188c Include NUnit3 Test Adapter 2017-06-29 08:21:00 +02:00
Stephan 9dee84a21d Fix build 2017-06-29 08:11:07 +02:00
Stephan 95bfc89ec0 Fix build 2017-06-28 21:27:56 +02:00
Stephan 7126234e80 Fix build 2017-06-28 21:11:02 +02:00
Stephan 777175c3fe v8-alpha0021 + migrations (wip) 2017-06-28 20:57:23 +02:00
Stephan 6c710dac93 Log4Net fixing 2017-06-28 20:57:23 +02:00
Stephan 8397fc8e1b Build with PS - fix 2017-06-28 20:57:22 +02:00
Stephan d37100e2d8 Build with PS 2017-06-28 13:38:06 +02:00
Stephan f85a688a0b Remove unwanted dependencies 2017-06-28 12:41:47 +02:00
Stephan 64b2a094f3 Fix WebProfiler for back-office 2017-06-28 12:33:48 +02:00
Stephan 45438c032e Upgrade to NUnit 3 2017-06-28 12:33:48 +02:00
Stephan a243af8a06 Consolidate and Update NuGet dependencies 2017-06-28 12:33:46 +02:00
Stephan 9e7b9ea5b5 From umbraco.dll to Umbraco.Web.dll 2017-06-28 12:33:45 +02:00
Stephan 687ccee100 Fix assembly version 2017-06-27 16:35:06 +02:00
Stephan faec8f7d94 Fixing tests - all green or ignored 2017-06-27 16:09:33 +02:00
Stephan e87be7ad9d Fixing tests - and all sorts of issues 2017-06-23 18:58:08 +02:00
Stephan 08ce8bc4dc Remove legacy projects 2017-06-20 12:12:29 +02:00
Stephan ddd89fa6e8 Remove legacy refs from Umbraco.Web 2017-06-20 11:00:09 +02:00
Stephan 3bf232ec3c Remove legacy refs from Umbraco.Web.UI 2017-06-19 09:41:58 +02:00
Stephan c369c93710 Remove legacy refs from UmbracoExamine 2017-06-19 09:25:23 +02:00
Stephan f62121d880 Move some tests 2017-06-14 09:56:14 +02:00
AndyButland 6861453166 Added localised texts and renamed some to less specific names when used across checks 2017-06-04 14:35:37 +02:00
AndyButland 5f263ad851 Added check for X-Content-Type-Options and refactored existing HTTP header check to use common base class. 2017-06-04 14:34:37 +02:00
Stephan e11b267ef4 Bugfix FileSystems vs Scopes 2017-06-02 14:00:09 +02:00
Stephan d0abbf0664 Better boot fail error reporting 2017-05-31 15:25:07 +02:00
Stephan e17417c49f Get rid of IScopeInternal, add IScopeContext 2017-05-31 10:57:22 +02:00
Stephan d3133abcab Get rid of Mandate 2017-05-31 10:10:47 +02:00
Stephan 1e62ea8b16 Get rid of IScopeProviderInternal 2017-05-30 19:41:37 +02:00
Stephan 2435449854 Break ScopeProvider vs FileSystems circular dependency 2017-05-30 18:59:15 +02:00
Stephan 7ea9c9c8e2 Move Web.Current to Composing 2017-05-30 18:13:11 +02:00
Stephan 1f5c47f029 Move Plugins to Composing 2017-05-30 15:56:30 +02:00
Stephan 81234cd702 Rename DI to Composing 2017-05-30 15:46:25 +02:00
Stephan b251d23a57 Refactor DI and type loading 2017-05-30 15:33:57 +02:00
Stephan d34a425dd1 porting 7.6@5c5baca into 8 2017-05-30 12:54:22 +02:00
Stephan 13ec3db2d3 fix 7.6-rc1 port 2017-05-24 12:25:59 +02:00
Stephan 9c58410d6c vs2017 csproj wip 2017-05-24 12:25:44 +02:00
Stephan 0be86efc50 remove old files 2017-05-24 12:25:40 +02:00
Stephan 8561d85f7a porting 7.6-rc1 into 8 2017-05-24 12:25:39 +02:00
Stephan ade6c2f057 All projects use C# 7.0 2017-04-20 19:16:41 +02:00
Stephan 53f1cb0b0a temp-build 2017-03-14 19:13:08 +01:00
Stephan 824cf30e2e PluginManager TLC from v7 2017-03-05 11:59:11 +01:00
Stephan 3576794a64 Cleanup DI 2016-12-19 17:37:18 +01:00
Stephan 9eb467f38a Fix tests 2016-12-16 18:45:41 +01:00
Stephan 7f39f7748f Persistence reorg, killed DatabaseContext 2016-12-16 17:56:10 +01:00
Stephan 49d54f497d Persistence reorg 2016-12-16 17:20:51 +01:00
Stephan 467f71e392 Tests reorg, kill TestWithApplicationBase 2016-12-16 11:25:20 +01:00
Stephan d17959d1a8 Tests reorg 2016-12-16 10:40:14 +01:00
Stephan 1276415ea4 Improve components, proper cache refresher ordering 2016-12-15 13:15:49 +01:00
Stephan 37ca66f42e Fix tests 2016-12-15 08:57:23 +01:00
Stephan 621eb94225 Fix database scope, get the application to run 2016-12-14 19:22:00 +01:00
Stephan a7e5759526 Fix tests and cleanup 2016-12-14 18:40:16 +01:00
Stephan 68f84908c4 Fix build 2016-12-14 14:19:45 +01:00
Stephan 07a05317ff Merge dev-v7.6 into dev-v8 2016-12-14 14:06:30 +01:00
Stephan 04066e901f Fix tests 2016-12-13 15:41:55 +01:00
Stephan a55ae8ba57 Refactor Query in repos 2016-12-01 08:46:58 +01:00
Stephan fe3b28261f Deal with FIXMEs in persistence layer 2016-11-30 19:23:20 +01:00
Stephan 800b60ad68 Deal with FIXMEs 2016-11-30 18:32:22 +01:00
Stephan 39f6d5dacc Cleanup MapperCollectionBuilder init 2016-11-30 18:30:34 +01:00
Stephan f4d9e73da7 Copy Compat7 DLL over to UI only in VS 2016-11-30 13:31:03 +01:00
Stephan 6313a65824 Define COMPAT7 in Release mode too, to copy the DLL over to UI 2016-11-30 11:59:55 +01:00
Stephan e29f8bedb5 Fix tests 2016-11-29 19:05:36 +01:00
Sebastiaan Janssen 677cc74a61 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2016-11-29 18:02:49 +01:00
Sebastiaan Janssen 4855466b38 Merge remote-tracking branch 'origin/dev-v7.6' into dev-v8
# Conflicts:
#	build/NuSpecs/UmbracoCms.Core.nuspec
#	src/Umbraco.Core/DatabaseContext.cs
#	src/Umbraco.Core/Persistence/DefaultDatabaseFactory.cs
#	src/Umbraco.Core/Persistence/PetaPoco.cs
#	src/Umbraco.Core/Persistence/UmbracoDatabase.cs
#	src/Umbraco.Core/Services/ContentTypeService.cs
#	src/Umbraco.Core/UmbracoApplicationBase.cs
#	src/Umbraco.Web.UI/packages.config
#	src/Umbraco.Web/Scheduling/LogScrubber.cs
#	src/Umbraco.Web/Scheduling/ScheduledPublishing.cs
#	src/Umbraco.Web/Search/ExamineEvents.cs
#	src/Umbraco.Web/Strategies/ServerRegistrationEventHandler.cs
#	src/Umbraco.Web/UI/Controls/UmbracoControl.cs
#	src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs
#	src/Umbraco.Web/Umbraco.Web.csproj
#	src/Umbraco.Web/UmbracoModule.cs
#	src/Umbraco.Web/packages.config
#	src/Umbraco.Web/umbraco.presentation/content.cs
#	src/Umbraco.Web/umbraco.presentation/library.cs
#	src/Umbraco.Web/umbraco.presentation/macro.cs
#	src/Umbraco.Web/umbraco.presentation/template.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadMacros.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/create/macroTasks.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/editMacro.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/insertMacro.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/plugins/tinymce3/insertMacro.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/settings/editTemplate.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/PreValueExtensions.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/RelationTypeExtensions.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/uQuery-Content.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/uQuery-DataTypes.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/uQuery-PreValues.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/uQuery-UmbracoObjectType.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/uQuery.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx.cs
#	src/UmbracoExamine/DataServices/UmbracoContentService.cs
#	src/umbraco.businesslogic/BasePages/BasePage.cs
#	src/umbraco.businesslogic/Log.cs
#	src/umbraco.businesslogic/User.cs
#	src/umbraco.cms/businesslogic/CMSNode.cs
#	src/umbraco.cms/businesslogic/Content.cs
#	src/umbraco.cms/businesslogic/ContentType.cs
#	src/umbraco.cms/businesslogic/Dictionary.cs
#	src/umbraco.cms/businesslogic/Packager/Package.cs
#	src/umbraco.cms/businesslogic/Property/Property.cs
#	src/umbraco.cms/businesslogic/RecycleBin.cs
#	src/umbraco.cms/businesslogic/Tags/Tag.cs
#	src/umbraco.cms/businesslogic/datatype/BaseDataType.cs
#	src/umbraco.cms/businesslogic/datatype/DataEditorSettingsStorage.cs
#	src/umbraco.cms/businesslogic/datatype/DefaultData.cs
#	src/umbraco.cms/businesslogic/datatype/DefaultPreValueEditor.cs
#	src/umbraco.cms/businesslogic/datatype/PreValue.cs
#	src/umbraco.cms/businesslogic/datatype/PreValues.cs
#	src/umbraco.cms/businesslogic/macro/macroPropertyType.cs
#	src/umbraco.cms/businesslogic/member/Member.cs
#	src/umbraco.cms/businesslogic/member/MemberGroup.cs
#	src/umbraco.cms/businesslogic/propertytype/propertytype.cs
#	src/umbraco.cms/businesslogic/relation/Relation.cs
#	src/umbraco.cms/businesslogic/relation/RelationType.cs
#	src/umbraco.cms/businesslogic/template/Template.cs
#	src/umbraco.cms/businesslogic/web/Document.cs
#	src/umbraco.cms/businesslogic/web/DocumentType.cs
#	src/umbraco.cms/businesslogic/workflow/Notification.cs
#	src/umbraco.cms/packages.config
#	src/umbraco.datalayer/SqlHelpers/MySql/MySqlInstaller.cs
#	src/umbraco.editorControls/BaseDataType.cs
#	src/umbraco.editorControls/DefaultData.cs
#	src/umbraco.editorControls/DefaultDataKeyValue.cs
#	src/umbraco.editorControls/DefaultPrevalueEditor.cs
#	src/umbraco.editorControls/KeyValuePrevalueEditor.cs
#	src/umbraco.editorControls/PickerRelations/PickerRelationsDataEditor.cs
#	src/umbraco.editorControls/PickerRelations/PickerRelationsEventHandler.cs
#	src/umbraco.editorControls/SettingControls/Pickers/Field.cs
#	src/umbraco.editorControls/imagecropper/PrevalueEditor.cs
#	src/umbraco.editorControls/macrocontainer/PrevalueEditor.cs
#	src/umbraco.editorControls/mediapicker/MediaPickerPrevalueEditor.cs
#	src/umbraco.editorControls/memberpicker/memberPicker.cs
#	src/umbraco.editorControls/packages.config
#	src/umbraco.editorControls/tags/PrevalueEditor.cs
#	src/umbraco.editorControls/tinymce/tinyMCEPreValueConfigurator.cs
#	src/umbraco.editorControls/ultimatepicker/ultimatePickerPrevalueEditor.cs
#	src/umbraco.editorControls/umbraco.editorControls.csproj
#	src/umbraco.editorControls/uploadfield/uploadFieldPreValue.cs
#	src/umbraco.editorControls/userControlWrapper/usercontrolPrevalueEditor.cs
2016-11-29 18:01:43 +01:00
Stephan 80503c92ce Fix cmsContentNu table creation during install 2016-11-29 11:34:51 +01:00
Stephan 581f3d791f Fix persistence layer refactoring 2016-11-29 11:31:38 +01:00
Stephan 6f91f8c2d7 Improve BootLoader logging in case of errors 2016-11-29 11:31:29 +01:00
Stephan feea4430f6 Fix dependencies 2016-11-29 10:48:47 +01:00
Stephan d407038141 Fix owin:AppStartup setting 2016-11-29 10:32:43 +01:00
Stephan a49af20275 More persistence layer refactoring 2016-11-29 10:31:25 +01:00
Stephan 74604c69f9 Fix tests after merge 2016-11-25 14:08:23 +01:00
Stephan 8e056aba66 Merge origin/dev-v7.6 into dev-v8-zbwip (builds, not tested) 2016-11-23 10:33:12 +01:00
Stephan 50f7af2823 Making tests less random! 2016-11-08 18:11:28 +01:00
Stephan 5d632b2426 More structuring & minor fixes 2016-11-08 17:38:05 +01:00
Stephan babf00f510 Keep structuring tests 2016-11-07 20:50:14 +01:00
Stephan 2967add41a Keep structuring tests 2016-11-07 19:12:09 +01:00
Stephan 224986d56c Trying to cleanup and refactor tests 2016-11-07 18:32:44 +01:00
Stephan b9d39db995 Refactor build, put tests in the right place 2016-11-05 17:57:29 +01:00
Stephan dc75b20bc6 Refactor build, tests configuration is always Debug 2016-11-05 15:40:45 +01:00
Stephan ed9abcf181 Refactor build, better to build tests 2016-11-05 15:33:27 +01:00
Stephan d33083a2e6 Refactor build, why build tests separately? 2016-11-05 13:44:03 +01:00
Stephan 8aa730d986 Ensure U4-8720 is properly merged into v8 2016-11-05 13:16:22 +01:00
Stephan 467ed87c3b Ensure U4-8729 is properly merged into v8 2016-11-05 10:32:09 +01:00
Stephan bbe1825847 Ensure U4-8663 is properly merged into v8 2016-11-05 10:23:39 +01:00
Stephan a28b916534 Fix NPoco stuff 2016-11-04 19:19:16 +01:00
Stephan c6e4e3b3ed Merge origin/dev-v7-deploy into dev-v8-zbwip 2016-11-04 18:40:42 +01:00
Stephan a4c3d3ec2d Not supposed to have jquery.unobtrusive-ajax.min.js anymore? 2016-11-04 12:36:41 +01:00
Stephan f825ed6bb4 Post-merge fixing (running) 2016-11-04 12:14:42 +01:00
Stephan 3f4306a05f Consolidate and update dependencies 2016-11-04 12:05:51 +01:00
Stephan b29bc66026 Post-merge fixing & refactoring (tests ok) 2016-11-04 11:36:58 +01:00
Stephan b26b415096 Merge origin/dev-v7-deploy into dev-v8-zbwip (builds) 2016-11-03 10:31:44 +01:00
Stephan d44ee715a9 Minor cleanup 2016-10-20 12:22:08 +02:00
Stephan ec68993448 Cleanup hybrid accessors 2016-10-20 10:52:11 +02:00
Stephan acca83a6b1 Boot time optimization 2016-10-19 15:35:27 +02:00
Stephan c9adb39946 Explicitely register persistence mappers 2016-10-19 15:35:26 +02:00
Stephan b7ef002da5 Cleanup SignalR 2016-10-19 15:35:25 +02:00
Stephan a1c11d17ea Fix typo 2016-10-19 13:56:58 +02:00
Stephan 42adb46f2a Move Examine entirely to its own component 2016-10-19 13:56:57 +02:00
Stephan 33a773a0b9 Cleanup UmbracoContext 2016-10-18 17:28:36 +02:00
Stephan 88593b0bf3 Deal with fixme in FacadeRouter 2016-10-18 16:16:46 +02:00
Stephan 0fdd94e489 More fixes in Core DI 2016-10-17 18:53:21 +02:00
Stephan 422fef84ff Minor fix in Core DI 2016-10-17 15:16:07 +02:00
Stephan d8ba9723c8 Fix Umbraco.Core dependencies 2016-10-17 12:44:31 +02:00
Stephan 60a172343f Build TLC 2016-10-17 12:40:43 +02:00
Stephan 92c55e302f Oops, U4-8626 colateral WIP 2016-10-17 11:00:19 +02:00
Stephan 341e817fd5 Get tests to run, troubleshoot 2016-10-17 11:00:18 +02:00
Stephan 422a9cf162 Stop LightInject scanning of assemblies 2016-10-17 11:00:15 +02:00
Stephan 3c698cbf8c Refactor UmbracoContext, PublishedContentRequest... 2016-10-17 11:00:14 +02:00
Stephan 187e5ed751 Add and use ArgumentNullOrEmptyException 2016-10-17 11:00:13 +02:00
Stephan a00ee8d275 Rename DependencyInjection into DI, cleanup components, compose 2016-10-17 11:00:12 +02:00
Stephan 172ae81924 Build TLC 2016-10-17 11:00:09 +02:00
Stephan 11e41ee07e Restoring most resolvers in Compat7 2016-10-17 11:00:08 +02:00
Stephan 3bee1d3bce Version 8.0.0-alpha0020 2016-10-17 11:00:07 +02:00
Stephan 7784dfbbcb Upgrade ModelsBuilder to 8.0.0-alpha0005 2016-09-19 16:33:49 +02:00
Stephan 3a34e1fb90 Introduce Umbraco.Compat7 2016-09-19 16:33:48 +02:00
Stephan e9648f8d7b Introduce SafeCallContext 2016-09-19 16:33:48 +02:00
Stephan 5c2232aa3b Refactor logging and profiling, boot reporting 2016-09-19 16:33:47 +02:00
Stephan 091816a2ea RIP IApplicationEventHandler 2016-09-19 16:33:45 +02:00
Stephan 9fb9472193 Refactor hybrid accessors for async 2016-09-19 16:33:44 +02:00
Stephan 0597eea72b Resvolution - Components, Runtime & Booting 2016-09-19 16:33:43 +02:00
Stephan 18f3a7fbab Resvolution - Runtime components, fixing, cleanup 2016-09-19 16:33:42 +02:00
Stephan f32d984fbb Resvolution - Components 2016-09-19 16:33:41 +02:00
Stephan e25e77f167 Resvolution - WIP running without Resolution 2016-09-19 16:33:40 +02:00
Stephan 9dcc6b285f Resvolution - Booting 2016-09-19 16:33:39 +02:00
Stephan 9949f07a46 Resvolution - Loggers & Booting 2016-09-19 16:33:38 +02:00
Stephan 3707db6c21 Resvolution - ShortStringHelperResolver 2016-09-19 16:33:37 +02:00
Stephan 376dec2fed Resvolution - CultureDictionaryFactoryResolver 2016-09-19 16:33:36 +02:00
Stephan 352e02f064 Resvolution - ServerRegistrarResolver 2016-09-19 16:33:36 +02:00
Stephan 9782fc7083 Resvolution - ServerMessengerResolver 2016-09-19 16:33:35 +02:00
Stephan d5dd17746d Resvolution - PublishedContentModelFactoryResolver 2016-09-19 16:33:34 +02:00
Stephan 784f290f7b Resvolution - DefaultRenderMvcControllerResolver 2016-09-19 16:33:33 +02:00
Stephan 3b46539c98 Resvolution - SiteDomainHelperResolver 2016-09-19 16:33:32 +02:00
Stephan ce5ba3be2a Resvolution - FacadeServiceResolver 2016-09-19 16:33:32 +02:00
Stephan 1535079ee7 Resvolution - Kill 2016-09-19 16:33:31 +02:00
Stephan c4a00dbfb2 Resvolution - ImageUrlProviderResolver 2016-09-19 16:33:30 +02:00
Stephan 7ba122f124 Resvolution - FilteredControllerFactoriesResolver 2016-09-19 16:33:29 +02:00
Stephan cd432ddc57 Resvolution - SurfaceControllerResolver 2016-09-19 16:33:28 +02:00
Stephan 169735dab9 Resvolution - UmbracoApiControllerResolver 2016-09-19 16:33:28 +02:00
Stephan cac14d57eb Resvolution - ThumbnailProvidersResolver 2016-09-19 16:33:27 +02:00
Stephan 39e46ae0d6 Resvolution - PropertyValueConvertersResolver 2016-09-19 16:33:26 +02:00
Stephan 9608e9ca97 Resvolution - Prepare 2016-09-19 16:33:25 +02:00
Stephan efcd1d5483 Resvolution - Kill 2016-09-19 16:33:24 +02:00
Stephan 1b9aa68bb2 Resvolution - PackageActionsResolver 2016-09-19 16:33:24 +02:00
Stephan 713484eb26 Resvolution - Prepare, Tests 2016-09-19 16:30:45 +02:00
Stephan 69ab8c7afd Resvolution - XsltExtensionsResolver 2016-09-19 16:30:44 +02:00
Stephan a45ffb71a4 Resvolution - ValidatorsResolver 2016-09-19 16:30:43 +02:00
Stephan b1d6757952 Resvolution - EditorValidationResolver 2016-09-19 16:30:42 +02:00
Stephan 6b17156fe8 Resvolution - ParameterEditorResolver 2016-09-19 16:30:41 +02:00
Stephan aa8b8c7736 Resvolution - MappingResolver 2016-09-19 16:30:40 +02:00
Stephan 648632bd36 Resvolution - ContentLastChanceFinderResolver 2016-09-19 16:30:39 +02:00
Stephan 55eb813536 Resvolution - PropertyEditorResolver 2016-09-19 16:30:38 +02:00
Stephan 33ed19da1b Resvolution - ContentFinderResolver 2016-09-19 16:30:37 +02:00
Stephan e49a3f4c72 Resvolution - MigrationResolver 2016-09-19 16:30:36 +02:00
Stephan bbd632f644 Resvolution - ActionResolver 2016-09-19 16:30:35 +02:00
Stephan d8d736edda Resvolution - HealthCheckResolver 2016-09-19 16:30:35 +02:00
Stephan ebaeb98a4a Resvolution - UrlProviderResolver 2016-09-19 16:30:34 +02:00
Stephan da685167f7 Resvolution - UrlSegmentProviderResolver 2016-09-19 16:30:33 +02:00
Stephan caf3c4280a Resvolution - CacheRefresherResolver 2016-09-19 16:30:32 +02:00
Stephan ac271dfc3f Resvolution - Refactor 2016-09-19 16:30:31 +02:00
Stephan 09c3894209 Resvolution - Refactor, UrlProviderResolver 2016-09-19 16:30:30 +02:00
Stephan bda2dbfb88 Resvolution - Refactor 2016-09-19 16:30:30 +02:00
Stephan 5ee6a8c47b Resvolution - UrlSegmentProviderResolver 2016-09-19 16:30:29 +02:00
Stephan f43967c7b1 Resvolution - Refactor 2016-09-19 16:30:28 +02:00
Stephan 4e368f8d42 Resvolution - UrlSegmentProvider 2016-09-19 16:30:27 +02:00
Stephan 0817ffdd28 Resvolution - Prepare 2016-09-19 16:30:26 +02:00
Stephan dbdff2e2c4 Resvolution - PluginManager 2016-09-19 16:30:25 +02:00
Stephan 10c202cb9e Bugfix - ioc and replacing singletons 2016-09-19 16:30:24 +02:00
Martin Blackwell afc2363163 Resolution for U4-8927 2016-08-31 16:22:41 +01:00
Kevin Jump ae110c1cae Honour ConfigSource when setting ConnectionString
Lets umbraco honour the configSource attribute on a connectionstrings
section, meaning you can install the connectionstring into a file other
than web.config.
2016-08-23 08:45:30 +01:00
David Brendel 25130065f7 U4-7542
Moved member type tree to settings
2016-08-17 17:22:53 +02:00
David Brendel a53a572335 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v8' into dev-v8 2016-08-17 17:07:30 +02:00
Neil Gaietto 3f1f67e323 U4-8822- Fixes Unpublish error with empty RTE by passing an empty value instead of null 2016-08-16 09:30:05 -04:00
Stephan e3343e6a2f UrlRedirect - bugfix 2016-08-15 13:08:00 +02:00
Stephan 17585e14e8 TEMP - HealthCheck and NuCache 2016-07-21 14:55:19 +02:00
Stephan 3fb2b97069 Fix lazy container resolver 2016-07-21 14:54:43 +02:00
Stephan 86968f218c Version 8.0.0-alpha0016 2016-07-21 11:07:34 +02:00
Stephan 4c74bd577a Fix build after rebase 2016-07-21 11:07:25 +02:00
Stephan 670659cca5 Feature - live SignalR preview - files 2016-07-21 10:31:29 +02:00
Stephan b7421537c5 Version 8.0.0-alpha0015 2016-07-21 10:27:04 +02:00
Stephan e5d3a777f2 Bugfix - Container resolvers & conflict issues 2016-07-21 10:27:04 +02:00
Stephan de68c02dfc Feature - live SignalR preview - nuget 2016-07-21 10:25:44 +02:00
Stephan bd2fa49581 Version 8.0.0-alpha0011 2016-07-21 10:25:44 +02:00
Stephan 61aa38a11f Bugfix - controller injection in Release mode 2016-07-21 10:23:29 +02:00
Stephan dbd7dc4252 Bugfix - views web.config 2016-07-21 10:23:29 +02:00
Stephan 9798e7d70c Bugfix - NuSpec for ModelsBuilder 2016-07-21 10:23:29 +02:00
Stephan 93539e4702 Bugfix - resolvers and ioc 2016-07-21 10:23:29 +02:00
Stephan 73185e93c2 NuCache - minor cleanup 2016-07-21 10:23:29 +02:00
Stephan bf22954abc Bugfix - MainDom must accept duplicate callback weights 2016-07-21 10:23:29 +02:00
Stephan 466438484a Upgrade ModelsBuilder to 8.0.0-alpha0003 2016-07-21 10:23:29 +02:00
Stephan 515b880e70 Bugfix - ContainerSingleObjectResolver 2016-07-21 10:23:29 +02:00
Stephan 6afe04837a Cleanup - PublishedContentModelFactory 2016-07-21 10:23:29 +02:00
Stephan 5497261eed Upgrade ModelsBuilder to 8.0.0-alpha0002 2016-07-21 10:23:29 +02:00
Stephan a43b47f9ba Upgrade ModelsBuilder to 8.0.0-alpha0001 2016-07-21 10:23:29 +02:00
Stephan 1f55f1c443 Version 8.0.0-alpha0007 2016-07-21 10:22:20 +02:00
Stephan 8f2522dd3e Fix NuSpec ranges 2016-07-21 10:21:53 +02:00
Stephan 9edffa010d Upgrade NuGet dependencies 2016-07-21 10:20:23 +02:00
Stephan 5cb3a3be2b Consolidate NuGet dependencies 2016-07-21 10:07:12 +02:00
Stephan 36c60c9b81 U4-8710 - from Umbraco.Field... try to re-implement 2016-07-21 10:03:11 +02:00
Stephan ffb30123cc U4-8710 - from Umbraco.Field, GetPropertyValue to Value 2016-07-21 10:03:11 +02:00
Stephan 9332335dff U4-8709 - refactor UmbracoViewPage, RenderModel 2016-07-21 10:03:11 +02:00
Stephan d2de66ab5c U4-8626 - kill typed queries 2016-07-21 10:03:11 +02:00
Stephan cdb1f29ec0 U4-8626 - kill dynamic support 2016-07-21 10:03:11 +02:00
Stephan 216329c096 Cleanup - kill IScopeContextAdapter, use accessors 2016-07-21 09:59:37 +02:00
Stephan f4ff50a03f Cleanup - file permission helper 2016-07-21 09:51:27 +02:00
Stephan a8bb18ecae Refactor - IPublishedContent, converters, fragments (cont) 2016-07-21 09:49:06 +02:00
Stephan 12e5372148 U4-8649 - apply to v8 2016-07-21 09:49:06 +02:00
Stephan d08412c0fe Refactor - IPublishedContent, converters, fragments 2016-07-21 09:37:40 +02:00
Stephan 78ab9c087d U4-7014 - merge IServerRegistrar2 into IServerRegistrar 2016-07-21 09:34:17 +02:00
Stephan a8975e6c41 NuCache - bugfix, must sort nodes when reloading from local db 2016-07-21 09:34:17 +02:00
Stephan f7e86eab3e Feature - live SignalR preview 2016-07-21 09:34:17 +02:00
Claus 71dc910623 Feature - live SignalR preview 2016-07-20 19:31:52 +02:00
Stephan a4a73d5586 Bugfix - container-based many resolvers 2016-07-20 19:31:30 +02:00
Stephan 0987b2d646 Cleanup - Attempt 2016-07-20 19:31:02 +02:00
Stephan be2d81154b U4-6674 - Kill ToContentSet, becomes ToIndexedArray 2016-07-20 19:30:42 +02:00
Stephan cfa91f000b Merge IPublishedContentWithKey into IPublishedContent 2016-07-20 19:30:42 +02:00
Stephan 9fe9f9d167 Cleanup - DisposableObject & disposing UmbracoContext 2016-07-20 19:30:15 +02:00
Stephan 5a839c3654 Cleanup - preview & forcing preview 2016-07-20 19:30:15 +02:00
Stephan e87e579e90 Cleanup - fix current UmbracoContext in async (but, really...) 2016-07-20 19:30:15 +02:00
Stephan df8dca6dee Cleanup - lazy PublishedPropertyType initialization 2016-07-20 19:28:17 +02:00
Stephan c0b9b050e9 Cleanup - fix broken stuff after cleanup 2016-07-20 19:28:17 +02:00
Stephan 74b8e5ba36 Cleanup - UmbracoContext and injection 2016-07-20 19:28:17 +02:00
Stephan ef013f9d3b Cleanup - Examine events 2016-07-20 19:23:09 +02:00
Stephan 5261a53a5d Cleanup - domains 2016-07-20 19:23:09 +02:00
Stephan fae688b896 Cleanup - membership 2016-07-20 19:23:09 +02:00
Stephan 2345d0c543 Cleanup - macros 2016-07-20 19:23:09 +02:00
Stephan f8d6c90193 Cleanup - ContentController ctor 2016-07-20 19:23:09 +02:00
Stephan ffeeb4f7d4 Cleanup - more distributed cache cleanup 2016-07-20 19:23:09 +02:00
Stephan ecadb918f2 Cleanup - no more stylesheet cache refresher 2016-07-20 19:23:09 +02:00
Stephan 0b041b28fa Cleanup - kill IsInRecycleBin and trust Trashed 2016-07-20 19:23:09 +02:00
Stephan 79195c5c7d Cleanup - minor stuff 2016-07-20 19:23:09 +02:00
Stephan 6e8fc27c13 U4-8397 - Cleanup server registration db & cache 2016-07-20 19:23:09 +02:00
Stephan f1fd918120 Cleanup - member (group) service 2016-07-20 19:23:09 +02:00
Stephan b2830f0c7d Cleanup - deleting non-empty containers 2016-07-20 19:23:09 +02:00
Stephan 88f9deda95 Cleanup - MediaService & ContentService 2016-07-20 19:23:09 +02:00
Stephan ccc701c298 Cleanup - TypeHelper 2016-07-20 19:23:09 +02:00
Stephan 2c12f4a82a Cleanup - VersionableRepositoryBase 2016-07-20 19:23:09 +02:00
Stephan b092c09c4b Cleanup - repository events = todo 2016-07-20 19:23:09 +02:00
Stephan 0c8cfbb7fa Cleanup - sub-repositories 2016-07-20 19:23:09 +02:00
Stephan ded5848e4c Cleanup - NPoco bulk inserts 2016-07-20 19:23:09 +02:00
Stephan d9fe474269 Cleanup - legacy template 2016-07-20 19:23:09 +02:00
Stephan f90f2e50c3 Cleanup - published member 2016-07-20 19:23:09 +02:00
Stephan c85626a4f1 Facade - cleanup 2016-07-20 19:23:09 +02:00
Stephan 03107dc82b Facade - use NoCache policy when reloading 2016-07-20 19:23:09 +02:00
Stephan 7c5542dca3 Facade - Cleanup access to 'current' 2016-07-20 19:23:09 +02:00
Stephan bc45dd8d6a U4-8536 - removing db.GetTransaction wherever possible 2016-07-20 19:22:26 +02:00
Stephan f584404324 U4-8551 - import NuCache code 2016-07-20 18:43:53 +02:00
Stephan 6e84e085c1 Merge branch dev-v8 into temp-u4-8497 2016-07-20 18:04:41 +02:00
Sebastiaan Janssen fe61553243 Also restore Examine packages to get it in the correct path for Build.bat 2016-07-20 17:41:56 +02:00
Stephan a0f2d63451 Fix build batch (is it real? take11) 2016-07-20 17:11:34 +02:00
Stephan 4a98c63de1 Fix build batch (is it real? take10) 2016-07-20 16:53:29 +02:00
Stephan 81341f7c32 Fix build batch (is it real? take9) 2016-07-20 16:36:54 +02:00
Stephan 21bf1c9c42 Fix build batch (is it real? take8) 2016-07-20 16:29:50 +02:00
Stephan 4ec0038b71 Fix build batch (is it real? take7) 2016-07-20 16:24:42 +02:00
Stephan 3fe84472a6 Fix build batch (is it real? take6) 2016-07-20 16:23:22 +02:00
Stephan 6528e6a204 Fix build batch (is it real? take5) 2016-07-20 16:03:12 +02:00
Stephan 77a38a6a32 Fix build batch (is it real? take4) 2016-07-20 16:01:11 +02:00
Stephan 16fb2cee26 Fix build batch (is it real? take3) 2016-07-20 15:37:14 +02:00
Stephan 247d9f8029 Fix build batch (is it real? take2) 2016-07-20 15:25:49 +02:00
Stephan f4aad94505 Fix build batch (is it real?) 2016-07-20 15:10:33 +02:00
Stephan f9fd8b67b1 Fix build after merge 2016-07-20 13:33:47 +02:00
Stephan 5df967355a Fix appveyor.yml (need blank lines) 2016-07-20 12:42:20 +02:00
Stephan c37effa668 Fix appveyor.yml (need blank lines) 2016-07-20 12:41:19 +02:00
Stephan ecee4d3702 Merge branch dev-v8 into temp-u4-8497 2016-07-20 12:38:57 +02:00
Stephan d6462370fc Fix after merge 2016-07-20 11:31:20 +02:00
Stephan c9152e3aca Fix build after merge 2016-07-18 15:00:08 +02:00
Stephan 77c2766d55 Merge branch origin/dev-v7 into dev-v8 2016-07-18 14:42:06 +02:00
Stephan d04efbf5a4 Retarget migrations after merge 2016-07-18 10:54:27 +02:00
Stephan 2594fa423f Cleanup after merge 2016-07-18 10:50:41 +02:00
Stephan a66cf484e8 Fix more tests after merge 2016-07-18 10:37:37 +02:00
Stephan 554b943931 Fix tests after merge 2016-07-08 19:20:57 +02:00
Stephan e19471fea7 Build - cleanup build.bat 2016-07-08 19:10:34 +02:00
Stephan be056869f0 Fix build after merge 2016-07-08 18:31:37 +02:00
Stephan 3c7245f9ba Merge origin/dev-v7 into dev-v8 2016-07-08 16:32:06 +02:00
Stephan f8b315dad0 Build - fix warnings 2016-07-08 14:17:49 +02:00
Stephan 9792aebf00 Build - fix InstallGit.cmd 2016-07-08 14:16:36 +02:00
Sebastiaan Janssen 7d6cbee9e6 Add msbuild.log to artifacts so we can easily figure out build errors if they occur 2016-07-08 14:15:03 +02:00
Stephan 263109d6ad Can we fix build.bat? 2016-07-08 13:47:32 +02:00
Sebastiaan Janssen 45e48c483d Makes the build of the Tests project quiet too
Do not PAUSE if the build fails, the build server will get stuck or an hour
2016-07-08 13:47:19 +02:00
Sebastiaan Janssen 423df156c1 Makes the build output only show warnings and errors so it's easier to pinpoint problems 2016-07-08 13:47:07 +02:00
Stephan 853e2c7888 Build - cleanup InstallGit 2016-07-08 13:46:23 +02:00
Sebastiaan Janssen 54009a04c3 Makes sense, recent commit removed one of these classes 2016-06-21 17:58:04 +02:00
Stephan f54022c5d2 Fix exception in DefaultDatabaseFactory during installs 2016-06-21 17:38:08 +02:00
Sebastiaan Janssen f58c9b5056 Merge branch 'u4-8191' of https://github.com/AndyButland/Umbraco-CMS into AndyButland-u4-8191
Conflicts:
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/UserPermissions.cs
2016-06-21 17:33:57 +02:00
Stephan a512880855 U4-8553 - NPoco 3.3.4 2016-06-20 16:42:25 +02:00
Kamil Jakubczak f1d37a5072 removes a overflow: hidden which decrease update-tree-layer performance
removes a overflow: hidden which decrease update-tree-layer performance.
If it is required it should be solved differently due to the possibility
of having plenty items in div that has this class.
2016-06-09 15:01:26 +02:00
Stephan bc0a4a8b05 U4-8497 - don't load content cache before running upgrades 2016-06-07 16:42:24 +02:00
Stephan f9dc594e25 Merge branch 'dev-v8' into temp-u4-8497 2016-06-02 15:15:31 +02:00
Shannon Deminick 9959d58fbc Merge pull request #1300 from umbraco/temp-u4-8400
U4-8400 (part) - cleanup repository cache policies
2016-06-02 14:51:29 +02:00
Stephan bc375e5fc2 U4-8400 - kill repository cache policy factories 2016-06-02 10:44:06 +02:00
Stephan 743a1451f5 U4-8400 - cleanup and document repository cache policies 2016-06-02 10:36:19 +02:00
Stephan 90500af915 Merge dev-v8 into temp-u4-8497 2016-06-02 10:03:14 +02:00
Sebastiaan Janssen 4ba1692b49 Remove some debug info an unnecessary path modification 2016-06-01 22:34:38 +02:00
Sebastiaan Janssen 8ec981f72e Missing CDF dependency 2016-06-01 22:04:09 +02:00
Sebastiaan Janssen 3314d4ccdf Trying to get datalayer to build 2016-06-01 21:56:43 +02:00
Sebastiaan Janssen 5732d12f8d Seems like we're gettting there.. 2016-06-01 14:08:21 +02:00
Sebastiaan Janssen 988b0485b9 Oops, forgot to remove experiments 2016-06-01 14:02:09 +02:00
Sebastiaan Janssen e627b55ec7 Okay, let's put the packages where AppVeyor is actually looking for them then 2016-06-01 13:55:58 +02:00
Sebastiaan Janssen 3b74e660a7 Is this path supported? 2016-06-01 13:45:59 +02:00
Sebastiaan Janssen 518e266832 AppVeyor recommends this method for doing package restore 2016-06-01 13:27:46 +02:00
Shannon bad6785ac6 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2016-06-01 13:24:23 +02:00
Shannon 1c82d8ac4e argh! no more extension methods that depend on singletons 2016-06-01 13:24:12 +02:00
Sebastiaan Janssen 570fd86919 Letting this restore be verbose for a minute because I think it has some problems 2016-06-01 13:16:18 +02:00
Shannon Deminick f5f7cf8d63 Merge pull request #1277 from umbraco/temp-u4-8447
U4-8447
2016-06-01 12:57:01 +02:00
Sebastiaan Janssen 0f0718db80 Hopefully fixes the build 2016-06-01 12:51:08 +02:00
Sebastiaan Janssen 347732463f Continued from PR 1254 (#1296)
* Changes Umbraco.Core to use project.json for package references, instead of nuget (next is the Web proj)

Changes the build to use correct version of MSBuild
Updates the Web.UI project to reference Microsoft.CodeDom.Providers.DotNetCompilerPlatform so that we can use c# 6 in views
Updates all other projects to use auto-package restore instead of the legacy nuget target restore

* Updates Umbraco.Web to use project.json - removes the lock file (will ignore)

* updates ignore to ignore lock files

* forgot about the tests project, removed the old nuget targets

* Need to restore some packages before we can build

* Update to latest nuget.exe which understands project.json

* This happened automatically, I'm guessing new NuGet removed these

* Correctly restore all necessary packages

* Fix merge problems and package version dependency conflicts

* Removes unnecessary file

* Removes unnecessary file

* Some things didn't make it during the merge, re-applying

* And even more changes that got reverted

* And even more changes that got reverted
2016-06-01 12:37:52 +02:00
Shannon b7985cb2c8 Merge remote-tracking branch 'origin/dev-v7' into dev-v8
# Conflicts:
#	src/Umbraco.Web/PropertyEditors/FileUploadPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/ImageCropperPropertyEditor.cs
2016-06-01 12:20:12 +02:00
Shannon 11552da6ec reverts change made to remove the 'child container' - this actually works well and doesn't interfere with the main container's scope mananger. Ignores the one failing test, need to ask Stephan 2016-06-01 00:36:10 +02:00
Shannon df9160b3cd Removes the 'Child Container' idea (that was bad and would consume lots of mem) and instead we use Scopes. Ensures that the app event handlers are creating during a single Scope operation in the CoreBootManager. Changes MigrationBase and all sub-classes to have an IMigrationContext as a ctor param. Updates the MigrationResolver to resolve Migration instances with the passed in IMigrationContext value. Simplifies MigrationBase since now we know we have a context to work with, there's no need to GetUp/GetDown Expression methods. Updates the MigrationRunner to use the MigrationContext instead of creating one itself. 2016-05-31 23:29:15 +02:00
Shannon a1b6240299 Fixes more merge issues and tests, removes lucene dependency from core (not sure why it was there), creates IExamineIndexCollectionAccessor for better testing for classes that require access to the indexers like the GridPropertyEditor. 2016-05-31 19:24:33 +02:00
Shannon c025dd463f Fixes up merging issues, bit of manual process with this one 2016-05-31 17:24:40 +02:00
Shannon 6a5a736877 Merge remote-tracking branch 'origin/dev-v7' into dev-v8
# Conflicts:
#	.gitignore
#	build/UmbracoVersion.txt
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs
#	src/Umbraco.Core/Services/DataTypeService.cs
#	src/Umbraco.Core/Xml/XmlHelper.cs
#	src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs
#	src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
#	src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
#	src/Umbraco.Web.UI/config/ClientDependency.config
#	src/Umbraco.Web.UI/umbraco/config/lang/da.xml
#	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/ImageCropperPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/LabelPropertyEditor.cs
#	src/Umbraco.Web/PropertyEditors/MultipleMediaPickerPropertyEditor.cs
#	src/Umbraco.Web/Routing/ContentFinderByLegacy404.cs
#	src/Umbraco.Web/Routing/NotFoundHandlerHelper.cs
#	src/Umbraco.Web/Umbraco.Web.csproj
#	src/Umbraco.Web/umbraco.presentation/content.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/create/DLRScriptingTasks.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/create/language.ascx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Python/editPython.aspx.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/sendToTranslation.aspx.cs
#	src/umbraco.cms/businesslogic/Packager/Installer.cs
#	src/umbraco.cms/businesslogic/translation/Translation.cs
2016-05-31 16:00:32 +02:00
Shannon 2f44241439 fixes test 2016-05-31 15:17:00 +02:00
Stephan 18351b57b4 Consolidate on NewtonSoft.Json 8.0.3 2016-05-31 11:28:33 +02:00
Stephan ec4373a4df Upgraded to NPoco 3.3.3 2016-05-31 11:27:51 +02:00
Stephan a71894f1ec Merge branch 'temp-u4-8447' into temp-u4-8497 2016-05-30 18:45:47 +02:00
Stephan 7a9ff1fc3b U4-8447 - bugfix 2016-05-30 18:45:33 +02:00
Stephan 669d64dff4 Merge temp-u4-8447 into temp-u4-8497 2016-05-30 18:38:47 +02:00
Stephan a514ffc258 U4-8447 - fix xml serialization 2016-05-30 18:32:32 +02:00
Stephan 8c33a31f37 U4-8447 - fix services setup 2016-05-30 17:56:25 +02:00
Stephan ba7638793f U4-8497 - fixing... tests green 2016-05-27 12:48:38 +02:00
Stephan 2e4e8a3fbc U4-8497 - fixing tests... 2016-05-26 19:20:33 +02:00
Stephan 23ce1e5b6e U4-8447 - prepare for NuCache (fixing, now builds) 2016-05-26 18:48:35 +02:00
Stephan 06574b8b40 U4-8447 - prepare for NuCache (work-in-progress) 2016-05-26 17:12:04 +02:00
Stephan 8682940efb Merge branch 'dev-v8' into temp-u4-8447 2016-05-23 13:58:34 +02:00
Stephan 6b88714cdc U4-8447 - MediaService & MemberService 2016-05-23 13:56:59 +02:00
Stephan 4d852102e8 Refactor tests 2016-05-23 13:56:58 +02:00
Stephan 4870c228dc Fix tests 2016-05-20 11:24:30 +02:00
Shannon 1d2b629b66 Removes legacy MemberGroup business logic. 2016-05-19 19:44:46 +02:00
Shannon 23394b4eff Removes Relation and RelationType legacy business logic classes! 2016-05-19 19:36:30 +02:00
Shannon db1cac6086 Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2016-05-19 19:21:00 +02:00
Shannon b268f76aa9 Removes umbraco.cms.businesslogic.Dictionary !!! 2016-05-19 19:20:49 +02:00
Stephan a8850f8c0b Merge pull request #1247 from umbraco/dev-v8-ExamineV2
Examine v2 integration
2016-05-19 18:52:31 +02:00
Stephan 21fb67654b Merge dev-v8 into dev-v8-ExamineV2 2016-05-19 18:52:09 +02:00
Stephan 63a86704b6 Cleanup 2016-05-19 18:50:05 +02:00
Stephan b3a83e274f Fix tests 2016-05-19 18:42:07 +02:00
Shannon 9ba095508e Removes MySql stuff from the old data layer project since we need to remove this whole project anyways and these aren't used 2016-05-19 18:41:44 +02:00
Shannon 7621006200 updates trees.Release.config with correct tree 2016-05-19 18:17:49 +02:00
Shannon 1d8e0eb280 Merge branch 'u4-8192' of https://github.com/AndyButland/Umbraco-CMS into AndyButland-u4-8192
# Conflicts:
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2016-05-19 18:16:47 +02:00
Stephan ed40ce0695 Merge branch 'dev-v8' into dev-v8-ExamineV2 2016-05-19 18:13:19 +02:00
Shannon c53d074aaf Merge branch 'U4-8195' of https://github.com/Mantus667/Umbraco-CMS into Mantus667-U4-8195
# Conflicts:
#	src/Umbraco.Web.UI/config/trees.Release.config
#	src/Umbraco.Web.UI/config/trees.config
#	src/Umbraco.Web/Umbraco.Web.csproj
2016-05-19 17:56:11 +02:00
Shannon b91da2949b Merge remote-tracking branch 'origin/dev-v8' into dev-v8-ExamineV2 2016-05-19 17:21:43 +02:00
Shannon 4ce9964019 fix merge issues 2016-05-19 17:21:34 +02:00
Stephan b7ed3b4fe2 Fix tests 2016-05-19 17:17:02 +02:00
Stephan dd29e692d6 minor scheduled publish fixes 2016-05-19 17:00:06 +02:00
Shannon f9ba3fe76f Merge branch 'dev-v8' into dev-v8-ExamineV2
# Conflicts:
#	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
#	src/Umbraco.Core/Plugins/PluginManager.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/IContentService.cs
#	src/Umbraco.Core/Umbraco.Core.csproj
#	src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs
#	src/Umbraco.Tests/Services/ContentServiceTests.cs
#	src/Umbraco.Tests/Services/MediaServiceTests.cs
#	src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs
#	src/Umbraco.Web.UI/config/ClientDependency.config
#	src/Umbraco.Web/Editors/ContentController.cs
#	src/UmbracoExamine/UmbracoContentIndexer.cs
2016-05-19 16:32:22 +02:00
Shannon 6975642a98 puts the scheduled publish in a uow + lock 2016-05-19 15:45:46 +02:00
Shannon Deminick 0ad2a2bfa4 Merge pull request #1219 from MangoPieface/PublicAccessServiceExtension-HasAccessRemoval
U4-8199 - Removal of the internal unused obsolete HasAccess method in PublicAccessServiceExtensions.cs
2016-05-19 11:18:56 +02:00
Shannon 8127731f72 Namespace and file cleanup - Profiling --> Logging, root cache stuff moved to Cache, XmlHelper --> Xml, TypeFinder, etc.. --> Plugins 2016-05-18 23:34:56 +02:00
Shannon 7fb1b4fb3b Updates all cache refreshers to use ctor injection, no more applicationcontext singleton usages 2016-05-18 18:44:08 +02:00
Shannon 2880190b6f Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2016-05-18 18:13:04 +02:00
Shannon f51a98435f removes LegacyTransientObjectsResolver (no longer needed), makes CacheRefreshersResolver into a container resolver so we can ctor inject into them (these should NOT be transient instances), Fixes more extension methods that rely on ApplicationContext.Current which exposes a few issues like DescendantsAndSelf since that was only getting them for content types! 2016-05-18 18:12:41 +02:00
Stephan 57ee598fc5 Make sure to dispose UnitOfWork in tests 2016-05-18 16:53:32 +02:00
Shannon 885595b1e6 Hides and Obsoletes crappy extension methods that rely on ApplicationContext.Current and updates all usages to not use them - this is most important because the services were using extensions methods that go back out to the ApplicationContext.Current (booo!) 2016-05-18 16:06:59 +02:00
Shannon e20c1cd0bb U4-8465 Remove Core.Publishing namespace and classes 2016-05-18 13:10:36 +02:00
Stephan ddf38407d8 U4-4847 Refactor ContentService (#1266)
* U4-4748 - refactor Content-, Media- and MemberTypeRepository

* Cleanup Attempt

* Cleanup OperationStatus

* U4-4748 - refactor Content-, Media- and MemberTypeService

* U4-4748 - cleanup locking

* U4-4748 - refactor Content-, Media- and MemberRepository

* U4-4748 - refactor ContentService (in progress)

* U4-4748 - all unit of work must be completed

* U4-4748 - refactor locks, fix tests

* U4-4748 - deal with fixmes

* U4-4748 - lock table migration

* Update UmbracoVersion

* Fix AuthorizeUpgrade

* U4-4748 - cleanup+bugfix lock objects

* U4-4748 - bugfix

* updates a string interpolation
2016-05-18 10:55:19 +02:00
Stephan 12f4873c90 Kill IHttpContextAccessor 2016-05-17 19:41:02 +02:00
Stephan 9ac2c94373 post-merge + bugfixing 2016-05-17 18:56:33 +02:00
Stephan edda877fd6 Merge origin/dev-v8 into dev-v8-ExamineV2 2016-05-17 13:21:47 +02:00
Stephan 04ae479476 Fix build.bat so it supports C# 6 2016-05-13 14:16:47 +02:00
Stephan 4891bbf9a4 Update UmbracoVersion 2016-05-13 14:16:27 +02:00
David Brendel 75613fa60e Merge remote-tracking branch 'refs/remotes/umbraco/dev-v8' into dev-v8 2016-05-12 20:31:30 +02:00
Stephan 9458fad190 Upgrade to NPoco 3.3.0-beta3 2016-05-10 08:48:49 +02:00
Shannon 1a522f2136 Removes Auditing namespace 2016-05-09 10:10:26 +02:00
Shannon 648fbdd3f3 moves packaging models to models/packaging 2016-05-09 10:05:55 +02:00
AndyButland 1e0602bc45 Updated project reference to deleted file 2016-05-08 08:52:14 +02:00
AndyButland aed1986520 Removed legacy tree 2016-05-08 08:06:11 +02:00
AndyButland 1b4d7c3733 Migrated user permissions tree to new format; updated icon to indicate single user being acted on 2016-05-07 23:52:47 +02:00
Stephan aee7973c11 IScopeContextAdapter uses LogicalCallContext 2016-05-04 08:31:21 +02:00
Shannon Deminick 892935469d Merge pull request #1251 from umbraco/dev-v8-context
From IScopeContext/Factory to IScopeContextAdapter
2016-05-03 22:33:48 +02:00
Shannon a2bc99fabd Removes AmbientContext 2016-05-03 22:33:29 +02:00
Shannon 4619b7b67b fixes merge/rebase 2016-05-03 22:30:45 +02:00
Stephan 0b1f12c823 From IScopeContext/Factory to IScopeContextAdapter 2016-05-03 22:23:42 +02:00
Shannon Deminick 5d72bcdc86 Merge pull request #1249 from umbraco/temp-u4-6147
U4-6147
2016-05-03 22:19:53 +02:00
Stephan 4f0718ef3f U4-6147 - cleanup 2016-05-03 15:50:10 +02:00
Shannon c25f12b1cd Updates all examine refs - uses Nuget 2016-05-03 13:00:55 +02:00
Stephan 715e03d1c5 U4-6147 - fix tests 2016-05-03 11:15:04 +02:00
Stephan 94c82c7cf7 U4-6147 - cleanup units of work 2016-05-03 11:14:55 +02:00
Stephan 8f820d2ecf Merge dev-v8 into temp-u4-6147 2016-05-03 09:07:36 +02:00
Shannon f90a9c2e5e fixes unit tests, all should pass now 2016-05-02 18:29:35 +02:00
Shannon 3c446cbf82 Adds IQueryFactory property to IDatabaseFactory, DatabaseContext.
Changes exposed Query<T> to correct IQuery<T>
Creates interface for QueryFactory: IQueryFactory
Updates all repositories with these changes
2016-05-02 15:38:45 +02:00
Stephan dbaede43af U4-6147 - GetUnitOfWork becomes CreateUnitOfWork 2016-05-02 12:24:13 +02:00
Stephan dc0456e108 U4-6147 - stop injecting RepositoryFactory into services (it's in uow) 2016-05-02 12:18:25 +02:00
Stephan be32448426 U4-6147 - cleanup persistence units of work (in progress) 2016-05-02 12:12:21 +02:00
Stephan 578cb6eafb U4-6147 - repositories are not disposable (in progress) 2016-04-29 19:14:02 +02:00
Shannon 8ab482dbfb Merge branch 'dev-v8' into dev-v8-ExamineV2
Conflicts:
	src/Umbraco.Tests/packages.config
	src/Umbraco.Web.UI/config/ClientDependency.config
2016-04-29 17:12:59 +02:00
Shannon a5cbca348f re-delete files ... argh thanks gitkraken. 2016-04-29 17:11:51 +02:00
Shannon bd31dd6caf Fixes issue with ThreadStatic db
Uses IScopeContext which wraps either HttpContext or CallContext which is created/injected via IOC factory.
2016-04-29 17:08:34 +02:00
Shannon 5c24a3a734 Fixes AuthorizeUpgrade HtmlHelper reference 2016-04-29 15:22:07 +02:00
Shannon Deminick e0a5ad5236 Merge pull request #1226 from umbraco/dev-v8-persistclr
Core.Persistence - post-NPoco cleanup & refactor
2016-04-29 15:18:33 +02:00
Shannon 74b83f30c3 Gets all tests passing and updates content/media svc/repos with filters
The content/media services & repos are now consistent with their filter, filterargs parameters and tests have been updated to support this, we can now pass in more robust filters to these methods which is required by Examine to get published content from the db.
2016-04-29 10:50:03 +02:00
Stephan 8ab61039ed U4-6147 - refactor RepositoryFactory and all IUnitOfWork (in progress) 2016-04-29 09:10:00 +02:00
Shannon 209e9373d0 Rebuild on startup working
Gets indexes rebuilding at startup, gets indexes rebuilding with published content which required some updates to the content service/repo to pass in a more robust filter when paging. Added more tasks to fix up more of the examine parts like the local storage sync which currently just throws exceptions.
2016-04-29 00:50:26 +02:00
Shannon 734f5f35dc Fixes tests 2016-04-28 22:12:55 +02:00
Shannon cba64aeb49 cleans up the UmbracoExamineSearcher class
makes sure the temp storage stuff works - but this will be only configuration based searchers (legacy)
2016-04-28 20:19:38 +02:00
Shannon 0f2c59b735 Obsolete code updated to correct usages
Updates most of the code in the umbraco examine indexers to use current (non deprecated examine code)
2016-04-28 18:39:52 +02:00
Stephan b0a33844b1 Fixing tests - database 2016-04-27 19:59:01 +02:00
Shannon f992c47111 all tests passing 2016-04-27 16:37:57 +02:00
Shannon e42ac644a3 Merge branch 'dev-v8' into dev-v8-ExamineV2
Conflicts:
	src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
	src/UmbracoExamine/DataServices/PropertyAliasDto.cs
	src/UmbracoExamine/packages.config
2016-04-27 14:30:10 +02:00
Shannon 0f2f439477 Updates examine, fixes more tests, ensures the correct FieldDefinitions are set 2016-04-27 12:58:43 +02:00
Shannon 589b80ca03 Gets all index tests passing 2016-04-26 17:29:40 +02:00
Shannon 2de8f5117c Adds parent id option, finally getting some examine tests passing 2016-04-26 15:48:25 +02:00
Shannon af95e4bb29 a little more integration, working on getting unit tests passing 2016-04-24 11:16:48 +02:00
Shannon 46e714208d More refactoring with new examine 2 version, it builds again but nothing will quite work yet, now to work on the unit tests. 2016-04-23 18:57:13 +02:00
Shannon 4491d033e9 it builds! ... now to fix a bunch more. 2016-04-22 23:23:27 +02:00
Stephan ae7b93609b Fixing tests - application context 2016-04-22 12:03:30 +02:00
Stephan 1f85f51ecd Fixing tests - services test object 2016-04-22 09:58:02 +02:00
Stephan 3daf2bf9a0 Fixing test - MultiValuePropertyEditorTests, FindingMigrationsTest 2016-04-22 09:34:12 +02:00
Shannon 1f2838cb0a fixes merge issues 2016-04-21 14:38:39 +02:00
Shannon 2027cd7b07 Merge branch 'dev-v8' into dev-v8-persistclr
Conflicts:
	src/Umbraco.Core/Persistence/UmbracoDatabase.cs
	src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
	src/Umbraco.Tests/Umbraco.Tests.csproj
2016-04-21 12:19:14 +02:00
Shannon Deminick afc78317ca Merge pull request #1236 from umbraco/temp-u4-8354
U4-8354 - fix v8 tests
2016-04-21 12:15:55 +02:00
Shannon 081d6ecc07 adds notes 2016-04-21 12:15:39 +02:00
Shannon 55ae0d3af6 Ensure the correct services are injected in to property editors so they are not using singletons 2016-04-21 11:38:43 +02:00
Stephan 23817cdce5 Fixing tests - MigrationStartupHandler is IDisposable 2016-04-20 22:52:48 +02:00
Stephan 07b410459f Fixing tests - file systems 2016-04-20 22:52:48 +02:00
Stephan 4e702c7c79 Fixing tests - kill KegacyShortStringHelper 2016-04-20 22:52:48 +02:00
Stephan 41f6012eb3 Fixing tests - ServiceContext 2016-04-20 22:52:48 +02:00
Stephan bf51be950f Fixing tests - CoreBootManager 2016-04-20 22:52:48 +02:00
Stephan 7e8b4d13a7 Fixing tests - ValueListPreValueEditor 2016-04-20 22:52:48 +02:00
Stephan b04e070757 Fixing tests - Plugin and TypeFinder 2016-04-20 22:52:48 +02:00
Shannon 3ef204a46f Merge remote-tracking branch 'origin/dev-v7' into dev-v8
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
	src/Umbraco.Core/Persistence/UmbracoDatabase.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
2016-04-20 15:53:13 +02:00
Shannon 289d5f5741 removes the need for the custom regex for the order by since we no longer have an order by sub-query 2016-04-20 12:51:42 +02:00
Shannon f149ca9c76 Fixes SqlCe and MySQL sorting on custom properties for list view, this also makes the query work much better and there is no longer a requirement for a sub-query in the order by statement. 2016-04-20 12:50:52 +02:00
Stephan 3b612bf346 Core.Persistence - more cleanup 2016-04-14 18:20:07 +02:00
Stephan 5b935dbd90 Core.Persistence - post-cleanup debugging 2016-04-13 21:21:20 +02:00
Stephan 01d46944b7 Core.Persistence - post-cleanup debugging 2016-04-13 18:27:39 +02:00
Stephan e6f6444034 Core.Persistence - post-cleanup debugging 2016-04-13 17:33:25 +02:00
Stephan aceaf4b15d Core.Persistence - massive cleanup 2016-04-13 17:33:09 +02:00
Shannon b8d8c9e59a fixes merge - but the sorting on custom field will not currently work, need to fix that now. 2016-04-13 16:41:45 +02:00
Shannon df016813ea Merge remote-tracking branch 'origin/dev-v7.5' into dev-v8
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Core/Services/MediaService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
	src/Umbraco.Web/Editors/AuthenticationController.cs
	src/Umbraco.Web/Editors/BackOfficeController.cs
	src/UmbracoExamine/UmbracoMemberIndexer.cs
	src/umbraco.businesslogic/UmbracoSettings.cs
2016-04-13 16:18:58 +02:00
Shannon 43f0d77c10 Merge remote-tracking branch 'origin/dev-v7' into dev-v8 2016-04-13 16:09:14 +02:00
Shannon a3158b48ac fix merge 2016-04-12 15:18:14 +02:00
Shannon 06ce26989a Merge remote-tracking branch 'origin/dev-v7' into dev-v8
Conflicts:
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web/PropertyEditors/RelatedLinksPropertyEditor.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/WebApi/Filters/DisableBrowserCacheAttribute.cs
2016-04-12 15:16:19 +02:00
Stephan 365a01a476 From PetaPoco to NPoco (#1207)
* NPoco - 2.x (builds)

* NPoco - v3.1 (does not build)

* NPoco - builds

* NPoco - configure database factory (tests fail)

* Pick fix from 7.4

* NPoco - stock v3.1 - sort-of working

* NPoco - fix merge

* Fix Newtonsoft.Json in web.Template.Debug.config

* NPoco - fix SELECT *

* NPoco - fixing repositories

* NPoco - fix EntityRepository

* NPoco - fix EntityRepository

* NPoco - cosmetic

* NPoco - use 3.1.0-u001 from github/zpqrtbnk/NPoco

* Fixes build, NPoco needed to be referenced in the cms and UmbracoExamine projects

* Fixes lots of tests

* fixes more tests

* NPoco - bugfixing

* Bugfix CacheHelper in tests

* Bugfix connection mocking in tests

* NPoco - inject database in Sql.Select<>

* NPoco - discovery retry policy only once

* Enable C# 6 for Umbraco.Core

* NPoco - introduce UmbracoSql, cleanup

* NPoco - more cleanup and fixing

* NPoco - fix UserRepository

* Optimize InGroupsOf

* Implement UmbracoDatabase.FetchByGroups

* NPoco - fix Select

* NPoco - simplify GetPagedResultsByQuery

* Cherry-pick DisableBrowserCacheAttribute fix from 7.4

* Upgrade NPoco to use Sql<TContext>

* U4-8257 - cleanup relators

* 4-8257 - cleanup more relators

* Upgrade NPoco with more OOTB version

* fixes a couple tests, changes double check lock to Lazy<T>
2016-04-12 15:11:07 +02:00
sna 21f2929ab3 U4-8199 Remove the internal obsolete HasAccess method.
It it not used and marked as obsolete.
2016-04-08 14:37:33 +01:00
Shannon 1b8747bd6d removes legacy disable user menu item and uses the new/normal way of dealing with menu items. 2016-03-31 19:41:42 +02:00
Shannon c6a586274e Merge branch 'U4-8189' of https://github.com/danlister/Umbraco-CMS into danlister-U4-8189
Conflicts:
	src/Umbraco.Core/Constants-Applications.cs
	src/Umbraco.Web/Umbraco.Web.csproj
2016-03-31 19:40:07 +02:00
Shannon 4df5ddcb4c Removes old serializers for old tree formats 2016-03-31 18:50:25 +02:00
Shannon cf822be04f Merge branch 'MangoPieface-dev-v8' into dev-v8
Conflicts:
	src/Umbraco.Web/Umbraco.Web.csproj
2016-03-31 18:46:26 +02:00
Shannon b6f88895dc re-adds images that are still required for some of the legacy file editors 2016-03-31 14:35:49 +02:00
Shannon 734392bb0e Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2016-03-31 14:31:21 +02:00
Shannon b22fda1e80 fixes some ysods 2016-03-31 14:28:41 +02:00
Shannon Deminick aefe2ee1c3 Merge pull request #1196 from BatJan/dev-v8
Part 1 of U4-8226 Remove all unused/un-needed webforms files from the Umbraco.Web and Umbraco.Web.UI projects
2016-03-31 14:27:31 +02:00
Shannon 79bebb9e14 Merge remote-tracking branch 'origin/dev-v8' into dev-v8
Conflicts:
	src/Umbraco.Web.UI/config/trees.Release.config
	src/Umbraco.Web/Umbraco.Web.csproj
2016-03-30 16:08:08 +02:00
Shannon 74e1078c31 Merge branch 'U4-8198_file_system' of https://github.com/yannisgu/Umbraco-CMS into yannisgu-U4-8198_file_system
Conflicts:
	src/Umbraco.Web/Umbraco.Web.csproj
2016-03-30 16:07:45 +02:00
Warren Buckley 659af0ba48 Merge branch 'U4-8194' of https://github.com/jamescoxhead/Umbraco-CMS into jamescoxhead-U4-8194
# Conflicts:
#	src/Umbraco.Web/Umbraco.Web.csproj
2016-03-30 14:44:03 +01:00
Shannon Deminick 3c697436b1 Merge pull request #1195 from yannisgu/U4-8193
U4-8193  replaced loadMacros with MacrosTreeController
2016-03-30 15:15:41 +02:00
Shannon 429d7e2aff WIP - starts porting umbraco over to lucene 3 and Examine v2 2016-03-30 15:12:30 +02:00
James Coxhead efa8bf44f9 Merge remote-tracking branch 'upstream/dev-v8' into U4-8194
# Conflicts:
#	src/Umbraco.Web.UI/config/trees.Release.config
#	src/Umbraco.Web.UI/config/trees.config
#	src/Umbraco.Web/Umbraco.Web.csproj
#	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadDictionary.cs
2016-03-24 20:56:44 +00:00
James Coxhead d99aef5ee8 Updated config transforms 2016-03-24 20:30:31 +00:00
Stephan e6a187a3d6 Merge pull request #1197 from yannisgu/fixNewtonsoft
Fix Newtonsoft.JSON dependency when running in debug mode in v8
2016-03-24 20:17:53 +01:00
Yannis Guedel 69dc8bc57f fix newtonsoft.json 8.0.0 when running in debug mode 2016-03-24 19:49:01 +01:00
Jan Skovgaard 2d3d36a14c Removing unused member usercontrols and master layouts. 2016-03-24 12:43:51 +01:00
Jan Skovgaard e2fbbc3df0 First commit - Could not resist the urge to get rid of a lot of unused images as well as some of the unused .ascx files. Primarily images removed in this commit and two user controls no longer used in the dashboard.config. 2016-03-24 12:02:29 +01:00
Yannis Guedel 5ec0a58d4d fixed copy paste error 2016-03-23 22:58:52 +01:00
Yannis Guedel bb7d5b4bd2 U4-8193 replaced loadMacros with MacrosTreeController 2016-03-23 22:56:42 +01:00
Shannon 4defc881d4 Removes lots of dead methods 2016-03-23 12:00:58 +01:00
Shannon 295368fc2b Merge remote-tracking branch 'origin/dev-v7' into dev-v8
Conflicts:
	.gitignore
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/ClientDependency.config
2016-03-23 11:04:06 +01:00
Shannon 7d3ba43816 Removes lots of Dead Code - thanks NDepend! 2016-03-23 10:58:06 +01:00
David Brendel 91ab84ef72 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v8' into dev-v8 2016-03-22 21:52:03 +01:00
Shannon fb104004e0 Updates LightInject 2016-03-22 16:39:52 +01:00
Shannon 4355761da1 U4-8228 Update to latest Newtonsoft.Json 2016-03-22 16:35:23 +01:00
Shannon 9baf344ad3 U4-8227 Change Umbraco.Core.Models.Mapping.MapperConfiguration and Umbraco.Core.Models.Mapping.IMapperConfiguration implementations AND U4-6923 Update to latest Automapper - with signed assembly 2016-03-22 16:29:04 +01:00
Shannon b90cb7304b removes old moveOrCopy dialog, removes old CMSNode.asmx service (no idea what that did), some work on U4-8224 Remove all legacy/obsolete webservices from umbraco.presentation/webservices, and some work on U4-8226 Remove all unused/un-needed webforms files from the Umbraco.Web and Umbraco.Web.UI projects 2016-03-22 15:34:23 +01:00
Shannon ed7003110b Removes legacy trashcan business logic class along with the legacy trashcan webforms files. 2016-03-22 14:46:27 +01:00
Shannon cdb58d7f8c Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2016-03-22 14:39:21 +01:00
Shannon d296bf80ff Removes legacy 'Notification' business logic, adds new SetNotifications method to INotificationService 2016-03-22 14:39:08 +01:00
Stephan bd6e273779 Merge remote-tracking branch 'origin/dev-v8' into dev-v8 2016-03-22 14:38:00 +01:00
Stephan df99edba18 GitIgnore Umbraco.Tests/media 2016-03-22 14:37:48 +01:00
Shannon 329a48edea U4-8223 Remove all old events and event classes 2016-03-22 14:18:45 +01:00
Shannon 286e43bc10 U4-8222 Remove IMacroEngine - we will only ship with the macro engines we have currently 2016-03-22 12:48:59 +01:00
Shannon f181c3041e Ensures Admin creation has translation section 2016-03-22 12:35:59 +01:00
Shannon eb59d33f42 updates dictionary tree sort + config and ensures that all new users by default have access to translations 2016-03-22 12:34:25 +01:00
Shannon Deminick bc7016384c Merge pull request #1182 from Mantus667/U4-5448
U4-5448
2016-03-22 12:28:55 +01:00
Shannon 4fb69e0c59 updates trees sort order and trees.Release.config 2016-03-22 12:26:37 +01:00
Shannon Deminick fd0af41710 Merge pull request #1189 from yannisgu/U4-7543_Move_data_type_tree_to_settings
U4-7543 Move data type tree to settings
2016-03-22 12:20:58 +01:00
Shannon 4715a17c03 updates the csproj file with the removed items, puts back in punycode.min for now since its still used, fixes a couple ysods. 2016-03-22 12:11:02 +01:00
Shannon d52f295547 Merge branch 'BatJan-dev-v8' into dev-v8 2016-03-22 11:56:14 +01:00
Shannon 31733bdb6e Merge branch 'dev-v8' of https://github.com/BatJan/Umbraco-CMS into BatJan-dev-v8 2016-03-22 11:56:02 +01:00
James Coxhead 88ad2cdc37 Removed legacy loadDictionary class 2016-03-21 23:32:56 +00:00
James Coxhead a04506ba60 Created new dictionary tree controller 2016-03-21 23:31:22 +00:00
sna 34931cae91 Merge remote-tracking branch 'upstream/dev-v8' into dev-v8 2016-03-21 21:46:26 +00:00
sna afc3126125 U4-8199 - Remove the JSONSerializer, where used for serialisation it's been replaced with JavaScriptSerializer
Also removed references to JSONSerializer.ToJSONObject  in \Umbraco-CMS\src\Umbraco.Web\umbraco.presentation\umbraco\controls\Tree\JTreeContextMenuItem.cs as it looks like this is just used by the jsTree which will be removed in a future commit.

http://issues.umbraco.org/issue/U4-8199
2016-03-21 21:41:26 +00:00
Yannis Guedel 4db83be874 U4-7543 Move data type tree to settings
data type tree belongs in settings since it is heavily tied to content
types.
2016-03-21 22:38:40 +01:00
Jan Skovgaard a533362e7c Removing unused scripts, styles and images. 2016-03-21 22:35:52 +01:00
sna bfe9bd5a20 U4-8199 - Remove the obsolete EncodedStringWriter.cs
No references, clean build - looks safe to remove

http://issues.umbraco.org/issue/U4-8199
2016-03-21 21:15:31 +00:00
Sebastiaan Janssen 8113b7e66c Fixes NuGet build 2016-03-21 20:23:43 +01:00
Shannon 0964985711 Merge branch 'MangoPieface-dev-v8' into dev-v8 2016-03-21 17:47:41 +01:00
sna 5b5ff10af0 U4-8199: Removed SerializableData.cs, this was used by the XmlTree.cs for the Serializable.XmlTree in the ToString() method.
This in turn was only used in the LegacyTree class, so I deleted this too. This also meant I could remove the old Render method in BaseTree.

http://issues.umbraco.org/issue/U4-8199
2016-03-21 16:14:25 +00:00
Shannon Deminick 0c5081b6a3 Merge pull request #1185 from danlister/U4-8190
U4-8190 Converted umbraco.cms.presentation.Trees.UserTypes to use the new tree structure
2016-03-21 11:45:21 +01:00
Shannon Deminick 68245a85f0 Merge pull request #1183 from danlister/U4-8187
U4-8187 Removed legacy loadLanguages and loadTemplates tree classes
2016-03-21 11:39:09 +01:00
Dan Lister 1e08f5f9ce U4-8190 Converted umbraco.cms.presentation.Trees.UserTypes to use the new tree structure 2016-03-18 14:58:24 +00:00
Dan Lister 7f6296b255 U4-8187 Removed legacy loadLanguages and loadTemplates tree classes 2016-03-18 10:07:56 +00:00
David Brendel 0468af67d4 U4-5448
Move dictionary tree to translation section instead of settings section
2016-03-18 07:58:19 +01:00
Shannon 69e53b6510 Merge remote-tracking branch 'origin/dev-v7' into dev-v8 2016-03-17 16:46:55 +01:00
Shannon 9c1880b768 umbraco.interfaces = GONE! 2016-03-17 16:06:41 +01:00
Shannon 39c39879f9 Moves IPackageAction to _Legacy Core for now 2016-03-17 16:05:56 +01:00
Shannon 516d0365aa moves all package actions to Web _Legacy for now. 2016-03-17 16:03:12 +01:00
Shannon a4ab137c3f moves ICacheRefresher to Core 2016-03-17 15:59:35 +01:00
Shannon d4bf8287bd fixes an ioc registration for PartialViewRepository 2016-03-17 15:52:54 +01:00
Shannon c0f8532350 Removes ITree! 2016-03-17 15:48:43 +01:00
Shannon 1a880f6b68 moves the LegacyDialogHandler stuff to _Legacy namespaces for now, moves the legacy ITask and ITaskReturnUrl to the same namespace/proj. 2016-03-17 15:30:25 +01:00
Shannon bb6b9f4ebc moves legacy actions to _Legacy namespace for now 2016-03-17 15:28:46 +01:00
Shannon 7d20557937 Moves IAction and ActionsResolver to Web proj, removes IMenuElement, ITag, IUseTags 2016-03-17 15:26:22 +01:00
Shannon 12d7d060d7 Removes the super old INode and IProperty! 2016-03-17 15:13:50 +01:00
Shannon 73fdc17bc4 removes IMacroGuiRendering, all umbraco.interfaces/skinning classes, fixes CDF load in some aspx views, removes dialog/editmacro.aspx, removes macroParameterControl 2016-03-17 15:09:20 +01:00
Shannon 63cb6d96b2 Merge remote-tracking branch 'origin/dev-v7' into dev-v8 2016-03-17 14:30:02 +01:00
Shannon bcd12172eb manually merges: U4-4075 umbracoSettings help section removed 2016-03-17 14:28:06 +01:00
Shannon 430afcab90 Removes Umbraco.Core.Models.Template.GetTypeOfRenderingEngine 2016-03-17 14:21:15 +01:00
Shannon d4b0b3d31b removes IPublicAccessService.AddOrUpdateRule 2016-03-17 14:18:34 +01:00
Shannon 1ed1a8a580 umbraco.businesslogic.dll = GONE 2016-03-17 10:43:05 +01:00
Shannon a292defdb9 moves LegacySqlHelper to the only places that needs it now: umbraco.cms,marks as obsolete and internal since its temporary. 2016-03-17 10:41:21 +01:00
Shannon 4c9f4beaf9 Removes old 'Application' and renames to LegacySqlHelper 2016-03-17 10:39:39 +01:00
Shannon 24fed0de2e removes ISqlHelper usages from Web project 2016-03-17 10:35:02 +01:00
Shannon 9ac2d04aea User and User type from the old businesslogic assembly are GONE! 2016-03-16 17:52:08 +01:00
Shannon f594a1132d Remove IMediaFactory 2016-03-16 15:56:52 +01:00
Shannon 3b191239be Removes all usages of UserType 2016-03-16 15:55:26 +01:00
Shannon e1f17e848d moves the legacy serialization classes for the super old XmlTree format into Web proj so we can remove the businesslogic DLL first, we'll get to removing those classes later as it will be a bit tricky. 2016-03-16 15:29:08 +01:00
Shannon 88504306ca fixes merge 2016-03-16 15:14:00 +01:00
Shannon d37d31246e Merge remote-tracking branch 'origin/dev-v7' into dev-v8
Conflicts:
	src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs
	src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs
	src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs
	src/Umbraco.Web.UI/umbraco/create/content.ascx
	src/Umbraco.Web.UI/umbraco/create/member.ascx
	src/Umbraco.Web.UI/umbraco/create/nodeType.ascx
	src/Umbraco.Web/PropertyEditors/TrueFalsePropertyEditor.cs
	src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs
	src/Umbraco.Web/Security/Identity/BackOfficeCookieManager.cs
	src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs
	src/Umbraco.Web/Strategies/Migrations/PublishAfterUpgradeToVersionSixth.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/WebBootManager.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/settings/stylesheet/editstylesheet.aspx.cs
2016-03-16 15:02:53 +01:00
Shannon 2cc709c460 Removes StateHelper!! Adds a few cookie extensions and http extensions to more easily replace. 2016-03-16 14:59:21 +01:00
Shannon cbb06dcfe1 umbraco.ui is GONE :) 2016-03-15 19:54:21 +01:00
Shannon 0636ea0b16 fix build 2016-03-15 16:59:01 +01:00
Shannon b98277f573 remore ui replacements 2016-03-15 16:58:13 +01:00
Shannon fb5e998e1f remore ui replacements 2016-03-15 16:39:17 +01:00
Shannon bf36b54ac8 remore ui replacements 2016-03-11 16:11:33 +01:00
Shannon a47a9e5e64 remore ui replacements 2016-03-11 16:02:33 +01:00
Shannon 9ebe93df06 remore ui replacements 2016-03-11 15:56:00 +01:00
Shannon ca3630f9d9 remore ui replacements 2016-03-11 15:47:22 +01:00
Shannon fa0588116f remore ui replacements 2016-03-11 15:43:34 +01:00
Shannon 5eea4d039f remore ui replacements 2016-03-11 15:32:05 +01:00
Shannon 26f85e4241 remore ui replacements 2016-03-11 15:28:08 +01:00
Shannon b47eedb381 remore ui replacements 2016-03-11 15:24:26 +01:00
Shannon fd8af57167 regex is working! 2016-03-11 15:16:43 +01:00
Shannon 55301b9b6b start replacing ui.text calls... now gonna try some regex. 2016-03-11 15:14:31 +01:00
Shannon 6faa886362 removes commented lines 2016-03-11 14:11:16 +01:00
Shannon d5ec991556 doh! not sure how the identity extensions files got committed, have removed them 2016-03-11 14:01:34 +01:00
Shannon 15a48dd921 Ensures more IoC services are there, creates new GetContentXml methods on IContentServices, updates the xml cache 'content' class to use these methods, removes more checks for legacy XML structures, removes old xsd schema files. 2016-03-11 13:54:56 +01:00
Shannon 6ee5457a81 Fixes more merge issues, project builds and runs 2016-03-11 09:23:09 +01:00
Shannon 8729e00864 it builds! ... but not sure it works yet. 2016-03-10 19:47:10 +01:00
Shannon f6f54fd057 Merge branch 'master-v7' into dev-v8
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Core/CoreBootManager.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs
	src/Umbraco.Core/Persistence/Repositories/EntityContainerRepository.cs
	src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PublicAccessRepository.cs
	src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs
	src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs
	src/Umbraco.Core/Persistence/RepositoryFactory.cs
	src/Umbraco.Core/PropertyEditors/PropertyEditorValueConvertersResolver.cs
	src/Umbraco.Core/Services/ContentTypeService.cs
	src/Umbraco.Core/Services/FileService.cs
	src/Umbraco.Core/Services/LocalizationService.cs
	src/Umbraco.Core/Services/MemberTypeService.cs
	src/Umbraco.Core/Services/PackagingService.cs
	src/Umbraco.Core/Services/ServiceContext.cs
	src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
	src/Umbraco.Tests/Umbraco.Tests.csproj
	src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web.UI/web.Template.config
	src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
	src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs
	src/Umbraco.Web/PropertyEditors/ImageCropperPropertyValueEditor.cs
	src/Umbraco.Web/PropertyEditors/ListViewPropertyEditor.cs
	src/Umbraco.Web/Services/ApplicationTreeService.cs
	src/Umbraco.Web/Services/SectionService.cs
	src/Umbraco.Web/Trees/MemberTreeController.cs
	src/Umbraco.Web/UI/Pages/ClientTools.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/WebBootManager.cs
	src/Umbraco.Web/umbraco.presentation/macro.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadNodeTypes.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/channels/api.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/PartialViewTasksBase.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/exportDocumenttype.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/ItemRenderer.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/MediaExtensions.cs
	src/umbraco.businesslogic/BasePages/ClientTools.cs
	src/umbraco.businesslogic/UmbracoSettings.cs
	src/umbraco.cms/businesslogic/CMSNode.cs
	src/umbraco.cms/businesslogic/Content.cs
	src/umbraco.cms/businesslogic/cache/Cache.cs
	src/umbraco.cms/businesslogic/datatype/DataTypeDefinition.cs
	src/umbraco.cms/businesslogic/propertytype/propertytype.cs
	src/umbraco.cms/businesslogic/web/Document.cs
	src/umbraco.cms/helpers/DeepLink.cs
	src/umbraco.editorControls/tinyMCE3/TinyMCE.cs
2016-03-10 19:20:15 +01:00
Shannon a26bb336f1 hard codes the en-US language until we get rid of ui calls. 2016-03-10 18:35:29 +01:00
Shannon 5659f8d3f7 fixes back office rendering 2016-02-17 17:39:12 +01:00
Shannon e10fb4fd7e Gets the Services IoC working!! 2016-02-17 17:37:17 +01:00
Shannon 172c4a59d7 Creates a RegisterSingleton ext method for easier registration 2016-02-17 17:14:54 +01:00
Shannon 4fa1ce42dc WIP - moving tree and section service implementations to Web because they are web based and they need web based objects, there's no sense in coying all of the non-web objects to Core. Now we need to use IoC for the ServiceContext 2016-02-17 16:45:26 +01:00
Shannon 6e7f3b5500 Removes the old business logic ApplicationTree and affilated files, replaces with current data structures. 2015-12-28 18:44:20 +01:00
Shannon b5eee9194f fixes build errors 2015-12-28 18:11:08 +01:00
Shannon e3d153e422 wip for removing legacy Application and moving IApplication 2015-12-28 18:06:18 +01:00
Shannon ca407d78cc Removes the old Log/ILog along with the concept of an ExternalLogger, updates the IAuditService to handle what the Log used to do 2015-12-23 15:22:45 +01:00
Shannon e005c5bba6 Massive file cleanup, removed the old BasePage, UmbracoEnsuredPage, ClientTools, moved the menu 'Action' to the Web project until we can remove those too. 2015-12-23 13:51:16 +01:00
Shannon de776f86a4 Lots of code cleanup, lots of unused/obsolete classes & files removed. 2015-12-22 19:25:10 +01:00
Shannon 4f3968e837 R# cleanup, losts of obsoleted methods removed 2015-12-22 18:00:11 +01:00
Shannon 0b13e18fd5 some r# cleanup 2015-12-22 17:25:09 +01:00
Shannon 5af839693c U4-7600 Remove obsoleted string helpers, string extensions, umbraco.helper, umbraco.cms.helper.* 2015-12-22 16:48:55 +01:00
Shannon 1aa52b4cc9 removes old helpers/url 2015-12-22 16:43:11 +01:00
Shannon 24e2341115 U4-7600 Remove obsoleted string helpers, string extensions & umbraco.helper 2015-12-22 16:37:21 +01:00
Shannon fb5e11fea6 Merge remote-tracking branch 'origin/temp-U4-7591' into dev-v8
Conflicts:
	src/Umbraco.Web/umbraco.presentation/umbraco/create/content.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/member.ascx.cs
2015-12-22 16:28:27 +01:00
Shannon 516b59a12a Merge remote-tracking branch 'origin/temp-U4-7591' into dev-v8
Conflicts:
	src/Umbraco.Tests/UI/LegacyDialogTests.cs
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web/Umbraco.Web.csproj
2015-12-22 16:23:55 +01:00
Shannon 6078b822c6 Merge remote-tracking branch 'origin/7.4.0' into dev-v8 2015-12-22 16:22:30 +01:00
Shannon 9f0cc15822 U4-7600 Remove obsoleted string helpers, string extensions & umbraco.helper 2015-12-22 16:22:17 +01:00
Shannon c7eaf9a591 U4-7600 Remove obsoleted string helpers & string extensions 2015-12-22 16:07:45 +01:00
Shannon d6779619ea U4-6899 Change UmbracoHelper.TagQuery to return ITagQuery instead of the current hack to return a non interface 2015-12-22 15:45:15 +01:00
Shannon 880e17601b U4-5071 Update MiniProfiler to latest major version 2015-12-21 21:28:35 +01:00
Shannon 395e904df3 U4-6923 Update to latest Automapper - with signed assembly 2015-12-21 20:48:20 +01:00
Shannon ebbfe4edad U4-1324 log4net assembly Umbraco uses custom log4net build that is not strongly typed 2015-12-21 19:33:58 +01:00
Shannon afe06ffb02 U4-5424 Upgrade to latest .Net framework version (4.6.1) 2015-12-21 19:23:13 +01:00
Shannon c242383430 removes some obsolete code, ensures that UmbracoHelper is added to the container. 2015-12-21 17:50:00 +01:00
Shannon 2f5616a21c Content is now rendering 2015-12-21 17:09:31 +01:00
Shannon e17720a5f7 updates LightInject, saves a ton of code for repo registrations. 2015-12-21 16:33:09 +01:00
Shannon 5f6ae3683e removes files that shouldn't be committed 2015-12-21 15:03:10 +01:00
Shannon fbf93e2059 Umbraco now installs and can install the starter kit... not much else though ;) 2015-12-21 15:02:21 +01:00
Shannon 6593f4eaaa creates ServicesCompositionRoot 2015-12-21 14:27:36 +01:00
Shannon 69e1df87df only 22 tests failing now 2015-12-21 14:08:05 +01:00
Shannon 34a379ac5f Merge branch 'dev-v8' of https://github.com/umbraco/Umbraco-CMS into dev-v8 2015-12-21 13:41:11 +01:00
Shannon eaf8d55d48 WIP - refactored RepositoryFactory to use IoC, everything builds, haven't tested anything yet. 2015-12-21 13:36:58 +01:00
Shannon Deminick 91dc7576ea Merge pull request #965 from umbraco/temp-v8macros
Fixing failing macro tests.
2015-12-21 10:51:21 +01:00
Claus 46bdae7492 Fixing failing macro tests. 2015-12-21 10:45:14 +01:00
Shannon 96c336e34c now only 24 tests failing, that's pretty good! 2015-12-20 20:40:49 +01:00
Shannon 7ec63ad491 fixes some macro unit tests (some still need fixing though) 2015-12-20 20:17:57 +01:00
Shannon 04e7979fe6 Fixes some merge issues, gets a bunch more tests operational. 2015-12-20 20:09:25 +01:00
Shannon 4d0b2b745a first unit tests passing 2015-12-20 17:28:38 +01:00
Shannon 0bcf38b267 Removes LightInject as Source and adds it as DLL dependencies, updates to latest Light Inject. 2015-12-20 17:09:46 +01:00
Shannon 0fd9a074d8 WIP sln is now building... though i doubt anything works atm, working on that now. 2015-12-20 16:49:24 +01:00
Shannon 73cc4b4e3f Web proj is building 2015-12-18 14:58:22 +01:00
Shannon f09f3c4129 ok, now Core proj is building 2015-12-18 14:45:28 +01:00
Shannon 6f43230a9b Core is more or less building (i think) 2015-12-18 14:24:17 +01:00
Shannon 5c5a5d12cc WIP working on getting Core project to build 2015-12-18 13:29:12 +01:00
Shannon 2ea9418fd7 Merge remote-tracking branch 'origin/7.4.0' into dev-v8
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/ApplicationContext.cs
	src/Umbraco.Core/Configuration/UmbracoConfig.cs
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Core/CoreBootManager.cs
	src/Umbraco.Core/DatabaseContext.cs
	src/Umbraco.Core/Dictionary/CultureDictionaryFactoryResolver.cs
	src/Umbraco.Core/Manifest/ManifestParser.cs
	src/Umbraco.Core/Models/DataTypeDefinition.cs
	src/Umbraco.Core/ObjectResolution/ApplicationEventsResolver.cs
	src/Umbraco.Core/Persistence/DatabaseSchemaHelper.cs
	src/Umbraco.Core/Persistence/Factories/MemberTypeFactory.cs
	src/Umbraco.Core/Persistence/Migrations/MigrationBase.cs
	src/Umbraco.Core/Persistence/Migrations/MigrationExpressionBase.cs
	src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs
	src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/AlterSyntaxBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Column/AlterColumnBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterColumnExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterDefaultConstraintExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterTableExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Table/AlterTableBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Column/CreateColumnBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Create/CreateBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateConstraintExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateTableExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Table/CreateTableBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/DeleteBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteColumnExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteConstraintExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDataExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDefaultConstraintExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteForeignKeyExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteIndexExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteTableExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/ExecuteBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteCodeStatementExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteSqlStatementExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateColumnExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateForeignKeyExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateIndexExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/Expressions/InsertDataExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/InsertBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameColumnExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameTableExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/RenameBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Update/Expressions/UpdateDataExpression.cs
	src/Umbraco.Core/Persistence/Migrations/Syntax/Update/UpdateBuilder.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs
	src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs
	src/Umbraco.Core/Persistence/Repositories/TagRepository.cs
	src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs
	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
	src/Umbraco.Core/Persistence/RepositoryFactory.cs
	src/Umbraco.Core/Persistence/UmbracoDatabase.cs
	src/Umbraco.Core/PropertyEditors/IPropertyEditorValueConverter.cs
	src/Umbraco.Core/PropertyEditors/PropertyEditor.cs
	src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Core/Services/ContentTypeService.cs
	src/Umbraco.Core/Services/DataTypeService.cs
	src/Umbraco.Core/Services/EntityService.cs
	src/Umbraco.Core/Services/LocalizationService.cs
	src/Umbraco.Core/Services/MacroService.cs
	src/Umbraco.Core/Services/MediaService.cs
	src/Umbraco.Core/Services/MemberGroupService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Core/Services/MemberTypeService.cs
	src/Umbraco.Core/Services/PackagingService.cs
	src/Umbraco.Core/Services/ServerRegistrationService.cs
	src/Umbraco.Core/Services/ServiceContext.cs
	src/Umbraco.Core/Services/TagService.cs
	src/Umbraco.Core/Services/UserService.cs
	src/Umbraco.Core/Strings/DefaultShortStringHelper.cs
	src/Umbraco.Core/Sync/ConfigServerRegistrar.cs
	src/Umbraco.Core/Sync/DatabaseServerMessenger.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Core/UmbracoApplicationBase.cs
	src/Umbraco.Core/packages.config
	src/Umbraco.Tests/BootManagers/CoreBootManagerTests.cs
	src/Umbraco.Tests/Macros/MacroTests.cs
	src/Umbraco.Tests/Manifest/ManifestParserTests.cs
	src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs
	src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs
	src/Umbraco.Tests/Migrations/Stubs/FiveZeroMigration.cs
	src/Umbraco.Tests/Migrations/Stubs/FourElevenMigration.cs
	src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration1.cs
	src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration2.cs
	src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs
	src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs
	src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs
	src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs
	src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs
	src/Umbraco.Tests/Persistence/DatabaseContextTests.cs
	src/Umbraco.Tests/Persistence/Mappers/PropertyGroupMapperTest.cs
	src/Umbraco.Tests/Persistence/MySqlDatabaseCreationTest.cs
	src/Umbraco.Tests/Persistence/Querying/ContentTypeRepositorySqlClausesTest.cs
	src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
	src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs
	src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
	src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
	src/Umbraco.Tests/Services/ContentServiceTests.cs
	src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs
	src/Umbraco.Tests/Strings/DefaultShortStringHelperTests.cs
	src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
	src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs
	src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
	src/Umbraco.Tests/Umbraco.Tests.csproj
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web.UI/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/Umbraco.Web.UI/umbraco/plugins/tinymce3/insertImage.aspx
	src/Umbraco.Web.UI/umbraco/settings/EditNodeTypeNew.aspx.cs
	src/Umbraco.Web/BatchedDatabaseServerMessenger.cs
	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
	src/Umbraco.Web/Cache/DataTypeCacheRefresher.cs
	src/Umbraco.Web/Cache/DistributedCacheExtensions.cs
	src/Umbraco.Web/Editors/AuthenticationController.cs
	src/Umbraco.Web/Editors/BackOfficeController.cs
	src/Umbraco.Web/Install/InstallSteps/DatabaseInstallStep.cs
	src/Umbraco.Web/Install/InstallSteps/DatabaseUpgradeStep.cs
	src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProvidersResolver.cs
	src/Umbraco.Web/Mvc/DefaultRenderMvcControllerResolver.cs
	src/Umbraco.Web/PropertyEditors/FileUploadPropertyEditor.cs
	src/Umbraco.Web/PropertyEditors/FolderBrowserPropertyEditor.cs
	src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs
	src/Umbraco.Web/PropertyEditors/ImageCropperPropertyEditor.cs
	src/Umbraco.Web/Routing/NotFoundHandlerHelper.cs
	src/Umbraco.Web/Trees/MediaTreeController.cs
	src/Umbraco.Web/Trees/MemberTreeController.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/UmbracoApplication.cs
	src/Umbraco.Web/UmbracoModule.cs
	src/Umbraco.Web/WebBootManager.cs
	src/Umbraco.Web/packages.config
	src/Umbraco.Web/umbraco.presentation/content.cs
	src/Umbraco.Web/umbraco.presentation/keepAliveService.cs
	src/Umbraco.Web/umbraco.presentation/macro.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadDictionary.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentControl.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/Images/ImageViewer.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/Images/UploadMediaImage.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/imageViewer.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/rollBack.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMemberType.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/plugins/tinymce3/insertImage.aspx
	src/Umbraco.Web/umbraco.presentation/umbraco/settings/EditNodeTypeNew.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/MediaExtensions.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/uQuery/uQuery.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/webService.asmx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/webservices/MediaUploader.ashx.cs
	src/UmbracoExamine/UmbracoContentIndexer.cs
	src/UmbracoExamine/UmbracoMemberIndexer.cs
	src/umbraco.MacroEngines/RazorCore/UmbracoCultureDictionary.cs
	src/umbraco.MacroEngines/RazorDynamicNode/DynamicNode.cs
	src/umbraco.MacroEngines/RazorDynamicNode/ExtensionMethods.cs
	src/umbraco.MacroEngines/app.config
	src/umbraco.MacroEngines/packages.config
	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
	src/umbraco.businesslogic/UmbracoSettings.cs
	src/umbraco.cms/businesslogic/Content.cs
	src/umbraco.cms/businesslogic/datatype/DataTypeDefinition.cs
	src/umbraco.cms/businesslogic/datatype/DefaultPreValueEditor.cs
	src/umbraco.cms/businesslogic/datatype/FileHandlerData.cs
	src/umbraco.cms/businesslogic/translation/Translation.cs
	src/umbraco.cms/businesslogic/web/Document.cs
	src/umbraco.cms/packages.config
	src/umbraco.editorControls/DefaultPrevalueEditor.cs
	src/umbraco.editorControls/MultiNodeTreePicker/MNTPResources.Designer.cs
	src/umbraco.editorControls/MultiNodeTreePicker/MNTPResources.resx
	src/umbraco.editorControls/MultiNodeTreePicker/MNTP_DataType.cs
	src/umbraco.editorControls/app.config
	src/umbraco.editorControls/macrocontainer/PrevalueEditor.cs
	src/umbraco.editorControls/packages.config
	src/umbraco.editorControls/textfieldmultiple/textfieldMultipleDataType.cs
	src/umbraco.editorControls/umbraco.editorControls.csproj
	src/umbraco.editorControls/uploadfield/uploadField.cs
	src/umbraco.editorControls/userControlWrapper/usercontrolPrevalueEditor.cs
	src/umbraco.providers/app.config
2015-12-18 11:23:58 +01:00
bjarnef 2dc6e395a8 Add more colors to icon-picker dialog 2015-11-16 01:15:51 +01:00
bjarnef eedeb90673 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' into dev-v7-U4-6616 2015-11-16 01:12:49 +01:00
bjarnef 977c390a95 Merge remote-tracking branch 'refs/remotes/umbraco/dev-v7' into dev-v7-U4-6616 2015-11-09 23:52:00 +01:00
Shannon 19c5eee791 Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/UmbracoApplicationBase.cs
2015-05-14 08:45:57 +10:00
Shannon b5b6ce8bf9 fixes merge 2015-05-13 16:50:45 +10:00
Shannon f7bcae1aa7 Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/Services/DomainService.cs
	src/Umbraco.Web/Routing/NotFoundHandlerHelper.cs
	src/Umbraco.Web/umbraco.presentation/NotFoundHandlers.cs
2015-05-13 16:47:33 +10:00
Shannon 0a921c0701 fixes merge issues 2015-05-13 16:46:53 +10:00
Shannon 8c771660a7 Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/Services/UserService.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web/Routing/ContentFinderByLegacy404.cs
	src/Umbraco.Web/Routing/NotFoundHandlerHelper.cs
	src/Umbraco.Web/umbraco.presentation/NotFoundHandlers.cs
	src/Umbraco.Web/umbraco.presentation/library.cs
	src/umbraco.MacroEngines/app.config
	src/umbraco.MacroEngines/packages.config
	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
	src/umbraco.editorControls/app.config
	src/umbraco.providers/UsersMembershipProvider.cs
	src/umbraco.providers/app.config
2015-05-13 14:49:11 +10:00
Shannon 177a1e336f Converts UrlProviderResolver to a container resolver and also ensures any container many resolver is added to the container itself 2015-05-05 19:14:56 +10:00
Shannon dc7b3612bc converts PropertyValueConvertersResolver to a container resolver and updates IPropertyValueConverter that were relying on singletons to use DependencyInjection 2015-05-05 19:01:49 +10:00
Shannon 939fc8a92c Changes ParameterEditorResolver to a Container resolver 2015-05-05 18:51:33 +10:00
Shannon 36f3948835 Fixes most tests, only 4 failing but they are arbitrary... now we can look to start cleaning/deleting more stuff :) 2015-05-05 18:24:31 +10:00
Shannon fba98eb7f6 Fixes merges, sln builds now, just need to run tests and fix them 2015-05-05 16:53:52 +10:00
Shannon 2ea4acbc6f Merge branch '7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/Configuration/UmbracoConfig.cs
	src/Umbraco.Core/CoreBootManager.cs
	src/Umbraco.Core/Manifest/ManifestBuilder.cs
	src/Umbraco.Core/Manifest/ManifestParser.cs
	src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs
	src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionFourNineZero/RemoveUmbracoAppConstraints.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddPropertyEditorAliasColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterCmsMacroPropertyTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagRelationsTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterUserTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/DropControlIdColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/RemoveCmsMacroPropertyTypeTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateControlIdToPropertyEditorAlias.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenOneZero/AssignMissingPrimaryForMySqlKeys.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveHelpTextColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/UpdateUniqueIdToHaveCorrectIndexType.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddIndexToUmbracoNodeTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AlterDataTypePreValueTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/RemoveCmsDocumentAliasColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/DeleteAppTables.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/EnsureAppsTreesUpdated.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/MoveMasterContentTypeData.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/NewCmsContentType2ContentTypeTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RemoveMasterContentTypeColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameCmsTabTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameTabIdColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeAllowedContentTypeTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentVersionTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsPropertyTypeGroupTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixOneZero/CreateServerRegistryTable.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AddChangeDocumentTypePermission.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys2.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/ChangePasswordColumn.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/UpdateToNewMemberPropertyAliases.cs
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixZeroOne/UpdatePropertyTypesAndGroups.cs
	src/Umbraco.Core/Persistence/RepositoryFactory.cs
	src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs
	src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Core/Services/ServerRegistrationService.cs
	src/Umbraco.Core/Sync/ConfigServerRegistrar.cs
	src/Umbraco.Core/Sync/ServerMessengerResolver.cs
	src/Umbraco.Core/Sync/ServerRegistrarResolver.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs
	src/Umbraco.Tests/CodeFirst/Definitions/ContentTypeDefinitionFactory.cs
	src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs
	src/Umbraco.Tests/Migrations/Stubs/AlterUserTableMigrationStub.cs
	src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs
	src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs
	src/Umbraco.Tests/Plugins/TypeFinderTests.cs
	src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web.UI/umbraco/Views/Default.cshtml
	src/Umbraco.Web/BaseRest/BaseRestHandler.cs
	src/Umbraco.Web/Cache/DistributedCacheExtensions.cs
	src/Umbraco.Web/Editors/AuthenticationController.cs
	src/Umbraco.Web/Editors/BackOfficeController.cs
	src/Umbraco.Web/Routing/ContentFinderByIdPath.cs
	src/Umbraco.Web/Routing/ContentFinderByNiceUrlAndTemplate.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/WebBootManager.cs
	src/Umbraco.Web/umbraco.presentation/NotFoundHandlers.cs
	src/Umbraco.Web/umbraco.presentation/content.cs
	src/Umbraco.Web/umbraco.presentation/page.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/UmbracoExamine/UmbracoMemberIndexer.cs
	src/umbraco.MacroEngines/app.config
	src/umbraco.MacroEngines/packages.config
	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
	src/umbraco.editorControls/app.config
	src/umbraco.editorControls/packages.config
	src/umbraco.editorControls/umbraco.editorControls.csproj
	src/umbraco.providers/app.config
2015-05-05 16:11:06 +10:00
Shannon cc27d2c483 fix merge issues 2015-02-23 13:49:53 +01:00
Shannon dc513570a5 Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs
	src/Umbraco.Core/Persistence/RepositoryFactory.cs
	src/Umbraco.Core/Services/ServiceContext.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web/Search/ExamineEvents.cs
	src/Umbraco.Web/UmbracoHelper.cs
	src/Umbraco.Web/umbraco.presentation/content.cs
	src/Umbraco.Web/umbraco.presentation/requestModule.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/translation/default.aspx.cs
	src/umbraco.MacroEngines/RazorDynamicNode/RazorLibraryCore.cs
	src/umbraco.businesslogic/IO/SystemFiles.cs
	src/umbraco.cms/businesslogic/Dictionary.cs
	src/umbraco.cms/businesslogic/web/Document.cs
2015-02-23 13:41:34 +01:00
Shannon e5b88a9a75 removes commented out code 2015-02-23 13:21:10 +01:00
Shannon 2dcc03ee3f more tests fixed, decouples more of the MappingResolver.Current singleton 2015-02-23 13:20:14 +01:00
Shannon 0ff5780944 fixes lots of tests 2015-02-23 11:29:11 +01:00
Shannon c76be66028 starts fixing up all the tests 2015-02-23 00:02:12 +01:00
Shannon 3e18c93cf5 More singleton reduction, created new IMappingResolver which is used by the Query<T> object instead of relying on a singleton, creates a new QueryFactory to create Query<T>, removes all standalone stuff (will create that again later). It builds, but most tests will still be failing. 2015-02-22 23:09:20 +01:00
Shannon 905e58e3b6 Completes: U4-6104 Remove SqlSyntaxContext - quite a large refactor and cleanup since the SqlSyntaxContext was used everywhere :( haven't run tests, etc... yet but the project builds now. 2015-02-22 21:36:02 +01:00
Shannon 693384bdf6 completes: U4-5546 Remove user 'channels', weblog api, and all code / db tables relevant to those 2015-02-22 17:16:39 +01:00
Shannon c4ca50dd5f fixes an ioc registration 2015-02-22 17:16:21 +01:00
Shannon 9f5f8e57af fixes merge issues 2015-02-22 16:59:40 +01:00
Shannon 1851303343 Merge remote-tracking branch 'origin/dev-v7' into dev-v8
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web.UI/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/macro.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/umbraco.MacroEngines/RazorDynamicNode/ExtensionMethodFinder.cs
	src/umbraco.MacroEngines/Resources/Web.config
	src/umbraco.MacroEngines/packages.config
	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
	src/umbraco.cms/businesslogic/Dictionary.cs
	src/umbraco.editorControls/packages.config
	src/umbraco.editorControls/umbraco.editorControls.csproj
2015-02-22 16:56:02 +01:00
Shannon bd34193cfd Completes: U4-6186 Remove all support for legacy xml schema 2015-01-27 15:18:58 +11:00
Shannon 7c5e68dd1c Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/Services/ServiceContext.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs
	src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs
	src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
2015-01-27 15:00:23 +11:00
Shannon 64787f8576 Fixes tests, decouples the UrlSegmentProviderResolver a little bit, removes lots of obsoleted ctors 2015-01-27 14:58:33 +11:00
Shannon 3e410e6a41 starts fixing up tests 2015-01-23 20:09:42 +11:00
Shannon 887ccaae83 WIP - Updates property editor resolver to use IoC, updates base prop editor class to require an ILogger which now get's ctor injected. This is a WIP because even though it builds there's a bunch of stuff not working, need to run/fix all tests (soon) 2015-01-23 20:00:44 +11:00
Shannon a292c60402 completes: U4-5148 Remove TidyNet from the core and anything that references/uses it 2015-01-23 18:05:55 +11:00
Shannon ea5575c1f5 Deletes a bunch of old unused files - mostly in umbraco_client 2015-01-23 17:10:10 +11:00
Shannon 7222058dd4 Deletes a bunch of old unused files - mostly in umbraco_client 2015-01-23 17:01:24 +11:00
Shannon 0df22a16b5 fixes merge issues 2015-01-23 12:28:27 +11:00
Shannon c94eff9089 Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
	src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
	src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs
	src/Umbraco.Tests/Routing/ContentFinderByNiceUrlWithDomainsTests.cs
	src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs
	src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs
	src/Umbraco.Tests/Routing/uQueryGetNodeIdByUrlTests.cs
	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
	src/umbraco.MacroEngines/packages.config
	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
	src/umbraco.cms/businesslogic/Property/Property.cs
	src/umbraco.cms/businesslogic/datatype/DataTypeDefinition.cs
2015-01-23 12:25:07 +11:00
Shannon 9710e6f9e2 refactors where the container is created 2015-01-21 13:21:36 +11:00
Shannon 13a4d5c81c WIP - have added LightInject as a fast and tiny IoC container that is embedded. Have updated all required SingleObjectResolverBase and non lazy ManyObjectResolverBase to use a Container implementation. Have updated the boot managers to use IoC to instantiate all their requirements. This is so much nicer now by using IoC to ctor all of the objects in these resolvers we can get ctor injection OOTB so no more singletons. Need to create resolver to support the lazy resolver with IoC next. Updated IContentFinders, IThumbnailProviders to use ctor injection. 2015-01-21 12:48:08 +11:00
Shannon 215113d635 more unused code removed 2015-01-20 18:17:11 +11:00
Shannon 2342ba5537 removes old unused code 2015-01-20 18:15:22 +11:00
Shannon f6a547d681 Merge remote-tracking branch 'origin/7.3.0' into dev-v8 2015-01-19 19:10:56 +11:00
Shannon 631c8e3944 fixes up some tests 2015-01-19 19:03:58 +11:00
Shannon 6ad895d7db Fixes merge issues - proj now builds (not sure if it works yet though) 2015-01-19 13:38:51 +11:00
Shannon f9159a0afc Merge remote-tracking branch 'origin/7.3.0' into dev-v8
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Core/CoreBootManager.cs
	src/Umbraco.Core/DataTypesResolver.cs
	src/Umbraco.Core/PropertyEditors/PropertyEditorValueConvertersResolver.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/CodeFirst/Definitions/ContentTypeDefinitionFactory.cs
	src/Umbraco.Tests/CodeFirst/TypeInheritanceTest.cs
	src/Umbraco.Tests/Macros/MacroTests.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
	src/Umbraco.Tests/Plugins/PluginManagerTests.cs
	src/Umbraco.Tests/Plugins/TypeFinderTests.cs
	src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs
	src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
	src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadStylesheetProperty.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadStylesheets.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadTemplates.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/settings/stylesheet/property/EditStyleSheetProperty.aspx.cs
	src/umbraco.cms/businesslogic/CMSNode.cs
	src/umbraco.cms/businesslogic/propertytype/propertytype.cs
	src/umbraco.cms/businesslogic/web/StyleSheet.cs
	src/umbraco.editorControls/tinyMCE3/TinyMCE.cs
2015-01-19 13:16:56 +11:00
Shannon 02a903f77b Merge remote-tracking branch 'origin/dev-v7' into dev-v8
Conflicts:
	build/UmbracoVersion.txt
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/UmbracoHelper.cs
	src/Umbraco.Web/umbraco.presentation/CompatibilityHelper.cs
	src/Umbraco.Web/umbraco.presentation/library.cs
	src/Umbraco.Web/umbraco.presentation/macro.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/umbraco.MacroEngines/RazorDynamicNode/DynamicBackingItem.cs
	src/umbraco.MacroEngines/app.config
	src/umbraco.MacroEngines/packages.config
	src/umbraco.MacroEngines/umbraco.MacroEngines.csproj
	src/umbraco.cms/businesslogic/Packager/Installer.cs
	src/umbraco.editorControls/app.config
	src/umbraco.editorControls/packages.config
	src/umbraco.editorControls/umbraco.editorControls.csproj
	src/umbraco.providers/app.config
2015-01-19 13:11:51 +11:00
Shannon 7a53fa3ba7 remove more unused code 2014-11-21 17:42:05 +11:00
Shannon 3cd949d49c Completes: U4-5861 and removes the very old legacy umbraco context, server, request, etc... stuff 2014-11-21 17:19:06 +11:00
Shannon 072c77989f Completes: U4-5415, almost completes U4-5416 2014-11-21 17:05:39 +11:00
Shannon 9cc584ae52 Completes: U4-5484 Remove /base REST support 2014-11-21 16:39:27 +11:00
Shannon c3523a09ec WIP WIP WIP. Started working on U4-5648 which led to quite a lot of other things, once IDataType was removed (U4-5858), this lead to U4-5546, U4-5416, U4-5484, U4-5805. So much of this stuff is etched deep into the codebase, so nice to get rid of it. Had to remove the codefirst tests too for now since they relied on old apis and we don't really support it/use it. Commented out all of the code relating to the document type editor UI bits since they need to be rewritten and removed. 2014-11-21 16:34:47 +11:00
Shannon 854bf5acbf remove more obsolete code 2014-11-14 18:48:42 +11:00
Shannon 1e7197d28c removes obsolete io classes 2014-11-14 18:45:29 +11:00
Shannon acfa63f592 removes a ton more of the legacy tinymce files 2014-11-14 18:41:34 +11:00
Shannon c839264ad8 Removes more old tinymce files, removes unused js files, removes unused search controls 2014-11-14 18:39:13 +11:00
Shannon ae79a7cd7a Completes: U4-5810 Remove umbraco.providers assembly and classes - old membership providers 2014-11-14 18:26:01 +11:00
Shannon 4fce47cff3 Completes: U4-5808 All old legacy 'datatypes' since they are not supported or used 2014-11-14 18:22:31 +11:00
Shannon 07fdd81801 Fixes up a bunch of code errors with 'hiding' members, i'm actually surprised our sln even built with this sort of stuff 2014-11-14 18:10:41 +11:00
Shannon bdcf8f8fc0 Removes more unused code 2014-11-14 17:57:44 +11:00
Shannon c08db70e82 Removing more unused code and working on U4-5805 2014-11-14 17:52:18 +11:00
Shannon 1d9da125c4 Removing more unused code and working on U4-5808 2014-11-14 17:49:10 +11:00
Shannon 0ff5c72862 Removing unused code and also working on U4-5805 2014-11-14 17:46:21 +11:00
Shannon 6a7c7d396b Completes: U4-5807 2014-11-14 17:27:07 +11:00
Shannon fbb023f844 working on U4-5648 Remove legacy razor macro's entirely - removes lots of legacy 2014-11-14 17:15:38 +11:00
Shannon d7948a79e2 working on U4-5648 Remove legacy razor macro's entirely - removes old config section, bumps version to 8 2014-11-14 15:11:46 +11:00
Shannon fba48cb845 fixes dotless dependencies so it builds 2014-11-14 14:46:25 +11:00
Shannon ed518feb4c working on U4-5648 Remove legacy razor macro's entirely 2014-11-14 14:24:35 +11:00
Shannon 5aeecf7701 working on U4-5648 Remove legacy razor macro's entirely 2014-11-14 14:05:46 +11:00
Shannon b7bc98fccc removes legacy RazorBuildProvider 2014-11-14 13:46:37 +11:00
5628 changed files with 215740 additions and 340759 deletions
+15 -1
View File
@@ -8,9 +8,23 @@ root = true
# Use 4 spaces as indentation
[*]
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 4
# Trim trailing whitespace, limited support.
# https://github.com/editorconfig/editorconfig/wiki/Property-research:-Trim-trailing-spaces
trim_trailing_whitespace = true
trim_trailing_whitespace = true
[*.{cs,vb}]
dotnet_style_predefined_type_for_locals_parameters_members = true:error
dotnet_naming_rule.private_members_with_underscore.symbols = private_fields
dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _
+42 -12
View File
@@ -1,29 +1,49 @@
#
# Umbraco Cms Git Ignore
#
# common files
*.obj
*.pdb
*.user
*.aps
*.pch
*.vspscc
*.orig
*.suo
*.vs10x
*.ndproj
# common directories
.DS_Store
._.DS_Store
[Bb]in
.vs/
/local/
# build directories
[Bb]in/
[Db]ebug*/
obj/
[Rr]elease*/
obj/
# tools
_ReSharper*/
_NCrunch_*/
*.ncrunchsolution
*.ncrunchsolution.user
*.ncrunchproject
*.crunchsolution.cache
tools/NDepend/
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
*.suo
[sS]ource
[sS]andbox
umbraco.config
*.vs10x
App_Data/TEMP/*
[Uu]mbraco/[Pp]resentation/[Uu]mbraco/[Pp]lugins/*
[Uu]mbraco/[Pp]resentation/[Uu]ser[Cc]ontrols/*
@@ -46,12 +66,11 @@ src/Umbraco.Web.UI/Web.*.config.transformed
umbraco/presentation/umbraco/plugins/uComponents/uComponentsInstaller.ascx
umbraco/presentation/packages/uComponents/MultiNodePicker/CustomTreeService.asmx
*.ncrunchsolution
src/Umbraco.Tests/config/applications.config
src/Umbraco.Tests/config/trees.config
src/Umbraco.Web.UI/web.config
src/Umbraco.Web.UI/Config/ClientDependency.config
*.orig
src/Umbraco.Tests/config/404handlers.config
src/Umbraco.Web.UI/[Vv]iews/*.cshtml
src/Umbraco.Web.UI/[Vv]iews/*.vbhtml
@@ -89,17 +108,16 @@ src/Umbraco.Web.UI/[Uu]mbraco/[Aa]ssets/*
src/Umbraco.Web.UI.Client/[Bb]uild/*
src/Umbraco.Web.UI.Client/[Bb]uild/[Bb]elle/
src/Umbraco.Web.UI/[Uu]ser[Cc]ontrols/
src/Umbraco.Web.UI.Client/src/[Ll]ess/*.css
tools/NDepend/
src/Umbraco.Web.UI/App_Plugins/*
src/*.psess
src/*.vspx
src/Umbraco.Web.UI/[Uu]mbraco/[Jj]s/routes.js.*
NDependOut/*
*.ndproj
QueryResult.htm
*.ndproj
src/Umbraco.Web.UI/[Uu]mbraco/[Aa]ssets/*
src/Umbraco.Web.UI/[Uu]mbraco/[Ll]ib/*
src/Umbraco.Web.UI/[Uu]mbraco/[Vv]iews/**/*.html
@@ -113,6 +131,10 @@ build/ApiDocs/*
build/ApiDocs/Output/*
src/Umbraco.Web.UI.Client/bower_components/*
/src/Umbraco.Web.UI/Umbraco/preview
/src/Umbraco.Web.UI/Umbraco/preview.old
# ignore rule for clearing out Belle (avoid rebuilding all the time)
preserve.belle
#Ignore Rule for output of generated documentation files from Grunt docserve
src/Umbraco.Web.UI.Client/docs/api
@@ -125,18 +147,26 @@ src/*.boltdata/
src/umbraco.sln.ide/*
src/.vs/
src/Umbraco.Web.UI/umbraco/js/install.loader.js
src/Umbraco.Web.UI/js/*
src/Umbraco.Tests/media
tools/docfx/*
apidocs/_site/*
src/*/project.lock.json
src/.idea/*
apidocs/api/*
build/docs.zip
build/ui-docs.zip
build/csharp-docs.zip
.vs/
src/packages/
src/PrecompiledWeb/*
# build
build.out/
build.tmp/
build/Modules/*/temp/
build/hooks/
build/temp/
# eof
+20 -42
View File
@@ -6,19 +6,13 @@ Umbraco Cms Build
To build Umbraco, fire PowerShell and move to Umbraco's repository root (the directory that contains `src`, `build`, `README.md`...). There, trigger the build with the following command:
build\build.ps1
build/build.ps1
By default, this builds the current version. It is possible to specify a different version as a parameter to the build script:
build\build.ps1 7.6.44
Valid version strings are defined in the `Set-UmbracoVersion` documentation below.
## PowerShell Quirks
There is a good chance that running `build.ps1` ends up in error, with messages such as
>The file ...\build\build.ps1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies.
>The file ...\build.ps1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies.
PowerShell has *Execution Policies* that may prevent the script from running. You can check the current policies with:
@@ -42,7 +36,7 @@ Alternatively, you can do it at machine level, from within an elevated PowerShel
And *then* the script should run. It *might* however still complain about executing scripts, with messages such as:
>Security warning - Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning message. Do you want to run ...\build\build.ps1?
>Security warning - Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning message. Do you want to run ...\build.ps1?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"):
This is usually caused by the scripts being *blocked*. And that usually happens when the source code has been downloaded as a Zip file. When Windows downloads Zip files, they are marked as *blocked* (technically, they have a Zone.Identifier alternate data stream, with a value of "3" to indicate that they were downloaded from the Internet). And when such a Zip file is un-zipped, each and every single file is also marked as blocked.
@@ -51,30 +45,20 @@ The best solution is to unblock the Zip file before un-zipping: right-click the
PS> Get-ChildItem -Recurse *.* | Unblock-File
## Notes
## Git Quirks
Git might have issues dealing with long file paths during build. You may want/need to enable `core.longpaths` support (see [this page](https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) for details).
# Build
# Build Infrastructure
The Umbraco Build solution relies on a PowerShell module. The module needs to be imported into PowerShell. From within Umbraco's repository root:
The Umbraco Build infrastructure relies on a PowerShell object. The object can be retrieved with:
build\build.ps1 -ModuleOnly
$ubuild = build/build.ps1 -get
Or the abbreviated form:
build\build.ps1 -mo
Once the module has been imported, a set of commands are added to PowerShell.
## Get-UmbracoBuildEnv
Gets the Umbraco build environment ie NuGet, Semver, Visual Studio, etc. Downloads things that can be downloaded such as NuGet. Examples:
$uenv = Get-UmbracoBuildEnv
Write-Host $uenv.SolutionRoot
&$uenv.NuGet help
The object exposes various properties and methods that can be used to fine-grain build Umbraco. Some, but not all, of them are detailed below.
## Properties
The object exposes the following properties:
* `SolutionRoot`: the absolute path to the solution root
@@ -92,11 +76,11 @@ The Visual Studio object is `null` when Visual Studio has not been detected (eg
* `Minor`: Visual Studio minor version
* `MsBUild`: the absolute path to the MsBuild executable
## Get-UmbracoVersion
## GetUmbracoVersion
Gets an object representing the current Umbraco version. Example:
$v = Get-UmbracoVersion
$v = $ubuild.GetUmbracoVersion()
Write-Host $v.Semver
The object exposes the following properties:
@@ -106,28 +90,24 @@ The object exposes the following properties:
* `Comment`: the pre release part of the version (eg `alpha02`)
* `Build`: the build number part of the version (eg `1234`)
## Set-UmbracoVersion
## SetUmbracoVersion
Modifies Umbraco files with the new version.
>This entirely replaces the legacy `UmbracoVersion.txt` file.
>This entirely replaces the legacy `UmbracoVersion.txt` file. Do *not* edit version infos in files.
The version must be a valid semver version. It can include a *pre release* part (eg `alpha02`) and/or a *build number* (eg `1234`). Examples:
Set-UmbracoVersion 7.6.33
Set-UmbracoVersion 7.6.33-alpha02
Set-UmbracoVersion 7.6.33+1234
Set-UmbracoVersion 7.6.33-beta05+5678
$ubuild.SetUmbracoVersion("7.6.33")
$ubuild.SetUmbracoVersion("7.6.33-alpha.2")
$ubuild.SetUmbracoVersion("7.6.33+1234")
$ubuild.SetUmbracoVersion("7.6.33-beta.5+5678")
Note that `Set-UmbracoVersion` enforces a slightly more restrictive naming scheme than what semver would tolerate. The pre release part can only be composed of a-z and 0-9, therefore `alpha033` is considered valid but not `alpha.033` nor `alpha033-preview` nor `RC2` (would need to be lowercased `rc2`).
>It is considered best to add trailing zeroes to pre releases, else NuGet gets the order of versions wrong. So if you plan to have more than 10, but no more that 100 alpha versions, number the versions `alpha00`, `alpha01`, etc.
## Build-Umbraco
## Build
Builds Umbraco. Temporary files are generated in `build.tmp` while the actual artifacts (zip files, NuGet packages...) are produced in `build.out`. Example:
Build-Umbraco
$ubuild.Build()
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
@@ -181,6 +161,4 @@ We should increment versions as soon as a version is released. Ie, as soon as `7
NuGet / NuSpec consistency checks are performed in tests. We should move it so it is done as part of the PowerShell script even before we try to compile and run the tests.
There are still a few commands in `build` (to build docs, install Git or cleanup the install) that will need to be migrated to PowerShell.
/eof
+80
View File
@@ -0,0 +1,80 @@
# Code of Conduct
## 1. Purpose
A primary goal of Umbraco CMS is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
We invite all those who participate in Umbraco CMS to help us create safe and positive experiences for everyone.
## 2. Open Source Citizenship
A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
## 3. Expected Behavior
The following behaviors are expected and requested of all community members:
* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.
## 4. Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying sexually explicit or violent material.
* Posting or threatening to post other peoples personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someones consent before touching them.
* Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks and presentations.
## 5. Consequences of Unacceptable Behavior
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
Anyone asked to stop unacceptable behavior is expected to comply immediately.
If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
## 6. Reporting Guidelines
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. Please contact Sebastiaan Janssen - [sj@umbraco.dk](mailto:sj@umbraco.dk).
Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.
## 7. Addressing Grievances
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Umbraco with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
## 8. Scope
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venuesonline and in-personas well as in all one-on-one communications pertaining to community business.
This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.
## 9. Contact info
Sebastiaan Janssen - [sj@umbraco.dk](mailto:sj@umbraco.dk)
## 10. License and attribution
This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).
Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).
Retrieved on November 22, 2016 from [http://citizencodeofconduct.org/](http://citizencodeofconduct.org/)
+209
View File
@@ -0,0 +1,209 @@
# Contributing to Umbraco CMS
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to Umbraco CMS.
These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
Remember, we're a friendly bunch and are happy with whatever contribution you might provide. Below are guidelines for success that we've gathered over the years. If you choose to ignore them then we still love you 💖.
#### Table Of Contents
__[Quick start guide for Umbraco v8](https://github.com/umbraco/Umbraco-CMS/blob/temp8/V8_GETTING_STARTED.md)__
[Code of Conduct](#code-of-conduct)
[How Can I Contribute?](#how-can-i-contribute)
* [Reporting Bugs](#reporting-bugs)
* [Suggesting Enhancements](#suggesting-enhancements)
* [Your First Code Contribution](#your-first-code-contribution)
* [Pull Requests](#pull-requests)
[Styleguides](#styleguides)
[What should I know before I get started?](#what-should-i-know-before-i-get-started)
* [Working with the source code](#working-with-the-source-code)
* [What branch should I target for my contributions?](#what-branch-should-i-target-for-my-contributions)
* [Building Umbraco from source code](#building-umbraco-from-source-code)
* [Keeping your Umbraco fork in sync with the main repository](#keeping-your-umbraco-fork-in-sync-with-the-main-repository)
[How do I even begin?](#how-do-i-even-begin)
[Problems?](#problems)
[Credits](#credits)
## Code of Conduct
This project and everyone participating in it is governed by the [our Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Sebastiaan Janssen - sj@umbraco.dk](mailto:sj@umbraco.dk).
## How Can I Contribute?
### Reporting Bugs
This section guides you through submitting a bug report for Umbraco CMS. Following these guidelines helps maintainers and the community understand your report 📝, reproduce the behavior 💻 💻, and find related reports 🔎.
Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](http://issues.umbraco.org/issues#newissue=61-30118), the information it asks for helps us resolve issues faster.
> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
##### Before Submitting A Bug Report
* Most importantly, check **if you can reproduce the problem** in the [latest version of Umbraco](https://our.umbraco.org/download/). We might have already fixed your particular problem.
* It also helps tremendously to check if the issue you're experiencing is present in **a clean install** of the Umbraco version you're currently using. Custom code can have side-effects that don't occur in a clean install.
* **Use the Google**. Whatever you're experiencing, Google it plus "Umbraco" - usually you can get some pretty good hints from the search results, including open issues and further troubleshooting hints.
* If you do find and existing issue has **and the issue is still open**, add a comment to the existing issue if you have additional information. If you have the same problem and no new info to add, just "star" the issue.
Explain the problem and include additional details to help maintainers reproduce the problem. The following is a long description which we've boiled down into a few very simple question in the issue tracker when you create a new issue. We're listing the following hints to indicate that the most successful reports usually have a lot of this ground covered:
* **Use a clear and descriptive title** for the issue to identify the problem.
* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining which steps you took in the backoffice to get to a certain undesireable result, e.g. you created a document type, inherting 3 levels deep, added a certain datatype, tried to save it and you got an error.
* **Provide specific examples to demonstrate the steps**. If you wrote some code, try to provide a code sample as specific as possible to be able to reproduce the behavior.
* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
* **Explain which behavior you expected to see instead and why.**
Provide more context by answering these questions:
* **Can you reproduce the problem** when `debug="false"` in your `web.config` file?
* **Did the problem start happening recently** (e.g. after updating to a new version of Umbraco) or was this always a problem?
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
Include details about your configuration and environment:
* **Which version of Umbraco are you using?**
* **What is the environment you're using Umbraco in?** Is this a problem on your local machine or on a server. Tell us about your configuration: Windows version, IIS/IISExpress, database type, etc.
* **Which packages do you have installed?**
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion for Atom, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion 📝 and find related suggestions 🔎.
Most of the suggestions in the [reporting bugs](#reporting-bugs) section also count for suggesting enhancements.
Some additional hints that may be helpful:
* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of Umbraco which the suggestion is related to.
* **Explain why this enhancement would be useful to most Umbraco users** and isn't something that can or should be implemented as a [community package](https://our.umbraco.org/projects/).
### Your First Code Contribution
Unsure where to begin contributing to Umbraco? You can start by looking through [these `Up for grabs` and issues](http://issues.umbraco.org/issues/U4?q=%28project%3A+%7BU4%7D+Difficulty%3A+%7BVery+Easy%7D+%23Easy+%23Unresolved+Priority%3A+Normal+%23Major+%23Show-stopper+State%3A+-%7BIn+Progress%7D+sort+by%3A+votes+Affected+versions%3A+-6.*+Affected+versions%3A+-4.*%29+OR+%28tag%3A+%7BUp+For+Grabs%7D+%23Unresolved+%29).
The issue list is sorted by total number of upvotes. While not perfect, number of upvotes is a reasonable proxy for impact a given change will have.
### Pull Requests
The most successful pull requests usually look a like this:
* Fill in the required template
* Include screenshots and animated GIFs in your pull request whenever possible.
* Unit tests, while optional are awesome, thank you!
* New code is commented with documentation from which [the reference documentation](https://our.umbraco.org/documentation/Reference/) is generated
Again, these are guidelines, not strict requirements.
## Styleguides
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a `.editorconfig` file so that Visual Studio knows what to do with whitespace, line endings, etc.
## What should I know before I get started?
### Working with the source code
Some parts of our source code is over 10 years old now. And when we say "old", we mean "mature" of course!
There's two big areas that you should know about:
1. The Umbraco backoffice is a extensible AngularJS app and requires you to run a `gulp dev` command while you're working with it, so changes are copied over to the appropriate directories and you can refresh your browser to view the results of your changes.
You may need to run the following commands to set up gulp properly:
```
npm cache clean
npm install -g bower
npm install -g gulp
npm install -g gulp-cli
npm install
gulp build
```
2. "The rest" is a C# based codebase, with some traces of our WebForms past but mostly ASP.NET MVC based these days. You can make changes, build them in Visual Studio, and hit `F5` to see the result.
To find the general areas of something you're looking to fix or improve, have a look at the following two parts of the API documentation.
* [The AngularJS based backoffice files](https://our.umbraco.org/apidocs/ui/#/api) (to be found in `src\Umbraco.Web.UI.Client\src`)
* [The rest](https://our.umbraco.org/apidocs/csharp/)
### What branch should I target for my contributions?
We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `dev-v7`. Whatever the default is, that's where we'd like you to target your contributions.
![What branch do you want me to target?](tools/contributing/defaultbranch.png)
### Building Umbraco from source code
The easiest way to get started is to run `build.bat` which will build both the backoffice (also known as "Belle") and the Umbraco core. You can then easily start debugging from Visual Studio, or if you need to debug Belle you can run `gulp dev` in `src\Umbraco.Web.UI.Client`. See [this page](BUILD.md) for more details.
Alternatively, you can open `src\umbraco.sln` in Visual Studio 2017 ([the community edition is free](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) for you to use to contribute to Open Source projects). In Visual Studio, find the Task Runner Explorer (in the View menu under Other Windows) and run the build task under the gulpfile.
![Gulp build in Visual Studio](tools/contributing/gulpbuild.png)
After this build completes, you should be able to hit `F5` in Visual Studio to build and run the project. A IISExpress webserver will start and the Umbraco installer will pop up in your browser, follow the directions there to get a working Umbraco install up and running.
### Keeping your Umbraco fork in sync with the main repository
We recommend you sync with our repository before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier.
Also, if you've submitted a pull request three weeks ago and want to work on something new, you'll want to get the latest code to build against of course.
To sync your fork with this original one, you'll have to add the upstream url, you only have to do this once:
```
git remote add upstream https://github.com/umbraco/Umbraco-CMS.git
```
Then when you want to get the changes from the main repository:
```
git fetch upstream
git rebase upstream/dev-v7
```
In this command we're syncing with the `dev-v7` branch, but you can of course choose another one if needed.
(More info on how this works: [http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated](http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated))
## How do I even begin?
Great question! The short version goes like this:
* **Fork** - create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS)
![Fork the repository](tools/contributing/forkrepository.png)
* **Clone** - when GitHub has created your fork, you can clone it in your favorite Git tool
![Clone the fork](tools/contributing/clonefork.png)
* **Build** - build your fork of Umbraco locally as described in [building Umbraco from source code](#building-umbraco-from-source-code)
* **Change** - make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will happily give feedback
* **Commit** - done? Yay! 🎉 It is recommended to create a new branch now and name it after the issue you're fixing, we usually follow the format: `temp-U4-12345`. This means it's a temporary branch for the particular issue you're working on, in this case `U4-12345`
* **Push** - great, now you can push the changes up to your fork on GitHub
* **Create pull request** - exciting! You're ready to show us your changes (or not quite ready, you just need some feedback to progress). GitHub has picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go.
![Create a pull request](tools/contributing/createpullrequest.png)
The Umbraco development team can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request you to make some additional changes.
If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco!
Not all changes are wanted so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes at this and we'll be nice about it, thanking you for spending your valueable time.
Remember, if an issue is in the `Up for grabs` list or you've asked for some feedback before you send us a PR, your PR will not be closed as unwanted.
## Problems?
Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"](https://our.umbraco.org/forum/contributing-to-umbraco-cms/) forum, the team monitors that one closely!
## Credits
This contribution guide borrows heavily from the excellent work on [the Atom contribution guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md). A big [#h5yr](http://h5yr.com/) to them!
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
this is Umbraco's NuGet configuration,
content of this file is merged with the system-wide configuration,
at %APPDATA%\NuGet\NuGet.config
-->
<packageSources>
<add key="UmbracoCoreMyGet" value="https://www.myget.org/F/umbracocore/api/v3/index.json" />
<add key="ExamineAppVeyor" value="https://ci.appveyor.com/nuget/examine-f73l6qv0oqfh/" />
</packageSources>
</configuration>
+11
View File
@@ -0,0 +1,11 @@
### Prerequisites
- [ ] I have written a descriptive pull-request title
- [ ] I have linked this PR to an issue on the tracker at http://issues.umbraco.org
### Description
<!-- A description of the changes proposed in the pull-request -->
<!-- Thanks for contributing to Umbraco CMS! -->
+16 -19
View File
@@ -1,4 +1,6 @@
[![Build status](https://ci.appveyor.com/api/projects/status/6by6harxtxt0ocdx/branch/dev-v7?svg=true)](https://ci.appveyor.com/project/Umbraco/umbraco-cms-b2cri/branch/dev-v7)
_Looking for Umbraco version 7? [Click here](https://github.com/umbraco/Umbraco-CMS) to go to the v7 branch_
__Ready to try out Version 8? [See the quick start guide](https://github.com/umbraco/Umbraco-CMS/blob/temp8/V8_GETTING_STARTED.md).__
Umbraco CMS
===========
@@ -6,21 +8,14 @@ The friendliest, most flexible and fastest growing ASP.NET CMS used by more than
[![ScreenShot](vimeo.png)](https://vimeo.com/172382998/)
## Umbraco CMS ##
## Umbraco CMS
Umbraco is a free open source Content Management System built on the ASP.NET platform. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.
## Building Umbraco from source ##
The easiest way to get started is to run `build.bat` which will build both the backoffice (also known as "Belle") and the Umbraco core. You can then easily start debugging from Visual Studio, or if you need to debug Belle you can run `gulp dev` in `src\Umbraco.Web.UI.Client`. See [this page](BUILD.md) for more details.
Note that you can always [download a nightly build](http://nightly.umbraco.org/?container=umbraco-750) so you don't have to build the code yourself.
## Watch an introduction video ##
## Watch an introduction video
[![ScreenShot](http://umbraco.com/images/whatisumbraco.png)](https://umbraco.tv/videos/umbraco-v7/content-editor/basics/introduction/cms-explanation/)
## Umbraco - The Friendly CMS ##
## Umbraco - The Friendly CMS
For the first time on the Microsoft platform, there is a free user and developer friendly CMS that makes it quick and easy to create websites - or a breeze to build complex web applications. Umbraco has award-winning integration capabilities and supports ASP.NET MVC or Web Forms, including User and Custom Controls, out of the box.
@@ -30,22 +25,24 @@ Used by more than 443,000 active websites including Carlsberg, Segway, Amazon an
To view more examples, please visit [https://umbraco.com/why-umbraco/#caseStudies](https://umbraco.com/why-umbraco/#caseStudies)
## Why Open Source? ##
## Why Open Source?
As an Open Source platform, Umbraco is more than just a CMS. We are transparent with our roadmap for future versions, our incremental sprint planning notes are publicly accessible and community contributions and packages are available for all to use.
## Downloading ##
## Trying out Umbraco CMS
The downloadable Umbraco releases live at [https://our.umbraco.org/download](https://our.umbraco.org/download).
[Umbraco Cloud](https://umbraco.com) is the easiest and fastest way to use Umbraco yet with full support for all your custom .NET code and intergrations. You're up and running in less than a minute and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14 day trial, no credit card needed.
## Forums ##
If you want to DIY you can [download Umbraco](https://our.umbraco.org/download) either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host yourself and handling deployments and upgrades is all down to you.
Peer-to-peer support is available 24/7 at the community forum on [https://our.umbraco.org](https://our.umbraco.org).
## Community
## Contribute to Umbraco ##
Our friendly community is available 24/7 at the community hub we call ["Our Umbraco"](https://our.umbraco.org). Our Umbraco feature forums for questions and answers, documentation, downloadable plugins for Umbraco and a rich collection of community resources.
Umbraco is contribution focused and community driven. If you want to contribute back to Umbraco please check out our [guide to contributing](https://our.umbraco.org/contribute).
## Contribute to Umbraco
## Found a bug? ##
Umbraco is contribution focused and community driven. If you want to contribute back to Umbraco please check out our [guide to contributing](CONTRIBUTING.md).
## Found a bug?
Another way you can contribute to Umbraco is by providing issue reports. For information on how to submit an issue report refer to our [online guide for reporting issues](https://our.umbraco.org/contribute/report-an-issue-or-request-a-feature).
+30
View File
@@ -0,0 +1,30 @@
## A quick start guide for getting up and runnning with Umbraco v8
### What you need:
* [Visual Studio 2017 Community (Free)](https://www.visualstudio.com/vs/community/), or Professional, Enterprise, etc...
* .NET Framework 4.7.2 installed, get it here: https://www.microsoft.com/net/download/thank-you/net472?survey=false
* .NET Framework 4.7.2 developer pack, get it here: https://www.microsoft.com/net/download/thank-you/net472-developer-pack _(be sure this is the ENU file which will be named `NDP472-DevPack-ENU.exe`)_
* Clone the Umbraco repository and ensure you have the `temp8` branch checked out
### Start the solution
* Open the `/src/umbraco.sln` Visual Studio solution
* Start the solution (easiest way is to use `ctrl + F5`)
* When the solution is first built this may take some time since it will restore all nuget, npm and bower packages, build the .net solution and also build the angular solution.
* When the website starts you'll see the Umbraco installer and just follow the prompts
* Your all set!
### Making code changes
* _The process for making code changes in v8 is the same as v7_
* Any .NET changes you make you just need to compile
* Any Angular/JS changes you make you will need to make sure you are running the Gulp build. Easiest way to do this is from within Visual Studio in the `Task Runner Explorer`. You can find this window by pressing `ctrl + q` and typing in `Task Runner Explorer`. In this window you'll see all Gulp tasks, double click on the `dev` task, this will compile the angular solution and start a file watcher, then any html/js changes you make are automatically built.
* When making js changes, you should have the chrome developer tools open to ensure that cache is disabled
### What to work on?
We are keeping track of [known issues and limitations here](http://issues.umbraco.org/issue/U4-11279). These line items will eventually be turned into actual tasks to be worked on. Feel free to help us keep this list updated if you find issues and even help fix some of these items. If there is a particular item you'd like to help fix please mention this on the task and we'll create a sub task for the item to continue discussion there.
There's [a list of tasks for v8 that haven't been completed](http://issues.umbraco.org/issues/U4?q=Due+in+version%3A+8.0.0+%23Unresolved+). If you are interested in helping out with any of these please mention this on the task. This list will be constantly updated as we begin to document and design some of the other tasks that still need to get done.
-62
View File
@@ -1,62 +0,0 @@
version: '{build}'
shallow_clone: true
init:
- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
build_script:
- cmd: >-
SET SLN=%CD%
SET SRC=%SLN%\src
SET PACKAGES=%SRC%\packages
CD build
SET "release="
FOR /F "skip=1 delims=" %%i IN (UmbracoVersion.txt) DO IF NOT DEFINED release SET "release=%%i"
ECHO "Restoring NuGet into %PACKAGES%"
%SRC%\.nuget\NuGet.exe sources Add -Name MyGetUmbracoCore -Source https://www.myget.org/F/umbracocore/api/v2/ >NUL
%SRC%\.nuget\NuGet.exe restore %SRC%\umbraco.sln -Verbosity Quiet -NonInteractive -PackagesDirectory %PACKAGES%
ECHO Building Release %release% build%APPVEYOR_BUILD_NUMBER%
SET PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH%
SET MSBUILD="C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe"
XCOPY "%SRC%\Umbraco.Tests\unit-test-log4net.CI.config" "%SRC%\Umbraco.Tests\unit-test-log4net.config" /Y
%MSBUILD% "%SLN%/src/Umbraco.Tests/Umbraco.Tests.csproj" /consoleloggerparameters:Summary;ErrorsOnly;WarningsOnly /p:NugetPackagesDirectory=%PACKAGES%
build.bat -integration -release:%release% -comment:build%APPVEYOR_BUILD_NUMBER% -nugetfolder:%PACKAGES%
test:
assemblies: src\Umbraco.Tests\bin\Debug\Umbraco.Tests.dll
artifacts:
- path: build\UmbracoCms.*
name: UmbracoFiles
- path: build\msbuild.log
name: BuildLog
deploy:
- provider: AzureBlob
storage_account_name: umbraconightlies
storage_access_key:
secure: bmEMml2SF7QLHULiePa/a01XOeIa2SxJeXuaZ+1R27b+Vb2nNUQVYiPlUyF2cZAFSHI/zO/LekRsVU1rTescGhJjF7SSjKybymI3p+F/OWpwqiu2WfFee1ofXBFx8QHw
container: umbraco-750
artifact: UmbracoFiles
on:
branch: dev-v7
notifications:
- provider: Slack
auth_token:
secure: v2csJi2V5ghR0rPdODK8GJdOGNCA+XaK84iQ9MdPOClqB+VU+40ybdKp6gPirGSH
channel: '#build-umbraco-core'
on_build_success: false
on_build_failure: true
on_build_status_changed: false
-14
View File
@@ -1,14 +0,0 @@
@ECHO OFF
powershell .\build\build.ps1
IF ERRORLEVEL 1 (
GOTO :error
) ELSE (
GOTO :EOF
)
:error
ECHO.
ECHO Can not run build\build.ps1.
ECHO If this is due to a SecurityError then please refer to BUILD.md for help!
ECHO.
@@ -1,111 +0,0 @@
#
function Build-UmbracoDocs
{
$uenv = Get-UmbracoBuildEnv
$src = "$($uenv.SolutionRoot)\src"
$out = "$($uenv.SolutionRoot)\build.out"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$buildTemp = "$PSScriptRoot\temp"
$cache = 2
Prepare-Build -keep $uenv
################ Do the UI docs
# get a temp clean node env (will restore)
Sandbox-Node $uenv
Write-Host "Executing gulp docs"
push-location "$($uenv.SolutionRoot)\src\Umbraco.Web.UI.Client"
write "node version is:" > $tmp\belle-docs.log
&node -v >> $tmp\belle-docs.log 2>&1
write "npm version is:" >> $tmp\belle-docs.log 2>&1
&npm -v >> $tmp\belle-docs.log 2>&1
write "executing npm install" >> $tmp\belle-docs.log 2>&1
&npm install >> $tmp\belle-docs.log 2>&1
write "executing bower install" >> $tmp\belle-docs.log 2>&1
&npm install -g bower >> $tmp\belle-docs.log 2>&1
write "installing gulp" >> $tmp\belle-docs.log 2>&1
&npm install -g gulp >> $tmp\belle-docs.log 2>&1
write "installing gulp-cli" >> $tmp\belle-docs.log 2>&1
&npm install -g gulp-cli --quiet >> $tmp\belle-docs.log 2>&1
write "building docs using gulp" >> $tmp\belle-docs.log 2>&1
&gulp docs >> $tmp\belle-docs.log 2>&1
pop-location
Write-Host "Completed gulp docs build"
# fixme - should we filter the log to find errors?
#get-content .\build.tmp\belle-docs.log | %{ if ($_ -match "build") { write $_}}
# change baseUrl
$baseUrl = "https://our.umbraco.org/apidocs/ui/"
$indexPath = "$src/Umbraco.Web.UI.Client/docs/api/index.html"
(Get-Content $indexPath).Replace("location.href.replace(rUrl, indexFile)", "'$baseUrl'") `
| Set-Content $indexPath
# restore
Restore-Node
# zip
&$uenv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*" `
> $null
################ Do the c# docs
Write-Host "Build C# documentation"
# Build the solution in debug mode
# FIXME no only a simple compilation should be enough!
# FIXME we MUST handle msbuild & co error codes!
# FIXME deal with weird things in gitconfig?
#Build-Umbraco -Configuration Debug
Restore-NuGet $uenv
Compile-Umbraco $uenv "Debug" # FIXME different log file!
Restore-WebConfig "$src\Umbraco.Web.UI"
# ensure we have docfx
Get-DocFx $uenv $buildTemp
# clear
$docFxOutput = "$($uenv.SolutionRoot)\apidocs\_site"
if (test-path($docFxOutput))
{
Remove-Directory $docFxOutput
}
# run
$docFxJson = "$($uenv.SolutionRoot)\apidocs\docfx.json"
push-location "$($uenv.SolutionRoot)\build" # silly docfx.json wants this
Write-Host "Run DocFx metadata"
Write-Host "Logging to $tmp\docfx.metadata.log"
&$uenv.DocFx metadata $docFxJson > "$tmp\docfx.metadata.log"
Write-Host "Run DocFx build"
Write-Host "Logging to $tmp\docfx.build.log"
&$uenv.DocFx build $docFxJson > "$tmp\docfx.build.log"
pop-location
# zip
&$uenv.Zip a -tzip -r "$out\csharp-docs.zip" "$docFxOutput\*.*" `
> $null
}
function Get-DocFx($uenv, $buildTemp)
{
$docFx = "$buildTemp\docfx"
if (-not (test-path $docFx))
{
Write-Host "Download DocFx..."
$source = "https://github.com/dotnet/docfx/releases/download/v2.19.2/docfx.zip"
Invoke-WebRequest $source -OutFile "$buildTemp\docfx.zip"
&$uenv.Zip x "$buildTemp\docfx.zip" -o"$buildTemp\docfx" -aos > $nul
Remove-File "$buildTemp\docfx.zip"
}
$uenv | add-member -memberType NoteProperty -name DocFx -value "$docFx\docfx.exe"
}
@@ -1,181 +0,0 @@
#
# Get-UmbracoBuildEnv
# Gets the Umbraco build environment
# Downloads tools if necessary
#
function Get-UmbracoBuildEnv
{
# store tools in the module's directory
# and cache them for two days
$path = "$PSScriptRoot\temp"
$cache = 2
if (-not (test-path $path))
{
mkdir $path > $null
}
# ensure we have NuGet
$nuget = "$path\nuget.exe"
$source = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
if ((test-path $nuget) -and ((ls $nuget).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $nuget
}
if (-not (test-path $nuget))
{
Write-Host "Download NuGet..."
Invoke-WebRequest $source -OutFile $nuget
}
# ensure we have 7-Zip
$sevenZip = "$path\7za.exe"
if ((test-path $sevenZip) -and ((ls $sevenZip).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $sevenZip
}
if (-not (test-path $sevenZip))
{
Write-Host "Download 7-Zip..."
&$nuget install 7-Zip.CommandLine -OutputDirectory $path -Verbosity quiet
$dir = ls "$path\7-Zip.CommandLine.*" | sort -property Name -descending | select -first 1
$file = ls -path "$dir" -name 7za.exe -recurse
$file = ls -path "$dir" -name 7za.exe -recurse | select -first 1 #A select is because there is tools\7za.exe & tools\x64\7za.exe
mv "$dir\$file" $sevenZip
Remove-Directory $dir
}
# ensure we have vswhere
$vswhere = "$path\vswhere.exe"
if ((test-path $vswhere) -and ((ls $vswhere).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $vswhere
}
if (-not (test-path $vswhere))
{
Write-Host "Download VsWhere..."
&$nuget install vswhere -OutputDirectory $path -Verbosity quiet
$dir = ls "$path\vswhere.*" | sort -property Name -descending | select -first 1
$file = ls -path "$dir" -name vswhere.exe -recurse
mv "$dir\$file" $vswhere
Remove-Directory $dir
}
# ensure we have semver
$semver = "$path\Semver.dll"
if ((test-path $semver) -and ((ls $semver).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $semver
}
if (-not (test-path $semver))
{
Write-Host "Download Semver..."
&$nuget install semver -OutputDirectory $path -Verbosity quiet
$dir = ls "$path\semver.*" | sort -property Name -descending | select -first 1
$file = "$dir\lib\net452\Semver.dll"
if (-not (test-path $file))
{
Write-Error "Failed to file $file"
return
}
mv "$file" $semver
Remove-Directory $dir
}
try
{
[Reflection.Assembly]::LoadFile($semver) > $null
}
catch
{
Write-Error -Exception $_.Exception -Message "Failed to load $semver"
break
}
# ensure we have node
$node = "$path\node-v6.9.1-win-x86"
$source = "http://nodejs.org/dist/v6.9.1/node-v6.9.1-win-x86.7z"
if (-not (test-path $node))
{
Write-Host "Download Node..."
Invoke-WebRequest $source -OutFile "$path\node-v6.9.1-win-x86.7z"
&$sevenZip x "$path\node-v6.9.1-win-x86.7z" -o"$path" -aos > $nul
Remove-File "$path\node-v6.9.1-win-x86.7z"
}
# note: why? node already brings everything we need!
## ensure we have npm
#$npm = "$path\npm.*"
#$getNpm = $true
#if (test-path $npm)
#{
# $getNpm = $false
# $tmpNpm = ls "$path\npm.*" | sort -property Name -descending | select -first 1
# if ($tmpNpm.CreationTime -lt [DateTime]::Now.AddDays(-$cache))
# {
# $getNpm = $true
# }
# else
# {
# $npm = $tmpNpm.ToString()
# }
#}
#if ($getNpm)
#{
# Write-Host "Download Npm..."
# &$nuget install npm -OutputDirectory $path -Verbosity quiet
# $npm = ls "$path\npm.*" | sort -property Name -descending | select -first 1
# $npm.CreationTime = [DateTime]::Now
# $npm = $npm.ToString()
#}
# find visual studio
# will not work on VSO but VSO does not need it
$vsPath = ""
$vsVer = ""
$msBuild = $null
&$vswhere | foreach {
if ($_.StartsWith("installationPath:")) { $vsPath = $_.SubString("installationPath:".Length).Trim() }
if ($_.StartsWith("installationVersion:")) { $vsVer = $_.SubString("installationVersion:".Length).Trim() }
}
if ($vsPath -ne "")
{
$vsVerParts = $vsVer.Split('.')
$vsMajor = [int]::Parse($vsVerParts[0])
$vsMinor = [int]::Parse($vsVerParts[1])
if ($vsMajor -eq 15) {
$msBuild = "$vsPath\MSBuild\$vsMajor.0\Bin"
}
elseif ($vsMajor -eq 14) {
$msBuild = "c:\Program Files (x86)\MSBuild\$vsMajor\Bin"
}
else
{
$msBuild = $null
}
}
$vs = $null
if ($msBuild)
{
$vs = new-object -typeName PsObject
$vs | add-member -memberType NoteProperty -name Path -value $vsPath
$vs | add-member -memberType NoteProperty -name Major -value $vsMajor
$vs | add-member -memberType NoteProperty -name Minor -value $vsMinor
$vs | add-member -memberType NoteProperty -name MsBuild -value "$msBuild\MsBuild.exe"
}
$solutionRoot = Get-FullPath "$PSScriptRoot\..\..\.."
$uenv = new-object -typeName PsObject
$uenv | add-member -memberType NoteProperty -name SolutionRoot -value $solutionRoot
$uenv | add-member -memberType NoteProperty -name VisualStudio -value $vs
$uenv | add-member -memberType NoteProperty -name NuGet -value $nuget
$uenv | add-member -memberType NoteProperty -name Zip -value $sevenZip
$uenv | add-member -memberType NoteProperty -name VsWhere -value $vswhere
$uenv | add-member -memberType NoteProperty -name Semver -value $semver
$uenv | add-member -memberType NoteProperty -name NodePath -value $node
#$uenv | add-member -memberType NoteProperty -name NpmPath -value $npm
return $uenv
}
@@ -1,26 +0,0 @@
#
# Get-UmbracoVersion
# Gets the Umbraco version
#
function Get-UmbracoVersion
{
$uenv = Get-UmbracoBuildEnv
# parse SolutionInfo and retrieve the version string
$filepath = "$($uenv.SolutionRoot)\src\SolutionInfo.cs"
$text = [System.IO.File]::ReadAllText($filepath)
$match = [System.Text.RegularExpressions.Regex]::Matches($text, "AssemblyInformationalVersion\(`"(.+)?`"\)")
$version = $match.Groups[1]
# semver-parse the version string
$semver = [SemVer.SemVersion]::Parse($version)
$release = "" + $semver.Major + "." + $semver.Minor + "." + $semver.Patch
$versions = new-object -typeName PsObject
$versions | add-member -memberType NoteProperty -name Semver -value $semver
$versions | add-member -memberType NoteProperty -name Release -value $release
$versions | add-member -memberType NoteProperty -name Comment -value $semver.PreRelease
$versions | add-member -memberType NoteProperty -name Build -value $semver.Build
return $versions
}
@@ -1,30 +0,0 @@
# finds msbuild
function Get-VisualStudio($vswhere)
{
$vsPath = ""
$vsVer = ""
&$vswhere | foreach {
if ($_.StartsWith("installationPath:")) { $vsPath = $_.SubString("installationPath:".Length).Trim() }
if ($_.StartsWith("installationVersion:")) { $vsVer = $_.SubString("installationVersion:".Length).Trim() }
}
if ($vsPath -eq "") { return $null }
$vsVerParts = $vsVer.Split('.')
$vsMajor = [int]::Parse($vsVerParts[0])
$vsMinor = [int]::Parse($vsVerParts[1])
if ($vsMajor -eq 15) {
$msBuild = "$vsPath\MSBuild\$vsMajor.$vsMinor\Bin"
}
elseif ($vsMajor -eq 14) {
$msBuild = "c:\Program Files (x86)\MSBuild\$vsMajor\Bin"
}
else { return $null }
$msBuild = "$msBuild\MsBuild.exe"
$vs = new-object -typeName PsObject
$vs | add-member -memberType NoteProperty -name Path -value $vsPath
$vs | add-member -memberType NoteProperty -name Major -value $vsMajor
$vs | add-member -memberType NoteProperty -name Minor -value $vsMinor
$vs | add-member -memberType NoteProperty -name MsBuild -value $msBuild
return $vs
}
@@ -1,30 +0,0 @@
#
# Set-UmbracoContinuousVersion
# Sets the Umbraco version for continuous integration
#
# -Version <version>
# where <version> is a Semver valid version
# eg 1.2.3, 1.2.3-alpha, 1.2.3-alpha+456
#
# -BuildNumber <buildNumber>
# where <buildNumber> is a string coming from the build server
# eg 34, 126, 1
#
function Set-UmbracoContinuousVersion
{
param (
[Parameter(Mandatory=$true)]
[string]
$version,
[Parameter(Mandatory=$true)]
[string]
$buildNumber
)
Write-Host "Version is currently set to $version"
$umbracoVersion = "$($version.Trim())-alpha$($buildNumber)"
Write-Host "Setting Umbraco Version to $umbracoVersion"
Set-UmbracoVersion $umbracoVersion
}
@@ -1,117 +0,0 @@
#
# Set-UmbracoVersion
# Sets the Umbraco version
#
# -Version <version>
# where <version> is a Semver valid version
# eg 1.2.3, 1.2.3-alpha, 1.2.3-alpha+456
#
function Set-UmbracoVersion
{
param (
[Parameter(Mandatory=$true)]
[string]
$version
)
$uenv = Get-UmbracoBuildEnv
try
{
[Reflection.Assembly]::LoadFile($uenv.Semver) > $null
}
catch
{
Write-Error "Failed to load $uenv.Semver"
break
}
# validate input
$ok = [Regex]::Match($version, "^[0-9]+\.[0-9]+\.[0-9]+(\-[a-z0-9]+)?(\+[0-9]+)?$")
if (-not $ok.Success)
{
Write-Error "Invalid version $version"
break
}
# parse input
try
{
$semver = [SemVer.SemVersion]::Parse($version)
}
catch
{
Write-Error "Invalid version $version"
break
}
#
$release = "" + $semver.Major + "." + $semver.Minor + "." + $semver.Patch
# edit files and set the proper versions and dates
Write-Host "Update UmbracoVersion.cs"
Replace-FileText "$($uenv.SolutionRoot)\src\Umbraco.Core\Configuration\UmbracoVersion.cs" `
"(\d+)\.(\d+)\.(\d+)(.(\d+))?" `
"$release"
Replace-FileText "$($uenv.SolutionRoot)\src\Umbraco.Core\Configuration\UmbracoVersion.cs" `
"CurrentComment { get { return `"(.+)`"" `
"CurrentComment { get { return `"$($semver.PreRelease)`""
Write-Host "Update SolutionInfo.cs"
Replace-FileText "$($uenv.SolutionRoot)\src\SolutionInfo.cs" `
"AssemblyFileVersion\(`"(.+)?`"\)" `
"AssemblyFileVersion(`"$release`")"
Replace-FileText "$($uenv.SolutionRoot)\src\SolutionInfo.cs" `
"AssemblyInformationalVersion\(`"(.+)?`"\)" `
"AssemblyInformationalVersion(`"$semver`")"
$year = [System.DateTime]::Now.ToString("yyyy")
Replace-FileText "$($uenv.SolutionRoot)\src\SolutionInfo.cs" `
"AssemblyCopyright\(`"Copyright © Umbraco (\d{4})`"\)" `
"AssemblyCopyright(`"Copyright © Umbraco $year`")"
# edit csproj and set IIS Express port number
# this is a raw copy of ReplaceIISExpressPortNumber.exe
# it probably can be achieved in a much nicer way - l8tr
$source = @"
using System;
using System.IO;
using System.Xml;
using System.Globalization;
namespace Umbraco
{
public static class PortUpdater
{
public static void Update(string path, string release)
{
XmlDocument xmlDocument = new XmlDocument();
string fullPath = Path.GetFullPath(path);
xmlDocument.Load(fullPath);
int result = 1;
int.TryParse(release.Replace(`".`", `"`"), out result);
while (result < 1024)
result *= 10;
XmlNode xmlNode1 = xmlDocument.GetElementsByTagName(`"IISUrl`").Item(0);
if (xmlNode1 != null)
xmlNode1.InnerText = `"http://localhost:`" + (object) result;
XmlNode xmlNode2 = xmlDocument.GetElementsByTagName(`"DevelopmentServerPort`").Item(0);
if (xmlNode2 != null)
xmlNode2.InnerText = result.ToString((IFormatProvider) CultureInfo.InvariantCulture);
xmlDocument.Save(fullPath);
}
}
}
"@
$assem = (
"System.Xml",
"System.IO",
"System.Globalization"
)
Write-Host "Update Umbraco.Web.UI.csproj"
add-type -referencedAssemblies $assem -typeDefinition $source -language CSharp
$csproj = "$($uenv.SolutionRoot)\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj"
[Umbraco.PortUpdater]::Update($csproj, $release)
return $semver
}
@@ -1,615 +0,0 @@
# Umbraco.Build.psm1
#
# $env:PSModulePath = "$pwd\build\Modules\;$env:PSModulePath"
# Import-Module Umbraco.Build -Force -DisableNameChecking
#
# PowerShell Modules:
# https://msdn.microsoft.com/en-us/library/dd878324%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
#
# PowerShell Module Manifest:
# https://msdn.microsoft.com/en-us/library/dd878337%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
#
# See also
# http://www.powershellmagazine.com/2014/08/15/pstip-taking-control-of-verbose-and-debug-output-part-5/
. "$PSScriptRoot\Utilities.ps1"
. "$PSScriptRoot\Get-VisualStudio.ps1"
. "$PSScriptRoot\Get-UmbracoBuildEnv.ps1"
. "$PSScriptRoot\Set-UmbracoVersion.ps1"
. "$PSScriptRoot\Set-UmbracoContinuousVersion.ps1"
. "$PSScriptRoot\Get-UmbracoVersion.ps1"
. "$PSScriptRoot\Verify-NuGet.ps1"
. "$PSScriptRoot\Build-UmbracoDocs.ps1"
#
# Prepares the build
#
function Prepare-Build
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
[Alias("k")]
[switch]
$keep = $false
)
Write-Host ">> Prepare Build"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
# clear
Write-Host "Clear folders and files"
Remove-Directory "$src\Umbraco.Web.UI.Client\bower_components"
if (-not $keep)
{
Remove-Directory "$tmp"
Remove-Directory "$out"
}
if (-not (Test-Path "$tmp"))
{
mkdir "$tmp" > $null
}
if (-not (Test-Path "$out"))
{
mkdir "$out" > $null
}
# ensure proper web.config
$webUi = "$src\Umbraco.Web.UI"
Store-WebConfig $webUi
Write-Host "Create clean web.config"
Copy-File "$webUi\web.Template.config" "$webUi\web.config"
}
function Clear-EnvVar($var)
{
$value = [Environment]::GetEnvironmentVariable($var)
if (test-path "env:$var") { rm "env:$var" }
return $value
}
function Set-EnvVar($var, $value)
{
if ($value)
{
[Environment]::SetEnvironmentVariable($var, $value)
}
else
{
if (test-path "env:$var") { rm "env:$var" }
}
}
function Sandbox-Node
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$global:node_path = $env:path
$nodePath = $uenv.NodePath
$gitExe = (get-command git).Source
$gitPath = [System.IO.Path]::GetDirectoryName($gitExe)
$env:path = "$nodePath;$gitPath"
$global:node_nodepath = Clear-EnvVar "NODEPATH"
$global:node_npmcache = Clear-EnvVar "NPM_CONFIG_CACHE"
$global:node_npmprefix = Clear-EnvVar "NPM_CONFIG_PREFIX"
}
function Restore-Node
{
$env:path = $node_path
Set-EnvVar "NODEPATH" $node_nodepath
Set-EnvVar "NPM_CONFIG_CACHE" $node_npmcache
Set-EnvVar "NPM_CONFIG_PREFIX" $node_npmprefix
}
#
# Builds the Belle UI project
#
function Compile-Belle
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
$version # an Umbraco version object (see Get-UmbracoVersion)
)
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$src = "$($uenv.SolutionRoot)\src"
Write-Host ">> Compile Belle"
Write-Host "Logging to $tmp\belle.log"
# get a temp clean node env (will restore)
Sandbox-Node $uenv
push-location "$($uenv.SolutionRoot)\src\Umbraco.Web.UI.Client"
write "node version is:" > $tmp\belle.log
&node -v >> $tmp\belle.log 2>&1
write "npm version is:" >> $tmp\belle.log 2>&1
&npm -v >> $tmp\belle.log 2>&1
write "cleaning npm cache" >> $tmp\belle.log 2>&1
&npm cache clean >> $tmp\belle.log 2>&1
write "installing bower" >> $tmp\belle.log 2>&1
&npm install -g bower >> $tmp\belle.log 2>&1
write "installing gulp" >> $tmp\belle.log 2>&1
&npm install -g gulp >> $tmp\belle.log 2>&1
write "installing gulp-cli" >> $tmp\belle.log 2>&1
&npm install -g gulp-cli --quiet >> $tmp\belle.log 2>&1
write "executing npm install" >> $tmp\belle.log 2>&1
&npm install >> $tmp\belle.log 2>&1
write "executing gulp build for version $version" >> $tmp\belle.log 2>&1
&gulp build --buildversion=$version.Release >> $tmp\belle.log 2>&1
pop-location
# fixme - should we filter the log to find errors?
#get-content .\build.tmp\belle.log | %{ if ($_ -match "build") { write $_}}
# restore
Restore-Node
# setting node_modules folder to hidden
# used to prevent VS13 from crashing on it while loading the websites project
# also makes sure aspnet compiler does not try to handle rogue files and chokes
# in VSO with Microsoft.VisualC.CppCodeProvider -related errors
# use get-item -force 'cos it might be hidden already
write "Set hidden attribute on node_modules"
$dir = get-item -force "$src\Umbraco.Web.UI.Client\node_modules"
$dir.Attributes = $dir.Attributes -bor ([System.IO.FileAttributes]::Hidden)
}
#
# Compiles Umbraco
#
function Compile-Umbraco
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
[string] $buildConfiguration = "Release"
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
if ($uenv.VisualStudio -eq $null)
{
Write-Error "Build environment does not provide VisualStudio."
break
}
$toolsVersion = "4.0"
if ($uenv.VisualStudio.Major -eq 15)
{
$toolsVersion = "15.0"
}
Write-Host ">> Compile Umbraco"
Write-Host "Logging to $tmp\msbuild.umbraco.log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$uenv.VisualStudio.MsBuild "$src\Umbraco.Web.UI\Umbraco.Web.UI.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir=$tmp\bin\\ `
/p:WebProjectOutputDir=$tmp\WebApp\\ `
/p:Verbosity=minimal `
/t:Clean`;Rebuild `
/tv:$toolsVersion `
/p:UmbracoBuild=True `
> $tmp\msbuild.umbraco.log
# /p:UmbracoBuild tells the csproj that we are building from PS
}
#
# Prepare Tests
#
function Prepare-Tests
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
Write-Host ">> Prepare Tests"
# fixme - idea is to avoid rebuilding everything for tests
# but because of our weird assembly versioning (with .* stuff)
# everything gets rebuilt all the time...
#Copy-Files "$tmp\bin" "." "$tmp\tests"
# data
Write-Host "Copy data files"
if (-Not (Test-Path -Path "$tmp\tests\Packaging" ) )
{
Write-Host "Create packaging directory"
mkdir "$tmp\tests\Packaging" > $null
}
Copy-Files "$src\Umbraco.Tests\Packaging\Packages" "*" "$tmp\tests\Packaging\Packages"
# required for package install tests
if (-Not (Test-Path -Path "$tmp\tests\bin" ) )
{
Write-Host "Create bin directory"
mkdir "$tmp\tests\bin" > $null
}
}
#
# Compiles Tests
#
function Compile-Tests
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$tmp\tests"
$buildConfiguration = "Release"
if ($uenv.VisualStudio -eq $null)
{
Write-Error "Build environment does not provide VisualStudio."
break
}
$toolsVersion = "4.0"
if ($uenv.VisualStudio.Major -eq 15)
{
$toolsVersion = "15.0"
}
Write-Host ">> Compile Tests"
Write-Host "Logging to $tmp\msbuild.tests.log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$uenv.VisualStudio.MsBuild "$src\Umbraco.Tests\Umbraco.Tests.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir=$out\\ `
/p:Verbosity=minimal `
/t:Build `
/tv:$toolsVersion `
/p:UmbracoBuild=True `
/p:NugetPackages=$src\packages `
> $tmp\msbuild.tests.log
# /p:UmbracoBuild tells the csproj that we are building from PS
}
#
# Cleans things up and prepare files after compilation
#
function Prepare-Packages
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
Write-Host ">> Prepare Packages"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
$buildConfiguration = "Release"
# restore web.config
Restore-WebConfig "$src\Umbraco.Web.UI"
# cleanup build
Write-Host "Clean build"
Remove-File "$tmp\bin\*.dll.config"
Remove-File "$tmp\WebApp\bin\*.dll.config"
# cleanup presentation
Write-Host "Cleanup presentation"
Remove-Directory "$tmp\WebApp\umbraco.presentation"
# create directories
Write-Host "Create directories"
mkdir "$tmp\Configs" > $null
mkdir "$tmp\Configs\Lang" > $null
mkdir "$tmp\WebApp\App_Data" > $null
#mkdir "$tmp\WebApp\Media" > $null
#mkdir "$tmp\WebApp\Views" > $null
# copy various files
Write-Host "Copy xml documentation"
cp -force "$tmp\bin\*.xml" "$tmp\WebApp\bin"
Write-Host "Copy transformed configs and langs"
# note: exclude imageprocessor/*.config as imageprocessor pkg installs them
Copy-Files "$tmp\WebApp\config" "*.config" "$tmp\Configs" `
{ -not $_.RelativeName.StartsWith("imageprocessor") }
Copy-Files "$tmp\WebApp\config" "*.js" "$tmp\Configs"
Copy-Files "$tmp\WebApp\config\lang" "*.xml" "$tmp\Configs\Lang"
Copy-File "$tmp\WebApp\web.config" "$tmp\Configs\web.config.transform"
Write-Host "Copy transformed web.config"
Copy-File "$src\Umbraco.Web.UI\web.$buildConfiguration.Config.transformed" "$tmp\WebApp\web.config"
# offset the modified timestamps on all umbraco dlls, as WebResources
# break if date is in the future, which, due to timezone offsets can happen.
Write-Host "Offset dlls timestamps"
ls -r "$tmp\*.dll" | foreach {
$_.CreationTime = $_.CreationTime.AddHours(-11)
$_.LastWriteTime = $_.LastWriteTime.AddHours(-11)
}
# copy libs
Write-Host "Copy SqlCE libraries"
Copy-Files "$src\packages\SqlServerCE.4.0.0.1" "*.*" "$tmp\bin" `
{ -not $_.Extension.StartsWith(".nu") -and -not $_.RelativeName.StartsWith("lib\") }
Copy-Files "$src\packages\SqlServerCE.4.0.0.1" "*.*" "$tmp\WebApp\bin" `
{ -not $_.Extension.StartsWith(".nu") -and -not $_.RelativeName.StartsWith("lib\") }
# copy Belle
Write-Host "Copy Belle"
Copy-Files "$src\Umbraco.Web.UI\umbraco\assets" "*" "$tmp\WebApp\umbraco\assets"
Copy-Files "$src\Umbraco.Web.UI\umbraco\js" "*" "$tmp\WebApp\umbraco\js"
Copy-Files "$src\Umbraco.Web.UI\umbraco\lib" "*" "$tmp\WebApp\umbraco\lib"
Copy-Files "$src\Umbraco.Web.UI\umbraco\views" "*" "$tmp\WebApp\umbraco\views"
Copy-Files "$src\Umbraco.Web.UI\umbraco\preview" "*" "$tmp\WebApp\umbraco\preview"
}
#
# Creates the Zip packages
#
function Package-Zip
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
Write-Host ">> Create Zip packages"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
Write-Host "Zip all binaries"
&$uenv.Zip a -r "$out\UmbracoCms.AllBinaries.$($version.Semver).zip" `
"$tmp\bin\*" `
"-x!dotless.Core.*" `
> $null
Write-Host "Zip cms"
&$uenv.Zip a -r "$out\UmbracoCms.$($version.Semver).zip" `
"$tmp\WebApp\*" `
"-x!dotless.Core.*" "-x!Content_Types.xml" "-x!*.pdb"`
> $null
}
#
# Prepares NuGet
#
function Prepare-NuGet
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
Write-Host ">> Prepare NuGet"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
# add Web.config transform files to the NuGet package
Write-Host "Add web.config transforms to NuGet package"
mv "$tmp\WebApp\Views\Web.config" "$tmp\WebApp\Views\Web.config.transform"
# fixme - that one does not exist in .bat build either?
#mv "$tmp\WebApp\Xslt\Web.config" "$tmp\WebApp\Xslt\Web.config.transform"
}
#
# Restores NuGet
#
function Restore-NuGet
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
Write-Host ">> Restore NuGet"
Write-Host "Logging to $tmp\nuget.restore.log"
&$uenv.NuGet restore "$src\Umbraco.sln" > "$tmp\nuget.restore.log"
}
#
# Copies the Azure Gallery script to output
#
function Prepare-AzureGallery
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
$psScript = "$($uenv.SolutionRoot)\build\azuregalleryrelease.ps1"
Write-Host ">> Copy azuregalleryrelease.ps1 to output folder"
Copy-Item $psScript $out
}
#
# Creates the NuGet packages
#
function Package-NuGet
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
$version # an Umbraco version object (see Get-UmbracoVersion)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
$nuspecs = "$($uenv.SolutionRoot)\build\NuSpecs"
Write-Host ">> Create NuGet packages"
# see https://docs.microsoft.com/en-us/nuget/schema/nuspec
# note - warnings about SqlCE native libs being outside of 'lib' folder,
# nothing much we can do about it as it's intentional yet there does not
# seem to be a way to disable the warning
&$uenv.NuGet Pack "$nuspecs\UmbracoCms.Core.nuspec" `
-Properties BuildTmp="$tmp" `
-Version $version.Semver.ToString() `
-Symbols -Verbosity quiet -outputDirectory $out
&$uenv.NuGet Pack "$nuspecs\UmbracoCms.nuspec" `
-Properties BuildTmp="$tmp" `
-Version $version.Semver.ToString() `
-Verbosity quiet -outputDirectory $out
}
#
# Builds Umbraco
#
function Build-Umbraco
{
[CmdletBinding()]
param (
[string]
$target = "all",
[string]
$buildConfiguration = "Release"
)
$target = $target.ToLowerInvariant()
Write-Host ">> Build-Umbraco <$target> <$buildConfiguration>"
Write-Host "Get Build Environment"
$uenv = Get-UmbracoBuildEnv
Write-Host "Get Version"
$version = Get-UmbracoVersion
Write-Host "Version $($version.Semver)"
if ($target -eq "pre-build")
{
Prepare-Build $uenv
#Compile-Belle $uenv $version
# set environment variables
$env:UMBRACO_VERSION=$version.Semver.ToString()
$env:UMBRACO_RELEASE=$version.Release
$env:UMBRACO_COMMENT=$version.Comment
$env:UMBRACO_BUILD=$version.Build
# set environment variable for VSO
# https://github.com/Microsoft/vsts-tasks/issues/375
# https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md
Write-Host ("##vso[task.setvariable variable=UMBRACO_VERSION;]$($version.Semver.ToString())")
Write-Host ("##vso[task.setvariable variable=UMBRACO_RELEASE;]$($version.Release)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_COMMENT;]$($version.Comment)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_BUILD;]$($version.Build)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_TMP;]$($uenv.SolutionRoot)\build.tmp")
}
elseif ($target -eq "pre-tests")
{
Prepare-Tests $uenv
}
elseif ($target -eq "compile-tests")
{
Compile-Tests $uenv
}
elseif ($target -eq "compile-umbraco")
{
Compile-Umbraco $uenv $buildConfiguration
}
elseif ($target -eq "pre-packages")
{
Prepare-Packages $uenv
}
elseif ($target -eq "pre-nuget")
{
Prepare-NuGet $uenv
}
elseif ($target -eq "restore-nuget")
{
Restore-NuGet $uenv
}
elseif ($target -eq "pkg-zip")
{
Package-Zip $uenv
}
elseif ($target -eq "compile-belle")
{
Compile-Belle $uenv $version
}
elseif ($target -eq "prepare-azuregallery")
{
Prepare-AzureGallery $uenv
}
elseif ($target -eq "all")
{
Prepare-Build $uenv
Restore-NuGet $uenv
Compile-Belle $uenv $version
Compile-Umbraco $uenv $buildConfiguration
Prepare-Tests $uenv
Compile-Tests $uenv
# not running tests...
Prepare-Packages $uenv
Package-Zip $uenv
Verify-NuGet $uenv
Prepare-NuGet $uenv
Package-NuGet $uenv $version
Prepare-AzureGallery $uenv
}
else
{
Write-Error "Unsupported target `"$target`"."
}
}
#
# export functions
#
Export-ModuleMember -function Get-UmbracoBuildEnv
Export-ModuleMember -function Set-UmbracoVersion
Export-ModuleMember -function Set-UmbracoContinuousVersion
Export-ModuleMember -function Get-UmbracoVersion
Export-ModuleMember -function Build-Umbraco
Export-ModuleMember -function Build-UmbracoDocs
Export-ModuleMember -function Verify-NuGet
#eof
-95
View File
@@ -1,95 +0,0 @@
# returns the full path if $file is relative to $pwd
function Get-FullPath($file)
{
$path = [System.IO.Path]::Combine($pwd, $file)
$path = [System.IO.Path]::GetFullPath($path)
return $path
}
# removes a directory, doesn't complain if it does not exist
function Remove-Directory($dir)
{
remove-item $dir -force -recurse -errorAction SilentlyContinue > $null
}
# removes a file, doesn't complain if it does not exist
function Remove-File($file)
{
remove-item $file -force -errorAction SilentlyContinue > $null
}
# copies a file, creates target dir if needed
function Copy-File($source, $target)
{
$ignore = new-item -itemType file -path $target -force
cp -force $source $target
}
# copies files to a directory
function Copy-Files($source, $select, $target, $filter)
{
$files = ls -r "$source\$select"
$files | foreach {
$relative = $_.FullName.SubString($source.Length+1)
$_ | add-member -memberType NoteProperty -name RelativeName -value $relative
}
if ($filter -ne $null) {
$files = $files | where $filter
}
$files |
foreach {
if ($_.PsIsContainer) {
$ignore = new-item -itemType directory -path "$target\$($_.RelativeName)" -force
}
else {
Copy-File $_.FullName "$target\$($_.RelativeName)"
}
}
}
# regex-replaces content in a file
function Replace-FileText($filename, $source, $replacement)
{
$filepath = Get-FullPath $filename
$text = [System.IO.File]::ReadAllText($filepath)
$text = [System.Text.RegularExpressions.Regex]::Replace($text, $source, $replacement)
$utf8bom = New-Object System.Text.UTF8Encoding $true
[System.IO.File]::WriteAllText($filepath, $text, $utf8bom)
}
# store web.config
function Store-WebConfig($webUi)
{
if (test-path "$webUi\web.config")
{
if (test-path "$webUi\web.config.temp-build")
{
Write-Host "Found existing web.config.temp-build"
$i = 0
while (test-path "$webUi\web.config.temp-build.$i")
{
$i = $i + 1
}
Write-Host "Save existing web.config as web.config.temp-build.$i"
Write-Host "(WARN: the original web.config.temp-build will be restored during post-build)"
mv "$webUi\web.config" "$webUi\web.config.temp-build.$i"
}
else
{
Write-Host "Save existing web.config as web.config.temp-build"
Write-Host "(will be restored during post-build)"
mv "$webUi\web.config" "$webUi\web.config.temp-build"
}
}
}
# restore web.config
function Restore-WebConfig($webUi)
{
if (test-path "$webUi\web.config.temp-build")
{
Write-Host "Restoring existing web.config"
Remove-File "$webUi\web.config"
mv "$webUi\web.config.temp-build" "$webUi\web.config"
}
}
@@ -1,444 +0,0 @@
#
# Verify-NuGet
#
function Format-Dependency
{
param ( $d )
$m = $d.Id + " "
if ($d.MinInclude) { $m = $m + "[" }
else { $m = $m + "(" }
$m = $m + $d.MinVersion
if ($d.MaxVersion -ne $d.MinVersion) { $m = $m + "," + $d.MaxVersion }
if ($d.MaxInclude) { $m = $m + "]" }
else { $m = $m + ")" }
return $m
}
function Write-NuSpec
{
param ( $name, $deps )
Write-Host ""
Write-Host "$name NuSpec dependencies:"
foreach ($d in $deps)
{
$m = Format-Dependency $d
Write-Host " $m"
}
}
function Write-Package
{
param ( $name, $pkgs )
Write-Host ""
Write-Host "$name packages:"
foreach ($p in $pkgs)
{
Write-Host " $($p.Id) $($p.Version)"
}
}
function Verify-NuGet
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
if ($uenv -eq $null)
{
$uenv = Get-UmbracoBuildEnv
}
$source = @"
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using Semver;
namespace Umbraco.Build
{
public class NuGet
{
public static Dependency[] GetNuSpecDependencies(string filename)
{
NuSpec nuspec;
var serializer = new XmlSerializer(typeof(NuSpec));
using (var reader = new StreamReader(filename))
{
nuspec = (NuSpec) serializer.Deserialize(reader);
}
var nudeps = nuspec.Metadata.Dependencies;
var deps = new List<Dependency>();
foreach (var nudep in nudeps)
{
var dep = new Dependency();
dep.Id = nudep.Id;
var parts = nudep.Version.Split(',');
if (parts.Length == 1)
{
dep.MinInclude = parts[0].StartsWith("[");
dep.MaxInclude = parts[0].EndsWith("]");
SemVersion version;
if (!SemVersion.TryParse(parts[0].Substring(1, parts[0].Length-2).Trim(), out version)) continue;
dep.MinVersion = dep.MaxVersion = version; //parts[0].Substring(1, parts[0].Length-2).Trim();
}
else
{
SemVersion version;
if (!SemVersion.TryParse(parts[0].Substring(1).Trim(), out version)) continue;
dep.MinVersion = version; //parts[0].Substring(1).Trim();
if (!SemVersion.TryParse(parts[1].Substring(0, parts[1].Length-1).Trim(), out version)) continue;
dep.MaxVersion = version; //parts[1].Substring(0, parts[1].Length-1).Trim();
dep.MinInclude = parts[0].StartsWith("[");
dep.MaxInclude = parts[1].EndsWith("]");
}
deps.Add(dep);
}
return deps.ToArray();
}
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(/*this*/ IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> knownKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (knownKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
public static Package[] GetProjectsPackages(string src, string[] projects)
{
var l = new List<Package>();
foreach (var project in projects)
{
var path = Path.Combine(src, project);
var packageConfig = Path.Combine(path, "packages.config");
if (File.Exists(packageConfig))
ReadPackagesConfig(packageConfig, l);
var csprojs = Directory.GetFiles(path, "*.csproj");
foreach (var csproj in csprojs)
{
ReadCsProj(csproj, l);
}
}
IEnumerable<Package> p = l.OrderBy(x => x.Id);
p = DistinctBy(p, x => x.Id + ":::" + x.Version);
return p.ToArray();
}
public static object[] GetPackageErrors(Package[] pkgs)
{
return pkgs
.GroupBy(x => x.Id)
.Where(x => x.Count() > 1)
.ToArray();
}
public static object[] GetNuSpecErrors(Package[] pkgs, Dependency[] deps)
{
var d = pkgs.ToDictionary(x => x.Id, x => x.Version);
return deps
.Select(x =>
{
SemVersion v;
if (!d.TryGetValue(x.Id, out v)) return null;
var ok = true;
/*
if (x.MinInclude)
{
if (v < x.MinVersion) ok = false;
}
else
{
if (v <= x.MinVersion) ok = false;
}
if (x.MaxInclude)
{
if (v > x.MaxVersion) ok = false;
}
else
{
if (v >= x.MaxVersion) ok = false;
}
*/
if (!x.MinInclude || v != x.MinVersion) ok = false;
return ok ? null : new { Dependency = x, Version = v };
})
.Where(x => x != null)
.ToArray();
}
/*
public static Package[] GetProjectPackages(string path)
{
var l = new List<Package>();
var packageConfig = Path.Combine(path, "packages.config");
if (File.Exists(packageConfig))
ReadPackagesConfig(packageConfig, l);
var csprojs = Directory.GetFiles(path, "*.csproj");
foreach (var csproj in csprojs)
{
ReadCsProj(csproj, l);
}
return l.ToArray();
}
*/
public static string GetDirectoryName(string filename)
{
return Path.GetFileName(Path.GetDirectoryName(filename));
}
public static void ReadPackagesConfig(string filename, List<Package> packages)
{
//Console.WriteLine("read " + filename);
PackagesConfigPackages pkgs;
var serializer = new XmlSerializer(typeof(PackagesConfigPackages));
using (var reader = new StreamReader(filename))
{
pkgs = (PackagesConfigPackages) serializer.Deserialize(reader);
}
foreach (var p in pkgs.Packages)
{
SemVersion version;
if (!SemVersion.TryParse(p.Version, out version)) continue;
packages.Add(new Package { Id = p.Id, Version = version, Project = GetDirectoryName(filename) });
}
}
public static void ReadCsProj(string filename, List<Package> packages)
{
//Console.WriteLine("read " + filename);
// if xmlns then it's not a VS2017 with PackageReference
var text = File.ReadAllLines(filename);
var line = text.FirstOrDefault(x => x.Contains("<Project"));
if (line == null) return;
if (line.Contains("xmlns")) return;
CsProjProject proj;
var serializer = new XmlSerializer(typeof(CsProjProject));
using (var reader = new StreamReader(filename))
{
proj = (CsProjProject) serializer.Deserialize(reader);
}
foreach (var p in proj.ItemGroups.Where(x => x.Packages != null).SelectMany(x => x.Packages))
{
var sversion = p.VersionE ?? p.VersionA;
SemVersion version;
if (!SemVersion.TryParse(sversion, out version)) continue;
packages.Add(new Package { Id = p.Id, Version = version, Project = GetDirectoryName(filename) });
}
}
public class Dependency
{
public string Id { get; set; }
public SemVersion MinVersion { get; set; }
public SemVersion MaxVersion { get; set; }
public bool MinInclude { get; set; }
public bool MaxInclude { get; set; }
}
public class Package
{
public string Id { get; set; }
public SemVersion Version { get; set; }
public string Project { get; set; }
}
[XmlType(AnonymousType = true, Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd")]
[XmlRoot(Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd", IsNullable = false, ElementName = "package")]
public class NuSpec
{
[XmlElement("metadata")]
public NuSpecMetadata Metadata { get; set; }
}
[XmlType(AnonymousType = true, Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd", TypeName = "metadata")]
public class NuSpecMetadata
{
[XmlArray("dependencies")]
[XmlArrayItem("dependency", IsNullable = false)]
public NuSpecDependency[] Dependencies { get; set; }
}
[XmlType(AnonymousType = true, Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd", TypeName = "dependencies")]
public class NuSpecDependency
{
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "version")]
public string Version { get; set; }
}
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false, ElementName = "packages")]
public class PackagesConfigPackages
{
[XmlElement("package")]
public PackagesConfigPackage[] Packages { get; set; }
}
[XmlType(AnonymousType = true, TypeName = "package")]
public class PackagesConfigPackage
{
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "version")]
public string Version { get; set; }
}
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false, ElementName = "Project")]
public class CsProjProject
{
[XmlElement("ItemGroup")]
public CsProjItemGroup[] ItemGroups { get; set; }
}
[XmlType(AnonymousType = true, TypeName = "ItemGroup")]
public class CsProjItemGroup
{
[XmlElement("PackageReference")]
public CsProjPackageReference[] Packages { get; set; }
}
[XmlType(AnonymousType = true, TypeName = "PackageReference")]
public class CsProjPackageReference
{
[XmlAttribute(AttributeName = "Include")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "Version")]
public string VersionA { get; set; }
[XmlElement("Version")]
public string VersionE { get; set;}
}
}
}
"@
Write-Host ">> Verify NuGet consistency"
$assem = (
"System.Xml",
"System.Core", # "System.Collections.Generic"
"System.Linq",
"System.Xml.Serialization",
"System.IO",
"System.Globalization",
$uenv.Semver
)
try
{
# as long as the code hasn't changed it's fine to re-add, but if the code
# has changed this will throw - better warn the dev that we have an issue
add-type -referencedAssemblies $assem -typeDefinition $source -language CSharp
}
catch
{
if ($_.FullyQualifiedErrorId.StartsWith("TYPE_ALREADY_EXISTS,"))
{ Write-Error "Failed to add type, did you change the code?" }
else
{ Write-Error $_ }
}
if (-not $?) { break }
$nuspecs = (
"UmbracoCms",
"UmbracoCms.Core"
)
$projects = (
"Umbraco.Core",
"Umbraco.Web",
"Umbraco.Web.UI",
"UmbracoExamine"#,
#"Umbraco.Tests",
#"Umbraco.Tests.Benchmarks"
)
$src = "$($uenv.SolutionRoot)\src"
$pkgs = [Umbraco.Build.NuGet]::GetProjectsPackages($src, $projects)
if (-not $?) { break }
#Write-Package "All" $pkgs
$errs = [Umbraco.Build.NuGet]::GetPackageErrors($pkgs)
if (-not $?) { break }
if ($errs.Length -gt 0)
{
Write-Host ""
}
foreach ($err in $errs)
{
Write-Host $err.Key
foreach ($e in $err)
{
Write-Host " $($e.Version) required by $($e.Project)"
}
}
if ($errs.Length -gt 0)
{
Write-Error "Found non-consolidated package dependencies"
break
}
$nuerr = $false
$nupath = "$($uenv.SolutionRoot)\build\NuSpecs"
foreach ($nuspec in $nuspecs)
{
$deps = [Umbraco.Build.NuGet]::GetNuSpecDependencies("$nupath\$nuspec.nuspec")
if (-not $?) { break }
#Write-NuSpec $nuspec $deps
$errs = [Umbraco.Build.NuGet]::GetNuSpecErrors($pkgs, $deps)
if (-not $?) { break }
if ($errs.Length -gt 0)
{
Write-Host ""
Write-Host "$nuspec requires:"
$nuerr = $true
}
foreach ($err in $errs)
{
$m = Format-Dependency $err.Dependency
Write-Host " $m but projects require $($err.Version)"
}
}
if ($nuerr)
{
Write-Error "Found inconsistent NuGet dependencies"
break
}
}
+86 -107
View File
@@ -1,107 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata minClientVersion="3.4.4">
<id>UmbracoCms.Core</id>
<version>7.0.0</version>
<title>Umbraco Cms Core Binaries</title>
<authors>Umbraco HQ</authors>
<owners>Umbraco HQ</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>http://umbraco.com/</projectUrl>
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Contains the core assemblies needed to run Umbraco Cms. This package only contains assemblies and can be used for package development. Use the UmbracoCms-package to setup Umbraco in Visual Studio as an ASP.NET project.</description>
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
<language>en-US</language>
<tags>umbraco</tags>
<dependencies>
<dependency id="log4net" version="[2.0.8,3.0.0)" />
<dependency id="Log4Net.Async" version="[2.0.4,3.0.0)" />
<dependency id="Microsoft.AspNet.Mvc" version="[5.2.3,6.0.0)" />
<dependency id="Microsoft.AspNet.WebApi" version="[5.2.3,6.0.0)" />
<dependency id="Microsoft.AspNet.Identity.Owin" version="[2.2.1, 3.0.0)" />
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.1, 3.0.0)" />
<dependency id="Microsoft.Owin.Security.Cookies" version="[3.1.0, 4.0.0)" />
<dependency id="Microsoft.Owin.Security.OAuth" version="[3.1.0, 4.0.0)" />
<dependency id="Microsoft.Owin.Host.SystemWeb" version="[3.1.0, 4.0.0)" />
<dependency id="MiniProfiler" version="[2.1.0, 3.0.0)" />
<dependency id="HtmlAgilityPack" version="[1.4.9.5, 2.0.0)" />
<dependency id="Lucene.Net" version="[2.9.4.1, 3.0.0.0)" />
<dependency id="SharpZipLib" version="[0.86.0, 1.0.0)" />
<dependency id="MySql.Data" version="[6.9.9, 7.0.0)" />
<dependency id="ClientDependency" version="[1.9.6, 2.0.0)" />
<dependency id="ClientDependency-Mvc5" version="[1.8.0.0, 2.0.0)" />
<dependency id="AutoMapper" version="[3.3.1, 4.0.0)" />
<dependency id="Newtonsoft.Json" version="[10.0.2, 11.0.0)" />
<dependency id="Examine" version="[0.1.89, 1.0.0)" />
<dependency id="ImageProcessor" version="[2.5.6, 3.0.0)" />
<dependency id="ImageProcessor.Web" version="[4.8.7, 5.0.0)" />
<dependency id="semver" version="[1.1.2, 3.0.0)" />
<!-- Markdown can not be updated due to: https://github.com/hey-red/markdownsharp/issues/71#issuecomment-233585487 -->
<dependency id="Markdown" version="[1.14.7, 2.0.0)" />
<dependency id="System.Threading.Tasks.Dataflow" version="[4.7.0, 5.0.0)" />
</dependencies>
</metadata>
<files>
<file src="$BuildTmp$\WebApp\bin\businesslogic.dll" target="lib\net45\businesslogic.dll" />
<file src="$BuildTmp$\WebApp\bin\businesslogic.xml" target="lib\net45\businesslogic.xml" />
<file src="$BuildTmp$\WebApp\bin\cms.dll" target="lib\net45\cms.dll" />
<file src="$BuildTmp$\WebApp\bin\cms.xml" target="lib\net45\cms.xml" />
<file src="$BuildTmp$\WebApp\bin\controls.dll" target="lib\net45\controls.dll" />
<file src="$BuildTmp$\WebApp\bin\controls.xml" target="lib\net45\controls.xml" />
<file src="$BuildTmp$\WebApp\bin\interfaces.dll" target="lib\net45\interfaces.dll" />
<file src="$BuildTmp$\WebApp\bin\interfaces.xml" target="lib\net45\interfaces.xml" />
<file src="$BuildTmp$\WebApp\bin\log4net.dll" target="lib\net45\log4net.dll" />
<file src="$BuildTmp$\WebApp\bin\Microsoft.ApplicationBlocks.Data.dll" target="lib\net45\Microsoft.ApplicationBlocks.Data.dll" />
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.dll" target="lib\net45\SQLCE4Umbraco.dll" />
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.xml" target="lib\net45\SQLCE4Umbraco.xml" />
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.dll" target="lib\net45\System.Data.SqlServerCe.dll" />
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.Entity.dll" target="lib\net45\System.Data.SqlServerCe.Entity.dll" />
<file src="$BuildTmp$\WebApp\bin\TidyNet.dll" target="lib\net45\TidyNet.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net45\Umbraco.Core.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\net45\Umbraco.Core.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.dll" target="lib\net45\umbraco.DataLayer.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.xml" target="lib\net45\umbraco.DataLayer.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.dll" target="lib\net45\umbraco.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.xml" target="lib\net45\umbraco.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.dll" target="lib\net45\umbraco.editorControls.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.xml" target="lib\net45\umbraco.editorControls.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.dll" target="lib\net45\umbraco.MacroEngines.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.xml" target="lib\net45\umbraco.MacroEngines.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.dll" target="lib\net45\umbraco.providers.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.xml" target="lib\net45\umbraco.providers.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.dll" target="lib\net45\Umbraco.Web.UI.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net45\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.dll" target="lib\net45\UmbracoExamine.dll" />
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.xml" target="lib\net45\UmbracoExamine.xml" />
<file src="tools\install.core.ps1" target="tools\install.ps1" />
<!-- Added to be able to produce a symbols package -->
<file src="$BuildTmp$\bin\SQLCE4Umbraco.pdb" target="lib" />
<file src="..\..\src\SQLCE4Umbraco\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\SQLCE4Umbraco" />
<file src="$BuildTmp$\bin\businesslogic.pdb" target="lib" />
<file src="..\..\src\umbraco.businesslogic\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.businesslogic" />
<file src="$BuildTmp$\bin\cms.pdb" target="lib" />
<file src="..\..\src\umbraco.cms\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.cms" />
<file src="$BuildTmp$\bin\controls.pdb" target="lib" />
<file src="..\..\src\umbraco.controls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.controls" />
<file src="$BuildTmp$\bin\interfaces.pdb" target="lib" />
<file src="..\..\src\umbraco.interfaces\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.interfaces" />
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
<file src="..\..\src\Umbraco.Core\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Core" />
<file src="$BuildTmp$\bin\umbraco.DataLayer.pdb" target="lib" />
<file src="..\..\src\umbraco.datalayer\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.datalayer" />
<file src="$BuildTmp$\bin\umbraco.editorControls.pdb" target="lib" />
<file src="..\..\src\umbraco.editorControls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.editorControls" />
<file src="$BuildTmp$\bin\umbraco.MacroEngines.pdb" target="lib" />
<file src="..\..\src\umbraco.MacroEngines\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.MacroEngines" />
<file src="$BuildTmp$\bin\umbraco.providers.pdb" target="lib" />
<file src="..\..\src\umbraco.providers\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.providers" />
<file src="$BuildTmp$\bin\umbraco.pdb" target="lib" />
<file src="..\..\src\Umbraco.Web\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web" />
<file src="$BuildTmp$\bin\Umbraco.Web.UI.pdb" target="lib" />
<file src="..\..\src\Umbraco.Web.UI\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web.UI" />
<file src="$BuildTmp$\bin\UmbracoExamine.pdb" target="lib" />
<file src="..\..\src\UmbracoExamine\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\UmbracoExamine" />
</files>
</package>
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata minClientVersion="3.4.4">
<id>UmbracoCms.Core</id>
<version>8.0.0</version>
<title>Umbraco Cms Core Binaries</title>
<authors>Umbraco HQ</authors>
<owners>Umbraco HQ</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>http://umbraco.com/</projectUrl>
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Contains the core assemblies needed to run Umbraco Cms. This package only contains assemblies and can be used for package development. Use the UmbracoCms-package to setup Umbraco in Visual Studio as an ASP.NET project.</description>
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
<language>en-US</language>
<tags>umbraco</tags>
<dependencies>
<dependency id="AutoMapper" version="[6.2.2,6.666666)" />
<dependency id="ClientDependency" version="[1.9.6,1.666666)" />
<dependency id="ClientDependency-Mvc5" version="[1.8.0,1.666666)" />
<dependency id="CSharpTest.Net.Collections" version="[14.906.1403.1082,14.666666)" />
<dependency id="Examine" version="[1.0.0-beta025,1.666666)" />
<dependency id="HtmlAgilityPack" version="[1.7.2,1.666666)" />
<dependency id="ImageProcessor" version="[2.6.1.19,2.666666)" />
<dependency id="ImageProcessor.Web" version="[4.9.2.19,4.666666)" />
<dependency id="ImageProcessor.Web.Config" version="[2.4.1.19,2.666666)" />
<dependency id="LightInject" version="[5.1.2,5.666666)" />
<dependency id="LightInject.Annotation" version="[1.1.0,1.666666)" />
<dependency id="LightInject.Mvc" version="[2.0.0,2.666666)" />
<dependency id="LightInject.WebApi" version="[2.0.0,2.666666)" />
<dependency id="log4net" version="[2.0.8,2.666666)" />
<dependency id="Log4Net.Async" version="[2.0.4,2.666666)" />
<dependency id="Lucene.Net.Contrib" version="[3.0.3,3.666666)" />
<dependency id="Markdown" version="[2.2.1,2.666666)" />
<dependency id="Microsoft.AspNet.Identity.Owin" version="[2.2.1,2.666666)" />
<dependency id="Microsoft.AspNet.Mvc" version="[5.2.6,5.666666)" />
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.3,2.666666)" />
<dependency id="Microsoft.AspNet.WebApi" version="[5.2.6,5.666666)" />
<dependency id="Microsoft.CodeAnalysis.CSharp" version="[2.8.0,2.666666)" />
<dependency id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="[1.0.8,1.666666)" />
<dependency id="Microsoft.Net.Compilers" version="[2.8.0,2.666666)" />
<dependency id="Microsoft.Owin.Host.SystemWeb" version="[4.0.0,4.666666)" />
<dependency id="Microsoft.Owin.Security.Cookies" version="[4.0.0,4.666666)" />
<dependency id="Microsoft.Owin.Security.OAuth" version="[4.0.0,4.666666)" />
<dependency id="Microsoft.Web.Xdt" version="[2.1.2,2.666666)" />
<dependency id="MiniProfiler" version="[3.2.0.157,3.666666)" />
<dependency id="MySql.Data" version="[6.10.7,6.666666)" />
<dependency id="Newtonsoft.Json" version="[11.0.2,11.666666)" />
<dependency id="NPoco" version="[3.9.3,3.666666)" />
<dependency id="Semver" version="[2.0.4,2.666666)" />
<dependency id="System.Reflection.Primitives" version="[4.3.0,4.666666)" />
<dependency id="System.Runtime.Handles" version="[4.3.0,4.666666)" />
<dependency id="System.Security.Cryptography.X509Certificates" version="[4.3.2,4.666666)" />
<dependency id="System.Threading.Tasks.Dataflow" version="[4.8.0,4.666666)" />
<dependency id="Umbraco.SqlServerCE" version="[4.0.0.1,4.666666)" />
</dependencies>
</metadata>
<files>
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net472\Umbraco.Core.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.dll" target="lib\net472\Umbraco.Web.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.dll" target="lib\net472\Umbraco.Web.UI.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.dll" target="lib\net472\Umbraco.Examine.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.ModelsBuilder.dll" target="lib\net472\Umbraco.ModelsBuilder.dll" />
<!-- docs -->
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\Umbraco.Core.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.xml" target="lib\Umbraco.Web.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.xml" target="lib\Umbraco.Examine.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.ModelsBuilder.xml" target="lib\Umbraco.ModelsBuilder.xml" />
<file src="tools\install.core.ps1" target="tools\install.ps1" />
<!-- symbols -->
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Core\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Core" />
<file src="$BuildTmp$\bin\Umbraco.Web.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Web\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web" />
<file src="$BuildTmp$\bin\Umbraco.Web.UI.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Web.UI\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web.UI" />
<file src="$BuildTmp$\bin\Umbraco.Examine.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.Examine\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Examine" />
<file src="$BuildTmp$\bin\Umbraco.ModelsBuilder.pdb" target="lib" />
<file src="$BuildTmp$\..\src\Umbraco.ModelsBuilder\**\*.cs" exclude="$BuildTmp$\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.ModelsBuilder" />
</files>
</package>
+53 -52
View File
@@ -1,52 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata minClientVersion="3.4.4">
<id>UmbracoCms</id>
<version>7.0.0</version>
<title>Umbraco Cms</title>
<authors>Umbraco HQ</authors>
<owners>Umbraco HQ</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>http://umbraco.com/</projectUrl>
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Installs Umbraco Cms in your Visual Studio ASP.NET project</description>
<summary>Installs Umbraco Cms in your Visual Studio ASP.NET project</summary>
<language>en-US</language>
<tags>umbraco</tags>
<dependencies>
<dependency id="UmbracoCms.Core" version="[$version$]" />
<dependency id="Newtonsoft.Json" version="[10.0.2, 11.0.0)" />
<dependency id="Umbraco.ModelsBuilder" version="[3.0.10, 4.0.0)" />
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.1, 3.0.0)" />
<dependency id="ImageProcessor.Web.Config" version="[2.3.1, 3.0.0)" />
</dependencies>
</metadata>
<files>
<file src="$BuildTmp$\Configs\**" target="Content\Config" exclude="$BuildTmp$\Configs\Web.config.transform" />
<file src="$BuildTmp$\WebApp\Views\**" target="Content\Views" exclude="$BuildTmp$\WebApp\Views\Web.config" />
<file src="$BuildTmp$\WebApp\default.aspx" target="Content\default.aspx" />
<file src="$BuildTmp$\WebApp\Global.asax" target="Content\Global.asax" />
<file src="$BuildTmp$\WebApp\Web.config" target="UmbracoFiles\Web.config" />
<file src="$BuildTmp$\WebApp\App_Browsers\**" target="UmbracoFiles\App_Browsers" />
<file src="$BuildTmp$\WebApp\bin\amd64\**" target="UmbracoFiles\bin\amd64" />
<file src="$BuildTmp$\WebApp\bin\x86\**" target="UmbracoFiles\bin\x86" />
<file src="$BuildTmp$\WebApp\config\splashes\**" target="UmbracoFiles\Config\splashes" />
<file src="$BuildTmp$\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
<file src="$BuildTmp$\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
<file src="$BuildTmp$\WebApp\Media\Web.config" target="Content\Media\Web.config" />
<file src="tools\install.ps1" target="tools\install.ps1" />
<file src="tools\Readme.txt" target="tools\Readme.txt" />
<file src="tools\ReadmeUpgrade.txt" target="tools\ReadmeUpgrade.txt" />
<file src="tools\Web.config.install.xdt" target="Content\Web.config.install.xdt" />
<file src="tools\applications.config.install.xdt" target="Content\config\applications.config.install.xdt" />
<file src="tools\ClientDependency.config.install.xdt" target="Content\config\ClientDependency.config.install.xdt" />
<file src="tools\Dashboard.config.install.xdt" target="Content\config\Dashboard.config.install.xdt" />
<file src="tools\trees.config.install.xdt" target="Content\config\trees.config.install.xdt" />
<file src="tools\umbracoSettings.config.install.xdt" target="Content\config\umbracoSettings.config.install.xdt" />
<file src="tools\Views.Web.config.install.xdt" target="Views\Web.config.install.xdt" />
<file src="tools\processing.config.install.xdt" target="Content\Config\imageprocessor\processing.config.install.xdt" />
<file src="tools\cache.config.install.xdt" target="Content\Config\imageprocessor\cache.config.install.xdt" />
<file src="build\**" target="build" />
</files>
</package>
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata minClientVersion="3.4.4">
<id>UmbracoCms</id>
<version>8.0.0</version>
<title>Umbraco Cms</title>
<authors>Umbraco HQ</authors>
<owners>Umbraco HQ</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>http://umbraco.com/</projectUrl>
<iconUrl>http://umbraco.com/media/357769/100px_transparent.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Installs Umbraco Cms in your Visual Studio ASP.NET project</description>
<summary>Installs Umbraco Cms in your Visual Studio ASP.NET project</summary>
<language>en-US</language>
<tags>umbraco</tags>
<dependencies>
<dependency id="UmbracoCms.Core" version="[$version$]" />
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.3, 3.0.0)" />
</dependencies>
</metadata>
<files>
<file src="$BuildTmp$\Configs\**" target="Content\Config" exclude="$BuildTmp$\Configs\Web.config.transform" />
<file src="$BuildTmp$\WebApp\Views\**" target="Content\Views" exclude="$BuildTmp$\WebApp\Views\Web.config" />
<file src="$BuildTmp$\WebApp\default.aspx" target="Content\default.aspx" />
<file src="$BuildTmp$\WebApp\Global.asax" target="Content\Global.asax" />
<file src="$BuildTmp$\WebApp\Web.config" target="UmbracoFiles\Web.config" />
<file src="$BuildTmp$\WebApp\App_Browsers\**" target="UmbracoFiles\App_Browsers" />
<file src="$BuildTmp$\WebApp\config\splashes\**" target="UmbracoFiles\Config\splashes" />
<file src="$BuildTmp$\WebApp\config\BackOfficeTours\**" target="Content\Config\BackOfficeTours" />
<file src="$BuildTmp$\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
<file src="$BuildTmp$\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
<file src="$BuildTmp$\WebApp\Media\Web.config" target="Content\Media\Web.config" />
<file src="$BuildTmp$\WebApp\App_Plugins\ModelsBuilder\modelsbuilder.htm" target="Content\App_Plugins\ModelsBuilder\modelsbuilder.htm" />
<file src="$BuildTmp$\WebApp\App_Plugins\ModelsBuilder\modelsbuilder.controller.js" target="Content\App_Plugins\ModelsBuilder\modelsbuilder.controller.js" />
<file src="$BuildTmp$\WebApp\App_Plugins\ModelsBuilder\modelsbuilder.resource.js" target="Content\App_Plugins\ModelsBuilder\modelsbuilder.resource.js" />
<file src="$BuildTmp$\WebApp\App_Plugins\ModelsBuilder\package.manifest" target="Content\App_Plugins\ModelsBuilder\package.manifest" />
<file src="tools\install.ps1" target="tools\install.ps1" />
<file src="tools\Readme.txt" target="tools\Readme.txt" />
<file src="tools\ReadmeUpgrade.txt" target="tools\ReadmeUpgrade.txt" />
<file src="tools\Web.config.install.xdt" target="Content\Web.config.install.xdt" />
<file src="tools\applications.config.install.xdt" target="Content\config\applications.config.install.xdt" />
<file src="tools\ClientDependency.config.install.xdt" target="Content\config\ClientDependency.config.install.xdt" />
<file src="tools\Dashboard.config.install.xdt" target="Content\config\Dashboard.config.install.xdt" />
<file src="tools\trees.config.install.xdt" target="Content\config\trees.config.install.xdt" />
<file src="tools\umbracoSettings.config.install.xdt" target="Content\config\umbracoSettings.config.install.xdt" />
<file src="tools\Views.Web.config.install.xdt" target="Views\Web.config.install.xdt" />
<file src="build\**" target="build" />
</files>
</package>
+1 -1
View File
@@ -8,7 +8,7 @@
----------------------------------------------------
*** IMPORTANT NOTICE FOR 7.7 UPGRADES ***
*** IMPORTANT NOTICE FOR UPGRADES FROM VERSIONS BELOW 7.7.0 ***
Be sure to read the version specific upgrade information before proceeding:
https://our.umbraco.org/documentation/Getting-Started/Setup/Upgrading/version-specific#version-7-7-0
+38 -249
View File
@@ -2,9 +2,8 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<configSections xdt:Transform="InsertIfMissing" />
<configSections>
<section name="BaseRestExtensions" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<section name="FileSystemProviders" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<section name="ExamineLuceneIndexSets" type="Examine.LuceneEngine.Config.IndexSets, Examine" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(type,requirePermission)" />
<section name="ExamineLuceneIndexSets" type="Umbraco.Examine.Config.IndexSets, Umbraco.Examine" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(type,requirePermission)" />
<sectionGroup name="applicationSettings" xdt:Locator="Match(name)">
<section name="umbraco.presentation.Properties.Settings" xdt:Locator="Match(name)" xdt:Transform="Remove" />
@@ -12,7 +11,6 @@
<sectionGroup name="system.web.webPages.razor" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<sectionGroup name="umbracoConfiguration" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing">
<section name="settings" type="Umbraco.Core.Configuration.UmbracoSettings.UmbracoSettingsSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="BaseRestExtensions" type="Umbraco.Core.Configuration.BaseRest.BaseRestSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="FileSystemProviders" type="Umbraco.Core.Configuration.FileSystemProvidersSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="dashBoard" type="Umbraco.Core.Configuration.Dashboard.DashboardSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="HealthChecks" type="Umbraco.Core.Configuration.HealthChecks.HealthChecksSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
@@ -29,14 +27,12 @@
<umbracoConfiguration xdt:Transform="InsertIfMissing">
<settings configSource="config\umbracoSettings.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<BaseRestExtensions configSource="config\BaseRestExtensions.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<FileSystemProviders configSource="config\FileSystemProviders.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<dashBoard configSource="config\Dashboard.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<HealthChecks configSource="config\HealthChecks.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
</umbracoConfiguration>
<FileSystemProviders xdt:Transform="Remove" />
<BaseRestExtensions xdt:Transform="Remove" />
<system.data xdt:Transform="InsertIfMissing">
<DbProviderFactories xdt:Transform="InsertIfMissing">
@@ -67,190 +63,6 @@
<profile defaultProvider="DefaultProfileProvider" xdt:Locator="Match(defaultProvider)" xdt:Transform="Remove"/>>
<sessionState customProvider="DefaultSessionProvider" xdt:Locator="Match(customProvider)" xdt:Transform="Remove"/>
<compilation xdt:Transform="InsertIfMissing" />
<compilation>
<assemblies xdt:Transform="InsertIfMissing" />
<assemblies>
<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" />
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Collections.Concurrent, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ComponentModel.Annotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ComponentModel.EventBasedAsync, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Diagnostics.Contracts, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Diagnostics.Debug, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Diagnostics.Tools, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Diagnostics.Tracing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Dynamic.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Globalization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Linq.Expressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Linq.Parallel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Linq.Queryable, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Net.NetworkInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Net.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Net.Requests, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ObjectModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Reflection, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Reflection.Emit, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Reflection.Emit.ILGeneration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Reflection.Emit.Lightweight, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Reflection.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Reflection.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Resources.ResourceManager, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 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.Runtime.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime.InteropServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime.InteropServices.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime.Serialization.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime.Serialization.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Runtime.Serialization.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Security.Principal, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ServiceModel.Duplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ServiceModel.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ServiceModel.NetTcp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ServiceModel.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.ServiceModel.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Text.Encoding, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Text.Encoding.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Text.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Threading, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Threading.Tasks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Threading.Tasks.Parallel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Xml.ReaderWriter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Xml.XDocument, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
<add assembly="System.Xml.XmlSerializer, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" xdt:Locator="Match(assembly)" xdt:Transform="InsertIfMissing" />
</assemblies>
</compilation>
<compilation>
<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" />
<remove assembly="System.Collections" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Collections.Concurrent" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ComponentModel" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ComponentModel.Annotations" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ComponentModel.EventBasedAsync" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Diagnostics.Contracts" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Diagnostics.Debug" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Diagnostics.Tools" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Diagnostics.Tracing" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Dynamic.Runtime" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Globalization" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.IO" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Linq" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Linq.Expressions" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Linq.Parallel" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Linq.Queryable" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Net.NetworkInformation" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Net.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Net.Requests" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ObjectModel" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Reflection" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Reflection.Emit" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Reflection.Emit.ILGeneration" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Reflection.Emit.Lightweight" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Reflection.Extensions" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Reflection.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Resources.ResourceManager" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.Extensions" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.InteropServices" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.InteropServices.WindowsRuntime" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.Numerics" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.Serialization.Json" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.Serialization.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Runtime.Serialization.Xml" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Security.Principal" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ServiceModel.Duplex" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ServiceModel.Http" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ServiceModel.NetTcp" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ServiceModel.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.ServiceModel.Security" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Text.Encoding" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Text.Encoding.Extensions" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Text.RegularExpressions" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Threading" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Threading.Tasks" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Threading.Tasks.Parallel" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Xml.ReaderWriter" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Xml.XDocument" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
<remove assembly="System.Xml.XmlSerializer" xdt:Locator="Match(assembly)" xdt:Transform="Remove" />
</assemblies>
</compilation>
<compilation>
<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)" />
<remove assembly="System.Collections" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Collections.Concurrent" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ComponentModel" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ComponentModel.Annotations" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ComponentModel.EventBasedAsync" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Diagnostics.Contracts" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Diagnostics.Debug" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Diagnostics.Tools" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Diagnostics.Tracing" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Dynamic.Runtime" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Globalization" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.IO" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Linq" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Linq.Expressions" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Linq.Parallel" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Linq.Queryable" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Net.NetworkInformation" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Net.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Net.Requests" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ObjectModel" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Reflection" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Reflection.Emit" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Reflection.Emit.ILGeneration" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Reflection.Emit.Lightweight" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Reflection.Extensions" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Reflection.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Resources.ResourceManager" 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)" />
<remove assembly="System.Runtime.Extensions" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime.InteropServices" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime.InteropServices.WindowsRuntime" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime.Numerics" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime.Serialization.Json" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime.Serialization.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Runtime.Serialization.Xml" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Security.Principal" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ServiceModel.Duplex" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ServiceModel.Http" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ServiceModel.NetTcp" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ServiceModel.Primitives" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.ServiceModel.Security" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Text.Encoding" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Text.Encoding.Extensions" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Text.RegularExpressions" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Threading" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Threading.Tasks" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Threading.Tasks.Parallel" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Xml.ReaderWriter" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Xml.XDocument" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
<remove assembly="System.Xml.XmlSerializer" xdt:Locator="Match(assembly)" xdt:Transform="InsertBefore(/configuration/system.web/compilation/assemblies/add)" />
</assemblies>
</compilation>
<xhtmlConformance xdt:Transform="Remove" />
@@ -276,9 +88,6 @@
<remove name="umbracoRequestModule" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<remove name="viewstateMoverModule" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<remove name="umbracoBaseRequestModule" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<remove name="WebDAVModule" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<!-- Inserts it as the first element. Also see http://stackoverflow.com/a/19041487/5018 -->
<remove name="WebDAVModule" xdt:Locator="Match(name)" xdt:Transform="Insert" />
<add name="umbracoRequestModule" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<add name="viewstateMoverModule" xdt:Locator="Match(name)" xdt:Transform="Remove" />
@@ -341,62 +150,42 @@
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.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"/>
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</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" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0"/>
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845DCD8080CC91" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.1.0" newVersion="1.2.1.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.6.0" newVersion="5.2.6.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.6.0" newVersion="5.2.6.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -416,4 +205,4 @@
</system.webServer>
</location>
</configuration>
</configuration>
+3 -13
View File
@@ -33,26 +33,16 @@ if ($project) {
robocopy $umbracoBinFolder $umbracoBinBackupPath /e /LOG:$copyLogsPath\UmbracoBinBackup.log
# Delete files Umbraco ships with
if(Test-Path $umbracoBinFolder\businesslogic.dll) { Remove-Item $umbracoBinFolder\businesslogic.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\cms.dll) { Remove-Item $umbracoBinFolder\cms.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\controls.dll) { Remove-Item $umbracoBinFolder\controls.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\interfaces.dll) { Remove-Item $umbracoBinFolder\interfaces.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\log4net.dll) { Remove-Item $umbracoBinFolder\log4net.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Microsoft.ApplicationBlocks.Data.dll) { Remove-Item $umbracoBinFolder\Microsoft.ApplicationBlocks.Data.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\SQLCE4Umbraco.dll) { Remove-Item $umbracoBinFolder\SQLCE4Umbraco.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\System.Data.SqlServerCe.dll) { Remove-Item $umbracoBinFolder\System.Data.SqlServerCe.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\System.Data.SqlServerCe.Entity.dll) { Remove-Item $umbracoBinFolder\System.Data.SqlServerCe.Entity.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\TidyNet.dll) { Remove-Item $umbracoBinFolder\TidyNet.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\umbraco.dll) { Remove-Item $umbracoBinFolder\umbraco.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Umbraco.Web.dll) { Remove-Item $umbracoBinFolder\Umbraco.Web.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Umbraco.Core.dll) { Remove-Item $umbracoBinFolder\Umbraco.Core.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\umbraco.DataLayer.dll) { Remove-Item $umbracoBinFolder\umbraco.DataLayer.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\umbraco.editorControls.dll) { Remove-Item $umbracoBinFolder\umbraco.editorControls.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\umbraco.MacroEngines.dll) { Remove-Item $umbracoBinFolder\umbraco.MacroEngines.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Umbraco.ModelsBuilder.dll) { Remove-Item $umbracoBinFolder\Umbraco.ModelsBuilder.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Umbraco.ModelsBuilder.AspNet.dll) { Remove-Item $umbracoBinFolder\Umbraco.ModelsBuilder.AspNet.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\umbraco.providers.dll) { Remove-Item $umbracoBinFolder\umbraco.providers.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Umbraco.Web.UI.dll) { Remove-Item $umbracoBinFolder\Umbraco.Web.UI.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\UmbracoExamine.dll) { Remove-Item $umbracoBinFolder\UmbracoExamine.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\Umbraco.Examine.dll) { Remove-Item $umbracoBinFolder\Umbraco.Examine.dll -Force -Confirm:$false }
# Delete files Umbraco depends upon
$amd64Folder = Join-Path $umbracoBinFolder "amd64"
@@ -102,4 +92,4 @@ if ($project) {
if(Test-Path $umbracoBinFolder\System.Web.WebPages.Deployment.dll) { Remove-Item $umbracoBinFolder\System.Web.WebPages.Deployment.dll -Force -Confirm:$false }
if(Test-Path $umbracoBinFolder\System.Web.WebPages.Razor.dll) { Remove-Item $umbracoBinFolder\System.Web.WebPages.Razor.dll -Force -Confirm:$false }
}
}
}
+41
View File
@@ -98,10 +98,51 @@ if ($project) {
$umbracoUIXMLDestination = Join-Path $projectPath "Umbraco\Config\Create\UI.xml"
Copy-Item $umbracoUIXMLSource $umbracoUIXMLDestination -Force
} else {
# This part only runs for upgrades
$upgradeViewSource = Join-Path $umbracoFolderSource "Views\install\*"
$upgradeView = Join-Path $umbracoFolder "Views\install\"
Write-Host "Copying2 ${upgradeViewSource} to ${upgradeView}"
Copy-Item $upgradeViewSource $upgradeView -Force
Try
{
# Disable tours for upgrades, presumably Umbraco experience is already available
$umbracoSettingsConfigPath = Join-Path $configFolder "umbracoSettings.config"
$content = (Get-Content $umbracoSettingsConfigPath).Replace('<tours enable="true">','<tours enable="false">')
# Saves with UTF-8 encoding without BOM which makes sure Umbraco can still read it
# Reference: https://stackoverflow.com/a/32951824/5018
[IO.File]::WriteAllLines($umbracoSettingsConfigPath, $content)
}
Catch
{
# Not a big problem if this fails, let it go
}
Try
{
$uiXmlConfigPath = Join-Path $umbracoFolder -ChildPath "Config" | Join-Path -ChildPath "create" | Join-Path -ChildPath "UI.xml"
$uiXmlFile = Join-Path $umbracoFolder -ChildPath "Config" | Join-Path -ChildPath "create" | Join-Path -ChildPath "UI.xml"
$uiXml = New-Object System.Xml.XmlDocument
$uiXml.PreserveWhitespace = $true
$uiXml.Load($uiXmlFile)
$createExists = $uiXml.SelectNodes("//nodeType[@alias='macros']/tasks/create")
if($createExists.Count -eq 0)
{
$macrosTasksNode = $uiXml.SelectNodes("//nodeType[@alias='macros']/tasks")
#Creating: <create assembly="umbraco" type="macroTasks" />
$createNode = $uiXml.CreateElement("create")
$createNode.SetAttribute("assembly", "umbraco")
$createNode.SetAttribute("type", "macroTasks")
$macrosTasksNode.AppendChild($createNode)
$uiXml.Save($uiXmlFile)
}
}
Catch { }
}
$installFolder = Join-Path $projectPath "Install"
+2 -5
View File
@@ -79,16 +79,13 @@
<add sortOrder="1" alias="dataTypes" application="developer"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes(sortOrder)" />
<add application="developer" alias="macros" title="Macros" type="umbraco.loadMacros, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2"
<add initialize="true" sortOrder="2" alias="macros" application="developer" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MacroTreeController, umbraco"
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"
xdt:Locator="Match(application,alias,type)"
@@ -5,4 +5,6 @@
</content>
<webservices xdt:Transform="Remove" />
<repositories xdt:Transform="Remove" />
</settings>
+2 -2
View File
@@ -22,7 +22,7 @@ echo Removing bin files
del ..\src\Umbraco.Web.UI\bin\*.*
echo Building solution
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe ..\src\umbraco.sln /t:Clean,Build
"%ProgramFiles(x86)%"\MSBuild\14.0\Bin\MSBuild.exe ..\src\umbraco.sln /t:Clean,Build
echo Resetting installedPackages.config
echo ^<?xml version="1.0" encoding="utf-8"?^>^<packages^>^</packages^> >..\src\Umbraco.Web.UI\App_Data\packages\installed\installedPackages.config
@@ -86,7 +86,7 @@ echo Removing bin files
FOR %%A IN (..\src\Umbraco.Web.UI\bin\*.*) DO DEL %%A
echo Building solution
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe ..\src\umbraco.sln /t:Clean,Build
"%ProgramFiles(x86)%"\MSBuild\14.0\Bin\MSBuild.exe ..\src\umbraco.sln /t:Clean,Build
echo Resetting installedPackages.config
echo ^<?xml version="1.0" encoding="utf-8"?^>^<packages^>^</packages^> >..\src\Umbraco.Web.UI\App_Data\packages\installed\installedPackages.config
+92
View File
@@ -0,0 +1,92 @@
# this script should be dot-sourced into the build.ps1 scripts
# right after the parameters declaration
# ie
# . "$PSScriptRoot\build-bootstrap.ps1"
# THIS FILE IS DISTRIBUTED AS PART OF UMBRACO.BUILD
# DO NOT MODIFY IT - ALWAYS USED THE COMMON VERSION
# ################################################################
# BOOTSTRAP
# ################################################################
# reset errors
$error.Clear()
# ensure we have temp folder for downloads
$scriptRoot = "$PSScriptRoot"
$scriptTemp = "$scriptRoot\temp"
if (-not (test-path $scriptTemp)) { mkdir $scriptTemp > $null }
# get NuGet
$cache = 4
$nuget = "$scriptTemp\nuget.exe"
if (-not $local)
{
$source = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
if ((test-path $nuget) -and ((ls $nuget).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-Item $nuget -force -errorAction SilentlyContinue > $null
}
if (-not (test-path $nuget))
{
Write-Host "Download NuGet..."
Invoke-WebRequest $source -OutFile $nuget
if (-not $?) { throw "Failed to download NuGet." }
}
}
elseif (-not (test-path $nuget))
{
throw "Failed to locate NuGet.exe."
}
# NuGet notes
# As soon as we use -ConfigFile, NuGet uses that file, and only that file, and does not
# merge configuration from system level. See comments in NuGet.Client solution, class
# NuGet.Configuration.Settings, method LoadDefaultSettings.
# For NuGet to merge configurations, it needs to "find" the file in the current directory,
# or above. Which means we cannot really use -ConfigFile but instead have to have Umbraco's
# NuGet.config file at root, and always run NuGet.exe while at root or in a directory below
# root.
$solutionRoot = "$scriptRoot\.."
$testPwd = [System.IO.Path]::GetFullPath($pwd.Path) + "\"
$testRoot = [System.IO.Path]::GetFullPath($solutionRoot) + "\"
if (-not $testPwd.ToLower().StartsWith($testRoot.ToLower()))
{
throw "Cannot run outside of the solution's root."
}
# get the build system
if (-not $local)
{
$params = "-OutputDirectory", $scriptTemp, "-Verbosity", "quiet", "-PreRelease"
&$nuget install Umbraco.Build @params
if (-not $?) { throw "Failed to download Umbraco.Build." }
}
# ensure we have the build system
$ubuildPath = ls "$scriptTemp\Umbraco.Build.*" | sort -property CreationTime -descending | select -first 1
if (-not $ubuildPath)
{
throw "Failed to locate the build system."
}
# boot the build system
# this creates $global:ubuild
return &"$ubuildPath\ps\Boot.ps1"
# at that point the build.ps1 script must boot the build system
# eg
# $ubuild.Boot($ubuildPath.FullName, [System.IO.Path]::GetFullPath("$scriptRoot\.."),
# @{ Local = $local; With7Zip = $false; WithNode = $false },
# @{ continue = $continue })
# if (-not $?) { throw "Failed to boot the build system." }
#
# and it's good practice to report
# eg
# Write-Host "Umbraco.Whatever Build"
# Write-Host "Umbraco.Build v$($ubuild.BuildVersion)"
# eof
+460 -56
View File
@@ -1,67 +1,471 @@
param (
param (
# get, don't execute
[Parameter(Mandatory=$false)]
[string]
$version,
[Alias("g")]
[switch] $get = $false,
# run local, don't download, assume everything is ready
[Parameter(Mandatory=$false)]
[Alias("mo")]
[switch]
$moduleOnly = $false
)
[Alias("l")]
[Alias("loc")]
[switch] $local = $false,
# the script can run either from the solution root,
# or from the ./build directory - anything else fails
if ([System.IO.Path]::GetFileName($pwd) -eq "build")
{
$mpath = [System.IO.Path]::GetDirectoryName($pwd) + "\build\Modules\"
}
else
{
$mpath = "$pwd\build\Modules\"
}
# keep the build directories, don't clear them
[Parameter(Mandatory=$false)]
[Alias("c")]
[Alias("cont")]
[switch] $continue = $false
)
# look for the module and throw if not found
if (-not [System.IO.Directory]::Exists($mpath + "Umbraco.Build"))
{
Write-Error "Could not locate Umbraco build Powershell module."
break
}
# ################################################################
# BOOTSTRAP
# ################################################################
# add the module path (if not already there)
if (-not $env:PSModulePath.Contains($mpath))
{
$env:PSModulePath = "$mpath;$env:PSModulePath"
}
# create and boot the buildsystem
$ubuild = &"$PSScriptRoot\build-bootstrap.ps1"
if (-not $?) { return }
$ubuild.Boot($PSScriptRoot,
@{ Local = $local; },
@{ Continue = $continue })
if ($ubuild.OnError()) { return }
# force-import (or re-import) the module
Write-Host "Import Umbraco build Powershell module"
Import-Module Umbraco.Build -Force -DisableNameChecking
Write-Host "Umbraco Cms Build"
Write-Host "Umbraco.Build v$($ubuild.BuildVersion)"
# module only?
if ($moduleOnly)
{
if (-not [string]::IsNullOrWhiteSpace($version))
# ################################################################
# TASKS
# ################################################################
$ubuild.DefineMethod("SetMoreUmbracoVersion",
{
Write-Host "(module only: ignoring version parameter)"
}
else
param ( $semver )
$release = "" + $semver.Major + "." + $semver.Minor + "." + $semver.Patch
Write-Host "Update UmbracoVersion.cs"
$this.ReplaceFileText("$($this.SolutionRoot)\src\Umbraco.Core\Configuration\UmbracoVersion.cs", `
"(\d+)\.(\d+)\.(\d+)(.(\d+))?", `
"$release")
$this.ReplaceFileText("$($this.SolutionRoot)\src\Umbraco.Core\Configuration\UmbracoVersion.cs", `
"CurrentComment => `"(.+)`"", `
"CurrentComment => `"$($semver.PreRelease)`"")
Write-Host "Update IIS Express port in csproj"
$updater = New-Object "Umbraco.Build.ExpressPortUpdater"
$csproj = "$($this.SolutionRoot)\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj"
$updater.Update($csproj, $release)
})
$ubuild.DefineMethod("SandboxNode",
{
Write-Host "(module only)"
$global:node_path = $env:path
$nodePath = $this.BuildEnv.NodePath
$gitExe = (Get-Command git).Source
$gitPath = [System.IO.Path]::GetDirectoryName($gitExe)
$env:path = "$nodePath;$gitPath"
$global:node_nodepath = $this.ClearEnvVar("NODEPATH")
$global:node_npmcache = $this.ClearEnvVar("NPM_CONFIG_CACHE")
$global:node_npmprefix = $this.ClearEnvVar("NPM_CONFIG_PREFIX")
})
$ubuild.DefineMethod("RestoreNode",
{
$env:path = $node_path
$this.SetEnvVar("NODEPATH", $node_nodepath)
$this.SetEnvVar("NPM_CONFIG_CACHE", $node_npmcache)
$this.SetEnvVar("NPM_CONFIG_PREFIX", $node_npmprefix)
})
$ubuild.DefineMethod("CompileBelle",
{
$src = "$($this.SolutionRoot)\src"
$log = "$($this.BuildTemp)\belle.log"
Write-Host "Compile Belle"
Write-Host "Logging to $log"
# get a temp clean node env (will restore)
$this.SandboxNode()
# stupid PS is going to gather all "warnings" in $error
# so we have to take care of it else they'll bubble and kill the build
if ($error.Count -gt 0) { return }
Push-Location "$($this.SolutionRoot)\src\Umbraco.Web.UI.Client"
Write-Output "" > $log
Write-Output "### node version is:" > $log
&node -v >> $log 2>&1
if (-not $?) { throw "Failed to report node version." }
Write-Output "### npm version is:" >> $log 2>&1
&npm -v >> $log 2>&1
if (-not $?) { throw "Failed to report npm version." }
Write-Output "### clean npm cache" >> $log 2>&1
&npm cache clean --force >> $log 2>&1
$error.Clear() # that one can fail 'cos security bug - ignore
Write-Output "### npm install" >> $log 2>&1
&npm install >> $log 2>&1
Write-Output ">> $? $($error.Count)" >> $log 2>&1
Write-Output "### install bower" >> $log 2>&1
&npm install -g bower >> $log 2>&1
$error.Clear() # that one fails 'cos bower is deprecated - ignore
Write-Output "### install gulp" >> $log 2>&1
&npm install -g gulp >> $log 2>&1
$error.Clear() # that one fails 'cos deprecated stuff - ignore
Write-Output "### install gulp-cli" >> $log 2>&1
&npm install -g gulp-cli --quiet >> $log 2>&1
if (-not $?) { throw "Failed to install gulp-cli" } # that one is expected to work
Write-Output "### gulp build for version $($this.Version.Release)" >> $log 2>&1
&gulp build --buildversion=$this.Version.Release >> $log 2>&1
if (-not $?) { throw "Failed to build" } # that one is expected to work
Pop-Location
# fixme - should we filter the log to find errors?
#get-content .\build.tmp\belle.log | %{ if ($_ -match "build") { write $_}}
# restore
$this.RestoreNode()
# setting node_modules folder to hidden
# used to prevent VS13 from crashing on it while loading the websites project
# also makes sure aspnet compiler does not try to handle rogue files and chokes
# in VSO with Microsoft.VisualC.CppCodeProvider -related errors
# use get-item -force 'cos it might be hidden already
Write-Host "Set hidden attribute on node_modules"
$dir = Get-Item -force "$src\Umbraco.Web.UI.Client\node_modules"
$dir.Attributes = $dir.Attributes -bor ([System.IO.FileAttributes]::Hidden)
})
$ubuild.DefineMethod("CompileUmbraco",
{
$buildConfiguration = "Release"
$src = "$($this.SolutionRoot)\src"
$log = "$($this.BuildTemp)\msbuild.umbraco.log"
if ($this.BuildEnv.VisualStudio -eq $null)
{
throw "Build environment does not provide VisualStudio."
}
Write-Host "Compile Umbraco"
Write-Host "Logging to $log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$this.BuildEnv.VisualStudio.MsBuild "$src\Umbraco.Web.UI\Umbraco.Web.UI.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir="$($this.BuildTemp)\bin\\" `
/p:WebProjectOutputDir="$($this.BuildTemp)\WebApp\\" `
/p:Verbosity=minimal `
/t:Clean`;Rebuild `
/tv:"$($this.BuildEnv.VisualStudio.ToolsVersion)" `
/p:UmbracoBuild=True `
> $log
if (-not $?) { throw "Failed to compile Umbraco.Web.UI." }
# /p:UmbracoBuild tells the csproj that we are building from PS, not VS
})
$ubuild.DefineMethod("PrepareTests",
{
Write-Host "Prepare Tests"
# fixme - idea is to avoid rebuilding everything for tests
# but because of our weird assembly versioning (with .* stuff)
# everything gets rebuilt all the time...
#Copy-Files "$tmp\bin" "." "$tmp\tests"
# data
Write-Host "Copy data files"
if (-not (Test-Path -Path "$($this.BuildTemp)\tests\Packaging" ))
{
Write-Host "Create packaging directory"
mkdir "$($this.BuildTemp)\tests\Packaging" > $null
}
$this.CopyFiles("$($this.SolutionRoot)\src\Umbraco.Tests\Packaging\Packages", "*", "$($this.BuildTemp)\tests\Packaging\Packages")
# required for package install tests
if (-not (Test-Path -Path "$($this.BuildTemp)\tests\bin" ))
{
Write-Host "Create bin directory"
mkdir "$($this.BuildTemp)\tests\bin" > $null
}
})
$ubuild.DefineMethod("CompileTests",
{
$buildConfiguration = "Release"
$log = "$($this.BuildTemp)\msbuild.tests.log"
if ($this.BuildEnv.VisualStudio -eq $null)
{
throw "Build environment does not provide VisualStudio."
}
Write-Host "Compile Tests"
Write-Host "Logging to $log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$this.BuildEnv.VisualStudio.MsBuild "$($this.SolutionRoot)\src\Umbraco.Tests\Umbraco.Tests.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir="$($this.BuildTemp)\tests\\" `
/p:Verbosity=minimal `
/t:Build `
/tv:"$($this.BuildEnv.VisualStudio.ToolsVersion)" `
/p:UmbracoBuild=True `
> $log
if (-not $?) { throw "Failed to compile tests." }
# /p:UmbracoBuild tells the csproj that we are building from PS
})
$ubuild.DefineMethod("PreparePackages",
{
Write-Host "Prepare Packages"
$src = "$($this.SolutionRoot)\src"
$tmp = "$($this.BuildTemp)"
$out = "$($this.BuildOutput)"
$buildConfiguration = "Release"
# restore web.config
$this.TempRestoreFile("$src\Umbraco.Web.UI\web.config")
# cleanup build
Write-Host "Clean build"
$this.RemoveFile("$tmp\bin\*.dll.config")
$this.RemoveFile("$tmp\WebApp\bin\*.dll.config")
# cleanup presentation
Write-Host "Cleanup presentation"
$this.RemoveDirectory("$tmp\WebApp\umbraco.presentation")
# create directories
Write-Host "Create directories"
mkdir "$tmp\Configs" > $null
mkdir "$tmp\Configs\Lang" > $null
mkdir "$tmp\WebApp\App_Data" > $null
#mkdir "$tmp\WebApp\Media" > $null
#mkdir "$tmp\WebApp\Views" > $null
# copy various files
Write-Host "Copy xml documentation"
Copy-Item -force "$tmp\bin\*.xml" "$tmp\WebApp\bin"
Write-Host "Copy transformed configs and langs"
# note: exclude imageprocessor/*.config as imageprocessor pkg installs them
$this.CopyFiles("$tmp\WebApp\config", "*.config", "$tmp\Configs", `
{ -not $_.RelativeName.StartsWith("imageprocessor") })
$this.CopyFiles("$tmp\WebApp\config", "*.js", "$tmp\Configs")
$this.CopyFiles("$tmp\WebApp\config\lang", "*.xml", "$tmp\Configs\Lang")
$this.CopyFile("$tmp\WebApp\web.config", "$tmp\Configs\web.config.transform")
Write-Host "Copy transformed web.config"
$this.CopyFile("$src\Umbraco.Web.UI\web.$buildConfiguration.Config.transformed", "$tmp\WebApp\web.config")
# offset the modified timestamps on all umbraco dlls, as WebResources
# break if date is in the future, which, due to timezone offsets can happen.
Write-Host "Offset dlls timestamps"
Get-ChildItem -r "$tmp\*.dll" | ForEach-Object {
$_.CreationTime = $_.CreationTime.AddHours(-11)
$_.LastWriteTime = $_.LastWriteTime.AddHours(-11)
}
# copy libs
Write-Host "Copy SqlCE libraries"
$nugetPackages = [System.Environment]::ExpandEnvironmentVariables("%userprofile%\.nuget\packages")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x86\native", "*.*", "$tmp\bin\x86")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x64\native", "*.*", "$tmp\bin\amd64")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x86\native", "*.*", "$tmp\WebApp\bin\x86")
$this.CopyFiles("$nugetPackages\umbraco.sqlserverce\4.0.0.1\runtimes\win-x64\native", "*.*", "$tmp\WebApp\bin\amd64")
# copy Belle
Write-Host "Copy Belle"
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\assets", "*", "$tmp\WebApp\umbraco\assets")
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\js", "*", "$tmp\WebApp\umbraco\js")
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\lib", "*", "$tmp\WebApp\umbraco\lib")
$this.CopyFiles("$src\Umbraco.Web.UI\umbraco\views", "*", "$tmp\WebApp\umbraco\views")
})
$ubuild.DefineMethod("PackageZip",
{
Write-Host "Create Zip packages"
$src = "$($this.SolutionRoot)\src"
$tmp = $this.BuildTemp
$out = $this.BuildOutput
Write-Host "Zip all binaries"
&$this.BuildEnv.Zip a -r "$out\UmbracoCms.AllBinaries.$($this.Version.Semver).zip" `
"$tmp\bin\*" `
"-x!dotless.Core.*" `
> $null
if (-not $?) { throw "Failed to zip UmbracoCms.AllBinaries." }
Write-Host "Zip cms"
&$this.BuildEnv.Zip a -r "$out\UmbracoCms.$($this.Version.Semver).zip" `
"$tmp\WebApp\*" `
"-x!dotless.Core.*" "-x!Content_Types.xml" "-x!*.pdb" `
> $null
if (-not $?) { throw "Failed to zip UmbracoCms." }
})
$ubuild.DefineMethod("PrepareBuild",
{
Write-Host "Clear folders and files"
$this.RemoveDirectory("$($this.SolutionRoot)\src\Umbraco.Web.UI.Client\bower_components")
$this.TempStoreFile("$($this.SolutionRoot)\src\Umbraco.Web.UI\web.config")
Write-Host "Create clean web.config"
$this.CopyFile("$($this.SolutionRoot)\src\Umbraco.Web.UI\web.Template.config", "$($this.SolutionRoot)\src\Umbraco.Web.UI\web.config")
Write-host "Set environment"
$env:UMBRACO_VERSION=$this.Version.Semver.ToString()
$env:UMBRACO_RELEASE=$this.Version.Release
$env:UMBRACO_COMMENT=$this.Version.Comment
$env:UMBRACO_BUILD=$this.Version.Build
if ($args -and $args[0] -eq "vso")
{
Write-host "Set VSO environment"
# set environment variable for VSO
# https://github.com/Microsoft/vsts-tasks/issues/375
# https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md
Write-Host ("##vso[task.setvariable variable=UMBRACO_VERSION;]$($this.Version.Semver.ToString())")
Write-Host ("##vso[task.setvariable variable=UMBRACO_RELEASE;]$($this.Version.Release)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_COMMENT;]$($this.Version.Comment)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_BUILD;]$($this.Version.Build)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_TMP;]$($this.SolutionRoot)\build.tmp")
}
})
$ubuild.DefineMethod("PrepareNuGet",
{
Write-Host "Prepare NuGet"
# add Web.config transform files to the NuGet package
Write-Host "Add web.config transforms to NuGet package"
mv "$($this.BuildTemp)\WebApp\Views\Web.config" "$($this.BuildTemp)\WebApp\Views\Web.config.transform"
})
$ubuild.DefineMethod("RestoreNuGet",
{
Write-Host "Restore NuGet"
Write-Host "Logging to $($this.BuildTemp)\nuget.restore.log"
&$this.BuildEnv.NuGet restore "$($this.SolutionRoot)\src\Umbraco.sln" > "$($this.BuildTemp)\nuget.restore.log"
if (-not $?) { throw "Failed to restore NuGet packages." }
})
$ubuild.DefineMethod("PackageNuGet",
{
$nuspecs = "$($this.SolutionRoot)\build\NuSpecs"
Write-Host "Create NuGet packages"
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Core.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Symbols -Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmscore.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Core." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version $this.Version.Semver.ToString() `
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cms.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms." }
# run hook
if ($this.HasMethod("PostPackageNuGet"))
{
Write-Host "Run PostPackageNuGet hook"
$this.PostPackageNuGet();
if (-not $?) { throw "Failed to run hook." }
}
})
$ubuild.DefineMethod("VerifyNuGet",
{
$this.VerifyNuGetConsistency(
("UmbracoCms", "UmbracoCms.Core"),
("Umbraco.Core", "Umbraco.Web", "Umbraco.Web.UI", "Umbraco.Examine"))
if ($this.OnError()) { return }
})
$ubuild.DefineMethod("PrepareAzureGallery",
{
Write-Host "Prepare Azure Gallery"
$this.CopyFile("$($this.SolutionRoot)\build\Azure\azuregalleryrelease.ps1", $this.BuildOutput)
})
$ubuild.DefineMethod("Build",
{
$error.Clear()
$this.PrepareBuild()
if ($this.OnError()) { return }
$this.RestoreNuGet()
if ($this.OnError()) { return }
$this.CompileBelle()
if ($this.OnError()) { return }
$this.CompileUmbraco()
if ($this.OnError()) { return }
$this.PrepareTests()
if ($this.OnError()) { return }
$this.CompileTests()
if ($this.OnError()) { return }
# not running tests
$this.PreparePackages()
if ($this.OnError()) { return }
$this.PackageZip()
if ($this.OnError()) { return }
$this.VerifyNuGet()
if ($this.OnError()) { return }
$this.PrepareNuGet()
if ($this.OnError()) { return }
$this.PackageNuGet()
if ($this.OnError()) { return }
$this.PrepareAzureGallery()
if ($this.OnError()) { return }
})
# ################################################################
# RUN
# ################################################################
# configure
$ubuild.ReleaseBranches = @( "master" )
# run
if (-not $get)
{
$ubuild.Build()
if ($ubuild.OnError()) { return }
}
break
}
# get build environment
Write-Host "Setup Umbraco build Environment"
$uenv = Get-UmbracoBuildEnv
# set the version if any
if (-not [string]::IsNullOrWhiteSpace($version))
{
Write-Host "Set Umbraco version to $version"
Set-UmbracoVersion $version
}
# full umbraco build
Write-Host "Build Umbraco"
Build-Umbraco
Write-Host "Done"
if ($get) { return $ubuild }
-18
View File
@@ -1,18 +0,0 @@
# Usage: powershell .\setversion.ps1 7.6.8
# Or: powershell .\setversion 7.6.8-beta001
param (
[Parameter(Mandatory=$true)]
[string]
$version
)
# report
Write-Host "Setting Umbraco version to $version"
# import Umbraco Build PowerShell module - $pwd is ./build
$env:PSModulePath = "$pwd\Modules\;$env:PSModulePath"
Import-Module Umbraco.Build -Force -DisableNameChecking
# run commands
$version = Set-UmbracoVersion -Version $version
-7
View File
@@ -1,7 +0,0 @@
<?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>
@@ -1,21 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SqlCE4Umbraco")]
[assembly: AssemblyDescription("Umbraco specific Sql Ce Provider")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("Umbraco CMS")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("04436b0a-1dc6-4ee1-9d96-4c04f1a9f429")]
[assembly: InternalsVisibleTo("Umbraco.Tests")]
-101
View File
@@ -1,101 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{5BA5425F-27A7-4677-865E-82246498AA2E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SQLCE4Umbraco</RootNamespace>
<AssemblyName>SQLCE4Umbraco</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>
</SccProjectName>
<SccLocalPath>
</SccLocalPath>
<SccAuxPath>
</SccAuxPath>
<SccProvider>
</SccProvider>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Release\SQLCE4Umbraco.XML</DocumentationFile>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\SqlServerCE.4.0.0.1\lib\System.Data.SqlServerCe.dll</HintPath>
</Reference>
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\SqlServerCE.4.0.0.1\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\SolutionInfo.cs">
<Link>Properties\SolutionInfo.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SqlCeApplicationBlock.cs" />
<Compile Include="SqlCeContextGuardian.cs" />
<Compile Include="SqlCEDataReader.cs" />
<Compile Include="SqlCEHelper.cs" />
<Compile Include="SqlCEInstaller.cs" />
<Compile Include="SqlCEParameter.cs" />
<Compile Include="SqlCeProviderException.cs" />
<Compile Include="SqlCETableUtility.cs" />
<Compile Include="SqlCEUtility.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\umbraco.datalayer\umbraco.datalayer.csproj">
<Project>{C7CB79F0-1C97-4B33-BFA7-00731B579AE2}</Project>
<Name>umbraco.datalayer</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
@@ -1,2 +0,0 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String></wpf:ResourceDictionary>
-44
View File
@@ -1,44 +0,0 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System.Data.SqlServerCe;
using umbraco.DataLayer;
namespace SqlCE4Umbraco
{
/// <summary>
/// Class that adapts a SqlDataReader.SqlDataReader to a RecordsReaderAdapter.
/// </summary>
public class SqlCeDataReaderHelper : RecordsReaderAdapter<SqlCeDataReader>
{
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlServerDataReader"/> class.
/// </summary>
/// <param name="dataReader">The data reader.</param>
public SqlCeDataReaderHelper(System.Data.SqlServerCe.SqlCeDataReader dataReader) : base(dataReader) { }
#endregion
#region RecordsReaderAdapter Members
/// <summary>
/// Gets a value indicating whether this instance has records.
/// </summary>
/// <value>
/// <c>true</c> if this instance has records; otherwise, <c>false</c>.
/// </value>
public override bool HasRecords
{
get { return DataReader.HasRows; }
}
#endregion
}
}
-253
View File
@@ -1,253 +0,0 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlServerCe;
using System.Linq;
using System.Xml;
using System.Diagnostics;
using umbraco.DataLayer;
using umbraco.DataLayer.SqlHelpers.SqlServer;
namespace SqlCE4Umbraco
{
/// <summary>
/// Sql Helper for an SQL Server database.
/// </summary>
public class SqlCEHelper : SqlHelper<SqlCeParameter>
{
/// <summary>
/// Initializes a new instance of the <see cref="SqlCEHelper"/> class.
/// </summary>
/// <param name="connectionString">The connection string.</param>
public SqlCEHelper(string connectionString) : base(connectionString)
{
m_Utility = new SqlCEUtility(this);
}
/// <summary>
/// Checks if the actual database exists, if it doesn't then it will create it
/// </summary>
internal void CreateEmptyDatabase()
{
var localConnection = new SqlCeConnection(ConnectionString);
if (!System.IO.File.Exists(ReplaceDataDirectory(localConnection.Database)))
{
using (var sqlCeEngine = new SqlCeEngine(ConnectionString))
{
sqlCeEngine.CreateDatabase();
}
}
}
/// <summary>
/// Most likely only will be used for unit tests but will remove all tables from the database
/// </summary>
internal void ClearDatabase()
{
// drop constraints before tables to avoid exceptions
// looping on try/catching exceptions was not really nice
// http://stackoverflow.com/questions/536350/drop-all-the-tables-stored-procedures-triggers-constriants-and-all-the-depend
var localConnection = new SqlCeConnection(ConnectionString);
if (System.IO.File.Exists(ReplaceDataDirectory(localConnection.Database)))
{
List<string> tables;
// drop foreign keys
// SQL may need "where constraint_catalog=DB_NAME() and ..."
tables = new List<string>();
using (var reader = ExecuteReader("select table_name from information_schema.table_constraints where constraint_type = 'FOREIGN KEY' order by table_name"))
{
while (reader.Read()) tables.Add(reader.GetString("table_name").Trim());
}
foreach (var table in tables)
{
var constraints = new List<string>();
using (var reader = ExecuteReader("select constraint_name from information_schema.table_constraints where constraint_type = 'FOREIGN KEY' and table_name = '" + table + "' order by constraint_name"))
{
while (reader.Read()) constraints.Add(reader.GetString("constraint_name").Trim());
}
foreach (var constraint in constraints)
{
// SQL may need "[dbo].[table]"
ExecuteNonQuery("alter table [" + table + "] drop constraint [" + constraint + "]");
}
}
// drop primary keys
// SQL may need "where constraint_catalog=DB_NAME() and ..."
tables = new List<string>();
using (var reader = ExecuteReader("select table_name from information_schema.table_constraints where constraint_type = 'PRIMARY KEY' order by table_name"))
{
while (reader.Read()) tables.Add(reader.GetString("table_name").Trim());
}
foreach (var table in tables)
{
var constraints = new List<string>();
using (var reader = ExecuteReader("select constraint_name from information_schema.table_constraints where constraint_type = 'PRIMARY KEY' and table_name = '" + table + "' order by constraint_name"))
{
while (reader.Read()) constraints.Add(reader.GetString("constraint_name").Trim());
}
foreach (var constraint in constraints)
{
// SQL may need "[dbo].[table]"
ExecuteNonQuery("alter table [" + table + "] drop constraint [" + constraint + "]");
}
}
// drop tables
tables = new List<string>();
using (var reader = ExecuteReader("select table_name from information_schema.tables where table_type <> 'VIEW' order by table_name"))
{
while (reader.Read()) tables.Add(reader.GetString("table_name").Trim());
}
foreach (var table in tables)
{
ExecuteNonQuery("drop table [" + table + "]");
}
}
}
/// <summary>
/// Drops all foreign keys on a table.
/// </summary>
/// <param name="table">The name of the table.</param>
/// <remarks>To be used in unit tests.</remarks>
internal void DropForeignKeys(string table)
{
var constraints = new List<string>();
using (var reader = ExecuteReader("select constraint_name from information_schema.table_constraints where constraint_type = 'FOREIGN KEY' and table_name = '" + table + "' order by constraint_name"))
{
while (reader.Read()) constraints.Add(reader.GetString("constraint_name").Trim());
}
foreach (var constraint in constraints)
{
// SQL may need "[dbo].[table]"
ExecuteNonQuery("alter table [" + table + "] drop constraint [" + constraint + "]");
}
}
/// <summary>
/// Replaces the data directory with a local path.
/// </summary>
/// <param name="path">The path.</param>
/// <returns>A local path with the resolved 'DataDirectory' mapping.</returns>
private string ReplaceDataDirectory(string path)
{
if (!string.IsNullOrWhiteSpace(path) && path.Contains("|DataDirectory|"))
{
var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory") as string;
if (!string.IsNullOrEmpty(dataDirectory))
{
path = path.Contains(@"|\")
? path.Replace("|DataDirectory|", dataDirectory)
: path.Replace("|DataDirectory|", dataDirectory + System.IO.Path.DirectorySeparatorChar);
}
}
return path;
}
/// <summary>
/// Creates a new parameter for use with this specific implementation of ISqlHelper.
/// </summary>
/// <param name="parameterName">Name of the parameter.</param>
/// <param name="value">Value of the parameter.</param>
/// <returns>A new parameter of the correct type.</returns>
/// <remarks>Abstract factory pattern</remarks>
public override IParameter CreateParameter(string parameterName, object value)
{
return new SqlCEParameter(parameterName, value);
}
/// <summary>
/// Executes a command that returns a single value.
/// </summary>
/// <param name="commandText">The command text.</param>
/// <param name="parameters">The parameters.</param>
/// <returns>The return value of the command.</returns>
protected override object ExecuteScalar(string commandText, SqlCeParameter[] parameters)
{
#if DEBUG && DebugDataLayer
// Log Query Execution
Trace.TraceInformation(GetType().Name + " SQL ExecuteScalar: " + commandText);
#endif
using (var cc = UseCurrentConnection)
{
return SqlCeApplicationBlock.ExecuteScalar(
(SqlCeConnection) cc.Connection, (SqlCeTransaction) cc.Transaction,
CommandType.Text, commandText, parameters);
}
}
/// <summary>
/// Executes a command and returns the number of rows affected.
/// </summary>
/// <param name="commandText">The command text.</param>
/// <param name="parameters">The parameters.</param>
/// <returns>
/// The number of rows affected by the command.
/// </returns>
protected override int ExecuteNonQuery(string commandText, SqlCeParameter[] parameters)
{
#if DEBUG && DebugDataLayer
// Log Query Execution
Trace.TraceInformation(GetType().Name + " SQL ExecuteNonQuery: " + commandText);
#endif
using (var cc = UseCurrentConnection)
{
return SqlCeApplicationBlock.ExecuteNonQuery(
(SqlCeConnection) cc.Connection, (SqlCeTransaction) cc.Transaction,
CommandType.Text, commandText, parameters);
}
}
/// <summary>
/// Executes a command and returns a records reader containing the results.
/// </summary>
/// <param name="commandText">The command text.</param>
/// <param name="parameters">The parameters.</param>
/// <returns>
/// A data reader containing the results of the command.
/// </returns>
protected override IRecordsReader ExecuteReader(string commandText, SqlCeParameter[] parameters)
{
#if DEBUG && DebugDataLayer
// Log Query Execution
Trace.TraceInformation(GetType().Name + " SQL ExecuteReader: " + commandText);
#endif
using (var cc = UseCurrentConnection)
{
return new SqlCeDataReaderHelper(SqlCeApplicationBlock.ExecuteReader(
(SqlCeConnection) cc.Connection, (SqlCeTransaction) cc.Transaction,
CommandType.Text, commandText, parameters));
}
}
internal IRecordsReader ExecuteReader(string commandText)
{
return ExecuteReader(commandText, new SqlCEParameter(string.Empty, string.Empty));
}
internal int ExecuteNonQuery(string commandText)
{
return ExecuteNonQuery(commandText, new SqlCEParameter(string.Empty, string.Empty));
}
}
}
-141
View File
@@ -1,141 +0,0 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Resources;
using SQLCE4Umbraco;
using umbraco.DataLayer.Utility.Installer;
using System.Diagnostics;
namespace SqlCE4Umbraco
{
/// <summary>
/// Database installer for an SQL Server data source.
/// </summary>
[Obsolete("The legacy installers are no longer used and will be removed from the codebase in the future")]
public class SqlCEInstaller : DefaultInstallerUtility<SqlCEHelper>
{
#region Private Constants
/// <summary>The latest database version this installer supports.</summary>
private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_8;
/// <summary>The specifications to determine the database version.</summary>
private static readonly VersionSpecs[] m_VersionSpecs = new VersionSpecs[] {
new VersionSpecs("SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS LEFT OUTER JOIN umbracoApp ON appAlias = appAlias WHERE CONSTRAINT_NAME = 'FK_umbracoUser2app_umbracoApp'", 0, DatabaseVersion.Version4_8),
new VersionSpecs("SELECT id FROM umbracoNode WHERE id = -21", 1, DatabaseVersion.Version4_1),
new VersionSpecs("SELECT action FROM umbracoAppTree",DatabaseVersion.Version4),
new VersionSpecs("SELECT description FROM cmsContentType",DatabaseVersion.Version3),
new VersionSpecs("SELECT id FROM sysobjects",DatabaseVersion.None) };
#endregion
#region Public Properties
/// <summary>
/// This ensures that the database exists, then runs the base method
/// </summary>
public override bool CanConnect
{
get
{
using (var sqlHelper = SqlHelper)
sqlHelper.CreateEmptyDatabase();
return base.CanConnect;
}
}
/// <summary>
/// Gets a value indicating whether the installer can upgrade the data source.
/// </summary>
/// <value>
/// <c>true</c> if the installer can upgrade the data source; otherwise, <c>false</c>.
/// </value>
/// <remarks>Empty data sources can't be upgraded, just installed.</remarks>
public override bool CanUpgrade
{
get
{
return CurrentVersion == DatabaseVersion.Version4_1;
}
}
#endregion
#region Protected Properties
/// <summary>
/// Gets the version specification for evaluation by DetermineCurrentVersion.
/// Only first matching specification is taken into account.
/// </summary>
/// <value>The version specifications.</value>
protected override VersionSpecs[] VersionSpecs
{
get { return m_VersionSpecs; }
}
#endregion
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlCEInstaller"/> class.
/// </summary>
/// <param name="sqlHelper">The SQL helper.</param>
public SqlCEInstaller(SqlCEHelper sqlHelper) : base(sqlHelper, LatestVersionSupported)
{ }
#endregion
#region DefaultInstaller Members
/// <summary>
/// Returns the sql to do a full install
/// </summary>
protected override string FullInstallSql
{
get { return string.Empty; }
}
/// <summary>
/// Returns the sql to do an upgrade
/// </summary>
protected override string UpgradeSql
{
get { return string.Empty; }
}
// We need to override this as the default way of detection a db connection checks for systables that doesn't exist
// in a CE db
protected override DatabaseVersion DetermineCurrentVersion()
{
DatabaseVersion version = base.DetermineCurrentVersion();
if (version != DatabaseVersion.Unavailable)
{
return version;
}
// verify connection
try
{
using (var sqlHelper = SqlHelper)
if (SqlCeApplicationBlock.VerifyConnection(sqlHelper.ConnectionString))
return DatabaseVersion.None;
}
catch (Exception e)
{
Trace.WriteLine(e.ToString());
}
return DatabaseVersion.Unavailable;
}
#endregion
}
}
-34
View File
@@ -1,34 +0,0 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Data.SqlServerCe;
using System.Data.SqlTypes;
using umbraco.DataLayer;
namespace SqlCE4Umbraco
{
/// <summary>
/// Parameter class for the SqlCEHelper.
/// </summary>
public class SqlCEParameter : SqlParameterAdapter<SqlCeParameter>
{
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlCEParameter"/> class.
/// </summary>
/// <param name="parameterName">Name of the parameter.</param>
/// <param name="value">Value of the parameter.</param>
public SqlCEParameter(string parameterName, object value)
: base(new SqlCeParameter(parameterName, value))
{ }
#endregion
}
}
-250
View File
@@ -1,250 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using umbraco.DataLayer.Utility.Table;
using umbraco.DataLayer;
using umbraco;
namespace SqlCE4Umbraco
{
/// <summary>
/// SQL Server implementation of <see cref="DefaultTableUtility&lt;S&gt;"/>.
/// </summary>
[Obsolete("The legacy installers are no longer used and will be removed from the codebase in the future")]
public class SqlCETableUtility : DefaultTableUtility<SqlCEHelper>
{
/// <summary>
/// Initializes a new instance of the <see cref="SqlCETableUtility"/> class.
/// </summary>
/// <param name="sqlHelper">The SQL helper.</param>
public SqlCETableUtility(SqlCEHelper sqlHelper)
: base(sqlHelper)
{ }
#region DefaultTableUtility<SqlCEHelper> members
/// <summary>
/// Gets the table with the specified name.
/// </summary>
/// <param name="name">The name.</param>
/// <returns>The table, or <c>null</c> if no table with that name exists.</returns>
public override ITable GetTable(string name)
{
if (name == null)
throw new ArgumentNullException("name");
ITable table = null;
// get name in correct casing
using (var sqlHelper = SqlHelper)
name = sqlHelper.ExecuteScalar<string>("SELECT name FROM sys.tables WHERE name=@name",
sqlHelper.CreateParameter("name", name));
if (name != null)
{
table = new DefaultTable(name);
using (var sqlHelper = SqlHelper)
using (IRecordsReader reader = sqlHelper.ExecuteReader(
@"SELECT c.name AS Name, st.name AS DataType, c.max_length, c.is_nullable, c.is_identity
FROM sys.tables AS t
JOIN sys.columns AS c ON t.object_id = c.object_id
JOIN sys.schemas AS s ON s.schema_id = t.schema_id
JOIN sys.types AS ty ON ty.user_type_id = c.user_type_id
JOIN sys.types st ON ty.system_type_id = st.user_type_id
WHERE t.name = @name
ORDER BY c.column_id", sqlHelper.CreateParameter("name", name)))
{
while (reader.Read())
{
table.AddField(table.CreateField(reader.GetString("Name"), GetType(reader)));
}
}
}
return table;
}
/// <summary>
/// Saves or updates the table.
/// </summary>
/// <param name="table">The table to be saved.</param>
public override void SaveTable(ITable table)
{
if (table == null)
throw new ArgumentNullException("table");
ITable oldTable = GetTable(table.Name);
// create the table if it didn't exist, update fields otherwise
if (oldTable == null)
{
CreateTable(table);
}
else
{
foreach (IField field in table)
{
// create the field if it did't exist in the old table
if (oldTable.FindField(field.Name)==null)
{
CreateColumn(table, field);
}
}
}
}
#endregion
#region Protected Helper Methods
/// <summary>
/// Creates the table in the data source.
/// </summary>
/// <param name="table">The table.</param>
protected virtual void CreateTable(ITable table)
{
Debug.Assert(table != null);
// create enumerator and check for first field
IEnumerator<IField> fieldEnumerator = table.GetEnumerator();
bool hasNext = fieldEnumerator.MoveNext();
if(!hasNext)
throw new ArgumentException("The table must contain at least one field.");
// create query
StringBuilder createTableQuery = new StringBuilder();
using (var sqlHelper = SqlHelper)
createTableQuery.AppendFormat("CREATE TABLE [{0}] (", sqlHelper.EscapeString(table.Name));
// add fields
while (hasNext)
{
// add field name and type
IField field = fieldEnumerator.Current;
createTableQuery.Append('[').Append(field.Name).Append(']');
createTableQuery.Append(' ').Append(GetDatabaseType(field));
// append comma if a following field exists
hasNext = fieldEnumerator.MoveNext();
if (hasNext)
{
createTableQuery.Append(',');
}
}
// close CREATE TABLE x (...) bracket
createTableQuery.Append(')');
// execute query
try
{
using (var sqlHelper = SqlHelper)
sqlHelper.ExecuteNonQuery(createTableQuery.ToString());
}
catch (Exception executeException)
{
throw new UmbracoException(String.Format("Could not create table '{0}'.", table), executeException);
}
}
/// <summary>
/// Creates a new column in the table.
/// </summary>
/// <param name="table">The table.</param>
/// <param name="field">The field used to create the column.</param>
protected virtual void CreateColumn(ITable table, IField field)
{
Debug.Assert(table != null && field != null);
StringBuilder addColumnQuery = new StringBuilder();
using (var sqlHelper = SqlHelper)
addColumnQuery.AppendFormat("ALTER TABLE [{0}] ADD [{1}] {2}",
sqlHelper.EscapeString(table.Name),
sqlHelper.EscapeString(field.Name),
sqlHelper.EscapeString(GetDatabaseType(field)));
try
{
using (var sqlHelper = SqlHelper)
sqlHelper.ExecuteNonQuery(addColumnQuery.ToString());
}
catch (Exception executeException)
{
throw new UmbracoException(String.Format("Could not create column '{0}' in table '{1}'.",
field, table.Name), executeException);
}
}
/// <summary>
/// Gets the .Net type corresponding to the specified database data type.
/// </summary>
/// <param name="dataTypeReader">The data type reader.</param>
/// <returns>The .Net type</returns>
protected virtual Type GetType(IRecordsReader dataTypeReader)
{
string typeName = dataTypeReader.GetString("DataType");
switch (typeName)
{
case "bit": return typeof(bool);
case "tinyint": return typeof(byte);
case "datetime": return typeof(DateTime);
// TODO: return different decimal type according to field precision
case "decimal": return typeof(decimal);
case "uniqueidentifier": return typeof(Guid);
case "smallint": return typeof(Int16);
case "int": return typeof(Int32);
case "bigint": return typeof(Int64);
case "nvarchar": return typeof(string);
default:
throw new ArgumentException(String.Format("Cannot convert database type '{0}' to a .Net type.",
typeName));
}
}
/// <summary>
/// Gets the database type corresponding to the field, complete with field properties.
/// </summary>
/// <param name="field">The field.</param>
/// <returns>The database type.</returns>
protected virtual string GetDatabaseType(IField field)
{
StringBuilder fieldBuilder = new StringBuilder();
fieldBuilder.Append(GetDatabaseTypeName(field));
fieldBuilder.Append(field.HasProperty(FieldProperties.Identity) ? " IDENTITY(1,1)" : String.Empty);
fieldBuilder.Append(field.HasProperty(FieldProperties.NotNull) ? " NOT NULL" : " NULL");
return fieldBuilder.ToString();
}
/// <summary>
/// Gets the name of the database type, without field properties.
/// </summary>
/// <param name="field">The field.</param>
/// <returns></returns>
protected virtual string GetDatabaseTypeName(IField field)
{
switch (field.DataType.FullName)
{
case "System.Boolean": return "bit";
case "System.Byte": return "tinyint";
case "System.DateTime": return "datetime";
case "System.Decimal": return "decimal(28)";
case "System.Double": return "decimal(15)";
case "System.Single": return "decimal(7)";
case "System.Guid": return "uniqueidentifier";
case "System.Int16": return "smallint";
case "System.Int32": return "int";
case "System.Int64": return "bigint";;
case "System.String":
string type = "nvarchar";
return field.Size == 0 ? type : String.Format("{0}({1})", type, field.Size);
default:
throw new ArgumentException(String.Format("Cannot convert '{0}' to a database type.", field));
}
}
#endregion
}
}
-56
View File
@@ -1,56 +0,0 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using umbraco.DataLayer.SqlHelpers.SqlServer;
using umbraco.DataLayer.Utility;
using umbraco.DataLayer.Utility.Installer;
using umbraco.DataLayer.Utility.Table;
namespace SqlCE4Umbraco
{
/// <summary>
/// Utility for an SQL Server data source.
/// </summary>
[Obsolete("The legacy installers are no longer used and will be removed from the codebase in the future")]
public class SqlCEUtility : DefaultUtility<SqlCEHelper>
{
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlServerUtility"/> class.
/// </summary>
/// <param name="sqlHelper">The SQL helper.</param>
public SqlCEUtility(SqlCEHelper sqlHelper) : base(sqlHelper)
{ }
#endregion
#region DefaultUtility Members
/// <summary>
/// Creates an installer.
/// </summary>
/// <returns>The SQL Server installer.</returns>
public override IInstallerUtility CreateInstaller()
{
return new SqlCEInstaller(SqlHelper);
}
/// <summary>
/// Creates a table utility.
/// </summary>
/// <returns>The table utility</returns>
public override ITableUtility CreateTableUtility()
{
return new SqlCETableUtility(SqlHelper);
}
#endregion
}
}
-270
View File
@@ -1,270 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data.SqlServerCe;
using System.Data;
using System.Diagnostics;
using SQLCE4Umbraco;
namespace SqlCE4Umbraco
{
public class SqlCeApplicationBlock
{
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
/// <returns></returns>
public static object ExecuteScalar(
string connectionString,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
using (var conn = SqlCeContextGuardian.Open(connectionString))
{
return ExecuteScalarTry(conn, null, commandText, commandParameters);
}
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running Scalar: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee);
}
}
public static object ExecuteScalar(
SqlCeConnection conn, SqlCeTransaction trx,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters)
{
try
{
return ExecuteScalarTry(conn, trx, commandText, commandParameters);
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running Scalar: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee);
}
}
public static object ExecuteScalar(
SqlCeConnection conn,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters)
{
return ExecuteScalar(conn, null, commandType, commandText, commandParameters);
}
private static object ExecuteScalarTry(
SqlCeConnection conn, SqlCeTransaction trx,
string commandText,
params SqlCeParameter[] commandParameters)
{
object retVal;
using (var cmd = trx == null ? new SqlCeCommand(commandText, conn) : new SqlCeCommand(commandText, conn, trx))
{
AttachParameters(cmd, commandParameters);
Debug.WriteLine("---------------------------------SCALAR-------------------------------------");
Debug.WriteLine(commandText);
Debug.WriteLine("----------------------------------------------------------------------------");
retVal = cmd.ExecuteScalar();
}
return retVal;
}
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
public static int ExecuteNonQuery(
string connectionString,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
using (var conn = SqlCeContextGuardian.Open(connectionString))
{
return ExecuteNonQueryTry(conn, null, commandText, commandParameters);
}
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running NonQuery: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
public static int ExecuteNonQuery(
SqlCeConnection conn,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
return ExecuteNonQuery(conn, null, commandType, commandText, commandParameters);
}
public static int ExecuteNonQuery(
SqlCeConnection conn, SqlCeTransaction trx,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
return ExecuteNonQueryTry(conn, trx, commandText, commandParameters);
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running NonQuery: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
private static int ExecuteNonQueryTry(
SqlCeConnection conn, SqlCeTransaction trx,
string commandText,
params SqlCeParameter[] commandParameters)
{
// this is for multiple queries in the installer
if (commandText.Trim().StartsWith("!!!"))
{
commandText = commandText.Trim().Trim('!');
var commands = commandText.Split('|');
var currentCmd = string.Empty;
foreach (var command in commands)
{
try
{
currentCmd = command;
if (string.IsNullOrWhiteSpace(command)) continue;
var c = trx == null ? new SqlCeCommand(command, conn) : new SqlCeCommand(command, conn, trx);
c.ExecuteNonQuery();
}
catch (Exception e)
{
Debug.WriteLine("*******************************************************************");
Debug.WriteLine(currentCmd);
Debug.WriteLine(e);
Debug.WriteLine("*******************************************************************");
}
}
return 1;
}
Debug.WriteLine("----------------------------------------------------------------------------");
Debug.WriteLine(commandText);
Debug.WriteLine("----------------------------------------------------------------------------");
var cmd = new SqlCeCommand(commandText, conn);
AttachParameters(cmd, commandParameters);
var rowsAffected = cmd.ExecuteNonQuery();
return rowsAffected;
}
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
/// <returns></returns>
public static SqlCeDataReader ExecuteReader(
string connectionString,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
var conn = SqlCeContextGuardian.Open(connectionString);
return ExecuteReaderTry(conn, null, commandText, commandParameters);
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running Reader: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
public static SqlCeDataReader ExecuteReader(
SqlCeConnection conn,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
return ExecuteReader(conn, commandType, commandText, commandParameters);
}
public static SqlCeDataReader ExecuteReader(
SqlCeConnection conn, SqlCeTransaction trx,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
return ExecuteReaderTry(conn, trx, commandText, commandParameters);
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running Reader: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
private static SqlCeDataReader ExecuteReaderTry(
SqlCeConnection conn, SqlCeTransaction trx,
string commandText,
params SqlCeParameter[] commandParameters)
{
Debug.WriteLine("---------------------------------READER-------------------------------------");
Debug.WriteLine(commandText);
Debug.WriteLine("----------------------------------------------------------------------------");
try
{
var cmd = trx == null ? new SqlCeCommand(commandText, conn) : new SqlCeCommand(commandText, conn, trx);
AttachParameters(cmd, commandParameters);
return cmd.ExecuteReader();
}
catch
{
conn.Close();
throw;
}
}
public static bool VerifyConnection(string connectionString)
{
using (var conn = SqlCeContextGuardian.Open(connectionString))
{
return conn.State == ConnectionState.Open;
}
}
private static void AttachParameters(SqlCeCommand command, IEnumerable<SqlCeParameter> commandParameters)
{
foreach (var parameter in commandParameters)
{
if ((parameter.Direction == ParameterDirection.InputOutput) && (parameter.Value == null))
parameter.Value = DBNull.Value;
command.Parameters.Add(parameter);
}
}
}
}
-64
View File
@@ -1,64 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlServerCe;
using System.Linq;
using System.Text;
namespace SQLCE4Umbraco
{
public static class SqlCeContextGuardian
{
private static SqlCeConnection _constantOpenConnection;
private static readonly object Lock = new object();
// Awesome SQL CE 4 speed improvement by Erik Ejskov Jensen - SQL CE 4 MVP
// It's not an issue with SQL CE 4 that we never close the connection
public static SqlCeConnection Open(string connectionString)
{
var connectionStringBuilder = new DbConnectionStringBuilder();
try
{
connectionStringBuilder.ConnectionString = connectionString;
}
catch (Exception ex)
{
throw new ArgumentException("Bad connection string.", "connectionString", ex);
}
connectionStringBuilder.Remove("datalayer");
// SQL CE 4 performs better when there's always a connection open in the background
EnsureOpenBackgroundConnection(connectionStringBuilder.ConnectionString);
SqlCeConnection conn = new SqlCeConnection(connectionStringBuilder.ConnectionString);
conn.Open();
return conn;
}
/// <summary>
/// Sometimes we need to ensure this is closed especially in unit tests
/// </summary>
internal static void CloseBackgroundConnection()
{
if (_constantOpenConnection != null)
_constantOpenConnection.Close();
}
private static void EnsureOpenBackgroundConnection(string connectionString)
{
lock (Lock)
{
if (_constantOpenConnection == null)
{
_constantOpenConnection = new SqlCeConnection(connectionString);
_constantOpenConnection.Open();
}
else if (_constantOpenConnection.State != ConnectionState.Open)
_constantOpenConnection.Open();
}
}
}
}
@@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SqlCE4Umbraco
{
public class SqlCeProviderException : Exception
{
public SqlCeProviderException() : base()
{
}
public SqlCeProviderException(string message) : base(message)
{
}
}
}
-39
View File
@@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup></configuration>
-4
View File
@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="SqlServerCE" version="4.0.0.1" targetFramework="net45" />
</packages>
+11 -4
View File
@@ -6,10 +6,17 @@ using System.Resources;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguageAttribute("en-US")]
[assembly: NeutralResourcesLanguage("en-US")]
// versions
// read https://stackoverflow.com/questions/64602/what-are-differences-between-assemblyversion-assemblyfileversion-and-assemblyin
// note: do NOT change anything here manually, use the build scripts
[assembly: AssemblyVersion("1.0.*")]
// this is the ONLY ONE the CLR cares about for compatibility
// should change ONLY when "hard" breaking compatibility (manual change)
[assembly: AssemblyVersion("8.0.0")]
[assembly: AssemblyFileVersion("7.7.11")]
[assembly: AssemblyInformationalVersion("7.7.11")]
// these are FYI and changed automatically
[assembly: AssemblyFileVersion("8.0.0")]
[assembly: AssemblyInformationalVersion("8.0.0-alpha.41")]
-98
View File
@@ -1,98 +0,0 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
using umbraco.interfaces;
namespace Umbraco.Core
{
/// <summary>
/// A resolver to return all IAction objects
/// </summary>
public sealed class ActionsResolver : LazyManyObjectsResolverBase<ActionsResolver, IAction>
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="serviceProvider"></param>
/// <param name="logger"></param>
/// <param name="packageActions"></param>
internal ActionsResolver(IServiceProvider serviceProvider, ILogger logger, Func<IEnumerable<Type>> packageActions)
: base(serviceProvider, logger, packageActions)
{
}
/// <summary>
/// Gets the <see cref="IAction"/> implementations.
/// </summary>
public IEnumerable<IAction> Actions
{
get
{
return Values;
}
}
/// <summary>
/// This method will return a list of IAction's based on a string (letter) list. Each character in the list may represent
/// an IAction. This will associate any found IActions based on the Letter property of the IAction with the character being referenced.
/// </summary>
/// <param name="actions"></param>
/// <returns>returns a list of actions that have an associated letter found in the action string list</returns>
public IEnumerable<IAction> FromActionSymbols(IEnumerable<string> actions)
{
var allActions = Actions.ToArray();
return actions
.Select(c => allActions.FirstOrDefault(a => a.Letter.ToString(CultureInfo.InvariantCulture) == c))
.WhereNotNull()
.ToArray();
}
/// <summary>
/// Returns the string (letter) representation of the actions that make up the actions collection
/// </summary>
/// <returns></returns>
public IEnumerable<string> ToActionSymbols(IEnumerable<IAction> actions)
{
return actions.Select(x => x.Letter.ToString(CultureInfo.InvariantCulture)).ToArray();
}
/// <summary>
/// Gets an Action if it exists.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
internal IAction GetAction<T>()
where T : IAction
{
return Actions.SingleOrDefault(x => x.GetType() == typeof (T));
}
protected override IEnumerable<IAction> CreateInstances()
{
var actions = new List<IAction>();
var foundIActions = InstanceTypes;
foreach (var type in foundIActions)
{
IAction typeInstance;
var instance = type.GetProperty("Instance", BindingFlags.Public | BindingFlags.Static);
//if the singletone initializer is not found, try simply creating an instance of the IAction if it supports public constructors
if (instance == null)
typeInstance = ServiceProvider.GetService(type) as IAction;
else
typeInstance = instance.GetValue(null, null) as IAction;
if (typeInstance != null)
{
actions.Add(typeInstance);
}
}
return actions;
}
}
}
-20
View File
@@ -1,20 +0,0 @@
namespace Umbraco.Core
{
/// <summary>
/// Helper methods for Activation
/// </summary>
internal static class ActivatorHelper
{
/// <summary>
/// Creates an instance of a type using that type's default constructor.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T CreateInstance<T>() where T : class, new()
{
return new ActivatorServiceProvider().GetService(typeof (T)) as T;
}
}
}
@@ -1,12 +0,0 @@
using System;
namespace Umbraco.Core
{
internal class ActivatorServiceProvider : IServiceProvider
{
public object GetService(Type serviceType)
{
return Activator.CreateInstance(serviceType);
}
}
}
-459
View File
@@ -1,459 +0,0 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Threading;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.ObjectResolution;
using Umbraco.Core.Profiling;
using Umbraco.Core.Scoping;
using Umbraco.Core.Services;
using Umbraco.Core.Sync;
namespace Umbraco.Core
{
/// <summary>
/// the Umbraco Application context
/// </summary>
/// <remarks>
/// one per AppDomain, represents the global Umbraco application
/// </remarks>
public class ApplicationContext : IDisposable
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="dbContext"></param>
/// <param name="serviceContext"></param>
/// <param name="cache"></param>
/// <param name="logger"></param>
public ApplicationContext(DatabaseContext dbContext, ServiceContext serviceContext, CacheHelper cache, ProfilingLogger logger)
{
if (dbContext == null) throw new ArgumentNullException("dbContext");
if (serviceContext == null) throw new ArgumentNullException("serviceContext");
if (cache == null) throw new ArgumentNullException("cache");
if (logger == null) throw new ArgumentNullException("logger");
_databaseContext = dbContext;
_services = serviceContext;
ApplicationCache = cache;
ProfilingLogger = logger;
Init();
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="dbContext"></param>
/// <param name="serviceContext"></param>
/// <param name="cache"></param>
[Obsolete("Use the other constructor specifying a ProfilingLogger instead")]
public ApplicationContext(DatabaseContext dbContext, ServiceContext serviceContext, CacheHelper cache)
: this(dbContext, serviceContext, cache,
new ProfilingLogger(LoggerResolver.Current.Logger, ProfilerResolver.Current.Profiler))
{
}
/// <summary>
/// Creates a basic app context
/// </summary>
/// <param name="cache"></param>
[Obsolete("Use the other constructor specifying a ProfilingLogger instead")]
public ApplicationContext(CacheHelper cache)
{
if (cache == null) throw new ArgumentNullException("cache");
ApplicationCache = cache;
ProfilingLogger = new ProfilingLogger(LoggerResolver.Current.Logger, ProfilerResolver.Current.Profiler);
Init();
}
/// <summary>
/// Creates a basic app context
/// </summary>
/// <param name="cache"></param>
/// <param name="logger"></param>
public ApplicationContext(CacheHelper cache, ProfilingLogger logger)
{
if (cache == null) throw new ArgumentNullException("cache");
if (logger == null) throw new ArgumentNullException("logger");
ApplicationCache = cache;
ProfilingLogger = logger;
Init();
}
/// <summary>
/// A method used to set and/or ensure that a global ApplicationContext singleton is created.
/// </summary>
/// <param name="appContext">
/// The instance to set on the global application singleton
/// </param>
/// <param name="replaceContext">If set to true and the singleton is already set, it will be replaced</param>
/// <returns></returns>
/// <remarks>
/// This is NOT thread safe
/// </remarks>
public static ApplicationContext EnsureContext(ApplicationContext appContext, bool replaceContext)
{
if (Current != null)
{
if (!replaceContext)
return Current;
}
Current = appContext;
return Current;
}
/// <summary>
/// A method used to create and ensure that a global ApplicationContext singleton is created.
/// </summary>
/// <param name="cache"></param>
/// <param name="replaceContext">
/// If set to true will replace the current singleton instance - This should only be used for unit tests or on app
/// startup if for some reason the boot manager is not the umbraco boot manager.
/// </param>
/// <param name="dbContext"></param>
/// <param name="serviceContext"></param>
/// <returns></returns>
/// <remarks>
/// This is NOT thread safe
/// </remarks>
[Obsolete("Use the other method specifying an ProfilingLogger instead")]
public static ApplicationContext EnsureContext(DatabaseContext dbContext, ServiceContext serviceContext, CacheHelper cache, bool replaceContext)
{
if (Current != null)
{
if (!replaceContext)
return Current;
}
var ctx = new ApplicationContext(dbContext, serviceContext, cache);
Current = ctx;
return Current;
}
/// <summary>
/// A method used to create and ensure that a global ApplicationContext singleton is created.
/// </summary>
/// <param name="cache"></param>
/// <param name="logger"></param>
/// <param name="replaceContext">
/// If set to true will replace the current singleton instance - This should only be used for unit tests or on app
/// startup if for some reason the boot manager is not the umbraco boot manager.
/// </param>
/// <param name="dbContext"></param>
/// <param name="serviceContext"></param>
/// <returns></returns>
/// <remarks>
/// This is NOT thread safe
/// </remarks>
public static ApplicationContext EnsureContext(DatabaseContext dbContext, ServiceContext serviceContext, CacheHelper cache, ProfilingLogger logger, bool replaceContext)
{
if (Current != null)
{
if (!replaceContext)
return Current;
}
var ctx = new ApplicationContext(dbContext, serviceContext, cache, logger);
Current = ctx;
return Current;
}
/// <summary>
/// Singleton accessor
/// </summary>
public static ApplicationContext Current { get; internal set; }
/// <summary>
/// Gets the scope provider.
/// </summary>
internal IScopeProvider ScopeProvider { get { return _databaseContext == null ? null : _databaseContext.ScopeProvider; } }
/// <summary>
/// Returns the application wide cache accessor
/// </summary>
/// <remarks>
/// Any caching that is done in the application (app wide) should be done through this property
/// </remarks>
public CacheHelper ApplicationCache { get; private set; }
/// <summary>
/// Exposes the global ProfilingLogger - this should generally not be accessed via the UmbracoContext and should normally just be exposed
/// on most base classes or injected with IoC
/// </summary>
public ProfilingLogger ProfilingLogger { get; private set; }
// IsReady is set to true by the boot manager once it has successfully booted
// note - the original umbraco module checks on content.Instance in umbraco.dll
// now, the boot task that setup the content store ensures that it is ready
bool _isReady = false;
readonly ManualResetEventSlim _isReadyEvent = new ManualResetEventSlim(false);
private DatabaseContext _databaseContext;
private ServiceContext _services;
public bool IsReady
{
get
{
return _isReady;
}
internal set
{
AssertIsNotReady();
_isReady = value;
_isReadyEvent.Set();
}
}
public bool WaitForReady(int timeout)
{
return _isReadyEvent.WaitHandle.WaitOne(timeout);
}
// notes
// GlobalSettings.ConfigurationStatus returns the value that's in the web.config, so it's the "configured version"
// GlobalSettings.CurrentVersion returns the hard-coded "current version"
// the system is configured if they match
// if they don't, install runs, updates web.config (presumably) and updates GlobalSettings.ConfiguredStatus
public bool IsConfigured
{
get { return _configured.Value; }
}
/// <summary>
/// If the db is configured, there is a database context and there is an umbraco schema, but we are not 'configured' , then it means we are upgrading
/// </summary>
public bool IsUpgrading
{
get
{
if (IsConfigured == false
&& DatabaseContext != null
&& DatabaseContext.IsDatabaseConfigured)
{
var schemaresult = DatabaseContext.ValidateDatabaseSchema();
if (schemaresult.ValidTables.Count > 0) return true;
}
return false;
}
}
/// <summary>
/// The application url.
/// </summary>
/// <remarks>
/// The application url is the url that should be used by services to talk to the application,
/// eg keep alive or scheduled publishing services. It must exist on a global context because
/// some of these services may not run within a web context.
/// The format of the application url is:
/// - has a scheme (http or https)
/// - has the SystemDirectories.Umbraco path
/// - does not end with a slash
/// It is initialized on the first request made to the server, by UmbracoModule.EnsureApplicationUrl:
/// - if umbracoSettings:settings/web.routing/@umbracoApplicationUrl is set, use the value (new setting)
/// - if umbracoSettings:settings/scheduledTasks/@baseUrl is set, use the value (backward compatibility)
/// - otherwise, use the url of the (first) request.
/// Not locking, does not matter if several threads write to this.
/// See also issues:
/// - http://issues.umbraco.org/issue/U4-2059
/// - http://issues.umbraco.org/issue/U4-6788
/// - http://issues.umbraco.org/issue/U4-5728
/// - http://issues.umbraco.org/issue/U4-5391
/// </remarks>
public string UmbracoApplicationUrl
{
get
{
ApplicationUrlHelper.EnsureApplicationUrl(this);
return _umbracoApplicationUrl;
}
}
/// <summary>
/// Resets the url.
/// </summary>
public void ResetUmbracoApplicationUrl()
{
_umbracoApplicationUrl = null;
}
// ReSharper disable once InconsistentNaming
internal string _umbracoApplicationUrl;
internal List<string> _umbracoApplicationDomains = new List<string>();
internal string _umbracoApplicationDeploymentId;
private Lazy<bool> _configured;
internal MainDom MainDom { get; private set; }
private void Init()
{
MainDom = new MainDom(ProfilingLogger.Logger);
MainDom.Acquire();
//Create the lazy value to resolve whether or not the application is 'configured'
_configured = new Lazy<bool>(() =>
{
try
{
var configStatus = ConfigurationStatus;
var currentVersion = UmbracoVersion.GetSemanticVersion();
var ok =
//we are not configured if this is null
string.IsNullOrWhiteSpace(configStatus) == false
//they must match
&& configStatus == currentVersion;
if (ok)
{
//The versions are the same in config, but are they the same in the database. We can only check this
// if we have a db context available, if we don't then we are not installed anyways
if (DatabaseContext.IsDatabaseConfigured && DatabaseContext.CanConnect)
{
var found = Services.MigrationEntryService.FindEntry(Constants.System.UmbracoMigrationName, UmbracoVersion.GetSemanticVersion());
if (found == null)
{
//we haven't executed this migration in this environment, so even though the config versions match,
// this db has not been updated.
ProfilingLogger.Logger.Debug<ApplicationContext>(string.Format("The migration for version: '{0} has not been executed, there is no record in the database", currentVersion.ToSemanticString()));
ok = false;
}
}
}
else
{
ProfilingLogger.Logger.Debug<ApplicationContext>(string.Format("CurrentVersion different from configStatus: '{0}','{1}'", currentVersion.ToSemanticString(), configStatus));
}
return ok;
}
catch (Exception ex)
{
LogHelper.Error<ApplicationContext>("Error determining if application is configured, returning false", ex);
return false;
}
});
}
private string ConfigurationStatus
{
get
{
try
{
return ConfigurationManager.AppSettings["umbracoConfigurationStatus"];
}
catch
{
return String.Empty;
}
}
}
private void AssertIsNotReady()
{
if (this.IsReady)
throw new Exception("ApplicationContext has already been initialized.");
}
/// <summary>
/// Gets the current DatabaseContext
/// </summary>
/// <remarks>
/// Internal set is generally only used for unit tests
/// </remarks>
public DatabaseContext DatabaseContext
{
get
{
if (_databaseContext == null)
throw new InvalidOperationException("The DatabaseContext has not been set on the ApplicationContext");
return _databaseContext;
}
internal set { _databaseContext = value; }
}
/// <summary>
/// Gets the current ServiceContext
/// </summary>
/// <remarks>
/// Internal set is generally only used for unit tests
/// </remarks>
public ServiceContext Services
{
get
{
if (_services == null)
throw new InvalidOperationException("The ServiceContext has not been set on the ApplicationContext");
return _services;
}
internal set { _services = value; }
}
internal ServerRole GetCurrentServerRole()
{
var registrar = ServerRegistrarResolver.Current.Registrar as IServerRegistrar2;
return registrar == null ? ServerRole.Unknown : registrar.GetCurrentServerRole();
}
private volatile bool _disposed;
private readonly ReaderWriterLockSlim _disposalLocker = new ReaderWriterLockSlim();
/// <summary>
/// This will dispose and reset all resources used to run the application
/// </summary>
/// <remarks>
/// IMPORTANT: Never dispose this object if you require the Umbraco application to run, disposing this object
/// is generally used for unit testing and when your application is shutting down after you have booted Umbraco.
/// </remarks>
void IDisposable.Dispose()
{
// Only operate if we haven't already disposed
if (_disposed) return;
using (new WriteLock(_disposalLocker))
{
// Check again now we're inside the lock
if (_disposed) return;
//clear the cache
if (ApplicationCache != null)
{
ApplicationCache.RuntimeCache.ClearAllCache();
ApplicationCache.IsolatedRuntimeCache.ClearAllCaches();
}
//reset all resolvers
ResolverCollection.ResetAll();
//reset resolution itself (though this should be taken care of by resetting any of the resolvers above)
Resolution.Reset();
//reset the instance objects
this.ApplicationCache = null;
if (_databaseContext != null) //need to check the internal field here
{
if (_databaseContext.ScopeProvider.AmbientScope != null)
{
var scope = _databaseContext.ScopeProvider.AmbientScope;
scope.Dispose();
}
/*
if (DatabaseContext.IsDatabaseConfigured && DatabaseContext.Database != null)
{
DatabaseContext.Database.Dispose();
}
*/
}
this.DatabaseContext = null;
this.Services = null;
this._isReady = false; //set the internal field
// Indicate that the instance has been disposed.
_disposed = true;
}
}
}
}
-119
View File
@@ -1,119 +0,0 @@
namespace Umbraco.Core
{
/// <summary>
/// A plugin type that allows developers to execute code during the Umbraco bootup process
/// </summary>
/// <remarks>
/// Allows you to override the methods that you would like to execute code for: ApplicationInitialized, ApplicationStarting, ApplicationStarted.
///
/// By default none of these methods will execute if the Umbraco application is not configured or if the Umbraco database is not configured, however
/// if you need these methods to execute even if either of these are not configured you can override the properties:
/// ExecuteWhenApplicationNotConfigured and ExecuteWhenDatabaseNotConfigured
/// </remarks>
public abstract class ApplicationEventHandler : IApplicationEventHandler
{
public void OnApplicationInitialized(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
if (ShouldExecute(applicationContext))
{
ApplicationInitialized(umbracoApplication, applicationContext);
}
}
public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
if (ShouldExecute(applicationContext))
{
ApplicationStarting(umbracoApplication, applicationContext);
}
}
public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
if (ShouldExecute(applicationContext))
{
ApplicationStarted(umbracoApplication, applicationContext);
}
}
/// <summary>
/// Overridable method to execute when the ApplicationContext is created and other static objects that require initialization have been setup
/// </summary>
/// <param name="umbracoApplication"></param>
/// <param name="applicationContext"></param>
protected virtual void ApplicationInitialized(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
}
/// <summary>
/// Overridable method to execute when All resolvers have been initialized but resolution is not frozen so they can be modified in this method
/// </summary>
/// <param name="umbracoApplication"></param>
/// <param name="applicationContext"></param>
protected virtual void ApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
}
/// <summary>
/// Overridable method to execute when Bootup is completed, this allows you to perform any other bootup logic required for the application.
/// Resolution is frozen so now they can be used to resolve instances.
/// </summary>
/// <param name="umbracoApplication"></param>
/// <param name="applicationContext"></param>
protected virtual void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
}
/// <summary>
/// Determine if the methods should execute based on the configuration status of the application.
/// </summary>
/// <param name="applicationContext"></param>
/// <returns></returns>
private bool ShouldExecute(ApplicationContext applicationContext)
{
if (applicationContext.IsConfigured && applicationContext.DatabaseContext.IsDatabaseConfigured)
{
return true;
}
if (!applicationContext.IsConfigured && ExecuteWhenApplicationNotConfigured)
{
return true;
}
if (!applicationContext.DatabaseContext.IsDatabaseConfigured && ExecuteWhenDatabaseNotConfigured)
{
return true;
}
return false;
}
/// <summary>
/// A flag to determine if the overridable methods for this class will execute even if the
/// Umbraco application is not configured
/// </summary>
/// <remarks>
/// An Umbraco Application is not configured when it requires a new install or upgrade. When the latest version in the
/// assembly does not match the version in the config.
/// </remarks>
protected virtual bool ExecuteWhenApplicationNotConfigured
{
get { return false; }
}
/// <summary>
/// A flag to determine if the overridable methods for this class will execute even if the
/// Umbraco database is not configured
/// </summary>
/// <remarks>
/// The Umbraco database is not configured when we cannot connect to the database or when the database tables are not installed.
/// </remarks>
protected virtual bool ExecuteWhenDatabaseNotConfigured
{
get { return false; }
}
}
}
+32 -32
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -6,20 +6,20 @@ using System.Reflection;
namespace Umbraco.Core
{
internal static class AssemblyExtensions
{
/// <summary>
/// Returns the file used to load the assembly
/// </summary>
/// <param name="assembly"></param>
/// <returns></returns>
public static FileInfo GetAssemblyFile(this Assembly assembly)
{
var codeBase = assembly.CodeBase;
var uri = new Uri(codeBase);
var path = uri.LocalPath;
return new FileInfo(path);
}
internal static class AssemblyExtensions
{
/// <summary>
/// Returns the file used to load the assembly
/// </summary>
/// <param name="assembly"></param>
/// <returns></returns>
public static FileInfo GetAssemblyFile(this Assembly assembly)
{
var codeBase = assembly.CodeBase;
var uri = new Uri(codeBase);
var path = uri.LocalPath;
return new FileInfo(path);
}
/// <summary>
/// Returns true if the assembly is the App_Code assembly
@@ -49,24 +49,24 @@ namespace Umbraco.Core
/// </summary>
/// <param name="assembly"></param>
/// <returns></returns>
public static bool IsGlobalAsaxAssembly(this Assembly assembly)
{
public static bool IsGlobalAsaxAssembly(this Assembly assembly)
{
//only way I can figure out how to test is by the name
return assembly.FullName.StartsWith("App_global.asax");
}
}
/// <summary>
/// Returns the file used to load the assembly
/// </summary>
/// <param name="assemblyName"></param>
/// <returns></returns>
public static FileInfo GetAssemblyFile(this AssemblyName assemblyName)
{
var codeBase = assemblyName.CodeBase;
var uri = new Uri(codeBase);
var path = uri.LocalPath;
return new FileInfo(path);
}
/// <summary>
/// Returns the file used to load the assembly
/// </summary>
/// <param name="assemblyName"></param>
/// <returns></returns>
public static FileInfo GetAssemblyFile(this AssemblyName assemblyName)
{
var codeBase = assemblyName.CodeBase;
var uri = new Uri(codeBase);
var path = uri.LocalPath;
return new FileInfo(path);
}
}
}
}
}
+6 -6
View File
@@ -69,11 +69,11 @@ namespace Umbraco.Core
public Task<IDisposable> LockAsync()
{
var wait = _semaphore != null
var wait = _semaphore != null
? _semaphore.WaitAsync()
: _semaphore2.WaitOneAsync();
return wait.IsCompleted
return wait.IsCompleted
? _releaserTask ?? Task.FromResult(CreateReleaser()) // anonymous vs named
: wait.ContinueWith((_, state) => (((AsyncLock) state).CreateReleaser()),
this, CancellationToken.None,
@@ -112,7 +112,7 @@ namespace Umbraco.Core
return _releaser ?? CreateReleaser(); // anonymous vs named
}
// note - before making those classes some structs, read
// note - before making those classes some structs, read
// about "impure methods" and mutating readonly structs...
private class NamedSemaphoreReleaser : CriticalFinalizerObject, IDisposable
@@ -140,9 +140,9 @@ namespace Umbraco.Core
_semaphore.Dispose();
}
// we WANT to release the semaphore because it's a system object, ie a critical
// we WANT to release the semaphore because it's a system object, ie a critical
// non-managed resource - and if it is not released then noone else can acquire
// the lock - so we inherit from CriticalFinalizerObject which means that the
// the lock - so we inherit from CriticalFinalizerObject which means that the
// finalizer "should" run in all situations - there is always a chance that it
// does not run and the semaphore remains "acquired" but then chances are the
// whole process (w3wp.exe...) is going down, at which point the semaphore will
@@ -200,4 +200,4 @@ namespace Umbraco.Core
}
}
}
}
}
+80 -120
View File
@@ -1,4 +1,4 @@
using System;
using System;
namespace Umbraco.Core
{
@@ -7,160 +7,120 @@ namespace Umbraco.Core
/// </summary>
public static class Attempt
{
// note:
// cannot rely on overloads only to differenciate between with/without status
// in some cases it will always be ambiguous, so be explicit w/ 'WithStatus' methods
/// <summary>
/// Creates a successful attempt with a result.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <param name="result">The result of the attempt.</param>
/// <returns>The successful attempt.</returns>
public static Attempt<T> Succeed<T>(T result)
public static Attempt<TResult> Succeed<TResult>(TResult result)
{
return Attempt<T>.Succeed(result);
return Attempt<TResult>.Succeed(result);
}
/// <summary>
/// Creates a successful attempt with a result and a status.
/// </summary>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <typeparam name="TStatus">The type of the attempted operation status.</typeparam>
/// <param name="status">The status of the attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The successful attempt.</returns>
public static Attempt<TResult, TStatus> SucceedWithStatus<TResult, TStatus>(TStatus status, TResult result)
{
return Attempt<TResult, TStatus>.Succeed(status, result);
}
/// <summary>
/// Creates a failed attempt.
/// </summary>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult> Fail<TResult>()
{
return Attempt<TResult>.Fail();
}
/// <summary>
/// Creates a failed attempt with a result.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <param name="result">The result of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<T> Fail<T>(T result)
public static Attempt<TResult> Fail<TResult>(TResult result)
{
return Attempt<T>.Fail(result);
return Attempt<TResult>.Fail(result);
}
/// <summary>
/// Creates a failed attempt with a result and a status.
/// </summary>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <typeparam name="TStatus">The type of the attempted operation status.</typeparam>
/// <param name="status">The status of the attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult, TStatus> FailWithStatus<TResult, TStatus>(TStatus status, TResult result)
{
return Attempt<TResult, TStatus>.Fail(status, result);
}
/// <summary>
/// Creates a failed attempt with a result and an exception.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <param name="result">The result of the attempt.</param>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<T> Fail<T>(T result, Exception exception)
public static Attempt<TResult> Fail<TResult>(TResult result, Exception exception)
{
return Attempt<T>.Fail(result, exception);
return Attempt<TResult>.Fail(result, exception);
}
/// <summary>
/// Creates a failed attempt with a result, an exception and a status.
/// </summary>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <typeparam name="TStatus">The type of the attempted operation status.</typeparam>
/// <param name="status">The status of the attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult, TStatus> FailWithStatus<TResult, TStatus>(TStatus status, TResult result, Exception exception)
{
return Attempt<TResult, TStatus>.Fail(status, result, exception);
}
/// <summary>
/// Creates a successful or a failed attempt, with a result.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <param name="success">A value indicating whether the attempt is successful.</param>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The attempt.</returns>
public static Attempt<T> If<T>(bool success, T result)
public static Attempt<TResult> If<TResult>(bool condition, TResult result)
{
return Attempt<T>.SucceedIf(success, result);
}
/// <summary>
/// Executes an attempt function, with callbacks.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <param name="attempt">The attempt returned by the attempt function.</param>
/// <param name="onSuccess">An action to execute in case the attempt succeeds.</param>
/// <param name="onFail">An action to execute in case the attempt fails.</param>
/// <returns>The outcome of the attempt.</returns>
/// <remarks>Runs <paramref name="onSuccess"/> or <paramref name="onFail"/> depending on the
/// whether the attempt function reports a success or a failure.</remarks>
public static Outcome Try<T>(Attempt<T> attempt, Action<T> onSuccess, Action<Exception> onFail = null)
{
if (attempt.Success)
{
onSuccess(attempt.Result);
return Outcome.Success;
}
if (onFail != null)
{
onFail(attempt.Exception);
}
return Outcome.Failure;
return Attempt<TResult>.If(condition, result);
}
/// <summary>
/// Represents the outcome of an attempt.
/// Creates a successful or a failed attempt, with a result.
/// </summary>
/// <remarks>Can be a success or a failure, and allows for attempts chaining.</remarks>
public struct Outcome
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <typeparam name="TStatus">The type of the attempted operation status.</typeparam>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <param name="succStatus">The status of the successful attempt.</param>
/// <param name="failStatus">The status of the failed attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The attempt.</returns>
public static Attempt<TResult, TStatus> IfWithStatus<TResult, TStatus>(bool condition, TStatus succStatus, TStatus failStatus, TResult result)
{
private readonly bool _success;
/// <summary>
/// Gets an outcome representing a success.
/// </summary>
public static readonly Outcome Success = new Outcome(true);
/// <summary>
/// Gets an outcome representing a failure.
/// </summary>
public static readonly Outcome Failure = new Outcome(false);
private Outcome(bool success)
{
_success = success;
}
/// <summary>
/// Executes another attempt function, if the previous one failed, with callbacks.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <param name="nextFunction">The attempt function to execute, returning an attempt.</param>
/// <param name="onSuccess">An action to execute in case the attempt succeeds.</param>
/// <param name="onFail">An action to execute in case the attempt fails.</param>
/// <returns>If it executes, returns the outcome of the attempt, else returns a success outcome.</returns>
/// <remarks>
/// <para>Executes only if the previous attempt failed, else does not execute and return a success outcome.</para>
/// <para>If it executes, then runs <paramref name="onSuccess"/> or <paramref name="onFail"/> depending on the
/// whether the attempt function reports a success or a failure.</para>
/// </remarks>
public Outcome OnFailure<T>(Func<Attempt<T>> nextFunction, Action<T> onSuccess, Action<Exception> onFail = null)
{
return _success
? Success
: ExecuteNextFunction(nextFunction, onSuccess, onFail);
}
/// <summary>
/// Executes another attempt function, if the previous one succeeded, with callbacks.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
/// <param name="nextFunction">The attempt function to execute, returning an attempt.</param>
/// <param name="onSuccess">An action to execute in case the attempt succeeds.</param>
/// <param name="onFail">An action to execute in case the attempt fails.</param>
/// <returns>If it executes, returns the outcome of the attempt, else returns a failed outcome.</returns>
/// <remarks>
/// <para>Executes only if the previous attempt succeeded, else does not execute and return a success outcome.</para>
/// <para>If it executes, then runs <paramref name="onSuccess"/> or <paramref name="onFail"/> depending on the
/// whether the attempt function reports a success or a failure.</para>
/// </remarks>
public Outcome OnSuccess<T>(Func<Attempt<T>> nextFunction, Action<T> onSuccess, Action<Exception> onFail = null)
{
return _success
? ExecuteNextFunction(nextFunction, onSuccess, onFail)
: Failure;
}
private static Outcome ExecuteNextFunction<T>(Func<Attempt<T>> nextFunction, Action<T> onSuccess, Action<Exception> onFail = null)
{
var attempt = nextFunction();
if (attempt.Success)
{
onSuccess(attempt.Result);
return Success;
}
if (onFail != null)
{
onFail(attempt.Exception);
}
return Failure;
}
return Attempt<TResult, TStatus>.If(condition, succStatus, failStatus, result);
}
}
}
}
+133
View File
@@ -0,0 +1,133 @@
using System;
namespace Umbraco.Core
{
/// <summary>
/// Represents the result of an operation attempt.
/// </summary>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
[Serializable]
public struct Attempt<TResult>
{
// private - use Succeed() or Fail() methods to create attempts
private Attempt(bool success, TResult result, Exception exception)
{
Success = success;
Result = result;
Exception = exception;
}
/// <summary>
/// Gets a value indicating whether this <see cref="Attempt{TResult}"/> was successful.
/// </summary>
public bool Success { get; }
/// <summary>
/// Gets the exception associated with an unsuccessful attempt.
/// </summary>
public Exception Exception { get; }
/// <summary>
/// Gets the attempt result.
/// </summary>
public TResult Result { get; }
/// <summary>
/// Gets the attempt result, if successful, else a default value.
/// </summary>
public TResult ResultOr(TResult value) => Success ? Result : value;
// optimize, use a singleton failed attempt
private static readonly Attempt<TResult> Failed = new Attempt<TResult>(false, default(TResult), null);
/// <summary>
/// Creates a successful attempt.
/// </summary>
/// <returns>The successful attempt.</returns>
public static Attempt<TResult> Succeed()
{
return new Attempt<TResult>(true, default(TResult), null);
}
/// <summary>
/// Creates a successful attempt with a result.
/// </summary>
/// <param name="result">The result of the attempt.</param>
/// <returns>The successful attempt.</returns>
public static Attempt<TResult> Succeed(TResult result)
{
return new Attempt<TResult>(true, result, null);
}
/// <summary>
/// Creates a failed attempt.
/// </summary>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult> Fail()
{
return Failed;
}
/// <summary>
/// Creates a failed attempt with an exception.
/// </summary>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult> Fail(Exception exception)
{
return new Attempt<TResult>(false, default(TResult), exception);
}
/// <summary>
/// Creates a failed attempt with a result.
/// </summary>
/// <param name="result">The result of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult> Fail(TResult result)
{
return new Attempt<TResult>(false, result, null);
}
/// <summary>
/// Creates a failed attempt with a result and an exception.
/// </summary>
/// <param name="result">The result of the attempt.</param>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult> Fail(TResult result, Exception exception)
{
return new Attempt<TResult>(false, result, exception);
}
/// <summary>
/// Creates a successful or a failed attempt.
/// </summary>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <returns>The attempt.</returns>
public static Attempt<TResult> If(bool condition)
{
return condition ? new Attempt<TResult>(true, default(TResult), null) : Failed;
}
/// <summary>
/// Creates a successful or a failed attempt, with a result.
/// </summary>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The attempt.</returns>
public static Attempt<TResult> If(bool condition, TResult result)
{
return new Attempt<TResult>(condition, result, null);
}
/// <summary>
/// Implicity operator to check if the attempt was successful without having to access the 'success' property
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static implicit operator bool(Attempt<TResult> a)
{
return a.Success;
}
}
}
+142
View File
@@ -0,0 +1,142 @@
using System;
namespace Umbraco.Core
{
/// <summary>
/// Represents the result of an operation attempt.
/// </summary>
/// <typeparam name="TResult">The type of the attempted operation result.</typeparam>
/// <typeparam name="TStatus">The type of the attempted operation status.</typeparam>
[Serializable]
public struct Attempt<TResult, TStatus>
{
/// <summary>
/// Gets a value indicating whether this <see cref="Attempt{TResult,TStatus}"/> was successful.
/// </summary>
public bool Success { get; }
/// <summary>
/// Gets the exception associated with an unsuccessful attempt.
/// </summary>
public Exception Exception { get; }
/// <summary>
/// Gets the attempt result.
/// </summary>
public TResult Result { get; }
/// <summary>
/// Gets the attempt status.
/// </summary>
public TStatus Status { get; }
// private - use Succeed() or Fail() methods to create attempts
private Attempt(bool success, TResult result, TStatus status, Exception exception)
{
Success = success;
Result = result;
Status = status;
Exception = exception;
}
/// <summary>
/// Creates a successful attempt.
/// </summary>
/// <param name="status">The status of the attempt.</param>
/// <returns>The successful attempt.</returns>
public static Attempt<TResult, TStatus> Succeed(TStatus status)
{
return new Attempt<TResult, TStatus>(true, default(TResult), status, null);
}
/// <summary>
/// Creates a successful attempt with a result.
/// </summary>
/// <param name="status">The status of the attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The successful attempt.</returns>
public static Attempt<TResult, TStatus> Succeed(TStatus status, TResult result)
{
return new Attempt<TResult, TStatus>(true, result, status, null);
}
/// <summary>
/// Creates a failed attempt.
/// </summary>
/// <param name="status">The status of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult, TStatus> Fail(TStatus status)
{
return new Attempt<TResult, TStatus>(false, default(TResult), status, null);
}
/// <summary>
/// Creates a failed attempt with an exception.
/// </summary>
/// <param name="status">The status of the attempt.</param>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult, TStatus> Fail(TStatus status, Exception exception)
{
return new Attempt<TResult, TStatus>(false, default(TResult), status, exception);
}
/// <summary>
/// Creates a failed attempt with a result.
/// </summary>
/// <param name="status">The status of the attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult, TStatus> Fail(TStatus status, TResult result)
{
return new Attempt<TResult, TStatus>(false, result, status, null);
}
/// <summary>
/// Creates a failed attempt with a result and an exception.
/// </summary>
/// <param name="status">The status of the attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<TResult, TStatus> Fail(TStatus status, TResult result, Exception exception)
{
return new Attempt<TResult, TStatus>(false, result, status, exception);
}
/// <summary>
/// Creates a successful or a failed attempt.
/// </summary>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <param name="succStatus">The status of the successful attempt.</param>
/// <param name="failStatus">The status of the failed attempt.</param>
/// <returns>The attempt.</returns>
public static Attempt<TResult, TStatus> If(bool condition, TStatus succStatus, TStatus failStatus)
{
return new Attempt<TResult, TStatus>(condition, default(TResult), condition ? succStatus : failStatus, null);
}
/// <summary>
/// Creates a successful or a failed attempt, with a result.
/// </summary>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <param name="succStatus">The status of the successful attempt.</param>
/// <param name="failStatus">The status of the failed attempt.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The attempt.</returns>
public static Attempt<TResult, TStatus> If(bool condition, TStatus succStatus, TStatus failStatus, TResult result)
{
return new Attempt<TResult, TStatus>(condition, result, condition ? succStatus : failStatus, null);
}
/// <summary>
/// Implicity operator to check if the attempt was successful without having to access the 'success' property
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static implicit operator bool(Attempt<TResult, TStatus> a)
{
return a.Success;
}
}
}
-174
View File
@@ -1,174 +0,0 @@
using System;
using Umbraco.Core.Dynamics;
namespace Umbraco.Core
{
/// <summary>
/// Represents the result of an operation attempt.
/// </summary>
/// <typeparam name="T">The type of the attempted operation result.</typeparam>
[Serializable]
public struct Attempt<T>
{
private readonly bool _success;
private readonly T _result;
private readonly Exception _exception;
/// <summary>
/// Gets a value indicating whether this <see cref="Attempt{T}"/> was successful.
/// </summary>
public bool Success
{
get { return _success; }
}
/// <summary>
/// Gets the exception associated with an unsuccessful attempt.
/// </summary>
public Exception Exception { get { return _exception; } }
/// <summary>
/// Gets the exception associated with an unsuccessful attempt.
/// </summary>
/// <remarks>Keep it for backward compatibility sake.</remarks>
[Obsolete(".Error is obsolete, you should use .Exception instead.", false)]
public Exception Error { get { return _exception; } }
/// <summary>
/// Gets the attempt result.
/// </summary>
public T Result
{
get { return _result; }
}
// optimize, use a singleton failed attempt
private static readonly Attempt<T> Failed = new Attempt<T>(false, default(T), null);
/// <summary>
/// Represents an unsuccessful attempt.
/// </summary>
/// <remarks>Keep it for backward compatibility sake.</remarks>
[Obsolete(".Failed is obsolete, you should use Attempt<T>.Fail() instead.", false)]
public static readonly Attempt<T> False = Failed;
// private - use Succeed() or Fail() methods to create attempts
private Attempt(bool success, T result, Exception exception)
{
_success = success;
_result = result;
_exception = exception;
}
/// <summary>
/// Initialize a new instance of the <see cref="Attempt{T}"/> struct with a result.
/// </summary>
/// <param name="success">A value indicating whether the attempt is successful.</param>
/// <param name="result">The result of the attempt.</param>
/// <remarks>Keep it for backward compatibility sake.</remarks>
[Obsolete("Attempt ctors are obsolete, you should use Attempt<T>.Succeed(), Attempt<T>.Fail() or Attempt<T>.If() instead.", false)]
public Attempt(bool success, T result)
: this(success, result, null)
{ }
/// <summary>
/// Initialize a new instance of the <see cref="Attempt{T}"/> struct representing a failed attempt, with an exception.
/// </summary>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <remarks>Keep it for backward compatibility sake.</remarks>
[Obsolete("Attempt ctors are obsolete, you should use Attempt<T>.Succeed(), Attempt<T>.Fail() or Attempt<T>.If() instead.", false)]
public Attempt(Exception exception)
: this(false, default(T), exception)
{ }
/// <summary>
/// Creates a successful attempt.
/// </summary>
/// <returns>The successful attempt.</returns>
public static Attempt<T> Succeed()
{
return new Attempt<T>(true, default(T), null);
}
/// <summary>
/// Creates a successful attempt with a result.
/// </summary>
/// <param name="result">The result of the attempt.</param>
/// <returns>The successful attempt.</returns>
public static Attempt<T> Succeed(T result)
{
return new Attempt<T>(true, result, null);
}
/// <summary>
/// Creates a failed attempt.
/// </summary>
/// <returns>The failed attempt.</returns>
public static Attempt<T> Fail()
{
return Failed;
}
/// <summary>
/// Creates a failed attempt with an exception.
/// </summary>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<T> Fail(Exception exception)
{
return new Attempt<T>(false, default(T), exception);
}
/// <summary>
/// Creates a failed attempt with a result.
/// </summary>
/// <param name="result">The result of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<T> Fail(T result)
{
return new Attempt<T>(false, result, null);
}
/// <summary>
/// Creates a failed attempt with a result and an exception.
/// </summary>
/// <param name="result">The result of the attempt.</param>
/// <param name="exception">The exception causing the failure of the attempt.</param>
/// <returns>The failed attempt.</returns>
public static Attempt<T> Fail(T result, Exception exception)
{
return new Attempt<T>(false, result, exception);
}
/// <summary>
/// Creates a successful or a failed attempt.
/// </summary>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <returns>The attempt.</returns>
public static Attempt<T> SucceedIf(bool condition)
{
return condition ? new Attempt<T>(true, default(T), null) : Failed;
}
/// <summary>
/// Creates a successful or a failed attempt, with a result.
/// </summary>
/// <param name="condition">A value indicating whether the attempt is successful.</param>
/// <param name="result">The result of the attempt.</param>
/// <returns>The attempt.</returns>
public static Attempt<T> SucceedIf(bool condition, T result)
{
return new Attempt<T>(condition, result, null);
}
/// <summary>
/// Implicity operator to check if the attempt was successful without having to access the 'success' property
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static implicit operator bool(Attempt<T> a)
{
return a.Success;
}
}
}
-17
View File
@@ -1,17 +0,0 @@
using System;
using System.ComponentModel;
namespace Umbraco.Core.Auditing
{
[Obsolete("Use Umbraco.Core.Services.IAuditService instead")]
[EditorBrowsable(EditorBrowsableState.Never)]
public static class Audit
{
public static void Add(Umbraco.Core.Auditing.AuditTypes type, string comment, int userId, int objectId)
{
ApplicationContext.Current.Services.AuditService.Add(
Enum<Umbraco.Core.Models.AuditType>.Parse(type.ToString()),
comment, userId, objectId);
}
}
}
@@ -0,0 +1,353 @@
using System;
using System.Linq;
using System.Text;
using System.Threading;
using System.Web;
using Umbraco.Core.Components;
using Umbraco.Core.Events;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Security;
using Umbraco.Core.Services;
using Umbraco.Core.Services.Implement;
namespace Umbraco.Core.Auditing
{
public sealed class AuditEventsComponent : UmbracoComponentBase, IUmbracoCoreComponent
{
private IAuditService _auditService;
private IUserService _userService;
private IEntityService _entityService;
private IUser CurrentPerformingUser
{
get
{
var identity = Thread.CurrentPrincipal?.GetUmbracoIdentity();
return identity == null
? new User { Id = 0, Name = "SYSTEM", Email = "" }
: _userService.GetUserById(Convert.ToInt32(identity.Id));
}
}
private IUser GetPerformingUser(int userId)
{
var found = userId >= 0 ? _userService.GetUserById(userId) : null;
return found ?? new User {Id = 0, Name = "SYSTEM", Email = ""};
}
private string PerformingIp
{
get
{
var httpContext = HttpContext.Current == null ? (HttpContextBase) null : new HttpContextWrapper(HttpContext.Current);
var ip = httpContext.GetCurrentRequestIpAddress();
if (ip.ToLowerInvariant().StartsWith("unknown")) ip = "";
return ip;
}
}
public void Initialize(IAuditService auditService, IUserService userService, IEntityService entityService)
{
_auditService = auditService;
_userService = userService;
_entityService = entityService;
//BackOfficeUserManager.AccountLocked += ;
//BackOfficeUserManager.AccountUnlocked += ;
BackOfficeUserManager.ForgotPasswordRequested += OnForgotPasswordRequest;
BackOfficeUserManager.ForgotPasswordChangedSuccess += OnForgotPasswordChange;
BackOfficeUserManager.LoginFailed += OnLoginFailed;
//BackOfficeUserManager.LoginRequiresVerification += ;
BackOfficeUserManager.LoginSuccess += OnLoginSuccess;
BackOfficeUserManager.LogoutSuccess += OnLogoutSuccess;
BackOfficeUserManager.PasswordChanged += OnPasswordChanged;
BackOfficeUserManager.PasswordReset += OnPasswordReset;
//BackOfficeUserManager.ResetAccessFailedCount += ;
UserService.SavedUserGroup += OnSavedUserGroupWithUsers;
UserService.SavedUser += OnSavedUser;
UserService.DeletedUser += OnDeletedUser;
UserService.UserGroupPermissionsAssigned += UserGroupPermissionAssigned;
MemberService.Saved += OnSavedMember;
MemberService.Deleted += OnDeletedMember;
MemberService.AssignedRoles += OnAssignedRoles;
MemberService.RemovedRoles += OnRemovedRoles;
MemberService.Exported += OnMemberExported;
}
private string FormatEmail(IMember member)
{
return member == null ? string.Empty : member.Email.IsNullOrWhiteSpace() ? "" : $"<{member.Email}>";
}
private string FormatEmail(IUser user)
{
return user == null ? string.Empty : user.Email.IsNullOrWhiteSpace() ? "" : $"<{user.Email}>";
}
private void OnRemovedRoles(IMemberService sender, RolesEventArgs args)
{
var performingUser = CurrentPerformingUser;
var roles = string.Join(", ", args.Roles);
var members = sender.GetAllMembers(args.MemberIds).ToDictionary(x => x.Id, x => x);
foreach (var id in args.MemberIds)
{
members.TryGetValue(id, out var member);
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"Member {id} \"{member?.Name ?? "(unknown)"}\" {FormatEmail(member)}",
"umbraco/member/roles/removed", $"roles modified, removed {roles}");
}
}
private void OnAssignedRoles(IMemberService sender, RolesEventArgs args)
{
var performingUser = CurrentPerformingUser;
var roles = string.Join(", ", args.Roles);
var members = sender.GetAllMembers(args.MemberIds).ToDictionary(x => x.Id, x => x);
foreach (var id in args.MemberIds)
{
members.TryGetValue(id, out var member);
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"Member {id} \"{member?.Name ?? "(unknown)"}\" {FormatEmail(member)}",
"umbraco/member/roles/assigned", $"roles modified, assigned {roles}");
}
}
private void OnMemberExported(IMemberService sender, ExportedMemberEventArgs exportedMemberEventArgs)
{
var performingUser = CurrentPerformingUser;
var member = exportedMemberEventArgs.Member;
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"Member {member.Id} \"{member.Name}\" {FormatEmail(member)}",
"umbraco/member/exported", "exported member data");
}
private void OnSavedUserGroupWithUsers(IUserService sender, SaveEventArgs<UserGroupWithUsers> saveEventArgs)
{
var performingUser = CurrentPerformingUser;
foreach (var groupWithUser in saveEventArgs.SavedEntities)
{
var group = groupWithUser.UserGroup;
var dp = string.Join(", ", ((UserGroup)group).GetWereDirtyProperties());
var sections = ((UserGroup)group).WasPropertyDirty("AllowedSections")
? string.Join(", ", group.AllowedSections)
: null;
var perms = ((UserGroup)group).WasPropertyDirty("Permissions")
? string.Join(", ", group.Permissions)
: null;
var sb = new StringBuilder();
sb.Append($"updating {(string.IsNullOrWhiteSpace(dp) ? "(nothing)" : dp)};");
if (sections != null)
sb.Append($", assigned sections: {sections}");
if (perms != null)
{
if (sections != null)
sb.Append(", ");
sb.Append($"default perms: {perms}");
}
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"User Group {group.Id} \"{group.Name}\" ({group.Alias})",
"umbraco/user-group/save", $"{sb}");
// now audit the users that have changed
foreach (var user in groupWithUser.RemovedUsers)
{
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
user.Id, $"User \"{user.Name}\" {FormatEmail(user)}",
"umbraco/user-group/save", $"Removed user \"{user.Name}\" {FormatEmail(user)} from group {group.Id} \"{group.Name}\" ({group.Alias})");
}
foreach (var user in groupWithUser.AddedUsers)
{
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
user.Id, $"User \"{user.Name}\" {FormatEmail(user)}",
"umbraco/user-group/save", $"Added user \"{user.Name}\" {FormatEmail(user)} to group {group.Id} \"{group.Name}\" ({group.Alias})");
}
}
}
private void UserGroupPermissionAssigned(IUserService sender, SaveEventArgs<EntityPermission> saveEventArgs)
{
var performingUser = CurrentPerformingUser;
var perms = saveEventArgs.SavedEntities;
foreach (var perm in perms)
{
var group = sender.GetUserGroupById(perm.UserGroupId);
var assigned = string.Join(", ", perm.AssignedPermissions);
var entity = _entityService.Get(perm.EntityId);
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"User Group {group.Id} \"{group.Name}\" ({group.Alias})",
"umbraco/user-group/permissions-change", $"assigning {(string.IsNullOrWhiteSpace(assigned) ? "(nothing)" : assigned)} on id:{perm.EntityId} \"{entity.Name}\"");
}
}
private void OnSavedMember(IMemberService sender, SaveEventArgs<IMember> saveEventArgs)
{
var performingUser = CurrentPerformingUser;
var members = saveEventArgs.SavedEntities;
foreach (var member in members)
{
var dp = string.Join(", ", ((Member) member).GetWereDirtyProperties());
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"Member {member.Id} \"{member.Name}\" {FormatEmail(member)}",
"umbraco/member/save", $"updating {(string.IsNullOrWhiteSpace(dp) ? "(nothing)" : dp)}");
}
}
private void OnDeletedMember(IMemberService sender, DeleteEventArgs<IMember> deleteEventArgs)
{
var performingUser = CurrentPerformingUser;
var members = deleteEventArgs.DeletedEntities;
foreach (var member in members)
{
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
-1, $"Member {member.Id} \"{member.Name}\" {FormatEmail(member)}",
"umbraco/member/delete", $"delete member id:{member.Id} \"{member.Name}\" {FormatEmail(member)}");
}
}
private void OnSavedUser(IUserService sender, SaveEventArgs<IUser> saveEventArgs)
{
var performingUser = CurrentPerformingUser;
var affectedUsers = saveEventArgs.SavedEntities;
foreach (var affectedUser in affectedUsers)
{
var groups = affectedUser.WasPropertyDirty("Groups")
? string.Join(", ", affectedUser.Groups.Select(x => x.Alias))
: null;
var dp = string.Join(", ", ((User)affectedUser).GetWereDirtyProperties());
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
affectedUser.Id, $"User \"{affectedUser.Name}\" {FormatEmail(affectedUser)}",
"umbraco/user/save", $"updating {(string.IsNullOrWhiteSpace(dp) ? "(nothing)" : dp)}{(groups == null ? "" : "; groups assigned: " + groups)}");
}
}
private void OnDeletedUser(IUserService sender, DeleteEventArgs<IUser> deleteEventArgs)
{
var performingUser = CurrentPerformingUser;
var affectedUsers = deleteEventArgs.DeletedEntities;
foreach (var affectedUser in affectedUsers)
_auditService.Write(performingUser.Id, $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}", PerformingIp,
DateTime.UtcNow,
affectedUser.Id, $"User \"{affectedUser.Name}\" {FormatEmail(affectedUser)}",
"umbraco/user/delete", "delete user");
}
private void OnLoginSuccess(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs)
{
var performingUser = GetPerformingUser(identityArgs.PerformingUser);
WriteAudit(performingUser, identityArgs.AffectedUser, identityArgs.IpAddress, "umbraco/user/sign-in/login", "login success");
}
}
private void OnLogoutSuccess(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs)
{
var performingUser = GetPerformingUser(identityArgs.PerformingUser);
WriteAudit(performingUser, identityArgs.AffectedUser, identityArgs.IpAddress, "umbraco/user/sign-in/logout", "logout success");
}
}
private void OnPasswordReset(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs && identityArgs.PerformingUser >= 0)
{
WriteAudit(identityArgs.PerformingUser, identityArgs.AffectedUser, identityArgs.IpAddress, "umbraco/user/password/reset", "password reset");
}
}
private void OnPasswordChanged(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs && identityArgs.PerformingUser >= 0)
{
WriteAudit(identityArgs.PerformingUser, identityArgs.AffectedUser, identityArgs.IpAddress, "umbraco/user/password/change", "password change");
}
}
private void OnLoginFailed(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs && identityArgs.PerformingUser >= 0)
{
WriteAudit(identityArgs.PerformingUser, 0, identityArgs.IpAddress, "umbraco/user/sign-in/failed", "login failed", affectedDetails: "");
}
}
private void OnForgotPasswordChange(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs && identityArgs.PerformingUser >= 0)
{
WriteAudit(identityArgs.PerformingUser, identityArgs.AffectedUser, identityArgs.IpAddress, "umbraco/user/password/forgot/change", "password forgot/change");
}
}
private void OnForgotPasswordRequest(object sender, EventArgs args)
{
if (args is IdentityAuditEventArgs identityArgs && identityArgs.PerformingUser >= 0)
{
WriteAudit(identityArgs.PerformingUser, identityArgs.AffectedUser, identityArgs.IpAddress, "umbraco/user/password/forgot/request", "password forgot/request");
}
}
private void WriteAudit(int performingId, int affectedId, string ipAddress, string eventType, string eventDetails, string affectedDetails = null)
{
var performingUser = _userService.GetUserById(performingId);
var performingDetails = performingUser == null
? $"User UNKNOWN:{performingId}"
: $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}";
WriteAudit(performingId, performingDetails, affectedId, ipAddress, eventType, eventDetails, affectedDetails);
}
private void WriteAudit(IUser performingUser, int affectedId, string ipAddress, string eventType, string eventDetails)
{
var performingDetails = performingUser == null
? $"User UNKNOWN"
: $"User \"{performingUser.Name}\" {FormatEmail(performingUser)}";
WriteAudit(performingUser?.Id ?? 0, performingDetails, affectedId, ipAddress, eventType, eventDetails);
}
private void WriteAudit(int performingId, string performingDetails, int affectedId, string ipAddress, string eventType, string eventDetails, string affectedDetails = null)
{
if (affectedDetails == null)
{
var affectedUser = _userService.GetUserById(affectedId);
affectedDetails = affectedUser == null
? $"User UNKNOWN:{affectedId}"
: $"User \"{affectedUser.Name}\" {FormatEmail(affectedUser)}";
}
_auditService.Write(performingId, performingDetails,
ipAddress,
DateTime.UtcNow,
affectedId, affectedDetails,
eventType, eventDetails);
}
}
}
-87
View File
@@ -1,87 +0,0 @@
using System;
using System.ComponentModel;
namespace Umbraco.Core.Auditing
{
[Obsolete("Use Umbraco.Core.Models.AuditType instead")]
[EditorBrowsable(EditorBrowsableState.Never)]
public enum AuditTypes
{
/// <summary>
/// Used when new nodes are added
/// </summary>
New,
/// <summary>
/// Used when nodes are saved
/// </summary>
Save,
/// <summary>
/// Used when nodes are opened
/// </summary>
Open,
/// <summary>
/// Used when nodes are deleted
/// </summary>
Delete,
/// <summary>
/// Used when nodes are published
/// </summary>
Publish,
/// <summary>
/// Used when nodes are send to publishing
/// </summary>
SendToPublish,
/// <summary>
/// Used when nodes are unpublished
/// </summary>
UnPublish,
/// <summary>
/// Used when nodes are moved
/// </summary>
Move,
/// <summary>
/// Used when nodes are copied
/// </summary>
Copy,
/// <summary>
/// Used when nodes are assígned a domain
/// </summary>
AssignDomain,
/// <summary>
/// Used when public access are changed for a node
/// </summary>
PublicAccess,
/// <summary>
/// Used when nodes are sorted
/// </summary>
Sort,
/// <summary>
/// Used when a notification are send to a user
/// </summary>
Notify,
/// <summary>
/// General system notification
/// </summary>
System,
/// <summary>
/// Used when a node's content is rolled back to a previous version
/// </summary>
RollBack,
/// <summary>
/// Used when a package is installed
/// </summary>
PackagerInstall,
/// <summary>
/// Used when a package is uninstalled
/// </summary>
PackagerUninstall,
/// <summary>
/// Used when a node is send to translation
/// </summary>
SendToTranslate,
/// <summary>
/// Use this log action for custom log messages that should be shown in the audit trail
/// </summary>
Custom
}
}
@@ -1,4 +1,5 @@
using System;
using System.ComponentModel;
using System.Threading;
using System.Web;
using Umbraco.Core.Security;
@@ -45,12 +46,8 @@ namespace Umbraco.Core.Auditing
/// </summary>
public string Username { get; private set; }
/// <summary>
/// Sets the properties on the event being raised, all parameters are optional except for the action being performed
/// </summary>
/// <param name="action">An action based on the AuditEvent enum</param>
/// <param name="ipAddress">The client's IP address. This is usually automatically set but could be overridden if necessary</param>
/// <param name="performingUser">The Id of the user performing the action (if different from the user affected by the action)</param>
[Obsolete("Use the method that has the affectedUser parameter instead")]
[EditorBrowsable(EditorBrowsableState.Never)]
public IdentityAuditEventArgs(AuditEvent action, string ipAddress, int performingUser = -1)
{
DateTimeUtc = DateTime.UtcNow;
@@ -63,6 +60,35 @@ namespace Umbraco.Core.Auditing
: performingUser;
}
/// <summary>
/// Default constructor
/// </summary>
/// <param name="action"></param>
/// <param name="ipAddress"></param>
/// <param name="comment"></param>
/// <param name="performingUser"></param>
/// <param name="affectedUser"></param>
public IdentityAuditEventArgs(AuditEvent action, string ipAddress, string comment = null, int performingUser = -1, int affectedUser = -1)
{
DateTimeUtc = DateTime.UtcNow;
Action = action;
IpAddress = ipAddress;
Comment = comment;
AffectedUser = affectedUser;
PerformingUser = performingUser == -1
? GetCurrentRequestBackofficeUserId()
: performingUser;
}
/// <summary>
/// Creates an instance without a performing or affected user (the id will be set to -1)
/// </summary>
/// <param name="action"></param>
/// <param name="ipAddress"></param>
/// <param name="username"></param>
/// <param name="comment"></param>
public IdentityAuditEventArgs(AuditEvent action, string ipAddress, string username, string comment)
{
DateTimeUtc = DateTime.UtcNow;
@@ -71,6 +97,22 @@ namespace Umbraco.Core.Auditing
IpAddress = ipAddress;
Username = username;
Comment = comment;
PerformingUser = -1;
}
public IdentityAuditEventArgs(AuditEvent action, string ipAddress, string username, string comment, int performingUser)
{
DateTimeUtc = DateTime.UtcNow;
Action = action;
IpAddress = ipAddress;
Username = username;
Comment = comment;
PerformingUser = performingUser == -1
? GetCurrentRequestBackofficeUserId()
: performingUser;
}
/// <summary>
+6 -6
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Web;
@@ -21,7 +21,7 @@ namespace Umbraco.Core
private static readonly Regex Log4NetAssemblyPattern = new Regex("log4net, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=\\w+$", RegexOptions.Compiled);
private const string Log4NetReplacement = "log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a";
/// <summary>
/// This is used to do an assembly binding redirect via code - normally required due to signature changes in assemblies
/// </summary>
@@ -30,12 +30,12 @@ namespace Umbraco.Core
/// <returns></returns>
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
//log4net:
//log4net:
if (Log4NetAssemblyPattern.IsMatch(args.Name) && args.Name != Log4NetReplacement)
{
return Assembly.Load(Log4NetAssemblyPattern.Replace(args.Name, Log4NetReplacement));
}
//AutoMapper:
// ensure the assembly is indeed AutoMapper and that the PublicKeyToken is null before trying to Load again
// do NOT just replace this with 'return Assembly', as it will cause an infinite loop -> stackoverflow
@@ -43,7 +43,7 @@ namespace Umbraco.Core
return Assembly.Load(args.Name.Replace(", PublicKeyToken=null", ", PublicKeyToken=be96cd2c38ef1005"));
return null;
}
}
}
}
+422
View File
@@ -0,0 +1,422 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Web;
using System.Web.Caching;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Class that is exposed by the ApplicationContext for application wide caching purposes
/// </summary>
public class CacheHelper
{
public static CacheHelper NoCache { get; } = new CacheHelper(NullCacheProvider.Instance, NullCacheProvider.Instance, NullCacheProvider.Instance, new IsolatedRuntimeCache(_ => NullCacheProvider.Instance));
/// <summary>
/// Creates a cache helper with disabled caches
/// </summary>
/// <returns></returns>
/// <remarks>
/// Good for unit testing
/// </remarks>
public static CacheHelper CreateDisabledCacheHelper()
{
// do *not* return NoCache
// NoCache is a special instance that is detected by RepositoryBase and disables all cache policies
// CreateDisabledCacheHelper is used in tests to use no cache, *but* keep all cache policies
return new CacheHelper(NullCacheProvider.Instance, NullCacheProvider.Instance, NullCacheProvider.Instance, new IsolatedRuntimeCache(_ => NullCacheProvider.Instance));
}
/// <summary>
/// Initializes a new instance for use in the web
/// </summary>
public CacheHelper()
: this(
new HttpRuntimeCacheProvider(HttpRuntime.Cache),
new StaticCacheProvider(),
new HttpRequestCacheProvider(),
new IsolatedRuntimeCache(t => new ObjectCacheRuntimeCacheProvider()))
{
}
/// <summary>
/// Initializes a new instance for use in the web
/// </summary>
/// <param name="cache"></param>
public CacheHelper(System.Web.Caching.Cache cache)
: this(
new HttpRuntimeCacheProvider(cache),
new StaticCacheProvider(),
new HttpRequestCacheProvider(),
new IsolatedRuntimeCache(t => new ObjectCacheRuntimeCacheProvider()))
{
}
[Obsolete("Use the constructor the specifies all dependencies")]
[EditorBrowsable(EditorBrowsableState.Never)]
public CacheHelper(
IRuntimeCacheProvider httpCacheProvider,
ICacheProvider staticCacheProvider,
ICacheProvider requestCacheProvider)
: this(httpCacheProvider, staticCacheProvider, requestCacheProvider, 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>
/// <param name="isolatedCacheManager"></param>
public CacheHelper(
IRuntimeCacheProvider httpCacheProvider,
ICacheProvider staticCacheProvider,
ICacheProvider requestCacheProvider,
IsolatedRuntimeCache isolatedCacheManager)
{
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;
IsolatedRuntimeCache = isolatedCacheManager;
}
/// <summary>
/// Returns the current Request cache
/// </summary>
public ICacheProvider RequestCache { get; internal set; }
/// <summary>
/// Returns the current Runtime cache
/// </summary>
public ICacheProvider StaticCache { get; internal set; }
/// <summary>
/// Returns the current Runtime cache
/// </summary>
public IRuntimeCacheProvider RuntimeCache { get; internal set; }
/// <summary>
/// Returns the current Isolated Runtime cache manager
/// </summary>
public IsolatedRuntimeCache IsolatedRuntimeCache { get; internal set; }
#region Legacy Runtime/Http Cache accessors
/// <summary>
/// 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()
{
RuntimeCache.ClearAllCache();
IsolatedRuntimeCache.ClearAllCaches();
}
/// <summary>
/// Clears the item in umbraco's runtime cache with the given key
/// </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)
{
RuntimeCache.ClearCacheItem(key);
}
/// <summary>
/// Clears all objects in the System.Web.Cache with the System.Type name as the
/// input parameter. (using [object].GetType())
/// </summary>
/// <param name="typeName">The name of the System.Type which should be cleared from cache ex "System.Xml.XmlDocument"</param>
[Obsolete("Do not use this method, access the runtime cache from the RuntimeCache property")]
public void ClearCacheObjectTypes(string 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>()
{
RuntimeCache.ClearCacheObjectTypes<T>();
}
/// <summary>
/// Clears all cache items that starts with the key passed.
/// </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)
{
RuntimeCache.ClearCacheByKeySearch(keyStartsWith);
}
/// <summary>
/// Clears all cache items that have a key that matches the regular expression
/// </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)
{
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)
{
return RuntimeCache.GetCacheItemsByKeySearch<T>(keyStartsWith);
}
/// <summary>
/// Returns a cache item by key, does not update the cache if it isn't there.
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <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)
{
return RuntimeCache.GetCacheItem<TT>(cacheKey);
}
/// <summary>
/// Gets (and adds if necessary) an item from the cache with all of the default parameters
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <param name="cacheKey"></param>
/// <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)
{
return RuntimeCache.GetCacheItem<TT>(cacheKey, getCacheItem);
}
/// <summary>
/// Gets (and adds if necessary) an item from the cache with the specified absolute expiration date (from NOW)
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="timeout">This will set an absolute expiration from now until the timeout</param>
/// <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)
{
return RuntimeCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout);
}
/// <summary>
/// Gets (and adds if necessary) an item from the cache with the specified absolute expiration date (from NOW)
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="refreshAction"></param>
/// <param name="timeout">This will set an absolute expiration from now until the timeout</param>
/// <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)
{
return RuntimeCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, removedCallback: refreshAction);
}
/// <summary>
/// Gets (and adds if necessary) an item from the cache with the specified absolute expiration date (from NOW)
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="priority"></param>
/// <param name="refreshAction"></param>
/// <param name="timeout">This will set an absolute expiration from now until the timeout</param>
/// <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)
{
return RuntimeCache.GetCacheItem<TT>(cacheKey, getCacheItem, timeout, false, priority, refreshAction);
}
/// <summary>
/// Gets (and adds if necessary) an item from the cache with the specified absolute expiration date (from NOW)
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="priority"></param>
/// <param name="refreshAction"></param>
/// <param name="cacheDependency"></param>
/// <param name="timeout">This will set an absolute expiration from now until the timeout</param>
/// <param name="getCacheItem"></param>
/// <returns></returns>
[Obsolete("Do not use this method, we no longer support the caching overloads with references to CacheDependency, use the overloads specifying a file collection instead")]
public TT GetCacheItem<TT>(string cacheKey,
CacheItemPriority priority,
CacheItemRemovedCallback refreshAction,
CacheDependency cacheDependency,
TimeSpan timeout,
Func<TT> getCacheItem)
{
var cache = GetHttpRuntimeCacheProvider(RuntimeCache);
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));
}
/// <summary>
/// Gets (and adds if necessary) an item from the cache
/// </summary>
/// <typeparam name="TT"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="priority"></param>
/// <param name="cacheDependency"></param>
/// <param name="getCacheItem"></param>
/// <returns></returns>
[Obsolete("Do not use this method, we no longer support the caching overloads with references to CacheDependency, use the overloads specifying a file collection instead")]
public TT GetCacheItem<TT>(string cacheKey,
CacheItemPriority priority,
CacheDependency cacheDependency,
Func<TT> getCacheItem)
{
var cache = GetHttpRuntimeCacheProvider(RuntimeCache);
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));
}
/// <summary>
/// Inserts an item into the cache, if it already exists in the cache it will be replaced
/// </summary>
/// <typeparam name="T"></typeparam>
/// <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)
{
RuntimeCache.InsertCacheItem<T>(cacheKey, getCacheItem, priority: priority);
}
/// <summary>
/// Inserts an item into the cache, if it already exists in the cache it will be replaced
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cacheKey"></param>
/// <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)
{
RuntimeCache.InsertCacheItem<T>(cacheKey, getCacheItem, timeout, priority: priority);
}
/// <summary>
/// Inserts an item into the cache, if it already exists in the cache it will be replaced
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="priority"></param>
/// <param name="cacheDependency"></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, we no longer support the caching overloads with references to CacheDependency, use the overloads specifying a file collection instead")]
public void InsertCacheItem<T>(string cacheKey,
CacheItemPriority priority,
CacheDependency cacheDependency,
TimeSpan timeout,
Func<T> getCacheItem)
{
var cache = GetHttpRuntimeCacheProvider(RuntimeCache);
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));
}
/// <summary>
/// Inserts an item into the cache, if it already exists in the cache it will be replaced
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="priority"></param>
/// <param name="refreshAction"></param>
/// <param name="cacheDependency"></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, we no longer support the caching overloads with references to CacheDependency, use the overloads specifying a file collection instead")]
public void InsertCacheItem<T>(string cacheKey,
CacheItemPriority priority,
CacheItemRemovedCallback refreshAction,
CacheDependency cacheDependency,
TimeSpan? timeout,
Func<T> getCacheItem)
{
var cache = GetHttpRuntimeCacheProvider(RuntimeCache);
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));
}
#endregion
private HttpRuntimeCacheProvider GetHttpRuntimeCacheProvider(IRuntimeCacheProvider runtimeCache)
{
HttpRuntimeCacheProvider cache;
var wrapper = RuntimeCache as IRuntimeCacheProviderWrapper;
if (wrapper != null)
{
cache = wrapper.InnerProvider as HttpRuntimeCacheProvider;
}
else
{
cache = RuntimeCache as HttpRuntimeCacheProvider;
}
return cache;
}
}
}
+4 -50
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.ComponentModel;
using Umbraco.Core.CodeAnnotations;
@@ -22,16 +22,11 @@ namespace Umbraco.Core.Cache
[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_";
public const string MacroContentCacheKey = "macroContent_"; // for macro contents
[UmbracoWillObsolete("This cache key is only used for legacy 'library' member caching, remove in v8")]
public const string MemberLibraryCacheKey = "UL_GetMember";
@@ -42,56 +37,15 @@ namespace Umbraco.Core.Cache
[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";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string UserGroupPermissionsCacheKey = "UmbracoUserGroupPermissions";
[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:";
[Obsolete("No longer used and will be removed in v8")]
[EditorBrowsable(EditorBrowsableState.Never)]
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";
public const string IdToKeyCacheKey = "UI2K__";
public const string KeyToIdCacheKey = "UK2I__";
}
}
}
@@ -67,4 +67,4 @@ namespace Umbraco.Core.Cache
return result.TryConvertTo<T>().Result;
}
}
}
}
+88 -46
View File
@@ -1,78 +1,120 @@
using System;
using Umbraco.Core.Events;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Sync;
using umbraco.interfaces;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Cache
{
/// <summary>
/// A base class for cache refreshers to inherit from that ensures the correct events are raised
/// when cache refreshing occurs.
/// A base class for cache refreshers that handles events.
/// </summary>
/// <typeparam name="TInstanceType">The real cache refresher type, this is used for raising strongly typed events</typeparam>
/// <typeparam name="TInstanceType">The actual cache refresher type.</typeparam>
/// <remarks>The actual cache refresher type is used for strongly typed events.</remarks>
public abstract class CacheRefresherBase<TInstanceType> : ICacheRefresher
where TInstanceType : ICacheRefresher
where TInstanceType : class, ICacheRefresher
{
/// <summary>
/// An event that is raised when cache is updated on an individual server
/// Initializes a new instance of the <see cref="CacheRefresherBase{TInstanceType}"/>.
/// </summary>
/// <param name="cacheHelper">A cache helper.</param>
protected CacheRefresherBase(CacheHelper cacheHelper)
{
CacheHelper = cacheHelper;
}
/// <summary>
/// Triggers when the cache is updated on the server.
/// </summary>
/// <remarks>
/// This event will fire on each server configured for an Umbraco project whenever a cache refresher
/// is updated.
/// Triggers on each server configured for an Umbraco project whenever a cache refresher is updated.
/// </remarks>
public static event TypedEventHandler<TInstanceType, CacheRefresherEventArgs> CacheUpdated;
/// <summary>
/// Raises the event
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
protected static void OnCacheUpdated(TInstanceType sender, CacheRefresherEventArgs args)
{
if (CacheUpdated != null)
{
CacheUpdated(sender, args);
}
}
#region Define
/// <summary>
/// Returns the real instance of the object ('this') for use in strongly typed events
/// Gets the typed 'this' for events.
/// </summary>
protected abstract TInstanceType Instance { get; }
protected abstract TInstanceType This { get; }
public abstract Guid UniqueIdentifier { get; }
/// <summary>
/// Gets the unique identifier of the refresher.
/// </summary>
public abstract Guid RefresherUniqueId { get; }
/// <summary>
/// Gets the name of the refresher.
/// </summary>
public abstract string Name { get; }
#endregion
#region Refresher
/// <summary>
/// Refreshes all entities.
/// </summary>
public virtual void RefreshAll()
{
OnCacheUpdated(Instance, new CacheRefresherEventArgs(null, MessageType.RefreshAll));
}
public virtual void Refresh(int id)
{
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RefreshById));
}
public virtual void Remove(int id)
{
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RemoveById));
}
public virtual void Refresh(Guid id)
{
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RefreshById));
OnCacheUpdated(This, new CacheRefresherEventArgs(null, MessageType.RefreshAll));
}
/// <summary>
/// Clears the cache for all repository entities of this type
/// Refreshes an entity.
/// </summary>
/// <typeparam name="TEntity"></typeparam>
internal void ClearAllIsolatedCacheByEntityType<TEntity>()
where TEntity : class, IAggregateRoot
/// <param name="id">The entity's identifier.</param>
public virtual void Refresh(int id)
{
ApplicationContext.Current.ApplicationCache.IsolatedRuntimeCache.ClearCache<TEntity>();
OnCacheUpdated(This, new CacheRefresherEventArgs(id, MessageType.RefreshById));
}
/// <summary>
/// Refreshes an entity.
/// </summary>
/// <param name="id">The entity's identifier.</param>
public virtual void Refresh(Guid id)
{
OnCacheUpdated(This, new CacheRefresherEventArgs(id, MessageType.RefreshById));
}
/// <summary>
/// Removes an entity.
/// </summary>
/// <param name="id">The entity's identifier.</param>
public virtual void Remove(int id)
{
OnCacheUpdated(This, new CacheRefresherEventArgs(id, MessageType.RemoveById));
}
#endregion
#region Protected
/// <summary>
/// Gets the cache helper.
/// </summary>
protected CacheHelper CacheHelper { get; }
/// <summary>
/// Clears the cache for all repository entities of a specified type.
/// </summary>
/// <typeparam name="TEntity">The type of the entities.</typeparam>
protected void ClearAllIsolatedCacheByEntityType<TEntity>()
where TEntity : class, IEntity
{
CacheHelper.IsolatedRuntimeCache.ClearCache<TEntity>();
}
/// <summary>
/// Raises the CacheUpdated event.
/// </summary>
/// <param name="sender">The event sender.</param>
/// <param name="args">The event arguments.</param>
protected static void OnCacheUpdated(TInstanceType sender, CacheRefresherEventArgs args)
{
CacheUpdated?.Invoke(sender, args);
}
#endregion
}
}
}
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Cache
{
public class CacheRefresherCollection : BuilderCollectionBase<ICacheRefresher>
{
public CacheRefresherCollection(IEnumerable<ICacheRefresher> items)
: base(items)
{ }
public ICacheRefresher this[Guid id]
=> this.FirstOrDefault(x => x.RefresherUniqueId == id);
}
}
@@ -0,0 +1,15 @@
using System.Collections.Generic;
using LightInject;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Cache
{
public class CacheRefresherCollectionBuilder : LazyCollectionBuilderBase<CacheRefresherCollectionBuilder, CacheRefresherCollection, ICacheRefresher>
{
public CacheRefresherCollectionBuilder(IServiceContainer container)
: base(container)
{ }
protected override CacheRefresherCollectionBuilder This => this;
}
}
@@ -16,4 +16,4 @@ namespace Umbraco.Core.Cache
public object MessageObject { get; private set; }
public MessageType MessageType { get; private set; }
}
}
}
@@ -1,9 +1,9 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Caching;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Entities;
namespace Umbraco.Core.Cache
{
@@ -16,23 +16,26 @@ namespace Umbraco.Core.Cache
}
/// <summary>
/// A wrapper for any IRuntimeCacheProvider that ensures that all inserts and returns
/// A wrapper for any IRuntimeCacheProvider that ensures that all inserts and returns
/// are a deep cloned copy of the item when the item is IDeepCloneable and that tracks changes are
/// reset if the object is TracksChangesEntityBase
/// </summary>
internal class DeepCloneRuntimeCacheProvider : IRuntimeCacheProvider, IRuntimeCacheProviderWrapper
{
public IRuntimeCacheProvider InnerProvider { get; private set; }
public IRuntimeCacheProvider InnerProvider { get; }
public DeepCloneRuntimeCacheProvider(IRuntimeCacheProvider innerProvider)
{
if (innerProvider.GetType() == typeof(DeepCloneRuntimeCacheProvider))
throw new InvalidOperationException("A " + typeof(DeepCloneRuntimeCacheProvider) + " cannot wrap another instance of " + typeof(DeepCloneRuntimeCacheProvider));
var type = typeof (DeepCloneRuntimeCacheProvider);
if (innerProvider.GetType() == type)
throw new InvalidOperationException($"A {type} cannot wrap another instance of {type}.");
InnerProvider = innerProvider;
}
#region Clear - doesn't require any changes
public void ClearAllCache()
{
InnerProvider.ClearAllCache();
@@ -66,7 +69,8 @@ namespace Umbraco.Core.Cache
public void ClearCacheByKeyExpression(string regexString)
{
InnerProvider.ClearCacheByKeyExpression(regexString);
}
}
#endregion
public IEnumerable<object> GetCacheItemsByKeySearch(string keyStartsWith)
@@ -80,7 +84,7 @@ namespace Umbraco.Core.Cache
return InnerProvider.GetCacheItemsByKeyExpression(regexString)
.Select(CheckCloneableAndTracksChanges);
}
public object GetCacheItem(string cacheKey)
{
var item = InnerProvider.GetCacheItem(cacheKey);
@@ -108,11 +112,11 @@ namespace Umbraco.Core.Cache
var value = result.Value; // force evaluation now - this may throw if cacheItem throws, and then nothing goes into cache
if (value == null) return null; // do not store null values (backward compat)
//Clone/reset to go into the cache
// clone / reset to go into the cache
return CheckCloneableAndTracksChanges(value);
}, timeout, isSliding, priority, removedCallback, dependentFiles);
//Clone/reset to go out of the cache
// clone / reset to go into the cache
return CheckCloneableAndTracksChanges(cached);
}
@@ -124,8 +128,9 @@ namespace Umbraco.Core.Cache
var value = result.Value; // force evaluation now - this may throw if cacheItem throws, and then nothing goes into cache
if (value == null) return null; // do not store null values (backward compat)
// clone / reset to go into the cache
return CheckCloneableAndTracksChanges(value);
}, timeout, isSliding, priority, removedCallback, dependentFiles);
}, timeout, isSliding, priority, removedCallback, dependentFiles);
}
private static object CheckCloneableAndTracksChanges(object input)
@@ -133,11 +138,10 @@ namespace Umbraco.Core.Cache
var cloneable = input as IDeepCloneable;
if (cloneable != null)
{
input = cloneable.DeepClone();
input = cloneable.DeepClone();
}
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
// reset dirty initial properties (U4-1946)
var tracksChanges = input as IRememberBeingDirty;
if (tracksChanges != null)
{
@@ -148,4 +152,4 @@ namespace Umbraco.Core.Cache
return input;
}
}
}
}
@@ -1,7 +1,7 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Cache
@@ -18,32 +18,26 @@ namespace Umbraco.Core.Cache
/// <para>If options.GetAllCacheValidateCount then we check against the db when getting many entities.</para>
/// </remarks>
internal class DefaultRepositoryCachePolicy<TEntity, TId> : RepositoryCachePolicyBase<TEntity, TId>
where TEntity : class, IAggregateRoot
where TEntity : class, IEntity
{
private static readonly TEntity[] EmptyEntities = new TEntity[0]; // const
private readonly RepositoryCachePolicyOptions _options;
public DefaultRepositoryCachePolicy(IRuntimeCacheProvider cache, RepositoryCachePolicyOptions options)
: base(cache)
public DefaultRepositoryCachePolicy(IRuntimeCacheProvider cache, IScopeAccessor scopeAccessor, RepositoryCachePolicyOptions options)
: base(cache, scopeAccessor)
{
if (options == null) throw new ArgumentNullException("options");
_options = options;
}
public override IRepositoryCachePolicy<TEntity, TId> Scoped(IRuntimeCacheProvider runtimeCache, IScope scope)
{
return new ScopedRepositoryCachePolicy<TEntity, TId>(this, runtimeCache, scope);
_options = options ?? throw new ArgumentNullException(nameof(options));
}
protected string GetEntityCacheKey(object id)
{
if (id == null) throw new ArgumentNullException("id");
if (id == null) throw new ArgumentNullException(nameof(id));
return GetEntityTypeCacheKey() + id;
}
protected string GetEntityTypeCacheKey()
{
return string.Format("uRepo_{0}_", typeof(TEntity).Name);
return $"uRepo_{typeof (TEntity).Name}_";
}
protected virtual void InsertEntity(string cacheKey, TEntity entity)
@@ -74,7 +68,7 @@ namespace Umbraco.Core.Cache
/// <inheritdoc />
public override void Create(TEntity entity, Action<TEntity> persistNew)
{
if (entity == null) throw new ArgumentNullException("entity");
if (entity == null) throw new ArgumentNullException(nameof(entity));
try
{
@@ -106,7 +100,7 @@ namespace Umbraco.Core.Cache
/// <inheritdoc />
public override void Update(TEntity entity, Action<TEntity> persistUpdated)
{
if (entity == null) throw new ArgumentNullException("entity");
if (entity == null) throw new ArgumentNullException(nameof(entity));
try
{
@@ -138,7 +132,7 @@ namespace Umbraco.Core.Cache
/// <inheritdoc />
public override void Delete(TEntity entity, Action<TEntity> persistDeleted)
{
if (entity == null) throw new ArgumentNullException("entity");
if (entity == null) throw new ArgumentNullException(nameof(entity));
try
{
@@ -244,7 +238,7 @@ namespace Umbraco.Core.Cache
/// <inheritdoc />
public override void ClearAll()
{
Cache.ClearAllCache();
Cache.ClearCacheByKeySearch(GetEntityTypeCacheKey());
}
}
}
}
@@ -0,0 +1,147 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Cache
{
internal class DictionaryCacheProvider : ICacheProvider
{
private readonly ConcurrentDictionary<string, Lazy<object>> _items
= new ConcurrentDictionary<string, Lazy<object>>();
// for tests
internal ConcurrentDictionary<string, Lazy<object>> Items => _items;
public void ClearAllCache()
{
_items.Clear();
}
public void ClearCacheItem(string key)
{
_items.TryRemove(key, out _);
}
public void ClearCacheObjectTypes(string typeName)
{
var type = TypeFinder.GetTypeByName(typeName);
if (type == null) return;
var isInterface = type.IsInterface;
foreach (var kvp in _items
.Where(x =>
{
// entry.Value is Lazy<object> and not null, its value may be null
// remove null values as well, does not hurt
// get non-created as NonCreatedValue & exceptions as null
var value = DictionaryCacheProviderBase.GetSafeLazyValue(x.Value, true);
// if T is an interface remove anything that implements that interface
// otherwise remove exact types (not inherited types)
return value == null || (isInterface ? (type.IsInstanceOfType(value)) : (value.GetType() == type));
}))
_items.TryRemove(kvp.Key, out _);
}
public void ClearCacheObjectTypes<T>()
{
var typeOfT = typeof(T);
var isInterface = typeOfT.IsInterface;
foreach (var kvp in _items
.Where(x =>
{
// entry.Value is Lazy<object> and not null, its value may be null
// remove null values as well, does not hurt
// compare on exact type, don't use "is"
// get non-created as NonCreatedValue & exceptions as null
var value = DictionaryCacheProviderBase.GetSafeLazyValue(x.Value, true);
// if T is an interface remove anything that implements that interface
// otherwise remove exact types (not inherited types)
return value == null || (isInterface ? (value is T) : (value.GetType() == typeOfT));
}))
_items.TryRemove(kvp.Key, out _);
}
public void ClearCacheObjectTypes<T>(Func<string, T, bool> predicate)
{
var typeOfT = typeof(T);
var isInterface = typeOfT.IsInterface;
foreach (var kvp in _items
.Where(x =>
{
// entry.Value is Lazy<object> and not null, its value may be null
// remove null values as well, does not hurt
// compare on exact type, don't use "is"
// get non-created as NonCreatedValue & exceptions as null
var value = DictionaryCacheProviderBase.GetSafeLazyValue(x.Value, true);
if (value == null) return true;
// if T is an interface remove anything that implements that interface
// otherwise remove exact types (not inherited types)
return (isInterface ? (value is T) : (value.GetType() == typeOfT))
// run predicate on the 'public key' part only, ie without prefix
&& predicate(x.Key, (T)value);
}))
_items.TryRemove(kvp.Key, out _);
}
public void ClearCacheByKeySearch(string keyStartsWith)
{
foreach (var ikvp in _items
.Where(kvp => kvp.Key.InvariantStartsWith(keyStartsWith)))
_items.TryRemove(ikvp.Key, out _);
}
public void ClearCacheByKeyExpression(string regexString)
{
foreach (var ikvp in _items
.Where(kvp => Regex.IsMatch(kvp.Key, regexString)))
_items.TryRemove(ikvp.Key, out _);
}
public IEnumerable<object> GetCacheItemsByKeySearch(string keyStartsWith)
{
return _items
.Where(kvp => kvp.Key.InvariantStartsWith(keyStartsWith))
.Select(kvp => DictionaryCacheProviderBase.GetSafeLazyValue(kvp.Value))
.Where(x => x != null);
}
public IEnumerable<object> GetCacheItemsByKeyExpression(string regexString)
{
return _items
.Where(kvp => Regex.IsMatch(kvp.Key, regexString))
.Select(kvp => DictionaryCacheProviderBase.GetSafeLazyValue(kvp.Value))
.Where(x => x != null);
}
public object GetCacheItem(string cacheKey)
{
_items.TryGetValue(cacheKey, out var result); // else null
return result == null ? null : DictionaryCacheProviderBase.GetSafeLazyValue(result); // return exceptions as null
}
public object GetCacheItem(string cacheKey, Func<object> getCacheItem)
{
var result = _items.GetOrAdd(cacheKey, k => DictionaryCacheProviderBase.GetSafeLazy(getCacheItem));
var value = result.Value; // will not throw (safe lazy)
if (!(value is DictionaryCacheProviderBase.ExceptionHolder eh))
return value;
// and... it's in the cache anyway - so contrary to other cache providers,
// which would trick with GetSafeLazyValue, we need to remove by ourselves,
// in order NOT to cache exceptions
_items.TryRemove(cacheKey, out result);
eh.Exception.Throw(); // throw once!
return null; // never reached
}
}
}
@@ -2,7 +2,9 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.ExceptionServices;
using System.Text.RegularExpressions;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Cache
{
@@ -22,8 +24,13 @@ namespace Umbraco.Core.Cache
protected abstract object GetEntry(string key);
// read-write lock the underlying cache
protected abstract IDisposable ReadLock { get; }
protected abstract IDisposable WriteLock { get; }
//protected abstract IDisposable ReadLock { get; }
//protected abstract IDisposable WriteLock { get; }
protected abstract void EnterReadLock();
protected abstract void ExitReadLock();
protected abstract void EnterWriteLock();
protected abstract void ExitWriteLock();
protected string GetCacheKey(string key)
{
@@ -44,7 +51,7 @@ namespace Umbraco.Core.Cache
}
catch (Exception e)
{
return new ExceptionHolder(e);
return new ExceptionHolder(ExceptionDispatchInfo.Capture(e));
}
});
}
@@ -74,33 +81,43 @@ namespace Umbraco.Core.Cache
internal class ExceptionHolder
{
public ExceptionHolder(Exception e)
public ExceptionHolder(ExceptionDispatchInfo e)
{
Exception = e;
}
public Exception Exception { get; private set; }
public ExceptionDispatchInfo Exception { get; }
}
#region Clear
public virtual void ClearAllCache()
{
using (WriteLock)
try
{
EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.ToArray())
RemoveEntry((string) entry.Key);
}
finally
{
ExitWriteLock();
}
}
public virtual void ClearCacheItem(string key)
{
var cacheKey = GetCacheKey(key);
using (WriteLock)
try
{
EnterWriteLock();
RemoveEntry(cacheKey);
}
finally
{
ExitWriteLock();
}
}
public virtual void ClearCacheObjectTypes(string typeName)
@@ -108,15 +125,16 @@ namespace Umbraco.Core.Cache
var type = TypeFinder.GetTypeByName(typeName);
if (type == null) return;
var isInterface = type.IsInterface;
using (WriteLock)
try
{
EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.Where(x =>
{
// entry.Value is Lazy<object> and not null, its value may be null
// remove null values as well, does not hurt
// get non-created as NonCreatedValue & exceptions as null
var value = GetSafeLazyValue((Lazy<object>)x.Value, true);
var value = GetSafeLazyValue((Lazy<object>) x.Value, true);
// if T is an interface remove anything that implements that interface
// otherwise remove exact types (not inherited types)
@@ -125,14 +143,19 @@ namespace Umbraco.Core.Cache
.ToArray())
RemoveEntry((string) entry.Key);
}
finally
{
ExitWriteLock();
}
}
public virtual void ClearCacheObjectTypes<T>()
{
var typeOfT = typeof(T);
var isInterface = typeOfT.IsInterface;
using (WriteLock)
try
{
EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.Where(x =>
{
@@ -140,7 +163,7 @@ namespace Umbraco.Core.Cache
// remove null values as well, does not hurt
// compare on exact type, don't use "is"
// get non-created as NonCreatedValue & exceptions as null
var value = GetSafeLazyValue((Lazy<object>)x.Value, true);
var value = GetSafeLazyValue((Lazy<object>) x.Value, true);
// if T is an interface remove anything that implements that interface
// otherwise remove exact types (not inherited types)
@@ -149,6 +172,10 @@ namespace Umbraco.Core.Cache
.ToArray())
RemoveEntry((string) entry.Key);
}
finally
{
ExitWriteLock();
}
}
public virtual void ClearCacheObjectTypes<T>(Func<string, T, bool> predicate)
@@ -156,8 +183,9 @@ namespace Umbraco.Core.Cache
var typeOfT = typeof(T);
var isInterface = typeOfT.IsInterface;
var plen = CacheItemPrefix.Length + 1;
using (WriteLock)
try
{
EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.Where(x =>
{
@@ -165,7 +193,7 @@ namespace Umbraco.Core.Cache
// remove null values as well, does not hurt
// compare on exact type, don't use "is"
// get non-created as NonCreatedValue & exceptions as null
var value = GetSafeLazyValue((Lazy<object>)x.Value, true);
var value = GetSafeLazyValue((Lazy<object>) x.Value, true);
if (value == null) return true;
// if T is an interface remove anything that implements that interface
@@ -176,30 +204,44 @@ namespace Umbraco.Core.Cache
}))
RemoveEntry((string) entry.Key);
}
finally
{
ExitWriteLock();
}
}
public virtual void ClearCacheByKeySearch(string keyStartsWith)
{
var plen = CacheItemPrefix.Length + 1;
using (WriteLock)
try
{
EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.Where(x => ((string)x.Key).Substring(plen).InvariantStartsWith(keyStartsWith))
.ToArray())
RemoveEntry((string) entry.Key);
}
finally
{
ExitWriteLock();
}
}
public virtual void ClearCacheByKeyExpression(string regexString)
{
var plen = CacheItemPrefix.Length + 1;
using (WriteLock)
try
{
EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.Where(x => Regex.IsMatch(((string)x.Key).Substring(plen), regexString))
.ToArray())
RemoveEntry((string) entry.Key);
}
finally
{
ExitWriteLock();
}
}
#endregion
@@ -210,12 +252,18 @@ namespace Umbraco.Core.Cache
{
var plen = CacheItemPrefix.Length + 1;
IEnumerable<DictionaryEntry> entries;
using (ReadLock)
try
{
EnterReadLock();
entries = GetDictionaryEntries()
.Where(x => ((string)x.Key).Substring(plen).InvariantStartsWith(keyStartsWith))
.ToArray(); // evaluate while locked
}
finally
{
ExitReadLock();
}
return entries
.Select(x => GetSafeLazyValue((Lazy<object>)x.Value)) // return exceptions as null
.Where(x => x != null); // backward compat, don't store null values in the cache
@@ -226,12 +274,17 @@ namespace Umbraco.Core.Cache
const string prefix = CacheItemPrefix + "-";
var plen = prefix.Length;
IEnumerable<DictionaryEntry> entries;
using (ReadLock)
try
{
EnterReadLock();
entries = GetDictionaryEntries()
.Where(x => Regex.IsMatch(((string)x.Key).Substring(plen), regexString))
.ToArray(); // evaluate while locked
}
finally
{
ExitReadLock();
}
return entries
.Select(x => GetSafeLazyValue((Lazy<object>)x.Value)) // return exceptions as null
.Where(x => x != null); // backward compat, don't store null values in the cache
@@ -241,10 +294,15 @@ namespace Umbraco.Core.Cache
{
cacheKey = GetCacheKey(cacheKey);
Lazy<object> result;
using (ReadLock)
try
{
EnterReadLock();
result = GetEntry(cacheKey) as Lazy<object>; // null if key not found
}
finally
{
ExitReadLock();
}
return result == null ? null : GetSafeLazyValue(result); // return exceptions as null
}
@@ -252,4 +310,4 @@ namespace Umbraco.Core.Cache
#endregion
}
}
}
@@ -1,8 +1,8 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Collections;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Cache
@@ -19,28 +19,23 @@ namespace Umbraco.Core.Cache
/// keep as a whole in memory.</para>
/// </remarks>
internal class FullDataSetRepositoryCachePolicy<TEntity, TId> : RepositoryCachePolicyBase<TEntity, TId>
where TEntity : class, IAggregateRoot
where TEntity : class, IEntity
{
private readonly Func<TEntity, TId> _entityGetId;
private readonly bool _expires;
public FullDataSetRepositoryCachePolicy(IRuntimeCacheProvider cache, Func<TEntity, TId> entityGetId, bool expires)
: base(cache)
public FullDataSetRepositoryCachePolicy(IRuntimeCacheProvider cache, IScopeAccessor scopeAccessor, Func<TEntity, TId> entityGetId, bool expires)
: base(cache, scopeAccessor)
{
_entityGetId = entityGetId;
_expires = expires;
}
public override IRepositoryCachePolicy<TEntity, TId> Scoped(IRuntimeCacheProvider runtimeCache, IScope scope)
{
return new ScopedRepositoryCachePolicy<TEntity, TId>(this, runtimeCache, scope);
}
protected static readonly TId[] EmptyIds = new TId[0]; // const
protected string GetEntityTypeCacheKey()
{
return string.Format("uRepo_{0}_", typeof(TEntity).Name);
return $"uRepo_{typeof (TEntity).Name}_";
}
protected void InsertEntities(TEntity[] entities)
@@ -56,20 +51,22 @@ namespace Umbraco.Core.Cache
// set to ListCloneBehavior.CloneOnce ie it will clone *once* when inserting,
// and then will *not* clone when retrieving.
var key = GetEntityTypeCacheKey();
if (_expires)
{
Cache.InsertCacheItem(GetEntityTypeCacheKey(), () => new DeepCloneableList<TEntity>(entities), TimeSpan.FromMinutes(5), true);
Cache.InsertCacheItem(key, () => new DeepCloneableList<TEntity>(entities), TimeSpan.FromMinutes(5), true);
}
else
{
Cache.InsertCacheItem(GetEntityTypeCacheKey(), () => new DeepCloneableList<TEntity>(entities));
Cache.InsertCacheItem(key, () => new DeepCloneableList<TEntity>(entities));
}
}
/// <inheritdoc />
public override void Create(TEntity entity, Action<TEntity> persistNew)
{
if (entity == null) throw new ArgumentNullException("entity");
if (entity == null) throw new ArgumentNullException(nameof(entity));
try
{
@@ -84,7 +81,7 @@ namespace Umbraco.Core.Cache
/// <inheritdoc />
public override void Update(TEntity entity, Action<TEntity> persistUpdated)
{
if (entity == null) throw new ArgumentNullException("entity");
if (entity == null) throw new ArgumentNullException(nameof(entity));
try
{
@@ -99,7 +96,7 @@ namespace Umbraco.Core.Cache
/// <inheritdoc />
public override void Delete(TEntity entity, Action<TEntity> persistDeleted)
{
if (entity == null) throw new ArgumentNullException("entity");
if (entity == null) throw new ArgumentNullException(nameof(entity));
try
{
@@ -120,7 +117,7 @@ namespace Umbraco.Core.Cache
// see note in InsertEntities - what we get here is the original
// cached entity, not a clone, so we need to manually ensure it is deep-cloned.
return entity == null ? null : (TEntity) entity.DeepClone();
return (TEntity)entity?.DeepClone();
}
/// <inheritdoc />
@@ -128,11 +125,11 @@ namespace Umbraco.Core.Cache
{
// get all from the cache -- and only the cache, then look for the entity
var all = Cache.GetCacheItem<DeepCloneableList<TEntity>>(GetEntityTypeCacheKey());
var entity = all == null ? null : all.FirstOrDefault(x => _entityGetId(x).Equals(id));
var entity = all?.FirstOrDefault(x => _entityGetId(x).Equals(id));
// see note in InsertEntities - what we get here is the original
// cached entity, not a clone, so we need to manually ensure it is deep-cloned.
return entity == null ? null : (TEntity)entity.DeepClone();
return (TEntity) entity?.DeepClone();
}
/// <inheritdoc />
@@ -159,7 +156,7 @@ namespace Umbraco.Core.Cache
}
// does NOT clone anything, so be nice with the returned values
private IEnumerable<TEntity> GetAllCached(Func<TId[], IEnumerable<TEntity>> performGetAll)
internal IEnumerable<TEntity> GetAllCached(Func<TId[], IEnumerable<TEntity>> performGetAll)
{
// try the cache first
var all = Cache.GetCacheItem<DeepCloneableList<TEntity>>(GetEntityTypeCacheKey());
@@ -177,4 +174,4 @@ namespace Umbraco.Core.Cache
Cache.ClearCacheItem(GetEntityTypeCacheKey());
}
}
}
}
@@ -79,24 +79,26 @@ namespace Umbraco.Core.Cache
#region Lock
protected override IDisposable ReadLock
private bool _entered;
protected override void EnterReadLock() => EnterWriteLock();
protected override void EnterWriteLock()
{
// there's no difference between ReadLock and WriteLock here
get { return WriteLock; }
if (HasContextItems)
{
System.Threading.Monitor.Enter(ContextItems.SyncRoot, ref _entered);
}
}
protected override IDisposable WriteLock
{
// NOTE
// could think about just overriding base.Locker to return a different
// object but then we'd create a ReaderWriterLockSlim per request,
// which is less efficient than just using a basic monitor lock.
protected override void ExitReadLock() => ExitWriteLock();
get
protected override void ExitWriteLock()
{
if (_entered)
{
return HasContextItems
? (IDisposable) new MonitorLock(ContextItems.SyncRoot)
: new NoopLocker();
_entered = false;
System.Threading.Monitor.Exit(ContextItems.SyncRoot);
}
}
@@ -113,8 +115,9 @@ namespace Umbraco.Core.Cache
Lazy<object> result;
using (WriteLock)
try
{
EnterWriteLock();
result = ContextItems[cacheKey] as Lazy<object>; // null if key not found
// cannot create value within the lock, so if result.IsValueCreated is false, just
@@ -127,6 +130,10 @@ namespace Umbraco.Core.Cache
ContextItems[cacheKey] = result;
}
}
finally
{
ExitWriteLock();
}
// using GetSafeLazy and GetSafeLazyValue ensures that we don't cache
// exceptions (but try again and again) and silently eat them - however at
@@ -136,8 +143,7 @@ namespace Umbraco.Core.Cache
//return result.Value;
var value = result.Value; // will not throw (safe lazy)
var eh = value as ExceptionHolder;
if (eh != null) throw eh.Exception; // throw once!
if (value is ExceptionHolder eh) eh.Exception.Throw(); // throw once!
return value;
}
@@ -146,10 +152,10 @@ namespace Umbraco.Core.Cache
#region Insert
#endregion
private class NoopLocker : DisposableObject
private class NoopLocker : DisposableObjectSlim
{
protected override void DisposeResources()
{ }
}
}
}
}
@@ -50,14 +50,26 @@ namespace Umbraco.Core.Cache
#region Lock
protected override IDisposable ReadLock
protected override void EnterReadLock()
{
get { return new ReadLock(_locker); }
_locker.EnterReadLock();
}
protected override IDisposable WriteLock
protected override void EnterWriteLock()
{
get { return new WriteLock(_locker); }
_locker.EnterWriteLock();;
}
protected override void ExitReadLock()
{
if (_locker.IsReadLockHeld)
_locker.ExitReadLock();
}
protected override void ExitWriteLock()
{
if (_locker.IsWriteLockHeld)
_locker.ExitWriteLock();
}
#endregion
@@ -98,7 +110,7 @@ namespace Umbraco.Core.Cache
// on the Lazy lock to ensure that getCacheItem runs once and everybody waits on it, while the global
// application lock has been released.
// NOTE
// NOTE
// The Lazy value creation may produce a null value.
// Must make sure (for backward compatibility) that we pretend they are not in the cache.
// So if we find an entry in the cache that already has its value created and is null,
@@ -118,10 +130,16 @@ namespace Umbraco.Core.Cache
// reads. We first try with a normal ReadLock for maximum concurrency and take the penalty of
// having to re-lock in case there's no value. Would need to benchmark to figure out whether
// it's worth it, though...
using (new ReadLock(_locker))
try
{
_locker.EnterReadLock();
result = _cache.Get(cacheKey) as Lazy<object>; // null if key not found
}
finally
{
if (_locker.IsReadLockHeld)
_locker.ExitReadLock();
}
var value = result == null ? null : GetSafeLazyValue(result);
if (value != null) return value;
@@ -153,8 +171,7 @@ namespace Umbraco.Core.Cache
//return result.Value;
value = result.Value; // will not throw (safe lazy)
var eh = value as ExceptionHolder;
if (eh != null) throw new Exception("Exception while creating a value.", eh.Exception); // throw once!
if (value is ExceptionHolder eh) eh.Exception.Throw(); // throw once!
return value;
}
@@ -196,11 +213,17 @@ namespace Umbraco.Core.Cache
var absolute = isSliding ? System.Web.Caching.Cache.NoAbsoluteExpiration : (timeout == null ? System.Web.Caching.Cache.NoAbsoluteExpiration : DateTime.Now.Add(timeout.Value));
var sliding = isSliding == false ? System.Web.Caching.Cache.NoSlidingExpiration : (timeout ?? System.Web.Caching.Cache.NoSlidingExpiration);
using (new WriteLock(_locker))
try
{
_locker.EnterWriteLock();
//NOTE: 'Insert' on System.Web.Caching.Cache actually does an add or update!
_cache.Insert(cacheKey, result, dependency, absolute, sliding, priority, removedCallback);
}
finally
{
if (_locker.IsWriteLockHeld)
_locker.ExitWriteLock();
}
}
public void InsertCacheItem(string cacheKey, Func<object> getCacheItem, TimeSpan? timeout = null, bool isSliding = false, CacheItemPriority priority = CacheItemPriority.Normal, CacheItemRemovedCallback removedCallback = null, string[] dependentFiles = null)
@@ -215,4 +238,4 @@ namespace Umbraco.Core.Cache
#endregion
}
}
}
+1 -1
View File
@@ -55,7 +55,7 @@ namespace Umbraco.Core.Cache
IEnumerable<object> GetCacheItemsByKeySearch(string keyStartsWith);
IEnumerable<object> GetCacheItemsByKeyExpression(string regexString);
/// <summary>
/// Returns an item with a given key
/// </summary>
+18 -3
View File
@@ -1,18 +1,33 @@
using umbraco.interfaces;
using System;
using Umbraco.Core.Composing;
namespace Umbraco.Core.Cache
{
/// <summary>
/// The IcacheRefresher Interface is used for loadbalancing.
///
/// </summary>
public interface ICacheRefresher : IDiscoverable
{
Guid RefresherUniqueId { get; }
string Name { get; }
void RefreshAll();
void Refresh(int id);
void Remove(int id);
void Refresh(Guid id);
}
/// <summary>
/// Strongly type cache refresher that is able to refresh cache of real instances of objects as well as IDs
/// </summary>
/// <typeparam name="T"></typeparam>
/// <remarks>
/// This is much better for performance when we're not running in a load balanced environment so we can refresh the cache
/// against a already resolved object instead of looking the object back up by id.
/// against a already resolved object instead of looking the object back up by id.
/// </remarks>
interface ICacheRefresher<T> : ICacheRefresher
{
void Refresh(T instance);
void Remove(T instance);
}
}
}
@@ -1,6 +1,4 @@
using umbraco.interfaces;
namespace Umbraco.Core.Cache
namespace Umbraco.Core.Cache
{
/// <summary>
/// A cache refresher that supports refreshing or removing cache based on a custom Json payload
@@ -10,7 +8,7 @@ namespace Umbraco.Core.Cache
/// <summary>
/// Refreshes, clears, etc... any cache based on the information provided in the json
/// </summary>
/// <param name="jsonPayload"></param>
void Refresh(string jsonPayload);
/// <param name="json"></param>
void Refresh(string json);
}
}
}
@@ -1,16 +1,14 @@
using umbraco.interfaces;
namespace Umbraco.Core.Cache
namespace Umbraco.Core.Cache
{
/// <summary>
/// A cache refresher that supports refreshing cache based on a custom payload
/// </summary>
interface IPayloadCacheRefresher : IJsonCacheRefresher
interface IPayloadCacheRefresher<TPayload> : IJsonCacheRefresher
{
/// <summary>
/// Refreshes, clears, etc... any cache based on the information provided in the payload
/// </summary>
/// <param name="payload"></param>
void Refresh(object payload);
/// <param name="payloads"></param>
void Refresh(TPayload[] payloads);
}
}
@@ -1,33 +1,13 @@
using System;
using System.Collections.Generic;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Cache
{
internal interface IRepositoryCachePolicy<TEntity, TId>
where TEntity : class, IAggregateRoot
where TEntity : class, IEntity
{
// note:
// at the moment each repository instance creates its corresponding cache policy instance
// we could reduce allocations by using static cache policy instances but then we would need
// to modify all methods here to pass the repository and cache eg:
//
// TEntity Get(TRepository repository, IRuntimeCacheProvider cache, TId id);
//
// it is not *that* complicated but then RepositoryBase needs to have a TRepository generic
// type parameter and it all becomes convoluted - keeping it simple for the time being.
/// <summary>
/// Creates a scoped version of this cache policy.
/// </summary>
/// <param name="runtimeCache">The global isolated runtime cache for this policy.</param>
/// <param name="scope">The scope.</param>
/// <remarks>When a policy is scoped, it means that it has been created with a scoped
/// isolated runtime cache, and now it needs to be wrapped into something that can apply
/// changes to the global isolated runtime cache.</remarks>
IRepositoryCachePolicy<TEntity, TId> Scoped(IRuntimeCacheProvider runtimeCache, IScope scope);
/// <summary>
/// Gets an entity from the cache, else from the repository.
/// </summary>
@@ -94,4 +74,4 @@ namespace Umbraco.Core.Cache
/// </summary>
void ClearAll();
}
}
}
@@ -14,8 +14,8 @@ namespace Umbraco.Core.Cache
public interface IRuntimeCacheProvider : ICacheProvider
{
object GetCacheItem(
string cacheKey,
Func<object> getCacheItem,
string cacheKey,
Func<object> getCacheItem,
TimeSpan? timeout,
bool isSliding = false,
CacheItemPriority priority = CacheItemPriority.Normal,
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Concurrent;
namespace Umbraco.Core.Cache
@@ -7,7 +7,7 @@ namespace Umbraco.Core.Cache
/// 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
/// 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
@@ -29,7 +29,7 @@ namespace Umbraco.Core.Cache
/// Returns an isolated runtime cache for a given type
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
/// <returns></returns>
public IRuntimeCacheProvider GetOrCreateCache<T>()
{
return _isolatedCache.GetOrAdd(typeof(T), type => CacheFactory(type));
@@ -38,7 +38,7 @@ namespace Umbraco.Core.Cache
/// <summary>
/// Returns an isolated runtime cache for a given type
/// </summary>
/// <returns></returns>
/// <returns></returns>
public IRuntimeCacheProvider GetOrCreateCache(Type type)
{
return _isolatedCache.GetOrAdd(type, t => CacheFactory(t));
@@ -88,4 +88,4 @@ namespace Umbraco.Core.Cache
}
}
}
}
}
@@ -1,19 +1,29 @@
using Umbraco.Core.Sync;
using umbraco.interfaces;
namespace Umbraco.Core.Cache
{
/// <summary>
/// Provides a base class for "json" cache refreshers.
/// A base class for "json" cache refreshers.
/// </summary>
/// <typeparam name="TInstance">The actual cache refresher type.</typeparam>
/// <remarks>Ensures that the correct events are raised when cache refreshing occurs.</remarks>
public abstract class JsonCacheRefresherBase<TInstance> : CacheRefresherBase<TInstance>, IJsonCacheRefresher
where TInstance : ICacheRefresher
{
/// <typeparam name="TInstanceType">The actual cache refresher type.</typeparam>
/// <remarks>The actual cache refresher type is used for strongly typed events.</remarks>
public abstract class JsonCacheRefresherBase<TInstanceType> : CacheRefresherBase<TInstanceType>, IJsonCacheRefresher
where TInstanceType : class, ICacheRefresher
{
/// <summary>
/// Initializes a new instance of the <see cref="JsonCacheRefresherBase{TInstanceType}"/>.
/// </summary>
/// <param name="cacheHelper">A cache helper.</param>
protected JsonCacheRefresherBase(CacheHelper cacheHelper) : base(cacheHelper)
{ }
/// <summary>
/// Refreshes as specified by a json payload.
/// </summary>
/// <param name="json">The json payload.</param>
public virtual void Refresh(string json)
{
OnCacheUpdated(Instance, new CacheRefresherEventArgs(json, MessageType.RefreshByJson));
{
OnCacheUpdated(This, new CacheRefresherEventArgs(json, MessageType.RefreshByJson));
}
}
}
}
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Cache
{
internal class NoCacheRepositoryCachePolicy<TEntity, TId> : IRepositoryCachePolicy<TEntity, TId>
where TEntity : class, IEntity
{
private NoCacheRepositoryCachePolicy() { }
public static NoCacheRepositoryCachePolicy<TEntity, TId> Instance { get; } = new NoCacheRepositoryCachePolicy<TEntity, TId>();
public IRepositoryCachePolicy<TEntity, TId> Scoped(IRuntimeCacheProvider runtimeCache, IScope scope)
{
throw new NotImplementedException();
}
public TEntity Get(TId id, Func<TId, TEntity> performGet, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performGet(id);
}
public TEntity GetCached(TId id)
{
return null;
}
public bool Exists(TId id, Func<TId, bool> performExists, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performExists(id);
}
public void Create(TEntity entity, Action<TEntity> persistNew)
{
persistNew(entity);
}
public void Update(TEntity entity, Action<TEntity> persistUpdated)
{
persistUpdated(entity);
}
public void Delete(TEntity entity, Action<TEntity> persistDeleted)
{
persistDeleted(entity);
}
public TEntity[] GetAll(TId[] ids, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performGetAll(ids).ToArray();
}
public void ClearAll()
{ }
}
}
@@ -1,62 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Scoping;
namespace Umbraco.Core.Cache
{
internal class NoRepositoryCachePolicy<TEntity, TId> : IRepositoryCachePolicy<TEntity, TId>
where TEntity : class, IAggregateRoot
{
private static readonly NoRepositoryCachePolicy<TEntity, TId> StaticInstance = new NoRepositoryCachePolicy<TEntity, TId>();
private NoRepositoryCachePolicy()
{ }
public static NoRepositoryCachePolicy<TEntity, TId> Instance { get { return StaticInstance; } }
public IRepositoryCachePolicy<TEntity, TId> Scoped(IRuntimeCacheProvider runtimeCache, IScope scope)
{
throw new NotImplementedException();
}
public TEntity Get(TId id, Func<TId, TEntity> performGet, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performGet(id);
}
public TEntity GetCached(TId id)
{
return null;
}
public bool Exists(TId id, Func<TId, bool> performExists, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performExists(id);
}
public void Create(TEntity entity, Action<TEntity> persistNew)
{
persistNew(entity);
}
public void Update(TEntity entity, Action<TEntity> persistUpdated)
{
persistUpdated(entity);
}
public void Delete(TEntity entity, Action<TEntity> persistDeleted)
{
persistDeleted(entity);
}
public TEntity[] GetAll(TId[] ids, Func<TId[], IEnumerable<TEntity>> performGetAll)
{
return performGetAll(ids).ToArray();
}
public void ClearAll()
{ }
}
}

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