Compare commits

...

1093 Commits

Author SHA1 Message Date
perploug fce31a2e02 7.1 beta 2014-03-07 15:26:28 +01:00
perploug b816e7f4db Fixes: sites cannot run the new installer if they have /install directory 2014-03-07 12:10:04 +01:00
perploug 45f6d4f911 ensures the installer clears angular cache 2014-03-07 12:10:00 +01:00
Shannon 6a9a1d1547 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-03-07 20:26:57 +11:00
perploug 391eb99e10 Installer facts typo 2014-03-07 10:18:36 +01:00
perploug 3b4487c836 Fixes: Weird merge issue with dashboard.config 2014-03-07 10:18:30 +01:00
perploug 46461c7c5d Fixes installer breaks with missing app_data/temp/installer folder 2014-03-07 10:18:08 +01:00
perploug 7104629ffd Fixes installer database dropdown default value 2014-03-07 10:17:46 +01:00
Shannon b46abecde5 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/EditProfile.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/ListChildPagesOrderedByDate.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/ListChildPagesOrderedByName.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/ListChildPagesOrderedByProperty.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/ListChildPagesWithDoctype.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Login.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/LoginStatus.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Navigation.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/RegisterMember.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/SiteMap.cshtml
	src/Umbraco.Web.UI/umbraco/scripting/templates/cshtml/Navigation.cshtml
	src/Umbraco.Web.UI/umbraco/scripting/templates/cshtml/SiteMap.cshtml
2014-03-07 20:10:33 +11:00
Shannon e82795f798 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-03-07 20:09:32 +11:00
Shannon a6faf5b757 fixes build issue 2014-03-07 20:09:22 +11:00
Shannon 3e6e6faf03 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-03-07 20:08:22 +11:00
Shannon b3f18bc677 fixed an issue with setting password with legacy api 2014-03-07 20:08:10 +11:00
Sebastiaan Janssen a48fe40675 Also clean up v6 snippets 2014-03-07 09:46:45 +01:00
Shannon 74c777b1ae Ensures the built-in member controllers have the correct logic - somehow got reverted and then not merged. 2014-03-07 19:39:31 +11:00
perploug 1e955fa813 Tweaks startkits usercontrol style 2014-03-07 09:34:25 +01:00
Shannon bc371e69a3 Completes: U4-4227 Rename default member property aliases 2014-03-07 19:30:54 +11:00
Shannon 9a97b636eb Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-03-07 19:15:38 +11:00
Shannon 878156e21e putting back what the UmbLoginController should be ... where in the hell has this been overwritten from??! 2014-03-07 19:13:25 +11:00
Sebastiaan Janssen af376d2837 Fix failing nuget build (now that \install is removed) 2014-03-07 09:06:06 +01:00
Shannon 9dd5f250c7 Fixes up the GetUrlWithTimeStamp to be called GetUrlWithCacheBust and another extension method to actually generate the hash which will be umb version + cdf version hashed or datetime.ticks if in debug mode. Updates the main view to use CDF to render the CSS which ensures compression/minification/combination + cache busting. 2014-03-07 11:03:13 +11:00
Shannon bb527996b9 Moves the JsNoCache to a real readable file instead of an embedded string (now an embedded file resource), updates it's logic to not append the hash to any dependencyhandler.axd request, fixes case sensitivity checking on the URLs, changes the cdf + umb version to be a nice shorter hash of the two. 2014-03-07 10:40:27 +11:00
Shannon 1a171161cd Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-03-07 10:11:36 +11:00
perploug d410663a68 Updates ImageProcessor 2014-03-06 22:54:51 +01:00
perploug 9e332ca0a4 Fixes: media unit test merge issue 2014-03-06 22:54:23 +01:00
perploug 02388a33ba Tweaks fileupload view 2014-03-06 22:54:05 +01:00
perploug 3f52364308 Fixes: FixNumber directive always dirtied the model 2014-03-06 22:53:51 +01:00
perploug e157837e0e Fixes merge issue in valformmanager 2014-03-06 22:53:13 +01:00
perploug c2318349e5 merge 2014-03-06 20:11:37 +01:00
perploug c540c74a04 merge 2014-03-06 20:10:17 +01:00
perploug e5b1271ce1 Fixes: U4-4205 Add item to multi node tree picker - Min/Max Items Issue 2014-03-06 14:38:03 +01:00
perploug dfaa15c6e7 Directive cleanup + button event js errors fix 2014-03-06 12:28:36 +01:00
perploug 4aa3e1368a Fixes scrollbar and database val msg 2014-03-06 12:27:46 +01:00
Shannon 25f10011fc Fixes merge issues 2014-03-06 20:38:23 +11:00
perploug d08f08ffaf Umbraco facts 2014-03-06 10:30:41 +01:00
Shannon 9a9237e78e Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Services/IMembershipUserService.cs
	src/Umbraco.Tests/PublishedContent/PublishedContentTestElements.cs
	src/Umbraco.Web.UI/config/trees.config
	src/Umbraco.Web.UI/config/umbracoSettings.config
	src/Umbraco.Web.UI/umbraco/controls/ContentTypeControlNew.ascx
	src/Umbraco.Web.UI/umbraco/developer/DataTypes/editDatatype.aspx
	src/Umbraco.Web.UI/umbraco/plugins/uGoLive/Dashboard.ascx
	src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs
	src/Umbraco.Web/Search/ExamineEvents.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/content.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/cache/LegacyClasses.cs
2014-03-06 20:22:32 +11:00
Shannon 1511ad58b2 oops, put back the defaults for umbracoSettings 2014-03-06 20:16:55 +11:00
Shannon 2e9b751174 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-03-06 20:12:21 +11:00
Shannon d61ab97be3 Fixes: U4-4217 Ensure that the cmsTask data is cleared for any entity that uses umbracoNode table 2014-03-06 20:12:05 +11:00
Stephan dd40d73b71 Merge remote-tracking branch 'origin/6.2.0' into 6.2.0 2014-03-06 10:06:50 +01:00
Shannon 068bca84b7 Fixes: U4-156 Drag / drop support 2014-03-06 20:05:13 +11:00
Shannon 0fda528b94 Fixes: U4-1550 Publish notifications on a load balanced environment 2014-03-06 19:47:23 +11:00
Shannon 3552f63d87 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-03-06 19:29:35 +11:00
Shannon 01d04fde37 Fixes: U4-4060 Rollback feature does not show differences 2014-03-06 19:29:09 +11:00
Stephan 7f8c526136 Fix TryConvertTo handling of number decimal separator 2014-03-06 09:14:05 +01:00
Stephan ea4be14f0c Fix 026d040 - keep Standalone stuff internal 2014-03-06 09:10:14 +01:00
Stephan 20df48e2f0 Merge remote-tracking branch 'origin/6.2.0' into 6.2.0 2014-03-06 08:49:38 +01:00
Stephan 2c0f6f975c Bugfix UmbracoEntity ctor test 2014-03-06 08:42:41 +01:00
Shannon fa7f91b39d Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-03-06 18:26:10 +11:00
Shannon 72c5853fb1 Completes: U4-3937 Ensure media is indexed across all servers in LB environment with Distributed Cache calls
for members
2014-03-06 18:25:38 +11:00
Stephan f03b1a22f9 Merge remote-tracking branch 'origin/6.2.0' into 6.2.0 2014-03-06 08:12:51 +01:00
Shannon e7fb6e5beb Streamlines member and user services CreateMemberWithIdentity to be similar to media/content and not have a raise events flag. Also implements the CreateWithIdentity explicitly 2014-03-06 18:07:02 +11:00
Shannon d0cc93d6a2 Fixes: U4-3937 Ensure media is indexed across all servers in LB environment with Distributed Cache calls
This fix is for media indexes to be distributed properly and for unpublished content to be distributed properly, now to get members to do the same.
2014-03-06 17:50:08 +11:00
Shannon 4adc2562b1 Fixes issue with ugolive dashboard trying to load in knockout from a bundle which causes the examine mgr to fail 2014-03-06 17:49:09 +11:00
Shannon ba6878666c Fixes pretty ugly issue of the Saving/Saved events not being raised when using CreateWithIdentity 2014-03-06 17:35:47 +11:00
Shannon 30da7fb801 Merge branch '7.1.0-installer' into 7.1.0
Conflicts:
	src/Umbraco.Web.UI.Client/src/common/mocks/resources/entity.mocks.js
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js
	src/Umbraco.Web.UI.Client/test/unit/app/media/edit-media-controller.spec.js
2014-03-06 12:28:50 +11:00
Shannon 7086a5153a Fixes js errors with apply since a digest is already in operation. 2014-03-06 12:25:45 +11:00
Shannon 37937e2c8e Fixes the user password validation to ensure it obeys what the membership provider's are configured for. 2014-03-06 12:11:14 +11:00
Shannon 7676099f2e small styling fix on db err msg 2014-03-06 11:14:41 +11:00
perploug 0d1bb355b5 merge 2014-03-05 20:12:45 +01:00
perploug 3276b8a4d8 Latest visual changes to installer + db validator 2014-03-05 20:03:45 +01:00
Stephan 792ab8d088 Introduce support for content fragments 2014-03-05 15:46:37 +01:00
Stephan 3d4409e52a Refactor CacheRefreshersResolver.CacheResolvers into .CacheRefreshers 2014-03-05 15:46:35 +01:00
Stephan acd377956f Improve how DomainHelper determines domain 2014-03-05 15:46:34 +01:00
Stephan 3b6dcc3421 Factor Dictionary.ReplaceKey method 2014-03-05 15:46:33 +01:00
Stephan cec4d41df7 Add comments to UmbracoViewPageOfTModel 2014-03-05 15:46:32 +01:00
Stephan ff0bcffefa Implement DefaultShortStringHelper.PostFilter to cut url segments at 240 chars 2014-03-05 15:46:31 +01:00
Stephan 5dbc72897a Add method to reset PublishedContentRequest template 2014-03-05 15:46:30 +01:00
Stephan 83736bec01 U4-4190 - enable retrieval of wildcard domains 2014-03-05 15:46:29 +01:00
Stephan 2f953c3819 Fix a38e0dc - use UInt64 instead of int 2014-03-05 15:46:28 +01:00
Stephan 026d040a62 Enable StandaloneApplication to work with Powershell 2014-03-05 15:39:16 +01:00
Stephan 7747b8f64f U4-3579 - support chars such as <, > or & in prevalues 2014-03-05 15:33:15 +01:00
Shannon feab2de260 Fixes up the starter kit installer in the back office with it's legacy implementation. Adds some handy methods for webapi routing for areas. 2014-03-05 22:42:51 +11:00
Shannon 24cc417395 Removed all the legacy files that we don't need - need to test the starter kit installation process in the back office though as some old files are still used there. 2014-03-05 19:47:00 +11:00
Shannon 56e1fc07e4 adds some notes on testing db connectivity. 2014-03-05 19:42:24 +11:00
Shannon fbd2b3a1e1 Gets the v7 upgrade report working on the new installer. 2014-03-05 18:23:50 +11:00
Shannon 8f7f761bb3 implements the file permissions report correctly and tests it. 2014-03-05 17:44:13 +11:00
Shannon a40ba2f27e Updates the RequiresExecution logic so we can skip steps based on some user input (i.e. skip the starter kit installation). Fixes the start kit js stuff to update the model correctly and continue. Fixes the error view to restart - it cannot just go back because there might not be a view there. 2014-03-05 14:30:17 +11:00
Shannon 893f86d34c Fixes installer service so that when forward is called and there are no more views to show the installer will automatically start. This will occur in cases where we are customizing the install but we don't want a starter kit installed since the server has detected that one has already been installed. This also prevents some JS errors and will improve the installer in the future if there might be more views. 2014-03-05 12:57:44 +11:00
Shannon ddd2ab463e Ensures that the starter kit view is not returned if there is one already installed 2014-03-05 12:44:38 +11:00
Shannon cbced2caed fixes db upgrade step to check for correct previous step 2014-03-05 12:21:49 +11:00
Shannon ce068a60d5 Removes default instructions from the installer service, passing in empty instructions is ok now and the server will assign defaults if they are empty. 2014-03-05 12:08:35 +11:00
Shannon 7f7f3202d2 fixes issue with checking starter kit steps, fixes issue with installer service code with the method param name being the same as the variable name and fixes the _find lookups to ensure a value is returned from the iteration. 2014-03-05 11:49:07 +11:00
Shannon 0227b800a0 Gets the installer steps working nicely and returning the next step to execute which now displays the current step details correctly and dequeues steps that are not required after the previous one has executed. 2014-03-05 11:34:42 +11:00
Shannon 8e89aa233c Merge branch '7.1.0-installer' of https://github.com/umbraco/Umbraco-CMS into 7.1.0-installer
Conflicts:
	src/Umbraco.Web.UI.Client/src/installer/installer.service.js
	src/Umbraco.Web/Install/Controllers/InstallApiController.cs
2014-03-05 10:34:27 +11:00
Shannon 24ceb5ce2d Updates to include returning the next step in sequence 2014-03-05 10:32:59 +11:00
perploug 923eb300e5 Updates grunt file to run vs file copy 2014-03-04 19:11:27 +01:00
Shannon 0d93db5f1f Fixes the order that descriptions are listed during install 2014-03-04 19:28:57 +11:00
Shannon d2aecd12eb Updates more installer logic, getting into the nitty gritty details with upgrades, etc... 2014-03-04 19:20:36 +11:00
Shannon 1e99c466ee Updates some tests and fixes a couple things 2014-03-04 16:40:23 +11:00
Shannon 71a9fb4f68 Updated more installer logic 2014-03-04 16:21:45 +11:00
Shannon 0497771750 fixed merge issues 2014-03-04 11:42:11 +11:00
Shannon 000b2b639f Merge branch '7.1.0-installer' of https://github.com/umbraco/Umbraco-CMS into 7.1.0-installer
Conflicts:
	src/Umbraco.Web/Install/Controllers/InstallApiController.cs
	src/Umbraco.Web/Install/InstallSteps/DatabaseConfigureStep.cs
	src/Umbraco.Web/Install/InstallSteps/DatabaseInstallStep.cs
	src/Umbraco.Web/Install/InstallSteps/DatabaseUpgradeStep.cs
	src/Umbraco.Web/Install/InstallSteps/FilePermissionsStep.cs
	src/Umbraco.Web/Install/InstallSteps/SetUmbracoVersionStep.cs
	src/Umbraco.Web/Install/InstallSteps/StarterKitCleanupStep.cs
	src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs
	src/Umbraco.Web/Install/InstallSteps/StarterKitInstallStep.cs
	src/Umbraco.Web/Install/InstallSteps/UserStep.cs
	src/Umbraco.Web/Install/Models/InstallSetupStep.cs
	src/Umbraco.Web/Install/Models/InstallSetupStepAttribute.cs
2014-03-04 11:20:52 +11:00
Shannon 885f691c0e Updated install steps, classes and logic 2014-03-04 11:16:42 +11:00
perploug 92f6b5564d Fixes failing js unit tests 2014-03-03 13:21:30 +01:00
perploug ce65ae8742 Updates to the installer UI
Adds database and packages step
2014-03-03 08:57:57 +01:00
Shannon 57c9d9ca7b Merge remote-tracking branch 'origin/6.2.0' into 7.1.0-installer
Conflicts:
	src/Umbraco.Tests/MockTests.cs
	src/Umbraco.Web/UmbracoContext.cs
2014-03-03 04:17:40 +01:00
Shannon feb9f40237 updates some ctors on umbraco context and routing context to have lazy overloads which allows us to more easily create/mock the umbraco context. 2014-03-03 04:16:09 +01:00
Shannon 3fc96a45a6 Merge branch '7.1.0-installer' of https://github.com/umbraco/Umbraco-CMS into 7.1.0-installer 2014-02-27 10:16:45 +01:00
Shannon 3b71a6c3a5 asfsafd 2014-02-27 10:16:30 +01:00
perploug 9c4212703b umbraco base url 2014-02-27 10:00:38 +01:00
Sebastiaan Janssen a20c11d438 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-02-26 22:52:38 +01:00
Sebastiaan Janssen 89b8d056a2 Fixes #U4-4310 Missing Curly Brace in Boolean Property Editor 2014-02-26 22:52:13 +01:00
Sebastiaan Janssen 8707348215 Merge pull request #307 from BatJan/7.1.0
U4-4295 typo on front of admin
2014-02-26 22:42:00 +01:00
Jan Skovgaard 70ba0cd592 U4-4295 typo on front of admin 2014-02-26 19:51:56 +01:00
Shannon 429b5f7c01 Updates the completion stage of the installer 2014-02-26 16:49:35 +01:00
Shannon db4a547801 Fixes build issues 2014-02-26 16:39:40 +01:00
Shannon a9916fc415 Installer logic working for a new installer on sqlce 2014-02-26 16:30:25 +01:00
Shannon 64a37209b8 Merge branch '7.1.0-installer' of https://github.com/umbraco/Umbraco-CMS into 7.1.0-installer 2014-02-26 16:01:48 +01:00
Shannon f9304d7f04 Gets lots of the new installer logic working 2014-02-26 16:01:31 +01:00
perploug 24ae424207 Fixed: U4-3851 More specific error when saving a user with no Section checkbox selected 2014-02-26 15:53:16 +01:00
Per Ploug Krogslund b86ef0d7ac Adds WIP installer files 2014-02-26 15:51:09 +01:00
Per Ploug Krogslund de97d8849a Fixes broken unit tests 2014-02-26 15:51:09 +01:00
Per Ploug Krogslund a3576d8564 Moves app controllers into seperate folder 2014-02-26 15:51:08 +01:00
Sebastiaan Janssen ffdf4e7256 Merge pull request #306 from coolmikkel/7.1.0
Name of Media items easyer to read
2014-02-26 09:46:19 +01:00
Shannon f9475305bb more install bits 2014-02-26 18:25:59 +11:00
coolmikkel 0a6208f3ef Name of Media items easyer to read
The contrast between the text color and background was to low. The text
color has to be darker - black would be the right one.
2014-02-25 22:11:38 +01:00
Shannon 00f2afe454 Creates Install MVC Area, creates new installer api controllers, moves old installer files to the new Area folder so that the /install path can route properly. 2014-02-26 04:15:14 +11:00
Shannon 3800ffc11c Fixes new membership providers to ensure no sql is run on init. Fixes the installer useLegacyEncoding setup to not attempt to set this when the legacy provider is enabled. 2014-02-26 02:57:05 +11:00
Shannon 2a9b1cb246 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs
2014-02-25 03:30:32 +11:00
Shannon 651182f5de Fixes sql statement - to be like we have in v7 that supports all sql servers 2014-02-25 02:37:48 +11:00
Shannon 784f873777 updated to use constant 2014-02-25 02:36:25 +11:00
Shannon a938605461 fixes merge issue 2014-02-25 02:33:48 +11:00
Shannon bb9c968d3a fixes merge issues 2014-02-25 02:30:05 +11:00
Shannon b8fe5df3c9 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Configuration/GlobalSettings.cs
	src/Umbraco.Core/Configuration/UmbracoSettings.cs
	src/Umbraco.Core/Models/Member.cs
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Core/Services/MediaService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web.UI/config/Dashboard.Release.config
	src/Umbraco.Web.UI/config/feedProxy.config
	src/Umbraco.Web.UI/config/tinyMceConfig.config
	src/Umbraco.Web.UI/config/trees.config
	src/Umbraco.Web.UI/config/umbracoSettings.Release.config
	src/Umbraco.Web.UI/config/umbracoSettings.config
	src/Umbraco.Web.UI/config/xsltExtensions.config
	src/Umbraco.Web.UI/umbraco/config/create/UI.Release.xml
	src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-02-25 02:24:45 +11:00
Shannon 22b15a06f6 Fixes how member is approved is set by defaut and adds unit test for it. Also ensures that it returns true if the property value is invalid for whatever odd reason. 2014-02-25 02:10:25 +11:00
Shannon cb09795280 Removes new member service Creating event, as only Created makes sense. Deprecates the other 'Creating' events with a note to just use the Created event. 2014-02-25 01:45:41 +11:00
perploug 81dfd0c6bc #U4-3649 Fixed 2014-02-24 15:35:25 +01:00
perploug 9f028e6d61 Replace Crop() with GetCropUrl() 2014-02-24 15:35:24 +01:00
Sebastiaan Janssen ac57ec2211 Fixed U4-3648 v7, User without access to "Users" section can't change password
Added change password dashboard back
2014-02-24 13:15:45 +01:00
Sebastiaan Janssen 218bb28440 #U4-4245 Umbraco version number is really hard to see
Moved the version to the top when clicking "help", moved the css into main.less and made the text a little bit darker for contrast
2014-02-24 12:49:07 +01:00
Sebastiaan Janssen d02b230f71 Fixes #U4-4195 7.0.X PropertyValueEditor.GetDatabaseType FormatException on different regional settings 2014-02-24 12:08:33 +01:00
Sebastiaan Janssen 289361c02f Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-02-24 11:59:05 +01:00
Sebastiaan Janssen fc3020ffa4 #U4-4153 Fixed Macro snippets refer to 'MediaCurrent' and 'Show', also polishes other snippets a bit 2014-02-24 11:58:25 +01:00
perploug 7c4c44cf7e Enables the breadcrumb nav on media edit 2014-02-24 11:55:54 +01:00
perploug 458c51a955 Implements IHtmlString on imagecropdataset 2014-02-24 10:42:29 +01:00
perploug f3d64bb85d Fixes broken file resolver due to wrong alias 2014-02-24 10:30:35 +01:00
perploug 8261a2b69b Fixes U4-4271 U7.1 Nightly build 16 YSOD when editing doc type 2014-02-24 09:36:10 +01:00
Sebastiaan Janssen a5637af2d8 Adding missing CreateMember method that also as a convenience allows you to pass in the member type alias instead of a whole membertype 2014-02-22 18:32:26 +01:00
Sebastiaan Janssen ac59c5deb0 Fixing some potential upgrade issues and two issues found with the legacy member API
- For legacy API we never had and "approved" checkbox, so the assumption is that members are always approved
- The RequiresUniqueEmail check was wrong, previously the assumption was: if there's no e-mail then don't check for uniqueness
2014-02-22 16:44:02 +01:00
Sebastiaan Janssen 683ddf6d34 Apparently we rely on <error404>1</error404> to be in umbracoSettings.config 2014-02-22 16:03:59 +01:00
Sebastiaan Janssen eda33b1ac4 Update incorrect summary 2014-02-22 14:47:59 +01:00
Sebastiaan Janssen ed0f884348 Been a while: properly syncing /config/*.config with /config/*.Release.config 2014-02-21 17:50:58 +01:00
Sebastiaan Janssen b561351340 Update UI.Release.xml with the correct Partial View references 2014-02-21 17:33:19 +01:00
Sebastiaan Janssen 690ab29863 Use the database "agnostic" query for this (see U4-3876) 2014-02-21 17:01:59 +01:00
Shannon a1b3345671 fixes last unit test 2014-02-21 18:09:46 +11:00
Shannon e1022bd5a1 fixes another test 2014-02-21 18:04:15 +11:00
Shannon 1f2c00e3be fixes another test 2014-02-21 18:03:26 +11:00
Shannon bf4c58a6f4 fixed some config unit tests 2014-02-21 18:01:23 +11:00
Shannon 9de0a62cff Fixes merge issues 2014-02-21 16:43:49 +11:00
Shannon 3c3f2d7c8d Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Constants-Conventions.cs
	src/Umbraco.Core/DateTimeExtensions.cs
	src/Umbraco.Core/Models/PropertyType.cs
	src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Factories/PropertyGroupFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Tests/App.config
	src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs
	src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
	src/Umbraco.Tests/packages.config
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/app.config
	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
	src/umbraco.MacroEngines/App.Config
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-02-21 16:32:53 +11:00
Shannon 27cb1d5223 completes: U4-4275 Hide built-in member type properties from the insert umbraco field list 2014-02-21 16:20:07 +11:00
Shannon c677f36f08 Changes some of the naming conventions for the underlying membership provider services bits. 2014-02-21 16:03:32 +11:00
Shannon 750f7a6b33 Updates some method names to be less confusing regarding permissions 2014-02-21 15:55:56 +11:00
Shannon dea804b402 fixes some permission logic and a unit test 2014-02-21 15:46:39 +11:00
Shannon 3803d1d7da fixes reflected property on dynamicnode and unit test 2014-02-21 15:22:02 +11:00
Shannon 3e67b3034d Added the ability to specify explicit db type's for a property type using an overloaded ctor argument. This allows us to specify explicit db types for properties without having them get overwritten during the repository saving logic which will always reset it to be the db type of the underlying property editor. In the case of our built-in membership properties we do not want this to happen. Fixes some unit tests. Removes built-in props from being included in the property types on the profile model on the front-end. 2014-02-21 12:56:00 +11:00
Shannon 1ada5210ad updated to latest examine 2014-02-21 09:54:53 +11:00
Shannon 92e1db1667 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-20 23:14:45 +11:00
Shannon f0258b2bce fixes merge issue 2014-02-20 23:14:39 +11:00
Shannon 9a608674eb fixes another test 2014-02-20 23:11:27 +11:00
Shannon 0fc5af5e17 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/RepositoryFactory.cs
	src/Umbraco.Tests/packages.config
	src/Umbraco.Web.UI/packages.config
2014-02-20 23:06:13 +11:00
Shannon 7dae412a29 fixes most of the newly failing unit tests and adds better null checking 2014-02-20 23:00:04 +11:00
perploug c3471ffbc3 Cropsizes config and upload compatible
Refactors imagecropper and fileupload to use the samen metadata setting
extensions
2014-02-20 12:59:15 +01:00
perploug f8baf343bf Fixing totally broken merge 2014-02-20 12:59:11 +01:00
Shannon a1067e676f publicizes some repository factory methods and interfaces 2014-02-20 21:56:58 +11:00
Shannon ce649f54d7 Upgraded to latest examine, completes: U4-4240 Update with new examine version 0.1.53 2014-02-20 15:01:47 +11:00
Shannon 09b9056fb0 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-20 14:39:23 +11:00
Shannon 8da2c22a4e removes special default password check, this is no longer necessary. 2014-02-20 14:38:56 +11:00
Shannon d159792256 Updates last step of installer logic, we don't care about other providers as that would never have worked anyways 2014-02-20 14:38:00 +11:00
Shannon d08712306c updates logic for v7 new cols 2014-02-20 14:03:51 +11:00
Shannon 5e30fd4ced Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-20 13:56:37 +11:00
Shannon 314abde9ac fixes merge 2014-02-20 13:56:18 +11:00
Shannon 606b5aa60a fixes logic in membershiphelper updatemember 2014-02-20 13:55:56 +11:00
Shannon 5441c30780 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/UriExtensions.cs
	src/Umbraco.Web.UI/install/Default.aspx.cs
	src/Umbraco.Web/UmbracoModule.cs
2014-02-20 13:42:02 +11:00
Shannon 2c563168e7 Merge remote-tracking branch 'origin/7.1.0' into 7.1.0 2014-02-20 13:40:56 +11:00
Shannon 59f8508332 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Attempt{T}.cs
	src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
2014-02-20 13:40:17 +11:00
Shannon a206652a0d updates login redirect logic to be more inline with v7, less greedy which is better. 2014-02-20 13:37:12 +11:00
Shannon 545040fdf0 Fixes installer upgrade 2014-02-20 13:09:54 +11:00
Sebastiaan Janssen 2954b31435 Enables change content type action for v7 as well (see issue 1468) 2014-02-19 21:48:17 +01:00
Shannon 40d1a09609 Updates the membership helper in how it updates the membership provider data, updates the editMember page to update the membership provider properties all via the membership provider 2014-02-19 23:49:53 +11:00
Shannon 2e25bc8fdb Moves all FindCOntrolRecursive calls to an extension method 2014-02-19 23:49:08 +11:00
Shannon 1618ac86b8 Adds implicit bool operator for Attempt, makes things nicer to check for success :) 2014-02-19 22:45:22 +11:00
Shannon a4adbca12c Removes the ability to edit the data type for a built-in membership property. Ensures that even if a data type is attempted to be changed with the API that the built-in properties are always persisted with the data type that we have defined by convention. 2014-02-19 21:56:33 +11:00
Shannon 8728e2f918 Fixes: U4-4260 When changing sort order on member type and saving, this doesn't get reflected on the member 2014-02-19 20:17:21 +11:00
Shannon d6b55c54e6 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-19 17:54:07 +11:00
Shannon cd53682ddb removes ability to configure custom fields for the new membership provider 2014-02-19 17:52:45 +11:00
Shannon d000b67703 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-19 17:27:42 +11:00
Shannon e2d5fbf545 Fixes issue with ensuring properties on entities when a new property type has been created - but if the property type doesn't have an id, we should ignore it. 2014-02-19 17:27:08 +11:00
Shannon a6c4ce3a31 fixes some merge issues 2014-02-19 17:26:19 +11:00
Shannon 64246b4eef fixes build 2014-02-19 17:08:55 +11:00
Shannon fe8098adac Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Web.UI/umbraco/controls/GenericProperties/GenericProperty.ascx
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/GenericProperties/GenericProperty.ascx.cs
2014-02-19 17:02:25 +11:00
Shannon d339e7c814 updates the property type editability for built in member types 2014-02-19 16:57:33 +11:00
Shannon 9860ffc3bf Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Constants-Conventions.cs
	src/Umbraco.Core/Models/Member.cs
	src/Umbraco.Core/Models/MemberType.cs
	src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web.UI/umbraco/controls/GenericProperties/GenericProperty.ascx
	src/Umbraco.Web/Models/ProfileModel.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/GenericProperties/GenericProperty.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
2014-02-19 16:55:56 +11:00
Shannon 7db829b2a3 updates convention data types 2014-02-19 16:50:45 +11:00
Shannon 10759773ca Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-02-19 16:36:28 +11:00
Shannon 078deb704b Completes: U4-4255 Add readonly membership provider properties to the profile model 2014-02-19 16:27:14 +11:00
Shannon 6858eb3330 Fixes: U4-4257 Fix member type editor to not have to re-call 'Save' so many times,
streamlines how the show property and editable property on member type's are dealt with (removes tuples)
2014-02-19 16:14:34 +11:00
Shandem 16e16f9578 Merge pull request #299 from kgiszewski/feature-slider-fix
Fix broken path
2014-02-19 15:35:30 +11:00
Shannon e267b7700a Ensures that member properties are created when member type property type's are added (same as U4-1407), streamlines how this occurs on the base class. Streamlines how empty aliases are validated at the repo level for members, media, content. Makes built-in member property type's non-editable 2014-02-19 14:23:48 +11:00
perploug f780c21ef0 Removed crops from umbracoSettings.cfg 2014-02-19 00:19:18 +01:00
perploug 84e7396729 Ensure that umbracoFile doesnt try to process json as a filepath 2014-02-19 00:19:17 +01:00
perploug 7ed11c04c5 Updates yepnope cache in jsinit.cs to append correct rnd value 2014-02-19 00:19:16 +01:00
perploug 81305173ca Changes imagecropper to store config in its property data 2014-02-19 00:19:15 +01:00
perploug 6637ceaf41 Add support for looking up 3rd party editor file paths
Adds a file resolver on the mediaHelper, property editors can then
register a resolver to return file paths from whatever format
2014-02-19 00:19:13 +01:00
perploug 82d5f7b72b Adjusted assetsService to deal with weird yepnope behaivior 2014-02-19 00:19:12 +01:00
perploug e69dea26a5 Adds extra null checking when looking up active tree 2014-02-19 00:19:11 +01:00
Kevin Giszewski 85d6f1d54a Fix broken path 2014-02-18 11:07:14 -05:00
Shannon f168093b92 Merge commit 'f06c9e823545d8e86309bb751e63b99a2a3b1a18' into 7.1.0
Conflicts:
	src/Umbraco.Core/Models/Member.cs
	src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Core/packages.config
	src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/passwordChanger.ascx.cs
2014-02-18 18:03:29 +11:00
Shannon 1e45abe71e oops, changes the failedpassattempts back to noedit 2014-02-18 17:58:57 +11:00
Shannon a556b4ed21 Logs warnings if accessing built-in properties on the member model but the underlying property type is missing. 2014-02-18 17:53:02 +11:00
Shannon 953c711ca4 Updates the default member type property types to use "Labels", then needed to update the member type repo and membertypereadonlyfactory to ensure that even though the underlying data type for the property exposes a different Db Type that we 'reset' that Db Type to what it always should be. This means that no matter what underlying data type a developer changes a property to, if it is a built-in membership property, the Db Type will always stay consistent and save in the correct column. Of course if someone enters some invalid data, then the data will not be saved. 2014-02-18 17:19:38 +11:00
Shannon f06c9e8235 Ensures the default member type properties are put on a custom tab 2014-02-18 15:39:00 +11:00
Shannon f1a439e851 removes version specific references to mysql in the proj files and web.config
ensures that escaping in the sql expression classes is done correctly without any double escaping. Also ensures that escaping is happening using the equals operator, not just the Equals() method and adds unit tests for them.
Fixes: U4-4232 Umbraco.Core.Persistence.Querying issue with backslashes
2014-02-18 14:57:03 +11:00
Shannon 20c2574f94 Merge remote-tracking branch 'origin/7.0.4' into 7.1.0
Conflicts:
	build/Build.bat
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
	src/umbraco.providers/UsersMembershipProvider.cs
2014-02-18 11:11:57 +11:00
Shannon ab4c58b3a3 restores BuildBelle 2014-02-18 11:11:06 +11:00
Shannon cb63642ce9 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-02-18 10:48:51 +11:00
perploug 3fb756939e ImageProcessor config files 2014-02-17 16:17:18 +01:00
perploug ec14a16aec ImageCropper Razor models + helpers 2014-02-17 16:17:17 +01:00
perploug 6944f25c9f Fixes Assets.Service callback not firering 2014-02-17 16:17:16 +01:00
perploug 45c7699a33 Footer breadcrumb navigation 2014-02-17 16:17:09 +01:00
perploug 2bd2f12831 ImageCropper Upload enabled
The cropper can now fully replace the upload datatype
2014-02-17 16:17:02 +01:00
Shannon a0e496e589 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-02-17 21:38:38 +11:00
Shannon e0dcc3afbc Streamlines how strings are escaped with the sql expression helpers and syntax providers. Fixes: U4-4232 Umbraco.Core.Persistence.Querying issue with backslashes 2014-02-17 21:38:13 +11:00
Stephan a4b1b31a24 U4-4241 - UrlAbsolute() returns relative urls 2014-02-17 10:49:26 +01:00
Stephan 3634a77d61 U4-4241 - UrlAbsolute() returns relative urls 2014-02-17 10:47:51 +01:00
Shannon 13f76f7922 Updates version
Signed-off-by: Shannon <sdeminick@gmail.com>
2014-02-17 20:41:53 +11:00
Shannon d12a9e046f Fixes: U4-4172 Change password in users section not working (u7.0.3)
Signed-off-by: Shannon <sdeminick@gmail.com>
2014-02-17 20:41:30 +11:00
Shannon 846f4b5b6c Removes the various old hacks for the legacy user's membership provider, now that we have the AllowManuallyChangingPassword flag, these hacks are not required. 2014-02-17 19:32:04 +11:00
Shannon 2869f17eff ensures the default property aliases are set during ctor 2014-02-17 18:02:29 +11:00
Shannon b73c39b4e9 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Core/Services/UserService.cs
	src/Umbraco.Tests/Services/PerformanceTests.cs
	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
2014-02-17 17:48:16 +11:00
Shannon feefb052fd Updates the BulkInsertRecords method to optionally close the trans - shouldn't by default. Updates how permissions are handled in the new services and exposes another method, ensures it's all wrapped in trans and ensures that cache is cleared properly. Fixes: U4-4213 "Replace child node permissions" does not work if all permissions cleared 2014-02-17 17:45:59 +11:00
Shannon 87f93be6ba updates version 2014-02-17 16:06:46 +11:00
Shannon 7e7c4b52b6 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/PluginManager.cs
2014-02-17 15:59:43 +11:00
Shannon 4d2d9156ba updates more plugin manager defs 2014-02-17 15:58:57 +11:00
Shannon a1603c3cbd Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Models/Membership/EntityPermission.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Core/PluginManager.cs
	src/Umbraco.Web.UI/config/trees.config
	src/Umbraco.Web/Search/ExamineEvents.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/Trees/TreeDefinitionCollection.cs
2014-02-17 15:56:48 +11:00
Shannon 82ba1a24a3 Ensures we perform null checks in both GetAll and GetByQuery as we never want to include a null item in the resultant collection - which could happen depending on what the sub class repository is doing.
Fixes: U4-3145 Cache file periodically becomes corrupted: "Oops: this document is published but is not in the cache (internal error)"
2014-02-17 15:45:36 +11:00
Shannon 357db9d0b6 completes: U4-3282 Expose permission assignment methods at the service layer 2014-02-17 15:33:17 +11:00
Shannon 61766287bc Cleans up some more of the old 'object' User Id references. 2014-02-17 15:26:38 +11:00
Shannon ffbf8b2fd6 completes: U4-4103 Publicize PluginManager for devs to use to create their own plugins 2014-02-17 15:08:27 +11:00
Shannon e8c25283b0 Fixes: U4-2876 Ensure runtime cache is cleared with ICacheRefreshers when macro's change since they use the RuntimeCacheProvider 2014-02-17 15:03:49 +11:00
Shannon f7a703195c Fixes: U4-4215 Tree.config registeres tree inconsistently 2014-02-17 14:56:12 +11:00
Shannon 848e8b5722 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-17 14:15:54 +11:00
Shannon 4d316c9671 fixing some casting 2014-02-17 14:15:40 +11:00
Shannon 509be9b431 Updates the underlying UmbracoServiceMembershipProvider to deal with 'object' for provider key, this then lets us deal with either guid or int for the new membership provider, just like the old one does. 2014-02-17 14:14:17 +11:00
Shannon 8154382fb1 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-02-17 13:17:19 +11:00
Shannon 10ef5eb7bc adds new interface for members' membership providers to implement so we know what aliases to store data against. 2014-02-17 13:16:28 +11:00
Shannon f4c1c4578f adds some null checking 2014-02-17 12:56:37 +11:00
Shannon 6f15949af7 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-17 12:24:37 +11:00
Shannon 2849ecadb7 fix legacy member wrapping new api and mixing email/login name 2014-02-17 12:24:11 +11:00
Shannon 778c698ef7 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-17 12:10:12 +11:00
Shannon 697f93c3ce removes null check for LoginName, since it gets set to the name passed in if it is empty 2014-02-17 12:09:27 +11:00
Shannon e6c2f0ad70 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-17 11:50:39 +11:00
Shannon 13976559a8 Created a EntityNotFoundException to use when we are expecting an umbraco entity found. Updates some code to use this exception. 2014-02-17 11:50:13 +11:00
Shannon 18121e8726 Enxures user start node's are -1 by default when creating the model. 2014-02-17 11:48:32 +11:00
Shannon 8b6583b554 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-02-17 11:23:24 +11:00
Shannon 234d4cf427 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0
Conflicts:
	src/Umbraco.Core/Models/Template.cs
2014-02-17 11:23:02 +11:00
Shannon 81cdc71145 Ensures new user objects are approved by default. 2014-02-17 11:17:15 +11:00
Sebastiaan Janssen f822400036 Fix broken build 2014-02-15 14:24:40 +01:00
Shannon 2aae108cb4 Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Web/Security/WebSecurity.cs
2014-02-13 17:21:30 +11:00
Shannon 4069fc8d1f fixes issue with legacy user.Password property and fixes comparison of sections 2014-02-13 17:19:28 +11:00
Shannon 643f05d949 fixes some more merge issues 2014-02-13 16:56:23 +11:00
Shannon d36cd035e9 Fixes merge issues 2014-02-13 16:46:52 +11:00
Shannon c4acbf0dbc Merge remote-tracking branch 'origin/6.2.0' into 7.1.0
Conflicts:
	src/Umbraco.Core/Configuration/ClientDependencyConfiguration.cs
	src/Umbraco.Core/Constants-Conventions.cs
	src/Umbraco.Core/Models/Member.cs
	src/Umbraco.Core/Models/Membership/IUser.cs
	src/Umbraco.Core/Models/Template.cs
	src/Umbraco.Core/Persistence/Factories/MemberReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Core/Persistence/RepositoryFactory.cs
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Core/Services/IMemberTypeService.cs
	src/Umbraco.Core/Services/IMembershipUserService.cs
	src/Umbraco.Core/Services/IUserService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Core/Services/MemberTypeService.cs
	src/Umbraco.Core/Services/ServiceContext.cs
	src/Umbraco.Core/Services/UserService.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/MockTests.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/EditProfile.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Login.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/LoginStatus.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/RegisterMember.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/Breadcrumb.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/EditProfile.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/ListAncestorsFromCurrentPage.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/ListChildPagesFromCurrentPage.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/ListChildPagesOrderedByDate.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/ListChildPagesOrderedByName.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/ListChildPagesWithDoctype.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/ListDescendantsFromCurrentPage.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/Login.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/LoginStatus.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/MultinodeTree-picker.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/Navigation.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/RegisterMember.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/SiteMap.cshtml
	src/Umbraco.Web.UI/Umbraco/create/PartialView.ascx.cs
	src/Umbraco.Web.UI/config/umbracoSettings.config
	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
	src/Umbraco.Web/Controllers/UmbLoginController.cs
	src/Umbraco.Web/Controllers/UmbLoginStatusController.cs
	src/Umbraco.Web/Controllers/UmbProfileController.cs
	src/Umbraco.Web/Controllers/UmbRegisterController.cs
	src/Umbraco.Web/Models/LoginModel.cs
	src/Umbraco.Web/Models/LoginStatusModel.cs
	src/Umbraco.Web/Models/ProfileModel.cs
	src/Umbraco.Web/Models/RegisterModel.cs
	src/Umbraco.Web/Models/UmbracoProperty.cs
	src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs
	src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs
	src/Umbraco.Web/Security/WebSecurity.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/UmbracoModule.cs
	src/Umbraco.Web/WebApi/UmbracoApiController.cs
	src/Umbraco.Web/umbraco.presentation/library.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/PartialViewMacrosTasks.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/PartialViewTasks.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/login.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbracobase/baseLibrary.cs
	src/Umbraco.Web/umbraco.presentation/umbracobase/restExtension.cs
	src/umbraco.businesslogic/User.cs
	src/umbraco.providers/UsersMembershipProvider.cs
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-02-13 16:22:51 +11:00
Shannon 0a80c39962 Fixes merge 2014-02-13 15:25:57 +11:00
Florian Verdonck edee8134c2 Updated request after feedback 2014-02-13 15:21:40 +11:00
Shannon 2f66303b38 Merge branch 'KevinJump-7.0.2' into 7.1.0 2014-02-13 15:12:02 +11:00
Shannon 7102ed49ec Merge branch '7.0.3' of https://github.com/stevetemple/Umbraco-CMS into stevetemple-7.0.3
Conflicts:
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js
2014-02-13 15:00:42 +11:00
Shandem f5d94c3a05 Merge pull request #294 from nojaf/patch-1
Changing MasterTemplateId to public
2014-02-13 14:48:24 +11:00
Shannon 92502f946b Merge branch '7.0.3' into 7.1.0 2014-02-13 14:49:00 +11:00
Shannon 30a73c0886 updated web.config template to use new role provider. 2014-02-13 14:45:24 +11:00
Shannon f5ee02a3e9 Updates the membership partial view templates to redirect to current page by default but allows this to be overridden. Creates a new RedirectToCurrentUmbracoUrl method which is slightly diff from RedirectToCurrentUmbracoPage since it doesn't care about the actual page item rendering, just the currently rendered URL which is useful if coming from a rewritten URL (which is what happens with public access rewrites) 2014-02-13 13:30:32 +11:00
Shannon 9827b40bea Fixes: U4-4223 MVC based forms with SurfaceControllers don't work when rendered in Webforms mode.
This slightly changes how the routing works in the module, now we always send the request to the RenderRouteHandler, this will first process the logic for route hijacking, then it will determine if the request was found to be a WebForms template, if so then we'll return the webforms handler. This also now allows us to have POSTed values to SurfaceController's from forms that have been rendered in Webforms whilst maintaining all viewdata, tempdata and model state on postback even when rendering in webforms!
2014-02-13 13:19:51 +11:00
Shannon 2de6f09634 Adds configuration section classes for the image cropping + unit tests. 2014-02-13 11:01:37 +11:00
Sebastiaan Janssen df16a69582 Merge pull request #295 from loedeman/patch-1
Update nl.xml
2014-02-12 13:37:09 +01:00
Stephan f9323c85e4 Fix issue with 9d7b3b96 in .designer.cs file 2014-02-12 13:22:35 +01:00
Stephan 2677672e50 Merge remote-tracking branch 'origin/6.2.0' into 6.2.0 2014-02-12 13:22:30 +01:00
Morten Christensen a38e0dcf86 Adding integer overload for UmbracoEntity so it can be used with a dynamic object containing either a boolean or integer retrieved from the database to initialize the UmbracoEntity object. 2014-02-12 12:47:47 +01:00
Stephan fdd7227494 Fix DynamicPublishedContent to use CleanStringType.ConvertCase 2014-02-12 10:46:57 +01:00
Stephan 6b74e14cdd Backport DefaultShortStringHelper from 7.1 2014-02-12 10:40:00 +01:00
Stephan db528d8d7a U4-4199 - undef debug code in release 2014-02-12 10:23:59 +01:00
Shannon 9d7b3b965a fixes some issues with new bundles. 2014-02-12 18:19:20 +11:00
Shannon 806008a7e9 Fixes issue with @ symbols in login name and a member group query 2014-02-12 18:02:00 +11:00
Shannon 45fa192c95 Fixes some unit tests 2014-02-12 17:25:45 +11:00
Shannon 92235128f1 Got new MemberGroupService done, completed the MemberService for role based stuff, created a member group cache refresher since we are caching member groups by name (probably should cache others too). Public access stuff changes if a name of a member group is changed which is now done with an event instead of coded into the biz logic. 2014-02-12 17:14:16 +11:00
loedeman 06cb7a529e Update nl.xml
I've updated the Dutch translation based on the current 7.0.2 English translation (en.xml) since I would rather not start liking the placeholders ;) ...
2014-02-11 19:56:08 +01:00
perploug fa4e9d0cd1 Merge remote-tracking branch 'origin/7.1.0-ImageCropper-WIP' into 7.1.0 2014-02-11 14:56:41 +01:00
perploug 764644fc5d Merge 2014-02-11 14:55:22 +01:00
perploug 0bf27f4371 Make sure the formcontroller reset dirty state on save 2014-02-11 14:48:06 +01:00
Shannon 7622937cfd implemented remaining methods for member groups/roles + unit tests 2014-02-11 20:38:48 +11:00
Shannon bf41694572 Fixed up some more of the member group + member stuff with more unit tests 2014-02-11 19:21:36 +11:00
Shannon 7b897ce64c Member group repo updated along with the member service to support roles, etc... got first of many unit tests passing. 2014-02-11 12:43:55 +11:00
perploug 36a8599e62 Adds cache bursting to production mode
Package installer bumps CDF version, we make sure to purge the angular
cache
initial js loader gets a cache burst as well
2014-02-10 13:02:16 +01:00
Shannon 1ca950f721 Starts creating the IMemberGroupService and supporting classes. 2014-02-10 19:48:16 +11:00
Shannon ffba271fd0 Creates the MemberGroupRepository and supporting models. 2014-02-10 19:35:32 +11:00
Shannon ec08d3e910 Updates MembershipHelper to not change the email/name if the value has not changed. Updates the templates to show only validation summaries for their own values/prefixes. Fixes some underlying MVC methods that merge view state to ensure the prefixes work with validation summaries properly when not showing property level errors. Updates the Umb controllers to add model level validation msgs when failed. 2014-02-10 18:34:12 +11:00
Shannon 0bfd032fad Obsoletes the RedirectOnSucces on the RegisterModel as it is not needed. Adds RedirectUrl to the ProfileModel and updates the controller to redirect properly (ensures it doesn't just redirect to home!) 2014-02-10 16:46:45 +11:00
Shannon 2bb58b6fca Updates MembershipHelper to ensure that the membership provider is used when updating a profile, specifically to deal with unique emails. Updates the profile edit template to have correct validation procedures. 2014-02-10 16:22:15 +11:00
Shannon 4d2d656b3d Moved ChangePassword method to MembershipHelper and makes it public, adds an overload. 2014-02-10 14:29:29 +11:00
Shannon fa625d72f9 updates some comments 2014-02-10 14:12:44 +11:00
Shannon 1991380e02 Changes CDF version to be the hash code of UTC now 2014-02-10 13:53:12 +11:00
Shannon 3b8d6dc2c7 Merge remote-tracking branch 'origin/6.2.0' into 6.2.0 2014-02-10 13:50:43 +11:00
Shannon 1faeb76c27 Removes the need for duplicate templates for partial views. Of course we can have partial view only templates if necessary but currently we just borrow them from the partial view macros and update the header 2014-02-10 13:50:31 +11:00
Florian Verdonck a064903e90 Updated request after feedback 2014-02-08 00:28:52 +01:00
perploug 2850c3c3de Improved caching in debug mode by adding global yepnope filter 2014-02-07 15:45:52 +01:00
Florian Verdonck 1fa7cd234d Changing MasterTemplateId to public
When you create a Template in code, I think there is no way to define a masterTemplate. If MasterTempateId were to be public it could be done.
2014-02-07 09:39:10 +01:00
perploug cec8001c38 Fixes issue with MediaHelper and complex property values 2014-02-07 09:16:05 +01:00
perploug 7dbd21a854 ImageCropper Added as a real property editor + polish
Polishing the UI, it can now edit actual image data and store crop
points / center point as json, next add configuration service
2014-02-07 09:15:44 +01:00
Sebastiaan Janssen 3a513668fd U4-4185 Log fails to show unicode (cyrillic) characters 2014-02-05 15:52:20 +01:00
perploug 9ff82f3a00 Removes unneeded loging in umbpanel.directive 2014-02-04 13:58:13 +01:00
perploug 25999be0c9 Improves sticky footer button detection
Refactored the event hooks, added a watch on the buttons position
2014-02-04 12:53:09 +01:00
perploug 853baf9462 Final tweaks to the unsaved changes dialog 2014-02-04 11:40:16 +01:00
Per Ploug Krogslund 6f36384a35 Merge branch '7.1.0-LocationChangeNotificatiion' into 7.1.0 2014-02-04 09:46:54 +01:00
Per Ploug Krogslund d55e492d17 Route change confirm notification dialog 2014-02-04 09:46:14 +01:00
Per Ploug Krogslund fcbdf6c635 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-02-03 21:50:30 +01:00
Per Ploug Krogslund 1fda22a4e0 Merge branch '7.1.0-LocationChangeNotificatiion' into 7.1.0 2014-02-03 21:48:23 +01:00
Per Ploug Krogslund deeaf724bd Fixes missing dependencies 2014-02-03 21:04:11 +01:00
Per Ploug Krogslund 34824ffbb0 Confirm navigating away from unsaved content 2014-02-03 21:03:43 +01:00
Per Ploug Krogslund 6f28a0a686 Updates NotificationService to support custom views
This allows us to inject small UI components as overlays ontop of
editors
2014-02-03 21:03:24 +01:00
Sebastiaan Janssen b3f6a8c71b Merge branch '7.0.3' into 7.1.0
Conflicts:
	.gitignore
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
2014-02-03 11:52:36 +01:00
Sebastiaan Janssen 98684e6292 Add 100 to the ClientDependency.config version to avoid conflicts with older caches 2014-02-03 10:23:13 +01:00
Steve Temple aad0e73fea Add customConfig back into rte 2014-01-31 23:18:49 +00:00
perploug 9687b2abee Special rule for installer password change 2014-01-31 13:03:46 +01:00
perploug 4ea589e954 Missing changes on ContentPickerControler re-added 2014-01-31 11:38:24 +01:00
perploug 621a19d4bd Final tweaks to TreeSource picker
Better help text, polish icons and margins, made sure it toggles UI
correctly for each type of tree

(cherry picked from commit 9ce79e98a3)

Conflicts:
	src/Umbraco.Web.UI.Client/src/views/prevalueeditors/treesource.html
2014-01-31 11:38:23 +01:00
perploug 5821444678 Fixes inconsistently named private method
Replaces delegates with lambdas

(cherry picked from commit 2a81162756)
2014-01-31 11:38:22 +01:00
perploug 7533baf368 fixes mntp filtering
(cherry picked from commit 3e22598f4a)
2014-01-31 11:38:21 +01:00
perploug d691e525b3 Adds support for xpath root node selection on mntp
(cherry picked from commit d842f0f5b7)

Conflicts:
	src/Umbraco.Web.UI.Client/src/views/propertyeditors/contentpicker/contentpicker.controller.js
2014-01-31 11:38:20 +01:00
perploug 02d9d42ae2 adds getByQuery to entityService
(cherry picked from commit 8258619055)

Conflicts:
	src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js
	src/Umbraco.Web/Editors/EntityController.cs
2014-01-31 11:38:19 +01:00
perploug 17838e044c Addss template clearing when in debugmode
(cherry picked from commit 7d2f6c13c3)
2014-01-31 11:38:18 +01:00
Stephan 73173f92d6 U4-4144 - fix 2014-01-31 10:33:23 +01:00
Per Ploug Krogslund 7d7fcd2093 Wip on dropper and gravity editor directives 2014-01-30 22:28:50 +01:00
Stephan 2ab1cf59a6 U4-2317 - issue with domains & languages management 2014-01-30 16:19:09 +01:00
Stephan 3ef51d7357 U4-2317 - issue with domains & languages management 2014-01-30 16:18:06 +01:00
Stephan 56cd1cee81 U4-4160 - make sure string properties are returned as strings 2014-01-30 15:08:13 +01:00
Stephan 002988ce86 U4-4144 - Media Cache dies due to new 'key' property in XML 2014-01-30 08:48:35 +01:00
perploug 81c32716fe Removes pre-checkpassword check 2014-01-29 22:04:37 +01:00
Stephan 8b553dd067 U4-4144 - work around media cache exceptions on invalid properties 2014-01-29 19:30:17 +01:00
perploug c52123e878 adds mock cropper data for WIP prototype 2014-01-29 14:30:51 +01:00
perploug 4e6ca57f7a Chore: seperate media + image helpers into 2 files 2014-01-29 14:30:35 +01:00
perploug ce9cfbf071 Chore: update media+mediahelper mocks 2014-01-29 14:30:17 +01:00
perploug 8024bde429 Imaging directives (crop, gravity and preview) 2014-01-29 13:44:34 +01:00
perploug 9ce79e98a3 Final tweaks to TreeSource picker
Better help text, polish icons and margins, made sure it toggles UI
correctly for each type of tree
2014-01-29 11:21:54 +01:00
perploug 3e5553d9b0 Fixes weird issue with user language dropdown 2014-01-29 09:50:37 +01:00
Shannon c2f34cefb5 Merge branch '7.0.2' of https://github.com/rsoeteman/Umbraco-CMS into rsoeteman-7.0.2 2014-01-29 11:26:05 +11:00
Shannon ccaf82d797 Fixes object extensions for dates with a 'kind' specified. 2014-01-29 11:21:35 +11:00
Shannon 2f7727af68 Fixes: U4-3894 Date picker with time resets to "måndag januari 1, 0001" on Republish entire site 2014-01-29 11:20:25 +11:00
Shannon 5a9874bfad Fixes U4-3894 Date picker with time resets to "måndag januari 1, 0001" on Republish entire site 2014-01-29 11:19:59 +11:00
perploug 5047c7bbe7 Fixes: U4-4155 Backend CSS Rich Text Editor Path Issue 2014-01-29 00:28:56 +01:00
perploug 0c45fb1b97 Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-01-28 23:50:58 +01:00
perploug 7bd745a870 WIP: Tree icon colors 2014-01-28 23:50:25 +01:00
Shannon 68b4a493c6 updates versions and port 2014-01-29 09:46:25 +11:00
Shannon 6338d57959 Cherry picked - Removes hard coded api url from rte embed 2014-01-29 09:34:07 +11:00
Shannon 7de1b2d09d Fixes ServerVariablesParser to have a proper event declared! :P 2014-01-29 09:33:14 +11:00
Tim Geyssens 93a4e8f426 Removes hard coded api url from rte embed 2014-01-28 16:18:30 +01:00
Tim Geyssens fcc115004e Updates server vars with embedApiBaseUrl 2014-01-28 16:11:57 +01:00
perploug 24062c0061 Rolls back listview items in dialog trees 2014-01-28 15:49:04 +01:00
perploug 06cbdc37b4 Fixes: U4-4143 In rich text editor, non ASCII characters in source code window are encoded
Also at the same time fixes missing config import from serverside config
2014-01-28 15:45:14 +01:00
Shannon f28ae52ae3 moved logic to update a profile to MembershipHelper. 2014-01-28 21:57:00 +11:00
Shannon cfd0973f00 Moves the registration logic to the MembershipHelper, fixes up the views to keep the indexes so props save. 2014-01-28 21:42:30 +11:00
Shannon 1bfdd83ba7 Cleans up more of the membership controllers and snippets to be using the membership helper and fixes up a few issues 2014-01-28 19:41:21 +11:00
Shannon 6fefcacc61 Adds more methods to the MembershipHelper, updates the RegisterModel and obsoletes the standard ctor so biz logic is not happening in the model, updates the snippets to use the correct way. Fixes an issue in the membership repo for persisting new members when the member type doesn't contain all the built-in props. 2014-01-28 18:59:27 +11:00
Shannon 3b639e61b2 Exposes MembershipHelper onthe UmbracoViewPage so people can use it directly in views. 2014-01-28 17:02:20 +11:00
Shannon 9959ff667e publicizes MembershipHelper and exposes it on the various base classes: SurfaceController, UmbracoApiController and UmbracoUserControl as the property "Members", will add more helper methods. 2014-01-28 16:58:55 +11:00
Shannon de1f86c7a1 adds logic to the membership helper to create a new LoginStatusModel with the values filled in, obsoletes the empty ctor on LoginStatusModel since that does some biz logic lookups, instead replaces it with a static method to create an empty one. 2014-01-28 16:30:58 +11:00
Shannon 28d8fd0531 Changes LoginStatusModel to use the correct api and updates the new membership provider stuff to ensure that the provideruserkey is the int id of the model for backwards compatibility. 2014-01-28 16:13:05 +11:00
Shannon e4e76eb0bf Backports commit: Prefixed built in controllers to better avoid conflicts with people's custom code
Conflicts:
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/EditProfile.cshtml
	src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Login.cshtml
	src/Umbraco.Web/Controllers/UmbLoginController.cs
	src/Umbraco.Web/Controllers/UmbLoginStatusController.cs
	src/Umbraco.Web/Controllers/UmbProfileController.cs
	src/Umbraco.Web/Controllers/UmbRegisterController.cs
	src/Umbraco.Web/Umbraco.Web.csproj
2014-01-28 13:47:16 +11:00
Shannon 677cc8c8fd Fixes ProfileController to use normal .Net APIs and the new members service - also removes the Response.Redirect that was in there, why was it like that? 2014-01-28 13:35:43 +11:00
Shannon 3fa5c4e0b2 Updates RegisterController with the standard ASP.Net APIs to create and login a member. 2014-01-28 13:21:30 +11:00
Shannon 360393c464 Fixes LoginStatusController to use the standard ASP.Net APIs 2014-01-28 13:07:25 +11:00
Shannon d3daf88a8d Fixes the LoginController to use the correct APIs 2014-01-28 12:58:22 +11:00
Shannon 7a99ebd6d9 Starts the implementation of the new role provider. 2014-01-28 12:48:41 +11:00
Shannon a7298e2e5a Completes: U4-4148 Anytime RuntimeCacheProvider or InMemoryCacheProvider is used, a cache refresher will need to handle it's distribution! 2014-01-28 12:20:10 +11:00
Shannon 15d7443c61 Streamlines the content type cache refreshing, leaving some of the legacy cache clearing but that shouldn't really have an effect, with these new changes it should be guaranteed that the distributed cache is executed always for Doc, media and member types. 2014-01-28 12:13:27 +11:00
Shannon f2b7e27b34 Fixes: U4-2721 RuntimeCacheProvider is not cleared when data type changes and updates the repo factory to not use the InMemory cache provider since we should only ever use that for very very specific reasons since the memory can never auto-clear with that provider. 2014-01-28 11:30:02 +11:00
Shannon 690d08aa8c Completes wrapping the new IUserService from the legacy User object. Ensures User cache is handled correctly and distributed cache is updated for Users. 2014-01-28 10:46:59 +11:00
Shannon 6719d70cc0 Updates UserTypeCacheRefresher to clear the runtime cache accordingly. 2014-01-28 09:22:01 +11:00
Shannon 3cdcf513ec removes ancient test project 2014-01-28 09:00:17 +11:00
Shannon 23d9944a61 Merge branch '7.0.2' of https://github.com/kalletoxic/Umbraco-CMS into kalletoxic-7.0.2 2014-01-28 08:47:09 +11:00
perploug 31429ad9c8 Fixes treenodes with very long names breaking the tree 2014-01-27 22:09:16 +01:00
perploug 05a8d80284 Fixes broken refresh action
Refresh action referenced the tree, not its root node
2014-01-27 22:08:40 +01:00
perploug c2d978a0db Enables listview children in dialog trees
By default trees doesnt show children of listview nodes, this enables
them in dialog trees, otherwise content pickers cannot select childrens
of a listview node
2014-01-27 22:03:52 +01:00
perploug e17b32c6e5 Removes option to query media with Xpath on mntp
Only content can be queried with Xpath in a reasonable performant manner
as its the only type of data that is cached as xml
2014-01-27 13:49:09 +01:00
perploug de79512dd4 Adds overloads to relationService.AreRelated
Allows to lookup relations based on type and alias of type when doing
"AreReleated()" checks
2014-01-27 13:45:54 +01:00
Richard Soeteman 06ae6ad15e Fix media.save throws an error in Umbraco 7.0.x
See http://issues.umbraco.org/issue/U4-3928 width and Height properties
are assigned on the file media types.  This was because of always
assigning a value to
content.getProperty(uploadFieldConfigNode.WidthFieldAlias).Value

Added an if statement to make sure the media item is an image when
assigning those values.
2014-01-27 10:15:14 +01:00
perploug 2a81162756 Fixes inconsistently named private method
Replaces delegates with lambdas
2014-01-27 08:27:31 +01:00
perploug 0a7526601c Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0 2014-01-24 18:41:46 +01:00
perploug 3e22598f4a fixes mntp filtering 2014-01-24 18:38:47 +01:00
perploug d842f0f5b7 Adds support for xpath root node selection on mntp 2014-01-24 18:38:39 +01:00
perploug 8258619055 adds getByQuery to entityService 2014-01-24 18:38:08 +01:00
perploug 7d2f6c13c3 Addss template clearing when in debugmode 2014-01-24 17:20:34 +01:00
Shannon b314bff127 Creates powershell file to do the build, this detects if you have sandcastle installed first, also overwrites the default TOC.css file with a custom slightly nicer version for the output. 2014-01-24 18:23:37 +11:00
Shannon d66e2e52e9 adds additional bat files to the sln files for editing, adds the sandcastle help file config file that can be used to build the docs when sandcastle is installed. 2014-01-24 16:31:49 +11:00
Shannon 43c426b46c Update booting.aspx
Throw the exception immediately if the parameter is not there or empty.

If the parameter is not there it's defaulted to the current url, and this will redirect to itself and create an endless loop here.
2014-01-24 12:36:02 +11:00
Shannon 0714aaa457 Merge remote-tracking branch 'origin/7.0.2' into 7.1.0 2014-01-24 12:34:40 +11:00
Shandem 81dac97917 Merge pull request #284 from markvantilburg/patch-1
Update booting.aspx
2014-01-23 17:33:22 -08:00
Shannon de6e0dc8d7 Merge branch '7.0.2' into 7.1.0 2014-01-24 12:32:07 +11:00
Kevin Jump 57c68daf38 Fix Template Import when template has no master
Importing a template with no master template (i.e when it's at the root)
caused an error. Added check for MasterTemplateId != null - (tried
.IsValueCreated but that generated a object not set exception)
2014-01-23 16:07:07 +00:00
Kevin Jump a705561a51 Fix Importing Macro when macro already exists
ParseMacroElement called by ImportMacro was no checking for to see if
the macro or properties already exists - caused SQL errors on import of
macro. Added check to look for existing macro, and only add new
properties on import (in line with other import methods)
2014-01-23 16:05:08 +00:00
Kevin Jump a7107f01e8 Single DataType import Fix
Importing a file with a single data type failed, because the DataType
element is at the root when exported.
2014-01-23 15:57:50 +00:00
Shannon e2ac82abca Gets most of the User and UserType legacy objects wrapping the new services, yay! Now just need to sort out all the caching stuff which I have tasks for. 2014-01-23 18:44:41 +11:00
Shannon 64d1a484bd Fixes User Id issues with HasIdentity, wraps legacy UserType to the new service, fixes the uninstalling db schema to not throw exceptions and clog up the unit test log. 2014-01-23 17:11:58 +11:00
Shannon 585b42af48 More Save()'s missing and removes the extra calls to XmlGenerate - should save some processing time. 2014-01-23 16:13:29 +11:00
Shannon 7c4412fc4b Ensures that Save() is called wherever member data is saved 2014-01-23 16:09:59 +11:00
Shannon 0be8039c8f Changes how IProfile works which is now just exposed by the IUser instead of implemented, this cleans up the Id situation. 2014-01-23 15:31:49 +11:00
Shannon 668265f1ac Allows forcing pass change with new provider, updates conventions to not allow editing of question/answer - unfortunately cannot make the other ones readonly because noEdit data type is the wrong clr type. 2014-01-23 15:11:54 +11:00
Shannon 4735f27a66 Fixes more naming conventions with CreateMemberWithIdentity, fixes memberTasks to ensure the name is set, fixes new membership providers which had the name/email call reversed. Updates the cache refresher event handler to listen to MemberService events instead of the old legacy API events. 2014-01-23 14:55:41 +11:00
Shannon 6377b9aa50 Fixes some underlying type conversions, fixes more of the member type wrapping, updates contenttypecontrolnew to work with member types properly, ensures the property type cache is cleared when member types change. 2014-01-23 13:33:58 +11:00
Shannon 011be60205 Finishes wrapping the member service and fixes a few bugs - ensures the RepositoryBase doesn't keep enumerating when getting all 2014-01-23 12:30:28 +11:00
Shannon a272675ed8 Wraps the MemberService from the legacy Member object 2014-01-23 11:41:01 +11:00
Shannon 80697cf9ca MemberType fully wraps new MemberTypeService 2014-01-23 10:57:24 +11:00
Shannon f4534aa94c adds unit tests for member type can view/can edit properties 2014-01-23 10:55:22 +11:00
Shannon 56dec485a5 Starts wrapping MemberTypeService from the legacy MemberType object. Changes the User.Id to an int - no more casting. Changes CreateMember to CreateMemberWithIdentity for consistency. Adds raiseEvent params to the create/save methods. Updates the MemberTypeService to have consistent naming conventions. Starts wrapping more of the MemberService from the legacy Member object. 2014-01-23 10:41:57 +11:00
Shannon ffde0f48cf Starts wrapping MemberTypeService from the legacy MemberType object. Changes the User.Id to an int - no more casting. Changes CreateMember to CreateMemberWithIdentity for consistency. Adds raiseEvent params to the create/save methods. Updates the MemberTypeService to have consistent naming conventions. Starts wrapping more of the MemberService from the legacy Member object. 2014-01-23 10:35:30 +11:00
Kevin Jump 5663b6890f Revert "Export Template fails when template has no master value"
This reverts commit a2905c13f6.
2014-01-22 21:35:16 +00:00
Kevin Jump a2905c13f6 Export Template fails when template has no master value 2014-01-22 21:29:49 +00:00
Kevin Jump e8f7a83f68 Fixed: U4-4119 - Export ContentType fails for Generic Properties
Adds Null checking for PropertyGroupID so that an exception is avoided
when the propertyType is in the Generic Properties group (and has no ID
assigned)
2014-01-22 19:50:21 +00:00
Shannon 2956aee4e3 Fixes: U4-4108 The backoffice should not be accessible when the app is not configured, it should redirect to the installer and U4-4106 Set the new membership providers to be shipped as default. 2014-01-22 15:26:45 +11:00
Shannon 9bd8d729fa publicizes user stuff, changes the IUser.Id to an int - no need for it to be an object and casted everywhere. Updates the login logic to perform the mapping logic for custom membership providers with an extension method. 2014-01-22 14:07:18 +11:00
Shannon fb9569d914 Fixes user membership providers to throw exceptions on duplicate emails when the provider is configured to not allow duplicates. 2014-01-22 13:20:00 +11:00
Shannon 47974d49fe obsoletes old providers, creates new membership role provider stub 2014-01-22 12:16:47 +11:00
Shannon 3f8b3031c2 completes: U4-3996 Fix EditUser to use the membership provider properly, U4-3997 Fix EditMember to use the membership provider properly 2014-01-22 11:57:33 +11:00
Shannon 7da41594fd re-publicizes member services, fixes: U4-4102 Un-obsolete ContentService.Publish 2014-01-22 11:27:44 +11:00
Shannon 9796b30bbb Fixes: U4-4104 Using strongly typed Html.Action<T> with a PluginController causes exception 2014-01-22 11:02:24 +11:00
Sebastiaan Janssen ead837f654 U4-4095 Missing Keys in English US Language File 2014-01-20 19:15:50 +01:00
Sebastiaan Janssen 10a4eb3ddc Fix Duplicate attribute YSOD (key was already added in the base class) 2014-01-20 12:02:52 +01:00
Morten Christensen 51f46cf871 Not raising export events for content/media ToXml extension for the time being 2014-01-20 10:37:46 +01:00
Shannon 88182edf8f Merge remote-tracking branch 'origin/6.2.0' into 7.1.0 2014-01-20 18:34:11 +11:00
Shannon e456dd3886 Merge branch '7.0.2' into 7.1.0 2014-01-20 18:33:54 +11:00
Shannon 697548d1c7 Fixes: U4-3897 Copy contents relations not created 2014-01-20 18:01:19 +11:00
Shannon f717628322 Ensures username is escaped in user service 2014-01-20 16:13:41 +11:00
Shannon c2c4763faa Ensures username is escaped in user service 2014-01-20 16:11:38 +11:00
Shannon e91b297cc2 updates user task creation for release 2014-01-20 16:04:49 +11:00
Shannon c062d3b71b Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-01-20 16:01:53 +11:00
Shannon ed83fb8216 updates user task creation for release 2014-01-20 16:00:19 +11:00
Shannon c92441e544 Ensures user name is escaped in member service query. 2014-01-20 14:37:26 +11:00
Shannon f0573fc68c Fixes: U4-4084 Macro's with non alphanumeric chars in their aliases cannot render in the rich text editor 2014-01-20 13:59:25 +11:00
Shannon eb44480fdf fixes package installer path redirect when installing from the repo 2014-01-20 11:58:52 +11:00
Shannon 1ad05fbfc9 Clears the auth cookie after install if there is one which forces the login screen to display so that the csrf tokens are created - this is required if you are upgrading from a previous version and are logged in but don't have a version with csrf tokens. 2014-01-20 10:53:14 +11:00
Shannon 673e24a2ea Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-20 10:37:36 +11:00
Shannon 4842be01cd Ensures app domain restarted after db upgrade to clear PetaPoco's mapping cache. 2014-01-20 10:36:37 +11:00
Morten Christensen dddb38d4ee Adding comment to private method for clarity 2014-01-19 15:23:05 +01:00
Morten Christensen 727ce0f795 Additional tests for Macro import and export 2014-01-19 15:23:04 +01:00
Morten Christensen ba27acead9 Adding unique key to xml for contentbase exports 2014-01-19 15:23:04 +01:00
Morten Christensen a026a81a8a Adding test for import of Macros from uBlogsy package xml 2014-01-19 15:23:03 +01:00
Morten Christensen 5e7ee0c236 Adding ImportMacros to PackagingService interface 2014-01-19 15:23:03 +01:00
Morten Christensen bb30d5ebd2 Refactoring Macro import method in PackagingService 2014-01-19 15:23:02 +01:00
Morten Christensen 2ae3b09b8c Updating PackagingService to use the newly added event args 2014-01-19 15:23:02 +01:00
Morten Christensen 473d76f1b7 Adding Event Args for import and export 2014-01-19 15:23:01 +01:00
Sebastiaan Janssen 918e454c42 Make sure the build does a complete rebuild so that the Belle build gets triggered 2014-01-19 15:21:47 +01:00
Shannon 7e32fdb682 changed buildbelle to do a grunt build instead of running the default grunt build. 2014-01-19 13:11:23 +11:00
Sebastiaan Janssen 171a472966 Split out the Belle build and integrate it in the build of the Web.UI project 2014-01-17 18:56:04 +01:00
Sebastiaan Janssen 8194655ad1 Update the readme file with a pointer to the build.bat file to get started quickly 2014-01-17 16:07:29 +01:00
Sebastiaan Janssen 80c1812bc8 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-17 15:51:01 +01:00
Morten Christensen 6c37b33509 Adding export method for macros in the PackagingService and changing the ctor to accept the MacroService, so we can also add an import method. 2014-01-17 15:29:51 +01:00
Morten Christensen 509bcee540 Changing the name of the private field to be more inline with the Property 2014-01-17 15:28:53 +01:00
Morten Christensen 3dec881848 Removing extra line spaces 2014-01-17 15:28:12 +01:00
Sebastiaan Janssen 65b522a0a0 Automatically build Belle from build.bat without having to install Node.js on local machine 2014-01-17 14:52:42 +01:00
Morten Christensen 9164567abe Adding export of templates to PackagingService 2014-01-17 13:55:34 +01:00
Stephan 12314f16a2 U4-4056 - fixing 2014-01-17 10:27:09 +01:00
Shannon 1621d01992 fixes some unit tests 2014-01-17 13:18:49 +11:00
Shannon ae05bfd350 Fixes: U4-4055 List View document types still display children in content tree 2014-01-17 13:00:11 +11:00
Shannon 79567d4e8f Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-17 12:26:02 +11:00
Shannon 334a56ce5c Fixes: U4-3765 v7 MultiNode Treepicker Sort not working 2014-01-17 12:25:34 +11:00
Sebastiaan Janssen c2ee3303a5 U4-4059 Update MNTP snippets for string of id's rather than old xml fragment 2014-01-16 19:49:57 +01:00
Stephan bfc89a7247 merge branch 'origin/6.2.0' into 7.0.2 + fix 2014-01-16 19:40:29 +01:00
Stephan 326309e61e U4-4056 - better unicode/ascii support for urls 2014-01-16 17:09:21 +01:00
Shannon 8926e8c7d9 ensures preview cookie is gone on logout. 2014-01-16 20:56:34 +11:00
Shannon ee7ee81098 fixes merge issue 2014-01-16 20:51:23 +11:00
Shannon f4b707e928 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Configuration/UmbracoSettings.cs
	src/Umbraco.Core/Security/AuthenticationExtensions.cs
	src/umbraco.businesslogic/StateHelper.cs
2014-01-16 20:49:19 +11:00
Shannon c38030def2 Fixes: U4-3855 Preview cookie should be a session cookie not persisted 2014-01-16 20:47:13 +11:00
Shannon 43a61d8a06 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-01-16 20:15:35 +11:00
Shannon 4fd3725c51 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/Umbraco/create/PartialView.ascx.cs
	src/Umbraco.Web.UI/umbraco/create/PartialViewMacro.ascx
	src/Umbraco.Web.UI/umbraco/create/PartialViewMacro.ascx.cs
2014-01-16 20:09:18 +11:00
Shannon 949861a890 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-01-16 20:03:52 +11:00
Shannon 122069752a fixes legacy validate member logic 2014-01-16 20:03:29 +11:00
Shannon c288734877 Fixes: U4-4054 Multinode Treepicker datatype - selecting a start node sends to content section 2014-01-16 19:47:27 +11:00
Shannon 4b22ff3a75 Completes: U4-4011 Package installation will require either a full app refresh or we will need to re-lazy load in all of the assets 2014-01-16 19:11:03 +11:00
Shannon 2b1a43b40a Finally got somewhere with U4-4011 Package installation will require either a full app refresh or we will need to re-lazy load in all of the assets - took ages to get this going, now to get it working when packages have custom screens. 2014-01-16 18:33:31 +11:00
Shannon 076d90ddc4 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-16 12:31:54 +11:00
Shannon 1e2e26d898 publicizes server vars parser and event 2014-01-16 12:31:29 +11:00
Sebastiaan Janssen f56cb2c3ac Hardcoded empty snippets need to be updated as well.. 2014-01-15 21:11:35 +01:00
Sebastiaan Janssen ae83b0fbaf Hardcoded empty snippets need to be updated as well.. 2014-01-15 21:07:24 +01:00
Sebastiaan Janssen fb7b65cf3b Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-15 20:57:42 +01:00
Sebastiaan Janssen 168abddacf U4-2737 Snippets that are available when creating new MacroScripts should also be available for Partial Views 2014-01-15 20:57:27 +01:00
Sebastiaan Janssen 99e91a1053 U4-2737 Snippets that are available when creating new MacroScripts should also be available for Partial Views 2014-01-15 20:55:17 +01:00
Sebastiaan Janssen bad118ac6b U4-4046 Rename "empty template" to "empty" 2014-01-15 10:17:46 +01:00
Shannon f334c3d74a playing a bit more with re-initializing the app, but think we're def gonna have to do a full browser refresh. To do that we'll have to figure out how to gen a deep link url to the installer complete screen which could include a custom screen from a package. 2014-01-15 17:47:46 +11:00
Shannon 0e6c199a7e working on U4-4011 Package installation will require either a full app refresh or we will need to re-lazy load in all of the assets but unfortunately we cannot lazy load in things like directives as angular doesn't like that, we have to re-load the browser. 2014-01-15 17:18:23 +11:00
Shannon 0bc39afdab fixes language drop down styles - was too big to fit 2014-01-15 15:39:35 +11:00
Shannon cf3de52249 removes the old language.ascx webforms files 2014-01-15 15:36:28 +11:00
Shandem 3f0569af41 Merge pull request #285 from mrdrbob/U4-3831
Fix for U4-3831.
2014-01-14 20:17:32 -08:00
Shannon 9f078357a7 Fixes: U4-4030 RelatedLinksEditorValueConvertor can't be overruled and internal links are wrong 2014-01-15 15:17:03 +11:00
Shannon bb837232ba Allows DefaultPropertyValueConverters to shadow other default converters, this allows us to have a hierarchy of default converters. This also fixes part of this issue: U4-4030 RelatedLinksEditorValueConvertor can't be overruled and internal links are wrong 2014-01-15 14:45:33 +11:00
Shannon 6d57afc71a ensures auth controller has IsBackOffice specified 2014-01-15 13:49:37 +11:00
Shannon fd682efdb1 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2014-01-15 13:37:46 +11:00
Shannon 5c614a88a2 ensures webapi plugincontrollers are routed to /backoffice if [IsBackOffice] is specified 2014-01-15 13:29:17 +11:00
Shannon f27a0c0461 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/EmptyTemplate.cshtml
	src/Umbraco.Web.UI/umbraco/dialogs/protectPage.aspx
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/UmbracoModule.cs
	src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
2014-01-15 13:28:41 +11:00
Shannon 3ef9635406 Fixes: U4-4010 Member and user session gets mixed - fixes how we detect a back office request + unit tests and added new IsBackOffice attribute 2014-01-15 13:17:38 +11:00
Shandem 80601abb27 Rename umbImageGravity.directive.js to umbimagegravity.directive.js
Changed file name to be consistent with the rest of our file names
2014-01-15 11:11:31 +11:00
Shandem 79384d8a0a Rename umbImageCrop.directive.js to umbimagecrop.directive.js
changed file name to be consistent with the rest of our file names
2014-01-15 11:11:02 +11:00
Shannon 793a1a9aa8 Adds comments to EntityController code to use UmbracoHelper 2014-01-15 11:08:02 +11:00
Shannon e3da493345 Re-adds all updates for the WIP for xpath/css filtering and the cropper. 2014-01-15 11:06:20 +11:00
Shannon c527833081 Revert "adds editing function to media picker controller"
This reverts commit 7d051dffbb.
This will only be contained in 7.1
2014-01-15 10:59:05 +11:00
Shannon 5caf091406 Revert "WIP: adds cropper directive"
This reverts commit c5a7eab1d5.
new cropper is only contained in 7.1 branch
2014-01-15 10:55:22 +11:00
Shannon 5a29441640 Reverts GetByQuery and MNTP Xpath query WIP - is contained only in 7.1 2014-01-15 10:53:14 +11:00
Shannon 75a42fd0d6 fixes the protect page logic 2014-01-15 10:42:01 +11:00
Shannon 84da5f43a2 U4-4045 The "Empty" partial view snippet should have @inherits 2014-01-15 10:41:37 +11:00
Bob Davidson 0da7ed8d93 Fix for U4-3831. Removes form, adds ng-click with $event.preventDefault() to prevent premature saving. 2014-01-14 15:40:22 -06:00
Sebastiaan Janssen 0aa72e5026 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-14 15:21:38 +01:00
Sebastiaan Janssen 14cfd2a8df D'oh .. now properly renamed, in the csproj as well - U4-4046 Rename "empty template" to "empty" 2014-01-14 15:21:20 +01:00
Morten Christensen d6b3d115b0 Correcting the naming of events in the PackagingService 2014-01-14 15:09:21 +01:00
Morten Christensen 7b1fd5378f Correcting the naming of events in the RelationService 2014-01-14 15:09:20 +01:00
Morten Christensen 9e9b94b1d5 Correcting raiseEvents parameter for dictionary items 2014-01-14 15:09:20 +01:00
perploug cf837d783d Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-14 15:00:05 +01:00
perploug 3df44e2990 treesource editor changes to remove the search field 2014-01-14 14:59:55 +01:00
perploug 0c5ebb2674 Fixes umbPhotoGrid Filtering 2014-01-14 14:40:00 +01:00
perploug ba2fa2bff4 Legacy dialogs missing conversion, language + partial view 2014-01-14 14:33:11 +01:00
Sebastiaan Janssen 03090e85fd U4-4046 Rename "empty template" to "empty" 2014-01-14 13:51:08 +01:00
Sebastiaan Janssen 5c55d6a6e3 U4-4045 The "Empty" partial view snippet should have @inherits 2014-01-14 13:49:20 +01:00
Shannon 0632d73e32 fixes view state and err styling for protect page 2014-01-14 16:56:38 +11:00
Shannon 000c2637d6 fixes view state and err msg 2014-01-14 16:54:32 +11:00
Shannon bf24e101d3 fixes some logic with the protect page if it's already protected 2014-01-14 16:53:32 +11:00
Shannon 08c837602f Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Models/MemberType.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/memberTasks.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
2014-01-14 16:28:48 +11:00
Shannon 563867cd8b Temp fix for: U4-3968 Umbraco 7.01 - Membership - Public Access - Add Single User protection - crash, fixes protectPage so that it uses the membership provider to make changes, updates the UI logic so that if you choose an existing user it will you about it, fixes it so you cannot arbitrarily change a member's password. 2014-01-14 16:21:00 +11:00
Shannon 86c66511dd changes all calls from Member.InUmbracoMemberMode() to Membership.Provider.IsUmbracoMembershipProvider() and obsoletes the InUmbracoMemberMode 2014-01-14 14:17:28 +11:00
Shannon eedd109332 Temp fix for: U4-3968 Umbraco 7.01 - Membership - Public Access - Add Single User protection - crash 2014-01-14 12:38:48 +11:00
Shannon 7d57521ad8 Fixes some thread safety issues with old membership API 2014-01-14 11:53:41 +11:00
Shannon d5fc18dc95 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-14 11:44:11 +11:00
Shannon e36b3d46e8 Fixes: U4-4039 @Umbraco.Field("writerName") etc. don't work any more 2014-01-14 11:43:56 +11:00
Sebastiaan Janssen d8aa98e60c Temporary workaround for the ClientDependency dependency 2014-01-13 11:50:13 +01:00
markvantilburg 4a8a09c78a Update booting.aspx
Throw the exception immediately if the parameter is not there or empty.

If the parameter is not there it's defaulted to the current url, and this will redirect to itself and create an endless loop here.
2014-01-13 11:33:24 +01:00
perploug 8a8899397e Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-13 10:17:27 +01:00
perploug dc69b5a825 WIP: cropper and gravity editors 2014-01-13 10:17:16 +01:00
perploug df7691ada3 Adds missing mocks 2014-01-13 10:14:30 +01:00
perploug 1048df7e63 Fixes broken assembly browser for usercontrols 2014-01-13 10:14:09 +01:00
Shannon 457560920d Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
2014-01-13 19:15:16 +11:00
Shannon e79c0ae2b5 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Services/NotificationService.cs
2014-01-13 19:11:39 +11:00
Shannon e74e8f9d73 Fixes: U4-4005 Member custom properties not saving from code, only from backend, wraps more of the getter functions in legacy member class with new member service methods, fixes paged result method when there are no results. 2014-01-13 18:36:08 +11:00
Shannon 23b0c89848 ensures the mail usage is disposed. 2014-01-13 17:28:49 +11:00
Shannon 285989e737 updated notification email links to only have edit since we currently don't support deep linking to dialogs. 2014-01-13 16:34:42 +11:00
Shannon 2c580d0b20 updates email notification link address 2014-01-13 16:21:46 +11:00
Shannon 3c1f6abd0d Fixes: U4-3830 Unable to get email notifications working in version 7 2014-01-13 16:13:53 +11:00
Shannon 4eb1ef3444 fixed up merge issues 2014-01-13 14:54:15 +11:00
Shannon 0f503fc320 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Services/PackagingService.cs
	src/Umbraco.Tests/Services/Importing/ImportResources.Designer.cs
	src/Umbraco.Tests/Services/Importing/ImportResources.resx
	src/Umbraco.Tests/Services/Importing/PackageImportTests.cs
	src/Umbraco.Tests/Services/PackagingServiceTests.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/Umbraco.Web.csproj
	src/umbraco.cms/businesslogic/Packager/Installer.cs
	src/umbraco.cms/businesslogic/workflow/Notification.cs
	src/umbraco.macroRenderings/umbraco.macroRenderings.csproj
2014-01-13 14:08:23 +11:00
Shannon aebc30c7a3 Removes the version specific info from the CDF and Examine references in all proj files. 2014-01-13 14:02:50 +11:00
Shannon 44bc365fdd Moves all notification sending logic to the notification service, improves performance during any action when notifications are to be sent, ensures emails are sent out async to not block up the current request. 2014-01-13 13:50:30 +11:00
Shannon 06defee410 Completed new NotificationService, moved Diff to Core 2014-01-13 13:05:25 +11:00
Morten Christensen d5d4dc9561 Adding event handlers to new import and export methods in the PackagingService 2014-01-10 16:24:20 +01:00
Morten Christensen be2c72f8b4 Adding new methods to the IPackagingService interface 2014-01-10 16:05:19 +01:00
Morten Christensen 62f46d531f Fixing merge issue 2014-01-10 16:04:50 +01:00
Morten Christensen 6bfdbe3e8a Updating the legacy Installer class to use the new methods in the PackagingService
Conflicts:
	src/Umbraco.Core/Services/PackagingService.cs
	src/umbraco.cms/businesslogic/Packager/Installer.cs
2014-01-10 15:42:43 +01:00
Morten Christensen 7095b21eb4 Removing some internal experimental stuff that isnt used 2014-01-10 15:40:41 +01:00
Morten Christensen efce912332 Adds import and export of languages along with tests
Conflicts:
	src/Umbraco.Tests/Services/PackagingServiceTests.cs
2014-01-10 15:40:28 +01:00
Morten Christensen b33a265ea4 Moving events out of the repository scope.
Adding Get Language by Iso Code method
2014-01-10 15:39:15 +01:00
Morten Christensen db849c1e36 Adding languages xml to existing xml file for testing purposes 2014-01-10 15:38:57 +01:00
Morten Christensen b01721c2a9 Adding Export of DictionaryItems including test
Conflicts:
	src/Umbraco.Core/Services/PackagingService.cs
	src/Umbraco.Tests/Services/PackagingServiceTests.cs
2014-01-10 15:38:43 +01:00
Morten Christensen 4f2a807327 Updates from PR#127 from Lars-Erik. Had to manually copy in the changes because the PR was closed.
Adds Import of Dictionary Items to the PackagingService along with tests and a fix for the DictionaryRepository.

Conflicts:
	src/Umbraco.Tests/Services/Importing/ImportResources.resx
	src/Umbraco.Tests/Services/Importing/PackageImportTests.cs
	src/umbraco.cms/businesslogic/Packager/Installer.cs
2014-01-10 15:37:44 +01:00
Morten Christensen 955573256d Updating the legacy Installer class to use the new methods in the PackagingService 2014-01-10 15:11:07 +01:00
Morten Christensen d963f5cd7d Updating a few methods that are made public in 7.0.2 2014-01-10 14:57:27 +01:00
Morten Christensen 2467b5ee3b Removing some internal experimental stuff that isnt used 2014-01-10 14:53:27 +01:00
Morten Christensen f86eb4b741 Adds import and export of languages along with tests 2014-01-10 14:48:55 +01:00
Morten Christensen 33b99073f0 Moving events out of the repository scope.
Adding Get Language by Iso Code method
2014-01-10 14:48:31 +01:00
Morten Christensen 880636c5a6 Adding languages xml to existing xml file for testing purposes 2014-01-10 14:47:31 +01:00
Morten Christensen 6e344f335e Adding Export of DictionaryItems including test 2014-01-10 13:08:33 +01:00
Morten Christensen 6b205bd725 Updates from PR#127 from Lars-Erik. Had to manually copy in the changes because the PR was closed.
Adds Import of Dictionary Items to the PackagingService along with tests and a fix for the DictionaryRepository.
2014-01-10 11:45:41 +01:00
perploug d97a0f5b6c Adds missing PluginController Attribute to updatecheckercontroller 2014-01-10 11:21:55 +01:00
Shannon a510396a57 fix merge issue 2014-01-10 17:07:28 +11:00
Shannon 297d54ec98 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Umbraco.Tests.csproj
	src/umbraco.cms/businesslogic/CMSNode.cs
2014-01-10 17:05:23 +11:00
Shannon 531306a091 Created notifications repository and service with unit tests, then need to start integrating that so notifications are properly sent. 2014-01-10 17:03:00 +11:00
Shannon 4346f73159 Fixes naming conventions from old Notification class 2014-01-10 15:13:25 +11:00
Shannon 3cb5754ff2 Fixed some null checks 2014-01-10 12:20:49 +11:00
Shannon bf5bb8bc70 obsoletes imageHelper in favor of the new mediaHelper, updates the link picker to fix: U4-3882 Can't Link to Non-Image Media in 7.0.1 2014-01-10 12:11:52 +11:00
Shannon 7b7ad4d350 completes: U4-3991 Ensure macroservice events are public 2014-01-10 11:20:37 +11:00
Shannon 544a0756f3 Fixes: U4-3995 Remove Contour language keys from deployed language files 2014-01-10 00:43:53 +11:00
Shannon 934215307d Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-10 00:22:09 +11:00
Shannon 349825b4f8 Fixes merge issues 2014-01-10 00:21:58 +11:00
Morten Christensen f3f1a161e4 Adding AreRelated method to the RelationService 2014-01-09 14:12:58 +01:00
Shannon c088187a13 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxContext.cs
	src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderExtensions.cs
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/packages.config
	src/Umbraco.Web/umbraco.presentation/umbraco/create/ScriptTasks.cs
	src/umbraco.cms/packages.config
	src/umbraco.controls/packages.config
	src/umbraco.editorControls/packages.config
	src/umbraco.macroRenderings/packages.config
	src/umbraco.macroRenderings/umbraco.macroRenderings.csproj
2014-01-10 00:09:38 +11:00
Shannon 4db6ce4b22 Fixes various issues relating to File Repositories and Services: U4-4014 FileRepositories offer no way to create folders, U4-4013 The models that the FileService produces causes security exceptions, U4-3993 Replace system.io calls in umbraco.scriptTasks legacy task
updates to latest CDF
2014-01-09 18:08:13 +11:00
Shannon 72a366d0dc Fixes: U4-4012 When loading in a lot of separate assets in a manifest CDF is throwing exceptions with a 'too long query string' - updates to latest CDF 2014-01-09 15:58:06 +11:00
Shannon fc18189fc8 fixes a null check on membership provider, completes: U4-3962 publicize IMapperConfiguration 2014-01-09 13:32:39 +11:00
Shannon 49cfeee5b0 Fixes: U4-3880 Custom parameter editor with JSON valueType 2014-01-09 12:49:33 +11:00
Shannon 01d09548aa fixed merge issues 2014-01-09 10:54:02 +11:00
Shannon 1ff049a063 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Core/Services/MediaService.cs
	src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
2014-01-09 10:38:31 +11:00
Shannon 7c720460f5 Fixes: U4-3876 MySQL cmsContentXml Migration Error on 7.0.1 Upgrade 2014-01-09 10:33:35 +11:00
Morten Christensen d0c0ec56a4 Adding event handlers to the PackagingService 2014-01-08 14:13:16 +01:00
Morten Christensen 3c965e8c32 Updating relation event handlers 2014-01-08 14:13:15 +01:00
Morten Christensen 5bcd6a9982 Adding interface to PackagingService 2014-01-08 14:13:15 +01:00
perploug 525477f84f Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2014-01-08 13:27:42 +01:00
perploug 7d051dffbb adds editing function to media picker controller 2014-01-08 13:27:34 +01:00
perploug c5a7eab1d5 WIP: adds cropper directive 2014-01-08 13:27:04 +01:00
perploug 115c8b15fd updates jquery ui to 1.10.3 2014-01-08 13:26:34 +01:00
Morten Christensen 29c8f065f7 Implementing Saving/Saved and Deleting/Deleted events for Relations and RelationTypes.
Fixes U4-3992 RelationService doesnt have any events.
2014-01-08 12:52:55 +01:00
Shannon 961755336a adds another test for #U4-3876 2014-01-08 20:34:20 +11:00
Shannon e0aff8a1e4 adds a unit test 2014-01-08 20:25:35 +11:00
Shannon 6fa0c627a5 working on #U4-3876 2014-01-08 20:19:08 +11:00
Shannon b3c2574aac working on #U4-3876 2014-01-08 20:04:26 +11:00
Shannon 98b2320421 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Tests/TreesAndSections/SectionTests.cs
2014-01-08 18:41:01 +11:00
Shannon 66a63b3cbb ignores these tests for now, they are successful when running isolated but as a whole they don't pass because of something with the legacy data layer. 2014-01-08 18:39:37 +11:00
Shannon 077f3468b9 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2014-01-08 18:20:49 +11:00
Shannon 21c5b6fe02 fixes user lookup on legacy provider 2014-01-08 18:20:18 +11:00
Shannon 3274d873a9 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Models/Membership/UmbracoMembershipMember.cs
2014-01-08 18:13:35 +11:00
Shannon ffed85640d fixes provider user key issue 2014-01-08 18:12:07 +11:00
Shannon 250f082346 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Security/MembershipProviderBase.cs
	src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
	src/Umbraco.Tests/TreesAndSections/SectionTests.cs
2014-01-08 17:12:06 +11:00
Shannon cdbf89ee57 Fixes up the unit tests 2014-01-08 17:08:13 +11:00
Shannon 056b13eb98 fixes up the double member creation in the createuser method 2014-01-08 16:29:09 +11:00
Shannon e2a395e245 Fixes merge issues 2014-01-08 16:09:35 +11:00
Shannon 6b760dcfe8 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Models/Membership/EntityPermission.cs
	src/Umbraco.Core/Persistence/Factories/UserFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Services/UserServiceTests.cs
2014-01-08 15:47:53 +11:00
Shannon 5ded732188 fixing some merge issues 2014-01-08 15:43:58 +11:00
Shannon 9467a67661 Backports the permissions repo updates, permissions on user/content repo updates and default permissions for users 2014-01-08 15:42:49 +11:00
Shannon d6a83d9887 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Models/IMember.cs
	src/Umbraco.Core/Models/Member.cs
	src/Umbraco.Core/Models/Membership/IUser.cs
	src/Umbraco.Core/Models/Membership/MembershipExtensions.cs
	src/Umbraco.Core/Models/Membership/UmbracoMembershipMember.cs
	src/Umbraco.Core/Models/Membership/User.cs
	src/Umbraco.Core/Models/Membership/UserProfile.cs
	src/Umbraco.Core/Persistence/Factories/MemberReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Factories/UserFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Core/Persistence/Repositories/UserRepository.cs
	src/Umbraco.Core/Services/IMembershipUserService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Core/Services/UserService.cs
	src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs
	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs
	src/Umbraco.Tests/Services/ContentServiceTests.cs
	src/Umbraco.Tests/Services/UserServiceTests.cs
	src/Umbraco.Tests/TestHelpers/Entities/MockedUser.cs
	src/Umbraco.Tests/TestHelpers/Entities/MockedUserType.cs
	src/Umbraco.Web.UI/umbraco/controls/PasswordChanger.ascx.cs
	src/Umbraco.Web.UI/umbraco/dashboard/ChangePassword.ascx
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/umbraco/create/userTasks.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dashboard/ChangePassword.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
	src/umbraco.businesslogic/User.cs
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-01-08 14:32:38 +11:00
Shannon 96e00bc1eb moves classes to sep files 2014-01-08 14:04:30 +11:00
Shannon 0f9f11bbcf re-internalizes some classes for now 2014-01-08 14:03:10 +11:00
Shannon 5b6cc51516 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-01-08 13:04:01 +11:00
Shannon 80b83ab64b Fixes up password changer on postback, fixes up more of the edit user and edit member pages. 2014-01-08 13:03:33 +11:00
Shandem 326d81286a Merge pull request #281 from Jeavon/U4-3987
Fixes U4-3987- Related Links
2014-01-07 15:47:16 -08:00
Jeavon Leopold 13641473d0 Fixes U4-3987- Related Links 2014-01-07 14:40:45 +00:00
Morten Christensen c6751f0374 Correcting the legacy template MakeNew private method so the OnNew event is fired after the design is added and file is created. 2014-01-07 13:24:05 +01:00
Morten Christensen d71c686aea Typo or missing update in legacy User class 2014-01-07 13:23:03 +01:00
Morten Christensen 4c5dfb42d5 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2014-01-07 13:13:38 +01:00
Shannon 0245efe3cb Fixes the change password dashboard to work properly. Fixes the EditUser to property save the member and the user. Adds new (probably temporary) MembershipHelper which is used to update a MembershipUser. Updates the User model to ignore the membership properties that we currently cannot persist. Ensures the legacy User membership provider still looks for a typed membership user (which should never have happened). Fixes small issue with underlying membership provider trying to encrypt an empty string. 2014-01-07 17:01:22 +11:00
Shandem b3151ca788 Merge pull request #280 from AndyButland/wip-u4-3980
Fix to SQL on inserting tags to handle tag with apostrophe (U4-3980)
2014-01-06 15:59:09 -08:00
AndyButland aa1edb6e69 Fix to SQL on inserting tags to handle tag with apostrophe 2014-01-06 21:56:10 +01:00
Shannon 0b4ddf82aa Adds more user service tests 2014-01-06 17:43:29 +11:00
Shannon 3ff173732b implements the remaining incomplete parts of the UserService, adds more unit tests 2014-01-06 17:30:08 +11:00
Shannon f3f7aa70d1 Ensures a default member/user type is assigned on membership provider initialize, adds more unit tests 2014-01-06 16:18:25 +11:00
Shannon cd82bc6d21 streamlined the new membership provider classes so now they all share the same logic and use IMembershipMemberService<T> which is used by both IMember and IUser services 2014-01-06 15:38:34 +11:00
Shannon c3a6c7c473 fixes up more of the legacy user membership provider 2014-01-06 14:02:09 +11:00
Shannon 5538a2e793 fixed up the failing unit tests for member service counts, added more unit tests for UserService and implemented more of the required methods. 2014-01-06 12:25:14 +11:00
Shannon 1b7dc76df2 Updated much more of the UserService + some unit tests 2014-01-06 11:56:53 +11:00
Shannon 85c85cd1eb Simplifies and streamlines the models used between IMember and IUser along with the services used for both of these entities.
Updates the model used to store and retreive permissions, instead of a single string it is an Enumerable<string> which gives us some flexibility in the future and since this was not public (yet) it's the perfect time to do this.
Removes the base Profile classes from User since these are not required, since we cannot share base classes between Member and User, these weren't necessary.
2014-01-06 11:04:26 +11:00
Shannon ba5f2bc69d Ensure the old membership provider's count online members is implemented 2014-01-02 15:57:27 +11:00
Shannon 3fcdbe85b5 Fixes merge and build issues 2014-01-02 15:41:00 +11:00
Shannon 78336181ea Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Models/Membership/MembershipExtensions.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Security/MembershipProviderBase.cs
	src/Umbraco.Core/Services/IMemberService.cs
	src/Umbraco.Tests/App.config
	src/Umbraco.Tests/Membership/MembershipProviderBaseTests.cs
	src/Umbraco.Tests/TestHelpers/Entities/MockedMember.cs
	src/Umbraco.Tests/Umbraco.Tests.csproj
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web.UI/config/tinyMceConfig.Release.config
	src/Umbraco.Web.UI/config/tinyMceConfig.config
	src/Umbraco.Web.UI/umbraco_client/Application/UmbracoApplicationActions.js
	src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentControl.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/member.ascx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/create/userTasks.cs
	src/umbraco.controls/TabView.cs
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
2014-01-02 15:28:42 +11:00
Shannon 17883358b6 Fixes some issues with the User membership provider, updates user create dialog to also have an email address (which is required by membership), adds validation to the member and user create dialogs to ensure that the email address is validated to be a correcty formatted address. 2014-01-02 14:13:43 +11:00
Shannon fc0c6a1cd8 fixes stored password check with legacy encoding. 2013-12-31 13:27:47 +11:00
Sebastiaan Janssen 934d4020b2 Merge pull request #224 from Attackmonkey/Hackathon-2760
Fixes issue U4-2760, sorting installed packages
2013-12-29 06:30:09 -08:00
Sebastiaan Janssen 8b03ba4f42 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-12-29 15:26:44 +01:00
Sebastiaan Janssen 3caf84c63c Merge branch 'Hackathon-U4-3063' of https://github.com/Attackmonkey/Umbraco-CMS into Attackmonkey-Hackathon-U4-3063 2013-12-29 15:24:47 +01:00
Sebastiaan Janssen aae16f227e Merge pull request #227 from mattbrailsford/6.2.0-3454
Maintains tab sort order for doc type imports/exports.
2013-12-29 06:20:09 -08:00
Sebastiaan Janssen 443002cdde Merge pull request #273 from esunxray/patch-2
Update zh.xml
2013-12-29 06:19:30 -08:00
Sebastiaan Janssen 75150f0bfa Merge pull request #223 from Attackmonkey/Hackathon-2757
Fixes issue U4-2757 where generic properties are not ordered correctly.
2013-12-29 06:18:19 -08:00
Sebastiaan Janssen af73fd8b68 Merge pull request #218 from dipunm/U4-2551
Missing languages in RTE insert link dialog.
2013-12-29 06:11:53 -08:00
Sebastiaan Janssen 139df63ddf Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-12-29 15:08:10 +01:00
Sebastiaan Janssen a49058fe00 Fixes U4-510 Copy node makes multiple copies 2013-12-29 15:07:28 +01:00
Sebastiaan Janssen dcde00cec1 Merge pull request #213 from leekelleher/U4-3452
Fixes: U4-3452 Update the MIT License URL (Packager)
2013-12-29 05:58:02 -08:00
Sebastiaan Janssen bcc70f7a1e Merge pull request #197 from mkariti/u4-415
U4-415
2013-12-29 05:39:30 -08:00
Sebastiaan Janssen 32bc2f1d69 merge ismailmayat-UK-Festival 2013-12-29 14:34:54 +01:00
Sebastiaan Janssen 4d3f67885a Fixes U4-1076 Apostrophes in document type description are shown preceded/escaped by a slash in the Create Node dialog 2013-12-29 14:12:23 +01:00
Sebastiaan Janssen a269e9d426 Merge branch 'BatJan-master' into 6.2.0 2013-12-29 13:51:54 +01:00
Sebastiaan Janssen af5a382f93 Merge branch 'master' of https://github.com/BatJan/Umbraco-CMS into BatJan-master 2013-12-29 13:51:18 +01:00
Sebastiaan Janssen 90174a39e3 Merge branch 'enkelmedia-patch-2' into 7.0.2 2013-12-29 12:41:12 +01:00
Sebastiaan Janssen 4d9f9c890d Merge branch 'patch-2' of https://github.com/enkelmedia/Umbraco-CMS into enkelmedia-patch-2 2013-12-29 12:40:46 +01:00
Sebastiaan Janssen dad910b8ab Merge pull request #212 from mattbrailsford/6.2.0-1004
Added ValidateRequest="false" on package installer page to allow user co...
2013-12-28 03:50:10 -08:00
Shannon 8a70c440f2 Added many more unit tests for the membership provider base class and fixed some logic inconsistencies. 2013-12-28 18:55:43 +11:00
Shannon 07f3de8b67 updates port number 2013-12-28 14:42:34 +11:00
Shannon 0955b0c474 fixes proj ref 2013-12-28 14:37:53 +11:00
Shannon 57d1ff20fd Improves test suite performance - this should shed a few minutes off of the test runs. 2013-12-28 14:35:43 +11:00
Shannon fbdb1d5d6c Fixes: U4-3942 Cannot configure the request if there is not content assigned - exception
Conflicts:
	src/Umbraco.Tests/Umbraco.Tests.csproj
2013-12-28 14:01:08 +11:00
Shannon b924b06062 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2013-12-28 13:57:53 +11:00
Shannon fb029861cf Fixes: U4-3942 Cannot configure the request if there is not content assigned - exception 2013-12-28 13:57:20 +11:00
perploug 4eb19bd26c Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2013-12-27 22:03:30 +01:00
perploug 71a07060a9 removes debugging output from treesource preval editor 2013-12-27 21:55:59 +01:00
Shannon edaa5ebd43 Lots more unit tests for the membership providers and some other fixups - have a new failing test as i need to sort out salting issue with encrypted passwords. 2013-12-24 14:03:18 +11:00
Shandem c12b270511 Merge pull request #268 from james-melville/6.2.0
Fixes: U4-3814 - 6.1.6 XSS vulnerability in backoffice
2013-12-23 16:14:52 -08:00
Shannon c8fa2b3880 Merge branch 'abjerner-patch-1' into 6.2.0
Conflicts:
	src/Umbraco.Web/PublishedContentExtensions.cs
2013-12-24 11:08:48 +11:00
Shannon d474481cba publicizes MemberService so that devs can use the events on nightly builds for now. 2013-12-24 11:03:20 +11:00
Shannon 62e3ab27fe Adds comments to EntityController code to use UmbracoHelper 2013-12-24 10:58:11 +11:00
Shannon 86c008fc8c Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2013-12-24 10:49:01 +11:00
Shannon 154ee39755 Fixes: U4-3907 Token cookie issues in 7.0.1 2013-12-24 10:48:32 +11:00
Shannon 63ca9f210b updates version # 2013-12-24 10:48:14 +11:00
Shannon 1c139b685a updates legacy membership provider to use efficient paging. 2013-12-20 18:12:54 +11:00
Shannon 7a8b3dc9bc Updated the member service/repo to have paged queries and results which use db paging for maximum efficiency (of course only works for things like email, username but those are 2 specific things that are needed by the membership provider) 2013-12-20 18:11:12 +11:00
Shannon a4dde1948f Implements the member count methods on the member service and adds unit tests. 2013-12-20 16:20:32 +11:00
Shannon 0f68818a19 Updated member service with the newer property value queries and added unit tests for all of them 2013-12-20 15:44:53 +11:00
Shannon 414b65b269 More WIP on the membership providers - both new and old. They are now both working with the same up-to-date logic and base classes. Updated the interface definitions on the member services to support the membership provider queries - now to implement the logic. 2013-12-20 14:01:10 +11:00
perploug 28c2aa1195 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2013-12-19 11:32:17 +01:00
perploug 391c778b80 Minor refactor of treesource internal model 2013-12-19 11:32:09 +01:00
perploug f2c2b7590b Get Entity by Query WIP 2013-12-19 11:31:55 +01:00
perploug 22d6981ab0 Fixes small issue with language loading 2013-12-19 11:06:10 +01:00
Stephan 4dbe317c03 Merge pull request #274 from esn303/U4-3908
Fix for U4-3908 YSOD on frontend after being logged out
2013-12-19 01:54:24 -08:00
Marc dc727ba0de Fix for U4-3908 YSOD on frontend after being logged out 2013-12-19 10:41:44 +01:00
Shannon 2dd04799b2 WIP membership provider updates 2013-12-19 18:33:25 +11:00
esunxray 1c901e00cc Update zh.xml
add line <key alias="resetPassword">重设密码</key>
2013-12-19 14:53:50 +08:00
Shannon d7207f7c2a Fixes some merge issues 2013-12-19 16:09:33 +11:00
Shannon a5828a2c3e Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web.UI/umbraco/controls/GenericProperties/GenericProperty.ascx
2013-12-19 15:59:50 +11:00
Shandem c589c741e8 Merge pull request #220 from leekelleher/U4-2006
Fixes: U4-2006 Domain.GetDomain(string DomainName) is case-sensitive
2013-12-18 20:56:03 -08:00
Shandem c8923cbc27 Merge pull request #221 from AnthonyCogworks/U4-2272
Replaced HttpContext.Current.Cache with HttpRuntime.Cache
2013-12-18 20:54:57 -08:00
Shandem 063f405a06 Merge pull request #230 from Yawka/U4-2772
U4 2772
2013-12-18 20:51:17 -08:00
Shannon 68a25bb5b1 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-19 15:50:03 +11:00
Shandem addfbcf2a7 Merge pull request #232 from Yawka/U4-2034
U4 2034
2013-12-18 20:48:52 -08:00
Shandem 8ee133bb75 Merge pull request #239 from OptimisticCoder/U4-451
U4-451 Inconsistent line endings in template files created by Umbraco
2013-12-18 20:46:46 -08:00
Shandem fa1185cbd8 Merge pull request #241 from OptimisticCoder/U4-3039
U4-3039 Import Document Type leaves files in App_Data
2013-12-18 20:43:15 -08:00
Shandem 68e0a414a0 Merge pull request #245 from esn303/patch-1
Fixed minor typos
2013-12-18 20:39:43 -08:00
Shannon 6ddef7df27 Merge branch 'esn303-patch-2' into 7.0.2 2013-12-19 15:36:59 +11:00
Shannon 66f572b642 Merge branch 'patch-2' of https://github.com/esn303/Umbraco-CMS into esn303-patch-2 2013-12-19 15:36:44 +11:00
Shannon a7a1730898 Merge branch 'kalletoxic-7.0.0' into 7.0.2 2013-12-19 15:31:26 +11:00
Shannon 155e7338cf Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web.UI/umbraco/masterpages/umbracoDialog.Master
	src/Umbraco.Web.UI/umbraco_client/tinymce3/plugins/autolink/editor_plugin_src.js
	src/Umbraco.Web.UI/umbraco_client/tinymce3/plugins/table/editor_plugin_src.js
	src/Umbraco.Web.UI/umbraco_client/tinymce3/tiny_mce_popup.js
2013-12-19 15:30:17 +11:00
Shandem 89860bd786 Merge pull request #261 from esunxray/patch-1
Update zh.xml
2013-12-18 20:26:48 -08:00
Shandem b5cfefa052 Merge pull request #265 from Jeavon/U4-3247
Fixes U4-3247 - TinyMce v3 doesn't work with IE11
2013-12-18 20:22:19 -08:00
Shannon b2c0f3c35a some file formatting 2013-12-19 15:21:02 +11:00
Shannon d5e0c6ff68 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	.gitignore
	src/Umbraco.Tests/PublishedContent/PublishedContentExtensionTests.cs
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web.UI/umbraco/Umbraco.aspx.designer.cs
	src/Umbraco.Web.UI/umbraco/editContent.aspx
	src/Umbraco.Web.UI/umbraco/login.aspx
	src/Umbraco.Web.UI/umbraco/masterpages/umbracoDialog.Master
	src/Umbraco.Web.UI/umbraco/masterpages/umbracoPage.Master
	src/Umbraco.Web.UI/umbraco/umbraco.aspx
2013-12-19 15:08:19 +11:00
Shannon a43f4b7b7f Completes: U4-1521 Updated back office to use ClientDependency bundles for common files 2013-12-19 15:05:05 +11:00
Shandem 7ce3949852 Merge pull request #209 from ProNotion/U4-1521
U4 1521
2013-12-18 18:37:02 -08:00
Shandem 4862419744 Merge pull request #198 from craigacronin/U4-1891
Fixed as per issue comments, but also implemented for another 3 overload...
2013-12-18 18:33:57 -08:00
Shannon 6b810c89f6 un-ignores PublishedContentExtensionTests 2013-12-19 13:28:17 +11:00
Shandem 89b0a2fd89 Merge pull request #170 from lars-erik/6.2.0_fix_publishedcontentextensiontests_sidebysidefriendly
Should make the PublishedContentExtensionTests green when ran together w...
2013-12-18 18:25:38 -08:00
Shannon 73c479c843 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-19 13:23:22 +11:00
Shannon 8aceae9880 re-formats some code, simplifies calls using InvariantEquals extension method 2013-12-19 13:22:33 +11:00
Shandem 384d4d60f1 Merge pull request #168 from stevetemple/6.1.6-multiple-action-route-issue
Fix error when multiple routes have the same controller
2013-12-18 18:18:44 -08:00
Shannon 67caf81a74 adds a couple of null checks. 2013-12-19 13:14:38 +11:00
Shannon 763ab26446 Updates packaging service to not export empty properties. 2013-12-19 13:13:13 +11:00
Shannon 67a8fa5f07 Merge branch 'wtct-U4-3091' into 6.2.0 2013-12-19 13:05:27 +11:00
Shannon f7b61d09e2 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Profiling/ProfilingViewEngine.cs
2013-12-19 12:53:32 +11:00
Shannon 5c59317bf8 changes casing of col names 2013-12-19 12:52:37 +11:00
Shannon a2ec53dd4f Merge branch 'wtct-U4-3071' into 6.2.0 2013-12-19 12:50:42 +11:00
Shannon db78c78df2 fixes some merge issues with view engine wrapping PR. 2013-12-19 12:45:46 +11:00
Shannon 4558549d5a Fixes appendformat issue 2013-12-19 12:40:41 +11:00
Shannon d98801d5d1 Merge branch '6.2.0' of https://github.com/mortenbock/Umbraco-CMS into mortenbock-6.2.0
Conflicts:
	src/Umbraco.Web/WebBootManager.cs
2013-12-19 12:35:33 +11:00
Shandem de9ecf6afc Merge pull request #143 from IDisposable/patch-1
Added contextualKeyBuilder optional argument to allow the key used for cachin...
2013-12-18 17:32:26 -08:00
Shandem 702790bf77 Merge pull request #144 from IDisposable/patch-2
Make CacheHelperExtensions public so we can call CachedPartialView and C...
2013-12-18 17:30:01 -08:00
Shannon 3a1dbc778b Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
2013-12-19 12:29:02 +11:00
Shannon c912e80134 modified media service tests to not have to create data in teh base tests 2013-12-19 12:27:21 +11:00
Shannon 098c856138 Merge branch '6.2.0' of https://github.com/sniffdk/Umbraco-CMS into sniffdk-6.2.0
Conflicts:
	src/Umbraco.Tests/Umbraco.Tests.csproj
2013-12-19 12:11:33 +11:00
Shannon b45306e1ff Merge branch '6.2.0' of https://github.com/dprothero/Umbraco-CMS into dprothero-6.2.0
Conflicts:
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
2013-12-19 11:59:22 +11:00
Shannon 3499f39970 Merge branch 'kipusoep-patch-1' into 6.2.0 2013-12-19 11:49:30 +11:00
Shannon 4fb61be092 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-19 11:46:59 +11:00
Shannon 9115aa1a6d merge issue with proj file 2013-12-19 11:46:31 +11:00
Shannon f98b81116c Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web/Umbraco.Web.csproj
2013-12-19 11:45:24 +11:00
Shannon 904cbbb906 missing proj file update 2013-12-19 11:41:26 +11:00
Shannon c0380e491b Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web.UI/umbraco/controls/Tree/TreeControl.ascx
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/Tree/TreeControl.ascx.cs
	src/umbraco.controls/TreePicker/SimpleContentPicker.cs
2013-12-19 11:41:03 +11:00
Shannon 8656d3e4b9 adds some null checks, removes old unused webforms files for tree control 2013-12-19 11:35:53 +11:00
Shannon 40988b4655 Merge branch 'select-parent-on-movecopy' of https://github.com/pynej/Umbraco-CMS into pynej-select-parent-on-movecopy
Completes: U4-3920 Move/Copy/Content-Picker time saver - pre-selects current node
2013-12-19 11:25:54 +11:00
Shannon 8a8b69a442 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/umbraco/plugins/tinymce3/GoogleSpellChecker.cs
2013-12-19 11:14:06 +11:00
Shannon 06dbea84d8 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-12-19 11:06:11 +11:00
Shannon f54cf32057 Converted spell checker deserialization to json.net and changed the deserialized object to internal with correct naming conventions. 2013-12-19 11:06:00 +11:00
Shannon 64dbf0207b Merge branch 'DougMac-6.1.4' into 6.2.0 2013-12-19 10:38:56 +11:00
Shannon f743830167 Fixes: U4-3911 Datatypes changes their uniqueID on first save 2013-12-19 10:27:18 +11:00
Stephan 206c88105e Left some Console.WriteLine statements uncommented 2013-12-18 17:50:47 +01:00
Morten Christensen 3177b979d3 Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-12-18 10:00:47 +01:00
Shannon 0addd719d3 fixed merge issues 2013-12-18 18:14:37 +11:00
Shannon 662dfb37d3 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Services/IMemberService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Core/Umbraco.Core.csproj
2013-12-18 18:11:56 +11:00
Shannon 4ab32dd270 moves classes into sep files 2013-12-18 18:09:54 +11:00
Shannon fec55e9d1c Updates IMemberService with methods to search on string properties with an option to define how to match the string property, adds all supporting unit tests. 2013-12-18 17:37:46 +11:00
Shannon a21aa079ff Adds ability to use the query builder with string matches based on an NText column 2013-12-18 17:22:00 +11:00
Shannon ef4246478d Fixes: U4-2294 6.1.0: umbracoServer table can't be created on MySQL <5.6.5 2013-12-18 15:30:40 +11:00
Shannon dda538d1fc Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-17 16:14:33 +11:00
Shannon 137d859532 backports missing logic and tests from 7 that I overlooked. 2013-12-17 16:13:38 +11:00
Shannon d6d80ae037 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Constants-Conventions.cs
	src/Umbraco.Core/Models/ContentExtensions.cs
	src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Relators/PropertyDataRelator.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Services/IMemberService.cs
	src/Umbraco.Core/Services/IMemberTypeService.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/Umbraco.Core/Services/MemberTypeService.cs
	src/Umbraco.Core/Services/ServiceContext.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs
	src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
	src/Umbraco.Tests/TestHelpers/Entities/MockedMember.cs
	src/Umbraco.Tests/Umbraco.Tests.csproj
2013-12-17 16:03:27 +11:00
Shannon 82b2821e27 Gets the members services ensuring members xml is being handled correctly, fixes issue with the static variable holding the default member type properties (this was then persisted in mem and then reused across all member types). Added more unit tests to verify all. 2013-12-17 15:40:47 +11:00
Shannon b270cefacc Upgrading member repositories and services with tests 2013-12-17 14:53:21 +11:00
Shannon 8b064fc2ec Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/Models/Member.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
	src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs
	src/Umbraco.Tests/TestHelpers/Entities/MockedMember.cs
2013-12-17 12:39:45 +11:00
Shannon b4e984fe6a adds/updates unit tests for member and member type repository 2013-12-17 12:38:11 +11:00
Shannon 1a3339d485 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs
2013-12-17 11:42:50 +11:00
Shannon f62e4fa973 adds/updates member type repo tests 2013-12-17 11:42:03 +11:00
Shannon ee8050f38f Fixes ContentTypeBase event assignment issue - an event handler was added for every property type added - that was not correct. 2013-12-17 11:35:56 +11:00
Stephan 8cb0f5762c Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 17:11:15 +01:00
Stephan 287596220a Merge remote-tracking branch 'origin/7.0.2' into 7.0.2 2013-12-16 17:10:42 +01:00
Stephan f870ee18d4 U4-3710 - fix merge 2013-12-16 17:10:30 +01:00
Stephan b506b5c8e9 U4-3710 - bugfix 2013-12-16 17:01:35 +01:00
Morten Christensen d9e843f0ba Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-12-16 09:48:18 +01:00
Shannon 805c1dfb5b Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 19:05:44 +11:00
Shannon 66dd0d073c backports the member type service updates 2013-12-16 19:05:03 +11:00
Shannon f269b1931d Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 19:03:29 +11:00
Shannon 29c22cc4b5 exposes repository service 2013-12-16 19:02:53 +11:00
Shannon 76695fc7b2 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 18:44:52 +11:00
Shannon e29031a2c4 Back ported relationship repo/service updates 2013-12-16 18:44:11 +11:00
Shannon 9b2b8e8166 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 18:24:12 +11:00
Shannon 3ff0cca033 back ports entity service updates 2013-12-16 18:23:40 +11:00
Shannon aa398b4f36 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 18:18:23 +11:00
Shannon fe16cc91fa back ports packaging service updates 2013-12-16 18:17:30 +11:00
Shannon 7e6fdcb05e back ported template repo and file service updates 2013-12-16 18:10:44 +11:00
Shannon ae54f34bcf Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 17:48:01 +11:00
Shannon d1e071b9cb adds additional unit tests for the data type service to include pre-value handling. 2013-12-16 17:47:40 +11:00
Shannon 3e253f9c19 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 17:18:15 +11:00
Shannon 2ce952bdbb backports data type service updates and fixes unit tests with correct seeding value. 2013-12-16 17:17:23 +11:00
Shannon b8f5d1c42c Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/umbraco.editorControls/MultiNodeTreePicker/MNTP_DataEditor.cs
2013-12-16 16:29:28 +11:00
Shannon 6a9b8d5540 Fixes a unit test issue with the mntp editor initialization. 2013-12-16 16:27:59 +11:00
Shannon fdc9261399 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2 2013-12-16 16:21:47 +11:00
Shannon 64b247157c Merge commit '0f25029ff6531095782a567bf054d6bc209e2a56' into 7.0.2
Conflicts:
	src/Umbraco.Core/Cache/DictionaryCacheProviderBase.cs
	src/Umbraco.Core/Cache/HttpRequestCacheProvider.cs
2013-12-16 16:21:38 +11:00
Shannon fcacc1bd71 Merge commit '060e584503039ac020f79602ae9565d7ee0531bb' into 7.0.2 2013-12-16 16:21:06 +11:00
Shannon 68d581ac82 fixes build (merge issue) 2013-12-16 16:18:44 +11:00
Shannon af86a5d7b1 backporting imediaservice changes 2013-12-16 16:04:37 +11:00
Shannon 0f25029ff6 Fixed typo 2013-12-16 16:02:34 +11:00
Shannon 060e584503 backported IContentService updates 2013-12-16 15:57:59 +11:00
Shannon 743c0bb31c Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-12-16 14:19:10 +11:00
Shannon 4bac3e19fe Fixes up webbootmanager with new cachehelper updates. 2013-12-16 14:18:58 +11:00
Shannon b86cddda94 fixes up unit tests 2013-12-16 13:55:46 +11:00
Shannon 11103c0bc5 proj file 2013-12-16 13:23:07 +11:00
Shannon 8210702474 removes the xquery tests - we don't need these and r# keeps wanting to run them 2013-12-16 13:22:52 +11:00
Shannon a42b660648 Backporting the cachehelper and associated cache classes. 2013-12-16 13:19:10 +11:00
Shannon f11d4fbedd Worked on the application cache, added request cache, changed some stuff over to be interfaces, added unit tests suite (need mroe) to test all caching providers.
Conflicts:
	src/Umbraco.Core/Cache/CacheProviderBase.cs
	src/Umbraco.Core/Cache/HttpRuntimeCacheProvider.cs
	src/Umbraco.Core/Cache/NullCacheProvider.cs
	src/Umbraco.Core/Cache/StaticCacheProvider.cs
2013-12-16 12:51:02 +11:00
Shannon 9105c08a4c getting membership provider to the same state as v7 2013-12-16 12:20:38 +11:00
Shannon 71b3ea2e56 Merge branch '7.0.2' of https://github.com/umbraco/Umbraco-CMS into 7.0.2 2013-12-16 11:19:57 +11:00
perploug 33b3032b30 Merge pull request #269 from hartvig/7.0.1
Fixes links in help
2013-12-14 03:02:28 -08:00
Niels Hartvig 31e5ed7b1b Fixes links in help 2013-12-14 11:48:08 +01:00
Stephan 98c8d637f4 Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts:
	src/Umbraco.Core/DatabaseContext.cs
	src/Umbraco.Core/Strings/DefaultShortStringHelper.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/install/utills/LegacyClasses.cs
2013-12-13 13:05:10 +01:00
Stephan 8a3eae9ea6 Merge remote-tracking branch 'origin/7.0.1' into 7.0.2 2013-12-13 12:55:46 +01:00
Stephan 5aec753859 U4-3710, -3732 - Fix default ShortStringHelper 2013-12-13 12:20:57 +01:00
james-melville eeaa9166ac Fixes: U4-3814 - 6.1.6 XSS vulnerability in backoffice 2013-12-13 10:25:32 +00:00
Shannon 751ace1168 Merge branch '6.2.0-membershipprovider' into 6.2.0
Conflicts:
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
2013-12-13 17:17:24 +11:00
Shannon 51da5343ea Fixes installation issue with rebuilding media cache
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web.UI/config/trees.config
	src/Umbraco.Web/Umbraco.Web.csproj
2013-12-13 17:07:29 +11:00
Shannon 34df5009e0 Upgraded installer to do a two part install - first install then if an upgrade is required do the upgrade in a second call - this way we can have the progress bar update since the media xml installer can take some time. 2013-12-13 16:58:21 +11:00
Shannon d4db7d9523 Merge branch '7.0.1' into 7.0.2 2013-12-13 16:54:39 +11:00
Shannon 6a5a320a22 doh, didn't mean to commit this config change 2013-12-13 16:54:16 +11:00
Shannon 62cf1cd87d Fixes: U4-3844 U7 - System.OutOfMemoryException: Out of memory - uploading 11Mb image 2013-12-13 16:50:11 +11:00
Shannon ebf22d155e Updated the migration to just remove the data it needs instead of rebuilding as that would take a very long time for some installs. 2013-12-13 12:53:02 +11:00
Shannon 01644e8f6c Upgraded installer to do a two part install - first install then if an upgrade is required do the upgrade in a second call - this way we can have the progress bar update since the media xml installer can take some time. 2013-12-13 12:34:57 +11:00
Shannon f2be1669bf Fixes installation issue with rebuilding media cache 2013-12-13 12:02:32 +11:00
Anders Bjerner e17b5e6a7b Update PublishedContentExtensions.cs
Added overloaded extension methods for Next() and Previous() to take a delegate (eg. lambda expression) as a second parameter. The methods are based on this thread by Jeavon Leopold: http://our.umbraco.org/forum/developers/razor/46832-Filtered-Next()-and-Previous()-v7-UmbracoHelperMVC

The code is tested in 7.0.0, but since it only relies on the existing Next() and Previous() methods, it should work in 6.1.x and 7.1.1 as well.
2013-12-12 15:32:52 +01:00
perploug 24911bffe2 adds version number to help dialog 2013-12-12 12:28:43 +01:00
perploug d343340f56 Adds missing language keys 2013-12-12 12:28:25 +01:00
perploug 0c82f78c43 Upgrades tinymce lib to support IE11 2013-12-12 12:27:49 +01:00
perploug 5cf3a619f7 Fixes: U4-3841 sorting picked media items with the multiple media picker clears the selection 2013-12-12 09:16:02 +01:00
Shannon 49550b410a Ensures Integer and Email validators are added on startup as manifest validators. 2013-12-12 18:28:45 +11:00
Shannon b9df55ef98 fixing more tests 2013-12-12 18:09:48 +11:00
Shannon e456c44b46 Fixing some unit tests 2013-12-12 17:57:50 +11:00
Shannon 61315a8d83 Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Tests/ObjectExtensionsTests.cs
2013-12-12 17:53:27 +11:00
Shannon a1c65f0518 Gets that naggy unit test passing 2013-12-12 17:52:03 +11:00
Shannon 49c8313c9e Fixes: U4-3638 - U7 - Preview mode seems permanent and shows incorrect content on front of website, when using same browser as admin login 2013-12-12 17:30:27 +11:00
Shannon 141f9b6ea1 ensures the cssclass is set for selecting media items (oops, had removed that before) 2013-12-12 16:23:33 +11:00
Shannon d223ee97cd Fixes: U4-3840 MediaPicker doesn't show images when there are also folders inside of the folder being viewed
and moves some of the util classes into their own files, adjusted media picker's icon sizes too to make it more readable.
2013-12-12 16:16:59 +11:00
Shannon a098e49840 Fixes: U4-3835 U7(nightly214) - Umbraco.Field not working 2013-12-12 14:41:01 +11:00
Shannon 8785239964 Finalizes the implementation of getting the menu items rendering for child of listview items for both content and media. 2013-12-12 14:10:03 +11:00
Shannon 74a691ac3a Removes all the console.log calls 2013-12-12 14:09:03 +11:00
Shannon 38c1669e57 Gets content items that are children of listviews to query for their affiliated tree-node and display the action menu. 2013-12-12 13:27:33 +11:00
Shannon 58f0d1a464 fixes null check on HttpQueryStringFilterAttribute and adds ability to specify parameters in the GetUmbracoApiService urlhelper extensions. 2013-12-12 13:26:53 +11:00
Shannon f30740bd49 grid is working nicely now with a couple tests 2013-12-12 11:38:34 +11:00
perploug 3de3ccad00 Fixes related links word-breaking 2013-12-11 13:32:17 +01:00
perploug 75502ca18c Compact form less adjustments 2013-12-11 13:09:45 +01:00
perploug c531c36cab adds target to RTE link picker 2013-12-11 13:09:25 +01:00
perploug 387e64acac Fixes wrong app_plugin dialog path
Changes /app_plugin/folder/umbraco to /app_plugins/folder/backoffice
which the way we documented it
2013-12-11 09:47:56 +01:00
perploug 91a5d55183 Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-11 09:44:37 +01:00
Shannon 9819318060 Fixes up the auth http post 2013-12-11 18:53:00 +11:00
Shannon 2e990a7869 All working now, Fixes: U4-3722 Images in Media folder are huge 2013-12-11 18:05:04 +11:00
Shannon ed7175192b images that are smaller than the min display size will now just be centered in the square and are no longer scaled up. 2013-12-11 17:53:19 +11:00
Shannon 4e63bb38f3 margins are now working nicely. 2013-12-11 16:44:20 +11:00
Shannon d61b9bfdd7 Awesome progress on the photo folder changes to have correctly calculated images sizes - now just need to get margins going and centering of images that are smaller than the min. 2013-12-11 14:34:04 +11:00
Shannon 0de53308f5 Fixes some issues with app startup/authentication and when events fire 2013-12-11 12:01:22 +11:00
Shannon 85bf47df82 Fixes FileUploadPropertyEditor and IFileSystem usage 2013-12-11 09:05:38 +11:00
Shannon 791c3f5208 added missing view file 2013-12-11 08:51:07 +11:00
perploug bc7876681b docs: dialogservice 2013-12-10 15:31:08 +01:00
perploug 68aa3f7b1b broke touch detection, reverting 2013-12-10 12:15:40 +01:00
perploug 976531fe7e Removes missing file from web.ui.csproj 2013-12-10 12:08:13 +01:00
perploug ded7350d74 Docs: util.service.js 2013-12-10 11:23:54 +01:00
perploug e3594bf6fc Fixes: U4-3723 Only possible to link to content (not media) in Richtext editor
Adds file link button to link dialog, that proxies through the standard
media dialog
2013-12-10 11:20:00 +01:00
Shannon 6a6d9ec7b0 Updates the image helper and imagescontroller to never scale images larger than what they are. 2013-12-10 18:24:20 +11:00
Shannon 200a400fc5 put the row style on to the photo folder, without it the image widths are not calculated correctly and span over a row (depending on your current screen size). Since the currently implementation isn't really responsive anyways this at least makes it look better. We can later detect size changes and re-calc how they should be laid out. Updates the JS code to be more readable by humans. 2013-12-10 18:23:45 +11:00
Shannon 76c807a4e7 Fixes latest IFileSystem fix for image uploading 2013-12-10 16:48:57 +11:00
Shannon 985db6d2e3 div tag not closed on umb-photo-folder 2013-12-10 16:20:22 +11:00
Shannon 7894fcfc91 Fixes: U4-3714 Media tree doesn't get refreshed after upload 2013-12-10 15:10:11 +11:00
Shannon f41b0ff4b5 removes some debug logging 2013-12-10 14:15:23 +11:00
Shannon d0a5892f9f Fixes: U4-3796 No media macro parameter in v7 2013-12-10 14:13:56 +11:00
Shannon c0f4950270 Fixes: U4-3826 It is possible in some cases to insert a macro inside a macro inside the rte 2013-12-10 14:11:36 +11:00
Shannon 1d9c3b1a79 Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Core/Services/ContentService.cs
	src/Umbraco.Web/umbraco.presentation/library.cs
2013-12-10 12:59:29 +11:00
Shannon c5047148b3 Fixes legacy media business logic to return null when calling ToXml if the media item is trashed - this makes it consistent with how content works and also prevents being able to show the media on the front-end when it is trashed. Fixes up how the MediaService rebuilds the XML to make sure it's transactional based. Fixes: U4-3820 cached media xml is not cleared from the cmsContentXml table when recycled
Conflicts:
	src/Umbraco.Web/umbraco.presentation/library.cs
2013-12-10 12:56:31 +11:00
Shannon a6b3233c10 Fixes legacy media business logic to return null when calling ToXml if the media item is trashed - this makes it consistent with how content works and also prevents being able to show the media on the front-end when it is trashed. Fixes up how the MediaService rebuilds the XML to make sure it's transactional based. Fixes: U4-3820 cached media xml is not cleared from the cmsContentXml table when recycled 2013-12-10 12:53:33 +11:00
Shannon 9ec1f9b3f9 Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Web.UI/install/Default.aspx.cs
2013-12-10 11:55:32 +11:00
Shannon ed2126eef9 ensures media xml cache is rebuilt on upgrade 2013-12-10 11:54:18 +11:00
Shannon ce4b56895e fixes installer login check 2013-12-10 11:51:41 +11:00
Shannon eaac76cdc1 Fixes: U4-3821 Infinite redirect loop when upgrading from 7.0.0 to 7.0.1 and ensures media cache is rebuilt on upgrade 2013-12-10 11:51:03 +11:00
Shannon bffe52e060 Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Tests/PluginManagerTests.cs
2013-12-10 10:00:37 +11:00
Shannon 94db371234 Ensures macro and urls are not parsed in the ItemRenderer when a content item is assigned since that parsing will occur with the value converters 2013-12-10 09:59:13 +11:00
Shandem b12cd81c01 Merge pull request #264 from mvanhelmont/patch-1
fix /{localLink:ID}
2013-12-09 14:53:48 -08:00
Sebastiaan Janssen 103e226b51 Merge pull request #215 from dipeshhirani/U4-752
U4-752 Add culture invariant languages to create language dialog
2013-12-09 13:40:21 -08:00
Sebastiaan Janssen 208cf8a01d Bump version and try to make the buildserver happy 2013-12-09 17:55:37 +01:00
perploug 1f81107485 Fixes: U4-3653 Bottom "Action" links inaccessible 2013-12-09 15:24:38 +01:00
perploug bf5042e3d0 fixes: U4-3718 Sorting a list view by "Updated by" throws an exception
It tries to sort the result on UserBasic, made userbasic implement
ICompareble
2013-12-09 14:32:16 +01:00
perploug 15b55f2b36 Fixes: U4-3631 Disable preview button when there is no template assigned, since there is nothing to preview then... 2013-12-09 14:17:51 +01:00
Shannon 57f2250f13 Fixes: U4-3820 cached media xml is not cleared from the cmsContentXml table when recycled 2013-12-09 16:56:02 +11:00
Shannon f15682ef60 Fixes: U4-3820 cached media xml is not cleared from the cmsContentXml table when recycled 2013-12-09 16:35:12 +11:00
Shannon 1b1ec04e7c Ensures macro and urls are not parsed in the ItemRenderer when a content item is assigned since that parsing will occur with the value converters 2013-12-09 15:42:38 +11:00
Shannon 049c65a2c7 Fixes: U4-3799 @Umbraco.Field("bodyText") returns {LocalLink:xxx} 2013-12-09 15:20:11 +11:00
Shannon d50aa38c31 Ooops fixes the rte macro parser to not return empty when no macros are found 2013-12-09 14:01:34 +11:00
Shannon 1531f979a2 fixes: U4-3816 Creating member with @ in login results in SQL parameter error 2013-12-09 13:19:59 +11:00
Shannon 69ffecd686 Fixes: U4-3741 GetMemberFromLoginNameAndPassword Always Return Null 2013-12-09 13:08:06 +11:00
Shannon 6ec297aaaf Merge remote-tracking branch 'origin/6.2.0' into 7.0.1 2013-12-09 12:49:13 +11:00
dipeshhirani bb1edd2051 remove commented line 2013-12-08 16:23:03 +00:00
Sebastiaan Janssen 14790559cb Merge pull request #140 from pynej/search-node-type
Add node type to search results
2013-12-08 07:56:50 -08:00
Sebastiaan Janssen 97457087c7 Merge pull request #266 from greystate/patch-1
Fix a typo/grammar error in da.xml
2013-12-08 06:21:31 -08:00
perploug 8469d18a0e fixes search keyboard support 2013-12-06 15:09:39 +01:00
perploug da3269e970 Fixes: U4-3426 Can't delete any contentnode, media, document type or template from back end, Umbraco 7.0.0-RC
Replaces $http.delete with $http.post enables httppost on the
server-side, its not the best solution, but has way fewer unknowns then
adding extensive VERB and origin support in the web.config
2013-12-06 13:12:18 +01:00
perploug b2b0afde4b Fixes broken copy/move dialog 2013-12-06 12:17:12 +01:00
perploug ff849ab912 Sets umbracoVersion to 7.0.1 2013-12-06 12:17:01 +01:00
perploug 97b8a5000a Fixes broken installer due to moving app-settings back into web.config 2013-12-06 12:16:36 +01:00
perploug f59489a5cb Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-06 10:07:29 +01:00
perploug b03427cabc Fixes: U4-3806 Prevalue validation run all field validators against all fields 2013-12-06 10:07:04 +01:00
Shannon 2eb5c08825 Fixing: U4-3686 Umbraco 7 - Rich Text Editor and Macro Issues + fixed up the per-controller webapi configuration and more fixes to loading propertyeditors/param editors, this saves a assembly scan. 2013-12-06 15:01:58 +11:00
Shannon 37eb66510f Fixes: U4-3505 Sometimes macro parameter types are not resolved during startup 2013-12-06 14:07:29 +11:00
Shannon dc7c7304ad Fixes: U4-3505 Sometimes macro parameter types are not resolved during startup 2013-12-06 14:06:53 +11:00
Shannon 8327b8aa0e Completes: U4-3792 Move appSettings, connectionStrings back to web.config 2013-12-06 11:52:47 +11:00
Shannon 7759249963 Fixes: U4-2967 Inline macros error out when trying to access the Model 2013-12-06 11:22:16 +11:00
Shannon 9d9070c979 fixes user service query to work with mssql and mysql 2013-12-06 10:56:49 +11:00
Shannon feb1a14650 Merge remote-tracking branch 'origin/6.2.0' into 7.0.1 2013-12-06 10:27:40 +11:00
Shannon 4cb4ff0617 Fix MySQL migrations.
Conflicts:
	src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagRelationsTable.cs
2013-12-06 10:26:32 +11:00
Shannon 9e1d6dbf9b Merge branch 'Bitmapped-7.0.0' into 7.0.1 2013-12-06 10:22:07 +11:00
perploug 82ec2d28ef WIP on media upload tree refresh 2013-12-05 15:28:32 +01:00
perploug 66383c6f16 merge 2013-12-05 13:11:17 +01:00
Chriztian Steinmeier dc60eb8383 Fix a typo/grammar error in da.xml 2013-12-05 13:06:24 +01:00
perploug 9733c5c031 Folderbrowser tree sync 2013-12-05 13:04:28 +01:00
Shannon 0c0c08ec98 Changes how we set the csrf header for jquery, changed to global and ensures that it is lazily resolved to always ensure it has the newest value 2013-12-05 22:18:07 +11:00
Shannon d7d800331b Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-05 22:07:19 +11:00
Shannon 4346578160 Ensures csrf token is set for PostFile on the media controller for bulk file uploads 2013-12-05 22:06:57 +11:00
perploug cfe0b2f9e5 fixes failing eventsService tests 2013-12-05 11:30:08 +01:00
Shannon d7d7d88ecc Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-05 21:23:53 +11:00
Shannon fd34a9cd29 fixes demo app loader to load the correct bootstrap 2013-12-05 21:23:31 +11:00
Jeavon Leopold 3f1b057f45 Fixes U4-3247 - v6.1.6 RTE view/edit HTML doesn't work with IE 11 by upgrading TinyMce to v3.5.10 2013-12-05 09:06:01 +00:00
perploug 6da1a5adb3 Fixes: U4-3405 Umbraco 7 RC admin login - remember password 2013-12-05 09:22:32 +01:00
Shannon 23cf5b544a Moved image handling to diff controller since it doesn't support the csrf header, need to test more in an hour (WIP) 2013-12-05 19:06:55 +11:00
Shannon b0cde715da fixes merge issue 2013-12-05 18:51:05 +11:00
Shannon 366ca11490 Merge branch 'lars-erik-7.0.azurestorage' into 7.0.1 2013-12-05 18:45:21 +11:00
Shannon a1a985e4a8 Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-05 18:34:05 +11:00
Shannon 3384634033 Fixes: U4-3795 Cannot create content with a tag editor when the tag property belongs to an inherited doc type & U4-3786 Multi-level document types fail 2013-12-05 18:33:51 +11:00
perploug b6bcdcb351 fixes: U4-3728 Non-Mandatory Numeric property gives error when left blank
also fixes dimming on buttons fails when validation fails
2013-12-05 08:32:53 +01:00
Shannon db5b99dbf1 adds failsafe database lookup to BackwardsCompatibleData even though it shouldn't even get used. 2013-12-05 16:30:14 +11:00
Shannon a64dbb172e undo my custom test change to login controller 2013-12-05 16:20:02 +11:00
Shannon b1913c9a07 puts IDataValueSetter back in so it can be used by backwards compatible data 2013-12-05 16:18:45 +11:00
Shannon 11fc06d75d Merge remote-tracking branch 'origin/6.2.0' into 7.0.1 2013-12-05 16:12:32 +11:00
Shannon f6179ff813 Strange, somehow these updates got overwritten 2013-12-05 16:11:15 +11:00
Shannon 186e664894 Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/Services/MemberService.cs
	src/umbraco.cms/businesslogic/member/Member.cs
2013-12-05 16:09:34 +11:00
Shannon 1735c5adca adds Exists(string username) to member service and wraps IsMember with that call. 2013-12-05 16:04:53 +11:00
Shannon 31e715e146 Updates legacy Member class to setupNode based on the new IMember object (just like we do with media/content) - this will speed up data retrieval and is the start of wrapping the new API from the old one. 2013-12-05 15:51:38 +11:00
Shannon 4a7f7813e7 Updates legacy Member class to setupNode based on the new IMember object (just like we do with media/content) - this will speed up data retrieval and is the start of wrapping the new API from the old one. 2013-12-05 15:30:22 +11:00
Shannon 5f50bae65c Cleaning up a bit of the legacy member class
Conflicts:
	src/umbraco.cms/businesslogic/member/Member.cs
2013-12-05 14:48:30 +11:00
Shannon 996d74b1d3 Cleaning up a bit of the legacy member class 2013-12-05 14:45:28 +11:00
Shannon e6d8a83519 Ensures that the ContentBase item is set on Document/Media and that the property value is set based on the already loaded value in the model if IData implements IDataValueSetter (which DefaultData does). This streamlines how properties get their data and will save on a ton of queries when using the legacy API. 2013-12-05 14:26:18 +11:00
Shannon d3aa1b3d7e Ensures that the ContentBase item is set on Document/Media and that the property value is set based on the already loaded value in the model if IData implements IDataValueSetter (which DefaultData does). This streamlines how properties get their data and will save on a ton of queries when using the legacy API. 2013-12-05 14:24:26 +11:00
Shannon 3effe6b96d updates manifest docs to be correct 2013-12-05 12:38:39 +11:00
mvanhelmont 0b2428e9a3 fix /{localLink:ID}
ensures it set the href to /{localLink:ID} instead of /umbraco/{localLink:ID}
2013-12-04 21:01:10 +01:00
Lars-Erik Aabech 6458c223b8 Cleaned it up a bit. Now just using media file system provider.
It needs a bit of convesion rules though, need getfullpath(getrelativepath(path)) to be compatible with package & physical.
2013-12-04 19:47:54 +01:00
Brian Powell d36fc65baa Fixed MySQL issue. 2013-12-04 10:50:38 -05:00
Lars-Erik Aabech a511c84b4d Messy fix to support images on other domain. (Read: Azure Storage)
Added GetResized to replace usage of third party packages for simple resizing.

This PR should probably not be pulled, but I make a PR to show you what must be done.
Surely this is considered for UAAS?
2013-12-04 16:12:27 +01:00
perploug ff34024f39 fixes: U4-3717 List view doesn't honor the sort order 2013-12-04 13:17:55 +01:00
perploug bdc0ae7e2f fixes: U4-3707 Change password under users is not translated
translated, and added missing danish keys
2013-12-04 12:55:23 +01:00
perploug 60965ecd92 fixes: U4-3738 macro container, editing doesn't seem to work, just adds a new one
adds fallback on the parser object
2013-12-04 10:56:46 +01:00
Sebastiaan Janssen 708b49ca13 Reference the Microsoft.AspNet.WebApi.Client NuGet instead of local MVC4 install 2013-12-04 10:47:59 +01:00
perploug b6baa9af3d removes webdavModule from web.config 2013-12-04 09:24:04 +01:00
Shannon 8c7db9e846 Fixes: U4-3742 Umbraco 7 and umbraco/channels.aspx 2013-12-04 17:45:47 +11:00
Shannon 176ec0edc0 Fixes: U4-3651 What is the "Pick multiple items" prevalue on MNTP for? and removes the remaining uGoLive references. 2013-12-04 17:13:26 +11:00
Shannon 0d1cf872d3 Fixes WebApi issue with creating HttpResponseMessage manually - this shouldn't be done and we'll end up with very strange YSODs 2013-12-04 17:05:05 +11:00
Shannon 13b6318ad2 Fixes: U4-3776 v7 - MNTP value type changes between int and string 2013-12-04 15:57:55 +11:00
Shannon 18352f8a4d Fixes null check with filtered content/media attribute, fixes issue with container types and rendering tree nodes. 2013-12-04 15:54:50 +11:00
Shannon ad52b86336 Fixes scrollbar issue with directory/file browser and xslt visualize 2013-12-04 15:29:51 +11:00
Shannon 38df2017de Fixes issue with deleting content types that have content 2013-12-04 15:01:27 +11:00
Shannon 210f66cc4a Fixes issue with deleting content types that have content 2013-12-04 15:00:49 +11:00
Shannon e7e209280c Fixes issue with replacing webapi formatter 2013-12-04 14:47:19 +11:00
Shannon 5b7e9c712e Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Web.UI/umbraco/LiveEditing/Modules/SkinModule/ModuleInjector.aspx
	src/Umbraco.Web.UI/umbraco/Umbraco.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ImageUploader.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dashboard.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Cache/viewCacheItem.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.cs
2013-12-04 13:50:55 +11:00
Shannon 33aa4e2062 Fixes potential xss 2013-12-04 13:33:24 +11:00
Shannon 1efa75c891 Fixes potential xss 2013-12-04 12:42:40 +11:00
Brian Powell f48fb5c499 Fix MySQL migrations. 2013-12-03 15:44:34 -05:00
perploug cb13b4a0e0 Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-03 13:44:53 +01:00
Shannon cb8dbf9da5 fixes up some merge issues 2013-12-03 18:14:04 +11:00
Shannon 2a05687c8b Merge remote-tracking branch 'origin/6.2.0' into 7.0.1
Conflicts:
	src/Umbraco.Core/Persistence/Relators/PropertyTypePropertyGroupRelator.cs
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
	src/Umbraco.Core/PluginManager.cs
	src/Umbraco.Tests/Services/ContentServiceTests.cs
	src/Umbraco.Web.UI/install/Default.aspx.cs
	src/Umbraco.Web.UI/umbraco/LiveEditing/Modules/SkinModule/ModuleInjector.aspx
	src/Umbraco.Web.UI/umbraco/Umbraco.aspx.cs
	src/Umbraco.Web.UI/umbraco/dashboard.aspx
	src/Umbraco.Web.UI/umbraco/dialogs/sort.aspx
	src/Umbraco.Web.UI/umbraco/dialogs/umbracoField.aspx
	src/Umbraco.Web.UI/umbraco/logout.aspx
	src/Umbraco.Web.UI/umbraco/umbraco.aspx
	src/Umbraco.Web/UI/Pages/UmbracoEnsuredPage.cs
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/umbraco.presentation/install/LegacyClasses.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dashboard.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/logout.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/umbraco.aspx.cs
	src/umbraco.cms/businesslogic/Packager/Installer.cs
	src/umbraco.providers/members/MembersMembershipProvider.cs
2013-12-03 18:10:00 +11:00
Shannon d4514844f8 Fixes a few other potential xss entry points 2013-12-03 17:58:42 +11:00
Shannon 6b7a495d19 Fixes a few other potential xss entry points and cleans up some legacy webforms files 2013-12-03 16:38:58 +11:00
Shannon 601eb0bf38 Fixes a few other potential xss entry points and cleans up some legacy webforms files 2013-12-03 16:28:51 +11:00
Shannon 037e7e0797 Fixes remaining xslt injection U4-3175 2013-12-03 15:56:50 +11:00
Shannon a7e32e97e3 Fixes xss issue 2013-12-03 15:40:12 +11:00
Shannon 9d90506265 Fixes issue with authcookie on renew - need to ensure its http only and persited for a day remains, ensures the csrf cookies are set when getting the user since that is called before logging in. 2013-12-03 11:57:41 +11:00
Shannon 08100793af completed csrf protection 2013-12-03 11:36:17 +11:00
perploug a265424b3f Replaces all rootScope.broadcast with eventsService
Broadcast is inefficient and eventsService gives us extra options for
funneling all app events through one pipeline.

For now it just replicates rootScope on/emit, but longer term we can get
this to handle async UI events
2013-12-02 13:51:03 +01:00
perploug bb87fa7fa8 removes outcommented code 2013-12-02 12:24:36 +01:00
perploug 16cf64866a default tinymce config to have default height and width 2013-12-02 12:21:39 +01:00
perploug 11da6d5be7 Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-12-02 09:42:53 +01:00
Shannon ea35ea1af5 getting csrf stuff coded up, it's pretty much done just need to write a couple tests and add the filter to the necessary controller/actions 2013-12-02 17:20:50 +11:00
Shannon 33c32579c8 Adds AngularJsonMediaTypeFormatter and ensures our controllers all use this formatter in order to enable angular's JSON Vulnerability protection. 2013-12-02 13:31:44 +11:00
Shannon 1ac6f6db50 publicizes macroproperty 2013-12-02 13:30:08 +11:00
esunxray cacf87be2d Update zh.xml
update Chinese file for 6.2, this can be merged into V7.
2013-11-29 21:26:16 +08:00
perploug 7baa81c2df missing en translation for login dialog 2013-11-29 12:00:03 +01:00
perploug a0e88a297d Blocks search box from loading untill after login 2013-11-29 11:59:44 +01:00
perploug 8d2b52a5b0 fixes: U4-3749 Login page is not translated 2013-11-29 11:58:58 +01:00
perploug 81389ce435 Fixes: U4-3685 Richtext Editor - Custom toolbars and dimensions ignored 2013-11-29 11:56:52 +01:00
Shannon e981776e6d Created new EnsurePublishedContentRequestAttribute for custom routing to still be able to render macros. 2013-11-29 17:41:38 +11:00
Shannon 48b3806129 adds umbraco session id to UserData so we can use for csrf 2013-11-29 12:42:50 +11:00
Shannon 9fc8e18881 Fixes csrf issue
Conflicts:
	src/Umbraco.Web.UI/config/ClientDependency.config
	src/Umbraco.Web.UI/umbraco/logout.aspx
	src/Umbraco.Web.UI/umbraco/umbraco.aspx
	src/Umbraco.Web/umbraco.presentation/install/LegacyClasses.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/logout.aspx.cs
2013-11-29 12:17:58 +11:00
Shannon 250276bbd4 Merge branch '6.1.6-U4-3619' into 6.2.0 2013-11-29 11:26:01 +11:00
Shannon af29f61478 Fixes csrf issue 2013-11-29 11:10:25 +11:00
perploug cdfebe705d Merge branch '7.0.1' of https://github.com/umbraco/Umbraco-CMS into 7.0.1 2013-11-28 15:35:34 +01:00
perploug e6714ae829 Ensure refresh node action is translated 2013-11-28 15:35:23 +01:00
perploug a0dead872b DA lang file updates 2013-11-28 15:35:06 +01:00
perploug b6ebc34199 ensure create dialogs can reopen the menu 2013-11-28 15:34:56 +01:00
perploug 49e7ace2d9 tree menu should not be selectable 2013-11-28 15:34:39 +01:00
perploug d140eab12d Ensures dialogs doesnt reopen the menu 2013-11-28 15:34:24 +01:00
Kalle Ekstrand 24fcfd9fcb Minor changes 2013-11-28 15:07:33 +01:00
perploug 83e05a4f84 Merge pull request #259 from nilzen/U4-3683
Fixed: U4-3683 Icon selector problem (Chrome)
2013-11-28 05:43:08 -08:00
Kalle Ekstrand 48dd619899 Minor changes 2013-11-28 14:34:22 +01:00
perploug ff52755636 Media and content tree root node translation 2013-11-28 13:26:05 +01:00
perploug a7cd18c3d2 The section mapping was reversed, so werent translated 2013-11-28 13:20:52 +01:00
perploug 98a0208b47 Removes button icon from script editor 2013-11-28 13:08:54 +01:00
perploug b923305527 adds pointer cursor to help 2013-11-28 13:06:28 +01:00
perploug 04ccbdde4d Dims buttons during action to prevent multiple saves 2013-11-28 13:06:19 +01:00
perploug de1e3d150f Missing script translation 2013-11-28 13:05:36 +01:00
perploug 07182529f4 replace $element with $scope.$on($destroy)
We should never access dom element from controllers
2013-11-28 12:32:03 +01:00
perploug e076b687c6 added rte and assets service mocks 2013-11-28 12:32:02 +01:00
Shannon 7f305db637 Fixing: U4-3687 Umbraco 7 Packaging Issues - have fixed the data type package issues, cleaned up some code and fixed a different underlying pre-val issue for empty legacy aliases 2013-11-28 16:57:05 +11:00
Shannon 50e10155e7 Completes: U4-3712 Allow c# property editors to have custom js injected into the js initialization block so they can load in angular controllers 2013-11-28 14:27:58 +11:00
Shannon 478b7cde42 Removes uGoLive from the core (for now until it is rebuilt against v7 ) 2013-11-28 10:51:54 +11:00
Shannon c86f52d5ea Completes: U4-3230 Combine/Minify manifest files to one request with CDF 2013-11-28 10:37:08 +11:00
Shannon 58fc51ae93 Fixes: U4-3736 Unit test Can_Get_File_Dates() now testing correctly, disregarding local (nont-UTC) time. 2013-11-28 09:30:50 +11:00
Shandem 413248a126 Merge pull request #260 from AndersKroghDk/7.0.1
Fixes: U4-3736 Unit test Can_Get_File_Dates() now testing correctly.
2013-11-27 14:25:11 -08:00
Anders f114f94740 Fixes: U4-3736 Unit test Can_Get_File_Dates() now testing correctly, disregarding local (nont-UTC) time. 2013-11-28 00:09:09 +01:00
Shannon ce162e2657 Gets the JS done for: U4-3230 Combine/Minify manifest files to one request with CDF - now loading incredibly fast. 2013-11-27 18:42:35 +11:00
Shannon 00518f8451 improves security and ensures the server vars cannot be loaded without authentication, they will get lazy loaded once authenticated and changed the controllers to listen for the 'ready' event instead. 2013-11-27 17:38:59 +11:00
Shannon ba3c1f9d21 minifies and outputcaches the server vars 2013-11-27 14:52:54 +11:00
Shannon 7535585b63 Fixes: U4-3720 Color picker prevalues isn't saved as an array and therefore "model.config.items.length === 0" doesn't work 2013-11-27 10:22:45 +11:00
nilzen bf288c0502 Fixed: U4-3683 Icon selector problem (Chrome) 2013-11-26 13:25:23 +01:00
Kalle Ekstrand f8375857c2 Updates to the swedish language file for v7 2013-11-26 11:08:55 +01:00
Shannon 2391ee1368 Changes the web.config template to use a linked resources (one file) 2013-11-26 20:03:13 +11:00
Shannon 327d17c90e obsoleted some un-used/legacy code. IMediaFactory it is no longer used and is contained in an old assembly. If we want to re-support this (which i don't think we do), it needs to be manually re-created and implemented, i don't think its been used for quite some time. 2013-11-26 17:52:53 +11:00
Shannon d6b4c47cd9 fixed gen'd mvc web.config template. 2013-11-26 17:14:58 +11:00
Shannon a052fc42b1 Fixes: U4-3682 Can not create new documents (javascript error) 2013-11-26 14:03:00 +11:00
Shannon c89fb0a0be Fixes: U4-3688 Unable to delete a property of type "Tags" from a Document Type 2013-11-26 13:58:49 +11:00
Shannon 03a606432a Fixes: U4-3695 Events does not fire 2013-11-26 13:34:51 +11:00
Shannon 54e826bc96 Fixes: U4-3696 Upload datatype only updates on first save 2013-11-26 13:13:43 +11:00
Shannon 6c57222a2e removes committed file that shouldn't have been there. 2013-11-26 13:12:59 +11:00
Shannon 97e8573dff removes debugging output 2013-11-26 12:46:16 +11:00
Shannon 683862932b Fixes: U4-3679 Using two data types with the Media Picker data editor multiple/not multiple 2013-11-25 19:38:56 +11:00
Shannon 9a856df8bc Fixes: U4-3644 Multiple Textstring DataType not displaying in DocType (vs. 7.0.0 build 183) 2013-11-25 17:36:56 +11:00
Shannon e1ef2e8700 Fixes: U4-3677 Multinode tree picker does not save content when node type is set to Media 2013-11-25 16:58:47 +11:00
Shannon 59599efab6 Fixes: U4-3655 Clicking on recycle bin in media section redirects you back to the content tree 2013-11-25 14:45:14 +11:00
Shannon 20813ef207 Fixes: U4-3673 Creating content with Services API always sets created by to admin
Conflicts:
	src/Umbraco.Tests/Services/ContentServiceTests.cs
2013-11-25 13:25:01 +11:00
Shannon 99e0a1f11b Fixes: U4-3673 Creating content with Services API always sets created by to admin 2013-11-25 13:22:35 +11:00
Shannon 9bf2819ac6 Fixes: U4-3661 Unable to Create Color Picker DataType & U4-3645 Media Picker Umbraco 7 can select multiple 2013-11-25 12:02:25 +11:00
Shannon cafeb6d8c6 Fixes: U4-3661 Unable to Create Color Picker DataType & U4-3645 Media Picker Umbraco 7 can select multiple 2013-11-25 11:58:01 +11:00
Shannon d04f2a98b9 Fixes tests 2013-11-21 17:47:57 +11:00
Shannon f41f82adc5 Changes locker to be static 2013-11-21 14:46:18 +11:00
Shannon e6ae88c016 Fixes hash generation and checking with the trees.config file - since this is changed during startup our plugin cache was never active :( 2013-11-21 14:45:52 +11:00
Shannon 474dcd0754 Fixes: U4-3587 Can't delete a member when there is a group assigned
Conflicts:
	src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
2013-11-20 18:24:44 +11:00
Shannon 369f6ac935 fixes merge issue 2013-11-20 18:15:11 +11:00
Shannon 5a928aa459 FIxes installer when duplicate conflicts: U4-3612 Cannot install Txt starter kit in the back office
Conflicts:
	src/umbraco.cms/businesslogic/Packager/Installer.cs
2013-11-20 17:28:33 +11:00
Shannon 416a9ed064 Comments out backported code - need to wait till we merge in the custom membership branch. 2013-11-20 17:10:15 +11:00
Shannon b13c3aa3b9 Fixes: U4-3610 When adding another tab to a member type no members will load and result in a YSOD
Conflicts:
	src/Umbraco.Core/Persistence/Relators/PropertyTypePropertyGroupRelator.cs
2013-11-20 16:59:41 +11:00
Shannon 99ae94a82f Ensures that members are auto-approved if creating a member via the legacy members API. 2013-11-20 16:40:30 +11:00
Marc Stöcker 997e0e5492 Initial German v7 translation/localization
Should cover all of the already localized strings for v7 (as well as 6.x - no obsolete items removed for now).
2013-11-18 23:39:20 +01:00
Marc Stöcker 376fe0bf55 changed wording to correct one in context of content
wording was wrong until today, needed a completely different meaning in the context of the content section; ironically it's just "Alias" now ;)
2013-11-14 22:22:25 +01:00
Marc Stöcker 282da69d61 Fixed minor typos 2013-11-13 13:27:56 +01:00
OptimisticCoder c83844468d U4-3039 Import Document Type leaves files in App_Data
Added File.Delete to clean up temp files.
Added try/catch round it and logging if it fails for any reason.
2013-11-09 15:18:43 +00:00
OptimisticCoder 80b5cfbb07 U4-451 Inconsistent line endings in template files created by Umbraco
Changed all "\n"'s to Environment.NewLine
Changed a string that was being appended in that method to a StringBuilder to be more efficient.
Cleaned up old commented out code from the method.
2013-11-09 14:37:22 +00:00
yawka aacb86bf92 Add trim to all urls 2013-11-07 19:09:50 +02:00
yawka 59391f58ec Remove previous fix, and move it to IsReservedPathOrUrl 2013-11-07 19:06:25 +02:00
yawka 0debf9c34f Add check is path is whitespace 2013-11-07 19:05:50 +02:00
Morten Christensen 9fa17ef6cb Initial datalayer refactoring work on the legacy User class 2013-11-07 17:56:38 +01:00
Morten Christensen d227aa19b8 Leaving the original internal method intact 2013-11-07 17:56:12 +01:00
yawka e0a10080b1 Add UI validation for regular expression property 2013-11-07 18:39:27 +02:00
yawka 807df434f6 Add validation for regular expression property 2013-11-07 18:39:02 +02:00
mattbrailsford d963917556 Added SortOrder to XML for document types (used by export)
Added ability for doctype importer to set the sort order if a sort order element is available
2013-11-07 16:30:23 +00:00
Tim Payne 347d41c841 Fixes issue U4-2760, and makes the installed packages list by name in alphabetical order to make it easier to see what's installed. 2013-11-07 16:06:16 +00:00
Tim Payne f16aa38fff Fixes issue U4-2757 where generic properties are not ordered correctly. 2013-11-07 15:51:58 +00:00
adang@thecogworks.co.uk 62a7e0acd0 Replaced HttpContext.Current.Cache with HttpRuntime.Cache 2013-11-07 15:44:55 +00:00
leekelleher 8e89d13142 Fixes: U4-2006 Domain.GetDomain(string DomainName) is case-sensitive 2013-11-07 15:41:34 +00:00
dipunm a5782a40af Missing languages in RTE insert link dialog.
Also included files in csproj file to ensure proper build.
2013-11-07 14:59:00 +00:00
dipeshhirani c6af319805 commented out the line that checked if the language is neutral. 2013-11-07 14:56:00 +00:00
leekelleher 516beedbbb Fixes: U4-3452 Update the MIT License URL (Packager) 2013-11-07 14:48:20 +00:00
mattbrailsford 7cd01fc50b Added ValidateRequest="false" on package installer page to allow user controls which postback html / code. 2013-11-07 14:35:44 +00:00
Simon Dingley e9d12ae0d8 Revert "Group jQueryTree script files"
This reverts commit baed01518c.
2013-11-07 14:23:53 +00:00
Tim Payne 02e167c1f6 Fixes issue U4-3063 where copying a document type uses the rename for the node alias, but not the title, resulting in two Doctypes with the same name, but different aliases, rather than different names AND aliases. 2013-11-07 14:20:47 +00:00
Simon Dingley baed01518c Group jQueryTree script files 2013-11-07 13:21:01 +00:00
Craig Cronin a0106ff811 Fixed as per issue comments, but also implemented for another 3 overloads 2013-11-07 12:50:26 +00:00
Simon Dingley e0da5a9cb2 Groups jQuery dependencies using the ClientDependency Group property 2013-11-07 12:45:35 +00:00
mkariti 451d5eb484 U4-415 2013-11-07 14:40:26 +02:00
yawka 1923b68594 Fix 2034, add check for whitespaces 2013-11-07 12:36:35 +02:00
Jan Skovgaard 3abd4df8bd Enabled lists plugin in tinymce by default
Fixes http://issues.umbraco.org/issue/U4-3023
2013-10-16 16:01:17 +02:00
Jan Skovgaard ea239e6122 Missing languages in RTE insert link dialogue
Fixes this issue: http://issues.umbraco.org/issue/U4-2551
2013-10-16 15:53:56 +02:00
Lars-Erik Aabech 3fe99a402e Should make the PublishedContentExtensionTests green when ran together with everything else in TeamCity 2013-10-16 15:45:39 +02:00
Steve Temple e738738e54 Only check actions if more than 1 route matches & ignore case when comparing controller names 2013-10-16 12:02:20 +01:00
Steve Temple f502912225 Updated to use invariant culture 2013-10-15 23:51:39 +01:00
Steve Temple c8a26bf6a3 Merge branch '6.1.6-multiple-action-route-issue' of github.com:stevetemple/Umbraco-CMS into 6.1.6-multiple-action-route-issue 2013-10-15 17:18:46 +01:00
Steve Temple e06e50c4fc Tidied up tabs to match Umbraco standard and nicer string comparison 2013-10-15 17:18:12 +01:00
Steve Temple 4236473b14 Tidied up tabs to match Umbraco standard 2013-10-15 17:15:53 +01:00
Steve Temple 3285e161c0 Fix issue with error http://our.umbraco.org/forum/developers/api-questions/41483-Umbraco-6-MVC-RenderRouteHandlerHandlePostedValues-Sequence-contains-more-than-one-matching-element when multiple routes share the same controller 2013-10-15 17:09:51 +01:00
wtct b5c3fb1728 FFROM to FROM 2013-10-11 09:16:18 +02:00
wtct e1caf3a470 U4-3091 2013-10-10 14:45:18 +02:00
wtct b6cf182341 Affect the order of domains 2013-10-09 17:52:05 +02:00
mortenbock c74cdb28d6 Testing the wrapping of view engines 2013-10-03 11:01:37 +02:00
Marc Brooks b200cb463e Make CacheHelperExtensions public so we can call CachedPartialView and ClearPartialViewCache
In order to allow extensions to the logic and usage of the CachedPartial HtmlHelper, expose CachedPartialView and ClearPartialViewCache by making the wrapping static class public.
2013-09-30 18:28:45 -05:00
Marc Brooks cdf5ddf539 Added cacheKeyBuilder optional argument to allow the key used for caching to be contextual.
when building cached partials that work with many different instances of the same  partial view (e.g. using the same partial more than once on a page with different ViewDataDictionary or different model), it is necessary to either name each instance differently (ugh), or not cache.

By adding an optional argument to the CachedPartial Html helper method, we can vary the cache-key depending on the context of insertion. For maximum flexibility, pass the model and the viewData to the function so it can use that data to format a cacheKey suffix.

A typical use would be something like:

@Html.CachedPartial(
"EventListings"
, FeedRepository.getFeed(new CalendarEventsModel
  {
     StartingDate = DateTime.UtcNow.Date
     , Count = 10
  })
, 0
, contextualKeyBuilder: (model, viewData) =>
  {
     return (model as CalendarEventsModel).StartingDate.ToString();
  }
)
2013-09-30 18:23:56 -05:00
Jeremy Pyne 5716edcf80 Added node type to quick search(as a toooltip).
Added node type to search results.
2013-09-23 16:19:05 -04:00
Mads Krohn 0fe33c120b Removing unwanted ToList() 2013-09-13 10:42:08 +02:00
Mads Krohn 10ea234dbf Merge branch '6.2.0' of https://github.com/umbraco/Umbraco-CMS into 6.2.0 2013-09-13 10:29:12 +02:00
Mads Krohn 31f146fc6f Updates to the media trashed state handling
Tweaked the logic for determining when a media item is trashed or not.
Added unit tests. Removed unnecessary comments.
2013-09-13 10:29:03 +02:00
Mads Krohn 0af73b0290 Fixed U4-2842 Umb 6.1.5 - moving a media item from recycle bin / trash 2013-09-12 00:14:44 +02:00
dprothero 6675bac1dc Fix #U4-2796 - fixed copy/paste error (does not affect functionality) 2013-09-05 15:23:25 -07:00
dprothero 0d49a59cfe Fix #U4-2796 Possible to have duplicate Login Name (Member.LoginName) for Umbraco Members 2013-09-05 15:15:40 -07:00
Stefan Kip baa22301e9 Added Exception which tells you which datatype is unable to load 2013-09-05 11:31:06 +02:00
enkelmedia fdfb6187e9 Removing SVG from staticContent before addings it. 2013-09-01 16:51:00 +02:00
enkelmedia 69830f28c2 Added SVG as static content so SVG-icons in the backoffice will be served by IIS 2013-09-01 14:05:54 +02:00
Jeremy Pyne e65a71a05a Added code to pre-select the current node in content tree pickers based on the location of the document in the tree.
This is a HUGE time saver with an even moderately complex site hierarchy.
2013-08-29 11:14:51 -04:00
Jeremy Pyne 7a2a444579 Fix for select parent o move or copy in 6.1.3. 2013-08-29 11:14:35 -04:00
Jeremy Pyne e16ebecda4 Merge branch '6.1.3-clean' into select-parent-on-movecopy 2013-08-29 11:09:20 -04:00
DougMac 0218e39664 Fixes: U4-2060 Spell Checker Broke After Google Update 2013-08-26 22:50:53 +01:00
DougMac 7e645f9a6a Fixes: U4-2060 Spell Checker Broke After Google Update
The Google spell check at https://www.google.com/tbproxy/spell no longer
works. This updates to a newer Google Api (again undocumented)
2013-08-17 10:50:26 +01:00
Jeremy Pyne fe23502e67 Added code to actually pre-select the parent node instead of just locating it in the tree. This seams keeps the Ui in a sane state.
Updated control code in Umbraco.Web.Ui from Umbraco.Web.
2013-06-25 15:48:16 -04:00
Jeremy Pyne ad2764e3ac Added code to select the parent node when doing Move/Copy operations. This will save lots of time for users.
This code can also be added to other places that use the TreeControl to pre-select the currently selected item(media pickers for example) so that changing content will be quicker.
2013-06-24 14:51:52 -04:00
1192 changed files with 40425 additions and 32149 deletions
+3
View File
@@ -106,3 +106,6 @@ src/Umbraco.Web.UI/[Uu]mbraco/[Vv]iews/**/*.js
src/Umbraco.Web.UI/[Cc]onfig/appSettings.config
src/Umbraco.Web.UI/[Cc]onfig/connectionStrings.config
src/Umbraco.Web.UI/umbraco/plugins/*
src/Umbraco.Web.UI/umbraco/js/init.js
build/ApiDocs/*
build/ApiDocs/Output/*
+6 -2
View File
@@ -1,7 +1,11 @@
Umbraco CMS
===========
##Note: Building version 7 from source##
If you're interested in using the source code and building version 7, make sure to read the [Belle ReadMe file](src/Umbraco.Web.UI.Client/README.md). Note that you can always [download a nightly build](http://nightly.umbraco.org/umbraco%207.0.0/) so you don't have to build the code yourself.
Umbraco is a free open source Content Management System built on the ASP.NET platform.
## Building Umbraco from source ##
The easiest way to get started is to run `build/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 `grunt dev` in `src\Umbraco.Web.UI.Client`.
If you're interested in making changes to Belle make sure to read the [Belle ReadMe file](src/Umbraco.Web.UI.Client/README.md). Note that you can always [download a nightly build](http://nightly.umbraco.org/umbraco%207.0.0/) so you don't have to build the code yourself.
## Watch a five minute introduction video ##
+170
View File
@@ -0,0 +1,170 @@
/* File : TOC.css
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 09/07/2007
//
// Stylesheet for the table of content
*/
*
{
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
body
{
font-family: Segoe UI, Arial, Verdana, Helvetica, sans-serif;
font-size: 0.9em;
background-color: white;
color: White;
overflow: hidden;
}
input
{
padding:5px;
margin: 3px 0px 3px 0px
}
img
{
border: 0;
margin-left: 5px;
margin-right: 2px;
}
img.TreeNodeImg
{
cursor: pointer;
}
img.TOCLink
{
cursor: pointer;
margin-left: 0;
margin-right: 0;
}
a.SelectedNode, a.UnselectedNode
{
color: #333;
text-decoration: none;
padding: 1px 3px 1px 3px;
white-space: nowrap;
}
a.SelectedNode
{
background-color: #ffffff;
border: solid 1px #999999;
padding: 0px 2px 0px 2px;
}
a.UnselectedNode:hover, a.SelectedNode:hover
{
background-color: #cccccc;
border: solid 1px #999999;
padding: 0px 2px 0px 2px;
}
.Visible
{
display: block;
margin-left: 2em;
}
.Hidden
{
display: none;
}
.Tree
{
background-color: #fff;
color: #333;
width: 300px;
overflow: auto;
}
.TreeNode, .TreeItem
{
white-space: nowrap;
margin: 2px 2px 2px 2px;
}
.TOCDiv
{
position: relative;
float: left;
width: 300px;
height: 100%;
}
.TOCSizer
{
clear: none;
float: left;
width: 10px;
height: 100%;
background-image: url("Splitter.gif");
background-position:center center;
background-repeat:no-repeat;
position: relative;
cursor: w-resize;
border-left: solid 1px #CCC;
}
.TopicContent
{
position: relative;
float: right;
background-color: white;
height: 100%;
}
.SearchOpts
{
padding: 5px 5px 10px 5px;
color: black;
width: 300px;
border-bottom: solid lightgrey 1px;
height: 110px !important;
}
.NavOpts
{
padding: 5px 5px 6px 5px;
color: black;
width: 300px;
border-bottom: solid lightgrey 1px;
}
.NavOpts img {
display:inline-block;
margin: 0px 5px 0px 5px;
}
.IndexOpts
{
padding: 5px 5px 6px 5px;
color: black;
width: 300px;
border-bottom: solid lightgrey 1px;
}
.IndexItem
{
white-space: nowrap;
margin: 2px 2px 2px 2px;
}
.IndexSubItem
{
white-space: nowrap;
margin: 2px 2px 2px 12px;
}
.PaddedText
{
margin: 10px 10px 10px 10px;
}
+172
View File
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<!-- The configuration and platform will be used to determine which
assemblies to include from solution and project documentation
sources -->
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{cb4d85f1-7390-40ee-b41f-a724bb8fddea}</ProjectGuid>
<SHFBSchemaVersion>1.9.5.0</SHFBSchemaVersion>
<!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
Studio adds them anyway -->
<AssemblyName>Documentation</AssemblyName>
<RootNamespace>Documentation</RootNamespace>
<Name>Documentation</Name>
<!-- SHFB properties -->
<FrameworkVersion>.NET Framework 4.5</FrameworkVersion>
<OutputPath>.\Output\</OutputPath>
<HtmlHelpName>UmbracoClassLibrary</HtmlHelpName>
<Language>en-US</Language>
<BuildAssemblerVerbosity>OnlyErrors</BuildAssemblerVerbosity>
<BuildLogFile>csharp-api-docs.log</BuildLogFile>
<HelpFileFormat>Website</HelpFileFormat>
<IndentHtml>True</IndentHtml>
<KeepLogFile>False</KeepLogFile>
<DisableCodeBlockComponent>False</DisableCodeBlockComponent>
<CppCommentsFixup>False</CppCommentsFixup>
<CleanIntermediates>True</CleanIntermediates>
<SyntaxFilters>CSharp</SyntaxFilters>
<SdkLinkTarget>Blank</SdkLinkTarget>
<RootNamespaceContainer>False</RootNamespaceContainer>
<PresentationStyle>VS2010</PresentationStyle>
<Preliminary>False</Preliminary>
<NamingMethod>Guid</NamingMethod>
<HelpTitle>Umbraco .Net Class Library</HelpTitle>
<ContentPlacement>AboveNamespaces</ContentPlacement>
<VisibleItems>Attributes, InheritedMembers, InheritedFrameworkMembers, Protected, SealedProtected</VisibleItems>
<ComponentConfigurations />
<DocumentationSources>
<DocumentationSource sourceFile="..\..\src\Umbraco.Core\Umbraco.Core.csproj" />
<DocumentationSource sourceFile="..\..\src\Umbraco.Core\bin\Release\Umbraco.Core.xml" />
<DocumentationSource sourceFile="..\..\src\Umbraco.Web\Umbraco.Web.csproj" />
<DocumentationSource sourceFile="..\..\src\Umbraco.Web\bin\Release\umbraco.xml" /></DocumentationSources>
<WebsiteSdkLinkType>None</WebsiteSdkLinkType>
<HtmlSdkLinkType>None</HtmlSdkLinkType>
<IncludeFavorites>False</IncludeFavorites>
<BinaryTOC>True</BinaryTOC>
<MissingTags>Summary, AutoDocumentCtors, AutoDocumentDispose</MissingTags>
<TransformComponentArguments>
<Argument Key="logoFile" Value="" />
<Argument Key="logoHeight" Value="" />
<Argument Key="logoWidth" Value="" />
<Argument Key="logoAltText" Value="" />
<Argument Key="logoPlacement" Value="left" />
<Argument Key="logoAlignment" Value="left" />
</TransformComponentArguments>
<ApiFilter>
<Filter entryType="Namespace" fullName="CookComputing.Blogger" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="CookComputing.MetaWeblog" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="dashboardUtilities" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="presentation.umbraco.webservices" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco" isExposed="False" xmlns="">
<Filter entryType="Class" fullName="umbraco.content" filterName="content" isExposed="True" />
<Filter entryType="Delegate" fullName="umbraco.content.ContentCacheDatabaseLoadXmlStringEventHandler" filterName="content.ContentCacheDatabaseLoadXmlStringEventHandler" isExposed="False" />
<Filter entryType="Delegate" fullName="umbraco.content.ContentCacheLoadNodeEventHandler" filterName="content.ContentCacheLoadNodeEventHandler" isExposed="False" />
<Filter entryType="Delegate" fullName="umbraco.content.DocumentCacheEventHandler" filterName="content.DocumentCacheEventHandler" isExposed="False" />
<Filter entryType="Delegate" fullName="umbraco.content.RefreshContentEventHandler" filterName="content.RefreshContentEventHandler" isExposed="False" />
<Filter entryType="Class" fullName="umbraco.ContentExtensions" filterName="ContentExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.ContentTypeExtensions" filterName="ContentTypeExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.item" filterName="item" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.library" filterName="library" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.macro" filterName="macro" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.MacroCacheContent" filterName="MacroCacheContent" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.MacroRenderingEventArgs" filterName="MacroRenderingEventArgs" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.MediaExtensions" filterName="MediaExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.MemberExtensions" filterName="MemberExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.page" filterName="page" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.PreValueExtensions" filterName="PreValueExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.RelationTypeExtensions" filterName="RelationTypeExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.template" filterName="template" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.UmbracoObjectTypeExtensions" filterName="UmbracoObjectTypeExtensions" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.uQuery" filterName="uQuery" isExposed="True" />
<Filter entryType="Interface" fullName="umbraco.uQuery.IGetProperty" filterName="uQuery.IGetProperty" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.uQuery.Members" filterName="uQuery.Members" isExposed="True" />
<Filter entryType="Enumeration" fullName="umbraco.uQuery.UmbracoObjectType" filterName="uQuery.UmbracoObjectType" isExposed="True" />
</Filter>
<Filter entryType="Namespace" fullName="umbraco.cms.presentation" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.create.controls" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.developer" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.developer.RelationTypes" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.developer.RelationTypes.TreeMenu" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.members" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.settings" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.settings.modal" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.settings.scripts" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.settings.stylesheet" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.cms.presentation.user" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.controls" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.controls.GenericProperties" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.controls.Images" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.controls.Tree" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.developer" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.dialogs" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.js" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.layoutControls" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.NodeFactory" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.actions" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.channels" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.channels.businesslogic" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.create" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.developer.packages" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.dialogs" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.masterpages" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.members" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.nodeFactory" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.org.umbraco.update" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.plugins.tinymce3" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.preview" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.Search" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.settings" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.templateControls" isExposed="False" xmlns="">
<Filter entryType="Class" fullName="umbraco.presentation.templateControls.Item" filterName="Item" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.presentation.templateControls.ItemRenderer" filterName="ItemRenderer" isExposed="True" />
<Filter entryType="Class" fullName="umbraco.presentation.templateControls.Macro" filterName="Macro" isExposed="True" />
<Filter entryType="Enumeration" fullName="umbraco.presentation.templateControls.Macro.RenderEvents" filterName="Macro.RenderEvents" isExposed="False" />
</Filter>
<Filter entryType="Namespace" fullName="umbraco.presentation.tinymce3" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.translation" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.channels" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.controls" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.create" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.developer.Xslt" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.dialogs" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.masterpages" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.members" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.plugins.tinymce3" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.Search" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.translation" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco.webservices" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.urlRewriter" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.Web.UI" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.presentation.webservices" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.scripting" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.settings" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="Umbraco.Web.org.umbraco.our" isExposed="False" xmlns="" />
<Filter entryType="Namespace" fullName="umbraco.webservices" isExposed="False" xmlns="" /></ApiFilter>
</PropertyGroup>
<!-- There are no properties for these groups. AnyCPU needs to appear in
order for Visual Studio to perform the build. The others are optional
common platform types that may appear. -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' ">
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' ">
</PropertyGroup>
<!-- Import the SHFB build targets -->
<Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" />
</Project>
+11 -2
View File
@@ -1,14 +1,21 @@
@ECHO OFF
SET release=7.0.0
SET comment=
SET release=7.1.0
SET comment=beta
SET version=%release%
IF [%comment%] EQU [] (SET version=%release%) ELSE (SET version=%release%-%comment%)
ECHO Building Umbraco %version%
ReplaceIISExpressPortNumber.exe ..\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj %release%
ECHO Installing the Microsoft.Bcl.Build package before anything else, otherwise you'd have to run build.cmd twice
SET nuGetFolder=%CD%\..\src\packages\
..\src\.nuget\NuGet.exe install ..\src\Umbraco.Web.UI\packages.config -OutputDirectory %nuGetFolder%
ECHO Performing MSBuild and producing Umbraco binaries zip files
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "Build.proj" /p:BUILD_RELEASE=%release% /p:BUILD_COMMENT=%comment%
ECHO Adding dummy files to include in the NuGet package so that empty folders actually get created
echo This file is only here so that the containing folder will be included in the NuGet package, it is safe to delete. > .\_BuildOutput\WebApp\App_Code\dummy.txt
echo This file is only here so that the containing folder will be included in the NuGet package, it is safe to delete. > .\_BuildOutput\WebApp\App_Data\dummy.txt
echo This file is only here so that the containing folder will be included in the NuGet package, it is safe to delete. > .\_BuildOutput\WebApp\App_Plugins\dummy.txt
@@ -20,9 +27,11 @@ echo This file is only here so that the containing folder will be included in th
echo This file is only here so that the containing folder will be included in the NuGet package, it is safe to delete. > .\_BuildOutput\WebApp\Views\Partials\dummy.txt
echo This file is only here so that the containing folder will be included in the NuGet package, it is safe to delete. > .\_BuildOutput\WebApp\Views\MacroPartials\dummy.txt
ECHO Adding Web.config transform files to the NuGet package
ren .\_BuildOutput\WebApp\MacroScripts\Web.config Web.config.transform
ren .\_BuildOutput\WebApp\Views\Web.config Web.config.transform
ECHO Packing the NuGet release files
..\src\.nuget\NuGet.exe pack NuSpecs\UmbracoCms.Core.nuspec -Version %version%
..\src\.nuget\NuGet.exe pack NuSpecs\UmbracoCms.nuspec -Version %version%
+1 -1
View File
@@ -267,7 +267,7 @@
<Message Text="Compiling web project to build\$(BuildFolder)" Importance="high" />
<!-- For UseWPP_CopyWebApplication=True see http://stackoverflow.com/questions/1983575/copywebapplication-with-web-config-transformations -->
<!-- Build the Umbraco.Web.UI project -->
<MSBuild Projects="..\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj" Properties="WarningLevel=0;Configuration=$(BuildConfiguration);UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;OutDir=$(SolutionBinFolderAbsolutePath);WebProjectOutputDir=$(WebAppFolderAbsolutePath)" Targets="Clean;Build;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False">
<MSBuild Projects="..\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj" Properties="WarningLevel=0;Configuration=$(BuildConfiguration);UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;OutDir=$(SolutionBinFolderAbsolutePath);WebProjectOutputDir=$(WebAppFolderAbsolutePath)" Targets="Clean;Rebuild;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False">
</MSBuild>
<!-- DONE -->
+32
View File
@@ -0,0 +1,32 @@
@ECHO OFF
ECHO Installing Npm NuGet Package
SET nuGetFolder=%CD%\..\src\packages\
ECHO Configured packages folder: %nuGetFolder%
ECHO Current folder: %CD%
%CD%\..\src\.nuget\NuGet.exe install Npm.js -OutputDirectory %nuGetFolder%
for /f "delims=" %%A in ('dir %nuGetFolder%node.js.* /b') do set "nodePath=%nuGetFolder%%%A\"
for /f "delims=" %%A in ('dir %nuGetFolder%npm.js.* /b') do set "npmPath=%nuGetFolder%%%A\tools\"
ECHO Temporarily adding Npm and Node to path
SET oldPath=%PATH%
path=%npmPath%;%nodePath%;%PATH%
SET buildFolder=%CD%
ECHO Change directory to %CD%\..\src\Umbraco.Web.UI.Client\
CD %CD%\..\src\Umbraco.Web.UI.Client\
ECHO Do npm install and the grunt build of Belle
call npm install
call npm install -g grunt-cli
call grunt build
ECHO Reset path to what it was before
path=%oldPath%
ECHO Move back to the build folder
CD %buildFolder%
+27
View File
@@ -0,0 +1,27 @@
##We cannot continue if sandcastle is not installed determined by env variable: SHFBROOT
if (-not (Test-Path Env:\SHFBROOT))
{
throw "The docs cannot be build, install Sandcastle help file builder"
}
$PSScriptFilePath = (Get-Item $MyInvocation.MyCommand.Path).FullName
$BuildRoot = Split-Path -Path $PSScriptFilePath -Parent
$OutputPath = Join-Path -Path $BuildRoot -ChildPath "ApiDocs\Output"
$ProjFile = Join-Path -Path $BuildRoot -ChildPath "ApiDocs\csharp-api-docs.shfbproj"
"Building docs with project file: $ProjFile"
$MSBuild = "$Env:SYSTEMROOT\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
# build it!
& $MSBuild "$ProjFile"
# remove files left over
Remove-Item $BuildRoot\* -include csharp-api-docs.shfbproj_*
# copy our custom styles in
Copy-Item $BuildRoot\ApiDocs\TOC.css $OutputPath\TOC.css
""
"Done!"
+2 -4
View File
@@ -26,7 +26,7 @@
<dependency id="SharpZipLib" version="[0.86.0, 1.0.0)" />
<dependency id="MySql.Data" version="[6.6.5]" />
<dependency id="xmlrpcnet" version="[2.5.0, 3.0.0)" />
<dependency id="ClientDependency" version="[1.7.0, 2.0.0)" />
<!--<dependency id="ClientDependency" version="[1.7.0, 2.0.0)" />-->
<dependency id="ClientDependency-Mvc" version="[1.7.0, 2.0.0)" />
<dependency id="AutoMapper" version="[3.0.0, 4.0.0)" />
<dependency id="Newtonsoft.Json" version="[4.5.11, 5.0.0)" />
@@ -35,6 +35,7 @@
<files>
<file src="..\_BuildOutput\WebApp\bin\businesslogic.dll" target="lib\businesslogic.dll" />
<file src="..\_BuildOutput\WebApp\bin\businesslogic.xml" target="lib\businesslogic.xml" />
<file src="..\_BuildOutput\WebApp\bin\ClientDependency.Core.dll" target="lib\ClientDependency.Core.dll" />
<file src="..\_BuildOutput\WebApp\bin\cms.dll" target="lib\cms.dll" />
<file src="..\_BuildOutput\WebApp\bin\cms.xml" target="lib\cms.xml" />
<file src="..\_BuildOutput\WebApp\bin\controls.dll" target="lib\controls.dll" />
@@ -45,9 +46,6 @@
<file src="..\_BuildOutput\WebApp\bin\log4net.dll" target="lib\log4net.dll" />
<file src="..\_BuildOutput\WebApp\bin\Microsoft.ApplicationBlocks.Data.dll" target="lib\Microsoft.ApplicationBlocks.Data.dll" />
<file src="..\_BuildOutput\WebApp\bin\Microsoft.Web.Helpers.dll" target="lib\Microsoft.Web.Helpers.dll" />
<file src="..\_BuildOutput\WebApp\bin\Our.Umbraco.uGoLive.47x.dll" target="lib\Our.Umbraco.uGoLive.47x.dll" />
<file src="..\_BuildOutput\WebApp\bin\Our.Umbraco.uGoLive.Checks.dll" target="lib\Our.Umbraco.uGoLive.Checks.dll" />
<file src="..\_BuildOutput\WebApp\bin\Our.Umbraco.uGoLive.dll" target="lib\Our.Umbraco.uGoLive.dll" />
<file src="..\_BuildOutput\WebApp\bin\SQLCE4Umbraco.dll" target="lib\SQLCE4Umbraco.dll" />
<file src="..\_BuildOutput\WebApp\bin\System.Data.SqlServerCe.dll" target="lib\System.Data.SqlServerCe.dll" />
<file src="..\_BuildOutput\WebApp\bin\System.Data.SqlServerCe.Entity.dll" target="lib\System.Data.SqlServerCe.Entity.dll" />
-1
View File
@@ -37,7 +37,6 @@
<file src="..\_BuildOutput\WebApp\App_Data\**" target="UmbracoFiles\App_Data" />
<file src="..\_BuildOutput\WebApp\App_Plugins\**" target="UmbracoFiles\App_Plugins" />
<file src="..\_BuildOutput\WebApp\config\splashes\**" target="UmbracoFiles\config\splashes" />
<file src="..\_BuildOutput\WebApp\install\**" target="UmbracoFiles\install" />
<file src="..\_BuildOutput\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
<file src="..\_BuildOutput\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
<file src="..\_BuildOutput\WebApp\Global.asax" target="UmbracoFiles\Global.asax" />
Binary file not shown.
+12 -27
View File
@@ -18,13 +18,13 @@
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="http://www.myget.org/F/umbracocore/" />
<PackageSource Include="http://www.myget.org/F/umbracocore/" />
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
@@ -41,7 +41,7 @@
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
@@ -50,9 +50,14 @@
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
@@ -70,7 +75,6 @@
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
@@ -119,7 +123,7 @@
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
@@ -131,23 +135,4 @@
</Code>
</Task>
</UsingTask>
<UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<EnvKey ParameterType="System.String" Required="true" />
<EnvValue ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
}
catch {
}
]]>
</Code>
</Task>
</UsingTask>
</Project>
+7
View File
@@ -42,6 +42,13 @@ namespace SqlCE4Umbraco
{
var sqlCeEngine = new SqlCeEngine(ConnectionString);
sqlCeEngine.CreateDatabase();
// SD: Pretty sure this should be in a using clause but i don't want to cause unknown side-effects here
// since it's been like this for quite some time
//using (var sqlCeEngine = new SqlCeEngine(ConnectionString))
//{
// sqlCeEngine.CreateDatabase();
//}
}
}
+3
View File
@@ -165,6 +165,9 @@ namespace Umbraco.Core
/// </remarks>
internal string OriginalRequestUrl { get; set; }
/// <summary>
/// Checks if the version configured matches the assembly version
/// </summary>
private bool Configured
{
get
+10
View File
@@ -160,5 +160,15 @@ namespace Umbraco.Core
{
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;
}
}
}
+7 -1
View File
@@ -1,3 +1,5 @@
using System;
namespace Umbraco.Core.Cache
{
@@ -9,6 +11,7 @@ namespace Umbraco.Core.Cache
public const string ApplicationTreeCacheKey = "ApplicationTreeCache";
public const string ApplicationsCacheKey = "ApplicationCache";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
public const string UserTypeCacheKey = "UserTypeCache";
public const string ContentItemCacheKey = "contentItem";
@@ -24,13 +27,16 @@ namespace Umbraco.Core.Cache
public const string MemberLibraryCacheKey = "UL_GetMember";
public const string MemberBusinessLogicCacheKey = "MemberCacheItem_";
public const string TemplateFrontEndCacheKey = "template";
public const string TemplateBusinessLogicCacheKey = "UmbracoTemplateCache";
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")]
public const string UserCacheKey = "UmbracoUser";
public const string UserPermissionsCacheKey = "UmbracoUserPermissions";
public const string ContentTypeCacheKey = "UmbracoContentType";
@@ -6,7 +6,7 @@ using System.Threading;
namespace Umbraco.Core.Cache
{
internal abstract class DictionaryCacheProdiverBase : ICacheProvider
internal abstract class DictionaryCacheProviderBase : ICacheProvider
{
protected static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
protected abstract DictionaryCacheWrapper DictionaryCache { get; }
@@ -10,7 +10,7 @@ namespace Umbraco.Core.Cache
/// <summary>
/// A cache provider that caches items in the HttpContext.Items
/// </summary>
internal class HttpRequestCacheProvider : DictionaryCacheProdiverBase
internal class HttpRequestCacheProvider : DictionaryCacheProviderBase
{
private readonly Func<HttpContextBase> _context;
@@ -12,7 +12,7 @@ namespace Umbraco.Core.Cache
/// <summary>
/// A CacheProvider that wraps the logic of the HttpRuntime.Cache
/// </summary>
internal class HttpRuntimeCacheProvider : DictionaryCacheProdiverBase, IRuntimeCacheProvider
internal class HttpRuntimeCacheProvider : DictionaryCacheProviderBase, IRuntimeCacheProvider
{
private readonly System.Web.Caching.Cache _cache;
private readonly DictionaryCacheWrapper _wrapper;
+1 -1
View File
@@ -27,7 +27,7 @@ namespace Umbraco.Core
/// <summary>
/// Gets the <see cref="ICacheRefresher"/> implementations.
/// </summary>
public IEnumerable<ICacheRefresher> CacheResolvers
public IEnumerable<ICacheRefresher> CacheRefreshers
{
get
{
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Configuration
}
/// <summary>
/// Increases the version number in ClientDependency.config by 1
/// Changes the version number in ClientDependency.config to a random value to avoid stale caches
/// </summary>
internal bool IncreaseVersionNumber()
{
@@ -28,9 +28,9 @@ namespace Umbraco.Core.Configuration
var versionAttribute = clientDependencyConfigXml.Root.Attribute("version");
int oldVersion;
int.TryParse(versionAttribute.Value, out oldVersion);
var newVersion = oldVersion + 1;
//Set the new version to the hashcode of now
var oldVersion = versionAttribute.Value;
var newVersion = Math.Abs(DateTime.UtcNow.GetHashCode());
versionAttribute.SetValue(newVersion);
clientDependencyConfigXml.Save(_fileName, SaveOptions.DisableFormatting);
@@ -6,10 +6,13 @@ using System.Web;
using System.Web.Configuration;
using System.Web.Hosting;
using System.Web.Routing;
using System.Web.Security;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Security;
namespace Umbraco.Core.Configuration
{
@@ -38,7 +41,7 @@ namespace Umbraco.Core.Configuration
private static string _reservedUrls;
//ensure the built on (non-changeable) reserved paths are there at all times
private const string StaticReservedPaths = "~/app_plugins/,~/install/,";
private const string StaticReservedUrls = "~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd,";
private const string StaticReservedUrls = "~/config/splashes/booting.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd,";
#endregion
@@ -259,7 +262,38 @@ namespace Umbraco.Core.Configuration
SaveSetting("umbracoConfigurationStatus", value);
}
}
/// <summary>
/// Gets or sets the Umbraco members membership providers' useLegacyEncoding state. This will return a boolean
/// </summary>
/// <value>The useLegacyEncoding status.</value>
public static bool UmbracoMembershipProviderLegacyEncoding
{
get
{
return IsConfiguredMembershipProviderUsingLegacyEncoding(Constants.Conventions.Member.UmbracoMemberProviderName);
}
set
{
SetMembershipProvidersLegacyEncoding(Constants.Conventions.Member.UmbracoMemberProviderName, value);
}
}
/// <summary>
/// Gets or sets the Umbraco users membership providers' useLegacyEncoding state. This will return a boolean
/// </summary>
/// <value>The useLegacyEncoding status.</value>
public static bool UmbracoUsersMembershipProviderLegacyEncoding
{
get
{
return IsConfiguredMembershipProviderUsingLegacyEncoding(Constants.Conventions.User.UmbracoUsersProviderName);
}
set
{
SetMembershipProvidersLegacyEncoding(Constants.Conventions.User.UmbracoUsersProviderName, value);
}
}
/// <summary>
/// Saves a setting into the configuration file.
@@ -268,7 +302,7 @@ namespace Umbraco.Core.Configuration
/// <param name="value">Value of the setting to be saved.</param>
internal static void SaveSetting(string key, string value)
{
var fileName = IOHelper.MapPath(string.Format("{0}/appSettings.config", SystemDirectories.Config));
var fileName = IOHelper.MapPath(string.Format("{0}/web.config", SystemDirectories.Root));
var xml = XDocument.Load(fileName, LoadOptions.PreserveWhitespace);
var appSettings = xml.Root.DescendantsAndSelf("appSettings").Single();
@@ -290,7 +324,7 @@ namespace Umbraco.Core.Configuration
/// <param name="key">Key of the setting to be removed.</param>
internal static void RemoveSetting(string key)
{
var fileName = IOHelper.MapPath(string.Format("{0}/appSettings.config", SystemDirectories.Config));
var fileName = IOHelper.MapPath(string.Format("{0}/web.config", SystemDirectories.Root));
var xml = XDocument.Load(fileName, LoadOptions.PreserveWhitespace);
var appSettings = xml.Root.DescendantsAndSelf("appSettings").Single();
@@ -301,7 +335,51 @@ namespace Umbraco.Core.Configuration
setting.Remove();
xml.Save(fileName, SaveOptions.DisableFormatting);
ConfigurationManager.RefreshSection("appSettings");
}
}
private static void SetMembershipProvidersLegacyEncoding(string providerName, bool useLegacyEncoding)
{
//check if this can even be configured.
var membershipProvider = Membership.Providers[providerName] as MembershipProviderBase;
if (membershipProvider == null)
{
return;
}
if (membershipProvider.GetType().Namespace == "umbraco.providers.members")
{
//its the legacy one, this cannot be changed
return;
}
var webConfigFilename = IOHelper.MapPath(string.Format("{0}/web.config", SystemDirectories.Root));
var webConfigXml = XDocument.Load(webConfigFilename, LoadOptions.PreserveWhitespace);
var membershipConfigs = webConfigXml.XPathSelectElements("configuration/system.web/membership/providers/add").ToList();
if (membershipConfigs.Any() == false)
return;
var provider = membershipConfigs.SingleOrDefault(c => c.Attribute("name") != null && c.Attribute("name").Value == providerName);
if (provider == null)
return;
provider.SetAttributeValue("useLegacyEncoding", useLegacyEncoding);
webConfigXml.Save(webConfigFilename, SaveOptions.DisableFormatting);
}
private static bool IsConfiguredMembershipProviderUsingLegacyEncoding(string providerName)
{
//check if this can even be configured.
var membershipProvider = Membership.Providers[providerName] as MembershipProviderBase;
if (membershipProvider == null)
{
return false;
}
return membershipProvider.UseLegacyEncoding;
}
/// <summary>
@@ -697,8 +775,12 @@ namespace Umbraco.Core.Configuration
StartsWithContainer _newReservedList = new StartsWithContainer();
foreach (string reservedUrl in _reservedUrlsCache.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries))
{
if (string.IsNullOrWhiteSpace(reservedUrl))
continue;
//resolves the url to support tilde chars
string reservedUrlTrimmed = IOHelper.ResolveUrl(reservedUrl).Trim().ToLower();
string reservedUrlTrimmed = IOHelper.ResolveUrl(reservedUrl.Trim()).Trim().ToLower();
if (reservedUrlTrimmed.Length > 0)
_newReservedList.Add(reservedUrlTrimmed);
}
@@ -706,8 +788,11 @@ namespace Umbraco.Core.Configuration
foreach (string reservedPath in _reservedPathsCache.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries))
{
bool trimEnd = !reservedPath.EndsWith("/");
if (string.IsNullOrWhiteSpace(reservedPath))
continue;
//resolves the url to support tilde chars
string reservedPathTrimmed = IOHelper.ResolveUrl(reservedPath).Trim().ToLower();
string reservedPathTrimmed = IOHelper.ResolveUrl(reservedPath.Trim()).Trim().ToLower();
if (reservedPathTrimmed.Length > 0)
_newReservedList.Add(reservedPathTrimmed + (reservedPathTrimmed.EndsWith("/") ? "" : "/"));
@@ -27,7 +27,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
return new OptionalInnerTextConfigurationElement<bool>(
(InnerTextConfigurationElement<bool>)this["ResolveUrlsFromTextString"],
//set the default
true);
false);
}
}
@@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Configuration;
using System.Configuration;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
internal class ContentImagingElement : ConfigurationElement
{
[ConfigurationProperty("imageFileTypes")]
internal CommaDelimitedConfigurationElement ImageFileTypes
{
@@ -10,6 +10,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
bool RemoveDoubleDashes { get; }
bool ConvertUrlsToAscii { get; }
IEnumerable<IChar> CharCollection { get; }
}
}
@@ -121,6 +121,11 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
get { return UrlReplacing.RemoveDoubleDashes; }
}
bool IRequestHandlerSection.ConvertUrlsToAscii
{
get { return UrlReplacing.ConvertUrlsToAscii; }
}
IEnumerable<IChar> IRequestHandlerSection.CharCollection
{
get { return UrlReplacing.CharCollection; }
@@ -36,7 +36,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
return new OptionalInnerTextConfigurationElement<string>(
(InnerTextConfigurationElement<string>)this["authCookieName"],
//set the default
"UMB_UCONTEXT");
Constants.Web.AuthCookieName);
}
}
@@ -11,6 +11,12 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
get { return (bool) base["removeDoubleDashes"]; }
}
[ConfigurationProperty("toAscii", DefaultValue = false)]
internal bool ConvertUrlsToAscii
{
get { return (bool)base["toAscii"]; }
}
[ConfigurationCollection(typeof(CharCollection), AddItemName = "char")]
[ConfigurationProperty("", IsDefaultCollection = true)]
internal CharCollection CharCollection
@@ -12,7 +12,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
return new OptionalInnerTextConfigurationElement<string>(
(InnerTextConfigurationElement<string>)this["DefaultBackofficeProvider"],
//set the default
"UsersMembershipProvider");
Constants.Conventions.User.UmbracoUsersProviderName);
}
}
@@ -5,7 +5,7 @@ namespace Umbraco.Core.Configuration
{
public class UmbracoVersion
{
private static readonly Version Version = new Version("7.0.0");
private static readonly Version Version = new Version("7.1.0");
/// <summary>
/// Gets the current version of Umbraco.
@@ -23,7 +23,7 @@ namespace Umbraco.Core.Configuration
/// Gets the version comment (like beta or RC).
/// </summary>
/// <value>The version comment.</value>
public static string CurrentComment { get { return ""; } }
public static string CurrentComment { get { return "beta"; } }
// Get the version of the umbraco.dll by looking at a class in that dll
// Had to do it like this due to medium trust issues, see: http://haacked.com/archive/2010/11/04/assembly-location-and-medium-trust.aspx
+106 -137
View File
@@ -85,7 +85,7 @@ namespace Umbraco.Core
/// <summary>
/// MediaType alias for a folder.
/// </summary>
/// </summary>
public const string Folder = "Folder";
/// <summary>
@@ -94,9 +94,18 @@ namespace Umbraco.Core
public const string Image = "Image";
}
/// <summary>
/// Constants for Umbraco user
/// </summary>
public static class User
{
public static readonly string UmbracoUsersProviderName = "UsersMembershipProvider";
}
/// <summary>
/// Constants for Umbraco Member property aliases.
/// </summary>
/// </summary>
public static class Member
{
/// <summary>
@@ -111,191 +120,149 @@ namespace Umbraco.Core
/// <summary>
/// Property alias for a Members Password Question
/// </summary>
public const string PasswordQuestion = "umbracoPasswordRetrievalQuestionPropertyTypeAlias";
public const string PasswordQuestion = "umbracoMemberPasswordRetrievalQuestion";
public const string PasswordQuestionLabel = "Password Question";
/// <summary>
/// Property alias for Members Password Answer
/// </summary>
public const string PasswordAnswer = "umbracoPasswordRetrievalAnswerPropertyTypeAlias";
public const string PasswordAnswer = "umbracoMemberPasswordRetrievalAnswer";
public const string PasswordAnswerLabel = "Password Answer";
/// <summary>
/// Property alias for the Comments on a Member
/// </summary>
public const string Comments = "umbracoCommentPropertyTypeAlias";
public const string Comments = "umbracoMemberComments";
public const string CommentsLabel = "Comments";
/// <summary>
/// Property alias for the Approved boolean of a Member
/// </summary>
public const string IsApproved = "umbracoApprovePropertyTypeAlias";
public const string IsApproved = "umbracoMemberApproved";
public const string IsApprovedLabel = "Is Approved";
/// <summary>
/// Property alias for the Locked out boolean of a Member
/// </summary>
public const string IsLockedOut = "umbracoLockPropertyTypeAlias";
public const string IsLockedOut = "umbracoMemberLockedOut";
public const string IsLockedOutLabel = "Is Locked Out";
/// <summary>
/// Property alias for the last date the Member logged in
/// </summary>
public const string LastLoginDate = "umbracoLastLoginPropertyTypeAlias";
public const string LastLoginDate = "umbracoMemberLastLogin";
public const string LastLoginDateLabel = "Last Login Date";
/// <summary>
/// Property alias for the last date a Member changed its password
/// </summary>
public const string LastPasswordChangeDate = "umbracoMemberLastPasswordChange";
public const string LastPasswordChangeDate = "umbracoMemberLastPasswordChangeDate";
public const string LastPasswordChangeDateLabel = "Last Password Change Date";
/// <summary>
/// Property alias for the last date a Member was locked out
/// </summary>
public const string LastLockoutDate = "umbracoMemberLastLockout";
public const string LastLockoutDate = "umbracoMemberLastLockoutDate";
public const string LastLockoutDateLabel = "Last Lockout Date";
/// <summary>
/// Property alias for the number of failed login attemps
/// </summary>
public const string FailedPasswordAttempts = "umbracoFailedPasswordAttemptsPropertyTypeAlias";
public const string FailedPasswordAttempts = "umbracoMemberFailedPasswordAttempts";
public const string FailedPasswordAttemptsLabel = "Failed Password Attempts";
internal static Dictionary<string, PropertyType>
StandardPropertyTypeStubs = new Dictionary<string, PropertyType>
{
{
Comments,
new PropertyType(
PropertyEditors
.TextboxMultipleAlias,
DataTypeDatabaseType
.Ntext)
{
Alias = Comments,
Name =
CommentsLabel
}
},
{
FailedPasswordAttempts,
new PropertyType(
PropertyEditors
.IntegerAlias,
DataTypeDatabaseType
.Integer)
{
Alias =
FailedPasswordAttempts,
Name =
FailedPasswordAttemptsLabel
}
},
{
IsApproved,
new PropertyType(
PropertyEditors
.TrueFalseAlias,
DataTypeDatabaseType
.Integer)
{
Alias = IsApproved,
Name =
IsApprovedLabel
}
},
{
IsLockedOut,
new PropertyType(
PropertyEditors
.TrueFalseAlias,
DataTypeDatabaseType
.Integer)
{
Alias =
IsLockedOut,
Name =
IsLockedOutLabel
}
},
{
LastLockoutDate,
new PropertyType(
PropertyEditors.DateAlias,
DataTypeDatabaseType
.Date)
{
Alias =
LastLockoutDate,
Name =
LastLockoutDateLabel
}
},
{
LastLoginDate,
new PropertyType(
PropertyEditors.DateAlias,
DataTypeDatabaseType
.Date)
{
Alias =
LastLoginDate,
Name =
LastLoginDateLabel
}
},
{
LastPasswordChangeDate,
new PropertyType(
PropertyEditors.DateAlias,
DataTypeDatabaseType
.Date)
{
Alias =
LastPasswordChangeDate,
Name =
LastPasswordChangeDateLabel
}
},
{
PasswordAnswer,
new PropertyType(
PropertyEditors
.TextboxAlias,
DataTypeDatabaseType
.Nvarchar)
{
Alias =
PasswordAnswer,
Name =
PasswordAnswerLabel
}
},
{
PasswordQuestion,
new PropertyType(
PropertyEditors
.TextboxAlias,
DataTypeDatabaseType
.Nvarchar)
{
Alias =
PasswordQuestion,
Name =
PasswordQuestionLabel
}
}
};
/// <summary>
/// Group name to put the membership properties on
/// </summary>
internal const string StandardPropertiesGroupName = "Membership";
internal static Dictionary<string, PropertyType> GetStandardPropertyTypeStubs()
{
return new Dictionary<string, PropertyType>
{
{
Comments,
new PropertyType(PropertyEditors.TextboxMultipleAlias, DataTypeDatabaseType.Ntext, true)
{
Alias = Comments,
Name = CommentsLabel
}
},
{
FailedPasswordAttempts,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Integer, true)
{
Alias = FailedPasswordAttempts,
Name = FailedPasswordAttemptsLabel
}
},
{
IsApproved,
new PropertyType(PropertyEditors.TrueFalseAlias, DataTypeDatabaseType.Integer, true)
{
Alias = IsApproved,
Name = IsApprovedLabel
}
},
{
IsLockedOut,
new PropertyType(PropertyEditors.TrueFalseAlias, DataTypeDatabaseType.Integer, true)
{
Alias = IsLockedOut,
Name = IsLockedOutLabel
}
},
{
LastLockoutDate,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Date, true)
{
Alias = LastLockoutDate,
Name = LastLockoutDateLabel
}
},
{
LastLoginDate,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Date, true)
{
Alias = LastLoginDate,
Name = LastLoginDateLabel
}
},
{
LastPasswordChangeDate,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Date, true)
{
Alias = LastPasswordChangeDate,
Name = LastPasswordChangeDateLabel
}
},
{
PasswordAnswer,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Nvarchar, true)
{
Alias = PasswordAnswer,
Name = PasswordAnswerLabel
}
},
{
PasswordQuestion,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Nvarchar, true)
{
Alias = PasswordQuestion,
Name = PasswordQuestionLabel
}
}
};
}
}
/// <summary>
@@ -306,7 +273,9 @@ namespace Umbraco.Core
/// <summary>
/// MemberType alias for default member type.
/// </summary>
public const string Member = "Member";
public const string DefaultAlias = "Member";
public const string SystemDefaultProtectType = "_umbracoSystemDefaultProtectType";
}
/// <summary>
@@ -139,7 +139,7 @@ namespace Umbraco.Core
///// <summary>
///// Alias for the Image Cropper datatype.
///// </summary>
//public const string ImageCropperAlias = "Umbraco.ImageCropper";
public const string ImageCropperAlias = "Umbraco.ImageCropper";
/// <summary>
/// Guid for the Integer datatype.
+22
View File
@@ -0,0 +1,22 @@
namespace Umbraco.Core
{
public static partial class Constants
{
/// <summary>
/// Defines the identifiers for Umbraco system nodes.
/// </summary>
public static class Web
{
/// <summary>
/// The preview cookie name
/// </summary>
public const string PreviewCookieName = "UMB_PREVIEW";
/// <summary>
/// The auth cookie name
/// </summary>
public const string AuthCookieName = "UMB_UCONTEXT";
}
}
}
+46
View File
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
namespace Umbraco.Core
{
internal static class ControlExtensions
{
/// <summary>
/// Recursively finds a control with the specified identifier.
/// </summary>
/// <typeparam name="T">
/// The type of control to be found.
/// </typeparam>
/// <param name="parent">
/// The parent control from which the search will start.
/// </param>
/// <param name="id">
/// The identifier of the control to be found.
/// </param>
/// <returns>
/// The control with the specified identifier, otherwise <see langword="null"/> if the control
/// is not found.
/// </returns>
public static T FindControlRecursive<T>(this Control parent, string id) where T : Control
{
if ((parent is T) && (parent.ID == id))
{
return (T)parent;
}
foreach (Control control in parent.Controls)
{
var foundControl = FindControlRecursive<T>(control, id);
if (foundControl != null)
{
return foundControl;
}
}
return default(T);
}
}
}
+12 -17
View File
@@ -64,7 +64,7 @@ namespace Umbraco.Core
InitializeProfilerResolver();
_timer = DisposableTimer.DebugDuration<CoreBootManager>("Umbraco application starting", "Umbraco application startup complete");
CreateApplicationCache();
//Create the legacy prop-eds mapping
@@ -223,10 +223,7 @@ namespace Umbraco.Core
throw new InvalidOperationException("The boot manager has already been completed");
FreezeResolution();
//stop the timer and log the output
_timer.Dispose();
//call OnApplicationStarting of each application events handler
ApplicationEventsResolver.Current.ApplicationEventHandlers
.ForEach(x => x.OnApplicationStarted(UmbracoApplication, ApplicationContext));
@@ -244,6 +241,9 @@ namespace Umbraco.Core
// we're ready to serve content!
ApplicationContext.IsReady = true;
//stop the timer and log the output
_timer.Dispose();
return this;
}
@@ -268,7 +268,9 @@ namespace Umbraco.Core
{
new Lazy<Type>(() => typeof (RequiredManifestValueValidator)),
new Lazy<Type>(() => typeof (RegexValidator)),
new Lazy<Type>(() => typeof (DelimitedManifestValueValidator))
new Lazy<Type>(() => typeof (DelimitedManifestValueValidator)),
new Lazy<Type>(() => typeof (EmailValidator)),
new Lazy<Type>(() => typeof (IntegerValidator)),
});
//by default we'll use the standard configuration based sync
@@ -285,7 +287,7 @@ namespace Umbraco.Core
() => PluginManager.Current.ResolveAssignedMapperTypes());
RepositoryResolver.Current = new RepositoryResolver(
new RepositoryFactory());
new RepositoryFactory(ApplicationCache));
SqlSyntaxProvidersResolver.Current = new SqlSyntaxProvidersResolver(
new[] { typeof(MySqlSyntaxProvider), typeof(SqlCeSyntaxProvider), typeof(SqlServerSyntaxProvider) })
@@ -322,17 +324,10 @@ namespace Umbraco.Core
// fixme - why not use the following syntax?
//PluginManager.Current.ResolveTypes<IPropertyValueConverter>());
// use the new DefaultShortStringHelper but sort-of remain compatible
// - use UmbracoSettings UrlReplaceCharacters
// - allow underscores in terms, allow leading digits
// use the new DefaultShortStringHelper
ShortStringHelperResolver.Current = new ShortStringHelperResolver(
new DefaultShortStringHelper()
.WithConfig(CleanStringType.Url, DefaultShortStringHelper.ApplyUrlReplaceCharacters,
allowUnderscoreInTerm: true, allowLeadingDigits: true));
// that was the old one
//ShortStringHelperResolver.Current = new ShortStringHelperResolver(
// new LegacyShortStringHelper());
//new LegacyShortStringHelper());
new DefaultShortStringHelper().WithDefaultConfig());
UrlSegmentProviderResolver.Current = new UrlSegmentProviderResolver(
typeof (DefaultUrlSegmentProvider));
+189 -78
View File
@@ -113,8 +113,8 @@ namespace Umbraco.Core
public void ConfigureEmbeddedDatabaseConnection()
{
const string providerName = "System.Data.SqlServerCe.4.0";
const string connectionString = @"Data Source=|DataDirectory|\Umbraco.sdf;Flush Interval=1;";
var connectionString = GetEmbeddedDatabaseConnectionString();
SaveConnectionString(connectionString, providerName);
var path = Path.Combine(GlobalSettings.FullpathToRoot, "App_Data", "Umbraco.sdf");
@@ -122,11 +122,23 @@ namespace Umbraco.Core
{
var engine = new SqlCeEngine(connectionString);
engine.CreateDatabase();
// SD: Pretty sure this should be in a using clause but i don't want to cause unknown side-effects here
// since it's been like this for quite some time
//using (var engine = new SqlCeEngine(connectionString))
//{
// engine.CreateDatabase();
//}
}
Initialize(providerName);
}
public string GetEmbeddedDatabaseConnectionString()
{
return @"Data Source=|DataDirectory|\Umbraco.sdf;Flush Interval=1;";
}
/// <summary>
/// Configure a ConnectionString that has been entered manually.
/// </summary>
@@ -149,27 +161,29 @@ namespace Umbraco.Core
/// <param name="password">Database Password</param>
/// <param name="databaseProvider">Type of the provider to be used (Sql, Sql Azure, Sql Ce, MySql)</param>
public void ConfigureDatabaseConnection(string server, string databaseName, string user, string password, string databaseProvider)
{
string connectionString;
string providerName = "System.Data.SqlClient";
if (databaseProvider.ToLower().Contains("mysql"))
{
providerName = "MySql.Data.MySqlClient";
connectionString = string.Format("Server={0}; Database={1};Uid={2};Pwd={3}", server, databaseName, user, password);
}
else if (databaseProvider.ToLower().Contains("azure"))
{
connectionString = BuildAzureConnectionString(server, databaseName, user, password);
}
else
{
connectionString = string.Format("server={0};database={1};user id={2};password={3}", server, databaseName, user, password);
}
{
string providerName;
var connectionString = GetDatabaseConnectionString(server, databaseName, user, password, databaseProvider, out providerName);
SaveConnectionString(connectionString, providerName);
Initialize(providerName);
}
public string GetDatabaseConnectionString(string server, string databaseName, string user, string password, string databaseProvider, out string providerName)
{
providerName = "System.Data.SqlClient";
if (databaseProvider.ToLower().Contains("mysql"))
{
providerName = "MySql.Data.MySqlClient";
return string.Format("Server={0}; Database={1};Uid={2};Pwd={3}", server, databaseName, user, password);
}
if (databaseProvider.ToLower().Contains("azure"))
{
return BuildAzureConnectionString(server, databaseName, user, password);
}
return string.Format("server={0};database={1};user id={2};password={3}", server, databaseName, user, password);
}
/// <summary>
/// Configures a ConnectionString for the Umbraco database that uses Microsoft SQL Server integrated security.
/// </summary>
@@ -178,12 +192,16 @@ namespace Umbraco.Core
public void ConfigureIntegratedSecurityDatabaseConnection(string server, string databaseName)
{
const string providerName = "System.Data.SqlClient";
string connectionString = String.Format("Server={0};Database={1};Integrated Security=true", server, databaseName);
var connectionString = GetIntegratedSecurityDatabaseConnectionString(server, databaseName);
SaveConnectionString(connectionString, providerName);
Initialize(providerName);
}
public string GetIntegratedSecurityDatabaseConnectionString(string server, string databaseName)
{
return String.Format("Server={0};Database={1};Integrated Security=true", server, databaseName);
}
internal string BuildAzureConnectionString(string server, string databaseName, string user, string password)
{
if (server.Contains(".") && ServerStartsWithTcp(server) == false)
@@ -250,7 +268,7 @@ namespace Umbraco.Core
_connectionString = connectionString;
_providerName = providerName;
var fileName = IOHelper.MapPath(string.Format("{0}/connectionStrings.config", SystemDirectories.Config));
var fileName = IOHelper.MapPath(string.Format("{0}/web.config", SystemDirectories.Root));
var xml = XDocument.Load(fileName, LoadOptions.PreserveWhitespace);
var connectionstrings = xml.Root.DescendantsAndSelf("connectionStrings").Single();
@@ -424,24 +442,19 @@ namespace Umbraco.Core
return _result;
}
internal Result CreateDatabaseSchemaAndDataOrUpgrade()
internal Result CreateDatabaseSchemaAndData()
{
if (_configured == false || (string.IsNullOrEmpty(_connectionString) || string.IsNullOrEmpty(ProviderName)))
var readyForInstall = CheckReadyForInstall();
if (readyForInstall.Success == false)
{
return new Result
{
Message =
"Database configuration is invalid. Please check that the entered database exists and that the provided username and password has write access to the database.",
Success = false,
Percentage = "10"
};
return readyForInstall.Result;
}
try
{
LogHelper.Info<DatabaseContext>("Database configuration status: Started");
var message = string.Empty;
string message;
var database = new UmbracoDatabase(_connectionString, ProviderName);
var supportsCaseInsensitiveQueries = SqlSyntaxContext.SqlSyntaxProvider.SupportsCaseInsensitiveQueries(database);
@@ -456,50 +469,73 @@ namespace Umbraco.Core
return new Result { Message = message, Success = false, Percentage = "15" };
}
else if (supportsCaseInsensitiveQueries == null)
{
message = "<p>&nbsp;</p><p>Warning! Could not check if your database type supports case insensitive queries. <br />We currently do not support these databases that do not support case insensitive queries.</p>" +
"<p>You can check this by looking for the following setting in your my.ini file in your MySQL installation directory:</p>" +
"<pre>lower_case_table_names=1</pre><br />" +
"<p>Note: Make sure to check with your hosting provider if they support case insensitive queries as well.</p>" +
"<p>For more technical information on case sensitivity in MySQL, have a look at " +
"<a href='http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html'>the documentation on the subject</a></p>";
}
else
{
if (SqlSyntaxContext.SqlSyntaxProvider.GetType() == typeof(MySqlSyntaxProvider))
{
message = "<p>&nbsp;</p><p>Congratulations, the database step ran successfully!</p>" +
"<p>Note: You're using MySQL and the database instance you're connecting to seems to support case insensitive queries.</p>" +
"<p>However, your hosting provider may not support this option. Umbraco does not currently support MySQL installs that do not support case insensitive queries</p>" +
"<p>Make sure to check with your hosting provider if they support case insensitive queries as well.</p>" +
"<p>They can check this by looking for the following setting in the my.ini file in their MySQL installation directory:</p>" +
"<pre>lower_case_table_names=1</pre><br />" +
"<p>For more technical information on case sensitivity in MySQL, have a look at " +
"<a href='http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html'>the documentation on the subject</a></p>";
}
}
message = GetResultMessageForMySql(supportsCaseInsensitiveQueries);
var schemaResult = ValidateDatabaseSchema();
var installedVersion = schemaResult.DetermineInstalledVersion();
//If Configuration Status is empty and the determined version is "empty" its a new install - otherwise upgrade the existing
if (string.IsNullOrEmpty(GlobalSettings.ConfigurationStatus) && installedVersion.Equals(new Version(0, 0, 0)))
{
database.CreateDatabaseSchema();
message = message + "<p>Installation completed!</p>";
//now that everything is done, we need to determine the version of SQL server that is executing
LogHelper.Info<DatabaseContext>("Database configuration status: " + message);
return new Result { Message = message, Success = true, Percentage = "100" };
}
else
{
var configuredVersion = string.IsNullOrEmpty(GlobalSettings.ConfigurationStatus)
//we need to do an upgrade so return a new status message and it will need to be done during the next step
LogHelper.Info<DatabaseContext>("Database requires upgrade");
message = "<p>Upgrading database, this may take some time...</p>";
return new Result
{
RequiresUpgrade = true,
Message = message,
Success = true,
Percentage = "30"
};
}
catch (Exception ex)
{
return HandleInstallException(ex);
}
}
/// <summary>
/// This assumes all of the previous checks are done!
/// </summary>
/// <returns></returns>
internal Result UpgradeSchemaAndData()
{
var readyForInstall = CheckReadyForInstall();
if (readyForInstall.Success == false)
{
return readyForInstall.Result;
}
try
{
LogHelper.Info<DatabaseContext>("Database upgrade started");
var database = new UmbracoDatabase(_connectionString, ProviderName);
var supportsCaseInsensitiveQueries = SqlSyntaxContext.SqlSyntaxProvider.SupportsCaseInsensitiveQueries(database);
var message = GetResultMessageForMySql(supportsCaseInsensitiveQueries);
var schemaResult = ValidateDatabaseSchema();
var installedVersion = schemaResult.DetermineInstalledVersion();
//DO the upgrade!
var configuredVersion = string.IsNullOrEmpty(GlobalSettings.ConfigurationStatus)
? installedVersion
: new Version(GlobalSettings.ConfigurationStatus);
var targetVersion = UmbracoVersion.Current;
var runner = new MigrationRunner(configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName);
var upgraded = runner.Execute(database, true);
message = message + "<p>Upgrade completed!</p>";
}
var targetVersion = UmbracoVersion.Current;
var runner = new MigrationRunner(configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName);
var upgraded = runner.Execute(database, true);
message = message + "<p>Upgrade completed!</p>";
//now that everything is done, we need to determine the version of SQL server that is executing
@@ -509,29 +545,104 @@ namespace Umbraco.Core
}
catch (Exception ex)
{
LogHelper.Info<DatabaseContext>("Database configuration failed with the following error and stack trace: " + ex.Message + "\n" + ex.StackTrace);
if (_result != null)
{
LogHelper.Info<DatabaseContext>("The database schema validation produced the following summary: \n" + _result.GetSummary());
}
return new Result
{
Message =
"The database configuration failed with the following message: " + ex.Message +
"\n Please check log file for additional information (can be found in '/App_Data/Logs/UmbracoTraceLog.txt')",
Success = false,
Percentage = "90"
};
return HandleInstallException(ex);
}
}
private string GetResultMessageForMySql(bool? supportsCaseInsensitiveQueries)
{
if (supportsCaseInsensitiveQueries == null)
{
return "<p>&nbsp;</p><p>Warning! Could not check if your database type supports case insensitive queries. <br />We currently do not support these databases that do not support case insensitive queries.</p>" +
"<p>You can check this by looking for the following setting in your my.ini file in your MySQL installation directory:</p>" +
"<pre>lower_case_table_names=1</pre><br />" +
"<p>Note: Make sure to check with your hosting provider if they support case insensitive queries as well.</p>" +
"<p>For more technical information on case sensitivity in MySQL, have a look at " +
"<a href='http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html'>the documentation on the subject</a></p>";
}
if (SqlSyntaxContext.SqlSyntaxProvider.GetType() == typeof(MySqlSyntaxProvider))
{
return "<p>&nbsp;</p><p>Congratulations, the database step ran successfully!</p>" +
"<p>Note: You're using MySQL and the database instance you're connecting to seems to support case insensitive queries.</p>" +
"<p>However, your hosting provider may not support this option. Umbraco does not currently support MySQL installs that do not support case insensitive queries</p>" +
"<p>Make sure to check with your hosting provider if they support case insensitive queries as well.</p>" +
"<p>They can check this by looking for the following setting in the my.ini file in their MySQL installation directory:</p>" +
"<pre>lower_case_table_names=1</pre><br />" +
"<p>For more technical information on case sensitivity in MySQL, have a look at " +
"<a href='http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html'>the documentation on the subject</a></p>";
}
return string.Empty;
}
private Attempt<Result> CheckReadyForInstall()
{
if (_configured == false || (string.IsNullOrEmpty(_connectionString) || string.IsNullOrEmpty(ProviderName)))
{
return Attempt.Fail(new Result
{
Message =
"Database configuration is invalid. Please check that the entered database exists and that the provided username and password has write access to the database.",
Success = false,
Percentage = "10"
});
}
return Attempt<Result>.Succeed();
}
private Result HandleInstallException(Exception ex)
{
LogHelper.Info<DatabaseContext>("Database configuration failed with the following error and stack trace: " + ex.Message + "\n" + ex.StackTrace);
if (_result != null)
{
LogHelper.Info<DatabaseContext>("The database schema validation produced the following summary: \n" + _result.GetSummary());
}
return new Result
{
Message =
"The database configuration failed with the following message: " + ex.Message +
"\n Please check log file for additional information (can be found in '/App_Data/Logs/UmbracoTraceLog.txt')",
Success = false,
Percentage = "90"
};
}
internal class Result
{
public bool RequiresUpgrade { get; set; }
public string Message { get; set; }
public bool Success { get; set; }
public string Percentage { get; set; }
}
internal bool IsConnectionStringConfigured(ConnectionStringSettings databaseSettings)
{
var dbIsSqlCe = false;
if (databaseSettings != null && databaseSettings.ProviderName != null)
dbIsSqlCe = databaseSettings.ProviderName == "System.Data.SqlServerCe.4.0";
var sqlCeDatabaseExists = false;
if (dbIsSqlCe)
{
var parts = databaseSettings.ConnectionString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
var dataSourcePart = parts.FirstOrDefault(x => x.InvariantStartsWith("Data Source="));
if (dataSourcePart != null)
{
var datasource = dataSourcePart.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString());
var filePath = datasource.Replace("Data Source=", string.Empty);
sqlCeDatabaseExists = File.Exists(filePath);
}
}
// Either the connection details are not fully specified or it's a SQL CE database that doesn't exist yet
if (databaseSettings == null
|| string.IsNullOrWhiteSpace(databaseSettings.ConnectionString) || string.IsNullOrWhiteSpace(databaseSettings.ProviderName)
|| (dbIsSqlCe && sqlCeDatabaseExists == false))
{
return false;
}
return true;
}
}
}
+25
View File
@@ -18,5 +18,30 @@ namespace Umbraco.Core
return dt.ToString("yyyy-MM-dd HH:mm:ss");
}
public static DateTime TruncateTo(this DateTime dt, DateTruncate truncateTo)
{
if (truncateTo == DateTruncate.Year)
return new DateTime(dt.Year, 0, 0);
if (truncateTo == DateTruncate.Month)
return new DateTime(dt.Year, dt.Month, 0);
if (truncateTo == DateTruncate.Day)
return new DateTime(dt.Year, dt.Month, dt.Day);
if (truncateTo == DateTruncate.Hour)
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0, 0);
if (truncateTo == DateTruncate.Minute)
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0);
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
}
public enum DateTruncate
{
Year,
Month,
Day,
Hour,
Minute,
Second
}
}
}
+25 -6
View File
@@ -15,6 +15,25 @@ namespace Umbraco.Core
///</summary>
internal static class DictionaryExtensions
{
/// <summary>
/// Method to Get a value by the key. If the key doesn't exist it will create a new TVal object for the key and return it.
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TVal"></typeparam>
/// <param name="dict"></param>
/// <param name="key"></param>
/// <returns></returns>
public static TVal GetOrCreate<TKey, TVal>(this IDictionary<TKey, TVal> dict, TKey key)
where TVal : class, new()
{
if (dict.ContainsKey(key) == false)
{
dict.Add(key, new TVal());
}
return dict[key];
}
/// <summary>
/// Updates an item with the specified key with the specified value
/// </summary>
@@ -231,7 +250,7 @@ namespace Umbraco.Core
/// <returns>The contains key ignore case.</returns>
public static bool ContainsKeyIgnoreCase<TValue>(this IDictionary<string, TValue> dictionary, string key)
{
return dictionary.Keys.Any(i => i.Equals(key, StringComparison.CurrentCultureIgnoreCase));
return dictionary.Keys.InvariantContains(key);
}
/// <summary>
@@ -257,9 +276,9 @@ namespace Umbraco.Core
/// <param name="key">The key.</param>
/// <typeparam name="TValue">The type</typeparam>
/// <returns>The entry</returns>
public static TValue GetEntryIgnoreCase<TValue>(this IDictionary<string, TValue> dictionary, string key)
public static TValue GetValueIgnoreCase<TValue>(this IDictionary<string, TValue> dictionary, string key)
{
return dictionary.GetEntryIgnoreCase(key, default(TValue));
return dictionary.GetValueIgnoreCase(key, default(TValue));
}
/// <summary>The get entry ignore case.</summary>
@@ -268,11 +287,11 @@ namespace Umbraco.Core
/// <param name="defaultValue">The default value.</param>
/// <typeparam name="TValue">The type</typeparam>
/// <returns>The entry</returns>
public static TValue GetEntryIgnoreCase<TValue>(this IDictionary<string, TValue> dictionary, string key, TValue defaultValue)
public static TValue GetValueIgnoreCase<TValue>(this IDictionary<string, TValue> dictionary, string key, TValue defaultValue)
{
key = dictionary.Keys.Where(i => i.Equals(key, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
key = dictionary.Keys.FirstOrDefault(i => i.InvariantEquals(key));
return !key.IsNullOrWhiteSpace()
return key.IsNullOrWhiteSpace() == false
? dictionary[key]
: defaultValue;
}
@@ -0,0 +1,52 @@
using System.Collections.Generic;
using System.Xml.Linq;
namespace Umbraco.Core.Events
{
public class ExportEventArgs<TEntity> : CancellableObjectEventArgs<IEnumerable<TEntity>>
{
/// <summary>
/// Constructor accepting a single entity instance
/// </summary>
/// <param name="eventObject"></param>
/// <param name="xml"></param>
/// <param name="canCancel"></param>
public ExportEventArgs(TEntity eventObject, XElement xml, bool canCancel)
: base(new List<TEntity> { eventObject }, canCancel)
{
Xml = xml;
}
/// <summary>
/// Constructor accepting a single entity instance
/// and cancellable by default
/// </summary>
/// <param name="eventObject"></param>
/// <param name="elementName"></param>
public ExportEventArgs(TEntity eventObject, string elementName) : base(new List<TEntity> {eventObject}, true)
{
Xml = new XElement(elementName);
}
protected ExportEventArgs(IEnumerable<TEntity> eventObject, bool canCancel) : base(eventObject, canCancel)
{
}
protected ExportEventArgs(IEnumerable<TEntity> eventObject) : base(eventObject)
{
}
/// <summary>
/// Returns all entities that were exported during the operation
/// </summary>
public IEnumerable<TEntity> ExportedEntities
{
get { return EventObject; }
}
/// <summary>
/// Returns the xml relating to the export event
/// </summary>
public XElement Xml { get; private set; }
}
}
@@ -0,0 +1,50 @@
using System.Collections.Generic;
using System.Xml.Linq;
namespace Umbraco.Core.Events
{
public class ImportEventArgs<TEntity> : CancellableObjectEventArgs<IEnumerable<TEntity>>
{
/// <summary>
/// Constructor accepting an XElement with the xml being imported
/// </summary>
/// <param name="xml"></param>
public ImportEventArgs(XElement xml) : base(new List<TEntity>(), true)
{
Xml = xml;
}
/// <summary>
/// Constructor accepting a list of entities and an XElement with the imported xml
/// </summary>
/// <param name="eventObject"></param>
/// <param name="xml"></param>
/// <param name="canCancel"></param>
public ImportEventArgs(IEnumerable<TEntity> eventObject, XElement xml, bool canCancel)
: base(eventObject, canCancel)
{
Xml = xml;
}
protected ImportEventArgs(IEnumerable<TEntity> eventObject, bool canCancel) : base(eventObject, canCancel)
{
}
protected ImportEventArgs(IEnumerable<TEntity> eventObject) : base(eventObject)
{
}
/// <summary>
/// Returns all entities that were imported during the operation
/// </summary>
public IEnumerable<TEntity> ImportedEntities
{
get { return EventObject; }
}
/// <summary>
/// Returns the xml relating to the import event
/// </summary>
public XElement Xml { get; private set; }
}
}
-3
View File
@@ -49,8 +49,5 @@ namespace Umbraco.Core.Events
{
get { return EventObject; }
}
}
}
+14 -1
View File
@@ -1,4 +1,5 @@
using System.IO;
using System;
using System.IO;
using Umbraco.Core.CodeAnnotations;
namespace Umbraco.Core.IO
@@ -30,5 +31,17 @@ namespace Umbraco.Core.IO
{
return Path.GetFileName(fs.GetFullPath(path));
}
//TODO: Currently this is the only way to do this
internal static void CreateFolder(this IFileSystem fs, string folderPath)
{
var path = fs.GetRelativePath(folderPath);
var tempFile = Path.Combine(path, Guid.NewGuid().ToString("N") + ".tmp");
using (var s = new MemoryStream())
{
fs.AddFile(tempFile, s);
}
fs.DeleteFile(tempFile);
}
}
}
+2
View File
@@ -5,6 +5,8 @@ using Umbraco.Core.CodeAnnotations;
namespace Umbraco.Core.IO
{
//TODO: There is no way to create a directory here without creating a file in a directory and then deleting it
public interface IFileSystem
{
IEnumerable<string> GetDirectories(string path);
+1 -1
View File
@@ -43,7 +43,7 @@ namespace Umbraco.Core.IO
//Replaces tildes with the root dir
public static string ResolveUrl(string virtualPath)
{
if (virtualPath.StartsWith("~"))
if (virtualPath.StartsWith("~"))
return virtualPath.Replace("~", SystemDirectories.Root).Replace("//", "/");
else if (Uri.IsWellFormedUriString(virtualPath, UriKind.Absolute))
return virtualPath;
+34 -6
View File
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using HtmlAgilityPack;
namespace Umbraco.Core.Macros
{
@@ -10,8 +11,8 @@ namespace Umbraco.Core.Macros
/// </summary>
internal class MacroTagParser
{
private static readonly Regex MacroRteContent = new Regex(@"(<div.*?>.*?<!--\s*?)(<\?UMBRACO_MACRO.*?/>)(.*?</div>)", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
private static readonly Regex MacroPersistedFormat = new Regex(@"(<\?UMBRACO_MACRO macroAlias=[""'](\w+?)[""'].+?)(?:/>|>.*?</\?UMBRACO_MACRO>)", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
private static readonly Regex MacroRteContent = new Regex(@"(<!--\s*?)(<\?UMBRACO_MACRO.*?/>)(\s*?-->)", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
private static readonly Regex MacroPersistedFormat = new Regex(@"(<\?UMBRACO_MACRO macroAlias=[""']([\w\.]+?)[""'].+?)(?:/>|>.*?</\?UMBRACO_MACRO>)", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
/// <summary>
/// This formats the persisted string to something useful for the rte so that the macro renders properly since we
@@ -38,8 +39,8 @@ namespace Umbraco.Core.Macros
//<div class="umb-macro-holder myMacro mceNonEditable">
var alias = match.Groups[2].Value;
var sb = new StringBuilder("<div class=\"umb-macro-holder ");
sb.Append(alias);
sb.Append(" mceNonEditable\"");
//sb.Append(alias.ToSafeAlias());
sb.Append("mceNonEditable\"");
foreach (var htmlAttribute in htmlAttributes)
{
sb.Append(" ");
@@ -88,7 +89,34 @@ namespace Umbraco.Core.Macros
/// </remarks>
internal static string FormatRichTextContentForPersistence(string rteContent)
{
return MacroRteContent.Replace(rteContent, match =>
if (string.IsNullOrEmpty(rteContent))
{
return string.Empty;
}
var html = new HtmlDocument();
html.LoadHtml(rteContent);
//get all the comment nodes we want
var commentNodes = html.DocumentNode.SelectNodes("//comment()[contains(., '<?UMBRACO_MACRO')]");
if (commentNodes == null)
{
//There are no macros found, just return the normal content
return rteContent;
}
//replace each containing parent <div> with the comment node itself.
foreach (var c in commentNodes)
{
var div = c.ParentNode;
var divContainer = div.ParentNode;
divContainer.ReplaceChild(c, div);
}
var parsed = html.DocumentNode.OuterHtml;
//now replace all the <!-- and --> with nothing
return MacroRteContent.Replace(parsed, match =>
{
if (match.Groups.Count >= 3)
{
@@ -96,7 +124,7 @@ namespace Umbraco.Core.Macros
return match.Groups[2].Value;
}
//replace with nothing if we couldn't find the syntax for whatever reason
return "";
return string.Empty;
});
}
+47 -12
View File
@@ -25,6 +25,15 @@ namespace Umbraco.Core.Media
return codec.MimeType;
}
/// <summary>
/// Creates the thumbnails if the image is larger than all of the specified ones.
/// </summary>
/// <param name="fs"></param>
/// <param name="fileName"></param>
/// <param name="extension"></param>
/// <param name="originalImage"></param>
/// <param name="additionalThumbSizes"></param>
/// <returns></returns>
internal static IEnumerable<ResizedImage> GenerateMediaThumbnails(
IFileSystem fs,
string fileName,
@@ -32,22 +41,33 @@ namespace Umbraco.Core.Media
Image originalImage,
IEnumerable<int> additionalThumbSizes)
{
// Make default thumbnails
var thumbs = new List<ResizedImage>
{
Resize(fs, fileName, extension, 100, "thumb", originalImage),
Resize(fs, fileName, extension, 500, "big-thumb", originalImage)
};
//make custom ones
foreach (var thumb in additionalThumbSizes.Where(x => x > 0).Distinct())
var result = new List<ResizedImage>();
var allSizes = new List<int> {100, 500};
allSizes.AddRange(additionalThumbSizes.Where(x => x > 0).Distinct());
foreach (var s in allSizes)
{
thumbs.Add(Resize(fs, fileName, extension, thumb, string.Format("thumb_{0}", thumb), originalImage));
if (originalImage.Width >= s && originalImage.Height >= s)
{
result.Add(Resize(fs, fileName, extension, s, "thumb", originalImage));
}
}
return thumbs;
return result;
}
/// <summary>
/// Performs an image resize
/// </summary>
/// <param name="fileSystem"></param>
/// <param name="path"></param>
/// <param name="extension"></param>
/// <param name="maxWidthHeight"></param>
/// <param name="fileNameAddition"></param>
/// <param name="originalImage"></param>
/// <returns></returns>
private static ResizedImage Resize(IFileSystem fileSystem, string path, string extension, int maxWidthHeight, string fileNameAddition, Image originalImage)
{
var fileNameThumb = String.IsNullOrEmpty(fileNameAddition)
@@ -105,8 +125,23 @@ namespace Umbraco.Core.Media
{
using (var g = Graphics.FromImage(bp))
{
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//if the image size is rather large we cannot use the best quality interpolation mode
// because we'll get out of mem exceptions. So we'll detect how big the image is and use
// the mid quality interpolation mode when the image size exceeds our max limit.
if (image.Width > 5000 || image.Height > 5000)
{
//use mid quality
g.InterpolationMode = InterpolationMode.Bilinear;
}
else
{
//use best quality
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
}
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
+2 -4
View File
@@ -306,10 +306,8 @@ namespace Umbraco.Core.Models
/// <returns><see cref="Property"/> Value as a <see cref="TPassType"/></returns>
public virtual TPassType GetValue<TPassType>(string propertyTypeAlias)
{
if (Properties[propertyTypeAlias].Value is TPassType)
return (TPassType)Properties[propertyTypeAlias].Value;
return (TPassType)Convert.ChangeType(Properties[propertyTypeAlias].Value, typeof(TPassType));
var convertAttempt = Properties[propertyTypeAlias].Value.TryConvertTo<TPassType>();
return convertAttempt.Success ? convertAttempt.Result : default(TPassType);
}
/// <summary>
+33 -14
View File
@@ -26,6 +26,20 @@ namespace Umbraco.Core.Models
{
#region IContent
/// <summary>
/// Returns true if this entity was just published as part of a recent save operation (i.e. it wasn't previously published)
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
/// <remarks>
/// This is helpful for determining if the published event will execute during the saved event for a content item.
/// </remarks>
internal static bool JustPublished(this IContent entity)
{
var dirty = (IRememberBeingDirty)entity;
return dirty.WasPropertyDirty("Published") && entity.Published;
}
/// <summary>
/// Determines if a new version should be created
/// </summary>
@@ -618,7 +632,7 @@ namespace Umbraco.Core.Models
/// <returns>Xml representation of the passed in <see cref="IContent"/></returns>
internal static XElement ToDeepXml(this IContent content)
{
return ApplicationContext.Current.Services.PackagingService.Export(content, true);
return ApplicationContext.Current.Services.PackagingService.Export(content, true, raiseEvents: false);
}
/// <summary>
@@ -628,7 +642,7 @@ namespace Umbraco.Core.Models
/// <returns>Xml representation of the passed in <see cref="IContent"/></returns>
public static XElement ToXml(this IContent content)
{
return ApplicationContext.Current.Services.PackagingService.Export(content);
return ApplicationContext.Current.Services.PackagingService.Export(content, raiseEvents: false);
}
/// <summary>
@@ -638,24 +652,19 @@ namespace Umbraco.Core.Models
/// <returns>Xml representation of the passed in <see cref="IContent"/></returns>
public static XElement ToXml(this IMedia media)
{
return ApplicationContext.Current.Services.PackagingService.Export(media);
}
internal static XElement ToDeepXml(this IMedia media)
{
return ApplicationContext.Current.Services.PackagingService.Export(media, true);
return ApplicationContext.Current.Services.PackagingService.Export(media, raiseEvents: false);
}
/// <summary>
/// Creates the xml representation for the <see cref="IMedia"/> object
/// Creates the full xml representation for the <see cref="IMedia"/> object and all of it's descendants
/// </summary>
/// <param name="member"><see cref="IContent"/> to generate xml for</param>
/// <returns>Xml representation of the passed in <see cref="IContent"/></returns>
public static XElement ToXml(this IMember member)
/// <param name="media"><see cref="IMedia"/> to generate xml for</param>
/// <returns>Xml representation of the passed in <see cref="IMedia"/></returns>
internal static XElement ToDeepXml(this IMedia media)
{
return ApplicationContext.Current.Services.PackagingService.Export(member);
return ApplicationContext.Current.Services.PackagingService.Export(media, true, raiseEvents: false);
}
/// <summary>
/// Creates the xml representation for the <see cref="IContent"/> object
/// </summary>
@@ -668,6 +677,16 @@ namespace Umbraco.Core.Models
//If current IContent is published we should get latest unpublished version
return content.ToXml();
}
/// <summary>
/// Creates the xml representation for the <see cref="IMember"/> object
/// </summary>
/// <param name="member"><see cref="IMember"/> to generate xml for</param>
/// <returns>Xml representation of the passed in <see cref="IContent"/></returns>
public static XElement ToXml(this IMember member)
{
return ((PackagingService)(ApplicationContext.Current.Services.PackagingService)).Export(member);
}
#endregion
}
+3 -2
View File
@@ -43,6 +43,7 @@ namespace Umbraco.Core.Models
_allowedContentTypes = new List<ContentTypeSort>();
_propertyGroups = new PropertyGroupCollection();
_propertyTypes = new PropertyTypeCollection();
_propertyTypes.CollectionChanged += PropertyTypesChanged;
_additionalData = new Dictionary<string, object>();
}
@@ -54,6 +55,7 @@ namespace Umbraco.Core.Models
_allowedContentTypes = new List<ContentTypeSort>();
_propertyGroups = new PropertyGroupCollection();
_propertyTypes = new PropertyTypeCollection();
_propertyTypes.CollectionChanged += PropertyTypesChanged;
_additionalData = new Dictionary<string, object>();
}
@@ -433,8 +435,7 @@ namespace Umbraco.Core.Models
{
if (PropertyTypeExists(propertyType.Alias) == false)
{
_propertyTypes.Add(propertyType);
_propertyTypes.CollectionChanged += PropertyTypesChanged;
_propertyTypes.Add(propertyType);
return true;
}
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Persistence.Mappers;
namespace Umbraco.Core.Models
{
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
{
public static class EntityExtensions
{
/// <summary>
/// Returns true if this entity has just been created and persisted to the data store
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
/// <remarks>
/// This is useful when handling events to determine if an entity is a brand new entity or was
/// already existing.
/// </remarks>
public static bool IsNewEntity(this IEntity entity)
{
var dirty = (IRememberBeingDirty)entity;
return dirty.WasPropertyDirty("Id");
}
}
}
+29 -5
View File
@@ -6,6 +6,16 @@ using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
{
internal sealed class Folder : Entity
{
public Folder(string folderPath)
{
Path = folderPath;
}
public string Path { get; set; }
}
/// <summary>
/// Represents an abstract file which provides basic functionality for a File with an Alias and Name
/// </summary>
@@ -23,6 +33,8 @@ namespace Umbraco.Core.Models
private static readonly PropertyInfo ContentSelector = ExpressionHelper.GetPropertyInfo<File, string>(x => x.Content);
private static readonly PropertyInfo PathSelector = ExpressionHelper.GetPropertyInfo<File, string>(x => x.Path);
private string _alias;
private string _name;
/// <summary>
/// Gets or sets the Name of the File including extension
@@ -32,7 +44,11 @@ namespace Umbraco.Core.Models
{
get
{
return new FileInfo(Path).Name;
if (_name == null)
{
_name = System.IO.Path.GetFileName(Path);
}
return _name;
}
}
@@ -44,10 +60,14 @@ namespace Umbraco.Core.Models
{
get
{
var fileInfo = new FileInfo(Path);
var name = fileInfo.Name;
int lastIndexOf = name.LastIndexOf(".", StringComparison.InvariantCultureIgnoreCase);
return name.Substring(0, lastIndexOf);
if (_alias == null)
{
var name = System.IO.Path.GetFileName(Path);
if (name == null) return string.Empty;
var lastIndexOf = name.LastIndexOf(".", StringComparison.InvariantCultureIgnoreCase);
_alias = name.Substring(0, lastIndexOf);
}
return _alias;
}
}
@@ -60,6 +80,10 @@ namespace Umbraco.Core.Models
get { return _path; }
set
{
//reset
_alias = null;
_name = null;
SetPropertyValueAndDetectChanges(o =>
{
_path = value;
+2 -98
View File
@@ -1,106 +1,10 @@
using System;
using Umbraco.Core.Models.Membership;
namespace Umbraco.Core.Models
{
public interface IMember : IContentBase
public interface IMember : IContentBase, IMembershipUser
{
/// <summary>
/// Gets or sets the Username
/// </summary>
string Username { get; set; }
/// <summary>
/// Gets or sets the Email
/// </summary>
string Email { get; set; }
/// <summary>
/// Gets or sets the Password
/// </summary>
string Password { get; set; }
/// <summary>
/// Gets or sets the Password Question
/// </summary>
/// <remarks>
/// Alias: umbracoPasswordRetrievalQuestionPropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
string PasswordQuestion { get; set; }
/// <summary>
/// Gets or sets the Password Answer
/// </summary>
/// <remarks>
/// Alias: umbracoPasswordRetrievalAnswerPropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
string PasswordAnswer { get; set; }
/// <summary>
/// Gets or set the comments for the member
/// </summary>
/// <remarks>
/// Alias: umbracoCommentPropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
string Comments { get; set; }
/// <summary>
/// Gets or sets a boolean indicating whether the Member is approved
/// </summary>
/// <remarks>
/// Alias: umbracoApprovePropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
bool IsApproved { get; set; }
/// <summary>
/// Gets or sets a boolean indicating whether the Member is locked out
/// </summary>
/// <remarks>
/// Alias: umbracoLockPropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
bool IsLockedOut { get; set; }
/// <summary>
/// Gets or sets the date for last login
/// </summary>
/// <remarks>
/// Alias: umbracoLastLoginPropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
DateTime LastLoginDate { get; set; }
/// <summary>
/// Gest or sets the date for last password change
/// </summary>
/// <remarks>
/// Alias: umbracoMemberLastPasswordChange
/// Part of the standard properties collection.
/// </remarks>
DateTime LastPasswordChangeDate { get; set; }
/// <summary>
/// Gets or sets the date for when Member was locked out
/// </summary>
/// <remarks>
/// Alias: umbracoMemberLastLockout
/// Part of the standard properties collection.
/// </remarks>
DateTime LastLockoutDate { get; set; }
/// <summary>
/// Gets or sets the number of failed password attempts.
/// This is the number of times the password was entered incorrectly upon login.
/// </summary>
/// <remarks>
/// Alias: umbracoFailedPasswordAttemptsPropertyTypeAlias
/// Part of the standard properties collection.
/// </remarks>
int FailedPasswordAttempts { get; set; }
/// <summary>
/// String alias of the default ContentType
/// </summary>
+26
View File
@@ -0,0 +1,26 @@
using System.Collections.Generic;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
{
/// <summary>
/// Represents a member type
/// </summary>
public interface IMemberGroup : IAggregateRoot
{
/// <summary>
/// The name of the member group
/// </summary>
string Name { get; set; }
/// <summary>
/// Profile of the user who created this Entity
/// </summary>
int CreatorId { get; set; }
/// <summary>
/// Some entities may expose additional data that other's might not, this custom data will be available in this collection
/// </summary>
IDictionary<string, object> AdditionalData { get; }
}
}
+6
View File
@@ -10,5 +10,11 @@
/// </summary>
/// <returns><see cref="RenderingEngine"/></returns>
RenderingEngine GetTypeOfRenderingEngine();
/// <summary>
/// Set the mastertemplate
/// </summary>
/// <param name="masterTemplate"></param>
void SetMasterTemplate(ITemplate masterTemplate);
}
}
-1
View File
@@ -3,7 +3,6 @@ using System.Globalization;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Persistence.Mappers;
namespace Umbraco.Core.Models
{
+5 -5
View File
@@ -107,7 +107,7 @@ namespace Umbraco.Core.Models
private bool _dontRender;
private string _scriptFile;
private string _scriptAssembly;
private string _python;
private string _scriptPath;
private string _xslt;
private readonly MacroPropertyCollection _properties;
private readonly List<string> _addedProperties;
@@ -360,14 +360,14 @@ namespace Umbraco.Core.Models
[DataMember]
public string ScriptPath
{
get { return _python; }
get { return _scriptPath; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_python = value;
return _python;
}, _python, ScriptPathSelector);
_scriptPath = value;
return _scriptPath;
}, _scriptPath, ScriptPathSelector);
}
}
+1 -2
View File
@@ -11,7 +11,7 @@ namespace Umbraco.Core.Models
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
internal class MacroProperty : TracksChangesEntityBase, IMacroProperty, IRememberBeingDirty
public class MacroProperty : TracksChangesEntityBase, IMacroProperty, IRememberBeingDirty
{
public MacroProperty()
{
@@ -155,7 +155,6 @@ namespace Umbraco.Core.Models
/// </remarks>
[DataMember]
public string EditorAlias
{
get { return _editorAlias; }
set
@@ -15,7 +15,7 @@ namespace Umbraco.Core.Models.Mapping
/// All automapper configurations are done during startup
/// inside an Automapper Initialize call which is better for performance
/// </remarks>
internal interface IMapperConfiguration : IApplicationEventHandler
public interface IMapperConfiguration : IApplicationEventHandler
{
void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext);
}
@@ -8,7 +8,7 @@ namespace Umbraco.Core.Models.Mapping
/// <remarks>
/// Use this class if your mapper configuration isn't also explicitly an ApplicationEventHandler.
/// </remarks>
internal abstract class MapperConfiguration : ApplicationEventHandler, IMapperConfiguration
public abstract class MapperConfiguration : ApplicationEventHandler, IMapperConfiguration
{
public abstract void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext);
}
+199 -55
View File
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Logging;
namespace Umbraco.Core.Models
{
@@ -29,9 +31,11 @@ namespace Umbraco.Core.Models
: base(name, -1, contentType, new PropertyCollection())
{
_contentType = contentType;
IsApproved = true;
}
public Member(string name, string email, string username, string password, int parentId, IMemberType contentType)
//TODO: Should we just get rid of this one? no reason to have a level set.
internal Member(string name, string email, string username, string password, int parentId, IMemberType contentType)
: base(name, parentId, contentType, new PropertyCollection())
{
Mandate.ParameterNotNull(contentType, "contentType");
@@ -40,10 +44,11 @@ namespace Umbraco.Core.Models
_email = email;
_username = username;
_password = password;
IsApproved = true;
}
public Member(string name, string email, string username, string password, IContentBase parent, IMemberType contentType)
: base(name, parent, contentType, new PropertyCollection())
public Member(string name, string email, string username, string password, IMemberType contentType)
: this(name, email, username, password, -1, contentType)
{
Mandate.ParameterNotNull(contentType, "contentType");
@@ -51,8 +56,20 @@ namespace Umbraco.Core.Models
_email = email;
_username = username;
_password = password;
IsApproved = true;
}
//public Member(string name, string email, string username, string password, IContentBase parent, IMemberType contentType)
// : base(name, parent, contentType, new PropertyCollection())
//{
// Mandate.ParameterNotNull(contentType, "contentType");
// _contentType = contentType;
// _email = email;
// _username = username;
// _password = password;
//}
private static readonly PropertyInfo DefaultContentTypeAliasSelector = ExpressionHelper.GetPropertyInfo<Member, string>(x => x.ContentTypeAlias);
private static readonly PropertyInfo UsernameSelector = ExpressionHelper.GetPropertyInfo<Member, string>(x => x.Username);
private static readonly PropertyInfo EmailSelector = ExpressionHelper.GetPropertyInfo<Member, string>(x => x.Email);
@@ -125,7 +142,7 @@ namespace Umbraco.Core.Models
/// Gets or sets the Password Question
/// </summary>
/// <remarks>
/// Alias: umbracoPasswordRetrievalQuestionPropertyTypeAlias
/// Alias: umbracoMemberPasswordRetrievalQuestion
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -133,12 +150,19 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.PasswordQuestion, "PasswordQuestion", default(string));
if (a.Success == false) return a.Result;
return Properties[Constants.Conventions.Member.PasswordQuestion].Value == null
? string.Empty
: Properties[Constants.Conventions.Member.PasswordQuestion].Value.ToString();
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.PasswordQuestion,
"PasswordQuestion") == false) return;
Properties[Constants.Conventions.Member.PasswordQuestion].Value = value;
}
}
@@ -147,7 +171,7 @@ namespace Umbraco.Core.Models
/// Gets or sets the Password Answer
/// </summary>
/// <remarks>
/// Alias: umbracoPasswordRetrievalAnswerPropertyTypeAlias
/// Alias: umbracoMemberPasswordRetrievalAnswer
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -155,12 +179,19 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.PasswordAnswer, "PasswordAnswer", default(string));
if (a.Success == false) return a.Result;
return Properties[Constants.Conventions.Member.PasswordAnswer].Value == null
? string.Empty
: Properties[Constants.Conventions.Member.PasswordAnswer].Value.ToString();
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.PasswordAnswer,
"PasswordAnswer") == false) return;
Properties[Constants.Conventions.Member.PasswordAnswer].Value = value;
}
}
@@ -169,7 +200,7 @@ namespace Umbraco.Core.Models
/// Gets or set the comments for the member
/// </summary>
/// <remarks>
/// Alias: umbracoCommentPropertyTypeAlias
/// Alias: umbracoMemberComments
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -177,12 +208,19 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.Comments, "Comments", default(string));
if (a.Success == false) return a.Result;
return Properties[Constants.Conventions.Member.Comments].Value == null
? string.Empty
: Properties[Constants.Conventions.Member.Comments].Value.ToString();
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.Comments,
"Comments") == false) return;
Properties[Constants.Conventions.Member.Comments].Value = value;
}
}
@@ -191,7 +229,7 @@ namespace Umbraco.Core.Models
/// Gets or sets a boolean indicating whether the Member is approved
/// </summary>
/// <remarks>
/// Alias: umbracoApprovePropertyTypeAlias
/// Alias: umbracoMemberApproved
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -199,17 +237,25 @@ namespace Umbraco.Core.Models
{
get
{
if (Properties[Constants.Conventions.Member.IsApproved].Value == null)
return default(bool);
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.IsApproved, "IsApproved",
//This is the default value if the prop is not found
true);
if (a.Success == false) return a.Result;
if (Properties[Constants.Conventions.Member.IsApproved].Value is bool)
return (bool)Properties[Constants.Conventions.Member.IsApproved].Value;
//TODO: Use TryConvertTo<T> instead
return (bool)Convert.ChangeType(Properties[Constants.Conventions.Member.IsApproved].Value, typeof(bool));
var tryConvert = Properties[Constants.Conventions.Member.IsApproved].Value.TryConvertTo<bool>();
if (tryConvert.Success)
{
return tryConvert.Result;
}
//if the property exists but it cannot be converted, we will assume true
return true;
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.IsApproved,
"IsApproved") == false) return;
Properties[Constants.Conventions.Member.IsApproved].Value = value;
}
}
@@ -218,7 +264,7 @@ namespace Umbraco.Core.Models
/// Gets or sets a boolean indicating whether the Member is locked out
/// </summary>
/// <remarks>
/// Alias: umbracoLockPropertyTypeAlias
/// Alias: umbracoMemberLockedOut
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -226,17 +272,23 @@ namespace Umbraco.Core.Models
{
get
{
if (Properties[Constants.Conventions.Member.IsLockedOut].Value == null)
return default(bool);
if (Properties[Constants.Conventions.Member.IsLockedOut].Value is bool)
return (bool)Properties[Constants.Conventions.Member.IsLockedOut].Value;
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.IsLockedOut, "IsLockedOut", false);
if (a.Success == false) return a.Result;
var tryConvert = Properties[Constants.Conventions.Member.IsLockedOut].Value.TryConvertTo<bool>();
if (tryConvert.Success)
{
return tryConvert.Result;
}
return false;
//TODO: Use TryConvertTo<T> instead
return (bool)Convert.ChangeType(Properties[Constants.Conventions.Member.IsLockedOut].Value, typeof(bool));
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.IsLockedOut,
"IsLockedOut") == false) return;
Properties[Constants.Conventions.Member.IsLockedOut].Value = value;
}
}
@@ -245,7 +297,7 @@ namespace Umbraco.Core.Models
/// Gets or sets the date for last login
/// </summary>
/// <remarks>
/// Alias: umbracoLastLoginPropertyTypeAlias
/// Alias: umbracoMemberLastLogin
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -253,17 +305,23 @@ namespace Umbraco.Core.Models
{
get
{
if (Properties[Constants.Conventions.Member.LastLoginDate].Value == null)
return default(DateTime);
if (Properties[Constants.Conventions.Member.LastLoginDate].Value is DateTime)
return (DateTime)Properties[Constants.Conventions.Member.LastLoginDate].Value;
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastLoginDate, "LastLoginDate", default(DateTime));
if (a.Success == false) return a.Result;
var tryConvert = Properties[Constants.Conventions.Member.LastLoginDate].Value.TryConvertTo<DateTime>();
if (tryConvert.Success)
{
return tryConvert.Result;
}
return default(DateTime);
//TODO: Use TryConvertTo<T> instead
return (DateTime)Convert.ChangeType(Properties[Constants.Conventions.Member.LastLoginDate].Value, typeof(DateTime));
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.LastLoginDate,
"LastLoginDate") == false) return;
Properties[Constants.Conventions.Member.LastLoginDate].Value = value;
}
}
@@ -272,7 +330,7 @@ namespace Umbraco.Core.Models
/// Gest or sets the date for last password change
/// </summary>
/// <remarks>
/// Alias: umbracoMemberLastPasswordChange
/// Alias: umbracoMemberLastPasswordChangeDate
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -280,17 +338,23 @@ namespace Umbraco.Core.Models
{
get
{
if (Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value == null)
return default(DateTime);
if (Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value is DateTime)
return (DateTime)Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value;
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastPasswordChangeDate, "LastPasswordChangeDate", default(DateTime));
if (a.Success == false) return a.Result;
var tryConvert = Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value.TryConvertTo<DateTime>();
if (tryConvert.Success)
{
return tryConvert.Result;
}
return default(DateTime);
//TODO: Use TryConvertTo<T> instead
return (DateTime)Convert.ChangeType(Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value, typeof(DateTime));
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.LastPasswordChangeDate,
"LastPasswordChangeDate") == false) return;
Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value = value;
}
}
@@ -299,7 +363,7 @@ namespace Umbraco.Core.Models
/// Gets or sets the date for when Member was locked out
/// </summary>
/// <remarks>
/// Alias: umbracoMemberLastLockout
/// Alias: umbracoMemberLastLockoutDate
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -307,17 +371,23 @@ namespace Umbraco.Core.Models
{
get
{
if (Properties[Constants.Conventions.Member.LastLockoutDate].Value == null)
return default(DateTime);
if (Properties[Constants.Conventions.Member.LastLockoutDate].Value is DateTime)
return (DateTime)Properties[Constants.Conventions.Member.LastLockoutDate].Value;
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastLockoutDate, "LastLockoutDate", default(DateTime));
if (a.Success == false) return a.Result;
var tryConvert = Properties[Constants.Conventions.Member.LastLockoutDate].Value.TryConvertTo<DateTime>();
if (tryConvert.Success)
{
return tryConvert.Result;
}
return default(DateTime);
//TODO: Use TryConvertTo<T> instead
return (DateTime)Convert.ChangeType(Properties[Constants.Conventions.Member.LastLockoutDate].Value, typeof(DateTime));
}
set
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.LastLockoutDate,
"LastLockoutDate") == false) return;
Properties[Constants.Conventions.Member.LastLockoutDate].Value = value;
}
}
@@ -327,7 +397,7 @@ namespace Umbraco.Core.Models
/// This is the number of times the password was entered incorrectly upon login.
/// </summary>
/// <remarks>
/// Alias: umbracoFailedPasswordAttemptsPropertyTypeAlias
/// Alias: umbracoMemberFailedPasswordAttempts
/// Part of the standard properties collection.
/// </remarks>
[IgnoreDataMember]
@@ -335,18 +405,24 @@ namespace Umbraco.Core.Models
{
get
{
if (Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value == null)
return default(int);
if (Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value is int)
return (int)Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value;
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.FailedPasswordAttempts, "FailedPasswordAttempts", 0);
if (a.Success == false) return a.Result;
var tryConvert = Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value.TryConvertTo<int>();
if (tryConvert.Success)
{
return tryConvert.Result;
}
return default(int);
//TODO: Use TryConvertTo<T> instead
return (int)Convert.ChangeType(Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value, typeof(int));
}
set
{
Properties[Constants.Conventions.Member.LastLockoutDate].Value = value;
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.FailedPasswordAttempts,
"FailedPasswordAttempts") == false) return;
Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value = value;
}
}
@@ -377,7 +453,7 @@ namespace Umbraco.Core.Models
/// membership provider.
/// </remarks>
[DataMember]
internal virtual object ProviderUserKey
public virtual object ProviderUserKey
{
get
{
@@ -460,5 +536,73 @@ namespace Umbraco.Core.Models
internal bool BoolPropertyValue { get; set; }
internal DateTime DateTimePropertyValue { get; set; }
internal string PropertyTypeAlias { get; set; }
private Attempt<T> WarnIfPropertyTypeNotFoundOnGet<T>(string propertyAlias, string propertyName, T defaultVal)
{
Action doLog = () => LogHelper.Warn<Member>(
"Trying to access the '"
+ propertyName
+ "' property on "
+ typeof(Member)
+ " but the "
+ propertyAlias
+ " property does not exist on the member type so a default value is returned. Ensure that you have a property type with alias: "
+ propertyAlias
+ " configured on your member type in order to use the '"
+ propertyName
+ "' property on the model correctly.");
//if the property doesn't exist, then do the logging and return a failure
if (Properties.Contains(propertyAlias) == false)
{
//we'll put a warn in the log if this entity has been persisted
if (HasIdentity)
{
doLog();
}
return Attempt<T>.Fail(defaultVal);
}
//if the property doesn't have an identity but we do, then do logging and return failure
var prop = Properties.Single(x => x.Alias == propertyAlias);
if (prop.HasIdentity == false && HasIdentity)
{
doLog();
return Attempt<T>.Fail(defaultVal);
}
return Attempt<T>.Succeed();
}
private bool WarnIfPropertyTypeNotFoundOnSet(string propertyAlias, string propertyname)
{
Action doLog = () => LogHelper.Warn<Member>("An attempt was made to set a value on the property '"
+ propertyname
+ "' on type "
+ typeof(Member)
+ " but the property type "
+ propertyAlias
+ " does not exist on the member type, ensure that this property type exists so that setting this property works correctly.");
//if the property doesn't exist, then do the logging and return a failure
if (Properties.Contains(propertyAlias) == false)
{
if (HasIdentity)
{
doLog();
}
return false;
}
//if the property doesn't have an identity but we do, then do logging and return failure
var prop = Properties.Single(x => x.Alias == propertyAlias);
if (prop.HasIdentity == false && HasIdentity)
{
doLog();
return false;
}
return true;
}
}
}
+76
View File
@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
{
/// <summary>
/// Represents a member type
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
public class MemberGroup : Entity, IMemberGroup
{
public MemberGroup()
{
AdditionalData = new Dictionary<string, object>();
}
private string _name;
private int _creatorId;
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<MemberGroup, string>(x => x.Name);
private static readonly PropertyInfo CreatorIdSelector = ExpressionHelper.GetPropertyInfo<MemberGroup, int>(x => x.CreatorId);
[DataMember]
public string Name
{
get { return _name; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
if (_name != value)
{
//if the name has changed, add the value to the additional data,
//this is required purely for event handlers to know the previous name of the group
//so we can keep the public access up to date.
AdditionalData["previousName"] = _name;
}
_name = value;
return _name;
}, _name, NameSelector);
}
}
public int CreatorId
{
get { return _creatorId; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_creatorId = value;
return _creatorId;
}, _creatorId, CreatorIdSelector);
}
}
public IDictionary<string, object> AdditionalData { get; private set; }
/// <summary>
/// Method to call when Entity is being saved
/// </summary>
/// <remarks>Created date is set and a Unique key is assigned</remarks>
internal override void AddingEntity()
{
base.AddingEntity();
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
}
}
+27 -20
View File
@@ -14,37 +14,48 @@ namespace Umbraco.Core.Models
public class MemberType : ContentTypeCompositionBase, IMemberType
{
//Dictionary is divided into string: PropertyTypeAlias, Tuple: MemberCanEdit, VisibleOnProfile, PropertyTypeId
private IDictionary<string, Tuple<bool, bool, int>> _memberTypePropertyTypes;
private string _alias;
public MemberType(int parentId) : base(parentId)
{
_memberTypePropertyTypes = new Dictionary<string, Tuple<bool, bool, int>>();
MemberTypePropertyTypes = new Dictionary<string, MemberTypePropertyProfileAccess>();
}
public MemberType(IContentTypeComposition parent) : base(parent)
{
_memberTypePropertyTypes = new Dictionary<string, Tuple<bool, bool, int>>();
MemberTypePropertyTypes = new Dictionary<string, MemberTypePropertyProfileAccess>();
}
private static readonly PropertyInfo MemberTypePropertyTypesSelector = ExpressionHelper.GetPropertyInfo<MemberType, IDictionary<string, Tuple<bool, bool, int>>>(x => x.MemberTypePropertyTypes);
private static readonly PropertyInfo AliasSelector = ExpressionHelper.GetPropertyInfo<MemberType, string>(x => x.Alias);
/// <summary>
/// Gets or Sets a Dictionary of Tuples (MemberCanEdit, VisibleOnProfile, PropertyTypeId) by the PropertyTypes' alias.
/// The Alias of the ContentType
/// </summary>
[DataMember]
internal IDictionary<string, Tuple<bool, bool, int>> MemberTypePropertyTypes
public override string Alias
{
get { return _memberTypePropertyTypes; }
get { return _alias; }
set
{
//NOTE: WE are overriding this because we don't want to do a ToSafeAlias when the alias is the special case of
// "_umbracoSystemDefaultProtectType" which is used internally, currently there is an issue with the safe alias as it strips
// leading underscores which we don't want in this case.
// see : http://issues.umbraco.org/issue/U4-3968
SetPropertyValueAndDetectChanges(o =>
{
_memberTypePropertyTypes = value;
return _memberTypePropertyTypes;
}, _memberTypePropertyTypes, MemberTypePropertyTypesSelector);
_alias = value == "_umbracoSystemDefaultProtectType" ? value : value.ToSafeAlias();
return _alias;
}, _alias, AliasSelector);
}
}
/// <summary>
/// Gets or Sets a Dictionary of Tuples (MemberCanEdit, VisibleOnProfile) by the PropertyTypes' alias.
/// </summary>
[DataMember]
internal IDictionary<string, MemberTypePropertyProfileAccess> MemberTypePropertyTypes { get; private set; }
/// <summary>
/// Gets a boolean indicating whether a Property is editable by the Member.
/// </summary>
@@ -54,7 +65,7 @@ namespace Umbraco.Core.Models
{
if (MemberTypePropertyTypes.ContainsKey(propertyTypeAlias))
{
return MemberTypePropertyTypes[propertyTypeAlias].Item1;
return MemberTypePropertyTypes[propertyTypeAlias].IsEditable;
}
return false;
@@ -69,7 +80,7 @@ namespace Umbraco.Core.Models
{
if (MemberTypePropertyTypes.ContainsKey(propertyTypeAlias))
{
return MemberTypePropertyTypes[propertyTypeAlias].Item2;
return MemberTypePropertyTypes[propertyTypeAlias].IsVisible;
}
return false;
@@ -84,13 +95,11 @@ namespace Umbraco.Core.Models
{
if (MemberTypePropertyTypes.ContainsKey(propertyTypeAlias))
{
var tuple = MemberTypePropertyTypes[propertyTypeAlias];
MemberTypePropertyTypes[propertyTypeAlias] = new Tuple<bool, bool, int>(value, tuple.Item2, tuple.Item3);
MemberTypePropertyTypes[propertyTypeAlias].IsEditable = value;
}
else
{
var propertyType = PropertyTypes.First(x => x.Alias.Equals(propertyTypeAlias));
var tuple = new Tuple<bool, bool, int>(value, false, propertyType.Id);
var tuple = new MemberTypePropertyProfileAccess(false, value);
MemberTypePropertyTypes.Add(propertyTypeAlias, tuple);
}
}
@@ -104,13 +113,11 @@ namespace Umbraco.Core.Models
{
if (MemberTypePropertyTypes.ContainsKey(propertyTypeAlias))
{
var tuple = MemberTypePropertyTypes[propertyTypeAlias];
MemberTypePropertyTypes[propertyTypeAlias] = new Tuple<bool, bool, int>(tuple.Item1, value, tuple.Item3);
MemberTypePropertyTypes[propertyTypeAlias].IsVisible = value;
}
else
{
var propertyType = PropertyTypes.First(x => x.Alias.Equals(propertyTypeAlias));
var tuple = new Tuple<bool, bool, int>(false, value, propertyType.Id);
var tuple = new MemberTypePropertyProfileAccess(value, false);
MemberTypePropertyTypes.Add(propertyTypeAlias, tuple);
}
}
@@ -0,0 +1,17 @@
namespace Umbraco.Core.Models
{
/// <summary>
/// Used to track the property types that are visible/editable on member profiles
/// </summary>
internal class MemberTypePropertyProfileAccess
{
public MemberTypePropertyProfileAccess(bool isVisible, bool isEditable)
{
IsVisible = isVisible;
IsEditable = isEditable;
}
public bool IsVisible { get; set; }
public bool IsEditable { get; set; }
}
}
@@ -5,14 +5,14 @@
/// </summary>
public class EntityPermission
{
public EntityPermission(object userId, int entityId, string[] assignedPermissions)
public EntityPermission(int userId, int entityId, string[] assignedPermissions)
{
UserId = userId;
EntityId = entityId;
AssignedPermissions = assignedPermissions;
}
public object UserId { get; private set; }
public int UserId { get; private set; }
public int EntityId { get; private set; }
/// <summary>
@@ -4,9 +4,9 @@ using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models.Membership
{
internal interface IMembershipUser : IMembershipUserId, IAggregateRoot
{
/*new object Id { get; set; }*/
public interface IMembershipUser : IAggregateRoot
{
object ProviderUserKey { get; set; }
string Username { get; set; }
string Email { get; set; }
string Password { get; set; }
@@ -14,13 +14,22 @@ namespace Umbraco.Core.Models.Membership
string PasswordAnswer { get; set; }
string Comments { get; set; }
bool IsApproved { get; set; }
bool IsOnline { get; set; }
bool IsLockedOut { get; set; }
DateTime LastLoginDate { get; set; }
DateTime LastPasswordChangeDate { get; set; }
DateTime LastLockoutDate { get; set; }
object ProfileId { get; set; }
IEnumerable<object> Groups { get; set; }
/// <summary>
/// Gets or sets the number of failed password attempts.
/// This is the number of times the password was entered incorrectly upon login.
/// </summary>
/// <remarks>
/// Alias: umbracoMemberFailedPasswordAttempts
/// Part of the standard properties collection.
/// </remarks>
int FailedPasswordAttempts { get; set; }
//object ProfileId { get; set; }
//IEnumerable<object> Groups { get; set; }
}
}
@@ -1,7 +0,0 @@
namespace Umbraco.Core.Models.Membership
{
internal interface IMembershipUserId
{
object ProviderUserKey { get; set; }
}
}
@@ -3,6 +3,10 @@
/// <summary>
/// Defines the the Profile interface
/// </summary>
/// <remarks>
/// This interface is pretty useless but has been exposed publicly from 6.x so we're stuck with it. It would make more sense
/// if the Id was an int but since it's not people have to cast it to int all of the time!
/// </remarks>
public interface IProfile
{
object Id { get; set; }
+16 -13
View File
@@ -7,31 +7,34 @@ namespace Umbraco.Core.Models.Membership
/// Defines the interface for a <see cref="User"/>
/// </summary>
/// <remarks>Will be left internal until a proper Membership implementation is part of the roadmap</remarks>
internal interface IUser : IMembershipUser, IUserProfile
public interface IUser : IMembershipUser
{
new object Id { get; set; }
//string Name { get; set; }
string Name { get; set; }
int SessionTimeout { get; set; }
int StartContentId { get; set; }
int StartMediaId { get; set; }
string Language { get; set; }
bool NoConsole { get; set; }
IUserType UserType { get; }
/// <summary>
/// The default permissions for the user
/// Gets/sets the user type for the user
/// </summary>
IUserType UserType { get; set; }
/// <summary>
/// The default permission set for the user
/// </summary>
/// <remarks>
/// The default permissions are assigned to the user object based on the user type's default permissions
/// </remarks>
string DefaultPermissions { get; }
}
/// Currently in umbraco each permission is a single char but with an Enumerable{string} collection this allows for flexible changes to this in the future
/// </remarks>
IEnumerable<string> DefaultPermissions { get; set; }
internal interface IUserProfile : IProfile
{
IEnumerable<string> AllowedSections { get; }
void RemoveAllowedSection(string sectionAlias);
void AddAllowedSection(string sectionAlias);
/// <summary>
/// Exposes the basic profile data
/// </summary>
IProfile ProfileData { get; }
}
}
@@ -1,13 +1,28 @@
using System.Collections.Generic;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Persistence.Mappers;
namespace Umbraco.Core.Models.Membership
{
internal interface IUserType : IAggregateRoot
public interface IUserType : IAggregateRoot
{
/// <summary>
/// The user type alias
/// </summary>
string Alias { get; set; }
/// <summary>
/// The user type name
/// </summary>
string Name { get; set; }
string Permissions { get; set; }
/// <summary>
/// The set of default permissions for the user type
/// </summary>
/// <remarks>
/// By default each permission is simply a single char but we've made this an enumerable{string} to support a more flexible permissions structure in the future.
/// </remarks>
IEnumerable<string> Permissions { get; set; }
}
}
@@ -6,15 +6,15 @@ namespace Umbraco.Core.Models.Membership
{
internal static class MembershipExtensions
{
internal static MembershipUser AsConcreteMembershipUser(this IMember member)
internal static UmbracoMembershipMember AsConcreteMembershipUser(this IMembershipUser member, string providerName)
{
var membershipMember = new UmbracoMembershipMember(member);
var membershipMember = new UmbracoMembershipMember(member, providerName);
return membershipMember;
}
internal static IMember AsIMember(this MembershipUser membershipMember)
internal static IMembershipUser AsIMember(this UmbracoMembershipMember membershipMember)
{
var member = membershipMember as UmbracoMembershipMember;
var member = membershipMember;
if (member != null)
{
return member.Member;
@@ -36,7 +36,7 @@ namespace Umbraco.Core.Models.Membership
{
return MembershipScenario.NativeUmbraco;
}
var memberType = ApplicationContext.Current.Services.MemberTypeService.GetMemberType(Constants.Conventions.MemberTypes.Member);
var memberType = ApplicationContext.Current.Services.MemberTypeService.Get(Constants.Conventions.MemberTypes.DefaultAlias);
return memberType != null
? MembershipScenario.CustomProviderWithUmbracoLink
: MembershipScenario.StandaloneCustomProvider;
@@ -1,123 +0,0 @@
using System;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models.Membership
{
/// <summary>
/// Represents a Profile which is shared between Members and Users
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
internal class Profile : TracksChangesEntityBase, IProfile, IRememberBeingDirty
{
/// <summary>
/// Initializes a new instance of the <see cref="Profile"/> class.
/// </summary>
protected Profile()
{
ProviderUserKeyType = typeof(int);
}
public Profile(object id, string name)
{
ProviderUserKeyType = typeof(int);
Id = id;
Name = name;
}
private object _id;
private string _name;
private object _providerUserKey;
private Type _userTypeKey;
private static readonly PropertyInfo IdSelector = ExpressionHelper.GetPropertyInfo<Profile, object>(x => x.Id);
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<Profile, string>(x => x.Name);
private static readonly PropertyInfo ProviderUserKeySelector = ExpressionHelper.GetPropertyInfo<Profile, object>(x => x.ProviderUserKey);
private static readonly PropertyInfo UserTypeKeySelector = ExpressionHelper.GetPropertyInfo<Profile, Type>(x => x.ProviderUserKeyType);
[DataMember]
public virtual object Id
{
get
{
return _id;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_id = value;
return _id;
}, _id, IdSelector);
}
}
[DataMember]
public virtual string Name
{
get
{
return _name;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_name = value;
return _name;
}, _name, NameSelector);
}
}
[IgnoreDataMember]
public virtual object ProviderUserKey
{
get
{
return _providerUserKey;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_providerUserKey = value;
return _id;
}, _providerUserKey, ProviderUserKeySelector);
}
}
/// <summary>
/// Gets or sets the type of the provider user key.
/// </summary>
/// <value>
/// The type of the provider user key.
/// </value>
[IgnoreDataMember]
internal Type ProviderUserKeyType
{
get
{
return _userTypeKey;
}
private set
{
SetPropertyValueAndDetectChanges(o =>
{
_userTypeKey = value;
return _userTypeKey;
}, _userTypeKey, UserTypeKeySelector);
}
}
/// <summary>
/// Sets the type of the provider user key.
/// </summary>
/// <param name="type">The type.</param>
internal void SetProviderUserKeyType(Type type)
{
ProviderUserKeyType = type;
}
}
}
@@ -1,66 +1,127 @@
using System.Web.Security;
using System;
using System.Web.Security;
namespace Umbraco.Core.Models.Membership
{
//TODO: THere's still a bunch of properties that don't exist in this use that need to be mapped somehow.
internal class UmbracoMembershipMember : MembershipUser
{
private readonly IMember _member;
private readonly IMembershipUser _member;
private readonly string _userName;
private readonly object _providerUserKey;
private readonly string _passwordQuestion;
private readonly bool _isLockedOut;
private readonly DateTime _lastLockoutDate;
private readonly DateTime _creationDate;
private DateTime _lastLoginDate;
private readonly DateTime _lastPasswordChangedDate;
private readonly string _providerName;
private string _email;
private string _comment;
private bool _isApproved;
private DateTime _lastActivityDate;
public UmbracoMembershipMember(IMember member)
//NOTE: We are only overriding the properties that matter, we don't override things like IsOnline since that is handled with the sub-class and the membership providers.
//NOTE: We are not calling the base constructor which will validate that a provider with the specified name exists which causes issues with unit tests. The ctor
// validation for that doesn't need to be there anyways (have checked the source).
public UmbracoMembershipMember(IMembershipUser member, string providerName)
{
_member = member;
//NOTE: We are copying the values here so that everything is consistent with how the underlying built-in ASP.Net membership user
// handles data! We don't want to do anything differently there but since we cannot use their ctor we'll need to handle this logic ourselves.
if (member.Username != null)
_userName = member.Username.Trim();
if (member.Email != null)
_email = member.Email.Trim();
if (member.PasswordQuestion != null)
_passwordQuestion = member.PasswordQuestion.Trim();
_providerName = providerName;
_providerUserKey = member.ProviderUserKey;
_comment = member.Comments;
_isApproved = member.IsApproved;
_isLockedOut = member.IsLockedOut;
_creationDate = member.CreateDate.ToUniversalTime();
_lastLoginDate = member.LastLoginDate.ToUniversalTime();
//TODO: We currently don't really have any place to store this data!!
_lastActivityDate = member.LastLoginDate.ToUniversalTime();
_lastPasswordChangedDate = member.LastPasswordChangeDate.ToUniversalTime();
_lastLockoutDate = member.LastLockoutDate.ToUniversalTime();
}
internal IMember Member
internal IMembershipUser Member
{
get { return _member; }
}
public override string Email
public override string UserName
{
get { return _member.Email; }
set { _member.Email = value; }
get { return _userName; }
}
public override object ProviderUserKey
{
get { return _member.Key; }
get { return _providerUserKey; }
}
public override System.DateTime CreationDate
public override string Email
{
get { return _member.CreateDate; }
get { return _email; }
set { _email = value; }
}
public override string UserName
public override string PasswordQuestion
{
get { return _member.Username; }
get { return _passwordQuestion; }
}
public override string Comment
{
get { return _member.Comments; }
set { _member.Comments = value; }
get { return _comment; }
set { _comment = value; }
}
public override bool IsApproved
{
get { return _member.IsApproved; }
set { _member.IsApproved = value; }
get { return _isApproved; }
set { _isApproved = value; }
}
public override bool IsLockedOut
{
get { return _member.IsLockedOut; }
get { return _isLockedOut; }
}
public override System.DateTime LastLoginDate
public override DateTime LastLockoutDate
{
get { return _member.LastLoginDate; }
set { _member.LastLoginDate = value; }
get { return _lastLockoutDate; }
}
public override DateTime CreationDate
{
get { return _creationDate; }
}
public override DateTime LastLoginDate
{
get { return _lastLoginDate; }
set { _lastLoginDate = value; }
}
public override DateTime LastActivityDate
{
get { return _lastActivityDate; }
set { _lastActivityDate = value; }
}
public override DateTime LastPasswordChangedDate
{
get { return _lastPasswordChangedDate; }
}
public override string ProviderName
{
get { return _providerName; }
}
}
}
+447 -42
View File
@@ -1,7 +1,11 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Configuration;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Persistence.Mappers;
@@ -16,97 +20,498 @@ namespace Umbraco.Core.Models.Membership
/// </remarks>
[Serializable]
[DataContract(IsReference = true)]
internal class User : UserProfile, IUser
public class User : TracksChangesEntityBase, IUser
{
private bool _hasIdentity;
public User(IUserType userType)
{
Groups = new List<object> { userType };
if (userType == null) throw new ArgumentNullException("userType");
_userType = userType;
//Groups = new List<object> { userType };
SessionTimeout = 60;
_sectionCollection = new ObservableCollection<string>();
_addedSections = new List<string>();
_removedSections = new List<string>();
_language = GlobalSettings.DefaultUILanguage;
_sectionCollection.CollectionChanged += SectionCollectionChanged;
_isApproved = true;
_isLockedOut = false;
_startContentId = -1;
_startMediaId = -1;
}
public User(string name, string email, string username, string password, IUserType userType)
: this(userType)
{
_name = name;
_email = email;
_username = username;
_password = password;
_isApproved = true;
_isLockedOut = false;
_startContentId = -1;
_startMediaId = -1;
}
private IUserType _userType;
private bool _hasIdentity;
private int _id;
private string _name;
private Type _userTypeKey;
private readonly List<string> _addedSections;
private readonly List<string> _removedSections;
private readonly ObservableCollection<string> _sectionCollection;
private int _sessionTimeout;
private int _startContentId;
private int _startMediaId;
private string _username;
private string _email;
private string _password;
private bool _isApproved;
private bool _isLockedOut;
private string _language;
private IEnumerable<string> _defaultPermissions;
private bool _defaultToLiveEditing;
private static readonly PropertyInfo SessionTimeoutSelector = ExpressionHelper.GetPropertyInfo<User, int>(x => x.SessionTimeout);
private static readonly PropertyInfo StartContentIdSelector = ExpressionHelper.GetPropertyInfo<User, int>(x => x.StartContentId);
private static readonly PropertyInfo StartMediaIdSelector = ExpressionHelper.GetPropertyInfo<User, int>(x => x.StartMediaId);
private static readonly PropertyInfo AllowedSectionsSelector = ExpressionHelper.GetPropertyInfo<User, IEnumerable<string>>(x => x.AllowedSections);
private static readonly PropertyInfo IdSelector = ExpressionHelper.GetPropertyInfo<User, object>(x => x.Id);
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<User, string>(x => x.Name);
private static readonly PropertyInfo UserTypeKeySelector = ExpressionHelper.GetPropertyInfo<User, Type>(x => x.ProviderUserKeyType);
private static readonly PropertyInfo UsernameSelector = ExpressionHelper.GetPropertyInfo<User, string>(x => x.Username);
private static readonly PropertyInfo EmailSelector = ExpressionHelper.GetPropertyInfo<User, string>(x => x.Email);
private static readonly PropertyInfo PasswordSelector = ExpressionHelper.GetPropertyInfo<User, string>(x => x.Password);
private static readonly PropertyInfo IsLockedOutSelector = ExpressionHelper.GetPropertyInfo<User, bool>(x => x.IsLockedOut);
private static readonly PropertyInfo IsApprovedSelector = ExpressionHelper.GetPropertyInfo<User, bool>(x => x.IsApproved);
private static readonly PropertyInfo LanguageSelector = ExpressionHelper.GetPropertyInfo<User, string>(x => x.Language);
private static readonly PropertyInfo DefaultPermissionsSelector = ExpressionHelper.GetPropertyInfo<User, IEnumerable<string>>(x => x.DefaultPermissions);
private static readonly PropertyInfo DefaultToLiveEditingSelector = ExpressionHelper.GetPropertyInfo<User, bool>(x => x.DefaultToLiveEditing);
private static readonly PropertyInfo HasIdentitySelector = ExpressionHelper.GetPropertyInfo<User, bool>(x => x.HasIdentity);
private static readonly PropertyInfo UserTypeSelector = ExpressionHelper.GetPropertyInfo<User, IUserType>(x => x.UserType);
#region Implementation of IEntity
[IgnoreDataMember]
public bool HasIdentity { get { return Id != null || _hasIdentity; } }
[IgnoreDataMember]
int IEntity.Id
public bool HasIdentity
{
get
{
return int.Parse(base.Id.ToString());
return _hasIdentity;
}
set
protected set
{
base.Id = value;
_hasIdentity = true;
SetPropertyValueAndDetectChanges(o =>
{
_hasIdentity = value;
return _hasIdentity;
}, _hasIdentity, HasIdentitySelector);
}
}
[DataMember]
public int Id
{
get
{
return _id;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_id = value;
HasIdentity = true; //set the has Identity
return _id;
}, _id, IdSelector);
}
}
//this doesn't get used
[IgnoreDataMember]
public Guid Key { get; set; }
#endregion
#region Implementation of IMembershipUser
[IgnoreDataMember]
public object ProviderUserKey
{
get { return Id; }
set { throw new NotSupportedException("Cannot set the provider user key for a user"); }
}
/// <summary>
/// Gets or sets the type of the provider user key.
/// </summary>
/// <value>
/// The type of the provider user key.
/// </value>
[IgnoreDataMember]
internal Type ProviderUserKeyType
{
get
{
return _userTypeKey;
}
private set
{
SetPropertyValueAndDetectChanges(o =>
{
_userTypeKey = value;
return _userTypeKey;
}, _userTypeKey, UserTypeKeySelector);
}
}
/// <summary>
/// Sets the type of the provider user key.
/// </summary>
/// <param name="type">The type.</param>
internal void SetProviderUserKeyType(Type type)
{
ProviderUserKeyType = type;
}
[DataMember]
public string Username { get; set; }
public string Username
{
get { return _username; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_username = value;
return _username;
}, _username, UsernameSelector);
}
}
[DataMember]
public string Email { get; set; }
public string Email
{
get { return _email; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_email = value;
return _email;
}, _email, EmailSelector);
}
}
[DataMember]
public string Password { get; set; }
public string Password
{
get { return _password; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_password = value;
return _password;
}, _password, PasswordSelector);
}
}
[DataMember]
public bool IsApproved
{
get { return _isApproved; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_isApproved = value;
return _isApproved;
}, _isApproved, IsApprovedSelector);
}
}
[DataMember]
public bool IsLockedOut
{
get { return _isLockedOut; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_isLockedOut = value;
return _isLockedOut;
}, _isLockedOut, IsLockedOutSelector);
}
}
//TODO: Figure out how to support all of this! - we cannot have NotImplementedExceptions because these get used by the IMembershipMemberService<IUser> service so
// we'll just have them as generic get/set which don't interact with the db.
[IgnoreDataMember]
public string PasswordQuestion { get; set; }
[DataMember]
[IgnoreDataMember]
public string PasswordAnswer { get; set; }
[DataMember]
[IgnoreDataMember]
public string Comments { get; set; }
[DataMember]
public bool IsApproved { get; set; }
[DataMember]
public bool IsOnline { get; set; }
[DataMember]
public bool IsLockedOut { get; set; }
[DataMember]
[IgnoreDataMember]
public DateTime CreateDate { get; set; }
[DataMember]
[IgnoreDataMember]
public DateTime UpdateDate { get; set; }
[DataMember]
[IgnoreDataMember]
public DateTime LastLoginDate { get; set; }
[DataMember]
[IgnoreDataMember]
public DateTime LastPasswordChangeDate { get; set; }
[DataMember]
[IgnoreDataMember]
public DateTime LastLockoutDate { get; set; }
[DataMember]
public object ProfileId { get; set; }
[DataMember]
public IEnumerable<object> Groups { get; set; }
[IgnoreDataMember]
public int FailedPasswordAttempts { get; set; }
#endregion
#region Implementation of IUser
[DataMember]
public string Language { get; set; }
public string Name
{
get { return _name; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_name = value;
return _name;
}, _name, NameSelector);
}
}
public IEnumerable<string> AllowedSections
{
get { return _sectionCollection; }
}
public void RemoveAllowedSection(string sectionAlias)
{
_sectionCollection.Remove(sectionAlias);
}
public void AddAllowedSection(string sectionAlias)
{
if (_sectionCollection.Contains(sectionAlias) == false)
{
_sectionCollection.Add(sectionAlias);
}
}
public IProfile ProfileData
{
get { return new UserProfile(this); }
}
/// <summary>
/// Used internally to check if we need to add a section in the repository to the db
/// </summary>
internal IEnumerable<string> AddedSections
{
get { return _addedSections; }
}
/// <summary>
/// Used internally to check if we need to remove a section in the repository to the db
/// </summary>
internal IEnumerable<string> RemovedSections
{
get { return _removedSections; }
}
/// <summary>
/// Gets or sets the session timeout.
/// </summary>
/// <value>
/// The session timeout.
/// </value>
[DataMember]
public int SessionTimeout
{
get { return _sessionTimeout; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_sessionTimeout = value;
return _sessionTimeout;
}, _sessionTimeout, SessionTimeoutSelector);
}
}
/// <summary>
/// Gets or sets the start content id.
/// </summary>
/// <value>
/// The start content id.
/// </value>
[DataMember]
public int StartContentId
{
get { return _startContentId; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_startContentId = value;
return _startContentId;
}, _startContentId, StartContentIdSelector);
}
}
/// <summary>
/// Gets or sets the start media id.
/// </summary>
/// <value>
/// The start media id.
/// </value>
[DataMember]
public int StartMediaId
{
get { return _startMediaId; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_startMediaId = value;
return _startMediaId;
}, _startMediaId, StartMediaIdSelector);
}
}
[DataMember]
public string DefaultPermissions { get; set; }
public string Language
{
get { return _language; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_language = value;
return _language;
}, _language, LanguageSelector);
}
}
[DataMember]
public bool NoConsole { get; set; }
public IEnumerable<string> DefaultPermissions
{
get { return _defaultPermissions; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_defaultPermissions = value;
return _defaultPermissions;
}, _defaultPermissions, DefaultPermissionsSelector);
}
}
[IgnoreDataMember]
internal bool DefaultToLiveEditing
{
get { return _defaultToLiveEditing; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_defaultToLiveEditing = value;
return _defaultToLiveEditing;
}, _defaultToLiveEditing, DefaultToLiveEditingSelector);
}
}
[IgnoreDataMember]
public IUserType UserType
{
get
get { return _userType; }
set
{
var type = Groups.FirstOrDefault();
return type as IUserType;
if (value.HasIdentity == false)
{
throw new InvalidOperationException("Cannot assign a User Type that has not been persisted");
}
SetPropertyValueAndDetectChanges(o =>
{
_userType = value;
return _userType;
}, _userType, UserTypeSelector);
}
}
#endregion
/// <summary>
/// Whenever resetting occurs, clear the remembered add/removed collections, even if
/// rememberPreviouslyChangedProperties is true, the AllowedSections property will still
/// be flagged as dirty.
/// </summary>
/// <param name="rememberPreviouslyChangedProperties"></param>
public override void ResetDirtyProperties(bool rememberPreviouslyChangedProperties)
{
_addedSections.Clear();
_removedSections.Clear();
base.ResetDirtyProperties(rememberPreviouslyChangedProperties);
}
/// <summary>
/// Handles the collection changed event in order for us to flag the AllowedSections property as changed
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void SectionCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
OnPropertyChanged(AllowedSectionsSelector);
if (e.Action == NotifyCollectionChangedAction.Add)
{
//remove from the removed/added sections (since people could add/remove all they want in one request)
_removedSections.RemoveAll(s => s == e.NewItems.Cast<string>().First());
_addedSections.RemoveAll(s => s == e.NewItems.Cast<string>().First());
//add to the added sections
_addedSections.Add(e.NewItems.Cast<string>().First());
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
{
//remove from the removed/added sections (since people could add/remove all they want in one request)
_removedSections.RemoveAll(s => s == e.OldItems.Cast<string>().First());
_addedSections.RemoveAll(s => s == e.OldItems.Cast<string>().First());
//add to the added sections
_removedSections.Add(e.OldItems.Cast<string>().First());
}
}
/// <summary>
/// Internal class used to wrap the user in a profile
/// </summary>
private class UserProfile : IProfile
{
private readonly IUser _user;
public UserProfile(IUser user)
{
_user = user;
}
public object Id
{
get { return _user.Id; }
set { _user.Id = (int)value; }
}
public string Name
{
get { return _user.Name; }
set { _user.Name = value; }
}
}
}
}
@@ -1,188 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
namespace Umbraco.Core.Models.Membership
{
/// <summary>
/// Represents the Profile implementation for a backoffice User
/// </summary>
/// <remarks>
/// Should be internal until a proper user/membership implementation
/// is part of the roadmap.
/// </remarks>
[Serializable]
[DataContract(IsReference = true)]
internal class UserProfile : Profile, IUserProfile
{
public UserProfile()
{
SessionTimeout = 60;
_sectionCollection = new ObservableCollection<string>();
_addedSections = new List<string>();
_removedSections = new List<string>();
_sectionCollection.CollectionChanged += SectionCollectionChanged;
}
private readonly List<string> _addedSections;
private readonly List<string> _removedSections;
private readonly ObservableCollection<string> _sectionCollection;
private int _sessionTimeout;
private int _startContentId;
private int _startMediaId;
private static readonly PropertyInfo SessionTimeoutSelector = ExpressionHelper.GetPropertyInfo<UserProfile, int>(x => x.SessionTimeout);
private static readonly PropertyInfo StartContentIdSelector = ExpressionHelper.GetPropertyInfo<UserProfile, int>(x => x.StartContentId);
private static readonly PropertyInfo StartMediaIdSelector = ExpressionHelper.GetPropertyInfo<UserProfile, int>(x => x.StartMediaId);
private static readonly PropertyInfo AllowedSectionsSelector = ExpressionHelper.GetPropertyInfo<UserProfile, IEnumerable<string>>(x => x.AllowedSections);
/// <summary>
/// Gets or sets the session timeout.
/// </summary>
/// <value>
/// The session timeout.
/// </value>
[DataMember]
public int SessionTimeout
{
get
{
return _sessionTimeout;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_sessionTimeout = value;
return _sessionTimeout;
}, _sessionTimeout, SessionTimeoutSelector);
}
}
/// <summary>
/// Gets or sets the start content id.
/// </summary>
/// <value>
/// The start content id.
/// </value>
[DataMember]
public int StartContentId
{
get
{
return _startContentId;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_startContentId = value;
return _startContentId;
}, _startContentId, StartContentIdSelector);
}
}
/// <summary>
/// Gets or sets the start media id.
/// </summary>
/// <value>
/// The start media id.
/// </value>
[DataMember]
public int StartMediaId
{
get
{
return _startMediaId;
}
set
{
SetPropertyValueAndDetectChanges(o =>
{
_startMediaId = value;
return _startMediaId;
}, _startMediaId, StartMediaIdSelector);
}
}
public IEnumerable<string> AllowedSections
{
get { return _sectionCollection; }
}
public void RemoveAllowedSection(string sectionAlias)
{
_sectionCollection.Remove(sectionAlias);
}
public void AddAllowedSection(string sectionAlias)
{
if (!_sectionCollection.Contains(sectionAlias))
{
_sectionCollection.Add(sectionAlias);
}
}
/// <summary>
/// Whenever resetting occurs, clear the remembered add/removed collections, even if
/// rememberPreviouslyChangedProperties is true, the AllowedSections property will still
/// be flagged as dirty.
/// </summary>
/// <param name="rememberPreviouslyChangedProperties"></param>
public override void ResetDirtyProperties(bool rememberPreviouslyChangedProperties)
{
_addedSections.Clear();
_removedSections.Clear();
base.ResetDirtyProperties(rememberPreviouslyChangedProperties);
}
/// <summary>
/// Used internally to check if we need to add a section in the repository to the db
/// </summary>
internal IEnumerable<string> AddedSections
{
get { return _addedSections; }
}
/// <summary>
/// Used internally to check if we need to remove a section in the repository to the db
/// </summary>
internal IEnumerable<string> RemovedSections
{
get { return _removedSections; }
}
/// <summary>
/// Handles the collection changed event in order for us to flag the AllowedSections property as changed
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void SectionCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
OnPropertyChanged(AllowedSectionsSelector);
if (e.Action == NotifyCollectionChangedAction.Add)
{
//remove from the removed/added sections (since people could add/remove all they want in one request)
_removedSections.RemoveAll(s => s == e.NewItems.Cast<string>().First());
_addedSections.RemoveAll(s => s == e.NewItems.Cast<string>().First());
//add to the added sections
_addedSections.Add(e.NewItems.Cast<string>().First());
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
{
//remove from the removed/added sections (since people could add/remove all they want in one request)
_removedSections.RemoveAll(s => s == e.OldItems.Cast<string>().First());
_addedSections.RemoveAll(s => s == e.OldItems.Cast<string>().First());
//add to the added sections
_removedSections.Add(e.OldItems.Cast<string>().First());
}
}
}
}
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Persistence.Mappers;
@@ -22,7 +23,13 @@ namespace Umbraco.Core.Models.Membership
[DataMember]
public string Name { get; set; }
/// <summary>
/// The set of default permissions for the user type
/// </summary>
/// <remarks>
/// By default each permission is simply a single char but we've made this an enumerable{string} to support a more flexible permissions structure in the future.
/// </remarks>
[DataMember]
public string Permissions { get; set; }
public IEnumerable<string> Permissions { get; set; }
}
}
+23
View File
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Umbraco.Core.Models
{
internal class Notification
{
public Notification(int entityId, int userId, string action, Guid entityType)
{
EntityId = entityId;
UserId = userId;
Action = action;
EntityType = entityType;
}
public int EntityId { get; private set; }
public int UserId { get; private set; }
public string Action { get; private set; }
public Guid EntityType { get; private set; }
}
}
+8 -3
View File
@@ -44,7 +44,7 @@ namespace Umbraco.Core.Models
private static readonly PropertyInfo ValueSelector = ExpressionHelper.GetPropertyInfo<Property, object>(x => x.Value);
private static readonly PropertyInfo VersionSelector = ExpressionHelper.GetPropertyInfo<Property, Guid>(x => x.Version);
/// <summary>
/// Returns the instance of the tag support, by default tags are not enabled
/// </summary>
@@ -68,9 +68,14 @@ namespace Umbraco.Core.Models
/// <summary>
/// Returns the DatabaseType that the underlaying DataType is using to store its values
/// </summary>
/// <remarks>Only used internally when saving the property value</remarks>
/// <remarks>
/// Only used internally when saving the property value.
/// </remarks>
[IgnoreDataMember]
internal DataTypeDatabaseType DataTypeDatabaseType { get { return _propertyType.DataTypeDatabaseType; } }
internal DataTypeDatabaseType DataTypeDatabaseType
{
get { return _propertyType.DataTypeDatabaseType; }
}
/// <summary>
/// Returns the PropertyType, which this Property is based on
+31 -6
View File
@@ -15,6 +15,7 @@ namespace Umbraco.Core.Models
[DataContract(IsReference = true)]
public class PropertyType : Entity, IEquatable<PropertyType>
{
private readonly bool _isExplicitDbType;
private string _name;
private string _alias;
private string _description;
@@ -30,16 +31,29 @@ namespace Umbraco.Core.Models
public PropertyType(IDataTypeDefinition dataTypeDefinition)
{
if(dataTypeDefinition.HasIdentity)
DataTypeDefinitionId = dataTypeDefinition.Id;
_dataTypeDefinitionId = dataTypeDefinition.Id;
PropertyEditorAlias = dataTypeDefinition.PropertyEditorAlias;
DataTypeDatabaseType = dataTypeDefinition.DatabaseType;
_propertyEditorAlias = dataTypeDefinition.PropertyEditorAlias;
_dataTypeDatabaseType = dataTypeDefinition.DatabaseType;
}
internal PropertyType(string propertyEditorAlias, DataTypeDatabaseType dataTypeDatabaseType)
: this(propertyEditorAlias, dataTypeDatabaseType, false)
{
PropertyEditorAlias = propertyEditorAlias;
DataTypeDatabaseType = dataTypeDatabaseType;
}
/// <summary>
/// Used internally to assign an explicity database type for this property type regardless of what the underlying data type/property editor is.
/// </summary>
/// <param name="propertyEditorAlias"></param>
/// <param name="dataTypeDatabaseType"></param>
/// <param name="isExplicitDbType"></param>
internal PropertyType(string propertyEditorAlias, DataTypeDatabaseType dataTypeDatabaseType, bool isExplicitDbType)
{
_isExplicitDbType = isExplicitDbType;
_propertyEditorAlias = propertyEditorAlias;
_dataTypeDatabaseType = dataTypeDatabaseType;
}
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<PropertyType, string>(x => x.Name);
@@ -165,6 +179,9 @@ namespace Umbraco.Core.Models
get { return _dataTypeDatabaseType; }
set
{
//don't allow setting this if an explicit declaration has been made in the ctor
if (_isExplicitDbType) return;
SetPropertyValueAndDetectChanges(o =>
{
_dataTypeDatabaseType = value;
@@ -377,8 +394,16 @@ namespace Umbraco.Core.Models
//Check against Regular Expression for Legacy DataTypes - Validation exists and value is not null:
if(string.IsNullOrEmpty(ValidationRegExp) == false && (value != null && string.IsNullOrEmpty(value.ToString()) == false))
{
var regexPattern = new Regex(ValidationRegExp);
return regexPattern.IsMatch(value.ToString());
try
{
var regexPattern = new Regex(ValidationRegExp);
return regexPattern.IsMatch(value.ToString());
}
catch
{
throw new Exception(string .Format("Invalid validation expression on property {0}",this.Alias));
}
}
//TODO Add PropertyEditor validation when its relevant to introduce
@@ -80,11 +80,8 @@ namespace Umbraco.Core.Models.PublishedContent
private void InitializeConverters()
{
var converters = PropertyValueConvertersResolver.Current.Converters.ToArray();
var defaultConverters = converters
.Where(x => x.GetType().GetCustomAttribute<DefaultPropertyValueConverterAttribute>(false) != null)
.ToArray();
var converters = PropertyValueConvertersResolver.Current.Converters.ToArray();
var defaultConvertersWithAttributes = PropertyValueConvertersResolver.Current.DefaultConverters;
_converter = null;
@@ -98,8 +95,14 @@ namespace Umbraco.Core.Models.PublishedContent
else if (foundConverters.Length > 1)
{
//more than one was found, we need to first figure out if one of these is an Umbraco default value type converter
var nonDefault = foundConverters.Except(defaultConverters).ToArray();
if (nonDefault.Length > 1)
//get the non-default and see if we have one
var nonDefault = foundConverters.Except(defaultConvertersWithAttributes.Select(x => x.Item1)).ToArray();
if (nonDefault.Length == 1)
{
//there's only 1 custom converter registered that so use it
_converter = nonDefault[0];
}
else if (nonDefault.Length > 1)
{
//this is not allowed, there cannot be more than 1 custom converter
throw new InvalidOperationException(
@@ -109,9 +112,31 @@ namespace Umbraco.Core.Models.PublishedContent
ContentType.Alias, PropertyTypeAlias,
nonDefault[1].GetType().FullName, nonDefault[0].GetType().FullName));
}
else
{
//we need to remove any converters that have been shadowed by another converter
var foundDefaultConvertersWithAttributes = defaultConvertersWithAttributes.Where(x => foundConverters.Contains(x.Item1));
var shadowedTypes = foundDefaultConvertersWithAttributes.SelectMany(x => x.Item2.DefaultConvertersToShadow);
var shadowedDefaultConverters = foundConverters.Where(x => shadowedTypes.Contains(x.GetType()));
var nonShadowedDefaultConverters = foundConverters.Except(shadowedDefaultConverters).ToArray();
//there's only 1 custom converter registered that so use it
_converter = nonDefault[0];
if (nonShadowedDefaultConverters.Length == 1)
{
//assign to the single default converter
_converter = nonShadowedDefaultConverters[0];
}
else if (nonShadowedDefaultConverters.Length > 1)
{
//this is not allowed, there cannot be more than 1 custom converter
throw new InvalidOperationException(
string.Format("Type '{2}' cannot be an IPropertyValueConverter"
+ " for property '{1}' of content type '{0}' because type '{3}' has already been detected as a converter"
+ " for that property, and only one converter can exist for a property.",
ContentType.Alias, PropertyTypeAlias,
nonShadowedDefaultConverters[1].GetType().FullName, nonShadowedDefaultConverters[0].GetType().FullName));
}
}
}
// get the cache levels, quietely fixing the inconsistencies (no need to throw, really)
@@ -30,7 +30,6 @@ namespace Umbraco.Core.Models.Rdbms
public DateTime DateRegistered { get; set; }
[Column("lastNotifiedDate")]
[Constraint(Default = "getdate()")]
public DateTime LastNotified { get; set; }
[Column("isActive")]
+7 -1
View File
@@ -183,5 +183,11 @@ namespace Umbraco.Core.Models
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
public void SetMasterTemplate(ITemplate masterTemplate)
{
MasterTemplateId = new Lazy<int>(() => masterTemplate.Id);
}
}
}
}
+8
View File
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;
using Umbraco.Core.Models.EntityBase;
@@ -53,6 +54,13 @@ namespace Umbraco.Core.Models
Trashed = trashed;
}
// for MySql
public UmbracoEntity(UInt64 trashed)
{
AdditionalData = new Dictionary<string, object>();
Trashed = trashed == 1;
}
public int CreatorId
{
get { return _creatorId; }
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
{
internal static class UmbracoEntityExtensions
{
public static object GetAdditionalDataValueIgnoreCase(this IUmbracoEntity entity, string key, object defaultVal)
{
if (entity.AdditionalData.ContainsKeyIgnoreCase(key) == false) return defaultVal;
return entity.AdditionalData.GetValueIgnoreCase(key, defaultVal);
}
public static bool IsContainer(this IUmbracoEntity entity)
{
if (entity.AdditionalData.ContainsKeyIgnoreCase("IsContainer") == false) return false;
var val = entity.AdditionalData.GetValueIgnoreCase("IsContainer", null);
if (val is bool && (bool) val)
{
return true;
}
return false;
}
}
}
+29 -5
View File
@@ -246,12 +246,14 @@ namespace Umbraco.Core
else if (destinationType == typeof(Double))
{
Double value;
return Double.TryParse(input, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
var input2 = NormalizeNumberDecimalSeparator(input);
return Double.TryParse(input2, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
}
else if (destinationType == typeof(Single))
{
Single value;
return Single.TryParse(input, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
var input2 = NormalizeNumberDecimalSeparator(input);
return Single.TryParse(input2, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
}
else if (destinationType == typeof(Char))
{
@@ -292,7 +294,20 @@ namespace Umbraco.Core
else if (destinationType == typeof(DateTime))
{
DateTime value;
return DateTime.TryParse(input, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
if (DateTime.TryParse(input, out value))
{
switch (value.Kind)
{
case DateTimeKind.Unspecified:
case DateTimeKind.Utc:
return Attempt<object>.Succeed(value);
case DateTimeKind.Local:
return Attempt<object>.Succeed(value.ToUniversalTime());
default:
throw new ArgumentOutOfRangeException();
}
}
return Attempt<object>.Fail();
}
else if (destinationType == typeof(DateTimeOffset))
{
@@ -307,7 +322,8 @@ namespace Umbraco.Core
else if (destinationType == typeof(Decimal))
{
Decimal value;
return Decimal.TryParse(input, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
var input2 = NormalizeNumberDecimalSeparator(input);
return Decimal.TryParse(input2, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
}
else if (destinationType == typeof(Version))
{
@@ -319,6 +335,14 @@ namespace Umbraco.Core
return null; // we can't decide...
}
private readonly static char[] NumberDecimalSeparatorsToNormalize = new[] {'.', ','};
private static string NormalizeNumberDecimalSeparator(string s)
{
var normalized = System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator[0];
return s.ReplaceMany(NumberDecimalSeparatorsToNormalize, normalized);
}
internal static void CheckThrowObjectDisposed(this IDisposable disposable, bool isDisposed, string objectname)
{
//TODO: Localise this exception
@@ -526,7 +550,7 @@ namespace Umbraco.Core
if (type == typeof(bool)) return XmlConvert.ToString((bool)value);
if (type == typeof(byte)) return XmlConvert.ToString((byte)value);
if (type == typeof(char)) return XmlConvert.ToString((char)value);
if (type == typeof(DateTime)) return XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.RoundtripKind);
if (type == typeof(DateTime)) return XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Unspecified);
if (type == typeof(DateTimeOffset)) return XmlConvert.ToString((DateTimeOffset)value);
if (type == typeof(decimal)) return XmlConvert.ToString((decimal)value);
if (type == typeof(double)) return XmlConvert.ToString((double)value);
@@ -151,6 +151,21 @@ namespace Umbraco.Core.Persistence.Caching
_keyTracker.Remove(key);
}
public void Delete(Type type, int entityId)
{
var key = GetCompositeId(type, entityId);
if (_memoryCache != null)
{
_memoryCache.Remove(key);
}
else
{
HttpRuntime.Cache.Remove(key);
}
_keyTracker.Remove(key);
}
/// <summary>
/// Clear cache by type
/// </summary>
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Umbraco.Core.Persistence
{
//TODO: Would be good to use this exception type anytime we cannot find an entity
/// <summary>
/// An exception used to indicate that an umbraco entity could not be found
/// </summary>
public class EntityNotFoundException : Exception
{
public object Id { get; private set; }
private readonly string _msg;
public EntityNotFoundException(object id, string msg)
{
Id = id;
_msg = msg;
}
public EntityNotFoundException(string msg)
{
_msg = msg;
}
public override string Message
{
get { return _msg; }
}
public override string ToString()
{
var result = base.ToString();
if (Id != null)
{
return "Umbraco entity (id: " + Id + ") not found. " + result;
}
return result;
}
}
}
@@ -0,0 +1,64 @@
using System;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Rdbms;
namespace Umbraco.Core.Persistence.Factories
{
internal class MemberGroupFactory : IEntityFactory<IMemberGroup, NodeDto>
{
private readonly Guid _nodeObjectTypeId;
public MemberGroupFactory()
{
_nodeObjectTypeId = new Guid(Constants.ObjectTypes.MemberGroup);
}
#region Implementation of IEntityFactory<ITemplate,TemplateDto>
public IMemberGroup BuildEntity(NodeDto dto)
{
var template = new MemberGroup
{
CreateDate = dto.CreateDate,
Id = dto.NodeId,
Key = dto.UniqueId.Value,
Name = dto.Text
};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
template.ResetDirtyProperties(false);
return template;
}
public NodeDto BuildDto(IMemberGroup entity)
{
var dto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = 0,
NodeObjectType = _nodeObjectTypeId,
ParentId = -1,
Path = "",
SortOrder = 0,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
if (entity.HasIdentity)
{
dto.NodeId = entity.Id;
dto.Path = "-1," + entity.Id;
}
return dto;
}
#endregion
}
}
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Persistence.Factories
CreateDate = dto.CreateDate,
UpdateDate = dto.UpdateDate,
Name = dto.Text,
ProviderUserKey = dto.UniqueId,
ProviderUserKey = dto.NodeId,
Trashed = dto.Trashed,
Key = dto.UniqueId.Value,
CreatorId = dto.UserId.HasValue ? dto.UserId.Value : 0,
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.Persistence.Repositories;
namespace Umbraco.Core.Persistence.Factories
{
@@ -10,6 +11,8 @@ namespace Umbraco.Core.Persistence.Factories
{
public IMemberType BuildEntity(MemberTypeReadOnlyDto dto)
{
var standardPropertyTypes = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
var memberType = new MemberType(dto.ParentId)
{
Alias = dto.Alias,
@@ -31,12 +34,12 @@ namespace Umbraco.Core.Persistence.Factories
AllowedContentTypes = Enumerable.Empty<ContentTypeSort>()
};
var propertyTypeGroupCollection = GetPropertyTypeGroupCollection(dto, memberType);
var propertyTypeGroupCollection = GetPropertyTypeGroupCollection(dto, memberType, standardPropertyTypes);
memberType.PropertyGroups = propertyTypeGroupCollection;
var propertyTypes = GetPropertyTypes(dto, memberType);
//By Convention we add 9 stnd PropertyTypes - This is only here to support loading of types that didn't have these conventions before.
var standardPropertyTypes = Constants.Conventions.Member.StandardPropertyTypeStubs;
var propertyTypes = GetPropertyTypes(dto, memberType, standardPropertyTypes);
//By Convention we add 9 stnd PropertyTypes - This is only here to support loading of types that didn't have these conventions before.
foreach (var standardPropertyType in standardPropertyTypes)
{
if(dto.PropertyTypes.Any(x => x.Alias.Equals(standardPropertyType.Key))) continue;
@@ -46,16 +49,17 @@ namespace Umbraco.Core.Persistence.Factories
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(standardPropertyType.Key,
new Tuple<bool, bool, int>(false, false, default(int)));
new MemberTypePropertyProfileAccess(false, false));
}
memberType.PropertyTypes = propertyTypes;
return memberType;
}
private PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType)
private PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
var propertyGroups = new PropertyGroupCollection();
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in dto.PropertyTypeGroups.Where(x => x.Id.HasValue))
{
var group = new PropertyGroup();
@@ -85,11 +89,23 @@ namespace Umbraco.Core.Persistence.Factories
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new Tuple<bool, bool, int>(typeDto.CanEdit, typeDto.ViewOnProfile, typeDto.Id.Value));
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit));
var tempGroupDto = groupDto;
var propertyType = new PropertyType(typeDto.PropertyEditorAlias,
typeDto.DbType.EnumParse<DataTypeDatabaseType>(true))
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.PropertyEditorAlias,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success)
{
Alias = typeDto.Alias,
DataTypeDefinitionId = typeDto.DataTypeId,
@@ -118,32 +134,47 @@ namespace Umbraco.Core.Persistence.Factories
return propertyGroups;
}
private List<PropertyType> GetPropertyTypes(MemberTypeReadOnlyDto dto, MemberType memberType)
private List<PropertyType> GetPropertyTypes(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
//Find PropertyTypes that does not belong to a PropertyTypeGroup
var propertyTypes = new List<PropertyType>();
foreach (var propertyType in dto.PropertyTypes.Where(x => (x.PropertyTypeGroupId.HasValue == false || x.PropertyTypeGroupId.Value == 0) && x.Id.HasValue))
foreach (var typeDto in dto.PropertyTypes.Where(x => (x.PropertyTypeGroupId.HasValue == false || x.PropertyTypeGroupId.Value == 0) && x.Id.HasValue))
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(propertyType.Alias,
new Tuple<bool, bool, int>(propertyType.CanEdit, propertyType.ViewOnProfile, propertyType.Id.Value));
//PropertyType Collection
propertyTypes.Add(new PropertyType(propertyType.PropertyEditorAlias,
propertyType.DbType.EnumParse<DataTypeDatabaseType>(true))
{
Alias = propertyType.Alias,
DataTypeDefinitionId = propertyType.DataTypeId,
Description = propertyType.Description,
HelpText = propertyType.HelpText,
Id = propertyType.Id.Value,
Mandatory = propertyType.Mandatory,
Name = propertyType.Name,
SortOrder = propertyType.SortOrder,
ValidationRegExp = propertyType.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => default(int)),
CreateDate = dto.CreateDate,
UpdateDate = dto.CreateDate
});
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit));
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.PropertyEditorAlias,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success)
{
Alias = typeDto.Alias,
DataTypeDefinitionId = typeDto.DataTypeId,
Description = typeDto.Description,
HelpText = typeDto.HelpText,
Id = typeDto.Id.Value,
Mandatory = typeDto.Mandatory,
Name = typeDto.Name,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => default(int)),
CreateDate = dto.CreateDate,
UpdateDate = dto.CreateDate
};
propertyTypes.Add(propertyType);
}
return propertyTypes;
}
@@ -11,17 +11,21 @@ namespace Umbraco.Core.Persistence.Factories
private readonly int _id;
private readonly DateTime _createDate;
private readonly DateTime _updateDate;
//a callback to create a property type which can be injected via a contructor
private readonly Func<string, DataTypeDatabaseType, string, PropertyType> _propertyTypeCtor;
public PropertyGroupFactory(int id)
{
_id = id;
_propertyTypeCtor = (propertyEditorAlias, dbType, alias) => new PropertyType(propertyEditorAlias, dbType);
}
public PropertyGroupFactory(int id, DateTime createDate, DateTime updateDate)
public PropertyGroupFactory(int id, DateTime createDate, DateTime updateDate, Func<string, DataTypeDatabaseType, string, PropertyType> propertyTypeCtor)
{
_id = id;
_createDate = createDate;
_updateDate = updateDate;
_propertyTypeCtor = propertyTypeCtor;
}
#region Implementation of IEntityFactory<IEnumerable<PropertyGroup>,IEnumerable<TabDto>>
@@ -55,22 +59,23 @@ namespace Umbraco.Core.Persistence.Factories
foreach (var typeDto in typeDtos)
{
var tempGroupDto = groupDto;
var propertyType = new PropertyType(typeDto.DataTypeDto.PropertyEditorAlias,
typeDto.DataTypeDto.DbType.EnumParse<DataTypeDatabaseType>(true))
{
Alias = typeDto.Alias,
DataTypeDefinitionId = typeDto.DataTypeId,
Description = typeDto.Description,
Id = typeDto.Id,
Name = typeDto.Name,
HelpText = typeDto.HelpText,
Mandatory = typeDto.Mandatory,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id),
CreateDate = _createDate,
UpdateDate = _updateDate
};
var propertyType = _propertyTypeCtor(typeDto.DataTypeDto.PropertyEditorAlias,
typeDto.DataTypeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
typeDto.Alias);
propertyType.Alias = typeDto.Alias;
propertyType.DataTypeDefinitionId = typeDto.DataTypeId;
propertyType.Description = typeDto.Description;
propertyType.Id = typeDto.Id;
propertyType.Name = typeDto.Name;
propertyType.HelpText = typeDto.HelpText;
propertyType.Mandatory = typeDto.Mandatory;
propertyType.SortOrder = typeDto.SortOrder;
propertyType.ValidationRegExp = typeDto.ValidationRegExp;
propertyType.PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id);
propertyType.CreateDate = _createDate;
propertyType.UpdateDate = _updateDate;
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
propertyType.ResetDirtyProperties(false);
@@ -17,12 +17,12 @@ namespace Umbraco.Core.Persistence.Factories
public IRelation BuildEntity(RelationDto dto)
{
var entity = new Relation(dto.ParentId, dto.ChildId, _relationType)
{
Comment = dto.Comment,
CreateDate = dto.Datetime,
Id = dto.Id,
UpdateDate = dto.Datetime
};
{
Comment = dto.Comment,
CreateDate = dto.Datetime,
Id = dto.Id,
UpdateDate = dto.Datetime
};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
entity.ResetDirtyProperties(false);
@@ -32,13 +32,13 @@ namespace Umbraco.Core.Persistence.Factories
public RelationDto BuildDto(IRelation entity)
{
var dto = new RelationDto
{
ChildId = entity.ChildId,
Comment = string.IsNullOrEmpty(entity.Comment) ? string.Empty : entity.Comment,
Datetime = entity.CreateDate,
ParentId = entity.ParentId,
RelationType = entity.RelationType.Id
};
{
ChildId = entity.ChildId,
Comment = string.IsNullOrEmpty(entity.Comment) ? string.Empty : entity.Comment,
Datetime = entity.CreateDate,
ParentId = entity.ParentId,
RelationType = entity.RelationType.Id
};
if (entity.HasIdentity)
dto.Id = entity.Id;
@@ -10,11 +10,11 @@ namespace Umbraco.Core.Persistence.Factories
public IRelationType BuildEntity(RelationTypeDto dto)
{
var entity = new RelationType(dto.ChildObjectType, dto.ParentObjectType, dto.Alias)
{
Id = dto.Id,
IsBidirectional = dto.Dual,
Name = dto.Name
};
{
Id = dto.Id,
IsBidirectional = dto.Dual,
Name = dto.Name
};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
entity.ResetDirtyProperties(false);
@@ -24,14 +24,14 @@ namespace Umbraco.Core.Persistence.Factories
public RelationTypeDto BuildDto(IRelationType entity)
{
var dto = new RelationTypeDto
{
Alias = entity.Alias,
ChildObjectType = entity.ChildObjectType,
Dual = entity.IsBidirectional,
Name = entity.Name,
ParentObjectType = entity.ParentObjectType
};
if(entity.HasIdentity)
{
Alias = entity.Alias,
ChildObjectType = entity.ChildObjectType,
Dual = entity.IsBidirectional,
Name = entity.Name,
ParentObjectType = entity.ParentObjectType
};
if (entity.HasIdentity)
dto.Id = entity.Id;
return dto;
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Models.Rdbms;
@@ -18,24 +19,23 @@ namespace Umbraco.Core.Persistence.Factories
public IUser BuildEntity(UserDto dto)
{
var guidId = dto.Id.ToGuid();
var user = new User(_userType)
{
Id = dto.Id,
ProfileId = dto.Id,
StartContentId = dto.ContentStartId,
StartMediaId = dto.MediaStartId.HasValue ? dto.MediaStartId.Value : -1,
Password = dto.Password,
Username = dto.Login,
Name = dto.UserName,
IsLockedOut = dto.Disabled,
IsApproved = dto.Disabled == false,
Email = dto.Email,
Language = dto.UserLanguage,
NoConsole = dto.NoConsole,
//NOTE: The default permission come from the user type's default permissions
DefaultPermissions = _userType.Permissions
};
{
Id = dto.Id,
Key = guidId,
StartContentId = dto.ContentStartId,
StartMediaId = dto.MediaStartId.HasValue ? dto.MediaStartId.Value : -1,
Password = dto.Password,
Username = dto.Login,
Name = dto.UserName,
IsLockedOut = dto.NoConsole,
IsApproved = dto.Disabled == false,
Email = dto.Email,
Language = dto.UserLanguage,
//NOTE: The default permission come from the user type's default permissions
DefaultPermissions = _userType.Permissions
};
foreach (var app in dto.User2AppDtos)
{
@@ -58,7 +58,7 @@ namespace Umbraco.Core.Persistence.Factories
Disabled = entity.IsApproved == false,
Email = entity.Email,
Login = entity.Username,
NoConsole = entity.NoConsole,
NoConsole = entity.IsLockedOut,
Password = entity.Password,
UserLanguage = entity.Language,
UserName = entity.Name,
@@ -1,4 +1,6 @@
using Umbraco.Core.Models.Membership;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Models.Rdbms;
namespace Umbraco.Core.Persistence.Factories
@@ -10,12 +12,14 @@ namespace Umbraco.Core.Persistence.Factories
public IUserType BuildEntity(UserTypeDto dto)
{
var userType = new UserType
{
Alias = dto.Alias,
Id = dto.Id,
Name = dto.Name,
Permissions = dto.DefaultPermissions
};
{
Alias = dto.Alias,
Id = dto.Id,
Name = dto.Name,
Permissions = dto.DefaultPermissions.IsNullOrWhiteSpace()
? Enumerable.Empty<string>()
: dto.DefaultPermissions.ToCharArray().Select(x => x.ToString(CultureInfo.InvariantCulture))
};
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
userType.ResetDirtyProperties(false);
@@ -27,7 +31,7 @@ namespace Umbraco.Core.Persistence.Factories
var userType = new UserTypeDto
{
Alias = entity.Alias,
DefaultPermissions = entity.Permissions,
DefaultPermissions = entity.Permissions == null ? "" : string.Join("", entity.Permissions),
Name = entity.Name
};
@@ -0,0 +1,34 @@
using System.Collections.Concurrent;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Rdbms;
namespace Umbraco.Core.Persistence.Mappers
{
[MapperFor(typeof (IMemberGroup))]
[MapperFor(typeof (MemberGroup))]
public sealed class MemberGroupMapper : BaseMapper
{
private static readonly ConcurrentDictionary<string, DtoMapModel> PropertyInfoCacheInstance = new ConcurrentDictionary<string, DtoMapModel>();
//NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it
// otherwise that would fail because there is no public constructor.
public MemberGroupMapper()
{
BuildMap();
}
internal override ConcurrentDictionary<string, DtoMapModel> PropertyInfoCache
{
get { return PropertyInfoCacheInstance; }
}
internal override void BuildMap()
{
CacheMap<MemberGroup, NodeDto>(src => src.Id, dto => dto.NodeId);
CacheMap<MemberGroup, NodeDto>(src => src.CreateDate, dto => dto.CreateDate);
CacheMap<MemberGroup, NodeDto>(src => src.CreatorId, dto => dto.UserId);
CacheMap<MemberGroup, NodeDto>(src => src.Name, dto => dto.Text);
CacheMap<MemberGroup, NodeDto>(src => src.Key, dto => dto.UniqueId);
}
}
}
@@ -39,7 +39,7 @@ namespace Umbraco.Core.Persistence.Mappers
CacheMap<Relation, RelationDto>(src => src.ParentId, dto => dto.ParentId);
CacheMap<Relation, RelationDto>(src => src.RelationTypeId, dto => dto.RelationType);
}
#endregion
}
}
@@ -39,7 +39,7 @@ namespace Umbraco.Core.Persistence.Mappers
CacheMap<RelationType, RelationTypeDto>(src => src.Name, dto => dto.Name);
CacheMap<RelationType, RelationTypeDto>(src => src.ParentObjectType, dto => dto.ParentObjectType);
}
#endregion
}
}
@@ -38,7 +38,7 @@ namespace Umbraco.Core.Persistence.Mappers
CacheMap<User, UserDto>(src => src.StartMediaId, dto => dto.MediaStartId);
CacheMap<User, UserDto>(src => src.StartContentId, dto => dto.ContentStartId);
CacheMap<User, UserDto>(src => src.IsApproved, dto => dto.Disabled);
CacheMap<User, UserDto>(src => src.NoConsole, dto => dto.NoConsole);
CacheMap<User, UserDto>(src => src.IsLockedOut, dto => dto.NoConsole);
CacheMap<User, UserDto>(src => src.UserType, dto => dto.Type);
CacheMap<User, UserDto>(src => src.Language, dto => dto.UserLanguage);
}
@@ -120,7 +120,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1036, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1036", SortOrder = 2, UniqueId = new Guid("2b24165f-9782-4aa3-b459-1de4a4d21f60"), Text = "Member Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1040, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1040", SortOrder = 2, UniqueId = new Guid("21e798da-e06e-4eda-a511-ed257f78d4fa"), Text = "Related Links", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1041, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1041", SortOrder = 2, UniqueId = new Guid("b6b73142-b9c1-4bf8-a16d-e1c23320b549"), Text = "Tags", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1044, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1044", SortOrder = 0, UniqueId = new Guid("d59be02f-1df9-4228-aa1e-01917d806cda"), Text = Constants.Conventions.MemberTypes.Member, NodeObjectType = new Guid(Constants.ObjectTypes.MemberType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1044, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1044", SortOrder = 0, UniqueId = new Guid("d59be02f-1df9-4228-aa1e-01917d806cda"), Text = Constants.Conventions.MemberTypes.DefaultAlias, NodeObjectType = new Guid(Constants.ObjectTypes.MemberType), CreateDate = DateTime.Now });
_database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 1045, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,1045", SortOrder = 2, UniqueId = new Guid("7E3962CC-CE20-4FFC-B661-5897A894BA7E"), Text = "Multiple Media Picker", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now });
//TODO: We're not creating these for 7.0
@@ -135,7 +135,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 532, NodeId = 1031, Alias = Constants.Conventions.MediaTypes.Folder, Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true });
_database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 533, NodeId = 1032, Alias = Constants.Conventions.MediaTypes.Image, Icon = "icon-picture", Thumbnail = "mediaPhoto.png" });
_database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 534, NodeId = 1033, Alias = Constants.Conventions.MediaTypes.File, Icon = "icon-document", Thumbnail = "mediaFile.png" });
_database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 531, NodeId = 1044, Alias = Constants.Conventions.MemberTypes.Member, Icon = "icon-user", Thumbnail = "folder.png" });
_database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 531, NodeId = 1044, Alias = Constants.Conventions.MemberTypes.DefaultAlias, Icon = "icon-user", Thumbnail = "folder.png" });
}
private void CreateUmbracoUserData()

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